@strapi/content-manager 5.16.0 → 5.17.0-beta.0
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/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/pages/EditView/EditViewPage.js +11 -1
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +11 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +33 -47
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +34 -48
- package/dist/admin/pages/EditView/components/DocumentActions.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 +13 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +14 -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/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 +27 -3
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +27 -3
- 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/src/pages/EditView/utils/data.d.ts +19 -1
- package/dist/admin/src/utils/validation.d.ts +1 -0
- package/dist/admin/utils/validation.js +16 -5
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +16 -5
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1,7 +1,7 @@
|
|
|
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
7
|
import get from 'lodash/get';
|
|
@@ -9,7 +9,6 @@ import merge from 'lodash/merge';
|
|
|
9
9
|
import set from 'lodash/set';
|
|
10
10
|
import { useIntl } from 'react-intl';
|
|
11
11
|
import { useNavigate, useMatch, useParams } from 'react-router-dom';
|
|
12
|
-
import { styled } from 'styled-components';
|
|
13
12
|
import { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes.mjs';
|
|
14
13
|
import { SINGLE_TYPES } from '../../../constants/collections.mjs';
|
|
15
14
|
import { useDocumentRBAC } from '../../../features/DocumentRBAC.mjs';
|
|
@@ -21,6 +20,7 @@ import { LIST_PATH, CLONE_PATH } from '../../../router.mjs';
|
|
|
21
20
|
import { useGetDraftRelationCountQuery as useLazyGetDraftRelationCountQuery, useUpdateDocumentMutation } from '../../../services/documents.mjs';
|
|
22
21
|
import { isBaseQueryError, buildValidParams } from '../../../utils/api.mjs';
|
|
23
22
|
import { getTranslation } from '../../../utils/translations.mjs';
|
|
23
|
+
import { handleInvisibleAttributes } from '../utils/data.mjs';
|
|
24
24
|
import { useRelationModal } from './FormInputs/Relations/RelationModal.mjs';
|
|
25
25
|
|
|
26
26
|
const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
|
|
@@ -153,11 +153,6 @@ const DocumentActionButton = (action)=>{
|
|
|
153
153
|
]
|
|
154
154
|
});
|
|
155
155
|
};
|
|
156
|
-
const MenuItem = styled(Menu.Item)`
|
|
157
|
-
&:hover {
|
|
158
|
-
background: ${({ theme, isVariantDanger, isDisabled })=>isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};
|
|
159
|
-
}
|
|
160
|
-
`;
|
|
161
156
|
const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })=>{
|
|
162
157
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
163
158
|
const [dialogId, setDialogId] = React.useState(null);
|
|
@@ -219,27 +214,19 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
219
214
|
popoverPlacement: "bottom-end",
|
|
220
215
|
children: [
|
|
221
216
|
actions.map((action)=>{
|
|
222
|
-
return /*#__PURE__*/ jsx(
|
|
217
|
+
return /*#__PURE__*/ jsx(Menu.Item, {
|
|
223
218
|
disabled: action.disabled,
|
|
224
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),
|
|
225
220
|
display: "block",
|
|
226
|
-
|
|
227
|
-
|
|
221
|
+
variant: action.variant === 'danger' ? action.variant : 'default',
|
|
222
|
+
startIcon: action.icon,
|
|
228
223
|
children: /*#__PURE__*/ jsx(Flex, {
|
|
229
224
|
justifyContent: "space-between",
|
|
230
225
|
gap: 4,
|
|
231
|
-
children: /*#__PURE__*/
|
|
232
|
-
color: !action.disabled ? convertActionVariantToColor(action.variant) : 'inherit',
|
|
226
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
233
227
|
gap: 2,
|
|
234
228
|
tag: "span",
|
|
235
|
-
children:
|
|
236
|
-
/*#__PURE__*/ jsx(Flex, {
|
|
237
|
-
tag: "span",
|
|
238
|
-
color: !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit',
|
|
239
|
-
children: action.icon
|
|
240
|
-
}),
|
|
241
|
-
action.label
|
|
242
|
-
]
|
|
229
|
+
children: action.label
|
|
243
230
|
})
|
|
244
231
|
})
|
|
245
232
|
}, action.id);
|
|
@@ -267,30 +254,6 @@ const DocumentActionsMenu = ({ actions, children, label, variant = 'tertiary' })
|
|
|
267
254
|
]
|
|
268
255
|
});
|
|
269
256
|
};
|
|
270
|
-
const convertActionVariantToColor = (variant = 'secondary')=>{
|
|
271
|
-
switch(variant){
|
|
272
|
-
case 'danger':
|
|
273
|
-
return 'danger600';
|
|
274
|
-
case 'secondary':
|
|
275
|
-
return undefined;
|
|
276
|
-
case 'success':
|
|
277
|
-
return 'success600';
|
|
278
|
-
default:
|
|
279
|
-
return 'primary600';
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
const convertActionVariantToIconColor = (variant = 'secondary')=>{
|
|
283
|
-
switch(variant){
|
|
284
|
-
case 'danger':
|
|
285
|
-
return 'danger600';
|
|
286
|
-
case 'secondary':
|
|
287
|
-
return 'neutral500';
|
|
288
|
-
case 'success':
|
|
289
|
-
return 'success600';
|
|
290
|
-
default:
|
|
291
|
-
return 'primary600';
|
|
292
|
-
}
|
|
293
|
-
};
|
|
294
257
|
const DocumentActionConfirmDialog = ({ onClose, onCancel, onConfirm, title, content, isOpen, variant = 'secondary', loading })=>{
|
|
295
258
|
const { formatMessage } = useIntl();
|
|
296
259
|
const handleClose = async ()=>{
|
|
@@ -413,6 +376,7 @@ const transformData = (data)=>{
|
|
|
413
376
|
const setErrors = useForm('PublishAction', (state)=>state.setErrors);
|
|
414
377
|
const formValues = useForm('PublishAction', ({ values })=>values);
|
|
415
378
|
const resetForm = useForm('PublishAction', ({ resetForm })=>resetForm);
|
|
379
|
+
const { currentDocument: { components } } = useDocumentContext('PublishAction');
|
|
416
380
|
// need to discriminate if the publish is coming from a relation modal or in the edit view
|
|
417
381
|
const relationContext = useRelationModal('PublishAction', ()=>true, false);
|
|
418
382
|
const fromRelationModal = relationContext != undefined;
|
|
@@ -551,12 +515,16 @@ const transformData = (data)=>{
|
|
|
551
515
|
}
|
|
552
516
|
return;
|
|
553
517
|
}
|
|
518
|
+
const { data } = handleInvisibleAttributes(transformData(formValues), {
|
|
519
|
+
schema,
|
|
520
|
+
components
|
|
521
|
+
});
|
|
554
522
|
const res = await publish({
|
|
555
523
|
collectionType,
|
|
556
524
|
model,
|
|
557
525
|
documentId,
|
|
558
526
|
params: currentDocumentMeta.params
|
|
559
|
-
},
|
|
527
|
+
}, data);
|
|
560
528
|
// Reset form if successful
|
|
561
529
|
if ('data' in res) {
|
|
562
530
|
resetForm();
|
|
@@ -690,12 +658,14 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
690
658
|
const isCloning = cloneMatch !== null;
|
|
691
659
|
const { formatMessage } = useIntl();
|
|
692
660
|
const { create, update, clone, isLoading } = useDocumentActions();
|
|
661
|
+
const { currentDocument: { components } } = useDocumentContext('UpdateAction');
|
|
693
662
|
const [{ rawQuery }] = useQueryParams();
|
|
694
663
|
const onPreview = usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
|
|
695
664
|
const { getInitialFormValues } = useDoc();
|
|
696
665
|
const isSubmitting = useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
|
|
697
666
|
const modified = useForm('UpdateAction', ({ modified })=>modified);
|
|
698
667
|
const setSubmitting = useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
|
|
668
|
+
const initialValues = useForm('UpdateAction', ({ initialValues })=>initialValues);
|
|
699
669
|
const document = useForm('UpdateAction', ({ values })=>values);
|
|
700
670
|
const validate = useForm('UpdateAction', (state)=>state.validate);
|
|
701
671
|
const setErrors = useForm('UpdateAction', (state)=>state.setErrors);
|
|
@@ -703,6 +673,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
703
673
|
const dispatch = useRelationModal('UpdateAction', (state)=>state.dispatch);
|
|
704
674
|
// need to discriminate if the update is coming from a relation modal or in the edit view
|
|
705
675
|
const relationContext = useRelationModal('UpdateAction', ()=>true, false);
|
|
676
|
+
const relationalModalSchema = useRelationModal('UpdateAction', (state)=>state.currentDocument.schema, false);
|
|
706
677
|
const fieldToConnect = useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
|
|
707
678
|
const fieldToConnectUID = useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
|
708
679
|
const documentHistory = useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
|
|
@@ -720,6 +691,7 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
720
691
|
}, {
|
|
721
692
|
skip: !parentDocumentMetaToUpdate
|
|
722
693
|
});
|
|
694
|
+
const { schema } = useDoc();
|
|
723
695
|
const handleUpdate = React.useCallback(async ()=>{
|
|
724
696
|
setSubmitting(true);
|
|
725
697
|
try {
|
|
@@ -756,22 +728,32 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
756
728
|
setErrors(formatValidationErrors(res.error));
|
|
757
729
|
}
|
|
758
730
|
} else if (documentId || collectionType === SINGLE_TYPES) {
|
|
731
|
+
const { data } = handleInvisibleAttributes(transformData(document), {
|
|
732
|
+
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
733
|
+
initialValues,
|
|
734
|
+
components
|
|
735
|
+
});
|
|
759
736
|
const res = await update({
|
|
760
737
|
collectionType,
|
|
761
738
|
model,
|
|
762
739
|
documentId,
|
|
763
740
|
params: currentDocumentMeta.params
|
|
764
|
-
},
|
|
741
|
+
}, data);
|
|
765
742
|
if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
766
743
|
setErrors(formatValidationErrors(res.error));
|
|
767
744
|
} else {
|
|
768
745
|
resetForm();
|
|
769
746
|
}
|
|
770
747
|
} else {
|
|
748
|
+
const { data } = handleInvisibleAttributes(transformData(document), {
|
|
749
|
+
schema: fromRelationModal ? relationalModalSchema : schema,
|
|
750
|
+
initialValues,
|
|
751
|
+
components
|
|
752
|
+
});
|
|
771
753
|
const res = await create({
|
|
772
754
|
model,
|
|
773
755
|
params: currentDocumentMeta.params
|
|
774
|
-
},
|
|
756
|
+
}, data);
|
|
775
757
|
if ('data' in res && collectionType !== SINGLE_TYPES) {
|
|
776
758
|
if (fromRelationModal) {
|
|
777
759
|
const createdRelation = {
|
|
@@ -872,7 +854,11 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
|
872
854
|
fieldToConnectUID,
|
|
873
855
|
updateDocumentMutation,
|
|
874
856
|
formatAPIError,
|
|
875
|
-
onPreview
|
|
857
|
+
onPreview,
|
|
858
|
+
initialValues,
|
|
859
|
+
schema,
|
|
860
|
+
components,
|
|
861
|
+
relationalModalSchema
|
|
876
862
|
]);
|
|
877
863
|
// Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
|
|
878
864
|
React.useEffect(()=>{
|