@strapi/upload 5.51.2 → 5.52.1
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/future/App.js +3 -3
- package/dist/admin/future/App.js.map +1 -1
- package/dist/admin/future/App.mjs +4 -4
- package/dist/admin/future/App.mjs.map +1 -1
- package/dist/admin/future/components/BetaNotice.js +72 -0
- package/dist/admin/future/components/BetaNotice.js.map +1 -0
- package/dist/admin/future/components/BetaNotice.mjs +70 -0
- package/dist/admin/future/components/BetaNotice.mjs.map +1 -0
- package/dist/admin/future/components/Drawer.js +16 -3
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/components/Drawer.mjs +16 -3
- package/dist/admin/future/components/Drawer.mjs.map +1 -1
- package/dist/admin/future/components/TruncatedText.js +76 -0
- package/dist/admin/future/components/TruncatedText.js.map +1 -0
- package/dist/admin/future/components/TruncatedText.mjs +74 -0
- package/dist/admin/future/components/TruncatedText.mjs.map +1 -0
- package/dist/admin/future/hooks/useAIMetadataEnabled.js +39 -0
- package/dist/admin/future/hooks/useAIMetadataEnabled.js.map +1 -0
- package/dist/admin/future/hooks/useAIMetadataEnabled.mjs +37 -0
- package/dist/admin/future/hooks/useAIMetadataEnabled.mjs.map +1 -0
- package/dist/admin/future/hooks/useTracking.js +57 -0
- package/dist/admin/future/hooks/useTracking.js.map +1 -0
- package/dist/admin/future/hooks/useTracking.mjs +53 -0
- package/dist/admin/future/hooks/useTracking.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/AssetsPage.js +328 -139
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +332 -143
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/ActionsMenuContent.js +46 -0
- package/dist/admin/future/pages/Assets/components/ActionsMenuContent.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/ActionsMenuContent.mjs +44 -0
- package/dist/admin/future/pages/Assets/components/ActionsMenuContent.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js +328 -0
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs +326 -0
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +35 -14
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +35 -14
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +74 -53
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +74 -54
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +92 -28
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +94 -30
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js +26 -4
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs +27 -5
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +172 -60
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +175 -63
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +64 -132
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +64 -132
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js +123 -76
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs +126 -79
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BusyOverlay.js +36 -0
- package/dist/admin/future/pages/Assets/components/BusyOverlay.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/BusyOverlay.mjs +34 -0
- package/dist/admin/future/pages/Assets/components/BusyOverlay.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.js +131 -0
- package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.mjs +129 -0
- package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +27 -17
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +28 -18
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js +28 -31
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs +28 -31
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js +10 -15
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs +10 -15
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FilterBadges.js +13 -4
- package/dist/admin/future/pages/Assets/components/FilterBadges.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FilterBadges.mjs +13 -4
- package/dist/admin/future/pages/Assets/components/FilterBadges.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FilterMenu.js +259 -63
- package/dist/admin/future/pages/Assets/components/FilterMenu.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FilterMenu.mjs +262 -66
- package/dist/admin/future/pages/Assets/components/FilterMenu.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderActionsMenu.js +146 -0
- package/dist/admin/future/pages/Assets/components/FolderActionsMenu.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderActionsMenu.mjs +144 -0
- package/dist/admin/future/pages/Assets/components/FolderActionsMenu.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/{CreateFolderDialog.js → FolderFormDialog.js} +62 -16
- package/dist/admin/future/pages/Assets/components/FolderFormDialog.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/{CreateFolderDialog.mjs → FolderFormDialog.mjs} +64 -18
- package/dist/admin/future/pages/Assets/components/FolderFormDialog.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +132 -229
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +135 -232
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/SortMenu.js +14 -0
- package/dist/admin/future/pages/Assets/components/SortMenu.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/SortMenu.mjs +14 -0
- package/dist/admin/future/pages/Assets/components/SortMenu.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js +5 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs +6 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useBusyAssets.js +47 -0
- package/dist/admin/future/pages/Assets/hooks/useBusyAssets.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useBusyAssets.mjs +44 -0
- package/dist/admin/future/pages/Assets/hooks/useBusyAssets.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +203 -62
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +204 -63
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.js +75 -0
- package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.mjs +73 -0
- package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/selection.js +17 -0
- package/dist/admin/future/pages/Assets/utils/selection.js.map +1 -1
- package/dist/admin/future/pages/Assets/utils/selection.mjs +17 -1
- package/dist/admin/future/pages/Assets/utils/selection.mjs.map +1 -1
- package/dist/admin/future/services/api.js +31 -8
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +31 -8
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/services/assets.js +22 -23
- package/dist/admin/future/services/assets.js.map +1 -1
- package/dist/admin/future/services/assets.mjs +22 -23
- package/dist/admin/future/services/assets.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +37 -2
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +37 -3
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/utils/buildDragSetFromSelection.js +7 -5
- package/dist/admin/future/utils/buildDragSetFromSelection.js.map +1 -1
- package/dist/admin/future/utils/buildDragSetFromSelection.mjs +7 -5
- package/dist/admin/future/utils/buildDragSetFromSelection.mjs.map +1 -1
- package/dist/admin/future/utils/formatMoveSuccessMessage.js +12 -1
- package/dist/admin/future/utils/formatMoveSuccessMessage.js.map +1 -1
- package/dist/admin/future/utils/formatMoveSuccessMessage.mjs +12 -1
- package/dist/admin/future/utils/formatMoveSuccessMessage.mjs.map +1 -1
- package/dist/admin/future/utils/getRelationId.js +24 -0
- package/dist/admin/future/utils/getRelationId.js.map +1 -0
- package/dist/admin/future/utils/getRelationId.mjs +22 -0
- package/dist/admin/future/utils/getRelationId.mjs.map +1 -0
- package/dist/admin/future/utils/isEventFromWithin.js +14 -0
- package/dist/admin/future/utils/isEventFromWithin.js.map +1 -0
- package/dist/admin/future/utils/isEventFromWithin.mjs +12 -0
- package/dist/admin/future/utils/isEventFromWithin.mjs.map +1 -0
- package/dist/admin/future/utils/itemLocations.js +40 -0
- package/dist/admin/future/utils/itemLocations.js.map +1 -0
- package/dist/admin/future/utils/itemLocations.mjs +36 -0
- package/dist/admin/future/utils/itemLocations.mjs.map +1 -0
- package/dist/admin/future/utils/itemSource.js +36 -0
- package/dist/admin/future/utils/itemSource.js.map +1 -0
- package/dist/admin/future/utils/itemSource.mjs +32 -0
- package/dist/admin/future/utils/itemSource.mjs.map +1 -0
- package/dist/admin/hooks/useAIMetadataJob.js +1 -1
- package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.mjs +1 -1
- package/dist/admin/hooks/useAIMetadataJob.mjs.map +1 -1
- package/dist/admin/index.js +11 -17
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +12 -18
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +2 -2
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +2 -2
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/src/future/App.d.ts +1 -1
- package/dist/admin/src/future/components/BetaNotice.d.ts +11 -0
- package/dist/admin/src/future/components/Drawer.d.ts +5 -1
- package/dist/admin/src/future/components/TruncatedText.d.ts +32 -0
- package/dist/admin/src/future/hooks/useAIMetadataEnabled.d.ts +26 -0
- package/dist/admin/src/future/hooks/useTracking.d.ts +29 -0
- package/dist/admin/src/future/pages/Assets/components/ActionsMenuContent.d.ts +33 -0
- package/dist/admin/src/future/pages/Assets/components/AssetActionsMenu.d.ts +26 -0
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +16 -0
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/components/BulkMoveDialog.d.ts +17 -6
- package/dist/admin/src/future/pages/Assets/components/BusyOverlay.d.ts +9 -0
- package/dist/admin/src/future/pages/Assets/components/DeleteItemsDialog.d.ts +27 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/AssetsDndProvider.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/components/Dnd/buildDragSet.d.ts +18 -3
- package/dist/admin/src/future/pages/Assets/components/Dnd/useAssetDnd.d.ts +2 -1
- package/dist/admin/src/future/pages/Assets/components/FilterBadges.d.ts +3 -1
- package/dist/admin/src/future/pages/Assets/components/FilterMenu.d.ts +4 -0
- package/dist/admin/src/future/pages/Assets/components/FolderActionsMenu.d.ts +21 -0
- package/dist/admin/src/future/pages/Assets/components/FolderFormDialog.d.ts +16 -0
- package/dist/admin/src/future/pages/Assets/hooks/useAssetSelection.d.ts +2 -0
- package/dist/admin/src/future/pages/Assets/hooks/useBusyAssets.d.ts +38 -0
- package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +20 -6
- package/dist/admin/src/future/pages/Assets/hooks/useInfiniteScrollSentinel.d.ts +41 -0
- package/dist/admin/src/future/pages/Assets/utils/selection.d.ts +10 -0
- package/dist/admin/src/future/services/api.d.ts +6 -7
- package/dist/admin/src/future/services/folders.d.ts +6 -1
- package/dist/admin/src/future/utils/buildDragSetFromSelection.d.ts +4 -3
- package/dist/admin/src/future/utils/formatMoveSuccessMessage.d.ts +7 -1
- package/dist/admin/src/future/utils/getRelationId.d.ts +11 -0
- package/dist/admin/src/future/utils/isEventFromWithin.d.ts +11 -0
- package/dist/admin/src/future/utils/itemLocations.d.ts +31 -0
- package/dist/admin/src/future/utils/itemSource.d.ts +22 -0
- package/dist/admin/translations/en.json.js +25 -4
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +25 -4
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/controllers/admin-file.js +27 -9
- package/dist/server/controllers/admin-file.js.map +1 -1
- package/dist/server/controllers/admin-file.mjs +27 -9
- package/dist/server/controllers/admin-file.mjs.map +1 -1
- package/dist/server/controllers/admin-upload.js +24 -8
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/admin-upload.mjs +24 -8
- package/dist/server/controllers/admin-upload.mjs.map +1 -1
- package/dist/server/routes/admin.js +41 -21
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +41 -21
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/src/controllers/admin-file.d.ts +29 -8
- package/dist/server/src/controllers/admin-file.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-upload.d.ts +20 -4
- package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +4 -4
- package/dist/server/src/index.d.ts +4 -4
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/ai-metadata.d.ts +2 -2
- package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
- package/dist/server/src/services/image-manipulation.d.ts +0 -5
- package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
- package/dist/shared/contracts/ai-metadata-jobs.d.ts +10 -32
- package/dist/shared/contracts/ai-metadata-jobs.d.ts.map +1 -1
- package/dist/shared/contracts/files.d.ts +10 -10
- package/dist/shared/contracts/files.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js +0 -33
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs +0 -31
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs.map +0 -1
- package/dist/admin/src/future/pages/Assets/components/CreateFolderDialog.d.ts +0 -8
- package/dist/admin/src/future/pages/Assets/components/FolderTree/filterFolderTree.d.ts +0 -16
|
@@ -8,33 +8,39 @@ var designSystem = require('@strapi/design-system');
|
|
|
8
8
|
var icons = require('@strapi/icons');
|
|
9
9
|
var reactIntl = require('react-intl');
|
|
10
10
|
var styledComponents = require('styled-components');
|
|
11
|
-
var
|
|
11
|
+
var typeFromMime = require('../../../utils/typeFromMime.js');
|
|
12
|
+
var BetaNotice = require('../../components/BetaNotice.js');
|
|
13
|
+
var useAIMetadataEnabled = require('../../hooks/useAIMetadataEnabled.js');
|
|
12
14
|
var useMediaLibraryPermissions = require('../../hooks/useMediaLibraryPermissions.js');
|
|
15
|
+
var useTracking = require('../../hooks/useTracking.js');
|
|
13
16
|
var api = require('../../services/api.js');
|
|
14
17
|
var folders = require('../../services/folders.js');
|
|
15
18
|
var settings = require('../../services/settings.js');
|
|
19
|
+
var itemLocations = require('../../utils/itemLocations.js');
|
|
16
20
|
var translations = require('../../utils/translations.js');
|
|
17
21
|
var AssetDetailsDrawer = require('./components/AssetDetails/AssetDetailsDrawer.js');
|
|
18
22
|
var AssetsGrid = require('./components/AssetsGrid.js');
|
|
19
23
|
var AssetsSearchInput = require('./components/AssetsSearchInput.js');
|
|
20
24
|
var AssetsTable = require('./components/AssetsTable.js');
|
|
21
25
|
var BulkActionsBar = require('./components/BulkActionsBar.js');
|
|
22
|
-
var CreateFolderDialog = require('./components/CreateFolderDialog.js');
|
|
23
26
|
var AssetsDndProvider = require('./components/Dnd/AssetsDndProvider.js');
|
|
24
27
|
var UploadDropZone = require('./components/DropZone/UploadDropZone.js');
|
|
25
28
|
var UploadDropZoneContext = require('./components/DropZone/UploadDropZoneContext.js');
|
|
26
29
|
var EmptyState = require('./components/EmptyState.js');
|
|
27
30
|
var FilterBadges = require('./components/FilterBadges.js');
|
|
28
31
|
var FilterMenu = require('./components/FilterMenu.js');
|
|
32
|
+
var FolderFormDialog = require('./components/FolderFormDialog.js');
|
|
29
33
|
var FolderTree = require('./components/FolderTree/FolderTree.js');
|
|
30
34
|
var ImportFromUrlDialog = require('./components/ImportFromUrlDialog.js');
|
|
31
35
|
var SortMenu = require('./components/SortMenu.js');
|
|
32
36
|
var constants = require('./constants.js');
|
|
33
37
|
var useAssetSearch = require('./hooks/useAssetSearch.js');
|
|
34
38
|
var useAssetSelection = require('./hooks/useAssetSelection.js');
|
|
39
|
+
var useBusyAssets = require('./hooks/useBusyAssets.js');
|
|
35
40
|
var useFolderInfo = require('./hooks/useFolderInfo.js');
|
|
36
41
|
var useFolderNavigation = require('./hooks/useFolderNavigation.js');
|
|
37
42
|
var useInfiniteAssets = require('./hooks/useInfiniteAssets.js');
|
|
43
|
+
var useInfiniteScrollSentinel = require('./hooks/useInfiniteScrollSentinel.js');
|
|
38
44
|
var useListFilters = require('./hooks/useListFilters.js');
|
|
39
45
|
var useListSort = require('./hooks/useListSort.js');
|
|
40
46
|
var buildAssetFilters = require('./utils/buildAssetFilters.js');
|
|
@@ -61,8 +67,18 @@ function _interopNamespace(e) {
|
|
|
61
67
|
|
|
62
68
|
var ToggleGroup__namespace = /*#__PURE__*/_interopNamespace(ToggleGroup);
|
|
63
69
|
|
|
70
|
+
// The negative bottom margin shrinks the trigger area by a pixel so the 1px
|
|
71
|
+
// sentinel sitting exactly at the fold (when a page's rows happen to fill the
|
|
72
|
+
// viewport) reads as "not visible" and doesn't pull an extra page. It still
|
|
73
|
+
// triggers as soon as the sentinel scrolls a hair into view. Tune the bottom
|
|
74
|
+
// value if the list over- or under-fetches near the fold.
|
|
64
75
|
const INTERSECTION_OPTIONS = {
|
|
65
|
-
threshold: 0
|
|
76
|
+
threshold: 0,
|
|
77
|
+
rootMargin: '0px 0px -1px 0px'
|
|
78
|
+
};
|
|
79
|
+
// Module-level so the header sentinel's observer isn't rebuilt every render.
|
|
80
|
+
const HEADER_SENTINEL_OPTIONS = {
|
|
81
|
+
threshold: 0
|
|
66
82
|
};
|
|
67
83
|
const ITEM_COUNT_MESSAGE = {
|
|
68
84
|
id: translations.getTranslationKey('header.content.item-count'),
|
|
@@ -91,7 +107,7 @@ const getSearchResultsCountMessage = (numberFolders, numberAssets)=>{
|
|
|
91
107
|
}
|
|
92
108
|
return SEARCH_RESULTS_COUNT_MESSAGES.both;
|
|
93
109
|
};
|
|
94
|
-
const AssetsView = ({ view, folders, isLoadingFolders, assets, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error, searchQuery, assetsSort, foldersPosition, hasActiveFilters, onClearFilters, onAssetItemClick, onAddAssets, canAddAssets, onClearSearch })=>{
|
|
110
|
+
const AssetsView = ({ view, folders, isLoadingFolders, assets, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error, locations, searchQuery, assetsSort, foldersPosition, hasActiveFilters, onClearFilters, onAssetItemClick, onAddAssets, canAddAssets, onClearSearch })=>{
|
|
95
111
|
const { formatMessage } = reactIntl.useIntl();
|
|
96
112
|
const isGridView = view === constants.viewOptions.GRID;
|
|
97
113
|
const isLoading = isLoadingAssets || isLoadingFolders;
|
|
@@ -111,15 +127,12 @@ const AssetsView = ({ view, folders, isLoadingFolders, assets, isLoadingAssets,
|
|
|
111
127
|
assetsSort,
|
|
112
128
|
hasNextPage
|
|
113
129
|
]);
|
|
114
|
-
const loadMoreRef =
|
|
115
|
-
if (isVisible && hasNextPage && !isFetchingMore) {
|
|
116
|
-
fetchNextPage();
|
|
117
|
-
}
|
|
118
|
-
}, [
|
|
130
|
+
const loadMoreRef = useInfiniteScrollSentinel.useInfiniteScrollSentinel({
|
|
119
131
|
hasNextPage,
|
|
120
132
|
isFetchingMore,
|
|
121
|
-
fetchNextPage
|
|
122
|
-
|
|
133
|
+
onLoadMore: fetchNextPage,
|
|
134
|
+
options: INTERSECTION_OPTIONS
|
|
135
|
+
});
|
|
123
136
|
if (isLoading) {
|
|
124
137
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
125
138
|
justifyContent: "center",
|
|
@@ -185,7 +198,8 @@ const AssetsView = ({ view, folders, isLoadingFolders, assets, isLoadingAssets,
|
|
|
185
198
|
})
|
|
186
199
|
}),
|
|
187
200
|
/*#__PURE__*/ jsxRuntime.jsx(BulkActionsBar.BulkActionsBar, {
|
|
188
|
-
assets: assets
|
|
201
|
+
assets: assets,
|
|
202
|
+
locations: locations
|
|
189
203
|
})
|
|
190
204
|
]
|
|
191
205
|
});
|
|
@@ -245,13 +259,122 @@ const StyledToggleItem = styledComponents.styled(ToggleGroup__namespace.Item)`
|
|
|
245
259
|
height: 1.6rem;
|
|
246
260
|
}
|
|
247
261
|
`;
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
262
|
+
// A single sticky header — same layout scrolled or not, so the toolbar
|
|
263
|
+
// alignment can't reflow the way the shared sticky header did. Once the list
|
|
264
|
+
// scrolls under it, it shrinks (reduced vertical padding + a shadow to lift it
|
|
265
|
+
// off the rows), like the sticky headers elsewhere in the admin. Horizontal
|
|
266
|
+
// padding stays responsive (passed as props); only the vertical rhythm + shadow
|
|
267
|
+
// change here so they can animate.
|
|
268
|
+
const StickyHeader = styledComponents.styled(designSystem.Box)`
|
|
269
|
+
position: sticky;
|
|
270
|
+
top: 0;
|
|
271
|
+
z-index: 2;
|
|
272
|
+
/* Transparent at rest (the grey page shows through); an opaque background +
|
|
273
|
+
shadow appear only once it sticks and content scrolls under it. */
|
|
274
|
+
background: transparent;
|
|
275
|
+
/* Horizontal padding matches the list's default spacing (Layouts.Content /
|
|
276
|
+
RESPONSIVE_DEFAULT_SPACING: 4 / 6 / 10) so the header lines up with the rows. */
|
|
277
|
+
padding: ${({ theme })=>`${theme.spaces[6]} ${theme.spaces[4]}`};
|
|
278
|
+
transition:
|
|
279
|
+
padding 0.2s ease,
|
|
280
|
+
background 0.2s ease,
|
|
281
|
+
box-shadow 0.2s ease;
|
|
251
282
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
283
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
284
|
+
padding-left: ${({ theme })=>theme.spaces[6]};
|
|
285
|
+
padding-right: ${({ theme })=>theme.spaces[6]};
|
|
286
|
+
}
|
|
287
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
288
|
+
padding-left: ${({ theme })=>theme.spaces[10]};
|
|
289
|
+
padding-right: ${({ theme })=>theme.spaces[10]};
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/* Compacting is scoped to medium and up, where the header actually sticks. On
|
|
293
|
+
mobile it scrolls away with the list, so shrinking it mid-scroll animated a
|
|
294
|
+
header the user could no longer see — the transition read as a glitch on the
|
|
295
|
+
way back up rather than as the header settling. */
|
|
296
|
+
${({ $compact, theme })=>$compact && styledComponents.css`
|
|
297
|
+
${theme.breakpoints.medium} {
|
|
298
|
+
padding-top: ${theme.spaces[3]};
|
|
299
|
+
padding-bottom: ${theme.spaces[3]};
|
|
300
|
+
padding-left: ${theme.spaces[4]};
|
|
301
|
+
padding-right: ${theme.spaces[4]};
|
|
302
|
+
background: ${theme.colors.neutral0};
|
|
303
|
+
box-shadow: ${theme.shadows.tableShadow};
|
|
304
|
+
}
|
|
305
|
+
${theme.breakpoints.large} {
|
|
306
|
+
padding-left: ${theme.spaces[6]};
|
|
307
|
+
padding-right: ${theme.spaces[6]};
|
|
308
|
+
}
|
|
309
|
+
`}
|
|
310
|
+
`;
|
|
311
|
+
// New button aligns with the title, not the toolbar.
|
|
312
|
+
const TitleRow = styledComponents.styled(designSystem.Flex)`
|
|
313
|
+
justify-content: space-between;
|
|
314
|
+
align-items: flex-start;
|
|
315
|
+
gap: ${({ theme })=>theme.spaces[4]};
|
|
316
|
+
|
|
317
|
+
h1 {
|
|
318
|
+
font-size: 1.8rem;
|
|
319
|
+
}
|
|
320
|
+
`;
|
|
321
|
+
// Two groups in source order (Filter, Search / Sort, Toggle). Mobile: stacked —
|
|
322
|
+
// Filter+Search on row 1, Sort+Toggle on row 2. Desktop (large+): one row,
|
|
323
|
+
// Filter+Search on the left, Sort+Toggle pushed right.
|
|
324
|
+
const Toolbar = styledComponents.styled(designSystem.Flex)`
|
|
325
|
+
margin-top: ${({ theme })=>theme.spaces[5]};
|
|
326
|
+
flex-direction: column;
|
|
327
|
+
align-items: stretch;
|
|
328
|
+
gap: ${({ theme })=>theme.spaces[3]};
|
|
329
|
+
transition: margin-top 0.2s ease;
|
|
330
|
+
|
|
331
|
+
/* Tightening the gap to the title belongs to the compact header, so it is
|
|
332
|
+
scoped to the breakpoints that compact. On mobile the header never sticks,
|
|
333
|
+
and this was the last thing still shifting as the page scrolled. */
|
|
334
|
+
${({ $compact, theme })=>$compact && styledComponents.css`
|
|
335
|
+
${theme.breakpoints.medium} {
|
|
336
|
+
margin-top: ${theme.spaces[2]};
|
|
337
|
+
}
|
|
338
|
+
`}
|
|
339
|
+
|
|
340
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
341
|
+
flex-direction: row;
|
|
342
|
+
align-items: center;
|
|
343
|
+
justify-content: space-between;
|
|
344
|
+
}
|
|
345
|
+
`;
|
|
346
|
+
const ToolbarGroup = styledComponents.styled(designSystem.Flex)`
|
|
347
|
+
align-items: center;
|
|
348
|
+
gap: ${({ theme })=>theme.spaces[3]};
|
|
349
|
+
`;
|
|
350
|
+
// Filter + Search. On mobile the group fills the row (search grows into it);
|
|
351
|
+
// on desktop it keeps its intrinsic size and sits at the left edge.
|
|
352
|
+
const FilterSearchGroup = styledComponents.styled(ToolbarGroup)``;
|
|
353
|
+
// Sort + Toggle. Mobile: spread across the row (Sort left, Toggle right).
|
|
354
|
+
// Desktop: sit together at the right edge (space-between on the toolbar leaves
|
|
355
|
+
// the empty space between the search and here).
|
|
356
|
+
const SortToggleGroup = styledComponents.styled(ToolbarGroup)`
|
|
357
|
+
justify-content: space-between;
|
|
358
|
+
|
|
359
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
360
|
+
justify-content: flex-end;
|
|
361
|
+
flex: 0 0 auto;
|
|
362
|
+
}
|
|
363
|
+
`;
|
|
364
|
+
// Fills the row on mobile; intrinsic width on desktop.
|
|
365
|
+
const SearchSlot = styledComponents.styled(designSystem.Box)`
|
|
366
|
+
flex: 1;
|
|
367
|
+
|
|
368
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
369
|
+
flex: 0 1 auto;
|
|
370
|
+
}
|
|
371
|
+
`;
|
|
372
|
+
// Toggle labels are hidden below desktop — icons only (buttons keep aria-label).
|
|
373
|
+
const ToggleLabel = styledComponents.styled.span`
|
|
374
|
+
display: none;
|
|
375
|
+
|
|
376
|
+
${({ theme })=>theme.breakpoints.large} {
|
|
377
|
+
display: inline;
|
|
255
378
|
}
|
|
256
379
|
`;
|
|
257
380
|
const AssetsPage = ()=>{
|
|
@@ -284,7 +407,7 @@ const AssetsPage = ()=>{
|
|
|
284
407
|
[
|
|
285
408
|
listFilters.serialized
|
|
286
409
|
]);
|
|
287
|
-
const { assets, pagination, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error: assetsError } = useInfiniteAssets.useInfiniteAssets({
|
|
410
|
+
const { assets, subscribers: assetPageSubscribers, pagination, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error: assetsError } = useInfiniteAssets.useInfiniteAssets({
|
|
288
411
|
// The real folder is passed even while searching: the service drops the folder
|
|
289
412
|
// filter when `search` is set, so results are still global. List filters
|
|
290
413
|
// compose with both modes.
|
|
@@ -292,7 +415,6 @@ const AssetsPage = ()=>{
|
|
|
292
415
|
search: searchQuery || undefined,
|
|
293
416
|
sort: listSort.assetsSort,
|
|
294
417
|
filters: builtFilters.fileClauses,
|
|
295
|
-
filtersKey: listFilters.serialized,
|
|
296
418
|
enabled: builtFilters.showFiles
|
|
297
419
|
});
|
|
298
420
|
const { data: fetchedFolders = [], isLoading: isLoadingFolders } = folders.useGetFoldersQuery({
|
|
@@ -308,6 +430,13 @@ const AssetsPage = ()=>{
|
|
|
308
430
|
builtFilters.showFolders,
|
|
309
431
|
fetchedFolders
|
|
310
432
|
]);
|
|
433
|
+
// Both move affordances (drag and the bulk bar) resolve each item's parent
|
|
434
|
+
// from the rows on screen — while searching, results are global and the
|
|
435
|
+
// folder currently open says nothing about where an item lives.
|
|
436
|
+
const itemLocations$1 = React.useMemo(()=>itemLocations.buildItemLocations(assets, folders$1), [
|
|
437
|
+
assets,
|
|
438
|
+
folders$1
|
|
439
|
+
]);
|
|
311
440
|
const itemCountLabel = formatMessage(ITEM_COUNT_MESSAGE, {
|
|
312
441
|
count: itemCount
|
|
313
442
|
});
|
|
@@ -343,6 +472,12 @@ const AssetsPage = ()=>{
|
|
|
343
472
|
// Refs
|
|
344
473
|
const fileInputRef = React.useRef(null);
|
|
345
474
|
const uploadDropZoneRef = React.useRef(null);
|
|
475
|
+
// Shrink the sticky header once the list scrolls beneath it. A zero-height
|
|
476
|
+
// sentinel sits at the very top of the scroll content; when it leaves the
|
|
477
|
+
// viewport we're scrolled → compact.
|
|
478
|
+
const [isHeaderCompact, setIsHeaderCompact] = React.useState(false);
|
|
479
|
+
const onHeaderSentinelVisibility = React.useCallback((isVisible)=>setIsHeaderCompact(!isVisible), []);
|
|
480
|
+
const headerSentinelRef = strapiAdmin.useElementOnScreen(onHeaderSentinelVisibility, HEADER_SENTINEL_OPTIONS);
|
|
346
481
|
// Upload handlers
|
|
347
482
|
const [uploadFiles] = api.useUploadFilesMutation();
|
|
348
483
|
const [uploadFromUrls] = api.useUploadFromUrlsMutation();
|
|
@@ -351,10 +486,24 @@ const AssetsPage = ()=>{
|
|
|
351
486
|
// server asked for.
|
|
352
487
|
const { data: settings$1 } = settings.useGetUploadSettingsQuery();
|
|
353
488
|
const concurrency = settings$1?.data?.concurrentUploadRequests ?? 1;
|
|
354
|
-
// Drives the post-upload AI metadata phase shown per row in the progress
|
|
355
|
-
|
|
489
|
+
// Drives the post-upload AI metadata phase shown per row in the progress
|
|
490
|
+
// dialog. No mime argument: the files are not known until they are picked,
|
|
491
|
+
// and the server filters the batch on the same allowlist anyway.
|
|
492
|
+
const isAiMetadataEnabled = useAIMetadataEnabled.useAIMetadataEnabled();
|
|
493
|
+
const { trackUsage } = useTracking.useTracking();
|
|
356
494
|
const uploadFilesToFolder = async (files, folderId)=>{
|
|
357
495
|
if (files.length === 0) return;
|
|
496
|
+
// Mirror the legacy `willAddMediaLibraryAssets` payload: the count of files
|
|
497
|
+
// about to upload, broken down by asset type.
|
|
498
|
+
const assetsCountByType = files.reduce((acc, file)=>{
|
|
499
|
+
const type = typeFromMime.typeFromMime(file.type);
|
|
500
|
+
acc[type] = (acc[type] ?? 0) + 1;
|
|
501
|
+
return acc;
|
|
502
|
+
}, {});
|
|
503
|
+
trackUsage('willAddMediaLibraryAssets', {
|
|
504
|
+
location: useTracking.MEDIA_LIBRARY_LOCATION,
|
|
505
|
+
...assetsCountByType
|
|
506
|
+
});
|
|
358
507
|
const formData = new FormData();
|
|
359
508
|
const fileInfoArray = [];
|
|
360
509
|
files.forEach((file)=>{
|
|
@@ -384,6 +533,10 @@ const AssetsPage = ()=>{
|
|
|
384
533
|
const handleFileChange = async (e)=>{
|
|
385
534
|
const files = e.target.files;
|
|
386
535
|
if (files && files.length > 0) {
|
|
536
|
+
trackUsage('didSelectFile', {
|
|
537
|
+
source: 'computer',
|
|
538
|
+
location: useTracking.MEDIA_LIBRARY_LOCATION
|
|
539
|
+
});
|
|
387
540
|
await uploadFilesToFolder(Array.from(files), currentFolderId);
|
|
388
541
|
}
|
|
389
542
|
e.target.value = '';
|
|
@@ -392,9 +545,22 @@ const AssetsPage = ()=>{
|
|
|
392
545
|
// Defence in depth: the provider is `disabled` without `assets.create`
|
|
393
546
|
// (so onDrop won't fire), but guard here too in case it's ever wired live.
|
|
394
547
|
if (!canCreate) return;
|
|
548
|
+
trackUsage('didSelectFile', {
|
|
549
|
+
source: 'computer',
|
|
550
|
+
location: useTracking.MEDIA_LIBRARY_LOCATION
|
|
551
|
+
});
|
|
395
552
|
await uploadFilesToFolder(files, currentFolderId);
|
|
396
553
|
};
|
|
397
554
|
const handleUrlUpload = async (urls)=>{
|
|
555
|
+
trackUsage('didSelectFile', {
|
|
556
|
+
source: 'url',
|
|
557
|
+
location: useTracking.MEDIA_LIBRARY_LOCATION
|
|
558
|
+
});
|
|
559
|
+
// Counts-by-type aren't available client-side for the URL flow (the server
|
|
560
|
+
// fetches the files), so this fires the event with location only.
|
|
561
|
+
trackUsage('willAddMediaLibraryAssets', {
|
|
562
|
+
location: useTracking.MEDIA_LIBRARY_LOCATION
|
|
563
|
+
});
|
|
398
564
|
try {
|
|
399
565
|
await uploadFromUrls({
|
|
400
566
|
urls,
|
|
@@ -421,93 +587,105 @@ const AssetsPage = ()=>{
|
|
|
421
587
|
disabled: !canCreate,
|
|
422
588
|
children: /*#__PURE__*/ jsxRuntime.jsx(useAssetSelection.AssetSelectionProvider, {
|
|
423
589
|
disabled: !canUpdate,
|
|
424
|
-
children: /*#__PURE__*/ jsxRuntime.
|
|
425
|
-
children:
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
minHeight: "100vh",
|
|
433
|
-
background: "neutral0",
|
|
590
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(useBusyAssets.BusyAssetsProvider, {
|
|
591
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(AssetsDndProvider.AssetsDndProvider, {
|
|
592
|
+
locations: itemLocations$1,
|
|
593
|
+
children: [
|
|
594
|
+
/*#__PURE__*/ jsxRuntime.jsx(ClearSelectionOnChange, {
|
|
595
|
+
listQueryKey: listQueryKey$1
|
|
596
|
+
}),
|
|
597
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Root, {
|
|
434
598
|
sideNav: /*#__PURE__*/ jsxRuntime.jsx(FolderTree.FolderTree, {
|
|
435
599
|
currentFolderId: currentFolderId,
|
|
436
600
|
showActiveFolder: !isSearching,
|
|
437
601
|
onSelectFolder: navigateToFolderId
|
|
438
602
|
}),
|
|
439
|
-
children:
|
|
440
|
-
/*#__PURE__*/ jsxRuntime.
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
label: formatMessage({
|
|
456
|
-
id: translations.getTranslationKey('new'),
|
|
457
|
-
defaultMessage: 'New'
|
|
458
|
-
}),
|
|
459
|
-
children: [
|
|
460
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
|
|
461
|
-
onSelect: ()=>setIsCreateFolderDialogOpen(true),
|
|
462
|
-
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Folder, {}),
|
|
463
|
-
children: formatMessage({
|
|
464
|
-
id: translations.getTranslationKey('folder.create.title'),
|
|
465
|
-
defaultMessage: 'New folder'
|
|
466
|
-
})
|
|
467
|
-
}),
|
|
468
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
|
|
469
|
-
onSelect: handleFileSelect,
|
|
470
|
-
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Files, {}),
|
|
471
|
-
children: formatMessage({
|
|
472
|
-
id: translations.getTranslationKey('import-files'),
|
|
473
|
-
defaultMessage: 'Import files'
|
|
474
|
-
})
|
|
475
|
-
}),
|
|
476
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
|
|
477
|
-
onSelect: ()=>setIsUrlDialogOpen(true),
|
|
478
|
-
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Link, {}),
|
|
479
|
-
children: formatMessage({
|
|
480
|
-
id: translations.getTranslationKey('import-from-url'),
|
|
481
|
-
defaultMessage: 'Import from URL'
|
|
482
|
-
})
|
|
483
|
-
})
|
|
484
|
-
]
|
|
603
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Main, {
|
|
604
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
|
|
605
|
+
ref: uploadDropZoneRef,
|
|
606
|
+
children: [
|
|
607
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
|
|
608
|
+
children: /*#__PURE__*/ jsxRuntime.jsx("input", {
|
|
609
|
+
type: "file",
|
|
610
|
+
ref: fileInputRef,
|
|
611
|
+
onChange: handleFileChange,
|
|
612
|
+
multiple: true
|
|
613
|
+
})
|
|
614
|
+
}),
|
|
615
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
616
|
+
ref: headerSentinelRef,
|
|
617
|
+
height: 0,
|
|
618
|
+
"aria-hidden": true
|
|
485
619
|
}),
|
|
486
|
-
|
|
620
|
+
/*#__PURE__*/ jsxRuntime.jsxs(StickyHeader, {
|
|
621
|
+
$compact: isHeaderCompact,
|
|
487
622
|
children: [
|
|
488
|
-
/*#__PURE__*/ jsxRuntime.jsxs(
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
623
|
+
/*#__PURE__*/ jsxRuntime.jsxs(TitleRow, {
|
|
624
|
+
children: [
|
|
625
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
626
|
+
variant: "alpha",
|
|
627
|
+
tag: "h1",
|
|
628
|
+
children: pageHeaderTitle
|
|
629
|
+
}),
|
|
630
|
+
canCreate && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.SimpleMenu, {
|
|
631
|
+
popoverPlacement: "bottom-end",
|
|
632
|
+
variant: "default",
|
|
633
|
+
endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ChevronDown, {}),
|
|
634
|
+
label: formatMessage({
|
|
635
|
+
id: translations.getTranslationKey('new'),
|
|
636
|
+
defaultMessage: 'New'
|
|
637
|
+
}),
|
|
638
|
+
children: [
|
|
639
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
|
|
640
|
+
onSelect: ()=>setIsCreateFolderDialogOpen(true),
|
|
641
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Folder, {}),
|
|
642
|
+
children: formatMessage({
|
|
643
|
+
id: translations.getTranslationKey('folder.create.title'),
|
|
644
|
+
defaultMessage: 'New folder'
|
|
645
|
+
})
|
|
646
|
+
}),
|
|
647
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
|
|
648
|
+
onSelect: handleFileSelect,
|
|
649
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Files, {}),
|
|
650
|
+
children: formatMessage({
|
|
651
|
+
id: translations.getTranslationKey('import-files'),
|
|
652
|
+
defaultMessage: 'Import files'
|
|
653
|
+
})
|
|
654
|
+
}),
|
|
655
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
|
|
656
|
+
onSelect: ()=>setIsUrlDialogOpen(true),
|
|
657
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Link, {}),
|
|
658
|
+
children: formatMessage({
|
|
659
|
+
id: translations.getTranslationKey('import-from-url'),
|
|
660
|
+
defaultMessage: 'Import from URL'
|
|
661
|
+
})
|
|
662
|
+
})
|
|
663
|
+
]
|
|
664
|
+
})
|
|
665
|
+
]
|
|
666
|
+
}),
|
|
667
|
+
/*#__PURE__*/ jsxRuntime.jsxs(Toolbar, {
|
|
668
|
+
$compact: isHeaderCompact,
|
|
493
669
|
children: [
|
|
494
|
-
/*#__PURE__*/ jsxRuntime.jsxs(
|
|
495
|
-
gap: 4,
|
|
496
|
-
alignItems: "center",
|
|
670
|
+
/*#__PURE__*/ jsxRuntime.jsxs(FilterSearchGroup, {
|
|
497
671
|
children: [
|
|
498
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
499
|
-
|
|
672
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
673
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(FilterMenu.FilterMenu, {
|
|
674
|
+
listFilters: listFilters
|
|
675
|
+
})
|
|
500
676
|
}),
|
|
501
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
677
|
+
/*#__PURE__*/ jsxRuntime.jsx(SearchSlot, {
|
|
678
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(AssetsSearchInput.AssetsSearchInput, {})
|
|
679
|
+
})
|
|
502
680
|
]
|
|
503
681
|
}),
|
|
504
|
-
/*#__PURE__*/ jsxRuntime.jsxs(
|
|
505
|
-
gap: 4,
|
|
506
|
-
alignItems: "center",
|
|
682
|
+
/*#__PURE__*/ jsxRuntime.jsxs(SortToggleGroup, {
|
|
507
683
|
children: [
|
|
508
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
509
|
-
|
|
510
|
-
|
|
684
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
685
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(SortMenu.SortMenu, {
|
|
686
|
+
sort: listSort,
|
|
687
|
+
showFoldersGroup: !isGridView
|
|
688
|
+
})
|
|
511
689
|
}),
|
|
512
690
|
/*#__PURE__*/ jsxRuntime.jsxs(StyledToggleGroup, {
|
|
513
691
|
type: "single",
|
|
@@ -526,9 +704,11 @@ const AssetsPage = ()=>{
|
|
|
526
704
|
}),
|
|
527
705
|
children: [
|
|
528
706
|
/*#__PURE__*/ jsxRuntime.jsx(icons.List, {}),
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
707
|
+
/*#__PURE__*/ jsxRuntime.jsx(ToggleLabel, {
|
|
708
|
+
children: formatMessage({
|
|
709
|
+
id: translations.getTranslationKey('view.table'),
|
|
710
|
+
defaultMessage: 'Table view'
|
|
711
|
+
})
|
|
532
712
|
})
|
|
533
713
|
]
|
|
534
714
|
}),
|
|
@@ -540,9 +720,11 @@ const AssetsPage = ()=>{
|
|
|
540
720
|
}),
|
|
541
721
|
children: [
|
|
542
722
|
/*#__PURE__*/ jsxRuntime.jsx(icons.GridFour, {}),
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
723
|
+
/*#__PURE__*/ jsxRuntime.jsx(ToggleLabel, {
|
|
724
|
+
children: formatMessage({
|
|
725
|
+
id: translations.getTranslationKey('view.grid'),
|
|
726
|
+
defaultMessage: 'Grid view'
|
|
727
|
+
})
|
|
546
728
|
})
|
|
547
729
|
]
|
|
548
730
|
})
|
|
@@ -553,52 +735,59 @@ const AssetsPage = ()=>{
|
|
|
553
735
|
]
|
|
554
736
|
}),
|
|
555
737
|
/*#__PURE__*/ jsxRuntime.jsx(FilterBadges.FilterBadges, {
|
|
556
|
-
listFilters: listFilters
|
|
738
|
+
listFilters: listFilters,
|
|
739
|
+
compact: isHeaderCompact
|
|
740
|
+
})
|
|
741
|
+
]
|
|
742
|
+
}),
|
|
743
|
+
/*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Layouts.Content, {
|
|
744
|
+
children: [
|
|
745
|
+
/*#__PURE__*/ jsxRuntime.jsx(BetaNotice.BetaNotice, {}),
|
|
746
|
+
assetPageSubscribers,
|
|
747
|
+
/*#__PURE__*/ jsxRuntime.jsxs(UploadDropZone.DropZoneWithOverlay, {
|
|
748
|
+
children: [
|
|
749
|
+
/*#__PURE__*/ jsxRuntime.jsx(UploadDropZone.DropFilesMessage, {
|
|
750
|
+
uploadDropZoneRef: uploadDropZoneRef,
|
|
751
|
+
folderName: title
|
|
752
|
+
}),
|
|
753
|
+
/*#__PURE__*/ jsxRuntime.jsx(AssetsView, {
|
|
754
|
+
view: view,
|
|
755
|
+
folders: folders$1,
|
|
756
|
+
isLoadingFolders: isLoadingFolders,
|
|
757
|
+
assets: assets,
|
|
758
|
+
isLoadingAssets: isLoadingAssets,
|
|
759
|
+
isFetchingMore: isFetchingMore,
|
|
760
|
+
hasNextPage: hasNextPage,
|
|
761
|
+
fetchNextPage: fetchNextPage,
|
|
762
|
+
error: assetsError,
|
|
763
|
+
locations: itemLocations$1,
|
|
764
|
+
searchQuery: searchQuery,
|
|
765
|
+
assetsSort: listSort.assetsSort,
|
|
766
|
+
foldersPosition: listSort.foldersPosition,
|
|
767
|
+
hasActiveFilters: listFilters.filters.length > 0,
|
|
768
|
+
onClearFilters: listFilters.clearFilters,
|
|
769
|
+
onAssetItemClick: openDetails,
|
|
770
|
+
onAddAssets: handleFileSelect,
|
|
771
|
+
canAddAssets: canCreate,
|
|
772
|
+
onClearSearch: clearSearch
|
|
773
|
+
})
|
|
774
|
+
]
|
|
557
775
|
})
|
|
558
776
|
]
|
|
559
777
|
})
|
|
560
|
-
|
|
561
|
-
}),
|
|
562
|
-
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
|
|
563
|
-
children: /*#__PURE__*/ jsxRuntime.jsxs(UploadDropZone.DropZoneWithOverlay, {
|
|
564
|
-
children: [
|
|
565
|
-
/*#__PURE__*/ jsxRuntime.jsx(UploadDropZone.DropFilesMessage, {
|
|
566
|
-
uploadDropZoneRef: uploadDropZoneRef,
|
|
567
|
-
folderName: title
|
|
568
|
-
}),
|
|
569
|
-
/*#__PURE__*/ jsxRuntime.jsx(AssetsView, {
|
|
570
|
-
view: view,
|
|
571
|
-
folders: folders$1,
|
|
572
|
-
isLoadingFolders: isLoadingFolders,
|
|
573
|
-
assets: assets,
|
|
574
|
-
isLoadingAssets: isLoadingAssets,
|
|
575
|
-
isFetchingMore: isFetchingMore,
|
|
576
|
-
hasNextPage: hasNextPage,
|
|
577
|
-
fetchNextPage: fetchNextPage,
|
|
578
|
-
error: assetsError,
|
|
579
|
-
searchQuery: searchQuery,
|
|
580
|
-
assetsSort: listSort.assetsSort,
|
|
581
|
-
foldersPosition: listSort.foldersPosition,
|
|
582
|
-
hasActiveFilters: listFilters.filters.length > 0,
|
|
583
|
-
onClearFilters: listFilters.clearFilters,
|
|
584
|
-
onAssetItemClick: openDetails,
|
|
585
|
-
onAddAssets: handleFileSelect,
|
|
586
|
-
canAddAssets: canCreate,
|
|
587
|
-
onClearSearch: clearSearch
|
|
588
|
-
})
|
|
589
|
-
]
|
|
590
|
-
})
|
|
778
|
+
]
|
|
591
779
|
})
|
|
592
|
-
|
|
780
|
+
})
|
|
593
781
|
})
|
|
594
|
-
|
|
595
|
-
|
|
782
|
+
]
|
|
783
|
+
})
|
|
596
784
|
})
|
|
597
785
|
})
|
|
598
786
|
}),
|
|
599
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
787
|
+
/*#__PURE__*/ jsxRuntime.jsx(FolderFormDialog.FolderFormDialog, {
|
|
600
788
|
open: isCreateFolderDialogOpen,
|
|
601
|
-
|
|
789
|
+
mode: "create",
|
|
790
|
+
parentFolderName: title,
|
|
602
791
|
parentFolderId: currentFolderId,
|
|
603
792
|
onClose: ()=>setIsCreateFolderDialogOpen(false)
|
|
604
793
|
}),
|