@strapi/content-manager 5.48.1 → 5.50.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/ActionsDrawer.js +3 -2
- package/dist/admin/components/ActionsDrawer.js.map +1 -1
- package/dist/admin/components/ComponentIcon.js +4 -3
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js +3 -2
- package/dist/admin/components/ConfigurationForm/EditFieldForm.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js +3 -2
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Form.js +7 -3
- package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
- package/dist/admin/components/LeftMenu.js +3 -2
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/RelativeTime.js +3 -2
- package/dist/admin/components/RelativeTime.js.map +1 -1
- package/dist/admin/components/Widgets.js +3 -2
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/features/DocumentRBAC.js +3 -2
- package/dist/admin/features/DocumentRBAC.js.map +1 -1
- package/dist/admin/history/components/VersionContent.js +7 -3
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +3 -2
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js +3 -2
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/pages/History.js +3 -2
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/routes.js +3 -2
- package/dist/admin/history/routes.js.map +1 -1
- package/dist/admin/hooks/useContentTypeSchema.js +3 -2
- package/dist/admin/hooks/useContentTypeSchema.js.map +1 -1
- package/dist/admin/hooks/useDocument.js +3 -2
- package/dist/admin/hooks/useDocument.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +3 -2
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js +3 -2
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentLayout.js +3 -2
- package/dist/admin/hooks/useDocumentLayout.js.map +1 -1
- package/dist/admin/hooks/useDragAndDrop.js +3 -2
- package/dist/admin/hooks/useDragAndDrop.js.map +1 -1
- package/dist/admin/hooks/useKeyboardDragAndDrop.js +3 -2
- package/dist/admin/hooks/useKeyboardDragAndDrop.js.map +1 -1
- package/dist/admin/hooks/useOnce.js +3 -2
- package/dist/admin/hooks/useOnce.js.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.js +7 -2
- package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
- package/dist/admin/layout.js +3 -1
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +5 -3
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.js +3 -2
- package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
- package/dist/admin/pages/EditConfigurationPage.js +3 -2
- package/dist/admin/pages/EditConfigurationPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +3 -2
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +238 -108
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +225 -103
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +3 -2
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +4 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +9 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +13 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +7 -3
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +8 -4
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js +3 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/continueList.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js +15 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/mdRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/sanitizer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +3 -2
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +3 -2
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +3 -2
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js +3 -2
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +5 -1
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js +117 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.js.map +1 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs +109 -0
- package/dist/admin/pages/EditView/utils/draftRelationCounts.mjs.map +1 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.js +35 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.js.map +1 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.mjs +33 -0
- package/dist/admin/pages/EditView/utils/keyboardShortcuts.mjs.map +1 -0
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js +3 -2
- package/dist/admin/pages/ListConfiguration/ListConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js +3 -2
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +3 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js +3 -2
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +4 -3
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +3 -2
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +3 -2
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +3 -2
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +9 -5
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +2 -2
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js +7 -2
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js +4 -3
- package/dist/admin/pages/ListView/components/TableCells/Relations.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +3 -2
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +3 -2
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -1
- package/dist/admin/preview/pages/Preview.js +41 -13
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +39 -12
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/routes.js +3 -2
- package/dist/admin/preview/routes.js.map +1 -1
- package/dist/admin/preview/utils/constants.js +9 -15
- package/dist/admin/preview/utils/constants.js.map +1 -1
- package/dist/admin/preview/utils/constants.mjs +10 -15
- package/dist/admin/preview/utils/constants.mjs.map +1 -1
- package/dist/admin/src/components/InjectionZone.d.ts +1 -2
- package/dist/admin/src/content-manager.d.ts +15 -15
- package/dist/admin/src/history/services/historyVersion.d.ts +2 -2
- package/dist/admin/src/hooks/useContentTypeSchema.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +8 -9
- package/dist/admin/src/hooks/useDocumentLayout.d.ts +3 -3
- package/dist/admin/src/hooks/useDragAndDrop.d.ts +4 -4
- package/dist/admin/src/hooks/useKeyboardDragAndDrop.d.ts +1 -1
- package/dist/admin/src/hooks/usePersistentQueryParams.d.ts +0 -1
- package/dist/admin/src/modules/app.d.ts +5 -5
- package/dist/admin/src/pages/EditView/EditViewPage.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +12 -1
- package/dist/admin/src/pages/EditView/components/EditorToolbarObserver.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/conversions.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +4 -4
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +19 -20
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +12 -12
- package/dist/admin/src/pages/EditView/utils/draftRelationCounts.d.ts +26 -0
- package/dist/admin/src/pages/EditView/utils/keyboardShortcuts.d.ts +18 -0
- package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +1 -1
- package/dist/admin/src/pages/ListView/components/Filters.d.ts +1 -1
- package/dist/admin/src/pages/formatComponentConfigurationEditLayout.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +1 -7
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +0 -1
- package/dist/admin/src/services/documents.d.ts +30 -70
- package/dist/admin/src/services/relations.d.ts +6 -20
- package/dist/admin/src/services/uid.d.ts +5 -5
- package/dist/admin/src/utils/layouts/normalizeContentManagerLayout.d.ts +4 -4
- package/dist/admin/src/utils/users.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +1 -1
- package/dist/admin/translations/cs.json.js +2 -1
- package/dist/admin/translations/cs.json.js.map +1 -1
- package/dist/admin/translations/cs.json.mjs +2 -1
- package/dist/admin/translations/cs.json.mjs.map +1 -1
- package/dist/admin/translations/de.json.js +2 -1
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +2 -1
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +7 -3
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +7 -3
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +2 -1
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +2 -1
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +2 -1
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +2 -1
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +262 -87
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +262 -87
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/translations/nl.json.js +2 -1
- package/dist/admin/translations/nl.json.js.map +1 -1
- package/dist/admin/translations/nl.json.mjs +2 -1
- package/dist/admin/translations/nl.json.mjs.map +1 -1
- package/dist/admin/translations/pl.json.js +2 -1
- package/dist/admin/translations/pl.json.js.map +1 -1
- package/dist/admin/translations/pl.json.mjs +2 -1
- package/dist/admin/translations/pl.json.mjs.map +1 -1
- package/dist/admin/translations/sk.json.js +2 -1
- package/dist/admin/translations/sk.json.js.map +1 -1
- package/dist/admin/translations/sk.json.mjs +2 -1
- package/dist/admin/translations/sk.json.mjs.map +1 -1
- package/dist/admin/utils/objects.js +9 -4
- package/dist/admin/utils/objects.js.map +1 -1
- package/dist/admin/utils/validation.js +7 -3
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/server/controllers/collection-types.js +2 -2
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +2 -2
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/single-types.js +2 -2
- package/dist/server/controllers/single-types.js.map +1 -1
- package/dist/server/controllers/single-types.mjs +2 -2
- package/dist/server/controllers/single-types.mjs.map +1 -1
- package/dist/server/controllers/utils/clone.js +5 -1
- package/dist/server/controllers/utils/clone.js.map +1 -1
- package/dist/server/controllers/utils/clone.mjs.map +1 -1
- package/dist/server/controllers/validation/index.js +6 -2
- package/dist/server/controllers/validation/index.js.map +1 -1
- package/dist/server/homepage/services/homepage.js +6 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +6 -1
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/mcp/handlers/collection-handlers.js +15 -18
- package/dist/server/mcp/handlers/collection-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/collection-handlers.mjs +16 -19
- package/dist/server/mcp/handlers/collection-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/single-type-handlers.js +12 -12
- package/dist/server/mcp/handlers/single-type-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/single-type-handlers.mjs +13 -13
- package/dist/server/mcp/handlers/single-type-handlers.mjs.map +1 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.js +4 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.mjs +4 -1
- package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -1
- package/dist/server/mcp/sanitizers/shape-relations.js +108 -0
- package/dist/server/mcp/sanitizers/shape-relations.js.map +1 -0
- package/dist/server/mcp/sanitizers/shape-relations.mjs +103 -0
- package/dist/server/mcp/sanitizers/shape-relations.mjs.map +1 -0
- package/dist/server/mcp/schemas/data-schema.js +0 -3
- package/dist/server/mcp/schemas/data-schema.js.map +1 -1
- package/dist/server/mcp/schemas/data-schema.mjs +0 -3
- package/dist/server/mcp/schemas/data-schema.mjs.map +1 -1
- package/dist/server/mcp/schemas/output-schemas.js +30 -4
- package/dist/server/mcp/schemas/output-schemas.js.map +1 -1
- package/dist/server/mcp/schemas/output-schemas.mjs +30 -4
- package/dist/server/mcp/schemas/output-schemas.mjs.map +1 -1
- package/dist/server/mcp/utils.js +30 -3
- package/dist/server/mcp/utils.js.map +1 -1
- package/dist/server/mcp/utils.mjs +30 -4
- package/dist/server/mcp/utils.mjs.map +1 -1
- package/dist/server/middlewares/routing.js +5 -1
- package/dist/server/middlewares/routing.js.map +1 -1
- package/dist/server/preview/controllers/preview.js +9 -0
- package/dist/server/preview/controllers/preview.js.map +1 -1
- package/dist/server/preview/controllers/preview.mjs +9 -0
- package/dist/server/preview/controllers/preview.mjs.map +1 -1
- package/dist/server/preview/controllers/previewScript.js +1450 -0
- package/dist/server/preview/routes/preview.js +11 -0
- package/dist/server/preview/routes/preview.js.map +1 -1
- package/dist/server/preview/routes/preview.mjs +11 -0
- package/dist/server/preview/routes/preview.mjs.map +1 -1
- package/dist/server/services/document-manager.js +13 -19
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +13 -19
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/populate-builder.js.map +1 -1
- package/dist/server/services/populate-builder.mjs.map +1 -1
- package/dist/server/services/uid.js +9 -4
- package/dist/server/services/uid.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.js +14 -10
- package/dist/server/services/utils/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/layouts.js +8 -4
- package/dist/server/services/utils/configuration/layouts.js.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.js +19 -15
- package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
- package/dist/server/services/utils/configuration/settings.js +5 -1
- package/dist/server/services/utils/configuration/settings.js.map +1 -1
- package/dist/server/services/utils/draft-relations.js +9 -0
- package/dist/server/services/utils/draft-relations.js.map +1 -0
- package/dist/server/services/utils/draft-relations.mjs +7 -0
- package/dist/server/services/utils/draft-relations.mjs.map +1 -0
- package/dist/server/services/utils/draft.js +123 -26
- package/dist/server/services/utils/draft.js.map +1 -1
- package/dist/server/services/utils/draft.mjs +118 -25
- package/dist/server/services/utils/draft.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +23 -5
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +15 -1
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/services/utils/store.js +9 -5
- package/dist/server/services/utils/store.js.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/clone.d.ts +1 -1
- package/dist/server/src/controllers/utils/clone.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +5 -5
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/index.d.ts +3 -3
- package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/model-configuration.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/relations.d.ts +2 -2
- package/dist/server/src/history/controllers/history-version.d.ts +1 -7
- package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
- package/dist/server/src/history/controllers/index.d.ts +2 -1
- package/dist/server/src/history/controllers/index.d.ts.map +1 -1
- package/dist/server/src/history/controllers/validation/history-version.d.ts +1 -1
- package/dist/server/src/history/services/history.d.ts +0 -2
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +3 -3
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/history/utils.d.ts +1 -18
- package/dist/server/src/history/utils.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +0 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/index.d.ts +2 -1
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -1
- package/dist/server/src/homepage/index.d.ts +4 -8
- package/dist/server/src/homepage/index.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage-query-utils.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts +3 -4
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/index.d.ts +4 -8
- package/dist/server/src/homepage/services/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +82 -86
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/derive-content-type-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/collection-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/single-type-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/permissions.d.ts +1 -1
- package/dist/server/src/mcp/permissions.d.ts.map +1 -1
- package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +2 -1
- package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts +38 -0
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -0
- package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/data-schema.d.ts +0 -3
- package/dist/server/src/mcp/schemas/data-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/filters-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/output-schemas.d.ts +2 -2
- package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -1
- package/dist/server/src/mcp/types.d.ts +2 -2
- package/dist/server/src/mcp/types.d.ts.map +1 -1
- package/dist/server/src/mcp/utils.d.ts +19 -1
- package/dist/server/src/mcp/utils.d.ts.map +1 -1
- package/dist/server/src/middlewares/routing.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/index.d.ts +2 -1
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/preview.d.ts +5 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/validation/preview.d.ts +1 -2
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -1
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -1
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -1
- 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 -16
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +2 -2
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/configuration.d.ts.map +1 -1
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts +5 -5
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts +14 -14
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +6 -6
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/field-sizes.d.ts +2 -2
- package/dist/server/src/services/field-sizes.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +81 -85
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts +12 -31
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/populate-builder.d.ts +7 -5
- package/dist/server/src/services/populate-builder.d.ts.map +1 -1
- package/dist/server/src/services/uid.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/attributes.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
- package/dist/server/src/services/utils/count.d.ts.map +1 -1
- package/dist/server/src/services/utils/draft-relations.d.ts +19 -0
- package/dist/server/src/services/utils/draft-relations.d.ts.map +1 -0
- package/dist/server/src/services/utils/draft.d.ts +8 -7
- package/dist/server/src/services/utils/draft.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts +3 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/server/src/services/utils/store.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/validation/policies/hasPermissions.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts +1 -1
- package/dist/server/src/validation/zod.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +4 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/single-types.d.ts +4 -1
- package/dist/shared/contracts/single-types.d.ts.map +1 -1
- package/package.json +10 -10
- package/dist/admin/preview/utils/previewScript.js +0 -1068
- package/dist/admin/preview/utils/previewScript.js.map +0 -1
- package/dist/admin/preview/utils/previewScript.mjs +0 -1066
- package/dist/admin/preview/utils/previewScript.mjs.map +0 -1
- package/dist/admin/src/preview/utils/previewScript.d.ts +0 -32
|
@@ -23,9 +23,14 @@ var documents = require('../../../services/documents.js');
|
|
|
23
23
|
var api = require('../../../utils/api.js');
|
|
24
24
|
var translations = require('../../../utils/translations.js');
|
|
25
25
|
var data = require('../utils/data.js');
|
|
26
|
+
var draftRelationCounts = require('../utils/draftRelationCounts.js');
|
|
27
|
+
var keyboardShortcuts = require('../utils/keyboardShortcuts.js');
|
|
26
28
|
var RelationModal = require('./FormInputs/Relations/RelationModal.js');
|
|
27
29
|
|
|
28
|
-
function
|
|
30
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
31
|
+
|
|
32
|
+
function _interopNamespace(e) {
|
|
33
|
+
if (e && e.__esModule) return e;
|
|
29
34
|
var n = Object.create(null);
|
|
30
35
|
if (e) {
|
|
31
36
|
Object.keys(e).forEach(function (k) {
|
|
@@ -42,14 +47,22 @@ function _interopNamespaceDefault(e) {
|
|
|
42
47
|
return Object.freeze(n);
|
|
43
48
|
}
|
|
44
49
|
|
|
45
|
-
var React__namespace = /*#__PURE__*/
|
|
50
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
51
|
+
var mapValues__default = /*#__PURE__*/_interopDefault(mapValues);
|
|
52
|
+
var get__default = /*#__PURE__*/_interopDefault(get);
|
|
53
|
+
var merge__default = /*#__PURE__*/_interopDefault(merge);
|
|
54
|
+
var set__default = /*#__PURE__*/_interopDefault(set);
|
|
46
55
|
|
|
56
|
+
const publishConfirmDialogOpeners = new Map();
|
|
57
|
+
const openPublishConfirmDialog = (scope)=>{
|
|
58
|
+
publishConfirmDialogOpeners.get(scope)?.();
|
|
59
|
+
};
|
|
47
60
|
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
|
48
61
|
/*
|
|
49
62
|
* Check if the fieldToConnect is already present in the parentDataToUpdate.
|
|
50
63
|
* This happens in particular when in the parentDocument you have created
|
|
51
64
|
* a new component without saving.
|
|
52
|
-
*/ const isFieldPresent = !!
|
|
65
|
+
*/ const isFieldPresent = !!get__default.default(parentDataToUpdate, fieldToConnect);
|
|
53
66
|
const fieldToConnectPath = isFieldPresent ? fieldToConnect : fieldToConnect.split('.').slice(0, -1).join('.');
|
|
54
67
|
const fieldToConnectValue = isFieldPresent ? {
|
|
55
68
|
connect: [
|
|
@@ -73,8 +86,8 @@ const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, field
|
|
|
73
86
|
// In case the object was not present you need to pass the componentUID of the parent document
|
|
74
87
|
__component: fieldToConnectUID
|
|
75
88
|
};
|
|
76
|
-
const objectToConnect =
|
|
77
|
-
return
|
|
89
|
+
const objectToConnect = set__default.default({}, fieldToConnectPath, fieldToConnectValue);
|
|
90
|
+
return merge__default.default(parentDataToUpdate, objectToConnect);
|
|
78
91
|
};
|
|
79
92
|
const DocumentActions = ({ actions })=>{
|
|
80
93
|
const { formatMessage } = reactIntl.useIntl();
|
|
@@ -92,18 +105,23 @@ const DocumentActions = ({ actions })=>{
|
|
|
92
105
|
return null;
|
|
93
106
|
}
|
|
94
107
|
const addHintTooltip = (action, children)=>{
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
108
|
+
if (action.disabled) {
|
|
109
|
+
return children;
|
|
110
|
+
}
|
|
111
|
+
const hint = action.type === 'publish' ? formatMessage({
|
|
112
|
+
id: 'content-manager.containers.EditView.publishHint',
|
|
113
|
+
defaultMessage: 'Ctrl / Cmd + Shift + Enter to publish'
|
|
114
|
+
}) : formatMessage({
|
|
115
|
+
id: 'content-manager.containers.EditView.saveHint',
|
|
116
|
+
defaultMessage: 'Ctrl / Cmd + Enter to save'
|
|
117
|
+
});
|
|
118
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
|
|
119
|
+
label: hint,
|
|
102
120
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
103
121
|
width: "100%",
|
|
104
122
|
children: children
|
|
105
123
|
})
|
|
106
|
-
})
|
|
124
|
+
});
|
|
107
125
|
};
|
|
108
126
|
const primaryActionContent = /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
109
127
|
children: [
|
|
@@ -150,15 +168,15 @@ const DocumentActions = ({ actions })=>{
|
|
|
150
168
|
alignItems: "stretch",
|
|
151
169
|
direction: "column",
|
|
152
170
|
children: secondaryAction.type === 'publish' ? /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentManager.Publish, {
|
|
153
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
|
|
171
|
+
children: addHintTooltip(secondaryAction, /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
|
|
154
172
|
...secondaryAction,
|
|
155
173
|
variant: secondaryAction.variant || 'secondary'
|
|
156
|
-
})
|
|
157
|
-
}) : /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
|
|
174
|
+
}))
|
|
175
|
+
}) : addHintTooltip(secondaryAction, /*#__PURE__*/ jsxRuntime.jsx(DocumentActionButton, {
|
|
158
176
|
...secondaryAction,
|
|
159
177
|
variant: secondaryAction.variant || 'secondary',
|
|
160
178
|
buttonType: "submit"
|
|
161
|
-
})
|
|
179
|
+
}))
|
|
162
180
|
}) : null
|
|
163
181
|
]
|
|
164
182
|
});
|
|
@@ -166,6 +184,24 @@ const DocumentActions = ({ actions })=>{
|
|
|
166
184
|
const DocumentActionButton = ({ buttonType = 'button', ...action })=>{
|
|
167
185
|
const [dialogId, setDialogId] = React__namespace.useState(null);
|
|
168
186
|
const { toggleNotification } = strapiAdmin.useNotification();
|
|
187
|
+
React__namespace.useEffect(()=>{
|
|
188
|
+
const scope = action.publishConfirmScope;
|
|
189
|
+
if (action.type !== 'publish' || !action.dialog || !scope) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const open = ()=>setDialogId(action.id);
|
|
193
|
+
publishConfirmDialogOpeners.set(scope, open);
|
|
194
|
+
return ()=>{
|
|
195
|
+
if (publishConfirmDialogOpeners.get(scope) === open) {
|
|
196
|
+
publishConfirmDialogOpeners.delete(scope);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
}, [
|
|
200
|
+
action.type,
|
|
201
|
+
action.dialog,
|
|
202
|
+
action.id,
|
|
203
|
+
action.publishConfirmScope
|
|
204
|
+
]);
|
|
169
205
|
const handleClick = (action)=>async (e)=>{
|
|
170
206
|
const { onClick = ()=>false, dialog, id } = action;
|
|
171
207
|
const muteDialog = await onClick(e);
|
|
@@ -316,7 +352,7 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
316
352
|
]
|
|
317
353
|
});
|
|
318
354
|
};
|
|
319
|
-
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
|
|
355
|
+
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, bodyIcon, confirmLabel, isOpen, variant = 'secondary', loading })=>{
|
|
320
356
|
const { formatMessage } = reactIntl.useIntl();
|
|
321
357
|
const handleClose = async ()=>{
|
|
322
358
|
if (onCancel) {
|
|
@@ -330,6 +366,28 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
330
366
|
}
|
|
331
367
|
onClose();
|
|
332
368
|
};
|
|
369
|
+
const dialogBody = bodyIcon ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
370
|
+
direction: "column",
|
|
371
|
+
alignItems: "stretch",
|
|
372
|
+
gap: 2,
|
|
373
|
+
children: [
|
|
374
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
375
|
+
justifyContent: "center",
|
|
376
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.WarningCircle, {
|
|
377
|
+
width: "24px",
|
|
378
|
+
height: "24px",
|
|
379
|
+
fill: bodyIcon === 'danger' ? 'danger600' : 'primary600'
|
|
380
|
+
})
|
|
381
|
+
}),
|
|
382
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
383
|
+
id: "confirm-description",
|
|
384
|
+
tag: "p",
|
|
385
|
+
variant: "omega",
|
|
386
|
+
textAlign: "center",
|
|
387
|
+
children: content
|
|
388
|
+
})
|
|
389
|
+
]
|
|
390
|
+
}) : content;
|
|
333
391
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
|
|
334
392
|
open: isOpen,
|
|
335
393
|
onOpenChange: handleClose,
|
|
@@ -339,7 +397,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
339
397
|
children: title
|
|
340
398
|
}),
|
|
341
399
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Body, {
|
|
342
|
-
children:
|
|
400
|
+
children: dialogBody
|
|
343
401
|
}),
|
|
344
402
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Footer, {
|
|
345
403
|
children: [
|
|
@@ -358,7 +416,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
358
416
|
variant: variant,
|
|
359
417
|
fullWidth: true,
|
|
360
418
|
loading: loading,
|
|
361
|
-
children: formatMessage({
|
|
419
|
+
children: confirmLabel ?? formatMessage({
|
|
362
420
|
id: 'app.components.Button.confirm',
|
|
363
421
|
defaultMessage: 'Confirm'
|
|
364
422
|
})
|
|
@@ -406,7 +464,7 @@ const transformData = (data)=>{
|
|
|
406
464
|
if ('apiData' in data) {
|
|
407
465
|
return data.apiData;
|
|
408
466
|
}
|
|
409
|
-
return
|
|
467
|
+
return mapValues__default.default(transformData)(data);
|
|
410
468
|
}
|
|
411
469
|
return data;
|
|
412
470
|
};
|
|
@@ -426,10 +484,11 @@ const transformData = (data)=>{
|
|
|
426
484
|
canReadFields
|
|
427
485
|
}));
|
|
428
486
|
const { publish, isLoading } = useDocumentActions.useDocumentActions();
|
|
429
|
-
const onPreview = Preview.usePreviewContext('
|
|
430
|
-
const [countDraftRelations, {
|
|
431
|
-
const [
|
|
432
|
-
const [
|
|
487
|
+
const onPreview = Preview.usePreviewContext('PublishAction', (state)=>state.onPreview, false);
|
|
488
|
+
const [countDraftRelations, { isError: isErrorDraftRelations }] = documents.useGetDraftRelationCountQuery();
|
|
489
|
+
const [localDraftRelationCounts, setLocalDraftRelationCounts] = React__namespace.useState(draftRelationCounts.EMPTY_DRAFT_RELATION_COUNTS);
|
|
490
|
+
const [serverDraftRelationCounts, setServerDraftRelationCounts] = React__namespace.useState(draftRelationCounts.EMPTY_DRAFT_RELATION_COUNTS);
|
|
491
|
+
const [isFetchingDraftRelations, setIsFetchingDraftRelations] = React__namespace.useState(false);
|
|
433
492
|
const [{ rawQuery }] = strapiAdmin.useQueryParams();
|
|
434
493
|
const modified = strapiAdmin.useForm('PublishAction', ({ modified })=>modified);
|
|
435
494
|
const setSubmitting = strapiAdmin.useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
|
|
@@ -443,6 +502,8 @@ const transformData = (data)=>{
|
|
|
443
502
|
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
444
503
|
const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
|
|
445
504
|
const fromRelationModal = relationContext != undefined;
|
|
505
|
+
const isRelationModalOpen = RelationModal.useRelationModal('PublishAction', (state)=>state.state.isModalOpen, false);
|
|
506
|
+
const publishConfirmScope = fromRelationModal ? 'relation-modal' : onPreview ? 'preview' : 'panel';
|
|
446
507
|
const dispatch = RelationModal.useRelationModal('PublishAction', (state)=>state.dispatch);
|
|
447
508
|
const fieldToConnect = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
|
448
509
|
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
@@ -469,49 +530,19 @@ const transformData = (data)=>{
|
|
|
469
530
|
formatMessage
|
|
470
531
|
]);
|
|
471
532
|
React__namespace.useEffect(()=>{
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* Extracts draft relations from the provided data object.
|
|
475
|
-
* It checks for a connect array of relations.
|
|
476
|
-
* If a relation has a status of 'draft', its id is added to the localDraftRelations set.
|
|
477
|
-
*/ const extractDraftRelations = (data)=>{
|
|
478
|
-
const relations = data.connect || [];
|
|
479
|
-
relations.forEach((relation)=>{
|
|
480
|
-
if (relation.status === 'draft') {
|
|
481
|
-
localDraftRelations.add(relation.id);
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
};
|
|
485
|
-
/**
|
|
486
|
-
* Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.
|
|
487
|
-
* If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.
|
|
488
|
-
* It recursively calls itself for any non-null objects it contains.
|
|
489
|
-
*/ const traverseAndExtract = (data)=>{
|
|
490
|
-
Object.entries(data).forEach(([key, value])=>{
|
|
491
|
-
if (key === 'connect' && Array.isArray(value)) {
|
|
492
|
-
extractDraftRelations({
|
|
493
|
-
connect: value
|
|
494
|
-
});
|
|
495
|
-
} else if (typeof value === 'object' && value !== null) {
|
|
496
|
-
traverseAndExtract(value);
|
|
497
|
-
}
|
|
498
|
-
});
|
|
499
|
-
};
|
|
500
|
-
if (!documentId || modified) {
|
|
501
|
-
traverseAndExtract(formValues);
|
|
502
|
-
setLocalCountOfDraftRelations(localDraftRelations.size);
|
|
503
|
-
}
|
|
533
|
+
setLocalDraftRelationCounts(draftRelationCounts.countLocalDraftRelations(formValues, schema, components, model));
|
|
504
534
|
}, [
|
|
505
|
-
|
|
506
|
-
modified,
|
|
535
|
+
components,
|
|
507
536
|
formValues,
|
|
508
|
-
|
|
537
|
+
model,
|
|
538
|
+
schema
|
|
509
539
|
]);
|
|
510
|
-
React__namespace.
|
|
511
|
-
if (!document
|
|
540
|
+
const fetchDraftRelationsCount = React__namespace.useCallback(async ()=>{
|
|
541
|
+
if (!document?.documentId || isListView) {
|
|
512
542
|
return;
|
|
513
543
|
}
|
|
514
|
-
|
|
544
|
+
setIsFetchingDraftRelations(true);
|
|
545
|
+
try {
|
|
515
546
|
const { data, error } = await countDraftRelations({
|
|
516
547
|
collectionType,
|
|
517
548
|
model,
|
|
@@ -522,18 +553,36 @@ const transformData = (data)=>{
|
|
|
522
553
|
throw error;
|
|
523
554
|
}
|
|
524
555
|
if (data) {
|
|
525
|
-
|
|
556
|
+
setServerDraftRelationCounts(draftRelationCounts.normalizeDraftRelationCounts(data));
|
|
526
557
|
}
|
|
527
|
-
}
|
|
528
|
-
|
|
558
|
+
} finally{
|
|
559
|
+
setIsFetchingDraftRelations(false);
|
|
560
|
+
}
|
|
529
561
|
}, [
|
|
530
|
-
isListView,
|
|
531
|
-
document,
|
|
532
|
-
documentId,
|
|
533
|
-
countDraftRelations,
|
|
534
562
|
collectionType,
|
|
535
|
-
|
|
536
|
-
currentDocumentMeta.params
|
|
563
|
+
countDraftRelations,
|
|
564
|
+
currentDocumentMeta.params,
|
|
565
|
+
document?.documentId,
|
|
566
|
+
documentId,
|
|
567
|
+
isListView,
|
|
568
|
+
model
|
|
569
|
+
]);
|
|
570
|
+
React__namespace.useEffect(()=>{
|
|
571
|
+
fetchDraftRelationsCount();
|
|
572
|
+
}, [
|
|
573
|
+
fetchDraftRelationsCount,
|
|
574
|
+
document?.updatedAt
|
|
575
|
+
]);
|
|
576
|
+
React__namespace.useEffect(()=>{
|
|
577
|
+
const handleWindowFocus = ()=>{
|
|
578
|
+
fetchDraftRelationsCount();
|
|
579
|
+
};
|
|
580
|
+
window.addEventListener('focus', handleWindowFocus);
|
|
581
|
+
return ()=>{
|
|
582
|
+
window.removeEventListener('focus', handleWindowFocus);
|
|
583
|
+
};
|
|
584
|
+
}, [
|
|
585
|
+
fetchDraftRelationsCount
|
|
537
586
|
]);
|
|
538
587
|
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
539
588
|
const parentDocumentData = useDocument.useDocument({
|
|
@@ -675,31 +724,61 @@ const transformData = (data)=>{
|
|
|
675
724
|
}
|
|
676
725
|
}
|
|
677
726
|
};
|
|
678
|
-
const
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
727
|
+
const getFreshDraftRelationCounts = React__namespace.useCallback(()=>draftRelationCounts.resolveDraftRelationCounts(documentId, modified, draftRelationCounts.countLocalDraftRelations(getValues(), schema, components, model), serverDraftRelationCounts), [
|
|
728
|
+
components,
|
|
729
|
+
documentId,
|
|
730
|
+
getValues,
|
|
731
|
+
model,
|
|
732
|
+
modified,
|
|
733
|
+
schema,
|
|
734
|
+
serverDraftRelationCounts
|
|
735
|
+
]);
|
|
736
|
+
const draftRelationCounts$1 = draftRelationCounts.resolveDraftRelationCounts(documentId, modified, localDraftRelationCounts, serverDraftRelationCounts);
|
|
737
|
+
const { hasUnpublishedRelations, hasDraftM2mLinks, dialogVariant, bodyIcon, confirmLabel } = draftRelationCounts.getDraftRelationsPublishState(draftRelationCounts$1);
|
|
738
|
+
const supportsDraftRelationWarning = Boolean(schema?.options?.draftAndPublish);
|
|
739
|
+
/**
|
|
740
|
+
* Disabled when:
|
|
741
|
+
* - currently if you're cloning a document we don't support publish & clone at the same time.
|
|
742
|
+
* - the form is submitting
|
|
743
|
+
* - the active tab is the published tab
|
|
744
|
+
* - the document is already published & not modified
|
|
745
|
+
* - the document is being created & not modified
|
|
746
|
+
* - the user doesn't have the permission to publish
|
|
747
|
+
*/ const isDisabled = isCloning || isSubmitting || isFetchingDraftRelations || activeTab === 'published' || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish;
|
|
748
|
+
// Publish on CMD+Shift+Enter (macOS) / CTRL+Shift+Enter (Windows/Linux).
|
|
749
|
+
// Saving a draft (CMD/CTRL+Enter) is handled by the UpdateAction.
|
|
684
750
|
React__namespace.useEffect(()=>{
|
|
685
751
|
if (!schema?.options?.draftAndPublish) {
|
|
686
752
|
return;
|
|
687
753
|
}
|
|
688
754
|
const handleKeyDown = (e)=>{
|
|
689
|
-
if (e
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
755
|
+
if (keyboardShortcuts.getEditViewShortcut(e) !== 'publish') {
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
e.preventDefault();
|
|
759
|
+
if (!fromRelationModal && isRelationModalOpen) {
|
|
760
|
+
return;
|
|
761
|
+
}
|
|
762
|
+
if (isDisabled) {
|
|
763
|
+
return;
|
|
694
764
|
}
|
|
765
|
+
if (draftRelationCounts.getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
766
|
+
openPublishConfirmDialog(publishConfirmScope);
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
769
|
+
performPublish();
|
|
695
770
|
};
|
|
696
771
|
window.addEventListener('keydown', handleKeyDown);
|
|
697
772
|
return ()=>{
|
|
698
773
|
window.removeEventListener('keydown', handleKeyDown);
|
|
699
774
|
};
|
|
700
775
|
}, [
|
|
701
|
-
|
|
776
|
+
fromRelationModal,
|
|
777
|
+
getFreshDraftRelationCounts,
|
|
778
|
+
isDisabled,
|
|
779
|
+
isRelationModalOpen,
|
|
702
780
|
performPublish,
|
|
781
|
+
publishConfirmScope,
|
|
703
782
|
schema?.options?.draftAndPublish
|
|
704
783
|
]);
|
|
705
784
|
if (!schema?.options?.draftAndPublish) {
|
|
@@ -713,35 +792,61 @@ const transformData = (data)=>{
|
|
|
713
792
|
'preview',
|
|
714
793
|
'relation-modal'
|
|
715
794
|
],
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
* - currently if you're cloning a document we don't support publish & clone at the same time.
|
|
719
|
-
* - the form is submitting
|
|
720
|
-
* - the active tab is the published tab
|
|
721
|
-
* - the document is already published & not modified
|
|
722
|
-
* - the document is being created & not modified
|
|
723
|
-
* - the user doesn't have the permission to publish
|
|
724
|
-
*/ disabled: isCloning || isSubmitting || isLoadingDraftRelations || activeTab === 'published' || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish,
|
|
795
|
+
disabled: isDisabled,
|
|
796
|
+
publishConfirmScope: supportsDraftRelationWarning ? publishConfirmScope : undefined,
|
|
725
797
|
label: formatMessage({
|
|
726
798
|
id: 'app.utils.publish',
|
|
727
799
|
defaultMessage: 'Publish'
|
|
728
800
|
}),
|
|
729
801
|
onClick: async ()=>{
|
|
802
|
+
if (draftRelationCounts.getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
803
|
+
// Let DocumentActionButton open the confirmation dialog.
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
730
806
|
await performPublish();
|
|
807
|
+
// Skip the registered dialog when publishing directly.
|
|
808
|
+
return true;
|
|
731
809
|
},
|
|
732
|
-
dialog:
|
|
810
|
+
dialog: supportsDraftRelationWarning ? {
|
|
733
811
|
type: 'dialog',
|
|
734
|
-
variant:
|
|
735
|
-
|
|
812
|
+
variant: dialogVariant,
|
|
813
|
+
bodyIcon,
|
|
736
814
|
title: formatMessage({
|
|
737
|
-
id: translations.getTranslation(
|
|
815
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-relations.title'),
|
|
738
816
|
defaultMessage: 'Confirmation'
|
|
739
817
|
}),
|
|
740
|
-
content:
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
818
|
+
content: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
819
|
+
children: [
|
|
820
|
+
hasUnpublishedRelations ? formatMessage({
|
|
821
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-relations.message'),
|
|
822
|
+
defaultMessage: 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. {count, plural, one {That relation will not be included in the published version.} other {Those relations will not be included in the published version.}}'
|
|
823
|
+
}, {
|
|
824
|
+
count: draftRelationCounts$1.unpublishedRelations
|
|
825
|
+
}) : formatMessage({
|
|
826
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-m2m-relations.message'),
|
|
827
|
+
defaultMessage: '{count, plural, one {# linked entry is still in draft. It will appear on the live site once that entry is published.} other {# linked entries are still in draft. They will appear on the live site once those entries are published.}}'
|
|
828
|
+
}, {
|
|
829
|
+
count: draftRelationCounts$1.draftM2mLinks
|
|
830
|
+
}),
|
|
831
|
+
hasUnpublishedRelations && hasDraftM2mLinks ? ` ${formatMessage({
|
|
832
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-m2m-relations.additional'),
|
|
833
|
+
defaultMessage: '{count, plural, one {# many-to-many link points} other {# many-to-many links point}} to draft entries that will become visible once published.'
|
|
834
|
+
}, {
|
|
835
|
+
count: draftRelationCounts$1.draftM2mLinks
|
|
836
|
+
})}` : null,
|
|
837
|
+
' ',
|
|
838
|
+
formatMessage({
|
|
839
|
+
id: translations.getTranslation('popUpWarning.warning.publish-question'),
|
|
840
|
+
defaultMessage: 'Do you still want to publish?'
|
|
841
|
+
})
|
|
842
|
+
]
|
|
843
|
+
}),
|
|
844
|
+
confirmLabel: confirmLabel === 'publish' ? formatMessage({
|
|
845
|
+
id: 'app.utils.publish',
|
|
846
|
+
defaultMessage: 'Publish'
|
|
847
|
+
}) : formatMessage({
|
|
848
|
+
id: translations.getTranslation('popUpwarning.warning.has-draft-relations.button-confirm'),
|
|
849
|
+
defaultMessage: 'Publish without relations'
|
|
745
850
|
}),
|
|
746
851
|
onConfirm: async ()=>{
|
|
747
852
|
await performPublish();
|
|
@@ -800,6 +905,12 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
800
905
|
const { schema } = useDocument.useDoc();
|
|
801
906
|
const suitableSchema = fromRelationModal ? relationalModalSchema : schema;
|
|
802
907
|
const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;
|
|
908
|
+
/**
|
|
909
|
+
* Disabled when:
|
|
910
|
+
* - the form is submitting
|
|
911
|
+
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
|
912
|
+
* - the active tab is the published tab
|
|
913
|
+
*/ const isDisabled = isSubmitting || !modified && !isCloning || activeTab === 'published';
|
|
803
914
|
const handleUpdate = async ()=>{
|
|
804
915
|
setSubmitting(true);
|
|
805
916
|
try {
|
|
@@ -949,14 +1060,32 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
949
1060
|
}
|
|
950
1061
|
}
|
|
951
1062
|
};
|
|
1063
|
+
// Save a draft on CMD+Enter (macOS) / CTRL+Enter (Windows/Linux), with CMD/CTRL+S as an alias.
|
|
1064
|
+
// Publishing (CMD/CTRL+Shift+Enter) is handled by the PublishAction.
|
|
1065
|
+
// `handleUpdate` is recreated on every render, so we read the latest version (and the latest
|
|
1066
|
+
// disabled state) through refs and register the listener only once.
|
|
1067
|
+
const handleUpdateRef = React__namespace.useRef(handleUpdate);
|
|
1068
|
+
handleUpdateRef.current = handleUpdate;
|
|
1069
|
+
const isDisabledRef = React__namespace.useRef(isDisabled);
|
|
1070
|
+
isDisabledRef.current = isDisabled;
|
|
1071
|
+
React__namespace.useEffect(()=>{
|
|
1072
|
+
const handleKeyDown = (e)=>{
|
|
1073
|
+
if (keyboardShortcuts.getEditViewShortcut(e) !== 'save') {
|
|
1074
|
+
return;
|
|
1075
|
+
}
|
|
1076
|
+
e.preventDefault();
|
|
1077
|
+
if (!isDisabledRef.current) {
|
|
1078
|
+
handleUpdateRef.current();
|
|
1079
|
+
}
|
|
1080
|
+
};
|
|
1081
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
1082
|
+
return ()=>{
|
|
1083
|
+
window.removeEventListener('keydown', handleKeyDown);
|
|
1084
|
+
};
|
|
1085
|
+
}, []);
|
|
952
1086
|
return {
|
|
953
1087
|
loading: isLoading,
|
|
954
|
-
|
|
955
|
-
* Disabled when:
|
|
956
|
-
* - the form is submitting
|
|
957
|
-
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
|
958
|
-
* - the active tab is the published tab
|
|
959
|
-
*/ disabled: isSubmitting || !modified && !isCloning || activeTab === 'published',
|
|
1088
|
+
disabled: isDisabled,
|
|
960
1089
|
label: formatMessage({
|
|
961
1090
|
id: 'global.save',
|
|
962
1091
|
defaultMessage: 'Save'
|
|
@@ -1195,4 +1324,5 @@ exports.DEFAULT_ACTIONS = DEFAULT_ACTIONS;
|
|
|
1195
1324
|
exports.DocumentActionButton = DocumentActionButton;
|
|
1196
1325
|
exports.DocumentActions = DocumentActions;
|
|
1197
1326
|
exports.DocumentActionsMenu = DocumentActionsMenu;
|
|
1327
|
+
exports.openPublishConfirmDialog = openPublishConfirmDialog;
|
|
1198
1328
|
//# sourceMappingURL=DocumentActions.js.map
|