您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

index.tsx 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import { BulkOperateBar } from '@/components/bulk-operate-bar';
  2. import { FileUploadDialog } from '@/components/file-upload-dialog';
  3. import ListFilterBar from '@/components/list-filter-bar';
  4. import { Button } from '@/components/ui/button';
  5. import {
  6. DropdownMenu,
  7. DropdownMenuContent,
  8. DropdownMenuItem,
  9. DropdownMenuSeparator,
  10. DropdownMenuTrigger,
  11. } from '@/components/ui/dropdown-menu';
  12. import { useRowSelection } from '@/hooks/logic-hooks/use-row-selection';
  13. import { useFetchFileList } from '@/hooks/use-file-request';
  14. import { Upload } from 'lucide-react';
  15. import { useTranslation } from 'react-i18next';
  16. import { CreateFolderDialog } from './create-folder-dialog';
  17. import { FileBreadcrumb } from './file-breadcrumb';
  18. import { FilesTable } from './files-table';
  19. import { MoveDialog } from './move-dialog';
  20. import { useBulkOperateFile } from './use-bulk-operate-file';
  21. import { useHandleCreateFolder } from './use-create-folder';
  22. import { useHandleMoveFile } from './use-move-file';
  23. import { useHandleUploadFile } from './use-upload-file';
  24. export default function Files() {
  25. const { t } = useTranslation();
  26. const {
  27. fileUploadVisible,
  28. hideFileUploadModal,
  29. showFileUploadModal,
  30. fileUploadLoading,
  31. onFileUploadOk,
  32. } = useHandleUploadFile();
  33. const {
  34. folderCreateModalVisible,
  35. showFolderCreateModal,
  36. hideFolderCreateModal,
  37. folderCreateLoading,
  38. onFolderCreateOk,
  39. } = useHandleCreateFolder();
  40. const {
  41. pagination,
  42. files,
  43. total,
  44. loading,
  45. setPagination,
  46. searchString,
  47. handleInputChange,
  48. } = useFetchFileList();
  49. const {
  50. rowSelection,
  51. setRowSelection,
  52. rowSelectionIsEmpty,
  53. clearRowSelection,
  54. } = useRowSelection();
  55. const {
  56. showMoveFileModal,
  57. moveFileVisible,
  58. onMoveFileOk,
  59. hideMoveFileModal,
  60. moveFileLoading,
  61. } = useHandleMoveFile({ clearRowSelection });
  62. const { list } = useBulkOperateFile({
  63. files,
  64. rowSelection,
  65. showMoveFileModal,
  66. setRowSelection,
  67. });
  68. const leftPanel = (
  69. <div>
  70. <FileBreadcrumb></FileBreadcrumb>
  71. </div>
  72. );
  73. return (
  74. <section className="p-8">
  75. <ListFilterBar
  76. leftPanel={leftPanel}
  77. searchString={searchString}
  78. onSearchChange={handleInputChange}
  79. showFilter={false}
  80. >
  81. <DropdownMenu>
  82. <DropdownMenuTrigger asChild>
  83. <Button>
  84. <Upload />
  85. {t('knowledgeDetails.addFile')}
  86. </Button>
  87. </DropdownMenuTrigger>
  88. <DropdownMenuContent className="w-56">
  89. <DropdownMenuItem onClick={showFileUploadModal}>
  90. {t('fileManager.uploadFile')}
  91. </DropdownMenuItem>
  92. <DropdownMenuSeparator />
  93. <DropdownMenuItem onClick={showFolderCreateModal}>
  94. {t('fileManager.newFolder')}
  95. </DropdownMenuItem>
  96. </DropdownMenuContent>
  97. </DropdownMenu>
  98. </ListFilterBar>
  99. {!rowSelectionIsEmpty && <BulkOperateBar list={list}></BulkOperateBar>}
  100. <FilesTable
  101. files={files}
  102. total={total}
  103. pagination={pagination}
  104. setPagination={setPagination}
  105. loading={loading}
  106. rowSelection={rowSelection}
  107. setRowSelection={setRowSelection}
  108. showMoveFileModal={showMoveFileModal}
  109. ></FilesTable>
  110. {fileUploadVisible && (
  111. <FileUploadDialog
  112. hideModal={hideFileUploadModal}
  113. onOk={onFileUploadOk}
  114. loading={fileUploadLoading}
  115. ></FileUploadDialog>
  116. )}
  117. {folderCreateModalVisible && (
  118. <CreateFolderDialog
  119. loading={folderCreateLoading}
  120. visible={folderCreateModalVisible}
  121. hideModal={hideFolderCreateModal}
  122. onOk={onFolderCreateOk}
  123. ></CreateFolderDialog>
  124. )}
  125. {moveFileVisible && (
  126. <MoveDialog
  127. hideModal={hideMoveFileModal}
  128. onOk={onMoveFileOk}
  129. loading={moveFileLoading}
  130. ></MoveDialog>
  131. )}
  132. </section>
  133. );
  134. }