@strapi/content-manager 0.0.0-next.e21fe90bf2ab9906267ea6e6ca620bdcc729906c → 0.0.0-next.e3eb76a86aff89979cc9098aec129d2ffa600c56
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/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 +12 -4
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +12 -4
- 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 +1 -3
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +81 -74
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +82 -75
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +235 -71
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +238 -74
- 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/Repeatable.js +2 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +2 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +2 -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 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +128 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +128 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +120 -32
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +124 -36
- 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/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 +20 -24
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +20 -24
- package/dist/admin/pages/EditView/components/FormLayout.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 +1 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +1 -1
- package/dist/admin/preview/components/PreviewHeader.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/hooks/useDocumentContext.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
- 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/services/documents.d.ts +7 -1
- 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 +1 -1
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +1 -1
- 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/{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/server/src/services/homepage.d.ts.map +0 -1
|
@@ -6,9 +6,11 @@ var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
|
6
6
|
var designSystem = require('@strapi/design-system');
|
|
7
7
|
var Icons = require('@strapi/icons');
|
|
8
8
|
var mapValues = require('lodash/fp/mapValues');
|
|
9
|
+
var get = require('lodash/get');
|
|
10
|
+
var merge = require('lodash/merge');
|
|
11
|
+
var set = require('lodash/set');
|
|
9
12
|
var reactIntl = require('react-intl');
|
|
10
13
|
var reactRouterDom = require('react-router-dom');
|
|
11
|
-
var styledComponents = require('styled-components');
|
|
12
14
|
var attributes = require('../../../constants/attributes.js');
|
|
13
15
|
var collections = require('../../../constants/collections.js');
|
|
14
16
|
var DocumentRBAC = require('../../../features/DocumentRBAC.js');
|
|
@@ -20,6 +22,7 @@ var router = require('../../../router.js');
|
|
|
20
22
|
var documents = require('../../../services/documents.js');
|
|
21
23
|
var api = require('../../../utils/api.js');
|
|
22
24
|
var translations = require('../../../utils/translations.js');
|
|
25
|
+
var RelationModal = require('./FormInputs/Relations/RelationModal.js');
|
|
23
26
|
|
|
24
27
|
function _interopNamespaceDefault(e) {
|
|
25
28
|
var n = Object.create(null);
|
|
@@ -40,6 +43,38 @@ function _interopNamespaceDefault(e) {
|
|
|
40
43
|
|
|
41
44
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
42
45
|
|
|
46
|
+
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
|
47
|
+
/*
|
|
48
|
+
* Check if the fieldToConnect is already present in the parentDataToUpdate.
|
|
49
|
+
* This happens in particular when in the parentDocument you have created
|
|
50
|
+
* a new component without saving.
|
|
51
|
+
*/ const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);
|
|
52
|
+
const fieldToConnectPath = isFieldPresent ? fieldToConnect : fieldToConnect.split('.').slice(0, -1).join('.');
|
|
53
|
+
const fieldToConnectValue = isFieldPresent ? {
|
|
54
|
+
connect: [
|
|
55
|
+
{
|
|
56
|
+
id: data.documentId,
|
|
57
|
+
documentId: data.documentId,
|
|
58
|
+
locale: data.locale
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
} : {
|
|
62
|
+
[fieldToConnect.split('.').pop()]: {
|
|
63
|
+
connect: [
|
|
64
|
+
{
|
|
65
|
+
id: data.documentId,
|
|
66
|
+
documentId: data.documentId,
|
|
67
|
+
locale: data.locale
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
disconnect: []
|
|
71
|
+
},
|
|
72
|
+
// In case the object was not present you need to pass the componentUID of the parent document
|
|
73
|
+
__component: fieldToConnectUID
|
|
74
|
+
};
|
|
75
|
+
const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);
|
|
76
|
+
return merge(parentDataToUpdate, objectToConnect);
|
|
77
|
+
};
|
|
43
78
|
const DocumentActions = ({ actions })=>{
|
|
44
79
|
const { formatMessage } = reactIntl.useIntl();
|
|
45
80
|
const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
|
|
@@ -138,11 +173,6 @@ const DocumentActionButton = (action)=>{
|
|
|
138
173
|
]
|
|
139
174
|
});
|
|
140
175
|
};
|
|
141
|
-
const MenuItem = styledComponents.styled(designSystem.Menu.Item)`
|
|
142
|
-
&:hover {
|
|
143
|
-
background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
|
|
144
|
-
}
|
|
145
|
-
`;
|
|
146
176
|
const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
|
|
147
177
|
const [isOpen, setIsOpen] = React__namespace.useState(false);
|
|
148
178
|
const [dialogId, setDialogId] = React__namespace.useState(null);
|
|
@@ -204,27 +234,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
204
234
|
popoverPlacement: "bottom-end",
|
|
205
235
|
children: [
|
|
206
236
|
actions.map((action)=>{
|
|
207
|
-
return /*#__PURE__*/ jsxRuntime.jsx(
|
|
237
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
208
238
|
disabled: action.disabled,
|
|
209
239
|
/* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */ onSelect: handleClick(action),
|
|
210
240
|
display: "block",
|
|
211
|
-
|
|
212
|
-
|
|
241
|
+
variant: action.variant === 'danger' ? action.variant : 'default',
|
|
242
|
+
startIcon: action.icon,
|
|
213
243
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
214
244
|
justifyContent: "space-between",
|
|
215
245
|
gap: 4,
|
|
216
|
-
children: /*#__PURE__*/ jsxRuntime.
|
|
217
|
-
color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
|
|
246
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
218
247
|
gap: 2,
|
|
219
248
|
tag: "span",
|
|
220
|
-
children:
|
|
221
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
222
|
-
tag: "span",
|
|
223
|
-
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
|
|
224
|
-
children: action.icon
|
|
225
|
-
}),
|
|
226
|
-
action.label
|
|
227
|
-
]
|
|
249
|
+
children: action.label
|
|
228
250
|
})
|
|
229
251
|
})
|
|
230
252
|
}, action.id);
|
|
@@ -252,30 +274,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
252
274
|
]
|
|
253
275
|
});
|
|
254
276
|
};
|
|
255
|
-
const convertActionVariantToColor = (variant = 'secondary')=>{
|
|
256
|
-
switch(variant){
|
|
257
|
-
case 'danger':
|
|
258
|
-
return 'danger600';
|
|
259
|
-
case 'secondary':
|
|
260
|
-
return undefined;
|
|
261
|
-
case 'success':
|
|
262
|
-
return 'success600';
|
|
263
|
-
default:
|
|
264
|
-
return 'primary600';
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
const convertActionVariantToIconColor = (variant = 'secondary')=>{
|
|
268
|
-
switch(variant){
|
|
269
|
-
case 'danger':
|
|
270
|
-
return 'danger600';
|
|
271
|
-
case 'secondary':
|
|
272
|
-
return 'neutral500';
|
|
273
|
-
case 'success':
|
|
274
|
-
return 'success600';
|
|
275
|
-
default:
|
|
276
|
-
return 'primary600';
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
277
|
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
|
|
280
278
|
const { formatMessage } = reactIntl.useIntl();
|
|
281
279
|
const handleClose = async ()=>{
|
|
@@ -381,7 +379,10 @@ const transformData = (data)=>{
|
|
|
381
379
|
const isCloning = reactRouterDom.useMatch(router.CLONE_PATH) !== null;
|
|
382
380
|
const { id } = reactRouterDom.useParams();
|
|
383
381
|
const { formatMessage } = reactIntl.useIntl();
|
|
384
|
-
const canPublish = DocumentRBAC.useDocumentRBAC('PublishAction', ({ canPublish })=>
|
|
382
|
+
const { canPublish, canReadFields } = DocumentRBAC.useDocumentRBAC('PublishAction', ({ canPublish, canReadFields })=>({
|
|
383
|
+
canPublish,
|
|
384
|
+
canReadFields
|
|
385
|
+
}));
|
|
385
386
|
const { publish, isLoading } = useDocumentActions.useDocumentActions();
|
|
386
387
|
const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
|
387
388
|
const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = documents.useGetDraftRelationCountQuery();
|
|
@@ -395,7 +396,17 @@ const transformData = (data)=>{
|
|
|
395
396
|
const setErrors = strapiAdmin.useForm('PublishAction', (state)=>state.setErrors);
|
|
396
397
|
const formValues = strapiAdmin.useForm('PublishAction', ({ values })=>values);
|
|
397
398
|
const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
|
|
399
|
+
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
400
|
+
const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
|
|
401
|
+
const fromRelationModal = relationContext != undefined;
|
|
402
|
+
const dispatch = RelationModal.useRelationModal('PublishAction', (state)=>state.dispatch);
|
|
403
|
+
const fieldToConnect = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
|
404
|
+
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
405
|
+
const documentHistory = RelationModal.useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
|
|
406
|
+
const rootDocumentMeta = RelationModal.useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
|
|
398
407
|
const { currentDocumentMeta } = useDocumentContext.useDocumentContext('PublishAction');
|
|
408
|
+
const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
|
|
409
|
+
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
399
410
|
const idToPublish = currentDocumentMeta.documentId || id;
|
|
400
411
|
React__namespace.useEffect(()=>{
|
|
401
412
|
if (isErrorDraftRelations) {
|
|
@@ -479,6 +490,16 @@ const transformData = (data)=>{
|
|
|
479
490
|
model,
|
|
480
491
|
currentDocumentMeta.params
|
|
481
492
|
]);
|
|
493
|
+
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
494
|
+
const parentDocumentData = useDocument.useDocument({
|
|
495
|
+
documentId: parentDocumentMetaToUpdate?.documentId,
|
|
496
|
+
model: parentDocumentMetaToUpdate?.model,
|
|
497
|
+
collectionType: parentDocumentMetaToUpdate?.collectionType,
|
|
498
|
+
params: parentDocumentMetaToUpdate?.params
|
|
499
|
+
}, {
|
|
500
|
+
skip: !parentDocumentMetaToUpdate
|
|
501
|
+
});
|
|
502
|
+
const { getInitialFormValues } = useDocument.useDoc();
|
|
482
503
|
const isDocumentPublished = (document?.[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
|
|
483
504
|
if (!schema?.options?.draftAndPublish) {
|
|
484
505
|
return null;
|
|
@@ -490,13 +511,27 @@ const transformData = (data)=>{
|
|
|
490
511
|
status: 'published'
|
|
491
512
|
});
|
|
492
513
|
if (errors) {
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
id: 'content-manager.validation.error',
|
|
497
|
-
defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
|
|
498
|
-
})
|
|
514
|
+
const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName)=>{
|
|
515
|
+
const attribute = schema.attributes[fieldName];
|
|
516
|
+
return attribute?.required && !(canReadFields ?? []).includes(fieldName);
|
|
499
517
|
});
|
|
518
|
+
if (hasUnreadableRequiredField) {
|
|
519
|
+
toggleNotification({
|
|
520
|
+
type: 'danger',
|
|
521
|
+
message: formatMessage({
|
|
522
|
+
id: 'content-manager.validation.error.unreadable-required-field',
|
|
523
|
+
defaultMessage: 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.'
|
|
524
|
+
})
|
|
525
|
+
});
|
|
526
|
+
} else {
|
|
527
|
+
toggleNotification({
|
|
528
|
+
type: 'danger',
|
|
529
|
+
message: formatMessage({
|
|
530
|
+
id: 'content-manager.validation.error',
|
|
531
|
+
defaultMessage: 'There are validation errors in your document. Please fix them before saving.'
|
|
532
|
+
})
|
|
533
|
+
});
|
|
534
|
+
}
|
|
500
535
|
return;
|
|
501
536
|
}
|
|
502
537
|
const res = await publish({
|
|
@@ -512,11 +547,59 @@ const transformData = (data)=>{
|
|
|
512
547
|
if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
|
|
513
548
|
/**
|
|
514
549
|
* TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.
|
|
515
|
-
*/ if (idToPublish === 'create') {
|
|
550
|
+
*/ if (idToPublish === 'create' && !fromRelationModal) {
|
|
516
551
|
navigate({
|
|
517
552
|
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
|
518
553
|
search: rawQuery
|
|
519
554
|
});
|
|
555
|
+
} else if (fromRelationModal) {
|
|
556
|
+
const newRelation = {
|
|
557
|
+
documentId: res.data.documentId,
|
|
558
|
+
collectionType,
|
|
559
|
+
model,
|
|
560
|
+
params: currentDocumentMeta.params
|
|
561
|
+
};
|
|
562
|
+
/*
|
|
563
|
+
* Update, if needed, the parent relation with the newly published document.
|
|
564
|
+
* Check if in history we have the parent relation otherwise use the
|
|
565
|
+
* rootDocument
|
|
566
|
+
*/ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
|
|
567
|
+
const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
|
|
568
|
+
const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
|
|
569
|
+
const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
|
|
570
|
+
try {
|
|
571
|
+
const updateRes = await updateDocumentMutation({
|
|
572
|
+
collectionType: metaDocumentToUpdate.collectionType,
|
|
573
|
+
model: metaDocumentToUpdate.model,
|
|
574
|
+
documentId: metaDocumentToUpdate.collectionType !== collections.SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
|
|
575
|
+
params: metaDocumentToUpdate.params,
|
|
576
|
+
data: dataToUpdate
|
|
577
|
+
});
|
|
578
|
+
if ('error' in updateRes) {
|
|
579
|
+
toggleNotification({
|
|
580
|
+
type: 'danger',
|
|
581
|
+
message: formatAPIError(updateRes.error)
|
|
582
|
+
});
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
} catch (err) {
|
|
586
|
+
toggleNotification({
|
|
587
|
+
type: 'danger',
|
|
588
|
+
message: formatMessage({
|
|
589
|
+
id: 'notification.error',
|
|
590
|
+
defaultMessage: 'An error occurred'
|
|
591
|
+
})
|
|
592
|
+
});
|
|
593
|
+
throw err;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
dispatch({
|
|
597
|
+
type: 'GO_TO_CREATED_RELATION',
|
|
598
|
+
payload: {
|
|
599
|
+
document: newRelation,
|
|
600
|
+
shouldBypassConfirmation: true
|
|
601
|
+
}
|
|
602
|
+
});
|
|
520
603
|
}
|
|
521
604
|
} else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
522
605
|
setErrors(formatValidationErrors(res.error));
|
|
@@ -592,14 +675,34 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
592
675
|
const { create, update, clone, isLoading } = useDocumentActions.useDocumentActions();
|
|
593
676
|
const [{ rawQuery }] = strapiAdmin.useQueryParams();
|
|
594
677
|
const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
|
678
|
+
const { getInitialFormValues } = useDocument.useDoc();
|
|
595
679
|
const isSubmitting = strapiAdmin.useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
|
|
596
680
|
const modified = strapiAdmin.useForm('UpdateAction', ({ modified })=>modified);
|
|
597
681
|
const setSubmitting = strapiAdmin.useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
|
|
598
682
|
const document = strapiAdmin.useForm('UpdateAction', ({ values })=>values);
|
|
599
683
|
const validate = strapiAdmin.useForm('UpdateAction', (state)=>state.validate);
|
|
600
684
|
const setErrors = strapiAdmin.useForm('UpdateAction', (state)=>state.setErrors);
|
|
601
|
-
const resetForm = strapiAdmin.useForm('
|
|
685
|
+
const resetForm = strapiAdmin.useForm('UpdateAction', ({ resetForm })=>resetForm);
|
|
686
|
+
const dispatch = RelationModal.useRelationModal('UpdateAction', (state)=>state.dispatch);
|
|
687
|
+
// need to discriminate if the update is coming from a relation modal or in the edit view
|
|
688
|
+
const relationContext = RelationModal.useRelationModal('UpdateAction', ()=>true, false);
|
|
689
|
+
const fieldToConnect = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
|
|
690
|
+
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
691
|
+
const documentHistory = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
|
|
692
|
+
const rootDocumentMeta = RelationModal.useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
|
|
693
|
+
const fromRelationModal = relationContext != undefined;
|
|
602
694
|
const { currentDocumentMeta } = useDocumentContext.useDocumentContext('UpdateAction');
|
|
695
|
+
const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
|
|
696
|
+
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
697
|
+
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
|
698
|
+
const parentDocumentData = useDocument.useDocument({
|
|
699
|
+
documentId: parentDocumentMetaToUpdate?.documentId,
|
|
700
|
+
model: parentDocumentMetaToUpdate?.model,
|
|
701
|
+
collectionType: parentDocumentMetaToUpdate?.collectionType,
|
|
702
|
+
params: parentDocumentMetaToUpdate?.params
|
|
703
|
+
}, {
|
|
704
|
+
skip: !parentDocumentMetaToUpdate
|
|
705
|
+
});
|
|
603
706
|
const handleUpdate = React__namespace.useCallback(async ()=>{
|
|
604
707
|
setSubmitting(true);
|
|
605
708
|
try {
|
|
@@ -653,13 +756,64 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
653
756
|
params: currentDocumentMeta.params
|
|
654
757
|
}, transformData(document));
|
|
655
758
|
if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
759
|
+
if (fromRelationModal) {
|
|
760
|
+
const createdRelation = {
|
|
761
|
+
documentId: res.data.documentId,
|
|
762
|
+
collectionType,
|
|
763
|
+
model,
|
|
764
|
+
params: currentDocumentMeta.params
|
|
765
|
+
};
|
|
766
|
+
/*
|
|
767
|
+
* Update, if needed, the parent relation with the newly published document.
|
|
768
|
+
* Check if in history we have the parent relation otherwise use the
|
|
769
|
+
* rootDocument
|
|
770
|
+
*/ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
|
|
771
|
+
const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
|
|
772
|
+
const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
|
|
773
|
+
try {
|
|
774
|
+
const updateRes = await updateDocumentMutation({
|
|
775
|
+
collectionType: parentDocumentMetaToUpdate.collectionType,
|
|
776
|
+
model: parentDocumentMetaToUpdate.model,
|
|
777
|
+
documentId: parentDocumentMetaToUpdate.collectionType !== collections.SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
|
|
778
|
+
params: parentDocumentMetaToUpdate.params,
|
|
779
|
+
data: {
|
|
780
|
+
...dataToUpdate
|
|
781
|
+
}
|
|
782
|
+
});
|
|
783
|
+
if ('error' in updateRes) {
|
|
784
|
+
toggleNotification({
|
|
785
|
+
type: 'danger',
|
|
786
|
+
message: formatAPIError(updateRes.error)
|
|
787
|
+
});
|
|
788
|
+
return;
|
|
789
|
+
}
|
|
790
|
+
} catch (err) {
|
|
791
|
+
toggleNotification({
|
|
792
|
+
type: 'danger',
|
|
793
|
+
message: formatMessage({
|
|
794
|
+
id: 'notification.error',
|
|
795
|
+
defaultMessage: 'An error occurred'
|
|
796
|
+
})
|
|
797
|
+
});
|
|
798
|
+
throw err;
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
dispatch({
|
|
802
|
+
type: 'GO_TO_CREATED_RELATION',
|
|
803
|
+
payload: {
|
|
804
|
+
document: createdRelation,
|
|
805
|
+
shouldBypassConfirmation: true
|
|
806
|
+
}
|
|
807
|
+
});
|
|
808
|
+
} else {
|
|
809
|
+
navigate({
|
|
810
|
+
pathname: `../${res.data.documentId}`,
|
|
811
|
+
search: rawQuery
|
|
812
|
+
}, {
|
|
813
|
+
replace: true,
|
|
814
|
+
relative: 'path'
|
|
815
|
+
});
|
|
816
|
+
}
|
|
663
817
|
} else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
664
818
|
setErrors(formatValidationErrors(res.error));
|
|
665
819
|
}
|
|
@@ -671,26 +825,36 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
671
825
|
}
|
|
672
826
|
}
|
|
673
827
|
}, [
|
|
828
|
+
setSubmitting,
|
|
829
|
+
modified,
|
|
830
|
+
validate,
|
|
831
|
+
isCloning,
|
|
832
|
+
documentId,
|
|
833
|
+
collectionType,
|
|
834
|
+
toggleNotification,
|
|
835
|
+
formatMessage,
|
|
674
836
|
clone,
|
|
837
|
+
model,
|
|
675
838
|
cloneMatch?.params.origin,
|
|
676
|
-
collectionType,
|
|
677
|
-
create,
|
|
678
839
|
currentDocumentMeta.params,
|
|
679
840
|
document,
|
|
680
|
-
documentId,
|
|
681
|
-
formatMessage,
|
|
682
|
-
formatValidationErrors,
|
|
683
|
-
isCloning,
|
|
684
|
-
model,
|
|
685
|
-
modified,
|
|
686
841
|
navigate,
|
|
687
842
|
rawQuery,
|
|
688
|
-
resetForm,
|
|
689
843
|
setErrors,
|
|
690
|
-
|
|
691
|
-
toggleNotification,
|
|
844
|
+
formatValidationErrors,
|
|
692
845
|
update,
|
|
693
|
-
|
|
846
|
+
resetForm,
|
|
847
|
+
create,
|
|
848
|
+
fromRelationModal,
|
|
849
|
+
fieldToConnect,
|
|
850
|
+
documentHistory,
|
|
851
|
+
parentDocumentMetaToUpdate,
|
|
852
|
+
dispatch,
|
|
853
|
+
getInitialFormValues,
|
|
854
|
+
parentDocumentData,
|
|
855
|
+
fieldToConnectUID,
|
|
856
|
+
updateDocumentMutation,
|
|
857
|
+
formatAPIError,
|
|
694
858
|
onPreview
|
|
695
859
|
]);
|
|
696
860
|
// Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
|