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,111 +0,0 @@
1
- import { zodResolver } from '@hookform/resolvers/zod';
2
- import { getFetchClient } from '@strapi/strapi/admin';
3
- import { useMutation, useQuery } from '@tanstack/react-query';
4
- import { useForm } from 'react-hook-form';
5
- import { z } from 'zod';
6
- import { getApiClient } from '../../../api';
7
- import { configSchema } from '../../../schemas';
8
- import { resolveGlobalLikeId } from '../utils';
9
- export const useConfig = () => {
10
- // TODO: Resolve useQuery issues to use useFetchClient
11
- const fetch = getFetchClient();
12
- const apiClient = getApiClient(fetch);
13
- return useQuery({
14
- queryKey: apiClient.readSettingsConfigIndex(),
15
- queryFn() {
16
- return apiClient.readSettingsConfig();
17
- },
18
- staleTime: 1000 * 60 * 5,
19
- });
20
- };
21
- export const useRestart = () => {
22
- const fetch = getFetchClient();
23
- const apiClient = getApiClient(fetch);
24
- return useMutation({
25
- mutationFn: () => apiClient.restart(),
26
- });
27
- };
28
- export const useRestoreConfig = () => {
29
- const fetch = getFetchClient();
30
- const apiClient = getApiClient(fetch);
31
- return useMutation({
32
- mutationFn: () => apiClient.restoreConfig(),
33
- });
34
- };
35
- export const useContentTypes = () => {
36
- const fetch = getFetchClient();
37
- const apiClient = getApiClient(fetch);
38
- return useQuery({
39
- queryKey: apiClient.readContentTypeIndex(),
40
- queryFn: () => apiClient.readContentType(),
41
- staleTime: Infinity,
42
- });
43
- };
44
- export const useSaveConfig = () => {
45
- const fetch = getFetchClient();
46
- const apiClient = getApiClient(fetch);
47
- return useMutation({
48
- mutationFn(data) {
49
- return apiClient.updateConfig({
50
- ...data,
51
- contentTypesNameFields: Object.fromEntries(data.contentTypesNameFields.map(({ key, fields }) => [key, fields])),
52
- contentTypesPopulate: Object.fromEntries(data.contentTypesPopulate.map(({ key, fields }) => [key, fields])),
53
- pathDefaultFields: Object.fromEntries(data.pathDefaultFields.map(({ key, fields }) => [key, fields])),
54
- additionalFields: data.audienceFieldChecked
55
- ? [...data.additionalFields, 'audience']
56
- : data.additionalFields,
57
- gql: {
58
- navigationItemRelated: data.contentTypes.map((uid) => {
59
- return resolveGlobalLikeId(uid);
60
- }),
61
- },
62
- });
63
- },
64
- });
65
- };
66
- export const uiFormSchema = configSchema.omit({ contentTypesNameFields: true }).extend({
67
- audienceFieldChecked: z.boolean(),
68
- contentTypesNameFields: z
69
- .object({
70
- key: z.string(),
71
- fields: z.string().array(),
72
- })
73
- .array(),
74
- contentTypesPopulate: z
75
- .object({
76
- key: z.string(),
77
- fields: z.string().array(),
78
- })
79
- .array(),
80
- pathDefaultFields: z
81
- .object({
82
- key: z.string(),
83
- fields: z.string().array(),
84
- })
85
- .array(),
86
- });
87
- export const useSettingsForm = (config) => {
88
- const form = useForm({
89
- resolver: zodResolver(uiFormSchema),
90
- values: config
91
- ? {
92
- ...config,
93
- additionalFields: config.additionalFields.filter((field) => typeof field !== 'string'),
94
- audienceFieldChecked: config.additionalFields.includes('audience'),
95
- contentTypesNameFields: Object.entries(config.contentTypesNameFields).map(([key, fields]) => ({
96
- key,
97
- fields,
98
- })),
99
- contentTypesPopulate: Object.entries(config.contentTypesPopulate).map(([key, fields]) => ({
100
- key,
101
- fields,
102
- })),
103
- pathDefaultFields: Object.entries(config.pathDefaultFields).map(([key, fields]) => ({
104
- key,
105
- fields,
106
- })),
107
- }
108
- : undefined,
109
- });
110
- return { form };
111
- };
@@ -1,189 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { DesignSystemProvider, lightTheme } from '@strapi/design-system';
3
- import { Check, Play, Typhoon } from '@strapi/icons';
4
- import { Layouts, Page, useAuth } from '@strapi/strapi/admin';
5
- import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
6
- import { useMemo, useState } from 'react';
7
- import { useIntl } from 'react-intl';
8
- import { Accordion, Box, Button, Field, Flex, Grid, MultiSelect, MultiSelectOption, NumberInput, Toggle, Typography, } from '@strapi/design-system';
9
- import { isEmpty, sortBy } from 'lodash';
10
- import { Controller } from 'react-hook-form';
11
- import { ConfirmationDialog } from '../../components/ConfirmationDialog';
12
- import { RestartAlert } from '../../components/RestartAlert';
13
- import { getTrad } from '../../utils/getTranslation';
14
- import pluginPermissions from '../../utils/permissions';
15
- import CustomFieldModal from './components/CustomFieldModal';
16
- import CustomFieldTable from './components/CustomFieldTable';
17
- import { uiFormSchema, useConfig, useContentTypes, useRestart, useRestoreConfig, useSaveConfig, useSettingsForm, } from './hooks';
18
- import { isContentTypeEligible } from './utils';
19
- const BOX_DEFAULT_PROPS = {
20
- background: 'neutral0',
21
- hasRadius: true,
22
- shadow: 'filterShadow',
23
- padding: 6,
24
- };
25
- const queryClient = new QueryClient();
26
- const Inner = () => {
27
- const configQuery = useConfig();
28
- const contentTypesQuery = useContentTypes();
29
- const configSaveMutation = useSaveConfig();
30
- const restoreMutation = useRestoreConfig();
31
- const restartMutation = useRestart();
32
- const { formatMessage } = useIntl();
33
- const { form: { control, watch, setValue, getValues, handleSubmit }, } = useSettingsForm(configQuery.data);
34
- const [contentTypeNameFieldsCurrent, contentTypesCurrent, additionalFields, preferCustomContentTypes,] = watch([
35
- 'contentTypesNameFields',
36
- 'contentTypes',
37
- 'additionalFields',
38
- 'preferCustomContentTypes',
39
- ]);
40
- const [restartStatus, setRestartStatus] = useState({ required: false });
41
- const readPermissions = useAuth('SettingsPage', (state) => state.permissions);
42
- const hasSettingsPermissions = useMemo(() => {
43
- return !!readPermissions.find(({ action }) => action === pluginPermissions.settings[0].action);
44
- }, [readPermissions]);
45
- const hasSettingsReadPermissions = useMemo(() => {
46
- return !!readPermissions.find(({ action }) => action === pluginPermissions.access[0].action);
47
- }, [readPermissions]);
48
- const isLoading = configQuery.isPending ||
49
- contentTypesQuery.isPending ||
50
- configSaveMutation.isPending ||
51
- restartMutation.isPending ||
52
- restoreMutation.isPending;
53
- const [isCustomFieldModalOpen, setIsCustomFieldModalOpen] = useState(false);
54
- const [isRestorePopupOpen, setIsRestorePopupOpen] = useState(false);
55
- const [customFieldSelected, setCustomFieldSelected] = useState(null);
56
- const handleOpenCustomFieldModal = (field) => {
57
- setCustomFieldSelected(field);
58
- setIsCustomFieldModalOpen(true);
59
- };
60
- const handleRemoveCustomField = (field) => {
61
- const filteredFields = additionalFields.filter((f) => typeof f !== 'string' ? f.name !== field.name : true);
62
- setValue('additionalFields', filteredFields);
63
- setCustomFieldSelected(null);
64
- setIsCustomFieldModalOpen(false);
65
- };
66
- const handleToggleCustomField = (current) => {
67
- const next = { ...current, enabled: !current.enabled };
68
- const nextAdditionalFields = additionalFields.map((field) => typeof field !== 'string' && current.name === field.name ? next : field);
69
- setValue('additionalFields', nextAdditionalFields);
70
- };
71
- const handleSubmitCustomField = (next) => {
72
- const hasFieldAlready = !!additionalFields.find((field) => typeof field !== 'string' ? field.name === next.name : false);
73
- const nextAdditionalFields = hasFieldAlready
74
- ? additionalFields.map((field) => typeof field !== 'string' && next.name === field.name ? next : field)
75
- : [...additionalFields, next];
76
- setValue('additionalFields', nextAdditionalFields);
77
- setCustomFieldSelected(null);
78
- setIsCustomFieldModalOpen(false);
79
- };
80
- const allContentTypes = !isLoading
81
- ? sortBy(Object.values(contentTypesQuery.data ?? [])
82
- .filter(({ uid }) => isContentTypeEligible(uid, {
83
- allowedContentTypes: configQuery.data?.allowedContentTypes,
84
- restrictedContentTypes: configQuery.data?.restrictedContentTypes,
85
- preferCustomContentTypes,
86
- contentTypes: contentTypesCurrent,
87
- }))
88
- .map((ct) => {
89
- const type = contentTypesQuery.data?.find((_) => _.uid === ct.uid);
90
- if (type) {
91
- const { isDisplayed: available, kind } = type;
92
- const isSingle = kind === 'singleType';
93
- return {
94
- ...ct,
95
- available,
96
- isSingle,
97
- };
98
- }
99
- return ct;
100
- }), (ct) => ct.info.displayName)
101
- : [];
102
- const onSubmit = (rawData) => {
103
- const parsed = uiFormSchema.safeParse(rawData);
104
- if (parsed.success) {
105
- configSaveMutation.mutate(parsed.data, {
106
- onSuccess() {
107
- setRestartStatus({ required: true });
108
- configSaveMutation.reset();
109
- },
110
- });
111
- }
112
- else {
113
- console.warn('Invalid form data', parsed.error);
114
- }
115
- };
116
- const onPopupClose = async (isConfirmed) => {
117
- setIsRestorePopupOpen(false);
118
- if (isConfirmed) {
119
- restoreMutation.mutate();
120
- setRestartStatus({ required: true });
121
- }
122
- };
123
- const handleRestart = async () => {
124
- restartMutation.mutate(undefined, {
125
- onSuccess() {
126
- setRestartStatus({ required: false });
127
- },
128
- onError() {
129
- setRestartStatus({ required: false });
130
- },
131
- });
132
- // TODO: Reload
133
- window.location.reload();
134
- };
135
- const handleRestartDiscard = () => setRestartStatus({ required: false });
136
- if (!hasSettingsPermissions) {
137
- return _jsx(Page.NoPermissions, {});
138
- }
139
- if (isLoading) {
140
- return _jsx(Page.Loading, {});
141
- }
142
- return (_jsxs(Layouts.Root, { children: [_jsxs(Page.Main, { children: [_jsx(Page.Title, { children: formatMessage(getTrad('pages.settings.header.title')) }), _jsx(Layouts.Header, { title: formatMessage(getTrad('pages.settings.header.title')), subtitle: formatMessage(getTrad('pages.settings.header.description')), primaryAction: hasSettingsReadPermissions ? (_jsx(Button, { startIcon: _jsx(Check, {}), disabled: restartStatus.required, onClick: handleSubmit(onSubmit), children: formatMessage(getTrad('pages.settings.actions.submit')) })) : null }), _jsx(Layouts.Content, { children: _jsxs(Flex, { direction: "column", gap: 4, children: [restartStatus.required && (_jsx(Box, { ...BOX_DEFAULT_PROPS, width: "100%", children: _jsx(RestartAlert, { closeLabel: formatMessage(getTrad('pages.settings.actions.restart.alert.cancel')), title: formatMessage(getTrad('pages.settings.actions.restart.alert.title')), action: _jsx(Box, { children: _jsx(Button, { onClick: handleRestart, startIcon: _jsx(Play, {}), children: formatMessage(getTrad('pages.settings.actions.restart')) }) }), onClose: handleRestartDiscard, children: _jsxs(_Fragment, { children: [_jsx(Box, { paddingBottom: 1, children: formatMessage(getTrad('pages.settings.actions.restart.alert.description')) }), restartStatus.reasons?.map((reason, i) => (_jsx(Box, { paddingBottom: 1, children: formatMessage(getTrad(`pages.settings.actions.restart.alert.reason.${reason}`)) }, i)))] }) }) })), _jsx(Box, { ...BOX_DEFAULT_PROPS, width: "100%", children: _jsxs(Flex, { direction: "column", alignItems: "flex-start", gap: 2, children: [_jsx(Typography, { variant: "delta", as: "h2", children: formatMessage(getTrad('pages.settings.general.title')) }), _jsx(Grid.Root, { gap: 4, width: "100%", children: _jsx(Grid.Item, { col: 12, s: 12, xs: 12, children: _jsxs(Grid.Root, { gap: 4, width: "100%", children: [_jsx(Grid.Item, { col: 4, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: "preferCustomContentTypes", render: ({ field: { name, value, onChange } }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.preferCustomContentTypes.label')) }), _jsx(Toggle, { name: name, checked: value, onChange: ({ currentTarget: { checked }, }) => {
143
- onChange(checked);
144
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required, width: "100%" }), _jsx(Field.Hint, { children: formatMessage(getTrad('pages.settings.form.preferCustomContentTypes.hint')) })] })) }) }), _jsx(Grid.Item, { col: 8, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: "contentTypes", render: ({ field: { name, value, onChange }, fieldState: { error } }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.contentTypes.label')) }), _jsx(MultiSelect, { name: name, label: formatMessage(getTrad('pages.settings.form.contentTypes.label')), "aria-label": formatMessage(getTrad('pages.settings.form.contentTypes.label')), placeholder: formatMessage(getTrad('pages.settings.form.contentTypes.placeholder')), hint: formatMessage(getTrad('pages.settings.form.contentTypes.hint')), value: value, onChange: (value) => {
145
- onChange(value);
146
- const { contentTypesNameFields = [], contentTypesPopulate = [], pathDefaultFields, } = getValues();
147
- const missingKeys = value.filter((key) => !contentTypesNameFields.find((nameFields) => nameFields.key === key)) ?? [];
148
- const redundantKeys = contentTypesNameFields
149
- .filter((nameFields) => !value.includes(nameFields.key) ||
150
- nameFields.key === 'default')
151
- .map(({ key }) => key) ?? [];
152
- setValue('contentTypesNameFields', [
153
- ...(contentTypesNameFields.filter(({ key }) => !redundantKeys.includes(key) || key === 'default') ?? []),
154
- ...missingKeys.map((key) => ({ key, fields: [] })),
155
- ], { shouldDirty: true, shouldTouch: true, shouldValidate: true });
156
- setValue('contentTypesPopulate', [
157
- ...(contentTypesPopulate.filter(({ key }) => !redundantKeys.includes(key) || key === 'default') ?? []),
158
- ...missingKeys.map((key) => ({ key, fields: [] })),
159
- ], { shouldDirty: true, shouldTouch: true, shouldValidate: true });
160
- setValue('pathDefaultFields', [
161
- ...(pathDefaultFields.filter(({ key }) => !redundantKeys.includes(key) || key === 'default') ?? []),
162
- ...missingKeys.map((key) => ({ key, fields: [] })),
163
- ], { shouldDirty: true, shouldTouch: true, shouldValidate: true });
164
- }, disabled: restartStatus.required, error: !!error, withTags: true, width: "100%", children: allContentTypes.map((item) => (_jsx(MultiSelectOption, { value: item.uid, children: item.info.displayName }, item.uid))) })] })) }) }), _jsx(Grid.Item, { col: 12, s: 12, xs: 12, children: contentTypesCurrent?.length ? (_jsx(Accordion.Root, { style: { width: '100%' }, children: contentTypeNameFieldsCurrent.map((nameFields, index) => {
165
- const current = contentTypesQuery.data?.find(({ uid }) => uid === nameFields.key);
166
- const attributeKeys = Object.keys(current?.attributes ?? {}).sort();
167
- return current ? (_jsxs(Accordion.Item, { value: nameFields.key, children: [_jsx(Accordion.Header, { children: _jsx(Accordion.Trigger, { children: current?.info.displayName ??
168
- formatMessage(getTrad('pages.settings.form.nameField.default')) }) }), _jsx(Accordion.Content, { children: _jsxs(Grid.Root, { gap: 4, padding: 2, children: [_jsx(Grid.Item, { col: 12, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: `contentTypesNameFields.${index}`, render: ({ field: { name, value, onChange }, fieldState: { error }, }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.nameField.label')) }), _jsx(MultiSelect, { name: name, placeholder: formatMessage(getTrad('pages.settings.form.nameField.placeholder')), value: value.fields, onChange: (fields) => onChange({
169
- ...value,
170
- fields,
171
- }), disabled: restartStatus.required, error: !!error, withTags: true, children: attributeKeys.map((attribute) => (_jsx(MultiSelectOption, { value: attribute, children: attribute }, attribute))) }), _jsx(Field.Hint, { children: formatMessage(getTrad(`pages.settings.form.nameField.${isEmpty(value?.fields) ? 'empty' : 'hint'}`)) })] })) }) }), _jsx(Grid.Item, { col: 12, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: `contentTypesPopulate.${index - 1}`, render: ({ field: { name, value, onChange }, fieldState: { error }, }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.populate.label')) }), _jsx(MultiSelect, { width: "100%", name: name, placeholder: formatMessage(getTrad('pages.settings.form.populate.placeholder')), value: value?.fields ?? [], onChange: (fields) => onChange({
172
- ...value,
173
- fields,
174
- }), disabled: restartStatus.required, error: !!error, withTags: true, children: attributeKeys.map((attribute) => (_jsx(MultiSelectOption, { value: attribute, children: attribute }, attribute))) }), _jsx(Field.Hint, { children: formatMessage(getTrad(`pages.settings.form.populate.${isEmpty(value?.fields) ? 'empty' : 'hint'}`)) })] })) }) }), _jsx(Grid.Item, { col: 12, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: `pathDefaultFields.${index - 1}`, render: ({ field: { name, value, onChange }, fieldState: { error }, }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.pathDefaultFields.label')) }), _jsx(MultiSelect, { name: name, width: "100%", placeholder: formatMessage(getTrad('pages.settings.form.pathDefaultFields.placeholder')), value: value?.fields ?? [], onChange: (fields) => onChange({
175
- ...value,
176
- fields,
177
- }), disabled: restartStatus.required, error: !!error, withTags: true, children: attributeKeys.map((attribute) => (_jsx(MultiSelectOption, { value: attribute, children: attribute }, attribute))) }), _jsx(Field.Hint, { children: formatMessage(getTrad(`pages.settings.form.pathDefaultFields.${isEmpty(value?.fields) ? 'empty' : 'hint'}`)) })] })) }) })] }) })] }, nameFields.key)) : null;
178
- }) })) : null })] }) }) })] }) }), _jsx(Box, { ...BOX_DEFAULT_PROPS, width: "100%", children: _jsxs(Flex, { direction: "column", alignItems: "flex-start", gap: 2, children: [_jsx(Typography, { variant: "delta", as: "h2", children: formatMessage(getTrad('pages.settings.additional.title')) }), _jsxs(Grid.Root, { gap: 4, width: "100%", children: [_jsx(Grid.Item, { col: 4, s: 12, xs: 12, children: _jsx(Box, { width: "100%", children: _jsx(Controller, { control: control, name: "allowedLevels", render: ({ field: { onChange, value, name } }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.allowedLevels.label')) }), _jsx(NumberInput, { width: "100%", name: name, placeholder: formatMessage(getTrad('pages.settings.form.allowedLevels.placeholder')), onValueChange: (nextValue) => onChange(nextValue), value: value, disabled: restartStatus.required }), _jsx(Field.Hint, { children: formatMessage(getTrad('pages.settings.form.allowedLevels.hint')) })] })) }) }) }), _jsx(Grid.Item, { col: 4, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: "cascadeMenuAttached", render: ({ field: { name, value, onChange } }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.cascadeMenuAttached.label')) }), _jsx(Toggle, { width: "100%", name: name, checked: value, onChange: ({ currentTarget: { checked }, }) => {
179
- onChange(checked);
180
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required }), _jsx(Field.Hint, { children: formatMessage(getTrad('pages.settings.form.cascadeMenuAttached.hint')) })] })) }) }), _jsx(Grid.Item, { col: 4, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: "audienceFieldChecked", render: ({ field: { name, value, onChange } }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.audience.label')) }), _jsx(Toggle, { name: name, checked: value, onChange: ({ currentTarget: { checked }, }) => {
181
- onChange(checked);
182
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required, width: "100%" }), _jsx(Field.Hint, { children: formatMessage(getTrad('pages.settings.form.audience.hint')) })] })) }) }), configQuery.data?.isCachePluginEnabled && (_jsx(Grid.Item, { col: 12, s: 12, xs: 12, children: _jsx(Controller, { control: control, name: "isCacheEnabled", render: ({ field: { name, value, onChange } }) => (_jsxs(Field.Root, { width: "100%", children: [_jsx(Field.Label, { children: formatMessage(getTrad('pages.settings.form.cache.label')) }), _jsx(Toggle, { name: name, checked: value, onChange: ({ currentTarget: { checked }, }) => {
183
- onChange(checked);
184
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required, width: "100%" }), _jsx(Field.Hint, { children: formatMessage(getTrad('pages.settings.form.cache.hint')) })] })) }) }))] })] }) }), _jsxs(Box, { ...BOX_DEFAULT_PROPS, width: "100%", gap: 2, direction: "column", alignItems: "flex-start", children: [_jsx(Typography, { variant: "delta", as: "h2", children: formatMessage(getTrad('pages.settings.customFields.title')) }), _jsx(Box, { padding: 1 }), _jsx(CustomFieldTable, { data: additionalFields, onOpenModal: handleOpenCustomFieldModal, onRemoveCustomField: handleRemoveCustomField, onToggleCustomField: handleToggleCustomField })] }), _jsx(Box, { ...BOX_DEFAULT_PROPS, width: "100%", children: _jsxs(Flex, { direction: "column", alignItems: "flex-start", gap: 2, children: [_jsx(Typography, { variant: "delta", as: "h2", children: formatMessage(getTrad('pages.settings.restoring.title')) }), _jsxs(Grid.Root, { gap: 4, width: "100%", children: [_jsx(Grid.Item, { col: 12, s: 12, xs: 12, children: _jsx(Typography, { children: formatMessage(getTrad('pages.settings.actions.restore.description')) }) }), _jsxs(Grid.Item, { col: 12, s: 12, xs: 12, children: [hasSettingsReadPermissions ? (_jsx(Button, { variant: "danger-light", startIcon: _jsx(Check, {}), onClick: () => setIsRestorePopupOpen(true), children: formatMessage(getTrad('pages.settings.actions.restore')) })) : null, _jsx(ConfirmationDialog, { isVisible: isRestorePopupOpen, header: formatMessage(getTrad('pages.settings.actions.restore.confirmation.header')), labelConfirm: formatMessage(getTrad('pages.settings.actions.restore.confirmation.confirm')), iconConfirm: _jsx(Typhoon, {}), onConfirm: () => onPopupClose(true), onCancel: () => onPopupClose(false), children: formatMessage(getTrad('pages.settings.actions.restore.confirmation.description')) })] })] })] }) })] }) })] }), isCustomFieldModalOpen && (_jsx(CustomFieldModal, { onClose: () => setIsCustomFieldModalOpen(false), onSubmit: handleSubmitCustomField, isOpen: isCustomFieldModalOpen, data: customFieldSelected }))] }));
185
- };
186
- export default function SettingsPage() {
187
- queryClient.invalidateQueries();
188
- return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(DesignSystemProvider, { locale: "en-GB", theme: lightTheme, children: _jsx(Inner, {}) }) }));
189
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,25 +0,0 @@
1
- import { capitalize } from 'lodash';
2
- const UID_REGEX = /^(?<type>[a-z0-9-]+)\:{2}(?<api>[a-z0-9-]+)\.{1}(?<contentType>[a-z0-9-]+)$/i;
3
- export const isContentTypeEligible = (uid = '', config = {}) => {
4
- const { allowedContentTypes: baseAllowedContentTypes = [], restrictedContentTypes = [], contentTypes = [], preferCustomContentTypes = false, } = config;
5
- const allowedContentTypes = preferCustomContentTypes
6
- ? ['api::', ...contentTypes]
7
- : baseAllowedContentTypes;
8
- const isOneOfAllowedType = allowedContentTypes.filter((_) => uid.includes(_) || uid === _).length > 0;
9
- const isNoneOfRestricted = restrictedContentTypes.filter((_) => uid.includes(_) || uid === _).length === 0;
10
- return !!uid && isOneOfAllowedType && isNoneOfRestricted;
11
- };
12
- export const resolveGlobalLikeId = (uid = '') => {
13
- const parse = (str) => str
14
- .split('-')
15
- .map((_) => capitalize(_))
16
- .join('');
17
- const [type, scope, contentTypeName] = splitTypeUid(uid);
18
- if (type === 'api') {
19
- return parse(contentTypeName);
20
- }
21
- return `${parse(scope)}${parse(contentTypeName)}`;
22
- };
23
- const splitTypeUid = (uid = '') => {
24
- return uid.split(UID_REGEX).filter((s) => s && s.length > 0);
25
- };
package/admin/pluginId.js DELETED
@@ -1 +0,0 @@
1
- export const PLUGIN_ID = 'navigation';
@@ -1,53 +0,0 @@
1
- import { z } from 'zod';
2
- const navigationCustomFieldBase = z.object({
3
- name: z.string(),
4
- label: z.string(),
5
- required: z.boolean().optional(),
6
- enabled: z.boolean().optional(),
7
- });
8
- const navigationItemCustomFieldSelect = navigationCustomFieldBase.extend({
9
- type: z.literal('select'),
10
- multi: z.boolean(),
11
- options: z.array(z.string()),
12
- });
13
- const navigationItemCustomFieldPrimitive = navigationCustomFieldBase.extend({
14
- type: z.enum(['boolean', 'string']),
15
- multi: z.literal(false).optional(),
16
- options: z.array(z.string()).max(0).optional(),
17
- });
18
- const navigationItemCustomFieldMedia = navigationCustomFieldBase.extend({
19
- type: z.literal('media'),
20
- multi: z.literal(false).optional(),
21
- options: z.array(z.string()).max(0).optional(),
22
- });
23
- export const navigationItemCustomField = z.union([
24
- navigationItemCustomFieldPrimitive,
25
- navigationItemCustomFieldMedia,
26
- navigationItemCustomFieldSelect,
27
- ]);
28
- export const navigationItemAdditionalField = z.union([
29
- z.literal('audience'),
30
- navigationItemCustomField,
31
- ]);
32
- export const configSchema = z.object({
33
- additionalFields: z.array(navigationItemAdditionalField),
34
- allowedLevels: z.number(),
35
- availableAudience: z
36
- .object({
37
- id: z.number(),
38
- name: z.string(),
39
- key: z.string(),
40
- })
41
- .array(),
42
- contentTypes: z.array(z.string()),
43
- contentTypesNameFields: z.record(z.string(), z.array(z.string())),
44
- contentTypesPopulate: z.record(z.string(), z.array(z.string())),
45
- gql: z.object({
46
- navigationItemRelated: z.array(z.string()),
47
- }),
48
- pathDefaultFields: z.record(z.string(), z.any()),
49
- cascadeMenuAttached: z.boolean(),
50
- preferCustomContentTypes: z.boolean(),
51
- isCacheEnabled: z.boolean().optional(),
52
- isCachePluginEnabled: z.boolean().optional(),
53
- });
@@ -1,14 +0,0 @@
1
- import { z } from 'zod';
2
- export const strapiContentTypeSchema = z.object({
3
- uid: z.string(),
4
- isDisplayed: z.boolean(),
5
- apiID: z.string(),
6
- kind: z.enum(['collectionType', 'singleType']),
7
- info: z.object({
8
- singularName: z.string(),
9
- pluralName: z.string(),
10
- displayName: z.string(),
11
- description: z.string().optional(),
12
- }),
13
- attributes: z.record(z.string(), z.unknown()),
14
- });
@@ -1,199 +0,0 @@
1
- {
2
- "components.confirmation.dialog.button.cancel": "Cancel·lar",
3
- "components.confirmation.dialog.button.confirm": "Confirmeu",
4
- "components.confirmation.dialog.description": "Vols continuar?",
5
- "components.confirmation.dialog.header": "Confirmació",
6
- "components.navigationItem.action.newItem": "Afegeix un element fill",
7
- "components.navigationItem.badge.draft": "Esborrany",
8
- "components.navigationItem.badge.published": "Publicat",
9
- "components.navigationItem.badge.removed": "Eliminat",
10
- "empty": "El teu menú està buit",
11
- "empty.cta": "Crea el primer element",
12
- "header.action.collapseAll": "Col·lapsar tot",
13
- "header.action.expandAll": "Amplia-ho tot",
14
- "header.action.manage": "Gestionar",
15
- "header.action.newItem": "Element nou",
16
- "header.description": "Definiu la vostra navegació del lloc web",
17
- "header.meta": "ID: { id }, slug: { key }",
18
- "header.title": "Navegació",
19
- "notification.error": "S'ha produït un error en processar la sol·licitud.",
20
- "notification.error.customField.type": "Tipus de camp personalitzat no compatible",
21
- "notification.error.item.relation": "Les relacions proporcionades en alguns elements són incorrectes",
22
- "notification.error.item.slug": "No es pot crear la clau (slug) vàlida de l'encaminador de la IU des de \"{ query }\". \"{ result }\" rebut",
23
- "notification.navigation.error": "Camí duplicat: { path } al pare: { parentTitle } per a { errorTitles } elements",
24
- "notification.navigation.item.relation": "La relació d'entitat no existeix!",
25
- "notification.navigation.item.relation.status.draft": "esborrany",
26
- "notification.navigation.item.relation.status.published": "publicat",
27
- "notification.navigation.submit": "S'han desat els canvis de navegació",
28
- "pages.main.header.localization.select.placeholder": "Seleccioneu la configuració regional",
29
- "pages.main.search.placeholder": "Escriviu per començar a cercar...",
30
- "pages.main.search.subLabel": "appuyez sur ENTER pour mettre en surbrillance l'élément suivant",
31
- "pages.settings.actions.disableI18n.confirmation.confirm": "entenc",
32
- "pages.settings.actions.disableI18n.confirmation.description.line1": "Esteu desactivant la internacionalització per a la navegació. Les navegacions per a configuracions regionals diferents de les predeterminades no estan disponibles per a la visualització i modificacions mitjançant aquesta extensió.",
33
- "pages.settings.actions.disableI18n.confirmation.description.line2": "Podeu optar per eliminar les navegacions per a altres configuracions regionals.",
34
- "pages.settings.actions.disableI18n.confirmation.description.line3": "Recordeu! L'eliminació és irreversible",
35
- "pages.settings.actions.disableI18n.confirmation.header": "Desactivació de la internacionalització",
36
- "pages.settings.actions.disableI18n.prune.label": "Navegacions obsoletes",
37
- "pages.settings.actions.disableI18n.prune.off": "Mantenir",
38
- "pages.settings.actions.disableI18n.prune.on": "Eliminar",
39
- "pages.settings.actions.restart": "Reinicieu Strapi",
40
- "pages.settings.actions.restart.alert.cancel": "Cancel·lar",
41
- "pages.settings.actions.restart.alert.close": "Descartar",
42
- "pages.settings.actions.restart.alert.description": "Heu fet un canvi de configuració que requereix que la vostra aplicació Strapi es reiniciï perquè tingui efecte. Fes-ho manualment o utilitzant el botó següent.",
43
- "pages.settings.actions.restart.alert.reason.GRAPH_QL": "S'aplicaran els canvis de GraphQL.",
44
- "pages.settings.actions.restart.alert.reason.I18N": "S'aplicaran els canvis d'internacionalització (i18n).",
45
- "pages.settings.actions.restart.alert.reason.I18N_NAVIGATIONS_PRUNE": "Les navegacions locals obsoletes s'eliminaran.",
46
- "pages.settings.actions.restart.alert.title": "Strapi requereix reinici",
47
- "pages.settings.actions.restore": "Restaura la configuració",
48
- "pages.settings.actions.restore.confirmation.confirm": "Restaurar",
49
- "pages.settings.actions.restore.confirmation.description": "La configuració de l'extensió es restaurarà des del fitxer plugins.js.",
50
- "pages.settings.actions.restore.confirmation.header": "Vols continuar?",
51
- "pages.settings.actions.restore.description": "La restauració de la configuració de l'extensió farà que es substitueixi per la configuració desada dins del fitxer \"plugins.js\".",
52
- "pages.settings.actions.submit": "Desa la configuració",
53
- "pages.settings.additional.title": "Configuracions addicionals",
54
- "pages.settings.customFields.title": "Configuració de camps personalitzats",
55
- "pages.settings.form.allowedLevels.hint": "Nivell màxim per al qual podeu marcar l'element com a \"Menú adjunt\"",
56
- "pages.settings.form.allowedLevels.label": "Nivells permesos",
57
- "pages.settings.form.allowedLevels.placeholder": "per exemple. 2",
58
- "pages.settings.form.audience.hint": "Activa el camp de públic",
59
- "pages.settings.form.audience.label": "Públic",
60
- "pages.settings.form.contentTypes.hint": "Si no se selecciona cap, tampoc no s'habilitarà cap dels tipus de contingut",
61
- "pages.settings.form.contentTypes.label": "Habilita la navegació per",
62
- "pages.settings.form.contentTypes.placeholder": "per exemple. Pàgines, publicacions",
63
- "pages.settings.form.contentTypesSettings.initializationWarning.content": "- El tipus de contingut encara no s'ha inicialitzat. Inicialitzeu-lo primer per poder utilitzar-lo en un editor visual.",
64
- "pages.settings.form.contentTypesSettings.initializationWarning.title": "Avís",
65
- "pages.settings.form.contentTypesSettings.label": "Tipus de contingut",
66
- "pages.settings.form.contentTypesSettings.tooltip": "Configuració personalitzada per tipus de contingut",
67
- "pages.settings.form.customFields.popup.header.edit": "Edita el camp personalitzat",
68
- "pages.settings.form.customFields.popup.header.new": "Afegeix un camp personalitzat nou",
69
- "pages.settings.form.customFields.popup.label.description": "Aquesta etiqueta es mostrarà al formulari d'elements de navegació",
70
- "pages.settings.form.customFields.popup.label.label": "Etiqueta de camp personalitzada",
71
- "pages.settings.form.customFields.popup.label.placeholder": "Exemple d'etiqueta",
72
- "pages.settings.form.customFields.popup.multi.label": "Activa l'entrada d'opcions múltiples",
73
- "pages.settings.form.customFields.popup.name.description": "El nom del camp personalitzat ha de ser únic",
74
- "pages.settings.form.customFields.popup.name.label": "Nom del camp personalitzat",
75
- "pages.settings.form.customFields.popup.name.placeholder": "nom_exemple",
76
- "pages.settings.form.customFields.popup.options.description": "Activar aquest camp no canviarà els elements de navegació que ja estan sortint",
77
- "pages.settings.form.customFields.popup.options.label": "Opcions per seleccionar l'entrada",
78
- "pages.settings.form.customFields.popup.required.description": "Activar aquest camp no canviarà els elements de navegació que ja estan sortint",
79
- "pages.settings.form.customFields.popup.required.label": "Camp obligatori",
80
- "pages.settings.form.customFields.popup.type.label": "Tipus de camp personalitzat",
81
- "pages.settings.form.customFields.table.confirmation.confirm": "Continua",
82
- "pages.settings.form.customFields.table.confirmation.error": "S'ha produït un error en eliminar el camp personalitzat",
83
- "pages.settings.form.customFields.table.confirmation.header": "S'està eliminant el camp personalitzat",
84
- "pages.settings.form.customFields.table.confirmation.message": "Aquesta acció farà que s'eliminin tots els valors dels camps personalitzats dels elements de navegació.",
85
- "pages.settings.form.customFields.table.disable": "Desactiva el camp personalitzat",
86
- "pages.settings.form.customFields.table.edit": "Edita el camp personalitzat",
87
- "pages.settings.form.customFields.table.enable": "Activa el camp personalitzat",
88
- "pages.settings.form.customFields.table.footer": "Crea un camp personalitzat nou",
89
- "pages.settings.form.customFields.table.header.label": "Etiqueta",
90
- "pages.settings.form.customFields.table.header.name": "Nom",
91
- "pages.settings.form.customFields.table.header.required": "Obligatori",
92
- "pages.settings.form.customFields.table.header.type": "Tipus",
93
- "pages.settings.form.customFields.table.notRequired": "no obligatori",
94
- "pages.settings.form.customFields.table.remove": "Elimina el camp personalitzat",
95
- "pages.settings.form.customFields.table.required": "obligatori",
96
- "pages.settings.form.i18n.hint": "Habilitar la internacionalització",
97
- "pages.settings.form.i18n.hint.missingDefaultLocale": "Falta la configuració regional predeterminada!",
98
- "pages.settings.form.i18n.label": "i18n",
99
- "pages.settings.form.nameField.empty": "Aquest tipus de contingut no té cap atribut de text",
100
- "pages.settings.form.nameField.hint": "Si es deixa el camp de nom buit, prendrà els següents camps ordenats: \"títol\", \"assumpte\" i \"nom\"",
101
- "pages.settings.form.nameField.label": "Camps de nom",
102
- "pages.settings.form.nameField.placeholder": "Seleccioneu almenys un o deixeu-lo buit per aplicar els valors predeterminats",
103
- "pages.settings.form.pathDefaultFields.empty": "Aquest tipus de contingut no té cap atribut adequat",
104
- "pages.settings.form.pathDefaultFields.hint": "El valor de l'atribut seleccionat serà un valor predeterminat per al camí intern",
105
- "pages.settings.form.pathDefaultFields.label": "Camps predeterminats del camí",
106
- "pages.settings.form.pathDefaultFields.placeholder": "Seleccioneu-ne com a mínim un o deixeu-lo buit per desactivar l'emplenat del camp del camí amb el valor dels atributs",
107
- "pages.settings.form.populate.empty": "Aquest tipus de contingut no té cap camp de relació",
108
- "pages.settings.form.populate.hint": "Els camps de relació seleccionats s'emplenaran dins de les respostes de l'API",
109
- "pages.settings.form.populate.label": "Camps a omplir",
110
- "pages.settings.form.populate.placeholder": "Seleccioneu-ne com a mínim un o deixeu-lo buit per desactivar l'ompliment dels camps de relació",
111
- "pages.settings.general.title": "Configuració general",
112
- "pages.settings.header.description": "Configura el connector de navegació",
113
- "pages.settings.header.title": "Navegació",
114
- "pages.settings.nameField.title": "Configuració dels tipus de contingut",
115
- "pages.settings.notification.fetch.error": "No s'ha pogut obtenir la configuració. S'està tornant a provar...",
116
- "pages.settings.notification.restart.error": "No s'ha pogut reiniciar l'aplicació. Intenta fer-ho manualment.",
117
- "pages.settings.notification.restart.success": "L'aplicació s'ha reiniciat correctament",
118
- "pages.settings.notification.restore.error": "La restauració de la configuració ha fallat",
119
- "pages.settings.notification.restore.success": "La configuració s'ha restaurat correctament",
120
- "pages.settings.notification.submit.error": "L'actualització de la configuració ha fallat",
121
- "pages.settings.notification.submit.success": "La configuració s'ha actualitzat correctament",
122
- "pages.settings.restoring.title": "Restauració",
123
- "pages.settings.section.subtitle": "Configuració",
124
- "pages.settings.section.title": "Extensió de navegació",
125
- "pages.view.actions.i18nCopyItems.confirmation.confirm": "Còpia",
126
- "pages.view.actions.i18nCopyItems.confirmation.content": "Voleu copiar els elements de navegació?",
127
- "pages.view.actions.i18nCopyItems.confirmation.header": "Confirmació",
128
- "plugin.name": "Navegació",
129
- "popup.item.form.audience.empty": "No hi ha més públic",
130
- "popup.item.form.audience.label": "Públic",
131
- "popup.item.form.audience.placeholder": "Selecciona el públic...",
132
- "popup.item.form.button.cancel": "Cancel·lar",
133
- "popup.item.form.button.create": "Crea un element",
134
- "popup.item.form.button.remove": "Eliminar",
135
- "popup.item.form.button.restore": "Restaura l'element",
136
- "popup.item.form.button.save": "Desa",
137
- "popup.item.form.button.update": "Actualitza l'element",
138
- "popup.item.form.externalPath.label": "URL externa",
139
- "popup.item.form.externalPath.placeholder": "Enllaç a la pàgina externa",
140
- "popup.item.form.externalPath.validation.type": "Aquest valor no és una URL adequada.",
141
- "popup.item.form.i18n.locale.button": "Còpia",
142
- "popup.item.form.i18n.locale.error.generic": "No es pot copiar l'element",
143
- "popup.item.form.i18n.locale.error.unavailable": "La versió local no està disponible",
144
- "popup.item.form.i18n.locale.label": "Copia els detalls de",
145
- "popup.item.form.i18n.locale.placeholder": "local",
146
- "popup.item.form.menuAttached.label": "Adjuntar al menú",
147
- "popup.item.form.path.label": "URL",
148
- "popup.item.form.path.placeholder": "La part d'URL única identifica aquest element",
149
- "popup.item.form.path.preview": "Vista prèvia:",
150
- "popup.item.form.related.empty": "No hi ha més entitats de \"{ contentTypeName }\" per seleccionar",
151
- "popup.item.form.related.label": "Entitat",
152
- "popup.item.form.relatedSection.label": "Relació amb",
153
- "popup.item.form.relatedType.empty": "No hi ha tipus de contingut per seleccionar",
154
- "popup.item.form.relatedType.label": "Tipus de contingut",
155
- "popup.item.form.relatedType.placeholder": "Selecciona el tipus de contingut...",
156
- "popup.item.form.title.label": "Títol",
157
- "popup.item.form.title.placeholder": "Introduïu el títol de l'element o deixeu-lo en blanc per extreure'l de l'entitat relacionada",
158
- "popup.item.form.type.external.description": "Camí de sortida: {valor}",
159
- "popup.item.form.type.external.label": "Pàgina externa",
160
- "popup.item.form.type.internal.label": "Contingut intern",
161
- "popup.item.form.type.label": "Tipus d'element de navegació",
162
- "popup.item.form.type.wrapper.label": "Contenidor",
163
- "popup.item.form.uiRouterKey.label": "Clau de l'encaminador de la interfície d'usuari",
164
- "popup.item.form.uiRouterKey.placeholder": "Si està buit, generat automàticament per \"Títol\"",
165
- "popup.item.header.edit": "Edita l'element de navegació",
166
- "popup.item.header.new": "Nou element de navegació",
167
- "popup.navigation.form.name.label": "Nom",
168
- "popup.navigation.form.name.placeholder": "Nom del menú",
169
- "popup.navigation.form.validation.name.alreadyUsed": "El nom ja s'utilitza",
170
- "popup.navigation.form.validation.name.required": "El nom és obligatori",
171
- "popup.navigation.form.validation.name.tooShort": "El nom és massa curt",
172
- "popup.navigation.form.validation.visible.required": "Es requereix visibilitat",
173
- "popup.navigation.form.visible.label": "Visibilitat",
174
- "popup.navigation.manage.button.cancel": "Cancel·lar",
175
- "popup.navigation.manage.button.create": "Crear",
176
- "popup.navigation.manage.button.delete": "Suprimeix",
177
- "popup.navigation.manage.button.edit": "Edita",
178
- "popup.navigation.manage.button.goBack": "Torna",
179
- "popup.navigation.manage.button.save": "Desa",
180
- "popup.navigation.manage.delete.header": "S'eliminaran els menús següents:",
181
- "popup.navigation.manage.error.message": "Ha passat un error :(",
182
- "popup.navigation.manage.header.CREATE": "Nou menú",
183
- "popup.navigation.manage.header.DELETE": "S'està suprimint",
184
- "popup.navigation.manage.header.EDIT": "S'està editant \"{name}\"",
185
- "popup.navigation.manage.header.ERROR": "Error",
186
- "popup.navigation.manage.header.LIST": "Tots els menús",
187
- "popup.navigation.manage.navigation.hidden": "amagat",
188
- "popup.navigation.manage.navigation.visible": "visible",
189
- "popup.navigation.manage.table.hasSelected": "{count} entrades seleccionades",
190
- "popup.navigation.manage.table.id": "Id",
191
- "popup.navigation.manage.table.locale": "Versions locals",
192
- "popup.navigation.manage.table.name": "Nom",
193
- "popup.navigation.manage.table.visibility": "Visibilitat",
194
- "submit.cta.cancel": "Cancel·lar",
195
- "submit.cta.save": "Desa",
196
- "view.i18n.fill.cta": "o copia de",
197
- "view.i18n.fill.cta.button": "còpia",
198
- "view.i18n.fill.option": "{locale} local"
199
- }