@strapi/content-manager 0.0.0-next.df5dd4b92e1b046c04ff00d00d76c88ea51b57d4 → 0.0.0-next.e326c69a49373b420f6566c30aca26f4b6274c6a
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/ConfigurationForm/Fields.js +4 -1
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +5 -2
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.mjs +3 -3
- package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/CardDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/ComponentDragPreview.mjs.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.js.map +1 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs +3 -1
- package/dist/admin/components/DragPreviews/RelationDragPreview.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +89 -49
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +91 -51
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +269 -9
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +252 -12
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +24 -3
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +25 -4
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +1 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +1 -0
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/history/components/VersionsList.js +1 -1
- package/dist/admin/history/components/VersionsList.js.map +1 -1
- package/dist/admin/history/components/VersionsList.mjs +1 -1
- package/dist/admin/history/components/VersionsList.mjs.map +1 -1
- package/dist/admin/history/pages/History.js +7 -7
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/pages/History.mjs +7 -7
- package/dist/admin/history/pages/History.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +5 -5
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +6 -6
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/index.js +47 -8
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +47 -9
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/layout.js +28 -33
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +29 -15
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +34 -20
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +36 -22
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Blocker.js +18 -0
- package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/DocumentActions.js +74 -63
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +76 -65
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -3
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -4
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +1 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +20 -6
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +22 -8
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +158 -106
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +161 -109
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +40 -11
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +41 -11
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +22 -7
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +23 -8
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +20 -7
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -7
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +128 -0
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +128 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +221 -203
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +222 -204
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +3 -1
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +3 -1
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +13 -3
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +189 -0
- package/dist/admin/preview/components/InputPopover.js.map +1 -0
- package/dist/admin/preview/components/InputPopover.mjs +167 -0
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
- package/dist/admin/preview/components/PreviewHeader.js +0 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
- package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
- package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
- package/dist/admin/preview/pages/Preview.js +178 -74
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +180 -76
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +56 -0
- package/dist/admin/preview/utils/constants.js.map +1 -0
- package/dist/admin/preview/utils/constants.mjs +52 -0
- package/dist/admin/preview/utils/constants.mjs.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.js +107 -0
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
- package/dist/admin/preview/utils/getSendMessage.js +22 -0
- package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
- package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
- package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
- package/dist/admin/preview/utils/previewScript.js +534 -0
- package/dist/admin/preview/utils/previewScript.js.map +1 -0
- package/dist/admin/preview/utils/previewScript.mjs +532 -0
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
- package/dist/admin/services/api.js +4 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +4 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/documents.js +42 -16
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +42 -16
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/components/LeftMenu.d.ts +3 -1
- package/dist/admin/src/components/Widgets.d.ts +2 -1
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +0 -3
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
- package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
- package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
- package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
- package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +55 -0
- package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
- package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +23 -17
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/api.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +1 -0
- package/dist/admin/translations/en.json.js +12 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +12 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +6 -2
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +6 -2
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +11 -2
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +11 -2
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/utils/api.js +1 -1
- package/dist/admin/utils/api.js.map +1 -1
- package/dist/admin/utils/api.mjs +1 -1
- package/dist/admin/utils/api.mjs.map +1 -1
- package/dist/admin/utils/validation.js +18 -6
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +18 -6
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/relations.js +2 -2
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +2 -2
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +20 -19
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +20 -19
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/homepage/controllers/homepage.js +5 -0
- package/dist/server/homepage/controllers/homepage.js.map +1 -1
- package/dist/server/homepage/controllers/homepage.mjs +5 -0
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
- package/dist/server/homepage/routes/homepage.js +11 -0
- package/dist/server/homepage/routes/homepage.js.map +1 -1
- package/dist/server/homepage/routes/homepage.mjs +11 -0
- package/dist/server/homepage/routes/homepage.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +86 -46
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +86 -46
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js +5 -1
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs +5 -1
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/preview/services/preview.js +4 -0
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs +4 -0
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/services/document-manager.js +3 -0
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +3 -0
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/document-metadata.js +1 -1
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +1 -1
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +11 -0
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +11 -0
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/index.d.ts +7 -0
- package/dist/server/src/homepage/index.d.ts.map +1 -1
- package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts +4 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/index.d.ts +7 -0
- package/dist/server/src/homepage/services/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +7 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +7 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +0 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +13 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/package.json +7 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormLayout.js","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const
|
|
1
|
+
{"version":3,"file":"FormLayout.js","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\n /**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n ${({ theme }) => theme.breakpoints.medium} {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: {\n initial: 4,\n medium: 6,\n },\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const attribute = document.schema?.attributes[field.name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(({ name }) => {\n const attribute = document.schema?.attributes[name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","theme","breakpoints","medium","col","panelStyles","padding","initial","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","large","map","panel","index","some","row","field","type","attribute","attributes","condition","conditions","visible","isVisible","evaluate","s","xs","InputRenderer","Box","gridRowIndex","visibleFields","filter","length","size"],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import 'react';
|
|
3
|
+
import { useForm, createRulesEngine } from '@strapi/admin/strapi-admin';
|
|
3
4
|
import { Grid, Flex, Box } from '@strapi/design-system';
|
|
4
5
|
import { useIntl } from 'react-intl';
|
|
5
6
|
import { styled } from 'styled-components';
|
|
6
7
|
import { InputRenderer as MemoizedInputRenderer } from './InputRenderer.mjs';
|
|
7
8
|
|
|
8
|
-
const RESPONSIVE_CONTAINER_BREAKPOINTS = {
|
|
9
|
-
sm: '27.5rem'
|
|
10
|
-
};
|
|
11
9
|
const ResponsiveGridRoot = styled(Grid.Root)`
|
|
12
10
|
container-type: inline-size;
|
|
13
11
|
`;
|
|
@@ -18,14 +16,17 @@ const ResponsiveGridItem = /**
|
|
|
18
16
|
* for failing to parse the stylesheet.
|
|
19
17
|
*/ process.env.NODE_ENV !== 'test' ? styled(Grid.Item)`
|
|
20
18
|
grid-column: span 12;
|
|
21
|
-
|
|
19
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
22
20
|
${({ col })=>col && `grid-column: span ${col};`}
|
|
23
21
|
}
|
|
24
22
|
` : styled(Grid.Item)`
|
|
25
23
|
grid-column: span 12;
|
|
26
24
|
`;
|
|
27
25
|
const panelStyles = {
|
|
28
|
-
padding:
|
|
26
|
+
padding: {
|
|
27
|
+
initial: 4,
|
|
28
|
+
medium: 6
|
|
29
|
+
},
|
|
29
30
|
borderColor: 'neutral150',
|
|
30
31
|
background: 'neutral0',
|
|
31
32
|
hasRadius: true,
|
|
@@ -34,6 +35,8 @@ const panelStyles = {
|
|
|
34
35
|
const FormLayout = ({ layout, document, hasBackground = true })=>{
|
|
35
36
|
const { formatMessage } = useIntl();
|
|
36
37
|
const modelUid = document.schema?.uid;
|
|
38
|
+
const fieldValues = useForm('Fields', (state)=>state.values);
|
|
39
|
+
const rulesEngine = createRulesEngine();
|
|
37
40
|
const getLabel = (name, label)=>{
|
|
38
41
|
return formatMessage({
|
|
39
42
|
id: `content-manager.content-types.${modelUid}.${name}`,
|
|
@@ -43,11 +46,22 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
|
|
|
43
46
|
return /*#__PURE__*/ jsx(Flex, {
|
|
44
47
|
direction: "column",
|
|
45
48
|
alignItems: "stretch",
|
|
46
|
-
gap:
|
|
49
|
+
gap: {
|
|
50
|
+
initial: 4,
|
|
51
|
+
large: 6
|
|
52
|
+
},
|
|
47
53
|
children: layout.map((panel, index)=>{
|
|
48
54
|
if (panel.some((row)=>row.some((field)=>field.type === 'dynamiczone'))) {
|
|
49
55
|
const [row] = panel;
|
|
50
56
|
const [field] = row;
|
|
57
|
+
const attribute = document.schema?.attributes[field.name];
|
|
58
|
+
const condition = attribute?.conditions?.visible;
|
|
59
|
+
if (condition) {
|
|
60
|
+
const isVisible = rulesEngine.evaluate(condition, fieldValues);
|
|
61
|
+
if (!isVisible) {
|
|
62
|
+
return null; // Skip rendering the dynamic zone if the condition is not met
|
|
63
|
+
}
|
|
64
|
+
}
|
|
51
65
|
return /*#__PURE__*/ jsx(Grid.Root, {
|
|
52
66
|
gap: 4,
|
|
53
67
|
children: /*#__PURE__*/ jsx(Grid.Item, {
|
|
@@ -69,10 +83,25 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
|
|
|
69
83
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
70
84
|
direction: "column",
|
|
71
85
|
alignItems: "stretch",
|
|
72
|
-
gap:
|
|
73
|
-
|
|
86
|
+
gap: {
|
|
87
|
+
initial: 4,
|
|
88
|
+
large: 6
|
|
89
|
+
},
|
|
90
|
+
children: panel.map((row, gridRowIndex)=>{
|
|
91
|
+
const visibleFields = row.filter(({ name })=>{
|
|
92
|
+
const attribute = document.schema?.attributes[name];
|
|
93
|
+
const condition = attribute?.conditions?.visible;
|
|
94
|
+
if (condition) {
|
|
95
|
+
return rulesEngine.evaluate(condition, fieldValues);
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
});
|
|
99
|
+
if (visibleFields.length === 0) {
|
|
100
|
+
return null; // Skip rendering the entire grid row
|
|
101
|
+
}
|
|
102
|
+
return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
|
|
74
103
|
gap: 4,
|
|
75
|
-
children:
|
|
104
|
+
children: visibleFields.map(({ size, ...field })=>{
|
|
76
105
|
return /*#__PURE__*/ jsx(ResponsiveGridItem, {
|
|
77
106
|
col: size,
|
|
78
107
|
s: 12,
|
|
@@ -86,12 +115,13 @@ const FormLayout = ({ layout, document, hasBackground = true })=>{
|
|
|
86
115
|
})
|
|
87
116
|
}, field.name);
|
|
88
117
|
})
|
|
89
|
-
}, gridRowIndex)
|
|
118
|
+
}, gridRowIndex);
|
|
119
|
+
})
|
|
90
120
|
})
|
|
91
121
|
}, index);
|
|
92
122
|
})
|
|
93
123
|
});
|
|
94
124
|
};
|
|
95
125
|
|
|
96
|
-
export { FormLayout,
|
|
126
|
+
export { FormLayout, ResponsiveGridItem, ResponsiveGridRoot };
|
|
97
127
|
//# sourceMappingURL=FormLayout.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormLayout.mjs","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const
|
|
1
|
+
{"version":3,"file":"FormLayout.mjs","sources":["../../../../../admin/src/pages/EditView/components/FormLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, createRulesEngine } from '@strapi/admin/strapi-admin';\nimport { Box, BoxProps, Flex, Grid } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { EditLayout } from '../../../hooks/useDocumentLayout';\n\nimport { InputRenderer } from './InputRenderer';\n\nimport type { UseDocument } from '../../../hooks/useDocument';\n\nexport const ResponsiveGridRoot = styled(Grid.Root)`\n container-type: inline-size;\n`;\n\nexport const ResponsiveGridItem =\n /**\n * TODO:\n * JSDOM cannot handle container queries.\n * This is a temporary workaround so that tests do not fail in the CI when jestdom throws an error\n * for failing to parse the stylesheet.\n */\n process.env.NODE_ENV !== 'test'\n ? styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n ${({ theme }) => theme.breakpoints.medium} {\n ${({ col }) => col && `grid-column: span ${col};`}\n }\n `\n : styled(Grid.Item)<{ col: number }>`\n grid-column: span 12;\n `;\n\nconst panelStyles = {\n padding: {\n initial: 4,\n medium: 6,\n },\n borderColor: 'neutral150',\n background: 'neutral0',\n hasRadius: true,\n shadow: 'tableShadow',\n} satisfies BoxProps;\n\ninterface FormLayoutProps extends Pick<EditLayout, 'layout'> {\n hasBackground?: boolean;\n document: ReturnType<UseDocument>;\n}\n\nconst FormLayout = ({ layout, document, hasBackground = true }: FormLayoutProps) => {\n const { formatMessage } = useIntl();\n const modelUid = document.schema?.uid;\n const fieldValues = useForm('Fields', (state) => state.values);\n const rulesEngine = createRulesEngine();\n\n const getLabel = (name: string, label: string) => {\n return formatMessage({\n id: `content-manager.content-types.${modelUid}.${name}`,\n defaultMessage: label,\n });\n };\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {layout.map((panel, index) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n const attribute = document.schema?.attributes[field.name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n const isVisible = rulesEngine.evaluate(condition, fieldValues);\n if (!isVisible) {\n return null; // Skip rendering the dynamic zone if the condition is not met\n }\n }\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box key={index} {...(hasBackground && panelStyles)}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={{\n initial: 4,\n large: 6,\n }}\n >\n {panel.map((row, gridRowIndex) => {\n const visibleFields = row.filter(({ name }) => {\n const attribute = document.schema?.attributes[name];\n const condition = attribute?.conditions?.visible;\n\n if (condition) {\n return rulesEngine.evaluate(condition, fieldValues);\n }\n\n return true;\n });\n\n if (visibleFields.length === 0) {\n return null; // Skip rendering the entire grid row\n }\n\n return (\n <ResponsiveGridRoot key={gridRowIndex} gap={4}>\n {visibleFields.map(({ size, ...field }) => {\n return (\n <ResponsiveGridItem\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n label={getLabel(field.name, field.label)}\n document={document}\n />\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n </Box>\n );\n })}\n </Flex>\n );\n};\n\nexport { FormLayout, FormLayoutProps };\n"],"names":["ResponsiveGridRoot","styled","Grid","Root","ResponsiveGridItem","process","env","NODE_ENV","Item","theme","breakpoints","medium","col","panelStyles","padding","initial","borderColor","background","hasRadius","shadow","FormLayout","layout","document","hasBackground","formatMessage","useIntl","modelUid","schema","uid","fieldValues","useForm","state","values","rulesEngine","createRulesEngine","getLabel","name","label","id","defaultMessage","_jsx","Flex","direction","alignItems","gap","large","map","panel","index","some","row","field","type","attribute","attributes","condition","conditions","visible","isVisible","evaluate","s","xs","InputRenderer","Box","gridRowIndex","visibleFields","filter","length","size"],"mappings":"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"}
|
|
@@ -48,8 +48,14 @@ const Header = ({ isCreating, status, title: documentTitle = 'Untitled' })=>{
|
|
|
48
48
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
49
49
|
direction: "column",
|
|
50
50
|
alignItems: "flex-start",
|
|
51
|
-
paddingTop:
|
|
52
|
-
|
|
51
|
+
paddingTop: {
|
|
52
|
+
initial: 4,
|
|
53
|
+
large: 6
|
|
54
|
+
},
|
|
55
|
+
paddingBottom: {
|
|
56
|
+
initial: 0,
|
|
57
|
+
large: 4
|
|
58
|
+
},
|
|
53
59
|
gap: 2,
|
|
54
60
|
children: [
|
|
55
61
|
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.BackButton, {
|
|
@@ -58,8 +64,15 @@ const Header = ({ isCreating, status, title: documentTitle = 'Untitled' })=>{
|
|
|
58
64
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
59
65
|
width: "100%",
|
|
60
66
|
justifyContent: "space-between",
|
|
61
|
-
gap:
|
|
67
|
+
gap: {
|
|
68
|
+
initial: 2,
|
|
69
|
+
medium: '8rem'
|
|
70
|
+
},
|
|
62
71
|
alignItems: "flex-start",
|
|
72
|
+
direction: {
|
|
73
|
+
initial: 'column',
|
|
74
|
+
medium: 'row'
|
|
75
|
+
},
|
|
63
76
|
children: [
|
|
64
77
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
65
78
|
variant: "alpha",
|
|
@@ -331,7 +344,8 @@ const HeaderActionDialog = ({ onClose, onCancel, title, content: Content, isOpen
|
|
|
331
344
|
* -----------------------------------------------------------------------------------------------*/ const ConfigureTheViewAction = ({ collectionType, model })=>{
|
|
332
345
|
const navigate = reactRouterDom.useNavigate();
|
|
333
346
|
const { formatMessage } = reactIntl.useIntl();
|
|
334
|
-
|
|
347
|
+
const isDesktop = strapiAdmin.useIsDesktop();
|
|
348
|
+
return isDesktop ? {
|
|
335
349
|
label: formatMessage({
|
|
336
350
|
id: 'app.links.configure-view',
|
|
337
351
|
defaultMessage: 'Configure the view'
|
|
@@ -341,14 +355,15 @@ const HeaderActionDialog = ({ onClose, onCancel, title, content: Content, isOpen
|
|
|
341
355
|
navigate(`../${collectionType}/${model}/configurations/edit`);
|
|
342
356
|
},
|
|
343
357
|
position: 'header'
|
|
344
|
-
};
|
|
358
|
+
} : null;
|
|
345
359
|
};
|
|
346
360
|
ConfigureTheViewAction.type = 'configure-the-view';
|
|
347
361
|
ConfigureTheViewAction.position = 'header';
|
|
348
362
|
const EditTheModelAction = ({ model })=>{
|
|
349
363
|
const navigate = reactRouterDom.useNavigate();
|
|
350
364
|
const { formatMessage } = reactIntl.useIntl();
|
|
351
|
-
|
|
365
|
+
const isDesktop = strapiAdmin.useIsDesktop();
|
|
366
|
+
return isDesktop ? {
|
|
352
367
|
label: formatMessage({
|
|
353
368
|
id: 'content-manager.link-to-ctb',
|
|
354
369
|
defaultMessage: 'Edit the model'
|
|
@@ -358,7 +373,7 @@ const EditTheModelAction = ({ model })=>{
|
|
|
358
373
|
navigate(`/plugins/content-type-builder/content-types/${model}`);
|
|
359
374
|
},
|
|
360
375
|
position: 'header'
|
|
361
|
-
};
|
|
376
|
+
} : null;
|
|
362
377
|
};
|
|
363
378
|
EditTheModelAction.type = 'edit-the-model';
|
|
364
379
|
EditTheModelAction.position = 'header';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/EditView/components/Header.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useForm,\n BackButton,\n useNotification,\n useStrapiApp,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Typography,\n IconButton,\n Dialog,\n} from '@strapi/design-system';\nimport { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { RelativeTime } from '../../../components/RelativeTime';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { getDisplayName } from '../../../utils/users';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type { ContentManagerPlugin, DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const params = useParams<{ collectionType: string; slug: string }>();\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingTop={6} paddingBottom={4} gap={2}>\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n <Flex width=\"100%\" justifyContent=\"space-between\" gap=\"80px\" alignItems=\"flex-start\">\n <Typography variant=\"alpha\" tag=\"h1\">\n {title}\n </Typography>\n <HeaderToolbar />\n </Flex>\n {status ? (\n <Box marginTop={1}>\n <DocumentStatus status={isCloning ? 'draft' : status} />\n </Box>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\ninterface HeaderActionDescription {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n dialog?: DialogOptions;\n options?: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n }>;\n onSelect?: (value: string) => void;\n value?: string;\n customizeContent?: (value: string) => React.ReactNode;\n}\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = () => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('header')}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={status} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME])\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Updated',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Created',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n tag=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n /**\n * The menu content has a padding of 4px, but we want our divider (the border top applied) to\n * be flush with the menu content. So we need to adjust the margin & width to account for the padding.\n */\n marginLeft=\"-0.4rem\"\n marginRight=\"-0.4rem\"\n width=\"calc(100% + 8px)\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography tag=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography tag=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n\n const handleClick =\n (action: HeaderActionDescription & { id: string }) => async (e: React.MouseEvent) => {\n if (!('options' in action)) {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <Flex gap={1}>\n {actions.map((action) => {\n if (action.options) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n aria-label={action.label}\n {...action}\n >\n {action.options.map(({ label, ...option }) => (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n } else {\n if (action.type === 'icon') {\n return (\n <React.Fragment key={action.id}>\n <IconButton\n disabled={action.disabled}\n label={action.label}\n size=\"S\"\n onClick={handleClick(action)}\n >\n {action.icon}\n </IconButton>\n {action.dialog ? (\n <HeaderActionDialog\n {...action.dialog}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n </React.Fragment>\n );\n }\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface HeaderActionDialogProps {\n onClose: () => void;\n onCancel?: () => Promise<void>;\n title: string;\n content?: React.ReactNode | ((props: { onClose: () => void }) => React.ReactNode);\n isOpen: boolean;\n}\n\nconst HeaderActionDialog = ({\n onClose,\n onCancel,\n title,\n content: Content,\n isOpen,\n}: HeaderActionDialogProps) => {\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n {typeof Content === 'function' ? <Content onClose={handleClose} /> : Content}\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n\n return {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <ListPlus />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n };\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\nConfigureTheViewAction.position = 'header';\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n\n return {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <Pencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n };\n};\n\nEditTheModelAction.type = 'edit-the-model';\nEditTheModelAction.position = 'header';\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n const isLocalized = document?.locale != null;\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage(\n {\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}',\n },\n { isLocalized }\n ),\n icon: <Trash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\nDeleteAction.position = ['header', 'table-row'];\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n"],"names":["Header","isCreating","status","title","documentTitle","formatMessage","useIntl","isCloning","useMatch","CLONE_PATH","params","useParams","id","defaultMessage","_jsxs","Flex","direction","alignItems","paddingTop","paddingBottom","gap","_jsx","BackButton","fallback","collectionType","SINGLE_TYPES","undefined","COLLECTION_TYPES","slug","width","justifyContent","Typography","variant","tag","HeaderToolbar","Box","marginTop","DocumentStatus","query","useQueryParams","model","document","meta","useDoc","plugins","useStrapiApp","state","DescriptionComponentRenderer","props","activeTab","documentId","descriptions","apis","getHeaderActions","actions","length","HeaderActions","getDocumentActions","headerActions","filter","action","positions","Array","isArray","position","includes","DocumentActionsMenu","label","Information","createAndUpdateDocument","availableStatus","find","publishedAt","publishDocument","creator","CREATED_BY_ATTRIBUTE_NAME","getDisplayName","updator","UPDATED_BY_ATTRIBUTE_NAME","information","isDisplayed","PUBLISHED_AT_ATTRIBUTE_NAME","value","time","RelativeTime","timestamp","Date","isAnonymous","PUBLISHED_BY_ATTRIBUTE_NAME","author","UPDATED_AT_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","info","borderWidth","borderStyle","borderColor","padding","marginLeft","marginRight","map","fontWeight","textColor","dialogId","setDialogId","React","useState","handleClick","e","onClick","dialog","muteDialog","preventDefault","handleClose","options","SingleSelect","size","onChange","onSelect","aria-label","option","SingleSelectOption","type","Fragment","IconButton","disabled","icon","HeaderActionDialog","isOpen","onClose","onCancel","content","Content","Dialog","Root","open","onOpenChange","ConfigureTheViewAction","navigate","useNavigate","ListPlus","EditTheModelAction","Pencil","DeleteAction","listViewPathMatch","LIST_PATH","canDelete","useDocumentRBAC","delete","deleteAction","isLoading","useDocumentActions","toggleNotification","useNotification","setSubmitting","useForm","isLocalized","locale","Trash","WarningCircle","height","fill","textAlign","loading","onConfirm","console","error","message","res","pathname","replace","DEFAULT_HEADER_ACTIONS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/EditView/components/Header.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useForm,\n BackButton,\n useNotification,\n useStrapiApp,\n useQueryParams,\n useIsDesktop,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Typography,\n IconButton,\n Dialog,\n} from '@strapi/design-system';\nimport { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { RelativeTime } from '../../../components/RelativeTime';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { getDisplayName } from '../../../utils/users';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type { ContentManagerPlugin, DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const params = useParams<{ collectionType: string; slug: string }>();\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n paddingTop={{\n initial: 4,\n large: 6,\n }}\n paddingBottom={{\n initial: 0,\n large: 4,\n }}\n gap={2}\n >\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n <Flex\n width=\"100%\"\n justifyContent=\"space-between\"\n gap={{\n initial: 2,\n medium: '8rem',\n }}\n alignItems=\"flex-start\"\n direction={{\n initial: 'column',\n medium: 'row',\n }}\n >\n <Typography variant=\"alpha\" tag=\"h1\">\n {title}\n </Typography>\n <HeaderToolbar />\n </Flex>\n {status ? (\n <Box marginTop={1}>\n <DocumentStatus status={isCloning ? 'draft' : status} />\n </Box>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\ninterface HeaderActionDescription {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n dialog?: DialogOptions;\n options?: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n }>;\n onSelect?: (value: string) => void;\n value?: string;\n customizeContent?: (value: string) => React.ReactNode;\n}\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = () => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('header')}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={status} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME])\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Updated',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Created',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n tag=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n /**\n * The menu content has a padding of 4px, but we want our divider (the border top applied) to\n * be flush with the menu content. So we need to adjust the margin & width to account for the padding.\n */\n marginLeft=\"-0.4rem\"\n marginRight=\"-0.4rem\"\n width=\"calc(100% + 8px)\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography tag=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography tag=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n\n const handleClick =\n (action: HeaderActionDescription & { id: string }) => async (e: React.MouseEvent) => {\n if (!('options' in action)) {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <Flex gap={1}>\n {actions.map((action) => {\n if (action.options) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n aria-label={action.label}\n {...action}\n >\n {action.options.map(({ label, ...option }) => (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n } else {\n if (action.type === 'icon') {\n return (\n <React.Fragment key={action.id}>\n <IconButton\n disabled={action.disabled}\n label={action.label}\n size=\"S\"\n onClick={handleClick(action)}\n >\n {action.icon}\n </IconButton>\n {action.dialog ? (\n <HeaderActionDialog\n {...action.dialog}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n </React.Fragment>\n );\n }\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface HeaderActionDialogProps {\n onClose: () => void;\n onCancel?: () => Promise<void>;\n title: string;\n content?: React.ReactNode | ((props: { onClose: () => void }) => React.ReactNode);\n isOpen: boolean;\n}\n\nconst HeaderActionDialog = ({\n onClose,\n onCancel,\n title,\n content: Content,\n isOpen,\n}: HeaderActionDialogProps) => {\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n {typeof Content === 'function' ? <Content onClose={handleClose} /> : Content}\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <ListPlus />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n }\n : null;\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\nConfigureTheViewAction.position = 'header';\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return isDesktop\n ? {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <Pencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n }\n : null;\n};\n\nEditTheModelAction.type = 'edit-the-model';\nEditTheModelAction.position = 'header';\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n const isLocalized = document?.locale != null;\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage(\n {\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}',\n },\n { isLocalized }\n ),\n icon: <Trash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\nDeleteAction.position = ['header', 'table-row'];\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n"],"names":["Header","isCreating","status","title","documentTitle","formatMessage","useIntl","isCloning","useMatch","CLONE_PATH","params","useParams","id","defaultMessage","_jsxs","Flex","direction","alignItems","paddingTop","initial","large","paddingBottom","gap","_jsx","BackButton","fallback","collectionType","SINGLE_TYPES","undefined","COLLECTION_TYPES","slug","width","justifyContent","medium","Typography","variant","tag","HeaderToolbar","Box","marginTop","DocumentStatus","query","useQueryParams","model","document","meta","useDoc","plugins","useStrapiApp","state","DescriptionComponentRenderer","props","activeTab","documentId","descriptions","apis","getHeaderActions","actions","length","HeaderActions","getDocumentActions","headerActions","filter","action","positions","Array","isArray","position","includes","DocumentActionsMenu","label","Information","createAndUpdateDocument","availableStatus","find","publishedAt","publishDocument","creator","CREATED_BY_ATTRIBUTE_NAME","getDisplayName","updator","UPDATED_BY_ATTRIBUTE_NAME","information","isDisplayed","PUBLISHED_AT_ATTRIBUTE_NAME","value","time","RelativeTime","timestamp","Date","isAnonymous","PUBLISHED_BY_ATTRIBUTE_NAME","author","UPDATED_AT_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","info","borderWidth","borderStyle","borderColor","padding","marginLeft","marginRight","map","fontWeight","textColor","dialogId","setDialogId","React","useState","handleClick","e","onClick","dialog","muteDialog","preventDefault","handleClose","options","SingleSelect","size","onChange","onSelect","aria-label","option","SingleSelectOption","type","Fragment","IconButton","disabled","icon","HeaderActionDialog","isOpen","onClose","onCancel","content","Content","Dialog","Root","open","onOpenChange","ConfigureTheViewAction","navigate","useNavigate","isDesktop","useIsDesktop","ListPlus","EditTheModelAction","Pencil","DeleteAction","listViewPathMatch","LIST_PATH","canDelete","useDocumentRBAC","delete","deleteAction","isLoading","useDocumentActions","toggleNotification","useNotification","setSubmitting","useForm","isLocalized","locale","Trash","WarningCircle","height","fill","textAlign","loading","onConfirm","console","error","message","res","pathname","replace","DEFAULT_HEADER_ACTIONS"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useNotification, useForm, BackButton, useQueryParams, useStrapiApp, DescriptionComponentRenderer } from '@strapi/admin/strapi-admin';
|
|
3
|
+
import { useIsDesktop, useNotification, useForm, BackButton, useQueryParams, useStrapiApp, DescriptionComponentRenderer } from '@strapi/admin/strapi-admin';
|
|
4
4
|
import { Flex, Typography, Box, SingleSelect, SingleSelectOption, IconButton, Dialog } from '@strapi/design-system';
|
|
5
5
|
import { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
@@ -27,8 +27,14 @@ const Header = ({ isCreating, status, title: documentTitle = 'Untitled' })=>{
|
|
|
27
27
|
return /*#__PURE__*/ jsxs(Flex, {
|
|
28
28
|
direction: "column",
|
|
29
29
|
alignItems: "flex-start",
|
|
30
|
-
paddingTop:
|
|
31
|
-
|
|
30
|
+
paddingTop: {
|
|
31
|
+
initial: 4,
|
|
32
|
+
large: 6
|
|
33
|
+
},
|
|
34
|
+
paddingBottom: {
|
|
35
|
+
initial: 0,
|
|
36
|
+
large: 4
|
|
37
|
+
},
|
|
32
38
|
gap: 2,
|
|
33
39
|
children: [
|
|
34
40
|
/*#__PURE__*/ jsx(BackButton, {
|
|
@@ -37,8 +43,15 @@ const Header = ({ isCreating, status, title: documentTitle = 'Untitled' })=>{
|
|
|
37
43
|
/*#__PURE__*/ jsxs(Flex, {
|
|
38
44
|
width: "100%",
|
|
39
45
|
justifyContent: "space-between",
|
|
40
|
-
gap:
|
|
46
|
+
gap: {
|
|
47
|
+
initial: 2,
|
|
48
|
+
medium: '8rem'
|
|
49
|
+
},
|
|
41
50
|
alignItems: "flex-start",
|
|
51
|
+
direction: {
|
|
52
|
+
initial: 'column',
|
|
53
|
+
medium: 'row'
|
|
54
|
+
},
|
|
42
55
|
children: [
|
|
43
56
|
/*#__PURE__*/ jsx(Typography, {
|
|
44
57
|
variant: "alpha",
|
|
@@ -310,7 +323,8 @@ const HeaderActionDialog = ({ onClose, onCancel, title, content: Content, isOpen
|
|
|
310
323
|
* -----------------------------------------------------------------------------------------------*/ const ConfigureTheViewAction = ({ collectionType, model })=>{
|
|
311
324
|
const navigate = useNavigate();
|
|
312
325
|
const { formatMessage } = useIntl();
|
|
313
|
-
|
|
326
|
+
const isDesktop = useIsDesktop();
|
|
327
|
+
return isDesktop ? {
|
|
314
328
|
label: formatMessage({
|
|
315
329
|
id: 'app.links.configure-view',
|
|
316
330
|
defaultMessage: 'Configure the view'
|
|
@@ -320,14 +334,15 @@ const HeaderActionDialog = ({ onClose, onCancel, title, content: Content, isOpen
|
|
|
320
334
|
navigate(`../${collectionType}/${model}/configurations/edit`);
|
|
321
335
|
},
|
|
322
336
|
position: 'header'
|
|
323
|
-
};
|
|
337
|
+
} : null;
|
|
324
338
|
};
|
|
325
339
|
ConfigureTheViewAction.type = 'configure-the-view';
|
|
326
340
|
ConfigureTheViewAction.position = 'header';
|
|
327
341
|
const EditTheModelAction = ({ model })=>{
|
|
328
342
|
const navigate = useNavigate();
|
|
329
343
|
const { formatMessage } = useIntl();
|
|
330
|
-
|
|
344
|
+
const isDesktop = useIsDesktop();
|
|
345
|
+
return isDesktop ? {
|
|
331
346
|
label: formatMessage({
|
|
332
347
|
id: 'content-manager.link-to-ctb',
|
|
333
348
|
defaultMessage: 'Edit the model'
|
|
@@ -337,7 +352,7 @@ const EditTheModelAction = ({ model })=>{
|
|
|
337
352
|
navigate(`/plugins/content-type-builder/content-types/${model}`);
|
|
338
353
|
},
|
|
339
354
|
position: 'header'
|
|
340
|
-
};
|
|
355
|
+
} : null;
|
|
341
356
|
};
|
|
342
357
|
EditTheModelAction.type = 'edit-the-model';
|
|
343
358
|
EditTheModelAction.position = 'header';
|