@strapi/upload 5.29.0 → 5.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/ai/components/AIAssetCard.js +31 -9
- package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
- package/dist/admin/ai/components/AIAssetCard.mjs +25 -3
- package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.js +3 -2
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs +3 -2
- package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.js +5 -4
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +2 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.js +3 -7
- package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.mjs +3 -7
- package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +5 -4
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +2 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +2 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +2 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +3 -3
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +2 -2
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.js +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +9 -6
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +8 -5
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +15 -34
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +15 -34
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +5 -4
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +3 -2
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +3 -3
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +2 -2
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +3 -2
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +3 -2
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.js.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +8 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +5 -7
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/components/SelectTree/Option.js.map +1 -1
- package/dist/admin/components/SelectTree/Option.mjs.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js +1 -0
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +1 -1
- package/dist/admin/components/TableList/CellContent.mjs +1 -1
- package/dist/admin/components/TableList/PreviewCell.js +5 -4
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +2 -1
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +1 -0
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -0
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js +1 -0
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs +1 -0
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +3 -2
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +2 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +3 -3
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +2 -2
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +3 -3
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +2 -2
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -1
- package/dist/admin/constants.js +5 -10
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +5 -11
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/enums.js +20 -0
- package/dist/admin/enums.js.map +1 -0
- package/dist/admin/enums.mjs +17 -0
- package/dist/admin/enums.mjs.map +1 -0
- package/dist/admin/hooks/useBulkEdit.js +1 -1
- package/dist/admin/hooks/useBulkEdit.mjs +1 -1
- package/dist/admin/hooks/useBulkMove.js +1 -1
- package/dist/admin/hooks/useBulkMove.mjs +1 -1
- package/dist/admin/hooks/useBulkRemove.js +1 -1
- package/dist/admin/hooks/useBulkRemove.mjs +1 -1
- package/dist/admin/hooks/useConfig.js +2 -1
- package/dist/admin/hooks/useConfig.js.map +1 -1
- package/dist/admin/hooks/useConfig.mjs +2 -1
- package/dist/admin/hooks/useConfig.mjs.map +1 -1
- package/dist/admin/hooks/useEditAsset.js +1 -1
- package/dist/admin/hooks/useEditAsset.js.map +1 -1
- package/dist/admin/hooks/useEditAsset.mjs +1 -1
- package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
- package/dist/admin/hooks/useEditFolder.js.map +1 -1
- package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolder.js +1 -1
- package/dist/admin/hooks/useFolder.js.map +1 -1
- package/dist/admin/hooks/useFolder.mjs +1 -1
- package/dist/admin/hooks/useFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolderStructure.js +1 -1
- package/dist/admin/hooks/useFolderStructure.mjs +1 -1
- package/dist/admin/hooks/useModalQueryParams.js +2 -2
- package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
- package/dist/admin/hooks/useModalQueryParams.mjs +1 -1
- package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -1
- package/dist/admin/hooks/useRemoveAsset.js.map +1 -1
- package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +24 -0
- package/dist/admin/hooks/useTracking.js.map +1 -0
- package/dist/admin/hooks/useTracking.mjs +22 -0
- package/dist/admin/hooks/useTracking.mjs.map +1 -0
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/hooks/useUpload.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/package.json.js +5 -5
- package/dist/admin/package.json.mjs +5 -5
- package/dist/admin/pages/App/App.js +1 -1
- package/dist/admin/pages/App/App.mjs +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +1 -0
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +1 -0
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/BulkActions.js +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/BulkActions.mjs +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.js +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.mjs +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Filters.js +3 -2
- package/dist/admin/pages/App/MediaLibrary/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs +3 -2
- package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.js +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.mjs +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +1 -0
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +1 -0
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/src/components/AssetCard/UploadingAssetCard.d.ts +1 -1
- package/dist/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.d.ts +1 -1
- package/dist/admin/src/constants.d.ts +0 -6
- package/dist/admin/src/enums.d.ts +12 -0
- package/dist/admin/src/hooks/useTracking.d.ts +4 -0
- package/dist/admin/src/utils/icons.d.ts +14 -0
- package/dist/admin/src/utils/rawFileToAsset.d.ts +1 -1
- package/dist/admin/src/utils/typeFromMime.d.ts +2 -2
- package/dist/admin/src/utils/urlsToAssets.d.ts +1 -1
- package/dist/admin/translations/pt-BR.json.js +75 -7
- package/dist/admin/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/translations/pt-BR.json.mjs +75 -7
- package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/utils/formatBytes.js.map +1 -1
- package/dist/admin/utils/formatBytes.mjs.map +1 -1
- package/dist/admin/utils/formatDuration.js.map +1 -1
- package/dist/admin/utils/formatDuration.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/icons.js +23 -0
- package/dist/admin/utils/icons.js.map +1 -0
- package/dist/admin/utils/icons.mjs +19 -0
- package/dist/admin/utils/icons.mjs.map +1 -0
- package/dist/admin/utils/normalizeAPIError.js.map +1 -1
- package/dist/admin/utils/normalizeAPIError.mjs.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/typeFromMime.js +15 -11
- package/dist/admin/utils/typeFromMime.js.map +1 -1
- package/dist/admin/utils/typeFromMime.mjs +15 -11
- package/dist/admin/utils/typeFromMime.mjs.map +1 -1
- package/dist/server/controllers/admin-folder-file.js +2 -2
- package/dist/server/controllers/admin-folder-file.js.map +1 -1
- package/dist/server/controllers/admin-folder-file.mjs +2 -2
- package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
- package/dist/server/controllers/admin-upload.js +1 -1
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/admin-upload.mjs +1 -1
- package/dist/server/controllers/admin-upload.mjs.map +1 -1
- package/dist/server/controllers/utils/folders.js.map +1 -1
- package/dist/server/controllers/utils/folders.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder.js +1 -1
- package/dist/server/controllers/validation/admin/folder.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder.mjs +1 -1
- package/dist/server/controllers/validation/admin/folder.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/api-upload-folder.js.map +1 -1
- package/dist/server/services/api-upload-folder.mjs.map +1 -1
- package/dist/server/services/folder.js.map +1 -1
- package/dist/server/services/folder.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/metrics.js +14 -1
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs +14 -1
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/services/upload.js +8 -8
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +8 -8
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/services/weekly-metrics.js +3 -6
- package/dist/server/services/weekly-metrics.js.map +1 -1
- package/dist/server/services/weekly-metrics.mjs +3 -6
- package/dist/server/services/weekly-metrics.mjs.map +1 -1
- package/dist/server/src/index.d.ts +1 -1
- package/dist/server/src/services/index.d.ts +1 -1
- package/dist/server/src/services/metrics.d.ts +1 -0
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/services/weekly-metrics.d.ts +0 -1
- package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
- package/dist/server/utils/cron.js.map +1 -1
- package/dist/server/utils/cron.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.js","sources":["../../../../admin/src/components/SelectTree/Option.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { components, OptionProps as ReactSelectOptionProps } from 'react-select';\nimport { styled } from 'styled-components';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\n\nconst ToggleButton = styled(Flex)`\n align-self: flex-end;\n height: 2.2rem;\n width: 2.8rem;\n\n &:hover,\n &:focus {\n background-color: ${({ theme }) => theme.colors.primary200};\n }\n`;\n\ninterface SelectProps {\n maxDisplayDepth: number;\n openValues: string[];\n onOptionToggle: (value: string) => void;\n}\n\ninterface FolderWithDepth extends Folder {\n depth: number;\n value: string;\n}\n\ninterface OptionProps extends ReactSelectOptionProps<FolderWithDepth, false> {\n selectProps: SelectProps & ReactSelectOptionProps<FolderWithDepth, false>['selectProps'];\n}\n\nexport const Option = ({ children, data, selectProps, ...props }: OptionProps) => {\n const { formatMessage } = useIntl();\n const { depth, value, children: options } = data;\n const { maxDisplayDepth, openValues, onOptionToggle } = selectProps;\n const isOpen = openValues.includes(value);\n\n const Icon = isOpen ? ChevronUp : ChevronDown;\n\n return (\n <components.Option data={data} selectProps={selectProps} {...props}>\n <Flex alignItems=\"start\">\n <Typography textColor=\"neutral800\" ellipsis>\n <span style={{ paddingLeft: `${Math.min(depth, maxDisplayDepth) * 14}px` }}>\n {children}\n </span>\n </Typography>\n\n {options && options?.length > 0 && (\n <ToggleButton\n aria-label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n tag=\"button\"\n alignItems=\"center\"\n hasRadius\n justifyContent=\"center\"\n marginLeft=\"auto\"\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n onOptionToggle(value);\n }}\n >\n <Icon width=\"1.4rem\" fill=\"neutral500\" />\n </ToggleButton>\n )}\n </Flex>\n </components.Option>\n );\n};\n"],"names":["ToggleButton","styled","Flex","theme","colors","primary200","Option","children","data","selectProps","props","formatMessage","useIntl","depth","value","options","maxDisplayDepth","openValues","onOptionToggle","isOpen","includes","Icon","ChevronUp","ChevronDown","_jsx","components","_jsxs","alignItems","Typography","textColor","ellipsis","span","style","paddingLeft","Math","min","length","aria-label","id","defaultMessage","tag","hasRadius","justifyContent","marginLeft","onClick","event","preventDefault","stopPropagation","width","fill"],"mappings":";;;;;;;;;;AAUA,MAAMA,YAAAA,GAAeC,uBAAOC,CAAAA,iBAAAA,CAAK;;;;;;;sBAOX,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE/D,CAAC;AAiBM,MAAMC,MAAS,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,KAAoB,EAAA,GAAA;IAC3E,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEP,QAAUQ,EAAAA,OAAO,EAAE,GAAGP,IAAAA;AAC5C,IAAA,MAAM,EAAEQ,eAAe,EAAEC,UAAU,EAAEC,cAAc,EAAE,GAAGT,WAAAA;IACxD,MAAMU,MAAAA,GAASF,UAAWG,CAAAA,QAAQ,CAACN,KAAAA,CAAAA;IAEnC,MAAMO,IAAAA,GAAOF,SAASG,eAAYC,GAAAA,iBAAAA;IAElC,qBACEC,cAAA,CAACC,uBAAWnB,MAAM,EAAA;QAACE,IAAMA,EAAAA,IAAAA;QAAMC,WAAaA,EAAAA,WAAAA;AAAc,QAAA,GAAGC,KAAK;AAChE,QAAA,QAAA,gBAAAgB,eAACxB,CAAAA,iBAAAA,EAAAA;YAAKyB,UAAW,EAAA,OAAA;;8BACfH,cAACI,CAAAA,uBAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,QAAQ,EAAA,IAAA;AACzC,oBAAA,QAAA,gBAAAN,cAACO,CAAAA,MAAAA,EAAAA;wBAAKC,KAAO,EAAA;4BAAEC,WAAa,EAAA,
|
|
1
|
+
{"version":3,"file":"Option.js","sources":["../../../../admin/src/components/SelectTree/Option.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { components, OptionProps as ReactSelectOptionProps } from 'react-select';\nimport { styled } from 'styled-components';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\n\nconst ToggleButton = styled(Flex)`\n align-self: flex-end;\n height: 2.2rem;\n width: 2.8rem;\n\n &:hover,\n &:focus {\n background-color: ${({ theme }) => theme.colors.primary200};\n }\n`;\n\ninterface SelectProps {\n maxDisplayDepth: number;\n openValues: string[];\n onOptionToggle: (value: string) => void;\n}\n\ninterface FolderWithDepth extends Folder {\n depth: number;\n value: string;\n}\n\ninterface OptionProps extends ReactSelectOptionProps<FolderWithDepth, false> {\n selectProps: SelectProps & ReactSelectOptionProps<FolderWithDepth, false>['selectProps'];\n}\n\nexport const Option = ({ children, data, selectProps, ...props }: OptionProps) => {\n const { formatMessage } = useIntl();\n const { depth, value, children: options } = data;\n const { maxDisplayDepth, openValues, onOptionToggle } = selectProps;\n const isOpen = openValues.includes(value);\n\n const Icon = isOpen ? ChevronUp : ChevronDown;\n\n return (\n <components.Option data={data} selectProps={selectProps} {...props}>\n <Flex alignItems=\"start\">\n <Typography textColor=\"neutral800\" ellipsis>\n <span style={{ paddingLeft: `${Math.min(depth, maxDisplayDepth) * 14}px` }}>\n {children}\n </span>\n </Typography>\n\n {options && options?.length > 0 && (\n <ToggleButton\n aria-label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n tag=\"button\"\n alignItems=\"center\"\n hasRadius\n justifyContent=\"center\"\n marginLeft=\"auto\"\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n onOptionToggle(value);\n }}\n >\n <Icon width=\"1.4rem\" fill=\"neutral500\" />\n </ToggleButton>\n )}\n </Flex>\n </components.Option>\n );\n};\n"],"names":["ToggleButton","styled","Flex","theme","colors","primary200","Option","children","data","selectProps","props","formatMessage","useIntl","depth","value","options","maxDisplayDepth","openValues","onOptionToggle","isOpen","includes","Icon","ChevronUp","ChevronDown","_jsx","components","_jsxs","alignItems","Typography","textColor","ellipsis","span","style","paddingLeft","Math","min","length","aria-label","id","defaultMessage","tag","hasRadius","justifyContent","marginLeft","onClick","event","preventDefault","stopPropagation","width","fill"],"mappings":";;;;;;;;;;AAUA,MAAMA,YAAAA,GAAeC,uBAAOC,CAAAA,iBAAAA,CAAK;;;;;;;sBAOX,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE/D,CAAC;AAiBM,MAAMC,MAAS,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,KAAoB,EAAA,GAAA;IAC3E,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEP,QAAUQ,EAAAA,OAAO,EAAE,GAAGP,IAAAA;AAC5C,IAAA,MAAM,EAAEQ,eAAe,EAAEC,UAAU,EAAEC,cAAc,EAAE,GAAGT,WAAAA;IACxD,MAAMU,MAAAA,GAASF,UAAWG,CAAAA,QAAQ,CAACN,KAAAA,CAAAA;IAEnC,MAAMO,IAAAA,GAAOF,SAASG,eAAYC,GAAAA,iBAAAA;IAElC,qBACEC,cAAA,CAACC,uBAAWnB,MAAM,EAAA;QAACE,IAAMA,EAAAA,IAAAA;QAAMC,WAAaA,EAAAA,WAAAA;AAAc,QAAA,GAAGC,KAAK;AAChE,QAAA,QAAA,gBAAAgB,eAACxB,CAAAA,iBAAAA,EAAAA;YAAKyB,UAAW,EAAA,OAAA;;8BACfH,cAACI,CAAAA,uBAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,QAAQ,EAAA,IAAA;AACzC,oBAAA,QAAA,gBAAAN,cAACO,CAAAA,MAAAA,EAAAA;wBAAKC,KAAO,EAAA;4BAAEC,WAAa,EAAA,CAAA,EAAGC,KAAKC,GAAG,CAACtB,OAAOG,eAAmB,CAAA,GAAA,EAAA,CAAG,EAAE;AAAE,yBAAA;AACtET,wBAAAA,QAAAA,EAAAA;;;gBAIJQ,OAAWA,IAAAA,OAAAA,EAASqB,MAAS,GAAA,CAAA,kBAC5BZ,cAACxB,CAAAA,YAAAA,EAAAA;AACCqC,oBAAAA,YAAAA,EAAY1B,aAAc,CAAA;wBACxB2B,EAAI,EAAA,kBAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAC,GAAI,EAAA,QAAA;oBACJb,UAAW,EAAA,QAAA;oBACXc,SAAS,EAAA,IAAA;oBACTC,cAAe,EAAA,QAAA;oBACfC,UAAW,EAAA,MAAA;AACXC,oBAAAA,OAAAA,EAAS,CAACC,KAAAA,GAAAA;AACRA,wBAAAA,KAAAA,CAAMC,cAAc,EAAA;AACpBD,wBAAAA,KAAAA,CAAME,eAAe,EAAA;wBAErB7B,cAAeJ,CAAAA,KAAAA,CAAAA;AACjB,qBAAA;AAEA,oBAAA,QAAA,gBAAAU,cAACH,CAAAA,IAAAA,EAAAA;wBAAK2B,KAAM,EAAA,QAAA;wBAASC,IAAK,EAAA;;;;;;AAMtC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Option.mjs","sources":["../../../../admin/src/components/SelectTree/Option.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { components, OptionProps as ReactSelectOptionProps } from 'react-select';\nimport { styled } from 'styled-components';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\n\nconst ToggleButton = styled(Flex)`\n align-self: flex-end;\n height: 2.2rem;\n width: 2.8rem;\n\n &:hover,\n &:focus {\n background-color: ${({ theme }) => theme.colors.primary200};\n }\n`;\n\ninterface SelectProps {\n maxDisplayDepth: number;\n openValues: string[];\n onOptionToggle: (value: string) => void;\n}\n\ninterface FolderWithDepth extends Folder {\n depth: number;\n value: string;\n}\n\ninterface OptionProps extends ReactSelectOptionProps<FolderWithDepth, false> {\n selectProps: SelectProps & ReactSelectOptionProps<FolderWithDepth, false>['selectProps'];\n}\n\nexport const Option = ({ children, data, selectProps, ...props }: OptionProps) => {\n const { formatMessage } = useIntl();\n const { depth, value, children: options } = data;\n const { maxDisplayDepth, openValues, onOptionToggle } = selectProps;\n const isOpen = openValues.includes(value);\n\n const Icon = isOpen ? ChevronUp : ChevronDown;\n\n return (\n <components.Option data={data} selectProps={selectProps} {...props}>\n <Flex alignItems=\"start\">\n <Typography textColor=\"neutral800\" ellipsis>\n <span style={{ paddingLeft: `${Math.min(depth, maxDisplayDepth) * 14}px` }}>\n {children}\n </span>\n </Typography>\n\n {options && options?.length > 0 && (\n <ToggleButton\n aria-label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n tag=\"button\"\n alignItems=\"center\"\n hasRadius\n justifyContent=\"center\"\n marginLeft=\"auto\"\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n onOptionToggle(value);\n }}\n >\n <Icon width=\"1.4rem\" fill=\"neutral500\" />\n </ToggleButton>\n )}\n </Flex>\n </components.Option>\n );\n};\n"],"names":["ToggleButton","styled","Flex","theme","colors","primary200","Option","children","data","selectProps","props","formatMessage","useIntl","depth","value","options","maxDisplayDepth","openValues","onOptionToggle","isOpen","includes","Icon","ChevronUp","ChevronDown","_jsx","components","_jsxs","alignItems","Typography","textColor","ellipsis","span","style","paddingLeft","Math","min","length","aria-label","id","defaultMessage","tag","hasRadius","justifyContent","marginLeft","onClick","event","preventDefault","stopPropagation","width","fill"],"mappings":";;;;;;;;AAUA,MAAMA,YAAAA,GAAeC,MAAOC,CAAAA,IAAAA,CAAK;;;;;;;sBAOX,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE/D,CAAC;AAiBM,MAAMC,MAAS,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,KAAoB,EAAA,GAAA;IAC3E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEP,QAAUQ,EAAAA,OAAO,EAAE,GAAGP,IAAAA;AAC5C,IAAA,MAAM,EAAEQ,eAAe,EAAEC,UAAU,EAAEC,cAAc,EAAE,GAAGT,WAAAA;IACxD,MAAMU,MAAAA,GAASF,UAAWG,CAAAA,QAAQ,CAACN,KAAAA,CAAAA;IAEnC,MAAMO,IAAAA,GAAOF,SAASG,SAAYC,GAAAA,WAAAA;IAElC,qBACEC,GAAA,CAACC,WAAWnB,MAAM,EAAA;QAACE,IAAMA,EAAAA,IAAAA;QAAMC,WAAaA,EAAAA,WAAAA;AAAc,QAAA,GAAGC,KAAK;AAChE,QAAA,QAAA,gBAAAgB,IAACxB,CAAAA,IAAAA,EAAAA;YAAKyB,UAAW,EAAA,OAAA;;8BACfH,GAACI,CAAAA,UAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,QAAQ,EAAA,IAAA;AACzC,oBAAA,QAAA,gBAAAN,GAACO,CAAAA,MAAAA,EAAAA;wBAAKC,KAAO,EAAA;4BAAEC,WAAa,EAAA,
|
|
1
|
+
{"version":3,"file":"Option.mjs","sources":["../../../../admin/src/components/SelectTree/Option.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { components, OptionProps as ReactSelectOptionProps } from 'react-select';\nimport { styled } from 'styled-components';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\n\nconst ToggleButton = styled(Flex)`\n align-self: flex-end;\n height: 2.2rem;\n width: 2.8rem;\n\n &:hover,\n &:focus {\n background-color: ${({ theme }) => theme.colors.primary200};\n }\n`;\n\ninterface SelectProps {\n maxDisplayDepth: number;\n openValues: string[];\n onOptionToggle: (value: string) => void;\n}\n\ninterface FolderWithDepth extends Folder {\n depth: number;\n value: string;\n}\n\ninterface OptionProps extends ReactSelectOptionProps<FolderWithDepth, false> {\n selectProps: SelectProps & ReactSelectOptionProps<FolderWithDepth, false>['selectProps'];\n}\n\nexport const Option = ({ children, data, selectProps, ...props }: OptionProps) => {\n const { formatMessage } = useIntl();\n const { depth, value, children: options } = data;\n const { maxDisplayDepth, openValues, onOptionToggle } = selectProps;\n const isOpen = openValues.includes(value);\n\n const Icon = isOpen ? ChevronUp : ChevronDown;\n\n return (\n <components.Option data={data} selectProps={selectProps} {...props}>\n <Flex alignItems=\"start\">\n <Typography textColor=\"neutral800\" ellipsis>\n <span style={{ paddingLeft: `${Math.min(depth, maxDisplayDepth) * 14}px` }}>\n {children}\n </span>\n </Typography>\n\n {options && options?.length > 0 && (\n <ToggleButton\n aria-label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n tag=\"button\"\n alignItems=\"center\"\n hasRadius\n justifyContent=\"center\"\n marginLeft=\"auto\"\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n onOptionToggle(value);\n }}\n >\n <Icon width=\"1.4rem\" fill=\"neutral500\" />\n </ToggleButton>\n )}\n </Flex>\n </components.Option>\n );\n};\n"],"names":["ToggleButton","styled","Flex","theme","colors","primary200","Option","children","data","selectProps","props","formatMessage","useIntl","depth","value","options","maxDisplayDepth","openValues","onOptionToggle","isOpen","includes","Icon","ChevronUp","ChevronDown","_jsx","components","_jsxs","alignItems","Typography","textColor","ellipsis","span","style","paddingLeft","Math","min","length","aria-label","id","defaultMessage","tag","hasRadius","justifyContent","marginLeft","onClick","event","preventDefault","stopPropagation","width","fill"],"mappings":";;;;;;;;AAUA,MAAMA,YAAAA,GAAeC,MAAOC,CAAAA,IAAAA,CAAK;;;;;;;sBAOX,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAE/D,CAAC;AAiBM,MAAMC,MAAS,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,KAAoB,EAAA,GAAA;IAC3E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEP,QAAUQ,EAAAA,OAAO,EAAE,GAAGP,IAAAA;AAC5C,IAAA,MAAM,EAAEQ,eAAe,EAAEC,UAAU,EAAEC,cAAc,EAAE,GAAGT,WAAAA;IACxD,MAAMU,MAAAA,GAASF,UAAWG,CAAAA,QAAQ,CAACN,KAAAA,CAAAA;IAEnC,MAAMO,IAAAA,GAAOF,SAASG,SAAYC,GAAAA,WAAAA;IAElC,qBACEC,GAAA,CAACC,WAAWnB,MAAM,EAAA;QAACE,IAAMA,EAAAA,IAAAA;QAAMC,WAAaA,EAAAA,WAAAA;AAAc,QAAA,GAAGC,KAAK;AAChE,QAAA,QAAA,gBAAAgB,IAACxB,CAAAA,IAAAA,EAAAA;YAAKyB,UAAW,EAAA,OAAA;;8BACfH,GAACI,CAAAA,UAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,QAAQ,EAAA,IAAA;AACzC,oBAAA,QAAA,gBAAAN,GAACO,CAAAA,MAAAA,EAAAA;wBAAKC,KAAO,EAAA;4BAAEC,WAAa,EAAA,CAAA,EAAGC,KAAKC,GAAG,CAACtB,OAAOG,eAAmB,CAAA,GAAA,EAAA,CAAG,EAAE;AAAE,yBAAA;AACtET,wBAAAA,QAAAA,EAAAA;;;gBAIJQ,OAAWA,IAAAA,OAAAA,EAASqB,MAAS,GAAA,CAAA,kBAC5BZ,GAACxB,CAAAA,YAAAA,EAAAA;AACCqC,oBAAAA,YAAAA,EAAY1B,aAAc,CAAA;wBACxB2B,EAAI,EAAA,kBAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAC,GAAI,EAAA,QAAA;oBACJb,UAAW,EAAA,QAAA;oBACXc,SAAS,EAAA,IAAA;oBACTC,cAAe,EAAA,QAAA;oBACfC,UAAW,EAAA,MAAA;AACXC,oBAAAA,OAAAA,EAAS,CAACC,KAAAA,GAAAA;AACRA,wBAAAA,KAAAA,CAAMC,cAAc,EAAA;AACpBD,wBAAAA,KAAAA,CAAME,eAAe,EAAA;wBAErB7B,cAAeJ,CAAAA,KAAAA,CAAAA;AACjB,qBAAA;AAEA,oBAAA,QAAA,gBAAAU,GAACH,CAAAA,IAAAA,EAAAA;wBAAK2B,KAAM,EAAA,QAAA;wBAASC,IAAK,EAAA;;;;;;AAMtC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTree.js","sources":["../../../../admin/src/components/SelectTree/SelectTree.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { Cross, CaretDown } from '@strapi/icons';\nimport ReactSelect, {\n components,\n GroupBase,\n StylesConfig,\n ClearIndicatorProps,\n} from 'react-select';\nimport { styled, useTheme, DefaultTheme } from 'styled-components';\n\nimport { Option } from './Option';\nimport { flattenTree, FlattenedNode } from './utils/flattenTree';\nimport { getOpenValues } from './utils/getOpenValues';\nimport { getValuesToClose } from './utils/getValuesToClose';\n\nconst hasParent = (option: FlattenedNode<string | number | null>) => !option.parent;\n\nexport type OptionSelectTree = {\n value: string | number | null;\n label?: string;\n children?: OptionSelectTree[];\n};\n\nexport interface SelectTreeProps<\n Option = unknown,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IsMulti extends boolean = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n maxDisplayDepth?: number;\n defaultValue?: {\n value?: string | number | null;\n };\n options: OptionSelectTree[];\n onChange?: (value: Record<string, string | number>) => void;\n name?: string;\n menuPortalTarget?: HTMLElement | null;\n inputId?: string;\n error?: string;\n ariaErrorMessage?: string;\n isDisabled?: boolean;\n disabled?: boolean;\n}\n\nexport const SelectTree = ({\n options: defaultOptions,\n maxDisplayDepth = 5,\n defaultValue,\n ...props\n}: SelectTreeProps) => {\n const flatDefaultOptions = React.useMemo(() => flattenTree(defaultOptions), [defaultOptions]);\n const optionsFiltered = React.useMemo(\n () => flatDefaultOptions.filter(hasParent),\n [flatDefaultOptions]\n );\n const [options, setOptions] = React.useState(optionsFiltered);\n const [openValues, setOpenValues] = React.useState(\n getOpenValues(flatDefaultOptions, defaultValue)\n );\n\n React.useEffect(() => {\n if (openValues.length === 0) {\n setOptions(flatDefaultOptions.filter((option) => option.parent === undefined));\n } else {\n const allOpenValues = openValues.reduce<(string | number | null)[]>((acc, value) => {\n const options = flatDefaultOptions.filter(\n (option) => option.value === value || option.parent === value\n );\n\n options.forEach((option) => {\n const values = getOpenValues(flatDefaultOptions, option);\n acc = [...acc, ...values];\n });\n\n return acc;\n }, []);\n\n const nextOptions = flatDefaultOptions.filter((option) =>\n allOpenValues.includes(option.value)\n );\n\n setOptions(nextOptions);\n }\n }, [openValues, flatDefaultOptions, optionsFiltered]);\n\n const handleToggle = (value: string | number | null) => {\n if (openValues.includes(value)) {\n const valuesToClose = getValuesToClose(flatDefaultOptions, value);\n setOpenValues((prev) => prev.filter((prevData) => !valuesToClose.includes(prevData)));\n } else {\n setOpenValues((prev) => [...prev, value]);\n }\n };\n\n return (\n <Select\n components={{ Option }}\n options={options}\n defaultValue={defaultValue}\n isSearchable={false}\n /* -- custom props, used by the Option component */\n maxDisplayDepth={maxDisplayDepth}\n openValues={openValues}\n onOptionToggle={handleToggle}\n /* -- / custom props */\n {...props}\n />\n );\n};\n\ntype SelectOption = { value?: string | number | null; label?: string };\n\ninterface SelectProps<\n Option = SelectOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n components?: object;\n styles?: StylesConfig<Option, IsMulti, Group>;\n error?: string;\n ariaErrorMessage?: string;\n options: OptionSelectTree[];\n defaultValue?: {\n value?: string | number | null;\n };\n isSearchable?: boolean;\n maxDisplayDepth?: number;\n openValues?: (string | number | null)[];\n onOptionToggle?: (value: string | number | null) => void;\n}\n\nconst Select = ({\n components = {},\n styles = {},\n error,\n ariaErrorMessage,\n ...props\n}: SelectProps) => {\n const theme = useTheme();\n const customStyles = getSelectStyles(theme, error);\n\n return (\n <ReactSelect\n menuPosition=\"fixed\"\n components={{\n ...components,\n ClearIndicator,\n DropdownIndicator,\n IndicatorSeparator: () => null,\n LoadingIndicator: () => null,\n }}\n aria-errormessage={error && ariaErrorMessage}\n aria-invalid={!!error}\n styles={\n { ...customStyles, ...styles } as StylesConfig<SelectOption, false, GroupBase<SelectOption>>\n }\n {...props}\n />\n );\n};\n\nconst IconBox = styled(Box)`\n background: transparent;\n border: none;\n position: relative;\n z-index: 1;\n\n svg {\n height: 1.1rem;\n width: 1.1rem;\n }\n\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst ClearIndicator = (\n props: ClearIndicatorProps<SelectOption, false, GroupBase<SelectOption>>\n) => {\n const Component = components.ClearIndicator;\n\n return (\n <Component {...props}>\n <IconBox tag=\"button\" type=\"button\">\n <Cross />\n </IconBox>\n </Component>\n );\n};\n\nconst CarretBox = styled(IconBox)`\n display: flex;\n background: none;\n border: none;\n\n svg {\n width: 0.9rem;\n }\n`;\n\nconst DropdownIndicator = ({ innerProps }: { innerProps: object }) => {\n return (\n <CarretBox paddingRight={3} {...innerProps}>\n <CaretDown />\n </CarretBox>\n );\n};\n\nconst getSelectStyles = (\n theme: DefaultTheme,\n error?: string\n): StylesConfig<SelectOption, false, GroupBase<SelectOption>> => {\n return {\n clearIndicator: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n container: (base: object) => ({\n ...base,\n background: theme.colors.neutral0,\n lineHeight: 'normal',\n }),\n control(base: object, state: { isFocused: boolean; isDisabled: boolean }) {\n let borderColor = theme.colors.neutral200;\n let boxShadowColor: string | undefined = undefined;\n let backgroundColor: string | undefined = undefined;\n\n if (state.isFocused) {\n borderColor = theme.colors.primary600;\n boxShadowColor = theme.colors.primary600;\n } else if (error) {\n borderColor = theme.colors.danger600;\n }\n\n if (state.isDisabled) {\n backgroundColor = `${theme.colors.neutral150} !important`;\n }\n\n return {\n ...base,\n fontSize: theme.fontSizes[2],\n height: 40,\n border: `1px solid ${borderColor} !important`,\n outline: 0,\n backgroundColor,\n borderRadius: theme.borderRadius,\n boxShadow: boxShadowColor ? `${boxShadowColor} 0px 0px 0px 2px` : '',\n };\n },\n indicatorsContainer: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n input: (base: object) => ({\n ...base,\n margin: 0,\n padding: 0,\n color: theme.colors.neutral800,\n gridTemplateColumns: '0 100%',\n }),\n menuPortal: (base: object) => ({\n ...base,\n zIndex: theme.zIndices.dialog,\n pointerEvents: 'auto',\n }),\n menu(base: object) {\n return {\n ...base,\n width: '100%',\n marginTop: theme.spaces[1],\n backgroundColor: theme.colors.neutral0,\n color: theme.colors.neutral800,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.neutral200}`,\n boxShadow: theme.shadows.tableShadow,\n fontSize: theme.fontSizes[2],\n zIndex: 2,\n };\n },\n menuList: (base: object) => ({\n ...base,\n paddingLeft: theme.spaces[1],\n paddingTop: theme.spaces[1],\n paddingRight: theme.spaces[1],\n paddingBottom: theme.spaces[1],\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n option(base: any, state: { isFocused: boolean; isSelected: boolean }) {\n let backgroundColor = base?.backgroundColor as string;\n\n if (state.isFocused || state.isSelected) {\n backgroundColor = theme.colors.primary100;\n }\n\n return {\n ...base,\n color: theme.colors.neutral800,\n lineHeight: theme.spaces[5],\n backgroundColor,\n borderRadius: theme.borderRadius,\n '&:active': {\n backgroundColor: theme.colors.primary100,\n },\n };\n },\n placeholder: (base: object) => ({\n ...base,\n color: theme.colors.neutral600,\n marginLeft: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: '80%',\n }),\n singleValue(base: object, state: { isDisabled: boolean }) {\n let color = theme.colors.neutral800;\n\n if (state.isDisabled) {\n color = theme.colors.neutral600;\n }\n\n return { ...base, marginLeft: 0, color };\n },\n valueContainer: (base: object) => ({\n ...base,\n cursor: 'pointer',\n padding: 0,\n paddingLeft: theme.spaces[4],\n marginLeft: 0,\n marginRight: 0,\n }),\n };\n};\n"],"names":["hasParent","option","parent","SelectTree","options","defaultOptions","maxDisplayDepth","defaultValue","props","flatDefaultOptions","React","useMemo","flattenTree","optionsFiltered","filter","setOptions","useState","openValues","setOpenValues","getOpenValues","useEffect","length","undefined","allOpenValues","reduce","acc","value","forEach","values","nextOptions","includes","handleToggle","valuesToClose","getValuesToClose","prev","prevData","_jsx","Select","components","Option","isSearchable","onOptionToggle","styles","error","ariaErrorMessage","theme","useTheme","customStyles","getSelectStyles","ReactSelect","menuPosition","ClearIndicator","DropdownIndicator","IndicatorSeparator","LoadingIndicator","aria-errormessage","aria-invalid","IconBox","styled","Box","colors","neutral600","Component","tag","type","Cross","CarretBox","innerProps","paddingRight","CaretDown","clearIndicator","base","padding","spaces","container","background","neutral0","lineHeight","control","state","borderColor","neutral200","boxShadowColor","backgroundColor","isFocused","primary600","danger600","isDisabled","neutral150","fontSize","fontSizes","height","border","outline","borderRadius","boxShadow","indicatorsContainer","input","margin","color","neutral800","gridTemplateColumns","menuPortal","zIndex","zIndices","dialog","pointerEvents","menu","width","marginTop","shadows","tableShadow","menuList","paddingLeft","paddingTop","paddingBottom","isSelected","primary100","placeholder","marginLeft","overflow","textOverflow","whiteSpace","maxWidth","singleValue","valueContainer","cursor","marginRight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectTree.js","sources":["../../../../admin/src/components/SelectTree/SelectTree.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { Cross, CaretDown } from '@strapi/icons';\nimport ReactSelect, {\n components,\n GroupBase,\n StylesConfig,\n ClearIndicatorProps,\n} from 'react-select';\nimport { styled, useTheme, DefaultTheme } from 'styled-components';\n\nimport { Option } from './Option';\nimport { flattenTree, FlattenedNode } from './utils/flattenTree';\nimport { getOpenValues } from './utils/getOpenValues';\nimport { getValuesToClose } from './utils/getValuesToClose';\n\nconst hasParent = (option: FlattenedNode<string | number | null>) => !option.parent;\n\nexport type OptionSelectTree = {\n value: string | number | null;\n label?: string;\n children?: OptionSelectTree[];\n};\n\nexport interface SelectTreeProps<\n Option = unknown,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IsMulti extends boolean = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n maxDisplayDepth?: number;\n defaultValue?: {\n value?: string | number | null;\n };\n options: OptionSelectTree[];\n onChange?: (value: Record<string, string | number>) => void;\n name?: string;\n menuPortalTarget?: HTMLElement | null;\n inputId?: string;\n error?: string;\n ariaErrorMessage?: string;\n isDisabled?: boolean;\n disabled?: boolean;\n}\n\nexport const SelectTree = ({\n options: defaultOptions,\n maxDisplayDepth = 5,\n defaultValue,\n ...props\n}: SelectTreeProps) => {\n const flatDefaultOptions = React.useMemo(() => flattenTree(defaultOptions), [defaultOptions]);\n const optionsFiltered = React.useMemo(\n () => flatDefaultOptions.filter(hasParent),\n [flatDefaultOptions]\n );\n const [options, setOptions] = React.useState(optionsFiltered);\n const [openValues, setOpenValues] = React.useState(\n getOpenValues(flatDefaultOptions, defaultValue)\n );\n\n React.useEffect(() => {\n if (openValues.length === 0) {\n setOptions(flatDefaultOptions.filter((option) => option.parent === undefined));\n } else {\n const allOpenValues = openValues.reduce<(string | number | null)[]>((acc, value) => {\n const options = flatDefaultOptions.filter(\n (option) => option.value === value || option.parent === value\n );\n\n options.forEach((option) => {\n const values = getOpenValues(flatDefaultOptions, option);\n acc = [...acc, ...values];\n });\n\n return acc;\n }, []);\n\n const nextOptions = flatDefaultOptions.filter((option) =>\n allOpenValues.includes(option.value)\n );\n\n setOptions(nextOptions);\n }\n }, [openValues, flatDefaultOptions, optionsFiltered]);\n\n const handleToggle = (value: string | number | null) => {\n if (openValues.includes(value)) {\n const valuesToClose = getValuesToClose(flatDefaultOptions, value);\n setOpenValues((prev) => prev.filter((prevData) => !valuesToClose.includes(prevData)));\n } else {\n setOpenValues((prev) => [...prev, value]);\n }\n };\n\n return (\n <Select\n components={{ Option }}\n options={options}\n defaultValue={defaultValue}\n isSearchable={false}\n /* -- custom props, used by the Option component */\n maxDisplayDepth={maxDisplayDepth}\n openValues={openValues}\n onOptionToggle={handleToggle}\n /* -- / custom props */\n {...props}\n />\n );\n};\n\ntype SelectOption = { value?: string | number | null; label?: string };\n\ninterface SelectProps<\n Option = SelectOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n components?: object;\n styles?: StylesConfig<Option, IsMulti, Group>;\n error?: string;\n ariaErrorMessage?: string;\n options: OptionSelectTree[];\n defaultValue?: {\n value?: string | number | null;\n };\n isSearchable?: boolean;\n maxDisplayDepth?: number;\n openValues?: (string | number | null)[];\n onOptionToggle?: (value: string | number | null) => void;\n}\n\nconst Select = ({\n components = {},\n styles = {},\n error,\n ariaErrorMessage,\n ...props\n}: SelectProps) => {\n const theme = useTheme();\n const customStyles = getSelectStyles(theme, error);\n\n return (\n <ReactSelect\n menuPosition=\"fixed\"\n components={{\n ...components,\n ClearIndicator,\n DropdownIndicator,\n IndicatorSeparator: () => null,\n LoadingIndicator: () => null,\n }}\n aria-errormessage={error && ariaErrorMessage}\n aria-invalid={!!error}\n styles={\n { ...customStyles, ...styles } as StylesConfig<SelectOption, false, GroupBase<SelectOption>>\n }\n {...props}\n />\n );\n};\n\nconst IconBox = styled(Box)`\n background: transparent;\n border: none;\n position: relative;\n z-index: 1;\n\n svg {\n height: 1.1rem;\n width: 1.1rem;\n }\n\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst ClearIndicator = (\n props: ClearIndicatorProps<SelectOption, false, GroupBase<SelectOption>>\n) => {\n const Component = components.ClearIndicator;\n\n return (\n <Component {...props}>\n <IconBox tag=\"button\" type=\"button\">\n <Cross />\n </IconBox>\n </Component>\n );\n};\n\nconst CarretBox = styled(IconBox)`\n display: flex;\n background: none;\n border: none;\n\n svg {\n width: 0.9rem;\n }\n`;\n\nconst DropdownIndicator = ({ innerProps }: { innerProps: object }) => {\n return (\n <CarretBox paddingRight={3} {...innerProps}>\n <CaretDown />\n </CarretBox>\n );\n};\n\nconst getSelectStyles = (\n theme: DefaultTheme,\n error?: string\n): StylesConfig<SelectOption, false, GroupBase<SelectOption>> => {\n return {\n clearIndicator: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n container: (base: object) => ({\n ...base,\n background: theme.colors.neutral0,\n lineHeight: 'normal',\n }),\n control(base: object, state: { isFocused: boolean; isDisabled: boolean }) {\n let borderColor = theme.colors.neutral200;\n let boxShadowColor: string | undefined = undefined;\n let backgroundColor: string | undefined = undefined;\n\n if (state.isFocused) {\n borderColor = theme.colors.primary600;\n boxShadowColor = theme.colors.primary600;\n } else if (error) {\n borderColor = theme.colors.danger600;\n }\n\n if (state.isDisabled) {\n backgroundColor = `${theme.colors.neutral150} !important`;\n }\n\n return {\n ...base,\n fontSize: theme.fontSizes[2],\n height: 40,\n border: `1px solid ${borderColor} !important`,\n outline: 0,\n backgroundColor,\n borderRadius: theme.borderRadius,\n boxShadow: boxShadowColor ? `${boxShadowColor} 0px 0px 0px 2px` : '',\n };\n },\n indicatorsContainer: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n input: (base: object) => ({\n ...base,\n margin: 0,\n padding: 0,\n color: theme.colors.neutral800,\n gridTemplateColumns: '0 100%',\n }),\n menuPortal: (base: object) => ({\n ...base,\n zIndex: theme.zIndices.dialog,\n pointerEvents: 'auto',\n }),\n menu(base: object) {\n return {\n ...base,\n width: '100%',\n marginTop: theme.spaces[1],\n backgroundColor: theme.colors.neutral0,\n color: theme.colors.neutral800,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.neutral200}`,\n boxShadow: theme.shadows.tableShadow,\n fontSize: theme.fontSizes[2],\n zIndex: 2,\n };\n },\n menuList: (base: object) => ({\n ...base,\n paddingLeft: theme.spaces[1],\n paddingTop: theme.spaces[1],\n paddingRight: theme.spaces[1],\n paddingBottom: theme.spaces[1],\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n option(base: any, state: { isFocused: boolean; isSelected: boolean }) {\n let backgroundColor = base?.backgroundColor as string;\n\n if (state.isFocused || state.isSelected) {\n backgroundColor = theme.colors.primary100;\n }\n\n return {\n ...base,\n color: theme.colors.neutral800,\n lineHeight: theme.spaces[5],\n backgroundColor,\n borderRadius: theme.borderRadius,\n '&:active': {\n backgroundColor: theme.colors.primary100,\n },\n };\n },\n placeholder: (base: object) => ({\n ...base,\n color: theme.colors.neutral600,\n marginLeft: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: '80%',\n }),\n singleValue(base: object, state: { isDisabled: boolean }) {\n let color = theme.colors.neutral800;\n\n if (state.isDisabled) {\n color = theme.colors.neutral600;\n }\n\n return { ...base, marginLeft: 0, color };\n },\n valueContainer: (base: object) => ({\n ...base,\n cursor: 'pointer',\n padding: 0,\n paddingLeft: theme.spaces[4],\n marginLeft: 0,\n marginRight: 0,\n }),\n };\n};\n"],"names":["hasParent","option","parent","SelectTree","options","defaultOptions","maxDisplayDepth","defaultValue","props","flatDefaultOptions","React","useMemo","flattenTree","optionsFiltered","filter","setOptions","useState","openValues","setOpenValues","getOpenValues","useEffect","length","undefined","allOpenValues","reduce","acc","value","forEach","values","nextOptions","includes","handleToggle","valuesToClose","getValuesToClose","prev","prevData","_jsx","Select","components","Option","isSearchable","onOptionToggle","styles","error","ariaErrorMessage","theme","useTheme","customStyles","getSelectStyles","ReactSelect","menuPosition","ClearIndicator","DropdownIndicator","IndicatorSeparator","LoadingIndicator","aria-errormessage","aria-invalid","IconBox","styled","Box","colors","neutral600","Component","tag","type","Cross","CarretBox","innerProps","paddingRight","CaretDown","clearIndicator","base","padding","spaces","container","background","neutral0","lineHeight","control","state","borderColor","neutral200","boxShadowColor","backgroundColor","isFocused","primary600","danger600","isDisabled","neutral150","fontSize","fontSizes","height","border","outline","borderRadius","boxShadow","indicatorsContainer","input","margin","color","neutral800","gridTemplateColumns","menuPortal","zIndex","zIndices","dialog","pointerEvents","menu","width","marginTop","shadows","tableShadow","menuList","paddingLeft","paddingTop","paddingBottom","isSelected","primary100","placeholder","marginLeft","overflow","textOverflow","whiteSpace","maxWidth","singleValue","valueContainer","cursor","marginRight"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectTree.mjs","sources":["../../../../admin/src/components/SelectTree/SelectTree.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { Cross, CaretDown } from '@strapi/icons';\nimport ReactSelect, {\n components,\n GroupBase,\n StylesConfig,\n ClearIndicatorProps,\n} from 'react-select';\nimport { styled, useTheme, DefaultTheme } from 'styled-components';\n\nimport { Option } from './Option';\nimport { flattenTree, FlattenedNode } from './utils/flattenTree';\nimport { getOpenValues } from './utils/getOpenValues';\nimport { getValuesToClose } from './utils/getValuesToClose';\n\nconst hasParent = (option: FlattenedNode<string | number | null>) => !option.parent;\n\nexport type OptionSelectTree = {\n value: string | number | null;\n label?: string;\n children?: OptionSelectTree[];\n};\n\nexport interface SelectTreeProps<\n Option = unknown,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IsMulti extends boolean = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n maxDisplayDepth?: number;\n defaultValue?: {\n value?: string | number | null;\n };\n options: OptionSelectTree[];\n onChange?: (value: Record<string, string | number>) => void;\n name?: string;\n menuPortalTarget?: HTMLElement | null;\n inputId?: string;\n error?: string;\n ariaErrorMessage?: string;\n isDisabled?: boolean;\n disabled?: boolean;\n}\n\nexport const SelectTree = ({\n options: defaultOptions,\n maxDisplayDepth = 5,\n defaultValue,\n ...props\n}: SelectTreeProps) => {\n const flatDefaultOptions = React.useMemo(() => flattenTree(defaultOptions), [defaultOptions]);\n const optionsFiltered = React.useMemo(\n () => flatDefaultOptions.filter(hasParent),\n [flatDefaultOptions]\n );\n const [options, setOptions] = React.useState(optionsFiltered);\n const [openValues, setOpenValues] = React.useState(\n getOpenValues(flatDefaultOptions, defaultValue)\n );\n\n React.useEffect(() => {\n if (openValues.length === 0) {\n setOptions(flatDefaultOptions.filter((option) => option.parent === undefined));\n } else {\n const allOpenValues = openValues.reduce<(string | number | null)[]>((acc, value) => {\n const options = flatDefaultOptions.filter(\n (option) => option.value === value || option.parent === value\n );\n\n options.forEach((option) => {\n const values = getOpenValues(flatDefaultOptions, option);\n acc = [...acc, ...values];\n });\n\n return acc;\n }, []);\n\n const nextOptions = flatDefaultOptions.filter((option) =>\n allOpenValues.includes(option.value)\n );\n\n setOptions(nextOptions);\n }\n }, [openValues, flatDefaultOptions, optionsFiltered]);\n\n const handleToggle = (value: string | number | null) => {\n if (openValues.includes(value)) {\n const valuesToClose = getValuesToClose(flatDefaultOptions, value);\n setOpenValues((prev) => prev.filter((prevData) => !valuesToClose.includes(prevData)));\n } else {\n setOpenValues((prev) => [...prev, value]);\n }\n };\n\n return (\n <Select\n components={{ Option }}\n options={options}\n defaultValue={defaultValue}\n isSearchable={false}\n /* -- custom props, used by the Option component */\n maxDisplayDepth={maxDisplayDepth}\n openValues={openValues}\n onOptionToggle={handleToggle}\n /* -- / custom props */\n {...props}\n />\n );\n};\n\ntype SelectOption = { value?: string | number | null; label?: string };\n\ninterface SelectProps<\n Option = SelectOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n components?: object;\n styles?: StylesConfig<Option, IsMulti, Group>;\n error?: string;\n ariaErrorMessage?: string;\n options: OptionSelectTree[];\n defaultValue?: {\n value?: string | number | null;\n };\n isSearchable?: boolean;\n maxDisplayDepth?: number;\n openValues?: (string | number | null)[];\n onOptionToggle?: (value: string | number | null) => void;\n}\n\nconst Select = ({\n components = {},\n styles = {},\n error,\n ariaErrorMessage,\n ...props\n}: SelectProps) => {\n const theme = useTheme();\n const customStyles = getSelectStyles(theme, error);\n\n return (\n <ReactSelect\n menuPosition=\"fixed\"\n components={{\n ...components,\n ClearIndicator,\n DropdownIndicator,\n IndicatorSeparator: () => null,\n LoadingIndicator: () => null,\n }}\n aria-errormessage={error && ariaErrorMessage}\n aria-invalid={!!error}\n styles={\n { ...customStyles, ...styles } as StylesConfig<SelectOption, false, GroupBase<SelectOption>>\n }\n {...props}\n />\n );\n};\n\nconst IconBox = styled(Box)`\n background: transparent;\n border: none;\n position: relative;\n z-index: 1;\n\n svg {\n height: 1.1rem;\n width: 1.1rem;\n }\n\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst ClearIndicator = (\n props: ClearIndicatorProps<SelectOption, false, GroupBase<SelectOption>>\n) => {\n const Component = components.ClearIndicator;\n\n return (\n <Component {...props}>\n <IconBox tag=\"button\" type=\"button\">\n <Cross />\n </IconBox>\n </Component>\n );\n};\n\nconst CarretBox = styled(IconBox)`\n display: flex;\n background: none;\n border: none;\n\n svg {\n width: 0.9rem;\n }\n`;\n\nconst DropdownIndicator = ({ innerProps }: { innerProps: object }) => {\n return (\n <CarretBox paddingRight={3} {...innerProps}>\n <CaretDown />\n </CarretBox>\n );\n};\n\nconst getSelectStyles = (\n theme: DefaultTheme,\n error?: string\n): StylesConfig<SelectOption, false, GroupBase<SelectOption>> => {\n return {\n clearIndicator: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n container: (base: object) => ({\n ...base,\n background: theme.colors.neutral0,\n lineHeight: 'normal',\n }),\n control(base: object, state: { isFocused: boolean; isDisabled: boolean }) {\n let borderColor = theme.colors.neutral200;\n let boxShadowColor: string | undefined = undefined;\n let backgroundColor: string | undefined = undefined;\n\n if (state.isFocused) {\n borderColor = theme.colors.primary600;\n boxShadowColor = theme.colors.primary600;\n } else if (error) {\n borderColor = theme.colors.danger600;\n }\n\n if (state.isDisabled) {\n backgroundColor = `${theme.colors.neutral150} !important`;\n }\n\n return {\n ...base,\n fontSize: theme.fontSizes[2],\n height: 40,\n border: `1px solid ${borderColor} !important`,\n outline: 0,\n backgroundColor,\n borderRadius: theme.borderRadius,\n boxShadow: boxShadowColor ? `${boxShadowColor} 0px 0px 0px 2px` : '',\n };\n },\n indicatorsContainer: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n input: (base: object) => ({\n ...base,\n margin: 0,\n padding: 0,\n color: theme.colors.neutral800,\n gridTemplateColumns: '0 100%',\n }),\n menuPortal: (base: object) => ({\n ...base,\n zIndex: theme.zIndices.dialog,\n pointerEvents: 'auto',\n }),\n menu(base: object) {\n return {\n ...base,\n width: '100%',\n marginTop: theme.spaces[1],\n backgroundColor: theme.colors.neutral0,\n color: theme.colors.neutral800,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.neutral200}`,\n boxShadow: theme.shadows.tableShadow,\n fontSize: theme.fontSizes[2],\n zIndex: 2,\n };\n },\n menuList: (base: object) => ({\n ...base,\n paddingLeft: theme.spaces[1],\n paddingTop: theme.spaces[1],\n paddingRight: theme.spaces[1],\n paddingBottom: theme.spaces[1],\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n option(base: any, state: { isFocused: boolean; isSelected: boolean }) {\n let backgroundColor = base?.backgroundColor as string;\n\n if (state.isFocused || state.isSelected) {\n backgroundColor = theme.colors.primary100;\n }\n\n return {\n ...base,\n color: theme.colors.neutral800,\n lineHeight: theme.spaces[5],\n backgroundColor,\n borderRadius: theme.borderRadius,\n '&:active': {\n backgroundColor: theme.colors.primary100,\n },\n };\n },\n placeholder: (base: object) => ({\n ...base,\n color: theme.colors.neutral600,\n marginLeft: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: '80%',\n }),\n singleValue(base: object, state: { isDisabled: boolean }) {\n let color = theme.colors.neutral800;\n\n if (state.isDisabled) {\n color = theme.colors.neutral600;\n }\n\n return { ...base, marginLeft: 0, color };\n },\n valueContainer: (base: object) => ({\n ...base,\n cursor: 'pointer',\n padding: 0,\n paddingLeft: theme.spaces[4],\n marginLeft: 0,\n marginRight: 0,\n }),\n };\n};\n"],"names":["hasParent","option","parent","SelectTree","options","defaultOptions","maxDisplayDepth","defaultValue","props","flatDefaultOptions","React","useMemo","flattenTree","optionsFiltered","filter","setOptions","useState","openValues","setOpenValues","getOpenValues","useEffect","length","undefined","allOpenValues","reduce","acc","value","forEach","values","nextOptions","includes","handleToggle","valuesToClose","getValuesToClose","prev","prevData","_jsx","Select","components","Option","isSearchable","onOptionToggle","styles","error","ariaErrorMessage","theme","useTheme","customStyles","getSelectStyles","ReactSelect","menuPosition","ClearIndicator","DropdownIndicator","IndicatorSeparator","LoadingIndicator","aria-errormessage","aria-invalid","IconBox","styled","Box","colors","neutral600","Component","tag","type","Cross","CarretBox","innerProps","paddingRight","CaretDown","clearIndicator","base","padding","spaces","container","background","neutral0","lineHeight","control","state","borderColor","neutral200","boxShadowColor","backgroundColor","isFocused","primary600","danger600","isDisabled","neutral150","fontSize","fontSizes","height","border","outline","borderRadius","boxShadow","indicatorsContainer","input","margin","color","neutral800","gridTemplateColumns","menuPortal","zIndex","zIndices","dialog","pointerEvents","menu","width","marginTop","shadows","tableShadow","menuList","paddingLeft","paddingTop","paddingBottom","isSelected","primary100","placeholder","marginLeft","overflow","textOverflow","whiteSpace","maxWidth","singleValue","valueContainer","cursor","marginRight"],"mappings":";;;;;;;;;;;AAiBA,MAAMA,SAAY,GAAA,CAACC,MAAkD,GAAA,CAACA,OAAOC,MAAM;AA8BtEC,MAAAA,UAAAA,GAAa,CAAC,EACzBC,OAASC,EAAAA,cAAc,EACvBC,eAAAA,GAAkB,CAAC,EACnBC,YAAY,EACZ,GAAGC,KACa,EAAA,GAAA;AAChB,IAAA,MAAMC,qBAAqBC,KAAMC,CAAAA,OAAO,CAAC,IAAMC,YAAYP,cAAiB,CAAA,EAAA;AAACA,QAAAA;AAAe,KAAA,CAAA;IAC5F,MAAMQ,eAAAA,GAAkBH,MAAMC,OAAO,CACnC,IAAMF,kBAAmBK,CAAAA,MAAM,CAACd,SAChC,CAAA,EAAA;AAACS,QAAAA;AAAmB,KAAA,CAAA;AAEtB,IAAA,MAAM,CAACL,OAASW,EAAAA,UAAAA,CAAW,GAAGL,KAAAA,CAAMM,QAAQ,CAACH,eAAAA,CAAAA;IAC7C,MAAM,CAACI,YAAYC,aAAc,CAAA,GAAGR,MAAMM,QAAQ,CAChDG,cAAcV,kBAAoBF,EAAAA,YAAAA,CAAAA,CAAAA;AAGpCG,IAAAA,KAAAA,CAAMU,SAAS,CAAC,IAAA;QACd,IAAIH,UAAAA,CAAWI,MAAM,KAAK,CAAG,EAAA;AAC3BN,YAAAA,UAAAA,CAAWN,mBAAmBK,MAAM,CAAC,CAACb,MAAWA,GAAAA,MAAAA,CAAOC,MAAM,KAAKoB,SAAAA,CAAAA,CAAAA;SAC9D,MAAA;AACL,YAAA,MAAMC,aAAgBN,GAAAA,UAAAA,CAAWO,MAAM,CAA6B,CAACC,GAAKC,EAAAA,KAAAA,GAAAA;AACxE,gBAAA,MAAMtB,OAAUK,GAAAA,kBAAAA,CAAmBK,MAAM,CACvC,CAACb,MAAAA,GAAWA,MAAOyB,CAAAA,KAAK,KAAKA,KAAAA,IAASzB,MAAOC,CAAAA,MAAM,KAAKwB,KAAAA,CAAAA;gBAG1DtB,OAAQuB,CAAAA,OAAO,CAAC,CAAC1B,MAAAA,GAAAA;oBACf,MAAM2B,MAAAA,GAAST,cAAcV,kBAAoBR,EAAAA,MAAAA,CAAAA;oBACjDwB,GAAM,GAAA;AAAIA,wBAAAA,GAAAA,GAAAA;AAAQG,wBAAAA,GAAAA;AAAO,qBAAA;AAC3B,iBAAA,CAAA;gBAEA,OAAOH,GAAAA;AACT,aAAA,EAAG,EAAE,CAAA;YAEL,MAAMI,WAAAA,GAAcpB,kBAAmBK,CAAAA,MAAM,CAAC,CAACb,SAC7CsB,aAAcO,CAAAA,QAAQ,CAAC7B,MAAAA,CAAOyB,KAAK,CAAA,CAAA;YAGrCX,UAAWc,CAAAA,WAAAA,CAAAA;AACb;KACC,EAAA;AAACZ,QAAAA,UAAAA;AAAYR,QAAAA,kBAAAA;AAAoBI,QAAAA;AAAgB,KAAA,CAAA;AAEpD,IAAA,MAAMkB,eAAe,CAACL,KAAAA,GAAAA;QACpB,IAAIT,UAAAA,CAAWa,QAAQ,CAACJ,KAAQ,CAAA,EAAA;YAC9B,MAAMM,aAAAA,GAAgBC,iBAAiBxB,kBAAoBiB,EAAAA,KAAAA,CAAAA;YAC3DR,aAAc,CAAA,CAACgB,IAASA,GAAAA,IAAAA,CAAKpB,MAAM,CAAC,CAACqB,QAAa,GAAA,CAACH,aAAcF,CAAAA,QAAQ,CAACK,QAAAA,CAAAA,CAAAA,CAAAA;SACrE,MAAA;AACLjB,YAAAA,aAAAA,CAAc,CAACgB,IAAS,GAAA;AAAIA,oBAAAA,GAAAA,IAAAA;AAAMR,oBAAAA;AAAM,iBAAA,CAAA;AAC1C;AACF,KAAA;AAEA,IAAA,qBACEU,GAACC,CAAAA,MAAAA,EAAAA;QACCC,UAAY,EAAA;AAAEC,YAAAA;AAAO,SAAA;QACrBnC,OAASA,EAAAA,OAAAA;QACTG,YAAcA,EAAAA,YAAAA;QACdiC,YAAc,EAAA,KAAA;AACd,4DACAlC,eAAiBA,EAAAA,eAAAA;QACjBW,UAAYA,EAAAA,UAAAA;QACZwB,cAAgBV,EAAAA,YAAAA;AAEf,QAAA,GAAGvB;;AAGV;AAuBA,MAAM6B,SAAS,CAAC,EACdC,UAAa,GAAA,EAAE,EACfI,MAAAA,GAAS,EAAE,EACXC,KAAK,EACLC,gBAAgB,EAChB,GAAGpC,KACS,EAAA,GAAA;AACZ,IAAA,MAAMqC,KAAQC,GAAAA,QAAAA,EAAAA;IACd,MAAMC,YAAAA,GAAeC,gBAAgBH,KAAOF,EAAAA,KAAAA,CAAAA;AAE5C,IAAA,qBACEP,GAACa,CAAAA,WAAAA,EAAAA;QACCC,YAAa,EAAA,OAAA;QACbZ,UAAY,EAAA;AACV,YAAA,GAAGA,UAAU;AACba,YAAAA,cAAAA;AACAC,YAAAA,iBAAAA;AACAC,YAAAA,kBAAAA,EAAoB,IAAM,IAAA;AAC1BC,YAAAA,gBAAAA,EAAkB,IAAM;AAC1B,SAAA;AACAC,QAAAA,mBAAAA,EAAmBZ,KAASC,IAAAA,gBAAAA;AAC5BY,QAAAA,cAAAA,EAAc,CAAC,CAACb,KAAAA;QAChBD,MACE,EAAA;AAAE,YAAA,GAAGK,YAAY;AAAE,YAAA,GAAGL;AAAO,SAAA;AAE9B,QAAA,GAAGlC;;AAGV,CAAA;AAEA,MAAMiD,OAAAA,GAAUC,MAAOC,CAAAA,GAAAA,CAAI;;;;;;;;;;;;UAYjB,EAAE,CAAC,EAAEd,KAAK,EAAE,GAAKA,KAAMe,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEnD,CAAC;AAED,MAAMV,iBAAiB,CACrB3C,KAAAA,GAAAA;IAEA,MAAMsD,SAAAA,GAAYxB,WAAWa,cAAc;AAE3C,IAAA,qBACEf,GAAC0B,CAAAA,SAAAA,EAAAA;AAAW,QAAA,GAAGtD,KAAK;AAClB,QAAA,QAAA,gBAAA4B,GAACqB,CAAAA,OAAAA,EAAAA;YAAQM,GAAI,EAAA,QAAA;YAASC,IAAK,EAAA,QAAA;AACzB,YAAA,QAAA,gBAAA5B,GAAC6B,CAAAA,KAAAA,EAAAA,EAAAA;;;AAIT,CAAA;AAEA,MAAMC,SAAAA,GAAYR,MAAOD,CAAAA,OAAAA,CAAQ;;;;;;;;AAQjC,CAAC;AAED,MAAML,iBAAoB,GAAA,CAAC,EAAEe,UAAU,EAA0B,GAAA;AAC/D,IAAA,qBACE/B,GAAC8B,CAAAA,SAAAA,EAAAA;QAAUE,YAAc,EAAA,CAAA;AAAI,QAAA,GAAGD,UAAU;AACxC,QAAA,QAAA,gBAAA/B,GAACiC,CAAAA,SAAAA,EAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAMrB,eAAAA,GAAkB,CACtBH,KACAF,EAAAA,KAAAA,GAAAA;IAEA,OAAO;QACL2B,cAAgB,EAAA,CAACC,QAAkB;AAAE,gBAAA,GAAGA,IAAI;gBAAEC,OAAS,EAAA,CAAA;gBAAGJ,YAAcvB,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE;aAAC,CAAA;QACxFC,SAAW,EAAA,CAACH,QAAkB;AAC5B,gBAAA,GAAGA,IAAI;gBACPI,UAAY9B,EAAAA,KAAAA,CAAMe,MAAM,CAACgB,QAAQ;gBACjCC,UAAY,EAAA;aACd,CAAA;QACAC,OAAQP,CAAAA,CAAAA,IAAY,EAAEQ,KAAkD,EAAA;AACtE,YAAA,IAAIC,WAAcnC,GAAAA,KAAAA,CAAMe,MAAM,CAACqB,UAAU;AACzC,YAAA,IAAIC,cAAqC5D,GAAAA,SAAAA;AACzC,YAAA,IAAI6D,eAAsC7D,GAAAA,SAAAA;YAE1C,IAAIyD,KAAAA,CAAMK,SAAS,EAAE;gBACnBJ,WAAcnC,GAAAA,KAAAA,CAAMe,MAAM,CAACyB,UAAU;gBACrCH,cAAiBrC,GAAAA,KAAAA,CAAMe,MAAM,CAACyB,UAAU;AAC1C,aAAA,MAAO,IAAI1C,KAAO,EAAA;gBAChBqC,WAAcnC,GAAAA,KAAAA,CAAMe,MAAM,CAAC0B,SAAS;AACtC;YAEA,IAAIP,KAAAA,CAAMQ,UAAU,EAAE;gBACpBJ,eAAkB,GAAA,CAAC,EAAEtC,KAAMe,CAAAA,MAAM,CAAC4B,UAAU,CAAC,WAAW,CAAC;AAC3D;YAEA,OAAO;AACL,gBAAA,GAAGjB,IAAI;gBACPkB,QAAU5C,EAAAA,KAAAA,CAAM6C,SAAS,CAAC,CAAE,CAAA;gBAC5BC,MAAQ,EAAA,EAAA;AACRC,gBAAAA,MAAAA,EAAQ,CAAC,UAAU,EAAEZ,WAAAA,CAAY,WAAW,CAAC;gBAC7Ca,OAAS,EAAA,CAAA;AACTV,gBAAAA,eAAAA;AACAW,gBAAAA,YAAAA,EAAcjD,MAAMiD,YAAY;AAChCC,gBAAAA,SAAAA,EAAWb,iBAAiB,CAAC,EAAEA,cAAe,CAAA,gBAAgB,CAAC,GAAG;AACpE,aAAA;AACF,SAAA;QACAc,mBAAqB,EAAA,CAACzB,QAAkB;AAAE,gBAAA,GAAGA,IAAI;gBAAEC,OAAS,EAAA,CAAA;gBAAGJ,YAAcvB,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE;aAAC,CAAA;QAC7FwB,KAAO,EAAA,CAAC1B,QAAkB;AACxB,gBAAA,GAAGA,IAAI;gBACP2B,MAAQ,EAAA,CAAA;gBACR1B,OAAS,EAAA,CAAA;gBACT2B,KAAOtD,EAAAA,KAAAA,CAAMe,MAAM,CAACwC,UAAU;gBAC9BC,mBAAqB,EAAA;aACvB,CAAA;QACAC,UAAY,EAAA,CAAC/B,QAAkB;AAC7B,gBAAA,GAAGA,IAAI;gBACPgC,MAAQ1D,EAAAA,KAAAA,CAAM2D,QAAQ,CAACC,MAAM;gBAC7BC,aAAe,EAAA;aACjB,CAAA;AACAC,QAAAA,IAAAA,CAAAA,CAAKpC,IAAY,EAAA;YACf,OAAO;AACL,gBAAA,GAAGA,IAAI;gBACPqC,KAAO,EAAA,MAAA;gBACPC,SAAWhE,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE,CAAA;gBAC1BU,eAAiBtC,EAAAA,KAAAA,CAAMe,MAAM,CAACgB,QAAQ;gBACtCuB,KAAOtD,EAAAA,KAAAA,CAAMe,MAAM,CAACwC,UAAU;AAC9BN,gBAAAA,YAAAA,EAAcjD,MAAMiD,YAAY;gBAChCF,MAAQ,EAAA,CAAC,UAAU,EAAE/C,KAAAA,CAAMe,MAAM,CAACqB,UAAU,CAAC,CAAC;gBAC9Cc,SAAWlD,EAAAA,KAAAA,CAAMiE,OAAO,CAACC,WAAW;gBACpCtB,QAAU5C,EAAAA,KAAAA,CAAM6C,SAAS,CAAC,CAAE,CAAA;gBAC5Ba,MAAQ,EAAA;AACV,aAAA;AACF,SAAA;QACAS,QAAU,EAAA,CAACzC,QAAkB;AAC3B,gBAAA,GAAGA,IAAI;gBACP0C,WAAapE,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE,CAAA;gBAC5ByC,UAAYrE,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE,CAAA;gBAC3BL,YAAcvB,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE,CAAA;gBAC7B0C,aAAetE,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE;aAChC,CAAA;;QAEAxE,MAAOsE,CAAAA,CAAAA,IAAS,EAAEQ,KAAkD,EAAA;AAClE,YAAA,IAAII,kBAAkBZ,IAAMY,EAAAA,eAAAA;AAE5B,YAAA,IAAIJ,KAAMK,CAAAA,SAAS,IAAIL,KAAAA,CAAMqC,UAAU,EAAE;gBACvCjC,eAAkBtC,GAAAA,KAAAA,CAAMe,MAAM,CAACyD,UAAU;AAC3C;YAEA,OAAO;AACL,gBAAA,GAAG9C,IAAI;gBACP4B,KAAOtD,EAAAA,KAAAA,CAAMe,MAAM,CAACwC,UAAU;gBAC9BvB,UAAYhC,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE,CAAA;AAC3BU,gBAAAA,eAAAA;AACAW,gBAAAA,YAAAA,EAAcjD,MAAMiD,YAAY;gBAChC,UAAY,EAAA;oBACVX,eAAiBtC,EAAAA,KAAAA,CAAMe,MAAM,CAACyD;AAChC;AACF,aAAA;AACF,SAAA;QACAC,WAAa,EAAA,CAAC/C,QAAkB;AAC9B,gBAAA,GAAGA,IAAI;gBACP4B,KAAOtD,EAAAA,KAAAA,CAAMe,MAAM,CAACC,UAAU;gBAC9B0D,UAAY,EAAA,CAAA;gBACZC,QAAU,EAAA,QAAA;gBACVC,YAAc,EAAA,UAAA;gBACdC,UAAY,EAAA,QAAA;gBACZC,QAAU,EAAA;aACZ,CAAA;QACAC,WAAYrD,CAAAA,CAAAA,IAAY,EAAEQ,KAA8B,EAAA;AACtD,YAAA,IAAIoB,KAAQtD,GAAAA,KAAAA,CAAMe,MAAM,CAACwC,UAAU;YAEnC,IAAIrB,KAAAA,CAAMQ,UAAU,EAAE;gBACpBY,KAAQtD,GAAAA,KAAAA,CAAMe,MAAM,CAACC,UAAU;AACjC;YAEA,OAAO;AAAE,gBAAA,GAAGU,IAAI;gBAAEgD,UAAY,EAAA,CAAA;AAAGpB,gBAAAA;AAAM,aAAA;AACzC,SAAA;QACA0B,cAAgB,EAAA,CAACtD,QAAkB;AACjC,gBAAA,GAAGA,IAAI;gBACPuD,MAAQ,EAAA,SAAA;gBACRtD,OAAS,EAAA,CAAA;gBACTyC,WAAapE,EAAAA,KAAAA,CAAM4B,MAAM,CAAC,CAAE,CAAA;gBAC5B8C,UAAY,EAAA,CAAA;gBACZQ,WAAa,EAAA;aACf;AACF,KAAA;AACF,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"SelectTree.mjs","sources":["../../../../admin/src/components/SelectTree/SelectTree.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { Cross, CaretDown } from '@strapi/icons';\nimport ReactSelect, {\n components,\n GroupBase,\n StylesConfig,\n ClearIndicatorProps,\n} from 'react-select';\nimport { styled, useTheme, DefaultTheme } from 'styled-components';\n\nimport { Option } from './Option';\nimport { flattenTree, FlattenedNode } from './utils/flattenTree';\nimport { getOpenValues } from './utils/getOpenValues';\nimport { getValuesToClose } from './utils/getValuesToClose';\n\nconst hasParent = (option: FlattenedNode<string | number | null>) => !option.parent;\n\nexport type OptionSelectTree = {\n value: string | number | null;\n label?: string;\n children?: OptionSelectTree[];\n};\n\nexport interface SelectTreeProps<\n Option = unknown,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IsMulti extends boolean = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n maxDisplayDepth?: number;\n defaultValue?: {\n value?: string | number | null;\n };\n options: OptionSelectTree[];\n onChange?: (value: Record<string, string | number>) => void;\n name?: string;\n menuPortalTarget?: HTMLElement | null;\n inputId?: string;\n error?: string;\n ariaErrorMessage?: string;\n isDisabled?: boolean;\n disabled?: boolean;\n}\n\nexport const SelectTree = ({\n options: defaultOptions,\n maxDisplayDepth = 5,\n defaultValue,\n ...props\n}: SelectTreeProps) => {\n const flatDefaultOptions = React.useMemo(() => flattenTree(defaultOptions), [defaultOptions]);\n const optionsFiltered = React.useMemo(\n () => flatDefaultOptions.filter(hasParent),\n [flatDefaultOptions]\n );\n const [options, setOptions] = React.useState(optionsFiltered);\n const [openValues, setOpenValues] = React.useState(\n getOpenValues(flatDefaultOptions, defaultValue)\n );\n\n React.useEffect(() => {\n if (openValues.length === 0) {\n setOptions(flatDefaultOptions.filter((option) => option.parent === undefined));\n } else {\n const allOpenValues = openValues.reduce<(string | number | null)[]>((acc, value) => {\n const options = flatDefaultOptions.filter(\n (option) => option.value === value || option.parent === value\n );\n\n options.forEach((option) => {\n const values = getOpenValues(flatDefaultOptions, option);\n acc = [...acc, ...values];\n });\n\n return acc;\n }, []);\n\n const nextOptions = flatDefaultOptions.filter((option) =>\n allOpenValues.includes(option.value)\n );\n\n setOptions(nextOptions);\n }\n }, [openValues, flatDefaultOptions, optionsFiltered]);\n\n const handleToggle = (value: string | number | null) => {\n if (openValues.includes(value)) {\n const valuesToClose = getValuesToClose(flatDefaultOptions, value);\n setOpenValues((prev) => prev.filter((prevData) => !valuesToClose.includes(prevData)));\n } else {\n setOpenValues((prev) => [...prev, value]);\n }\n };\n\n return (\n <Select\n components={{ Option }}\n options={options}\n defaultValue={defaultValue}\n isSearchable={false}\n /* -- custom props, used by the Option component */\n maxDisplayDepth={maxDisplayDepth}\n openValues={openValues}\n onOptionToggle={handleToggle}\n /* -- / custom props */\n {...props}\n />\n );\n};\n\ntype SelectOption = { value?: string | number | null; label?: string };\n\ninterface SelectProps<\n Option = SelectOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n components?: object;\n styles?: StylesConfig<Option, IsMulti, Group>;\n error?: string;\n ariaErrorMessage?: string;\n options: OptionSelectTree[];\n defaultValue?: {\n value?: string | number | null;\n };\n isSearchable?: boolean;\n maxDisplayDepth?: number;\n openValues?: (string | number | null)[];\n onOptionToggle?: (value: string | number | null) => void;\n}\n\nconst Select = ({\n components = {},\n styles = {},\n error,\n ariaErrorMessage,\n ...props\n}: SelectProps) => {\n const theme = useTheme();\n const customStyles = getSelectStyles(theme, error);\n\n return (\n <ReactSelect\n menuPosition=\"fixed\"\n components={{\n ...components,\n ClearIndicator,\n DropdownIndicator,\n IndicatorSeparator: () => null,\n LoadingIndicator: () => null,\n }}\n aria-errormessage={error && ariaErrorMessage}\n aria-invalid={!!error}\n styles={\n { ...customStyles, ...styles } as StylesConfig<SelectOption, false, GroupBase<SelectOption>>\n }\n {...props}\n />\n );\n};\n\nconst IconBox = styled(Box)`\n background: transparent;\n border: none;\n position: relative;\n z-index: 1;\n\n svg {\n height: 1.1rem;\n width: 1.1rem;\n }\n\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst ClearIndicator = (\n props: ClearIndicatorProps<SelectOption, false, GroupBase<SelectOption>>\n) => {\n const Component = components.ClearIndicator;\n\n return (\n <Component {...props}>\n <IconBox tag=\"button\" type=\"button\">\n <Cross />\n </IconBox>\n </Component>\n );\n};\n\nconst CarretBox = styled(IconBox)`\n display: flex;\n background: none;\n border: none;\n\n svg {\n width: 0.9rem;\n }\n`;\n\nconst DropdownIndicator = ({ innerProps }: { innerProps: object }) => {\n return (\n <CarretBox paddingRight={3} {...innerProps}>\n <CaretDown />\n </CarretBox>\n );\n};\n\nconst getSelectStyles = (\n theme: DefaultTheme,\n error?: string\n): StylesConfig<SelectOption, false, GroupBase<SelectOption>> => {\n return {\n clearIndicator: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n container: (base: object) => ({\n ...base,\n background: theme.colors.neutral0,\n lineHeight: 'normal',\n }),\n control(base: object, state: { isFocused: boolean; isDisabled: boolean }) {\n let borderColor = theme.colors.neutral200;\n let boxShadowColor: string | undefined = undefined;\n let backgroundColor: string | undefined = undefined;\n\n if (state.isFocused) {\n borderColor = theme.colors.primary600;\n boxShadowColor = theme.colors.primary600;\n } else if (error) {\n borderColor = theme.colors.danger600;\n }\n\n if (state.isDisabled) {\n backgroundColor = `${theme.colors.neutral150} !important`;\n }\n\n return {\n ...base,\n fontSize: theme.fontSizes[2],\n height: 40,\n border: `1px solid ${borderColor} !important`,\n outline: 0,\n backgroundColor,\n borderRadius: theme.borderRadius,\n boxShadow: boxShadowColor ? `${boxShadowColor} 0px 0px 0px 2px` : '',\n };\n },\n indicatorsContainer: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n input: (base: object) => ({\n ...base,\n margin: 0,\n padding: 0,\n color: theme.colors.neutral800,\n gridTemplateColumns: '0 100%',\n }),\n menuPortal: (base: object) => ({\n ...base,\n zIndex: theme.zIndices.dialog,\n pointerEvents: 'auto',\n }),\n menu(base: object) {\n return {\n ...base,\n width: '100%',\n marginTop: theme.spaces[1],\n backgroundColor: theme.colors.neutral0,\n color: theme.colors.neutral800,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.neutral200}`,\n boxShadow: theme.shadows.tableShadow,\n fontSize: theme.fontSizes[2],\n zIndex: 2,\n };\n },\n menuList: (base: object) => ({\n ...base,\n paddingLeft: theme.spaces[1],\n paddingTop: theme.spaces[1],\n paddingRight: theme.spaces[1],\n paddingBottom: theme.spaces[1],\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n option(base: any, state: { isFocused: boolean; isSelected: boolean }) {\n let backgroundColor = base?.backgroundColor as string;\n\n if (state.isFocused || state.isSelected) {\n backgroundColor = theme.colors.primary100;\n }\n\n return {\n ...base,\n color: theme.colors.neutral800,\n lineHeight: theme.spaces[5],\n backgroundColor,\n borderRadius: theme.borderRadius,\n '&:active': {\n backgroundColor: theme.colors.primary100,\n },\n };\n },\n placeholder: (base: object) => ({\n ...base,\n color: theme.colors.neutral600,\n marginLeft: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: '80%',\n }),\n singleValue(base: object, state: { isDisabled: boolean }) {\n let color = theme.colors.neutral800;\n\n if (state.isDisabled) {\n color = theme.colors.neutral600;\n }\n\n return { ...base, marginLeft: 0, color };\n },\n valueContainer: (base: object) => ({\n ...base,\n cursor: 'pointer',\n padding: 0,\n paddingLeft: theme.spaces[4],\n marginLeft: 0,\n marginRight: 0,\n }),\n };\n};\n"],"names":["hasParent","option","parent","SelectTree","options","defaultOptions","maxDisplayDepth","defaultValue","props","flatDefaultOptions","React","useMemo","flattenTree","optionsFiltered","filter","setOptions","useState","openValues","setOpenValues","getOpenValues","useEffect","length","undefined","allOpenValues","reduce","acc","value","forEach","values","nextOptions","includes","handleToggle","valuesToClose","getValuesToClose","prev","prevData","_jsx","Select","components","Option","isSearchable","onOptionToggle","styles","error","ariaErrorMessage","theme","useTheme","customStyles","getSelectStyles","ReactSelect","menuPosition","ClearIndicator","DropdownIndicator","IndicatorSeparator","LoadingIndicator","aria-errormessage","aria-invalid","IconBox","styled","Box","colors","neutral600","Component","tag","type","Cross","CarretBox","innerProps","paddingRight","CaretDown","clearIndicator","base","padding","spaces","container","background","neutral0","lineHeight","control","state","borderColor","neutral200","boxShadowColor","backgroundColor","isFocused","primary600","danger600","isDisabled","neutral150","fontSize","fontSizes","height","border","outline","borderRadius","boxShadow","indicatorsContainer","input","margin","color","neutral800","gridTemplateColumns","menuPortal","zIndex","zIndices","dialog","pointerEvents","menu","width","marginTop","shadows","tableShadow","menuList","paddingLeft","paddingTop","paddingBottom","isSelected","primary100","placeholder","marginLeft","overflow","textOverflow","whiteSpace","maxWidth","singleValue","valueContainer","cursor","marginRight"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flattenTree.js","sources":["../../../../../admin/src/components/SelectTree/utils/flattenTree.ts"],"sourcesContent":["type TreeNode<T> = {\n value: T;\n children?: TreeNode<T>[];\n label?: string;\n path?: string;\n};\n\nexport type FlattenedNode<T> = {\n value: T;\n parent?: T;\n depth: number;\n // we need the label in places where flattenTree is used\n label?: string;\n path?: string;\n children?: TreeNode<T>[];\n};\n\nexport function flattenTree<T>(\n tree: TreeNode<T>[],\n parent: TreeNode<T> | null = null,\n depth: number = 0,\n path: string = ''\n): FlattenedNode<T>[] {\n return tree.flatMap((item) => {\n const newPath = item.value ? `${path}/${item.value}` : path;\n\n return item.children\n ? [\n { ...item, parent: parent?.value, depth, path: newPath },\n ...flattenTree(item.children, item, depth + 1, newPath),\n ]\n : { ...item, depth, parent: parent?.value, path: newPath };\n });\n}\n"],"names":["flattenTree","tree","parent","depth","path","flatMap","item","newPath","value","children"],"mappings":";;AAiBO,SAASA,WACdC,CAAAA,IAAmB,EACnBC,MAAAA,GAA6B,IAAI,EACjCC,KAAgB,GAAA,CAAC,EACjBC,IAAAA,GAAe,EAAE,EAAA;IAEjB,OAAOH,IAAAA,CAAKI,OAAO,CAAC,CAACC,IAAAA,GAAAA;
|
|
1
|
+
{"version":3,"file":"flattenTree.js","sources":["../../../../../admin/src/components/SelectTree/utils/flattenTree.ts"],"sourcesContent":["type TreeNode<T> = {\n value: T;\n children?: TreeNode<T>[];\n label?: string;\n path?: string;\n};\n\nexport type FlattenedNode<T> = {\n value: T;\n parent?: T;\n depth: number;\n // we need the label in places where flattenTree is used\n label?: string;\n path?: string;\n children?: TreeNode<T>[];\n};\n\nexport function flattenTree<T>(\n tree: TreeNode<T>[],\n parent: TreeNode<T> | null = null,\n depth: number = 0,\n path: string = ''\n): FlattenedNode<T>[] {\n return tree.flatMap((item) => {\n const newPath = item.value ? `${path}/${item.value}` : path;\n\n return item.children\n ? [\n { ...item, parent: parent?.value, depth, path: newPath },\n ...flattenTree(item.children, item, depth + 1, newPath),\n ]\n : { ...item, depth, parent: parent?.value, path: newPath };\n });\n}\n"],"names":["flattenTree","tree","parent","depth","path","flatMap","item","newPath","value","children"],"mappings":";;AAiBO,SAASA,WACdC,CAAAA,IAAmB,EACnBC,MAAAA,GAA6B,IAAI,EACjCC,KAAgB,GAAA,CAAC,EACjBC,IAAAA,GAAe,EAAE,EAAA;IAEjB,OAAOH,IAAAA,CAAKI,OAAO,CAAC,CAACC,IAAAA,GAAAA;QACnB,MAAMC,OAAAA,GAAUD,IAAKE,CAAAA,KAAK,GAAG,CAAA,EAAGJ,IAAK,CAAA,CAAC,EAAEE,IAAAA,CAAKE,KAAK,CAAA,CAAE,GAAGJ,IAAAA;QAEvD,OAAOE,IAAAA,CAAKG,QAAQ,GAChB;AACE,YAAA;AAAE,gBAAA,GAAGH,IAAI;AAAEJ,gBAAAA,MAAAA,EAAQA,MAAQM,EAAAA,KAAAA;AAAOL,gBAAAA,KAAAA;gBAAOC,IAAMG,EAAAA;AAAQ,aAAA;AACpDP,YAAAA,GAAAA,WAAAA,CAAYM,IAAKG,CAAAA,QAAQ,EAAEH,IAAAA,EAAMH,QAAQ,CAAGI,EAAAA,OAAAA;SAChD,GACD;AAAE,YAAA,GAAGD,IAAI;AAAEH,YAAAA,KAAAA;AAAOD,YAAAA,MAAAA,EAAQA,MAAQM,EAAAA,KAAAA;YAAOJ,IAAMG,EAAAA;AAAQ,SAAA;AAC7D,KAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flattenTree.mjs","sources":["../../../../../admin/src/components/SelectTree/utils/flattenTree.ts"],"sourcesContent":["type TreeNode<T> = {\n value: T;\n children?: TreeNode<T>[];\n label?: string;\n path?: string;\n};\n\nexport type FlattenedNode<T> = {\n value: T;\n parent?: T;\n depth: number;\n // we need the label in places where flattenTree is used\n label?: string;\n path?: string;\n children?: TreeNode<T>[];\n};\n\nexport function flattenTree<T>(\n tree: TreeNode<T>[],\n parent: TreeNode<T> | null = null,\n depth: number = 0,\n path: string = ''\n): FlattenedNode<T>[] {\n return tree.flatMap((item) => {\n const newPath = item.value ? `${path}/${item.value}` : path;\n\n return item.children\n ? [\n { ...item, parent: parent?.value, depth, path: newPath },\n ...flattenTree(item.children, item, depth + 1, newPath),\n ]\n : { ...item, depth, parent: parent?.value, path: newPath };\n });\n}\n"],"names":["flattenTree","tree","parent","depth","path","flatMap","item","newPath","value","children"],"mappings":"AAiBO,SAASA,WACdC,CAAAA,IAAmB,EACnBC,MAAAA,GAA6B,IAAI,EACjCC,KAAgB,GAAA,CAAC,EACjBC,IAAAA,GAAe,EAAE,EAAA;IAEjB,OAAOH,IAAAA,CAAKI,OAAO,CAAC,CAACC,IAAAA,GAAAA;
|
|
1
|
+
{"version":3,"file":"flattenTree.mjs","sources":["../../../../../admin/src/components/SelectTree/utils/flattenTree.ts"],"sourcesContent":["type TreeNode<T> = {\n value: T;\n children?: TreeNode<T>[];\n label?: string;\n path?: string;\n};\n\nexport type FlattenedNode<T> = {\n value: T;\n parent?: T;\n depth: number;\n // we need the label in places where flattenTree is used\n label?: string;\n path?: string;\n children?: TreeNode<T>[];\n};\n\nexport function flattenTree<T>(\n tree: TreeNode<T>[],\n parent: TreeNode<T> | null = null,\n depth: number = 0,\n path: string = ''\n): FlattenedNode<T>[] {\n return tree.flatMap((item) => {\n const newPath = item.value ? `${path}/${item.value}` : path;\n\n return item.children\n ? [\n { ...item, parent: parent?.value, depth, path: newPath },\n ...flattenTree(item.children, item, depth + 1, newPath),\n ]\n : { ...item, depth, parent: parent?.value, path: newPath };\n });\n}\n"],"names":["flattenTree","tree","parent","depth","path","flatMap","item","newPath","value","children"],"mappings":"AAiBO,SAASA,WACdC,CAAAA,IAAmB,EACnBC,MAAAA,GAA6B,IAAI,EACjCC,KAAgB,GAAA,CAAC,EACjBC,IAAAA,GAAe,EAAE,EAAA;IAEjB,OAAOH,IAAAA,CAAKI,OAAO,CAAC,CAACC,IAAAA,GAAAA;QACnB,MAAMC,OAAAA,GAAUD,IAAKE,CAAAA,KAAK,GAAG,CAAA,EAAGJ,IAAK,CAAA,CAAC,EAAEE,IAAAA,CAAKE,KAAK,CAAA,CAAE,GAAGJ,IAAAA;QAEvD,OAAOE,IAAAA,CAAKG,QAAQ,GAChB;AACE,YAAA;AAAE,gBAAA,GAAGH,IAAI;AAAEJ,gBAAAA,MAAAA,EAAQA,MAAQM,EAAAA,KAAAA;AAAOL,gBAAAA,KAAAA;gBAAOC,IAAMG,EAAAA;AAAQ,aAAA;AACpDP,YAAAA,GAAAA,WAAAA,CAAYM,IAAKG,CAAAA,QAAQ,EAAEH,IAAAA,EAAMH,QAAQ,CAAGI,EAAAA,OAAAA;SAChD,GACD;AAAE,YAAA,GAAGD,IAAI;AAAEH,YAAAA,KAAAA;AAAOD,YAAAA,MAAAA,EAAQA,MAAQM,EAAAA,KAAAA;YAAOJ,IAAMG,EAAAA;AAAQ,SAAA;AAC7D,KAAA,CAAA;AACF;;;;"}
|
|
@@ -8,6 +8,7 @@ require('byte-size');
|
|
|
8
8
|
require('date-fns');
|
|
9
9
|
var getTrad = require('../../utils/getTrad.js');
|
|
10
10
|
require('qs');
|
|
11
|
+
require('../../utils/typeFromMime.js');
|
|
11
12
|
require('../../utils/urlYupSchema.js');
|
|
12
13
|
|
|
13
14
|
// TODO: find a better naming convention for the file that was an index file before
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortPicker.js","sources":["../../../../admin/src/components/SortPicker/SortPicker.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { sortOptions } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport type { Query } from '../../../../shared/contracts/files';\n\ninterface SortPickerProps {\n onChangeSort: (value: Query['sort'] | string) => void;\n value?: string;\n}\n\nexport const SortPicker = ({ onChangeSort, value }: SortPickerProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n size=\"S\"\n value={value}\n onChange={(value) => onChangeSort(value.toString())}\n aria-label={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n placeholder={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption key={filter.key} value={filter.value}>\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["SortPicker","onChangeSort","value","formatMessage","useIntl","_jsx","SingleSelect","size","onChange","toString","aria-label","id","getTrad","defaultMessage","placeholder","sortOptions","map","filter","SingleSelectOption","key"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SortPicker.js","sources":["../../../../admin/src/components/SortPicker/SortPicker.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { sortOptions } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport type { Query } from '../../../../shared/contracts/files';\n\ninterface SortPickerProps {\n onChangeSort: (value: Query['sort'] | string) => void;\n value?: string;\n}\n\nexport const SortPicker = ({ onChangeSort, value }: SortPickerProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n size=\"S\"\n value={value}\n onChange={(value) => onChangeSort(value.toString())}\n aria-label={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n placeholder={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption key={filter.key} value={filter.value}>\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["SortPicker","onChangeSort","value","formatMessage","useIntl","_jsx","SingleSelect","size","onChange","toString","aria-label","id","getTrad","defaultMessage","placeholder","sortOptions","map","filter","SingleSelectOption","key"],"mappings":";;;;;;;;;;;;;AAAA;MAcaA,UAAa,GAAA,CAAC,EAAEC,YAAY,EAAEC,KAAK,EAAmB,GAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,yBAAAA,EAAAA;QACCC,IAAK,EAAA,GAAA;QACLL,KAAOA,EAAAA,KAAAA;AACPM,QAAAA,QAAAA,EAAU,CAACN,KAAAA,GAAUD,YAAaC,CAAAA,KAAAA,CAAMO,QAAQ,EAAA,CAAA;AAChDC,QAAAA,YAAAA,EAAYP,aAAc,CAAA;AACxBQ,YAAAA,EAAAA,EAAIC,eAAQ,CAAA,YAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAC,QAAAA,WAAAA,EAAaX,aAAc,CAAA;AACzBQ,YAAAA,EAAAA,EAAIC,eAAQ,CAAA,YAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AAECE,QAAAA,QAAAA,EAAAA,qBAAAA,CAAYC,GAAG,CAAC,CAACC,MAAAA,iBAChBZ,cAACa,CAAAA,+BAAAA,EAAAA;AAAoChB,gBAAAA,KAAAA,EAAOe,OAAOf,KAAK;0BACrDC,aAAc,CAAA;oBAAEQ,EAAIC,EAAAA,eAAAA,CAAQK,OAAOE,GAAG,CAAA;oBAAGN,cAAgB,EAAA,CAAA,EAAGI,MAAOf,CAAAA,KAAK,CAAE;AAAC,iBAAA;AADrDe,aAAAA,EAAAA,MAAAA,CAAOE,GAAG,CAAA;;AAM3C;;;;"}
|
|
@@ -6,6 +6,7 @@ import 'byte-size';
|
|
|
6
6
|
import 'date-fns';
|
|
7
7
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
8
8
|
import 'qs';
|
|
9
|
+
import '../../utils/typeFromMime.mjs';
|
|
9
10
|
import '../../utils/urlYupSchema.mjs';
|
|
10
11
|
|
|
11
12
|
// TODO: find a better naming convention for the file that was an index file before
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortPicker.mjs","sources":["../../../../admin/src/components/SortPicker/SortPicker.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { sortOptions } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport type { Query } from '../../../../shared/contracts/files';\n\ninterface SortPickerProps {\n onChangeSort: (value: Query['sort'] | string) => void;\n value?: string;\n}\n\nexport const SortPicker = ({ onChangeSort, value }: SortPickerProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n size=\"S\"\n value={value}\n onChange={(value) => onChangeSort(value.toString())}\n aria-label={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n placeholder={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption key={filter.key} value={filter.value}>\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["SortPicker","onChangeSort","value","formatMessage","useIntl","_jsx","SingleSelect","size","onChange","toString","aria-label","id","getTrad","defaultMessage","placeholder","sortOptions","map","filter","SingleSelectOption","key"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SortPicker.mjs","sources":["../../../../admin/src/components/SortPicker/SortPicker.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { sortOptions } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport type { Query } from '../../../../shared/contracts/files';\n\ninterface SortPickerProps {\n onChangeSort: (value: Query['sort'] | string) => void;\n value?: string;\n}\n\nexport const SortPicker = ({ onChangeSort, value }: SortPickerProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n size=\"S\"\n value={value}\n onChange={(value) => onChangeSort(value.toString())}\n aria-label={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n placeholder={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption key={filter.key} value={filter.value}>\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n"],"names":["SortPicker","onChangeSort","value","formatMessage","useIntl","_jsx","SingleSelect","size","onChange","toString","aria-label","id","getTrad","defaultMessage","placeholder","sortOptions","map","filter","SingleSelectOption","key"],"mappings":";;;;;;;;;;;AAAA;MAcaA,UAAa,GAAA,CAAC,EAAEC,YAAY,EAAEC,KAAK,EAAmB,GAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEC,GAACC,CAAAA,YAAAA,EAAAA;QACCC,IAAK,EAAA,GAAA;QACLL,KAAOA,EAAAA,KAAAA;AACPM,QAAAA,QAAAA,EAAU,CAACN,KAAAA,GAAUD,YAAaC,CAAAA,KAAAA,CAAMO,QAAQ,EAAA,CAAA;AAChDC,QAAAA,YAAAA,EAAYP,aAAc,CAAA;AACxBQ,YAAAA,EAAAA,EAAIC,OAAQ,CAAA,YAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAC,QAAAA,WAAAA,EAAaX,aAAc,CAAA;AACzBQ,YAAAA,EAAAA,EAAIC,OAAQ,CAAA,YAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AAECE,QAAAA,QAAAA,EAAAA,WAAAA,CAAYC,GAAG,CAAC,CAACC,MAAAA,iBAChBZ,GAACa,CAAAA,kBAAAA,EAAAA;AAAoChB,gBAAAA,KAAAA,EAAOe,OAAOf,KAAK;0BACrDC,aAAc,CAAA;oBAAEQ,EAAIC,EAAAA,OAAAA,CAAQK,OAAOE,GAAG,CAAA;oBAAGN,cAAgB,EAAA,CAAA,EAAGI,MAAOf,CAAAA,KAAK,CAAE;AAAC,iBAAA;AADrDe,aAAAA,EAAAA,MAAAA,CAAOE,GAAG,CAAA;;AAM3C;;;;"}
|
|
@@ -8,7 +8,7 @@ var formatBytes = require('../../utils/formatBytes.js');
|
|
|
8
8
|
require('date-fns');
|
|
9
9
|
require('qs');
|
|
10
10
|
var getFileExtension = require('../../utils/getFileExtension.js');
|
|
11
|
-
require('../../
|
|
11
|
+
require('../../utils/typeFromMime.js');
|
|
12
12
|
require('../../utils/urlYupSchema.js');
|
|
13
13
|
var PreviewCell = require('./PreviewCell.js');
|
|
14
14
|
|
|
@@ -6,7 +6,7 @@ import { formatBytes } from '../../utils/formatBytes.mjs';
|
|
|
6
6
|
import 'date-fns';
|
|
7
7
|
import 'qs';
|
|
8
8
|
import { getFileExtension } from '../../utils/getFileExtension.mjs';
|
|
9
|
-
import '../../
|
|
9
|
+
import '../../utils/typeFromMime.mjs';
|
|
10
10
|
import '../../utils/urlYupSchema.mjs';
|
|
11
11
|
import { PreviewCell } from './PreviewCell.mjs';
|
|
12
12
|
|
|
@@ -5,7 +5,7 @@ var designSystem = require('@strapi/design-system');
|
|
|
5
5
|
var icons = require('@strapi/icons');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
7
|
var styledComponents = require('styled-components');
|
|
8
|
-
var
|
|
8
|
+
var enums = require('../../enums.js');
|
|
9
9
|
var createAssetUrl = require('../../utils/createAssetUrl.js');
|
|
10
10
|
require('byte-size');
|
|
11
11
|
require('date-fns');
|
|
@@ -13,6 +13,7 @@ var getTrad = require('../../utils/getTrad.js');
|
|
|
13
13
|
require('qs');
|
|
14
14
|
var getFileExtension = require('../../utils/getFileExtension.js');
|
|
15
15
|
var prefixFileUrlWithBackendUrl = require('../../utils/prefixFileUrlWithBackendUrl.js');
|
|
16
|
+
require('../../utils/typeFromMime.js');
|
|
16
17
|
require('../../utils/urlYupSchema.js');
|
|
17
18
|
var VideoPreview = require('../AssetCard/VideoPreview.js');
|
|
18
19
|
|
|
@@ -52,7 +53,7 @@ const PreviewCell = ({ type, content })=>{
|
|
|
52
53
|
}
|
|
53
54
|
const { alternativeText, ext, formats, mime, name, url } = content;
|
|
54
55
|
const fileExtension = getFileExtension.getFileExtension(ext);
|
|
55
|
-
if (mime?.includes(
|
|
56
|
+
if (mime?.includes(enums.AssetType.Image)) {
|
|
56
57
|
const mediaURL = prefixFileUrlWithBackendUrl.prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl.prefixFileUrlWithBackendUrl(url);
|
|
57
58
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Avatar.Item, {
|
|
58
59
|
src: mediaURL,
|
|
@@ -61,7 +62,7 @@ const PreviewCell = ({ type, content })=>{
|
|
|
61
62
|
fallback: alternativeText
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
|
-
if (mime?.includes(
|
|
65
|
+
if (mime?.includes(enums.AssetType.Video)) {
|
|
65
66
|
return /*#__PURE__*/ jsxRuntime.jsx(VideoPreviewWrapper, {
|
|
66
67
|
children: /*#__PURE__*/ jsxRuntime.jsx(VideoPreview.VideoPreview, {
|
|
67
68
|
url: createAssetUrl.createAssetUrl(content, true) || '',
|
|
@@ -70,7 +71,7 @@ const PreviewCell = ({ type, content })=>{
|
|
|
70
71
|
})
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
|
-
if (mime?.includes(
|
|
74
|
+
if (mime?.includes(enums.AssetType.Audio)) {
|
|
74
75
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
75
76
|
background: "neutral100",
|
|
76
77
|
borderRadius: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewCell.js","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../
|
|
1
|
+
{"version":3,"file":"PreviewCell.js","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../enums';\nimport {\n createAssetUrl,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n figure {\n width: ${({ theme }) => theme.spaces[7]};\n height: ${({ theme }) => theme.spaces[7]};\n }\n\n canvas,\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n`;\n\ninterface PreviewCellProps {\n content: File;\n type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n const { formatMessage } = useIntl();\n if (type === 'folder') {\n return (\n <Flex\n justifyContent=\"center\"\n background=\"secondary100\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n borderRadius=\"50%\"\n >\n <Folder\n aria-label={formatMessage({\n id: getTrad('header.actions.add-assets.folder'),\n defaultMessage: 'folder',\n })}\n fill=\"secondary500\"\n width=\"1.6rem\"\n height=\"1.6rem\"\n />\n </Flex>\n );\n }\n\n const { alternativeText, ext, formats, mime, name, url } = content;\n\n const fileExtension = getFileExtension(ext);\n\n if (mime?.includes(AssetType.Image)) {\n const mediaURL =\n prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || undefined}\n preview\n fallback={alternativeText}\n />\n );\n }\n\n if (mime?.includes(AssetType.Video)) {\n return (\n <VideoPreviewWrapper>\n <VideoPreview\n url={createAssetUrl(content, true) || ''}\n mime={mime}\n alt={alternativeText ?? name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (mime?.includes(AssetType.Audio)) {\n return (\n <Flex\n background=\"neutral100\"\n borderRadius=\"100%\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n justifyContent=\"center\"\n >\n <VolumeUp width={16} height={16} />\n </Flex>\n );\n }\n\n type IconComponent = typeof FileIcon;\n const DOC_ICON_MAP: Record<string, IconComponent> = {\n pdf: FilePdf,\n csv: FileCsv,\n xls: FileXls,\n zip: FileZip,\n };\n\n const DocIcon = fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n const testId =\n fileExtension && DOC_ICON_MAP[fileExtension] ? `file-${fileExtension}-icon` : 'file-icon';\n\n return (\n <Flex\n justifyContent=\"center\"\n borderRadius=\"100%\"\n background=\"neutral100\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n >\n <DocIcon width={16} height={16} data-testid={testId} />\n </Flex>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","theme","spaces","PreviewCell","type","content","formatMessage","useIntl","_jsx","Flex","justifyContent","background","width","height","borderRadius","Folder","aria-label","id","getTrad","defaultMessage","fill","alternativeText","ext","formats","mime","name","url","fileExtension","getFileExtension","includes","AssetType","Image","mediaURL","prefixFileUrlWithBackendUrl","thumbnail","Avatar","Item","src","alt","undefined","preview","fallback","Video","VideoPreview","createAssetUrl","Audio","color","VolumeUp","DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","DocIcon","FileIcon","testId","data-testid"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Box, Flex, Avatar } from '@strapi/design-system';
|
|
|
3
3
|
import { Folder, VolumeUp, File, FilePdf, FileCsv, FileXls, FileZip } from '@strapi/icons';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { styled } from 'styled-components';
|
|
6
|
-
import { AssetType } from '../../
|
|
6
|
+
import { AssetType } from '../../enums.mjs';
|
|
7
7
|
import { createAssetUrl } from '../../utils/createAssetUrl.mjs';
|
|
8
8
|
import 'byte-size';
|
|
9
9
|
import 'date-fns';
|
|
@@ -11,6 +11,7 @@ import { getTrad } from '../../utils/getTrad.mjs';
|
|
|
11
11
|
import 'qs';
|
|
12
12
|
import { getFileExtension } from '../../utils/getFileExtension.mjs';
|
|
13
13
|
import { prefixFileUrlWithBackendUrl } from '../../utils/prefixFileUrlWithBackendUrl.mjs';
|
|
14
|
+
import '../../utils/typeFromMime.mjs';
|
|
14
15
|
import '../../utils/urlYupSchema.mjs';
|
|
15
16
|
import { VideoPreview } from '../AssetCard/VideoPreview.mjs';
|
|
16
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewCell.mjs","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../
|
|
1
|
+
{"version":3,"file":"PreviewCell.mjs","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../enums';\nimport {\n createAssetUrl,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n figure {\n width: ${({ theme }) => theme.spaces[7]};\n height: ${({ theme }) => theme.spaces[7]};\n }\n\n canvas,\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n`;\n\ninterface PreviewCellProps {\n content: File;\n type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n const { formatMessage } = useIntl();\n if (type === 'folder') {\n return (\n <Flex\n justifyContent=\"center\"\n background=\"secondary100\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n borderRadius=\"50%\"\n >\n <Folder\n aria-label={formatMessage({\n id: getTrad('header.actions.add-assets.folder'),\n defaultMessage: 'folder',\n })}\n fill=\"secondary500\"\n width=\"1.6rem\"\n height=\"1.6rem\"\n />\n </Flex>\n );\n }\n\n const { alternativeText, ext, formats, mime, name, url } = content;\n\n const fileExtension = getFileExtension(ext);\n\n if (mime?.includes(AssetType.Image)) {\n const mediaURL =\n prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || undefined}\n preview\n fallback={alternativeText}\n />\n );\n }\n\n if (mime?.includes(AssetType.Video)) {\n return (\n <VideoPreviewWrapper>\n <VideoPreview\n url={createAssetUrl(content, true) || ''}\n mime={mime}\n alt={alternativeText ?? name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (mime?.includes(AssetType.Audio)) {\n return (\n <Flex\n background=\"neutral100\"\n borderRadius=\"100%\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n justifyContent=\"center\"\n >\n <VolumeUp width={16} height={16} />\n </Flex>\n );\n }\n\n type IconComponent = typeof FileIcon;\n const DOC_ICON_MAP: Record<string, IconComponent> = {\n pdf: FilePdf,\n csv: FileCsv,\n xls: FileXls,\n zip: FileZip,\n };\n\n const DocIcon = fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n const testId =\n fileExtension && DOC_ICON_MAP[fileExtension] ? `file-${fileExtension}-icon` : 'file-icon';\n\n return (\n <Flex\n justifyContent=\"center\"\n borderRadius=\"100%\"\n background=\"neutral100\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n >\n <DocIcon width={16} height={16} data-testid={testId} />\n </Flex>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","theme","spaces","PreviewCell","type","content","formatMessage","useIntl","_jsx","Flex","justifyContent","background","width","height","borderRadius","Folder","aria-label","id","getTrad","defaultMessage","fill","alternativeText","ext","formats","mime","name","url","fileExtension","getFileExtension","includes","AssetType","Image","mediaURL","prefixFileUrlWithBackendUrl","thumbnail","Avatar","Item","src","alt","undefined","preview","fallback","Video","VideoPreview","createAssetUrl","Audio","color","VolumeUp","DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","DocIcon","FileIcon","testId","data-testid"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableList.js","sources":["../../../../admin/src/components/TableList/TableList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n IconButton,\n Table,\n Th,\n Thead,\n Tooltip,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableListProps {\n isFolderSelectionAllowed?: boolean;\n allowedTypes?: AllowedTypes[];\n assetCount?: number;\n folderCount?: number;\n indeterminate?: boolean;\n onChangeSort?: ((sortQuery: string) => void) | null;\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset?: ((asset: FileRow) => void) | null;\n onEditFolder?: ((folder: FolderRow) => void) | null;\n onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows?: FileRow[] | FolderRow[];\n selected?: FileRow[] | FolderRow[];\n shouldDisableBulkSelect?: boolean;\n sortQuery?: string;\n}\n\nexport const TableList = ({\n assetCount = 0,\n folderCount = 0,\n indeterminate = false,\n onChangeSort = null,\n onChangeFolder = null,\n onEditAsset = null,\n onEditFolder = null,\n onSelectAll,\n onSelectOne,\n rows = [],\n selected = [],\n shouldDisableBulkSelect = false,\n sortQuery = '',\n}: TableListProps) => {\n const { formatMessage } = useIntl();\n const [sortBy, sortOrder] = sortQuery.split(':');\n\n const handleClickSort = (isSorted: boolean, name: string) => {\n const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n const nextSort = `${name}:${nextSortOrder}`;\n\n onChangeSort && onChangeSort(nextSort);\n };\n\n return (\n <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n disabled={shouldDisableBulkSelect}\n onCheckedChange={(checked) => onSelectAll(checked, rows)}\n checked={\n indeterminate && !shouldDisableBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n />\n </Th>\n {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n const isSorted = sortBy === name;\n const isUp = sortOrder === 'ASC';\n const tableHeaderLabel = formatMessage(label);\n const sortLabel = formatMessage(\n { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n { label: tableHeaderLabel }\n );\n\n return (\n <Th\n action={\n isSorted && (\n <IconButton\n label={sortLabel}\n onClick={() => handleClickSort(isSorted, name)}\n variant=\"ghost\"\n >\n {isUp ? <CaretUp /> : <CaretDown />}\n </IconButton>\n )\n }\n key={key}\n >\n <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n {isSortable ? (\n <Typography\n onClick={() => handleClickSort(isSorted, name)}\n tag={isSorted ? 'span' : 'button'}\n textColor=\"neutral600\"\n variant=\"sigma\"\n >\n {tableHeaderLabel}\n </Typography>\n ) : (\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n )}\n </Tooltip>\n </Th>\n );\n })}\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('list.table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableRows\n onChangeFolder={onChangeFolder}\n onEditAsset={onEditAsset!}\n onEditFolder={onEditFolder!}\n rows={rows}\n onSelectOne={onSelectOne}\n selected={selected}\n />\n </Table>\n );\n};\n"],"names":["TableList","assetCount","folderCount","indeterminate","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAll","onSelectOne","rows","selected","shouldDisableBulkSelect","sortQuery","formatMessage","useIntl","sortBy","sortOrder","split","handleClickSort","isSorted","name","nextSortOrder","nextSort","_jsxs","Table","colCount","tableHeaders","length","rowCount","_jsx","Thead","Tr","Th","Checkbox","aria-label","id","getTrad","defaultMessage","disabled","onCheckedChange","checked","map","metadatas","label","isSortable","key","isUp","tableHeaderLabel","sortLabel","action","IconButton","onClick","variant","CaretUp","CaretDown","Tooltip","Typography","tag","textColor","VisuallyHidden","TableRows"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableList.js","sources":["../../../../admin/src/components/TableList/TableList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n IconButton,\n Table,\n Th,\n Thead,\n Tooltip,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableListProps {\n isFolderSelectionAllowed?: boolean;\n allowedTypes?: AllowedTypes[];\n assetCount?: number;\n folderCount?: number;\n indeterminate?: boolean;\n onChangeSort?: ((sortQuery: string) => void) | null;\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset?: ((asset: FileRow) => void) | null;\n onEditFolder?: ((folder: FolderRow) => void) | null;\n onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows?: FileRow[] | FolderRow[];\n selected?: FileRow[] | FolderRow[];\n shouldDisableBulkSelect?: boolean;\n sortQuery?: string;\n}\n\nexport const TableList = ({\n assetCount = 0,\n folderCount = 0,\n indeterminate = false,\n onChangeSort = null,\n onChangeFolder = null,\n onEditAsset = null,\n onEditFolder = null,\n onSelectAll,\n onSelectOne,\n rows = [],\n selected = [],\n shouldDisableBulkSelect = false,\n sortQuery = '',\n}: TableListProps) => {\n const { formatMessage } = useIntl();\n const [sortBy, sortOrder] = sortQuery.split(':');\n\n const handleClickSort = (isSorted: boolean, name: string) => {\n const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n const nextSort = `${name}:${nextSortOrder}`;\n\n onChangeSort && onChangeSort(nextSort);\n };\n\n return (\n <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n disabled={shouldDisableBulkSelect}\n onCheckedChange={(checked) => onSelectAll(checked, rows)}\n checked={\n indeterminate && !shouldDisableBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n />\n </Th>\n {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n const isSorted = sortBy === name;\n const isUp = sortOrder === 'ASC';\n const tableHeaderLabel = formatMessage(label);\n const sortLabel = formatMessage(\n { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n { label: tableHeaderLabel }\n );\n\n return (\n <Th\n action={\n isSorted && (\n <IconButton\n label={sortLabel}\n onClick={() => handleClickSort(isSorted, name)}\n variant=\"ghost\"\n >\n {isUp ? <CaretUp /> : <CaretDown />}\n </IconButton>\n )\n }\n key={key}\n >\n <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n {isSortable ? (\n <Typography\n onClick={() => handleClickSort(isSorted, name)}\n tag={isSorted ? 'span' : 'button'}\n textColor=\"neutral600\"\n variant=\"sigma\"\n >\n {tableHeaderLabel}\n </Typography>\n ) : (\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n )}\n </Tooltip>\n </Th>\n );\n })}\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('list.table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableRows\n onChangeFolder={onChangeFolder}\n onEditAsset={onEditAsset!}\n onEditFolder={onEditFolder!}\n rows={rows}\n onSelectOne={onSelectOne}\n selected={selected}\n />\n </Table>\n );\n};\n"],"names":["TableList","assetCount","folderCount","indeterminate","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAll","onSelectOne","rows","selected","shouldDisableBulkSelect","sortQuery","formatMessage","useIntl","sortBy","sortOrder","split","handleClickSort","isSorted","name","nextSortOrder","nextSort","_jsxs","Table","colCount","tableHeaders","length","rowCount","_jsx","Thead","Tr","Th","Checkbox","aria-label","id","getTrad","defaultMessage","disabled","onCheckedChange","checked","map","metadatas","label","isSortable","key","isUp","tableHeaderLabel","sortLabel","action","IconButton","onClick","variant","CaretUp","CaretDown","Tooltip","Typography","tag","textColor","VisuallyHidden","TableRows"],"mappings":"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"}
|