import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; import Collapse from '@mui/material/Collapse'; import Divider from '@mui/material/Divider'; import { useBoolean } from 'minimal-shared/hooks'; import { useCallback, useRef, useState } from 'react'; import { Iconify } from 'src/components/iconify'; import type { UseTableReturn } from 'src/components/table'; import type { IFile } from 'src/types/file'; import { FileManagerActionSelected } from './file-manager-action-selected'; import { FileManagerFileItem } from './file-manager-file-item'; import { FileManagerFolderItem } from './file-manager-folder-item'; import { FileManagerNewFolderDialog } from './file-manager-new-folder-dialog'; import { FileManagerPanel } from './file-manager-panel'; import { FileManagerShareDialog } from './file-manager-share-dialog'; // ---------------------------------------------------------------------- type Props = { table: UseTableReturn; dataFiltered: IFile[]; onOpenConfirm: () => void; onDeleteItem: (id: string) => void; }; export function FileManagerGridView({ table, dataFiltered, onDeleteItem, onOpenConfirm }: Props) { const { selected, onSelectRow: onSelectItem, onSelectAllRows: onSelectAllItems } = table; const containerRef = useRef(null); const shareDialog = useBoolean(); const filesCollapse = useBoolean(); const foldersCollapse = useBoolean(); const newFilesDialog = useBoolean(); const newFolderDialog = useBoolean(); const [folderName, setFolderName] = useState(''); const [inviteEmail, setInviteEmail] = useState(''); const handleChangeInvite = useCallback((event: React.ChangeEvent) => { setInviteEmail(event.target.value); }, []); const handleChangeFolderName = useCallback((event: React.ChangeEvent) => { setFolderName(event.target.value); }, []); const renderShareDialog = () => ( { shareDialog.onFalse(); setInviteEmail(''); }} /> ); const renderNewFilesDialog = () => ( ); const renderNewFolderDialog = () => ( { newFolderDialog.onFalse(); setFolderName(''); console.info('CREATE NEW FOLDER', folderName); }} folderName={folderName} onChangeFolderName={handleChangeFolderName} /> ); const renderFolders = () => ( <> item.type === 'folder').length} folders`} onOpen={newFolderDialog.onTrue} collapse={foldersCollapse.value} onCollapse={foldersCollapse.onToggle} /> {dataFiltered .filter((i) => i.type === 'folder') .map((folder) => ( onSelectItem(folder.id)} onDelete={() => onDeleteItem(folder.id)} /> ))} ); const renderFiles = () => ( <> item.type !== 'folder').length} files`} onOpen={newFilesDialog.onTrue} collapse={filesCollapse.value} onCollapse={filesCollapse.onToggle} /> {dataFiltered .filter((i) => i.type !== 'folder') .map((file) => ( onSelectItem(file.id)} onDelete={() => onDeleteItem(file.id)} /> ))} ); const renderSelectedActions = () => !!selected?.length && ( onSelectAllItems( checked, dataFiltered.map((row) => row.id) ) } action={ <> } /> ); return ( <> {renderFolders()} {renderFiles()} {renderSelectedActions()} {renderShareDialog()} {renderNewFilesDialog()} {renderNewFolderDialog()} ); }