@strapi/content-manager 0.0.0-experimental.8bf99b7c43ed372264c198d347a2ada9dfed174d → 0.0.0-experimental.8c28a74d1219c09f4ee67402fd3a26f182c4990a
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/LeftMenu.js +30 -34
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +32 -36
- 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/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 +13 -2
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +13 -2
- 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 +85 -93
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +86 -94
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +232 -51
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +238 -57
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +7 -12
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +8 -13
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.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 +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +4 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +4 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +5 -16
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +5 -16
- 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 +495 -345
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +495 -347
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +143 -86
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +146 -89
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +7 -7
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +7 -7
- package/dist/admin/pages/EditView/components/FormInputs/UID.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/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/ListView/ListViewPage.js +0 -77
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +1 -78
- package/dist/admin/pages/ListView/ListViewPage.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/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/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/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/InputRenderer.d.ts +1 -1
- package/dist/admin/src/preview/pages/Preview.d.ts +2 -1
- package/dist/admin/src/services/homepage.d.ts +5 -0
- package/dist/admin/translations/en.json.js +2 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +2 -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/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/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/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/src/controllers/index.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 +7 -1
- 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 +0 -1
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +6 -1
- package/dist/server/src/services/index.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 +8 -8
- 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
@@ -6,19 +6,24 @@ 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
14
|
var styledComponents = require('styled-components');
|
12
15
|
var attributes = require('../../../constants/attributes.js');
|
13
16
|
var collections = require('../../../constants/collections.js');
|
14
|
-
var DocumentContext = require('../../../features/DocumentContext.js');
|
15
17
|
var DocumentRBAC = require('../../../features/DocumentRBAC.js');
|
16
18
|
var useDocument = require('../../../hooks/useDocument.js');
|
17
19
|
var useDocumentActions = require('../../../hooks/useDocumentActions.js');
|
20
|
+
var useDocumentContext = require('../../../hooks/useDocumentContext.js');
|
21
|
+
var Preview = require('../../../preview/pages/Preview.js');
|
18
22
|
var router = require('../../../router.js');
|
19
23
|
var documents = require('../../../services/documents.js');
|
20
24
|
var api = require('../../../utils/api.js');
|
21
25
|
var translations = require('../../../utils/translations.js');
|
26
|
+
var RelationModal = require('./FormInputs/Relations/RelationModal.js');
|
22
27
|
|
23
28
|
function _interopNamespaceDefault(e) {
|
24
29
|
var n = Object.create(null);
|
@@ -39,6 +44,38 @@ function _interopNamespaceDefault(e) {
|
|
39
44
|
|
40
45
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
41
46
|
|
47
|
+
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
48
|
+
/*
|
49
|
+
* Check if the fieldToConnect is already present in the parentDataToUpdate.
|
50
|
+
* This happens in particular when in the parentDocument you have created
|
51
|
+
* a new component without saving.
|
52
|
+
*/ const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);
|
53
|
+
const fieldToConnectPath = isFieldPresent ? fieldToConnect : fieldToConnect.split('.').slice(0, -1).join('.');
|
54
|
+
const fieldToConnectValue = isFieldPresent ? {
|
55
|
+
connect: [
|
56
|
+
{
|
57
|
+
id: data.documentId,
|
58
|
+
documentId: data.documentId,
|
59
|
+
locale: data.locale
|
60
|
+
}
|
61
|
+
]
|
62
|
+
} : {
|
63
|
+
[fieldToConnect.split('.').pop()]: {
|
64
|
+
connect: [
|
65
|
+
{
|
66
|
+
id: data.documentId,
|
67
|
+
documentId: data.documentId,
|
68
|
+
locale: data.locale
|
69
|
+
}
|
70
|
+
],
|
71
|
+
disconnect: []
|
72
|
+
},
|
73
|
+
// In case the object was not present you need to pass the componentUID of the parent document
|
74
|
+
__component: fieldToConnectUID
|
75
|
+
};
|
76
|
+
const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);
|
77
|
+
return merge(parentDataToUpdate, objectToConnect);
|
78
|
+
};
|
42
79
|
const DocumentActions = ({ actions })=>{
|
43
80
|
const { formatMessage } = reactIntl.useIntl();
|
44
81
|
const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
|
@@ -371,8 +408,8 @@ const transformData = (data)=>{
|
|
371
408
|
};
|
372
409
|
/* -------------------------------------------------------------------------------------------------
|
373
410
|
* DocumentActionComponents
|
374
|
-
* -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document
|
375
|
-
const schema =
|
411
|
+
* -----------------------------------------------------------------------------------------------*/ const PublishAction = ({ activeTab, documentId, model, collectionType, meta, document })=>{
|
412
|
+
const { currentDocument: { schema } } = useDocumentContext.useDocumentContext('PublishAction');
|
376
413
|
const navigate = reactRouterDom.useNavigate();
|
377
414
|
const { toggleNotification } = strapiAdmin.useNotification();
|
378
415
|
const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
|
@@ -381,22 +418,31 @@ const transformData = (data)=>{
|
|
381
418
|
const { id } = reactRouterDom.useParams();
|
382
419
|
const { formatMessage } = reactIntl.useIntl();
|
383
420
|
const canPublish = DocumentRBAC.useDocumentRBAC('PublishAction', ({ canPublish })=>canPublish);
|
384
|
-
const { publish, isLoading } = useDocumentActions.useDocumentActions(
|
421
|
+
const { publish, isLoading } = useDocumentActions.useDocumentActions();
|
422
|
+
const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
385
423
|
const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = documents.useGetDraftRelationCountQuery();
|
386
424
|
const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React__namespace.useState(0);
|
387
425
|
const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React__namespace.useState(0);
|
388
|
-
const [{
|
389
|
-
const params = React__namespace.useMemo(()=>api.buildValidParams(query), [
|
390
|
-
query
|
391
|
-
]);
|
426
|
+
const [{ rawQuery }] = strapiAdmin.useQueryParams();
|
392
427
|
const modified = strapiAdmin.useForm('PublishAction', ({ modified })=>modified);
|
393
428
|
const setSubmitting = strapiAdmin.useForm('PublishAction', ({ setSubmitting })=>setSubmitting);
|
394
429
|
const isSubmitting = strapiAdmin.useForm('PublishAction', ({ isSubmitting })=>isSubmitting);
|
395
430
|
const validate = strapiAdmin.useForm('PublishAction', (state)=>state.validate);
|
396
431
|
const setErrors = strapiAdmin.useForm('PublishAction', (state)=>state.setErrors);
|
397
432
|
const formValues = strapiAdmin.useForm('PublishAction', ({ values })=>values);
|
398
|
-
const
|
399
|
-
|
433
|
+
const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
|
434
|
+
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
435
|
+
const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
|
436
|
+
const fromRelationModal = relationContext != undefined;
|
437
|
+
const dispatch = RelationModal.useRelationModal('PublishAction', (state)=>state.dispatch);
|
438
|
+
const fieldToConnect = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
|
439
|
+
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
440
|
+
const documentHistory = RelationModal.useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
|
441
|
+
const rootDocumentMeta = RelationModal.useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
|
442
|
+
const { currentDocumentMeta } = useDocumentContext.useDocumentContext('PublishAction');
|
443
|
+
const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
|
444
|
+
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
445
|
+
const idToPublish = currentDocumentMeta.documentId || id;
|
400
446
|
React__namespace.useEffect(()=>{
|
401
447
|
if (isErrorDraftRelations) {
|
402
448
|
toggleNotification({
|
@@ -460,7 +506,7 @@ const transformData = (data)=>{
|
|
460
506
|
collectionType,
|
461
507
|
model,
|
462
508
|
documentId,
|
463
|
-
params
|
509
|
+
params: currentDocumentMeta.params
|
464
510
|
});
|
465
511
|
if (error) {
|
466
512
|
throw error;
|
@@ -477,8 +523,18 @@ const transformData = (data)=>{
|
|
477
523
|
countDraftRelations,
|
478
524
|
collectionType,
|
479
525
|
model,
|
480
|
-
params
|
526
|
+
currentDocumentMeta.params
|
481
527
|
]);
|
528
|
+
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
529
|
+
const parentDocumentData = useDocument.useDocument({
|
530
|
+
documentId: parentDocumentMetaToUpdate?.documentId,
|
531
|
+
model: parentDocumentMetaToUpdate?.model,
|
532
|
+
collectionType: parentDocumentMetaToUpdate?.collectionType,
|
533
|
+
params: parentDocumentMetaToUpdate?.params
|
534
|
+
}, {
|
535
|
+
skip: !parentDocumentMetaToUpdate
|
536
|
+
});
|
537
|
+
const { getInitialFormValues } = useDocument.useDoc();
|
482
538
|
const isDocumentPublished = (document?.[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
|
483
539
|
if (!schema?.options?.draftAndPublish) {
|
484
540
|
return null;
|
@@ -499,21 +555,72 @@ const transformData = (data)=>{
|
|
499
555
|
});
|
500
556
|
return;
|
501
557
|
}
|
502
|
-
const isPublishingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
|
503
558
|
const res = await publish({
|
504
559
|
collectionType,
|
505
560
|
model,
|
506
561
|
documentId,
|
507
|
-
params:
|
562
|
+
params: currentDocumentMeta.params
|
508
563
|
}, transformData(formValues));
|
564
|
+
// Reset form if successful
|
565
|
+
if ('data' in res) {
|
566
|
+
resetForm();
|
567
|
+
}
|
509
568
|
if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
|
510
569
|
/**
|
511
570
|
* TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.
|
512
|
-
*/ if (
|
571
|
+
*/ if (idToPublish === 'create' && !fromRelationModal) {
|
513
572
|
navigate({
|
514
573
|
pathname: `../${collectionType}/${model}/${res.data.documentId}`,
|
515
574
|
search: rawQuery
|
516
575
|
});
|
576
|
+
} else if (fromRelationModal) {
|
577
|
+
const newRelation = {
|
578
|
+
documentId: res.data.documentId,
|
579
|
+
collectionType,
|
580
|
+
model,
|
581
|
+
params: currentDocumentMeta.params
|
582
|
+
};
|
583
|
+
/*
|
584
|
+
* Update, if needed, the parent relation with the newly published document.
|
585
|
+
* Check if in history we have the parent relation otherwise use the
|
586
|
+
* rootDocument
|
587
|
+
*/ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
|
588
|
+
const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
|
589
|
+
const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
|
590
|
+
const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
|
591
|
+
try {
|
592
|
+
const updateRes = await updateDocumentMutation({
|
593
|
+
collectionType: metaDocumentToUpdate.collectionType,
|
594
|
+
model: metaDocumentToUpdate.model,
|
595
|
+
documentId: metaDocumentToUpdate.collectionType !== collections.SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
|
596
|
+
params: metaDocumentToUpdate.params,
|
597
|
+
data: dataToUpdate
|
598
|
+
});
|
599
|
+
if ('error' in updateRes) {
|
600
|
+
toggleNotification({
|
601
|
+
type: 'danger',
|
602
|
+
message: formatAPIError(updateRes.error)
|
603
|
+
});
|
604
|
+
return;
|
605
|
+
}
|
606
|
+
} catch (err) {
|
607
|
+
toggleNotification({
|
608
|
+
type: 'danger',
|
609
|
+
message: formatMessage({
|
610
|
+
id: 'notification.error',
|
611
|
+
defaultMessage: 'An error occurred'
|
612
|
+
})
|
613
|
+
});
|
614
|
+
throw err;
|
615
|
+
}
|
616
|
+
}
|
617
|
+
dispatch({
|
618
|
+
type: 'GO_TO_CREATED_RELATION',
|
619
|
+
payload: {
|
620
|
+
document: newRelation,
|
621
|
+
shouldBypassConfirmation: true
|
622
|
+
}
|
623
|
+
});
|
517
624
|
}
|
518
625
|
} else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
519
626
|
setErrors(formatValidationErrors(res.error));
|
@@ -579,27 +686,44 @@ PublishAction.position = [
|
|
579
686
|
'preview',
|
580
687
|
'relation-modal'
|
581
688
|
];
|
582
|
-
const UpdateAction = ({ activeTab, documentId, model, collectionType
|
689
|
+
const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
583
690
|
const navigate = reactRouterDom.useNavigate();
|
584
691
|
const { toggleNotification } = strapiAdmin.useNotification();
|
585
692
|
const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
|
586
693
|
const cloneMatch = reactRouterDom.useMatch(router.CLONE_PATH);
|
587
694
|
const isCloning = cloneMatch !== null;
|
588
695
|
const { formatMessage } = reactIntl.useIntl();
|
589
|
-
const { create, update, clone, isLoading } = useDocumentActions.useDocumentActions(
|
590
|
-
const [{
|
591
|
-
const
|
592
|
-
|
593
|
-
]);
|
696
|
+
const { create, update, clone, isLoading } = useDocumentActions.useDocumentActions();
|
697
|
+
const [{ rawQuery }] = strapiAdmin.useQueryParams();
|
698
|
+
const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
699
|
+
const { getInitialFormValues } = useDocument.useDoc();
|
594
700
|
const isSubmitting = strapiAdmin.useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
|
595
701
|
const modified = strapiAdmin.useForm('UpdateAction', ({ modified })=>modified);
|
596
702
|
const setSubmitting = strapiAdmin.useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
|
597
703
|
const document = strapiAdmin.useForm('UpdateAction', ({ values })=>values);
|
598
704
|
const validate = strapiAdmin.useForm('UpdateAction', (state)=>state.validate);
|
599
705
|
const setErrors = strapiAdmin.useForm('UpdateAction', (state)=>state.setErrors);
|
600
|
-
const resetForm = strapiAdmin.useForm('
|
601
|
-
const
|
602
|
-
|
706
|
+
const resetForm = strapiAdmin.useForm('UpdateAction', ({ resetForm })=>resetForm);
|
707
|
+
const dispatch = RelationModal.useRelationModal('UpdateAction', (state)=>state.dispatch);
|
708
|
+
// need to discriminate if the update is coming from a relation modal or in the edit view
|
709
|
+
const relationContext = RelationModal.useRelationModal('UpdateAction', ()=>true, false);
|
710
|
+
const fieldToConnect = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
|
711
|
+
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
712
|
+
const documentHistory = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
|
713
|
+
const rootDocumentMeta = RelationModal.useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
|
714
|
+
const fromRelationModal = relationContext != undefined;
|
715
|
+
const { currentDocumentMeta } = useDocumentContext.useDocumentContext('UpdateAction');
|
716
|
+
const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
|
717
|
+
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
718
|
+
const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
|
719
|
+
const parentDocumentData = useDocument.useDocument({
|
720
|
+
documentId: parentDocumentMetaToUpdate?.documentId,
|
721
|
+
model: parentDocumentMetaToUpdate?.model,
|
722
|
+
collectionType: parentDocumentMetaToUpdate?.collectionType,
|
723
|
+
params: parentDocumentMetaToUpdate?.params
|
724
|
+
}, {
|
725
|
+
skip: !parentDocumentMetaToUpdate
|
726
|
+
});
|
603
727
|
const handleUpdate = React__namespace.useCallback(async ()=>{
|
604
728
|
setSubmitting(true);
|
605
729
|
try {
|
@@ -623,7 +747,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
|
|
623
747
|
const res = await clone({
|
624
748
|
model,
|
625
749
|
documentId: cloneMatch.params.origin,
|
626
|
-
params
|
750
|
+
params: currentDocumentMeta.params
|
627
751
|
}, transformData(document));
|
628
752
|
if ('data' in res) {
|
629
753
|
navigate({
|
@@ -636,12 +760,11 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
|
|
636
760
|
setErrors(formatValidationErrors(res.error));
|
637
761
|
}
|
638
762
|
} else if (documentId || collectionType === collections.SINGLE_TYPES) {
|
639
|
-
const isEditingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
|
640
763
|
const res = await update({
|
641
764
|
collectionType,
|
642
765
|
model,
|
643
766
|
documentId,
|
644
|
-
params:
|
767
|
+
params: currentDocumentMeta.params
|
645
768
|
}, transformData(document));
|
646
769
|
if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
647
770
|
setErrors(formatValidationErrors(res.error));
|
@@ -651,16 +774,67 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
|
|
651
774
|
} else {
|
652
775
|
const res = await create({
|
653
776
|
model,
|
654
|
-
params
|
777
|
+
params: currentDocumentMeta.params
|
655
778
|
}, transformData(document));
|
656
779
|
if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
780
|
+
if (fromRelationModal) {
|
781
|
+
const createdRelation = {
|
782
|
+
documentId: res.data.documentId,
|
783
|
+
collectionType,
|
784
|
+
model,
|
785
|
+
params: currentDocumentMeta.params
|
786
|
+
};
|
787
|
+
/*
|
788
|
+
* Update, if needed, the parent relation with the newly published document.
|
789
|
+
* Check if in history we have the parent relation otherwise use the
|
790
|
+
* rootDocument
|
791
|
+
*/ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
|
792
|
+
const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
|
793
|
+
const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
|
794
|
+
try {
|
795
|
+
const updateRes = await updateDocumentMutation({
|
796
|
+
collectionType: parentDocumentMetaToUpdate.collectionType,
|
797
|
+
model: parentDocumentMetaToUpdate.model,
|
798
|
+
documentId: parentDocumentMetaToUpdate.collectionType !== collections.SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
|
799
|
+
params: parentDocumentMetaToUpdate.params,
|
800
|
+
data: {
|
801
|
+
...dataToUpdate
|
802
|
+
}
|
803
|
+
});
|
804
|
+
if ('error' in updateRes) {
|
805
|
+
toggleNotification({
|
806
|
+
type: 'danger',
|
807
|
+
message: formatAPIError(updateRes.error)
|
808
|
+
});
|
809
|
+
return;
|
810
|
+
}
|
811
|
+
} catch (err) {
|
812
|
+
toggleNotification({
|
813
|
+
type: 'danger',
|
814
|
+
message: formatMessage({
|
815
|
+
id: 'notification.error',
|
816
|
+
defaultMessage: 'An error occurred'
|
817
|
+
})
|
818
|
+
});
|
819
|
+
throw err;
|
820
|
+
}
|
821
|
+
}
|
822
|
+
dispatch({
|
823
|
+
type: 'GO_TO_CREATED_RELATION',
|
824
|
+
payload: {
|
825
|
+
document: createdRelation,
|
826
|
+
shouldBypassConfirmation: true
|
827
|
+
}
|
828
|
+
});
|
829
|
+
} else {
|
830
|
+
navigate({
|
831
|
+
pathname: `../${res.data.documentId}`,
|
832
|
+
search: rawQuery
|
833
|
+
}, {
|
834
|
+
replace: true,
|
835
|
+
relative: 'path'
|
836
|
+
});
|
837
|
+
}
|
664
838
|
} else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
665
839
|
setErrors(formatValidationErrors(res.error));
|
666
840
|
}
|
@@ -672,30 +846,37 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview,
|
|
672
846
|
}
|
673
847
|
}
|
674
848
|
}, [
|
849
|
+
setSubmitting,
|
850
|
+
modified,
|
851
|
+
validate,
|
852
|
+
isCloning,
|
853
|
+
documentId,
|
854
|
+
collectionType,
|
855
|
+
toggleNotification,
|
856
|
+
formatMessage,
|
675
857
|
clone,
|
858
|
+
model,
|
676
859
|
cloneMatch?.params.origin,
|
677
|
-
collectionType,
|
678
|
-
create,
|
679
|
-
currentDocumentMeta.documentId,
|
680
860
|
currentDocumentMeta.params,
|
681
861
|
document,
|
682
|
-
documentId,
|
683
|
-
formatMessage,
|
684
|
-
formatValidationErrors,
|
685
|
-
isCloning,
|
686
|
-
model,
|
687
|
-
modified,
|
688
862
|
navigate,
|
689
|
-
onPreview,
|
690
|
-
params,
|
691
863
|
rawQuery,
|
692
|
-
resetForm,
|
693
|
-
rootDocumentMeta.documentId,
|
694
864
|
setErrors,
|
695
|
-
|
696
|
-
toggleNotification,
|
865
|
+
formatValidationErrors,
|
697
866
|
update,
|
698
|
-
|
867
|
+
resetForm,
|
868
|
+
create,
|
869
|
+
fromRelationModal,
|
870
|
+
fieldToConnect,
|
871
|
+
documentHistory,
|
872
|
+
parentDocumentMetaToUpdate,
|
873
|
+
dispatch,
|
874
|
+
getInitialFormValues,
|
875
|
+
parentDocumentData,
|
876
|
+
fieldToConnectUID,
|
877
|
+
updateDocumentMutation,
|
878
|
+
formatAPIError,
|
879
|
+
onPreview
|
699
880
|
]);
|
700
881
|
// Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
|
701
882
|
React__namespace.useEffect(()=>{
|