@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
@@ -14,6 +14,9 @@ const SelectCategory = ({ error = null, intlLabel, name, onChange, value = undef
14
14
  }) : '';
15
15
  const label = formatMessage(intlLabel);
16
16
  const handleChange = (value)=>{
17
+ if (value === undefined) {
18
+ return;
19
+ }
17
20
  onChange({
18
21
  target: {
19
22
  name,
@@ -23,6 +26,9 @@ const SelectCategory = ({ error = null, intlLabel, name, onChange, value = undef
23
26
  });
24
27
  };
25
28
  const handleCreateOption = (value)=>{
29
+ if (value === undefined) {
30
+ return;
31
+ }
26
32
  setCategories((prev)=>[
27
33
  ...prev,
28
34
  value
@@ -1 +1 @@
1
- {"version":3,"file":"SelectCategory.mjs","sources":["../../../admin/src/components/SelectCategory.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { ComboboxOption, Combobox, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from './DataManager/useDataManager';\n\ninterface SelectCategoryProps {\n error?: string | null;\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n };\n name: string;\n onChange: (value: { target: { name: string; value: any; type: string } }) => void;\n value?: string;\n isCreating?: boolean;\n dynamicZoneTarget?: string | null;\n}\n\nexport const SelectCategory = ({\n error = null,\n intlLabel,\n name,\n onChange,\n value = undefined,\n isCreating,\n dynamicZoneTarget,\n}: SelectCategoryProps) => {\n const { formatMessage } = useIntl();\n const { allComponentsCategories } = useDataManager();\n const [categories, setCategories] = useState(allComponentsCategories);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const handleChange = (value: any) => {\n onChange({ target: { name, value, type: 'select-category' } });\n };\n\n const handleCreateOption = (value: any) => {\n setCategories((prev) => [...prev, value]);\n handleChange(value);\n };\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <Combobox\n // TODO: re-enable category edits, renaming categories of already existing components currently breaks other functionality\n // See https://github.com/strapi/strapi/issues/20356\n disabled={!isCreating && !dynamicZoneTarget}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n value={value}\n creatable\n >\n {categories.map((category) => (\n <ComboboxOption key={category} value={category}>\n {category}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["SelectCategory","error","intlLabel","name","onChange","value","undefined","isCreating","dynamicZoneTarget","formatMessage","useIntl","allComponentsCategories","useDataManager","categories","setCategories","useState","errorMessage","id","defaultMessage","label","handleChange","target","type","handleCreateOption","prev","_jsxs","Field","Root","_jsx","Label","Combobox","disabled","onCreateOption","creatable","map","category","ComboboxOption","Error"],"mappings":";;;;;;MAqBaA,cAAAA,GAAiB,CAAC,EAC7BC,KAAAA,GAAQ,IAAI,EACZC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQC,SAAS,EACjBC,UAAU,EACVC,iBAAiB,EACG,GAAA;IACpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,cAAAA,EAAAA;AACpC,IAAA,MAAM,CAACC,UAAAA,EAAYC,aAAAA,CAAc,GAAGC,QAAAA,CAASJ,uBAAAA,CAAAA;IAE7C,MAAMK,YAAAA,GAAef,QAAQQ,aAAAA,CAAc;QAAEQ,EAAAA,EAAIhB,KAAAA;QAAOiB,cAAAA,EAAgBjB;KAAM,CAAA,GAAK,EAAA;AACnF,IAAA,MAAMkB,QAAQV,aAAAA,CAAcP,SAAAA,CAAAA;AAE5B,IAAA,MAAMkB,eAAe,CAACf,KAAAA,GAAAA;QACpBD,QAAAA,CAAS;YAAEiB,MAAAA,EAAQ;AAAElB,gBAAAA,IAAAA;AAAME,gBAAAA,KAAAA;gBAAOiB,IAAAA,EAAM;AAAkB;AAAE,SAAA,CAAA;AAC9D,IAAA,CAAA;AAEA,IAAA,MAAMC,qBAAqB,CAAClB,KAAAA,GAAAA;AAC1BS,QAAAA,aAAAA,CAAc,CAACU,IAAAA,GAAS;AAAIA,gBAAAA,GAAAA,IAAAA;AAAMnB,gBAAAA;AAAM,aAAA,CAAA;QACxCe,YAAAA,CAAaf,KAAAA,CAAAA;AACf,IAAA,CAAA;IAEA,qBACEoB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC1B,KAAAA,EAAOe,YAAAA;QAAcb,IAAAA,EAAMA,IAAAA;;AACrC,0BAAAyB,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEV,gBAAAA,QAAAA,EAAAA;;0BACdS,GAAA,CAACE,QAAAA,EAAAA;;;gBAGCC,QAAAA,EAAU,CAACxB,cAAc,CAACC,iBAAAA;gBAC1BJ,QAAAA,EAAUgB,YAAAA;gBACVY,cAAAA,EAAgBT,kBAAAA;gBAChBlB,KAAAA,EAAOA,KAAAA;gBACP4B,SAAS,EAAA,IAAA;AAERpB,gBAAAA,QAAAA,EAAAA,UAAAA,CAAWqB,GAAG,CAAC,CAACC,QAAAA,iBACfP,GAAA,CAACQ,cAAAA,EAAAA;wBAA8B/B,KAAAA,EAAO8B,QAAAA;AACnCA,wBAAAA,QAAAA,EAAAA;AADkBA,qBAAAA,EAAAA,QAAAA,CAAAA;;AAKzB,0BAAAP,GAAA,CAACF,MAAMW,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
1
+ {"version":3,"file":"SelectCategory.mjs","sources":["../../../admin/src/components/SelectCategory.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { ComboboxOption, Combobox, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\n\ninterface SelectCategoryProps {\n error?: string | null;\n intlLabel: IntlLabel;\n name: string;\n onChange: FormChangeHandler<string, 'select-category'>;\n value?: string;\n isCreating?: boolean;\n dynamicZoneTarget?: string | null;\n}\n\nexport const SelectCategory = ({\n error = null,\n intlLabel,\n name,\n onChange,\n value = undefined,\n isCreating,\n dynamicZoneTarget,\n}: SelectCategoryProps) => {\n const { formatMessage } = useIntl();\n const { allComponentsCategories } = useDataManager();\n const [categories, setCategories] = useState(allComponentsCategories);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const handleChange = (value?: string) => {\n if (value === undefined) {\n return;\n }\n\n onChange({ target: { name, value, type: 'select-category' } });\n };\n\n const handleCreateOption = (value?: string) => {\n if (value === undefined) {\n return;\n }\n\n setCategories((prev) => [...prev, value]);\n handleChange(value);\n };\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <Combobox\n // TODO: re-enable category edits, renaming categories of already existing components currently breaks other functionality\n // See https://github.com/strapi/strapi/issues/20356\n disabled={!isCreating && !dynamicZoneTarget}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n value={value}\n creatable\n >\n {categories.map((category) => (\n <ComboboxOption key={category} value={category}>\n {category}\n </ComboboxOption>\n ))}\n </Combobox>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["SelectCategory","error","intlLabel","name","onChange","value","undefined","isCreating","dynamicZoneTarget","formatMessage","useIntl","allComponentsCategories","useDataManager","categories","setCategories","useState","errorMessage","id","defaultMessage","label","handleChange","target","type","handleCreateOption","prev","_jsxs","Field","Root","_jsx","Label","Combobox","disabled","onCreateOption","creatable","map","category","ComboboxOption","Error"],"mappings":";;;;;;MAmBaA,cAAAA,GAAiB,CAAC,EAC7BC,KAAAA,GAAQ,IAAI,EACZC,SAAS,EACTC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQC,SAAS,EACjBC,UAAU,EACVC,iBAAiB,EACG,GAAA;IACpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,cAAAA,EAAAA;AACpC,IAAA,MAAM,CAACC,UAAAA,EAAYC,aAAAA,CAAc,GAAGC,QAAAA,CAASJ,uBAAAA,CAAAA;IAE7C,MAAMK,YAAAA,GAAef,QAAQQ,aAAAA,CAAc;QAAEQ,EAAAA,EAAIhB,KAAAA;QAAOiB,cAAAA,EAAgBjB;KAAM,CAAA,GAAK,EAAA;AACnF,IAAA,MAAMkB,QAAQV,aAAAA,CAAcP,SAAAA,CAAAA;AAE5B,IAAA,MAAMkB,eAAe,CAACf,KAAAA,GAAAA;AACpB,QAAA,IAAIA,UAAUC,SAAAA,EAAW;AACvB,YAAA;AACF,QAAA;QAEAF,QAAAA,CAAS;YAAEiB,MAAAA,EAAQ;AAAElB,gBAAAA,IAAAA;AAAME,gBAAAA,KAAAA;gBAAOiB,IAAAA,EAAM;AAAkB;AAAE,SAAA,CAAA;AAC9D,IAAA,CAAA;AAEA,IAAA,MAAMC,qBAAqB,CAAClB,KAAAA,GAAAA;AAC1B,QAAA,IAAIA,UAAUC,SAAAA,EAAW;AACvB,YAAA;AACF,QAAA;AAEAQ,QAAAA,aAAAA,CAAc,CAACU,IAAAA,GAAS;AAAIA,gBAAAA,GAAAA,IAAAA;AAAMnB,gBAAAA;AAAM,aAAA,CAAA;QACxCe,YAAAA,CAAaf,KAAAA,CAAAA;AACf,IAAA,CAAA;IAEA,qBACEoB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC1B,KAAAA,EAAOe,YAAAA;QAAcb,IAAAA,EAAMA,IAAAA;;AACrC,0BAAAyB,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEV,gBAAAA,QAAAA,EAAAA;;0BACdS,GAAA,CAACE,QAAAA,EAAAA;;;gBAGCC,QAAAA,EAAU,CAACxB,cAAc,CAACC,iBAAAA;gBAC1BJ,QAAAA,EAAUgB,YAAAA;gBACVY,cAAAA,EAAgBT,kBAAAA;gBAChBlB,KAAAA,EAAOA,KAAAA;gBACP4B,SAAS,EAAA,IAAA;AAERpB,gBAAAA,QAAAA,EAAAA,UAAAA,CAAWqB,GAAG,CAAC,CAACC,QAAAA,iBACfP,GAAA,CAACQ,cAAAA,EAAAA;wBAA8B/B,KAAAA,EAAO8B,QAAAA;AACnCA,wBAAAA,QAAAA,EAAAA;AADkBA,qBAAAA,EAAAA,QAAAA,CAAAA;;AAKzB,0BAAAP,GAAA,CAACF,MAAMW,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
@@ -65,7 +65,7 @@ const SelectComponent = ({ error = null, intlLabel, isAddingAComponentToAnotherC
65
65
  onChange({
66
66
  target: {
67
67
  name,
68
- value,
68
+ value: value.toString(),
69
69
  type: 'select-category'
70
70
  }
71
71
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SelectComponent.js","sources":["../../../admin/src/components/SelectComponent.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { MAX_COMPONENT_DEPTH } from '../constants';\nimport { getChildrenMaxDepth, getComponentDepth } from '../utils/getMaxDepth';\n\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { Internal } from '@strapi/types';\ninterface Option {\n uid: string;\n label: string;\n categoryName: string;\n}\n\ninterface SelectComponentProps {\n componentToCreate?: Record<string, any> | null;\n error?: string | null;\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n };\n isAddingAComponentToAnotherComponent: boolean;\n isCreating: boolean;\n isCreatingComponentWhileAddingAField: boolean;\n name: string;\n onChange: (value: any) => void;\n targetUid: Internal.UID.Schema;\n value: string;\n forTarget: string;\n}\n\nexport const SelectComponent = ({\n error = null,\n intlLabel,\n isAddingAComponentToAnotherComponent,\n isCreating,\n isCreatingComponentWhileAddingAField,\n componentToCreate,\n name,\n onChange,\n targetUid,\n forTarget,\n value,\n}: SelectComponentProps) => {\n const { formatMessage } = useIntl();\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const {\n componentsGroupedByCategory,\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n } = useDataManager();\n\n const isTargetAComponent = forTarget === 'component';\n\n let options: Option[] = Object.entries(componentsGroupedByCategory).reduce(\n (acc: Option[], current) => {\n const [categoryName, components] = current;\n const compos = components.map((component) => {\n return {\n uid: component.uid,\n label: component.info.displayName,\n categoryName,\n };\n });\n\n return [...acc, ...compos];\n },\n []\n );\n\n if (isAddingAComponentToAnotherComponent) {\n options = options.filter(({ uid }: any) => {\n const maxDepth = getChildrenMaxDepth(uid, componentsThatHaveOtherComponentInTheirAttributes);\n const componentDepth = getComponentDepth(targetUid, nestedComponents);\n const totalDepth = maxDepth + componentDepth;\n return totalDepth <= MAX_COMPONENT_DEPTH;\n });\n }\n\n if (isTargetAComponent) {\n options = options.filter((option) => {\n return option.uid !== targetUid;\n });\n }\n\n if (isCreatingComponentWhileAddingAField) {\n options = [\n {\n uid: value,\n label: componentToCreate?.displayName,\n categoryName: componentToCreate?.category,\n },\n ];\n }\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={isCreatingComponentWhileAddingAField || !isCreating}\n onChange={(value: any) => {\n onChange({ target: { name, value, type: 'select-category' } });\n }}\n value={value || ''}\n >\n {options.map((option) => {\n return (\n <SingleSelectOption key={option.uid} value={option.uid}>\n {`${option.categoryName} - ${option.label}`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["SelectComponent","error","intlLabel","isAddingAComponentToAnotherComponent","isCreating","isCreatingComponentWhileAddingAField","componentToCreate","name","onChange","targetUid","forTarget","value","formatMessage","useIntl","errorMessage","id","defaultMessage","label","componentsGroupedByCategory","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","useDataManager","isTargetAComponent","options","Object","entries","reduce","acc","current","categoryName","components","compos","map","component","uid","info","displayName","filter","maxDepth","getChildrenMaxDepth","componentDepth","getComponentDepth","totalDepth","MAX_COMPONENT_DEPTH","option","category","_jsxs","Field","Root","_jsx","Label","SingleSelect","disabled","target","type","SingleSelectOption","Error"],"mappings":"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"}
1
+ {"version":3,"file":"SelectComponent.js","sources":["../../../admin/src/components/SelectComponent.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { MAX_COMPONENT_DEPTH } from '../constants';\nimport { getChildrenMaxDepth, getComponentDepth } from '../utils/getMaxDepth';\n\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\nimport type { Internal } from '@strapi/types';\ninterface Option {\n uid: Internal.UID.Component;\n label?: string;\n categoryName?: string;\n}\n\ntype ComponentToCreate = {\n displayName?: string;\n category?: string;\n};\n\ninterface SelectComponentProps {\n componentToCreate?: ComponentToCreate | null;\n error?: string | null;\n intlLabel: IntlLabel;\n isAddingAComponentToAnotherComponent: boolean;\n isCreating: boolean;\n isCreatingComponentWhileAddingAField: boolean;\n name: string;\n onChange: FormChangeHandler<string, 'select-category'>;\n targetUid: Internal.UID.Schema;\n value: string;\n forTarget: string;\n}\n\nexport const SelectComponent = ({\n error = null,\n intlLabel,\n isAddingAComponentToAnotherComponent,\n isCreating,\n isCreatingComponentWhileAddingAField,\n componentToCreate,\n name,\n onChange,\n targetUid,\n forTarget,\n value,\n}: SelectComponentProps) => {\n const { formatMessage } = useIntl();\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const {\n componentsGroupedByCategory,\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n } = useDataManager();\n\n const isTargetAComponent = forTarget === 'component';\n\n let options: Option[] = Object.entries(componentsGroupedByCategory).reduce(\n (acc: Option[], current) => {\n const [categoryName, components] = current;\n const compos = components.map((component) => {\n return {\n uid: component.uid,\n label: component.info.displayName,\n categoryName,\n };\n });\n\n return [...acc, ...compos];\n },\n []\n );\n\n if (isAddingAComponentToAnotherComponent) {\n options = options.filter(({ uid }) => {\n const maxDepth = getChildrenMaxDepth(uid, componentsThatHaveOtherComponentInTheirAttributes);\n const componentDepth = getComponentDepth(targetUid, nestedComponents);\n const totalDepth = maxDepth + componentDepth;\n return totalDepth <= MAX_COMPONENT_DEPTH;\n });\n }\n\n if (isTargetAComponent) {\n options = options.filter((option) => {\n return option.uid !== targetUid;\n });\n }\n\n if (isCreatingComponentWhileAddingAField) {\n options = [\n {\n uid: value as Internal.UID.Component,\n label: componentToCreate?.displayName,\n categoryName: componentToCreate?.category,\n },\n ];\n }\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={isCreatingComponentWhileAddingAField || !isCreating}\n onChange={(value: string | number) => {\n onChange({ target: { name, value: value.toString(), type: 'select-category' } });\n }}\n value={value || ''}\n >\n {options.map((option) => {\n return (\n <SingleSelectOption key={option.uid} value={option.uid}>\n {`${option.categoryName} - ${option.label}`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["SelectComponent","error","intlLabel","isAddingAComponentToAnotherComponent","isCreating","isCreatingComponentWhileAddingAField","componentToCreate","name","onChange","targetUid","forTarget","value","formatMessage","useIntl","errorMessage","id","defaultMessage","label","componentsGroupedByCategory","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","useDataManager","isTargetAComponent","options","Object","entries","reduce","acc","current","categoryName","components","compos","map","component","uid","info","displayName","filter","maxDepth","getChildrenMaxDepth","componentDepth","getComponentDepth","totalDepth","MAX_COMPONENT_DEPTH","option","category","_jsxs","Field","Root","_jsx","Label","SingleSelect","disabled","target","toString","type","SingleSelectOption","Error"],"mappings":"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"}
@@ -63,7 +63,7 @@ const SelectComponent = ({ error = null, intlLabel, isAddingAComponentToAnotherC
63
63
  onChange({
64
64
  target: {
65
65
  name,
66
- value,
66
+ value: value.toString(),
67
67
  type: 'select-category'
68
68
  }
69
69
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SelectComponent.mjs","sources":["../../../admin/src/components/SelectComponent.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { MAX_COMPONENT_DEPTH } from '../constants';\nimport { getChildrenMaxDepth, getComponentDepth } from '../utils/getMaxDepth';\n\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { Internal } from '@strapi/types';\ninterface Option {\n uid: string;\n label: string;\n categoryName: string;\n}\n\ninterface SelectComponentProps {\n componentToCreate?: Record<string, any> | null;\n error?: string | null;\n intlLabel: {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n };\n isAddingAComponentToAnotherComponent: boolean;\n isCreating: boolean;\n isCreatingComponentWhileAddingAField: boolean;\n name: string;\n onChange: (value: any) => void;\n targetUid: Internal.UID.Schema;\n value: string;\n forTarget: string;\n}\n\nexport const SelectComponent = ({\n error = null,\n intlLabel,\n isAddingAComponentToAnotherComponent,\n isCreating,\n isCreatingComponentWhileAddingAField,\n componentToCreate,\n name,\n onChange,\n targetUid,\n forTarget,\n value,\n}: SelectComponentProps) => {\n const { formatMessage } = useIntl();\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const {\n componentsGroupedByCategory,\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n } = useDataManager();\n\n const isTargetAComponent = forTarget === 'component';\n\n let options: Option[] = Object.entries(componentsGroupedByCategory).reduce(\n (acc: Option[], current) => {\n const [categoryName, components] = current;\n const compos = components.map((component) => {\n return {\n uid: component.uid,\n label: component.info.displayName,\n categoryName,\n };\n });\n\n return [...acc, ...compos];\n },\n []\n );\n\n if (isAddingAComponentToAnotherComponent) {\n options = options.filter(({ uid }: any) => {\n const maxDepth = getChildrenMaxDepth(uid, componentsThatHaveOtherComponentInTheirAttributes);\n const componentDepth = getComponentDepth(targetUid, nestedComponents);\n const totalDepth = maxDepth + componentDepth;\n return totalDepth <= MAX_COMPONENT_DEPTH;\n });\n }\n\n if (isTargetAComponent) {\n options = options.filter((option) => {\n return option.uid !== targetUid;\n });\n }\n\n if (isCreatingComponentWhileAddingAField) {\n options = [\n {\n uid: value,\n label: componentToCreate?.displayName,\n categoryName: componentToCreate?.category,\n },\n ];\n }\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={isCreatingComponentWhileAddingAField || !isCreating}\n onChange={(value: any) => {\n onChange({ target: { name, value, type: 'select-category' } });\n }}\n value={value || ''}\n >\n {options.map((option) => {\n return (\n <SingleSelectOption key={option.uid} value={option.uid}>\n {`${option.categoryName} - ${option.label}`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["SelectComponent","error","intlLabel","isAddingAComponentToAnotherComponent","isCreating","isCreatingComponentWhileAddingAField","componentToCreate","name","onChange","targetUid","forTarget","value","formatMessage","useIntl","errorMessage","id","defaultMessage","label","componentsGroupedByCategory","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","useDataManager","isTargetAComponent","options","Object","entries","reduce","acc","current","categoryName","components","compos","map","component","uid","info","displayName","filter","maxDepth","getChildrenMaxDepth","componentDepth","getComponentDepth","totalDepth","MAX_COMPONENT_DEPTH","option","category","_jsxs","Field","Root","_jsx","Label","SingleSelect","disabled","target","type","SingleSelectOption","Error"],"mappings":"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"}
1
+ {"version":3,"file":"SelectComponent.mjs","sources":["../../../admin/src/components/SelectComponent.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { MAX_COMPONENT_DEPTH } from '../constants';\nimport { getChildrenMaxDepth, getComponentDepth } from '../utils/getMaxDepth';\n\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\nimport type { Internal } from '@strapi/types';\ninterface Option {\n uid: Internal.UID.Component;\n label?: string;\n categoryName?: string;\n}\n\ntype ComponentToCreate = {\n displayName?: string;\n category?: string;\n};\n\ninterface SelectComponentProps {\n componentToCreate?: ComponentToCreate | null;\n error?: string | null;\n intlLabel: IntlLabel;\n isAddingAComponentToAnotherComponent: boolean;\n isCreating: boolean;\n isCreatingComponentWhileAddingAField: boolean;\n name: string;\n onChange: FormChangeHandler<string, 'select-category'>;\n targetUid: Internal.UID.Schema;\n value: string;\n forTarget: string;\n}\n\nexport const SelectComponent = ({\n error = null,\n intlLabel,\n isAddingAComponentToAnotherComponent,\n isCreating,\n isCreatingComponentWhileAddingAField,\n componentToCreate,\n name,\n onChange,\n targetUid,\n forTarget,\n value,\n}: SelectComponentProps) => {\n const { formatMessage } = useIntl();\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const label = formatMessage(intlLabel);\n\n const {\n componentsGroupedByCategory,\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n } = useDataManager();\n\n const isTargetAComponent = forTarget === 'component';\n\n let options: Option[] = Object.entries(componentsGroupedByCategory).reduce(\n (acc: Option[], current) => {\n const [categoryName, components] = current;\n const compos = components.map((component) => {\n return {\n uid: component.uid,\n label: component.info.displayName,\n categoryName,\n };\n });\n\n return [...acc, ...compos];\n },\n []\n );\n\n if (isAddingAComponentToAnotherComponent) {\n options = options.filter(({ uid }) => {\n const maxDepth = getChildrenMaxDepth(uid, componentsThatHaveOtherComponentInTheirAttributes);\n const componentDepth = getComponentDepth(targetUid, nestedComponents);\n const totalDepth = maxDepth + componentDepth;\n return totalDepth <= MAX_COMPONENT_DEPTH;\n });\n }\n\n if (isTargetAComponent) {\n options = options.filter((option) => {\n return option.uid !== targetUid;\n });\n }\n\n if (isCreatingComponentWhileAddingAField) {\n options = [\n {\n uid: value as Internal.UID.Component,\n label: componentToCreate?.displayName,\n categoryName: componentToCreate?.category,\n },\n ];\n }\n\n return (\n <Field.Root error={errorMessage} name={name}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={isCreatingComponentWhileAddingAField || !isCreating}\n onChange={(value: string | number) => {\n onChange({ target: { name, value: value.toString(), type: 'select-category' } });\n }}\n value={value || ''}\n >\n {options.map((option) => {\n return (\n <SingleSelectOption key={option.uid} value={option.uid}>\n {`${option.categoryName} - ${option.label}`}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["SelectComponent","error","intlLabel","isAddingAComponentToAnotherComponent","isCreating","isCreatingComponentWhileAddingAField","componentToCreate","name","onChange","targetUid","forTarget","value","formatMessage","useIntl","errorMessage","id","defaultMessage","label","componentsGroupedByCategory","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","useDataManager","isTargetAComponent","options","Object","entries","reduce","acc","current","categoryName","components","compos","map","component","uid","info","displayName","filter","maxDepth","getChildrenMaxDepth","componentDepth","getComponentDepth","totalDepth","MAX_COMPONENT_DEPTH","option","category","_jsxs","Field","Root","_jsx","Label","SingleSelect","disabled","target","toString","type","SingleSelectOption","Error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SingularName.js","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const previousValue = useRef(value);\n const previousDisplayName = useRef(modifiedData?.displayName || '');\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const newValue = nameToSlug(displayName);\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} type=\"text\" />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","previousValue","previousDisplayName","displayName","useEffect","current","newValue","nameToSlug","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","type","Error","Hint"],"mappings":";;;;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAAA,CAAOL,QAAAA,CAAAA;AAC3B,IAAA,MAAMM,gBAAgBD,YAAAA,CAAOJ,KAAAA,CAAAA;IAC7B,MAAMM,mBAAAA,GAAsBF,YAAAA,CAAOP,YAAAA,EAAcU,WAAAA,IAAe,EAAA,CAAA;IAChE,MAAMA,WAAAA,GAAcV,cAAcU,WAAAA,IAAe,EAAA;IAEjDC,eAAAA,CAAU,IAAA;AACR,QAAA,IAAID,WAAAA,IAAeA,WAAAA,KAAgBD,mBAAAA,CAAoBG,OAAO,EAAE;AAC9D,YAAA,MAAMC,WAAWC,qBAAAA,CAAWJ,WAAAA,CAAAA;AAC5BJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAOU;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcI,OAAO,GAAGC,QAAAA;AACxBJ,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGF,WAAAA;QAChC,CAAA,MAAO,IAAI,CAACA,WAAAA,EAAa;AACvBJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAO;AAAG;AAAE,aAAA,CAAA;AAClDK,YAAAA,aAAAA,CAAcI,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC,QAAA;IACF,CAAA,EAAG;AAACF,QAAAA,WAAAA;AAAaT,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMa,YAAAA,GAAelB,QAAQM,aAAAA,CAAc;QAAEa,EAAAA,EAAInB,KAAAA;QAAOoB,cAAAA,EAAgBpB;KAAM,CAAA,GAAK,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aAAAA,CACE;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAAe,EACjE;AAAE,QAAA,GAAGrB,YAAYuB;KAAO,CAAA,GAE1B,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAAA,CAAcL,SAAAA,CAAAA;IAE5B,qBACEuB,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAAC1B,KAAAA,EAAOkB,YAAAA;QAAcG,IAAAA,EAAMA,IAAAA;QAAMlB,IAAAA,EAAMA,IAAAA;;AACjD,0BAAAwB,cAAA,CAACF,mBAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,cAAA,CAACE,sBAAAA,EAAAA;gBAAUzB,QAAAA,EAAUA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;gBAAIyB,IAAAA,EAAK;;AACxD,0BAAAH,cAAA,CAACF,mBAAMM,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAJ,cAAA,CAACF,mBAAMO,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
1
+ {"version":3,"file":"SingularName.js","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: { displayName?: string };\n name: string;\n onChange: FormChangeHandler<string>;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const previousValue = useRef(value);\n const previousDisplayName = useRef(modifiedData?.displayName || '');\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const newValue = nameToSlug(displayName);\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} type=\"text\" />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","previousValue","previousDisplayName","displayName","useEffect","current","newValue","nameToSlug","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","type","Error","Hint"],"mappings":";;;;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAAA,CAAOL,QAAAA,CAAAA;AAC3B,IAAA,MAAMM,gBAAgBD,YAAAA,CAAOJ,KAAAA,CAAAA;IAC7B,MAAMM,mBAAAA,GAAsBF,YAAAA,CAAOP,YAAAA,EAAcU,WAAAA,IAAe,EAAA,CAAA;IAChE,MAAMA,WAAAA,GAAcV,cAAcU,WAAAA,IAAe,EAAA;IAEjDC,eAAAA,CAAU,IAAA;AACR,QAAA,IAAID,WAAAA,IAAeA,WAAAA,KAAgBD,mBAAAA,CAAoBG,OAAO,EAAE;AAC9D,YAAA,MAAMC,WAAWC,qBAAAA,CAAWJ,WAAAA,CAAAA;AAC5BJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAOU;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcI,OAAO,GAAGC,QAAAA;AACxBJ,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGF,WAAAA;QAChC,CAAA,MAAO,IAAI,CAACA,WAAAA,EAAa;AACvBJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAO;AAAG;AAAE,aAAA,CAAA;AAClDK,YAAAA,aAAAA,CAAcI,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC,QAAA;IACF,CAAA,EAAG;AAACF,QAAAA,WAAAA;AAAaT,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMa,YAAAA,GAAelB,QAAQM,aAAAA,CAAc;QAAEa,EAAAA,EAAInB,KAAAA;QAAOoB,cAAAA,EAAgBpB;KAAM,CAAA,GAAK,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aAAAA,CACE;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAAe,EACjE;AAAE,QAAA,GAAGrB,YAAYuB;KAAO,CAAA,GAE1B,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAAA,CAAcL,SAAAA,CAAAA;IAE5B,qBACEuB,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAAC1B,KAAAA,EAAOkB,YAAAA;QAAcG,IAAAA,EAAMA,IAAAA;QAAMlB,IAAAA,EAAMA,IAAAA;;AACjD,0BAAAwB,cAAA,CAACF,mBAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,cAAA,CAACE,sBAAAA,EAAAA;gBAAUzB,QAAAA,EAAUA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;gBAAIyB,IAAAA,EAAK;;AACxD,0BAAAH,cAAA,CAACF,mBAAMM,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAJ,cAAA,CAACF,mBAAMO,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SingularName.mjs","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const previousValue = useRef(value);\n const previousDisplayName = useRef(modifiedData?.displayName || '');\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const newValue = nameToSlug(displayName);\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} type=\"text\" />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","previousValue","previousDisplayName","displayName","useEffect","current","newValue","nameToSlug","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","type","Error","Hint"],"mappings":";;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,MAAAA,CAAOL,QAAAA,CAAAA;AAC3B,IAAA,MAAMM,gBAAgBD,MAAAA,CAAOJ,KAAAA,CAAAA;IAC7B,MAAMM,mBAAAA,GAAsBF,MAAAA,CAAOP,YAAAA,EAAcU,WAAAA,IAAe,EAAA,CAAA;IAChE,MAAMA,WAAAA,GAAcV,cAAcU,WAAAA,IAAe,EAAA;IAEjDC,SAAAA,CAAU,IAAA;AACR,QAAA,IAAID,WAAAA,IAAeA,WAAAA,KAAgBD,mBAAAA,CAAoBG,OAAO,EAAE;AAC9D,YAAA,MAAMC,WAAWC,UAAAA,CAAWJ,WAAAA,CAAAA;AAC5BJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAOU;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcI,OAAO,GAAGC,QAAAA;AACxBJ,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGF,WAAAA;QAChC,CAAA,MAAO,IAAI,CAACA,WAAAA,EAAa;AACvBJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAO;AAAG;AAAE,aAAA,CAAA;AAClDK,YAAAA,aAAAA,CAAcI,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC,QAAA;IACF,CAAA,EAAG;AAACF,QAAAA,WAAAA;AAAaT,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMa,YAAAA,GAAelB,QAAQM,aAAAA,CAAc;QAAEa,EAAAA,EAAInB,KAAAA;QAAOoB,cAAAA,EAAgBpB;KAAM,CAAA,GAAK,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aAAAA,CACE;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAAe,EACjE;AAAE,QAAA,GAAGrB,YAAYuB;KAAO,CAAA,GAE1B,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAAA,CAAcL,SAAAA,CAAAA;IAE5B,qBACEuB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC1B,KAAAA,EAAOkB,YAAAA;QAAcG,IAAAA,EAAMA,IAAAA;QAAMlB,IAAAA,EAAMA,IAAAA;;AACjD,0BAAAwB,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,GAAA,CAACE,SAAAA,EAAAA;gBAAUzB,QAAAA,EAAUA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;gBAAIyB,IAAAA,EAAK;;AACxD,0BAAAH,GAAA,CAACF,MAAMM,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAJ,GAAA,CAACF,MAAMO,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
1
+ {"version":3,"file":"SingularName.mjs","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { FormChangeHandler, IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: { displayName?: string };\n name: string;\n onChange: FormChangeHandler<string>;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const previousValue = useRef(value);\n const previousDisplayName = useRef(modifiedData?.displayName || '');\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const newValue = nameToSlug(displayName);\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} type=\"text\" />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","previousValue","previousDisplayName","displayName","useEffect","current","newValue","nameToSlug","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","type","Error","Hint"],"mappings":";;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,MAAAA,CAAOL,QAAAA,CAAAA;AAC3B,IAAA,MAAMM,gBAAgBD,MAAAA,CAAOJ,KAAAA,CAAAA;IAC7B,MAAMM,mBAAAA,GAAsBF,MAAAA,CAAOP,YAAAA,EAAcU,WAAAA,IAAe,EAAA,CAAA;IAChE,MAAMA,WAAAA,GAAcV,cAAcU,WAAAA,IAAe,EAAA;IAEjDC,SAAAA,CAAU,IAAA;AACR,QAAA,IAAID,WAAAA,IAAeA,WAAAA,KAAgBD,mBAAAA,CAAoBG,OAAO,EAAE;AAC9D,YAAA,MAAMC,WAAWC,UAAAA,CAAWJ,WAAAA,CAAAA;AAC5BJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAOU;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcI,OAAO,GAAGC,QAAAA;AACxBJ,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGF,WAAAA;QAChC,CAAA,MAAO,IAAI,CAACA,WAAAA,EAAa;AACvBJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAAA,EAAQ;AAAEd,oBAAAA,IAAAA;oBAAME,KAAAA,EAAO;AAAG;AAAE,aAAA,CAAA;AAClDK,YAAAA,aAAAA,CAAcI,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC,QAAA;IACF,CAAA,EAAG;AAACF,QAAAA,WAAAA;AAAaT,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMa,YAAAA,GAAelB,QAAQM,aAAAA,CAAc;QAAEa,EAAAA,EAAInB,KAAAA;QAAOoB,cAAAA,EAAgBpB;KAAM,CAAA,GAAK,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aAAAA,CACE;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAAe,EACjE;AAAE,QAAA,GAAGrB,YAAYuB;KAAO,CAAA,GAE1B,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAAA,CAAcL,SAAAA,CAAAA;IAE5B,qBACEuB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC1B,KAAAA,EAAOkB,YAAAA;QAAcG,IAAAA,EAAMA,IAAAA;QAAMlB,IAAAA,EAAMA,IAAAA;;AACjD,0BAAAwB,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,GAAA,CAACE,SAAAA,EAAAA;gBAAUzB,QAAAA,EAAUA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAAA,IAAS,EAAA;gBAAIyB,IAAAA,EAAK;;AACxD,0BAAAH,GAAA,CAACF,MAAMM,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAJ,GAAA,CAACF,MAAMO,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
@@ -13,6 +13,7 @@ var get__default = /*#__PURE__*/_interopDefault(get);
13
13
 
14
14
  /* eslint-disable react/no-array-index-key */ const TabForm = ({ form, formErrors, genericInputProps, modifiedData, onChange })=>{
15
15
  const { formatMessage } = reactIntl.useIntl();
16
+ const sharedInputProps = genericInputProps;
16
17
  return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
17
18
  children: form.map((section, sectionIndex)=>{
18
19
  // Don't display an empty section
@@ -38,6 +39,10 @@ var get__default = /*#__PURE__*/_interopDefault(get);
38
39
  gap: 4,
39
40
  children: section.items.map((input, i)=>{
40
41
  const key = `${sectionIndex}.${i}`;
42
+ const intlLabel = input.intlLabel ?? {
43
+ id: input.name,
44
+ defaultMessage: input.name
45
+ };
41
46
  /**
42
47
  * Use undefined as the default value because not every input wants a string e.g. Date pickers
43
48
  */ const value = get__default.default(modifiedData, input.name, undefined);
@@ -50,7 +55,7 @@ var get__default = /*#__PURE__*/_interopDefault(get);
50
55
  // NOTE: this is a hack
51
56
  const pluginOptionError = Object.keys(formErrors).find((key)=>key === input.name);
52
57
  // Retrieve the error for a specific input
53
- const errorId = pluginOptionError ? formErrors[pluginOptionError].id : get__default.default(formErrors, [
58
+ const errorId = pluginOptionError ? formErrors[pluginOptionError]?.id : get__default.default(formErrors, [
54
59
  ...input.name.split('.')// The filter here is used when creating a component
55
60
  // in the component step 1 modal
56
61
  // Since the component info is stored in the
@@ -61,80 +66,73 @@ var get__default = /*#__PURE__*/_interopDefault(get);
61
66
  ], null);
62
67
  if (input.type === 'pushRight') {
63
68
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
64
- col: input.size || 6,
69
+ col: input.size ?? 6,
65
70
  xs: 12,
66
71
  direction: "column",
67
72
  alignItems: "stretch",
68
73
  children: /*#__PURE__*/ jsxRuntime.jsx("div", {})
69
- }, input.name || key);
74
+ }, input.name ?? key);
70
75
  }
71
76
  // Special handling for 'condition-form'
72
77
  if (input.type === 'condition-form') {
73
78
  const currentCondition = get__default.default(modifiedData, input.name);
74
79
  // Get all attributes from the content type schema
75
- const contentTypeAttributes = genericInputProps.contentTypeSchema?.attributes || [];
76
- if (!genericInputProps.contentTypeSchema) {
80
+ const contentTypeAttributes = sharedInputProps.contentTypeSchema?.attributes ?? [];
81
+ if (!sharedInputProps.contentTypeSchema) {
77
82
  console.warn('contentTypeSchema is undefined, skipping condition form');
78
83
  return null;
79
84
  }
80
85
  // Filter for boolean and enumeration fields only, excluding the current field
81
- const availableFields = conditions.getAvailableConditionFields(contentTypeAttributes, modifiedData.name);
86
+ const availableFields = conditions.getAvailableConditionFields(contentTypeAttributes, modifiedData.name ?? '');
82
87
  const noFieldsMessage = formatMessage({
83
88
  id: 'form.attribute.condition.no-fields',
84
89
  defaultMessage: 'No boolean or enumeration fields available to set conditions on.'
85
90
  });
86
91
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
87
- col: input.size || 12,
92
+ col: input.size ?? 12,
88
93
  xs: 12,
89
94
  direction: "column",
90
95
  alignItems: "stretch",
91
- children: !currentCondition || Object.keys(currentCondition).length === 0 ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
92
- children: [
93
- currentCondition && Object.keys(currentCondition).length > 0 && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
94
- variant: "sigma",
95
- textColor: "neutral800",
96
- marginBottom: 2,
97
- children: conditions.formatCondition(currentCondition, availableFields, genericInputProps.attributeName || modifiedData.name)
98
- }),
99
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
100
- label: noFieldsMessage,
101
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
102
- marginTop: currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4,
103
- fullWidth: true,
104
- variant: "secondary",
105
- onClick: ()=>{
106
- onChange({
107
- target: {
108
- name: input.name,
109
- value: {
110
- visible: {
111
- '==': [
112
- {
113
- var: ''
114
- },
115
- ''
116
- ]
117
- }
96
+ children: currentCondition === null || currentCondition === undefined || Object.keys(currentCondition).length === 0 ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
97
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
98
+ label: noFieldsMessage,
99
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
100
+ marginTop: 4,
101
+ fullWidth: true,
102
+ variant: "secondary",
103
+ onClick: ()=>{
104
+ onChange({
105
+ target: {
106
+ name: input.name,
107
+ value: {
108
+ visible: {
109
+ '==': [
110
+ {
111
+ var: ''
112
+ },
113
+ ''
114
+ ]
118
115
  }
119
116
  }
120
- });
121
- },
122
- startIcon: /*#__PURE__*/ jsxRuntime.jsx("span", {
123
- "aria-hidden": true,
124
- children: "+"
125
- }),
126
- disabled: availableFields.length === 0,
127
- children: formatMessage({
128
- id: 'form.attribute.condition.apply',
129
- defaultMessage: 'Apply condition'
130
- })
117
+ }
118
+ });
119
+ },
120
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx("span", {
121
+ "aria-hidden": true,
122
+ children: "+"
123
+ }),
124
+ disabled: availableFields.length === 0,
125
+ children: formatMessage({
126
+ id: 'form.attribute.condition.apply',
127
+ defaultMessage: 'Apply condition'
131
128
  })
132
129
  })
133
- ]
130
+ })
134
131
  }) : /*#__PURE__*/ jsxRuntime.jsx(GenericInputs.GenericInput, {
135
132
  ...input,
136
- ...genericInputProps,
133
+ ...sharedInputProps,
137
134
  error: errorId,
135
+ intlLabel: intlLabel,
138
136
  onChange: onChange,
139
137
  value: value,
140
138
  autoFocus: i === 0,
@@ -148,23 +146,24 @@ var get__default = /*#__PURE__*/_interopDefault(get);
148
146
  });
149
147
  }
150
148
  })
151
- }, input.name || key);
149
+ }, input.name ?? key);
152
150
  }
153
151
  // Default rendering for all other input types
154
152
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
155
- col: input.size || 6,
153
+ col: input.size ?? 6,
156
154
  xs: 12,
157
155
  direction: "column",
158
156
  alignItems: "stretch",
159
157
  children: /*#__PURE__*/ jsxRuntime.jsx(GenericInputs.GenericInput, {
160
158
  ...input,
161
- ...genericInputProps,
159
+ ...sharedInputProps,
162
160
  error: errorId,
161
+ intlLabel: intlLabel,
163
162
  onChange: onChange,
164
163
  value: value,
165
164
  autoFocus: i === 0
166
165
  })
167
- }, input.name || key);
166
+ }, input.name ?? key);
168
167
  })
169
168
  })
170
169
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":"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"}
1
+ {"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\nimport type { AnyAttribute, AttributeConditions, IntlLabel } from '../types';\n\ntype FormInput = Partial<React.ComponentProps<typeof GenericInput>> & {\n name: string;\n type: string;\n size?: number;\n};\n\ntype FormSection = {\n sectionTitle?: IntlLabel | null;\n intlLabel?: IntlLabel;\n items: FormInput[];\n};\n\ntype FormError = {\n id?: string;\n};\n\ntype GenericInputProps = Record<string, unknown> & {\n attributeName?: string;\n contentTypeSchema?: {\n attributes?: AnyAttribute[];\n };\n};\n\ntype ModifiedData = Record<string, unknown> & {\n name?: string;\n};\n\ntype TabFormChangeHandler = (value: {\n target: {\n name: string;\n value?: unknown;\n type?: string;\n };\n}) => void;\n\ntype TabFormProps = {\n form: FormSection[];\n formErrors: Record<string, FormError>;\n genericInputProps: GenericInputProps;\n modifiedData: ModifiedData;\n onChange: TabFormChangeHandler;\n};\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n const sharedInputProps = genericInputProps as Partial<React.ComponentProps<typeof GenericInput>> &\n GenericInputProps;\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input, i) => {\n const key = `${sectionIndex}.${i}`;\n const intlLabel = input.intlLabel ?? {\n id: input.name,\n defaultMessage: input.name,\n };\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError]?.id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name) as\n | AttributeConditions\n | null\n | undefined;\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n sharedInputProps.contentTypeSchema?.attributes ?? [];\n\n if (!sharedInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name ?? ''\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size ?? 12}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {currentCondition === null ||\n currentCondition === undefined ||\n Object.keys(currentCondition).length === 0 ? (\n <Box>\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={4}\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size ?? 6}\n xs={12}\n key={input.name ?? key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...sharedInputProps}\n error={errorId}\n intlLabel={intlLabel}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","sharedInputProps","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","id","name","defaultMessage","value","get","undefined","pluginOptionError","Object","keys","find","errorId","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","attributeName","conditionFields","onDelete"],"mappings":"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"}