@strapi/upload 5.58.0 → 5.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +141 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +139 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js +129 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs +127 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.js +144 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs +142 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +397 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +395 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js +45 -0
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs +43 -0
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs.map +1 -0
- package/dist/admin/hooks/useAIMetadataAvailability.js +5 -1
- package/dist/admin/hooks/useAIMetadataAvailability.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataAvailability.mjs +5 -1
- package/dist/admin/hooks/useAIMetadataAvailability.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.js +7 -1
- package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs +7 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.js +4 -0
- package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs +4 -0
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +5 -1
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs +5 -1
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/index.js +7 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +7 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.js +2 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.js.map +1 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs +2 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.js +3 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs +3 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js +3 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs +3 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.js +7 -6
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.js.map +1 -1
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs +7 -6
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs.map +1 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js +2 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +2 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js +2 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs +2 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js +3 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs +3 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/legacy/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js +2 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs +2 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js +4 -2
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs +4 -2
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js +2 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs +2 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.js +3 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.mjs +3 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.mjs.map +1 -1
- package/dist/admin/legacy/components/TableList/TableList.js +3 -1
- package/dist/admin/legacy/components/TableList/TableList.js.map +1 -1
- package/dist/admin/legacy/components/TableList/TableList.mjs +3 -1
- package/dist/admin/legacy/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/legacy/components/TableList/TableRows.js +3 -1
- package/dist/admin/legacy/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/legacy/components/TableList/TableRows.mjs +3 -1
- package/dist/admin/legacy/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js +3 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs +3 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.js +2 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.mjs +2 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.js +2 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.js.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs +2 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.js +2 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs +2 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.js +2 -1
- package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.mjs +2 -1
- package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.js +3 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +3 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/DateRangeCalendar.js +10 -7
- package/dist/admin/pages/Assets/components/DateRangeCalendar.js.map +1 -1
- package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs +10 -7
- package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js +4 -2
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +5 -3
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FilterBadges.js +32 -3
- package/dist/admin/pages/Assets/components/FilterBadges.js.map +1 -1
- package/dist/admin/pages/Assets/components/FilterBadges.mjs +33 -4
- package/dist/admin/pages/Assets/components/FilterBadges.mjs.map +1 -1
- package/dist/admin/services/api.js +15 -5
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +15 -5
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/src/components/MediaLibraryInput/AddAssetMenu.d.ts +19 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetDropZone.d.ts +13 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetRow.d.ts +15 -0
- package/dist/admin/src/components/MediaLibraryInput/MediaLibraryInput.d.ts +26 -0
- package/dist/admin/src/components/MediaLibraryInput/NoLibraryAccessDialog.d.ts +10 -0
- package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +1 -0
- package/dist/admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.d.ts +1 -1
- package/dist/admin/src/legacy/pages/App/components/BulkActions.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +6 -0
- package/dist/admin/src/utils/allowedMediaTypes.d.ts +16 -0
- package/dist/admin/translations/ca.json.js +3 -3
- package/dist/admin/translations/ca.json.mjs +3 -3
- package/dist/admin/translations/da.json.js +1 -1
- package/dist/admin/translations/da.json.mjs +1 -1
- package/dist/admin/translations/de.json.js +1 -1
- package/dist/admin/translations/de.json.mjs +1 -1
- package/dist/admin/translations/en.json.js +9 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +9 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -1
- package/dist/admin/translations/es.json.mjs +1 -1
- package/dist/admin/translations/sk.json.js +2 -2
- package/dist/admin/translations/sk.json.mjs +2 -2
- package/dist/admin/translations/tr.json.js +2 -2
- package/dist/admin/translations/tr.json.mjs +2 -2
- package/dist/admin/translations/zh-Hans.json.js +1 -1
- package/dist/admin/translations/zh-Hans.json.mjs +1 -1
- package/dist/admin/translations/zh.json.js +2 -2
- package/dist/admin/translations/zh.json.mjs +2 -2
- package/dist/admin/utils/allowedMediaTypes.js +42 -0
- package/dist/admin/utils/allowedMediaTypes.js.map +1 -0
- package/dist/admin/utils/allowedMediaTypes.mjs +39 -0
- package/dist/admin/utils/allowedMediaTypes.mjs.map +1 -0
- package/dist/server/config.js +6 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +6 -0
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/upload.js.map +1 -1
- package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
- package/dist/server/mcp/ambient-instance.js +7 -5
- package/dist/server/mcp/ambient-instance.js.map +1 -1
- package/dist/server/mcp/ambient-instance.mjs +7 -5
- package/dist/server/mcp/ambient-instance.mjs.map +1 -1
- package/dist/server/mcp/handlers/folder-handlers.js +4 -16
- package/dist/server/mcp/handlers/folder-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/folder-handlers.mjs +5 -17
- package/dist/server/mcp/handlers/folder-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/read-handlers.js +6 -14
- package/dist/server/mcp/handlers/read-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/read-handlers.mjs +7 -15
- package/dist/server/mcp/handlers/read-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/write-handlers.js +3 -13
- package/dist/server/mcp/handlers/write-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/write-handlers.mjs +3 -13
- package/dist/server/mcp/handlers/write-handlers.mjs.map +1 -1
- package/dist/server/mcp/register-upload-mcp-tools.js +215 -195
- package/dist/server/mcp/register-upload-mcp-tools.js.map +1 -1
- package/dist/server/mcp/register-upload-mcp-tools.mjs +215 -195
- package/dist/server/mcp/register-upload-mcp-tools.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js +33 -14
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +33 -14
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/src/config.d.ts +3 -0
- package/dist/server/src/config.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/ambient-instance.d.ts +7 -5
- package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/folder-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/read-handlers.d.ts +3 -2
- package/dist/server/src/mcp/handlers/read-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/write-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/register-upload-mcp-tools.d.ts +9 -14
- package/dist/server/src/mcp/register-upload-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
- package/dist/server/src/types.d.ts +1 -0
- package/dist/server/src/types.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditAssetContent.mjs","sources":["../../../../../admin/src/legacy/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n initialFolderId?: string | number | null;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nconst toFolderId = (value: string | number | null | undefined): number | undefined => {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n initialFolderId = null,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id ?? toFolderId(initialFolderId);\n const initialFormData: FormInitialData = !folderStructureIsLoading\n ? {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n }\n : {};\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","toFolderId","value","undefined","Number","isFinite","parsed","EditAssetContent","onClose","asset","initialFolderId","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditAssetContent.mjs","sources":["../../../../../admin/src/legacy/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../shared/contracts/files';\n\nconst EMPTY_OMIT_FIELDS: NonNullable<EditAssetContentProps['omitFields']> = [];\nconst EMPTY_OMIT_ACTIONS: NonNullable<EditAssetContentProps['omitActions']> = [];\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n initialFolderId?: string | number | null;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nconst toFolderId = (value: string | number | null | undefined): number | undefined => {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n initialFolderId = null,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = EMPTY_OMIT_FIELDS,\n omitActions = EMPTY_OMIT_ACTIONS,\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id ?? toFolderId(initialFolderId);\n const initialFormData: FormInitialData = !folderStructureIsLoading\n ? {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n }\n : {};\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["EMPTY_OMIT_FIELDS","EMPTY_OMIT_ACTIONS","LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","toFolderId","value","undefined","Number","isFinite","parsed","EditAssetContent","onClose","asset","initialFolderId","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterList.js","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n
|
|
1
|
+
{"version":3,"file":"FilterList.js","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n string | NumberKeyedObject | Record<string, string | NumberKeyedObject> | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterList.mjs","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n
|
|
1
|
+
{"version":3,"file":"FilterList.mjs","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n string | NumberKeyedObject | Record<string, string | NumberKeyedObject> | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPopover.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n | 'mime'\n | 'createdAt'\n | 'updatedAt'\n | '$contains'\n | '$notContains'\n | '$eq'\n | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAwDO,MAAMA,aAAAA,GAAgB,CAAC,EAC5BC,gBAAgB,EAChBC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACW,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAM,CAACC,YAAAA,EAAcC,eAAAA,CAAgB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC;QACrDC,IAAAA,EAAM,WAAA;QACNC,MAAAA,EAAQ,KAAA;QACRC,KAAAA,EAAO;AACT,KAAA,CAAA;AAEA,IAAA,MAAMC,0BAA0B,CAACD,KAAAA,GAAAA;QAC/B,MAAME,SAAAA,GAAYd,iBAAiBe,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAEN,IAAI,KAAKE,KAAAA,CAAAA;AAC1D,QAAA,IAAI,CAACE,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;QACA,MAAM,EACJG,aAAa,EAAEC,IAAI,EAAEC,OAAO,EAAE,EAC/B,GAAGL,SAAAA;AACJ,QAAA,IAAIM,WAAAA,GAAc,EAAA;AAElB,QAAA,IAAIF,SAAS,aAAA,EAAe;AAC1BE,YAAAA,WAAAA,GAAcD,OAAAA,GAAU,CAAA,CAAE,CAACP,KAAAA,IAAS,EAAA;AACtC,QAAA;AAEA,QAAA,MAAMD,SAASU,2BAAAA,CAAcP,SAAAA,CAAU,CAAC,CAAA,CAAE,CAACF,KAAK;QAEhDL,eAAAA,CAAgB;AAAEG,YAAAA,IAAAA,EAAME,MAAMU,QAAQ,EAAA;AAAIX,YAAAA,MAAAA;YAAQC,KAAAA,EAAOQ;AAAY,SAAA,CAAA;AACvE,IAAA,CAAA;AAEA,IAAA,MAAMG,uBAAuB,CAACC,QAAAA,GAAAA;QAC5B,IAAIlB,YAAAA,CAAaI,IAAI,KAAK,MAAA,EAAQ;YAChCH,eAAAA,CAAgB,CAACkB,QAAU;AAAE,oBAAA,GAAGA,IAAI;AAAEd,oBAAAA,MAAAA,EAAQa,SAASF,QAAQ,EAAA;oBAAIV,KAAAA,EAAO;iBAAQ,CAAA,CAAA;QACpF,CAAA,MAAO;YACLL,eAAAA,CAAgB,CAACkB,QAAU;AAAE,oBAAA,GAAGA,IAAI;AAAEd,oBAAAA,MAAAA,EAAQa,SAASF,QAAQ,EAAA;oBAAIV,KAAAA,EAAO;iBAAG,CAAA,CAAA;AAC/E,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMc,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,QAAAA,CAAAA,CAAEE,eAAe,EAAA;QAEjB,MAAM,EAAEjB,KAAK,EAAE,GAAGN,YAAAA;AAElB,QAAA,IAAIM,KAAAA,EAAO;YACT,IAAIN,YAAAA,CAAaI,IAAI,KAAK,MAAA,EAAQ;AAChC,gBAAA,MAAMoB,qBAAAA,GAAwB7B,OAAAA,CAAQU,MAAM,CAAC,CAACA,MAAAA,GAAAA;AAC5C,oBAAA,OAAOoB,OAAOC,IAAI,CAACrB,MAAAA,CAAO,CAAC,EAAE,KAAK,MAAA;AACpC,gBAAA,CAAA,CAAA;gBAEA,IAAIL,YAAAA,CAAaM,KAAK,KAAK,MAAA,EAAQ;AACjC,oBAAA,MAAMqB,sBAAAA,GAAyBhC,OAAAA,CAAQU,MAAM,CAAC,CAACA,MAAAA,GAAAA;AAC7C,wBAAA,OAAOoB,OAAOC,IAAI,CAACrB,MAAAA,CAAO,CAAC,EAAE,KAAK,MAAA;AACpC,oBAAA,CAAA,CAAA;AAEA,oBAAA,IAAIuB,gBAAAA,GAAmB,KAAA;oBAEvB,IAAIC,WAAAA;oBAEJ,IAAI7B,YAAAA,CAAaK,MAAM,KAAK,WAAA,EAAa;wBACvCuB,gBAAAA,GACEJ,qBAAAA,CAAsBf,IAAI,CAAC,CAACJ,MAAAA,GAAAA;AAC1B,4BAAA,IAAI,OAAOA,MAAAA,CAAOyB,IAAI,EAAEC,IAAAA,KAAS,QAAA,IAAY,CAACC,KAAAA,CAAMC,OAAO,CAAC5B,MAAAA,CAAOyB,IAAI,EAAEC,IAAAA,CAAAA,EAAO;AAC9E,gCAAA,OAAO1B,MAAAA,CAAOyB,IAAI,EAAEC,IAAAA,EAAMG,SAAAA,KAAcC,SAAAA;AAC1C,4BAAA;wBACF,CAAA,CAAA,KAAOA,SAAAA;wBAETN,WAAAA,GAAc;4BACZC,IAAAA,EAAM;gCACJC,IAAAA,EAAM;oCACJG,SAAAA,EAAW;AAAC,wCAAA,OAAA;AAAS,wCAAA;AAAQ;AAC/B;AACF;AACF,yBAAA;oBACF,CAAA,MAAO;wBACLN,gBAAAA,GACEJ,qBAAAA,CAAsBf,IAAI,CAAC,CAACJ,MAAAA,GAAAA;AAC1B,4BAAA,OAAO2B,KAAAA,CAAMC,OAAO,CAAC5B,MAAAA,CAAOyB,IAAI,EAAEI,SAAAA,CAAAA;wBACpC,CAAA,CAAA,KAAOC,SAAAA;wBAETN,WAAAA,GAAc;4BACZC,IAAAA,EAAM;gCACJI,SAAAA,EAAW;AAAC,oCAAA,OAAA;AAAS,oCAAA;AAAQ;AAC/B;AACF,yBAAA;AACF,oBAAA;AAEA,oBAAA,IAAIN,gBAAAA,EAAkB;AACpB/B,wBAAAA,QAAAA,EAAAA;AAEA,wBAAA;AACF,oBAAA;AAEA,oBAAA,MAAMuC,WAAAA,GAAc;AAAIT,wBAAAA,GAAAA,sBAAAA;AAAwBE,wBAAAA;AAAY,qBAAA;oBAC5DjC,QAAAA,CAASwC,WAAAA,CAAAA;AAETvC,oBAAAA,QAAAA,EAAAA;AAEA,oBAAA;AACF,gBAAA;AAEA,gBAAA,MAAMwC,SAAAA,GACJb,qBAAAA,CAAsBf,IAAI,CAAC,CAACJ,MAAAA,GAAAA;oBAC1B,MAAMiC,kBAAAA,GAAqBtC,aAAaK,MAAM;oBAC9C,OACEA,MAAAA,CAAOyB,IAAI,IACXzB,MAAAA,CAAOyB,IAAI,CAACQ,kBAAAA,CAA+C,KAAKtC,YAAAA,CAAaM,KAAK;gBAEtF,CAAA,CAAA,KAAO6B,SAAAA;;AAGT,gBAAA,IAAIE,SAAAA,EAAW;AACbxC,oBAAAA,QAAAA,EAAAA;AAEA,oBAAA;AACF,gBAAA;AAEA,gBAAA,MAAM0C,kBAAAA,GAAqB5C,OAAAA,CAAQU,MAAM,CAAC,CAACA,MAAAA,GAAAA;AACzC,oBAAA,MAAMmC,aAAaf,MAAAA,CAAOC,IAAI,CAACrB,MAAAA,CAAO,CAAC,CAAA,CAAE;AAEzC,oBAAA,IAAImC,eAAe,MAAA,EAAQ;wBACzB,OAAO,IAAA;AACT,oBAAA;AAEA,oBAAA,IACE,OAAOnC,MAAAA,CAAOyB,IAAI,EAAEC,IAAAA,KAAS,QAAA,IAC7B,CAACC,KAAAA,CAAMC,OAAO,CAAC5B,MAAAA,CAAOyB,IAAI,EAAEC,IAAAA,CAAAA,IAC5B1B,MAAAA,CAAOyB,IAAI,EAAEC,IAAAA,EAAMG,cAAcC,SAAAA,EACjC;wBACA,OAAO,KAAA;AACT,oBAAA;AAEA,oBAAA,IAAIH,KAAAA,CAAMC,OAAO,CAAC5B,MAAAA,EAAQyB,MAAMI,SAAAA,CAAAA,EAAY;wBAC1C,OAAO,KAAA;AACT,oBAAA;oBAEA,OAAO,IAAA;AACT,gBAAA,CAAA,CAAA;AAEA,gBAAA,MAAMO,cAAAA,GAAiBzC,YAAAA,CAAaK,MAAM,KAAK,cAAc,cAAA,GAAiB,WAAA;AAE9E,gBAAA,MAAMqC,mBAAAA,GAAsBH,kBAAAA,CAAmBI,SAAS,CAAC,CAACtC,MAAAA,GAAAA;AACxD,oBAAA,OAAOA,OAAOyB,IAAI,GAAGW,cAAAA,CAAe,KAAKzC,aAAaM,KAAK;AAC7D,gBAAA,CAAA,CAAA;gBACA,MAAMsC,iBAAAA,GAAoBF,wBAAwB,EAAC;AAEnD,gBAAA,MAAMb,WAAAA,GAAc;oBAAE,CAAC7B,YAAAA,CAAaI,IAAI,GAAG;AAAE,wBAAA,CAACJ,YAAAA,CAAaK,MAAM,GAAGL,aAAaM;AAAM;AAAE,iBAAA;AAEzF,gBAAA,IAAI,CAACsC,iBAAAA,EAAmB;AACtB,oBAAA,MAAMR,WAAAA,GAAc;AAAIG,wBAAAA,GAAAA,kBAAAA;AAAoBV,wBAAAA;AAAY,qBAAA;oBAExDjC,QAAAA,CAASwC,WAAAA,CAAAA;AAETvC,oBAAAA,QAAAA,EAAAA;AAEA,oBAAA;AACF,gBAAA;AAEA,gBAAA,IAAI+C,iBAAAA,EAAmB;oBACrB,MAAMR,WAAAA,GAAcG,mBAAmBM,KAAK,EAAA;oBAC5CT,WAAAA,CAAYU,MAAM,CAACJ,mBAAAA,EAAqB,CAAA,EAAGb,WAAAA,CAAAA;oBAC3CjC,QAAAA,CAASwC,WAAAA,CAAAA;AAETvC,oBAAAA,QAAAA,EAAAA;AACF,gBAAA;AAEA,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMwC,SAAAA,GACJ1C,OAAAA,CAAQc,IAAI,CAAC,CAACJ,MAAAA,GAAAA;gBACZ,MAAM0C,gBAAAA,GAAmB/C,aAAaI,IAAI;gBAQ1C,OACEC,MAAM,CAAC0C,gBAAAA,CAAuD,IAC9D1C,MAAM,CAAC0C,gBAAAA,CAAuD,GAC5DA,gBAAAA,CACD,KAAKzC,KAAAA;YAEV,CAAA,CAAA,KAAO6B,SAAAA;AAET,YAAA,IAAI,CAACE,SAAAA,EAAW;AACd,gBAAA,MAAMR,WAAAA,GAAc;oBAAE,CAAC7B,YAAAA,CAAaI,IAAI,GAAG;wBAAE,CAACJ,YAAAA,CAAaK,MAAM,GAAGC;AAAM;AAAE,iBAAA;AAE5E,gBAAA,MAAM8B,WAAAA,GAAc;AAAIzC,oBAAAA,GAAAA,OAAAA;AAASkC,oBAAAA;AAAY,iBAAA;gBAE7CjC,QAAAA,CAASwC,WAAAA,CAAAA;AACX,YAAA;AACF,QAAA;AAEAvC,QAAAA,QAAAA,EAAAA;AACF,IAAA,CAAA;IAEA,MAAMmD,aAAAA,GAAgBtD,gBAAAA,CAAiBe,IAAI,CAAC,CAACJ,SAAWA,MAAAA,CAAOD,IAAI,KAAKJ,YAAAA,CAAaI,IAAI,CAAA;IAEzF,qBACE6C,cAAA,CAACC,qBAAQC,OAAO,EAAA;QAACC,UAAAA,EAAY,CAAA;QAAGC,KAAAA,EAAO;YAAEC,MAAAA,EAAQ;AAAI,SAAA;AACnD,QAAA,QAAA,gBAAAL,cAAA,CAACM,MAAAA,EAAAA;YAAK3D,QAAAA,EAAUwB,YAAAA;AACd,YAAA,QAAA,gBAAAoC,eAAA,CAACC,iBAAAA,EAAAA;gBAAKC,OAAAA,EAAS,CAAA;gBAAGC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,SAAA;gBAAUC,GAAAA,EAAK,CAAA;gBAAGR,KAAAA,EAAO;oBAAES,QAAAA,EAAU;AAAI,iBAAA;;kCACvFb,cAAA,CAACc,gBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAd,cAAA,CAACe,yBAAAA,EAAAA;AACCC,4BAAAA,YAAAA,EAAYnE,aAAAA,CAAc;gCACxBoE,EAAAA,EAAI,wBAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA,CAAA;4BACA/D,IAAAA,EAAK,MAAA;4BACLgE,IAAAA,EAAK,GAAA;4BACLC,QAAAA,EAAU9D,uBAAAA;AACVD,4BAAAA,KAAAA,EAAON,aAAaI,IAAI;sCAEvBV,gBAAAA,CAAiB4E,GAAG,CAAC,CAACjE,MAAAA,GAAAA;AACrB,gCAAA,qBACE4C,cAAA,CAACsB,+BAAAA,EAAAA;AAAqCjE,oCAAAA,KAAAA,EAAOD,OAAOD,IAAI;AACrDC,oCAAAA,QAAAA,EAAAA,MAAAA,CAAOmE,SAAS,EAAEC;AADIpE,iCAAAA,EAAAA,MAAAA,CAAOD,IAAI,CAAA;AAIxC,4BAAA,CAAA;;;kCAGJ6C,cAAA,CAACc,gBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAd,cAAA,CAACe,yBAAAA,EAAAA;AACCC,4BAAAA,YAAAA,EAAYnE,aAAAA,CAAc;gCACxBoE,EAAAA,EAAI,yBAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA,CAAA;4BACA/D,IAAAA,EAAK,QAAA;4BACLgE,IAAAA,EAAK,GAAA;AACL9D,4BAAAA,KAAAA,EAAON,aAAaK,MAAM;4BAC1BgE,QAAAA,EAAUpD,oBAAAA;sCAETF,2BAAAA,CAAciC,aAAAA,CAAAA,CAAgBsB,GAAG,CAAC,CAACI,MAAAA,GAAAA;AAClC,gCAAA,qBACEzB,cAAA,CAACsB,+BAAAA,EAAAA;AAAsCjE,oCAAAA,KAAAA,EAAOoE,OAAOpE,KAAK;AACvDR,oCAAAA,QAAAA,EAAAA,aAAAA,CAAc4E,OAAOC,SAAS;AADRD,iCAAAA,EAAAA,MAAAA,CAAOpE,KAAK,CAAA;AAIzC,4BAAA,CAAA;;;kCAGJ2C,cAAA,CAACc,gBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAd,cAAA,CAAC2B,iCAAAA,EAAAA;AACE,4BAAA,GAAG5B,eAAewB,SAAS;AAC3B,4BAAA,GAAGxB,eAAerC,WAAW;AAC9BL,4BAAAA,KAAAA,EAAON,aAAaM,KAAK;AACzB+D,4BAAAA,QAAAA,EAAU,CAAC/D,KAAAA,GAAUL,eAAAA,CAAgB,CAACkB,QAAU;AAAE,wCAAA,GAAGA,IAAI;AAAEb,wCAAAA;qCAAM,CAAA;;;kCAGrE2C,cAAA,CAACc,gBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAd,cAAA,CAAC4B,mBAAAA,EAAAA;4BAAOT,IAAAA,EAAK,GAAA;4BAAIU,OAAAA,EAAQ,WAAA;AAAYC,4BAAAA,SAAAA,gBAAW9B,cAAA,CAAC+B,UAAAA,EAAAA,EAAAA,CAAAA;4BAASpE,IAAAA,EAAK,QAAA;4BAASqE,SAAS,EAAA,IAAA;sCAC9EnF,aAAAA,CAAc;gCAAEoE,EAAAA,EAAI,sBAAA;gCAAwBC,cAAAA,EAAgB;AAAa,6BAAA;;;;;;;AAOxF;;;;"}
|
|
1
|
+
{"version":3,"file":"FilterPopover.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n string[] | string | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n 'mime' | 'createdAt' | 'updatedAt' | '$contains' | '$notContains' | '$eq' | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPopover.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n | 'mime'\n | 'createdAt'\n | 'updatedAt'\n | '$contains'\n | '$notContains'\n | '$eq'\n | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterPopover.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n string[] | string | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n 'mime' | 'createdAt' | 'updatedAt' | '$contains' | '$notContains' | '$eq' | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var designSystem = require('@strapi/design-system');
|
|
5
5
|
var reactIntl = require('react-intl');
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const EMPTY_OPTIONS = [];
|
|
8
|
+
const FilterValueInput = ({ label = '', onChange, options = EMPTY_OPTIONS, type, value = '' })=>{
|
|
8
9
|
const { formatMessage } = reactIntl.useIntl();
|
|
9
10
|
if (type === 'date') {
|
|
10
11
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.DateTimePicker, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterValueInput.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options =
|
|
1
|
+
{"version":3,"file":"FilterValueInput.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nconst EMPTY_OPTIONS: NonNullable<FilterValueInputProps['options']> = [];\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options = EMPTY_OPTIONS,\n type,\n value = '',\n}: FilterValueInputProps) => {\n const { formatMessage } = useIntl();\n\n if (type === 'date') {\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n aria-label={label}\n name=\"datetimepicker\"\n onChange={(date) => {\n const formattedDate = date ? new Date(date).toISOString() : '';\n\n onChange(formattedDate);\n }}\n onClear={() => onChange('')}\n value={value ? new Date(value) : undefined}\n />\n );\n }\n\n return (\n <SingleSelect\n aria-label={label}\n onChange={(value: string | number) => onChange(value.toString())}\n value={value}\n >\n {options?.map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {option.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n"],"names":["EMPTY_OPTIONS","FilterValueInput","label","onChange","options","type","value","formatMessage","useIntl","_jsx","DateTimePicker","clearLabel","id","defaultMessage","aria-label","name","date","formattedDate","Date","toISOString","onClear","undefined","SingleSelect","toString","map","option","SingleSelectOption"],"mappings":";;;;;;AAGA,MAAMA,gBAA+D,EAAE;MAU1DC,gBAAAA,GAAmB,CAAC,EAC/BC,KAAAA,GAAQ,EAAE,EACVC,QAAQ,EACRC,OAAAA,GAAUJ,aAAa,EACvBK,IAAI,EACJC,KAAAA,GAAQ,EAAE,EACY,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,IAAIH,SAAS,MAAA,EAAQ;AACnB,QAAA,qBACEI,cAAA,CAACC,2BAAAA,EAAAA;AACCC,YAAAA,UAAAA,EAAYJ,aAAAA,CAAc;gBAAEK,EAAAA,EAAI,YAAA;gBAAcC,cAAAA,EAAgB;AAAQ,aAAA,CAAA;YACtEC,YAAAA,EAAYZ,KAAAA;YACZa,IAAAA,EAAK,gBAAA;AACLZ,YAAAA,QAAAA,EAAU,CAACa,IAAAA,GAAAA;AACT,gBAAA,MAAMC,gBAAgBD,IAAAA,GAAO,IAAIE,IAAAA,CAAKF,IAAAA,CAAAA,CAAMG,WAAW,EAAA,GAAK,EAAA;gBAE5DhB,QAAAA,CAASc,aAAAA,CAAAA;AACX,YAAA,CAAA;AACAG,YAAAA,OAAAA,EAAS,IAAMjB,QAAAA,CAAS,EAAA,CAAA;YACxBG,KAAAA,EAAOA,KAAAA,GAAQ,IAAIY,IAAAA,CAAKZ,KAAAA,CAAAA,GAASe;;AAGvC,IAAA;AAEA,IAAA,qBACEZ,cAAA,CAACa,yBAAAA,EAAAA;QACCR,YAAAA,EAAYZ,KAAAA;AACZC,QAAAA,QAAAA,EAAU,CAACG,KAAAA,GAA2BH,QAAAA,CAASG,KAAAA,CAAMiB,QAAQ,EAAA,CAAA;QAC7DjB,KAAAA,EAAOA,KAAAA;AAENF,QAAAA,QAAAA,EAAAA,OAAAA,EAASoB,IAAI,CAACC,MAAAA,GAAAA;AACb,YAAA,qBACEhB,cAAA,CAACiB,+BAAAA,EAAAA;AAAsCpB,gBAAAA,KAAAA,EAAOmB,OAAOnB,KAAK;AACvDmB,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOvB;AADeuB,aAAAA,EAAAA,MAAAA,CAAOnB,KAAK,CAAA;AAIzC,QAAA,CAAA;;AAGN;;;;"}
|
|
@@ -2,7 +2,8 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { DateTimePicker, SingleSelect, SingleSelectOption } from '@strapi/design-system';
|
|
3
3
|
import { useIntl } from 'react-intl';
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const EMPTY_OPTIONS = [];
|
|
6
|
+
const FilterValueInput = ({ label = '', onChange, options = EMPTY_OPTIONS, type, value = '' })=>{
|
|
6
7
|
const { formatMessage } = useIntl();
|
|
7
8
|
if (type === 'date') {
|
|
8
9
|
return /*#__PURE__*/ jsx(DateTimePicker, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterValueInput.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options =
|
|
1
|
+
{"version":3,"file":"FilterValueInput.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nconst EMPTY_OPTIONS: NonNullable<FilterValueInputProps['options']> = [];\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options = EMPTY_OPTIONS,\n type,\n value = '',\n}: FilterValueInputProps) => {\n const { formatMessage } = useIntl();\n\n if (type === 'date') {\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n aria-label={label}\n name=\"datetimepicker\"\n onChange={(date) => {\n const formattedDate = date ? new Date(date).toISOString() : '';\n\n onChange(formattedDate);\n }}\n onClear={() => onChange('')}\n value={value ? new Date(value) : undefined}\n />\n );\n }\n\n return (\n <SingleSelect\n aria-label={label}\n onChange={(value: string | number) => onChange(value.toString())}\n value={value}\n >\n {options?.map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {option.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n"],"names":["EMPTY_OPTIONS","FilterValueInput","label","onChange","options","type","value","formatMessage","useIntl","_jsx","DateTimePicker","clearLabel","id","defaultMessage","aria-label","name","date","formattedDate","Date","toISOString","onClear","undefined","SingleSelect","toString","map","option","SingleSelectOption"],"mappings":";;;;AAGA,MAAMA,gBAA+D,EAAE;MAU1DC,gBAAAA,GAAmB,CAAC,EAC/BC,KAAAA,GAAQ,EAAE,EACVC,QAAQ,EACRC,OAAAA,GAAUJ,aAAa,EACvBK,IAAI,EACJC,KAAAA,GAAQ,EAAE,EACY,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,IAAIH,SAAS,MAAA,EAAQ;AACnB,QAAA,qBACEI,GAAA,CAACC,cAAAA,EAAAA;AACCC,YAAAA,UAAAA,EAAYJ,aAAAA,CAAc;gBAAEK,EAAAA,EAAI,YAAA;gBAAcC,cAAAA,EAAgB;AAAQ,aAAA,CAAA;YACtEC,YAAAA,EAAYZ,KAAAA;YACZa,IAAAA,EAAK,gBAAA;AACLZ,YAAAA,QAAAA,EAAU,CAACa,IAAAA,GAAAA;AACT,gBAAA,MAAMC,gBAAgBD,IAAAA,GAAO,IAAIE,IAAAA,CAAKF,IAAAA,CAAAA,CAAMG,WAAW,EAAA,GAAK,EAAA;gBAE5DhB,QAAAA,CAASc,aAAAA,CAAAA;AACX,YAAA,CAAA;AACAG,YAAAA,OAAAA,EAAS,IAAMjB,QAAAA,CAAS,EAAA,CAAA;YACxBG,KAAAA,EAAOA,KAAAA,GAAQ,IAAIY,IAAAA,CAAKZ,KAAAA,CAAAA,GAASe;;AAGvC,IAAA;AAEA,IAAA,qBACEZ,GAAA,CAACa,YAAAA,EAAAA;QACCR,YAAAA,EAAYZ,KAAAA;AACZC,QAAAA,QAAAA,EAAU,CAACG,KAAAA,GAA2BH,QAAAA,CAASG,KAAAA,CAAMiB,QAAQ,EAAA,CAAA;QAC7DjB,KAAAA,EAAOA,KAAAA;AAENF,QAAAA,QAAAA,EAAAA,OAAAA,EAASoB,IAAI,CAACC,MAAAA,GAAAA;AACb,YAAA,qBACEhB,GAAA,CAACiB,kBAAAA,EAAAA;AAAsCpB,gBAAAA,KAAAA,EAAOmB,OAAOnB,KAAK;AACvDmB,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOvB;AADeuB,aAAAA,EAAAA,MAAAA,CAAOnB,KAAK,CAAA;AAIzC,QAAA,CAAA;;AAGN;;;;"}
|
|
@@ -32,12 +32,14 @@ const STEPS = {
|
|
|
32
32
|
AssetUpload: 'UploadAsset',
|
|
33
33
|
FolderCreate: 'FolderCreate'
|
|
34
34
|
};
|
|
35
|
-
const
|
|
35
|
+
const DEFAULT_ALLOWED_TYPES = [
|
|
36
36
|
'files',
|
|
37
37
|
'images',
|
|
38
38
|
'videos',
|
|
39
39
|
'audios'
|
|
40
|
-
]
|
|
40
|
+
];
|
|
41
|
+
const EMPTY_INITIALLY_SELECTED_ASSETS = [];
|
|
42
|
+
const MediaLibraryDialog = ({ onClose, onSelectAssets, allowedTypes = DEFAULT_ALLOWED_TYPES, multiple = true, initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS })=>{
|
|
41
43
|
const [step, setStep] = React__namespace.useState(STEPS.AssetSelect);
|
|
42
44
|
const [folderId, setFolderId] = React__namespace.useState(null);
|
|
43
45
|
switch(step){
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibraryDialog.js","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes =
|
|
1
|
+
{"version":3,"file":"MediaLibraryDialog.js","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst DEFAULT_ALLOWED_TYPES: NonNullable<MediaLibraryDialogProps['allowedTypes']> = [\n 'files',\n 'images',\n 'videos',\n 'audios',\n];\nconst EMPTY_INITIALLY_SELECTED_ASSETS: NonNullable<\n MediaLibraryDialogProps['initiallySelectedAssets']\n> = [];\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes = DEFAULT_ALLOWED_TYPES,\n multiple = true,\n initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS,\n}: MediaLibraryDialogProps) => {\n const [step, setStep] = React.useState(STEPS.AssetSelect);\n const [folderId, setFolderId] = React.useState<number | null>(null);\n\n switch (step) {\n case STEPS.AssetSelect:\n return (\n <AssetDialog\n allowedTypes={allowedTypes}\n folderId={folderId}\n open\n onClose={onClose}\n onValidate={onSelectAssets}\n initiallySelectedAssets={initiallySelectedAssets}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folderId) => setFolderId(folderId)}\n multiple={multiple}\n />\n );\n\n case STEPS.FolderCreate:\n return (\n <EditFolderDialog\n open\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n );\n\n default:\n return (\n <UploadAssetDialog open onClose={() => setStep(STEPS.AssetSelect)} folderId={folderId} />\n );\n }\n};\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","DEFAULT_ALLOWED_TYPES","EMPTY_INITIALLY_SELECTED_ASSETS","MediaLibraryDialog","onClose","onSelectAssets","allowedTypes","multiple","initiallySelectedAssets","step","setStep","React","useState","folderId","setFolderId","_jsx","AssetDialog","open","onValidate","onAddAsset","onAddFolder","onChangeFolder","EditFolderDialog","parentFolderId","UploadAssetDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAOA,MAAMA,KAAAA,GAAQ;IACZC,WAAAA,EAAa,aAAA;IACbC,WAAAA,EAAa,aAAA;IACbC,YAAAA,EAAc;AAChB,CAAA;AAKA,MAAMC,qBAAAA,GAA8E;AAClF,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA;AACD,CAAA;AACD,MAAMC,kCAEF,EAAE;MASOC,kBAAAA,GAAqB,CAAC,EACjCC,OAAO,EACPC,cAAc,EACdC,YAAAA,GAAeL,qBAAqB,EACpCM,QAAAA,GAAW,IAAI,EACfC,uBAAAA,GAA0BN,+BAA+B,EACjC,GAAA;IACxB,MAAM,CAACO,MAAMC,OAAAA,CAAQ,GAAGC,iBAAMC,QAAQ,CAACf,MAAMC,WAAW,CAAA;AACxD,IAAA,MAAM,CAACe,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAE9D,OAAQH,IAAAA;AACN,QAAA,KAAKZ,MAAMC,WAAW;AACpB,YAAA,qBACEiB,cAAA,CAACC,uBAAAA,EAAAA;gBACCV,YAAAA,EAAcA,YAAAA;gBACdO,QAAAA,EAAUA,QAAAA;gBACVI,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAASA,OAAAA;gBACTc,UAAAA,EAAYb,cAAAA;gBACZG,uBAAAA,EAAyBA,uBAAAA;gBACzBW,UAAAA,EAAY,IAAMT,OAAAA,CAAQb,KAAAA,CAAME,WAAW,CAAA;gBAC3CqB,WAAAA,EAAa,IAAMV,OAAAA,CAAQb,KAAAA,CAAMG,YAAY,CAAA;gBAC7CqB,cAAAA,EAAgB,CAACR,WAAaC,WAAAA,CAAYD,QAAAA,CAAAA;gBAC1CN,QAAAA,EAAUA;;AAIhB,QAAA,KAAKV,MAAMG,YAAY;AACrB,YAAA,qBACEe,cAAA,CAACO,iCAAAA,EAAAA;gBACCL,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBACxCyB,cAAAA,EAAgBV;;AAItB,QAAA;AACE,YAAA,qBACEE,cAAA,CAACS,mCAAAA,EAAAA;gBAAkBP,IAAI,EAAA,IAAA;gBAACb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBAAGe,QAAAA,EAAUA;;AAEnF;AACF;;;;"}
|
|
@@ -10,12 +10,14 @@ const STEPS = {
|
|
|
10
10
|
AssetUpload: 'UploadAsset',
|
|
11
11
|
FolderCreate: 'FolderCreate'
|
|
12
12
|
};
|
|
13
|
-
const
|
|
13
|
+
const DEFAULT_ALLOWED_TYPES = [
|
|
14
14
|
'files',
|
|
15
15
|
'images',
|
|
16
16
|
'videos',
|
|
17
17
|
'audios'
|
|
18
|
-
]
|
|
18
|
+
];
|
|
19
|
+
const EMPTY_INITIALLY_SELECTED_ASSETS = [];
|
|
20
|
+
const MediaLibraryDialog = ({ onClose, onSelectAssets, allowedTypes = DEFAULT_ALLOWED_TYPES, multiple = true, initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS })=>{
|
|
19
21
|
const [step, setStep] = React.useState(STEPS.AssetSelect);
|
|
20
22
|
const [folderId, setFolderId] = React.useState(null);
|
|
21
23
|
switch(step){
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibraryDialog.mjs","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes =
|
|
1
|
+
{"version":3,"file":"MediaLibraryDialog.mjs","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst DEFAULT_ALLOWED_TYPES: NonNullable<MediaLibraryDialogProps['allowedTypes']> = [\n 'files',\n 'images',\n 'videos',\n 'audios',\n];\nconst EMPTY_INITIALLY_SELECTED_ASSETS: NonNullable<\n MediaLibraryDialogProps['initiallySelectedAssets']\n> = [];\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes = DEFAULT_ALLOWED_TYPES,\n multiple = true,\n initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS,\n}: MediaLibraryDialogProps) => {\n const [step, setStep] = React.useState(STEPS.AssetSelect);\n const [folderId, setFolderId] = React.useState<number | null>(null);\n\n switch (step) {\n case STEPS.AssetSelect:\n return (\n <AssetDialog\n allowedTypes={allowedTypes}\n folderId={folderId}\n open\n onClose={onClose}\n onValidate={onSelectAssets}\n initiallySelectedAssets={initiallySelectedAssets}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folderId) => setFolderId(folderId)}\n multiple={multiple}\n />\n );\n\n case STEPS.FolderCreate:\n return (\n <EditFolderDialog\n open\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n );\n\n default:\n return (\n <UploadAssetDialog open onClose={() => setStep(STEPS.AssetSelect)} folderId={folderId} />\n );\n }\n};\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","DEFAULT_ALLOWED_TYPES","EMPTY_INITIALLY_SELECTED_ASSETS","MediaLibraryDialog","onClose","onSelectAssets","allowedTypes","multiple","initiallySelectedAssets","step","setStep","React","useState","folderId","setFolderId","_jsx","AssetDialog","open","onValidate","onAddAsset","onAddFolder","onChangeFolder","EditFolderDialog","parentFolderId","UploadAssetDialog"],"mappings":";;;;;;AAAA;AAOA,MAAMA,KAAAA,GAAQ;IACZC,WAAAA,EAAa,aAAA;IACbC,WAAAA,EAAa,aAAA;IACbC,YAAAA,EAAc;AAChB,CAAA;AAKA,MAAMC,qBAAAA,GAA8E;AAClF,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA;AACD,CAAA;AACD,MAAMC,kCAEF,EAAE;MASOC,kBAAAA,GAAqB,CAAC,EACjCC,OAAO,EACPC,cAAc,EACdC,YAAAA,GAAeL,qBAAqB,EACpCM,QAAAA,GAAW,IAAI,EACfC,uBAAAA,GAA0BN,+BAA+B,EACjC,GAAA;IACxB,MAAM,CAACO,MAAMC,OAAAA,CAAQ,GAAGC,MAAMC,QAAQ,CAACf,MAAMC,WAAW,CAAA;AACxD,IAAA,MAAM,CAACe,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,KAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAE9D,OAAQH,IAAAA;AACN,QAAA,KAAKZ,MAAMC,WAAW;AACpB,YAAA,qBACEiB,GAAA,CAACC,WAAAA,EAAAA;gBACCV,YAAAA,EAAcA,YAAAA;gBACdO,QAAAA,EAAUA,QAAAA;gBACVI,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAASA,OAAAA;gBACTc,UAAAA,EAAYb,cAAAA;gBACZG,uBAAAA,EAAyBA,uBAAAA;gBACzBW,UAAAA,EAAY,IAAMT,OAAAA,CAAQb,KAAAA,CAAME,WAAW,CAAA;gBAC3CqB,WAAAA,EAAa,IAAMV,OAAAA,CAAQb,KAAAA,CAAMG,YAAY,CAAA;gBAC7CqB,cAAAA,EAAgB,CAACR,WAAaC,WAAAA,CAAYD,QAAAA,CAAAA;gBAC1CN,QAAAA,EAAUA;;AAIhB,QAAA,KAAKV,MAAMG,YAAY;AACrB,YAAA,qBACEe,GAAA,CAACO,gBAAAA,EAAAA;gBACCL,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBACxCyB,cAAAA,EAAgBV;;AAItB,QAAA;AACE,YAAA,qBACEE,GAAA,CAACS,iBAAAA,EAAAA;gBAAkBP,IAAI,EAAA,IAAA;gBAACb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBAAGe,QAAAA,EAAUA;;AAEnF;AACF;;;;"}
|