@strapi/content-manager 0.0.0-experimental.35644b9b8cc9cb7d3104ab14464d2de4f1bd19ed → 0.0.0-experimental.36f6fd69b4f935991d26f27957949ec71f187528
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/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/hooks/useDocumentActions.js +7 -3
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +7 -3
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/index.js +1 -3
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +92 -75
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +93 -76
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +115 -88
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +116 -89
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +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/Component/NonRepeatable.js +12 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -3
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +118 -101
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +118 -101
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +155 -99
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +158 -102
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
- 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/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/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/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 +9 -5
- package/dist/admin/services/homepage.js.map +1 -1
- package/dist/admin/services/homepage.mjs +9 -5
- package/dist/admin/services/homepage.mjs.map +1 -1
- package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +3 -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/utils/data.d.ts +19 -1
- package/dist/admin/src/services/documents.d.ts +7 -1
- package/dist/admin/src/utils/validation.d.ts +1 -0
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +6 -1
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +6 -1
- package/dist/admin/translations/fr.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/relations.js +2 -2
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +2 -2
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/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/{services → homepage/services}/homepage.d.ts +1 -1
- 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/package.json +11 -8
- package/dist/admin/src/utils/mergeObject.d.ts +0 -11
- package/dist/admin/utils/mergeObject.js +0 -90
- package/dist/admin/utils/mergeObject.js.map +0 -1
- package/dist/admin/utils/mergeObject.mjs +0 -87
- package/dist/admin/utils/mergeObject.mjs.map +0 -1
- package/dist/server/src/services/homepage.d.ts.map +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
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 {
|
|
4
|
+
import { Flex, Button, Menu, VisuallyHidden, Dialog, Modal, Typography, Radio } from '@strapi/design-system';
|
|
5
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
14
|
import { useDocumentRBAC } from '../../../features/DocumentRBAC.mjs';
|
|
@@ -17,10 +19,42 @@ import { usePreviewContext } from '../../../preview/pages/Preview.mjs';
|
|
|
17
19
|
import { LIST_PATH, CLONE_PATH } from '../../../router.mjs';
|
|
18
20
|
import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery, useUpdateDocumentMutation } from '../../../services/documents.mjs';
|
|
19
21
|
import { isBaseQueryError, buildValidParams } from '../../../utils/api.mjs';
|
|
20
|
-
import { stringToObject, deepMerge } from '../../../utils/mergeObject.mjs';
|
|
21
22
|
import { getTranslation } from '../../../utils/translations.mjs';
|
|
23
|
+
import { handleInvisibleAttributes } from '../utils/data.mjs';
|
|
22
24
|
import { useRelationModal } from './FormInputs/Relations/RelationModal.mjs';
|
|
23
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
|
+
};
|
|
24
58
|
const DocumentActions = ({ actions })=>{
|
|
25
59
|
const { formatMessage } = useIntl();
|
|
26
60
|
const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
|
|
@@ -119,11 +153,6 @@ const DocumentActionButton = (action)=>{
|
|
|
119
153
|
]
|
|
120
154
|
});
|
|
121
155
|
};
|
|
122
|
-
const MenuItem = styled(Menu.Item)`
|
|
123
|
-
&:hover {
|
|
124
|
-
background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
|
|
125
|
-
}
|
|
126
|
-
`;
|
|
127
156
|
const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
|
|
128
157
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
129
158
|
const [dialogId, setDialogId] = React.useState(null);
|
|
@@ -185,27 +214,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
185
214
|
popoverPlacement: "bottom-end",
|
|
186
215
|
children: [
|
|
187
216
|
actions.map((action)=>{
|
|
188
|
-
return /*#__PURE__*/ jsx(
|
|
217
|
+
return /*#__PURE__*/ jsx(Menu.Item, {
|
|
189
218
|
disabled: action.disabled,
|
|
190
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),
|
|
191
220
|
display: "block",
|
|
192
|
-
|
|
193
|
-
|
|
221
|
+
variant: action.variant === 'danger' ? action.variant : 'default',
|
|
222
|
+
startIcon: action.icon,
|
|
194
223
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
195
224
|
justifyContent: "space-between",
|
|
196
225
|
gap: 4,
|
|
197
|
-
children: /*#__PURE__*/
|
|
198
|
-
color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
|
|
226
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
199
227
|
gap: 2,
|
|
200
228
|
tag: "span",
|
|
201
|
-
children:
|
|
202
|
-
/*#__PURE__*/ jsx(Flex, {
|
|
203
|
-
tag: "span",
|
|
204
|
-
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
|
|
205
|
-
children: action.icon
|
|
206
|
-
}),
|
|
207
|
-
action.label
|
|
208
|
-
]
|
|
229
|
+
children: action.label
|
|
209
230
|
})
|
|
210
231
|
})
|
|
211
232
|
}, action.id);
|
|
@@ -233,30 +254,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
233
254
|
]
|
|
234
255
|
});
|
|
235
256
|
};
|
|
236
|
-
const convertActionVariantToColor = (variant = 'secondary')=>{
|
|
237
|
-
switch(variant){
|
|
238
|
-
case 'danger':
|
|
239
|
-
return 'danger600';
|
|
240
|
-
case 'secondary':
|
|
241
|
-
return undefined;
|
|
242
|
-
case 'success':
|
|
243
|
-
return 'success600';
|
|
244
|
-
default:
|
|
245
|
-
return 'primary600';
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
const convertActionVariantToIconColor = (variant = 'secondary')=>{
|
|
249
|
-
switch(variant){
|
|
250
|
-
case 'danger':
|
|
251
|
-
return 'danger600';
|
|
252
|
-
case 'secondary':
|
|
253
|
-
return 'neutral500';
|
|
254
|
-
case 'success':
|
|
255
|
-
return 'success600';
|
|
256
|
-
default:
|
|
257
|
-
return 'primary600';
|
|
258
|
-
}
|
|
259
|
-
};
|
|
260
257
|
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
|
|
261
258
|
const { formatMessage } = useIntl();
|
|
262
259
|
const handleClose = async ()=>{
|
|
@@ -362,7 +359,10 @@ const transformData = (data)=>{
|
|
|
362
359
|
const isCloning = useMatch(CLONE_PATH) !== null;
|
|
363
360
|
const { id } = useParams();
|
|
364
361
|
const { formatMessage } = useIntl();
|
|
365
|
-
const canPublish = useDocumentRBAC('PublishAction', ({ canPublish })=>
|
|
362
|
+
const { canPublish, canReadFields } = useDocumentRBAC('PublishAction', ({ canPublish, canReadFields })=>({
|
|
363
|
+
canPublish,
|
|
364
|
+
canReadFields
|
|
365
|
+
}));
|
|
366
366
|
const { publish, isLoading } = useDocumentActions();
|
|
367
367
|
const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
|
368
368
|
const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = useLazyGetDraftRelationCountQuery();
|
|
@@ -376,11 +376,13 @@ const transformData = (data)=>{
|
|
|
376
376
|
const setErrors = useForm('PublishAction', (state)=>state.setErrors);
|
|
377
377
|
const formValues = useForm('PublishAction', ({ values })=>values);
|
|
378
378
|
const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
|
|
379
|
+
const { currentDocument: { components } } = useDocumentContext('PublishAction');
|
|
379
380
|
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
380
381
|
const relationContext = useRelationModal('PublishAction', ()=>true, false);
|
|
381
382
|
const fromRelationModal = relationContext != undefined;
|
|
382
383
|
const dispatch = useRelationModal('PublishAction', (state)=>state.dispatch);
|
|
383
384
|
const fieldToConnect = useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
|
385
|
+
const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
384
386
|
const documentHistory = useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
|
|
385
387
|
const rootDocumentMeta = useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
|
|
386
388
|
const { currentDocumentMeta } = useDocumentContext('PublishAction');
|
|
@@ -478,6 +480,7 @@ const transformData = (data)=>{
|
|
|
478
480
|
}, {
|
|
479
481
|
skip: !parentDocumentMetaToUpdate
|
|
480
482
|
});
|
|
483
|
+
const { getInitialFormValues } = useDoc();
|
|
481
484
|
const isDocumentPublished = (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
|
|
482
485
|
if (!schema?.options?.draftAndPublish) {
|
|
483
486
|
return null;
|
|
@@ -489,21 +492,39 @@ const transformData = (data)=>{
|
|
|
489
492
|
status: 'published'
|
|
490
493
|
});
|
|
491
494
|
if (errors) {
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
id: 'content-manager.validation.error',
|
|
496
|
-
defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
|
|
497
|
-
})
|
|
495
|
+
const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName)=>{
|
|
496
|
+
const attribute = schema.attributes[fieldName];
|
|
497
|
+
return attribute?.required && !(canReadFields ?? []).includes(fieldName);
|
|
498
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
|
+
}
|
|
499
516
|
return;
|
|
500
517
|
}
|
|
518
|
+
const { data } = handleInvisibleAttributes(transformData(formValues), {
|
|
519
|
+
schema,
|
|
520
|
+
components
|
|
521
|
+
});
|
|
501
522
|
const res = await publish({
|
|
502
523
|
collectionType,
|
|
503
524
|
model,
|
|
504
525
|
documentId,
|
|
505
526
|
params: currentDocumentMeta.params
|
|
506
|
-
},
|
|
527
|
+
}, data);
|
|
507
528
|
// Reset form if successful
|
|
508
529
|
if ('data' in res) {
|
|
509
530
|
resetForm();
|
|
@@ -523,30 +544,21 @@ const transformData = (data)=>{
|
|
|
523
544
|
model,
|
|
524
545
|
params: currentDocumentMeta.params
|
|
525
546
|
};
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
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();
|
|
530
553
|
const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
|
|
531
|
-
const
|
|
532
|
-
connect: [
|
|
533
|
-
{
|
|
534
|
-
id: res.data.documentId,
|
|
535
|
-
documentId: res.data.documentId,
|
|
536
|
-
locale: res.data.locale
|
|
537
|
-
}
|
|
538
|
-
]
|
|
539
|
-
});
|
|
540
|
-
const dataToUpdate = deepMerge(parentDataToUpdate, objectToConnect);
|
|
554
|
+
const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
|
|
541
555
|
try {
|
|
542
556
|
const updateRes = await updateDocumentMutation({
|
|
543
557
|
collectionType: metaDocumentToUpdate.collectionType,
|
|
544
558
|
model: metaDocumentToUpdate.model,
|
|
545
|
-
documentId: metaDocumentToUpdate.documentId,
|
|
559
|
+
documentId: metaDocumentToUpdate.collectionType !== SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
|
|
546
560
|
params: metaDocumentToUpdate.params,
|
|
547
|
-
data:
|
|
548
|
-
...dataToUpdate
|
|
549
|
-
}
|
|
561
|
+
data: dataToUpdate
|
|
550
562
|
});
|
|
551
563
|
if ('error' in updateRes) {
|
|
552
564
|
toggleNotification({
|
|
@@ -646,11 +658,14 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
646
658
|
const isCloning = cloneMatch !== null;
|
|
647
659
|
const { formatMessage } = useIntl();
|
|
648
660
|
const { create, update, clone, isLoading } = useDocumentActions();
|
|
661
|
+
const { currentDocument: { components } } = useDocumentContext('UpdateAction');
|
|
649
662
|
const [{ rawQuery }] = useQueryParams();
|
|
650
663
|
const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
|
664
|
+
const { getInitialFormValues } = useDoc();
|
|
651
665
|
const isSubmitting = useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
|
|
652
666
|
const modified = useForm('UpdateAction', ({ modified })=>modified);
|
|
653
667
|
const setSubmitting = useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
|
|
668
|
+
const initialValues = useForm('UpdateAction', ({ initialValues })=>initialValues);
|
|
654
669
|
const document = useForm('UpdateAction', ({ values })=>values);
|
|
655
670
|
const validate = useForm('UpdateAction', (state)=>state.validate);
|
|
656
671
|
const setErrors = useForm('UpdateAction', (state)=>state.setErrors);
|
|
@@ -658,7 +673,9 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
658
673
|
const dispatch = useRelationModal('UpdateAction', (state)=>state.dispatch);
|
|
659
674
|
// need to discriminate if the update is coming from a relation modal or in the edit view
|
|
660
675
|
const relationContext = useRelationModal('UpdateAction', ()=>true, false);
|
|
676
|
+
const relationalModalSchema = useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
|
|
661
677
|
const fieldToConnect = useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
|
|
678
|
+
const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
662
679
|
const documentHistory = useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
|
|
663
680
|
const rootDocumentMeta = useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
|
|
664
681
|
const fromRelationModal = relationContext != undefined;
|
|
@@ -674,6 +691,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
674
691
|
}, {
|
|
675
692
|
skip: !parentDocumentMetaToUpdate
|
|
676
693
|
});
|
|
694
|
+
const { schema } = useDoc();
|
|
677
695
|
const handleUpdate = React.useCallback(async ()=>{
|
|
678
696
|
setSubmitting(true);
|
|
679
697
|
try {
|
|
@@ -710,22 +728,32 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
710
728
|
setErrors(formatValidationErrors(res.error));
|
|
711
729
|
}
|
|
712
730
|
} else if (documentId || collectionType === SINGLE_TYPES) {
|
|
731
|
+
const { data } = handleInvisibleAttributes(transformData(document), {
|
|
732
|
+
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
733
|
+
initialValues,
|
|
734
|
+
components
|
|
735
|
+
});
|
|
713
736
|
const res = await update({
|
|
714
737
|
collectionType,
|
|
715
738
|
model,
|
|
716
739
|
documentId,
|
|
717
740
|
params: currentDocumentMeta.params
|
|
718
|
-
},
|
|
741
|
+
}, data);
|
|
719
742
|
if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
720
743
|
setErrors(formatValidationErrors(res.error));
|
|
721
744
|
} else {
|
|
722
745
|
resetForm();
|
|
723
746
|
}
|
|
724
747
|
} else {
|
|
748
|
+
const { data } = handleInvisibleAttributes(transformData(document), {
|
|
749
|
+
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
750
|
+
initialValues,
|
|
751
|
+
components
|
|
752
|
+
});
|
|
725
753
|
const res = await create({
|
|
726
754
|
model,
|
|
727
755
|
params: currentDocumentMeta.params
|
|
728
|
-
},
|
|
756
|
+
}, data);
|
|
729
757
|
if ('data' in res && collectionType !== SINGLE_TYPES) {
|
|
730
758
|
if (fromRelationModal) {
|
|
731
759
|
const createdRelation = {
|
|
@@ -734,25 +762,18 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
734
762
|
model,
|
|
735
763
|
params: currentDocumentMeta.params
|
|
736
764
|
};
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
id: res.data.documentId,
|
|
745
|
-
documentId: res.data.documentId,
|
|
746
|
-
locale: res.data.locale
|
|
747
|
-
}
|
|
748
|
-
]
|
|
749
|
-
});
|
|
750
|
-
const dataToUpdate = deepMerge(parentDataToUpdate, objectToConnect);
|
|
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);
|
|
751
772
|
try {
|
|
752
773
|
const updateRes = await updateDocumentMutation({
|
|
753
774
|
collectionType: parentDocumentMetaToUpdate.collectionType,
|
|
754
775
|
model: parentDocumentMetaToUpdate.model,
|
|
755
|
-
documentId: parentDocumentMetaToUpdate.documentId,
|
|
776
|
+
documentId: parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
|
|
756
777
|
params: parentDocumentMetaToUpdate.params,
|
|
757
778
|
data: {
|
|
758
779
|
...dataToUpdate
|
|
@@ -828,10 +849,16 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
828
849
|
documentHistory,
|
|
829
850
|
parentDocumentMetaToUpdate,
|
|
830
851
|
dispatch,
|
|
852
|
+
getInitialFormValues,
|
|
831
853
|
parentDocumentData,
|
|
854
|
+
fieldToConnectUID,
|
|
832
855
|
updateDocumentMutation,
|
|
833
856
|
formatAPIError,
|
|
834
|
-
onPreview
|
|
857
|
+
onPreview,
|
|
858
|
+
initialValues,
|
|
859
|
+
schema,
|
|
860
|
+
components,
|
|
861
|
+
relationalModalSchema
|
|
835
862
|
]);
|
|
836
863
|
// Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
|
|
837
864
|
React.useEffect(()=>{
|