@strapi/upload 5.51.1 → 5.51.2
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/VideoPreview.js +1 -1
- package/dist/admin/components/AssetCard/VideoPreview.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoPreview.mjs +1 -1
- package/dist/admin/components/AssetCard/VideoPreview.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +1 -1
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -1
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +21 -4
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +21 -4
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/future/components/Drawer.js +3 -1
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/components/Drawer.mjs +3 -1
- package/dist/admin/future/components/Drawer.mjs.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.js +200 -27
- package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs +203 -30
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/future/hooks/useMediaLibraryPermissions.js +35 -0
- package/dist/admin/future/hooks/useMediaLibraryPermissions.js.map +1 -0
- package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs +33 -0
- package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/AssetsPage.js +203 -78
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +200 -75
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +75 -32
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +75 -32
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +46 -19
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +47 -20
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +5 -2
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +5 -2
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js +100 -0
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs +98 -0
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +10 -4
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +10 -4
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +140 -22
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +142 -24
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/DateRangeCalendar.js +193 -0
- package/dist/admin/future/pages/Assets/components/DateRangeCalendar.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/DateRangeCalendar.mjs +191 -0
- package/dist/admin/future/pages/Assets/components/DateRangeCalendar.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +18 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +18 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js +13 -3
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +13 -3
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/EmptyState.js +62 -3
- package/dist/admin/future/pages/Assets/components/EmptyState.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/EmptyState.mjs +62 -4
- package/dist/admin/future/pages/Assets/components/EmptyState.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FilterBadges.js +408 -0
- package/dist/admin/future/pages/Assets/components/FilterBadges.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/FilterBadges.mjs +406 -0
- package/dist/admin/future/pages/Assets/components/FilterBadges.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/FilterMenu.js +273 -0
- package/dist/admin/future/pages/Assets/components/FilterMenu.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/FilterMenu.mjs +267 -0
- package/dist/admin/future/pages/Assets/components/FilterMenu.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +76 -19
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +78 -21
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js +33 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs +31 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/SortMenu.js +21 -32
- package/dist/admin/future/pages/Assets/components/SortMenu.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/SortMenu.mjs +22 -33
- package/dist/admin/future/pages/Assets/components/SortMenu.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSearch.js +40 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSearch.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSearch.mjs +38 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSearch.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js +21 -5
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs +21 -5
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +33 -12
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +33 -12
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +40 -4
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +40 -4
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js +168 -0
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs +162 -0
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/buildAssetFilters.js +201 -0
- package/dist/admin/future/pages/Assets/utils/buildAssetFilters.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/buildAssetFilters.mjs +198 -0
- package/dist/admin/future/pages/Assets/utils/buildAssetFilters.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/listQueryKey.js +2 -2
- package/dist/admin/future/pages/Assets/utils/listQueryKey.js.map +1 -1
- package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs +2 -2
- package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs.map +1 -1
- package/dist/admin/future/services/api.js +163 -28
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +163 -30
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/services/assets.js +29 -17
- package/dist/admin/future/services/assets.js.map +1 -1
- package/dist/admin/future/services/assets.mjs +29 -17
- package/dist/admin/future/services/assets.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +29 -17
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +29 -17
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/services/settings.js +10 -3
- package/dist/admin/future/services/settings.js.map +1 -1
- package/dist/admin/future/services/settings.mjs +10 -3
- package/dist/admin/future/services/settings.mjs.map +1 -1
- package/dist/admin/future/store/uploadProgress.js +109 -2
- package/dist/admin/future/store/uploadProgress.js.map +1 -1
- package/dist/admin/future/store/uploadProgress.mjs +105 -3
- package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/future/utils/searchQueryParam.js +11 -0
- package/dist/admin/future/utils/searchQueryParam.js.map +1 -0
- package/dist/admin/future/utils/searchQueryParam.mjs +9 -0
- package/dist/admin/future/utils/searchQueryParam.mjs.map +1 -0
- package/dist/admin/hooks/useSelectionState.js +2 -4
- package/dist/admin/hooks/useSelectionState.js.map +1 -1
- package/dist/admin/hooks/useSelectionState.mjs +2 -4
- package/dist/admin/hooks/useSelectionState.mjs.map +1 -1
- package/dist/admin/shared/constants.js +43 -0
- package/dist/admin/shared/constants.js.map +1 -0
- package/dist/admin/shared/constants.mjs +38 -0
- package/dist/admin/shared/constants.mjs.map +1 -0
- package/dist/admin/src/future/hooks/useMediaLibraryPermissions.d.ts +21 -0
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +7 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsSearchInput.d.ts +5 -0
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +14 -1
- package/dist/admin/src/future/pages/Assets/components/DateRangeCalendar.d.ts +8 -0
- package/dist/admin/src/future/pages/Assets/components/DropZone/UploadDropZoneContext.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/components/EmptyState.d.ts +18 -1
- package/dist/admin/src/future/pages/Assets/components/FilterBadges.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/components/FilterMenu.d.ts +22 -0
- package/dist/admin/src/future/pages/Assets/components/FolderTree/FolderTree.d.ts +13 -4
- package/dist/admin/src/future/pages/Assets/components/FolderTree/filterFolderTree.d.ts +16 -0
- package/dist/admin/src/future/pages/Assets/components/SortMenu.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/hooks/useAssetSearch.d.ts +12 -0
- package/dist/admin/src/future/pages/Assets/hooks/useAssetSelection.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +13 -3
- package/dist/admin/src/future/pages/Assets/hooks/useListFilters.d.ts +69 -0
- package/dist/admin/src/future/pages/Assets/utils/buildAssetFilters.d.ts +46 -0
- package/dist/admin/src/future/pages/Assets/utils/listQueryKey.d.ts +3 -4
- package/dist/admin/src/future/services/api.d.ts +53 -5
- package/dist/admin/src/future/services/assets.d.ts +9 -1
- package/dist/admin/src/future/services/folders.d.ts +3 -0
- package/dist/admin/src/future/services/settings.d.ts +2 -2
- package/dist/admin/src/future/store/uploadProgress.d.ts +83 -1
- package/dist/admin/src/future/utils/searchQueryParam.d.ts +7 -0
- package/dist/admin/src/hooks/useAiAvailability.d.ts +1 -1
- package/dist/admin/src/hooks/useEditAsset.d.ts +4 -4
- package/dist/admin/src/hooks/useEditFolder.d.ts +4 -4
- package/dist/admin/src/hooks/useSettings.d.ts +1 -0
- package/dist/admin/src/hooks/useTracking.d.ts +1 -1
- package/dist/admin/src/hooks/useUpload.d.ts +1 -1
- package/dist/admin/translations/en.json.js +53 -3
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +53 -3
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/urlYupSchema.js +33 -9
- package/dist/admin/utils/urlYupSchema.js.map +1 -1
- package/dist/admin/utils/urlYupSchema.mjs +33 -9
- package/dist/admin/utils/urlYupSchema.mjs.map +1 -1
- package/dist/server/config.js +13 -5
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +13 -5
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/constants.js.map +1 -1
- package/dist/server/constants.mjs.map +1 -1
- package/dist/server/controllers/admin-file.js +30 -0
- package/dist/server/controllers/admin-file.js.map +1 -1
- package/dist/server/controllers/admin-file.mjs +30 -0
- package/dist/server/controllers/admin-file.mjs.map +1 -1
- package/dist/server/controllers/admin-settings.js +20 -2
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs +21 -3
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/controllers/content-api.js +1 -2
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/content-api.mjs +2 -2
- package/dist/server/controllers/content-api.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/ai-metadata.js +12 -0
- package/dist/server/controllers/validation/admin/ai-metadata.js.map +1 -0
- package/dist/server/controllers/validation/admin/ai-metadata.mjs +10 -0
- package/dist/server/controllers/validation/admin/ai-metadata.mjs.map +1 -0
- package/dist/server/controllers/validation/admin/settings.js +4 -1
- package/dist/server/controllers/validation/admin/settings.js.map +1 -1
- package/dist/server/controllers/validation/admin/settings.mjs +1 -1
- package/dist/server/controllers/validation/admin/settings.mjs.map +1 -1
- package/dist/server/routes/admin.js +18 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +18 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js +108 -11
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs +108 -11
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/file.js +86 -13
- package/dist/server/services/file.js.map +1 -1
- package/dist/server/services/file.mjs +87 -14
- package/dist/server/services/file.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js +4 -4
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +4 -4
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/shared/constants.js +43 -0
- package/dist/server/shared/constants.js.map +1 -0
- package/dist/server/shared/constants.mjs +38 -0
- package/dist/server/shared/constants.mjs.map +1 -0
- package/dist/server/src/config.d.ts +2 -0
- package/dist/server/src/config.d.ts.map +1 -1
- package/dist/server/src/constants.d.ts +2 -1
- package/dist/server/src/constants.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-file.d.ts +10 -0
- package/dist/server/src/controllers/admin-file.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/ai-metadata.d.ts +2 -0
- package/dist/server/src/controllers/validation/admin/ai-metadata.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/admin/settings.d.ts +1 -1
- package/dist/server/src/controllers/validation/admin/settings.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +7 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/ai-metadata.d.ts +19 -0
- package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
- package/dist/server/src/services/file.d.ts +12 -2
- package/dist/server/src/services/file.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -1
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/types.d.ts +3 -0
- package/dist/server/src/types.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +35 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/contracts/files.d.ts +25 -0
- package/dist/shared/contracts/files.d.ts.map +1 -1
- package/dist/shared/contracts/settings.d.ts +7 -0
- package/package.json +7 -7
|
@@ -8,11 +8,15 @@ 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 useAiAvailability = require('../../../hooks/useAiAvailability.js');
|
|
12
|
+
var useMediaLibraryPermissions = require('../../hooks/useMediaLibraryPermissions.js');
|
|
11
13
|
var api = require('../../services/api.js');
|
|
12
14
|
var folders = require('../../services/folders.js');
|
|
15
|
+
var settings = require('../../services/settings.js');
|
|
13
16
|
var translations = require('../../utils/translations.js');
|
|
14
17
|
var AssetDetailsDrawer = require('./components/AssetDetails/AssetDetailsDrawer.js');
|
|
15
18
|
var AssetsGrid = require('./components/AssetsGrid.js');
|
|
19
|
+
var AssetsSearchInput = require('./components/AssetsSearchInput.js');
|
|
16
20
|
var AssetsTable = require('./components/AssetsTable.js');
|
|
17
21
|
var BulkActionsBar = require('./components/BulkActionsBar.js');
|
|
18
22
|
var CreateFolderDialog = require('./components/CreateFolderDialog.js');
|
|
@@ -20,15 +24,20 @@ var AssetsDndProvider = require('./components/Dnd/AssetsDndProvider.js');
|
|
|
20
24
|
var UploadDropZone = require('./components/DropZone/UploadDropZone.js');
|
|
21
25
|
var UploadDropZoneContext = require('./components/DropZone/UploadDropZoneContext.js');
|
|
22
26
|
var EmptyState = require('./components/EmptyState.js');
|
|
27
|
+
var FilterBadges = require('./components/FilterBadges.js');
|
|
28
|
+
var FilterMenu = require('./components/FilterMenu.js');
|
|
23
29
|
var FolderTree = require('./components/FolderTree/FolderTree.js');
|
|
24
30
|
var ImportFromUrlDialog = require('./components/ImportFromUrlDialog.js');
|
|
25
31
|
var SortMenu = require('./components/SortMenu.js');
|
|
26
32
|
var constants = require('./constants.js');
|
|
33
|
+
var useAssetSearch = require('./hooks/useAssetSearch.js');
|
|
27
34
|
var useAssetSelection = require('./hooks/useAssetSelection.js');
|
|
28
35
|
var useFolderInfo = require('./hooks/useFolderInfo.js');
|
|
29
36
|
var useFolderNavigation = require('./hooks/useFolderNavigation.js');
|
|
30
37
|
var useInfiniteAssets = require('./hooks/useInfiniteAssets.js');
|
|
38
|
+
var useListFilters = require('./hooks/useListFilters.js');
|
|
31
39
|
var useListSort = require('./hooks/useListSort.js');
|
|
40
|
+
var buildAssetFilters = require('./utils/buildAssetFilters.js');
|
|
32
41
|
var listQueryKey = require('./utils/listQueryKey.js');
|
|
33
42
|
var mergeMixedList = require('./utils/mergeMixedList.js');
|
|
34
43
|
|
|
@@ -55,30 +64,49 @@ var ToggleGroup__namespace = /*#__PURE__*/_interopNamespace(ToggleGroup);
|
|
|
55
64
|
const INTERSECTION_OPTIONS = {
|
|
56
65
|
threshold: 0.1
|
|
57
66
|
};
|
|
58
|
-
const
|
|
67
|
+
const ITEM_COUNT_MESSAGE = {
|
|
68
|
+
id: translations.getTranslationKey('header.content.item-count'),
|
|
69
|
+
defaultMessage: '{count, plural, =1 {# item} other {# items}}'
|
|
70
|
+
};
|
|
71
|
+
const SEARCH_RESULTS_COUNT_MESSAGES = {
|
|
72
|
+
both: {
|
|
73
|
+
id: translations.getTranslationKey('header.search-results.count'),
|
|
74
|
+
defaultMessage: '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}}'
|
|
75
|
+
},
|
|
76
|
+
folders: {
|
|
77
|
+
id: translations.getTranslationKey('header.search-results.count.folders'),
|
|
78
|
+
defaultMessage: '{numberFolders, plural, one {1 folder} other {# folders}}'
|
|
79
|
+
},
|
|
80
|
+
assets: {
|
|
81
|
+
id: translations.getTranslationKey('header.search-results.count.assets'),
|
|
82
|
+
defaultMessage: '{numberAssets, plural, =0 {0 assets} one {1 asset} other {# assets}}'
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const getSearchResultsCountMessage = (numberFolders, numberAssets)=>{
|
|
86
|
+
if (numberFolders === 0) {
|
|
87
|
+
return SEARCH_RESULTS_COUNT_MESSAGES.assets;
|
|
88
|
+
}
|
|
89
|
+
if (numberAssets === 0) {
|
|
90
|
+
return SEARCH_RESULTS_COUNT_MESSAGES.folders;
|
|
91
|
+
}
|
|
92
|
+
return SEARCH_RESULTS_COUNT_MESSAGES.both;
|
|
93
|
+
};
|
|
94
|
+
const AssetsView = ({ view, folders, isLoadingFolders, assets, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error, searchQuery, assetsSort, foldersPosition, hasActiveFilters, onClearFilters, onAssetItemClick, onAddAssets, canAddAssets, onClearSearch })=>{
|
|
59
95
|
const { formatMessage } = reactIntl.useIntl();
|
|
60
|
-
const { assets, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error } = useInfiniteAssets.useInfiniteAssets({
|
|
61
|
-
folder: folderId,
|
|
62
|
-
sort: assetsSort
|
|
63
|
-
});
|
|
64
|
-
const { data: folders$1 = [], isLoading: isLoadingFolders } = folders.useGetFoldersQuery({
|
|
65
|
-
parentId: folderId,
|
|
66
|
-
sort: foldersSort
|
|
67
|
-
});
|
|
68
96
|
const isGridView = view === constants.viewOptions.GRID;
|
|
69
97
|
const isLoading = isLoadingAssets || isLoadingFolders;
|
|
70
98
|
// "Folders: Mixed with files" — interleave the complete folder list into the
|
|
71
99
|
// loaded asset stream client-side, following the active sort. Table view
|
|
72
100
|
// only: the grid always keeps folders in their own band on top.
|
|
73
101
|
const mixedItems = React.useMemo(()=>foldersPosition === 'mixed' && !isGridView ? mergeMixedList.mergeMixedList({
|
|
74
|
-
folders
|
|
102
|
+
folders,
|
|
75
103
|
assets,
|
|
76
104
|
sort: assetsSort,
|
|
77
105
|
hasNextPage
|
|
78
106
|
}) : null, [
|
|
79
107
|
foldersPosition,
|
|
80
108
|
isGridView,
|
|
81
|
-
folders
|
|
109
|
+
folders,
|
|
82
110
|
assets,
|
|
83
111
|
assetsSort,
|
|
84
112
|
hasNextPage
|
|
@@ -116,20 +144,27 @@ const AssetsView = ({ view, folderId, assetsSort, foldersSort, foldersPosition,
|
|
|
116
144
|
})
|
|
117
145
|
});
|
|
118
146
|
}
|
|
119
|
-
if (folders
|
|
120
|
-
|
|
121
|
-
|
|
147
|
+
if (folders.length === 0 && assets.length === 0) {
|
|
148
|
+
// While searching, the search empty state wins (it names the query); a
|
|
149
|
+
// filter-only dead end gets the filtered variant with its Clear action.
|
|
150
|
+
return hasActiveFilters && !searchQuery ? /*#__PURE__*/ jsxRuntime.jsx(EmptyState.FilteredEmptyState, {
|
|
151
|
+
onClearFilters: onClearFilters
|
|
152
|
+
}) : /*#__PURE__*/ jsxRuntime.jsx(EmptyState.EmptyState, {
|
|
153
|
+
onAddAssets: onAddAssets,
|
|
154
|
+
canAddAssets: canAddAssets,
|
|
155
|
+
searchQuery: searchQuery,
|
|
156
|
+
onClearSearch: onClearSearch
|
|
122
157
|
});
|
|
123
158
|
}
|
|
124
159
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
125
160
|
children: [
|
|
126
161
|
isGridView ? /*#__PURE__*/ jsxRuntime.jsx(AssetsGrid.AssetsGrid, {
|
|
127
|
-
folders: folders
|
|
162
|
+
folders: folders,
|
|
128
163
|
assets: assets,
|
|
129
164
|
onAssetItemClick: onAssetItemClick
|
|
130
165
|
}) : /*#__PURE__*/ jsxRuntime.jsx(AssetsTable.AssetsTable, {
|
|
131
166
|
assets: assets,
|
|
132
|
-
folders: folders
|
|
167
|
+
folders: folders,
|
|
133
168
|
mixedItems: mixedItems,
|
|
134
169
|
onAssetItemClick: onAssetItemClick
|
|
135
170
|
}),
|
|
@@ -148,6 +183,9 @@ const AssetsView = ({ view, folderId, assetsSort, foldersSort, foldersPosition,
|
|
|
148
183
|
defaultMessage: 'Loading more assets...'
|
|
149
184
|
})
|
|
150
185
|
})
|
|
186
|
+
}),
|
|
187
|
+
/*#__PURE__*/ jsxRuntime.jsx(BulkActionsBar.BulkActionsBar, {
|
|
188
|
+
assets: assets
|
|
151
189
|
})
|
|
152
190
|
]
|
|
153
191
|
});
|
|
@@ -219,6 +257,7 @@ const HeaderWrapper = styledComponents.styled(designSystem.Box)`
|
|
|
219
257
|
const AssetsPage = ()=>{
|
|
220
258
|
const { formatMessage } = reactIntl.useIntl();
|
|
221
259
|
const { openDetails } = AssetDetailsDrawer.useAssetDetailsParam();
|
|
260
|
+
const { canCreate, canUpdate } = useMediaLibraryPermissions.useMediaLibraryPermissions();
|
|
222
261
|
const { currentFolderId, navigateToFolderId, navigateToRoot } = useFolderNavigation.useFolderNavigation();
|
|
223
262
|
// Deleted or missing folders (404) need a fetch — handled here, not in
|
|
224
263
|
// `useFolderNavigation` (which only strips malformed ?folder= values).
|
|
@@ -236,16 +275,65 @@ const AssetsPage = ()=>{
|
|
|
236
275
|
navigateToRoot
|
|
237
276
|
]);
|
|
238
277
|
const { title, itemCount } = useFolderInfo.useFolderInfo(currentFolderId);
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
278
|
+
const { searchQuery, isSearching, clearSearch } = useAssetSearch.useAssetSearch();
|
|
279
|
+
const listSort = useListSort.useListSort();
|
|
280
|
+
const listFilters = useListFilters.useListFilters();
|
|
281
|
+
// Resolve relative presets against "now" only when the filters change —
|
|
282
|
+
// keeps the query args (and RTK cache keys) stable between renders.
|
|
283
|
+
const builtFilters = React.useMemo(()=>buildAssetFilters.buildAssetFilters(listFilters.filters, new Date()), // eslint-disable-next-line react-hooks/exhaustive-deps -- serialized is the value identity of filters
|
|
284
|
+
[
|
|
285
|
+
listFilters.serialized
|
|
286
|
+
]);
|
|
287
|
+
const { assets, pagination, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error: assetsError } = useInfiniteAssets.useInfiniteAssets({
|
|
288
|
+
// The real folder is passed even while searching: the service drops the folder
|
|
289
|
+
// filter when `search` is set, so results are still global. List filters
|
|
290
|
+
// compose with both modes.
|
|
291
|
+
folder: currentFolderId,
|
|
292
|
+
search: searchQuery || undefined,
|
|
293
|
+
sort: listSort.assetsSort,
|
|
294
|
+
filters: builtFilters.fileClauses,
|
|
295
|
+
filtersKey: listFilters.serialized,
|
|
296
|
+
enabled: builtFilters.showFiles
|
|
297
|
+
});
|
|
298
|
+
const { data: fetchedFolders = [], isLoading: isLoadingFolders } = folders.useGetFoldersQuery({
|
|
299
|
+
parentId: currentFolderId,
|
|
300
|
+
search: searchQuery || undefined,
|
|
301
|
+
sort: listSort.foldersSort,
|
|
302
|
+
filters: builtFilters.folderClauses
|
|
242
303
|
}, {
|
|
304
|
+
skip: !builtFilters.showFolders
|
|
305
|
+
});
|
|
306
|
+
// A type badge can exclude folders structurally (e.g. "Type is Picture").
|
|
307
|
+
const folders$1 = React.useMemo(()=>builtFilters.showFolders ? fetchedFolders : [], [
|
|
308
|
+
builtFilters.showFolders,
|
|
309
|
+
fetchedFolders
|
|
310
|
+
]);
|
|
311
|
+
const itemCountLabel = formatMessage(ITEM_COUNT_MESSAGE, {
|
|
243
312
|
count: itemCount
|
|
244
313
|
});
|
|
245
|
-
const
|
|
246
|
-
id: '
|
|
247
|
-
defaultMessage: '
|
|
314
|
+
const searchResultsTitle = formatMessage({
|
|
315
|
+
id: translations.getTranslationKey('header.search-results'),
|
|
316
|
+
defaultMessage: 'Search results for "{query}"'
|
|
317
|
+
}, {
|
|
318
|
+
query: searchQuery
|
|
319
|
+
});
|
|
320
|
+
const numberFolders = folders$1.length;
|
|
321
|
+
const numberAssets = pagination?.total ?? 0;
|
|
322
|
+
const searchResultsCountLabel = formatMessage(getSearchResultsCountMessage(numberFolders, numberAssets), {
|
|
323
|
+
numberFolders,
|
|
324
|
+
numberAssets
|
|
248
325
|
});
|
|
326
|
+
let pageHeaderTitle;
|
|
327
|
+
if (isSearching) {
|
|
328
|
+
pageHeaderTitle = `${searchResultsTitle} (${searchResultsCountLabel})`;
|
|
329
|
+
} else if (title) {
|
|
330
|
+
pageHeaderTitle = `${title} (${itemCountLabel})`;
|
|
331
|
+
} else {
|
|
332
|
+
pageHeaderTitle = formatMessage({
|
|
333
|
+
id: 'app.loading',
|
|
334
|
+
defaultMessage: 'Loading...'
|
|
335
|
+
});
|
|
336
|
+
}
|
|
249
337
|
const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = React.useState(false);
|
|
250
338
|
// View state
|
|
251
339
|
const [view, setView] = strapiAdmin.usePersistentState(constants.localStorageKeys.view, constants.viewOptions.GRID);
|
|
@@ -258,6 +346,13 @@ const AssetsPage = ()=>{
|
|
|
258
346
|
// Upload handlers
|
|
259
347
|
const [uploadFiles] = api.useUploadFilesMutation();
|
|
260
348
|
const [uploadFromUrls] = api.useUploadFromUrlsMutation();
|
|
349
|
+
// `concurrentUploadRequests` echoes the app config. Missing settings (still
|
|
350
|
+
// loading, no permission) fall back to sequential — never faster than the
|
|
351
|
+
// server asked for.
|
|
352
|
+
const { data: settings$1 } = settings.useGetUploadSettingsQuery();
|
|
353
|
+
const concurrency = settings$1?.data?.concurrentUploadRequests ?? 1;
|
|
354
|
+
// Drives the post-upload AI metadata phase shown per row in the progress dialog.
|
|
355
|
+
const { isEnabled: isAiMetadataEnabled } = useAiAvailability.useAIAvailability();
|
|
261
356
|
const uploadFilesToFolder = async (files, folderId)=>{
|
|
262
357
|
if (files.length === 0) return;
|
|
263
358
|
const formData = new FormData();
|
|
@@ -275,9 +370,11 @@ const AssetsPage = ()=>{
|
|
|
275
370
|
try {
|
|
276
371
|
await uploadFiles({
|
|
277
372
|
formData,
|
|
278
|
-
totalFiles: files.length
|
|
373
|
+
totalFiles: files.length,
|
|
374
|
+
concurrency,
|
|
375
|
+
generateAiMetadata: Boolean(isAiMetadataEnabled)
|
|
279
376
|
}).unwrap();
|
|
280
|
-
} catch
|
|
377
|
+
} catch {
|
|
281
378
|
// Error is already dispatched to store from the API queryFn
|
|
282
379
|
}
|
|
283
380
|
};
|
|
@@ -292,33 +389,38 @@ const AssetsPage = ()=>{
|
|
|
292
389
|
e.target.value = '';
|
|
293
390
|
};
|
|
294
391
|
const handleDrop = async (files)=>{
|
|
392
|
+
// Defence in depth: the provider is `disabled` without `assets.create`
|
|
393
|
+
// (so onDrop won't fire), but guard here too in case it's ever wired live.
|
|
394
|
+
if (!canCreate) return;
|
|
295
395
|
await uploadFilesToFolder(files, currentFolderId);
|
|
296
396
|
};
|
|
297
397
|
const handleUrlUpload = async (urls)=>{
|
|
298
398
|
try {
|
|
299
399
|
await uploadFromUrls({
|
|
300
400
|
urls,
|
|
301
|
-
folderId: currentFolderId
|
|
401
|
+
folderId: currentFolderId,
|
|
402
|
+
generateAiMetadata: Boolean(isAiMetadataEnabled)
|
|
302
403
|
}).unwrap();
|
|
303
|
-
} catch
|
|
404
|
+
} catch {
|
|
304
405
|
// Error is already dispatched to store from the API queryFn
|
|
305
406
|
}
|
|
306
407
|
};
|
|
307
|
-
const listSort = useListSort.useListSort();
|
|
308
408
|
// The view is deliberately absent: table and grid render the same list, so
|
|
309
409
|
// toggling views keeps the selection.
|
|
310
410
|
const listQueryKey$1 = listQueryKey.getListQueryKey({
|
|
311
411
|
folderId: currentFolderId,
|
|
312
|
-
search:
|
|
412
|
+
search: searchQuery,
|
|
313
413
|
// Folder position changes the render order too — selection must reset.
|
|
314
414
|
sort: `${listSort.assetsSort};folders=${listSort.foldersPosition}`,
|
|
315
|
-
filter: null
|
|
415
|
+
filter: listFilters.serialized || null
|
|
316
416
|
});
|
|
317
417
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
318
418
|
children: [
|
|
319
419
|
/*#__PURE__*/ jsxRuntime.jsx(UploadDropZoneContext.UploadDropZoneProvider, {
|
|
320
420
|
onDrop: handleDrop,
|
|
421
|
+
disabled: !canCreate,
|
|
321
422
|
children: /*#__PURE__*/ jsxRuntime.jsx(useAssetSelection.AssetSelectionProvider, {
|
|
423
|
+
disabled: !canUpdate,
|
|
322
424
|
children: /*#__PURE__*/ jsxRuntime.jsxs(AssetsDndProvider.AssetsDndProvider, {
|
|
323
425
|
children: [
|
|
324
426
|
/*#__PURE__*/ jsxRuntime.jsx(ClearSelectionOnChange, {
|
|
@@ -331,6 +433,7 @@ const AssetsPage = ()=>{
|
|
|
331
433
|
background: "neutral0",
|
|
332
434
|
sideNav: /*#__PURE__*/ jsxRuntime.jsx(FolderTree.FolderTree, {
|
|
333
435
|
currentFolderId: currentFolderId,
|
|
436
|
+
showActiveFolder: !isSearching,
|
|
334
437
|
onSelectFolder: navigateToFolderId
|
|
335
438
|
}),
|
|
336
439
|
children: [
|
|
@@ -345,7 +448,7 @@ const AssetsPage = ()=>{
|
|
|
345
448
|
/*#__PURE__*/ jsxRuntime.jsx(HeaderWrapper, {
|
|
346
449
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Header, {
|
|
347
450
|
title: pageHeaderTitle,
|
|
348
|
-
primaryAction: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.SimpleMenu, {
|
|
451
|
+
primaryAction: canCreate && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.SimpleMenu, {
|
|
349
452
|
popoverPlacement: "bottom-end",
|
|
350
453
|
variant: "default",
|
|
351
454
|
endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ChevronDown, {}),
|
|
@@ -380,65 +483,77 @@ const AssetsPage = ()=>{
|
|
|
380
483
|
})
|
|
381
484
|
]
|
|
382
485
|
}),
|
|
383
|
-
subtitle: /*#__PURE__*/ jsxRuntime.jsxs(
|
|
384
|
-
justifyContent: "space-between",
|
|
385
|
-
alignItems: "center",
|
|
386
|
-
gap: 4,
|
|
387
|
-
width: "100%",
|
|
486
|
+
subtitle: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
388
487
|
children: [
|
|
389
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
390
|
-
gap: 4,
|
|
391
|
-
alignItems: "center",
|
|
392
|
-
children: "TODO: Filters and search"
|
|
393
|
-
}),
|
|
394
488
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
489
|
+
justifyContent: "space-between",
|
|
490
|
+
alignItems: "center",
|
|
395
491
|
gap: 4,
|
|
396
|
-
|
|
492
|
+
width: "100%",
|
|
397
493
|
children: [
|
|
398
|
-
/*#__PURE__*/ jsxRuntime.
|
|
399
|
-
|
|
400
|
-
|
|
494
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
495
|
+
gap: 4,
|
|
496
|
+
alignItems: "center",
|
|
497
|
+
children: [
|
|
498
|
+
/*#__PURE__*/ jsxRuntime.jsx(FilterMenu.FilterMenu, {
|
|
499
|
+
listFilters: listFilters
|
|
500
|
+
}),
|
|
501
|
+
/*#__PURE__*/ jsxRuntime.jsx(AssetsSearchInput.AssetsSearchInput, {})
|
|
502
|
+
]
|
|
401
503
|
}),
|
|
402
|
-
/*#__PURE__*/ jsxRuntime.jsxs(
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
onValueChange: (value)=>value && setView(value === 'grid' ? constants.viewOptions.GRID : constants.viewOptions.TABLE),
|
|
406
|
-
"aria-label": formatMessage({
|
|
407
|
-
id: translations.getTranslationKey('view.switch.label'),
|
|
408
|
-
defaultMessage: 'View options'
|
|
409
|
-
}),
|
|
504
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
505
|
+
gap: 4,
|
|
506
|
+
alignItems: "center",
|
|
410
507
|
children: [
|
|
411
|
-
/*#__PURE__*/ jsxRuntime.
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
id: translations.getTranslationKey('view.table'),
|
|
415
|
-
defaultMessage: 'Table view'
|
|
416
|
-
}),
|
|
417
|
-
children: [
|
|
418
|
-
/*#__PURE__*/ jsxRuntime.jsx(icons.List, {}),
|
|
419
|
-
formatMessage({
|
|
420
|
-
id: translations.getTranslationKey('view.table'),
|
|
421
|
-
defaultMessage: 'Table view'
|
|
422
|
-
})
|
|
423
|
-
]
|
|
508
|
+
/*#__PURE__*/ jsxRuntime.jsx(SortMenu.SortMenu, {
|
|
509
|
+
sort: listSort,
|
|
510
|
+
showFoldersGroup: !isGridView
|
|
424
511
|
}),
|
|
425
|
-
/*#__PURE__*/ jsxRuntime.jsxs(
|
|
426
|
-
|
|
512
|
+
/*#__PURE__*/ jsxRuntime.jsxs(StyledToggleGroup, {
|
|
513
|
+
type: "single",
|
|
514
|
+
value: isGridView ? 'grid' : 'table',
|
|
515
|
+
onValueChange: (value)=>value && setView(value === 'grid' ? constants.viewOptions.GRID : constants.viewOptions.TABLE),
|
|
427
516
|
"aria-label": formatMessage({
|
|
428
|
-
id: translations.getTranslationKey('view.
|
|
429
|
-
defaultMessage: '
|
|
517
|
+
id: translations.getTranslationKey('view.switch.label'),
|
|
518
|
+
defaultMessage: 'View options'
|
|
430
519
|
}),
|
|
431
520
|
children: [
|
|
432
|
-
/*#__PURE__*/ jsxRuntime.
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
521
|
+
/*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
|
|
522
|
+
value: "table",
|
|
523
|
+
"aria-label": formatMessage({
|
|
524
|
+
id: translations.getTranslationKey('view.table'),
|
|
525
|
+
defaultMessage: 'Table view'
|
|
526
|
+
}),
|
|
527
|
+
children: [
|
|
528
|
+
/*#__PURE__*/ jsxRuntime.jsx(icons.List, {}),
|
|
529
|
+
formatMessage({
|
|
530
|
+
id: translations.getTranslationKey('view.table'),
|
|
531
|
+
defaultMessage: 'Table view'
|
|
532
|
+
})
|
|
533
|
+
]
|
|
534
|
+
}),
|
|
535
|
+
/*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
|
|
536
|
+
value: "grid",
|
|
537
|
+
"aria-label": formatMessage({
|
|
538
|
+
id: translations.getTranslationKey('view.grid'),
|
|
539
|
+
defaultMessage: 'Grid view'
|
|
540
|
+
}),
|
|
541
|
+
children: [
|
|
542
|
+
/*#__PURE__*/ jsxRuntime.jsx(icons.GridFour, {}),
|
|
543
|
+
formatMessage({
|
|
544
|
+
id: translations.getTranslationKey('view.grid'),
|
|
545
|
+
defaultMessage: 'Grid view'
|
|
546
|
+
})
|
|
547
|
+
]
|
|
436
548
|
})
|
|
437
549
|
]
|
|
438
550
|
})
|
|
439
551
|
]
|
|
440
552
|
})
|
|
441
553
|
]
|
|
554
|
+
}),
|
|
555
|
+
/*#__PURE__*/ jsxRuntime.jsx(FilterBadges.FilterBadges, {
|
|
556
|
+
listFilters: listFilters
|
|
442
557
|
})
|
|
443
558
|
]
|
|
444
559
|
})
|
|
@@ -453,20 +568,30 @@ const AssetsPage = ()=>{
|
|
|
453
568
|
}),
|
|
454
569
|
/*#__PURE__*/ jsxRuntime.jsx(AssetsView, {
|
|
455
570
|
view: view,
|
|
456
|
-
|
|
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,
|
|
457
580
|
assetsSort: listSort.assetsSort,
|
|
458
|
-
foldersSort: listSort.foldersSort,
|
|
459
581
|
foldersPosition: listSort.foldersPosition,
|
|
582
|
+
hasActiveFilters: listFilters.filters.length > 0,
|
|
583
|
+
onClearFilters: listFilters.clearFilters,
|
|
460
584
|
onAssetItemClick: openDetails,
|
|
461
|
-
onAddAssets: handleFileSelect
|
|
585
|
+
onAddAssets: handleFileSelect,
|
|
586
|
+
canAddAssets: canCreate,
|
|
587
|
+
onClearSearch: clearSearch
|
|
462
588
|
})
|
|
463
589
|
]
|
|
464
590
|
})
|
|
465
591
|
})
|
|
466
592
|
]
|
|
467
593
|
})
|
|
468
|
-
})
|
|
469
|
-
/*#__PURE__*/ jsxRuntime.jsx(BulkActionsBar.BulkActionsBar, {})
|
|
594
|
+
})
|
|
470
595
|
]
|
|
471
596
|
})
|
|
472
597
|
})
|