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