@strapi/content-type-builder 5.50.0 → 5.50.1
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/AIChat/Chat.js +2 -4
- package/dist/admin/components/AIChat/Chat.js.map +1 -1
- package/dist/admin/components/AIChat/Chat.mjs +2 -4
- package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js +8 -3
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +8 -3
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.js +8 -2
- package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.mjs +8 -2
- package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +0 -3
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +0 -3
- package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +9 -7
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +9 -7
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
- package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
- package/dist/admin/components/AttributeIcon.js +1 -1
- package/dist/admin/components/AttributeIcon.js.map +1 -1
- package/dist/admin/components/AttributeIcon.mjs +1 -1
- package/dist/admin/components/AttributeIcon.mjs.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.js +3 -2
- package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
- package/dist/admin/components/BooleanDefaultValueSelect.mjs +3 -2
- package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
- package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.js +3 -3
- package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
- package/dist/admin/components/CTBSession/useCTBTracking.mjs +3 -3
- package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.js +3 -2
- package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
- package/dist/admin/components/CheckboxWithNumberField.mjs +3 -2
- package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +160 -162
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +160 -162
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
- package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +6 -5
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +6 -5
- package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
- package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +16 -4
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +16 -4
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +2 -2
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +2 -2
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
- package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
- package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
- package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js +91 -71
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +91 -70
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js +20 -17
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +20 -17
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +4 -6
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +4 -6
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +9 -6
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +9 -6
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js +3 -3
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs +3 -3
- package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.js +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.mjs +1 -1
- package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.js +2 -2
- package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
- package/dist/admin/components/FormModal/utils/relations.mjs +2 -2
- package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +13 -13
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +13 -13
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
- package/dist/admin/components/GenericInputs.js +24 -12
- package/dist/admin/components/GenericInputs.js.map +1 -1
- package/dist/admin/components/GenericInputs.mjs +24 -12
- package/dist/admin/components/GenericInputs.mjs.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
- package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
- package/dist/admin/components/PluralName.js.map +1 -1
- package/dist/admin/components/PluralName.mjs.map +1 -1
- package/dist/admin/components/Relation/Relation.js +3 -3
- package/dist/admin/components/Relation/Relation.js.map +1 -1
- package/dist/admin/components/Relation/Relation.mjs +3 -3
- package/dist/admin/components/Relation/Relation.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
- package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
- package/dist/admin/components/SelectCategory.js +6 -0
- package/dist/admin/components/SelectCategory.js.map +1 -1
- package/dist/admin/components/SelectCategory.mjs +6 -0
- package/dist/admin/components/SelectCategory.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js +1 -1
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs +1 -1
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/SingularName.js.map +1 -1
- package/dist/admin/components/SingularName.mjs.map +1 -1
- package/dist/admin/components/TabForm.js +50 -51
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs +51 -52
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +1 -2
- package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +1 -1
- package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +6 -2
- package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +1 -1
- package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +5 -5
- package/dist/admin/src/components/AllowedTypesSelect.d.ts +3 -3
- package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +3 -3
- package/dist/admin/src/components/BooleanRadioGroup.d.ts +2 -2
- package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
- package/dist/admin/src/components/CheckboxWithNumberField.d.ts +6 -4
- package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +3 -2
- package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +3 -2
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +13 -11
- package/dist/admin/src/components/DataManager/reducer.d.ts +14 -10
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +8 -8
- package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +9 -3
- package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +2 -1
- package/dist/admin/src/components/DraftAndPublishToggle.d.ts +1 -6
- package/dist/admin/src/components/DynamicZoneList.d.ts +2 -2
- package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +3 -2
- package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +3 -1
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +59 -26
- package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +12 -2
- package/dist/admin/src/components/FormModal/reducer.d.ts +104 -32
- package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +11 -1
- package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +8 -1
- package/dist/admin/src/components/FormModal/utils/relations.d.ts +2 -2
- package/dist/admin/src/components/FormModalHeader.d.ts +5 -8
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +2 -2
- package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +17 -1
- package/dist/admin/src/components/GenericInputs.d.ts +12 -7
- package/dist/admin/src/components/IconPicker/IconPicker.d.ts +2 -7
- package/dist/admin/src/components/PluralName.d.ts +6 -14
- package/dist/admin/src/components/Relation/Relation.d.ts +12 -3
- package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +3 -2
- package/dist/admin/src/components/SelectCategory.d.ts +3 -12
- package/dist/admin/src/components/SelectComponent.d.ts +8 -7
- package/dist/admin/src/components/SingularName.d.ts +5 -8
- package/dist/admin/src/components/TabForm.d.ts +38 -7
- package/dist/admin/src/types.d.ts +20 -12
- package/dist/admin/src/utils/conditions.d.ts +13 -4
- package/dist/admin/src/utils/formAPI.d.ts +38 -33
- package/dist/admin/src/utils/getRelationType.d.ts +1 -1
- package/dist/admin/src/utils/parseNumberInputValue.d.ts +1 -0
- package/dist/admin/utils/conditions.js +38 -28
- package/dist/admin/utils/conditions.js.map +1 -1
- package/dist/admin/utils/conditions.mjs +37 -28
- package/dist/admin/utils/conditions.mjs.map +1 -1
- package/dist/admin/utils/formAPI.js +9 -6
- package/dist/admin/utils/formAPI.js.map +1 -1
- package/dist/admin/utils/formAPI.mjs +9 -6
- package/dist/admin/utils/formAPI.mjs.map +1 -1
- package/dist/admin/utils/getRelationType.js +3 -0
- package/dist/admin/utils/getRelationType.js.map +1 -1
- package/dist/admin/utils/getRelationType.mjs +3 -0
- package/dist/admin/utils/getRelationType.mjs.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.js +6 -4
- package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
- package/dist/admin/utils/getYupInnerErrors.mjs +6 -4
- package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
- package/dist/admin/utils/parseNumberInputValue.js +15 -0
- package/dist/admin/utils/parseNumberInputValue.js.map +1 -0
- package/dist/admin/utils/parseNumberInputValue.mjs +13 -0
- package/dist/admin/utils/parseNumberInputValue.mjs.map +1 -0
- package/dist/server/controllers/validation/relations.js +1 -1
- package/dist/server/controllers/validation/relations.js.map +1 -1
- package/dist/server/controllers/validation/relations.mjs +1 -1
- package/dist/server/controllers/validation/relations.mjs.map +1 -1
- package/dist/server/controllers/validation/types.js +4 -3
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/controllers/validation/types.mjs +4 -3
- package/dist/server/controllers/validation/types.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -6,7 +6,6 @@ import { Modal, Dialog, Box, Typography, Tabs, Flex, Divider, Button } from '@st
|
|
|
6
6
|
import get from 'lodash/get';
|
|
7
7
|
import has from 'lodash/has';
|
|
8
8
|
import isEqual from 'lodash/isEqual';
|
|
9
|
-
import pick from 'lodash/pick';
|
|
10
9
|
import set from 'lodash/set';
|
|
11
10
|
import { useIntl } from 'react-intl';
|
|
12
11
|
import { useDispatch, useSelector, shallowEqual } from 'react-redux';
|
|
@@ -16,6 +15,7 @@ import * as yup from 'yup';
|
|
|
16
15
|
import { pluginId } from '../../pluginId.mjs';
|
|
17
16
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
18
17
|
import { isAllowedContentTypesForRelations } from '../../utils/isAllowedContentTypesForRelations.mjs';
|
|
18
|
+
import { getFirstVisibleConditionEntry } from '../../utils/conditions.mjs';
|
|
19
19
|
import { findAttribute } from '../../utils/findAttribute.mjs';
|
|
20
20
|
import { getYupInnerErrors } from '../../utils/getYupInnerErrors.mjs';
|
|
21
21
|
import { AllowedTypesSelect } from '../AllowedTypesSelect.mjs';
|
|
@@ -56,6 +56,21 @@ const FormComponent = styled.form`
|
|
|
56
56
|
overflow: auto;
|
|
57
57
|
`;
|
|
58
58
|
const selectState = (state)=>state['content-type-builder_formModal'] || initialState;
|
|
59
|
+
const toStringValue = (value)=>typeof value === 'string' ? value : '';
|
|
60
|
+
const toOptionalStringValue = (value)=>{
|
|
61
|
+
if (typeof value !== 'string' || value === '') {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
};
|
|
66
|
+
const toBooleanValue = (value)=>typeof value === 'boolean' ? value : false;
|
|
67
|
+
const toContentTypeKind = (value)=>value === 'singleType' ? 'singleType' : 'collectionType';
|
|
68
|
+
const toRecordValue = (value)=>typeof value === 'object' && value !== null ? value : {};
|
|
69
|
+
const toComponentDraft = (value)=>({
|
|
70
|
+
category: toStringValue(value?.category),
|
|
71
|
+
displayName: toStringValue(value?.displayName),
|
|
72
|
+
icon: toOptionalStringValue(value?.icon)
|
|
73
|
+
});
|
|
59
74
|
const FormModal = ()=>{
|
|
60
75
|
const { onCloseModal, onNavigateToChooseAttributeModal, onNavigateToAddCompoToDZModal, onNavigateToCreateComponentStep2, actionType, attributeName, attributeType, customFieldUid, dynamicZoneTarget, forTarget, modalType, isOpen, kind, step, targetUid, showBackLink, activeTab, setActiveTab } = useFormModalNavigation();
|
|
61
76
|
const getPlugin = useStrapiApp('FormModal', (state)=>state.getPlugin);
|
|
@@ -85,20 +100,22 @@ const FormModal = ()=>{
|
|
|
85
100
|
const oldEnum = initialData.enum;
|
|
86
101
|
const newEnum = modifiedData.enum;
|
|
87
102
|
// Get all attributes from the content type schema
|
|
88
|
-
const contentTypeAttributes = type?.attributes
|
|
103
|
+
const contentTypeAttributes = type?.attributes ?? [];
|
|
89
104
|
// Find all fields that reference this field in their conditions
|
|
90
105
|
const referencedFields = contentTypeAttributes.filter((attr)=>{
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const
|
|
106
|
+
const conditionEntry = getFirstVisibleConditionEntry(attr.conditions);
|
|
107
|
+
if (conditionEntry === null) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const { fieldVar, value } = conditionEntry;
|
|
96
111
|
// Check if this condition references our field
|
|
97
|
-
if (fieldVar.var !== oldName)
|
|
112
|
+
if (fieldVar.var !== oldName) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
98
115
|
// If it's an enum field, also check if the value is being deleted/changed
|
|
99
|
-
if (oldEnum && newEnum) {
|
|
116
|
+
if (oldEnum !== undefined && newEnum !== undefined) {
|
|
100
117
|
const deletedOrChangedValues = oldEnum.filter((oldValue)=>!newEnum.includes(oldValue));
|
|
101
|
-
return deletedOrChangedValues.includes(value);
|
|
118
|
+
return typeof value === 'string' && deletedOrChangedValues.includes(value);
|
|
102
119
|
}
|
|
103
120
|
return true;
|
|
104
121
|
});
|
|
@@ -134,10 +151,10 @@ const FormModal = ()=>{
|
|
|
134
151
|
data: {
|
|
135
152
|
displayName: type.info.displayName,
|
|
136
153
|
draftAndPublish: type.options?.draftAndPublish,
|
|
137
|
-
kind: '
|
|
154
|
+
kind: type.modelType === 'contentType' ? type.kind : 'collectionType',
|
|
138
155
|
pluginOptions: type.pluginOptions,
|
|
139
|
-
pluralName: '
|
|
140
|
-
singularName: '
|
|
156
|
+
pluralName: type.modelType === 'contentType' ? type.info.pluralName : '',
|
|
157
|
+
singularName: type.modelType === 'contentType' ? type.info.singularName : ''
|
|
141
158
|
}
|
|
142
159
|
}));
|
|
143
160
|
}
|
|
@@ -146,7 +163,7 @@ const FormModal = ()=>{
|
|
|
146
163
|
dispatch(actions.setDataToEdit({
|
|
147
164
|
data: {
|
|
148
165
|
displayName: type.info.displayName,
|
|
149
|
-
category: '
|
|
166
|
+
category: type.modelType === 'component' ? type.category : '',
|
|
150
167
|
icon: type.info.icon
|
|
151
168
|
}
|
|
152
169
|
}));
|
|
@@ -193,10 +210,10 @@ const FormModal = ()=>{
|
|
|
193
210
|
}));
|
|
194
211
|
} else {
|
|
195
212
|
dispatch(actions.setCustomFieldDataSchema({
|
|
196
|
-
customField:
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
213
|
+
customField: {
|
|
214
|
+
type: customField?.type ?? '',
|
|
215
|
+
options: customField?.options
|
|
216
|
+
},
|
|
200
217
|
isEditing: false,
|
|
201
218
|
modifiedDataToSetForEditing: attributeToEdit,
|
|
202
219
|
uid: type.uid
|
|
@@ -256,7 +273,7 @@ const FormModal = ()=>{
|
|
|
256
273
|
// Check form validity for component
|
|
257
274
|
// This is happening when the user click on the link from the left menu
|
|
258
275
|
} else if (isCreatingComponent) {
|
|
259
|
-
schema = forms.component.schema(Object.keys(components), modifiedData.category
|
|
276
|
+
schema = forms.component.schema(Object.keys(components), toStringValue(modifiedData.category), reservedNames, actionType === 'edit', components, toStringValue(modifiedData.displayName), type?.uid ?? null);
|
|
260
277
|
} else if (isCreatingCustomFieldAttribute) {
|
|
261
278
|
schema = forms.customField.schema({
|
|
262
279
|
schemaAttributes: get(type, [
|
|
@@ -276,16 +293,16 @@ const FormModal = ()=>{
|
|
|
276
293
|
// Since we temporarily store the component info in another object
|
|
277
294
|
// The data is set in the componentToCreate key
|
|
278
295
|
} else if (isComponentAttribute && isCreatingComponentFromAView && isInFirstComponentStep) {
|
|
279
|
-
schema = forms.component.schema(Object.keys(components), get(modifiedData, 'componentToCreate.category', ''), reservedNames, actionType === 'edit', components, modifiedData.componentToCreate
|
|
296
|
+
schema = forms.component.schema(Object.keys(components), toStringValue(get(modifiedData, 'componentToCreate.category', '')), reservedNames, actionType === 'edit', components, toStringValue(modifiedData.componentToCreate?.displayName));
|
|
280
297
|
// Check form validity for creating a 'common attribute'
|
|
281
298
|
// We need to make sure that it is independent from the step
|
|
282
299
|
} else if (isCreatingAttribute && !isInFirstComponentStep) {
|
|
283
|
-
const
|
|
300
|
+
const computedAttributeType = attributeType === 'relation' ? 'relation' : modifiedData.type;
|
|
284
301
|
let alreadyTakenTargetContentTypeAttributes = [];
|
|
285
|
-
if (
|
|
286
|
-
const targetContentTypeUID = get(modifiedData, [
|
|
302
|
+
if (computedAttributeType === 'relation') {
|
|
303
|
+
const targetContentTypeUID = toStringValue(get(modifiedData, [
|
|
287
304
|
'target'
|
|
288
|
-
],
|
|
305
|
+
], ''));
|
|
289
306
|
const targetContentTypeAttributes = get(contentTypes, [
|
|
290
307
|
targetContentTypeUID,
|
|
291
308
|
'attributes'
|
|
@@ -302,7 +319,7 @@ const FormModal = ()=>{
|
|
|
302
319
|
return attrName !== initialData.targetAttribute;
|
|
303
320
|
});
|
|
304
321
|
}
|
|
305
|
-
schema = forms.attribute.schema(type,
|
|
322
|
+
schema = forms.attribute.schema(type, computedAttributeType ?? 'string', reservedNames, alreadyTakenTargetContentTypeAttributes, {
|
|
306
323
|
modifiedData,
|
|
307
324
|
initialData
|
|
308
325
|
}, ctbFormsAPI);
|
|
@@ -311,7 +328,7 @@ const FormModal = ()=>{
|
|
|
311
328
|
// in step 1 of the add component (modalType=attribute&attributeType=component) but not creating a component
|
|
312
329
|
// eslint-disable-next-line no-lonely-if
|
|
313
330
|
if (isInFirstComponentStep && isCreatingComponentFromAView) {
|
|
314
|
-
schema = forms.component.schema(Object.keys(components), get(modifiedData, 'componentToCreate.category', ''), reservedNames, actionType === 'edit', components, modifiedData.componentToCreate
|
|
331
|
+
schema = forms.component.schema(Object.keys(components), toStringValue(get(modifiedData, 'componentToCreate.category', '')), reservedNames, actionType === 'edit', components, toStringValue(modifiedData.componentToCreate?.displayName));
|
|
315
332
|
} else {
|
|
316
333
|
// The form is valid
|
|
317
334
|
// The case here is being in the addComponentToDynamicZone modal and not creating a component
|
|
@@ -322,7 +339,7 @@ const FormModal = ()=>{
|
|
|
322
339
|
abortEarly: false
|
|
323
340
|
});
|
|
324
341
|
};
|
|
325
|
-
const handleChange = React.useCallback(({ target: { name, value
|
|
342
|
+
const handleChange = React.useCallback(({ target: { name, value } })=>{
|
|
326
343
|
const namesThatCanResetToNullValue = [
|
|
327
344
|
'enumName',
|
|
328
345
|
'max',
|
|
@@ -337,9 +354,9 @@ const FormModal = ()=>{
|
|
|
337
354
|
val = null;
|
|
338
355
|
} else if (name === 'enum') {
|
|
339
356
|
// For enum values, ensure we're working with an array
|
|
340
|
-
val = Array.isArray(value) ? value : [
|
|
357
|
+
val = Array.isArray(value) ? value : typeof value === 'string' ? [
|
|
341
358
|
value
|
|
342
|
-
];
|
|
359
|
+
] : [];
|
|
343
360
|
} else {
|
|
344
361
|
val = value;
|
|
345
362
|
}
|
|
@@ -379,11 +396,11 @@ const FormModal = ()=>{
|
|
|
379
396
|
createSchema({
|
|
380
397
|
data: {
|
|
381
398
|
kind,
|
|
382
|
-
displayName: modifiedData.displayName,
|
|
383
|
-
draftAndPublish: modifiedData.draftAndPublish,
|
|
384
|
-
pluginOptions: modifiedData.pluginOptions,
|
|
385
|
-
singularName: modifiedData.singularName,
|
|
386
|
-
pluralName: modifiedData.pluralName
|
|
399
|
+
displayName: toStringValue(modifiedData.displayName),
|
|
400
|
+
draftAndPublish: toBooleanValue(modifiedData.draftAndPublish),
|
|
401
|
+
pluginOptions: toRecordValue(modifiedData.pluginOptions),
|
|
402
|
+
singularName: toStringValue(modifiedData.singularName),
|
|
403
|
+
pluralName: toStringValue(modifiedData.pluralName)
|
|
387
404
|
},
|
|
388
405
|
uid
|
|
389
406
|
});
|
|
@@ -401,10 +418,10 @@ const FormModal = ()=>{
|
|
|
401
418
|
await updateSchema({
|
|
402
419
|
uid: contentType.uid,
|
|
403
420
|
data: {
|
|
404
|
-
displayName: modifiedData.displayName,
|
|
405
|
-
kind: modifiedData.kind,
|
|
406
|
-
draftAndPublish: modifiedData.draftAndPublish,
|
|
407
|
-
pluginOptions: modifiedData.pluginOptions
|
|
421
|
+
displayName: toStringValue(modifiedData.displayName),
|
|
422
|
+
kind: toContentTypeKind(modifiedData.kind),
|
|
423
|
+
draftAndPublish: toBooleanValue(modifiedData.draftAndPublish),
|
|
424
|
+
pluginOptions: toRecordValue(modifiedData.pluginOptions)
|
|
408
425
|
}
|
|
409
426
|
});
|
|
410
427
|
} else {
|
|
@@ -421,38 +438,39 @@ const FormModal = ()=>{
|
|
|
421
438
|
} else if (modalType === 'component') {
|
|
422
439
|
if (isCreating) {
|
|
423
440
|
// Create the component schema
|
|
424
|
-
const
|
|
425
|
-
const
|
|
441
|
+
const componentCategory = toStringValue(modifiedData.category);
|
|
442
|
+
const componentDisplayName = toStringValue(modifiedData.displayName);
|
|
443
|
+
const componentUid = createComponentUid(componentDisplayName, componentCategory);
|
|
426
444
|
createComponentSchema({
|
|
427
445
|
data: {
|
|
428
|
-
displayName:
|
|
429
|
-
icon:
|
|
446
|
+
displayName: componentDisplayName,
|
|
447
|
+
icon: toOptionalStringValue(modifiedData.icon)
|
|
430
448
|
},
|
|
431
449
|
uid: componentUid,
|
|
432
|
-
componentCategory
|
|
450
|
+
componentCategory
|
|
433
451
|
});
|
|
434
452
|
// Redirect the user to the created component
|
|
435
453
|
navigate({
|
|
436
|
-
pathname: `/plugins/${pluginId}/component-categories/${
|
|
454
|
+
pathname: `/plugins/${pluginId}/component-categories/${componentCategory}/${componentUid}`
|
|
437
455
|
});
|
|
438
456
|
onCloseModal();
|
|
439
457
|
return;
|
|
440
458
|
} else {
|
|
441
459
|
updateComponentSchema({
|
|
442
460
|
data: {
|
|
443
|
-
icon: modifiedData.icon,
|
|
444
|
-
displayName: modifiedData.displayName
|
|
461
|
+
icon: toOptionalStringValue(modifiedData.icon),
|
|
462
|
+
displayName: toStringValue(modifiedData.displayName)
|
|
445
463
|
},
|
|
446
464
|
componentUID: targetUid
|
|
447
465
|
});
|
|
448
466
|
if (type.status === 'NEW') {
|
|
449
|
-
const componentUid = createComponentUid(modifiedData.displayName, modifiedData.category);
|
|
467
|
+
const componentUid = createComponentUid(toStringValue(modifiedData.displayName), toStringValue(modifiedData.category));
|
|
450
468
|
updateComponentUid({
|
|
451
469
|
componentUID: targetUid,
|
|
452
470
|
newComponentUID: componentUid
|
|
453
471
|
});
|
|
454
472
|
navigate({
|
|
455
|
-
pathname: `/plugins/${pluginId}/component-categories/${modifiedData.category}/${componentUid}`
|
|
473
|
+
pathname: `/plugins/${pluginId}/component-categories/${toStringValue(modifiedData.category)}/${componentUid}`
|
|
456
474
|
});
|
|
457
475
|
}
|
|
458
476
|
// Close the modal
|
|
@@ -467,7 +485,7 @@ const FormModal = ()=>{
|
|
|
467
485
|
},
|
|
468
486
|
forTarget,
|
|
469
487
|
targetUid,
|
|
470
|
-
name: initialData.name
|
|
488
|
+
name: toStringValue(initialData.name)
|
|
471
489
|
};
|
|
472
490
|
if (actionType === 'edit') {
|
|
473
491
|
editCustomFieldAttribute(customFieldAttributeUpdate);
|
|
@@ -498,7 +516,7 @@ const FormModal = ()=>{
|
|
|
498
516
|
attributeToSet: modifiedData,
|
|
499
517
|
forTarget,
|
|
500
518
|
targetUid,
|
|
501
|
-
name: initialData.name
|
|
519
|
+
name: toStringValue(initialData.name)
|
|
502
520
|
});
|
|
503
521
|
}
|
|
504
522
|
// Adding a component to a dynamiczone is not the same logic as creating a simple field
|
|
@@ -508,7 +526,7 @@ const FormModal = ()=>{
|
|
|
508
526
|
dispatch(actions.resetPropsAndSetTheFormForAddingACompoToADz());
|
|
509
527
|
setActiveTab('basic');
|
|
510
528
|
onNavigateToAddCompoToDZModal({
|
|
511
|
-
dynamicZoneTarget: modifiedData.name
|
|
529
|
+
dynamicZoneTarget: toStringValue(modifiedData.name)
|
|
512
530
|
});
|
|
513
531
|
} else {
|
|
514
532
|
onCloseModal();
|
|
@@ -528,7 +546,7 @@ const FormModal = ()=>{
|
|
|
528
546
|
attributeToSet: modifiedData,
|
|
529
547
|
forTarget,
|
|
530
548
|
targetUid,
|
|
531
|
-
name: initialData.name
|
|
549
|
+
name: toStringValue(initialData.name)
|
|
532
550
|
});
|
|
533
551
|
}
|
|
534
552
|
if (shouldContinue) {
|
|
@@ -584,7 +602,7 @@ const FormModal = ()=>{
|
|
|
584
602
|
attributeToSet: attributeData,
|
|
585
603
|
forTarget,
|
|
586
604
|
targetUid,
|
|
587
|
-
name: initialData.name
|
|
605
|
+
name: toStringValue(initialData.name)
|
|
588
606
|
});
|
|
589
607
|
}
|
|
590
608
|
if (shouldContinue) {
|
|
@@ -618,19 +636,19 @@ const FormModal = ()=>{
|
|
|
618
636
|
// Step 2 of creating a component (which is setting the attribute name in the parent's schema)
|
|
619
637
|
}
|
|
620
638
|
// We are destructuring because the modifiedData object doesn't have the appropriate format to create a field
|
|
621
|
-
const
|
|
639
|
+
const draftComponent = toComponentDraft(componentToCreate);
|
|
622
640
|
// Create a the component temp UID
|
|
623
641
|
// This could be refactored but I think it's more understandable to separate the logic
|
|
624
|
-
const componentUid = createComponentUid(
|
|
642
|
+
const componentUid = createComponentUid(draftComponent.displayName, draftComponent.category);
|
|
625
643
|
// Create the component first and add it to the components data
|
|
626
644
|
createComponentSchema({
|
|
627
645
|
// Component data
|
|
628
646
|
data: {
|
|
629
|
-
icon:
|
|
630
|
-
displayName:
|
|
647
|
+
icon: draftComponent.icon,
|
|
648
|
+
displayName: draftComponent.displayName
|
|
631
649
|
},
|
|
632
650
|
uid: componentUid,
|
|
633
|
-
componentCategory: category
|
|
651
|
+
componentCategory: draftComponent.category
|
|
634
652
|
});
|
|
635
653
|
// Add the field to the schema
|
|
636
654
|
addAttribute({
|
|
@@ -653,13 +671,16 @@ const FormModal = ()=>{
|
|
|
653
671
|
// The modal is addComponentToDynamicZone
|
|
654
672
|
if (isInFirstComponentStep) {
|
|
655
673
|
if (isCreatingComponentFromAView) {
|
|
656
|
-
const
|
|
657
|
-
const componentUid = createComponentUid(
|
|
674
|
+
const draftComponent = toComponentDraft(modifiedData.componentToCreate);
|
|
675
|
+
const componentUid = createComponentUid(draftComponent.displayName, draftComponent.category);
|
|
658
676
|
// Create the component first and add it to the components data
|
|
659
677
|
createComponentSchema({
|
|
660
|
-
data:
|
|
678
|
+
data: {
|
|
679
|
+
displayName: draftComponent.displayName,
|
|
680
|
+
icon: draftComponent.icon
|
|
681
|
+
},
|
|
661
682
|
uid: componentUid,
|
|
662
|
-
componentCategory: category
|
|
683
|
+
componentCategory: draftComponent.category
|
|
663
684
|
});
|
|
664
685
|
// Add the created component to the DZ
|
|
665
686
|
// We don't want to remove the old ones
|
|
@@ -683,7 +704,7 @@ const FormModal = ()=>{
|
|
|
683
704
|
forTarget,
|
|
684
705
|
targetUid,
|
|
685
706
|
dynamicZoneTarget,
|
|
686
|
-
newComponents: modifiedData.components
|
|
707
|
+
newComponents: modifiedData.components ?? []
|
|
687
708
|
});
|
|
688
709
|
onCloseModal();
|
|
689
710
|
}
|
|
@@ -873,7 +894,7 @@ const FormModal = ()=>{
|
|
|
873
894
|
/*#__PURE__*/ jsx(Dialog.Trigger, {}),
|
|
874
895
|
/*#__PURE__*/ jsx(ConfirmDialog, {
|
|
875
896
|
onConfirm: ()=>{
|
|
876
|
-
if (pendingSubmit) {
|
|
897
|
+
if (pendingSubmit !== null) {
|
|
877
898
|
const { e, shouldContinue } = pendingSubmit;
|
|
878
899
|
setShowWarningDialog(false);
|
|
879
900
|
setPendingSubmit(null);
|
|
@@ -886,12 +907,12 @@ const FormModal = ()=>{
|
|
|
886
907
|
},
|
|
887
908
|
children: (()=>{
|
|
888
909
|
const referencedFields = checkFieldNameChanges();
|
|
889
|
-
if (
|
|
910
|
+
if (referencedFields === false) return null;
|
|
890
911
|
const fieldNames = referencedFields.map((field)=>field.name).join(', ');
|
|
891
|
-
const
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
912
|
+
const oldEnum = initialData.enum;
|
|
913
|
+
const newEnum = modifiedData.enum;
|
|
914
|
+
const isEnum = Array.isArray(oldEnum) && Array.isArray(newEnum);
|
|
915
|
+
if (isEnum === true) {
|
|
895
916
|
const deletedOrChangedValues = oldEnum.filter((value)=>!newEnum.includes(value));
|
|
896
917
|
return /*#__PURE__*/ jsx(Box, {
|
|
897
918
|
children: /*#__PURE__*/ jsxs(Typography, {
|
|
@@ -979,7 +1000,7 @@ const FormModal = ()=>{
|
|
|
979
1000
|
actionType: actionType,
|
|
980
1001
|
forTarget: forTarget,
|
|
981
1002
|
kind: kind,
|
|
982
|
-
step: step,
|
|
1003
|
+
step: step ?? undefined,
|
|
983
1004
|
modalType: modalType,
|
|
984
1005
|
attributeType: attributeType,
|
|
985
1006
|
attributeName: attributeName,
|