@strapi/content-type-builder 0.0.0 → 5.0.0-beta.6

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 (316) hide show
  1. package/README.md +1 -1
  2. package/dist/_chunks/ListView-BG19KtnI.js +963 -0
  3. package/dist/_chunks/ListView-BG19KtnI.js.map +1 -0
  4. package/dist/_chunks/ListView-C-9-V_FI.mjs +957 -0
  5. package/dist/_chunks/ListView-C-9-V_FI.mjs.map +1 -0
  6. package/dist/_chunks/ar-BYDB75EB.mjs +51 -0
  7. package/dist/_chunks/ar-BYDB75EB.mjs.map +1 -0
  8. package/dist/_chunks/ar-OCxhAFUy.js +51 -0
  9. package/dist/_chunks/ar-OCxhAFUy.js.map +1 -0
  10. package/dist/_chunks/cs-ChL4LaFY.mjs +139 -0
  11. package/dist/_chunks/cs-ChL4LaFY.mjs.map +1 -0
  12. package/dist/_chunks/cs-Ci3js5EC.js +139 -0
  13. package/dist/_chunks/cs-Ci3js5EC.js.map +1 -0
  14. package/dist/_chunks/de-DnlblIOh.js +193 -0
  15. package/dist/_chunks/de-DnlblIOh.js.map +1 -0
  16. package/dist/_chunks/de-DsHQNzp2.mjs +193 -0
  17. package/dist/_chunks/de-DsHQNzp2.mjs.map +1 -0
  18. package/dist/_chunks/dk-BC7NAQR2.mjs +183 -0
  19. package/dist/_chunks/dk-BC7NAQR2.mjs.map +1 -0
  20. package/dist/_chunks/dk-D3XnOjYz.js +183 -0
  21. package/dist/_chunks/dk-D3XnOjYz.js.map +1 -0
  22. package/dist/_chunks/en-BbczxQBr.mjs +216 -0
  23. package/dist/_chunks/en-BbczxQBr.mjs.map +1 -0
  24. package/dist/_chunks/en-BnToboMV.js +216 -0
  25. package/dist/_chunks/en-BnToboMV.js.map +1 -0
  26. package/dist/_chunks/es-BE_zx2_w.mjs +183 -0
  27. package/dist/_chunks/es-BE_zx2_w.mjs.map +1 -0
  28. package/dist/_chunks/es-DL8lez9W.js +183 -0
  29. package/dist/_chunks/es-DL8lez9W.js.map +1 -0
  30. package/dist/_chunks/fr-DnTxugIo.js +75 -0
  31. package/dist/_chunks/fr-DnTxugIo.js.map +1 -0
  32. package/dist/_chunks/fr-lU_OMJma.mjs +75 -0
  33. package/dist/_chunks/fr-lU_OMJma.mjs.map +1 -0
  34. package/dist/_chunks/id-DYuTgqcc.js +166 -0
  35. package/dist/_chunks/id-DYuTgqcc.js.map +1 -0
  36. package/dist/_chunks/id-W1sKBFEw.mjs +166 -0
  37. package/dist/_chunks/id-W1sKBFEw.mjs.map +1 -0
  38. package/dist/_chunks/index-BfUcwV-B.js +1211 -0
  39. package/dist/_chunks/index-BfUcwV-B.js.map +1 -0
  40. package/dist/_chunks/index-BtxPpV-M.mjs +6843 -0
  41. package/dist/_chunks/index-BtxPpV-M.mjs.map +1 -0
  42. package/dist/_chunks/index-CBlX4byY.mjs +1185 -0
  43. package/dist/_chunks/index-CBlX4byY.mjs.map +1 -0
  44. package/dist/_chunks/index-ClkMXXk0.js +6881 -0
  45. package/dist/_chunks/index-ClkMXXk0.js.map +1 -0
  46. package/dist/_chunks/it-D04lb2Wc.mjs +167 -0
  47. package/dist/_chunks/it-D04lb2Wc.mjs.map +1 -0
  48. package/dist/_chunks/it-DS4sM3km.js +167 -0
  49. package/dist/_chunks/it-DS4sM3km.js.map +1 -0
  50. package/dist/_chunks/ja-BHLK_2_g.mjs +50 -0
  51. package/dist/_chunks/ja-BHLK_2_g.mjs.map +1 -0
  52. package/dist/_chunks/ja-BjouJgZf.js +50 -0
  53. package/dist/_chunks/ja-BjouJgZf.js.map +1 -0
  54. package/dist/_chunks/ko-D_71Pdfn.js +183 -0
  55. package/dist/_chunks/ko-D_71Pdfn.js.map +1 -0
  56. package/dist/_chunks/ko-DoNsXHXA.mjs +183 -0
  57. package/dist/_chunks/ko-DoNsXHXA.mjs.map +1 -0
  58. package/dist/_chunks/ms-BtGFDB9t.mjs +163 -0
  59. package/dist/_chunks/ms-BtGFDB9t.mjs.map +1 -0
  60. package/dist/_chunks/ms-Re1pSHmx.js +163 -0
  61. package/dist/_chunks/ms-Re1pSHmx.js.map +1 -0
  62. package/dist/_chunks/nl-BaTAuelQ.mjs +156 -0
  63. package/dist/_chunks/nl-BaTAuelQ.mjs.map +1 -0
  64. package/dist/_chunks/nl-DQjrDEw0.js +156 -0
  65. package/dist/_chunks/nl-DQjrDEw0.js.map +1 -0
  66. package/dist/_chunks/pl-BGwXgwH7.js +193 -0
  67. package/dist/_chunks/pl-BGwXgwH7.js.map +1 -0
  68. package/dist/_chunks/pl-CP2Zgp01.mjs +193 -0
  69. package/dist/_chunks/pl-CP2Zgp01.mjs.map +1 -0
  70. package/dist/_chunks/pt-BR-CCQGwXs0.mjs +193 -0
  71. package/dist/_chunks/pt-BR-CCQGwXs0.mjs.map +1 -0
  72. package/dist/_chunks/pt-BR-DPd5nRnl.js +193 -0
  73. package/dist/_chunks/pt-BR-DPd5nRnl.js.map +1 -0
  74. package/dist/_chunks/pt-CJoUDTHQ.js +51 -0
  75. package/dist/_chunks/pt-CJoUDTHQ.js.map +1 -0
  76. package/dist/_chunks/pt-DMeTMW2x.mjs +51 -0
  77. package/dist/_chunks/pt-DMeTMW2x.mjs.map +1 -0
  78. package/dist/_chunks/ru-C8A_4j0w.js +168 -0
  79. package/dist/_chunks/ru-C8A_4j0w.js.map +1 -0
  80. package/dist/_chunks/ru-DGSjru5m.mjs +168 -0
  81. package/dist/_chunks/ru-DGSjru5m.mjs.map +1 -0
  82. package/dist/_chunks/sk-DVK4HfSC.mjs +167 -0
  83. package/dist/_chunks/sk-DVK4HfSC.mjs.map +1 -0
  84. package/dist/_chunks/sk-raWRcmPT.js +167 -0
  85. package/dist/_chunks/sk-raWRcmPT.js.map +1 -0
  86. package/dist/_chunks/sv-BGb12eW3.mjs +202 -0
  87. package/dist/_chunks/sv-BGb12eW3.mjs.map +1 -0
  88. package/dist/_chunks/sv-BNN71SFE.js +202 -0
  89. package/dist/_chunks/sv-BNN71SFE.js.map +1 -0
  90. package/dist/_chunks/th--u3VqsON.mjs +164 -0
  91. package/dist/_chunks/th--u3VqsON.mjs.map +1 -0
  92. package/dist/_chunks/th-C83Bb_kR.js +164 -0
  93. package/dist/_chunks/th-C83Bb_kR.js.map +1 -0
  94. package/dist/_chunks/tr-BW20CfcO.js +179 -0
  95. package/dist/_chunks/tr-BW20CfcO.js.map +1 -0
  96. package/dist/_chunks/tr-DsUerr-c.mjs +179 -0
  97. package/dist/_chunks/tr-DsUerr-c.mjs.map +1 -0
  98. package/dist/_chunks/uk-Bx5IlOKX.mjs +164 -0
  99. package/dist/_chunks/uk-Bx5IlOKX.mjs.map +1 -0
  100. package/dist/_chunks/uk-VwB0oiuV.js +164 -0
  101. package/dist/_chunks/uk-VwB0oiuV.js.map +1 -0
  102. package/dist/_chunks/zh-BiOCwPJu.js +202 -0
  103. package/dist/_chunks/zh-BiOCwPJu.js.map +1 -0
  104. package/dist/_chunks/zh-CsUDN13W.mjs +202 -0
  105. package/dist/_chunks/zh-CsUDN13W.mjs.map +1 -0
  106. package/dist/_chunks/zh-Hans-CLTLm_nt.js +147 -0
  107. package/dist/_chunks/zh-Hans-CLTLm_nt.js.map +1 -0
  108. package/dist/_chunks/zh-Hans-Cc0M5PXr.mjs +147 -0
  109. package/dist/_chunks/zh-Hans-Cc0M5PXr.mjs.map +1 -0
  110. package/dist/admin/index.js +4 -0
  111. package/dist/admin/index.js.map +1 -0
  112. package/dist/admin/index.mjs +5 -0
  113. package/dist/admin/index.mjs.map +1 -0
  114. package/dist/admin/src/components/AllowedTypesSelect.d.ts +9 -0
  115. package/dist/admin/src/components/AttributeIcon.d.ts +9 -0
  116. package/dist/admin/src/components/AttributeOptions/AttributeList.d.ts +6 -0
  117. package/dist/admin/src/components/AttributeOptions/AttributeOption.d.ts +11 -0
  118. package/dist/admin/src/components/AttributeOptions/AttributeOptions.d.ts +13 -0
  119. package/dist/admin/src/components/AttributeOptions/CustomFieldOption.d.ts +22 -0
  120. package/dist/admin/src/components/AttributeOptions/CustomFieldsList.d.ts +1 -0
  121. package/dist/admin/src/components/AttributeOptions/EmptyAttributes.d.ts +2 -0
  122. package/dist/admin/src/components/AttributeOptions/OptionBoxWrapper.d.ts +1 -0
  123. package/dist/admin/src/components/AutoReloadOverlayBlocker.d.ts +25 -0
  124. package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +20 -0
  125. package/dist/admin/src/components/BooleanRadioGroup.d.ts +8 -0
  126. package/dist/admin/src/components/BoxWrapper.d.ts +1 -0
  127. package/dist/admin/src/components/CheckboxWithNumberField.d.ts +11 -0
  128. package/dist/admin/src/components/ComponentCard/ComponentCard.d.ts +10 -0
  129. package/dist/admin/src/components/ComponentCard/ComponentIcon/ComponentIcon.d.ts +7 -0
  130. package/dist/admin/src/components/ComponentCard/ComponentIcon/index.d.ts +1 -0
  131. package/dist/admin/src/components/ComponentCard/index.d.ts +1 -0
  132. package/dist/admin/src/components/ComponentList.d.ts +10 -0
  133. package/dist/admin/src/components/ContentTypeBuilderNav/ContentTypeBuilderNav.d.ts +1 -0
  134. package/dist/admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.d.ts +18 -0
  135. package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +15 -0
  136. package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +15 -0
  137. package/dist/admin/src/components/CustomRadioGroup/Styles.d.ts +2 -0
  138. package/dist/admin/src/components/CustomRadioGroup/index.d.ts +1 -0
  139. package/dist/admin/src/components/DataManagerProvider/DataManagerProvider.d.ts +6 -0
  140. package/dist/admin/src/components/DataManagerProvider/constants.d.ts +17 -0
  141. package/dist/admin/src/components/DataManagerProvider/reducer.d.ts +12 -0
  142. package/dist/admin/src/components/DataManagerProvider/selectors.d.ts +17 -0
  143. package/dist/admin/src/components/DataManagerProvider/utils/cleanData.d.ts +23 -0
  144. package/dist/admin/src/components/DataManagerProvider/utils/createDataObject.d.ts +2 -0
  145. package/dist/admin/src/components/DataManagerProvider/utils/createModifiedDataSchema.d.ts +6 -0
  146. package/dist/admin/src/components/DataManagerProvider/utils/formatSchemas.d.ts +6 -0
  147. package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.d.ts +4 -0
  148. package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.d.ts +4 -0
  149. package/dist/admin/src/components/DataManagerProvider/utils/retrieveNestedComponents.d.ts +1 -0
  150. package/dist/admin/src/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.d.ts +1 -0
  151. package/dist/admin/src/components/DataManagerProvider/utils/serverRestartWatcher.d.ts +6 -0
  152. package/dist/admin/src/components/DataManagerProvider/utils/validateSchema.d.ts +1 -0
  153. package/dist/admin/src/components/DisplayedType.d.ts +7 -0
  154. package/dist/admin/src/components/DraftAndPublishToggle.d.ts +27 -0
  155. package/dist/admin/src/components/DynamicZoneList.d.ts +10 -0
  156. package/dist/admin/src/components/FormModal/FormModal.d.ts +1 -0
  157. package/dist/admin/src/components/FormModal/attributes/advancedForm.d.ts +416 -0
  158. package/dist/admin/src/components/FormModal/attributes/attributeOptions.d.ts +90 -0
  159. package/dist/admin/src/components/FormModal/attributes/baseForm.d.ts +376 -0
  160. package/dist/admin/src/components/FormModal/attributes/commonBaseForm.d.ts +17 -0
  161. package/dist/admin/src/components/FormModal/attributes/form.d.ts +792 -0
  162. package/dist/admin/src/components/FormModal/attributes/nameField.d.ts +12 -0
  163. package/dist/admin/src/components/FormModal/attributes/types.d.ts +325 -0
  164. package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +29 -0
  165. package/dist/admin/src/components/FormModal/category/createCategorySchema.d.ts +5 -0
  166. package/dist/admin/src/components/FormModal/category/form.d.ts +20 -0
  167. package/dist/admin/src/components/FormModal/category/regex.d.ts +1 -0
  168. package/dist/admin/src/components/FormModal/component/componentField.d.ts +20 -0
  169. package/dist/admin/src/components/FormModal/component/componentForm.d.ts +25 -0
  170. package/dist/admin/src/components/FormModal/component/createComponentSchema.d.ts +10 -0
  171. package/dist/admin/src/components/FormModal/constants.d.ts +12 -0
  172. package/dist/admin/src/components/FormModal/contentType/contentTypeForm.d.ts +116 -0
  173. package/dist/admin/src/components/FormModal/contentType/createContentTypeSchema.d.ts +24 -0
  174. package/dist/admin/src/components/FormModal/dynamiczoneForm.d.ts +68 -0
  175. package/dist/admin/src/components/FormModal/forms/forms.d.ts +207 -0
  176. package/dist/admin/src/components/FormModal/forms/utils/addItemsToFormSection.d.ts +38 -0
  177. package/dist/admin/src/components/FormModal/forms/utils/createCollectionName.d.ts +2 -0
  178. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +11 -0
  179. package/dist/admin/src/components/FormModal/reducer.d.ts +4 -0
  180. package/dist/admin/src/components/FormModal/selectors.d.ts +16 -0
  181. package/dist/admin/src/components/FormModal/utils/canEditContentType.d.ts +18 -0
  182. package/dist/admin/src/components/FormModal/utils/createUid.d.ts +4 -0
  183. package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +1 -0
  184. package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +3 -0
  185. package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +1 -0
  186. package/dist/admin/src/components/FormModal/utils/relations.d.ts +4 -0
  187. package/dist/admin/src/components/FormModalEndActions.d.ts +42 -0
  188. package/dist/admin/src/components/FormModalHeader.d.ts +18 -0
  189. package/dist/admin/src/components/FormModalNavigationProvider/FormModalNavigationProvider.d.ts +22 -0
  190. package/dist/admin/src/components/FormModalNavigationProvider/constants.d.ts +16 -0
  191. package/dist/admin/src/components/FormModalSubHeader.d.ts +22 -0
  192. package/dist/admin/src/components/GenericInputs.d.ts +57 -0
  193. package/dist/admin/src/components/IconPicker/IconPicker.d.ts +13 -0
  194. package/dist/admin/src/components/IconPicker/constants.d.ts +5 -0
  195. package/dist/admin/src/components/IconPicker/index.d.ts +1 -0
  196. package/dist/admin/src/components/List.d.ts +18 -0
  197. package/dist/admin/src/components/ListRow.d.ts +20 -0
  198. package/dist/admin/src/components/NestedFooter.d.ts +9 -0
  199. package/dist/admin/src/components/PluginIcon.d.ts +1 -0
  200. package/dist/admin/src/components/PluralName.d.ts +22 -0
  201. package/dist/admin/src/components/Relation/Relation.d.ts +9 -0
  202. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +13 -0
  203. package/dist/admin/src/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.d.ts +6 -0
  204. package/dist/admin/src/components/Relation/RelationNaturePicker/Components.d.ts +48 -0
  205. package/dist/admin/src/components/Relation/RelationNaturePicker/RelationNaturePicker.d.ts +8 -0
  206. package/dist/admin/src/components/SelectCategory.d.ts +19 -0
  207. package/dist/admin/src/components/SelectComponent.d.ts +19 -0
  208. package/dist/admin/src/components/SelectComponents.d.ts +19 -0
  209. package/dist/admin/src/components/SelectDateType.d.ts +38 -0
  210. package/dist/admin/src/components/SelectNumber.d.ts +42 -0
  211. package/dist/admin/src/components/SingularName.d.ts +17 -0
  212. package/dist/admin/src/components/TabForm.d.ts +9 -0
  213. package/dist/admin/src/components/TextareaEnum.d.ts +20 -0
  214. package/dist/admin/src/components/Tr.d.ts +6 -0
  215. package/dist/admin/src/components/UpperFirst.d.ts +3 -0
  216. package/dist/admin/src/constants.d.ts +6 -0
  217. package/dist/admin/src/contexts/DataManagerContext.d.ts +41 -0
  218. package/dist/admin/src/contexts/FormModalNavigationContext.d.ts +38 -0
  219. package/dist/admin/src/hooks/useDataManager.d.ts +1 -0
  220. package/dist/admin/src/hooks/useFormModalNavigation.d.ts +1 -0
  221. package/dist/admin/src/icons/Curve.d.ts +5 -0
  222. package/dist/admin/src/index.d.ts +16 -0
  223. package/dist/admin/src/pages/App/index.d.ts +2 -0
  224. package/dist/admin/src/pages/ListView/LinkToCMSettingsView.d.ts +10 -0
  225. package/dist/admin/src/pages/ListView/ListView.d.ts +2 -0
  226. package/dist/admin/src/pages/RecursivePath/RecursivePath.d.ts +1 -0
  227. package/dist/admin/src/pluginId.d.ts +1 -0
  228. package/dist/admin/src/reducers.d.ts +3 -0
  229. package/dist/admin/src/types.d.ts +57 -0
  230. package/dist/admin/src/utils/findAttribute.d.ts +2 -0
  231. package/dist/admin/src/utils/formAPI.d.ts +1 -0
  232. package/dist/admin/src/utils/getAttributeDisplayedType.d.ts +1 -0
  233. package/dist/admin/src/utils/getRelationType.d.ts +6 -0
  234. package/dist/admin/src/utils/getTrad.d.ts +1 -0
  235. package/dist/admin/src/utils/getYupInnerErrors.d.ts +7 -0
  236. package/dist/admin/src/utils/index.d.ts +2 -0
  237. package/dist/admin/src/utils/isAllowedContentTypesForRelations.d.ts +2 -0
  238. package/dist/admin/src/utils/makeUnique.d.ts +2 -0
  239. package/dist/admin/src/utils/nameToSlug.d.ts +1 -0
  240. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  241. package/dist/admin/src/utils/startsWithANumber.d.ts +1 -0
  242. package/dist/admin/src/utils/toRegressedEnumValue.d.ts +1 -0
  243. package/dist/server/index.js +2312 -0
  244. package/dist/server/index.js.map +1 -0
  245. package/dist/server/index.mjs +2291 -0
  246. package/dist/server/index.mjs.map +1 -0
  247. package/dist/server/src/bootstrap.d.ts +6 -0
  248. package/dist/server/src/bootstrap.d.ts.map +1 -0
  249. package/dist/server/src/config.d.ts +6 -0
  250. package/dist/server/src/config.d.ts.map +1 -0
  251. package/dist/server/src/controllers/builder.d.ts +6 -0
  252. package/dist/server/src/controllers/builder.d.ts.map +1 -0
  253. package/dist/server/src/controllers/component-categories.d.ts +7 -0
  254. package/dist/server/src/controllers/component-categories.d.ts.map +1 -0
  255. package/dist/server/src/controllers/components.d.ts +38 -0
  256. package/dist/server/src/controllers/components.d.ts.map +1 -0
  257. package/dist/server/src/controllers/content-types.d.ts +10 -0
  258. package/dist/server/src/controllers/content-types.d.ts.map +1 -0
  259. package/dist/server/src/controllers/index.d.ts +25 -0
  260. package/dist/server/src/controllers/index.d.ts.map +1 -0
  261. package/dist/server/src/controllers/validation/common.d.ts +25 -0
  262. package/dist/server/src/controllers/validation/common.d.ts.map +1 -0
  263. package/dist/server/src/controllers/validation/component-category.d.ts +5 -0
  264. package/dist/server/src/controllers/validation/component-category.d.ts.map +1 -0
  265. package/dist/server/src/controllers/validation/component.d.ts +25 -0
  266. package/dist/server/src/controllers/validation/component.d.ts.map +1 -0
  267. package/dist/server/src/controllers/validation/content-type.d.ts +36 -0
  268. package/dist/server/src/controllers/validation/content-type.d.ts.map +1 -0
  269. package/dist/server/src/controllers/validation/data-transform.d.ts +4 -0
  270. package/dist/server/src/controllers/validation/data-transform.d.ts.map +1 -0
  271. package/dist/server/src/controllers/validation/model-schema.d.ts +12 -0
  272. package/dist/server/src/controllers/validation/model-schema.d.ts.map +1 -0
  273. package/dist/server/src/controllers/validation/relations.d.ts +16 -0
  274. package/dist/server/src/controllers/validation/relations.d.ts.map +1 -0
  275. package/dist/server/src/controllers/validation/types.d.ts +9 -0
  276. package/dist/server/src/controllers/validation/types.d.ts.map +1 -0
  277. package/dist/server/src/index.d.ts +68 -0
  278. package/dist/server/src/index.d.ts.map +1 -0
  279. package/dist/server/src/routes/admin.d.ts +18 -0
  280. package/dist/server/src/routes/admin.d.ts.map +1 -0
  281. package/dist/server/src/routes/content-api.d.ts +10 -0
  282. package/dist/server/src/routes/content-api.d.ts.map +1 -0
  283. package/dist/server/src/routes/index.d.ts +28 -0
  284. package/dist/server/src/routes/index.d.ts.map +1 -0
  285. package/dist/server/src/services/api-handler.d.ts +15 -0
  286. package/dist/server/src/services/api-handler.d.ts.map +1 -0
  287. package/dist/server/src/services/builder.d.ts +5 -0
  288. package/dist/server/src/services/builder.d.ts.map +1 -0
  289. package/dist/server/src/services/component-categories.d.ts +13 -0
  290. package/dist/server/src/services/component-categories.d.ts.map +1 -0
  291. package/dist/server/src/services/components.d.ts +54 -0
  292. package/dist/server/src/services/components.d.ts.map +1 -0
  293. package/dist/server/src/services/constants.d.ts +19 -0
  294. package/dist/server/src/services/constants.d.ts.map +1 -0
  295. package/dist/server/src/services/content-types.d.ts +60 -0
  296. package/dist/server/src/services/content-types.d.ts.map +1 -0
  297. package/dist/server/src/services/index.d.ts +14 -0
  298. package/dist/server/src/services/index.d.ts.map +1 -0
  299. package/dist/server/src/services/schema-builder/component-builder.d.ts +39 -0
  300. package/dist/server/src/services/schema-builder/component-builder.d.ts.map +1 -0
  301. package/dist/server/src/services/schema-builder/content-type-builder.d.ts +38 -0
  302. package/dist/server/src/services/schema-builder/content-type-builder.d.ts.map +1 -0
  303. package/dist/server/src/services/schema-builder/index.d.ts +78 -0
  304. package/dist/server/src/services/schema-builder/index.d.ts.map +1 -0
  305. package/dist/server/src/services/schema-builder/schema-handler.d.ts +36 -0
  306. package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -0
  307. package/dist/server/src/utils/attributes.d.ts +192 -0
  308. package/dist/server/src/utils/attributes.d.ts.map +1 -0
  309. package/dist/server/src/utils/helpers.d.ts +3 -0
  310. package/dist/server/src/utils/helpers.d.ts.map +1 -0
  311. package/dist/server/src/utils/index.d.ts +15 -0
  312. package/dist/server/src/utils/index.d.ts.map +1 -0
  313. package/dist/server/src/utils/typeguards.d.ts +3 -0
  314. package/dist/server/src/utils/typeguards.d.ts.map +1 -0
  315. package/package.json +91 -3
  316. package/strapi-server.js +3 -0
@@ -0,0 +1,963 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
5
+ const designSystem = require("@strapi/design-system");
6
+ const Icons = require("@strapi/icons");
7
+ const get = require("lodash/get");
8
+ const has = require("lodash/has");
9
+ const isEqual = require("lodash/isEqual");
10
+ const upperFirst = require("lodash/upperFirst");
11
+ const reactIntl = require("react-intl");
12
+ const reactRouterDom = require("react-router-dom");
13
+ const React = require("react");
14
+ const Symbols = require("@strapi/icons/symbols");
15
+ const index = require("./index-ClkMXXk0.js");
16
+ const styled = require("styled-components");
17
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
18
+ const get__default = /* @__PURE__ */ _interopDefault(get);
19
+ const has__default = /* @__PURE__ */ _interopDefault(has);
20
+ const isEqual__default = /* @__PURE__ */ _interopDefault(isEqual);
21
+ const upperFirst__default = /* @__PURE__ */ _interopDefault(upperFirst);
22
+ const styled__default = /* @__PURE__ */ _interopDefault(styled);
23
+ const BoxWrapper$1 = styled__default.default(designSystem.Box)`
24
+ table {
25
+ width: 100%;
26
+ white-space: nowrap;
27
+ }
28
+
29
+ thead {
30
+ border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};
31
+
32
+ tr {
33
+ border-top: 0;
34
+ }
35
+ }
36
+
37
+ tr {
38
+ border-top: 1px solid ${({ theme }) => theme.colors.neutral150};
39
+
40
+ & td,
41
+ & th {
42
+ padding: ${({ theme }) => theme.spaces[4]};
43
+ }
44
+
45
+ & td:first-of-type,
46
+ & th:first-of-type {
47
+ padding: 0 ${({ theme }) => theme.spaces[1]};
48
+ }
49
+ }
50
+
51
+ th,
52
+ td {
53
+ vertical-align: middle;
54
+ text-align: left;
55
+ color: ${({ theme }) => theme.colors.neutral600};
56
+ outline-offset: -4px;
57
+ }
58
+ `;
59
+ const Tr = styled__default.default.tr`
60
+ &.component-row,
61
+ &.dynamiczone-row {
62
+ position: relative;
63
+ border-top: none !important;
64
+
65
+ table tr:first-child {
66
+ border-top: none;
67
+ }
68
+
69
+ > td:first-of-type {
70
+ padding: 0 0 0 2rem;
71
+ position: relative;
72
+
73
+ &::before {
74
+ content: '';
75
+ width: 0.4rem;
76
+ height: calc(100% - 40px);
77
+ position: absolute;
78
+ top: -7px;
79
+ left: 2.6rem;
80
+ border-radius: 4px;
81
+
82
+ ${({ isFromDynamicZone, isChildOfDynamicZone, theme }) => {
83
+ if (isChildOfDynamicZone) {
84
+ return `background-color: ${theme.colors.primary200};`;
85
+ }
86
+ if (isFromDynamicZone) {
87
+ return `background-color: ${theme.colors.primary200};`;
88
+ }
89
+ return `background: ${theme.colors.neutral150};`;
90
+ }}
91
+ }
92
+ }
93
+ }
94
+
95
+ &.dynamiczone-row > td:first-of-type {
96
+ padding: 0;
97
+ }
98
+ `;
99
+ const ComponentList = ({
100
+ customRowComponent,
101
+ component,
102
+ isFromDynamicZone = false,
103
+ isNestedInDZComponent = false,
104
+ firstLoopComponentUid
105
+ }) => {
106
+ const { modifiedData } = index.useDataManager();
107
+ const {
108
+ schema: { attributes }
109
+ } = get__default.default(modifiedData, ["components", component], {
110
+ schema: { attributes: [] }
111
+ });
112
+ return /* @__PURE__ */ jsxRuntime.jsx(Tr, { isChildOfDynamicZone: isFromDynamicZone, className: "component-row", children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
113
+ List,
114
+ {
115
+ customRowComponent,
116
+ items: attributes,
117
+ targetUid: component,
118
+ firstLoopComponentUid: firstLoopComponentUid || component,
119
+ editTarget: "components",
120
+ isFromDynamicZone,
121
+ isNestedInDZComponent,
122
+ isSub: true,
123
+ secondLoopComponentUid: firstLoopComponentUid ? component : null
124
+ }
125
+ ) }) });
126
+ };
127
+ const ComponentIcon = ({ isActive = false, icon = "dashboard" }) => {
128
+ const Icon = index.COMPONENT_ICONS[icon] || index.COMPONENT_ICONS.dashboard;
129
+ return /* @__PURE__ */ jsxRuntime.jsx(
130
+ designSystem.Flex,
131
+ {
132
+ alignItems: "center",
133
+ background: isActive ? "primary200" : "neutral200",
134
+ justifyContent: "center",
135
+ height: 8,
136
+ width: 8,
137
+ borderRadius: "50%",
138
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { height: "2rem", width: "2rem" })
139
+ }
140
+ );
141
+ };
142
+ const CloseButton = styled__default.default(designSystem.Box)`
143
+ position: absolute;
144
+ display: none;
145
+ top: 5px;
146
+ right: 0.8rem;
147
+
148
+ svg {
149
+ width: 1rem;
150
+ height: 1rem;
151
+
152
+ path {
153
+ fill: ${({ theme }) => theme.colors.primary600};
154
+ }
155
+ }
156
+ `;
157
+ const ComponentBox = styled__default.default(designSystem.Flex)`
158
+ width: 14rem;
159
+ height: 8rem;
160
+ position: relative;
161
+ border: 1px solid ${({ theme }) => theme.colors.neutral200};
162
+ background: ${({ theme }) => theme.colors.neutral100};
163
+ border-radius: ${({ theme }) => theme.borderRadius};
164
+ max-width: 100%;
165
+
166
+ &.active,
167
+ &:focus,
168
+ &:hover {
169
+ border: 1px solid ${({ theme }) => theme.colors.primary200};
170
+ background: ${({ theme }) => theme.colors.primary100};
171
+
172
+ ${CloseButton} {
173
+ display: block;
174
+ }
175
+
176
+ ${designSystem.Typography} {
177
+ color: ${({ theme }) => theme.colors.primary600};
178
+ }
179
+
180
+ /* > ComponentIcon */
181
+ > div:first-child {
182
+ background: ${({ theme }) => theme.colors.primary200};
183
+ color: ${({ theme }) => theme.colors.primary600};
184
+
185
+ svg {
186
+ path {
187
+ fill: ${({ theme }) => theme.colors.primary600};
188
+ }
189
+ }
190
+ }
191
+ }
192
+ `;
193
+ const ComponentCard = ({
194
+ component,
195
+ dzName,
196
+ index: index$1,
197
+ isActive = false,
198
+ isInDevelopmentMode = false,
199
+ onClick
200
+ }) => {
201
+ const { modifiedData, removeComponentFromDynamicZone } = index.useDataManager();
202
+ const {
203
+ schema: { icon, displayName }
204
+ } = get__default.default(modifiedData, ["components", component], { schema: {} });
205
+ const onClose = (e) => {
206
+ e.stopPropagation();
207
+ removeComponentFromDynamicZone(dzName, index$1);
208
+ };
209
+ return /* @__PURE__ */ jsxRuntime.jsxs(
210
+ ComponentBox,
211
+ {
212
+ alignItems: "center",
213
+ direction: "column",
214
+ className: isActive ? "active" : "",
215
+ borderRadius: "borderRadius",
216
+ justifyContent: "center",
217
+ paddingLeft: 4,
218
+ paddingRight: 4,
219
+ shrink: 0,
220
+ onClick,
221
+ role: "tab",
222
+ tabIndex: isActive ? 0 : -1,
223
+ cursor: "pointer",
224
+ "aria-selected": isActive,
225
+ "aria-controls": `dz-${dzName}-panel-${index$1}`,
226
+ id: `dz-${dzName}-tab-${index$1}`,
227
+ children: [
228
+ /* @__PURE__ */ jsxRuntime.jsx(ComponentIcon, { icon, isActive }),
229
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { marginTop: 1, maxWidth: "100%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", ellipsis: true, children: displayName }) }),
230
+ isInDevelopmentMode && /* @__PURE__ */ jsxRuntime.jsx(CloseButton, { as: "button", onClick: onClose, children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Cross, {}) })
231
+ ]
232
+ }
233
+ );
234
+ };
235
+ const StyledAddIcon = styled__default.default(Icons.Plus)`
236
+ width: 3.2rem;
237
+ height: 3.2rem;
238
+ padding: 0.9rem;
239
+ border-radius: 6.4rem;
240
+ background: ${({ theme }) => theme.colors.primary100};
241
+ path {
242
+ fill: ${({ theme }) => theme.colors.primary600};
243
+ }
244
+ `;
245
+ const FixedBox = styled__default.default(designSystem.Box)`
246
+ height: 9rem;
247
+ position: absolute;
248
+ width: 100%;
249
+ top: 0;
250
+ left: 0;
251
+ `;
252
+ const ScrollableStack = styled__default.default(designSystem.Flex)`
253
+ width: 100%;
254
+ overflow-x: auto;
255
+ `;
256
+ const ComponentContentBox = styled__default.default(designSystem.Box)`
257
+ padding-top: 9rem;
258
+ `;
259
+ const ComponentStack = styled__default.default(designSystem.Flex)`
260
+ flex-shrink: 0;
261
+ width: 14rem;
262
+ height: 8rem;
263
+ justify-content: center;
264
+ align-items: center;
265
+ `;
266
+ const DynamicZoneList = ({
267
+ customRowComponent,
268
+ components = [],
269
+ addComponent,
270
+ name,
271
+ targetUid
272
+ }) => {
273
+ const { isInDevelopmentMode } = index.useDataManager();
274
+ const [activeTab, setActiveTab] = React.useState(0);
275
+ const { formatMessage } = reactIntl.useIntl();
276
+ const toggle = (tab) => {
277
+ if (activeTab !== tab) {
278
+ setActiveTab(tab);
279
+ }
280
+ };
281
+ const handleClickAdd = () => {
282
+ addComponent(name);
283
+ };
284
+ return /* @__PURE__ */ jsxRuntime.jsx(Tr, { className: "dynamiczone-row", isFromDynamicZone: true, children: /* @__PURE__ */ jsxRuntime.jsxs("td", { colSpan: 12, children: [
285
+ /* @__PURE__ */ jsxRuntime.jsx(FixedBox, { paddingLeft: 8, children: /* @__PURE__ */ jsxRuntime.jsxs(ScrollableStack, { gap: 2, children: [
286
+ isInDevelopmentMode && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: handleClickAdd, children: /* @__PURE__ */ jsxRuntime.jsxs(ComponentStack, { direction: "column", alignItems: "stretch", gap: 1, children: [
287
+ /* @__PURE__ */ jsxRuntime.jsx(StyledAddIcon, {}),
288
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", textColor: "primary600", children: formatMessage({
289
+ id: index.getTrad("button.component.add"),
290
+ defaultMessage: "Add a component"
291
+ }) })
292
+ ] }) }),
293
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "tablist", gap: 2, children: components.map((component, index2) => {
294
+ return /* @__PURE__ */ jsxRuntime.jsx(
295
+ ComponentCard,
296
+ {
297
+ dzName: name || "",
298
+ index: index2,
299
+ component,
300
+ isActive: activeTab === index2,
301
+ isInDevelopmentMode,
302
+ onClick: () => toggle(index2)
303
+ },
304
+ component
305
+ );
306
+ }) })
307
+ ] }) }),
308
+ /* @__PURE__ */ jsxRuntime.jsx(ComponentContentBox, { children: components.map((component, index2) => {
309
+ const props = {
310
+ customRowComponent,
311
+ component
312
+ };
313
+ return /* @__PURE__ */ jsxRuntime.jsx(
314
+ designSystem.Box,
315
+ {
316
+ id: `dz-${name}-panel-${index2}`,
317
+ role: "tabpanel",
318
+ "aria-labelledby": `dz-${name}-tab-${index2}`,
319
+ style: { display: activeTab === index2 ? "block" : "none" },
320
+ children: /* @__PURE__ */ jsxRuntime.jsx("table", { children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ React.createElement(
321
+ ComponentList,
322
+ {
323
+ ...props,
324
+ isFromDynamicZone: true,
325
+ component: targetUid,
326
+ key: component
327
+ }
328
+ ) }) })
329
+ },
330
+ component
331
+ );
332
+ }) })
333
+ ] }) });
334
+ };
335
+ const IconBox = styled__default.default(designSystem.Box)`
336
+ height: 2.4rem;
337
+ width: 2.4rem;
338
+ border-radius: 50%;
339
+ display: flex;
340
+ justify-content: center;
341
+ align-items: center;
342
+
343
+ svg {
344
+ height: 1rem;
345
+ width: 1rem;
346
+ }
347
+
348
+ svg path {
349
+ fill: ${({ theme, color }) => theme.colors[`${color}600`]};
350
+ }
351
+ `;
352
+ const ButtonBox = styled__default.default(designSystem.Box)`
353
+ border-radius: 0 0 ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius};
354
+ display: block;
355
+ width: 100%;
356
+ border: none;
357
+ position: relative;
358
+ left: -0.4rem;
359
+ `;
360
+ const NestedTFooter = ({ children, icon, color, ...props }) => {
361
+ return /* @__PURE__ */ jsxRuntime.jsx(ButtonBox, { paddingBottom: 4, paddingTop: 4, as: "button", type: "button", ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
362
+ /* @__PURE__ */ jsxRuntime.jsx(IconBox, { color, "aria-hidden": true, background: `${color}200`, children: icon }),
363
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingLeft: 3, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", fontWeight: "bold", textColor: `${color}600`, children }) })
364
+ ] }) });
365
+ };
366
+ const List = ({
367
+ addComponentToDZ,
368
+ customRowComponent,
369
+ editTarget,
370
+ firstLoopComponentUid,
371
+ isFromDynamicZone = false,
372
+ isMain = false,
373
+ isNestedInDZComponent = false,
374
+ isSub = false,
375
+ items = [],
376
+ secondLoopComponentUid,
377
+ targetUid
378
+ }) => {
379
+ const { formatMessage } = reactIntl.useIntl();
380
+ const { trackUsage } = strapiAdmin.useTracking();
381
+ const { isInDevelopmentMode, modifiedData, isInContentTypeView } = index.useDataManager();
382
+ const { onOpenModalAddField } = index.useFormModalNavigation();
383
+ const onClickAddField = () => {
384
+ trackUsage("hasClickedCTBAddFieldBanner");
385
+ onOpenModalAddField({ forTarget: editTarget, targetUid });
386
+ };
387
+ if (!targetUid) {
388
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount: 2, rowCount: 2, children: [
389
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
390
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.name", defaultMessage: "Name" }) }) }),
391
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.type", defaultMessage: "Type" }) }) })
392
+ ] }) }),
393
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tr, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { colSpan: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
394
+ designSystem.EmptyStateLayout,
395
+ {
396
+ content: formatMessage({
397
+ id: index.getTrad("table.content.create-first-content-type"),
398
+ defaultMessage: "Create your first Collection-Type"
399
+ }),
400
+ hasRadius: true,
401
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Symbols.EmptyDocuments, { width: "16rem" })
402
+ }
403
+ ) }) }) })
404
+ ] });
405
+ }
406
+ if (items.length === 0 && isMain) {
407
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount: 2, rowCount: 2, children: [
408
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
409
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.name", defaultMessage: "Name" }) }) }),
410
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.type", defaultMessage: "Type" }) }) })
411
+ ] }) }),
412
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tr, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { colSpan: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
413
+ designSystem.EmptyStateLayout,
414
+ {
415
+ action: /* @__PURE__ */ jsxRuntime.jsx(
416
+ designSystem.Button,
417
+ {
418
+ onClick: onClickAddField,
419
+ size: "L",
420
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Plus, {}),
421
+ variant: "secondary",
422
+ children: formatMessage({
423
+ id: index.getTrad("table.button.no-fields"),
424
+ defaultMessage: "Add new field"
425
+ })
426
+ }
427
+ ),
428
+ content: formatMessage(
429
+ isInContentTypeView ? {
430
+ id: index.getTrad("table.content.no-fields.collection-type"),
431
+ defaultMessage: "Add your first field to this Collection-Type"
432
+ } : {
433
+ id: index.getTrad("table.content.no-fields.component"),
434
+ defaultMessage: "Add your first field to this component"
435
+ }
436
+ ),
437
+ hasRadius: true,
438
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Symbols.EmptyDocuments, { width: "16rem" })
439
+ }
440
+ ) }) }) })
441
+ ] });
442
+ }
443
+ return /* @__PURE__ */ jsxRuntime.jsxs(BoxWrapper$1, { children: [
444
+ /* @__PURE__ */ jsxRuntime.jsx(
445
+ designSystem.Box,
446
+ {
447
+ paddingLeft: 6,
448
+ paddingRight: isMain ? 6 : 0,
449
+ ...isMain && { style: { overflowX: "auto" } },
450
+ children: /* @__PURE__ */ jsxRuntime.jsxs("table", { children: [
451
+ isMain && /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
452
+ /* @__PURE__ */ jsxRuntime.jsx("th", { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.name", defaultMessage: "Name" }) }) }),
453
+ /* @__PURE__ */ jsxRuntime.jsx("th", { colSpan: 2, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.type", defaultMessage: "Type" }) }) })
454
+ ] }) }),
455
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: items.map((item) => {
456
+ const { type } = item;
457
+ const CustomRow = customRowComponent;
458
+ return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
459
+ /* @__PURE__ */ jsxRuntime.jsx(
460
+ CustomRow,
461
+ {
462
+ ...item,
463
+ isNestedInDZComponent,
464
+ targetUid,
465
+ editTarget,
466
+ firstLoopComponentUid,
467
+ isFromDynamicZone,
468
+ secondLoopComponentUid
469
+ }
470
+ ),
471
+ type === "component" && /* @__PURE__ */ jsxRuntime.jsx(
472
+ ComponentList,
473
+ {
474
+ ...item,
475
+ customRowComponent,
476
+ targetUid,
477
+ isNestedInDZComponent: isFromDynamicZone,
478
+ editTarget,
479
+ firstLoopComponentUid
480
+ }
481
+ ),
482
+ type === "dynamiczone" && /* @__PURE__ */ jsxRuntime.jsx(
483
+ DynamicZoneList,
484
+ {
485
+ ...item,
486
+ customRowComponent,
487
+ addComponent: addComponentToDZ,
488
+ targetUid
489
+ }
490
+ )
491
+ ] }, item.name);
492
+ }) })
493
+ ] })
494
+ }
495
+ ),
496
+ isMain && isInDevelopmentMode && /* @__PURE__ */ jsxRuntime.jsx(designSystem.TFooter, { icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Plus, {}), onClick: onClickAddField, children: formatMessage({
497
+ id: index.getTrad(
498
+ `form.button.add.field.to.${modifiedData.contentType ? modifiedData.contentType.schema.kind : editTarget || "collectionType"}`
499
+ ),
500
+ defaultMessage: "Add another field"
501
+ }) }),
502
+ isSub && isInDevelopmentMode && !isFromDynamicZone && /* @__PURE__ */ jsxRuntime.jsx(
503
+ NestedTFooter,
504
+ {
505
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Plus, {}),
506
+ onClick: onClickAddField,
507
+ color: isFromDynamicZone ? "primary" : "neutral",
508
+ children: formatMessage({
509
+ id: index.getTrad(`form.button.add.field.to.component`),
510
+ defaultMessage: "Add another field"
511
+ })
512
+ }
513
+ )
514
+ ] });
515
+ };
516
+ const StyledBox = styled__default.default(designSystem.Box)`
517
+ position: absolute;
518
+ left: -1.8rem;
519
+ top: 0px;
520
+
521
+ &:before {
522
+ content: '';
523
+ width: 0.4rem;
524
+ height: 1.2rem;
525
+ background: ${({ theme, color }) => theme.colors[color]};
526
+ display: block;
527
+ }
528
+ `;
529
+ const Svg = styled__default.default.svg`
530
+ position: relative;
531
+ flex-shrink: 0;
532
+ transform: translate(-0.5px, -1px);
533
+
534
+ * {
535
+ fill: ${({ theme, color }) => theme.colors[color]};
536
+ }
537
+ `;
538
+ const Curve = (props) => /* @__PURE__ */ jsxRuntime.jsx(StyledBox, { children: /* @__PURE__ */ jsxRuntime.jsx(
539
+ Svg,
540
+ {
541
+ width: "20",
542
+ height: "23",
543
+ viewBox: "0 0 20 23",
544
+ fill: "none",
545
+ xmlns: "http://www.w3.org/2000/svg",
546
+ ...props,
547
+ children: /* @__PURE__ */ jsxRuntime.jsx(
548
+ "path",
549
+ {
550
+ fillRule: "evenodd",
551
+ clipRule: "evenodd",
552
+ d: "M7.02477 14.7513C8.65865 17.0594 11.6046 18.6059 17.5596 18.8856C18.6836 18.9384 19.5976 19.8435 19.5976 20.9688V20.9688C19.5976 22.0941 18.6841 23.0125 17.5599 22.9643C10.9409 22.6805 6.454 20.9387 3.75496 17.1258C0.937988 13.1464 0.486328 7.39309 0.486328 0.593262H4.50974C4.50974 7.54693 5.06394 11.9813 7.02477 14.7513Z"
553
+ }
554
+ )
555
+ }
556
+ ) });
557
+ const DisplayedType = ({
558
+ type,
559
+ customField = null,
560
+ repeatable = false
561
+ }) => {
562
+ const { formatMessage } = reactIntl.useIntl();
563
+ let readableType = type;
564
+ if (["integer", "biginteger", "float", "decimal"].includes(type)) {
565
+ readableType = "number";
566
+ } else if (["string"].includes(type)) {
567
+ readableType = "text";
568
+ }
569
+ if (customField) {
570
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
571
+ id: index.getTrad("attribute.customField"),
572
+ defaultMessage: "Custom field"
573
+ }) });
574
+ }
575
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { children: [
576
+ formatMessage({
577
+ id: index.getTrad(`attribute.${readableType}`),
578
+ defaultMessage: type
579
+ }),
580
+ " ",
581
+ repeatable && formatMessage({
582
+ id: index.getTrad("component.repeatable"),
583
+ defaultMessage: "(repeatable)"
584
+ })
585
+ ] });
586
+ };
587
+ const UpperFirst = ({ content }) => /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: upperFirst__default.default(content) });
588
+ const BoxWrapper = styled__default.default(designSystem.Box)`
589
+ position: relative;
590
+ `;
591
+ const ListRow = React.memo(
592
+ ({
593
+ configurable = true,
594
+ customField = null,
595
+ editTarget,
596
+ firstLoopComponentUid = null,
597
+ isFromDynamicZone = false,
598
+ name,
599
+ onClick,
600
+ relation = "",
601
+ repeatable = false,
602
+ secondLoopComponentUid = null,
603
+ target = null,
604
+ targetUid = null,
605
+ type
606
+ }) => {
607
+ const { contentTypes, isInDevelopmentMode, removeAttribute } = index.useDataManager();
608
+ const { formatMessage } = reactIntl.useIntl();
609
+ const isMorph = type === "relation" && relation.includes("morph");
610
+ const ico = ["integer", "biginteger", "float", "decimal"].includes(type) ? "number" : type;
611
+ const contentType = get__default.default(contentTypes, [target], {});
612
+ const contentTypeFriendlyName = get__default.default(contentType, ["schema", "displayName"], "");
613
+ const isPluginContentType = get__default.default(contentType, "plugin");
614
+ const src = target ? "relation" : ico;
615
+ const handleClick = () => {
616
+ if (isMorph) {
617
+ return;
618
+ }
619
+ if (configurable !== false) {
620
+ const attrType = type;
621
+ onClick(
622
+ // Tells where the attribute is located in the main modifiedData object : contentType, component or components
623
+ editTarget,
624
+ // main data type uid
625
+ secondLoopComponentUid || firstLoopComponentUid || targetUid,
626
+ // Name of the attribute
627
+ name,
628
+ // Type of the attribute
629
+ attrType,
630
+ customField
631
+ );
632
+ }
633
+ };
634
+ let loopNumber;
635
+ if (secondLoopComponentUid && firstLoopComponentUid) {
636
+ loopNumber = 2;
637
+ } else if (firstLoopComponentUid) {
638
+ loopNumber = 1;
639
+ } else {
640
+ loopNumber = 0;
641
+ }
642
+ return /* @__PURE__ */ jsxRuntime.jsxs(
643
+ BoxWrapper,
644
+ {
645
+ as: "tr",
646
+ onClick: isInDevelopmentMode && configurable && !isMorph ? handleClick : void 0,
647
+ children: [
648
+ /* @__PURE__ */ jsxRuntime.jsxs("td", { style: { position: "relative" }, children: [
649
+ loopNumber !== 0 && /* @__PURE__ */ jsxRuntime.jsx(Curve, { color: isFromDynamicZone ? "primary200" : "neutral150" }),
650
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingLeft: 2, gap: 4, children: [
651
+ /* @__PURE__ */ jsxRuntime.jsx(index.AttributeIcon, { type: src, customField }),
652
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: name })
653
+ ] })
654
+ ] }),
655
+ /* @__PURE__ */ jsxRuntime.jsx("td", { children: target ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { children: [
656
+ formatMessage({
657
+ id: index.getTrad(
658
+ `modelPage.attribute.${isMorph ? "relation-polymorphic" : "relationWith"}`
659
+ ),
660
+ defaultMessage: "Relation with"
661
+ }),
662
+ " ",
663
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontStyle: "italic" }, children: [
664
+ /* @__PURE__ */ jsxRuntime.jsx(UpperFirst, { content: contentTypeFriendlyName }),
665
+ " ",
666
+ isPluginContentType && `(${formatMessage({
667
+ id: index.getTrad(`from`),
668
+ defaultMessage: "from"
669
+ })}: ${isPluginContentType})`
670
+ ] })
671
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(DisplayedType, { type, customField, repeatable }) }),
672
+ /* @__PURE__ */ jsxRuntime.jsx("td", { children: isInDevelopmentMode ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", onClick: (e) => e.stopPropagation(), children: configurable ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 1, children: [
673
+ !isMorph && /* @__PURE__ */ jsxRuntime.jsx(
674
+ designSystem.IconButton,
675
+ {
676
+ onClick: handleClick,
677
+ label: `${formatMessage({
678
+ id: "app.utils.edit",
679
+ defaultMessage: "Edit"
680
+ })} ${name}`,
681
+ noBorder: true,
682
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Pencil, {})
683
+ }
684
+ ),
685
+ /* @__PURE__ */ jsxRuntime.jsx(
686
+ designSystem.IconButton,
687
+ {
688
+ onClick: (e) => {
689
+ e.stopPropagation();
690
+ removeAttribute(
691
+ editTarget,
692
+ name,
693
+ secondLoopComponentUid || firstLoopComponentUid || ""
694
+ );
695
+ },
696
+ label: `${formatMessage({
697
+ id: "global.delete",
698
+ defaultMessage: "Delete"
699
+ })} ${name}`,
700
+ noBorder: true,
701
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Trash, {})
702
+ }
703
+ )
704
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(Icons.Lock, {}) }) : (
705
+ /*
706
+ In production mode the edit icons aren't visible, therefore
707
+ we need to reserve the same space, otherwise the height of the
708
+ row might collapse, leading to bad positioned curve icons
709
+ */
710
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { height: "3.2rem" })
711
+ ) })
712
+ ]
713
+ }
714
+ );
715
+ }
716
+ );
717
+ const getAttributeDisplayedType = (type) => {
718
+ let displayedType;
719
+ switch (type) {
720
+ case "date":
721
+ case "datetime":
722
+ case "time":
723
+ case "timestamp":
724
+ displayedType = "date";
725
+ break;
726
+ case "integer":
727
+ case "biginteger":
728
+ case "decimal":
729
+ case "float":
730
+ displayedType = "number";
731
+ break;
732
+ case "string":
733
+ case "text":
734
+ displayedType = "text";
735
+ break;
736
+ case "":
737
+ displayedType = "relation";
738
+ break;
739
+ default:
740
+ displayedType = type;
741
+ }
742
+ return displayedType;
743
+ };
744
+ const cmPermissions = {
745
+ collectionTypesConfigurations: [
746
+ {
747
+ action: "plugin::content-manager.collection-types.configure-view",
748
+ subject: null
749
+ }
750
+ ],
751
+ componentsConfigurations: [
752
+ {
753
+ action: "plugin::content-manager.components.configure-layout",
754
+ subject: null
755
+ }
756
+ ],
757
+ singleTypesConfigurations: [
758
+ {
759
+ action: "plugin::content-manager.single-types.configure-view",
760
+ subject: null
761
+ }
762
+ ]
763
+ };
764
+ const LinkToCMSettingsView = React.memo(
765
+ ({
766
+ disabled,
767
+ isTemporary = false,
768
+ isInContentTypeView = true,
769
+ contentTypeKind = "collectionType",
770
+ targetUid = ""
771
+ }) => {
772
+ const { formatMessage } = reactIntl.useIntl();
773
+ const navigate = reactRouterDom.useNavigate();
774
+ const { collectionTypesConfigurations, componentsConfigurations, singleTypesConfigurations } = cmPermissions;
775
+ const label = formatMessage({
776
+ id: "content-type-builder.form.button.configure-view",
777
+ defaultMessage: "Configure the view"
778
+ });
779
+ let permissionsToApply = collectionTypesConfigurations;
780
+ const handleClick = () => {
781
+ if (isTemporary) {
782
+ return false;
783
+ }
784
+ if (isInContentTypeView) {
785
+ navigate(`/content-manager/collection-types/${targetUid}/configurations/edit`);
786
+ } else {
787
+ navigate(`/content-manager/components/${targetUid}/configurations/edit`);
788
+ }
789
+ return false;
790
+ };
791
+ if (isInContentTypeView && contentTypeKind === "singleType") {
792
+ permissionsToApply = singleTypesConfigurations;
793
+ }
794
+ if (!isInContentTypeView) {
795
+ permissionsToApply = componentsConfigurations;
796
+ }
797
+ const {
798
+ allowedActions: { canViewConfig }
799
+ } = strapiAdmin.useRBAC({
800
+ viewConfig: permissionsToApply
801
+ });
802
+ if (!canViewConfig) {
803
+ return null;
804
+ }
805
+ return /* @__PURE__ */ jsxRuntime.jsx(
806
+ designSystem.Button,
807
+ {
808
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.ListPlus, {}),
809
+ variant: "tertiary",
810
+ onClick: handleClick,
811
+ disabled: isTemporary || disabled,
812
+ children: label
813
+ }
814
+ );
815
+ }
816
+ );
817
+ const ListView = () => {
818
+ const { initialData, modifiedData, isInDevelopmentMode, isInContentTypeView, submitData } = index.useDataManager();
819
+ const { formatMessage } = reactIntl.useIntl();
820
+ const { trackUsage } = strapiAdmin.useTracking();
821
+ const match = reactRouterDom.useMatch("/plugins/content-type-builder/:kind/:currentUID");
822
+ const {
823
+ onOpenModalAddComponentsToDZ,
824
+ onOpenModalAddField,
825
+ onOpenModalEditField,
826
+ onOpenModalEditSchema,
827
+ onOpenModalEditCustomField
828
+ } = index.useFormModalNavigation();
829
+ const firstMainDataPath = isInContentTypeView ? "contentType" : "component";
830
+ const mainDataTypeAttributesPath = [firstMainDataPath, "schema", "attributes"];
831
+ const targetUid = get__default.default(modifiedData, [firstMainDataPath, "uid"]);
832
+ const isTemporary = get__default.default(modifiedData, [firstMainDataPath, "isTemporary"], false);
833
+ const contentTypeKind = get__default.default(modifiedData, [firstMainDataPath, "schema", "kind"], null);
834
+ const attributes = get__default.default(modifiedData, mainDataTypeAttributesPath, []);
835
+ const isFromPlugin = has__default.default(initialData, [firstMainDataPath, "plugin"]);
836
+ const hasModelBeenModified = !isEqual__default.default(modifiedData, initialData);
837
+ const forTarget = isInContentTypeView ? "contentType" : "component";
838
+ const handleClickAddComponentToDZ = (dynamicZoneTarget) => {
839
+ onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid });
840
+ };
841
+ const handleClickEditField = async (forTarget2, targetUid2, attributeName, type, customField) => {
842
+ const attributeType = getAttributeDisplayedType(type);
843
+ const step = type === "component" ? "2" : null;
844
+ if (customField) {
845
+ onOpenModalEditCustomField({
846
+ forTarget: forTarget2,
847
+ targetUid: targetUid2,
848
+ attributeName,
849
+ attributeType,
850
+ customFieldUid: customField
851
+ });
852
+ } else {
853
+ onOpenModalEditField({
854
+ forTarget: forTarget2,
855
+ targetUid: targetUid2,
856
+ attributeName,
857
+ attributeType,
858
+ step
859
+ });
860
+ }
861
+ };
862
+ let label = get__default.default(modifiedData, [firstMainDataPath, "schema", "displayName"], "");
863
+ const kind = get__default.default(modifiedData, [firstMainDataPath, "schema", "kind"], "");
864
+ const isCreatingFirstContentType = match?.params.currentUID === "create-content-type";
865
+ if (!label && isCreatingFirstContentType) {
866
+ label = formatMessage({
867
+ id: index.getTrad("button.model.create"),
868
+ defaultMessage: "Create new collection type"
869
+ });
870
+ }
871
+ const onEdit = () => {
872
+ const contentType = kind || firstMainDataPath;
873
+ if (contentType === "collectionType") {
874
+ trackUsage("willEditNameOfContentType");
875
+ }
876
+ if (contentType === "singleType") {
877
+ trackUsage("willEditNameOfSingleType");
878
+ }
879
+ onOpenModalEditSchema({
880
+ modalType: firstMainDataPath,
881
+ forTarget: firstMainDataPath,
882
+ targetUid,
883
+ kind: contentType
884
+ });
885
+ };
886
+ reactRouterDom.unstable_usePrompt({
887
+ when: hasModelBeenModified,
888
+ message: formatMessage({ id: index.getTrad("prompt.unsaved"), defaultMessage: "Are you sure?" })
889
+ });
890
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
891
+ /* @__PURE__ */ jsxRuntime.jsx(
892
+ designSystem.HeaderLayout,
893
+ {
894
+ id: "title",
895
+ primaryAction: isInDevelopmentMode && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
896
+ !isCreatingFirstContentType && /* @__PURE__ */ jsxRuntime.jsx(
897
+ designSystem.Button,
898
+ {
899
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Plus, {}),
900
+ variant: "secondary",
901
+ onClick: () => {
902
+ onOpenModalAddField({ forTarget, targetUid });
903
+ },
904
+ children: formatMessage({
905
+ id: index.getTrad("button.attributes.add.another"),
906
+ defaultMessage: "Add another field"
907
+ })
908
+ }
909
+ ),
910
+ /* @__PURE__ */ jsxRuntime.jsx(
911
+ designSystem.Button,
912
+ {
913
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Check, {}),
914
+ onClick: async () => await submitData(),
915
+ type: "submit",
916
+ disabled: isEqual__default.default(modifiedData, initialData),
917
+ children: formatMessage({
918
+ id: "global.save",
919
+ defaultMessage: "Save"
920
+ })
921
+ }
922
+ )
923
+ ] }),
924
+ secondaryAction: isInDevelopmentMode && !isFromPlugin && !isCreatingFirstContentType && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Pencil, {}), variant: "tertiary", onClick: onEdit, children: formatMessage({
925
+ id: "app.utils.edit",
926
+ defaultMessage: "Edit"
927
+ }) }),
928
+ title: upperFirst__default.default(label),
929
+ subtitle: formatMessage({
930
+ id: index.getTrad("listView.headerLayout.description"),
931
+ defaultMessage: "Build the data architecture of your content"
932
+ }),
933
+ navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {})
934
+ }
935
+ ),
936
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
937
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { gap: 2, children: /* @__PURE__ */ jsxRuntime.jsx(
938
+ LinkToCMSettingsView,
939
+ {
940
+ targetUid,
941
+ isTemporary,
942
+ isInContentTypeView,
943
+ contentTypeKind,
944
+ disabled: isCreatingFirstContentType
945
+ },
946
+ "link-to-cm-settings-view"
947
+ ) }) }),
948
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { background: "neutral0", shadow: "filterShadow", hasRadius: true, children: /* @__PURE__ */ jsxRuntime.jsx(
949
+ List,
950
+ {
951
+ items: attributes,
952
+ customRowComponent: (props) => /* @__PURE__ */ jsxRuntime.jsx(ListRow, { ...props, onClick: handleClickEditField }),
953
+ addComponentToDZ: handleClickAddComponentToDZ,
954
+ targetUid,
955
+ editTarget: forTarget,
956
+ isMain: true
957
+ }
958
+ ) })
959
+ ] }) })
960
+ ] });
961
+ };
962
+ exports.default = ListView;
963
+ //# sourceMappingURL=ListView-BG19KtnI.js.map