@strapi/content-type-builder 5.13.0 → 5.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/dist/admin/components/AttributeIcon.js +1 -0
  2. package/dist/admin/components/AttributeIcon.js.map +1 -1
  3. package/dist/admin/components/AttributeIcon.mjs +1 -0
  4. package/dist/admin/components/AttributeIcon.mjs.map +1 -1
  5. package/dist/admin/components/AttributeOptions/AttributeOption.js +1 -1
  6. package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
  7. package/dist/admin/components/AttributeOptions/AttributeOption.mjs +1 -1
  8. package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
  9. package/dist/admin/components/AttributeOptions/CustomFieldOption.js +1 -1
  10. package/dist/admin/components/AttributeOptions/CustomFieldOption.js.map +1 -1
  11. package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs +1 -1
  12. package/dist/admin/components/AttributeOptions/CustomFieldOption.mjs.map +1 -1
  13. package/dist/admin/components/AttributeRow.js +342 -0
  14. package/dist/admin/components/AttributeRow.js.map +1 -0
  15. package/dist/admin/components/AttributeRow.mjs +339 -0
  16. package/dist/admin/components/AttributeRow.mjs.map +1 -0
  17. package/dist/admin/components/AutoReloadOverlayBlocker.js +5 -2
  18. package/dist/admin/components/AutoReloadOverlayBlocker.js.map +1 -1
  19. package/dist/admin/components/AutoReloadOverlayBlocker.mjs +5 -2
  20. package/dist/admin/components/AutoReloadOverlayBlocker.mjs.map +1 -1
  21. package/dist/admin/components/ComponentCard/ComponentCard.js +13 -11
  22. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  23. package/dist/admin/components/ComponentCard/ComponentCard.mjs +13 -11
  24. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  25. package/dist/admin/components/ComponentList.js +12 -26
  26. package/dist/admin/components/ComponentList.js.map +1 -1
  27. package/dist/admin/components/ComponentList.mjs +12 -26
  28. package/dist/admin/components/ComponentList.mjs.map +1 -1
  29. package/dist/admin/components/{Tr.js → ComponentRow.js} +9 -15
  30. package/dist/admin/components/ComponentRow.js.map +1 -0
  31. package/dist/admin/components/{Tr.mjs → ComponentRow.mjs} +9 -15
  32. package/dist/admin/components/ComponentRow.mjs.map +1 -0
  33. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +253 -70
  34. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  35. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +256 -73
  36. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  37. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +53 -81
  38. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  39. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +54 -82
  40. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  41. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -0
  42. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -0
  43. package/dist/admin/components/DataManager/DataManagerProvider.js +344 -0
  44. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -0
  45. package/dist/admin/components/DataManager/DataManagerProvider.mjs +323 -0
  46. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -0
  47. package/dist/admin/components/DataManager/reducer.js +546 -0
  48. package/dist/admin/components/DataManager/reducer.js.map +1 -0
  49. package/dist/admin/components/DataManager/reducer.mjs +542 -0
  50. package/dist/admin/components/DataManager/reducer.mjs.map +1 -0
  51. package/dist/admin/components/DataManager/undoRedo.js +102 -0
  52. package/dist/admin/components/DataManager/undoRedo.js.map +1 -0
  53. package/dist/admin/components/DataManager/undoRedo.mjs +100 -0
  54. package/dist/admin/components/DataManager/undoRedo.mjs.map +1 -0
  55. package/dist/admin/{hooks → components/DataManager}/useDataManager.js +1 -1
  56. package/dist/admin/components/DataManager/useDataManager.js.map +1 -0
  57. package/dist/admin/{hooks → components/DataManager}/useDataManager.mjs +1 -1
  58. package/dist/admin/components/DataManager/useDataManager.mjs.map +1 -0
  59. package/dist/admin/components/DataManager/useServerRestartWatcher.js +35 -0
  60. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -0
  61. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs +33 -0
  62. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -0
  63. package/dist/admin/components/DataManager/utils/cleanData.js +128 -0
  64. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -0
  65. package/dist/admin/components/DataManager/utils/cleanData.mjs +125 -0
  66. package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -0
  67. package/dist/admin/components/DataManager/utils/formatSchemas.js +21 -0
  68. package/dist/admin/components/DataManager/utils/formatSchemas.js.map +1 -0
  69. package/dist/admin/components/DataManager/utils/formatSchemas.mjs +18 -0
  70. package/dist/admin/components/DataManager/utils/formatSchemas.mjs.map +1 -0
  71. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.js +1 -5
  72. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.js.map +1 -0
  73. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.mjs +1 -5
  74. package/dist/admin/components/DataManager/utils/retrieveComponentsThatHaveComponents.mjs.map +1 -0
  75. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.js +3 -3
  76. package/dist/admin/components/DataManager/utils/retrieveNestedComponents.js.map +1 -0
  77. package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.mjs +3 -3
  78. package/dist/admin/components/DataManager/utils/retrieveNestedComponents.mjs.map +1 -0
  79. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -0
  80. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -0
  81. package/dist/admin/components/DisplayedType.js +14 -14
  82. package/dist/admin/components/DisplayedType.js.map +1 -1
  83. package/dist/admin/components/DisplayedType.mjs +15 -15
  84. package/dist/admin/components/DisplayedType.mjs.map +1 -1
  85. package/dist/admin/components/DynamicZoneList.js +34 -38
  86. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  87. package/dist/admin/components/DynamicZoneList.mjs +36 -40
  88. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  89. package/dist/admin/components/ExitPrompt.js +50 -0
  90. package/dist/admin/components/ExitPrompt.js.map +1 -0
  91. package/dist/admin/components/ExitPrompt.mjs +48 -0
  92. package/dist/admin/components/ExitPrompt.mjs.map +1 -0
  93. package/dist/admin/components/{NestedFooter.js → Footers.js} +35 -2
  94. package/dist/admin/components/Footers.js.map +1 -0
  95. package/dist/admin/components/{NestedFooter.mjs → Footers.mjs} +36 -4
  96. package/dist/admin/components/Footers.mjs.map +1 -0
  97. package/dist/admin/components/FormModal/FormModal.js +198 -164
  98. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  99. package/dist/admin/components/FormModal/FormModal.mjs +198 -165
  100. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  101. package/dist/admin/components/FormModal/attributes/types.js.map +1 -1
  102. package/dist/admin/components/FormModal/attributes/types.mjs.map +1 -1
  103. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  104. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  105. package/dist/admin/components/FormModal/component/createComponentSchema.js +2 -2
  106. package/dist/admin/components/FormModal/component/createComponentSchema.js.map +1 -1
  107. package/dist/admin/components/FormModal/component/createComponentSchema.mjs +1 -1
  108. package/dist/admin/components/FormModal/component/createComponentSchema.mjs.map +1 -1
  109. package/dist/admin/components/FormModal/forms/forms.js +10 -27
  110. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  111. package/dist/admin/components/FormModal/forms/forms.mjs +10 -27
  112. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  113. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  114. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  115. package/dist/admin/components/FormModal/reducer.js +4 -4
  116. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  117. package/dist/admin/components/FormModal/reducer.mjs +4 -4
  118. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  119. package/dist/admin/components/FormModal/utils/canEditContentType.js +9 -14
  120. package/dist/admin/components/FormModal/utils/canEditContentType.js.map +1 -1
  121. package/dist/admin/components/FormModal/utils/canEditContentType.mjs +9 -14
  122. package/dist/admin/components/FormModal/utils/canEditContentType.mjs.map +1 -1
  123. package/dist/admin/components/FormModal/utils/getAttributesToDisplay.js.map +1 -1
  124. package/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs.map +1 -1
  125. package/dist/admin/components/FormModalEndActions.js +1 -34
  126. package/dist/admin/components/FormModalEndActions.js.map +1 -1
  127. package/dist/admin/components/FormModalEndActions.mjs +1 -34
  128. package/dist/admin/components/FormModalEndActions.mjs.map +1 -1
  129. package/dist/admin/components/FormModalHeader.js +10 -28
  130. package/dist/admin/components/FormModalHeader.js.map +1 -1
  131. package/dist/admin/components/FormModalHeader.mjs +10 -28
  132. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  133. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -0
  134. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -0
  135. package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.js +91 -114
  136. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -0
  137. package/dist/admin/components/{FormModalNavigationProvider → FormModalNavigation}/FormModalNavigationProvider.mjs +91 -96
  138. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -0
  139. package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.js +1 -1
  140. package/dist/admin/components/FormModalNavigation/useFormModalNavigation.js.map +1 -0
  141. package/dist/admin/{hooks → components/FormModalNavigation}/useFormModalNavigation.mjs +1 -1
  142. package/dist/admin/components/FormModalNavigation/useFormModalNavigation.mjs.map +1 -0
  143. package/dist/admin/components/FormModalSubHeader.js.map +1 -1
  144. package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
  145. package/dist/admin/components/GenericInputs.js +9 -5
  146. package/dist/admin/components/GenericInputs.js.map +1 -1
  147. package/dist/admin/components/GenericInputs.mjs +9 -5
  148. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  149. package/dist/admin/components/List.js +149 -199
  150. package/dist/admin/components/List.js.map +1 -1
  151. package/dist/admin/components/List.mjs +151 -202
  152. package/dist/admin/components/List.mjs.map +1 -1
  153. package/dist/admin/components/Relation/Relation.js +3 -2
  154. package/dist/admin/components/Relation/Relation.js.map +1 -1
  155. package/dist/admin/components/Relation/Relation.mjs +3 -2
  156. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  157. package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
  158. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  159. package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
  160. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  161. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js +6 -5
  162. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
  163. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs +6 -5
  164. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
  165. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js +19 -21
  166. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
  167. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs +19 -21
  168. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
  169. package/dist/admin/components/SelectCategory.js +1 -1
  170. package/dist/admin/components/SelectCategory.js.map +1 -1
  171. package/dist/admin/components/SelectCategory.mjs +1 -1
  172. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  173. package/dist/admin/components/SelectComponent.js +3 -6
  174. package/dist/admin/components/SelectComponent.js.map +1 -1
  175. package/dist/admin/components/SelectComponent.mjs +3 -6
  176. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  177. package/dist/admin/components/SelectComponents.js +9 -6
  178. package/dist/admin/components/SelectComponents.js.map +1 -1
  179. package/dist/admin/components/SelectComponents.mjs +9 -6
  180. package/dist/admin/components/SelectComponents.mjs.map +1 -1
  181. package/dist/admin/components/SelectNumber.js +0 -4
  182. package/dist/admin/components/SelectNumber.js.map +1 -1
  183. package/dist/admin/components/SelectNumber.mjs +0 -4
  184. package/dist/admin/components/SelectNumber.mjs.map +1 -1
  185. package/dist/admin/components/Status.js +73 -0
  186. package/dist/admin/components/Status.js.map +1 -0
  187. package/dist/admin/components/Status.mjs +70 -0
  188. package/dist/admin/components/Status.mjs.map +1 -0
  189. package/dist/admin/components/TabForm.js +2 -1
  190. package/dist/admin/components/TabForm.js.map +1 -1
  191. package/dist/admin/components/TabForm.mjs +2 -1
  192. package/dist/admin/components/TabForm.mjs.map +1 -1
  193. package/dist/admin/icons/Curve.js +1 -1
  194. package/dist/admin/icons/Curve.js.map +1 -1
  195. package/dist/admin/icons/Curve.mjs +1 -1
  196. package/dist/admin/icons/Curve.mjs.map +1 -1
  197. package/dist/admin/pages/App/index.js +39 -19
  198. package/dist/admin/pages/App/index.js.map +1 -1
  199. package/dist/admin/pages/App/index.mjs +41 -21
  200. package/dist/admin/pages/App/index.mjs.map +1 -1
  201. package/dist/admin/pages/ListView/EmptyState.js +38 -0
  202. package/dist/admin/pages/ListView/EmptyState.js.map +1 -0
  203. package/dist/admin/pages/ListView/EmptyState.mjs +36 -0
  204. package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -0
  205. package/dist/admin/pages/ListView/LinkToCMSettingsView.js +26 -17
  206. package/dist/admin/pages/ListView/LinkToCMSettingsView.js.map +1 -1
  207. package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs +26 -17
  208. package/dist/admin/pages/ListView/LinkToCMSettingsView.mjs.map +1 -1
  209. package/dist/admin/pages/ListView/ListView.js +105 -158
  210. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  211. package/dist/admin/pages/ListView/ListView.mjs +110 -163
  212. package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
  213. package/dist/admin/reducers.js +3 -4
  214. package/dist/admin/reducers.js.map +1 -1
  215. package/dist/admin/reducers.mjs +3 -4
  216. package/dist/admin/reducers.mjs.map +1 -1
  217. package/dist/admin/src/components/AttributeRow.d.ts +28 -0
  218. package/dist/admin/src/components/AutoReloadOverlayBlocker.d.ts +2 -2
  219. package/dist/admin/src/components/ComponentCard/ComponentCard.d.ts +5 -1
  220. package/dist/admin/src/components/ComponentList.d.ts +4 -6
  221. package/dist/admin/src/components/{BoxWrapper.d.ts → ComponentRow.d.ts} +5 -2
  222. package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +29 -14
  223. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +138 -0
  224. package/dist/admin/src/components/DataManager/DataManagerProvider.d.ts +6 -0
  225. package/dist/admin/src/components/DataManager/reducer.d.ts +278 -0
  226. package/dist/admin/src/components/DataManager/undoRedo.d.ts +23 -0
  227. package/dist/admin/src/components/DataManager/useDataManager.d.ts +1 -0
  228. package/dist/admin/src/components/DataManager/useServerRestartWatcher.d.ts +1 -0
  229. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +311 -0
  230. package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +3 -0
  231. package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveComponentsThatHaveComponents.d.ts +3 -3
  232. package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveNestedComponents.d.ts +4 -4
  233. package/dist/admin/src/components/DisplayedType.d.ts +2 -1
  234. package/dist/admin/src/components/DynamicZoneList.d.ts +8 -5
  235. package/dist/admin/src/components/ExitPrompt.d.ts +1 -0
  236. package/dist/admin/src/components/{NestedFooter.d.ts → Footers.d.ts} +5 -1
  237. package/dist/admin/src/components/FormModal/forms/forms.d.ts +2 -38
  238. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +3 -2
  239. package/dist/admin/src/components/FormModal/reducer.d.ts +10 -4
  240. package/dist/admin/src/components/FormModal/utils/canEditContentType.d.ts +4 -4
  241. package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +1 -1
  242. package/dist/admin/src/components/FormModalEndActions.d.ts +1 -5
  243. package/dist/admin/src/components/FormModalHeader.d.ts +10 -7
  244. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +19 -0
  245. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +54 -0
  246. package/dist/admin/src/components/FormModalNavigation/useFormModalNavigation.d.ts +1 -0
  247. package/dist/admin/src/components/FormModalSubHeader.d.ts +3 -3
  248. package/dist/admin/src/components/GenericInputs.d.ts +2 -1
  249. package/dist/admin/src/components/List.d.ts +16 -13
  250. package/dist/admin/src/components/Relation/Relation.d.ts +2 -1
  251. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +2 -1
  252. package/dist/admin/src/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.d.ts +3 -2
  253. package/dist/admin/src/components/Relation/RelationNaturePicker/RelationNaturePicker.d.ts +2 -1
  254. package/dist/admin/src/components/SelectComponents.d.ts +3 -1
  255. package/dist/admin/src/components/SelectNumber.d.ts +1 -7
  256. package/dist/admin/src/components/Status.d.ts +6 -0
  257. package/dist/admin/src/pages/ListView/EmptyState.d.ts +1 -0
  258. package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +3 -4
  259. package/dist/admin/src/pages/ListView/ListView.d.ts +1 -1
  260. package/dist/admin/src/reducers.d.ts +2 -8
  261. package/dist/admin/src/types.d.ts +40 -43
  262. package/dist/admin/src/utils/findAttribute.d.ts +2 -2
  263. package/dist/admin/src/utils/formAPI.d.ts +43 -1
  264. package/dist/admin/src/utils/getMaxDepth.d.ts +2 -2
  265. package/dist/admin/src/utils/getRelationType.d.ts +1 -1
  266. package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +1 -1
  267. package/dist/admin/translations/de.json.js +0 -1
  268. package/dist/admin/translations/de.json.js.map +1 -1
  269. package/dist/admin/translations/de.json.mjs +0 -1
  270. package/dist/admin/translations/de.json.mjs.map +1 -1
  271. package/dist/admin/translations/dk.json.js +0 -1
  272. package/dist/admin/translations/dk.json.js.map +1 -1
  273. package/dist/admin/translations/dk.json.mjs +0 -1
  274. package/dist/admin/translations/dk.json.mjs.map +1 -1
  275. package/dist/admin/translations/en.json.js +4 -2
  276. package/dist/admin/translations/en.json.js.map +1 -1
  277. package/dist/admin/translations/en.json.mjs +4 -2
  278. package/dist/admin/translations/en.json.mjs.map +1 -1
  279. package/dist/admin/translations/es.json.js +0 -1
  280. package/dist/admin/translations/es.json.js.map +1 -1
  281. package/dist/admin/translations/es.json.mjs +0 -1
  282. package/dist/admin/translations/es.json.mjs.map +1 -1
  283. package/dist/admin/translations/ko.json.js +0 -1
  284. package/dist/admin/translations/ko.json.js.map +1 -1
  285. package/dist/admin/translations/ko.json.mjs +0 -1
  286. package/dist/admin/translations/ko.json.mjs.map +1 -1
  287. package/dist/admin/translations/pl.json.js +0 -1
  288. package/dist/admin/translations/pl.json.js.map +1 -1
  289. package/dist/admin/translations/pl.json.mjs +0 -1
  290. package/dist/admin/translations/pl.json.mjs.map +1 -1
  291. package/dist/admin/translations/pt-BR.json.js +0 -1
  292. package/dist/admin/translations/pt-BR.json.js.map +1 -1
  293. package/dist/admin/translations/pt-BR.json.mjs +0 -1
  294. package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
  295. package/dist/admin/translations/sv.json.js +0 -1
  296. package/dist/admin/translations/sv.json.js.map +1 -1
  297. package/dist/admin/translations/sv.json.mjs +0 -1
  298. package/dist/admin/translations/sv.json.mjs.map +1 -1
  299. package/dist/admin/translations/tr.json.js +0 -1
  300. package/dist/admin/translations/tr.json.js.map +1 -1
  301. package/dist/admin/translations/tr.json.mjs +0 -1
  302. package/dist/admin/translations/tr.json.mjs.map +1 -1
  303. package/dist/admin/translations/zh.json.js +0 -1
  304. package/dist/admin/translations/zh.json.js.map +1 -1
  305. package/dist/admin/translations/zh.json.mjs +0 -1
  306. package/dist/admin/translations/zh.json.mjs.map +1 -1
  307. package/dist/admin/utils/findAttribute.js.map +1 -1
  308. package/dist/admin/utils/findAttribute.mjs.map +1 -1
  309. package/dist/admin/utils/formAPI.js +0 -1
  310. package/dist/admin/utils/formAPI.js.map +1 -1
  311. package/dist/admin/utils/formAPI.mjs +0 -1
  312. package/dist/admin/utils/formAPI.mjs.map +1 -1
  313. package/dist/admin/utils/getMaxDepth.js.map +1 -1
  314. package/dist/admin/utils/getMaxDepth.mjs.map +1 -1
  315. package/dist/admin/utils/getRelationType.js.map +1 -1
  316. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  317. package/dist/admin/utils/isAllowedContentTypesForRelations.js.map +1 -1
  318. package/dist/admin/utils/isAllowedContentTypesForRelations.mjs.map +1 -1
  319. package/dist/server/controllers/index.js +3 -1
  320. package/dist/server/controllers/index.js.map +1 -1
  321. package/dist/server/controllers/index.mjs +3 -1
  322. package/dist/server/controllers/index.mjs.map +1 -1
  323. package/dist/server/controllers/schema.js +55 -0
  324. package/dist/server/controllers/schema.js.map +1 -0
  325. package/dist/server/controllers/schema.mjs +53 -0
  326. package/dist/server/controllers/schema.mjs.map +1 -0
  327. package/dist/server/controllers/validation/common.js +2 -0
  328. package/dist/server/controllers/validation/common.js.map +1 -1
  329. package/dist/server/controllers/validation/common.mjs +2 -1
  330. package/dist/server/controllers/validation/common.mjs.map +1 -1
  331. package/dist/server/controllers/validation/content-type.js.map +1 -1
  332. package/dist/server/controllers/validation/content-type.mjs.map +1 -1
  333. package/dist/server/controllers/validation/schema.js +612 -0
  334. package/dist/server/controllers/validation/schema.js.map +1 -0
  335. package/dist/server/controllers/validation/schema.mjs +610 -0
  336. package/dist/server/controllers/validation/schema.mjs.map +1 -0
  337. package/dist/server/routes/admin.js +51 -0
  338. package/dist/server/routes/admin.js.map +1 -1
  339. package/dist/server/routes/admin.mjs +51 -0
  340. package/dist/server/routes/admin.mjs.map +1 -1
  341. package/dist/server/services/index.js +3 -1
  342. package/dist/server/services/index.js.map +1 -1
  343. package/dist/server/services/index.mjs +3 -1
  344. package/dist/server/services/index.mjs.map +1 -1
  345. package/dist/server/services/schema-builder/component-builder.js +12 -2
  346. package/dist/server/services/schema-builder/component-builder.js.map +1 -1
  347. package/dist/server/services/schema-builder/component-builder.mjs +12 -2
  348. package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
  349. package/dist/server/services/schema-builder/content-type-builder.js +43 -28
  350. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  351. package/dist/server/services/schema-builder/content-type-builder.mjs +43 -28
  352. package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
  353. package/dist/server/services/schema-builder/index.js +51 -49
  354. package/dist/server/services/schema-builder/index.js.map +1 -1
  355. package/dist/server/services/schema-builder/index.mjs +51 -49
  356. package/dist/server/services/schema-builder/index.mjs.map +1 -1
  357. package/dist/server/services/schema.js +246 -0
  358. package/dist/server/services/schema.js.map +1 -0
  359. package/dist/server/services/schema.mjs +242 -0
  360. package/dist/server/services/schema.mjs.map +1 -0
  361. package/dist/server/src/controllers/index.d.ts +5 -0
  362. package/dist/server/src/controllers/index.d.ts.map +1 -1
  363. package/dist/server/src/controllers/schema.d.ts +8 -0
  364. package/dist/server/src/controllers/schema.d.ts.map +1 -0
  365. package/dist/server/src/controllers/validation/common.d.ts +1 -0
  366. package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
  367. package/dist/server/src/controllers/validation/content-type.d.ts +3 -2
  368. package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -1
  369. package/dist/server/src/controllers/validation/schema.d.ts +80968 -0
  370. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -0
  371. package/dist/server/src/index.d.ts +6 -0
  372. package/dist/server/src/index.d.ts.map +1 -1
  373. package/dist/server/src/routes/admin.d.ts.map +1 -1
  374. package/dist/server/src/services/index.d.ts +2 -0
  375. package/dist/server/src/services/index.d.ts.map +1 -1
  376. package/dist/server/src/services/schema-builder/component-builder.d.ts +1 -0
  377. package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -1
  378. package/dist/server/src/services/schema-builder/content-type-builder.d.ts +2 -3
  379. package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -1
  380. package/dist/server/src/services/schema-builder/index.d.ts +3 -0
  381. package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
  382. package/dist/server/src/services/schema.d.ts +2756 -0
  383. package/dist/server/src/services/schema.d.ts.map +1 -0
  384. package/dist/server/src/utils/index.d.ts +2 -0
  385. package/dist/server/src/utils/index.d.ts.map +1 -1
  386. package/dist/server/utils/index.js.map +1 -1
  387. package/dist/server/utils/index.mjs.map +1 -1
  388. package/package.json +13 -8
  389. package/dist/admin/components/BoxWrapper.js +0 -44
  390. package/dist/admin/components/BoxWrapper.js.map +0 -1
  391. package/dist/admin/components/BoxWrapper.mjs +0 -42
  392. package/dist/admin/components/BoxWrapper.mjs.map +0 -1
  393. package/dist/admin/components/DataManagerProvider/DataManagerProvider.js +0 -520
  394. package/dist/admin/components/DataManagerProvider/DataManagerProvider.js.map +0 -1
  395. package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs +0 -518
  396. package/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs.map +0 -1
  397. package/dist/admin/components/DataManagerProvider/reducer.js +0 -583
  398. package/dist/admin/components/DataManagerProvider/reducer.js.map +0 -1
  399. package/dist/admin/components/DataManagerProvider/reducer.mjs +0 -579
  400. package/dist/admin/components/DataManagerProvider/reducer.mjs.map +0 -1
  401. package/dist/admin/components/DataManagerProvider/selectors.js +0 -20
  402. package/dist/admin/components/DataManagerProvider/selectors.js.map +0 -1
  403. package/dist/admin/components/DataManagerProvider/selectors.mjs +0 -17
  404. package/dist/admin/components/DataManagerProvider/selectors.mjs.map +0 -1
  405. package/dist/admin/components/DataManagerProvider/utils/cleanData.js +0 -126
  406. package/dist/admin/components/DataManagerProvider/utils/cleanData.js.map +0 -1
  407. package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs +0 -120
  408. package/dist/admin/components/DataManagerProvider/utils/cleanData.mjs.map +0 -1
  409. package/dist/admin/components/DataManagerProvider/utils/createDataObject.js +0 -9
  410. package/dist/admin/components/DataManagerProvider/utils/createDataObject.js.map +0 -1
  411. package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs +0 -7
  412. package/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs.map +0 -1
  413. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js +0 -20
  414. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.js.map +0 -1
  415. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs +0 -18
  416. package/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs.map +0 -1
  417. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js +0 -30
  418. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.js.map +0 -1
  419. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs +0 -27
  420. package/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs.map +0 -1
  421. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js +0 -46
  422. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.js.map +0 -1
  423. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs +0 -44
  424. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs.map +0 -1
  425. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.js.map +0 -1
  426. package/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.mjs.map +0 -1
  427. package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.js.map +0 -1
  428. package/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.mjs.map +0 -1
  429. package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.js.map +0 -1
  430. package/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.mjs.map +0 -1
  431. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js +0 -37
  432. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.js.map +0 -1
  433. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs +0 -35
  434. package/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs.map +0 -1
  435. package/dist/admin/components/DataManagerProvider/utils/validateSchema.js +0 -9
  436. package/dist/admin/components/DataManagerProvider/utils/validateSchema.js.map +0 -1
  437. package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs +0 -7
  438. package/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs.map +0 -1
  439. package/dist/admin/components/FormModal/category/createCategorySchema.js +0 -43
  440. package/dist/admin/components/FormModal/category/createCategorySchema.js.map +0 -1
  441. package/dist/admin/components/FormModal/category/createCategorySchema.mjs +0 -22
  442. package/dist/admin/components/FormModal/category/createCategorySchema.mjs.map +0 -1
  443. package/dist/admin/components/FormModal/category/form.js +0 -34
  444. package/dist/admin/components/FormModal/category/form.js.map +0 -1
  445. package/dist/admin/components/FormModal/category/form.mjs +0 -32
  446. package/dist/admin/components/FormModal/category/form.mjs.map +0 -1
  447. package/dist/admin/components/FormModal/category/regex.js +0 -6
  448. package/dist/admin/components/FormModal/category/regex.js.map +0 -1
  449. package/dist/admin/components/FormModal/category/regex.mjs +0 -4
  450. package/dist/admin/components/FormModal/category/regex.mjs.map +0 -1
  451. package/dist/admin/components/FormModal/selectors.js +0 -20
  452. package/dist/admin/components/FormModal/selectors.js.map +0 -1
  453. package/dist/admin/components/FormModal/selectors.mjs +0 -17
  454. package/dist/admin/components/FormModal/selectors.mjs.map +0 -1
  455. package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.js.map +0 -1
  456. package/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.mjs.map +0 -1
  457. package/dist/admin/components/FormModalNavigationProvider/constants.js +0 -21
  458. package/dist/admin/components/FormModalNavigationProvider/constants.js.map +0 -1
  459. package/dist/admin/components/FormModalNavigationProvider/constants.mjs +0 -19
  460. package/dist/admin/components/FormModalNavigationProvider/constants.mjs.map +0 -1
  461. package/dist/admin/components/ListRow.js +0 -164
  462. package/dist/admin/components/ListRow.js.map +0 -1
  463. package/dist/admin/components/ListRow.mjs +0 -161
  464. package/dist/admin/components/ListRow.mjs.map +0 -1
  465. package/dist/admin/components/NestedFooter.js.map +0 -1
  466. package/dist/admin/components/NestedFooter.mjs.map +0 -1
  467. package/dist/admin/components/Tr.js.map +0 -1
  468. package/dist/admin/components/Tr.mjs.map +0 -1
  469. package/dist/admin/components/UpperFirst.js +0 -11
  470. package/dist/admin/components/UpperFirst.js.map +0 -1
  471. package/dist/admin/components/UpperFirst.mjs +0 -9
  472. package/dist/admin/components/UpperFirst.mjs.map +0 -1
  473. package/dist/admin/contexts/DataManagerContext.js.map +0 -1
  474. package/dist/admin/contexts/DataManagerContext.mjs.map +0 -1
  475. package/dist/admin/contexts/FormModalNavigationContext.js.map +0 -1
  476. package/dist/admin/contexts/FormModalNavigationContext.mjs.map +0 -1
  477. package/dist/admin/hooks/useDataManager.js.map +0 -1
  478. package/dist/admin/hooks/useDataManager.mjs.map +0 -1
  479. package/dist/admin/hooks/useFormModalNavigation.js.map +0 -1
  480. package/dist/admin/hooks/useFormModalNavigation.mjs.map +0 -1
  481. package/dist/admin/src/components/DataManagerProvider/DataManagerProvider.d.ts +0 -6
  482. package/dist/admin/src/components/DataManagerProvider/reducer.d.ts +0 -103
  483. package/dist/admin/src/components/DataManagerProvider/selectors.d.ts +0 -17
  484. package/dist/admin/src/components/DataManagerProvider/utils/cleanData.d.ts +0 -23
  485. package/dist/admin/src/components/DataManagerProvider/utils/createDataObject.d.ts +0 -2
  486. package/dist/admin/src/components/DataManagerProvider/utils/createModifiedDataSchema.d.ts +0 -6
  487. package/dist/admin/src/components/DataManagerProvider/utils/formatSchemas.d.ts +0 -6
  488. package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.d.ts +0 -4
  489. package/dist/admin/src/components/DataManagerProvider/utils/serverRestartWatcher.d.ts +0 -6
  490. package/dist/admin/src/components/DataManagerProvider/utils/validateSchema.d.ts +0 -1
  491. package/dist/admin/src/components/FormModal/category/createCategorySchema.d.ts +0 -5
  492. package/dist/admin/src/components/FormModal/category/form.d.ts +0 -20
  493. package/dist/admin/src/components/FormModal/category/regex.d.ts +0 -1
  494. package/dist/admin/src/components/FormModal/selectors.d.ts +0 -16
  495. package/dist/admin/src/components/FormModalNavigationProvider/FormModalNavigationProvider.d.ts +0 -22
  496. package/dist/admin/src/components/FormModalNavigationProvider/constants.d.ts +0 -17
  497. package/dist/admin/src/components/ListRow.d.ts +0 -27
  498. package/dist/admin/src/components/Tr.d.ts +0 -5
  499. package/dist/admin/src/components/UpperFirst.d.ts +0 -3
  500. package/dist/admin/src/contexts/DataManagerContext.d.ts +0 -41
  501. package/dist/admin/src/contexts/FormModalNavigationContext.d.ts +0 -40
  502. package/dist/admin/src/hooks/useDataManager.d.ts +0 -1
  503. package/dist/admin/src/hooks/useFormModalNavigation.d.ts +0 -1
  504. /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.js +0 -0
  505. /package/dist/admin/{contexts → components/DataManager}/DataManagerContext.mjs +0 -0
  506. /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.js +0 -0
  507. /package/dist/admin/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.mjs +0 -0
  508. /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.js +0 -0
  509. /package/dist/admin/{contexts → components/FormModalNavigation}/FormModalNavigationContext.mjs +0 -0
  510. /package/dist/admin/src/components/{DataManagerProvider → DataManager}/utils/retrieveSpecificInfoFromComponents.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"FormModal.mjs","sources":["../../../../admin/src/components/FormModal/FormModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useStrapiApp, useTracking, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Modal, Tabs } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEqual from 'lodash/isEqual';\nimport set from 'lodash/set';\nimport toLower from 'lodash/toLower';\nimport { useIntl } from 'react-intl';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../hooks/useDataManager';\nimport { useFormModalNavigation } from '../../hooks/useFormModalNavigation';\nimport { pluginId } from '../../pluginId';\nimport { getTrad, isAllowedContentTypesForRelations } from '../../utils';\nimport { findAttribute } from '../../utils/findAttribute';\nimport { getYupInnerErrors } from '../../utils/getYupInnerErrors';\n// New compos\nimport { AllowedTypesSelect } from '../AllowedTypesSelect';\nimport { IconByType } from '../AttributeIcon';\nimport { AttributeOptions } from '../AttributeOptions/AttributeOptions';\nimport { BooleanDefaultValueSelect } from '../BooleanDefaultValueSelect';\nimport { BooleanRadioGroup } from '../BooleanRadioGroup';\nimport { CheckboxWithNumberField } from '../CheckboxWithNumberField';\nimport { ContentTypeRadioGroup } from '../ContentTypeRadioGroup';\nimport { CustomRadioGroup } from '../CustomRadioGroup';\nimport { DraftAndPublishToggle } from '../DraftAndPublishToggle';\nimport { FormModalEndActions } from '../FormModalEndActions';\nimport { FormModalHeader } from '../FormModalHeader';\nimport { FormModalSubHeader } from '../FormModalSubHeader';\nimport { IconPicker } from '../IconPicker/IconPicker';\nimport { PluralName } from '../PluralName';\nimport { Relation } from '../Relation/Relation';\nimport { SelectCategory } from '../SelectCategory';\nimport { SelectComponent } from '../SelectComponent';\nimport { SelectComponents } from '../SelectComponents';\nimport { SelectDateType } from '../SelectDateType';\nimport { SelectNumber } from '../SelectNumber';\nimport { SingularName } from '../SingularName';\nimport { TabForm } from '../TabForm';\nimport { TextareaEnum } from '../TextareaEnum';\n\nimport { forms } from './forms/forms';\nimport { actions } from './reducer';\nimport { makeSelectFormModal } from './selectors';\nimport { canEditContentType } from './utils/canEditContentType';\nimport { createComponentUid, createUid } from './utils/createUid';\nimport { getAttributesToDisplay } from './utils/getAttributesToDisplay';\nimport { getFormInputNames } from './utils/getFormInputNames';\n\nimport type { CustomFieldAttributeParams } from '../../contexts/DataManagerContext';\nimport type { AttributeType } from '../../types';\nimport type { Internal } from '@strapi/types';\n\n/* eslint-disable indent */\n/* eslint-disable react/no-array-index-key */\n\nconst FormComponent = styled.form`\n overflow: auto;\n`;\n\nexport const FormModal = () => {\n const {\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onNavigateToCreateComponentStep2,\n actionType,\n attributeName,\n attributeType,\n customFieldUid,\n categoryName,\n dynamicZoneTarget,\n forTarget,\n modalType,\n isOpen,\n kind,\n step,\n targetUid,\n showBackLink,\n activeTab,\n setActiveTab,\n } = useFormModalNavigation();\n\n const getPlugin = useStrapiApp('FormModal', (state) => state.getPlugin);\n const getCustomField = useStrapiApp('FormModal', (state) => state.customFields.get);\n const customField = getCustomField(customFieldUid);\n\n const formModalSelector = React.useMemo(makeSelectFormModal, []);\n const dispatch = useDispatch();\n const { toggleNotification } = useNotification();\n const reducerState = useSelector((state) => formModalSelector(state), shallowEqual);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const ctbPlugin = getPlugin(pluginId);\n const ctbFormsAPI: any = ctbPlugin?.apis.forms;\n const inputsFromPlugins = ctbFormsAPI.components.inputs;\n\n const {\n addAttribute,\n addCustomFieldAttribute,\n addCreatedComponentToDynamicZone,\n allComponentsCategories,\n changeDynamicZoneComponents,\n contentTypes,\n components,\n createSchema,\n deleteCategory,\n deleteData,\n editCategory,\n editCustomFieldAttribute,\n submitData,\n modifiedData: allDataSchema,\n nestedComponents,\n setModifiedData,\n sortedContentTypesList,\n updateSchema,\n reservedNames,\n } = useDataManager();\n\n const {\n componentToCreate,\n formErrors,\n initialData,\n isCreatingComponentWhileAddingAField,\n modifiedData,\n } = reducerState;\n\n const pathToSchema =\n forTarget === 'contentType' || forTarget === 'component' ? [forTarget] : [forTarget, targetUid];\n\n React.useEffect(() => {\n if (isOpen) {\n const collectionTypesForRelation = sortedContentTypesList.filter(\n isAllowedContentTypesForRelations\n );\n\n // Reset all the modification when opening the edit category modal\n if (modalType === 'editCategory') {\n setModifiedData();\n }\n\n if (actionType === 'edit' && modalType === 'attribute' && forTarget === 'contentType') {\n trackUsage('willEditFieldOfContentType');\n }\n\n const pathToAttributes = [...pathToSchema, 'schema', 'attributes'];\n\n // Case:\n // the user opens the modal chooseAttributes\n // selects dynamic zone => set the field name\n // then goes to step 1 (the modal is addComponentToDynamicZone) and finally reloads the app.\n // In this particular if the user tries to add components to the zone it will pop an error since the dz is unknown\n const foundDynamicZoneTarget =\n findAttribute(get(allDataSchema, pathToAttributes, []), dynamicZoneTarget) || null;\n\n // Edit category\n if (modalType === 'editCategory' && actionType === 'edit') {\n dispatch(\n actions.setDataToEdit({\n data: {\n name: categoryName,\n },\n })\n );\n }\n\n // Create content type we need to add the default option draftAndPublish\n if (modalType === 'contentType' && actionType === 'create') {\n dispatch(\n actions.setDataToEdit({\n data: {\n draftAndPublish: true,\n },\n })\n );\n }\n\n // Edit content type\n if (modalType === 'contentType' && actionType === 'edit') {\n const { displayName, draftAndPublish, kind, pluginOptions, pluralName, singularName } = get(\n allDataSchema,\n [...pathToSchema, 'schema'],\n {\n displayName: null,\n pluginOptions: {},\n singularName: null,\n pluralName: null,\n }\n );\n\n dispatch(\n actions.setDataToEdit({\n data: {\n displayName,\n draftAndPublish,\n kind,\n pluginOptions,\n pluralName,\n singularName,\n },\n })\n );\n }\n\n // Edit component\n if (modalType === 'component' && actionType === 'edit') {\n const data = get(allDataSchema, pathToSchema, {});\n\n dispatch(\n actions.setDataToEdit({\n data: {\n displayName: data.schema.displayName,\n category: data.category,\n icon: data.schema.icon,\n },\n })\n );\n }\n\n // Special case for the dynamic zone\n if (modalType === 'addComponentToDynamicZone' && actionType === 'edit') {\n const attributeToEdit = {\n ...foundDynamicZoneTarget,\n // We filter the available components\n // Because this modal is only used for adding components\n components: [],\n name: dynamicZoneTarget,\n createComponent: false,\n componentToCreate: { type: 'component' },\n };\n\n dispatch(\n actions.setDynamicZoneDataSchema({\n attributeToEdit,\n })\n );\n }\n\n // Set the predefined data structure to create an attribute\n if (attributeType) {\n const attributeToEditNotFormatted = findAttribute(\n get(allDataSchema, pathToAttributes, []),\n attributeName\n ) as AttributeType;\n const attributeToEdit = {\n ...attributeToEditNotFormatted,\n name: attributeName,\n };\n\n // We need to set the repeatable key to false when editing a component\n // The API doesn't send this info\n if (attributeType === 'component' && actionType === 'edit') {\n if (!attributeToEdit.repeatable) {\n set(attributeToEdit, 'repeatable', false);\n }\n }\n\n if (modalType === 'customField') {\n if (actionType === 'edit') {\n dispatch(\n actions.setCustomFieldDataSchema({\n isEditing: true,\n modifiedDataToSetForEditing: attributeToEdit,\n })\n );\n } else {\n dispatch(\n actions.setCustomFieldDataSchema({\n customField: customField!,\n isEditing: false,\n modifiedDataToSetForEditing: attributeToEdit,\n })\n );\n }\n } else {\n dispatch(\n actions.setAttributeDataSchema({\n attributeType,\n nameToSetForRelation: get(collectionTypesForRelation, ['0', 'title'], 'error'),\n targetUid: get(collectionTypesForRelation, ['0', 'uid'], 'error'),\n isEditing: actionType === 'edit',\n modifiedDataToSetForEditing: attributeToEdit,\n step,\n // forTarget,\n })\n );\n }\n }\n } else {\n dispatch(actions.resetProps());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n actionType,\n attributeName,\n attributeType,\n categoryName,\n dynamicZoneTarget,\n forTarget,\n isOpen,\n modalType,\n ]);\n\n const isCreatingContentType = modalType === 'contentType';\n const isCreatingComponent = modalType === 'component';\n const isCreatingAttribute = modalType === 'attribute';\n const isCreatingCustomFieldAttribute = modalType === 'customField';\n const isComponentAttribute = attributeType === 'component' && isCreatingAttribute;\n const isCreating = actionType === 'create';\n const isCreatingComponentFromAView =\n get(modifiedData, 'createComponent', false) || isCreatingComponentWhileAddingAField;\n const isInFirstComponentStep = step === '1';\n const isEditingCategory = modalType === 'editCategory';\n const isPickingAttribute = modalType === 'chooseAttribute';\n const uid = createUid(modifiedData.displayName || '');\n const attributes = get(allDataSchema, [...pathToSchema, 'schema', 'attributes'], null) as {\n name: string;\n }[];\n\n const checkFormValidity = async () => {\n let schema;\n const dataToValidate =\n isCreatingComponentFromAView && step === '1'\n ? get(modifiedData, 'componentToCreate', {})\n : modifiedData;\n // Check form validity for content type\n if (isCreatingContentType) {\n schema = forms.contentType.schema(\n Object.keys(contentTypes),\n actionType === 'edit',\n // currentUID\n get(allDataSchema, [...pathToSchema, 'uid'], null),\n reservedNames,\n ctbFormsAPI,\n contentTypes\n );\n\n // Check form validity for component\n // This is happening when the user click on the link from the left menu\n } else if (isCreatingComponent) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n modifiedData.category || '',\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.displayName || '',\n get(allDataSchema, [...pathToSchema, 'uid'], null)\n // ctbFormsAPI\n );\n } else if (isCreatingCustomFieldAttribute) {\n schema = forms.customField.schema({\n schemaAttributes: get(allDataSchema, [...pathToSchema, 'schema', 'attributes'], []),\n attributeType: customField!.type,\n reservedNames,\n schemaData: { modifiedData, initialData },\n ctbFormsAPI,\n customFieldValidator: customField!.options?.validator,\n });\n\n // Check for validity for creating a component\n // This is happening when the user creates a component \"on the fly\"\n // Since we temporarily store the component info in another object\n // The data is set in the componentToCreate key\n } else if (isComponentAttribute && isCreatingComponentFromAView && isInFirstComponentStep) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n get(modifiedData, 'componentToCreate.category', ''),\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.componentToCreate.displayName || ''\n );\n\n // Check form validity for creating a 'common attribute'\n // We need to make sure that it is independent from the step\n } else if (isCreatingAttribute && !isInFirstComponentStep) {\n const type = attributeType === 'relation' ? 'relation' : modifiedData.type;\n\n let alreadyTakenTargetContentTypeAttributes = [];\n\n if (type === 'relation') {\n const targetContentTypeUID = get(modifiedData, ['target'], null);\n\n const targetContentTypeAttributes = get(\n contentTypes,\n [targetContentTypeUID, 'schema', 'attributes'],\n []\n );\n\n // Create an array with all the targetContentType attributes name\n // in order to prevent the user from creating a relation with a targetAttribute\n // that may exist in the other content type\n alreadyTakenTargetContentTypeAttributes = targetContentTypeAttributes.filter(\n ({ name: attrName }: { name: string }) => {\n // Keep all the target content type attributes when creating a relation\n if (actionType !== 'edit') {\n return true;\n }\n\n // Remove the already created one when editing\n return attrName !== initialData.targetAttribute;\n }\n );\n }\n schema = forms.attribute.schema(\n get(allDataSchema, pathToSchema, {}),\n type,\n reservedNames,\n alreadyTakenTargetContentTypeAttributes,\n { modifiedData, initialData },\n ctbFormsAPI\n );\n } else if (isEditingCategory) {\n schema = forms.editCategory.schema(allComponentsCategories, initialData);\n } else {\n // The user is either in the addComponentToDynamicZone modal or\n // in step 1 of the add component (modalType=attribute&attributeType=component) but not creating a component\n // eslint-disable-next-line no-lonely-if\n if (isInFirstComponentStep && isCreatingComponentFromAView) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n get(modifiedData, 'componentToCreate.category', ''),\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.componentToCreate.displayName || ''\n );\n } else {\n // The form is valid\n // The case here is being in the addComponentToDynamicZone modal and not creating a component\n return;\n }\n }\n\n await schema.validate(dataToValidate, { abortEarly: false });\n };\n\n const handleChange = React.useCallback(\n ({\n target: { name, value, type, ...rest },\n }: {\n target: { name: string; value: string; type: string };\n }) => {\n const namesThatCanResetToNullValue = [\n 'enumName',\n 'max',\n 'min',\n 'maxLength',\n 'minLength',\n 'regex',\n 'default',\n ];\n\n let val;\n\n if (namesThatCanResetToNullValue.includes(name) && value === '') {\n val = null;\n } else {\n val = value;\n }\n\n const clonedErrors = Object.assign({}, formErrors);\n\n // Reset min error when modifying the max\n if (name === 'max') {\n delete clonedErrors.min;\n }\n\n // Same here\n if (name === 'maxLength') {\n delete clonedErrors.minLength;\n }\n\n // Since the onBlur is deactivated we remove the errors directly when changing an input\n delete clonedErrors[name];\n\n dispatch(\n actions.setErrors({\n errors: clonedErrors,\n })\n );\n\n dispatch(\n actions.onChange({\n keys: name.split('.'),\n value: val,\n })\n );\n },\n [dispatch, formErrors]\n );\n\n const handleSubmit = async (e: React.SyntheticEvent, shouldContinue = isCreating) => {\n e.preventDefault();\n\n try {\n await checkFormValidity();\n\n sendButtonAddMoreFieldEvent(shouldContinue);\n const ctTargetUid = forTarget === 'components' ? targetUid : uid;\n\n if (isCreatingContentType) {\n // Create the content type schema\n if (isCreating) {\n createSchema({ ...modifiedData, kind }, modalType, uid);\n // Redirect the user to the created content type\n navigate({ pathname: `/plugins/${pluginId}/content-types/${uid}` });\n\n // Navigate to the choose attribute modal\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n // We cannot switch from collection type to single when the modal is making relations other than oneWay or manyWay\n if (canEditContentType(allDataSchema, modifiedData)) {\n onCloseModal();\n\n await submitData(modifiedData);\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.contentType.relations.conflict' }),\n });\n }\n\n return;\n }\n // We are creating a component using the component modal from the left menu\n } else if (modalType === 'component') {\n if (isCreating) {\n // Create the component schema\n const componentUid = createComponentUid(modifiedData.displayName, modifiedData.category);\n const { category, ...rest } = modifiedData;\n\n createSchema(rest, 'component', componentUid, category);\n\n // Redirect the user to the created component\n navigate({\n pathname: `/plugins/${pluginId}/component-categories/${category}/${componentUid}`,\n });\n\n // Navigate to the choose attribute modal\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: componentUid,\n });\n } else {\n updateSchema(modifiedData, modalType, targetUid as Internal.UID.Component);\n\n // Close the modal\n onCloseModal();\n\n return;\n }\n } else if (isEditingCategory) {\n if (toLower(initialData.name) === toLower(modifiedData.name)) {\n // Close the modal\n onCloseModal();\n\n return;\n }\n\n editCategory(initialData.name, modifiedData);\n\n return;\n // Add/edit a field to a content type\n // Add/edit a field to a created component (the end modal is not step 2)\n } else if (isCreatingCustomFieldAttribute) {\n const customFieldAttributeUpdate: CustomFieldAttributeParams = {\n attributeToSet: { ...modifiedData, customField: customFieldUid },\n forTarget,\n targetUid,\n initialAttribute: initialData,\n };\n\n if (actionType === 'edit') {\n editCustomFieldAttribute(customFieldAttributeUpdate);\n } else {\n addCustomFieldAttribute(customFieldAttributeUpdate);\n }\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n onCloseModal();\n }\n\n return;\n } else if (isCreatingAttribute && !isCreatingComponentFromAView) {\n const isDynamicZoneAttribute = attributeType === 'dynamiczone';\n\n // The user is creating a DZ (he had entered the name of the dz)\n if (isDynamicZoneAttribute) {\n addAttribute(modifiedData, forTarget, targetUid, actionType === 'edit', initialData);\n\n // Adding a component to a dynamiczone is not the same logic as creating a simple field\n // so the search is different\n if (isCreating) {\n // Step 1 of adding a component to a DZ, the user has the option to create a component\n dispatch(actions.resetPropsAndSetTheFormForAddingACompoToADz());\n\n setActiveTab('basic');\n onNavigateToAddCompoToDZModal({ dynamicZoneTarget: modifiedData.name });\n } else {\n onCloseModal();\n }\n\n return;\n }\n\n // Normal fields like boolean relations or dynamic zone\n if (!isComponentAttribute) {\n addAttribute(modifiedData, forTarget, targetUid, actionType === 'edit', initialData);\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n onCloseModal();\n }\n\n return;\n\n // Adding an existing component\n }\n // eslint-disable-next-line no-lonely-if\n if (isInFirstComponentStep) {\n // Navigate the user to step 2\n onNavigateToCreateComponentStep2();\n\n // Clear the reducer and prepare the modified data\n // This way we don't have to add some logic to re-run the useEffect\n // The first step is either needed to create a component or just to navigate\n // To the modal for adding a \"common field\"\n dispatch(actions.resetPropsAndSetFormForAddingAnExistingCompo({}));\n\n // We don't want all the props to be reset\n return;\n\n // Here we are in step 2\n // The step 2 is also use to edit an attribute that is a component\n }\n\n addAttribute(\n modifiedData,\n forTarget,\n targetUid,\n // This change the dispatched type\n // either 'editAttribute' or 'addAttribute' in the DataManagerProvider\n actionType === 'edit',\n // This is for the edit part\n initialData,\n // Passing true will add the component to the components object\n // This way we can add fields to the added component (if it wasn't there already)\n true\n );\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid,\n });\n } else {\n onCloseModal();\n }\n\n // We don't need to end the loop here we want the reducer to be reinitialized\n\n // Logic for creating a component without clicking on the link in\n // the left menu\n // We need to separate the logic otherwise the component would be created\n // even though the user didn't set any field\n // We need to prevent the component from being created if the user closes the modal at step 2 without any submission\n } else if (isCreatingAttribute && isCreatingComponentFromAView) {\n // Step 1\n if (isInFirstComponentStep) {\n // Here the search could be refactored since it is the same as the case from above\n // Navigate the user to step 2\n\n trackUsage('willCreateComponentFromAttributesModal');\n\n // Here we clear the reducer state but we also keep the created component\n // If we were to create the component before\n dispatch(actions.resetPropsAndSaveCurrentData({}));\n\n onNavigateToCreateComponentStep2();\n\n // Terminate because we don't want the reducer to be entirely reset\n return;\n\n // Step 2 of creating a component (which is setting the attribute name in the parent's schema)\n }\n // We are destructuring because the modifiedData object doesn't have the appropriate format to create a field\n const { category, type, ...rest } = componentToCreate;\n // Create a the component temp UID\n // This could be refactored but I think it's more understandable to separate the logic\n const componentUid = createComponentUid(componentToCreate.displayName, category);\n // Create the component first and add it to the components data\n createSchema(\n // Component data\n rest,\n // Type will always be component\n // It will dispatch the CREATE_COMPONENT_SCHEMA action\n // So the component will be added in the main components object\n // This might not be needed if we don't allow navigation between entries while editing\n type,\n componentUid,\n category,\n // This will add the created component in the datamanager modifiedData components key\n // Like explained above we will be able to modify the created component structure\n isCreatingComponentFromAView\n );\n // Add the field to the schema\n addAttribute(modifiedData, forTarget, targetUid, false);\n\n dispatch(actions.resetProps());\n\n // Open modal attribute for adding attr to component\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({ forTarget: 'components', targetUid: componentUid });\n } else {\n onCloseModal();\n }\n\n return;\n } else {\n // The modal is addComponentToDynamicZone\n if (isInFirstComponentStep) {\n if (isCreatingComponentFromAView) {\n const { category, type, ...rest } = modifiedData.componentToCreate;\n const componentUid = createComponentUid(\n modifiedData.componentToCreate.displayName,\n category\n );\n // Create the component first and add it to the components data\n createSchema(\n // Component data\n rest,\n // Type will always be component\n // It will dispatch the CREATE_COMPONENT_SCHEMA action\n // So the component will be added in the main components object\n // This might not be needed if we don't allow navigation between entries while editing\n type,\n componentUid,\n category,\n // This will add the created component in the datamanager modifiedData components key\n // Like explained above we will be able to modify the created component structure\n isCreatingComponentFromAView\n );\n // Add the created component to the DZ\n // We don't want to remove the old ones\n addCreatedComponentToDynamicZone(dynamicZoneTarget, [componentUid]);\n\n // The Dynamic Zone and the component is created\n // Open the modal to add fields to the created component\n onNavigateToChooseAttributeModal({ forTarget: 'components', targetUid: componentUid });\n } else {\n // Add the components to the DZ\n changeDynamicZoneComponents(dynamicZoneTarget, modifiedData.components);\n\n onCloseModal();\n }\n } else {\n console.error('This case is not handled');\n }\n\n return;\n }\n\n dispatch(actions.resetProps());\n } catch (err: any) {\n const errors = getYupInnerErrors(err);\n\n dispatch(\n actions.setErrors({\n errors,\n })\n );\n }\n };\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onCloseModal();\n dispatch(actions.resetProps());\n }\n };\n\n const handleClosed = () => {\n // Close the modal\n if (!isEqual(modifiedData, initialData)) {\n handleConfirmClose();\n } else {\n onCloseModal();\n // Reset the reducer\n dispatch(actions.resetProps());\n }\n };\n\n const sendAdvancedTabEvent = (tab: string) => {\n if (tab !== 'advanced') {\n return;\n }\n\n if (isCreatingContentType) {\n trackUsage('didSelectContentTypeSettings');\n\n return;\n }\n\n if (forTarget === 'contentType') {\n trackUsage('didSelectContentTypeFieldSettings');\n }\n };\n\n const sendButtonAddMoreFieldEvent = (shouldContinue: boolean) => {\n if (\n modalType === 'attribute' &&\n forTarget === 'contentType' &&\n attributeType !== 'dynamiczone' &&\n shouldContinue\n ) {\n trackUsage('willAddMoreFieldToContentType');\n }\n };\n\n const shouldDisableAdvancedTab = () => {\n if (modalType === 'editCategory') {\n return true;\n }\n\n if (modalType === 'component') {\n return true;\n }\n\n if (has(modifiedData, 'createComponent')) {\n return true;\n }\n\n return false;\n };\n\n // Display data for the attributes picker modal\n const displayedAttributes = getAttributesToDisplay(\n forTarget,\n targetUid,\n // We need the nested components so we know when to remove the component option\n nestedComponents\n );\n\n if (!modalType) {\n return null;\n }\n\n const formToDisplay = get(forms, [modalType, 'form'], {\n advanced: () => ({\n sections: [],\n }),\n base: () => ({\n sections: [],\n }),\n });\n\n const isAddingAComponentToAnotherComponent =\n forTarget === 'components' || forTarget === 'component';\n\n const genericInputProps = {\n customInputs: {\n 'allowed-types-select': AllowedTypesSelect,\n 'boolean-radio-group': BooleanRadioGroup,\n 'checkbox-with-number-field': CheckboxWithNumberField,\n 'icon-picker': IconPicker,\n 'content-type-radio-group': ContentTypeRadioGroup,\n 'radio-group': CustomRadioGroup,\n relation: Relation,\n 'select-category': SelectCategory,\n 'select-component': SelectComponent,\n 'select-components': SelectComponents,\n 'select-default-boolean': BooleanDefaultValueSelect,\n 'select-number': SelectNumber,\n 'select-date': SelectDateType,\n 'toggle-draft-publish': DraftAndPublishToggle,\n 'text-plural': PluralName,\n 'text-singular': SingularName,\n 'textarea-enum': TextareaEnum,\n ...inputsFromPlugins,\n },\n componentToCreate,\n dynamicZoneTarget,\n formErrors,\n isAddingAComponentToAnotherComponent,\n isCreatingComponentWhileAddingAField,\n mainBoxHeader: get(allDataSchema, [...pathToSchema, 'schema', 'displayName'], ''),\n modifiedData,\n naturePickerType: forTarget,\n isCreating,\n targetUid,\n forTarget,\n };\n\n const advancedForm = formToDisplay.advanced({\n data: modifiedData,\n type: attributeType,\n step,\n actionType,\n attributes,\n extensions: ctbFormsAPI,\n forTarget,\n contentTypeSchema: allDataSchema.contentType || {},\n customField,\n }).sections;\n const baseForm = formToDisplay.base({\n data: modifiedData,\n type: attributeType,\n step,\n actionType,\n attributes,\n extensions: ctbFormsAPI,\n forTarget,\n contentTypeSchema: allDataSchema.contentType || {},\n customField,\n }).sections;\n\n const baseFormInputNames = getFormInputNames(baseForm);\n\n const advancedFormInputNames = getFormInputNames(advancedForm);\n const doesBaseFormHasError = Object.keys(formErrors).some((key) =>\n baseFormInputNames.includes(key)\n );\n\n const doesAdvancedFormHasError = Object.keys(formErrors).some((key) =>\n advancedFormInputNames.includes(key)\n );\n\n const schemaKind = get(contentTypes, [targetUid, 'schema', 'kind']);\n\n const checkIsEditingFieldName = () =>\n actionType === 'edit' && attributes.every(({ name }) => name !== modifiedData?.name);\n\n const handleClickFinish = () => {\n if (checkIsEditingFieldName()) {\n trackUsage('didEditFieldNameOnContentType');\n }\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClosed}>\n <Modal.Content>\n <FormModalHeader\n actionType={actionType}\n attributeName={attributeName}\n categoryName={categoryName}\n contentTypeKind={kind as IconByType}\n dynamicZoneTarget={dynamicZoneTarget}\n modalType={modalType}\n forTarget={forTarget}\n targetUid={targetUid}\n attributeType={attributeType as IconByType}\n customFieldUid={customFieldUid}\n showBackLink={showBackLink}\n />\n {isPickingAttribute && (\n <AttributeOptions\n attributes={displayedAttributes}\n forTarget={forTarget}\n kind={schemaKind || 'collectionType'}\n />\n )}\n {!isPickingAttribute && (\n <FormComponent onSubmit={handleSubmit}>\n <Modal.Body>\n <Tabs.Root\n variant=\"simple\"\n value={activeTab}\n onValueChange={(value) => {\n setActiveTab(value);\n sendAdvancedTabEvent(value);\n }}\n hasError={\n doesBaseFormHasError ? 'basic' : doesAdvancedFormHasError ? 'advanced' : undefined\n }\n >\n <Flex justifyContent=\"space-between\">\n <FormModalSubHeader\n actionType={actionType}\n forTarget={forTarget}\n kind={kind}\n step={step}\n modalType={modalType}\n attributeType={attributeType}\n attributeName={attributeName}\n customField={customField}\n />\n <Tabs.List>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTrad('popUpForm.navContainer.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\" disabled={shouldDisableAdvancedTab()}>\n {formatMessage({\n id: getTrad('popUpForm.navContainer.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n <Divider marginBottom={6} />\n <Tabs.Content value=\"basic\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TabForm\n form={baseForm}\n formErrors={formErrors}\n genericInputProps={genericInputProps}\n modifiedData={modifiedData}\n onChange={handleChange}\n />\n </Flex>\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TabForm\n form={advancedForm}\n formErrors={formErrors}\n genericInputProps={genericInputProps}\n modifiedData={modifiedData}\n onChange={handleChange}\n />\n </Flex>\n </Tabs.Content>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"tertiary\" onClick={handleClosed}>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n {/* TODO: refactor this component. Nuf said. */}\n <FormModalEndActions\n deleteCategory={deleteCategory}\n deleteContentType={deleteData}\n deleteComponent={deleteData}\n categoryName={initialData.name}\n isAttributeModal={modalType === 'attribute'}\n isCustomFieldModal={modalType === 'customField'}\n isComponentToDzModal={modalType === 'addComponentToDynamicZone'}\n isComponentAttribute={attributeType === 'component'}\n isComponentModal={modalType === 'component'}\n isContentTypeModal={modalType === 'contentType'}\n isCreatingComponent={actionType === 'create'}\n isCreatingDz={actionType === 'create'}\n isCreatingComponentAttribute={modifiedData.createComponent || false}\n isCreatingComponentInDz={modifiedData.createComponent || false}\n isCreatingComponentWhileAddingAField={isCreatingComponentWhileAddingAField}\n isCreatingContentType={actionType === 'create'}\n isEditingAttribute={actionType === 'edit'}\n isDzAttribute={attributeType === 'dynamiczone'}\n isEditingCategory={modalType === 'editCategory'}\n isInFirstComponentStep={step === '1'}\n onSubmitAddComponentAttribute={handleSubmit}\n onSubmitAddComponentToDz={handleSubmit}\n onSubmitCreateComponent={handleSubmit}\n onSubmitCreateContentType={handleSubmit}\n onSubmitCreateDz={handleSubmit}\n onSubmitEditAttribute={handleSubmit}\n onSubmitEditCategory={handleSubmit}\n onSubmitEditComponent={handleSubmit}\n onSubmitEditContentType={handleSubmit}\n onSubmitEditCustomFieldAttribute={handleSubmit}\n onSubmitEditDz={handleSubmit}\n onClickFinish={handleClickFinish}\n />\n </Modal.Footer>\n </FormComponent>\n )}\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["FormComponent","styled","form","FormModal","onCloseModal","onNavigateToChooseAttributeModal","onNavigateToAddCompoToDZModal","onNavigateToCreateComponentStep2","actionType","attributeName","attributeType","customFieldUid","categoryName","dynamicZoneTarget","forTarget","modalType","isOpen","kind","step","targetUid","showBackLink","activeTab","setActiveTab","useFormModalNavigation","getPlugin","useStrapiApp","state","getCustomField","customFields","get","customField","formModalSelector","React","useMemo","makeSelectFormModal","dispatch","useDispatch","toggleNotification","useNotification","reducerState","useSelector","shallowEqual","navigate","useNavigate","trackUsage","useTracking","formatMessage","useIntl","ctbPlugin","pluginId","ctbFormsAPI","apis","forms","inputsFromPlugins","components","inputs","addAttribute","addCustomFieldAttribute","addCreatedComponentToDynamicZone","allComponentsCategories","changeDynamicZoneComponents","contentTypes","createSchema","deleteCategory","deleteData","editCategory","editCustomFieldAttribute","submitData","modifiedData","allDataSchema","nestedComponents","setModifiedData","sortedContentTypesList","updateSchema","reservedNames","useDataManager","componentToCreate","formErrors","initialData","isCreatingComponentWhileAddingAField","pathToSchema","useEffect","collectionTypesForRelation","filter","isAllowedContentTypesForRelations","pathToAttributes","foundDynamicZoneTarget","findAttribute","actions","setDataToEdit","data","name","draftAndPublish","displayName","pluginOptions","pluralName","singularName","schema","category","icon","attributeToEdit","createComponent","type","setDynamicZoneDataSchema","attributeToEditNotFormatted","repeatable","set","setCustomFieldDataSchema","isEditing","modifiedDataToSetForEditing","setAttributeDataSchema","nameToSetForRelation","resetProps","isCreatingContentType","isCreatingComponent","isCreatingAttribute","isCreatingCustomFieldAttribute","isComponentAttribute","isCreating","isCreatingComponentFromAView","isInFirstComponentStep","isEditingCategory","isPickingAttribute","uid","createUid","attributes","checkFormValidity","dataToValidate","contentType","Object","keys","component","schemaAttributes","schemaData","customFieldValidator","options","validator","alreadyTakenTargetContentTypeAttributes","targetContentTypeUID","targetContentTypeAttributes","attrName","targetAttribute","attribute","validate","abortEarly","handleChange","useCallback","target","value","rest","namesThatCanResetToNullValue","val","includes","clonedErrors","assign","min","minLength","setErrors","errors","onChange","split","handleSubmit","e","shouldContinue","preventDefault","sendButtonAddMoreFieldEvent","ctTargetUid","pathname","canEditContentType","message","id","componentUid","createComponentUid","toLower","customFieldAttributeUpdate","attributeToSet","initialAttribute","isDynamicZoneAttribute","resetPropsAndSetTheFormForAddingACompoToADz","resetPropsAndSetFormForAddingAnExistingCompo","resetPropsAndSaveCurrentData","console","error","err","getYupInnerErrors","handleConfirmClose","confirm","window","defaultMessage","handleClosed","isEqual","sendAdvancedTabEvent","tab","shouldDisableAdvancedTab","has","displayedAttributes","getAttributesToDisplay","formToDisplay","advanced","sections","base","isAddingAComponentToAnotherComponent","genericInputProps","customInputs","AllowedTypesSelect","BooleanRadioGroup","CheckboxWithNumberField","IconPicker","ContentTypeRadioGroup","CustomRadioGroup","relation","Relation","SelectCategory","SelectComponent","SelectComponents","BooleanDefaultValueSelect","SelectNumber","SelectDateType","DraftAndPublishToggle","PluralName","SingularName","TextareaEnum","mainBoxHeader","naturePickerType","advancedForm","extensions","contentTypeSchema","baseForm","baseFormInputNames","getFormInputNames","advancedFormInputNames","doesBaseFormHasError","some","key","doesAdvancedFormHasError","schemaKind","checkIsEditingFieldName","every","handleClickFinish","_jsx","Modal","Root","open","onOpenChange","_jsxs","Content","FormModalHeader","contentTypeKind","AttributeOptions","onSubmit","Body","Tabs","variant","onValueChange","hasError","undefined","Flex","justifyContent","FormModalSubHeader","List","Trigger","getTrad","disabled","Divider","marginBottom","direction","alignItems","gap","TabForm","Footer","Button","onClick","FormModalEndActions","deleteContentType","deleteComponent","isAttributeModal","isCustomFieldModal","isComponentToDzModal","isComponentModal","isContentTypeModal","isCreatingDz","isCreatingComponentAttribute","isCreatingComponentInDz","isEditingAttribute","isDzAttribute","onSubmitAddComponentAttribute","onSubmitAddComponentToDz","onSubmitCreateComponent","onSubmitCreateContentType","onSubmitCreateDz","onSubmitEditAttribute","onSubmitEditCategory","onSubmitEditComponent","onSubmitEditContentType","onSubmitEditCustomFieldAttribute","onSubmitEditDz","onClickFinish"],"mappings":"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"}
1
+ {"version":3,"file":"FormModal.mjs","sources":["../../../../admin/src/components/FormModal/FormModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useStrapiApp, useTracking, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Divider, Flex, Modal, Tabs } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEqual from 'lodash/isEqual';\nimport pick from 'lodash/pick';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad, isAllowedContentTypesForRelations } from '../../utils';\nimport { findAttribute } from '../../utils/findAttribute';\nimport { getYupInnerErrors } from '../../utils/getYupInnerErrors';\n// New compos\nimport { AllowedTypesSelect } from '../AllowedTypesSelect';\nimport { IconByType } from '../AttributeIcon';\nimport { AttributeOptions } from '../AttributeOptions/AttributeOptions';\nimport { BooleanDefaultValueSelect } from '../BooleanDefaultValueSelect';\nimport { BooleanRadioGroup } from '../BooleanRadioGroup';\nimport { CheckboxWithNumberField } from '../CheckboxWithNumberField';\nimport { ContentTypeRadioGroup } from '../ContentTypeRadioGroup';\nimport { CustomRadioGroup } from '../CustomRadioGroup';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { DraftAndPublishToggle } from '../DraftAndPublishToggle';\nimport { FormModalEndActions } from '../FormModalEndActions';\nimport { FormModalHeader } from '../FormModalHeader';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\nimport { FormModalSubHeader } from '../FormModalSubHeader';\nimport { IconPicker } from '../IconPicker/IconPicker';\nimport { PluralName } from '../PluralName';\nimport { Relation } from '../Relation/Relation';\nimport { SelectCategory } from '../SelectCategory';\nimport { SelectComponent } from '../SelectComponent';\nimport { SelectComponents } from '../SelectComponents';\nimport { SelectDateType } from '../SelectDateType';\nimport { SelectNumber } from '../SelectNumber';\nimport { SingularName } from '../SingularName';\nimport { TabForm } from '../TabForm';\nimport { TextareaEnum } from '../TextareaEnum';\n\nimport { forms } from './forms/forms';\nimport { actions, initialState, type State as FormModalState } from './reducer';\nimport { canEditContentType } from './utils/canEditContentType';\nimport { createComponentUid, createUid } from './utils/createUid';\nimport { getAttributesToDisplay } from './utils/getAttributesToDisplay';\nimport { getFormInputNames } from './utils/getFormInputNames';\n\nimport type { ContentType } from '../../types';\nimport type { Internal } from '@strapi/types';\n\nconst FormComponent = styled.form`\n overflow: auto;\n`;\n\nconst selectState = (state: Record<string, unknown>) =>\n (state['content-type-builder_formModal'] || initialState) as FormModalState;\n\nexport const FormModal = () => {\n const {\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onNavigateToCreateComponentStep2,\n actionType,\n attributeName,\n attributeType,\n customFieldUid,\n dynamicZoneTarget,\n forTarget,\n modalType,\n isOpen,\n kind,\n step,\n targetUid,\n showBackLink,\n activeTab,\n setActiveTab,\n } = useFormModalNavigation();\n\n const getPlugin = useStrapiApp('FormModal', (state) => state.getPlugin);\n const getCustomField = useStrapiApp('FormModal', (state) => state.customFields.get);\n const customField = getCustomField(customFieldUid);\n\n const dispatch = useDispatch();\n const { toggleNotification } = useNotification();\n const reducerState = useSelector(selectState, shallowEqual);\n\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const ctbPlugin = getPlugin(pluginId);\n const ctbFormsAPI: any = ctbPlugin?.apis.forms;\n const inputsFromPlugins = ctbFormsAPI.components.inputs;\n\n const {\n addAttribute,\n editAttribute,\n addCustomFieldAttribute,\n addCreatedComponentToDynamicZone,\n changeDynamicZoneComponents,\n contentTypes,\n components,\n createSchema,\n createComponentSchema,\n deleteComponent,\n deleteContentType,\n editCustomFieldAttribute,\n updateSchema,\n nestedComponents,\n sortedContentTypesList,\n updateComponentSchema,\n updateComponentUid,\n reservedNames,\n } = useDataManager();\n\n const {\n componentToCreate,\n formErrors,\n initialData,\n isCreatingComponentWhileAddingAField,\n modifiedData,\n } = reducerState;\n\n const type = forTarget === 'component' ? components[targetUid] : contentTypes[targetUid];\n\n React.useEffect(() => {\n if (isOpen) {\n const collectionTypesForRelation = sortedContentTypesList.filter(\n isAllowedContentTypesForRelations\n );\n\n if (actionType === 'edit' && modalType === 'attribute' && forTarget === 'contentType') {\n trackUsage('willEditFieldOfContentType');\n }\n\n // Case:\n // the user opens the modal chooseAttributes\n // selects dynamic zone => set the field name\n // then goes to step 1 (the modal is addComponentToDynamicZone) and finally reloads the app.\n // In this particular if the user tries to add components to the zone it will pop an error since the dz is unknown\n const foundDynamicZoneTarget =\n findAttribute(get(type, 'schema.attributes', []), dynamicZoneTarget) || null;\n\n // Create content type we need to add the default option draftAndPublish\n if (modalType === 'contentType' && actionType === 'create') {\n dispatch(\n actions.setDataToEdit({\n data: {\n draftAndPublish: true,\n },\n })\n );\n }\n\n // Edit content type\n if (modalType === 'contentType' && actionType === 'edit') {\n dispatch(\n actions.setDataToEdit({\n data: {\n displayName: type.info.displayName,\n draftAndPublish: type.options?.draftAndPublish,\n kind: 'kind' in type && type.kind,\n pluginOptions: type.pluginOptions,\n pluralName: 'pluralName' in type.info && type.info.pluralName,\n singularName: 'singularName' in type.info && type.info.singularName,\n },\n })\n );\n }\n\n // Edit component\n if (modalType === 'component' && actionType === 'edit') {\n dispatch(\n actions.setDataToEdit({\n data: {\n displayName: type.info.displayName,\n category: 'category' in type && type.category,\n icon: type.info.icon,\n },\n })\n );\n }\n\n // Special case for the dynamic zone\n if (modalType === 'addComponentToDynamicZone' && actionType === 'edit') {\n const attributeToEdit = {\n ...foundDynamicZoneTarget,\n // We filter the available components\n // Because this modal is only used for adding components\n components: [],\n name: dynamicZoneTarget,\n createComponent: false,\n componentToCreate: { type: 'component' },\n };\n\n dispatch(\n actions.setDynamicZoneDataSchema({\n attributeToEdit,\n })\n );\n }\n\n // Set the predefined data structure to create an attribute\n if (attributeType) {\n const attributeToEditNotFormatted = findAttribute(\n get(type, ['attributes'], []),\n attributeName\n );\n const attributeToEdit = {\n ...attributeToEditNotFormatted,\n name: attributeName,\n };\n\n // We need to set the repeatable key to false when editing a component\n // The API doesn't send this info\n if (attributeType === 'component' && actionType === 'edit') {\n if (!('repeatable' in attributeToEdit) || !attributeToEdit.repeatable) {\n set(attributeToEdit, 'repeatable', false);\n }\n }\n\n if (modalType === 'customField') {\n if (actionType === 'edit') {\n dispatch(\n actions.setCustomFieldDataSchema({\n isEditing: true,\n modifiedDataToSetForEditing: attributeToEdit,\n uid: type.uid,\n })\n );\n } else {\n dispatch(\n actions.setCustomFieldDataSchema({\n customField: pick(customField, ['type', 'options']),\n isEditing: false,\n modifiedDataToSetForEditing: attributeToEdit,\n uid: type.uid,\n })\n );\n }\n } else {\n dispatch(\n actions.setAttributeDataSchema({\n attributeType,\n nameToSetForRelation: get(collectionTypesForRelation, ['0', 'title'], 'error'),\n targetUid: get(collectionTypesForRelation, ['0', 'uid'], 'error'),\n isEditing: actionType === 'edit',\n modifiedDataToSetForEditing: attributeToEdit,\n step,\n uid: type.uid,\n })\n );\n }\n }\n } else {\n dispatch(actions.resetProps());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [actionType, attributeName, attributeType, dynamicZoneTarget, forTarget, isOpen, modalType]);\n\n const isCreatingContentType = modalType === 'contentType';\n const isCreatingComponent = modalType === 'component';\n const isCreatingAttribute = modalType === 'attribute';\n const isCreatingCustomFieldAttribute = modalType === 'customField';\n const isComponentAttribute = attributeType === 'component' && isCreatingAttribute;\n const isCreating = actionType === 'create';\n const isCreatingComponentFromAView =\n get(modifiedData, 'createComponent', false) || isCreatingComponentWhileAddingAField;\n const isInFirstComponentStep = step === '1';\n const isPickingAttribute = modalType === 'chooseAttribute';\n const uid = createUid(modifiedData.displayName || '');\n const attributes = get(type, ['attributes'], null) as {\n name: string;\n }[];\n\n const checkFormValidity = async () => {\n let schema;\n const dataToValidate =\n isCreatingComponentFromAView && step === '1'\n ? get(modifiedData, 'componentToCreate', {})\n : modifiedData;\n // Check form validity for content type\n if (isCreatingContentType) {\n schema = forms.contentType.schema(\n Object.keys(contentTypes),\n actionType === 'edit',\n // currentUID\n (type?.uid ?? null) as Internal.UID.ContentType,\n reservedNames,\n ctbFormsAPI,\n contentTypes\n );\n\n // Check form validity for component\n // This is happening when the user click on the link from the left menu\n } else if (isCreatingComponent) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n modifiedData.category || '',\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.displayName || '',\n (type?.uid ?? null) as Internal.UID.Component\n // ctbFormsAPI\n );\n } else if (isCreatingCustomFieldAttribute) {\n schema = forms.customField.schema({\n schemaAttributes: get(type, ['attributes'], []),\n attributeType: customField!.type,\n reservedNames,\n schemaData: { modifiedData, initialData },\n ctbFormsAPI,\n customFieldValidator: customField!.options?.validator,\n });\n\n // Check for validity for creating a component\n // This is happening when the user creates a component \"on the fly\"\n // Since we temporarily store the component info in another object\n // The data is set in the componentToCreate key\n } else if (isComponentAttribute && isCreatingComponentFromAView && isInFirstComponentStep) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n get(modifiedData, 'componentToCreate.category', ''),\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.componentToCreate.displayName || ''\n );\n\n // Check form validity for creating a 'common attribute'\n // We need to make sure that it is independent from the step\n } else if (isCreatingAttribute && !isInFirstComponentStep) {\n const computedAttrbiuteType = attributeType === 'relation' ? 'relation' : modifiedData.type;\n\n let alreadyTakenTargetContentTypeAttributes: any[] = [];\n\n if (computedAttrbiuteType === 'relation') {\n const targetContentTypeUID = get(modifiedData, ['target'], null);\n\n const targetContentTypeAttributes = get(\n contentTypes,\n [targetContentTypeUID, 'attributes'],\n []\n );\n\n // Create an array with all the targetContentType attributes name\n // in order to prevent the user from creating a relation with a targetAttribute\n // that may exist in the other content type\n alreadyTakenTargetContentTypeAttributes = targetContentTypeAttributes.filter(\n ({ name: attrName }: { name: string }) => {\n // Keep all the target content type attributes when creating a relation\n if (actionType !== 'edit') {\n return true;\n }\n\n // Remove the already created one when editing\n return attrName !== initialData.targetAttribute;\n }\n );\n }\n schema = forms.attribute.schema(\n type,\n computedAttrbiuteType,\n reservedNames,\n alreadyTakenTargetContentTypeAttributes,\n { modifiedData, initialData },\n ctbFormsAPI\n );\n } else {\n // The user is either in the addComponentToDynamicZone modal or\n // in step 1 of the add component (modalType=attribute&attributeType=component) but not creating a component\n // eslint-disable-next-line no-lonely-if\n if (isInFirstComponentStep && isCreatingComponentFromAView) {\n schema = forms.component.schema(\n Object.keys(components) as Internal.UID.Component[],\n get(modifiedData, 'componentToCreate.category', ''),\n reservedNames,\n actionType === 'edit',\n components,\n modifiedData.componentToCreate.displayName || ''\n );\n } else {\n // The form is valid\n // The case here is being in the addComponentToDynamicZone modal and not creating a component\n return;\n }\n }\n\n await schema.validate(dataToValidate, { abortEarly: false });\n };\n\n const handleChange = React.useCallback(\n ({\n target: { name, value, type, ...rest },\n }: {\n target: { name: string; value: string; type: string };\n }) => {\n const namesThatCanResetToNullValue = [\n 'enumName',\n 'max',\n 'min',\n 'maxLength',\n 'minLength',\n 'regex',\n 'default',\n ];\n\n let val;\n\n if (namesThatCanResetToNullValue.includes(name) && value === '') {\n val = null;\n } else {\n val = value;\n }\n\n const clonedErrors = Object.assign({}, formErrors);\n\n // Reset min error when modifying the max\n if (name === 'max') {\n delete clonedErrors.min;\n }\n\n // Same here\n if (name === 'maxLength') {\n delete clonedErrors.minLength;\n }\n\n // Since the onBlur is deactivated we remove the errors directly when changing an input\n delete clonedErrors[name];\n\n dispatch(\n actions.setErrors({\n errors: clonedErrors,\n })\n );\n\n dispatch(\n actions.onChange({\n keys: name.split('.'),\n value: val,\n })\n );\n },\n [dispatch, formErrors]\n );\n\n const handleSubmit = async (e: React.SyntheticEvent, shouldContinue = isCreating) => {\n e.preventDefault();\n\n try {\n await checkFormValidity();\n\n dispatch(\n actions.setErrors({\n errors: {},\n })\n );\n\n sendButtonAddMoreFieldEvent(shouldContinue);\n\n const ctTargetUid = targetUid;\n\n if (isCreatingContentType) {\n // Create the content type schema\n if (isCreating) {\n createSchema({\n data: {\n kind,\n displayName: modifiedData.displayName,\n draftAndPublish: modifiedData.draftAndPublish,\n pluginOptions: modifiedData.pluginOptions,\n singularName: modifiedData.singularName,\n pluralName: modifiedData.pluralName,\n },\n uid,\n });\n\n // Redirect the user to the created content type\n navigate({ pathname: `/plugins/${pluginId}/content-types/${uid}` });\n\n onCloseModal();\n } else {\n // NOTE: we have to assume we have a CT here until we refactor more\n const contentType = type as ContentType;\n // We cannot switch from collection type to single when the modal is making relations other than oneWay or manyWay\n if (canEditContentType(contentType, modifiedData)) {\n onCloseModal();\n\n await updateSchema({\n uid: contentType.uid,\n data: {\n displayName: modifiedData.displayName,\n kind: modifiedData.kind,\n draftAndPublish: modifiedData.draftAndPublish,\n pluginOptions: modifiedData.pluginOptions,\n },\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.contentType.relations.conflict' }),\n });\n }\n\n return;\n }\n // We are creating a component using the component modal from the left menu\n } else if (modalType === 'component') {\n if (isCreating) {\n // Create the component schema\n const componentUid = createComponentUid(modifiedData.displayName, modifiedData.category);\n const { category, ...rest } = modifiedData;\n\n createComponentSchema({\n data: {\n displayName: rest.displayName,\n icon: rest.icon,\n },\n uid: componentUid,\n componentCategory: category,\n });\n\n // Redirect the user to the created component\n navigate({\n pathname: `/plugins/${pluginId}/component-categories/${category}/${componentUid}`,\n });\n\n onCloseModal();\n\n return;\n } else {\n updateComponentSchema({\n data: {\n icon: modifiedData.icon,\n displayName: modifiedData.displayName,\n },\n componentUID: targetUid,\n });\n\n if (type.status === 'NEW') {\n const componentUid = createComponentUid(\n modifiedData.displayName,\n modifiedData.category\n );\n\n updateComponentUid({\n componentUID: targetUid,\n newComponentUID: componentUid,\n });\n\n navigate({\n pathname: `/plugins/${pluginId}/component-categories/${modifiedData.category}/${componentUid}`,\n });\n }\n\n // Close the modal\n onCloseModal();\n\n return;\n }\n } else if (isCreatingCustomFieldAttribute) {\n const customFieldAttributeUpdate = {\n attributeToSet: { ...modifiedData, customField: customFieldUid },\n forTarget,\n targetUid,\n name: initialData.name,\n };\n\n if (actionType === 'edit') {\n editCustomFieldAttribute(customFieldAttributeUpdate);\n } else {\n addCustomFieldAttribute(customFieldAttributeUpdate);\n }\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n onCloseModal();\n }\n\n return;\n } else if (isCreatingAttribute && !isCreatingComponentFromAView) {\n const isDynamicZoneAttribute = attributeType === 'dynamiczone';\n\n // The user is creating a DZ (he had entered the name of the dz)\n if (isDynamicZoneAttribute) {\n if (actionType === 'create') {\n addAttribute({\n attributeToSet: modifiedData,\n forTarget,\n targetUid,\n });\n } else {\n editAttribute({\n attributeToSet: modifiedData,\n forTarget,\n targetUid,\n name: initialData.name,\n });\n }\n\n // Adding a component to a dynamiczone is not the same logic as creating a simple field\n // so the search is different\n if (isCreating) {\n // Step 1 of adding a component to a DZ, the user has the option to create a component\n dispatch(actions.resetPropsAndSetTheFormForAddingACompoToADz());\n\n setActiveTab('basic');\n onNavigateToAddCompoToDZModal({ dynamicZoneTarget: modifiedData.name });\n } else {\n onCloseModal();\n }\n\n return;\n }\n\n // Normal fields like boolean relations or dynamic zone\n if (!isComponentAttribute) {\n if (actionType === 'create') {\n addAttribute({\n attributeToSet: modifiedData,\n forTarget,\n targetUid,\n });\n } else {\n editAttribute({\n attributeToSet: modifiedData,\n forTarget,\n targetUid,\n name: initialData.name,\n });\n }\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid: ctTargetUid,\n });\n } else {\n onCloseModal();\n }\n\n return;\n\n // Adding an existing component\n }\n // eslint-disable-next-line no-lonely-if\n if (isInFirstComponentStep) {\n // Navigate the user to step 2\n onNavigateToCreateComponentStep2();\n\n // Clear the reducer and prepare the modified data\n // This way we don't have to add some logic to re-run the useEffect\n // The first step is either needed to create a component or just to navigate\n // To the modal for adding a \"common field\"\n dispatch(\n actions.resetPropsAndSetFormForAddingAnExistingCompo({\n uid: type.uid,\n })\n );\n\n // We don't want all the props to be reset\n return;\n\n // Here we are in step 2\n // The step 2 is also use to edit an attribute that is a component\n }\n\n if (actionType === 'create') {\n addAttribute({\n attributeToSet: modifiedData,\n forTarget,\n targetUid,\n });\n } else {\n editAttribute({\n attributeToSet: modifiedData,\n forTarget,\n targetUid,\n name: initialData.name,\n });\n }\n\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({\n forTarget,\n targetUid,\n });\n } else {\n onCloseModal();\n }\n\n // We don't need to end the loop here we want the reducer to be reinitialized\n\n // Logic for creating a component without clicking on the link in\n // the left menu\n // We need to separate the logic otherwise the component would be created\n // even though the user didn't set any field\n // We need to prevent the component from being created if the user closes the modal at step 2 without any submission\n } else if (isCreatingAttribute && isCreatingComponentFromAView) {\n // Step 1\n if (isInFirstComponentStep) {\n // Here the search could be refactored since it is the same as the case from above\n // Navigate the user to step 2\n\n trackUsage('willCreateComponentFromAttributesModal');\n\n // Here we clear the reducer state but we also keep the created component\n // If we were to create the component before\n dispatch(\n actions.resetPropsAndSaveCurrentData({\n uid: type.uid,\n })\n );\n\n onNavigateToCreateComponentStep2();\n\n // Terminate because we don't want the reducer to be entirely reset\n return;\n\n // Step 2 of creating a component (which is setting the attribute name in the parent's schema)\n }\n // We are destructuring because the modifiedData object doesn't have the appropriate format to create a field\n const { category, ...rest } = componentToCreate;\n // Create a the component temp UID\n // This could be refactored but I think it's more understandable to separate the logic\n const componentUid = createComponentUid(componentToCreate.displayName, category);\n // Create the component first and add it to the components data\n createComponentSchema({\n // Component data\n data: {\n icon: rest.icon,\n displayName: rest.displayName,\n },\n uid: componentUid,\n componentCategory: category,\n });\n\n // Add the field to the schema\n addAttribute({\n attributeToSet: modifiedData,\n forTarget,\n targetUid,\n });\n\n dispatch(actions.resetProps());\n\n // Open modal attribute for adding attr to component\n if (shouldContinue) {\n onNavigateToChooseAttributeModal({ forTarget: 'component', targetUid: componentUid });\n } else {\n onCloseModal();\n }\n\n return;\n } else {\n // The modal is addComponentToDynamicZone\n if (isInFirstComponentStep) {\n if (isCreatingComponentFromAView) {\n const { category, type, ...rest } = modifiedData.componentToCreate;\n const componentUid = createComponentUid(\n modifiedData.componentToCreate.displayName,\n category\n );\n // Create the component first and add it to the components data\n createComponentSchema({\n data: rest,\n uid: componentUid,\n componentCategory: category,\n });\n // Add the created component to the DZ\n // We don't want to remove the old ones\n addCreatedComponentToDynamicZone({\n forTarget,\n targetUid,\n dynamicZoneTarget,\n componentsToAdd: [componentUid],\n });\n\n // The Dynamic Zone and the component is created\n // Open the modal to add fields to the created component\n onNavigateToChooseAttributeModal({ forTarget: 'component', targetUid: componentUid });\n } else {\n // Add the components to the DZ\n changeDynamicZoneComponents({\n forTarget,\n targetUid,\n dynamicZoneTarget,\n newComponents: modifiedData.components,\n });\n\n onCloseModal();\n }\n } else {\n console.error('This case is not handled');\n }\n\n return;\n }\n\n dispatch(actions.resetProps());\n } catch (err: unknown) {\n if (yup.ValidationError.isError(err)) {\n const errors = getYupInnerErrors(err);\n\n dispatch(\n actions.setErrors({\n errors,\n })\n );\n }\n }\n };\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onCloseModal();\n dispatch(actions.resetProps());\n }\n };\n\n const handleClosed = () => {\n // Close the modal\n if (!isEqual(modifiedData, initialData)) {\n handleConfirmClose();\n } else {\n onCloseModal();\n // Reset the reducer\n dispatch(actions.resetProps());\n }\n };\n\n const sendAdvancedTabEvent = (tab: string) => {\n if (tab !== 'advanced') {\n return;\n }\n\n if (isCreatingContentType) {\n trackUsage('didSelectContentTypeSettings');\n\n return;\n }\n\n if (forTarget === 'contentType') {\n trackUsage('didSelectContentTypeFieldSettings');\n }\n };\n\n const sendButtonAddMoreFieldEvent = (shouldContinue: boolean) => {\n if (\n modalType === 'attribute' &&\n forTarget === 'contentType' &&\n attributeType !== 'dynamiczone' &&\n shouldContinue\n ) {\n trackUsage('willAddMoreFieldToContentType');\n }\n };\n\n const shouldDisableAdvancedTab = () => {\n if (modalType === 'component') {\n return true;\n }\n\n if (has(modifiedData, 'createComponent')) {\n return true;\n }\n\n return false;\n };\n\n // Display data for the attributes picker modal\n const displayedAttributes = getAttributesToDisplay(\n forTarget,\n targetUid,\n // We need the nested components so we know when to remove the component option\n nestedComponents\n );\n\n if (!modalType) {\n return null;\n }\n\n const formToDisplay = get(forms, [modalType, 'form'], {\n advanced: () => ({\n sections: [],\n }),\n base: () => ({\n sections: [],\n }),\n });\n\n const isAddingAComponentToAnotherComponent = forTarget === 'component';\n\n const genericInputProps = {\n customInputs: {\n 'allowed-types-select': AllowedTypesSelect,\n 'boolean-radio-group': BooleanRadioGroup,\n 'checkbox-with-number-field': CheckboxWithNumberField,\n 'icon-picker': IconPicker,\n 'content-type-radio-group': ContentTypeRadioGroup,\n 'radio-group': CustomRadioGroup,\n relation: Relation,\n 'select-category': SelectCategory,\n 'select-component': SelectComponent,\n 'select-components': SelectComponents,\n 'select-default-boolean': BooleanDefaultValueSelect,\n 'select-number': SelectNumber,\n 'select-date': SelectDateType,\n 'toggle-draft-publish': DraftAndPublishToggle,\n 'text-plural': PluralName,\n 'text-singular': SingularName,\n 'textarea-enum': TextareaEnum,\n ...inputsFromPlugins,\n },\n componentToCreate,\n dynamicZoneTarget,\n formErrors,\n isAddingAComponentToAnotherComponent,\n isCreatingComponentWhileAddingAField,\n mainBoxHeader: get(type, ['info', 'displayName'], ''),\n modifiedData,\n naturePickerType: forTarget,\n isCreating,\n targetUid,\n forTarget,\n };\n\n const advancedForm = formToDisplay.advanced({\n data: modifiedData,\n type: attributeType,\n step,\n actionType,\n attributes,\n extensions: ctbFormsAPI,\n forTarget,\n contentTypeSchema: type || {},\n customField,\n }).sections;\n const baseForm = formToDisplay.base({\n data: modifiedData,\n type: attributeType,\n step,\n actionType,\n attributes,\n extensions: ctbFormsAPI,\n forTarget,\n contentTypeSchema: type || {},\n customField,\n }).sections;\n\n const baseFormInputNames = getFormInputNames(baseForm);\n\n const advancedFormInputNames = getFormInputNames(advancedForm);\n const doesBaseFormHasError = Object.keys(formErrors).some((key) =>\n baseFormInputNames.includes(key)\n );\n\n const doesAdvancedFormHasError = Object.keys(formErrors).some((key) =>\n advancedFormInputNames.includes(key)\n );\n\n const schemaKind = get(contentTypes, [targetUid, 'kind']);\n\n const checkIsEditingFieldName = () =>\n actionType === 'edit' && attributes.every(({ name }) => name !== modifiedData?.name);\n\n const handleClickFinish = () => {\n if (checkIsEditingFieldName()) {\n trackUsage('didEditFieldNameOnContentType');\n }\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClosed}>\n <Modal.Content>\n <FormModalHeader\n actionType={actionType}\n attributeName={attributeName}\n contentTypeKind={kind as IconByType}\n dynamicZoneTarget={dynamicZoneTarget}\n modalType={modalType}\n forTarget={forTarget}\n targetUid={targetUid}\n attributeType={attributeType as IconByType}\n customFieldUid={customFieldUid}\n showBackLink={showBackLink}\n />\n {isPickingAttribute && (\n <AttributeOptions\n attributes={displayedAttributes}\n forTarget={forTarget}\n kind={schemaKind || 'collectionType'}\n />\n )}\n {!isPickingAttribute && (\n <FormComponent onSubmit={handleSubmit}>\n <Modal.Body>\n <Tabs.Root\n variant=\"simple\"\n value={activeTab}\n onValueChange={(value) => {\n setActiveTab(value);\n sendAdvancedTabEvent(value);\n }}\n hasError={\n doesBaseFormHasError ? 'basic' : doesAdvancedFormHasError ? 'advanced' : undefined\n }\n >\n <Flex justifyContent=\"space-between\">\n <FormModalSubHeader\n actionType={actionType}\n forTarget={forTarget}\n kind={kind}\n step={step}\n modalType={modalType}\n attributeType={attributeType}\n attributeName={attributeName}\n customField={customField}\n />\n <Tabs.List>\n <Tabs.Trigger value=\"basic\">\n {formatMessage({\n id: getTrad('popUpForm.navContainer.base'),\n defaultMessage: 'Basic settings',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"advanced\" disabled={shouldDisableAdvancedTab()}>\n {formatMessage({\n id: getTrad('popUpForm.navContainer.advanced'),\n defaultMessage: 'Advanced settings',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Flex>\n <Divider marginBottom={6} />\n <Tabs.Content value=\"basic\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TabForm\n form={baseForm}\n formErrors={formErrors}\n genericInputProps={genericInputProps}\n modifiedData={modifiedData}\n onChange={handleChange}\n />\n </Flex>\n </Tabs.Content>\n <Tabs.Content value=\"advanced\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <TabForm\n form={advancedForm}\n formErrors={formErrors}\n genericInputProps={genericInputProps}\n modifiedData={modifiedData}\n onChange={handleChange}\n />\n </Flex>\n </Tabs.Content>\n </Tabs.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button\n type=\"button\"\n variant=\"tertiary\"\n onClick={(e) => {\n e.preventDefault();\n handleClosed();\n }}\n >\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n {/* TODO: refactor this component. Nuf said. */}\n <FormModalEndActions\n deleteContentType={() => deleteContentType(targetUid as Internal.UID.ContentType)}\n deleteComponent={() => deleteComponent(targetUid as Internal.UID.Component)}\n isAttributeModal={modalType === 'attribute'}\n isCustomFieldModal={modalType === 'customField'}\n isComponentToDzModal={modalType === 'addComponentToDynamicZone'}\n isComponentAttribute={attributeType === 'component'}\n isComponentModal={modalType === 'component'}\n isContentTypeModal={modalType === 'contentType'}\n isCreatingComponent={actionType === 'create'}\n isCreatingDz={actionType === 'create'}\n isCreatingComponentAttribute={modifiedData.createComponent || false}\n isCreatingComponentInDz={modifiedData.createComponent || false}\n isCreatingComponentWhileAddingAField={isCreatingComponentWhileAddingAField}\n isCreatingContentType={actionType === 'create'}\n isEditingAttribute={actionType === 'edit'}\n isDzAttribute={attributeType === 'dynamiczone'}\n isInFirstComponentStep={step === '1'}\n onSubmitAddComponentAttribute={handleSubmit}\n onSubmitAddComponentToDz={handleSubmit}\n onSubmitCreateComponent={handleSubmit}\n onSubmitCreateContentType={handleSubmit}\n onSubmitCreateDz={handleSubmit}\n onSubmitEditAttribute={handleSubmit}\n onSubmitEditComponent={handleSubmit}\n onSubmitEditContentType={handleSubmit}\n onSubmitEditCustomFieldAttribute={handleSubmit}\n onSubmitEditDz={handleSubmit}\n onClickFinish={handleClickFinish}\n />\n </Modal.Footer>\n </FormComponent>\n )}\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["FormComponent","styled","form","selectState","state","initialState","FormModal","onCloseModal","onNavigateToChooseAttributeModal","onNavigateToAddCompoToDZModal","onNavigateToCreateComponentStep2","actionType","attributeName","attributeType","customFieldUid","dynamicZoneTarget","forTarget","modalType","isOpen","kind","step","targetUid","showBackLink","activeTab","setActiveTab","useFormModalNavigation","getPlugin","useStrapiApp","getCustomField","customFields","get","customField","dispatch","useDispatch","toggleNotification","useNotification","reducerState","useSelector","shallowEqual","navigate","useNavigate","trackUsage","useTracking","formatMessage","useIntl","ctbPlugin","pluginId","ctbFormsAPI","apis","forms","inputsFromPlugins","components","inputs","addAttribute","editAttribute","addCustomFieldAttribute","addCreatedComponentToDynamicZone","changeDynamicZoneComponents","contentTypes","createSchema","createComponentSchema","deleteComponent","deleteContentType","editCustomFieldAttribute","updateSchema","nestedComponents","sortedContentTypesList","updateComponentSchema","updateComponentUid","reservedNames","useDataManager","componentToCreate","formErrors","initialData","isCreatingComponentWhileAddingAField","modifiedData","type","React","useEffect","collectionTypesForRelation","filter","isAllowedContentTypesForRelations","foundDynamicZoneTarget","findAttribute","actions","setDataToEdit","data","draftAndPublish","displayName","info","options","pluginOptions","pluralName","singularName","category","icon","attributeToEdit","name","createComponent","setDynamicZoneDataSchema","attributeToEditNotFormatted","repeatable","set","setCustomFieldDataSchema","isEditing","modifiedDataToSetForEditing","uid","pick","setAttributeDataSchema","nameToSetForRelation","resetProps","isCreatingContentType","isCreatingComponent","isCreatingAttribute","isCreatingCustomFieldAttribute","isComponentAttribute","isCreating","isCreatingComponentFromAView","isInFirstComponentStep","isPickingAttribute","createUid","attributes","checkFormValidity","schema","dataToValidate","contentType","Object","keys","component","schemaAttributes","schemaData","customFieldValidator","validator","computedAttrbiuteType","alreadyTakenTargetContentTypeAttributes","targetContentTypeUID","targetContentTypeAttributes","attrName","targetAttribute","attribute","validate","abortEarly","handleChange","useCallback","target","value","rest","namesThatCanResetToNullValue","val","includes","clonedErrors","assign","min","minLength","setErrors","errors","onChange","split","handleSubmit","e","shouldContinue","preventDefault","sendButtonAddMoreFieldEvent","ctTargetUid","pathname","canEditContentType","message","id","componentUid","createComponentUid","componentCategory","componentUID","status","newComponentUID","customFieldAttributeUpdate","attributeToSet","isDynamicZoneAttribute","resetPropsAndSetTheFormForAddingACompoToADz","resetPropsAndSetFormForAddingAnExistingCompo","resetPropsAndSaveCurrentData","componentsToAdd","newComponents","console","error","err","yup","ValidationError","isError","getYupInnerErrors","handleConfirmClose","confirm","window","defaultMessage","handleClosed","isEqual","sendAdvancedTabEvent","tab","shouldDisableAdvancedTab","has","displayedAttributes","getAttributesToDisplay","formToDisplay","advanced","sections","base","isAddingAComponentToAnotherComponent","genericInputProps","customInputs","AllowedTypesSelect","BooleanRadioGroup","CheckboxWithNumberField","IconPicker","ContentTypeRadioGroup","CustomRadioGroup","relation","Relation","SelectCategory","SelectComponent","SelectComponents","BooleanDefaultValueSelect","SelectNumber","SelectDateType","DraftAndPublishToggle","PluralName","SingularName","TextareaEnum","mainBoxHeader","naturePickerType","advancedForm","extensions","contentTypeSchema","baseForm","baseFormInputNames","getFormInputNames","advancedFormInputNames","doesBaseFormHasError","some","key","doesAdvancedFormHasError","schemaKind","checkIsEditingFieldName","every","handleClickFinish","_jsx","Modal","Root","open","onOpenChange","_jsxs","Content","FormModalHeader","contentTypeKind","AttributeOptions","onSubmit","Body","Tabs","variant","onValueChange","hasError","undefined","Flex","justifyContent","FormModalSubHeader","List","Trigger","getTrad","disabled","Divider","marginBottom","direction","alignItems","gap","TabForm","Footer","Button","onClick","FormModalEndActions","isAttributeModal","isCustomFieldModal","isComponentToDzModal","isComponentModal","isContentTypeModal","isCreatingDz","isCreatingComponentAttribute","isCreatingComponentInDz","isEditingAttribute","isDzAttribute","onSubmitAddComponentAttribute","onSubmitAddComponentToDz","onSubmitCreateComponent","onSubmitCreateContentType","onSubmitCreateDz","onSubmitEditAttribute","onSubmitEditComponent","onSubmitEditContentType","onSubmitEditCustomFieldAttribute","onSubmitEditDz","onClickFinish"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}
1
+ {"version":3,"file":"types.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/types.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport uniq from 'lodash/uniq';\nimport * as yup from 'yup';\n\nimport { getRelationType } from '../../../utils/getRelationType';\nimport { getTrad } from '../../../utils/getTrad';\nimport { toRegressedEnumValue } from '../../../utils/toRegressedEnumValue';\n\nimport {\n alreadyUsedAttributeNames,\n createTextShape,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n} from './validation/common';\n\nimport type { Schema } from '@strapi/types';\n\nexport const attributeTypes = {\n date(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n datetime(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n time(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n default(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n };\n\n return yup.object(shape);\n },\n biginteger(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/),\n unique: validators.unique(),\n required: validators.required(),\n max: yup\n .string()\n .nullable()\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n min: yup\n .string()\n .nullable()\n .test(isMinSuperiorThanMax<string | null>())\n .matches(/^-?\\d*$/, errorsTrads.regex.id),\n };\n\n return yup.object(shape);\n },\n boolean(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n default: yup.boolean().nullable(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n component(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n component: yup.string().required(errorsTrads.required.id),\n };\n\n return yup.object(shape);\n },\n decimal(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number(),\n required: validators.required(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n dynamiczone(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n email(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.string().email().nullable(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n enumeration(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n /**\n * For enumerations the least common denomiator is GraphQL, where\n * values needs to match the secure name regex:\n * GraphQL Spec https://spec.graphql.org/June2018/#sec-Names\n *\n * Therefore we need to make sure our users only use values, which\n * can be returned by GraphQL, by checking the regressed values\n * agains the GraphQL regex.\n *\n * TODO V5: check if we can avoid this coupling by moving this logic\n * into the GraphQL plugin.\n */\n const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;\n\n const shape = {\n name: yup\n .string()\n .test(alreadyUsedAttributeNames(usedAttributeNames))\n .test(isNameAllowed(reservedNames))\n .matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n enum: yup\n .array()\n .of(yup.string())\n .min(1, errorsTrads.min.id)\n .test({\n name: 'areEnumValuesUnique',\n message: getTrad('error.validation.enum-duplicate'),\n test(values) {\n if (!values) {\n return false;\n }\n const duplicates = uniq(\n values\n .map(toRegressedEnumValue)\n .filter((value, index, values) => values.indexOf(value) !== index)\n );\n\n return !duplicates.length;\n },\n })\n .test({\n name: 'doesNotHaveEmptyValues',\n message: getTrad('error.validation.enum-empty-string'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return !values.map(toRegressedEnumValue).some((val) => val === '');\n },\n })\n .test({\n name: 'doesMatchRegex',\n message: getTrad('error.validation.enum-regex'),\n test: (values) => {\n if (!values) {\n return false;\n }\n return values\n .map(toRegressedEnumValue)\n .every((value) => GRAPHQL_ENUM_REGEX.test(value));\n },\n }),\n enumName: yup.string().nullable(),\n };\n\n return yup.object(shape);\n },\n float(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n default: yup.number(),\n max: yup.number(),\n min: yup.number().test(isMinSuperiorThanMax<number>()),\n };\n\n return yup.object(shape);\n },\n integer(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: yup.number().integer(),\n unique: validators.unique(),\n required: validators.required(),\n max: validators.max(),\n min: validators.min(),\n };\n\n return yup.object(shape);\n },\n json(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n required: validators.required(),\n unique: validators.unique(),\n };\n\n return yup.object(shape);\n },\n media(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n multiple: yup.boolean(),\n required: validators.required(),\n allowedTypes: yup\n .array()\n .of(yup.string().oneOf(['images', 'videos', 'files', 'audios']))\n .min(1)\n .nullable(),\n };\n\n return yup.object(shape);\n },\n password(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n relation(\n usedAttributeNames: Array<string>,\n reservedNames: Array<string>,\n alreadyTakenTargetAttributes: Array<{ name: string }>,\n {\n initialData,\n modifiedData,\n }: {\n initialData: { targetAttribute?: string };\n modifiedData: {\n name?: string;\n relation?: Schema.Attribute.RelationKind.WithTarget;\n targetAttribute?: string;\n };\n }\n ) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n target: yup.string().required(errorsTrads.required.id),\n relation: yup.string().required(),\n type: yup.string().required(),\n targetAttribute: yup.lazy(() => {\n const relationType = getRelationType(modifiedData.relation!, modifiedData.targetAttribute);\n\n if (relationType === 'oneWay' || relationType === 'manyWay') {\n return yup.string().nullable();\n }\n\n const schema = yup.string().test(isNameAllowed(reservedNames));\n const initialForbiddenName = [\n ...alreadyTakenTargetAttributes.map(({ name }) => name),\n modifiedData.name,\n ];\n\n const forbiddenTargetAttributeName = initialForbiddenName.filter(\n (val) => val !== initialData.targetAttribute\n );\n\n return schema\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .test({\n name: 'forbiddenTargetAttributeName',\n message: getTrad('error.validation.relation.targetAttribute-taken'),\n test(value) {\n if (!value) {\n return false;\n }\n\n return !forbiddenTargetAttributeName.includes(value);\n },\n })\n .required(errorsTrads.required.id);\n }),\n };\n\n return yup.object(shape);\n },\n richtext(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n blocks(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n };\n\n return yup.object(shape);\n },\n string(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n text(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n uid(usedAttributeNames: Array<string>, reservedNames: Array<string>) {\n const shape = createTextShape(usedAttributeNames, reservedNames);\n\n return yup.object(shape);\n },\n};\n"],"names":["attributeTypes","date","usedAttributeNames","reservedNames","shape","name","validators","type","yup","object","datetime","time","default","biginteger","string","nullable","matches","unique","required","max","errorsTrads","regex","id","min","test","isMinSuperiorThanMax","boolean","component","decimal","number","dynamiczone","email","maxLength","minLength","enumeration","GRAPHQL_ENUM_REGEX","alreadyUsedAttributeNames","isNameAllowed","enum","array","of","message","getTrad","values","duplicates","uniq","map","toRegressedEnumValue","filter","value","index","indexOf","length","some","val","every","enumName","float","integer","json","media","multiple","allowedTypes","oneOf","password","relation","alreadyTakenTargetAttributes","initialData","modifiedData","target","targetAttribute","lazy","relationType","getRelationType","schema","initialForbiddenName","forbiddenTargetAttributeName","NAME_REGEX","includes","richtext","blocks","createTextShape","text","uid"],"mappings":"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"}