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

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