@strapi/upload 5.52.2 → 5.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AssetCard/AssetCard.js +1 -0
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +1 -0
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js +2 -2
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs +2 -2
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.mjs +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js +1 -0
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +1 -0
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.mjs +1 -0
- package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.js +1 -0
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +1 -0
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +1 -0
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -0
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js +1 -0
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs +1 -0
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/constants.js +1 -0
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +1 -0
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/future/components/Drawer.js +17 -3
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/components/Drawer.mjs +17 -3
- package/dist/admin/future/components/Drawer.mjs.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.js +46 -12
- package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs +47 -13
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +27 -2
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +27 -2
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js +9 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs +9 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +19 -4
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +19 -4
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +64 -10
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +66 -12
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +17 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +17 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +56 -28
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +58 -30
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +203 -83
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +207 -87
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js +181 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs +179 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/constants.js +22 -0
- package/dist/admin/future/pages/Assets/constants.js.map +1 -1
- package/dist/admin/future/pages/Assets/constants.mjs +19 -1
- package/dist/admin/future/pages/Assets/constants.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +4 -3
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +5 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +105 -12
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +106 -13
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js +5 -5
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs +6 -6
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js +111 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs +109 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListSort.js +10 -10
- package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs +11 -11
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js +86 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs +83 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js +19 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs +17 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs.map +1 -0
- package/dist/admin/future/services/api.js +19 -6
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +19 -6
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/store/uploadProgress.js +55 -2
- package/dist/admin/future/store/uploadProgress.js.map +1 -1
- package/dist/admin/future/store/uploadProgress.mjs +53 -3
- package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +7 -9
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +8 -10
- package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.js +1 -0
- package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.mjs +1 -0
- package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
- package/dist/admin/pages/App/components/Filters.js +8 -8
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.mjs +9 -9
- package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/App/components/Header.js +1 -1
- package/dist/admin/pages/App/components/Header.js.map +1 -1
- package/dist/admin/pages/App/components/Header.mjs +2 -2
- package/dist/admin/pages/App/components/Header.mjs.map +1 -1
- package/dist/admin/src/future/components/Drawer.d.ts +10 -0
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/components/MainAreaContextMenu.d.ts +28 -0
- package/dist/admin/src/future/pages/Assets/constants.d.ts +20 -0
- package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +4 -0
- package/dist/admin/src/future/pages/Assets/hooks/useListScrollRestoration.d.ts +15 -0
- package/dist/admin/src/future/pages/Assets/utils/mergeUploadedAssets.d.ts +35 -0
- package/dist/admin/src/future/pages/Assets/utils/renderedKeys.d.ts +19 -0
- package/dist/admin/src/future/store/uploadProgress.d.ts +51 -0
- package/dist/admin/src/utils/index.d.ts +1 -0
- package/dist/admin/src/utils/rawFileToAsset.d.ts +2 -2
- package/dist/admin/src/utils/resolveFileMime.d.ts +13 -0
- package/dist/admin/translations/en.json.js +5 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js +2 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs +2 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/rawFileToAsset.js +5 -3
- package/dist/admin/utils/rawFileToAsset.js.map +1 -1
- package/dist/admin/utils/rawFileToAsset.mjs +5 -3
- package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
- package/dist/admin/utils/resolveFileMime.js +69 -0
- package/dist/admin/utils/resolveFileMime.js.map +1 -0
- package/dist/admin/utils/resolveFileMime.mjs +64 -0
- package/dist/admin/utils/resolveFileMime.mjs.map +1 -0
- package/dist/admin/utils/urlsToAssets.js +8 -4
- package/dist/admin/utils/urlsToAssets.js.map +1 -1
- package/dist/admin/utils/urlsToAssets.mjs +8 -4
- package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
- package/dist/server/services/upload.js +20 -8
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +20 -8
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts +2 -0
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowseStep.mjs","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/BrowseStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { GridFour as GridIcon, List, Pencil, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport {\n getBreadcrumbDataCM,\n toSingularTypes,\n getTrad,\n getAllowedFiles,\n BreadcrumbDataFolder,\n AllowedFiles,\n} from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\nimport { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs';\nimport { EmptyAssets } from '../../EmptyAssets/EmptyAssets';\nimport { FolderCard } from '../../FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderGridList } from '../../FolderGridList/FolderGridList';\nimport { SortPicker } from '../../SortPicker/SortPicker';\nimport { TableList, FolderRow, FileRow } from '../../TableList/TableList';\n\nimport { Filters, FilterStructure as ImportedFilterStructure } from './Filters';\nimport { PageSize } from './PageSize';\nimport { PaginationFooter } from './PaginationFooter/PaginationFooter';\nimport { SearchAsset } from './SearchAsset/SearchAsset';\nimport { isSelectable } from './utils/isSelectable';\n\nimport type { File, Query, FilterCondition } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../../AssetCard/AssetCard';\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FolderWithType extends Omit<Folder, 'children' | 'files'> {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n children?: Folder['children'] & {\n count: number;\n };\n files?: Folder['files'] & {\n count: number;\n };\n}\n\nexport interface FileWithType extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface BrowseStepProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n canCreate: boolean;\n canRead: boolean;\n folders?: FolderWithType[];\n multiple?: boolean;\n onAddAsset: () => void;\n onChangeFilters: (filters: FilterCondition<string>[] | Filter[]) => void;\n onChangeFolder: (id: number, path?: string) => void;\n onChangePage: (page: number) => void;\n onChangePageSize: (value: number) => void;\n onChangeSort: (value: Query['sort'] | string) => void;\n onChangeSearch: (_q?: Query['_q'] | null) => void;\n onEditAsset: ((asset: FileWithType) => void) | null;\n onEditFolder: ((folder: FolderRow) => void) | null;\n onSelectAsset: (element: FileRow | FolderRow) => void;\n onSelectAllAsset?: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n queryObject: Query;\n pagination: { pageCount: number };\n selectedAssets: FileWithType[] | FolderWithType[];\n}\n\nexport const BrowseStep = ({\n allowedTypes = [],\n assets: rawAssets,\n canCreate,\n canRead,\n folders = [],\n multiple = false,\n onAddAsset,\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSearch,\n onChangeSort,\n onChangeFolder,\n onEditAsset,\n onEditFolder,\n onSelectAllAsset,\n onSelectAsset,\n pagination,\n queryObject,\n selectedAssets,\n}: BrowseStepProps) => {\n const { formatMessage } = useIntl();\n const [view, setView] = usePersistentState(localStorageKeys.modalView, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const { data: currentFolder, isLoading: isCurrentFolderLoading } = useFolder(\n queryObject?.folder as number | null | undefined,\n {\n enabled: canRead && !!queryObject?.folder,\n }\n );\n\n const singularTypes = toSingularTypes(allowedTypes);\n const assets = rawAssets.map((asset) => ({\n ...asset,\n isSelectable: isSelectable(singularTypes, asset?.mime),\n type: 'asset',\n }));\n\n const breadcrumbs = !isCurrentFolderLoading\n ? getBreadcrumbDataCM(currentFolder as BreadcrumbDataFolder)\n : undefined;\n\n const allAllowedAsset = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n const areAllAssetSelected =\n allAllowedAsset.length > 0 &&\n selectedAssets.length > 0 &&\n allAllowedAsset.every(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const hasSomeAssetSelected = allAllowedAsset.some(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const isSearching = !!queryObject?._q;\n const isFiltering = !!queryObject?.filters?.$and?.length && queryObject.filters.$and.length > 0;\n const isSearchingOrFiltering = isSearching || isFiltering;\n const assetCount = assets.length;\n const folderCount = folders.length;\n const handleClickFolderCard = (...args: Parameters<typeof onChangeFolder>) => {\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n onChangeSearch('');\n onChangeFolder(...args);\n };\n\n return (\n <Box>\n {onSelectAllAsset && (\n <Box paddingBottom={4}>\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n {(assetCount > 0 || folderCount > 0 || isFiltering) && (\n <Flex gap={2} wrap=\"wrap\">\n {multiple && isGridView && (\n <Flex\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n height=\"3.2rem\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all assets',\n })}\n checked={\n !areAllAssetSelected && hasSomeAssetSelected\n ? 'indeterminate'\n : areAllAssetSelected\n }\n onCheckedChange={onSelectAllAsset}\n />\n </Flex>\n )}\n {isGridView && <SortPicker onChangeSort={onChangeSort} value={queryObject?.sort} />}\n <Filters\n appliedFilters={queryObject?.filters?.$and as ImportedFilterStructure[]}\n onChangeFilters={onChangeFilters}\n />\n </Flex>\n )}\n\n {(assetCount > 0 || folderCount > 0 || isSearching) && (\n <Flex marginLeft=\"auto\" shrink={0} gap={2}>\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: 'view-switch.list',\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: 'view-switch.grid',\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchAsset onChangeSearch={onChangeSearch} queryValue={queryObject._q || ''} />\n </Flex>\n )}\n </Flex>\n </Box>\n )}\n\n {canRead && breadcrumbs?.length && breadcrumbs.length > 0 && currentFolder && (\n <Box paddingTop={3}>\n <Breadcrumbs\n onChangeFolder={onChangeFolder}\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs as BreadcrumbDataFolder[]}\n currentFolderId={queryObject?.folder as number | undefined}\n />\n </Box>\n )}\n\n {assetCount === 0 && folderCount === 0 && (\n <Box paddingBottom={6}>\n <EmptyAssets\n size=\"S\"\n count={6}\n action={\n canCreate &&\n !isFiltering &&\n !isSearching && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={\n // eslint-disable-next-line no-nested-ternary\n isSearchingOrFiltering\n ? formatMessage({\n id: getTrad('list.assets-empty.title-withSearch'),\n defaultMessage: 'There are no assets with the applied filters',\n })\n : canCreate && !isSearching\n ? formatMessage({\n id: getTrad('list.assets.empty'),\n defaultMessage: 'Upload your first assets...',\n })\n : formatMessage({\n id: getTrad('list.assets.empty.no-permissions'),\n defaultMessage: 'The asset list is empty',\n })\n }\n />\n </Box>\n )}\n\n {!isGridView && (folderCount > 0 || assetCount > 0) && (\n <TableList\n allowedTypes={allowedTypes}\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={!areAllAssetSelected && hasSomeAssetSelected}\n isFolderSelectionAllowed={false}\n onChangeSort={onChangeSort}\n onChangeFolder={handleClickFolderCard}\n onEditAsset={onEditAsset}\n onEditFolder={onEditFolder}\n onSelectOne={onSelectAsset}\n onSelectAll={onSelectAllAsset!}\n rows={\n [...folders.map((folder) => ({ ...folder, type: 'folder' })), ...assets] as\n | FolderRow[]\n | FileRow[]\n }\n selected={selectedAssets}\n shouldDisableBulkSelect={!multiple}\n sortQuery={queryObject?.sort ?? ''}\n />\n )}\n\n {isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n (((isSearchingOrFiltering && assetCount > 0) || !isSearchingOrFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n return (\n <Grid.Item\n col={3}\n m={4}\n s={6}\n xs={12}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n cardActions={\n onEditFolder && (\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => onEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n )\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n >\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n ellipsis\n textColor=\"neutral800\"\n >\n {folder.name}\n {/* VisuallyHidden dash here allows to separate folder title and count informations\n for voice reading structure purpose */}\n <VisuallyHidden>-</VisuallyHidden>\n </TypographyMaxWidth>\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, one {# folder} other {# folders}}, {filesCount, plural, one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children?.count,\n filesCount: folder.files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <Box paddingTop={6}>\n <AssetGridList\n allowedTypes={allowedTypes}\n size=\"S\"\n assets={assets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets as FileWithType[]}\n onEditAsset={onEditAsset!}\n title={\n ((!isSearchingOrFiltering || (isSearchingOrFiltering && folderCount > 0)) &&\n queryObject.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: assetCount }\n )) ||\n ''\n }\n />\n </Box>\n )}\n </>\n )}\n\n {pagination.pageCount > 0 && (\n <Flex\n justifyContent=\"space-between\"\n paddingTop={4}\n position=\"relative\"\n zIndex={1}\n overflow=\"hidden\"\n >\n <PageSize\n pageSize={queryObject.pageSize! as number}\n onChangePageSize={onChangePageSize}\n />\n <PaginationFooter\n activePage={queryObject.page as number}\n onChangePage={onChangePage}\n pagination={pagination}\n />\n </Flex>\n )}\n </Box>\n );\n};\n"],"names":["TypographyMaxWidth","styled","Typography","ActionContainer","Box","theme","colors","neutral500","BrowseStep","allowedTypes","assets","rawAssets","canCreate","canRead","folders","multiple","onAddAsset","onChangeFilters","onChangePage","onChangePageSize","onChangeSearch","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAllAsset","onSelectAsset","pagination","queryObject","selectedAssets","formatMessage","useIntl","view","setView","usePersistentState","localStorageKeys","modalView","viewOptions","GRID","isGridView","data","currentFolder","isLoading","isCurrentFolderLoading","useFolder","folder","enabled","singularTypes","toSingularTypes","map","asset","isSelectable","mime","type","breadcrumbs","getBreadcrumbDataCM","undefined","allAllowedAsset","getAllowedFiles","areAllAssetSelected","length","every","findIndex","currAsset","id","hasSomeAssetSelected","some","isSearching","_q","isFiltering","filters","$and","isSearchingOrFiltering","assetCount","folderCount","handleClickFolderCard","args","_jsxs","_jsx","paddingBottom","Flex","justifyContent","alignItems","gap","wrap","paddingLeft","paddingRight","background","hasRadius","borderColor","height","Checkbox","aria-label","getTrad","defaultMessage","checked","onCheckedChange","SortPicker","value","sort","Filters","appliedFilters","marginLeft","shrink","paddingTop","IconButton","label","onClick","LIST","List","GridIcon","SearchAsset","queryValue","Breadcrumbs","currentFolderId","EmptyAssets","size","count","action","Button","variant","startIcon","Plus","content","TableList","indeterminate","isFolderSelectionAllowed","onSelectOne","onSelectAll","rows","selected","shouldDisableBulkSelect","sortQuery","_Fragment","FolderGridList","title","Grid","Item","col","m","s","xs","direction","FolderCard","ariaLabel","name","path","cardActions","withTooltip","Pencil","FolderCardBody","FolderCardBodyAction","tag","maxWidth","fontWeight","ellipsis","textColor","VisuallyHidden","children","filesCount","files","Divider","AssetGridList","page","pageCount","position","zIndex","overflow","PageSize","pageSize","PaginationFooter","activePage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrowseStep.mjs","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/BrowseStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { GridFour as GridIcon, List, Pencil, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport {\n getBreadcrumbDataCM,\n toSingularTypes,\n getTrad,\n getAllowedFiles,\n BreadcrumbDataFolder,\n AllowedFiles,\n} from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\nimport { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs';\nimport { EmptyAssets } from '../../EmptyAssets/EmptyAssets';\nimport { FolderCard } from '../../FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderGridList } from '../../FolderGridList/FolderGridList';\nimport { SortPicker } from '../../SortPicker/SortPicker';\nimport { TableList, FolderRow, FileRow } from '../../TableList/TableList';\n\nimport { Filters, FilterStructure as ImportedFilterStructure } from './Filters';\nimport { PageSize } from './PageSize';\nimport { PaginationFooter } from './PaginationFooter/PaginationFooter';\nimport { SearchAsset } from './SearchAsset/SearchAsset';\nimport { isSelectable } from './utils/isSelectable';\n\nimport type { File, Query, FilterCondition } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../../AssetCard/AssetCard';\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FolderWithType extends Omit<Folder, 'children' | 'files'> {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n children?: Folder['children'] & {\n count: number;\n };\n files?: Folder['files'] & {\n count: number;\n };\n}\n\nexport interface FileWithType extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface BrowseStepProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n canCreate: boolean;\n canRead: boolean;\n folders?: FolderWithType[];\n multiple?: boolean;\n onAddAsset: () => void;\n onChangeFilters: (filters: FilterCondition<string>[] | Filter[]) => void;\n onChangeFolder: (id: number, path?: string) => void;\n onChangePage: (page: number) => void;\n onChangePageSize: (value: number) => void;\n onChangeSort: (value: Query['sort'] | string) => void;\n onChangeSearch: (_q?: Query['_q'] | null) => void;\n onEditAsset: ((asset: FileWithType) => void) | null;\n onEditFolder: ((folder: FolderRow) => void) | null;\n onSelectAsset: (element: FileRow | FolderRow) => void;\n onSelectAllAsset?: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n queryObject: Query;\n pagination: { pageCount: number };\n selectedAssets: FileWithType[] | FolderWithType[];\n}\n\nexport const BrowseStep = ({\n allowedTypes = [],\n assets: rawAssets,\n canCreate,\n canRead,\n folders = [],\n multiple = false,\n onAddAsset,\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSearch,\n onChangeSort,\n onChangeFolder,\n onEditAsset,\n onEditFolder,\n onSelectAllAsset,\n onSelectAsset,\n pagination,\n queryObject,\n selectedAssets,\n}: BrowseStepProps) => {\n const { formatMessage } = useIntl();\n const [view, setView] = usePersistentState(localStorageKeys.modalView, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const { data: currentFolder, isLoading: isCurrentFolderLoading } = useFolder(\n queryObject?.folder as number | null | undefined,\n {\n enabled: canRead && !!queryObject?.folder,\n }\n );\n\n const singularTypes = toSingularTypes(allowedTypes);\n const assets = rawAssets.map((asset) => ({\n ...asset,\n isSelectable: isSelectable(singularTypes, asset?.mime),\n type: 'asset',\n }));\n\n const breadcrumbs = !isCurrentFolderLoading\n ? getBreadcrumbDataCM(currentFolder as BreadcrumbDataFolder)\n : undefined;\n\n const allAllowedAsset = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n const areAllAssetSelected =\n allAllowedAsset.length > 0 &&\n selectedAssets.length > 0 &&\n allAllowedAsset.every(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const hasSomeAssetSelected = allAllowedAsset.some(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const isSearching = !!queryObject?._q;\n const isFiltering = !!queryObject?.filters?.$and?.length && queryObject.filters.$and.length > 0;\n const isSearchingOrFiltering = isSearching || isFiltering;\n const assetCount = assets.length;\n const folderCount = folders.length;\n const handleClickFolderCard = (...args: Parameters<typeof onChangeFolder>) => {\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n onChangeSearch('');\n onChangeFolder(...args);\n };\n\n return (\n <Box>\n {onSelectAllAsset && (\n <Box paddingBottom={4}>\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n {(assetCount > 0 || folderCount > 0 || isFiltering) && (\n <Flex gap={2} wrap=\"wrap\">\n {multiple && isGridView && (\n <Flex\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n height=\"3.2rem\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all assets',\n })}\n checked={\n !areAllAssetSelected && hasSomeAssetSelected\n ? 'indeterminate'\n : areAllAssetSelected\n }\n onCheckedChange={onSelectAllAsset}\n />\n </Flex>\n )}\n {isGridView && <SortPicker onChangeSort={onChangeSort} value={queryObject?.sort} />}\n <Filters\n appliedFilters={queryObject?.filters?.$and as ImportedFilterStructure[]}\n onChangeFilters={onChangeFilters}\n />\n </Flex>\n )}\n\n {(assetCount > 0 || folderCount > 0 || isSearching) && (\n <Flex marginLeft=\"auto\" shrink={0} gap={2}>\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: 'view-switch.list',\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: 'view-switch.grid',\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchAsset onChangeSearch={onChangeSearch} queryValue={queryObject._q || ''} />\n </Flex>\n )}\n </Flex>\n </Box>\n )}\n\n {canRead && breadcrumbs?.length && breadcrumbs.length > 0 && currentFolder && (\n <Box paddingTop={3}>\n <Breadcrumbs\n onChangeFolder={onChangeFolder}\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs as BreadcrumbDataFolder[]}\n currentFolderId={queryObject?.folder as number | undefined}\n />\n </Box>\n )}\n\n {assetCount === 0 && folderCount === 0 && (\n <Box paddingBottom={6}>\n <EmptyAssets\n size=\"S\"\n count={6}\n action={\n canCreate &&\n !isFiltering &&\n !isSearching && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={\n // eslint-disable-next-line no-nested-ternary\n isSearchingOrFiltering\n ? formatMessage({\n id: getTrad('list.assets-empty.title-withSearch'),\n defaultMessage: 'There are no assets with the applied filters',\n })\n : canCreate && !isSearching\n ? formatMessage({\n id: getTrad('list.assets.empty'),\n defaultMessage: 'Upload your first assets...',\n })\n : formatMessage({\n id: getTrad('list.assets.empty.no-permissions'),\n defaultMessage: 'The asset list is empty',\n })\n }\n />\n </Box>\n )}\n\n {!isGridView && (folderCount > 0 || assetCount > 0) && (\n <TableList\n allowedTypes={allowedTypes}\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={!areAllAssetSelected && hasSomeAssetSelected}\n isFolderSelectionAllowed={false}\n onChangeSort={onChangeSort}\n onChangeFolder={handleClickFolderCard}\n onEditAsset={onEditAsset}\n onEditFolder={onEditFolder}\n onSelectOne={onSelectAsset}\n onSelectAll={onSelectAllAsset!}\n rows={\n [...folders.map((folder) => ({ ...folder, type: 'folder' })), ...assets] as\n | FolderRow[]\n | FileRow[]\n }\n selected={selectedAssets}\n shouldDisableBulkSelect={!multiple}\n sortQuery={queryObject?.sort ?? ''}\n />\n )}\n\n {isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n (((isSearchingOrFiltering && assetCount > 0) || !isSearchingOrFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n return (\n <Grid.Item\n col={3}\n m={4}\n s={6}\n xs={12}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n cardActions={\n onEditFolder && (\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => onEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n )\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n >\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n ellipsis\n textColor=\"neutral800\"\n >\n {folder.name}\n {/* VisuallyHidden dash here allows to separate folder title and count informations\n for voice reading structure purpose */}\n <VisuallyHidden>-</VisuallyHidden>\n </TypographyMaxWidth>\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, one {# folder} other {# folders}}, {filesCount, plural, one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children?.count,\n filesCount: folder.files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <Box paddingTop={6}>\n <AssetGridList\n allowedTypes={allowedTypes}\n size=\"S\"\n assets={assets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets as FileWithType[]}\n onEditAsset={onEditAsset!}\n title={\n ((!isSearchingOrFiltering || (isSearchingOrFiltering && folderCount > 0)) &&\n queryObject.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: assetCount }\n )) ||\n ''\n }\n />\n </Box>\n )}\n </>\n )}\n\n {pagination.pageCount > 0 && (\n <Flex\n justifyContent=\"space-between\"\n paddingTop={4}\n position=\"relative\"\n zIndex={1}\n overflow=\"hidden\"\n >\n <PageSize\n pageSize={queryObject.pageSize! as number}\n onChangePageSize={onChangePageSize}\n />\n <PaginationFooter\n activePage={queryObject.page as number}\n onChangePage={onChangePage}\n pagination={pagination}\n />\n </Flex>\n )}\n </Box>\n );\n};\n"],"names":["TypographyMaxWidth","styled","Typography","ActionContainer","Box","theme","colors","neutral500","BrowseStep","allowedTypes","assets","rawAssets","canCreate","canRead","folders","multiple","onAddAsset","onChangeFilters","onChangePage","onChangePageSize","onChangeSearch","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAllAsset","onSelectAsset","pagination","queryObject","selectedAssets","formatMessage","useIntl","view","setView","usePersistentState","localStorageKeys","modalView","viewOptions","GRID","isGridView","data","currentFolder","isLoading","isCurrentFolderLoading","useFolder","folder","enabled","singularTypes","toSingularTypes","map","asset","isSelectable","mime","type","breadcrumbs","getBreadcrumbDataCM","undefined","allAllowedAsset","getAllowedFiles","areAllAssetSelected","length","every","findIndex","currAsset","id","hasSomeAssetSelected","some","isSearching","_q","isFiltering","filters","$and","isSearchingOrFiltering","assetCount","folderCount","handleClickFolderCard","args","_jsxs","_jsx","paddingBottom","Flex","justifyContent","alignItems","gap","wrap","paddingLeft","paddingRight","background","hasRadius","borderColor","height","Checkbox","aria-label","getTrad","defaultMessage","checked","onCheckedChange","SortPicker","value","sort","Filters","appliedFilters","marginLeft","shrink","paddingTop","IconButton","label","onClick","LIST","List","GridIcon","SearchAsset","queryValue","Breadcrumbs","currentFolderId","EmptyAssets","size","count","action","Button","variant","startIcon","Plus","content","TableList","indeterminate","isFolderSelectionAllowed","onSelectOne","onSelectAll","rows","selected","shouldDisableBulkSelect","sortQuery","_Fragment","FolderGridList","title","Grid","Item","col","m","s","xs","direction","FolderCard","ariaLabel","name","path","cardActions","withTooltip","Pencil","FolderCardBody","FolderCardBodyAction","tag","maxWidth","fontWeight","ellipsis","textColor","VisuallyHidden","children","filesCount","files","Divider","AssetGridList","page","pageCount","position","zIndex","overflow","PageSize","pageSize","PaginationFooter","activePage"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ var reactIntl = require('react-intl');
|
|
|
8
8
|
var displayedFilters = require('../../../utils/displayedFilters.js');
|
|
9
9
|
require('byte-size');
|
|
10
10
|
require('date-fns');
|
|
11
|
+
require('@strapi/admin/strapi-admin');
|
|
11
12
|
require('qs');
|
|
12
13
|
require('../../../utils/urlYupSchema.js');
|
|
13
14
|
var FilterList = require('../../FilterList/FilterList.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filters.js","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { displayedFilters } from '../../../utils';\nimport { FilterList } from '../../FilterList/FilterList';\nimport { FilterPopover } from '../../FilterPopover/FilterPopover';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\ninterface FiltersProps {\n appliedFilters: FilterStructure[];\n onChangeFilters: (filters: Filter[]) => void;\n}\n\nexport const Filters = ({ appliedFilters, onChangeFilters }: FiltersProps) => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n onToggle={() => setOpen((prev) => !prev)}\n displayedFilters={displayedFilters}\n filters={appliedFilters}\n onSubmit={onChangeFilters}\n />\n\n {appliedFilters && (\n <FilterList\n appliedFilters={appliedFilters}\n filtersSchema={displayedFilters}\n onRemoveFilter={onChangeFilters}\n />\n )}\n </Popover.Root>\n );\n};\n"],"names":["Filters","appliedFilters","onChangeFilters","open","setOpen","React","useState","formatMessage","useIntl","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","onToggle","prev","displayedFilters","filters","onSubmit","FilterList","filtersSchema","onRemoveFilter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Filters.js","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { displayedFilters } from '../../../utils';\nimport { FilterList } from '../../FilterList/FilterList';\nimport { FilterPopover } from '../../FilterPopover/FilterPopover';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\ninterface FiltersProps {\n appliedFilters: FilterStructure[];\n onChangeFilters: (filters: Filter[]) => void;\n}\n\nexport const Filters = ({ appliedFilters, onChangeFilters }: FiltersProps) => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n onToggle={() => setOpen((prev) => !prev)}\n displayedFilters={displayedFilters}\n filters={appliedFilters}\n onSubmit={onChangeFilters}\n />\n\n {appliedFilters && (\n <FilterList\n appliedFilters={appliedFilters}\n filtersSchema={displayedFilters}\n onRemoveFilter={onChangeFilters}\n />\n )}\n </Popover.Root>\n );\n};\n"],"names":["Filters","appliedFilters","onChangeFilters","open","setOpen","React","useState","formatMessage","useIntl","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","onToggle","prev","displayedFilters","filters","onSubmit","FilterList","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4CaA,OAAAA,GAAU,CAAC,EAAEC,cAAc,EAAEC,eAAe,EAAgB,GAAA;AACvE,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,qBAAQC,IAAI,EAAA;QAACR,IAAAA,EAAMA,IAAAA;QAAMS,YAAAA,EAAcR,OAAAA;;AACtC,0BAAAS,cAAA,CAACH,qBAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,cAAA,CAACE,mBAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,cAAA,CAACK,YAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpDZ,aAAAA,CAAc;wBAAEa,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,cAAA,CAACS,2BAAAA,EAAAA;AACCC,gBAAAA,QAAAA,EAAU,IAAMnB,OAAAA,CAAQ,CAACoB,IAAAA,GAAS,CAACA,IAAAA,CAAAA;gBACnCC,gBAAAA,EAAkBA,iCAAAA;gBAClBC,OAAAA,EAASzB,cAAAA;gBACT0B,QAAAA,EAAUzB;;AAGXD,YAAAA,cAAAA,kBACCY,cAAA,CAACe,qBAAAA,EAAAA;gBACC3B,cAAAA,EAAgBA,cAAAA;gBAChB4B,aAAAA,EAAeJ,iCAAAA;gBACfK,cAAAA,EAAgB5B;;;;AAK1B;;;;"}
|
|
@@ -6,6 +6,7 @@ import { useIntl } from 'react-intl';
|
|
|
6
6
|
import { displayedFilters } from '../../../utils/displayedFilters.mjs';
|
|
7
7
|
import 'byte-size';
|
|
8
8
|
import 'date-fns';
|
|
9
|
+
import '@strapi/admin/strapi-admin';
|
|
9
10
|
import 'qs';
|
|
10
11
|
import '../../../utils/urlYupSchema.mjs';
|
|
11
12
|
import { FilterList } from '../../FilterList/FilterList.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filters.mjs","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { displayedFilters } from '../../../utils';\nimport { FilterList } from '../../FilterList/FilterList';\nimport { FilterPopover } from '../../FilterPopover/FilterPopover';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\ninterface FiltersProps {\n appliedFilters: FilterStructure[];\n onChangeFilters: (filters: Filter[]) => void;\n}\n\nexport const Filters = ({ appliedFilters, onChangeFilters }: FiltersProps) => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n onToggle={() => setOpen((prev) => !prev)}\n displayedFilters={displayedFilters}\n filters={appliedFilters}\n onSubmit={onChangeFilters}\n />\n\n {appliedFilters && (\n <FilterList\n appliedFilters={appliedFilters}\n filtersSchema={displayedFilters}\n onRemoveFilter={onChangeFilters}\n />\n )}\n </Popover.Root>\n );\n};\n"],"names":["Filters","appliedFilters","onChangeFilters","open","setOpen","React","useState","formatMessage","useIntl","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","onToggle","prev","displayedFilters","filters","onSubmit","FilterList","filtersSchema","onRemoveFilter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Filters.mjs","sources":["../../../../../admin/src/components/AssetDialog/BrowseStep/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { displayedFilters } from '../../../utils';\nimport { FilterList } from '../../FilterList/FilterList';\nimport { FilterPopover } from '../../FilterPopover/FilterPopover';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\nexport type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\ninterface FiltersProps {\n appliedFilters: FilterStructure[];\n onChangeFilters: (filters: Filter[]) => void;\n}\n\nexport const Filters = ({ appliedFilters, onChangeFilters }: FiltersProps) => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n onToggle={() => setOpen((prev) => !prev)}\n displayedFilters={displayedFilters}\n filters={appliedFilters}\n onSubmit={onChangeFilters}\n />\n\n {appliedFilters && (\n <FilterList\n appliedFilters={appliedFilters}\n filtersSchema={displayedFilters}\n onRemoveFilter={onChangeFilters}\n />\n )}\n </Popover.Root>\n );\n};\n"],"names":["Filters","appliedFilters","onChangeFilters","open","setOpen","React","useState","formatMessage","useIntl","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","onToggle","prev","displayedFilters","filters","onSubmit","FilterList","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;MA4CaA,OAAAA,GAAU,CAAC,EAAEC,cAAc,EAAEC,eAAe,EAAgB,GAAA;AACvE,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAACC,QAAQC,IAAI,EAAA;QAACR,IAAAA,EAAMA,IAAAA;QAAMS,YAAAA,EAAcR,OAAAA;;AACtC,0BAAAS,GAAA,CAACH,QAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,GAAA,CAACE,MAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,GAAA,CAACK,MAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpDZ,aAAAA,CAAc;wBAAEa,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,GAAA,CAACS,aAAAA,EAAAA;AACCC,gBAAAA,QAAAA,EAAU,IAAMnB,OAAAA,CAAQ,CAACoB,IAAAA,GAAS,CAACA,IAAAA,CAAAA;gBACnCC,gBAAAA,EAAkBA,gBAAAA;gBAClBC,OAAAA,EAASzB,cAAAA;gBACT0B,QAAAA,EAAUzB;;AAGXD,YAAAA,cAAAA,kBACCY,GAAA,CAACe,UAAAA,EAAAA;gBACC3B,cAAAA,EAAgBA,cAAAA;gBAChB4B,aAAAA,EAAeJ,gBAAAA;gBACfK,cAAAA,EAAgB5B;;;;AAK1B;;;;"}
|
|
@@ -9,6 +9,7 @@ var useTracking = require('../../../../hooks/useTracking.js');
|
|
|
9
9
|
require('byte-size');
|
|
10
10
|
require('date-fns');
|
|
11
11
|
var getTrad = require('../../../../utils/getTrad.js');
|
|
12
|
+
require('@strapi/admin/strapi-admin');
|
|
12
13
|
require('qs');
|
|
13
14
|
require('../../../../utils/urlYupSchema.js');
|
|
14
15
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchAsset.js","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../../hooks/useTracking';\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchAsset.js","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../../hooks/useTracking';\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { useTracking } from '../../../../hooks/useTracking.mjs';
|
|
|
7
7
|
import 'byte-size';
|
|
8
8
|
import 'date-fns';
|
|
9
9
|
import { getTrad } from '../../../../utils/getTrad.mjs';
|
|
10
|
+
import '@strapi/admin/strapi-admin';
|
|
10
11
|
import 'qs';
|
|
11
12
|
import '../../../../utils/urlYupSchema.mjs';
|
|
12
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchAsset.mjs","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../../hooks/useTracking';\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchAsset.mjs","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../../hooks/useTracking';\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":";;;;;;;;;;;;;AAAA;AAiBO,MAAMA,cAAc,CAAC,EAAEC,cAAc,EAAEC,UAAAA,GAAa,IAAI,EAAoB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM,CAACC,QAAQC,SAAAA,CAAU,GAAGC,MAAMC,QAAQ,CAAC,CAAC,CAACR,UAAAA,CAAAA;AAC7C,IAAA,MAAM,CAACS,KAAAA,EAAOC,QAAAA,CAAS,GAAGH,KAAAA,CAAMC,QAAQ,CAACR,UAAAA,IAAc,EAAA,CAAA;IACvD,MAAMW,UAAAA,GAAaJ,KAAAA,CAAMK,MAAM,CAAiB,IAAA,CAAA;AAEhDL,IAAAA,KAAAA,CAAMM,eAAe,CAAC,IAAA;AACpB,QAAA,IAAIR,MAAAA,EAAQ;YACVS,UAAAA,CAAW,IAAA;gBACTH,UAAAA,CAAWI,OAAO,EAAEC,aAAAA,CAAc,OAAA,CAAA,EAAUC,KAAAA,EAAAA;YAC9C,CAAA,EAAG,CAAA,CAAA;AACL,QAAA;IACF,CAAA,EAAG;AAACZ,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAMa,YAAAA,GAAe,IAAA;QACnBZ,SAAAA,CAAU,CAACa,OAAS,CAACA,IAAAA,CAAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMC,WAAAA,GAAc,IAAA;AAClBF,QAAAA,YAAAA,EAAAA;QACAnB,cAAAA,CAAe,IAAA,CAAA;AACjB,IAAA,CAAA;AAEA,IAAA,MAAMsB,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,QAAAA,CAAAA,CAAEE,eAAe,EAAA;AAEjBrB,QAAAA,UAAAA,CAAW,+BAAA,EAAiC;YAAEsB,QAAAA,EAAU;AAAkB,SAAA,CAAA;QAC1E1B,cAAAA,CAAeU,KAAAA,CAAAA;AACjB,IAAA,CAAA;AAEA,IAAA,IAAIJ,MAAAA,EAAQ;AACV,QAAA,qBACEqB,GAAA,CAACC,KAAAA,EAAAA;YAAIC,GAAAA,EAAKjB,UAAAA;AACR,YAAA,QAAA,gBAAAe,GAAA,CAACG,UAAAA,EAAAA;gBAAWC,QAAAA,EAAUT,YAAAA;AACpB,gBAAA,QAAA,gBAAAK,GAAA,CAACK,SAAAA,EAAAA;oBACCC,IAAAA,EAAK,QAAA;oBACLC,OAAAA,EAASb,WAAAA;AACTc,oBAAAA,QAAAA,EAAU,CAACZ,CAAAA,GAAMZ,QAAAA,CAASY,CAAAA,CAAEa,MAAM,CAAC1B,KAAK,CAAA;AACxC2B,oBAAAA,UAAAA,EAAYnC,aAAAA,CAAc;AACxBoC,wBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,oBAAA,CAAA;wBACZC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;oBACAC,YAAAA,EAAW,QAAA;oBACXC,IAAAA,EAAK,GAAA;oBACLhC,KAAAA,EAAOA,KAAAA;AACPiC,oBAAAA,WAAAA,EAAazC,aAAAA,CAAc;AACzBoC,wBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,oBAAA,CAAA;wBACZC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;8BAECtC,aAAAA,CAAc;AAAEoC,wBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,cAAA,CAAA;wBAAiBC,cAAAA,EAAgB;AAAsB,qBAAA;;;;AAK9F,IAAA;AAEA,IAAA,qBACEb,GAAA,CAACiB,UAAAA,EAAAA;QAAWC,KAAAA,EAAM,QAAA;QAASC,OAAAA,EAAS3B,YAAAA;AAClC,QAAA,QAAA,gBAAAQ,GAAA,CAACoB,MAAAA,EAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -6,6 +6,7 @@ var reactIntl = require('react-intl');
|
|
|
6
6
|
require('byte-size');
|
|
7
7
|
require('date-fns');
|
|
8
8
|
var getTrad = require('../../../utils/getTrad.js');
|
|
9
|
+
require('@strapi/admin/strapi-admin');
|
|
9
10
|
require('qs');
|
|
10
11
|
require('../../../utils/urlYupSchema.js');
|
|
11
12
|
var AssetGridList = require('../../AssetGridList/AssetGridList.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedStep.js","sources":["../../../../../admin/src/components/AssetDialog/SelectedStep/SelectedStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\ninterface SelectedStepProps {\n onSelectAsset: (asset: File) => void;\n selectedAssets: File[];\n onReorderAsset?: (fromIndex: number, toIndex: number) => void;\n}\n\nexport const SelectedStep = ({\n selectedAssets,\n onSelectAsset,\n onReorderAsset,\n}: SelectedStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex gap={0} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: selectedAssets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n\n <AssetGridList\n size=\"S\"\n assets={selectedAssets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets}\n onReorderAsset={onReorderAsset}\n />\n </Flex>\n );\n};\n"],"names":["SelectedStep","selectedAssets","onSelectAsset","onReorderAsset","formatMessage","useIntl","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","number","length","AssetGridList","size","assets"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectedStep.js","sources":["../../../../../admin/src/components/AssetDialog/SelectedStep/SelectedStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\ninterface SelectedStepProps {\n onSelectAsset: (asset: File) => void;\n selectedAssets: File[];\n onReorderAsset?: (fromIndex: number, toIndex: number) => void;\n}\n\nexport const SelectedStep = ({\n selectedAssets,\n onSelectAsset,\n onReorderAsset,\n}: SelectedStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex gap={0} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: selectedAssets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n\n <AssetGridList\n size=\"S\"\n assets={selectedAssets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets}\n onReorderAsset={onReorderAsset}\n />\n </Flex>\n );\n};\n"],"names":["SelectedStep","selectedAssets","onSelectAsset","onReorderAsset","formatMessage","useIntl","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","number","length","AssetGridList","size","assets"],"mappings":";;;;;;;;;;;;;AAAA;AAeO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,EACdC,aAAa,EACbC,cAAc,EACI,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,eAAA,CAACC,iBAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,SAAA;QAAUC,GAAAA,EAAK,CAAA;;0BACjDJ,eAAA,CAACC,iBAAAA,EAAAA;gBAAKG,GAAAA,EAAK,CAAA;gBAAGF,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,OAAA;;kCAC1CE,cAAA,CAACC,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,IAAA;wBAAKC,UAAAA,EAAW,MAAA;wBAAOC,SAAAA,EAAU,YAAA;kCAClDX,aAAAA,CACC;AACEY,4BAAAA,EAAAA,EAAIC,eAAAA,CAAQ,uBAAA,CAAA;4BACZC,cAAAA,EACE;yBACJ,EACA;AAAEC,4BAAAA,MAAAA,EAAQlB,eAAemB;AAAO,yBAAA;;kCAGpCT,cAAA,CAACC,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,IAAA;wBAAKE,SAAAA,EAAU,YAAA;kCAChCX,aAAAA,CAAc;AACbY,4BAAAA,EAAAA,EAAIC,eAAAA,CAAQ,uCAAA,CAAA;4BACZC,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAIJP,cAAA,CAACU,2BAAAA,EAAAA;gBACCC,IAAAA,EAAK,GAAA;gBACLC,MAAAA,EAAQtB,cAAAA;gBACRC,aAAAA,EAAeA,aAAAA;gBACfD,cAAAA,EAAgBA,cAAAA;gBAChBE,cAAAA,EAAgBA;;;;AAIxB;;;;"}
|
|
@@ -4,6 +4,7 @@ import { useIntl } from 'react-intl';
|
|
|
4
4
|
import 'byte-size';
|
|
5
5
|
import 'date-fns';
|
|
6
6
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
7
|
+
import '@strapi/admin/strapi-admin';
|
|
7
8
|
import 'qs';
|
|
8
9
|
import '../../../utils/urlYupSchema.mjs';
|
|
9
10
|
import { AssetGridList } from '../../AssetGridList/AssetGridList.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectedStep.mjs","sources":["../../../../../admin/src/components/AssetDialog/SelectedStep/SelectedStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\ninterface SelectedStepProps {\n onSelectAsset: (asset: File) => void;\n selectedAssets: File[];\n onReorderAsset?: (fromIndex: number, toIndex: number) => void;\n}\n\nexport const SelectedStep = ({\n selectedAssets,\n onSelectAsset,\n onReorderAsset,\n}: SelectedStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex gap={0} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: selectedAssets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n\n <AssetGridList\n size=\"S\"\n assets={selectedAssets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets}\n onReorderAsset={onReorderAsset}\n />\n </Flex>\n );\n};\n"],"names":["SelectedStep","selectedAssets","onSelectAsset","onReorderAsset","formatMessage","useIntl","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","number","length","AssetGridList","size","assets"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectedStep.mjs","sources":["../../../../../admin/src/components/AssetDialog/SelectedStep/SelectedStep.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\ninterface SelectedStepProps {\n onSelectAsset: (asset: File) => void;\n selectedAssets: File[];\n onReorderAsset?: (fromIndex: number, toIndex: number) => void;\n}\n\nexport const SelectedStep = ({\n selectedAssets,\n onSelectAsset,\n onReorderAsset,\n}: SelectedStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex gap={0} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: selectedAssets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n\n <AssetGridList\n size=\"S\"\n assets={selectedAssets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets}\n onReorderAsset={onReorderAsset}\n />\n </Flex>\n );\n};\n"],"names":["SelectedStep","selectedAssets","onSelectAsset","onReorderAsset","formatMessage","useIntl","_jsxs","Flex","direction","alignItems","gap","_jsx","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","number","length","AssetGridList","size","assets"],"mappings":";;;;;;;;;;;AAAA;AAeO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,EACdC,aAAa,EACbC,cAAc,EACI,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEC,IAAA,CAACC,IAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,SAAA;QAAUC,GAAAA,EAAK,CAAA;;0BACjDJ,IAAA,CAACC,IAAAA,EAAAA;gBAAKG,GAAAA,EAAK,CAAA;gBAAGF,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,OAAA;;kCAC1CE,GAAA,CAACC,UAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,IAAA;wBAAKC,UAAAA,EAAW,MAAA;wBAAOC,SAAAA,EAAU,YAAA;kCAClDX,aAAAA,CACC;AACEY,4BAAAA,EAAAA,EAAIC,OAAAA,CAAQ,uBAAA,CAAA;4BACZC,cAAAA,EACE;yBACJ,EACA;AAAEC,4BAAAA,MAAAA,EAAQlB,eAAemB;AAAO,yBAAA;;kCAGpCT,GAAA,CAACC,UAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,IAAA;wBAAKE,SAAAA,EAAU,YAAA;kCAChCX,aAAAA,CAAc;AACbY,4BAAAA,EAAAA,EAAIC,OAAAA,CAAQ,uCAAA,CAAA;4BACZC,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAIJP,GAAA,CAACU,aAAAA,EAAAA;gBACCC,IAAAA,EAAK,GAAA;gBACLC,MAAAA,EAAQtB,cAAAA;gBACRC,aAAAA,EAAeA,aAAAA;gBACfD,cAAAA,EAAgBA,cAAAA;gBAChBE,cAAAA,EAAgBA;;;;AAIxB;;;;"}
|
|
@@ -11,6 +11,7 @@ require('byte-size');
|
|
|
11
11
|
require('date-fns');
|
|
12
12
|
var normalizeAPIError = require('../../utils/normalizeAPIError.js');
|
|
13
13
|
var getTrad = require('../../utils/getTrad.js');
|
|
14
|
+
require('@strapi/admin/strapi-admin');
|
|
14
15
|
require('qs');
|
|
15
16
|
require('../../utils/urlYupSchema.js');
|
|
16
17
|
var SelectTree = require('../SelectTree/SelectTree.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkMoveDialog.js","sources":["../../../../admin/src/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BulkMoveDialog.js","sources":["../../../../admin/src/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import 'byte-size';
|
|
|
9
9
|
import 'date-fns';
|
|
10
10
|
import { normalizeAPIError } from '../../utils/normalizeAPIError.mjs';
|
|
11
11
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
12
|
+
import '@strapi/admin/strapi-admin';
|
|
12
13
|
import 'qs';
|
|
13
14
|
import '../../utils/urlYupSchema.mjs';
|
|
14
15
|
import { SelectTree } from '../SelectTree/SelectTree.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkMoveDialog.mjs","sources":["../../../../admin/src/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BulkMoveDialog.mjs","sources":["../../../../admin/src/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ var findRecursiveFolderByValue = require('../../utils/findRecursiveFolderByValue
|
|
|
15
15
|
var formatBytes = require('../../utils/formatBytes.js');
|
|
16
16
|
require('date-fns');
|
|
17
17
|
var getTrad = require('../../utils/getTrad.js');
|
|
18
|
+
require('@strapi/admin/strapi-admin');
|
|
18
19
|
require('qs');
|
|
19
20
|
var getFileExtension = require('../../utils/getFileExtension.js');
|
|
20
21
|
require('../../utils/urlYupSchema.js');
|