@strapi/content-manager 5.49.0 → 5.50.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ComponentIcon.js.map +1 -1
- package/dist/admin/components/ComponentIcon.mjs.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/DragLayer.js.map +1 -1
- package/dist/admin/components/DragLayer.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +66 -67
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +68 -69
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.js +3 -3
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs +3 -3
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/history/routes.js.map +1 -1
- package/dist/admin/history/routes.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +15 -8
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +15 -8
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/layout.js +21 -7
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +23 -9
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.js.map +1 -1
- package/dist/admin/pages/ComponentConfigurationPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +168 -78
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +168 -79
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksInput.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +2 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.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 +6 -2
- 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 +6 -1
- 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/Relations.js +8 -5
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +8 -5
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +5 -4
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +5 -4
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/utils/utils.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs.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/ListConfiguration/components/Settings.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/SortDisplayedFields.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +71 -11
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +73 -13
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/Actions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +1 -1
- 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.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +5 -3
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +5 -3
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +37 -0
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs +39 -2
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js +28 -3
- package/dist/admin/pages/ListView/components/TableCells/CellContent.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs +28 -4
- package/dist/admin/pages/ListView/components/TableCells/CellContent.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js +8 -7
- package/dist/admin/pages/ListView/components/TableCells/CellValue.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs +8 -7
- package/dist/admin/pages/ListView/components/TableCells/CellValue.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Components.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Components.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableCells/Relations.js +1 -1
- 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/pages/Preview.js +40 -11
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +41 -12
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/routes.js.map +1 -1
- package/dist/admin/preview/routes.mjs.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/preview/utils/fieldUtils.js.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
- package/dist/admin/router.js.map +1 -1
- package/dist/admin/router.mjs.map +1 -1
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/components/ComponentIcon.d.ts +4 -3
- package/dist/admin/src/components/DragLayer.d.ts +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/routes.d.ts +2 -2
- package/dist/admin/src/history/services/historyVersion.d.ts +3 -3
- 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/useDocumentActions.d.ts +17 -16
- package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
- 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/index.d.ts +1 -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/UID.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/Editor.d.ts +1 -1
- 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/FormInputs/Wysiwyg/utils/utils.d.ts +7 -1
- 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/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/ListView/components/TableCells/CellContent.d.ts +11 -2
- package/dist/admin/src/pages/ListView/components/TableCells/CellValue.d.ts +1 -1
- package/dist/admin/src/pages/formatComponentConfigurationEditLayout.d.ts +1 -1
- package/dist/admin/src/preview/routes.d.ts +2 -2
- package/dist/admin/src/preview/services/preview.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/router.d.ts +2 -2
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +49 -89
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +8 -22
- package/dist/admin/src/services/uid.d.ts +8 -8
- package/dist/admin/src/utils/api.d.ts +2 -2
- package/dist/admin/src/utils/conditionalFields.d.ts +1 -0
- package/dist/admin/src/utils/layouts/normalizeContentManagerLayout.d.ts +4 -4
- package/dist/admin/src/utils/objects.d.ts +7 -4
- package/dist/admin/src/utils/users.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +2 -1
- package/dist/admin/translations/en.json.js +6 -2
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +6 -2
- package/dist/admin/translations/en.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/utils/api.js +6 -1
- package/dist/admin/utils/api.js.map +1 -1
- package/dist/admin/utils/api.mjs +6 -1
- package/dist/admin/utils/api.mjs.map +1 -1
- package/dist/admin/utils/conditionalFields.js.map +1 -1
- package/dist/admin/utils/conditionalFields.mjs.map +1 -1
- package/dist/admin/utils/objects.js +43 -13
- package/dist/admin/utils/objects.js.map +1 -1
- package/dist/admin/utils/objects.mjs +43 -13
- package/dist/admin/utils/objects.mjs.map +1 -1
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +6 -3
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +6 -3
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/relations.js +5 -4
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +5 -4
- package/dist/server/controllers/relations.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/validation/model-configuration.js +3 -1
- package/dist/server/controllers/validation/model-configuration.js.map +1 -1
- package/dist/server/controllers/validation/model-configuration.mjs +3 -1
- package/dist/server/controllers/validation/model-configuration.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +27 -7
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +27 -7
- package/dist/server/homepage/services/homepage.mjs.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/permission.js +4 -3
- package/dist/server/services/permission.js.map +1 -1
- package/dist/server/services/permission.mjs +4 -3
- package/dist/server/services/permission.mjs.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 +118 -25
- 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 +15 -1
- 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/src/controllers/collection-types.d.ts.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.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 +79 -85
- 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.map +1 -1
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/blocks-schema.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/server/src/mcp/schemas/sort-schema.d.ts.map +1 -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 +78 -84
- 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 +4 -4
- 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.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 +9 -9
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentConfigurationPage.js","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport { DEFAULT_SETTINGS, EditLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport { formatComponentConfigurationEditLayout } from './formatComponentConfigurationEditLayout';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n schemas,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n schemas: res.data?.contentTypes ?? [],\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatComponentConfigurationEditLayout(data, { schema, components, schemas })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components, schemas]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","schemas","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","contentTypes","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatComponentConfigurationEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComponentConfigurationPage.js","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport { DEFAULT_SETTINGS, EditLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport { formatComponentConfigurationEditLayout } from './formatComponentConfigurationEditLayout';\n\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n schemas,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n schemas: res.data?.contentTypes ?? [],\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatComponentConfigurationEditLayout(data, { schema, components, schemas })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components, schemas]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","schemas","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","contentTypes","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatComponentConfigurationEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentConfigurationPage.mjs","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport { DEFAULT_SETTINGS, EditLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport { formatComponentConfigurationEditLayout } from './formatComponentConfigurationEditLayout';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n schemas,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n schemas: res.data?.contentTypes ?? [],\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatComponentConfigurationEditLayout(data, { schema, components, schemas })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components, schemas]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","schemas","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","contentTypes","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatComponentConfigurationEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComponentConfigurationPage.mjs","sources":["../../../admin/src/pages/ComponentConfigurationPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { TEMP_FIELD_NAME } from '../components/ConfigurationForm/Fields';\nimport { ConfigurationForm, ConfigurationFormProps } from '../components/ConfigurationForm/Form';\nimport { ComponentsDictionary, extractContentTypeComponents } from '../hooks/useContentTypeSchema';\nimport { DEFAULT_SETTINGS, EditLayout } from '../hooks/useDocumentLayout';\nimport { useTypedSelector } from '../modules/hooks';\nimport {\n useGetComponentConfigurationQuery,\n useUpdateComponentConfigurationMutation,\n} from '../services/components';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { setIn } from '../utils/objects';\n\nimport { formatComponentConfigurationEditLayout } from './formatComponentConfigurationEditLayout';\n\nimport type { Metadatas } from '../../../shared/contracts/content-types';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentConfigurationPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComponentConfigurationPage = () => {\n /**\n * useDocumentLayout only works for documents, not components,\n * it feels weird to make that hook work for both when this is SUCH\n * a unique use case and we only do it here, so in short, we essentially\n * just extracted the logic to make an edit view layout and reproduced it here.\n */\n const { slug: model } = useParams<{ slug: string }>();\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const {\n components,\n fieldSizes,\n schema,\n schemas,\n error: errorSchema,\n isLoading: isLoadingSchema,\n isFetching: isFetchingSchema,\n } = useGetInitialDataQuery(undefined, {\n selectFromResult: (res) => {\n const schema = res.data?.components.find((ct) => ct.uid === model);\n\n const componentsByKey = res.data?.components.reduce<ComponentsDictionary>(\n (acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n },\n {}\n );\n\n const components = extractContentTypeComponents(schema?.attributes, componentsByKey);\n\n const fieldSizes = Object.entries(res.data?.fieldSizes ?? {}).reduce<\n ConfigurationFormProps['fieldSizes']\n >((acc, [attributeName, { default: size }]) => {\n acc[attributeName] = size;\n\n return acc;\n }, {});\n\n return {\n isFetching: res.isFetching,\n isLoading: res.isLoading,\n error: res.error,\n components,\n schema,\n schemas: res.data?.contentTypes ?? [],\n fieldSizes,\n };\n },\n });\n\n React.useEffect(() => {\n if (errorSchema) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(errorSchema),\n });\n }\n }, [errorSchema, formatAPIError, toggleNotification]);\n\n const {\n data,\n isLoading: isLoadingConfig,\n isFetching: isFetchingConfig,\n error,\n } = useGetComponentConfigurationQuery(model ?? '');\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n /**\n * you **must** check if we're loading or fetching in case the component gets new props\n * but nothing was unmounted, it then becomes a fetch, not a load.\n */\n const isLoading = isLoadingConfig || isLoadingSchema || isFetchingConfig || isFetchingSchema;\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatComponentConfigurationEditLayout(data, { schema, components, schemas })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schema, components, schemas]\n );\n\n const [updateConfiguration] = useUpdateComponentConfigurationMutation();\n const handleSubmit: ConfigurationFormProps['onSubmit'] = async (formData) => {\n try {\n /**\n * We reconstruct the metadatas object by taking the existing list metadatas\n * and re-merging that by attribute name with the current list metadatas, whilst overwriting\n * the data from the form we've built.\n */\n const meta = Object.entries(data?.component.metadatas ?? {}).reduce<Metadatas>(\n (acc, [name, { edit, list }]) => {\n const {\n __temp_key__,\n size: _size,\n name: _name,\n ...editedMetadata\n } = formData.layout.flatMap((row) => row.children).find((field) => field.name === name) ??\n {};\n\n acc[name] = {\n edit: {\n ...edit,\n ...editedMetadata,\n },\n list,\n };\n\n return acc;\n },\n {}\n );\n\n const res = await updateConfiguration({\n layouts: {\n edit: formData.layout.map((row) =>\n row.children.reduce<Array<{ name: string; size: number }>>((acc, { name, size }) => {\n if (name !== TEMP_FIELD_NAME) {\n return [...acc, { name, size }];\n }\n\n return acc;\n }, [])\n ),\n list: data?.component.layouts.list,\n },\n settings: setIn(formData.settings, 'displayName', undefined),\n metadatas: meta,\n uid: model,\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || errorSchema || !schema) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>{`Configure ${editLayout.settings.displayName} Edit View`}</Page.Title>\n <ConfigurationForm\n onSubmit={handleSubmit}\n attributes={schema.attributes}\n fieldSizes={fieldSizes}\n layout={editLayout}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedComponentConfigurationPage = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.contentManager?.componentsConfigurations\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ComponentConfigurationPage />\n </Page.Protect>\n );\n};\n\nexport { ComponentConfigurationPage, ProtectedComponentConfigurationPage };\n"],"names":["ComponentConfigurationPage","slug","model","useParams","toggleNotification","useNotification","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","components","fieldSizes","schema","schemas","error","errorSchema","isLoading","isLoadingSchema","isFetching","isFetchingSchema","useGetInitialDataQuery","undefined","selectFromResult","res","data","find","ct","uid","componentsByKey","reduce","acc","component","extractContentTypeComponents","attributes","Object","entries","attributeName","default","size","contentTypes","React","useEffect","type","message","isLoadingConfig","isFetchingConfig","useGetComponentConfigurationQuery","editLayout","useMemo","formatComponentConfigurationEditLayout","layout","metadatas","options","settings","DEFAULT_SETTINGS","updateConfiguration","useUpdateComponentConfigurationMutation","handleSubmit","formData","meta","name","edit","list","__temp_key__","_size","_name","editedMetadata","flatMap","row","children","field","layouts","map","TEMP_FIELD_NAME","setIn","id","defaultMessage","_jsx","Page","Loading","Error","_jsxs","_Fragment","Title","displayName","ConfigurationForm","onSubmit","ProtectedComponentConfigurationPage","permissions","useTypedSelector","state","admin_app","contentManager","componentsConfigurations","Protect"],"mappings":";;;;;;;;;;;;;;;AAsBA;;AAEkG,2GAE5FA,0BAAAA,GAA6B,IAAA;AACjC;;;;;AAKC,MACD,MAAM,EAAEC,IAAAA,EAAMC,KAAK,EAAE,GAAGC,SAAAA,EAAAA;IACxB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,kBAAAA,EAAAA;IAEpD,MAAM,EACJC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,OAAO,EACPC,KAAAA,EAAOC,WAAW,EAClBC,SAAAA,EAAWC,eAAe,EAC1BC,UAAAA,EAAYC,gBAAgB,EAC7B,GAAGC,uBAAuBC,SAAAA,EAAW;AACpCC,QAAAA,gBAAAA,EAAkB,CAACC,GAAAA,GAAAA;YACjB,MAAMX,MAAAA,GAASW,GAAAA,CAAIC,IAAI,EAAEd,UAAAA,CAAWe,KAAK,CAACC,EAAAA,GAAOA,EAAAA,CAAGC,GAAG,KAAK1B,KAAAA,CAAAA;AAE5D,YAAA,MAAM2B,kBAAkBL,GAAAA,CAAIC,IAAI,EAAEd,UAAAA,CAAWmB,MAAAA,CAC3C,CAACC,GAAAA,EAAKC,SAAAA,GAAAA;AACJD,gBAAAA,GAAG,CAACC,SAAAA,CAAUJ,GAAG,CAAC,GAAGI,SAAAA;gBAErB,OAAOD,GAAAA;AACT,YAAA,CAAA,EACA,EAAC,CAAA;YAGH,MAAMpB,UAAAA,GAAasB,4BAAAA,CAA6BpB,MAAAA,EAAQqB,UAAAA,EAAYL,eAAAA,CAAAA;YAEpE,MAAMjB,UAAAA,GAAauB,OAAOC,OAAO,CAACZ,IAAIC,IAAI,EAAEb,cAAc,EAAC,CAAA,CAAGkB,MAAM,CAElE,CAACC,KAAK,CAACM,aAAAA,EAAe,EAAEC,OAAAA,EAASC,IAAI,EAAE,CAAC,GAAA;gBACxCR,GAAG,CAACM,cAAc,GAAGE,IAAAA;gBAErB,OAAOR,GAAAA;AACT,YAAA,CAAA,EAAG,EAAC,CAAA;YAEJ,OAAO;AACLZ,gBAAAA,UAAAA,EAAYK,IAAIL,UAAU;AAC1BF,gBAAAA,SAAAA,EAAWO,IAAIP,SAAS;AACxBF,gBAAAA,KAAAA,EAAOS,IAAIT,KAAK;AAChBJ,gBAAAA,UAAAA;AACAE,gBAAAA,MAAAA;AACAC,gBAAAA,OAAAA,EAASU,GAAAA,CAAIC,IAAI,EAAEe,YAAAA,IAAgB,EAAE;AACrC5B,gBAAAA;AACF,aAAA;AACF,QAAA;AACF,KAAA,CAAA;AAEA6B,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI1B,WAAAA,EAAa;YACfZ,kBAAAA,CAAmB;gBACjBuC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASnC,cAAAA,CAAeO,WAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,WAAAA;AAAaP,QAAAA,cAAAA;AAAgBL,QAAAA;AAAmB,KAAA,CAAA;AAEpD,IAAA,MAAM,EACJqB,IAAI,EACJR,SAAAA,EAAW4B,eAAe,EAC1B1B,UAAAA,EAAY2B,gBAAgB,EAC5B/B,KAAK,EACN,GAAGgC,kCAAkC7C,KAAAA,IAAS,EAAA,CAAA;AAE/CuC,IAAAA,KAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI3B,KAAAA,EAAO;YACTX,kBAAAA,CAAmB;gBACjBuC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASnC,cAAAA,CAAeM,KAAAA;AAC1B,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,KAAAA;AAAON,QAAAA,cAAAA;AAAgBL,QAAAA;AAAmB,KAAA,CAAA;AAE9C;;;AAGC,MACD,MAAMa,SAAAA,GAAY4B,eAAAA,IAAmB3B,eAAAA,IAAmB4B,gBAAAA,IAAoB1B,gBAAAA;IAE5E,MAAM4B,UAAAA,GAAaP,MAAMQ,OAAO,CAC9B,IACExB,IAAAA,IAAQ,CAACR,SAAAA,GACLiC,sCAAAA,CAAuCzB,IAAAA,EAAM;AAAEZ,YAAAA,MAAAA;AAAQF,YAAAA,UAAAA;AAAYG,YAAAA;SAAQ,CAAA,GAC1E;AACCqC,YAAAA,MAAAA,EAAQ,EAAE;AACVxC,YAAAA,UAAAA,EAAY,EAAC;AACbyC,YAAAA,SAAAA,EAAW,EAAC;AACZC,YAAAA,OAAAA,EAAS,EAAC;YACVC,QAAAA,EAAUC;SACZ,EACN;AAAC9B,QAAAA,IAAAA;AAAMR,QAAAA,SAAAA;AAAWJ,QAAAA,MAAAA;AAAQF,QAAAA,UAAAA;AAAYG,QAAAA;AAAQ,KAAA,CAAA;IAGhD,MAAM,CAAC0C,oBAAoB,GAAGC,uCAAAA,EAAAA;AAC9B,IAAA,MAAMC,eAAmD,OAAOC,QAAAA,GAAAA;QAC9D,IAAI;AACF;;;;UAKA,MAAMC,OAAOzB,MAAAA,CAAOC,OAAO,CAACX,IAAAA,EAAMO,SAAAA,CAAUoB,aAAa,EAAC,CAAA,CAAGtB,MAAM,CACjE,CAACC,KAAK,CAAC8B,IAAAA,EAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,CAAC,GAAA;AAC1B,gBAAA,MAAM,EACJC,YAAY,EACZzB,IAAAA,EAAM0B,KAAK,EACXJ,IAAAA,EAAMK,KAAK,EACX,GAAGC,cAAAA,EACJ,GAAGR,SAASR,MAAM,CAACiB,OAAO,CAAC,CAACC,GAAAA,GAAQA,GAAAA,CAAIC,QAAQ,CAAA,CAAE5C,IAAI,CAAC,CAAC6C,KAAAA,GAAUA,KAAAA,CAAMV,IAAI,KAAKA,SAClF,EAAC;gBAED9B,GAAG,CAAC8B,KAAK,GAAG;oBACVC,IAAAA,EAAM;AACJ,wBAAA,GAAGA,IAAI;AACP,wBAAA,GAAGK;AACL,qBAAA;AACAJ,oBAAAA;AACF,iBAAA;gBAEA,OAAOhC,GAAAA;AACT,YAAA,CAAA,EACA,EAAC,CAAA;YAGH,MAAMP,GAAAA,GAAM,MAAMgC,mBAAAA,CAAoB;gBACpCgB,OAAAA,EAAS;AACPV,oBAAAA,IAAAA,EAAMH,SAASR,MAAM,CAACsB,GAAG,CAAC,CAACJ,MACzBA,GAAAA,CAAIC,QAAQ,CAACxC,MAAM,CAAwC,CAACC,GAAAA,EAAK,EAAE8B,IAAI,EAAEtB,IAAI,EAAE,GAAA;AAC7E,4BAAA,IAAIsB,SAASa,eAAAA,EAAiB;gCAC5B,OAAO;AAAI3C,oCAAAA,GAAAA,GAAAA;AAAK,oCAAA;AAAE8B,wCAAAA,IAAAA;AAAMtB,wCAAAA;AAAK;AAAE,iCAAA;AACjC,4BAAA;4BAEA,OAAOR,GAAAA;AACT,wBAAA,CAAA,EAAG,EAAE,CAAA,CAAA;oBAEPgC,IAAAA,EAAMtC,IAAAA,EAAMO,UAAUwC,OAAAA,CAAQT;AAChC,iBAAA;AACAT,gBAAAA,QAAAA,EAAUqB,KAAAA,CAAMhB,QAAAA,CAASL,QAAQ,EAAE,aAAA,EAAehC,SAAAA,CAAAA;gBAClD8B,SAAAA,EAAWQ,IAAAA;gBACXhC,GAAAA,EAAK1B;AACP,aAAA,CAAA;AAEA,YAAA,IAAI,UAAUsB,GAAAA,EAAK;gBACjBpB,kBAAAA,CAAmB;oBACjBuC,IAAAA,EAAM,SAAA;AACNC,oBAAAA,OAAAA,EAAStC,aAAAA,CAAc;wBAAEsE,EAAAA,EAAI,4BAAA;wBAA8BC,cAAAA,EAAgB;AAAQ,qBAAA;AACrF,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLzE,kBAAAA,CAAmB;oBACjBuC,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAASnC,cAAAA,CAAee,IAAIT,KAAK;AACnC,iBAAA,CAAA;AACF,YAAA;AACF,QAAA,CAAA,CAAE,OAAM;YACNX,kBAAAA,CAAmB;gBACjBuC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStC,aAAAA,CAAc;oBAAEsE,EAAAA,EAAI,oBAAA;oBAAsBC,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAI5D,SAAAA,EAAW;QACb,qBAAO6D,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIjE,KAAAA,IAASC,WAAAA,IAAe,CAACH,MAAAA,EAAQ;QACnC,qBAAOiE,GAAA,CAACC,KAAKE,KAAK,EAAA,EAAA,CAAA;AACpB,IAAA;IAEA,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAL,GAAA,CAACC,KAAKK,KAAK,EAAA;0BAAE,CAAC,UAAU,EAAEpC,UAAAA,CAAWM,QAAQ,CAAC+B,WAAW,CAAC,UAAU;;0BACpEP,GAAA,CAACQ,iBAAAA,EAAAA;gBACCC,QAAAA,EAAU7B,YAAAA;AACVxB,gBAAAA,UAAAA,EAAYrB,OAAOqB,UAAU;gBAC7BtB,UAAAA,EAAYA,UAAAA;gBACZuC,MAAAA,EAAQH;;;;AAIhB;AAEA;;AAEkG,2GAE5FwC,mCAAAA,GAAsC,IAAA;IAC1C,MAAMC,WAAAA,GAAcC,gBAAAA,CAClB,CAACC,KAAAA,GAAUA,KAAAA,CAAMC,SAAS,CAACH,WAAW,CAACI,cAAc,EAAEC,wBAAAA,CAAAA;IAGzD,qBACEhB,GAAA,CAACC,KAAKgB,OAAO,EAAA;QAACN,WAAAA,EAAaA,WAAAA;AACzB,QAAA,QAAA,gBAAAX,GAAA,CAAC9E,0BAAAA,EAAAA,EAAAA;;AAGP;;;;"}
|
|
@@ -23,6 +23,7 @@ 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');
|
|
26
27
|
var keyboardShortcuts = require('../utils/keyboardShortcuts.js');
|
|
27
28
|
var RelationModal = require('./FormInputs/Relations/RelationModal.js');
|
|
28
29
|
|
|
@@ -52,6 +53,10 @@ var get__default = /*#__PURE__*/_interopDefault(get);
|
|
|
52
53
|
var merge__default = /*#__PURE__*/_interopDefault(merge);
|
|
53
54
|
var set__default = /*#__PURE__*/_interopDefault(set);
|
|
54
55
|
|
|
56
|
+
const publishConfirmDialogOpeners = new Map();
|
|
57
|
+
const openPublishConfirmDialog = (scope)=>{
|
|
58
|
+
publishConfirmDialogOpeners.get(scope)?.();
|
|
59
|
+
};
|
|
55
60
|
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
|
56
61
|
/*
|
|
57
62
|
* Check if the fieldToConnect is already present in the parentDataToUpdate.
|
|
@@ -179,6 +184,24 @@ const DocumentActions = ({ actions })=>{
|
|
|
179
184
|
const DocumentActionButton = ({ buttonType = 'button', ...action })=>{
|
|
180
185
|
const [dialogId, setDialogId] = React__namespace.useState(null);
|
|
181
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
|
+
]);
|
|
182
205
|
const handleClick = (action)=>async (e)=>{
|
|
183
206
|
const { onClick = ()=>false, dialog, id } = action;
|
|
184
207
|
const muteDialog = await onClick(e);
|
|
@@ -329,7 +352,7 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
329
352
|
]
|
|
330
353
|
});
|
|
331
354
|
};
|
|
332
|
-
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 })=>{
|
|
333
356
|
const { formatMessage } = reactIntl.useIntl();
|
|
334
357
|
const handleClose = async ()=>{
|
|
335
358
|
if (onCancel) {
|
|
@@ -343,6 +366,28 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
343
366
|
}
|
|
344
367
|
onClose();
|
|
345
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;
|
|
346
391
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
|
|
347
392
|
open: isOpen,
|
|
348
393
|
onOpenChange: handleClose,
|
|
@@ -352,7 +397,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
352
397
|
children: title
|
|
353
398
|
}),
|
|
354
399
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Body, {
|
|
355
|
-
children:
|
|
400
|
+
children: dialogBody
|
|
356
401
|
}),
|
|
357
402
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Dialog.Footer, {
|
|
358
403
|
children: [
|
|
@@ -371,7 +416,7 @@ const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, cont
|
|
|
371
416
|
variant: variant,
|
|
372
417
|
fullWidth: true,
|
|
373
418
|
loading: loading,
|
|
374
|
-
children: formatMessage({
|
|
419
|
+
children: confirmLabel ?? formatMessage({
|
|
375
420
|
id: 'app.components.Button.confirm',
|
|
376
421
|
defaultMessage: 'Confirm'
|
|
377
422
|
})
|
|
@@ -413,16 +458,17 @@ const DocumentActionModal = ({ isOpen, title, onClose, footer: Footer, content:
|
|
|
413
458
|
};
|
|
414
459
|
const transformData = (data)=>{
|
|
415
460
|
if (Array.isArray(data)) {
|
|
416
|
-
return data.map(transformData);
|
|
461
|
+
return data.map((value)=>transformData(value));
|
|
417
462
|
}
|
|
418
463
|
if (typeof data === 'object' && data !== null) {
|
|
419
464
|
if ('apiData' in data) {
|
|
420
465
|
return data.apiData;
|
|
421
466
|
}
|
|
422
|
-
return mapValues__default.default(transformData)(data);
|
|
467
|
+
return mapValues__default.default((value)=>transformData(value))(data);
|
|
423
468
|
}
|
|
424
469
|
return data;
|
|
425
470
|
};
|
|
471
|
+
const transformDocumentData = (data)=>transformData(data);
|
|
426
472
|
/* -------------------------------------------------------------------------------------------------
|
|
427
473
|
* DocumentActionComponents
|
|
428
474
|
* -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document })=>{
|
|
@@ -439,10 +485,11 @@ const transformData = (data)=>{
|
|
|
439
485
|
canReadFields
|
|
440
486
|
}));
|
|
441
487
|
const { publish, isLoading } = useDocumentActions.useDocumentActions();
|
|
442
|
-
const onPreview = Preview.usePreviewContext('
|
|
443
|
-
const [countDraftRelations, {
|
|
444
|
-
const [
|
|
445
|
-
const [
|
|
488
|
+
const onPreview = Preview.usePreviewContext('PublishAction', (state)=>state.onPreview, false);
|
|
489
|
+
const [countDraftRelations, { isError: isErrorDraftRelations }] = documents.useGetDraftRelationCountQuery();
|
|
490
|
+
const [localDraftRelationCounts, setLocalDraftRelationCounts] = React__namespace.useState(draftRelationCounts.EMPTY_DRAFT_RELATION_COUNTS);
|
|
491
|
+
const [serverDraftRelationCounts, setServerDraftRelationCounts] = React__namespace.useState(draftRelationCounts.EMPTY_DRAFT_RELATION_COUNTS);
|
|
492
|
+
const [isFetchingDraftRelations, setIsFetchingDraftRelations] = React__namespace.useState(false);
|
|
446
493
|
const [{ rawQuery }] = strapiAdmin.useQueryParams();
|
|
447
494
|
const modified = strapiAdmin.useForm('PublishAction', ({ modified })=>modified);
|
|
448
495
|
const setSubmitting = strapiAdmin.useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
|
|
@@ -456,6 +503,8 @@ const transformData = (data)=>{
|
|
|
456
503
|
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
457
504
|
const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
|
|
458
505
|
const fromRelationModal = relationContext != undefined;
|
|
506
|
+
const isRelationModalOpen = RelationModal.useRelationModal('PublishAction', (state)=>state.state.isModalOpen, false);
|
|
507
|
+
const publishConfirmScope = fromRelationModal ? 'relation-modal' : onPreview ? 'preview' : 'panel';
|
|
459
508
|
const dispatch = RelationModal.useRelationModal('PublishAction', (state)=>state.dispatch);
|
|
460
509
|
const fieldToConnect = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
|
461
510
|
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
@@ -482,49 +531,19 @@ const transformData = (data)=>{
|
|
|
482
531
|
formatMessage
|
|
483
532
|
]);
|
|
484
533
|
React__namespace.useEffect(()=>{
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* Extracts draft relations from the provided data object.
|
|
488
|
-
* It checks for a connect array of relations.
|
|
489
|
-
* If a relation has a status of 'draft', its id is added to the localDraftRelations set.
|
|
490
|
-
*/ const extractDraftRelations = (data)=>{
|
|
491
|
-
const relations = data.connect || [];
|
|
492
|
-
relations.forEach((relation)=>{
|
|
493
|
-
if (relation.status === 'draft') {
|
|
494
|
-
localDraftRelations.add(relation.id);
|
|
495
|
-
}
|
|
496
|
-
});
|
|
497
|
-
};
|
|
498
|
-
/**
|
|
499
|
-
* Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.
|
|
500
|
-
* If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.
|
|
501
|
-
* It recursively calls itself for any non-null objects it contains.
|
|
502
|
-
*/ const traverseAndExtract = (data)=>{
|
|
503
|
-
Object.entries(data).forEach(([key, value])=>{
|
|
504
|
-
if (key === 'connect' && Array.isArray(value)) {
|
|
505
|
-
extractDraftRelations({
|
|
506
|
-
connect: value
|
|
507
|
-
});
|
|
508
|
-
} else if (typeof value === 'object' && value !== null) {
|
|
509
|
-
traverseAndExtract(value);
|
|
510
|
-
}
|
|
511
|
-
});
|
|
512
|
-
};
|
|
513
|
-
if (!documentId || modified) {
|
|
514
|
-
traverseAndExtract(formValues);
|
|
515
|
-
setLocalCountOfDraftRelations(localDraftRelations.size);
|
|
516
|
-
}
|
|
534
|
+
setLocalDraftRelationCounts(draftRelationCounts.countLocalDraftRelations(formValues, schema, components, model));
|
|
517
535
|
}, [
|
|
518
|
-
|
|
519
|
-
modified,
|
|
536
|
+
components,
|
|
520
537
|
formValues,
|
|
521
|
-
|
|
538
|
+
model,
|
|
539
|
+
schema
|
|
522
540
|
]);
|
|
523
|
-
React__namespace.
|
|
524
|
-
if (!document
|
|
541
|
+
const fetchDraftRelationsCount = React__namespace.useCallback(async ()=>{
|
|
542
|
+
if (!document?.documentId || isListView) {
|
|
525
543
|
return;
|
|
526
544
|
}
|
|
527
|
-
|
|
545
|
+
setIsFetchingDraftRelations(true);
|
|
546
|
+
try {
|
|
528
547
|
const { data, error } = await countDraftRelations({
|
|
529
548
|
collectionType,
|
|
530
549
|
model,
|
|
@@ -535,18 +554,36 @@ const transformData = (data)=>{
|
|
|
535
554
|
throw error;
|
|
536
555
|
}
|
|
537
556
|
if (data) {
|
|
538
|
-
|
|
557
|
+
setServerDraftRelationCounts(draftRelationCounts.normalizeDraftRelationCounts(data));
|
|
539
558
|
}
|
|
540
|
-
}
|
|
541
|
-
|
|
559
|
+
} finally{
|
|
560
|
+
setIsFetchingDraftRelations(false);
|
|
561
|
+
}
|
|
542
562
|
}, [
|
|
543
|
-
isListView,
|
|
544
|
-
document,
|
|
545
|
-
documentId,
|
|
546
|
-
countDraftRelations,
|
|
547
563
|
collectionType,
|
|
548
|
-
|
|
549
|
-
currentDocumentMeta.params
|
|
564
|
+
countDraftRelations,
|
|
565
|
+
currentDocumentMeta.params,
|
|
566
|
+
document?.documentId,
|
|
567
|
+
documentId,
|
|
568
|
+
isListView,
|
|
569
|
+
model
|
|
570
|
+
]);
|
|
571
|
+
React__namespace.useEffect(()=>{
|
|
572
|
+
fetchDraftRelationsCount();
|
|
573
|
+
}, [
|
|
574
|
+
fetchDraftRelationsCount,
|
|
575
|
+
document?.updatedAt
|
|
576
|
+
]);
|
|
577
|
+
React__namespace.useEffect(()=>{
|
|
578
|
+
const handleWindowFocus = ()=>{
|
|
579
|
+
fetchDraftRelationsCount();
|
|
580
|
+
};
|
|
581
|
+
window.addEventListener('focus', handleWindowFocus);
|
|
582
|
+
return ()=>{
|
|
583
|
+
window.removeEventListener('focus', handleWindowFocus);
|
|
584
|
+
};
|
|
585
|
+
}, [
|
|
586
|
+
fetchDraftRelationsCount
|
|
550
587
|
]);
|
|
551
588
|
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
552
589
|
const parentDocumentData = useDocument.useDocument({
|
|
@@ -601,7 +638,7 @@ const transformData = (data)=>{
|
|
|
601
638
|
}
|
|
602
639
|
return;
|
|
603
640
|
}
|
|
604
|
-
const { data: data$1 } = data.handleInvisibleAttributes(
|
|
641
|
+
const { data: data$1 } = data.handleInvisibleAttributes(transformDocumentData(getValues()), {
|
|
605
642
|
schema,
|
|
606
643
|
components
|
|
607
644
|
});
|
|
@@ -688,11 +725,18 @@ const transformData = (data)=>{
|
|
|
688
725
|
}
|
|
689
726
|
}
|
|
690
727
|
};
|
|
691
|
-
const
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
728
|
+
const getFreshDraftRelationCounts = React__namespace.useCallback(()=>draftRelationCounts.resolveDraftRelationCounts(documentId, modified, draftRelationCounts.countLocalDraftRelations(getValues(), schema, components, model), serverDraftRelationCounts), [
|
|
729
|
+
components,
|
|
730
|
+
documentId,
|
|
731
|
+
getValues,
|
|
732
|
+
model,
|
|
733
|
+
modified,
|
|
734
|
+
schema,
|
|
735
|
+
serverDraftRelationCounts
|
|
736
|
+
]);
|
|
737
|
+
const draftRelationCounts$1 = draftRelationCounts.resolveDraftRelationCounts(documentId, modified, localDraftRelationCounts, serverDraftRelationCounts);
|
|
738
|
+
const { hasUnpublishedRelations, hasDraftM2mLinks, dialogVariant, bodyIcon, confirmLabel } = draftRelationCounts.getDraftRelationsPublishState(draftRelationCounts$1);
|
|
739
|
+
const supportsDraftRelationWarning = Boolean(schema?.options?.draftAndPublish);
|
|
696
740
|
/**
|
|
697
741
|
* Disabled when:
|
|
698
742
|
* - currently if you're cloning a document we don't support publish & clone at the same time.
|
|
@@ -701,7 +745,7 @@ const transformData = (data)=>{
|
|
|
701
745
|
* - the document is already published & not modified
|
|
702
746
|
* - the document is being created & not modified
|
|
703
747
|
* - the user doesn't have the permission to publish
|
|
704
|
-
*/ const isDisabled = isCloning || isSubmitting ||
|
|
748
|
+
*/ const isDisabled = isCloning || isSubmitting || isFetchingDraftRelations || activeTab === 'published' || !modified && isDocumentPublished || !modified && !document?.documentId || !canPublish;
|
|
705
749
|
// Publish on CMD+Shift+Enter (macOS) / CTRL+Shift+Enter (Windows/Linux).
|
|
706
750
|
// Saving a draft (CMD/CTRL+Enter) is handled by the UpdateAction.
|
|
707
751
|
React__namespace.useEffect(()=>{
|
|
@@ -713,18 +757,29 @@ const transformData = (data)=>{
|
|
|
713
757
|
return;
|
|
714
758
|
}
|
|
715
759
|
e.preventDefault();
|
|
716
|
-
if (!
|
|
717
|
-
|
|
760
|
+
if (!fromRelationModal && isRelationModalOpen) {
|
|
761
|
+
return;
|
|
762
|
+
}
|
|
763
|
+
if (isDisabled) {
|
|
764
|
+
return;
|
|
718
765
|
}
|
|
766
|
+
if (draftRelationCounts.getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
767
|
+
openPublishConfirmDialog(publishConfirmScope);
|
|
768
|
+
return;
|
|
769
|
+
}
|
|
770
|
+
performPublish();
|
|
719
771
|
};
|
|
720
772
|
window.addEventListener('keydown', handleKeyDown);
|
|
721
773
|
return ()=>{
|
|
722
774
|
window.removeEventListener('keydown', handleKeyDown);
|
|
723
775
|
};
|
|
724
776
|
}, [
|
|
725
|
-
|
|
777
|
+
fromRelationModal,
|
|
778
|
+
getFreshDraftRelationCounts,
|
|
726
779
|
isDisabled,
|
|
780
|
+
isRelationModalOpen,
|
|
727
781
|
performPublish,
|
|
782
|
+
publishConfirmScope,
|
|
728
783
|
schema?.options?.draftAndPublish
|
|
729
784
|
]);
|
|
730
785
|
if (!schema?.options?.draftAndPublish) {
|
|
@@ -739,26 +794,60 @@ const transformData = (data)=>{
|
|
|
739
794
|
'relation-modal'
|
|
740
795
|
],
|
|
741
796
|
disabled: isDisabled,
|
|
797
|
+
publishConfirmScope: supportsDraftRelationWarning ? publishConfirmScope : undefined,
|
|
742
798
|
label: formatMessage({
|
|
743
799
|
id: 'app.utils.publish',
|
|
744
800
|
defaultMessage: 'Publish'
|
|
745
801
|
}),
|
|
746
802
|
onClick: async ()=>{
|
|
803
|
+
if (draftRelationCounts.getDraftRelationsPublishState(getFreshDraftRelationCounts()).hasDraftRelations) {
|
|
804
|
+
// Let DocumentActionButton open the confirmation dialog.
|
|
805
|
+
return;
|
|
806
|
+
}
|
|
747
807
|
await performPublish();
|
|
808
|
+
// Skip the registered dialog when publishing directly.
|
|
809
|
+
return true;
|
|
748
810
|
},
|
|
749
|
-
dialog:
|
|
811
|
+
dialog: supportsDraftRelationWarning ? {
|
|
750
812
|
type: 'dialog',
|
|
751
|
-
variant:
|
|
752
|
-
|
|
813
|
+
variant: dialogVariant,
|
|
814
|
+
bodyIcon,
|
|
753
815
|
title: formatMessage({
|
|
754
|
-
id: translations.getTranslation(
|
|
816
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-relations.title'),
|
|
755
817
|
defaultMessage: 'Confirmation'
|
|
756
818
|
}),
|
|
757
|
-
content:
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
819
|
+
content: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
820
|
+
children: [
|
|
821
|
+
hasUnpublishedRelations ? formatMessage({
|
|
822
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-relations.message'),
|
|
823
|
+
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.}}'
|
|
824
|
+
}, {
|
|
825
|
+
count: draftRelationCounts$1.unpublishedRelations
|
|
826
|
+
}) : formatMessage({
|
|
827
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-m2m-relations.message'),
|
|
828
|
+
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.}}'
|
|
829
|
+
}, {
|
|
830
|
+
count: draftRelationCounts$1.draftM2mLinks
|
|
831
|
+
}),
|
|
832
|
+
hasUnpublishedRelations && hasDraftM2mLinks ? ` ${formatMessage({
|
|
833
|
+
id: translations.getTranslation('popUpWarning.warning.has-draft-m2m-relations.additional'),
|
|
834
|
+
defaultMessage: '{count, plural, one {# many-to-many link points} other {# many-to-many links point}} to draft entries that will become visible once published.'
|
|
835
|
+
}, {
|
|
836
|
+
count: draftRelationCounts$1.draftM2mLinks
|
|
837
|
+
})}` : null,
|
|
838
|
+
' ',
|
|
839
|
+
formatMessage({
|
|
840
|
+
id: translations.getTranslation('popUpWarning.warning.publish-question'),
|
|
841
|
+
defaultMessage: 'Do you still want to publish?'
|
|
842
|
+
})
|
|
843
|
+
]
|
|
844
|
+
}),
|
|
845
|
+
confirmLabel: confirmLabel === 'publish' ? formatMessage({
|
|
846
|
+
id: 'app.utils.publish',
|
|
847
|
+
defaultMessage: 'Publish'
|
|
848
|
+
}) : formatMessage({
|
|
849
|
+
id: translations.getTranslation('popUpwarning.warning.has-draft-relations.button-confirm'),
|
|
850
|
+
defaultMessage: 'Publish without relations'
|
|
762
851
|
}),
|
|
763
852
|
onConfirm: async ()=>{
|
|
764
853
|
await performPublish();
|
|
@@ -858,7 +947,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
858
947
|
model,
|
|
859
948
|
documentId: cloneMatch.params.origin,
|
|
860
949
|
params: currentDocumentMeta.params
|
|
861
|
-
},
|
|
950
|
+
}, transformDocumentData(latestValues));
|
|
862
951
|
if ('data' in res) {
|
|
863
952
|
navigate({
|
|
864
953
|
pathname: `../${res.data.documentId}`,
|
|
@@ -870,7 +959,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
870
959
|
setErrors(formatValidationErrors(res.error));
|
|
871
960
|
}
|
|
872
961
|
} else if (documentId || collectionType === collections.SINGLE_TYPES) {
|
|
873
|
-
const { data: data$1 } = data.handleInvisibleAttributes(
|
|
962
|
+
const { data: data$1 } = data.handleInvisibleAttributes(transformDocumentData(latestValues), {
|
|
874
963
|
schema: suitableSchema,
|
|
875
964
|
initialValues,
|
|
876
965
|
components
|
|
@@ -887,7 +976,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
887
976
|
resetForm(latestValues);
|
|
888
977
|
}
|
|
889
978
|
} else {
|
|
890
|
-
const { data: data$1 } = data.handleInvisibleAttributes(
|
|
979
|
+
const { data: data$1 } = data.handleInvisibleAttributes(transformDocumentData(latestValues), {
|
|
891
980
|
schema: suitableSchema,
|
|
892
981
|
initialValues,
|
|
893
982
|
components
|
|
@@ -1236,4 +1325,5 @@ exports.DEFAULT_ACTIONS = DEFAULT_ACTIONS;
|
|
|
1236
1325
|
exports.DocumentActionButton = DocumentActionButton;
|
|
1237
1326
|
exports.DocumentActions = DocumentActions;
|
|
1238
1327
|
exports.DocumentActionsMenu = DocumentActionsMenu;
|
|
1328
|
+
exports.openPublishConfirmDialog = openPublishConfirmDialog;
|
|
1239
1329
|
//# sourceMappingURL=DocumentActions.js.map
|