strapi-plugin-navigation 3.0.0-beta.0 → 3.0.0-beta.2

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 (339) hide show
  1. package/README.md +23 -28
  2. package/dist/_chunks/ca-Bjfh0w36.js +480 -0
  3. package/dist/_chunks/ca-DIZHA0OL.mjs +480 -0
  4. package/dist/_chunks/en-BPYZYsnc.mjs +490 -0
  5. package/dist/_chunks/en-CT7eKHZS.js +490 -0
  6. package/dist/_chunks/fr-BTVWPkax.mjs +490 -0
  7. package/dist/_chunks/fr-ybbSdjZO.js +490 -0
  8. package/dist/admin/index.js +55426 -0
  9. package/dist/admin/index.mjs +55408 -0
  10. package/dist/admin/src/api/client.d.ts +192 -0
  11. package/dist/admin/src/api/validators.d.ts +1828 -0
  12. package/dist/admin/src/components/ConfirmationDialog/index.d.ts +20 -0
  13. package/dist/admin/src/components/Initializer.d.ts +5 -0
  14. package/dist/admin/src/components/RestartAlert/index.d.ts +2 -0
  15. package/dist/admin/src/components/TextArrayInput/index.d.ts +12 -0
  16. package/dist/admin/src/components/icons/navigation.d.ts +4 -0
  17. package/dist/admin/src/components/icons/pluginIcon.d.ts +7 -0
  18. package/dist/admin/src/index.d.ts +10 -0
  19. package/dist/admin/src/pages/App.d.ts +2 -0
  20. package/dist/admin/src/pages/HomePage/components/AdditionalFieldInput/index.d.ts +12 -0
  21. package/dist/admin/src/pages/HomePage/components/CollapseButton/index.d.ts +8 -0
  22. package/dist/admin/src/pages/HomePage/components/DragButton/index.d.ts +5 -0
  23. package/dist/admin/src/pages/HomePage/components/I18nCopyNavigationItems/index.d.ts +13 -0
  24. package/dist/admin/src/pages/HomePage/components/NavigationContentHeader/index.d.ts +7 -0
  25. package/dist/admin/src/pages/HomePage/components/NavigationHeader/hooks.d.ts +5 -0
  26. package/dist/admin/src/pages/HomePage/components/NavigationHeader/index.d.ts +23 -0
  27. package/dist/admin/src/pages/HomePage/components/NavigationHeader/styles.d.ts +2 -0
  28. package/dist/admin/src/pages/HomePage/components/NavigationItemForm/index.d.ts +22 -0
  29. package/dist/admin/src/pages/HomePage/components/NavigationItemForm/types.d.ts +45 -0
  30. package/dist/admin/src/pages/HomePage/components/NavigationItemForm/utils/form.d.ts +184 -0
  31. package/dist/admin/src/pages/HomePage/components/NavigationItemForm/utils/hooks.d.ts +1 -0
  32. package/dist/admin/src/pages/HomePage/components/NavigationItemForm/utils/properties.d.ts +33 -0
  33. package/dist/admin/src/pages/HomePage/components/NavigationItemList/Wrapper.d.ts +5 -0
  34. package/dist/admin/src/pages/HomePage/components/NavigationItemList/index.d.ts +25 -0
  35. package/dist/admin/src/pages/HomePage/components/NavigationItemListItem/ItemCardBadge/index.d.ts +2 -0
  36. package/dist/admin/src/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/Wrapper.d.ts +2 -0
  37. package/dist/admin/src/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/icons.d.ts +5 -0
  38. package/dist/admin/src/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/index.d.ts +16 -0
  39. package/dist/admin/src/pages/HomePage/components/NavigationItemListItem/ItemCardRemovedOverlay/index.d.ts +2 -0
  40. package/dist/admin/src/pages/HomePage/components/NavigationItemListItem/Wrapper.d.ts +6 -0
  41. package/dist/admin/src/pages/HomePage/components/NavigationItemListItem/index.d.ts +44 -0
  42. package/dist/admin/src/pages/HomePage/components/NavigationItemPopup/NavigationItemPopupFooter.d.ts +10 -0
  43. package/dist/admin/src/pages/HomePage/components/NavigationItemPopup/NavigationItemPopupHeader.d.ts +4 -0
  44. package/dist/admin/src/pages/HomePage/components/NavigationItemPopup/index.d.ts +19 -0
  45. package/dist/admin/src/pages/HomePage/components/NavigationManager/AllNavigations/icons.d.ts +3 -0
  46. package/dist/admin/src/pages/HomePage/components/NavigationManager/AllNavigations/index.d.ts +7 -0
  47. package/dist/admin/src/pages/HomePage/components/NavigationManager/DeletionConfirm/index.d.ts +7 -0
  48. package/dist/admin/src/pages/HomePage/components/NavigationManager/ErrorDetails/index.d.ts +7 -0
  49. package/dist/admin/src/pages/HomePage/components/NavigationManager/Footer/index.d.ts +26 -0
  50. package/dist/admin/src/pages/HomePage/components/NavigationManager/Form/hooks.d.ts +13 -0
  51. package/dist/admin/src/pages/HomePage/components/NavigationManager/Form/index.d.ts +10 -0
  52. package/dist/admin/src/pages/HomePage/components/NavigationManager/NavigationUpdate/index.d.ts +7 -0
  53. package/dist/admin/src/pages/HomePage/components/NavigationManager/NewNavigation/index.d.ts +8 -0
  54. package/dist/admin/src/pages/HomePage/components/NavigationManager/PurgeCacheConfirm/index.d.ts +7 -0
  55. package/dist/admin/src/pages/HomePage/components/NavigationManager/index.d.ts +9 -0
  56. package/dist/admin/src/pages/HomePage/components/NavigationManager/types.d.ts +46 -0
  57. package/dist/admin/src/pages/HomePage/components/Search/index.d.ts +11 -0
  58. package/dist/admin/src/pages/HomePage/hooks/index.d.ts +144 -0
  59. package/dist/admin/src/pages/HomePage/index.d.ts +2 -0
  60. package/dist/admin/src/pages/HomePage/utils/index.d.ts +5 -0
  61. package/dist/admin/src/pages/HomePage/utils/parsers.d.ts +46 -0
  62. package/dist/admin/src/pages/SettingsPage/common/const.d.ts +1 -0
  63. package/dist/admin/src/pages/SettingsPage/components/CustomFieldForm/index.d.ts +11 -0
  64. package/dist/admin/src/pages/SettingsPage/components/CustomFieldModal/index.d.ts +11 -0
  65. package/dist/admin/src/pages/SettingsPage/components/CustomFieldTable/index.d.ts +11 -0
  66. package/dist/admin/src/pages/SettingsPage/hooks/index.d.ts +369 -0
  67. package/dist/admin/src/pages/SettingsPage/index.d.ts +1 -0
  68. package/dist/admin/src/pages/SettingsPage/types.d.ts +7 -0
  69. package/dist/admin/src/pages/SettingsPage/utils/index.d.ts +9 -0
  70. package/dist/admin/src/pluginId.d.ts +1 -0
  71. package/dist/admin/src/schemas/config.d.ts +453 -0
  72. package/dist/admin/src/schemas/content-type.d.ts +49 -0
  73. package/dist/admin/src/translations/ca.d.ts +478 -0
  74. package/dist/admin/src/translations/en.d.ts +489 -0
  75. package/dist/admin/src/translations/fr.d.ts +488 -0
  76. package/dist/admin/src/translations/index.d.ts +14 -0
  77. package/dist/admin/src/types.d.ts +6 -0
  78. package/dist/admin/src/utils/constants.d.ts +1 -0
  79. package/dist/admin/src/utils/getTranslation.d.ts +3 -0
  80. package/dist/admin/src/utils/permissions.d.ts +15 -0
  81. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  82. package/dist/assets/configuration.png +0 -0
  83. package/dist/assets/logo.png +0 -0
  84. package/dist/assets/manager-view.png +0 -0
  85. package/dist/assets/marketplace.png +0 -0
  86. package/dist/assets/preview.png +0 -0
  87. package/dist/server/index.js +16171 -0
  88. package/dist/server/index.mjs +16135 -0
  89. package/dist/server/src/app-errors.d.ts +11 -0
  90. package/dist/server/src/bootstrap.d.ts +5 -0
  91. package/dist/server/src/cache/index.d.ts +4 -0
  92. package/dist/server/src/config/index.d.ts +20 -0
  93. package/dist/server/src/config/setup.d.ts +41 -0
  94. package/dist/server/src/content-types/audience/index.d.ts +26 -0
  95. package/dist/server/src/content-types/audience/schema.d.ts +24 -0
  96. package/dist/server/src/content-types/index.d.ts +190 -0
  97. package/dist/server/src/content-types/navigation/index.d.ts +56 -0
  98. package/dist/server/src/content-types/navigation/lifecycles.d.ts +2 -0
  99. package/dist/server/src/content-types/navigation/schema.d.ts +53 -0
  100. package/dist/server/src/content-types/navigation-item/index.d.ts +108 -0
  101. package/dist/server/src/content-types/navigation-item/lifecycles.d.ts +2 -0
  102. package/dist/server/src/content-types/navigation-item/schema.d.ts +105 -0
  103. package/dist/server/src/controllers/admin.d.ts +241 -0
  104. package/dist/server/src/controllers/client.d.ts +192 -0
  105. package/dist/server/src/controllers/index.d.ts +7 -0
  106. package/dist/server/src/controllers/utils.d.ts +4 -0
  107. package/dist/server/src/controllers/validators.d.ts +62 -0
  108. package/dist/server/src/destroy.d.ts +5 -0
  109. package/dist/server/src/dtos/config.d.ts +28 -0
  110. package/dist/server/src/dtos/index.d.ts +3 -0
  111. package/dist/server/src/dtos/navigation-item.d.ts +52 -0
  112. package/dist/server/src/dtos/navigation.d.ts +5 -0
  113. package/dist/server/src/graphql/config.d.ts +5 -0
  114. package/dist/server/src/graphql/index.d.ts +1 -0
  115. package/dist/server/src/graphql/queries/index.d.ts +1 -0
  116. package/dist/server/src/graphql/queries/render-navigation-child.d.ts +31 -0
  117. package/dist/server/src/graphql/queries/render-navigation.d.ts +32 -0
  118. package/dist/server/src/graphql/resolvers-config.d.ts +8 -0
  119. package/dist/server/src/graphql/setup.d.ts +4 -0
  120. package/dist/server/src/graphql/types/content-types-name-fields.d.ts +2 -0
  121. package/dist/server/src/graphql/types/content-types.d.ts +2 -0
  122. package/dist/server/src/graphql/types/create-navigation-item.d.ts +2 -0
  123. package/dist/server/src/graphql/types/create-navigation-related.d.ts +2 -0
  124. package/dist/server/src/graphql/types/create-navigation.d.ts +2 -0
  125. package/dist/server/src/graphql/types/index.d.ts +1 -0
  126. package/dist/server/src/graphql/types/navigation-config.d.ts +2 -0
  127. package/dist/server/src/graphql/types/navigation-details.d.ts +2 -0
  128. package/dist/server/src/graphql/types/navigation-item-additional-field-media.d.ts +2 -0
  129. package/dist/server/src/graphql/types/navigation-item-additional-fields.d.ts +2 -0
  130. package/dist/server/src/graphql/types/navigation-item-related-data.d.ts +2 -0
  131. package/dist/server/src/graphql/types/navigation-item-related.d.ts +2 -0
  132. package/dist/server/src/graphql/types/navigation-item.d.ts +2 -0
  133. package/dist/server/src/graphql/types/navigation-render-type.d.ts +2 -0
  134. package/dist/server/src/graphql/types/navigation.d.ts +2 -0
  135. package/dist/server/src/i18n/index.d.ts +4 -0
  136. package/dist/server/src/index.d.ts +582 -0
  137. package/dist/server/src/middlewares/index.d.ts +2 -0
  138. package/dist/server/src/permissions/index.d.ts +3 -0
  139. package/dist/server/src/permissions/permissions.d.ts +9 -0
  140. package/dist/server/src/permissions/setup.d.ts +4 -0
  141. package/dist/server/src/permissions.d.ts +13 -0
  142. package/dist/server/src/policies/index.d.ts +2 -0
  143. package/dist/server/src/register.d.ts +5 -0
  144. package/dist/server/src/repositories/audience.d.ts +11 -0
  145. package/dist/server/src/repositories/generic.d.ts +23 -0
  146. package/dist/server/src/repositories/index.d.ts +4 -0
  147. package/dist/server/src/repositories/navigation-item.d.ts +24 -0
  148. package/dist/server/src/repositories/navigation.d.ts +47 -0
  149. package/dist/server/src/routes/admin.d.ts +24 -0
  150. package/dist/server/src/routes/client.d.ts +17 -0
  151. package/dist/server/src/routes/index.d.ts +37 -0
  152. package/dist/server/src/schemas/config.d.ts +424 -0
  153. package/dist/server/src/schemas/content-type.d.ts +918 -0
  154. package/dist/server/src/schemas/index.d.ts +3 -0
  155. package/dist/server/src/schemas/navigation.d.ts +237 -0
  156. package/dist/server/src/services/admin/admin.d.ts +32 -0
  157. package/dist/server/src/services/admin/index.d.ts +3 -0
  158. package/dist/server/src/services/admin/types.d.ts +47 -0
  159. package/dist/server/src/services/admin/utils.d.ts +32 -0
  160. package/dist/server/src/services/client/client.d.ts +93 -0
  161. package/dist/server/src/services/client/index.d.ts +3 -0
  162. package/dist/server/src/services/client/types.d.ts +66 -0
  163. package/dist/server/src/services/client/utils.d.ts +12 -0
  164. package/dist/server/src/services/common/common.d.ts +31 -0
  165. package/dist/server/src/services/common/index.d.ts +3 -0
  166. package/dist/server/src/services/common/types.d.ts +68 -0
  167. package/dist/server/src/services/common/utils.d.ts +12 -0
  168. package/dist/server/src/services/index.d.ts +320 -0
  169. package/dist/server/src/services/migration/index.d.ts +3 -0
  170. package/dist/server/src/services/migration/migration.d.ts +8 -0
  171. package/dist/server/src/types.d.ts +40 -0
  172. package/dist/server/src/utils/constants.d.ts +13 -0
  173. package/dist/server/src/utils/functions.d.ts +30 -0
  174. package/dist/server/src/utils/index.d.ts +2 -0
  175. package/package.json +116 -35
  176. package/admin/api/client.js +0 -107
  177. package/admin/api/validators.js +0 -248
  178. package/admin/components/ConfirmationDialog/index.js +0 -21
  179. package/admin/components/Initializer.js +0 -10
  180. package/admin/components/RestartAlert/index.js +0 -7
  181. package/admin/components/TextArrayInput/index.js +0 -18
  182. package/admin/components/icons/navigation.js +0 -9
  183. package/admin/components/icons/pluginIcon.js +0 -9
  184. package/admin/index.js +0 -48
  185. package/admin/pages/App.js +0 -10
  186. package/admin/pages/HomePage/components/AdditionalFieldInput/index.js +0 -58
  187. package/admin/pages/HomePage/components/CollapseButton/index.js +0 -15
  188. package/admin/pages/HomePage/components/DragButton/index.js +0 -55
  189. package/admin/pages/HomePage/components/I18nCopyNavigationItems/index.js +0 -9
  190. package/admin/pages/HomePage/components/NavigationContentHeader/index.js +0 -5
  191. package/admin/pages/HomePage/components/NavigationHeader/hooks.js +0 -14
  192. package/admin/pages/HomePage/components/NavigationHeader/index.js +0 -29
  193. package/admin/pages/HomePage/components/NavigationHeader/styles.js +0 -11
  194. package/admin/pages/HomePage/components/NavigationItemForm/index.js +0 -277
  195. package/admin/pages/HomePage/components/NavigationItemForm/types.js +0 -1
  196. package/admin/pages/HomePage/components/NavigationItemForm/utils/form.js +0 -105
  197. package/admin/pages/HomePage/components/NavigationItemForm/utils/hooks.js +0 -12
  198. package/admin/pages/HomePage/components/NavigationItemForm/utils/properties.js +0 -51
  199. package/admin/pages/HomePage/components/NavigationItemList/Wrapper.js +0 -21
  200. package/admin/pages/HomePage/components/NavigationItemList/index.js +0 -6
  201. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardBadge/index.js +0 -20
  202. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/Wrapper.js +0 -14
  203. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/icons.js +0 -6
  204. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/index.js +0 -19
  205. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardRemovedOverlay/index.js +0 -11
  206. package/admin/pages/HomePage/components/NavigationItemListItem/Wrapper.js +0 -38
  207. package/admin/pages/HomePage/components/NavigationItemListItem/index.js +0 -165
  208. package/admin/pages/HomePage/components/NavigationItemPopup/NavigationItemPopupFooter.js +0 -11
  209. package/admin/pages/HomePage/components/NavigationItemPopup/NavigationItemPopupHeader.js +0 -12
  210. package/admin/pages/HomePage/components/NavigationItemPopup/index.js +0 -34
  211. package/admin/pages/HomePage/components/NavigationManager/AllNavigations/icons.js +0 -5
  212. package/admin/pages/HomePage/components/NavigationManager/AllNavigations/index.js +0 -79
  213. package/admin/pages/HomePage/components/NavigationManager/DeletionConfirm/index.js +0 -25
  214. package/admin/pages/HomePage/components/NavigationManager/ErrorDetails/index.js +0 -29
  215. package/admin/pages/HomePage/components/NavigationManager/Footer/index.js +0 -6
  216. package/admin/pages/HomePage/components/NavigationManager/Form/hooks.js +0 -19
  217. package/admin/pages/HomePage/components/NavigationManager/Form/index.js +0 -26
  218. package/admin/pages/HomePage/components/NavigationManager/NavigationUpdate/index.js +0 -32
  219. package/admin/pages/HomePage/components/NavigationManager/NewNavigation/index.js +0 -35
  220. package/admin/pages/HomePage/components/NavigationManager/PurgeCacheConfirm/index.js +0 -25
  221. package/admin/pages/HomePage/components/NavigationManager/index.js +0 -236
  222. package/admin/pages/HomePage/components/NavigationManager/types.js +0 -1
  223. package/admin/pages/HomePage/components/Search/index.js +0 -58
  224. package/admin/pages/HomePage/hooks/index.js +0 -165
  225. package/admin/pages/HomePage/index.js +0 -231
  226. package/admin/pages/HomePage/utils/index.js +0 -16
  227. package/admin/pages/HomePage/utils/parsers.js +0 -187
  228. package/admin/pages/SettingsPage/common/const.js +0 -1
  229. package/admin/pages/SettingsPage/components/CustomFieldForm/hooks/index.js +0 -10
  230. package/admin/pages/SettingsPage/components/CustomFieldForm/index.js +0 -36
  231. package/admin/pages/SettingsPage/components/CustomFieldModal/index.js +0 -16
  232. package/admin/pages/SettingsPage/components/CustomFieldTable/index.js +0 -45
  233. package/admin/pages/SettingsPage/hooks/index.js +0 -111
  234. package/admin/pages/SettingsPage/index.js +0 -189
  235. package/admin/pages/SettingsPage/types.js +0 -1
  236. package/admin/pages/SettingsPage/utils/index.js +0 -25
  237. package/admin/pluginId.js +0 -1
  238. package/admin/schemas/config.js +0 -53
  239. package/admin/schemas/content-type.js +0 -14
  240. package/admin/translations/ca.json +0 -199
  241. package/admin/translations/en.json +0 -218
  242. package/admin/translations/fr.json +0 -48
  243. package/admin/translations/index.js +0 -15
  244. package/admin/types.js +0 -1
  245. package/admin/utils/constants.js +0 -1
  246. package/admin/utils/getTranslation.js +0 -4
  247. package/admin/utils/permissions.js +0 -16
  248. package/admin/utils/prefixPluginTranslations.js +0 -3
  249. package/server/app-errors.js +0 -20
  250. package/server/bootstrap.js +0 -13
  251. package/server/cache/index.js +0 -37
  252. package/server/config/index.js +0 -39
  253. package/server/config/setup.js +0 -59
  254. package/server/content-types/audience/index.js +0 -9
  255. package/server/content-types/audience/schema.js +0 -25
  256. package/server/content-types/index.js +0 -13
  257. package/server/content-types/navigation/index.js +0 -11
  258. package/server/content-types/navigation/lifecycles.js +0 -6
  259. package/server/content-types/navigation/schema.js +0 -54
  260. package/server/content-types/navigation-item/index.js +0 -11
  261. package/server/content-types/navigation-item/lifecycles.js +0 -6
  262. package/server/content-types/navigation-item/schema.js +0 -106
  263. package/server/controllers/admin.js +0 -125
  264. package/server/controllers/client.js +0 -86
  265. package/server/controllers/index.js +0 -11
  266. package/server/controllers/utils.js +0 -22
  267. package/server/controllers/validators.js +0 -48
  268. package/server/destroy.js +0 -6
  269. package/server/dtos/config.js +0 -2
  270. package/server/dtos/index.js +0 -19
  271. package/server/dtos/navigation-item.js +0 -2
  272. package/server/dtos/navigation.js +0 -2
  273. package/server/graphql/config.js +0 -26
  274. package/server/graphql/index.js +0 -17
  275. package/server/graphql/queries/index.js +0 -21
  276. package/server/graphql/queries/render-navigation-child.js +0 -36
  277. package/server/graphql/queries/render-navigation.js +0 -48
  278. package/server/graphql/resolvers-config.js +0 -8
  279. package/server/graphql/setup.js +0 -14
  280. package/server/graphql/types/content-types-name-fields.js +0 -15
  281. package/server/graphql/types/content-types.js +0 -18
  282. package/server/graphql/types/create-navigation-item.js +0 -19
  283. package/server/graphql/types/create-navigation-related.js +0 -10
  284. package/server/graphql/types/create-navigation.js +0 -9
  285. package/server/graphql/types/index.js +0 -38
  286. package/server/graphql/types/navigation-config.js +0 -11
  287. package/server/graphql/types/navigation-details.js +0 -12
  288. package/server/graphql/types/navigation-item-additional-field-media.js +0 -13
  289. package/server/graphql/types/navigation-item-related-data.js +0 -9
  290. package/server/graphql/types/navigation-item-related.js +0 -25
  291. package/server/graphql/types/navigation-item.js +0 -58
  292. package/server/graphql/types/navigation-render-type.js +0 -6
  293. package/server/graphql/types/navigation.js +0 -11
  294. package/server/i18n/index.js +0 -32
  295. package/server/index.js +0 -33
  296. package/server/middlewares/index.js +0 -3
  297. package/server/permissions/index.js +0 -10
  298. package/server/permissions/permissions.js +0 -12
  299. package/server/permissions/setup.js +0 -32
  300. package/server/permissions.js +0 -39
  301. package/server/policies/index.js +0 -3
  302. package/server/register.js +0 -6
  303. package/server/repositories/audience.js +0 -12
  304. package/server/repositories/generic.js +0 -20
  305. package/server/repositories/index.js +0 -11
  306. package/server/repositories/navigation-item.js +0 -51
  307. package/server/repositories/navigation.js +0 -65
  308. package/server/routes/admin.js +0 -216
  309. package/server/routes/client.js +0 -32
  310. package/server/routes/index.js +0 -12
  311. package/server/schemas/config.js +0 -68
  312. package/server/schemas/content-type.js +0 -140
  313. package/server/schemas/index.js +0 -19
  314. package/server/schemas/navigation.js +0 -107
  315. package/server/services/admin/admin.js +0 -483
  316. package/server/services/admin/index.js +0 -7
  317. package/server/services/admin/types.js +0 -2
  318. package/server/services/admin/utils.js +0 -84
  319. package/server/services/client/client.js +0 -397
  320. package/server/services/client/index.js +0 -7
  321. package/server/services/client/types.js +0 -2
  322. package/server/services/client/utils.js +0 -88
  323. package/server/services/common/common.js +0 -307
  324. package/server/services/common/index.js +0 -7
  325. package/server/services/common/types.js +0 -2
  326. package/server/services/common/utils.js +0 -24
  327. package/server/services/index.js +0 -13
  328. package/server/types.js +0 -2
  329. package/server/utils/constants.js +0 -35
  330. package/server/utils/functions.js +0 -111
  331. package/server/utils/index.js +0 -18
  332. package/strapi-admin.js +0 -5
  333. package/strapi-server.js +0 -3
  334. package/tsconfig.tsbuildinfo +0 -1
  335. /package/{admin/api/index.js → dist/admin/src/api/index.d.ts} +0 -0
  336. /package/{admin/components/icons/index.js → dist/admin/src/components/icons/index.d.ts} +0 -0
  337. /package/{admin/pages/HomePage/components/index.js → dist/admin/src/pages/HomePage/components/index.d.ts} +0 -0
  338. /package/{admin/pages/SettingsPage/common/index.js → dist/admin/src/pages/SettingsPage/common/index.d.ts} +0 -0
  339. /package/{admin/schemas/index.js → dist/admin/src/schemas/index.d.ts} +0 -0
@@ -1,231 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Button, DesignSystemProvider, Flex, SingleSelect, SingleSelectOption, Typography, lightTheme, } from '@strapi/design-system';
3
- import { Layouts, Page, useRBAC } from '@strapi/strapi/admin';
4
- import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
5
- import { isEmpty } from 'lodash';
6
- import { useCallback, useEffect, useMemo, useState } from 'react';
7
- import { useIntl } from 'react-intl';
8
- import { getTrad } from '../../translations';
9
- import pluginPermissions from '../../utils/permissions';
10
- import { NavigationHeader } from './components';
11
- import { NavigationContentHeader } from './components/NavigationContentHeader';
12
- import { List } from './components/NavigationItemList';
13
- import NavigationItemPopUp from './components/NavigationItemPopup';
14
- import { Search } from './components/Search';
15
- import { useConfig, useCopyNavigationI18n, useI18nCopyNavigationItemsModal, useLocale, useNavigations, usePurgeNavigation, useUpdateNavigation, } from './hooks';
16
- import { changeCollapseItemDeep, getPendingAction, mapServerNavigationItem, transformItemToViewPayload, } from './utils';
17
- import { ListPlus } from '@strapi/icons';
18
- const queryClient = new QueryClient();
19
- const Inner = () => {
20
- const { formatMessage } = useIntl();
21
- const localeQuery = useLocale();
22
- const [currentNavigation, setCurrentNavigation] = useState();
23
- const [activeNavigationItem, setActiveNavigationItemState] = useState();
24
- const [isItemPopupVisible, setIsItemPopupVisible] = useState(false);
25
- const [structureChanged, setStructureChanged] = useState(false);
26
- const [currentLocale, setCurrentLocale] = useState();
27
- const viewPermissions = useMemo(() => ({
28
- access: pluginPermissions.access || pluginPermissions.update,
29
- update: pluginPermissions.update,
30
- }), []);
31
- const { isLoading: isLoadingForPermissions, allowedActions: { canUpdate, canAccess }, } = useRBAC(viewPermissions);
32
- const navigationsQuery = useNavigations();
33
- const configQuery = useConfig();
34
- const purgeMutation = usePurgeNavigation();
35
- const pending = getPendingAction([navigationsQuery, { isPending: isLoadingForPermissions }]);
36
- const copyNavigationI18nMutation = useCopyNavigationI18n();
37
- const [{ value: searchValue, index: searchIndex }, setSearchValue] = useState({
38
- value: '',
39
- index: 0,
40
- });
41
- const isSearchEmpty = isEmpty(searchValue);
42
- const normalisedSearchValue = (searchValue || '').toLowerCase();
43
- const filteredListFactory = (items, doUse, activeIndex) => {
44
- const filteredItems = items.reduce((acc, item) => {
45
- const subItems = !!item.items?.length ? filteredListFactory(item.items ?? [], doUse) : [];
46
- if (doUse(item)) {
47
- return [item, ...subItems, ...acc];
48
- }
49
- else {
50
- return [...subItems, ...acc];
51
- }
52
- }, []);
53
- if (activeIndex !== undefined) {
54
- const index = activeIndex % filteredItems.length;
55
- return filteredItems.map((item, currentIndex) => {
56
- return index === currentIndex ? { ...item, isSearchActive: true } : item;
57
- });
58
- }
59
- return filteredItems;
60
- };
61
- const filteredList = !isSearchEmpty
62
- ? filteredListFactory(currentNavigation?.items.map((_) => ({ ..._ })) ?? [], (item) => (item?.title || '').toLowerCase().includes(normalisedSearchValue), normalisedSearchValue ? searchIndex : undefined)
63
- : [];
64
- const changeNavigationItemPopupState = useCallback((visible, editedItem = {}) => {
65
- setActiveNavigationItemState(editedItem);
66
- setIsItemPopupVisible(visible);
67
- }, [setIsItemPopupVisible]);
68
- const addNewNavigationItem = useCallback((event, viewParentId, isMenuAllowedLevel = true, levelPath = '', parentAttachedToMenu = true, structureId = '0', maxOrder = 0) => {
69
- if (canUpdate) {
70
- event.preventDefault();
71
- event.stopPropagation();
72
- changeNavigationItemPopupState(true, {
73
- viewParentId,
74
- isMenuAllowedLevel,
75
- levelPath,
76
- parentAttachedToMenu,
77
- structureId,
78
- viewId: undefined,
79
- order: maxOrder + 1,
80
- });
81
- }
82
- }, [changeNavigationItemPopupState, canUpdate]);
83
- const availableLocale = useMemo(() => (localeQuery.data
84
- ? [localeQuery.data.defaultLocale, ...localeQuery.data.restLocale]
85
- : []).filter((locale) => locale !== currentLocale), [localeQuery.data, currentLocale]);
86
- const { i18nCopyItemsModal, i18nCopySourceLocale, setI18nCopyModalOpened, setI18nCopySourceLocale, } = useI18nCopyNavigationItemsModal(useCallback((sourceLocale) => {
87
- const source = navigationsQuery.data?.find(({ localeCode, documentId }) => localeCode === sourceLocale && documentId === currentNavigation?.documentId);
88
- if (source) {
89
- if (source.id && currentNavigation?.id) {
90
- copyNavigationI18nMutation.mutate({ source: source.id, target: currentNavigation.id }, {
91
- onSuccess(res) {
92
- copyNavigationI18nMutation.reset();
93
- setCurrentNavigation(res.data);
94
- },
95
- });
96
- }
97
- }
98
- }, [currentNavigation]));
99
- const openI18nCopyModalOpened = useCallback(() => {
100
- i18nCopySourceLocale && setI18nCopyModalOpened(true);
101
- }, [setI18nCopyModalOpened, i18nCopySourceLocale]);
102
- const updateNavigationMutation = useUpdateNavigation(() => {
103
- setCurrentNavigation(undefined);
104
- });
105
- const submit = () => {
106
- if (currentNavigation) {
107
- updateNavigationMutation.mutate(currentNavigation);
108
- }
109
- };
110
- const onPopUpClose = (e) => {
111
- e.preventDefault();
112
- e.stopPropagation();
113
- // Using Strapi design system select components inside a modal causes
114
- // extraneous close events to be fired. It is most likely related to how
115
- // the select component handles onOutsideClick events. In those situations
116
- // the event target element is the root HTML element.
117
- // This is a workaround to prevent the modal from closing in those cases.
118
- if (e.target.tagName !== 'HTML') {
119
- changeNavigationItemPopupState(false);
120
- }
121
- };
122
- const handleItemReOrder = ({ item, newOrder, }) => {
123
- handleSubmitNavigationItem({
124
- ...item,
125
- order: newOrder,
126
- });
127
- };
128
- const handleItemRemove = (item) => {
129
- handleSubmitNavigationItem(mapServerNavigationItem({
130
- ...item,
131
- removed: true,
132
- }, true));
133
- };
134
- const handleItemRestore = (item) => {
135
- handleSubmitNavigationItem(mapServerNavigationItem({
136
- ...item,
137
- removed: false,
138
- }, true));
139
- };
140
- const handleItemToggleCollapse = (item) => {
141
- handleSubmitNavigationItem(mapServerNavigationItem({
142
- ...item,
143
- collapsed: !item.collapsed,
144
- updated: true,
145
- isSearchActive: false,
146
- }, true));
147
- };
148
- const handleItemEdit = ({ item, levelPath = '', parentAttachedToMenu = true, }) => {
149
- changeNavigationItemPopupState(true, {
150
- ...item,
151
- levelPath,
152
- parentAttachedToMenu,
153
- });
154
- };
155
- const handleSubmitNavigationItem = (payload) => {
156
- if (currentNavigation && configQuery.data) {
157
- const items = transformItemToViewPayload(payload, currentNavigation?.items ?? [], configQuery.data);
158
- setCurrentNavigation({
159
- ...currentNavigation,
160
- items,
161
- });
162
- setStructureChanged(true);
163
- setIsItemPopupVisible(false);
164
- }
165
- };
166
- const listItems = isSearchEmpty ? currentNavigation?.items ?? [] : filteredList;
167
- const handleExpandAll = useCallback(() => {
168
- if (currentNavigation) {
169
- setCurrentNavigation({
170
- ...currentNavigation,
171
- items: currentNavigation.items.map((item) => changeCollapseItemDeep(item, false)),
172
- });
173
- }
174
- }, [setCurrentNavigation, currentNavigation, changeCollapseItemDeep]);
175
- const handleCollapseAll = useCallback(() => {
176
- if (currentNavigation) {
177
- setCurrentNavigation({
178
- ...currentNavigation,
179
- items: currentNavigation.items.map((item) => changeCollapseItemDeep(item, true)),
180
- });
181
- }
182
- }, [setCurrentNavigation, currentNavigation, changeCollapseItemDeep]);
183
- const endActions = [
184
- {
185
- onClick: handleExpandAll,
186
- type: 'submit',
187
- variant: 'tertiary',
188
- tradId: 'header.action.expandAll',
189
- margin: '8px',
190
- },
191
- {
192
- onClick: handleCollapseAll,
193
- type: 'submit',
194
- variant: 'tertiary',
195
- tradId: 'header.action.collapseAll',
196
- margin: '8px',
197
- },
198
- ];
199
- useEffect(() => {
200
- if (!currentNavigation && navigationsQuery.data?.[0]) {
201
- setCurrentNavigation(navigationsQuery.data[0]);
202
- }
203
- }, [navigationsQuery.data]);
204
- useEffect(() => {
205
- if (!currentLocale && localeQuery.data?.defaultLocale) {
206
- setCurrentLocale(localeQuery.data?.defaultLocale);
207
- }
208
- }, [navigationsQuery.data]);
209
- useEffect(() => {
210
- if (currentNavigation && currentLocale !== currentNavigation.localeCode) {
211
- const nextNavigation = navigationsQuery.data?.find((navigation) => navigation.documentId === currentNavigation.documentId &&
212
- navigation.localeCode === currentLocale);
213
- if (nextNavigation && nextNavigation.id !== currentNavigation.id) {
214
- setCurrentNavigation(nextNavigation);
215
- }
216
- }
217
- }, [currentNavigation, currentLocale, navigationsQuery.data]);
218
- useEffect(() => {
219
- if (!currentLocale && localeQuery.data?.defaultLocale) {
220
- setCurrentLocale(localeQuery.data.defaultLocale);
221
- }
222
- }, [navigationsQuery.data]);
223
- if (!navigationsQuery.data || !localeQuery.data || !!pending) {
224
- return _jsx(Page.Loading, {});
225
- }
226
- return (_jsxs(Layouts.Root, { children: [_jsx(Page.Main, { children: _jsx(NavigationHeader, { availableNavigations: navigationsQuery.data, activeNavigation: currentNavigation, handleCachePurge: () => purgeMutation.mutate(undefined), handleChangeSelection: setCurrentNavigation, handleLocalizationSelection: setCurrentLocale, handleSave: submit, locale: localeQuery.data, structureHasChanged: structureChanged, permissions: { canUpdate }, currentLocale: currentLocale }) }), _jsxs(Layouts.Content, { children: [_jsx(NavigationContentHeader, { startActions: _jsx(Search, { value: searchValue, setValue: setSearchValue }), endActions: endActions.map(({ tradId, margin, ...item }, i) => (_jsx(Box, { marginLeft: margin, children: _jsxs(Button, { ...item, children: [" ", formatMessage(getTrad(tradId)), " "] }) }, i))) }), !currentNavigation?.items.length ? (_jsxs(Flex, { direction: "column", minHeight: "400px", justifyContent: "center", children: [_jsx(Box, { padding: 4, children: _jsx(Typography, { variant: "beta", textColor: "neutral600", children: formatMessage(getTrad('empty')) }) }), canUpdate && (_jsx(Button, { variant: "secondary", startIcon: _jsx(ListPlus, {}), label: formatMessage(getTrad('empty.cta')), onClick: addNewNavigationItem, children: formatMessage(getTrad('empty.cta')) })), canUpdate && availableLocale.length ? (_jsxs(Flex, { direction: "column", justifyContent: "center", children: [_jsx(Box, { paddingTop: 3, paddingBottom: 3, children: _jsx(Typography, { variant: "beta", textColor: "neutral600", children: formatMessage(getTrad('view.i18n.fill.cta')) }) }), _jsxs(Flex, { direction: "row", justifyContent: "center", alignItems: "center", children: [_jsx(Box, { paddingLeft: 1, paddingRight: 1, children: _jsx(SingleSelect, { onChange: setI18nCopySourceLocale, value: i18nCopySourceLocale, size: "S", children: availableLocale.map((locale) => (_jsx(SingleSelectOption, { value: locale, children: formatMessage(getTrad('view.i18n.fill.option'), { locale }) }, locale))) }) }), _jsx(Box, { paddingLeft: 1, paddingRight: 1, children: _jsx(Button, { variant: "tertiary", onClick: openI18nCopyModalOpened, disabled: !i18nCopySourceLocale, size: "S", children: formatMessage(getTrad('view.i18n.fill.cta.button')) }) })] })] })) : null] })) : (_jsx(List, { items: listItems, onItemLevelAdd: addNewNavigationItem, onItemRemove: handleItemRemove, onItemEdit: handleItemEdit, onItemRestore: handleItemRestore, onItemReOrder: handleItemReOrder, onItemToggleCollapse: handleItemToggleCollapse, displayFlat: !isSearchEmpty, isParentAttachedToMenu: true, permissions: { canUpdate, canAccess }, structurePrefix: "" })), isItemPopupVisible && currentLocale && currentNavigation && (_jsx(NavigationItemPopUp, { availableLocale: availableLocale, currentItem: activeNavigationItem, onSubmit: handleSubmitNavigationItem, onClose: onPopUpClose, locale: currentLocale, permissions: { canUpdate }, isOpen: isItemPopupVisible, isLoading: isLoadingForPermissions, currentNavigation: currentNavigation })), canUpdate && i18nCopyItemsModal] })] }));
227
- };
228
- export default function HomePage() {
229
- return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(DesignSystemProvider, { locale: "en-GB", theme: lightTheme, children: _jsx(Inner, {}) }) }));
230
- }
231
- export { HomePage };
@@ -1,16 +0,0 @@
1
- export * from './parsers';
2
- export const getPendingAction = (actions) => actions.find(({ isPending }) => isPending);
3
- export const changeCollapseItemDeep = (item, isCollapsed) => {
4
- if (item.collapsed !== isCollapsed) {
5
- return {
6
- ...item,
7
- collapsed: isCollapsed,
8
- updated: true,
9
- items: item.items?.map((el) => changeCollapseItemDeep(el, isCollapsed)),
10
- };
11
- }
12
- return {
13
- ...item,
14
- items: item.items?.map((el) => changeCollapseItemDeep(el, isCollapsed)),
15
- };
16
- };
@@ -1,187 +0,0 @@
1
- import { get, orderBy } from 'lodash';
2
- import { RELATED_ITEM_SEPARATOR } from '../../../utils/constants';
3
- const reOrderItems = (items = []) => orderBy(items, ['order'], ['asc']).map((item, n) => {
4
- const order = n + 1;
5
- return {
6
- ...item,
7
- order,
8
- updated: item.updated || order !== item.order,
9
- };
10
- });
11
- const toNavigationItem = (payload, config) => {
12
- return payload.type === 'INTERNAL'
13
- ? {
14
- type: 'INTERNAL',
15
- collapsed: !!payload.collapsed,
16
- id: payload.id,
17
- menuAttached: !!payload.menuAttached,
18
- order: payload.order ?? 0,
19
- path: payload.path,
20
- title: payload.title,
21
- uiRouterKey: payload.uiRouterKey,
22
- additionalFields: payload.additionalFields,
23
- audience: payload.audience?.map((id) => config.availableAudience.find((audience) => audience.id === id)) ?? [],
24
- autoSync: payload.autoSync,
25
- items: payload.items?.length
26
- ? transformItemToViewPayload(payload, payload.items, config)
27
- : payload.items,
28
- related: [payload.relatedType, payload.related].join(RELATED_ITEM_SEPARATOR),
29
- viewId: payload.viewId,
30
- viewParentId: payload.viewParentId,
31
- structureId: payload.structureId,
32
- removed: payload.removed,
33
- updated: payload.updated,
34
- }
35
- : {
36
- type: 'EXTERNAL',
37
- collapsed: !!payload.collapsed,
38
- id: payload.id,
39
- menuAttached: !!payload.menuAttached,
40
- order: payload.order ?? 0,
41
- title: payload.title,
42
- uiRouterKey: payload.uiRouterKey,
43
- additionalFields: payload.additionalFields,
44
- autoSync: payload.autoSync,
45
- items: payload.items?.length
46
- ? transformItemToViewPayload(payload, payload.items, config)
47
- : payload.items,
48
- path: '',
49
- viewId: payload.viewId,
50
- structureId: payload.structureId,
51
- viewParentId: payload.viewParentId,
52
- removed: payload.removed,
53
- updated: payload.updated,
54
- externalPath: payload.externalPath ?? '',
55
- audience: payload.audience?.map((id) => config.availableAudience.find((audience) => audience.id === id)) ?? [],
56
- };
57
- };
58
- export const transformItemToViewPayload = (payload, items = [], config) => {
59
- if (!payload.viewParentId) {
60
- if (payload.viewId) {
61
- const updatedRootLevel = items.map((item) => {
62
- if (item.viewId === payload.viewId) {
63
- return toNavigationItem(payload, config);
64
- }
65
- return {
66
- ...item,
67
- items: item.items?.length
68
- ? transformItemToViewPayload(payload, item.items, config)
69
- : item.items,
70
- };
71
- });
72
- return reOrderItems(updatedRootLevel);
73
- }
74
- return [
75
- ...reOrderItems([...items, toNavigationItem({ ...payload, viewId: Date.now() }, config)]),
76
- ];
77
- }
78
- const updatedLevel = items.map((item) => {
79
- const branchItems = item.items || [];
80
- if (payload.viewParentId === item.viewId) {
81
- if (!payload.viewId) {
82
- return {
83
- ...item,
84
- items: [
85
- ...reOrderItems([
86
- ...branchItems,
87
- toNavigationItem({ ...payload, viewId: Date.now() }, config),
88
- ]),
89
- ],
90
- };
91
- }
92
- const updatedBranchItems = branchItems.map((item) => {
93
- if (item.viewId === payload.viewId) {
94
- return toNavigationItem(payload, config);
95
- }
96
- return item;
97
- });
98
- return {
99
- ...item,
100
- items: reOrderItems(updatedBranchItems),
101
- };
102
- }
103
- return {
104
- ...item,
105
- items: item.items?.length
106
- ? transformItemToViewPayload(payload, item.items, config)
107
- : item.items,
108
- };
109
- });
110
- return reOrderItems(updatedLevel);
111
- };
112
- export const extractRelatedItemLabel = (item, config) => {
113
- const contentTypes = config?.contentTypes ?? [];
114
- const fields = config?.contentTypesNameFields ?? {};
115
- const defaultFields = fields.default ?? [];
116
- const { __collectionUid } = item;
117
- const contentType = contentTypes.find(({ uid }) => uid === __collectionUid);
118
- if (contentType?.isSingle) {
119
- return contentType.labelSingular;
120
- }
121
- return (get(fields, `${contentType ? contentType.uid : __collectionUid}`, defaultFields)
122
- .map((_) => item[_])
123
- .filter((_) => _)[0] || '');
124
- };
125
- export const isRelationCorrect = ({ related, type }) => {
126
- const isRelationDefined = !!related;
127
- return type !== 'INTERNAL' || (type === 'INTERNAL' && isRelationDefined);
128
- };
129
- export const isRelationPublished = ({ relatedRef, relatedType = {}, type, isCollection, }) => {
130
- if (isCollection) {
131
- return relatedType.available || relatedRef.available;
132
- }
133
- if (type === 'INTERNAL') {
134
- const isHandledByPublishFlow = relatedRef ? 'publishedAt' in relatedRef : false;
135
- if (isHandledByPublishFlow) {
136
- return get(relatedRef, 'publishedAt', true);
137
- }
138
- }
139
- return true;
140
- };
141
- export const mapServerNavigationItem = (item, stopAtFirstLevel = false) => {
142
- const [relatedType, related] = item.type === 'INTERNAL' && item.related ? item.related.split(RELATED_ITEM_SEPARATOR) : [];
143
- return item.type === 'INTERNAL'
144
- ? {
145
- type: 'INTERNAL',
146
- id: item.id,
147
- additionalFields: item.additionalFields ?? {},
148
- path: item.path ?? '',
149
- relatedType,
150
- related: parseInt(related, 10),
151
- title: item.title,
152
- uiRouterKey: item.uiRouterKey,
153
- autoSync: item.autoSync ?? undefined,
154
- collapsed: item.collapsed,
155
- externalPath: undefined,
156
- order: item.order ?? 0,
157
- menuAttached: item.menuAttached,
158
- viewId: item.viewId,
159
- viewParentId: item.viewParentId,
160
- items: stopAtFirstLevel
161
- ? item.items
162
- : item.items?.map((_) => mapServerNavigationItem(_)) ?? undefined,
163
- removed: item.removed,
164
- updated: item.updated,
165
- isSearchActive: item.isSearchActive,
166
- }
167
- : {
168
- type: 'EXTERNAL',
169
- id: item.id,
170
- additionalFields: item.additionalFields ?? {},
171
- title: item.title,
172
- uiRouterKey: item.uiRouterKey,
173
- autoSync: item.autoSync ?? undefined,
174
- collapsed: item.collapsed,
175
- externalPath: item.externalPath,
176
- order: item.order ?? 0,
177
- menuAttached: item.menuAttached,
178
- viewId: item.viewId,
179
- viewParentId: item.viewParentId,
180
- items: stopAtFirstLevel
181
- ? item.items
182
- : item.items?.map((_) => mapServerNavigationItem(_)) ?? undefined,
183
- removed: item.removed,
184
- updated: item.updated,
185
- isSearchActive: item.isSearchActive,
186
- };
187
- };
@@ -1 +0,0 @@
1
- export const customFieldsTypes = ["string", "boolean", "select", "media"];
@@ -1,10 +0,0 @@
1
- import { zodResolver } from '@hookform/resolvers/zod';
2
- import { useForm } from 'react-hook-form';
3
- import { navigationItemCustomField } from '../../../../../schemas';
4
- export const useCustomFieldForm = (customField) => {
5
- const form = useForm({
6
- resolver: zodResolver(navigationItemCustomField),
7
- values: customField,
8
- });
9
- return form;
10
- };
@@ -1,36 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Button, Field, Grid, Modal } from '@strapi/design-system';
3
- import { SingleSelect, SingleSelectOption, TextInput, Toggle } from '@strapi/design-system';
4
- import { Controller } from 'react-hook-form';
5
- import { useIntl } from 'react-intl';
6
- import TextArrayInput from '../../../../components/TextArrayInput';
7
- import { getTrad } from '../../../../translations';
8
- import { customFieldsTypes } from '../../common';
9
- import { useCustomFieldForm } from './hooks';
10
- const tradPrefix = 'pages.settings.form.customFields.popup.';
11
- const prepareSelectOptions = (options) => options.map((option, index) => ({
12
- key: `${option}-${index}`,
13
- metadatas: {
14
- intlLabel: {
15
- id: option,
16
- defaultMessage: option,
17
- },
18
- hidden: false,
19
- disabled: false,
20
- },
21
- value: option,
22
- label: option,
23
- }));
24
- const CustomFieldForm = ({ isEditForm, customField, onSubmit, onClose, }) => {
25
- const typeSelectOptions = prepareSelectOptions(customFieldsTypes);
26
- const { formatMessage } = useIntl();
27
- const { control, handleSubmit, watch } = useCustomFieldForm(customField);
28
- const [type] = watch(['type']);
29
- const submit = handleSubmit(onSubmit);
30
- return (_jsxs(_Fragment, { children: [_jsx(Modal.Body, { children: _jsxs(Grid.Root, { gap: 5, children: [_jsx(Grid.Item, { col: 12, children: _jsx(Controller, { control: control, name: "name", render: ({ field: { name, onChange, value }, fieldState }) => (_jsxs(Field.Root, { error: fieldState.error?.message, width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad(`${tradPrefix}name.label`)) }), _jsx(TextInput, { name: name, value: value, onChange: onChange, placeholder: formatMessage(getTrad(`${tradPrefix}name.placeholder`)), type: "string", disabled: isEditForm, width: "100%" }), _jsx(Field.Hint, { children: formatMessage(getTrad(`${tradPrefix}name.description`)) }), _jsx(Field.Error, {})] })) }) }, "name"), _jsx(Grid.Item, { col: 12, children: _jsx(Controller, { control: control, name: "label", render: ({ field: { name, onChange, value }, fieldState }) => (_jsxs(Field.Root, { error: fieldState.error?.message, width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad(`${tradPrefix}label.label`)) }), _jsx(TextInput, { name: name, value: value, onChange: onChange, placeholder: formatMessage(getTrad(`${tradPrefix}label.placeholder`)), type: "string", width: "100%" }), _jsx(Field.Hint, { children: formatMessage(getTrad(`${tradPrefix}label.description`)) }), _jsx(Field.Error, {})] })) }) }, "label"), _jsx(Grid.Item, { col: 12, children: _jsx(Controller, { control: control, name: "type", render: ({ field: { name, onChange, value } }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad(`${tradPrefix}type.label`)) }), _jsx(SingleSelect, { name: name, value: value, onChange: onChange, disabled: isEditForm, width: "100%", children: typeSelectOptions.map(({ key, label, value }) => (_jsx(SingleSelectOption, { value: value, children: label }, key))) }), _jsx(Field.Hint, { children: formatMessage(getTrad(`${tradPrefix}type.description`)) })] })) }) }, "type"), type === 'select' && (_jsxs(_Fragment, { children: [_jsx(Grid.Item, { col: 12, children: _jsx(Controller, { control: control, name: "multi", render: ({ field: { name, onChange, value }, fieldState }) => (_jsxs(Field.Root, { error: fieldState.error?.message, width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad(`${tradPrefix}multi.label`)) }), _jsx(Toggle, { name: name, checked: value, onChange: ({ currentTarget: { checked }, }) => {
31
- onChange(checked);
32
- }, onLabel: "true", offLabel: "false", width: "100%" }), _jsx(Field.Hint, { children: formatMessage(getTrad(`${tradPrefix}multi.description`)) }), _jsx(Field.Error, {})] })) }) }, "multi"), _jsx(Grid.Item, { col: 12, children: _jsx(Controller, { control: control, name: "options", render: ({ field: { name, onChange, value }, fieldState }) => (_jsxs(Field.Root, { error: fieldState.error?.message, width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad(`${tradPrefix}options.label`)) }), _jsx(TextArrayInput, { name: name, onChange: onChange, initialValue: value }), _jsx(Field.Hint, { children: formatMessage(getTrad(`${tradPrefix}options.description`)) }), _jsx(Field.Error, {})] })) }) }, "options")] })), _jsx(Grid.Item, { col: 12, children: _jsx(Controller, { control: control, name: "required", render: ({ field: { name, onChange, value }, fieldState }) => (_jsxs(Field.Root, { error: fieldState.error?.message, width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad(`${tradPrefix}required.label`)) }), _jsx(Toggle, { name: name, placeholder: formatMessage(getTrad(`${tradPrefix}required.placeholder`)), checked: value, onChange: ({ currentTarget: { checked }, }) => {
33
- onChange(checked);
34
- }, onLabel: "true", offLabel: "false", width: "100%" }), _jsx(Field.Hint, { children: formatMessage(getTrad(`${tradPrefix}required.description`)) }), _jsx(Field.Error, {})] })) }) }, "required")] }) }), _jsxs(Modal.Footer, { children: [_jsx(Modal.Close, { children: _jsx(Button, { onClick: onClose, variant: "tertiary", children: formatMessage(getTrad('popup.item.form.button.cancel')) }) }), _jsx(Button, { onClick: submit, children: formatMessage(getTrad(`popup.item.form.button.save`)) })] })] }));
35
- };
36
- export default CustomFieldForm;
@@ -1,16 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Modal, Typography } from '@strapi/design-system';
3
- import { pick } from 'lodash';
4
- import { useIntl } from 'react-intl';
5
- import { getTrad } from '../../../../translations';
6
- import CustomFieldForm from '../CustomFieldForm';
7
- const CustomFieldModal = ({ isOpen, onClose, onSubmit, data, }) => {
8
- const isEditMode = !!data;
9
- const { formatMessage } = useIntl();
10
- return (_jsx(Modal.Root, { onOpenChange: (isOpen) => {
11
- if (!isOpen) {
12
- onClose();
13
- }
14
- }, open: isOpen, labelledBy: "custom-field-modal", children: _jsxs(Modal.Content, { children: [_jsx(Modal.Header, { children: _jsx(Typography, { variant: "omega", fontWeight: "bold", textColor: "neutral800", as: "h2", id: "asset-dialog-title", children: formatMessage(getTrad(`pages.settings.form.customFields.popup.header.${isEditMode ? 'edit' : 'new'}`)) }) }), _jsx(CustomFieldForm, { isEditForm: isEditMode, customField: pick(data, 'name', 'label', 'type', 'required', 'options', 'multi'), onSubmit: onSubmit, onClose: onClose })] }) }));
15
- };
16
- export default CustomFieldModal;
@@ -1,45 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { VisuallyHidden } from '@strapi/design-system';
3
- import { Check, Eye, EyeStriked, Minus, Pencil, Plus, PriceTag, Trash } from '@strapi/icons';
4
- import { useNotification } from '@strapi/strapi/admin';
5
- import { sortBy } from 'lodash';
6
- import { useCallback, useMemo, useState } from 'react';
7
- import { Flex, IconButton, TFooter, Table, Tbody, Td, Th, Thead, Tooltip, Tr, Typography, } from '@strapi/design-system';
8
- import { useIntl } from 'react-intl';
9
- import { ConfirmationDialog } from '../../../../components/ConfirmationDialog';
10
- import { getTrad, getTradId } from '../../../../translations';
11
- const refreshIcon = _jsx(PriceTag, {});
12
- const plusIcon = _jsx(Plus, {});
13
- const tradPrefix = 'pages.settings.form.customFields.table.';
14
- const CustomFieldTable = ({ data = [], onOpenModal, onRemoveCustomField, onToggleCustomField, }) => {
15
- const [confirmationVisible, setIsConfirmationVisible] = useState(false);
16
- const [fieldToRemove, setFieldToRemove] = useState(null);
17
- const { toggleNotification } = useNotification();
18
- const customFields = useMemo(() => sortBy(data, 'name'), [data]);
19
- const { formatMessage } = useIntl();
20
- const handleRemove = useCallback((field) => {
21
- setFieldToRemove(field);
22
- setIsConfirmationVisible(true);
23
- }, [setFieldToRemove, setIsConfirmationVisible]);
24
- const cleanup = useCallback(() => {
25
- setFieldToRemove(null);
26
- setIsConfirmationVisible(false);
27
- }, [setFieldToRemove, setIsConfirmationVisible]);
28
- const handleConfirm = useCallback(() => {
29
- if (fieldToRemove === null) {
30
- toggleNotification({
31
- type: 'warning',
32
- message: formatMessage(getTrad(`${tradPrefix}confirmation.error`)),
33
- });
34
- }
35
- else {
36
- onRemoveCustomField(fieldToRemove);
37
- }
38
- cleanup();
39
- }, [cleanup, fieldToRemove, getTradId, onRemoveCustomField, toggleNotification]);
40
- return (_jsxs(_Fragment, { children: [_jsx(ConfirmationDialog, { isVisible: confirmationVisible, header: formatMessage(getTrad(`${tradPrefix}confirmation.header`)), children: formatMessage(getTrad(`${tradPrefix}confirmation.message`)), labelConfirm: formatMessage(getTrad(`${tradPrefix}confirmation.confirm`)), iconConfirm: refreshIcon, mainIcon: refreshIcon, onConfirm: handleConfirm, onCancel: cleanup }), _jsxs(Table, { width: "100%", colCount: 4, rowCount: data.length + 1, footer: _jsx(TFooter, { onClick: (e) => {
41
- e.preventDefault();
42
- onOpenModal(null);
43
- }, icon: plusIcon, children: formatMessage(getTrad(`${tradPrefix}footer`)) }), children: [_jsx(Thead, { children: _jsxs(Tr, { children: [_jsx(Th, { width: "20%", children: _jsx(Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage(getTrad(`${tradPrefix}header.name`)) }) }), _jsx(Th, { width: "60%", children: _jsx(Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage(getTrad(`${tradPrefix}header.label`)) }) }), _jsx(Th, { width: "15%", children: _jsx(Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage(getTrad(`${tradPrefix}header.type`)) }) }), _jsx(Th, { width: "5%", children: _jsx(Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage(getTrad(`${tradPrefix}header.required`)) }) }), _jsx(Th, { children: _jsx(VisuallyHidden, {}) })] }) }), _jsx(Tbody, { children: customFields.map((customField) => typeof customField !== 'string' ? (_jsxs(Tr, { children: [_jsx(Td, { width: "20%", children: _jsx(Typography, { fontWeight: "semiBold", textColor: "neutral800", children: customField.name }) }), _jsx(Td, { width: "60%", children: _jsx(Typography, { textColor: "neutral800", children: customField.label }) }), _jsx(Td, { width: "15%", children: _jsx(Typography, { textColor: "neutral800", children: customField.type }) }), _jsx(Td, { width: "5%", children: _jsx(Tooltip, { description: formatMessage(getTrad(`${tradPrefix}${customField.required ? 'required' : 'notRequired'}`)), children: _jsx(Typography, { textColor: "neutral800", children: customField.required ? _jsx(Check, {}) : _jsx(Minus, {}) }) }) }), _jsx(Td, { children: _jsxs(Flex, { direction: "row", size: 1, children: [_jsx(IconButton, { onClick: () => onOpenModal(customField), label: formatMessage(getTrad(`${tradPrefix}edit`)), children: _jsx(Pencil, {}), style: { minWidth: 50 } }), _jsx(IconButton, { onClick: () => onToggleCustomField(customField), label: formatMessage(getTrad(`${tradPrefix}${customField.enabled ? 'disable' : 'enable'}`)), children: customField.enabled ? _jsx(Eye, {}) : _jsx(EyeStriked, {}), style: { minWidth: 50 } }), _jsx(IconButton, { onClick: () => handleRemove(customField), label: formatMessage(getTrad(`${tradPrefix}remove`)), children: _jsx(Trash, {}), style: { minWidth: 50 } })] }) })] }, customField.name)) : null) })] })] }));
44
- };
45
- export default CustomFieldTable;