@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.
Files changed (227) hide show
  1. package/dist/admin/components/AIChat/Chat.js +2 -4
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +2 -4
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
  6. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
  8. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/components/Messages/Message.js +8 -3
  10. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  11. package/dist/admin/components/AIChat/components/Messages/Message.mjs +8 -3
  12. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/lib/aiClient.js +8 -2
  14. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
  15. package/dist/admin/components/AIChat/lib/aiClient.mjs +8 -2
  16. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +0 -3
  18. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
  19. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +0 -3
  20. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +9 -7
  22. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  23. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +9 -7
  24. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  25. package/dist/admin/components/AIChat/providers/SchemaProvider.js +1 -1
  26. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  27. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +1 -1
  28. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  29. package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
  30. package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
  31. package/dist/admin/components/AttributeIcon.js +1 -1
  32. package/dist/admin/components/AttributeIcon.js.map +1 -1
  33. package/dist/admin/components/AttributeIcon.mjs +1 -1
  34. package/dist/admin/components/AttributeIcon.mjs.map +1 -1
  35. package/dist/admin/components/BooleanDefaultValueSelect.js +3 -2
  36. package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
  37. package/dist/admin/components/BooleanDefaultValueSelect.mjs +3 -2
  38. package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
  39. package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
  40. package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
  41. package/dist/admin/components/CTBSession/useCTBTracking.js +3 -3
  42. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
  43. package/dist/admin/components/CTBSession/useCTBTracking.mjs +3 -3
  44. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
  45. package/dist/admin/components/CheckboxWithNumberField.js +3 -2
  46. package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
  47. package/dist/admin/components/CheckboxWithNumberField.mjs +3 -2
  48. package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
  49. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  50. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  51. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +160 -162
  52. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  53. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +160 -162
  54. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  55. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +1 -1
  56. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  57. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +1 -1
  58. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  59. package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
  60. package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
  61. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +6 -5
  62. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
  63. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +6 -5
  64. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
  65. package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
  66. package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
  67. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  68. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  69. package/dist/admin/components/DataManager/DataManagerProvider.js +16 -4
  70. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  71. package/dist/admin/components/DataManager/DataManagerProvider.mjs +16 -4
  72. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  73. package/dist/admin/components/DataManager/reducer.js +2 -2
  74. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  75. package/dist/admin/components/DataManager/reducer.mjs +2 -2
  76. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  77. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
  78. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
  79. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
  80. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
  81. package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
  82. package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
  83. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  84. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  85. package/dist/admin/components/FormModal/FormModal.js +91 -71
  86. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  87. package/dist/admin/components/FormModal/FormModal.mjs +91 -70
  88. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  89. package/dist/admin/components/FormModal/attributes/ConditionForm.js +20 -17
  90. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  91. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +20 -17
  92. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  93. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  94. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  95. package/dist/admin/components/FormModal/forms/forms.js +4 -6
  96. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  97. package/dist/admin/components/FormModal/forms/forms.mjs +4 -6
  98. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  99. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  100. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  101. package/dist/admin/components/FormModal/reducer.js +9 -6
  102. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  103. package/dist/admin/components/FormModal/reducer.mjs +9 -6
  104. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  105. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js +3 -3
  106. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
  107. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs +3 -3
  108. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
  109. package/dist/admin/components/FormModal/utils/getFormInputNames.js +1 -1
  110. package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
  111. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs +1 -1
  112. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
  113. package/dist/admin/components/FormModal/utils/relations.js +2 -2
  114. package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
  115. package/dist/admin/components/FormModal/utils/relations.mjs +2 -2
  116. package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
  117. package/dist/admin/components/FormModalHeader.js.map +1 -1
  118. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  119. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
  120. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
  121. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +13 -13
  122. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  123. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +13 -13
  124. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  125. package/dist/admin/components/GenericInputs.js +24 -12
  126. package/dist/admin/components/GenericInputs.js.map +1 -1
  127. package/dist/admin/components/GenericInputs.mjs +24 -12
  128. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  129. package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
  130. package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
  131. package/dist/admin/components/PluralName.js.map +1 -1
  132. package/dist/admin/components/PluralName.mjs.map +1 -1
  133. package/dist/admin/components/Relation/Relation.js +3 -3
  134. package/dist/admin/components/Relation/Relation.js.map +1 -1
  135. package/dist/admin/components/Relation/Relation.mjs +3 -3
  136. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  137. package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
  138. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  139. package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
  140. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  141. package/dist/admin/components/SelectCategory.js +6 -0
  142. package/dist/admin/components/SelectCategory.js.map +1 -1
  143. package/dist/admin/components/SelectCategory.mjs +6 -0
  144. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  145. package/dist/admin/components/SelectComponent.js +1 -1
  146. package/dist/admin/components/SelectComponent.js.map +1 -1
  147. package/dist/admin/components/SelectComponent.mjs +1 -1
  148. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  149. package/dist/admin/components/SingularName.js.map +1 -1
  150. package/dist/admin/components/SingularName.mjs.map +1 -1
  151. package/dist/admin/components/TabForm.js +50 -51
  152. package/dist/admin/components/TabForm.js.map +1 -1
  153. package/dist/admin/components/TabForm.mjs +51 -52
  154. package/dist/admin/components/TabForm.mjs.map +1 -1
  155. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +1 -2
  156. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +1 -1
  157. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +6 -2
  158. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +1 -1
  159. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +5 -5
  160. package/dist/admin/src/components/AllowedTypesSelect.d.ts +3 -3
  161. package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +3 -3
  162. package/dist/admin/src/components/BooleanRadioGroup.d.ts +2 -2
  163. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
  164. package/dist/admin/src/components/CheckboxWithNumberField.d.ts +6 -4
  165. package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +3 -2
  166. package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +3 -2
  167. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +13 -11
  168. package/dist/admin/src/components/DataManager/reducer.d.ts +14 -10
  169. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +8 -8
  170. package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +9 -3
  171. package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +2 -1
  172. package/dist/admin/src/components/DraftAndPublishToggle.d.ts +1 -6
  173. package/dist/admin/src/components/DynamicZoneList.d.ts +2 -2
  174. package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +3 -2
  175. package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +3 -1
  176. package/dist/admin/src/components/FormModal/forms/forms.d.ts +59 -26
  177. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +12 -2
  178. package/dist/admin/src/components/FormModal/reducer.d.ts +104 -32
  179. package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +11 -1
  180. package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +8 -1
  181. package/dist/admin/src/components/FormModal/utils/relations.d.ts +2 -2
  182. package/dist/admin/src/components/FormModalHeader.d.ts +5 -8
  183. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +2 -2
  184. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +17 -1
  185. package/dist/admin/src/components/GenericInputs.d.ts +12 -7
  186. package/dist/admin/src/components/IconPicker/IconPicker.d.ts +2 -7
  187. package/dist/admin/src/components/PluralName.d.ts +6 -14
  188. package/dist/admin/src/components/Relation/Relation.d.ts +12 -3
  189. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +3 -2
  190. package/dist/admin/src/components/SelectCategory.d.ts +3 -12
  191. package/dist/admin/src/components/SelectComponent.d.ts +8 -7
  192. package/dist/admin/src/components/SingularName.d.ts +5 -8
  193. package/dist/admin/src/components/TabForm.d.ts +38 -7
  194. package/dist/admin/src/types.d.ts +20 -12
  195. package/dist/admin/src/utils/conditions.d.ts +13 -4
  196. package/dist/admin/src/utils/formAPI.d.ts +38 -33
  197. package/dist/admin/src/utils/getRelationType.d.ts +1 -1
  198. package/dist/admin/src/utils/parseNumberInputValue.d.ts +1 -0
  199. package/dist/admin/utils/conditions.js +38 -28
  200. package/dist/admin/utils/conditions.js.map +1 -1
  201. package/dist/admin/utils/conditions.mjs +37 -28
  202. package/dist/admin/utils/conditions.mjs.map +1 -1
  203. package/dist/admin/utils/formAPI.js +9 -6
  204. package/dist/admin/utils/formAPI.js.map +1 -1
  205. package/dist/admin/utils/formAPI.mjs +9 -6
  206. package/dist/admin/utils/formAPI.mjs.map +1 -1
  207. package/dist/admin/utils/getRelationType.js +3 -0
  208. package/dist/admin/utils/getRelationType.js.map +1 -1
  209. package/dist/admin/utils/getRelationType.mjs +3 -0
  210. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  211. package/dist/admin/utils/getYupInnerErrors.js +6 -4
  212. package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
  213. package/dist/admin/utils/getYupInnerErrors.mjs +6 -4
  214. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
  215. package/dist/admin/utils/parseNumberInputValue.js +15 -0
  216. package/dist/admin/utils/parseNumberInputValue.js.map +1 -0
  217. package/dist/admin/utils/parseNumberInputValue.mjs +13 -0
  218. package/dist/admin/utils/parseNumberInputValue.mjs.map +1 -0
  219. package/dist/server/controllers/validation/relations.js +1 -1
  220. package/dist/server/controllers/validation/relations.js.map +1 -1
  221. package/dist/server/controllers/validation/relations.mjs +1 -1
  222. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  223. package/dist/server/controllers/validation/types.js +4 -3
  224. package/dist/server/controllers/validation/types.js.map +1 -1
  225. package/dist/server/controllers/validation/types.mjs +4 -3
  226. package/dist/server/controllers/validation/types.mjs.map +1 -1
  227. package/package.json +7 -7
@@ -7,7 +7,6 @@ var designSystem = require('@strapi/design-system');
7
7
  var get = require('lodash/get');
8
8
  var has = require('lodash/has');
9
9
  var isEqual = require('lodash/isEqual');
10
- var pick = require('lodash/pick');
11
10
  var set = require('lodash/set');
12
11
  var reactIntl = require('react-intl');
13
12
  var reactRedux = require('react-redux');
@@ -17,6 +16,7 @@ var yup = require('yup');
17
16
  var pluginId = require('../../pluginId.js');
18
17
  var getTrad = require('../../utils/getTrad.js');
19
18
  var isAllowedContentTypesForRelations = require('../../utils/isAllowedContentTypesForRelations.js');
19
+ var conditions = require('../../utils/conditions.js');
20
20
  var findAttribute = require('../../utils/findAttribute.js');
21
21
  var getYupInnerErrors = require('../../utils/getYupInnerErrors.js');
22
22
  var AllowedTypesSelect = require('../AllowedTypesSelect.js');
@@ -77,7 +77,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
77
77
  var get__default = /*#__PURE__*/_interopDefault(get);
78
78
  var has__default = /*#__PURE__*/_interopDefault(has);
79
79
  var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
80
- var pick__default = /*#__PURE__*/_interopDefault(pick);
81
80
  var set__default = /*#__PURE__*/_interopDefault(set);
82
81
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
83
82
 
@@ -85,6 +84,21 @@ const FormComponent = styledComponents.styled.form`
85
84
  overflow: auto;
86
85
  `;
87
86
  const selectState = (state)=>state['content-type-builder_formModal'] || reducer.initialState;
87
+ const toStringValue = (value)=>typeof value === 'string' ? value : '';
88
+ const toOptionalStringValue = (value)=>{
89
+ if (typeof value !== 'string' || value === '') {
90
+ return undefined;
91
+ }
92
+ return value;
93
+ };
94
+ const toBooleanValue = (value)=>typeof value === 'boolean' ? value : false;
95
+ const toContentTypeKind = (value)=>value === 'singleType' ? 'singleType' : 'collectionType';
96
+ const toRecordValue = (value)=>typeof value === 'object' && value !== null ? value : {};
97
+ const toComponentDraft = (value)=>({
98
+ category: toStringValue(value?.category),
99
+ displayName: toStringValue(value?.displayName),
100
+ icon: toOptionalStringValue(value?.icon)
101
+ });
88
102
  const FormModal = ()=>{
89
103
  const { onCloseModal, onNavigateToChooseAttributeModal, onNavigateToAddCompoToDZModal, onNavigateToCreateComponentStep2, actionType, attributeName, attributeType, customFieldUid, dynamicZoneTarget, forTarget, modalType, isOpen, kind, step, targetUid, showBackLink, activeTab, setActiveTab } = useFormModalNavigation.useFormModalNavigation();
90
104
  const getPlugin = strapiAdmin.useStrapiApp('FormModal', (state)=>state.getPlugin);
@@ -114,20 +128,22 @@ const FormModal = ()=>{
114
128
  const oldEnum = initialData.enum;
115
129
  const newEnum = modifiedData.enum;
116
130
  // Get all attributes from the content type schema
117
- const contentTypeAttributes = type?.attributes || [];
131
+ const contentTypeAttributes = type?.attributes ?? [];
118
132
  // Find all fields that reference this field in their conditions
119
133
  const referencedFields = contentTypeAttributes.filter((attr)=>{
120
- if (!attr.conditions) return false;
121
- const condition = attr.conditions.visible;
122
- if (!condition) return false;
123
- const [[, conditions]] = Object.entries(condition);
124
- const [fieldVar, value] = conditions;
134
+ const conditionEntry = conditions.getFirstVisibleConditionEntry(attr.conditions);
135
+ if (conditionEntry === null) {
136
+ return false;
137
+ }
138
+ const { fieldVar, value } = conditionEntry;
125
139
  // Check if this condition references our field
126
- if (fieldVar.var !== oldName) return false;
140
+ if (fieldVar.var !== oldName) {
141
+ return false;
142
+ }
127
143
  // If it's an enum field, also check if the value is being deleted/changed
128
- if (oldEnum && newEnum) {
144
+ if (oldEnum !== undefined && newEnum !== undefined) {
129
145
  const deletedOrChangedValues = oldEnum.filter((oldValue)=>!newEnum.includes(oldValue));
130
- return deletedOrChangedValues.includes(value);
146
+ return typeof value === 'string' && deletedOrChangedValues.includes(value);
131
147
  }
132
148
  return true;
133
149
  });
@@ -163,10 +179,10 @@ const FormModal = ()=>{
163
179
  data: {
164
180
  displayName: type.info.displayName,
165
181
  draftAndPublish: type.options?.draftAndPublish,
166
- kind: 'kind' in type && type.kind,
182
+ kind: type.modelType === 'contentType' ? type.kind : 'collectionType',
167
183
  pluginOptions: type.pluginOptions,
168
- pluralName: 'pluralName' in type.info && type.info.pluralName,
169
- singularName: 'singularName' in type.info && type.info.singularName
184
+ pluralName: type.modelType === 'contentType' ? type.info.pluralName : '',
185
+ singularName: type.modelType === 'contentType' ? type.info.singularName : ''
170
186
  }
171
187
  }));
172
188
  }
@@ -175,7 +191,7 @@ const FormModal = ()=>{
175
191
  dispatch(reducer.actions.setDataToEdit({
176
192
  data: {
177
193
  displayName: type.info.displayName,
178
- category: 'category' in type && type.category,
194
+ category: type.modelType === 'component' ? type.category : '',
179
195
  icon: type.info.icon
180
196
  }
181
197
  }));
@@ -222,10 +238,10 @@ const FormModal = ()=>{
222
238
  }));
223
239
  } else {
224
240
  dispatch(reducer.actions.setCustomFieldDataSchema({
225
- customField: pick__default.default(customField, [
226
- 'type',
227
- 'options'
228
- ]),
241
+ customField: {
242
+ type: customField?.type ?? '',
243
+ options: customField?.options
244
+ },
229
245
  isEditing: false,
230
246
  modifiedDataToSetForEditing: attributeToEdit,
231
247
  uid: type.uid
@@ -285,7 +301,7 @@ const FormModal = ()=>{
285
301
  // Check form validity for component
286
302
  // This is happening when the user click on the link from the left menu
287
303
  } else if (isCreatingComponent) {
288
- schema = forms.forms.component.schema(Object.keys(components), modifiedData.category || '', reservedNames, actionType === 'edit', components, modifiedData.displayName || '', type?.uid ?? null);
304
+ schema = forms.forms.component.schema(Object.keys(components), toStringValue(modifiedData.category), reservedNames, actionType === 'edit', components, toStringValue(modifiedData.displayName), type?.uid ?? null);
289
305
  } else if (isCreatingCustomFieldAttribute) {
290
306
  schema = forms.forms.customField.schema({
291
307
  schemaAttributes: get__default.default(type, [
@@ -305,16 +321,16 @@ const FormModal = ()=>{
305
321
  // Since we temporarily store the component info in another object
306
322
  // The data is set in the componentToCreate key
307
323
  } else if (isComponentAttribute && isCreatingComponentFromAView && isInFirstComponentStep) {
308
- schema = forms.forms.component.schema(Object.keys(components), get__default.default(modifiedData, 'componentToCreate.category', ''), reservedNames, actionType === 'edit', components, modifiedData.componentToCreate.displayName || '');
324
+ schema = forms.forms.component.schema(Object.keys(components), toStringValue(get__default.default(modifiedData, 'componentToCreate.category', '')), reservedNames, actionType === 'edit', components, toStringValue(modifiedData.componentToCreate?.displayName));
309
325
  // Check form validity for creating a 'common attribute'
310
326
  // We need to make sure that it is independent from the step
311
327
  } else if (isCreatingAttribute && !isInFirstComponentStep) {
312
- const computedAttrbiuteType = attributeType === 'relation' ? 'relation' : modifiedData.type;
328
+ const computedAttributeType = attributeType === 'relation' ? 'relation' : modifiedData.type;
313
329
  let alreadyTakenTargetContentTypeAttributes = [];
314
- if (computedAttrbiuteType === 'relation') {
315
- const targetContentTypeUID = get__default.default(modifiedData, [
330
+ if (computedAttributeType === 'relation') {
331
+ const targetContentTypeUID = toStringValue(get__default.default(modifiedData, [
316
332
  'target'
317
- ], null);
333
+ ], ''));
318
334
  const targetContentTypeAttributes = get__default.default(contentTypes, [
319
335
  targetContentTypeUID,
320
336
  'attributes'
@@ -331,7 +347,7 @@ const FormModal = ()=>{
331
347
  return attrName !== initialData.targetAttribute;
332
348
  });
333
349
  }
334
- schema = forms.forms.attribute.schema(type, computedAttrbiuteType, reservedNames, alreadyTakenTargetContentTypeAttributes, {
350
+ schema = forms.forms.attribute.schema(type, computedAttributeType ?? 'string', reservedNames, alreadyTakenTargetContentTypeAttributes, {
335
351
  modifiedData,
336
352
  initialData
337
353
  }, ctbFormsAPI);
@@ -340,7 +356,7 @@ const FormModal = ()=>{
340
356
  // in step 1 of the add component (modalType=attribute&attributeType=component) but not creating a component
341
357
  // eslint-disable-next-line no-lonely-if
342
358
  if (isInFirstComponentStep && isCreatingComponentFromAView) {
343
- schema = forms.forms.component.schema(Object.keys(components), get__default.default(modifiedData, 'componentToCreate.category', ''), reservedNames, actionType === 'edit', components, modifiedData.componentToCreate.displayName || '');
359
+ schema = forms.forms.component.schema(Object.keys(components), toStringValue(get__default.default(modifiedData, 'componentToCreate.category', '')), reservedNames, actionType === 'edit', components, toStringValue(modifiedData.componentToCreate?.displayName));
344
360
  } else {
345
361
  // The form is valid
346
362
  // The case here is being in the addComponentToDynamicZone modal and not creating a component
@@ -351,7 +367,7 @@ const FormModal = ()=>{
351
367
  abortEarly: false
352
368
  });
353
369
  };
354
- const handleChange = React__namespace.useCallback(({ target: { name, value, type, ...rest } })=>{
370
+ const handleChange = React__namespace.useCallback(({ target: { name, value } })=>{
355
371
  const namesThatCanResetToNullValue = [
356
372
  'enumName',
357
373
  'max',
@@ -366,9 +382,9 @@ const FormModal = ()=>{
366
382
  val = null;
367
383
  } else if (name === 'enum') {
368
384
  // For enum values, ensure we're working with an array
369
- val = Array.isArray(value) ? value : [
385
+ val = Array.isArray(value) ? value : typeof value === 'string' ? [
370
386
  value
371
- ];
387
+ ] : [];
372
388
  } else {
373
389
  val = value;
374
390
  }
@@ -408,11 +424,11 @@ const FormModal = ()=>{
408
424
  createSchema({
409
425
  data: {
410
426
  kind,
411
- displayName: modifiedData.displayName,
412
- draftAndPublish: modifiedData.draftAndPublish,
413
- pluginOptions: modifiedData.pluginOptions,
414
- singularName: modifiedData.singularName,
415
- pluralName: modifiedData.pluralName
427
+ displayName: toStringValue(modifiedData.displayName),
428
+ draftAndPublish: toBooleanValue(modifiedData.draftAndPublish),
429
+ pluginOptions: toRecordValue(modifiedData.pluginOptions),
430
+ singularName: toStringValue(modifiedData.singularName),
431
+ pluralName: toStringValue(modifiedData.pluralName)
416
432
  },
417
433
  uid
418
434
  });
@@ -430,10 +446,10 @@ const FormModal = ()=>{
430
446
  await updateSchema({
431
447
  uid: contentType.uid,
432
448
  data: {
433
- displayName: modifiedData.displayName,
434
- kind: modifiedData.kind,
435
- draftAndPublish: modifiedData.draftAndPublish,
436
- pluginOptions: modifiedData.pluginOptions
449
+ displayName: toStringValue(modifiedData.displayName),
450
+ kind: toContentTypeKind(modifiedData.kind),
451
+ draftAndPublish: toBooleanValue(modifiedData.draftAndPublish),
452
+ pluginOptions: toRecordValue(modifiedData.pluginOptions)
437
453
  }
438
454
  });
439
455
  } else {
@@ -450,38 +466,39 @@ const FormModal = ()=>{
450
466
  } else if (modalType === 'component') {
451
467
  if (isCreating) {
452
468
  // Create the component schema
453
- const componentUid = createUid.createComponentUid(modifiedData.displayName, modifiedData.category);
454
- const { category, ...rest } = modifiedData;
469
+ const componentCategory = toStringValue(modifiedData.category);
470
+ const componentDisplayName = toStringValue(modifiedData.displayName);
471
+ const componentUid = createUid.createComponentUid(componentDisplayName, componentCategory);
455
472
  createComponentSchema({
456
473
  data: {
457
- displayName: rest.displayName,
458
- icon: rest.icon
474
+ displayName: componentDisplayName,
475
+ icon: toOptionalStringValue(modifiedData.icon)
459
476
  },
460
477
  uid: componentUid,
461
- componentCategory: category
478
+ componentCategory
462
479
  });
463
480
  // Redirect the user to the created component
464
481
  navigate({
465
- pathname: `/plugins/${pluginId.pluginId}/component-categories/${category}/${componentUid}`
482
+ pathname: `/plugins/${pluginId.pluginId}/component-categories/${componentCategory}/${componentUid}`
466
483
  });
467
484
  onCloseModal();
468
485
  return;
469
486
  } else {
470
487
  updateComponentSchema({
471
488
  data: {
472
- icon: modifiedData.icon,
473
- displayName: modifiedData.displayName
489
+ icon: toOptionalStringValue(modifiedData.icon),
490
+ displayName: toStringValue(modifiedData.displayName)
474
491
  },
475
492
  componentUID: targetUid
476
493
  });
477
494
  if (type.status === 'NEW') {
478
- const componentUid = createUid.createComponentUid(modifiedData.displayName, modifiedData.category);
495
+ const componentUid = createUid.createComponentUid(toStringValue(modifiedData.displayName), toStringValue(modifiedData.category));
479
496
  updateComponentUid({
480
497
  componentUID: targetUid,
481
498
  newComponentUID: componentUid
482
499
  });
483
500
  navigate({
484
- pathname: `/plugins/${pluginId.pluginId}/component-categories/${modifiedData.category}/${componentUid}`
501
+ pathname: `/plugins/${pluginId.pluginId}/component-categories/${toStringValue(modifiedData.category)}/${componentUid}`
485
502
  });
486
503
  }
487
504
  // Close the modal
@@ -496,7 +513,7 @@ const FormModal = ()=>{
496
513
  },
497
514
  forTarget,
498
515
  targetUid,
499
- name: initialData.name
516
+ name: toStringValue(initialData.name)
500
517
  };
501
518
  if (actionType === 'edit') {
502
519
  editCustomFieldAttribute(customFieldAttributeUpdate);
@@ -527,7 +544,7 @@ const FormModal = ()=>{
527
544
  attributeToSet: modifiedData,
528
545
  forTarget,
529
546
  targetUid,
530
- name: initialData.name
547
+ name: toStringValue(initialData.name)
531
548
  });
532
549
  }
533
550
  // Adding a component to a dynamiczone is not the same logic as creating a simple field
@@ -537,7 +554,7 @@ const FormModal = ()=>{
537
554
  dispatch(reducer.actions.resetPropsAndSetTheFormForAddingACompoToADz());
538
555
  setActiveTab('basic');
539
556
  onNavigateToAddCompoToDZModal({
540
- dynamicZoneTarget: modifiedData.name
557
+ dynamicZoneTarget: toStringValue(modifiedData.name)
541
558
  });
542
559
  } else {
543
560
  onCloseModal();
@@ -557,7 +574,7 @@ const FormModal = ()=>{
557
574
  attributeToSet: modifiedData,
558
575
  forTarget,
559
576
  targetUid,
560
- name: initialData.name
577
+ name: toStringValue(initialData.name)
561
578
  });
562
579
  }
563
580
  if (shouldContinue) {
@@ -613,7 +630,7 @@ const FormModal = ()=>{
613
630
  attributeToSet: attributeData,
614
631
  forTarget,
615
632
  targetUid,
616
- name: initialData.name
633
+ name: toStringValue(initialData.name)
617
634
  });
618
635
  }
619
636
  if (shouldContinue) {
@@ -647,19 +664,19 @@ const FormModal = ()=>{
647
664
  // Step 2 of creating a component (which is setting the attribute name in the parent's schema)
648
665
  }
649
666
  // We are destructuring because the modifiedData object doesn't have the appropriate format to create a field
650
- const { category, ...rest } = componentToCreate;
667
+ const draftComponent = toComponentDraft(componentToCreate);
651
668
  // Create a the component temp UID
652
669
  // This could be refactored but I think it's more understandable to separate the logic
653
- const componentUid = createUid.createComponentUid(componentToCreate.displayName, category);
670
+ const componentUid = createUid.createComponentUid(draftComponent.displayName, draftComponent.category);
654
671
  // Create the component first and add it to the components data
655
672
  createComponentSchema({
656
673
  // Component data
657
674
  data: {
658
- icon: rest.icon,
659
- displayName: rest.displayName
675
+ icon: draftComponent.icon,
676
+ displayName: draftComponent.displayName
660
677
  },
661
678
  uid: componentUid,
662
- componentCategory: category
679
+ componentCategory: draftComponent.category
663
680
  });
664
681
  // Add the field to the schema
665
682
  addAttribute({
@@ -682,13 +699,16 @@ const FormModal = ()=>{
682
699
  // The modal is addComponentToDynamicZone
683
700
  if (isInFirstComponentStep) {
684
701
  if (isCreatingComponentFromAView) {
685
- const { category, type, ...rest } = modifiedData.componentToCreate;
686
- const componentUid = createUid.createComponentUid(modifiedData.componentToCreate.displayName, category);
702
+ const draftComponent = toComponentDraft(modifiedData.componentToCreate);
703
+ const componentUid = createUid.createComponentUid(draftComponent.displayName, draftComponent.category);
687
704
  // Create the component first and add it to the components data
688
705
  createComponentSchema({
689
- data: rest,
706
+ data: {
707
+ displayName: draftComponent.displayName,
708
+ icon: draftComponent.icon
709
+ },
690
710
  uid: componentUid,
691
- componentCategory: category
711
+ componentCategory: draftComponent.category
692
712
  });
693
713
  // Add the created component to the DZ
694
714
  // We don't want to remove the old ones
@@ -712,7 +732,7 @@ const FormModal = ()=>{
712
732
  forTarget,
713
733
  targetUid,
714
734
  dynamicZoneTarget,
715
- newComponents: modifiedData.components
735
+ newComponents: modifiedData.components ?? []
716
736
  });
717
737
  onCloseModal();
718
738
  }
@@ -902,7 +922,7 @@ const FormModal = ()=>{
902
922
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Trigger, {}),
903
923
  /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, {
904
924
  onConfirm: ()=>{
905
- if (pendingSubmit) {
925
+ if (pendingSubmit !== null) {
906
926
  const { e, shouldContinue } = pendingSubmit;
907
927
  setShowWarningDialog(false);
908
928
  setPendingSubmit(null);
@@ -915,12 +935,12 @@ const FormModal = ()=>{
915
935
  },
916
936
  children: (()=>{
917
937
  const referencedFields = checkFieldNameChanges();
918
- if (!referencedFields) return null;
938
+ if (referencedFields === false) return null;
919
939
  const fieldNames = referencedFields.map((field)=>field.name).join(', ');
920
- const isEnum = initialData.enum && modifiedData.enum;
921
- if (isEnum) {
922
- const oldEnum = initialData.enum;
923
- const newEnum = modifiedData.enum;
940
+ const oldEnum = initialData.enum;
941
+ const newEnum = modifiedData.enum;
942
+ const isEnum = Array.isArray(oldEnum) && Array.isArray(newEnum);
943
+ if (isEnum === true) {
924
944
  const deletedOrChangedValues = oldEnum.filter((value)=>!newEnum.includes(value));
925
945
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
926
946
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Typography, {
@@ -1008,7 +1028,7 @@ const FormModal = ()=>{
1008
1028
  actionType: actionType,
1009
1029
  forTarget: forTarget,
1010
1030
  kind: kind,
1011
- step: step,
1031
+ step: step ?? undefined,
1012
1032
  modalType: modalType,
1013
1033
  attributeType: attributeType,
1014
1034
  attributeName: attributeName,