@strapi/content-manager 0.0.0-next.3dfa46a688dac778822b4cb229acfc1ce41e71ed → 0.0.0-next.3e666b1ad96ac2e82634e548e10ea7c7797a7474
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +34 -30
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +36 -32
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +161 -0
- package/dist/admin/components/Widgets.js.map +1 -0
- package/dist/admin/components/Widgets.mjs +158 -0
- package/dist/admin/components/Widgets.mjs.map +1 -0
- package/dist/admin/content-manager.js.map +1 -1
- package/dist/admin/content-manager.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +24 -3
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +25 -4
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +6 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +7 -1
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/history/pages/History.js +1 -9
- package/dist/admin/history/pages/History.js.map +1 -1
- package/dist/admin/history/pages/History.mjs +1 -9
- package/dist/admin/history/pages/History.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +20 -5
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +20 -5
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js +57 -0
- package/dist/admin/hooks/useDocumentContext.js.map +1 -0
- package/dist/admin/hooks/useDocumentContext.mjs +36 -0
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -0
- package/dist/admin/index.js +42 -5
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +42 -3
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +100 -91
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +102 -93
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +288 -104
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +294 -110
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +61 -26
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +63 -28
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +14 -3
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +15 -4
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +17 -4
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +18 -5
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +23 -21
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +25 -23
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +2 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +506 -345
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +506 -347
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +174 -68
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +178 -72
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +11 -9
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +11 -9
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +3 -10
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +3 -10
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +103 -0
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +103 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +77 -0
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +78 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +1 -0
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +13 -3
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.js +3 -6
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +3 -6
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +94 -102
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +94 -102
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/services/documents.js +2 -2
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +2 -2
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/services/homepage.js +30 -0
- package/dist/admin/services/homepage.js.map +1 -0
- package/dist/admin/services/homepage.mjs +28 -0
- package/dist/admin/services/homepage.mjs.map +1 -0
- package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
- package/dist/admin/src/components/Widgets.d.ts +3 -0
- package/dist/admin/src/content-manager.d.ts +0 -3
- package/dist/admin/src/features/DocumentRBAC.d.ts +1 -1
- package/dist/admin/src/history/pages/History.d.ts +1 -1
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/hooks/useDocumentContext.d.ts +30 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/ComponentContext.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/Field.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +73 -7
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/Relations.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
- package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
- package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
- package/dist/admin/src/services/documents.d.ts +7 -1
- package/dist/admin/src/services/homepage.d.ts +5 -0
- package/dist/admin/src/utils/validation.d.ts +1 -0
- package/dist/admin/translations/en.json.js +3 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +3 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/ru.json.js +235 -226
- package/dist/admin/translations/ru.json.js.map +1 -1
- package/dist/admin/translations/ru.json.mjs +230 -226
- package/dist/admin/translations/ru.json.mjs.map +1 -1
- package/dist/admin/utils/validation.js +17 -6
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +17 -6
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/content-types.js +11 -1
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs +11 -1
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/index.js +3 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +3 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/validation/index.js +14 -2
- package/dist/server/controllers/validation/index.js.map +1 -1
- package/dist/server/controllers/validation/index.mjs +14 -2
- package/dist/server/controllers/validation/index.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +3 -0
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +3 -0
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/homepage/controllers/homepage.js +57 -0
- package/dist/server/homepage/controllers/homepage.js.map +1 -0
- package/dist/server/homepage/controllers/homepage.mjs +36 -0
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
- package/dist/server/homepage/controllers/index.js +10 -0
- package/dist/server/homepage/controllers/index.js.map +1 -0
- package/dist/server/homepage/controllers/index.mjs +8 -0
- package/dist/server/homepage/controllers/index.mjs.map +1 -0
- package/dist/server/homepage/index.js +14 -0
- package/dist/server/homepage/index.js.map +1 -0
- package/dist/server/homepage/index.mjs +12 -0
- package/dist/server/homepage/index.mjs.map +1 -0
- package/dist/server/homepage/routes/homepage.js +25 -0
- package/dist/server/homepage/routes/homepage.js.map +1 -0
- package/dist/server/homepage/routes/homepage.mjs +23 -0
- package/dist/server/homepage/routes/homepage.mjs.map +1 -0
- package/dist/server/homepage/routes/index.js +13 -0
- package/dist/server/homepage/routes/index.js.map +1 -0
- package/dist/server/homepage/routes/index.mjs +11 -0
- package/dist/server/homepage/routes/index.mjs.map +1 -0
- package/dist/server/homepage/services/homepage.js +157 -0
- package/dist/server/homepage/services/homepage.js.map +1 -0
- package/dist/server/homepage/services/homepage.mjs +155 -0
- package/dist/server/homepage/services/homepage.mjs.map +1 -0
- package/dist/server/homepage/services/index.js +10 -0
- package/dist/server/homepage/services/index.js.map +1 -0
- package/dist/server/homepage/services/index.mjs +8 -0
- package/dist/server/homepage/services/index.mjs.map +1 -0
- package/dist/server/preview/services/preview.js +0 -1
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs +0 -1
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/routes/index.js +3 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +3 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/data-mapper.js +4 -1
- package/dist/server/services/data-mapper.js.map +1 -1
- package/dist/server/services/data-mapper.mjs +4 -1
- package/dist/server/services/data-mapper.mjs.map +1 -1
- package/dist/server/services/document-manager.js +8 -1
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +8 -1
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/document-metadata.js +3 -1
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +3 -1
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/utils/configuration/attributes.js +1 -1
- package/dist/server/services/utils/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
- package/dist/server/services/utils/configuration/layouts.js +1 -1
- package/dist/server/services/utils/configuration/layouts.js.map +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.js +8 -0
- package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
- package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +11 -0
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +11 -0
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/src/controllers/content-types.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/index.d.ts +6 -1
- package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/controllers/index.d.ts +2 -0
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
- package/dist/server/src/homepage/index.d.ts +16 -0
- package/dist/server/src/homepage/index.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
- package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/index.d.ts +8 -0
- package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
- package/dist/server/src/homepage/services/homepage.d.ts +11 -0
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/services/index.d.ts +9 -0
- package/dist/server/src/homepage/services/index.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +8 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts +1 -0
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +7 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +0 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +25 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -0
- package/package.json +12 -9
- package/dist/admin/features/DocumentContext.js +0 -71
- package/dist/admin/features/DocumentContext.js.map +0 -1
- package/dist/admin/features/DocumentContext.mjs +0 -49
- package/dist/admin/features/DocumentContext.mjs.map +0 -1
- package/dist/admin/src/features/DocumentContext.d.ts +0 -53
|
@@ -1,23 +1,60 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useNotification, useAPIErrorHandler, useQueryParams, useForm } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import {
|
|
5
|
-
import { Cross, WarningCircle
|
|
4
|
+
import { Flex, Button, Menu, VisuallyHidden, Dialog, Modal, Typography, Radio } from '@strapi/design-system';
|
|
5
|
+
import { More, Cross, WarningCircle } from '@strapi/icons';
|
|
6
6
|
import mapValues from 'lodash/fp/mapValues';
|
|
7
|
+
import get from 'lodash/get';
|
|
8
|
+
import merge from 'lodash/merge';
|
|
9
|
+
import set from 'lodash/set';
|
|
7
10
|
import { useIntl } from 'react-intl';
|
|
8
11
|
import { useNavigate, useMatch, useParams } from 'react-router-dom';
|
|
9
|
-
import { styled } from 'styled-components';
|
|
10
12
|
import { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes.mjs';
|
|
11
13
|
import { SINGLE_TYPES } from '../../../constants/collections.mjs';
|
|
12
|
-
import { useDocumentContext } from '../../../features/DocumentContext.mjs';
|
|
13
14
|
import { useDocumentRBAC } from '../../../features/DocumentRBAC.mjs';
|
|
14
|
-
import { useDoc } from '../../../hooks/useDocument.mjs';
|
|
15
|
+
import { useDocument, useDoc } from '../../../hooks/useDocument.mjs';
|
|
15
16
|
import { useDocumentActions } from '../../../hooks/useDocumentActions.mjs';
|
|
17
|
+
import { useDocumentContext } from '../../../hooks/useDocumentContext.mjs';
|
|
18
|
+
import { usePreviewContext } from '../../../preview/pages/Preview.mjs';
|
|
16
19
|
import { LIST_PATH, CLONE_PATH } from '../../../router.mjs';
|
|
17
|
-
import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery } from '../../../services/documents.mjs';
|
|
18
|
-
import {
|
|
20
|
+
import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery, useUpdateDocumentMutation } from '../../../services/documents.mjs';
|
|
21
|
+
import { isBaseQueryError, buildValidParams } from '../../../utils/api.mjs';
|
|
19
22
|
import { getTranslation } from '../../../utils/translations.mjs';
|
|
23
|
+
import { handleInvisibleAttributes } from '../utils/data.mjs';
|
|
24
|
+
import { useRelationModal } from './FormInputs/Relations/RelationModal.mjs';
|
|
20
25
|
|
|
26
|
+
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
|
27
|
+
/*
|
|
28
|
+
* Check if the fieldToConnect is already present in the parentDataToUpdate.
|
|
29
|
+
* This happens in particular when in the parentDocument you have created
|
|
30
|
+
* a new component without saving.
|
|
31
|
+
*/ const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);
|
|
32
|
+
const fieldToConnectPath = isFieldPresent ? fieldToConnect : fieldToConnect.split('.').slice(0, -1).join('.');
|
|
33
|
+
const fieldToConnectValue = isFieldPresent ? {
|
|
34
|
+
connect: [
|
|
35
|
+
{
|
|
36
|
+
id: data.documentId,
|
|
37
|
+
documentId: data.documentId,
|
|
38
|
+
locale: data.locale
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
} : {
|
|
42
|
+
[fieldToConnect.split('.').pop()]: {
|
|
43
|
+
connect: [
|
|
44
|
+
{
|
|
45
|
+
id: data.documentId,
|
|
46
|
+
documentId: data.documentId,
|
|
47
|
+
locale: data.locale
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
disconnect: []
|
|
51
|
+
},
|
|
52
|
+
// In case the object was not present you need to pass the componentUID of the parent document
|
|
53
|
+
__component: fieldToConnectUID
|
|
54
|
+
};
|
|
55
|
+
const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);
|
|
56
|
+
return merge(parentDataToUpdate, objectToConnect);
|
|
57
|
+
};
|
|
21
58
|
const DocumentActions = ({ actions })=>{
|
|
22
59
|
const { formatMessage } = useIntl();
|
|
23
60
|
const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
|
|
@@ -116,11 +153,6 @@ const DocumentActionButton = (action)=>{
|
|
|
116
153
|
]
|
|
117
154
|
});
|
|
118
155
|
};
|
|
119
|
-
const MenuItem = styled(Menu.Item)`
|
|
120
|
-
&:hover {
|
|
121
|
-
background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
|
|
122
|
-
}
|
|
123
|
-
`;
|
|
124
156
|
const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
|
|
125
157
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
126
158
|
const [dialogId, setDialogId] = React.useState(null);
|
|
@@ -182,27 +214,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
182
214
|
popoverPlacement: "bottom-end",
|
|
183
215
|
children: [
|
|
184
216
|
actions.map((action)=>{
|
|
185
|
-
return /*#__PURE__*/ jsx(
|
|
217
|
+
return /*#__PURE__*/ jsx(Menu.Item, {
|
|
186
218
|
disabled: action.disabled,
|
|
187
219
|
/* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */ onSelect: handleClick(action),
|
|
188
220
|
display: "block",
|
|
189
|
-
|
|
190
|
-
|
|
221
|
+
variant: action.variant === 'danger' ? action.variant : 'default',
|
|
222
|
+
startIcon: action.icon,
|
|
191
223
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
192
224
|
justifyContent: "space-between",
|
|
193
225
|
gap: 4,
|
|
194
|
-
children: /*#__PURE__*/
|
|
195
|
-
color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
|
|
226
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
196
227
|
gap: 2,
|
|
197
228
|
tag: "span",
|
|
198
|
-
children:
|
|
199
|
-
/*#__PURE__*/ jsx(Flex, {
|
|
200
|
-
tag: "span",
|
|
201
|
-
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
|
|
202
|
-
children: action.icon
|
|
203
|
-
}),
|
|
204
|
-
action.label
|
|
205
|
-
]
|
|
229
|
+
children: action.label
|
|
206
230
|
})
|
|
207
231
|
})
|
|
208
232
|
}, action.id);
|
|
@@ -230,30 +254,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
230
254
|
]
|
|
231
255
|
});
|
|
232
256
|
};
|
|
233
|
-
const convertActionVariantToColor = (variant = 'secondary')=>{
|
|
234
|
-
switch(variant){
|
|
235
|
-
case 'danger':
|
|
236
|
-
return 'danger600';
|
|
237
|
-
case 'secondary':
|
|
238
|
-
return undefined;
|
|
239
|
-
case 'success':
|
|
240
|
-
return 'success600';
|
|
241
|
-
default:
|
|
242
|
-
return 'primary600';
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
const convertActionVariantToIconColor = (variant = 'secondary')=>{
|
|
246
|
-
switch(variant){
|
|
247
|
-
case 'danger':
|
|
248
|
-
return 'danger600';
|
|
249
|
-
case 'secondary':
|
|
250
|
-
return 'neutral500';
|
|
251
|
-
case 'success':
|
|
252
|
-
return 'success600';
|
|
253
|
-
default:
|
|
254
|
-
return 'primary600';
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
257
|
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
|
|
258
258
|
const { formatMessage } = useIntl();
|
|
259
259
|
const handleClose = async ()=>{
|
|
@@ -350,8 +350,8 @@ const transformData = (data)=>{
|
|
|
350
350
|
};
|
|
351
351
|
/* -------------------------------------------------------------------------------------------------
|
|
352
352
|
* DocumentActionComponents
|
|
353
|
-
* -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document
|
|
354
|
-
const schema = useDocumentContext('PublishAction'
|
|
353
|
+
* -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document })=>{
|
|
354
|
+
const { currentDocument: { schema } } = useDocumentContext('PublishAction');
|
|
355
355
|
const navigate = useNavigate();
|
|
356
356
|
const { toggleNotification } = useNotification();
|
|
357
357
|
const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
|
@@ -359,23 +359,36 @@ const transformData = (data)=>{
|
|
|
359
359
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
|
360
360
|
const { id } = useParams();
|
|
361
361
|
const { formatMessage } = useIntl();
|
|
362
|
-
const canPublish = useDocumentRBAC('PublishAction', ({ canPublish })=>
|
|
363
|
-
|
|
362
|
+
const { canPublish, canReadFields } = useDocumentRBAC('PublishAction', ({ canPublish, canReadFields })=>({
|
|
363
|
+
canPublish,
|
|
364
|
+
canReadFields
|
|
365
|
+
}));
|
|
366
|
+
const { publish, isLoading } = useDocumentActions();
|
|
367
|
+
const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
|
364
368
|
const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = useLazyGetDraftRelationCountQuery();
|
|
365
369
|
const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);
|
|
366
370
|
const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);
|
|
367
|
-
const [{
|
|
368
|
-
const params = React.useMemo(()=>buildValidParams(query), [
|
|
369
|
-
query
|
|
370
|
-
]);
|
|
371
|
+
const [{ rawQuery }] = useQueryParams();
|
|
371
372
|
const modified = useForm('PublishAction', ({ modified })=>modified);
|
|
372
373
|
const setSubmitting = useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
|
|
373
374
|
const isSubmitting = useForm('PublishAction', ({ isSubmitting })=>isSubmitting);
|
|
374
375
|
const validate = useForm('PublishAction', (state)=>state.validate);
|
|
375
376
|
const setErrors = useForm('PublishAction', (state)=>state.setErrors);
|
|
376
377
|
const formValues = useForm('PublishAction', ({ values })=>values);
|
|
377
|
-
const
|
|
378
|
-
const
|
|
378
|
+
const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
|
|
379
|
+
const { currentDocument: { components } } = useDocumentContext('PublishAction');
|
|
380
|
+
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
381
|
+
const relationContext = useRelationModal('PublishAction', ()=>true, false);
|
|
382
|
+
const fromRelationModal = relationContext != undefined;
|
|
383
|
+
const dispatch = useRelationModal('PublishAction', (state)=>state.dispatch);
|
|
384
|
+
const fieldToConnect = useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
|
385
|
+
const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
386
|
+
const documentHistory = useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
|
|
387
|
+
const rootDocumentMeta = useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
|
|
388
|
+
const { currentDocumentMeta } = useDocumentContext('PublishAction');
|
|
389
|
+
const [updateDocumentMutation] = useUpdateDocumentMutation();
|
|
390
|
+
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
|
|
391
|
+
const idToPublish = currentDocumentMeta.documentId || id;
|
|
379
392
|
React.useEffect(()=>{
|
|
380
393
|
if (isErrorDraftRelations) {
|
|
381
394
|
toggleNotification({
|
|
@@ -439,7 +452,7 @@ const transformData = (data)=>{
|
|
|
439
452
|
collectionType,
|
|
440
453
|
model,
|
|
441
454
|
documentId,
|
|
442
|
-
params
|
|
455
|
+
params: currentDocumentMeta.params
|
|
443
456
|
});
|
|
444
457
|
if (error) {
|
|
445
458
|
throw error;
|
|
@@ -456,8 +469,18 @@ const transformData = (data)=>{
|
|
|
456
469
|
countDraftRelations,
|
|
457
470
|
collectionType,
|
|
458
471
|
model,
|
|
459
|
-
params
|
|
472
|
+
currentDocumentMeta.params
|
|
460
473
|
]);
|
|
474
|
+
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
475
|
+
const parentDocumentData = useDocument({
|
|
476
|
+
documentId: parentDocumentMetaToUpdate?.documentId,
|
|
477
|
+
model: parentDocumentMetaToUpdate?.model,
|
|
478
|
+
collectionType: parentDocumentMetaToUpdate?.collectionType,
|
|
479
|
+
params: parentDocumentMetaToUpdate?.params
|
|
480
|
+
}, {
|
|
481
|
+
skip: !parentDocumentMetaToUpdate
|
|
482
|
+
});
|
|
483
|
+
const { getInitialFormValues } = useDoc();
|
|
461
484
|
const isDocumentPublished = (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
|
|
462
485
|
if (!schema?.options?.draftAndPublish) {
|
|
463
486
|
return null;
|
|
@@ -469,30 +492,99 @@ const transformData = (data)=>{
|
|
|
469
492
|
status: 'published'
|
|
470
493
|
});
|
|
471
494
|
if (errors) {
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
id: 'content-manager.validation.error',
|
|
476
|
-
defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
|
|
477
|
-
})
|
|
495
|
+
const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName)=>{
|
|
496
|
+
const attribute = schema.attributes[fieldName];
|
|
497
|
+
return attribute?.required && !(canReadFields ?? []).includes(fieldName);
|
|
478
498
|
});
|
|
499
|
+
if (hasUnreadableRequiredField) {
|
|
500
|
+
toggleNotification({
|
|
501
|
+
type: 'danger',
|
|
502
|
+
message: formatMessage({
|
|
503
|
+
id: 'content-manager.validation.error.unreadable-required-field',
|
|
504
|
+
defaultMessage: 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.'
|
|
505
|
+
})
|
|
506
|
+
});
|
|
507
|
+
} else {
|
|
508
|
+
toggleNotification({
|
|
509
|
+
type: 'danger',
|
|
510
|
+
message: formatMessage({
|
|
511
|
+
id: 'content-manager.validation.error',
|
|
512
|
+
defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
|
|
513
|
+
})
|
|
514
|
+
});
|
|
515
|
+
}
|
|
479
516
|
return;
|
|
480
517
|
}
|
|
481
|
-
const
|
|
518
|
+
const { data } = handleInvisibleAttributes(transformData(formValues), {
|
|
519
|
+
schema,
|
|
520
|
+
components
|
|
521
|
+
});
|
|
482
522
|
const res = await publish({
|
|
483
523
|
collectionType,
|
|
484
524
|
model,
|
|
485
525
|
documentId,
|
|
486
|
-
params:
|
|
487
|
-
},
|
|
526
|
+
params: currentDocumentMeta.params
|
|
527
|
+
}, data);
|
|
528
|
+
// Reset form if successful
|
|
529
|
+
if ('data' in res) {
|
|
530
|
+
resetForm();
|
|
531
|
+
}
|
|
488
532
|
if ('data' in res && collectionType !== SINGLE_TYPES) {
|
|
489
533
|
/**
|
|
490
534
|
* TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.
|
|
491
|
-
*/ if (
|
|
535
|
+
*/ if (idToPublish === 'create' && !fromRelationModal) {
|
|
492
536
|
navigate({
|
|
493
537
|
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
|
494
538
|
search: rawQuery
|
|
495
539
|
});
|
|
540
|
+
} else if (fromRelationModal) {
|
|
541
|
+
const newRelation = {
|
|
542
|
+
documentId: res.data.documentId,
|
|
543
|
+
collectionType,
|
|
544
|
+
model,
|
|
545
|
+
params: currentDocumentMeta.params
|
|
546
|
+
};
|
|
547
|
+
/*
|
|
548
|
+
* Update, if needed, the parent relation with the newly published document.
|
|
549
|
+
* Check if in history we have the parent relation otherwise use the
|
|
550
|
+
* rootDocument
|
|
551
|
+
*/ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)) {
|
|
552
|
+
const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
|
|
553
|
+
const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
|
|
554
|
+
const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
|
|
555
|
+
try {
|
|
556
|
+
const updateRes = await updateDocumentMutation({
|
|
557
|
+
collectionType: metaDocumentToUpdate.collectionType,
|
|
558
|
+
model: metaDocumentToUpdate.model,
|
|
559
|
+
documentId: metaDocumentToUpdate.collectionType !== SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
|
|
560
|
+
params: metaDocumentToUpdate.params,
|
|
561
|
+
data: dataToUpdate
|
|
562
|
+
});
|
|
563
|
+
if ('error' in updateRes) {
|
|
564
|
+
toggleNotification({
|
|
565
|
+
type: 'danger',
|
|
566
|
+
message: formatAPIError(updateRes.error)
|
|
567
|
+
});
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
} catch (err) {
|
|
571
|
+
toggleNotification({
|
|
572
|
+
type: 'danger',
|
|
573
|
+
message: formatMessage({
|
|
574
|
+
id: 'notification.error',
|
|
575
|
+
defaultMessage: 'An error occurred'
|
|
576
|
+
})
|
|
577
|
+
});
|
|
578
|
+
throw err;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
dispatch({
|
|
582
|
+
type: 'GO_TO_CREATED_RELATION',
|
|
583
|
+
payload: {
|
|
584
|
+
document: newRelation,
|
|
585
|
+
shouldBypassConfirmation: true
|
|
586
|
+
}
|
|
587
|
+
});
|
|
496
588
|
}
|
|
497
589
|
} else if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
498
590
|
setErrors(formatValidationErrors(res.error));
|
|
@@ -558,27 +650,48 @@ PublishAction.position = [
|
|
|
558
650
|
'preview',
|
|
559
651
|
'relation-modal'
|
|
560
652
|
];
|
|
561
|
-
const UpdateAction = ({ activeTab, documentId, model, collectionType
|
|
653
|
+
const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
562
654
|
const navigate = useNavigate();
|
|
563
655
|
const { toggleNotification } = useNotification();
|
|
564
656
|
const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
|
565
657
|
const cloneMatch = useMatch(CLONE_PATH);
|
|
566
658
|
const isCloning = cloneMatch !== null;
|
|
567
659
|
const { formatMessage } = useIntl();
|
|
568
|
-
const { create, update, clone, isLoading } = useDocumentActions(
|
|
569
|
-
const
|
|
570
|
-
const
|
|
571
|
-
|
|
572
|
-
|
|
660
|
+
const { create, update, clone, isLoading } = useDocumentActions();
|
|
661
|
+
const { currentDocument: { components } } = useDocumentContext('UpdateAction');
|
|
662
|
+
const [{ rawQuery }] = useQueryParams();
|
|
663
|
+
const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
|
664
|
+
const { getInitialFormValues } = useDoc();
|
|
573
665
|
const isSubmitting = useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
|
|
574
666
|
const modified = useForm('UpdateAction', ({ modified })=>modified);
|
|
575
667
|
const setSubmitting = useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
|
|
668
|
+
const initialValues = useForm('UpdateAction', ({ initialValues })=>initialValues);
|
|
576
669
|
const document = useForm('UpdateAction', ({ values })=>values);
|
|
577
670
|
const validate = useForm('UpdateAction', (state)=>state.validate);
|
|
578
671
|
const setErrors = useForm('UpdateAction', (state)=>state.setErrors);
|
|
579
|
-
const resetForm = useForm('
|
|
580
|
-
const
|
|
581
|
-
|
|
672
|
+
const resetForm = useForm('UpdateAction', ({ resetForm })=>resetForm);
|
|
673
|
+
const dispatch = useRelationModal('UpdateAction', (state)=>state.dispatch);
|
|
674
|
+
// need to discriminate if the update is coming from a relation modal or in the edit view
|
|
675
|
+
const relationContext = useRelationModal('UpdateAction', ()=>true, false);
|
|
676
|
+
const relationalModalSchema = useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
|
|
677
|
+
const fieldToConnect = useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
|
|
678
|
+
const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
679
|
+
const documentHistory = useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
|
|
680
|
+
const rootDocumentMeta = useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
|
|
681
|
+
const fromRelationModal = relationContext != undefined;
|
|
682
|
+
const { currentDocumentMeta } = useDocumentContext('UpdateAction');
|
|
683
|
+
const [updateDocumentMutation] = useUpdateDocumentMutation();
|
|
684
|
+
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
|
|
685
|
+
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
686
|
+
const parentDocumentData = useDocument({
|
|
687
|
+
documentId: parentDocumentMetaToUpdate?.documentId,
|
|
688
|
+
model: parentDocumentMetaToUpdate?.model,
|
|
689
|
+
collectionType: parentDocumentMetaToUpdate?.collectionType,
|
|
690
|
+
params: parentDocumentMetaToUpdate?.params
|
|
691
|
+
}, {
|
|
692
|
+
skip: !parentDocumentMetaToUpdate
|
|
693
|
+
});
|
|
694
|
+
const { schema } = useDoc();
|
|
582
695
|
const handleUpdate = React.useCallback(async ()=>{
|
|
583
696
|
setSubmitting(true);
|
|
584
697
|
try {
|
|
@@ -602,7 +715,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
|
|
|
602
715
|
const res = await clone({
|
|
603
716
|
model,
|
|
604
717
|
documentId: cloneMatch.params.origin,
|
|
605
|
-
params
|
|
718
|
+
params: currentDocumentMeta.params
|
|
606
719
|
}, transformData(document));
|
|
607
720
|
if ('data' in res) {
|
|
608
721
|
navigate({
|
|
@@ -615,31 +728,91 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
|
|
|
615
728
|
setErrors(formatValidationErrors(res.error));
|
|
616
729
|
}
|
|
617
730
|
} else if (documentId || collectionType === SINGLE_TYPES) {
|
|
618
|
-
const
|
|
731
|
+
const { data } = handleInvisibleAttributes(transformData(document), {
|
|
732
|
+
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
733
|
+
initialValues,
|
|
734
|
+
components
|
|
735
|
+
});
|
|
619
736
|
const res = await update({
|
|
620
737
|
collectionType,
|
|
621
738
|
model,
|
|
622
739
|
documentId,
|
|
623
|
-
params:
|
|
624
|
-
},
|
|
740
|
+
params: currentDocumentMeta.params
|
|
741
|
+
}, data);
|
|
625
742
|
if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
626
743
|
setErrors(formatValidationErrors(res.error));
|
|
627
744
|
} else {
|
|
628
745
|
resetForm();
|
|
629
746
|
}
|
|
630
747
|
} else {
|
|
748
|
+
const { data } = handleInvisibleAttributes(transformData(document), {
|
|
749
|
+
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
750
|
+
initialValues,
|
|
751
|
+
components
|
|
752
|
+
});
|
|
631
753
|
const res = await create({
|
|
632
754
|
model,
|
|
633
|
-
params
|
|
634
|
-
},
|
|
755
|
+
params: currentDocumentMeta.params
|
|
756
|
+
}, data);
|
|
635
757
|
if ('data' in res && collectionType !== SINGLE_TYPES) {
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
758
|
+
if (fromRelationModal) {
|
|
759
|
+
const createdRelation = {
|
|
760
|
+
documentId: res.data.documentId,
|
|
761
|
+
collectionType,
|
|
762
|
+
model,
|
|
763
|
+
params: currentDocumentMeta.params
|
|
764
|
+
};
|
|
765
|
+
/*
|
|
766
|
+
* Update, if needed, the parent relation with the newly published document.
|
|
767
|
+
* Check if in history we have the parent relation otherwise use the
|
|
768
|
+
* rootDocument
|
|
769
|
+
*/ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)) {
|
|
770
|
+
const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
|
|
771
|
+
const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
|
|
772
|
+
try {
|
|
773
|
+
const updateRes = await updateDocumentMutation({
|
|
774
|
+
collectionType: parentDocumentMetaToUpdate.collectionType,
|
|
775
|
+
model: parentDocumentMetaToUpdate.model,
|
|
776
|
+
documentId: parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
|
|
777
|
+
params: parentDocumentMetaToUpdate.params,
|
|
778
|
+
data: {
|
|
779
|
+
...dataToUpdate
|
|
780
|
+
}
|
|
781
|
+
});
|
|
782
|
+
if ('error' in updateRes) {
|
|
783
|
+
toggleNotification({
|
|
784
|
+
type: 'danger',
|
|
785
|
+
message: formatAPIError(updateRes.error)
|
|
786
|
+
});
|
|
787
|
+
return;
|
|
788
|
+
}
|
|
789
|
+
} catch (err) {
|
|
790
|
+
toggleNotification({
|
|
791
|
+
type: 'danger',
|
|
792
|
+
message: formatMessage({
|
|
793
|
+
id: 'notification.error',
|
|
794
|
+
defaultMessage: 'An error occurred'
|
|
795
|
+
})
|
|
796
|
+
});
|
|
797
|
+
throw err;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
dispatch({
|
|
801
|
+
type: 'GO_TO_CREATED_RELATION',
|
|
802
|
+
payload: {
|
|
803
|
+
document: createdRelation,
|
|
804
|
+
shouldBypassConfirmation: true
|
|
805
|
+
}
|
|
806
|
+
});
|
|
807
|
+
} else {
|
|
808
|
+
navigate({
|
|
809
|
+
pathname: `../${res.data.documentId}`,
|
|
810
|
+
search: rawQuery
|
|
811
|
+
}, {
|
|
812
|
+
replace: true,
|
|
813
|
+
relative: 'path'
|
|
814
|
+
});
|
|
815
|
+
}
|
|
643
816
|
} else if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
644
817
|
setErrors(formatValidationErrors(res.error));
|
|
645
818
|
}
|
|
@@ -651,30 +824,41 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
|
|
|
651
824
|
}
|
|
652
825
|
}
|
|
653
826
|
}, [
|
|
827
|
+
setSubmitting,
|
|
828
|
+
modified,
|
|
829
|
+
validate,
|
|
830
|
+
isCloning,
|
|
831
|
+
documentId,
|
|
832
|
+
collectionType,
|
|
833
|
+
toggleNotification,
|
|
834
|
+
formatMessage,
|
|
654
835
|
clone,
|
|
836
|
+
model,
|
|
655
837
|
cloneMatch?.params.origin,
|
|
656
|
-
collectionType,
|
|
657
|
-
create,
|
|
658
|
-
currentDocumentMeta.documentId,
|
|
659
838
|
currentDocumentMeta.params,
|
|
660
839
|
document,
|
|
661
|
-
documentId,
|
|
662
|
-
formatMessage,
|
|
663
|
-
formatValidationErrors,
|
|
664
|
-
isCloning,
|
|
665
|
-
model,
|
|
666
|
-
modified,
|
|
667
840
|
navigate,
|
|
668
|
-
onPreview,
|
|
669
|
-
params,
|
|
670
841
|
rawQuery,
|
|
671
|
-
resetForm,
|
|
672
|
-
rootDocumentMeta.documentId,
|
|
673
842
|
setErrors,
|
|
674
|
-
|
|
675
|
-
toggleNotification,
|
|
843
|
+
formatValidationErrors,
|
|
676
844
|
update,
|
|
677
|
-
|
|
845
|
+
resetForm,
|
|
846
|
+
create,
|
|
847
|
+
fromRelationModal,
|
|
848
|
+
fieldToConnect,
|
|
849
|
+
documentHistory,
|
|
850
|
+
parentDocumentMetaToUpdate,
|
|
851
|
+
dispatch,
|
|
852
|
+
getInitialFormValues,
|
|
853
|
+
parentDocumentData,
|
|
854
|
+
fieldToConnectUID,
|
|
855
|
+
updateDocumentMutation,
|
|
856
|
+
formatAPIError,
|
|
857
|
+
onPreview,
|
|
858
|
+
initialValues,
|
|
859
|
+
schema,
|
|
860
|
+
components,
|
|
861
|
+
relationalModalSchema
|
|
678
862
|
]);
|
|
679
863
|
// Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
|
|
680
864
|
React.useEffect(()=>{
|