@strapi/upload 5.58.0 → 5.60.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/AssetPickerDialog/AssetPickerDialog.js +434 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs +432 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js +91 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs +89 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js +178 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs +175 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.js +143 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs +141 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.js +49 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs +41 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +142 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +140 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.js +240 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.mjs +237 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.js +161 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs +159 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js +156 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs +154 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.js +109 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs +106 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.js +211 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs +208 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.js +32 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.mjs +29 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +439 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +433 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js +42 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs +40 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.js +122 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs +120 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs.map +1 -0
- package/dist/admin/components/UploadProgressDialog.js +2 -1
- package/dist/admin/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/components/UploadProgressDialog.mjs +2 -1
- package/dist/admin/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataAvailability.js +5 -1
- package/dist/admin/hooks/useAIMetadataAvailability.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataAvailability.mjs +5 -1
- package/dist/admin/hooks/useAIMetadataAvailability.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.js +7 -1
- package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs +7 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.js +16 -2
- package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs +16 -2
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +5 -1
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs +5 -1
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/index.js +7 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +7 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.js +2 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.js.map +1 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs +2 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.js +3 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs +3 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js +3 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs +3 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.js +7 -6
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.js.map +1 -1
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs +7 -6
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs.map +1 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js +2 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +2 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js +2 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs +2 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js +3 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs +3 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/legacy/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js +2 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs +2 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js +4 -2
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs +4 -2
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js +2 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs +2 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.js +3 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.mjs +3 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.mjs.map +1 -1
- package/dist/admin/legacy/components/TableList/TableList.js +3 -1
- package/dist/admin/legacy/components/TableList/TableList.js.map +1 -1
- package/dist/admin/legacy/components/TableList/TableList.mjs +3 -1
- package/dist/admin/legacy/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/legacy/components/TableList/TableRows.js +3 -1
- package/dist/admin/legacy/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/legacy/components/TableList/TableRows.mjs +3 -1
- package/dist/admin/legacy/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js +3 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs +3 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.js +2 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.mjs +2 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.js +2 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.js.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs +2 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.js +13 -302
- package/dist/admin/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.mjs +11 -280
- package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.js +143 -31
- package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs +146 -34
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsSearchInput.js +43 -2
- package/dist/admin/pages/Assets/components/AssetsSearchInput.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs +45 -4
- package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.js +60 -35
- package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.mjs +62 -37
- package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsView.js +145 -0
- package/dist/admin/pages/Assets/components/AssetsView.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsView.mjs +143 -0
- package/dist/admin/pages/Assets/components/AssetsView.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/BulkActionsBar.js +3 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +4 -2
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/BusyOverlay.mjs +1 -1
- package/dist/admin/pages/Assets/components/DateRangeCalendar.js +10 -7
- package/dist/admin/pages/Assets/components/DateRangeCalendar.js.map +1 -1
- package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs +10 -7
- package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.mjs +1 -1
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js +40 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs +38 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.js +29 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs +24 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.js +5 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.js.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs +5 -1
- package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js +41 -13
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs +41 -13
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js +4 -2
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +5 -3
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FilterBadges.js +32 -3
- package/dist/admin/pages/Assets/components/FilterBadges.js.map +1 -1
- package/dist/admin/pages/Assets/components/FilterBadges.mjs +35 -6
- package/dist/admin/pages/Assets/components/FilterBadges.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FilterMenu.mjs +2 -2
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js +274 -55
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs +277 -59
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js +32 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs +29 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/ViewToggle.js +126 -0
- package/dist/admin/pages/Assets/components/ViewToggle.js.map +1 -0
- package/dist/admin/pages/Assets/components/ViewToggle.mjs +104 -0
- package/dist/admin/pages/Assets/components/ViewToggle.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSearch.js +2 -2
- package/dist/admin/pages/Assets/hooks/useAssetSearch.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs +2 -2
- package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js +19 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs +20 -3
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetsList.js +87 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.mjs +85 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useBusyAssets.mjs +1 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.js +2 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.js +2 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useListFilters.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListQueryParams.js +80 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs +77 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.js +32 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.mjs +29 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSort.js +2 -1
- package/dist/admin/pages/Assets/hooks/useListSort.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListSort.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useListSort.mjs.map +1 -1
- package/dist/admin/services/api.js +106 -11
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +105 -13
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/src/components/AssetPickerDialog/AssetPickerDialog.d.ts +19 -0
- package/dist/admin/src/components/AssetPickerDialog/FolderBreadcrumbs.d.ts +10 -0
- package/dist/admin/src/components/AssetPickerDialog/PickerSelectionProvider.d.ts +28 -0
- package/dist/admin/src/components/AssetPickerDialog/SortableSelection.d.ts +12 -0
- package/dist/admin/src/components/AssetPickerDialog/pickerSelection.d.ts +26 -0
- package/dist/admin/src/components/MediaLibraryInput/AddAssetMenu.d.ts +19 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetCard.d.ts +25 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetCarousel.d.ts +16 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetDropZone.d.ts +21 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetPreview.d.ts +17 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetRow.d.ts +25 -0
- package/dist/admin/src/components/MediaLibraryInput/FieldControls.d.ts +19 -0
- package/dist/admin/src/components/MediaLibraryInput/MediaLibraryInput.d.ts +28 -0
- package/dist/admin/src/components/MediaLibraryInput/UploadProgressBar.d.ts +7 -0
- package/dist/admin/src/components/MediaLibraryInput/useFieldUploads.d.ts +31 -0
- package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +3 -0
- package/dist/admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.d.ts +1 -1
- package/dist/admin/src/legacy/pages/App/components/BulkActions.d.ts +1 -1
- package/dist/admin/src/pages/Assets/components/AssetsGrid.d.ts +3 -1
- package/dist/admin/src/pages/Assets/components/AssetsSearchInput.d.ts +11 -1
- package/dist/admin/src/pages/Assets/components/AssetsView.d.ts +29 -0
- package/dist/admin/src/pages/Assets/components/Dnd/ReorderHandle.d.ts +12 -0
- package/dist/admin/src/pages/Assets/components/Dnd/assetSortable.d.ts +37 -0
- package/dist/admin/src/pages/Assets/components/Dnd/dndIds.d.ts +5 -0
- package/dist/admin/src/pages/Assets/components/Dnd/useAssetDnd.d.ts +23 -2
- package/dist/admin/src/pages/Assets/components/FolderTree/FolderTree.d.ts +1 -0
- package/dist/admin/src/pages/Assets/components/FolderTree/collapsedBranch.d.ts +21 -0
- package/dist/admin/src/pages/Assets/components/ViewToggle.d.ts +8 -0
- package/dist/admin/src/pages/Assets/hooks/useAssetSelection.d.ts +26 -0
- package/dist/admin/src/pages/Assets/hooks/useAssetsList.d.ts +30 -0
- package/dist/admin/src/pages/Assets/hooks/useListQueryParams.d.ts +27 -0
- package/dist/admin/src/pages/Assets/hooks/useListSettings.d.ts +29 -0
- package/dist/admin/src/services/api.d.ts +30 -1
- package/dist/admin/src/store/uploadProgress.d.ts +14 -1
- package/dist/admin/src/utils/allowedMediaTypes.d.ts +16 -0
- package/dist/admin/src/utils/findFolderPath.d.ts +6 -0
- package/dist/admin/src/utils/isAllowedAssetType.d.ts +14 -0
- package/dist/admin/store/uploadProgress.js +30 -3
- package/dist/admin/store/uploadProgress.js.map +1 -1
- package/dist/admin/store/uploadProgress.mjs +29 -4
- package/dist/admin/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/translations/ca.json.js +3 -3
- package/dist/admin/translations/ca.json.mjs +3 -3
- package/dist/admin/translations/da.json.js +1 -1
- package/dist/admin/translations/da.json.mjs +1 -1
- package/dist/admin/translations/de.json.js +1 -1
- package/dist/admin/translations/de.json.mjs +1 -1
- package/dist/admin/translations/en.json.js +29 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +29 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -1
- package/dist/admin/translations/es.json.mjs +1 -1
- package/dist/admin/translations/sk.json.js +2 -2
- package/dist/admin/translations/sk.json.mjs +2 -2
- package/dist/admin/translations/tr.json.js +2 -2
- package/dist/admin/translations/tr.json.mjs +2 -2
- package/dist/admin/translations/zh-Hans.json.js +1 -1
- package/dist/admin/translations/zh-Hans.json.mjs +1 -1
- package/dist/admin/translations/zh.json.js +2 -2
- package/dist/admin/translations/zh.json.mjs +2 -2
- package/dist/admin/utils/allowedMediaTypes.js +42 -0
- package/dist/admin/utils/allowedMediaTypes.js.map +1 -0
- package/dist/admin/utils/allowedMediaTypes.mjs +39 -0
- package/dist/admin/utils/allowedMediaTypes.mjs.map +1 -0
- package/dist/admin/utils/findFolderPath.js +26 -0
- package/dist/admin/utils/findFolderPath.js.map +1 -0
- package/dist/admin/utils/findFolderPath.mjs +24 -0
- package/dist/admin/utils/findFolderPath.mjs.map +1 -0
- package/dist/admin/utils/isAllowedAssetType.js +33 -0
- package/dist/admin/utils/isAllowedAssetType.js.map +1 -0
- package/dist/admin/utils/isAllowedAssetType.mjs +31 -0
- package/dist/admin/utils/isAllowedAssetType.mjs.map +1 -0
- package/dist/server/config.js +6 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +6 -0
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/admin-settings.js +5 -1
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs +5 -1
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/upload.js.map +1 -1
- package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
- package/dist/server/mcp/ambient-instance.js +7 -5
- package/dist/server/mcp/ambient-instance.js.map +1 -1
- package/dist/server/mcp/ambient-instance.mjs +7 -5
- package/dist/server/mcp/ambient-instance.mjs.map +1 -1
- package/dist/server/mcp/handlers/folder-handlers.js +4 -16
- package/dist/server/mcp/handlers/folder-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/folder-handlers.mjs +5 -17
- package/dist/server/mcp/handlers/folder-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/read-handlers.js +6 -14
- package/dist/server/mcp/handlers/read-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/read-handlers.mjs +7 -15
- package/dist/server/mcp/handlers/read-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/write-handlers.js +3 -13
- package/dist/server/mcp/handlers/write-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/write-handlers.mjs +3 -13
- package/dist/server/mcp/handlers/write-handlers.mjs.map +1 -1
- package/dist/server/mcp/register-upload-mcp-tools.js +215 -195
- package/dist/server/mcp/register-upload-mcp-tools.js.map +1 -1
- package/dist/server/mcp/register-upload-mcp-tools.mjs +215 -195
- package/dist/server/mcp/register-upload-mcp-tools.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js +35 -16
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +35 -16
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/config.d.ts +3 -0
- package/dist/server/src/config.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/ambient-instance.d.ts +7 -5
- package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/folder-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/read-handlers.d.ts +3 -2
- package/dist/server/src/mcp/handlers/read-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/write-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/register-upload-mcp-tools.d.ts +9 -14
- package/dist/server/src/mcp/register-upload-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/services/extensions/utils.d.ts +11 -11
- package/dist/server/src/services/image-manipulation.d.ts +1 -1
- package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -1
- package/dist/server/src/types.d.ts +64 -12
- package/dist/server/src/types.d.ts.map +1 -1
- package/package.json +8 -6
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { useIsDesktop } from '@strapi/admin/strapi-admin';
|
|
3
|
-
import { RawTr, Flex, Checkbox, VisuallyHidden, Typography, RawTbody,
|
|
4
|
-
import {
|
|
3
|
+
import { RawTable, RawThead, RawTh, RawTd, RawTr, Flex, Checkbox, VisuallyHidden, Typography, RawTbody, Loader, Tooltip } from '@strapi/design-system';
|
|
4
|
+
import { WarningCircle, Folder } from '@strapi/icons';
|
|
5
5
|
import { useIntl } from 'react-intl';
|
|
6
6
|
import { styled, css } from 'styled-components';
|
|
7
7
|
import { TruncatedText } from '../../../components/TruncatedText.mjs';
|
|
8
|
-
import { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions.mjs';
|
|
9
8
|
import { useTracking } from '../../../hooks/useTracking.mjs';
|
|
10
9
|
import { formatBytes } from '../../../utils/files.mjs';
|
|
11
10
|
import { getAssetIcon } from '../../../utils/getAssetIcon.mjs';
|
|
@@ -15,6 +14,7 @@ import { TABLE_HEADERS, ASSET_DETAILS_TRIGGER_PROPS, ASSET_ITEM_CONTROL_PROPS }
|
|
|
15
14
|
import { useAssetSelection } from '../hooks/useAssetSelection.mjs';
|
|
16
15
|
import { useBusyAssetsOptional } from '../hooks/useBusyAssets.mjs';
|
|
17
16
|
import { useFolderNavigation } from '../hooks/useFolderNavigation.mjs';
|
|
17
|
+
import { useListSettings } from '../hooks/useListSettings.mjs';
|
|
18
18
|
import { buildRenderedKeys } from '../utils/renderedKeys.mjs';
|
|
19
19
|
import { getSelectAllState, folderKey, assetKey } from '../utils/selection.mjs';
|
|
20
20
|
import { AssetActionsMenu } from './AssetActionsMenu.mjs';
|
|
@@ -23,6 +23,7 @@ import { useFolderDraggableDroppable, useFileDraggable } from './Dnd/useAssetDnd
|
|
|
23
23
|
import { FolderActionsMenu } from './FolderActionsMenu.mjs';
|
|
24
24
|
import { useItemContextMenuTrigger } from './ItemContextMenu.mjs';
|
|
25
25
|
|
|
26
|
+
const EMPTY_FOLDERS = [];
|
|
26
27
|
const StyledTable = styled(RawTable)`
|
|
27
28
|
width: 100%;
|
|
28
29
|
border-collapse: separate;
|
|
@@ -35,12 +36,6 @@ const StyledTable = styled(RawTable)`
|
|
|
35
36
|
so the dates never wrap. The name cell is what absorbs the leftover and
|
|
36
37
|
ellipsizes — see NameTd. */
|
|
37
38
|
table-layout: auto;
|
|
38
|
-
|
|
39
|
-
& td:last-child,
|
|
40
|
-
& th:last-child {
|
|
41
|
-
width: 5.6rem;
|
|
42
|
-
white-space: nowrap;
|
|
43
|
-
}
|
|
44
39
|
`;
|
|
45
40
|
const StyledThead = styled(RawThead)`
|
|
46
41
|
background: ${({ theme })=>theme.colors.neutral100};
|
|
@@ -67,10 +62,13 @@ const flexColumn = css`
|
|
|
67
62
|
max-width: 0;
|
|
68
63
|
overflow: hidden;
|
|
69
64
|
`;
|
|
70
|
-
const
|
|
65
|
+
const headerCellStyles = css`
|
|
71
66
|
height: 40px;
|
|
72
67
|
padding: 0 ${({ theme })=>theme.spaces[4]};
|
|
73
68
|
text-align: left;
|
|
69
|
+
`;
|
|
70
|
+
const StyledTh = styled(RawTh)`
|
|
71
|
+
${headerCellStyles}
|
|
74
72
|
|
|
75
73
|
${({ $flex })=>$flex ? flexColumn : hugColumn}
|
|
76
74
|
`;
|
|
@@ -88,13 +86,13 @@ const StyledTr = styled.tr`
|
|
|
88
86
|
height: 48px;
|
|
89
87
|
user-select: none;
|
|
90
88
|
background: ${({ theme, $isSelected })=>$isSelected ? theme.colors.primary100 : theme.colors.neutral0};
|
|
91
|
-
cursor: ${({ $isMovePending, $isBusy, $isInvalidDropTarget })=>{
|
|
89
|
+
cursor: ${({ $isMovePending, $isBusy, $isInvalidDropTarget, $isUnselectable })=>{
|
|
92
90
|
if ($isMovePending || $isBusy) {
|
|
93
91
|
return 'wait';
|
|
94
92
|
}
|
|
95
|
-
return $isInvalidDropTarget ? 'not-allowed' : 'pointer';
|
|
93
|
+
return $isInvalidDropTarget || $isUnselectable ? 'not-allowed' : 'pointer';
|
|
96
94
|
}};
|
|
97
|
-
opacity: ${({ $isDragging, $isBusy })=>$isDragging || $isBusy ? 0.4 : 1};
|
|
95
|
+
opacity: ${({ $isDragging, $isBusy, $isUnselectable })=>$isDragging || $isBusy || $isUnselectable ? 0.4 : 1};
|
|
98
96
|
pointer-events: ${({ $isMovePending, $isBusy })=>$isMovePending || $isBusy ? 'none' : 'auto'};
|
|
99
97
|
|
|
100
98
|
${({ $isValidDropTarget, theme })=>$isValidDropTarget && css`
|
|
@@ -118,6 +116,17 @@ const StyledTr = styled.tr`
|
|
|
118
116
|
}
|
|
119
117
|
}
|
|
120
118
|
`;
|
|
119
|
+
// The trailing actions column ("..." menu), sized by name rather than as the
|
|
120
|
+
// last column: where the column is hidden (the Content Manager asset picker),
|
|
121
|
+
// the last column is the name or the size, which must not shrink to this.
|
|
122
|
+
const ActionsTd = styled(StyledTd)`
|
|
123
|
+
width: 5.6rem;
|
|
124
|
+
white-space: nowrap;
|
|
125
|
+
`;
|
|
126
|
+
const ActionsTh = styled(StyledTh)`
|
|
127
|
+
width: 5.6rem;
|
|
128
|
+
white-space: nowrap;
|
|
129
|
+
`;
|
|
121
130
|
// Leading checkbox column. Fixed narrow width so it holds its own column under
|
|
122
131
|
// the mobile fixed table-layout (a 1% width would collapse and let the name
|
|
123
132
|
// cell's preview overlap the control).
|
|
@@ -129,6 +138,16 @@ const CheckboxTh = styled(StyledTh)`
|
|
|
129
138
|
width: 5.6rem;
|
|
130
139
|
white-space: nowrap;
|
|
131
140
|
`;
|
|
141
|
+
// The checkbox column's header when there is no select-all (a single-value
|
|
142
|
+
// picker): a plain cell, since as an empty `RawTh` the design system's grid
|
|
143
|
+
// would make the cell itself a Tab stop.
|
|
144
|
+
const EmptyCheckboxTh = styled.th.attrs({
|
|
145
|
+
role: 'gridcell'
|
|
146
|
+
})`
|
|
147
|
+
${headerCellStyles}
|
|
148
|
+
width: 5.6rem;
|
|
149
|
+
white-space: nowrap;
|
|
150
|
+
`;
|
|
132
151
|
// Flags an asset whose caption or alternative text is empty — mirrors the
|
|
133
152
|
// per-field warning shown in the details drawer. Pushed to the far end of the
|
|
134
153
|
// name cell (shrink 0 so a long name never crowds it out).
|
|
@@ -194,12 +213,13 @@ const AssetRow = ({ asset, orderedItemKeys, onAssetItemClick })=>{
|
|
|
194
213
|
isMovePending: false
|
|
195
214
|
};
|
|
196
215
|
const { attributes, listeners, setNodeRef, isDragging, dragData } = useFileDraggable(asset);
|
|
197
|
-
const { isSelected, toggle, selectRange } = useAssetSelection();
|
|
198
|
-
const {
|
|
216
|
+
const { isEnabled, isSelected, toggle, selectRange, getSelectability } = useAssetSelection();
|
|
217
|
+
const { showItemActions } = useListSettings();
|
|
199
218
|
const busyMessage = useBusyAssetsOptional()?.getBusyMessage(asset.id) ?? null;
|
|
200
219
|
const openContextMenu = useItemContextMenuTrigger();
|
|
201
220
|
const key = assetKey(asset.id);
|
|
202
221
|
const selected = isSelected(key);
|
|
222
|
+
const selectability = getSelectability(key);
|
|
203
223
|
// Caption and alternative text apply to every file type — same "empty =
|
|
204
224
|
// falsy" rule as the drawer's per-field warning.
|
|
205
225
|
const isMetadataMissing = !asset.caption || !asset.alternativeText;
|
|
@@ -260,6 +280,7 @@ const AssetRow = ({ asset, orderedItemKeys, onAssetItemClick })=>{
|
|
|
260
280
|
$isMovePending: isMovePending,
|
|
261
281
|
$isBusy: busyMessage !== null,
|
|
262
282
|
$isSelected: selected,
|
|
283
|
+
$isUnselectable: selectability === 'disabled',
|
|
263
284
|
tabIndex: 0,
|
|
264
285
|
role: "row",
|
|
265
286
|
// Right-click opens this asset's own actions, or the selection's when it
|
|
@@ -284,13 +305,14 @@ const AssetRow = ({ asset, orderedItemKeys, onAssetItemClick })=>{
|
|
|
284
305
|
}
|
|
285
306
|
},
|
|
286
307
|
children: [
|
|
287
|
-
|
|
308
|
+
isEnabled && /*#__PURE__*/ jsx(CheckboxTd, {
|
|
288
309
|
...ASSET_ITEM_CONTROL_PROPS,
|
|
289
310
|
onClick: stopRowEvent,
|
|
290
311
|
onKeyDown: stopRowEvent,
|
|
291
|
-
children: /*#__PURE__*/ jsx(Flex, {
|
|
312
|
+
children: selectability !== 'hidden' && /*#__PURE__*/ jsx(Flex, {
|
|
292
313
|
children: /*#__PURE__*/ jsx(Checkbox, {
|
|
293
314
|
checked: selected,
|
|
315
|
+
disabled: selectability === 'disabled',
|
|
294
316
|
onClick: handleCheckboxClick,
|
|
295
317
|
"aria-label": formatMessage({
|
|
296
318
|
id: getTranslationKey('list.table.row.select'),
|
|
@@ -383,7 +405,7 @@ const AssetRow = ({ asset, orderedItemKeys, onAssetItemClick })=>{
|
|
|
383
405
|
})
|
|
384
406
|
]
|
|
385
407
|
}),
|
|
386
|
-
/*#__PURE__*/ jsx(
|
|
408
|
+
showItemActions && /*#__PURE__*/ jsx(ActionsTd, {
|
|
387
409
|
...ASSET_ITEM_CONTROL_PROPS,
|
|
388
410
|
onClick: stopRowEvent,
|
|
389
411
|
onKeyDown: stopRowEvent,
|
|
@@ -408,8 +430,8 @@ const FolderRow = ({ folder, orderedItemKeys })=>{
|
|
|
408
430
|
const isDesktop = useIsDesktop();
|
|
409
431
|
const { formatDate, formatMessage } = useIntl();
|
|
410
432
|
const { navigateToFolder } = useFolderNavigation();
|
|
411
|
-
const { isSelected, toggle, selectRange } = useAssetSelection();
|
|
412
|
-
const {
|
|
433
|
+
const { isEnabled, isSelected, toggle, selectRange, getSelectability } = useAssetSelection();
|
|
434
|
+
const { showItemActions } = useListSettings();
|
|
413
435
|
const openContextMenu = useItemContextMenuTrigger();
|
|
414
436
|
const { isMovePending } = useAssetsDndOptional() ?? {
|
|
415
437
|
isMovePending: false
|
|
@@ -495,12 +517,13 @@ const FolderRow = ({ folder, orderedItemKeys })=>{
|
|
|
495
517
|
}
|
|
496
518
|
},
|
|
497
519
|
children: [
|
|
498
|
-
|
|
520
|
+
isEnabled && /*#__PURE__*/ jsx(CheckboxTd, {
|
|
499
521
|
onClick: stopRowEvent,
|
|
500
522
|
onKeyDown: stopRowEvent,
|
|
501
|
-
children: /*#__PURE__*/ jsx(Flex, {
|
|
523
|
+
children: getSelectability(key) !== 'hidden' && /*#__PURE__*/ jsx(Flex, {
|
|
502
524
|
children: /*#__PURE__*/ jsx(Checkbox, {
|
|
503
525
|
checked: isSelected(key),
|
|
526
|
+
disabled: getSelectability(key) === 'disabled',
|
|
504
527
|
onClick: handleCheckboxClick,
|
|
505
528
|
"aria-label": formatMessage({
|
|
506
529
|
id: getTranslationKey('list.table.row.select'),
|
|
@@ -564,7 +587,7 @@ const FolderRow = ({ folder, orderedItemKeys })=>{
|
|
|
564
587
|
})
|
|
565
588
|
]
|
|
566
589
|
}),
|
|
567
|
-
/*#__PURE__*/ jsx(
|
|
590
|
+
showItemActions && /*#__PURE__*/ jsx(ActionsTd, {
|
|
568
591
|
onClick: stopRowEvent,
|
|
569
592
|
onKeyDown: stopRowEvent,
|
|
570
593
|
onPointerDown: stopRowEvent,
|
|
@@ -579,19 +602,18 @@ const FolderRow = ({ folder, orderedItemKeys })=>{
|
|
|
579
602
|
]
|
|
580
603
|
});
|
|
581
604
|
};
|
|
582
|
-
const AssetsTable = ({ assets, folders =
|
|
605
|
+
const AssetsTable = ({ assets, folders = EMPTY_FOLDERS, mixedItems = null, renderedKeys, onAssetItemClick })=>{
|
|
583
606
|
const isDesktop = useIsDesktop();
|
|
584
607
|
const { formatMessage } = useIntl();
|
|
585
|
-
const { selectedKeys, selectAll,
|
|
586
|
-
const {
|
|
608
|
+
const { isEnabled, canSelectAll, selectedKeys, selectAll, deselectAll, getSelectability } = useAssetSelection();
|
|
609
|
+
const { showItemActions } = useListSettings();
|
|
587
610
|
const { trackUsage } = useTracking();
|
|
588
611
|
// Below the desktop breakpoint only the name (and actions) column is kept —
|
|
589
612
|
// the date/size columns don't fit; size moves under the name as a subtitle.
|
|
590
|
-
const visibleHeaders = isDesktop ? TABLE_HEADERS : TABLE_HEADERS.filter((h)=>h.name === 'name' || h.name === 'actions');
|
|
613
|
+
const visibleHeaders = (isDesktop ? TABLE_HEADERS : TABLE_HEADERS.filter((h)=>h.name === 'name' || h.name === 'actions')).filter((h)=>showItemActions || h.name !== 'actions');
|
|
591
614
|
// The checkbox column is a dedicated structural column (not part of
|
|
592
|
-
// TABLE_HEADERS)
|
|
593
|
-
|
|
594
|
-
const showCheckboxColumn = canUpdate;
|
|
615
|
+
// TABLE_HEADERS), shown whenever selection is on.
|
|
616
|
+
const showCheckboxColumn = isEnabled;
|
|
595
617
|
const colCount = visibleHeaders.length + (showCheckboxColumn ? 1 : 0);
|
|
596
618
|
const totalRows = folders.length + assets.length;
|
|
597
619
|
// Render order — folders first by default, or the interleaved mixed order.
|
|
@@ -601,13 +623,16 @@ const AssetsTable = ({ assets, folders = [], mixedItems = null, renderedKeys, on
|
|
|
601
623
|
assets,
|
|
602
624
|
mixedItems
|
|
603
625
|
});
|
|
604
|
-
|
|
626
|
+
// Select-all only reaches what can be selected: folders in the picker, or
|
|
627
|
+
// assets outside its `allowedTypes`, are left out.
|
|
628
|
+
const selectableKeys = orderedItemKeys.filter((key)=>getSelectability(key) === 'enabled');
|
|
629
|
+
const { allSelected, isIndeterminate } = getSelectAllState(selectedKeys, selectableKeys);
|
|
605
630
|
const handleSelectAll = ()=>{
|
|
606
631
|
if (allSelected) {
|
|
607
|
-
|
|
632
|
+
deselectAll(selectableKeys);
|
|
608
633
|
} else {
|
|
609
634
|
trackUsage('didSelectAllMediaLibraryElements');
|
|
610
|
-
selectAll(
|
|
635
|
+
selectAll(selectableKeys);
|
|
611
636
|
}
|
|
612
637
|
};
|
|
613
638
|
// The empty state is owned by the page (`AssetsView` renders `EmptyState`) — an
|
|
@@ -622,11 +647,11 @@ const AssetsTable = ({ assets, folders = [], mixedItems = null, renderedKeys, on
|
|
|
622
647
|
/*#__PURE__*/ jsx(StyledThead, {
|
|
623
648
|
children: /*#__PURE__*/ jsxs(RawTr, {
|
|
624
649
|
children: [
|
|
625
|
-
showCheckboxColumn && /*#__PURE__*/ jsx(CheckboxTh, {
|
|
650
|
+
showCheckboxColumn && canSelectAll && /*#__PURE__*/ jsx(CheckboxTh, {
|
|
626
651
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
627
652
|
children: /*#__PURE__*/ jsx(Checkbox, {
|
|
628
653
|
checked: isIndeterminate ? 'indeterminate' : allSelected,
|
|
629
|
-
disabled:
|
|
654
|
+
disabled: selectableKeys.length === 0,
|
|
630
655
|
onCheckedChange: handleSelectAll,
|
|
631
656
|
"aria-label": formatMessage({
|
|
632
657
|
id: getTranslationKey('list.table.header.select-all'),
|
|
@@ -635,12 +660,12 @@ const AssetsTable = ({ assets, folders = [], mixedItems = null, renderedKeys, on
|
|
|
635
660
|
})
|
|
636
661
|
})
|
|
637
662
|
}),
|
|
663
|
+
showCheckboxColumn && !canSelectAll && /*#__PURE__*/ jsx(EmptyCheckboxTh, {}),
|
|
638
664
|
visibleHeaders.map((header)=>{
|
|
639
665
|
const tableHeaderLabel = formatMessage(header.label);
|
|
640
666
|
const isVisuallyHidden = 'isVisuallyHidden' in header && header.isVisuallyHidden;
|
|
641
667
|
if (isVisuallyHidden) {
|
|
642
|
-
return /*#__PURE__*/ jsx(
|
|
643
|
-
$flex: header.name === 'name',
|
|
668
|
+
return /*#__PURE__*/ jsx(ActionsTh, {
|
|
644
669
|
children: /*#__PURE__*/ jsx(VisuallyHidden, {
|
|
645
670
|
children: formatMessage({
|
|
646
671
|
id: getTranslationKey('table.header.actions'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsTable.mjs","sources":["../../../../../admin/src/pages/Assets/components/AssetsTable.tsx"],"sourcesContent":["import { useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Flex,\n Loader,\n RawTable,\n RawTbody,\n RawTd,\n RawTh,\n RawThead,\n RawTr,\n Tooltip,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Folder as FolderIcon, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { TruncatedText } from '../../../components/TruncatedText';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { formatBytes } from '../../../utils/files';\nimport { getAssetIcon } from '../../../utils/getAssetIcon';\nimport { isEventFromWithin } from '../../../utils/isEventFromWithin';\nimport { getTranslationKey } from '../../../utils/translations';\nimport { ASSET_DETAILS_TRIGGER_PROPS, ASSET_ITEM_CONTROL_PROPS, TABLE_HEADERS } from '../constants';\nimport { useAssetSelection } from '../hooks/useAssetSelection';\nimport { useBusyAssetsOptional } from '../hooks/useBusyAssets';\nimport { useFolderNavigation } from '../hooks/useFolderNavigation';\nimport { type MixedItem } from '../utils/mergeMixedList';\nimport { buildRenderedKeys } from '../utils/renderedKeys';\nimport { assetKey, folderKey, getSelectAllState, type ItemKey } from '../utils/selection';\n\nimport { AssetActionsMenu } from './AssetActionsMenu';\nimport { useAssetsDndOptional } from './Dnd/AssetsDndProvider';\nimport { useFileDraggable, useFolderDraggableDroppable } from './Dnd/useAssetDnd';\nimport { FolderActionsMenu } from './FolderActionsMenu';\nimport { useItemContextMenuTrigger } from './ItemContextMenu';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\n\nconst StyledTable = styled(RawTable)`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n border-radius: 4px;\n overflow: hidden;\n\n /* An auto layout lets every column but the name size itself to its content,\n so the dates never wrap. The name cell is what absorbs the leftover and\n ellipsizes — see NameTd. */\n table-layout: auto;\n\n & td:last-child,\n & th:last-child {\n width: 5.6rem;\n white-space: nowrap;\n }\n`;\n\nconst StyledThead = styled(RawThead)`\n background: ${({ theme }) => theme.colors.neutral100};\n\n tr {\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\n/**\n * Column sizing, applied to the header and body cells alike.\n *\n * `hug` shrinks a column to its content: `width: 1%` is a floor the content\n * overrides, and `nowrap` stops a date breaking across lines.\n *\n * `flex` claims everything left over. `width: 100%` asks for all of it and\n * `max-width: 0` is what allows the cell to be narrower than its content, which\n * is what lets the name inside ellipsize instead of widening the table.\n */\nconst hugColumn = css`\n width: 1%;\n white-space: nowrap;\n`;\n\nconst flexColumn = css`\n width: 100%;\n max-width: 0;\n overflow: hidden;\n`;\n\nconst StyledTh = styled(RawTh)<{ $flex?: boolean }>`\n height: 40px;\n padding: 0 ${({ theme }) => theme.spaces[4]};\n text-align: left;\n\n ${({ $flex }) => ($flex ? flexColumn : hugColumn)}\n`;\n\nconst StyledTd = styled(RawTd)`\n padding: 0 ${({ theme }) => theme.spaces[4]};\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\n/** The name column: takes whatever the others leave and ellipsizes. */\nconst NameTd = styled(StyledTd)`\n ${flexColumn}\n`;\n\n/** Every other column: as wide as its content, never wrapping. */\nconst HugTd = styled(StyledTd)`\n ${hugColumn}\n`;\n\nconst StyledTr = styled.tr<{\n $isDragging?: boolean;\n $isMovePending?: boolean;\n $isBusy?: boolean;\n $isValidDropTarget?: boolean;\n $isInvalidDropTarget?: boolean;\n $isSelected?: boolean;\n}>`\n height: 48px;\n user-select: none;\n background: ${({ theme, $isSelected }) =>\n $isSelected ? theme.colors.primary100 : theme.colors.neutral0};\n cursor: ${({ $isMovePending, $isBusy, $isInvalidDropTarget }) => {\n if ($isMovePending || $isBusy) {\n return 'wait';\n }\n\n return $isInvalidDropTarget ? 'not-allowed' : 'pointer';\n }};\n opacity: ${({ $isDragging, $isBusy }) => ($isDragging || $isBusy ? 0.4 : 1)};\n pointer-events: ${({ $isMovePending, $isBusy }) => ($isMovePending || $isBusy ? 'none' : 'auto')};\n\n ${({ $isValidDropTarget, theme }) =>\n $isValidDropTarget &&\n css`\n background: ${theme.colors.primary100};\n outline: 1px dashed ${theme.colors.primary600};\n outline-offset: -1px;\n `}\n\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.primary600};\n outline-offset: -2px;\n }\n\n &:last-child {\n ${StyledTd} {\n border-bottom: 0;\n }\n }\n`;\n\n// Leading checkbox column. Fixed narrow width so it holds its own column under\n// the mobile fixed table-layout (a 1% width would collapse and let the name\n// cell's preview overlap the control).\nconst CheckboxTd = styled(StyledTd)`\n width: 5.6rem;\n white-space: nowrap;\n`;\n\nconst CheckboxTh = styled(StyledTh)`\n width: 5.6rem;\n white-space: nowrap;\n`;\n\n// Flags an asset whose caption or alternative text is empty — mirrors the\n// per-field warning shown in the details drawer. Pushed to the far end of the\n// name cell (shrink 0 so a long name never crowds it out).\nconst MetadataWarning = styled(WarningCircle)`\n flex-shrink: 0;\n width: 1.6rem;\n height: 1.6rem;\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\n// The asset filename is its own interactive element: clicking it opens the\n// details drawer instead of selecting the row.\nconst NameButton = styled.button`\n display: inline-flex;\n max-width: 100%;\n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n cursor: pointer;\n text-align: left;\n color: inherit;\n font: inherit;\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.primary600};\n outline-offset: 2px;\n border-radius: 2px;\n }\n`;\n\n// Shields the row from its own controls (checkbox, \"...\" trigger) without\n// severing propagation for the menu's portaled content — those events are React\n// children of the cell but not DOM descendants, and Radix needs them to reach\n// `document` to dismiss its layers.\nconst stopRowEvent = (e: React.SyntheticEvent) => {\n if (isEventFromWithin(e)) {\n e.stopPropagation();\n }\n};\n\ninterface AssetPreviewCellProps {\n asset: File;\n}\n\nconst AssetPreviewCell = ({ asset }: AssetPreviewCellProps) => {\n const { ext, mime } = asset;\n\n const DocIcon = getAssetIcon(mime, ext);\n\n return (\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n borderRadius=\"4px\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n shrink={0}\n >\n <DocIcon width={20} height={20} />\n </Flex>\n );\n};\n\ninterface AssetRowProps {\n asset: File;\n orderedItemKeys: ItemKey[];\n onAssetItemClick: (assetId: number) => void;\n}\n\nconst AssetRow = ({ asset, orderedItemKeys, onAssetItemClick }: AssetRowProps) => {\n const isDesktop = useIsDesktop();\n const { formatDate, formatMessage } = useIntl();\n const { isMovePending } = useAssetsDndOptional() ?? { isMovePending: false };\n const { attributes, listeners, setNodeRef, isDragging, dragData } = useFileDraggable(asset);\n const { isSelected, toggle, selectRange } = useAssetSelection();\n const { canUpdate } = useMediaLibraryPermissions();\n const busyMessage = useBusyAssetsOptional()?.getBusyMessage(asset.id) ?? null;\n const openContextMenu = useItemContextMenuTrigger();\n\n const key = assetKey(asset.id);\n const selected = isSelected(key);\n\n // Caption and alternative text apply to every file type — same \"empty =\n // falsy\" rule as the drawer's per-field warning.\n const isMetadataMissing = !asset.caption || !asset.alternativeText;\n const metadataMissingLabel = formatMessage({\n id: getTranslationKey('list.table.row.metadata-missing'),\n defaultMessage: 'This asset is missing metadata (caption or alternative text).',\n });\n\n // Plain click opens the asset details; pointer selection lives on the\n // checkbox only. Modifier clicks keep the selection semantics: shift selects\n // a range, cmd/ctrl toggles.\n //\n // The containment guard on this and the handler below is what keeps the\n // actions menu's portaled dialogs — React children of this row — from\n // opening the details drawer or toggling the selection.\n const handleRowClick = (e: React.MouseEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else if (e.metaKey || e.ctrlKey) {\n toggle(key);\n } else {\n onAssetItemClick(asset.id);\n }\n };\n\n // Desktop: Space toggles selection (additive), Enter opens the details drawer.\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n onAssetItemClick(asset.id);\n } else if (e.key === ' ') {\n e.preventDefault();\n toggle(key);\n }\n };\n\n const handleNameClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onAssetItemClick(asset.id);\n };\n\n const handleCheckboxClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else {\n toggle(key);\n }\n };\n\n return (\n <StyledTr\n ref={setNodeRef}\n {...attributes}\n {...listeners}\n {...ASSET_DETAILS_TRIGGER_PROPS}\n $isDragging={isDragging}\n $isMovePending={isMovePending}\n $isBusy={busyMessage !== null}\n $isSelected={selected}\n tabIndex={0}\n role=\"row\"\n // Right-click opens this asset's own actions, or the selection's when it\n // is part of one. Still marked as \"not the background gesture\" so\n // MainAreaContextMenu's create menu stays out of it.\n data-native-context-menu\n onContextMenu={(e: React.MouseEvent) => {\n if (isEventFromWithin(e)) {\n openContextMenu?.(e, key, { kind: 'asset', asset, dragData });\n }\n }}\n onDragStart={(e) => e.preventDefault()}\n onClick={handleRowClick}\n onKeyDown={handleKeyDown}\n onPointerDown={(e: React.PointerEvent) => {\n if (isEventFromWithin(e)) {\n listeners?.onPointerDown?.(e);\n }\n }}\n >\n {/* No checkbox without the update permission (nothing selectable can be\n acted on). Shown at every viewport width otherwise. */}\n {canUpdate && (\n <CheckboxTd {...ASSET_ITEM_CONTROL_PROPS} onClick={stopRowEvent} onKeyDown={stopRowEvent}>\n <Flex>\n <Checkbox\n checked={selected}\n onClick={handleCheckboxClick}\n aria-label={formatMessage(\n {\n id: getTranslationKey('list.table.row.select'),\n defaultMessage: 'Select {name}',\n },\n { name: asset.name }\n )}\n />\n </Flex>\n </CheckboxTd>\n )}\n <NameTd>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap={2} minWidth={0}>\n <Flex gap={3} alignItems=\"center\" minWidth={0}>\n {/* The row is dimmed and inert while busy; the spinner in place of the\n thumbnail is what says so positively. Its label carries the reason\n to screen readers — the row itself has no other announcement. */}\n {busyMessage !== null ? (\n <Flex justifyContent=\"center\" width=\"3.2rem\" height=\"3.2rem\">\n <Loader small>{busyMessage}</Loader>\n </Flex>\n ) : (\n <AssetPreviewCell asset={asset} />\n )}\n <Flex direction=\"column\" alignItems=\"flex-start\" minWidth={0}>\n <NameButton type=\"button\" onClick={handleNameClick}>\n <TruncatedText textColor=\"neutral800\" fontWeight=\"semiBold\">\n {asset.name}\n </TruncatedText>\n </NameButton>\n {!isDesktop && (\n <Typography textColor=\"neutral600\" variant=\"pi\">\n {asset.size ? formatBytes(asset.size, 1) : '-'}\n </Typography>\n )}\n </Flex>\n </Flex>\n {isMetadataMissing && (\n <Tooltip label={metadataMissingLabel}>\n <MetadataWarning aria-label={metadataMissingLabel} role=\"img\" />\n </Tooltip>\n )}\n </Flex>\n </NameTd>\n {isDesktop && (\n <>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {asset.createdAt ? formatDate(new Date(asset.createdAt), { dateStyle: 'long' }) : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {asset.updatedAt ? formatDate(new Date(asset.updatedAt), { dateStyle: 'long' }) : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {asset.size ? formatBytes(asset.size, 1) : '-'}\n </Typography>\n </HugTd>\n </>\n )}\n {/* The row owns click, Enter and Space; none of them should reach it from\n the menu trigger (Enter would open the details drawer). */}\n <StyledTd\n {...ASSET_ITEM_CONTROL_PROPS}\n onClick={stopRowEvent}\n onKeyDown={stopRowEvent}\n onPointerDown={stopRowEvent}\n >\n <Flex justifyContent=\"flex-end\">\n <AssetActionsMenu asset={asset} dragData={dragData} />\n </Flex>\n </StyledTd>\n </StyledTr>\n );\n};\n\nconst FolderTr = styled(StyledTr)`\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n`;\n\ninterface FolderRowProps {\n folder: Folder;\n orderedItemKeys: ItemKey[];\n}\n\nconst FolderRow = ({ folder, orderedItemKeys }: FolderRowProps) => {\n const isDesktop = useIsDesktop();\n const { formatDate, formatMessage } = useIntl();\n const { navigateToFolder } = useFolderNavigation();\n const { isSelected, toggle, selectRange } = useAssetSelection();\n const { canUpdate } = useMediaLibraryPermissions();\n const openContextMenu = useItemContextMenuTrigger();\n const { isMovePending } = useAssetsDndOptional() ?? { isMovePending: false };\n const {\n dragData,\n draggable: { attributes, listeners, setNodeRef: setDragRef, isDragging },\n droppable: { setNodeRef: setDropRef },\n showValidDropHighlight,\n showInvalidDropCursor,\n } = useFolderDraggableDroppable(folder);\n\n const key = folderKey(folder.id);\n\n // Folders share the selection mechanism with assets. Only the plain-click\n // semantic differs: it navigates into the folder instead of selecting it.\n //\n // The containment guard on this and the handlers below is what keeps the\n // actions menu's portaled dialogs — React children of this row — from\n // navigating into the folder or starting a drag.\n const handleRowClick = (e: React.MouseEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else if (e.metaKey || e.ctrlKey) {\n toggle(key);\n } else {\n navigateToFolder(folder);\n }\n };\n\n // Enter navigates into the folder, Space toggles selection (same as assets).\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n navigateToFolder(folder);\n } else if (e.key === ' ') {\n e.preventDefault();\n toggle(key);\n }\n };\n\n const handleCheckboxClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else {\n toggle(key);\n }\n };\n\n return (\n <FolderTr\n ref={(node) => {\n setDragRef(node);\n setDropRef(node);\n }}\n {...attributes}\n {...listeners}\n $isDragging={isDragging}\n $isMovePending={isMovePending}\n $isValidDropTarget={showValidDropHighlight}\n $isInvalidDropTarget={showInvalidDropCursor}\n $isSelected={isSelected(key)}\n tabIndex={0}\n role=\"row\"\n // Right-click opens this folder's own actions, or the selection's when it\n // is part of one. Still marked as \"not the background gesture\" so\n // MainAreaContextMenu's create menu stays out of it.\n data-native-context-menu\n onContextMenu={(e: React.MouseEvent) => {\n if (isEventFromWithin(e)) {\n openContextMenu?.(e, key, { kind: 'folder', folder, dragData });\n }\n }}\n onDragStart={(e: React.DragEvent) => {\n if (isEventFromWithin(e)) {\n e.preventDefault();\n }\n }}\n onClick={handleRowClick}\n onKeyDown={handleKeyDown}\n onPointerDown={(e: React.PointerEvent) => {\n if (isEventFromWithin(e)) {\n listeners?.onPointerDown?.(e);\n }\n }}\n >\n {canUpdate && (\n <CheckboxTd onClick={stopRowEvent} onKeyDown={stopRowEvent}>\n <Flex>\n <Checkbox\n checked={isSelected(key)}\n onClick={handleCheckboxClick}\n aria-label={formatMessage(\n {\n id: getTranslationKey('list.table.row.select'),\n defaultMessage: 'Select {name}',\n },\n { name: folder.name }\n )}\n />\n </Flex>\n </CheckboxTd>\n )}\n <NameTd>\n <Flex gap={3} alignItems=\"center\" minWidth={0}>\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n borderRadius=\"4px\"\n color=\"neutral600\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n shrink={0}\n >\n <FolderIcon width={20} height={20} />\n </Flex>\n <TruncatedText textColor=\"neutral800\" fontWeight=\"semiBold\">\n {folder.name}\n </TruncatedText>\n </Flex>\n </NameTd>\n {isDesktop && (\n <>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {folder.createdAt\n ? formatDate(new Date(folder.createdAt), { dateStyle: 'long' })\n : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {folder.updatedAt\n ? formatDate(new Date(folder.updatedAt), { dateStyle: 'long' })\n : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">-</Typography>\n </HugTd>\n </>\n )}\n {/* The row owns click, Enter and Space; none of them should reach it from\n the menu trigger (Enter would navigate into the folder). */}\n <StyledTd onClick={stopRowEvent} onKeyDown={stopRowEvent} onPointerDown={stopRowEvent}>\n <Flex justifyContent=\"flex-end\">\n <FolderActionsMenu folder={folder} dragData={dragData} />\n </Flex>\n </StyledTd>\n </FolderTr>\n );\n};\n\ninterface AssetsTableProps {\n assets: File[];\n folders?: Folder[];\n /**\n * When set (\"Folders: Mixed with files\"), rows render in this interleaved\n * order instead of folders-first. Range selection follows the same order.\n */\n mixedItems?: MixedItem[] | null;\n /** Keys of the rendered rows, in render order. Owned by the view. */\n renderedKeys?: ItemKey[];\n onAssetItemClick: (assetId: number) => void;\n}\n\nexport const AssetsTable = ({\n assets,\n folders = [],\n mixedItems = null,\n renderedKeys,\n onAssetItemClick,\n}: AssetsTableProps) => {\n const isDesktop = useIsDesktop();\n const { formatMessage } = useIntl();\n const { selectedKeys, selectAll, clear } = useAssetSelection();\n const { canUpdate } = useMediaLibraryPermissions();\n const { trackUsage } = useTracking();\n\n // Below the desktop breakpoint only the name (and actions) column is kept —\n // the date/size columns don't fit; size moves under the name as a subtitle.\n const visibleHeaders = isDesktop\n ? TABLE_HEADERS\n : TABLE_HEADERS.filter((h) => h.name === 'name' || h.name === 'actions');\n\n // The checkbox column is a dedicated structural column (not part of\n // TABLE_HEADERS). Hidden only without the update permission — every bulk\n // action needs `assets.update`, so a read-only user has nothing to select for.\n const showCheckboxColumn = canUpdate;\n const colCount = visibleHeaders.length + (showCheckboxColumn ? 1 : 0);\n\n const totalRows = folders.length + assets.length;\n\n // Render order — folders first by default, or the interleaved mixed order.\n // Range selection follows it.\n const orderedItemKeys: ItemKey[] =\n renderedKeys ?? buildRenderedKeys({ folders, assets, mixedItems });\n const { allSelected, isIndeterminate } = getSelectAllState(selectedKeys, orderedItemKeys);\n\n const handleSelectAll = () => {\n if (allSelected) {\n clear();\n } else {\n trackUsage('didSelectAllMediaLibraryElements');\n selectAll(orderedItemKeys);\n }\n };\n\n // The empty state is owned by the page (`AssetsView` renders `EmptyState`) — an\n // empty table renders nothing at all, not headers over an empty body.\n if (totalRows === 0) {\n return null;\n }\n\n return (\n <StyledTable colCount={colCount} rowCount={(mixedItems ? mixedItems.length : totalRows) + 1}>\n <StyledThead>\n <RawTr>\n {showCheckboxColumn && (\n <CheckboxTh>\n <Flex>\n <Checkbox\n checked={isIndeterminate ? 'indeterminate' : allSelected}\n disabled={orderedItemKeys.length === 0}\n onCheckedChange={handleSelectAll}\n aria-label={formatMessage({\n id: getTranslationKey('list.table.header.select-all'),\n defaultMessage: 'Select all',\n })}\n />\n </Flex>\n </CheckboxTh>\n )}\n {visibleHeaders.map((header) => {\n const tableHeaderLabel = formatMessage(header.label);\n const isVisuallyHidden = 'isVisuallyHidden' in header && header.isVisuallyHidden;\n\n if (isVisuallyHidden) {\n return (\n <StyledTh key={header.name} $flex={header.name === 'name'}>\n <VisuallyHidden>\n {formatMessage({\n id: getTranslationKey('table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </StyledTh>\n );\n }\n\n return (\n <StyledTh key={header.name} $flex={header.name === 'name'}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n </StyledTh>\n );\n })}\n </RawTr>\n </StyledThead>\n <RawTbody>\n {mixedItems?.map((item) =>\n item.kind === 'folder' ? (\n <FolderRow\n key={`folder-${item.folder.id}`}\n folder={item.folder}\n orderedItemKeys={orderedItemKeys}\n />\n ) : (\n <AssetRow\n key={item.asset.id}\n asset={item.asset}\n orderedItemKeys={orderedItemKeys}\n onAssetItemClick={onAssetItemClick}\n />\n )\n )}\n {!mixedItems &&\n folders.map((folder) => (\n <FolderRow\n key={`folder-${folder.id}`}\n folder={folder}\n orderedItemKeys={orderedItemKeys}\n />\n ))}\n {!mixedItems &&\n assets.map((asset) => (\n <AssetRow\n key={asset.id}\n asset={asset}\n orderedItemKeys={orderedItemKeys}\n onAssetItemClick={onAssetItemClick}\n />\n ))}\n </RawTbody>\n </StyledTable>\n );\n};\n"],"names":["StyledTable","styled","RawTable","theme","colors","neutral150","StyledThead","RawThead","neutral100","hugColumn","css","flexColumn","StyledTh","RawTh","spaces","$flex","StyledTd","RawTd","NameTd","HugTd","StyledTr","tr","$isSelected","primary100","neutral0","$isMovePending","$isBusy","$isInvalidDropTarget","$isDragging","$isValidDropTarget","primary600","CheckboxTd","CheckboxTh","MetadataWarning","WarningCircle","warning500","NameButton","button","stopRowEvent","e","isEventFromWithin","stopPropagation","AssetPreviewCell","asset","ext","mime","DocIcon","getAssetIcon","_jsx","Flex","justifyContent","alignItems","borderRadius","color","width","height","shrink","AssetRow","orderedItemKeys","onAssetItemClick","isDesktop","useIsDesktop","formatDate","formatMessage","useIntl","isMovePending","useAssetsDndOptional","attributes","listeners","setNodeRef","isDragging","dragData","useFileDraggable","isSelected","toggle","selectRange","useAssetSelection","canUpdate","useMediaLibraryPermissions","busyMessage","useBusyAssetsOptional","getBusyMessage","id","openContextMenu","useItemContextMenuTrigger","key","assetKey","selected","isMetadataMissing","caption","alternativeText","metadataMissingLabel","getTranslationKey","defaultMessage","handleRowClick","shiftKey","metaKey","ctrlKey","handleKeyDown","preventDefault","handleNameClick","handleCheckboxClick","_jsxs","ref","ASSET_DETAILS_TRIGGER_PROPS","tabIndex","role","data-native-context-menu","onContextMenu","kind","onDragStart","onClick","onKeyDown","onPointerDown","ASSET_ITEM_CONTROL_PROPS","Checkbox","checked","aria-label","name","gap","minWidth","Loader","small","direction","type","TruncatedText","textColor","fontWeight","Typography","variant","size","formatBytes","Tooltip","label","_Fragment","createdAt","Date","dateStyle","updatedAt","AssetActionsMenu","FolderTr","FolderRow","folder","navigateToFolder","useFolderNavigation","draggable","setDragRef","droppable","setDropRef","showValidDropHighlight","showInvalidDropCursor","useFolderDraggableDroppable","folderKey","node","FolderIcon","FolderActionsMenu","AssetsTable","assets","folders","mixedItems","renderedKeys","selectedKeys","selectAll","clear","trackUsage","useTracking","visibleHeaders","TABLE_HEADERS","filter","h","showCheckboxColumn","colCount","length","totalRows","buildRenderedKeys","allSelected","isIndeterminate","getSelectAllState","handleSelectAll","rowCount","RawTr","disabled","onCheckedChange","map","header","tableHeaderLabel","isVisuallyHidden","VisuallyHidden","RawTbody","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AssetsTable.mjs","sources":["../../../../../admin/src/pages/Assets/components/AssetsTable.tsx"],"sourcesContent":["import { useIsDesktop } from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Flex,\n Loader,\n RawTable,\n RawTbody,\n RawTd,\n RawTh,\n RawThead,\n RawTr,\n Tooltip,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Folder as FolderIcon, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { TruncatedText } from '../../../components/TruncatedText';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { formatBytes } from '../../../utils/files';\nimport { getAssetIcon } from '../../../utils/getAssetIcon';\nimport { isEventFromWithin } from '../../../utils/isEventFromWithin';\nimport { getTranslationKey } from '../../../utils/translations';\nimport { ASSET_DETAILS_TRIGGER_PROPS, ASSET_ITEM_CONTROL_PROPS, TABLE_HEADERS } from '../constants';\nimport { useAssetSelection } from '../hooks/useAssetSelection';\nimport { useBusyAssetsOptional } from '../hooks/useBusyAssets';\nimport { useFolderNavigation } from '../hooks/useFolderNavigation';\nimport { useListSettings } from '../hooks/useListSettings';\nimport { type MixedItem } from '../utils/mergeMixedList';\nimport { buildRenderedKeys } from '../utils/renderedKeys';\nimport { assetKey, folderKey, getSelectAllState, type ItemKey } from '../utils/selection';\n\nimport { AssetActionsMenu } from './AssetActionsMenu';\nimport { useAssetsDndOptional } from './Dnd/AssetsDndProvider';\nimport { useFileDraggable, useFolderDraggableDroppable } from './Dnd/useAssetDnd';\nimport { FolderActionsMenu } from './FolderActionsMenu';\nimport { useItemContextMenuTrigger } from './ItemContextMenu';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\n\nconst EMPTY_FOLDERS: NonNullable<AssetsTableProps['folders']> = [];\n\nconst StyledTable = styled(RawTable)`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n border-radius: 4px;\n overflow: hidden;\n\n /* An auto layout lets every column but the name size itself to its content,\n so the dates never wrap. The name cell is what absorbs the leftover and\n ellipsizes — see NameTd. */\n table-layout: auto;\n`;\n\nconst StyledThead = styled(RawThead)`\n background: ${({ theme }) => theme.colors.neutral100};\n\n tr {\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\n/**\n * Column sizing, applied to the header and body cells alike.\n *\n * `hug` shrinks a column to its content: `width: 1%` is a floor the content\n * overrides, and `nowrap` stops a date breaking across lines.\n *\n * `flex` claims everything left over. `width: 100%` asks for all of it and\n * `max-width: 0` is what allows the cell to be narrower than its content, which\n * is what lets the name inside ellipsize instead of widening the table.\n */\nconst hugColumn = css`\n width: 1%;\n white-space: nowrap;\n`;\n\nconst flexColumn = css`\n width: 100%;\n max-width: 0;\n overflow: hidden;\n`;\n\nconst headerCellStyles = css`\n height: 40px;\n padding: 0 ${({ theme }) => theme.spaces[4]};\n text-align: left;\n`;\n\nconst StyledTh = styled(RawTh)<{ $flex?: boolean }>`\n ${headerCellStyles}\n\n ${({ $flex }) => ($flex ? flexColumn : hugColumn)}\n`;\n\nconst StyledTd = styled(RawTd)`\n padding: 0 ${({ theme }) => theme.spaces[4]};\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\n/** The name column: takes whatever the others leave and ellipsizes. */\nconst NameTd = styled(StyledTd)`\n ${flexColumn}\n`;\n\n/** Every other column: as wide as its content, never wrapping. */\nconst HugTd = styled(StyledTd)`\n ${hugColumn}\n`;\n\nconst StyledTr = styled.tr<{\n $isDragging?: boolean;\n $isMovePending?: boolean;\n $isBusy?: boolean;\n $isValidDropTarget?: boolean;\n $isInvalidDropTarget?: boolean;\n $isSelected?: boolean;\n /** Shown but not choosable here (the picker's `allowedTypes`). */\n $isUnselectable?: boolean;\n}>`\n height: 48px;\n user-select: none;\n background: ${({ theme, $isSelected }) =>\n $isSelected ? theme.colors.primary100 : theme.colors.neutral0};\n cursor: ${({ $isMovePending, $isBusy, $isInvalidDropTarget, $isUnselectable }) => {\n if ($isMovePending || $isBusy) {\n return 'wait';\n }\n\n return $isInvalidDropTarget || $isUnselectable ? 'not-allowed' : 'pointer';\n }};\n opacity: ${({ $isDragging, $isBusy, $isUnselectable }) =>\n $isDragging || $isBusy || $isUnselectable ? 0.4 : 1};\n pointer-events: ${({ $isMovePending, $isBusy }) => ($isMovePending || $isBusy ? 'none' : 'auto')};\n\n ${({ $isValidDropTarget, theme }) =>\n $isValidDropTarget &&\n css`\n background: ${theme.colors.primary100};\n outline: 1px dashed ${theme.colors.primary600};\n outline-offset: -1px;\n `}\n\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.primary600};\n outline-offset: -2px;\n }\n\n &:last-child {\n ${StyledTd} {\n border-bottom: 0;\n }\n }\n`;\n\n// The trailing actions column (\"...\" menu), sized by name rather than as the\n// last column: where the column is hidden (the Content Manager asset picker),\n// the last column is the name or the size, which must not shrink to this.\nconst ActionsTd = styled(StyledTd)`\n width: 5.6rem;\n white-space: nowrap;\n`;\n\nconst ActionsTh = styled(StyledTh)`\n width: 5.6rem;\n white-space: nowrap;\n`;\n\n// Leading checkbox column. Fixed narrow width so it holds its own column under\n// the mobile fixed table-layout (a 1% width would collapse and let the name\n// cell's preview overlap the control).\nconst CheckboxTd = styled(StyledTd)`\n width: 5.6rem;\n white-space: nowrap;\n`;\n\nconst CheckboxTh = styled(StyledTh)`\n width: 5.6rem;\n white-space: nowrap;\n`;\n\n// The checkbox column's header when there is no select-all (a single-value\n// picker): a plain cell, since as an empty `RawTh` the design system's grid\n// would make the cell itself a Tab stop.\nconst EmptyCheckboxTh = styled.th.attrs({ role: 'gridcell' })`\n ${headerCellStyles}\n width: 5.6rem;\n white-space: nowrap;\n`;\n\n// Flags an asset whose caption or alternative text is empty — mirrors the\n// per-field warning shown in the details drawer. Pushed to the far end of the\n// name cell (shrink 0 so a long name never crowds it out).\nconst MetadataWarning = styled(WarningCircle)`\n flex-shrink: 0;\n width: 1.6rem;\n height: 1.6rem;\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\n// The asset filename is its own interactive element: clicking it opens the\n// details drawer instead of selecting the row.\nconst NameButton = styled.button`\n display: inline-flex;\n max-width: 100%;\n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n cursor: pointer;\n text-align: left;\n color: inherit;\n font: inherit;\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.primary600};\n outline-offset: 2px;\n border-radius: 2px;\n }\n`;\n\n// Shields the row from its own controls (checkbox, \"...\" trigger) without\n// severing propagation for the menu's portaled content — those events are React\n// children of the cell but not DOM descendants, and Radix needs them to reach\n// `document` to dismiss its layers.\nconst stopRowEvent = (e: React.SyntheticEvent) => {\n if (isEventFromWithin(e)) {\n e.stopPropagation();\n }\n};\n\ninterface AssetPreviewCellProps {\n asset: File;\n}\n\nconst AssetPreviewCell = ({ asset }: AssetPreviewCellProps) => {\n const { ext, mime } = asset;\n\n const DocIcon = getAssetIcon(mime, ext);\n\n return (\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n borderRadius=\"4px\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n shrink={0}\n >\n <DocIcon width={20} height={20} />\n </Flex>\n );\n};\n\ninterface AssetRowProps {\n asset: File;\n orderedItemKeys: ItemKey[];\n onAssetItemClick: (assetId: number) => void;\n}\n\nconst AssetRow = ({ asset, orderedItemKeys, onAssetItemClick }: AssetRowProps) => {\n const isDesktop = useIsDesktop();\n const { formatDate, formatMessage } = useIntl();\n const { isMovePending } = useAssetsDndOptional() ?? { isMovePending: false };\n const { attributes, listeners, setNodeRef, isDragging, dragData } = useFileDraggable(asset);\n const { isEnabled, isSelected, toggle, selectRange, getSelectability } = useAssetSelection();\n const { showItemActions } = useListSettings();\n const busyMessage = useBusyAssetsOptional()?.getBusyMessage(asset.id) ?? null;\n const openContextMenu = useItemContextMenuTrigger();\n\n const key = assetKey(asset.id);\n const selected = isSelected(key);\n const selectability = getSelectability(key);\n\n // Caption and alternative text apply to every file type — same \"empty =\n // falsy\" rule as the drawer's per-field warning.\n const isMetadataMissing = !asset.caption || !asset.alternativeText;\n const metadataMissingLabel = formatMessage({\n id: getTranslationKey('list.table.row.metadata-missing'),\n defaultMessage: 'This asset is missing metadata (caption or alternative text).',\n });\n\n // Plain click opens the asset details; pointer selection lives on the\n // checkbox only. Modifier clicks keep the selection semantics: shift selects\n // a range, cmd/ctrl toggles.\n //\n // The containment guard on this and the handler below is what keeps the\n // actions menu's portaled dialogs — React children of this row — from\n // opening the details drawer or toggling the selection.\n const handleRowClick = (e: React.MouseEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else if (e.metaKey || e.ctrlKey) {\n toggle(key);\n } else {\n onAssetItemClick(asset.id);\n }\n };\n\n // Desktop: Space toggles selection (additive), Enter opens the details drawer.\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n onAssetItemClick(asset.id);\n } else if (e.key === ' ') {\n e.preventDefault();\n toggle(key);\n }\n };\n\n const handleNameClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onAssetItemClick(asset.id);\n };\n\n const handleCheckboxClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else {\n toggle(key);\n }\n };\n\n return (\n <StyledTr\n ref={setNodeRef}\n {...attributes}\n {...listeners}\n {...ASSET_DETAILS_TRIGGER_PROPS}\n $isDragging={isDragging}\n $isMovePending={isMovePending}\n $isBusy={busyMessage !== null}\n $isSelected={selected}\n $isUnselectable={selectability === 'disabled'}\n tabIndex={0}\n role=\"row\"\n // Right-click opens this asset's own actions, or the selection's when it\n // is part of one. Still marked as \"not the background gesture\" so\n // MainAreaContextMenu's create menu stays out of it.\n data-native-context-menu\n onContextMenu={(e: React.MouseEvent) => {\n if (isEventFromWithin(e)) {\n openContextMenu?.(e, key, { kind: 'asset', asset, dragData });\n }\n }}\n onDragStart={(e) => e.preventDefault()}\n onClick={handleRowClick}\n onKeyDown={handleKeyDown}\n onPointerDown={(e: React.PointerEvent) => {\n if (isEventFromWithin(e)) {\n listeners?.onPointerDown?.(e);\n }\n }}\n >\n {/* The column exists whenever selection is on (at every viewport width);\n a row outside the selection keeps an empty cell so columns line up. */}\n {isEnabled && (\n <CheckboxTd {...ASSET_ITEM_CONTROL_PROPS} onClick={stopRowEvent} onKeyDown={stopRowEvent}>\n {selectability !== 'hidden' && (\n <Flex>\n <Checkbox\n checked={selected}\n disabled={selectability === 'disabled'}\n onClick={handleCheckboxClick}\n aria-label={formatMessage(\n {\n id: getTranslationKey('list.table.row.select'),\n defaultMessage: 'Select {name}',\n },\n { name: asset.name }\n )}\n />\n </Flex>\n )}\n </CheckboxTd>\n )}\n <NameTd>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap={2} minWidth={0}>\n <Flex gap={3} alignItems=\"center\" minWidth={0}>\n {/* The row is dimmed and inert while busy; the spinner in place of the\n thumbnail is what says so positively. Its label carries the reason\n to screen readers — the row itself has no other announcement. */}\n {busyMessage !== null ? (\n <Flex justifyContent=\"center\" width=\"3.2rem\" height=\"3.2rem\">\n <Loader small>{busyMessage}</Loader>\n </Flex>\n ) : (\n <AssetPreviewCell asset={asset} />\n )}\n <Flex direction=\"column\" alignItems=\"flex-start\" minWidth={0}>\n <NameButton type=\"button\" onClick={handleNameClick}>\n <TruncatedText textColor=\"neutral800\" fontWeight=\"semiBold\">\n {asset.name}\n </TruncatedText>\n </NameButton>\n {!isDesktop && (\n <Typography textColor=\"neutral600\" variant=\"pi\">\n {asset.size ? formatBytes(asset.size, 1) : '-'}\n </Typography>\n )}\n </Flex>\n </Flex>\n {isMetadataMissing && (\n <Tooltip label={metadataMissingLabel}>\n <MetadataWarning aria-label={metadataMissingLabel} role=\"img\" />\n </Tooltip>\n )}\n </Flex>\n </NameTd>\n {isDesktop && (\n <>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {asset.createdAt ? formatDate(new Date(asset.createdAt), { dateStyle: 'long' }) : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {asset.updatedAt ? formatDate(new Date(asset.updatedAt), { dateStyle: 'long' }) : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {asset.size ? formatBytes(asset.size, 1) : '-'}\n </Typography>\n </HugTd>\n </>\n )}\n {/* The row owns click, Enter and Space; none of them should reach it from\n the menu trigger (Enter would open the details drawer). */}\n {showItemActions && (\n <ActionsTd\n {...ASSET_ITEM_CONTROL_PROPS}\n onClick={stopRowEvent}\n onKeyDown={stopRowEvent}\n onPointerDown={stopRowEvent}\n >\n <Flex justifyContent=\"flex-end\">\n <AssetActionsMenu asset={asset} dragData={dragData} />\n </Flex>\n </ActionsTd>\n )}\n </StyledTr>\n );\n};\n\nconst FolderTr = styled(StyledTr)`\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n`;\n\ninterface FolderRowProps {\n folder: Folder;\n orderedItemKeys: ItemKey[];\n}\n\nconst FolderRow = ({ folder, orderedItemKeys }: FolderRowProps) => {\n const isDesktop = useIsDesktop();\n const { formatDate, formatMessage } = useIntl();\n const { navigateToFolder } = useFolderNavigation();\n const { isEnabled, isSelected, toggle, selectRange, getSelectability } = useAssetSelection();\n const { showItemActions } = useListSettings();\n const openContextMenu = useItemContextMenuTrigger();\n const { isMovePending } = useAssetsDndOptional() ?? { isMovePending: false };\n const {\n dragData,\n draggable: { attributes, listeners, setNodeRef: setDragRef, isDragging },\n droppable: { setNodeRef: setDropRef },\n showValidDropHighlight,\n showInvalidDropCursor,\n } = useFolderDraggableDroppable(folder);\n\n const key = folderKey(folder.id);\n\n // Folders share the selection mechanism with assets. Only the plain-click\n // semantic differs: it navigates into the folder instead of selecting it.\n //\n // The containment guard on this and the handlers below is what keeps the\n // actions menu's portaled dialogs — React children of this row — from\n // navigating into the folder or starting a drag.\n const handleRowClick = (e: React.MouseEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else if (e.metaKey || e.ctrlKey) {\n toggle(key);\n } else {\n navigateToFolder(folder);\n }\n };\n\n // Enter navigates into the folder, Space toggles selection (same as assets).\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isEventFromWithin(e)) {\n return;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n navigateToFolder(folder);\n } else if (e.key === ' ') {\n e.preventDefault();\n toggle(key);\n }\n };\n\n const handleCheckboxClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (e.shiftKey) {\n selectRange(orderedItemKeys, key);\n } else {\n toggle(key);\n }\n };\n\n return (\n <FolderTr\n ref={(node) => {\n setDragRef(node);\n setDropRef(node);\n }}\n {...attributes}\n {...listeners}\n $isDragging={isDragging}\n $isMovePending={isMovePending}\n $isValidDropTarget={showValidDropHighlight}\n $isInvalidDropTarget={showInvalidDropCursor}\n $isSelected={isSelected(key)}\n tabIndex={0}\n role=\"row\"\n // Right-click opens this folder's own actions, or the selection's when it\n // is part of one. Still marked as \"not the background gesture\" so\n // MainAreaContextMenu's create menu stays out of it.\n data-native-context-menu\n onContextMenu={(e: React.MouseEvent) => {\n if (isEventFromWithin(e)) {\n openContextMenu?.(e, key, { kind: 'folder', folder, dragData });\n }\n }}\n onDragStart={(e: React.DragEvent) => {\n if (isEventFromWithin(e)) {\n e.preventDefault();\n }\n }}\n onClick={handleRowClick}\n onKeyDown={handleKeyDown}\n onPointerDown={(e: React.PointerEvent) => {\n if (isEventFromWithin(e)) {\n listeners?.onPointerDown?.(e);\n }\n }}\n >\n {isEnabled && (\n <CheckboxTd onClick={stopRowEvent} onKeyDown={stopRowEvent}>\n {getSelectability(key) !== 'hidden' && (\n <Flex>\n <Checkbox\n checked={isSelected(key)}\n disabled={getSelectability(key) === 'disabled'}\n onClick={handleCheckboxClick}\n aria-label={formatMessage(\n {\n id: getTranslationKey('list.table.row.select'),\n defaultMessage: 'Select {name}',\n },\n { name: folder.name }\n )}\n />\n </Flex>\n )}\n </CheckboxTd>\n )}\n <NameTd>\n <Flex gap={3} alignItems=\"center\" minWidth={0}>\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n borderRadius=\"4px\"\n color=\"neutral600\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n shrink={0}\n >\n <FolderIcon width={20} height={20} />\n </Flex>\n <TruncatedText textColor=\"neutral800\" fontWeight=\"semiBold\">\n {folder.name}\n </TruncatedText>\n </Flex>\n </NameTd>\n {isDesktop && (\n <>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {folder.createdAt\n ? formatDate(new Date(folder.createdAt), { dateStyle: 'long' })\n : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">\n {folder.updatedAt\n ? formatDate(new Date(folder.updatedAt), { dateStyle: 'long' })\n : '-'}\n </Typography>\n </HugTd>\n <HugTd>\n <Typography textColor=\"neutral600\">-</Typography>\n </HugTd>\n </>\n )}\n {/* The row owns click, Enter and Space; none of them should reach it from\n the menu trigger (Enter would navigate into the folder). */}\n {showItemActions && (\n <ActionsTd onClick={stopRowEvent} onKeyDown={stopRowEvent} onPointerDown={stopRowEvent}>\n <Flex justifyContent=\"flex-end\">\n <FolderActionsMenu folder={folder} dragData={dragData} />\n </Flex>\n </ActionsTd>\n )}\n </FolderTr>\n );\n};\n\ninterface AssetsTableProps {\n assets: File[];\n folders?: Folder[];\n /**\n * When set (\"Folders: Mixed with files\"), rows render in this interleaved\n * order instead of folders-first. Range selection follows the same order.\n */\n mixedItems?: MixedItem[] | null;\n /** Keys of the rendered rows, in render order. Owned by the view. */\n renderedKeys?: ItemKey[];\n onAssetItemClick: (assetId: number) => void;\n}\n\nexport const AssetsTable = ({\n assets,\n folders = EMPTY_FOLDERS,\n mixedItems = null,\n renderedKeys,\n onAssetItemClick,\n}: AssetsTableProps) => {\n const isDesktop = useIsDesktop();\n const { formatMessage } = useIntl();\n const { isEnabled, canSelectAll, selectedKeys, selectAll, deselectAll, getSelectability } =\n useAssetSelection();\n const { showItemActions } = useListSettings();\n const { trackUsage } = useTracking();\n\n // Below the desktop breakpoint only the name (and actions) column is kept —\n // the date/size columns don't fit; size moves under the name as a subtitle.\n const visibleHeaders = (\n isDesktop\n ? TABLE_HEADERS\n : TABLE_HEADERS.filter((h) => h.name === 'name' || h.name === 'actions')\n ).filter((h) => showItemActions || h.name !== 'actions');\n\n // The checkbox column is a dedicated structural column (not part of\n // TABLE_HEADERS), shown whenever selection is on.\n const showCheckboxColumn = isEnabled;\n const colCount = visibleHeaders.length + (showCheckboxColumn ? 1 : 0);\n\n const totalRows = folders.length + assets.length;\n\n // Render order — folders first by default, or the interleaved mixed order.\n // Range selection follows it.\n const orderedItemKeys: ItemKey[] =\n renderedKeys ?? buildRenderedKeys({ folders, assets, mixedItems });\n // Select-all only reaches what can be selected: folders in the picker, or\n // assets outside its `allowedTypes`, are left out.\n const selectableKeys = orderedItemKeys.filter((key) => getSelectability(key) === 'enabled');\n const { allSelected, isIndeterminate } = getSelectAllState(selectedKeys, selectableKeys);\n\n const handleSelectAll = () => {\n if (allSelected) {\n deselectAll(selectableKeys);\n } else {\n trackUsage('didSelectAllMediaLibraryElements');\n selectAll(selectableKeys);\n }\n };\n\n // The empty state is owned by the page (`AssetsView` renders `EmptyState`) — an\n // empty table renders nothing at all, not headers over an empty body.\n if (totalRows === 0) {\n return null;\n }\n\n return (\n <StyledTable colCount={colCount} rowCount={(mixedItems ? mixedItems.length : totalRows) + 1}>\n <StyledThead>\n <RawTr>\n {showCheckboxColumn && canSelectAll && (\n <CheckboxTh>\n <Flex>\n <Checkbox\n checked={isIndeterminate ? 'indeterminate' : allSelected}\n disabled={selectableKeys.length === 0}\n onCheckedChange={handleSelectAll}\n aria-label={formatMessage({\n id: getTranslationKey('list.table.header.select-all'),\n defaultMessage: 'Select all',\n })}\n />\n </Flex>\n </CheckboxTh>\n )}\n {showCheckboxColumn && !canSelectAll && <EmptyCheckboxTh />}\n {visibleHeaders.map((header) => {\n const tableHeaderLabel = formatMessage(header.label);\n const isVisuallyHidden = 'isVisuallyHidden' in header && header.isVisuallyHidden;\n\n if (isVisuallyHidden) {\n return (\n <ActionsTh key={header.name}>\n <VisuallyHidden>\n {formatMessage({\n id: getTranslationKey('table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </ActionsTh>\n );\n }\n\n return (\n <StyledTh key={header.name} $flex={header.name === 'name'}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n </StyledTh>\n );\n })}\n </RawTr>\n </StyledThead>\n <RawTbody>\n {mixedItems?.map((item) =>\n item.kind === 'folder' ? (\n <FolderRow\n key={`folder-${item.folder.id}`}\n folder={item.folder}\n orderedItemKeys={orderedItemKeys}\n />\n ) : (\n <AssetRow\n key={item.asset.id}\n asset={item.asset}\n orderedItemKeys={orderedItemKeys}\n onAssetItemClick={onAssetItemClick}\n />\n )\n )}\n {!mixedItems &&\n folders.map((folder) => (\n <FolderRow\n key={`folder-${folder.id}`}\n folder={folder}\n orderedItemKeys={orderedItemKeys}\n />\n ))}\n {!mixedItems &&\n assets.map((asset) => (\n <AssetRow\n key={asset.id}\n asset={asset}\n orderedItemKeys={orderedItemKeys}\n onAssetItemClick={onAssetItemClick}\n />\n ))}\n </RawTbody>\n </StyledTable>\n );\n};\n"],"names":["EMPTY_FOLDERS","StyledTable","styled","RawTable","theme","colors","neutral150","StyledThead","RawThead","neutral100","hugColumn","css","flexColumn","headerCellStyles","spaces","StyledTh","RawTh","$flex","StyledTd","RawTd","NameTd","HugTd","StyledTr","tr","$isSelected","primary100","neutral0","$isMovePending","$isBusy","$isInvalidDropTarget","$isUnselectable","$isDragging","$isValidDropTarget","primary600","ActionsTd","ActionsTh","CheckboxTd","CheckboxTh","EmptyCheckboxTh","th","attrs","role","MetadataWarning","WarningCircle","warning500","NameButton","button","stopRowEvent","e","isEventFromWithin","stopPropagation","AssetPreviewCell","asset","ext","mime","DocIcon","getAssetIcon","_jsx","Flex","justifyContent","alignItems","borderRadius","color","width","height","shrink","AssetRow","orderedItemKeys","onAssetItemClick","isDesktop","useIsDesktop","formatDate","formatMessage","useIntl","isMovePending","useAssetsDndOptional","attributes","listeners","setNodeRef","isDragging","dragData","useFileDraggable","isEnabled","isSelected","toggle","selectRange","getSelectability","useAssetSelection","showItemActions","useListSettings","busyMessage","useBusyAssetsOptional","getBusyMessage","id","openContextMenu","useItemContextMenuTrigger","key","assetKey","selected","selectability","isMetadataMissing","caption","alternativeText","metadataMissingLabel","getTranslationKey","defaultMessage","handleRowClick","shiftKey","metaKey","ctrlKey","handleKeyDown","preventDefault","handleNameClick","handleCheckboxClick","_jsxs","ref","ASSET_DETAILS_TRIGGER_PROPS","tabIndex","data-native-context-menu","onContextMenu","kind","onDragStart","onClick","onKeyDown","onPointerDown","ASSET_ITEM_CONTROL_PROPS","Checkbox","checked","disabled","aria-label","name","gap","minWidth","Loader","small","direction","type","TruncatedText","textColor","fontWeight","Typography","variant","size","formatBytes","Tooltip","label","_Fragment","createdAt","Date","dateStyle","updatedAt","AssetActionsMenu","FolderTr","FolderRow","folder","navigateToFolder","useFolderNavigation","draggable","setDragRef","droppable","setDropRef","showValidDropHighlight","showInvalidDropCursor","useFolderDraggableDroppable","folderKey","node","FolderIcon","FolderActionsMenu","AssetsTable","assets","folders","mixedItems","renderedKeys","canSelectAll","selectedKeys","selectAll","deselectAll","trackUsage","useTracking","visibleHeaders","TABLE_HEADERS","filter","h","showCheckboxColumn","colCount","length","totalRows","buildRenderedKeys","selectableKeys","allSelected","isIndeterminate","getSelectAllState","handleSelectAll","rowCount","RawTr","onCheckedChange","map","header","tableHeaderLabel","isVisuallyHidden","VisuallyHidden","RawTbody","item"],"mappings":"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"}
|