@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
|
@@ -21,8 +21,14 @@ import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery, use
|
|
|
21
21
|
import { buildValidParams, isBaseQueryError } from '../../../utils/api.mjs';
|
|
22
22
|
import { getTranslation } from '../../../utils/translations.mjs';
|
|
23
23
|
import { handleInvisibleAttributes } from '../utils/data.mjs';
|
|
24
|
+
import { EMPTY_DRAFT_RELATION_COUNTS, countLocalDraftRelations, normalizeDraftRelationCounts, resolveDraftRelationCounts, getDraftRelationsPublishState } from '../utils/draftRelationCounts.mjs';
|
|
25
|
+
import { getEditViewShortcut } from '../utils/keyboardShortcuts.mjs';
|
|
24
26
|
import { useRelationModal } from './FormInputs/Relations/RelationModal.mjs';
|
|
25
27
|
|
|
28
|
+
const publishConfirmDialogOpeners = new Map();
|
|
29
|
+
const openPublishConfirmDialog = (scope)=>{
|
|
30
|
+
publishConfirmDialogOpeners.get(scope)?.();
|
|
31
|
+
};
|
|
26
32
|
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
|
27
33
|
/*
|
|
28
34
|
* Check if the fieldToConnect is already present in the parentDataToUpdate.
|
|
@@ -71,18 +77,23 @@ const DocumentActions = ({ actions })=>{
|
|
|
71
77
|
return null;
|
|
72
78
|
}
|
|
73
79
|
const addHintTooltip = (action, children)=>{
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
if (action.disabled) {
|
|
81
|
+
return children;
|
|
82
|
+
}
|
|
83
|
+
const hint = action.type === 'publish' ? formatMessage({
|
|
84
|
+
id: 'content-manager.containers.EditView.publishHint',
|
|
85
|
+
defaultMessage: 'Ctrl / Cmd + Shift + Enter to publish'
|
|
86
|
+
}) : formatMessage({
|
|
87
|
+
id: 'content-manager.containers.EditView.saveHint',
|
|
88
|
+
defaultMessage: 'Ctrl / Cmd + Enter to save'
|
|
89
|
+
});
|
|
90
|
+
return /*#__PURE__*/ jsx(Tooltip, {
|
|
91
|
+
label: hint,
|
|
81
92
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
82
93
|
width: "100%",
|
|
83
94
|
children: children
|
|
84
95
|
})
|
|
85
|
-
})
|
|
96
|
+
});
|
|
86
97
|
};
|
|
87
98
|
const primaryActionContent = /*#__PURE__*/ jsxs(Fragment, {
|
|
88
99
|
children: [
|
|
@@ -129,15 +140,15 @@ const DocumentActions = ({ actions })=>{
|
|
|
129
140
|
alignItems: "stretch",
|
|
130
141
|
direction: "column",
|
|
131
142
|
children: secondaryAction.type === 'publish' ? /*#__PURE__*/ jsx(tours.contentManager.Publish, {
|
|
132
|
-
children: /*#__PURE__*/ jsx(DocumentActionButton, {
|
|
143
|
+
children: addHintTooltip(secondaryAction, /*#__PURE__*/ jsx(DocumentActionButton, {
|
|
133
144
|
...secondaryAction,
|
|
134
145
|
variant: secondaryAction.variant || 'secondary'
|
|
135
|
-
})
|
|
136
|
-
}) : /*#__PURE__*/ jsx(DocumentActionButton, {
|
|
146
|
+
}))
|
|
147
|
+
}) : addHintTooltip(secondaryAction, /*#__PURE__*/ jsx(DocumentActionButton, {
|
|
137
148
|
...secondaryAction,
|
|
138
149
|
variant: secondaryAction.variant || 'secondary',
|
|
139
150
|
buttonType: "submit"
|
|
140
|
-
})
|
|
151
|
+
}))
|
|
141
152
|
}) : null
|
|
142
153
|
]
|
|
143
154
|
});
|
|
@@ -145,6 +156,24 @@ const DocumentActions = ({ actions })=>{
|
|
|
145
156
|
const DocumentActionButton = ({ buttonType = 'button', ...action })=>{
|
|
146
157
|
const [dialogId, setDialogId] = React.useState(null);
|
|
147
158
|
const { toggleNotification } = useNotification();
|
|
159
|
+
React.useEffect(()=>{
|
|
160
|
+
const scope = action.publishConfirmScope;
|
|
161
|
+
if (action.type !== 'publish' || !action.dialog || !scope) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const open = ()=>setDialogId(action.id);
|
|
165
|
+
publishConfirmDialogOpeners.set(scope, open);
|
|
166
|
+
return ()=>{
|
|
167
|
+
if (publishConfirmDialogOpeners.get(scope) === open) {
|
|
168
|
+
publishConfirmDialogOpeners.delete(scope);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}, [
|
|
172
|
+
action.type,
|
|
173
|
+
action.dialog,
|
|
174
|
+
action.id,
|
|
175
|
+
action.publishConfirmScope
|
|
176
|
+
]);
|
|
148
177
|
const handleClick = (action)=>async (e)=>{
|
|
149
178
|
const { onClick = ()=>false, dialog, id } = action;
|
|
150
179
|
const muteDialog = await onClick(e);
|
|
@@ -295,7 +324,7 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
295
324
|
]
|
|
296
325
|
});
|
|
297
326
|
};
|
|
298
|
-
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
|
|
327
|
+
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, bodyIcon, confirmLabel, isOpen, variant = 'secondary', loading })=>{
|
|
299
328
|
const { formatMessage } = useIntl();
|
|
300
329
|
const handleClose = async ()=>{
|
|
301
330
|
if (onCancel) {
|
|
@@ -309,6 +338,28 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
309
338
|
}
|
|
310
339
|
onClose();
|
|
311
340
|
};
|
|
341
|
+
const dialogBody = bodyIcon ? /*#__PURE__*/ jsxs(Flex, {
|
|
342
|
+
direction: "column",
|
|
343
|
+
alignItems: "stretch",
|
|
344
|
+
gap: 2,
|
|
345
|
+
children: [
|
|
346
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
347
|
+
justifyContent: "center",
|
|
348
|
+
children: /*#__PURE__*/ jsx(WarningCircle, {
|
|
349
|
+
width: "24px",
|
|
350
|
+
height: "24px",
|
|
351
|
+
fill: bodyIcon === 'danger' ? 'danger600' : 'primary600'
|
|
352
|
+
})
|
|
353
|
+
}),
|
|
354
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
355
|
+
id: "confirm-description",
|
|
356
|
+
tag: "p",
|
|
357
|
+
variant: "omega",
|
|
358
|
+
textAlign: "center",
|
|
359
|
+
children: content
|
|
360
|
+
})
|
|
361
|
+
]
|
|
362
|
+
}) : content;
|
|
312
363
|
return /*#__PURE__*/ jsx(Dialog.Root, {
|
|
313
364
|
open: isOpen,
|
|
314
365
|
onOpenChange: handleClose,
|
|
@@ -318,7 +369,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
318
369
|
children: title
|
|
319
370
|
}),
|
|
320
371
|
/*#__PURE__*/ jsx(Dialog.Body, {
|
|
321
|
-
children:
|
|
372
|
+
children: dialogBody
|
|
322
373
|
}),
|
|
323
374
|
/*#__PURE__*/ jsxs(Dialog.Footer, {
|
|
324
375
|
children: [
|
|
@@ -337,7 +388,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
337
388
|
variant: variant,
|
|
338
389
|
fullWidth: true,
|
|
339
390
|
loading: loading,
|
|
340
|
-
children: formatMessage({
|
|
391
|
+
children: confirmLabel ?? formatMessage({
|
|
341
392
|
id: 'app.components.Button.confirm',
|
|
342
393
|
defaultMessage: 'Confirm'
|
|
343
394
|
})
|
|
@@ -405,10 +456,11 @@ const transformData = (data)=>{
|
|
|
405
456
|
canReadFields
|
|
406
457
|
}));
|
|
407
458
|
const { publish, isLoading } = useDocumentActions();
|
|
408
|
-
const onPreview = usePreviewContext('
|
|
409
|
-
const [countDraftRelations, {
|
|
410
|
-
const [
|
|
411
|
-
const [
|
|
459
|
+
const onPreview = usePreviewContext('PublishAction', (state)=>state.onPreview, false);
|
|
460
|
+
const [countDraftRelations, { isError: isErrorDraftRelations }] = useLazyGetDraftRelationCountQuery();
|
|
461
|
+
const [localDraftRelationCounts, setLocalDraftRelationCounts] = React.useState(EMPTY_DRAFT_RELATION_COUNTS);
|
|
462
|
+
const [serverDraftRelationCounts, setServerDraftRelationCounts] = React.useState(EMPTY_DRAFT_RELATION_COUNTS);
|
|
463
|
+
const [isFetchingDraftRelations, setIsFetchingDraftRelations] = React.useState(false);
|
|
412
464
|
const [{ rawQuery }] = useQueryParams();
|
|
413
465
|
const modified = useForm('PublishAction', ({ modified })=>modified);
|
|
414
466
|
const setSubmitting = useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
|
|
@@ -422,6 +474,8 @@ const transformData = (data)=>{
|
|
|
422
474
|
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
423
475
|
const relationContext = useRelationModal('PublishAction', ()=>true, false);
|
|
424
476
|
const fromRelationModal = relationContext != undefined;
|
|
477
|
+
const isRelationModalOpen = useRelationModal('PublishAction', (state)=>state.state.isModalOpen, false);
|
|
478
|
+
const publishConfirmScope = fromRelationModal ? 'relation-modal' : onPreview ? 'preview' : 'panel';
|
|
425
479
|
const dispatch = useRelationModal('PublishAction', (state)=>state.dispatch);
|
|
426
480
|
const fieldToConnect = useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
|
427
481
|
const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
@@ -448,49 +502,19 @@ const transformData = (data)=>{
|
|
|
448
502
|
formatMessage
|
|
449
503
|
]);
|
|
450
504
|
React.useEffect(()=>{
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* Extracts draft relations from the provided data object.
|
|
454
|
-
* It checks for a connect array of relations.
|
|
455
|
-
* If a relation has a status of 'draft', its id is added to the localDraftRelations set.
|
|
456
|
-
*/ const extractDraftRelations = (data)=>{
|
|
457
|
-
const relations = data.connect || [];
|
|
458
|
-
relations.forEach((relation)=>{
|
|
459
|
-
if (relation.status === 'draft') {
|
|
460
|
-
localDraftRelations.add(relation.id);
|
|
461
|
-
}
|
|
462
|
-
});
|
|
463
|
-
};
|
|
464
|
-
/**
|
|
465
|
-
* Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.
|
|
466
|
-
* If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.
|
|
467
|
-
* It recursively calls itself for any non-null objects it contains.
|
|
468
|
-
*/ const traverseAndExtract = (data)=>{
|
|
469
|
-
Object.entries(data).forEach(([key, value])=>{
|
|
470
|
-
if (key === 'connect' && Array.isArray(value)) {
|
|
471
|
-
extractDraftRelations({
|
|
472
|
-
connect: value
|
|
473
|
-
});
|
|
474
|
-
} else if (typeof value === 'object' && value !== null) {
|
|
475
|
-
traverseAndExtract(value);
|
|
476
|
-
}
|
|
477
|
-
});
|
|
478
|
-
};
|
|
479
|
-
if (!documentId || modified) {
|
|
480
|
-
traverseAndExtract(formValues);
|
|
481
|
-
setLocalCountOfDraftRelations(localDraftRelations.size);
|
|
482
|
-
}
|
|
505
|
+
setLocalDraftRelationCounts(countLocalDraftRelations(formValues, schema, components, model));
|
|
483
506
|
}, [
|
|
484
|
-
|
|
485
|
-
modified,
|
|
507
|
+
components,
|
|
486
508
|
formValues,
|
|
487
|
-
|
|
509
|
+
model,
|
|
510
|
+
schema
|
|
488
511
|
]);
|
|
489
|
-
React.
|
|
490
|
-
if (!document
|
|
512
|
+
const fetchDraftRelationsCount = React.useCallback(async ()=>{
|
|
513
|
+
if (!document?.documentId || isListView) {
|
|
491
514
|
return;
|
|
492
515
|
}
|
|
493
|
-
|
|
516
|
+
setIsFetchingDraftRelations(true);
|
|
517
|
+
try {
|
|
494
518
|
const { data, error } = await countDraftRelations({
|
|
495
519
|
collectionType,
|
|
496
520
|
model,
|
|
@@ -501,18 +525,36 @@ const transformData = (data)=>{
|
|
|
501
525
|
throw error;
|
|
502
526
|
}
|
|
503
527
|
if (data) {
|
|
504
|
-
|
|
528
|
+
setServerDraftRelationCounts(normalizeDraftRelationCounts(data));
|
|
505
529
|
}
|
|
506
|
-
}
|
|
507
|
-
|
|
530
|
+
} finally{
|
|
531
|
+
setIsFetchingDraftRelations(false);
|
|
532
|
+
}
|
|
508
533
|
}, [
|
|
509
|
-
isListView,
|
|
510
|
-
document,
|
|
511
|
-
documentId,
|
|
512
|
-
countDraftRelations,
|
|
513
534
|
collectionType,
|
|
514
|
-
|
|
515
|
-
currentDocumentMeta.params
|
|
535
|
+
countDraftRelations,
|
|
536
|
+
currentDocumentMeta.params,
|
|
537
|
+
document?.documentId,
|
|
538
|
+
documentId,
|
|
539
|
+
isListView,
|
|
540
|
+
model
|
|
541
|
+
]);
|
|
542
|
+
React.useEffect(()=>{
|
|
543
|
+
fetchDraftRelationsCount();
|
|
544
|
+
}, [
|
|
545
|
+
fetchDraftRelationsCount,
|
|
546
|
+
document?.updatedAt
|
|
547
|
+
]);
|
|
548
|
+
React.useEffect(()=>{
|
|
549
|
+
const handleWindowFocus = ()=>{
|
|
550
|
+
fetchDraftRelationsCount();
|
|
551
|
+
};
|
|
552
|
+
window.addEventListener('focus', handleWindowFocus);
|
|
553
|
+
return ()=>{
|
|
554
|
+
window.removeEventListener('focus', handleWindowFocus);
|
|
555
|
+
};
|
|
556
|
+
}, [
|
|
557
|
+
fetchDraftRelationsCount
|
|
516
558
|
]);
|
|
517
559
|
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
518
560
|
const parentDocumentData = useDocument({
|
|
@@ -654,31 +696,61 @@ const transformData = (data)=>{
|
|
|
654
696
|
}
|
|
655
697
|
}
|
|
656
698
|
};
|
|
657
|
-
const
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
699
|
+
const getFreshDraftRelationCounts = React.useCallback(()=>resolveDraftRelationCounts(documentId, modified, countLocalDraftRelations(getValues(), schema, components, model), serverDraftRelationCounts), [
|
|
700
|
+
components,
|
|
701
|
+
documentId,
|
|
702
|
+
getValues,
|
|
703
|
+
model,
|
|
704
|
+
modified,
|
|
705
|
+
schema,
|
|
706
|
+
serverDraftRelationCounts
|
|
707
|
+
]);
|
|
708
|
+
const draftRelationCounts = resolveDraftRelationCounts(documentId, modified, localDraftRelationCounts, serverDraftRelationCounts);
|
|
709
|
+
const { hasUnpublishedRelations, hasDraftM2mLinks, dialogVariant, bodyIcon, confirmLabel } = getDraftRelationsPublishState(draftRelationCounts);
|
|
710
|
+
const supportsDraftRelationWarning = Boolean(schema?.options?.draftAndPublish);
|
|
711
|
+
/**
|
|
712
|
+
* Disabled when:
|
|
713
|
+
* - currently if you're cloning a document we don't support publish & clone at the same time.
|
|
714
|
+
* - the form is submitting
|
|
715
|
+
* - the active tab is the published tab
|
|
716
|
+
* - the document is already published & not modified
|
|
717
|
+
* - the document is being created & not modified
|
|
718
|
+
* - the user doesn't have the permission to publish
|
|
719
|
+
*/ const isDisabled = isCloning || isSubmitting || isFetchingDraftRelations || activeTab === 'published' || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish;
|
|
720
|
+
// Publish on CMD+Shift+Enter (macOS) / CTRL+Shift+Enter (Windows/Linux).
|
|
721
|
+
// Saving a draft (CMD/CTRL+Enter) is handled by the UpdateAction.
|
|
663
722
|
React.useEffect(()=>{
|
|
664
723
|
if (!schema?.options?.draftAndPublish) {
|
|
665
724
|
return;
|
|
666
725
|
}
|
|
667
726
|
const handleKeyDown = (e)=>{
|
|
668
|
-
if (e
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
727
|
+
if (getEditViewShortcut(e) !== 'publish') {
|
|
728
|
+
return;
|
|
729
|
+
}
|
|
730
|
+
e.preventDefault();
|
|
731
|
+
if (!fromRelationModal && isRelationModalOpen) {
|
|
732
|
+
return;
|
|
733
|
+
}
|
|
734
|
+
if (isDisabled) {
|
|
735
|
+
return;
|
|
673
736
|
}
|
|
737
|
+
if (getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
738
|
+
openPublishConfirmDialog(publishConfirmScope);
|
|
739
|
+
return;
|
|
740
|
+
}
|
|
741
|
+
performPublish();
|
|
674
742
|
};
|
|
675
743
|
window.addEventListener('keydown', handleKeyDown);
|
|
676
744
|
return ()=>{
|
|
677
745
|
window.removeEventListener('keydown', handleKeyDown);
|
|
678
746
|
};
|
|
679
747
|
}, [
|
|
680
|
-
|
|
748
|
+
fromRelationModal,
|
|
749
|
+
getFreshDraftRelationCounts,
|
|
750
|
+
isDisabled,
|
|
751
|
+
isRelationModalOpen,
|
|
681
752
|
performPublish,
|
|
753
|
+
publishConfirmScope,
|
|
682
754
|
schema?.options?.draftAndPublish
|
|
683
755
|
]);
|
|
684
756
|
if (!schema?.options?.draftAndPublish) {
|
|
@@ -692,35 +764,61 @@ const transformData = (data)=>{
|
|
|
692
764
|
'preview',
|
|
693
765
|
'relation-modal'
|
|
694
766
|
],
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
* - currently if you're cloning a document we don't support publish & clone at the same time.
|
|
698
|
-
* - the form is submitting
|
|
699
|
-
* - the active tab is the published tab
|
|
700
|
-
* - the document is already published & not modified
|
|
701
|
-
* - the document is being created & not modified
|
|
702
|
-
* - the user doesn't have the permission to publish
|
|
703
|
-
*/ disabled: isCloning || isSubmitting || isLoadingDraftRelations || activeTab === 'published' || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish,
|
|
767
|
+
disabled: isDisabled,
|
|
768
|
+
publishConfirmScope: supportsDraftRelationWarning ? publishConfirmScope : undefined,
|
|
704
769
|
label: formatMessage({
|
|
705
770
|
id: 'app.utils.publish',
|
|
706
771
|
defaultMessage: 'Publish'
|
|
707
772
|
}),
|
|
708
773
|
onClick: async ()=>{
|
|
774
|
+
if (getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
775
|
+
// Let DocumentActionButton open the confirmation dialog.
|
|
776
|
+
return;
|
|
777
|
+
}
|
|
709
778
|
await performPublish();
|
|
779
|
+
// Skip the registered dialog when publishing directly.
|
|
780
|
+
return true;
|
|
710
781
|
},
|
|
711
|
-
dialog:
|
|
782
|
+
dialog: supportsDraftRelationWarning ? {
|
|
712
783
|
type: 'dialog',
|
|
713
|
-
variant:
|
|
714
|
-
|
|
784
|
+
variant: dialogVariant,
|
|
785
|
+
bodyIcon,
|
|
715
786
|
title: formatMessage({
|
|
716
|
-
id: getTranslation(
|
|
787
|
+
id: getTranslation('popUpWarning.warning.has-draft-relations.title'),
|
|
717
788
|
defaultMessage: 'Confirmation'
|
|
718
789
|
}),
|
|
719
|
-
content:
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
790
|
+
content: /*#__PURE__*/ jsxs(Fragment, {
|
|
791
|
+
children: [
|
|
792
|
+
hasUnpublishedRelations ? formatMessage({
|
|
793
|
+
id: getTranslation('popUpWarning.warning.has-draft-relations.message'),
|
|
794
|
+
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.}}'
|
|
795
|
+
}, {
|
|
796
|
+
count: draftRelationCounts.unpublishedRelations
|
|
797
|
+
}) : formatMessage({
|
|
798
|
+
id: getTranslation('popUpWarning.warning.has-draft-m2m-relations.message'),
|
|
799
|
+
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.}}'
|
|
800
|
+
}, {
|
|
801
|
+
count: draftRelationCounts.draftM2mLinks
|
|
802
|
+
}),
|
|
803
|
+
hasUnpublishedRelations && hasDraftM2mLinks ? ` ${formatMessage({
|
|
804
|
+
id: getTranslation('popUpWarning.warning.has-draft-m2m-relations.additional'),
|
|
805
|
+
defaultMessage: '{count, plural, one {# many-to-many link points} other {# many-to-many links point}} to draft entries that will become visible once published.'
|
|
806
|
+
}, {
|
|
807
|
+
count: draftRelationCounts.draftM2mLinks
|
|
808
|
+
})}` : null,
|
|
809
|
+
' ',
|
|
810
|
+
formatMessage({
|
|
811
|
+
id: getTranslation('popUpWarning.warning.publish-question'),
|
|
812
|
+
defaultMessage: 'Do you still want to publish?'
|
|
813
|
+
})
|
|
814
|
+
]
|
|
815
|
+
}),
|
|
816
|
+
confirmLabel: confirmLabel === 'publish' ? formatMessage({
|
|
817
|
+
id: 'app.utils.publish',
|
|
818
|
+
defaultMessage: 'Publish'
|
|
819
|
+
}) : formatMessage({
|
|
820
|
+
id: getTranslation('popUpwarning.warning.has-draft-relations.button-confirm'),
|
|
821
|
+
defaultMessage: 'Publish without relations'
|
|
724
822
|
}),
|
|
725
823
|
onConfirm: async ()=>{
|
|
726
824
|
await performPublish();
|
|
@@ -779,6 +877,12 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
779
877
|
const { schema } = useDoc();
|
|
780
878
|
const suitableSchema = fromRelationModal ? relationalModalSchema : schema;
|
|
781
879
|
const hasDraftAndPublished = suitableSchema?.options?.draftAndPublish ?? false;
|
|
880
|
+
/**
|
|
881
|
+
* Disabled when:
|
|
882
|
+
* - the form is submitting
|
|
883
|
+
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
|
884
|
+
* - the active tab is the published tab
|
|
885
|
+
*/ const isDisabled = isSubmitting || !modified && !isCloning || activeTab === 'published';
|
|
782
886
|
const handleUpdate = async ()=>{
|
|
783
887
|
setSubmitting(true);
|
|
784
888
|
try {
|
|
@@ -928,14 +1032,32 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
928
1032
|
}
|
|
929
1033
|
}
|
|
930
1034
|
};
|
|
1035
|
+
// Save a draft on CMD+Enter (macOS) / CTRL+Enter (Windows/Linux), with CMD/CTRL+S as an alias.
|
|
1036
|
+
// Publishing (CMD/CTRL+Shift+Enter) is handled by the PublishAction.
|
|
1037
|
+
// `handleUpdate` is recreated on every render, so we read the latest version (and the latest
|
|
1038
|
+
// disabled state) through refs and register the listener only once.
|
|
1039
|
+
const handleUpdateRef = React.useRef(handleUpdate);
|
|
1040
|
+
handleUpdateRef.current = handleUpdate;
|
|
1041
|
+
const isDisabledRef = React.useRef(isDisabled);
|
|
1042
|
+
isDisabledRef.current = isDisabled;
|
|
1043
|
+
React.useEffect(()=>{
|
|
1044
|
+
const handleKeyDown = (e)=>{
|
|
1045
|
+
if (getEditViewShortcut(e) !== 'save') {
|
|
1046
|
+
return;
|
|
1047
|
+
}
|
|
1048
|
+
e.preventDefault();
|
|
1049
|
+
if (!isDisabledRef.current) {
|
|
1050
|
+
handleUpdateRef.current();
|
|
1051
|
+
}
|
|
1052
|
+
};
|
|
1053
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
1054
|
+
return ()=>{
|
|
1055
|
+
window.removeEventListener('keydown', handleKeyDown);
|
|
1056
|
+
};
|
|
1057
|
+
}, []);
|
|
931
1058
|
return {
|
|
932
1059
|
loading: isLoading,
|
|
933
|
-
|
|
934
|
-
* Disabled when:
|
|
935
|
-
* - the form is submitting
|
|
936
|
-
* - the document is not modified & we're not cloning (you can save a clone entity straight away)
|
|
937
|
-
* - the active tab is the published tab
|
|
938
|
-
*/ disabled: isSubmitting || !modified && !isCloning || activeTab === 'published',
|
|
1060
|
+
disabled: isDisabled,
|
|
939
1061
|
label: formatMessage({
|
|
940
1062
|
id: 'global.save',
|
|
941
1063
|
defaultMessage: 'Save'
|
|
@@ -1170,5 +1292,5 @@ const DEFAULT_ACTIONS = [
|
|
|
1170
1292
|
DiscardAction
|
|
1171
1293
|
];
|
|
1172
1294
|
|
|
1173
|
-
export { DEFAULT_ACTIONS, DocumentActionButton, DocumentActions, DocumentActionsMenu };
|
|
1295
|
+
export { DEFAULT_ACTIONS, DocumentActionButton, DocumentActions, DocumentActionsMenu, openPublishConfirmDialog };
|
|
1174
1296
|
//# sourceMappingURL=DocumentActions.mjs.map
|