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

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 (422) hide show
  1. package/README.md +21 -43
  2. package/admin/api/client.js +107 -0
  3. package/admin/api/index.js +1 -0
  4. package/admin/api/validators.js +248 -0
  5. package/admin/components/ConfirmationDialog/index.js +21 -0
  6. package/admin/components/Initializer.js +10 -0
  7. package/admin/components/RestartAlert/index.js +7 -0
  8. package/admin/components/TextArrayInput/index.js +18 -0
  9. package/admin/components/icons/index.js +1 -0
  10. package/admin/components/icons/navigation.js +9 -0
  11. package/admin/components/icons/pluginIcon.js +9 -0
  12. package/admin/index.js +48 -0
  13. package/admin/pages/App.js +10 -0
  14. package/admin/pages/HomePage/components/AdditionalFieldInput/index.js +58 -0
  15. package/admin/pages/HomePage/components/CollapseButton/index.js +15 -0
  16. package/admin/{src → pages/HomePage}/components/DragButton/index.js +9 -16
  17. package/admin/pages/HomePage/components/I18nCopyNavigationItems/index.js +9 -0
  18. package/admin/pages/HomePage/components/NavigationContentHeader/index.js +5 -0
  19. package/admin/pages/HomePage/components/NavigationHeader/hooks.js +14 -0
  20. package/admin/pages/HomePage/components/NavigationHeader/index.js +29 -0
  21. package/admin/pages/HomePage/components/NavigationHeader/styles.js +11 -0
  22. package/admin/pages/HomePage/components/NavigationItemForm/index.js +277 -0
  23. package/admin/pages/HomePage/components/NavigationItemForm/types.js +1 -0
  24. package/admin/pages/HomePage/components/NavigationItemForm/utils/form.js +105 -0
  25. package/admin/pages/HomePage/components/NavigationItemForm/utils/hooks.js +12 -0
  26. package/admin/pages/HomePage/components/NavigationItemForm/utils/properties.js +51 -0
  27. package/admin/pages/HomePage/components/NavigationItemList/Wrapper.js +21 -0
  28. package/admin/pages/HomePage/components/NavigationItemList/index.js +6 -0
  29. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardBadge/index.js +20 -0
  30. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/Wrapper.js +14 -0
  31. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/icons.js +6 -0
  32. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardHeader/index.js +19 -0
  33. package/admin/pages/HomePage/components/NavigationItemListItem/ItemCardRemovedOverlay/index.js +11 -0
  34. package/admin/pages/HomePage/components/NavigationItemListItem/Wrapper.js +38 -0
  35. package/admin/pages/HomePage/components/NavigationItemListItem/index.js +165 -0
  36. package/admin/pages/HomePage/components/NavigationItemPopup/NavigationItemPopupFooter.js +11 -0
  37. package/admin/pages/HomePage/components/NavigationItemPopup/NavigationItemPopupHeader.js +12 -0
  38. package/admin/pages/HomePage/components/NavigationItemPopup/index.js +34 -0
  39. package/admin/pages/HomePage/components/NavigationManager/AllNavigations/icons.js +5 -0
  40. package/admin/pages/HomePage/components/NavigationManager/AllNavigations/index.js +79 -0
  41. package/admin/pages/HomePage/components/NavigationManager/DeletionConfirm/index.js +25 -0
  42. package/admin/pages/HomePage/components/NavigationManager/ErrorDetails/index.js +29 -0
  43. package/admin/pages/HomePage/components/NavigationManager/Footer/index.js +6 -0
  44. package/admin/pages/HomePage/components/NavigationManager/Form/hooks.js +19 -0
  45. package/admin/pages/HomePage/components/NavigationManager/Form/index.js +26 -0
  46. package/admin/pages/HomePage/components/NavigationManager/NavigationUpdate/index.js +32 -0
  47. package/admin/pages/HomePage/components/NavigationManager/NewNavigation/index.js +35 -0
  48. package/admin/pages/HomePage/components/NavigationManager/PurgeCacheConfirm/index.js +25 -0
  49. package/admin/pages/HomePage/components/NavigationManager/index.js +236 -0
  50. package/admin/pages/HomePage/components/NavigationManager/types.js +1 -0
  51. package/admin/pages/HomePage/components/Search/index.js +58 -0
  52. package/admin/pages/HomePage/components/index.js +1 -0
  53. package/admin/pages/HomePage/hooks/index.js +165 -0
  54. package/admin/pages/HomePage/index.js +231 -0
  55. package/admin/pages/HomePage/utils/index.js +16 -0
  56. package/admin/pages/HomePage/utils/parsers.js +187 -0
  57. package/admin/pages/SettingsPage/common/const.js +1 -0
  58. package/admin/pages/SettingsPage/common/index.js +1 -0
  59. package/admin/pages/SettingsPage/components/CustomFieldForm/hooks/index.js +10 -0
  60. package/admin/pages/SettingsPage/components/CustomFieldForm/index.js +36 -0
  61. package/admin/pages/SettingsPage/components/CustomFieldModal/index.js +16 -0
  62. package/admin/pages/SettingsPage/components/CustomFieldTable/index.js +45 -0
  63. package/admin/pages/SettingsPage/hooks/index.js +111 -0
  64. package/admin/pages/SettingsPage/index.js +189 -0
  65. package/admin/pages/SettingsPage/types.js +1 -0
  66. package/admin/pages/SettingsPage/utils/index.js +25 -0
  67. package/admin/pluginId.js +1 -0
  68. package/admin/schemas/config.js +53 -0
  69. package/admin/schemas/content-type.js +14 -0
  70. package/admin/schemas/index.js +2 -0
  71. package/admin/{src/translations → translations}/en.json +7 -9
  72. package/admin/translations/index.js +15 -0
  73. package/admin/types.js +1 -0
  74. package/admin/utils/constants.js +1 -0
  75. package/admin/utils/getTranslation.js +4 -0
  76. package/admin/utils/permissions.js +16 -0
  77. package/admin/utils/prefixPluginTranslations.js +3 -0
  78. package/package.json +13 -11
  79. package/server/app-errors.js +20 -0
  80. package/server/bootstrap.js +13 -0
  81. package/server/cache/index.js +34 -15
  82. package/server/config/index.js +7 -5
  83. package/server/config/{setupStrategy.js → setup.js} +30 -26
  84. package/server/content-types/audience/index.js +0 -1
  85. package/server/content-types/audience/schema.js +0 -1
  86. package/server/content-types/index.js +4 -7
  87. package/server/content-types/navigation/index.js +0 -1
  88. package/server/content-types/navigation/lifecycles.js +1 -2
  89. package/server/content-types/navigation/schema.js +29 -32
  90. package/server/content-types/navigation-item/index.js +0 -1
  91. package/server/content-types/navigation-item/lifecycles.js +1 -2
  92. package/server/content-types/navigation-item/schema.js +51 -58
  93. package/server/controllers/admin.js +119 -158
  94. package/server/controllers/client.js +71 -60
  95. package/server/controllers/index.js +1 -3
  96. package/server/controllers/utils.js +22 -0
  97. package/{admin/src/hooks/useNavigationManager.js → server/controllers/validators.js} +23 -16
  98. package/server/destroy.js +3 -2
  99. package/{types/i18n.js → server/dtos/config.js} +0 -1
  100. package/server/{navigation → dtos}/index.js +3 -2
  101. package/server/dtos/navigation-item.js +2 -0
  102. package/{admin/src/pages/SettingsPage/types.js → server/dtos/navigation.js} +0 -1
  103. package/server/graphql/config.js +14 -16
  104. package/server/graphql/index.js +1 -2
  105. package/server/graphql/queries/index.js +8 -4
  106. package/server/graphql/queries/render-navigation-child.js +19 -8
  107. package/server/graphql/queries/render-navigation.js +30 -14
  108. package/server/graphql/resolvers-config.js +4 -2
  109. package/server/graphql/{setupStrategy.js → setup.js} +4 -5
  110. package/server/graphql/types/content-types-name-fields.js +10 -9
  111. package/server/graphql/types/content-types.js +15 -15
  112. package/server/graphql/types/create-navigation-item.js +16 -16
  113. package/server/graphql/types/create-navigation-related.js +7 -7
  114. package/server/graphql/types/create-navigation.js +6 -6
  115. package/server/graphql/types/index.js +35 -15
  116. package/server/graphql/types/navigation-config.js +8 -8
  117. package/server/graphql/types/navigation-details.js +2 -2
  118. package/server/graphql/types/navigation-item-additional-field-media.js +10 -10
  119. package/server/graphql/types/navigation-item-related-data.js +6 -6
  120. package/server/graphql/types/navigation-item-related.js +3 -3
  121. package/server/graphql/types/navigation-item.js +30 -27
  122. package/server/graphql/types/navigation-render-type.js +4 -5
  123. package/server/graphql/types/navigation.js +8 -8
  124. package/server/i18n/index.js +29 -20
  125. package/server/index.js +15 -8
  126. package/server/middlewares/index.js +3 -0
  127. package/server/permissions/index.js +10 -0
  128. package/{permissions.js → server/permissions/permissions.js} +0 -1
  129. package/server/permissions/setup.js +32 -0
  130. package/server/permissions.js +39 -0
  131. package/server/policies/index.js +3 -0
  132. package/server/register.js +6 -0
  133. package/server/repositories/audience.js +12 -0
  134. package/server/repositories/generic.js +20 -0
  135. package/server/repositories/index.js +11 -0
  136. package/server/repositories/navigation-item.js +51 -0
  137. package/server/repositories/navigation.js +65 -0
  138. package/server/routes/admin.js +86 -79
  139. package/server/routes/client.js +0 -1
  140. package/server/routes/index.js +0 -1
  141. package/server/schemas/config.js +68 -0
  142. package/server/schemas/content-type.js +140 -0
  143. package/{admin/src/pages/SettingsPage/common → server/schemas}/index.js +3 -2
  144. package/server/schemas/navigation.js +107 -0
  145. package/server/services/admin/admin.js +483 -0
  146. package/server/{content-types/navigations-items-related → services/admin}/index.js +2 -5
  147. package/{admin/src/pages/View/components/NavigationItemForm → server/services/admin}/types.js +0 -1
  148. package/server/services/admin/utils.js +84 -0
  149. package/server/services/client/client.js +397 -0
  150. package/server/services/client/index.js +7 -0
  151. package/{admin/src/pages/View/components/NavigationManager → server/services/client}/types.js +0 -1
  152. package/server/services/client/utils.js +88 -0
  153. package/server/services/common/common.js +307 -0
  154. package/server/services/common/index.js +7 -0
  155. package/{admin/src/components/AdditionalFieldInput → server/services/common}/types.js +0 -1
  156. package/server/services/common/utils.js +24 -0
  157. package/server/services/index.js +4 -6
  158. package/server/types.js +2 -0
  159. package/server/utils/constants.js +35 -0
  160. package/server/utils/functions.js +71 -299
  161. package/server/utils/index.js +1 -2
  162. package/strapi-admin.js +5 -8
  163. package/strapi-server.js +3 -7
  164. package/tsconfig.tsbuildinfo +1 -1
  165. package/admin/src/components/AdditionalFieldInput/index.d.ts +0 -5
  166. package/admin/src/components/AdditionalFieldInput/index.js +0 -99
  167. package/admin/src/components/AdditionalFieldInput/types.d.ts +0 -15
  168. package/admin/src/components/Alert/styles.d.ts +0 -2
  169. package/admin/src/components/Alert/styles.js +0 -14
  170. package/admin/src/components/CollapseButton/index.d.ts +0 -7
  171. package/admin/src/components/CollapseButton/index.js +0 -30
  172. package/admin/src/components/ConfirmationDialog/index.d.ts +0 -28
  173. package/admin/src/components/ConfirmationDialog/index.js +0 -34
  174. package/admin/src/components/DragButton/index.d.ts +0 -6
  175. package/admin/src/components/EmptyView/index.d.ts +0 -3
  176. package/admin/src/components/EmptyView/index.js +0 -30
  177. package/admin/src/components/Item/ItemCardBadge/index.d.ts +0 -3
  178. package/admin/src/components/Item/ItemCardBadge/index.js +0 -26
  179. package/admin/src/components/Item/ItemCardHeader/Wrapper.d.ts +0 -3
  180. package/admin/src/components/Item/ItemCardHeader/Wrapper.js +0 -21
  181. package/admin/src/components/Item/ItemCardHeader/icons.d.ts +0 -5
  182. package/admin/src/components/Item/ItemCardHeader/icons.js +0 -13
  183. package/admin/src/components/Item/ItemCardHeader/index.d.ts +0 -17
  184. package/admin/src/components/Item/ItemCardHeader/index.js +0 -38
  185. package/admin/src/components/Item/ItemCardRemovedOverlay/index.d.ts +0 -2
  186. package/admin/src/components/Item/ItemCardRemovedOverlay/index.js +0 -18
  187. package/admin/src/components/Item/Wrapper.d.ts +0 -3
  188. package/admin/src/components/Item/Wrapper.js +0 -43
  189. package/admin/src/components/Item/index.d.ts +0 -31
  190. package/admin/src/components/Item/index.js +0 -188
  191. package/admin/src/components/NavigationItemList/Wrapper.d.ts +0 -3
  192. package/admin/src/components/NavigationItemList/Wrapper.js +0 -26
  193. package/admin/src/components/NavigationItemList/index.d.ts +0 -36
  194. package/admin/src/components/NavigationItemList/index.js +0 -32
  195. package/admin/src/components/RestartAlert/index.d.ts +0 -3
  196. package/admin/src/components/RestartAlert/index.js +0 -13
  197. package/admin/src/components/Search/index.d.ts +0 -12
  198. package/admin/src/components/Search/index.js +0 -97
  199. package/admin/src/components/TextArrayInput/index.d.ts +0 -15
  200. package/admin/src/components/TextArrayInput/index.js +0 -45
  201. package/admin/src/components/icons/navigation.d.ts +0 -6
  202. package/admin/src/components/icons/navigation.js +0 -12
  203. package/admin/src/contexts/DataManagerContext.d.ts +0 -3
  204. package/admin/src/contexts/DataManagerContext.js +0 -6
  205. package/admin/src/hooks/useAllContentTypes.d.ts +0 -3
  206. package/admin/src/hooks/useAllContentTypes.js +0 -8
  207. package/admin/src/hooks/useDataManager.d.ts +0 -3
  208. package/admin/src/hooks/useDataManager.js +0 -10
  209. package/admin/src/hooks/useI18nCopyNavigationItemsModal.d.ts +0 -9
  210. package/admin/src/hooks/useI18nCopyNavigationItemsModal.js +0 -51
  211. package/admin/src/hooks/useNavigationConfig.d.ts +0 -10
  212. package/admin/src/hooks/useNavigationConfig.js +0 -54
  213. package/admin/src/hooks/useNavigationManager.d.ts +0 -6
  214. package/admin/src/index.d.ts +0 -14
  215. package/admin/src/index.js +0 -87
  216. package/admin/src/pages/App/index.d.ts +0 -3
  217. package/admin/src/pages/App/index.js +0 -43
  218. package/admin/src/pages/DataManagerProvider/actions.d.ts +0 -21
  219. package/admin/src/pages/DataManagerProvider/actions.js +0 -24
  220. package/admin/src/pages/DataManagerProvider/index.d.ts +0 -12
  221. package/admin/src/pages/DataManagerProvider/index.js +0 -382
  222. package/admin/src/pages/DataManagerProvider/init.d.ts +0 -3
  223. package/admin/src/pages/DataManagerProvider/init.js +0 -7
  224. package/admin/src/pages/DataManagerProvider/reducer.d.ts +0 -20
  225. package/admin/src/pages/DataManagerProvider/reducer.js +0 -132
  226. package/admin/src/pages/NoAccessPage/index.d.ts +0 -3
  227. package/admin/src/pages/NoAccessPage/index.js +0 -31
  228. package/admin/src/pages/SettingsPage/common/const.d.ts +0 -2
  229. package/admin/src/pages/SettingsPage/common/const.js +0 -5
  230. package/admin/src/pages/SettingsPage/common/index.d.ts +0 -2
  231. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.d.ts +0 -12
  232. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js +0 -129
  233. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.d.ts +0 -12
  234. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.js +0 -20
  235. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.d.ts +0 -11
  236. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js +0 -105
  237. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts +0 -23
  238. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js +0 -86
  239. package/admin/src/pages/SettingsPage/index.d.ts +0 -3
  240. package/admin/src/pages/SettingsPage/index.js +0 -321
  241. package/admin/src/pages/SettingsPage/types.d.ts +0 -35
  242. package/admin/src/pages/SettingsPage/utils/form.d.ts +0 -20
  243. package/admin/src/pages/SettingsPage/utils/form.js +0 -37
  244. package/admin/src/pages/SettingsPage/utils/functions.d.ts +0 -3
  245. package/admin/src/pages/SettingsPage/utils/functions.js +0 -26
  246. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.d.ts +0 -14
  247. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.js +0 -15
  248. package/admin/src/pages/View/components/NavigationContentHeader/index.d.ts +0 -6
  249. package/admin/src/pages/View/components/NavigationContentHeader/index.js +0 -14
  250. package/admin/src/pages/View/components/NavigationHeader/index.d.ts +0 -14
  251. package/admin/src/pages/View/components/NavigationHeader/index.js +0 -92
  252. package/admin/src/pages/View/components/NavigationHeader/styles.d.ts +0 -2
  253. package/admin/src/pages/View/components/NavigationHeader/styles.js +0 -18
  254. package/admin/src/pages/View/components/NavigationItemForm/index.d.ts +0 -5
  255. package/admin/src/pages/View/components/NavigationItemForm/index.js +0 -470
  256. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts +0 -99
  257. package/admin/src/pages/View/components/NavigationItemForm/utils/form.d.ts +0 -28
  258. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js +0 -123
  259. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.d.ts +0 -25
  260. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.js +0 -31
  261. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.d.ts +0 -5
  262. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.js +0 -20
  263. package/admin/src/pages/View/components/NavigationItemPopup/index.d.ts +0 -33
  264. package/admin/src/pages/View/components/NavigationItemPopup/index.js +0 -90
  265. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.d.ts +0 -4
  266. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.js +0 -12
  267. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.d.ts +0 -8
  268. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.js +0 -151
  269. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.d.ts +0 -8
  270. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.js +0 -34
  271. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.d.ts +0 -8
  272. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.js +0 -53
  273. package/admin/src/pages/View/components/NavigationManager/Footer/index.d.ts +0 -24
  274. package/admin/src/pages/View/components/NavigationManager/Footer/index.js +0 -13
  275. package/admin/src/pages/View/components/NavigationManager/Form/index.d.ts +0 -19
  276. package/admin/src/pages/View/components/NavigationManager/Form/index.js +0 -103
  277. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.d.ts +0 -8
  278. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.js +0 -59
  279. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.d.ts +0 -9
  280. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.js +0 -62
  281. package/admin/src/pages/View/components/NavigationManager/PurgeCacheConfirm/index.d.ts +0 -8
  282. package/admin/src/pages/View/components/NavigationManager/PurgeCacheConfirm/index.js +0 -34
  283. package/admin/src/pages/View/components/NavigationManager/index.d.ts +0 -10
  284. package/admin/src/pages/View/components/NavigationManager/index.js +0 -203
  285. package/admin/src/pages/View/components/NavigationManager/types.d.ts +0 -44
  286. package/admin/src/pages/View/index.d.ts +0 -4
  287. package/admin/src/pages/View/index.js +0 -269
  288. package/admin/src/pages/View/utils/form.d.ts +0 -2
  289. package/admin/src/pages/View/utils/form.js +0 -16
  290. package/admin/src/pages/View/utils/index.d.ts +0 -2
  291. package/admin/src/pages/View/utils/index.js +0 -11
  292. package/admin/src/pages/View/utils/parsers.d.ts +0 -51
  293. package/admin/src/pages/View/utils/parsers.js +0 -272
  294. package/admin/src/pages/View/utils/types.d.ts +0 -3
  295. package/admin/src/pages/View/utils/types.js +0 -3
  296. package/admin/src/permissions.d.ts +0 -16
  297. package/admin/src/permissions.js +0 -13
  298. package/admin/src/pluginId.d.ts +0 -3
  299. package/admin/src/pluginId.js +0 -5
  300. package/admin/src/translations/index.d.ts +0 -15
  301. package/admin/src/translations/index.js +0 -21
  302. package/admin/src/utils/api.d.ts +0 -9
  303. package/admin/src/utils/api.js +0 -20
  304. package/admin/src/utils/enums.d.ts +0 -25
  305. package/admin/src/utils/enums.js +0 -30
  306. package/admin/src/utils/functions.d.ts +0 -16
  307. package/admin/src/utils/functions.js +0 -46
  308. package/admin/src/utils/index.d.ts +0 -4
  309. package/admin/src/utils/index.js +0 -20
  310. package/permissions.d.ts +0 -10
  311. package/server/bootstrap/index.d.ts +0 -4
  312. package/server/bootstrap/index.js +0 -50
  313. package/server/cache/index.d.ts +0 -2
  314. package/server/cache/serviceEnhancers.d.ts +0 -3
  315. package/server/cache/serviceEnhancers.js +0 -16
  316. package/server/cache/setupStrategy.d.ts +0 -3
  317. package/server/cache/setupStrategy.js +0 -38
  318. package/server/cache/types.d.ts +0 -11
  319. package/server/cache/types.js +0 -3
  320. package/server/cache/utils.d.ts +0 -11
  321. package/server/cache/utils.js +0 -19
  322. package/server/config/index.d.ts +0 -5
  323. package/server/config/setupStrategy.d.ts +0 -3
  324. package/server/content-types/audience/index.d.ts +0 -27
  325. package/server/content-types/audience/schema.d.ts +0 -25
  326. package/server/content-types/index.d.ts +0 -244
  327. package/server/content-types/navigation/index.d.ts +0 -59
  328. package/server/content-types/navigation/lifecycles.d.ts +0 -3
  329. package/server/content-types/navigation/schema.d.ts +0 -56
  330. package/server/content-types/navigation-item/index.d.ts +0 -111
  331. package/server/content-types/navigation-item/lifecycles.d.ts +0 -3
  332. package/server/content-types/navigation-item/schema.d.ts +0 -108
  333. package/server/content-types/navigations-items-related/index.d.ts +0 -51
  334. package/server/content-types/navigations-items-related/schema.d.ts +0 -49
  335. package/server/content-types/navigations-items-related/schema.js +0 -50
  336. package/server/controllers/admin.d.ts +0 -4
  337. package/server/controllers/client.d.ts +0 -4
  338. package/server/controllers/index.d.ts +0 -4
  339. package/server/destroy.d.ts +0 -3
  340. package/server/graphql/config.d.ts +0 -4
  341. package/server/graphql/index.d.ts +0 -2
  342. package/server/graphql/queries/index.d.ts +0 -3
  343. package/server/graphql/queries/render-navigation-child.d.ts +0 -15
  344. package/server/graphql/queries/render-navigation.d.ts +0 -21
  345. package/server/graphql/resolvers-config.d.ts +0 -10
  346. package/server/graphql/setupStrategy.d.ts +0 -3
  347. package/server/graphql/types/content-types-name-fields.d.ts +0 -6
  348. package/server/graphql/types/content-types.d.ts +0 -5
  349. package/server/graphql/types/create-navigation-item.d.ts +0 -5
  350. package/server/graphql/types/create-navigation-related.d.ts +0 -5
  351. package/server/graphql/types/create-navigation.d.ts +0 -5
  352. package/server/graphql/types/index.d.ts +0 -3
  353. package/server/graphql/types/navigation-config.d.ts +0 -5
  354. package/server/graphql/types/navigation-details.d.ts +0 -5
  355. package/server/graphql/types/navigation-item-additional-field-media.d.ts +0 -5
  356. package/server/graphql/types/navigation-item-related-data.d.ts +0 -5
  357. package/server/graphql/types/navigation-item-related.d.ts +0 -7
  358. package/server/graphql/types/navigation-item.d.ts +0 -6
  359. package/server/graphql/types/navigation-render-type.d.ts +0 -5
  360. package/server/graphql/types/navigation.d.ts +0 -5
  361. package/server/i18n/constant.d.ts +0 -2
  362. package/server/i18n/constant.js +0 -5
  363. package/server/i18n/errors.d.ts +0 -7
  364. package/server/i18n/errors.js +0 -14
  365. package/server/i18n/graphQLEnhancers.d.ts +0 -10
  366. package/server/i18n/graphQLEnhancers.js +0 -10
  367. package/server/i18n/index.d.ts +0 -8
  368. package/server/i18n/navigationSetupStrategy.d.ts +0 -3
  369. package/server/i18n/navigationSetupStrategy.js +0 -147
  370. package/server/i18n/serviceEnhancers.d.ts +0 -13
  371. package/server/i18n/serviceEnhancers.js +0 -156
  372. package/server/i18n/types.d.ts +0 -60
  373. package/server/i18n/types.js +0 -3
  374. package/server/i18n/utils.d.ts +0 -13
  375. package/server/i18n/utils.js +0 -33
  376. package/server/index.d.ts +0 -262
  377. package/server/navigation/index.d.ts +0 -2
  378. package/server/navigation/setupStrategy.d.ts +0 -3
  379. package/server/navigation/setupStrategy.js +0 -39
  380. package/server/register/index.d.ts +0 -3
  381. package/server/register/index.js +0 -4
  382. package/server/routes/admin.d.ts +0 -4
  383. package/server/routes/client.d.ts +0 -4
  384. package/server/routes/index.d.ts +0 -6
  385. package/server/services/admin.d.ts +0 -5
  386. package/server/services/admin.js +0 -347
  387. package/server/services/client.d.ts +0 -5
  388. package/server/services/client.js +0 -335
  389. package/server/services/common.d.ts +0 -5
  390. package/server/services/common.js +0 -385
  391. package/server/services/index.d.ts +0 -7
  392. package/server/utils/constant.d.ts +0 -27
  393. package/server/utils/constant.js +0 -43
  394. package/server/utils/functions.d.ts +0 -157
  395. package/server/utils/index.d.ts +0 -3
  396. package/strapi-admin.d.ts +0 -3
  397. package/strapi-server.d.ts +0 -262
  398. package/types/bootstrap.d.ts +0 -16
  399. package/types/bootstrap.js +0 -3
  400. package/types/config.d.ts +0 -27
  401. package/types/config.js +0 -3
  402. package/types/contentTypes.d.ts +0 -112
  403. package/types/contentTypes.js +0 -3
  404. package/types/controllers.d.ts +0 -65
  405. package/types/controllers.js +0 -5
  406. package/types/graphQL.d.ts +0 -3
  407. package/types/graphQL.js +0 -3
  408. package/types/i18n.d.ts +0 -9
  409. package/types/index.d.ts +0 -10
  410. package/types/index.js +0 -26
  411. package/types/lifecycle.d.ts +0 -22
  412. package/types/lifecycle.js +0 -3
  413. package/types/services.d.ts +0 -106
  414. package/types/services.js +0 -3
  415. package/types/utils.d.ts +0 -72
  416. package/types/utils.js +0 -41
  417. package/utils/InvalidParamNavigationError.d.ts +0 -4
  418. package/utils/InvalidParamNavigationError.js +0 -8
  419. package/utils/NavigationError.d.ts +0 -5
  420. package/utils/NavigationError.js +0 -11
  421. /package/admin/{src/translations → translations}/ca.json +0 -0
  422. /package/admin/{src/translations → translations}/fr.json +0 -0
@@ -1,321 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importStar(require("react"));
30
- const lodash_1 = require("lodash");
31
- const formik_1 = require("formik");
32
- const helper_plugin_1 = require("@strapi/helper-plugin");
33
- const Main_1 = require("@strapi/design-system/Main");
34
- const Layout_1 = require("@strapi/design-system/Layout");
35
- const Accordion_1 = require("@strapi/design-system/Accordion");
36
- const Button_1 = require("@strapi/design-system/Button");
37
- const Box_1 = require("@strapi/design-system/Box");
38
- const Stack_1 = require("@strapi/design-system/Stack");
39
- const Typography_1 = require("@strapi/design-system/Typography");
40
- const Grid_1 = require("@strapi/design-system/Grid");
41
- const ToggleInput_1 = require("@strapi/design-system/ToggleInput");
42
- const NumberInput_1 = require("@strapi/design-system/NumberInput");
43
- const Select_1 = require("@strapi/design-system/Select");
44
- const Tooltip_1 = require("@strapi/design-system/Tooltip");
45
- const icons_1 = require("@strapi/icons");
46
- const permissions_1 = __importDefault(require("../../permissions"));
47
- const useNavigationConfig_1 = __importDefault(require("../../hooks/useNavigationConfig"));
48
- const useAllContentTypes_1 = __importDefault(require("../../hooks/useAllContentTypes"));
49
- const utils_1 = require("../../utils");
50
- const ConfirmationDialog_1 = __importDefault(require("../../components/ConfirmationDialog"));
51
- const RestartAlert_1 = __importDefault(require("../../components/RestartAlert"));
52
- const utils_2 = require("../../utils");
53
- const functions_1 = require("./utils/functions");
54
- const styles_1 = require("../../components/Alert/styles");
55
- const DisableI18nModal_1 = require("./components/DisableI18nModal");
56
- const CustomFieldModal_1 = __importDefault(require("./components/CustomFieldModal"));
57
- const CustomFieldTable_1 = __importDefault(require("./components/CustomFieldTable"));
58
- const permissions_2 = __importDefault(require("../../permissions"));
59
- const NoAccessPage_1 = __importDefault(require("../NoAccessPage"));
60
- const RESTART_NOT_REQUIRED = { required: false };
61
- const RESTART_REQUIRED = { required: true, reasons: [] };
62
- const RELATION_ATTRIBUTE_TYPES = ['relation', 'media', 'component'];
63
- const STRING_ATTRIBUTE_TYPES = ['string', 'uid'];
64
- const BOX_DEFAULT_PROPS = {
65
- background: "neutral0",
66
- hasRadius: true,
67
- shadow: "filterShadow",
68
- padding: 6,
69
- };
70
- const noopFallback = () => { };
71
- const SettingsPage = () => {
72
- const { lockApp = noopFallback, unlockApp = noopFallback } = (0, helper_plugin_1.useOverlayBlocker)();
73
- const { lockAppWithAutoreload = noopFallback, unlockAppWithAutoreload = noopFallback } = (0, helper_plugin_1.useAutoReloadOverlayBlocker)();
74
- const [restartStatus, setRestartStatus] = (0, react_1.useState)(RESTART_NOT_REQUIRED);
75
- const [pruneObsoleteI18nNavigations, setPruneObsoleteI18nNavigations] = (0, react_1.useState)(false);
76
- const [isCustomFieldModalOpen, setIsCustomFieldModalOpen] = (0, react_1.useState)(false);
77
- const [customFieldSelected, setCustomFieldSelected] = (0, react_1.useState)(null);
78
- const [customFields, setCustomFields] = (0, react_1.useState)([]);
79
- const [isRestorePopupOpen, setIsRestorePopupOpen] = (0, react_1.useState)(false);
80
- const [contentTypeExpanded, setContentTypeExpanded] = (0, react_1.useState)(undefined);
81
- const { data: navigationConfigData, isLoading: isConfigLoading, error: configErr, submitMutation, restoreMutation, restartMutation } = (0, useNavigationConfig_1.default)();
82
- const { data: allContentTypesData, isLoading: isContentTypesLoading, error: contentTypesErr } = (0, useAllContentTypes_1.default)();
83
- const viewPermissions = (0, react_1.useMemo)(() => ({
84
- settings: permissions_2.default.settings
85
- }), []);
86
- const { isLoading: isLoadingForPermissions, allowedActions: { canSettings: canManageSettings, }, } = (0, helper_plugin_1.useRBAC)(viewPermissions);
87
- const isLoading = isConfigLoading || isContentTypesLoading;
88
- const isError = configErr || contentTypesErr;
89
- const configContentTypes = navigationConfigData?.contentTypes || [];
90
- const formikInitialValues = (0, react_1.useMemo)(() => ({
91
- allowedLevels: (0, lodash_1.get)(navigationConfigData, "allowedLevels", 2),
92
- audienceFieldChecked: (0, lodash_1.get)(navigationConfigData, "additionalFields", []).includes(utils_1.navigationItemAdditionalFields.AUDIENCE),
93
- cascadeMenuAttachedChecked: (0, lodash_1.get)(navigationConfigData, "cascadeMenuAttached", true),
94
- i18nEnabled: (0, lodash_1.get)(navigationConfigData, "i18nEnabled", false),
95
- nameFields: (0, lodash_1.get)(navigationConfigData, "contentTypesNameFields", {}),
96
- pathDefaultFields: (0, lodash_1.get)(navigationConfigData, "pathDefaultFields", {}),
97
- populate: (0, lodash_1.get)(navigationConfigData, "contentTypesPopulate", {}),
98
- selectedContentTypes: configContentTypes.map(item => item.uid),
99
- isCacheEnabled: (0, lodash_1.get)(navigationConfigData, "isCacheEnabled", false),
100
- preferCustomContentTypes: (0, lodash_1.get)(navigationConfigData, "preferCustomContentTypes", true) ?? true,
101
- }), [configContentTypes, navigationConfigData, utils_1.navigationItemAdditionalFields]);
102
- const { disableI18nModal, setDisableI18nModalOpened, setI18nModalOnCancel, } = (0, DisableI18nModal_1.useDisableI18nModal)(({ pruneNavigations }) => {
103
- setPruneObsoleteI18nNavigations(pruneNavigations);
104
- });
105
- (0, react_1.useEffect)(() => {
106
- const additionalFields = navigationConfigData?.additionalFields
107
- ?.filter((field) => field !== utils_1.navigationItemAdditionalFields.AUDIENCE);
108
- setCustomFields(additionalFields || []);
109
- }, [navigationConfigData]);
110
- const preparePayload = (0, react_1.useCallback)(({ form: { allowedLevels, audienceFieldChecked, cascadeMenuAttachedChecked, i18nEnabled, nameFields, pathDefaultFields, populate, selectedContentTypes, isCacheEnabled, preferCustomContentTypes, }, pruneObsoleteI18nNavigations }) => ({
111
- additionalFields: audienceFieldChecked ? ['audience', ...customFields] : [...customFields],
112
- allowedLevels,
113
- cascadeMenuAttached: cascadeMenuAttachedChecked,
114
- contentTypes: selectedContentTypes,
115
- contentTypesNameFields: nameFields,
116
- contentTypesPopulate: populate,
117
- i18nEnabled,
118
- pathDefaultFields,
119
- pruneObsoleteI18nNavigations,
120
- gql: {
121
- navigationItemRelated: selectedContentTypes.map((uid) => (0, functions_1.resolveGlobalLikeId)(uid)),
122
- },
123
- isCacheEnabled,
124
- preferCustomContentTypes,
125
- }), [customFields]);
126
- const onSave = async (form) => {
127
- lockApp();
128
- const payload = preparePayload({ form, pruneObsoleteI18nNavigations });
129
- await submitMutation({ body: payload });
130
- const isContentTypesChanged = !(0, lodash_1.isEqual)(payload.contentTypes, navigationConfigData.contentTypes);
131
- const isI18nChanged = !(0, lodash_1.isEqual)(payload.i18nEnabled, navigationConfigData.i18nEnabled);
132
- const isCacheChanged = !(0, lodash_1.isEqual)(payload.isCacheEnabled, navigationConfigData.isCacheEnabled);
133
- const restartReasons = [];
134
- if (isI18nChanged) {
135
- restartReasons.push('I18N');
136
- }
137
- if (isCacheChanged) {
138
- restartReasons.push('CACHE');
139
- }
140
- if (isContentTypesChanged && navigationConfigData.isGQLPluginEnabled) {
141
- restartReasons.push('GRAPH_QL');
142
- }
143
- if (pruneObsoleteI18nNavigations) {
144
- restartReasons.push('I18N_NAVIGATIONS_PRUNE');
145
- }
146
- if (restartReasons.length) {
147
- setRestartStatus({
148
- ...RESTART_REQUIRED,
149
- reasons: restartReasons,
150
- });
151
- }
152
- setDisableI18nModalOpened(false);
153
- setPruneObsoleteI18nNavigations(false);
154
- unlockApp();
155
- };
156
- const onPopupClose = async (isConfirmed) => {
157
- setIsRestorePopupOpen(false);
158
- if (isConfirmed) {
159
- lockApp();
160
- await restoreMutation();
161
- unlockApp();
162
- setRestartStatus(RESTART_REQUIRED);
163
- }
164
- };
165
- const handleRestart = async () => {
166
- lockAppWithAutoreload();
167
- await restartMutation();
168
- unlockAppWithAutoreload();
169
- setRestartStatus(RESTART_NOT_REQUIRED);
170
- };
171
- const handleRestartDiscard = () => setRestartStatus(RESTART_NOT_REQUIRED);
172
- const handleSetContentTypeExpanded = key => setContentTypeExpanded(key === contentTypeExpanded ? undefined : key);
173
- if (!(isLoadingForPermissions || canManageSettings)) {
174
- return (react_1.default.createElement(NoAccessPage_1.default, null));
175
- }
176
- if (isLoading || isError) {
177
- return (react_1.default.createElement(react_1.default.Fragment, null,
178
- react_1.default.createElement(helper_plugin_1.SettingsPageTitle, { name: (0, utils_2.getMessage)('Settings.email.plugin.title', 'Configuration') }),
179
- react_1.default.createElement(helper_plugin_1.LoadingIndicatorPage, null, "Fetching plugin config...")));
180
- }
181
- const isI18NPluginEnabled = navigationConfigData?.isI18NPluginEnabled;
182
- const isCachePluginEnabled = navigationConfigData?.isCachePluginEnabled;
183
- const defaultLocale = navigationConfigData?.defaultLocale;
184
- const handleSubmitCustomField = (field) => {
185
- const filteredFields = customFields.filter(f => f.name !== field.name);
186
- setCustomFields([...filteredFields, field]);
187
- setCustomFieldSelected(null);
188
- setIsCustomFieldModalOpen(false);
189
- };
190
- const handleOpenCustomFieldModal = (field) => {
191
- setCustomFieldSelected(field);
192
- setIsCustomFieldModalOpen(true);
193
- };
194
- const handleRemoveCustomField = (field) => {
195
- const filteredFields = customFields.filter(f => f.name !== field.name);
196
- setCustomFields(filteredFields);
197
- setCustomFieldSelected(null);
198
- setIsCustomFieldModalOpen(false);
199
- };
200
- const handleToggleCustomField = (field) => {
201
- const updatedField = { ...field, enabled: !(0, lodash_1.get)(field, 'enabled', false) };
202
- const filteredFields = customFields.filter(f => f.name !== field.name);
203
- setCustomFields([...filteredFields, updatedField]);
204
- };
205
- return (react_1.default.createElement(react_1.default.Fragment, null,
206
- react_1.default.createElement(helper_plugin_1.SettingsPageTitle, { name: (0, utils_2.getMessage)('Settings.email.plugin.title', 'Configuration') }),
207
- react_1.default.createElement(Main_1.Main, { labelledBy: "title" },
208
- react_1.default.createElement(formik_1.Formik, { initialValues: formikInitialValues, onSubmit: onSave }, ({ handleSubmit, setFieldValue, values }) => {
209
- const allContentTypes = !isLoading ? (0, lodash_1.sortBy)(Object.values(allContentTypesData).filter(({ uid }) => (0, functions_1.isContentTypeEligible)(uid, {
210
- allowedContentTypes: navigationConfigData?.allowedContentTypes,
211
- restrictedContentTypes: navigationConfigData?.restrictedContentTypes,
212
- selectedContentTypes: values?.selectedContentTypes,
213
- preferCustomContentTypes: values?.preferCustomContentTypes,
214
- })).map(ct => {
215
- const type = configContentTypes.find(_ => _.uid === ct.uid);
216
- if (type) {
217
- const { available, isSingle } = type;
218
- return {
219
- ...ct,
220
- available,
221
- isSingle,
222
- };
223
- }
224
- return ct;
225
- }), ct => ct.info.displayName) : [];
226
- return (react_1.default.createElement(formik_1.Form, { noValidate: true, onSubmit: handleSubmit },
227
- react_1.default.createElement(Layout_1.HeaderLayout, { title: (0, utils_2.getMessage)('pages.settings.header.title'), subtitle: (0, utils_2.getMessage)('pages.settings.header.description'), primaryAction: react_1.default.createElement(helper_plugin_1.CheckPermissions, { permissions: permissions_1.default.access },
228
- react_1.default.createElement(Button_1.Button, { type: "submit", startIcon: react_1.default.createElement(icons_1.Check, null), disabled: restartStatus.required }, (0, utils_2.getMessage)('pages.settings.actions.submit'))) }),
229
- react_1.default.createElement(Layout_1.ContentLayout, null,
230
- react_1.default.createElement(Stack_1.Stack, { spacing: 7 },
231
- restartStatus.required && (react_1.default.createElement(RestartAlert_1.default, { closeLabel: (0, utils_2.getMessage)('pages.settings.actions.restart.alert.cancel'), title: (0, utils_2.getMessage)('pages.settings.actions.restart.alert.title'), action: react_1.default.createElement(Box_1.Box, null,
232
- react_1.default.createElement(Button_1.Button, { onClick: handleRestart, startIcon: react_1.default.createElement(icons_1.Play, null) }, (0, utils_2.getMessage)('pages.settings.actions.restart'))), onClose: handleRestartDiscard },
233
- react_1.default.createElement(react_1.default.Fragment, null,
234
- react_1.default.createElement(Box_1.Box, { paddingBottom: 1 }, (0, utils_2.getMessage)('pages.settings.actions.restart.alert.description')),
235
- restartStatus.reasons?.map((reason, i) => react_1.default.createElement(Box_1.Box, { paddingBottom: 1, key: i, children: (0, utils_2.getMessage)(`pages.settings.actions.restart.alert.reason.${reason}`) }))))),
236
- react_1.default.createElement(Box_1.Box, { ...BOX_DEFAULT_PROPS },
237
- react_1.default.createElement(Stack_1.Stack, { size: 4 },
238
- react_1.default.createElement(Typography_1.Typography, { variant: "delta", as: "h2" }, (0, utils_2.getMessage)('pages.settings.general.title')),
239
- react_1.default.createElement(Grid_1.Grid, { gap: 4 },
240
- react_1.default.createElement(Grid_1.GridItem, { col: 12, s: 12, xs: 12 },
241
- react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "preferCustomContentTypes", label: (0, utils_2.getMessage)('pages.settings.form.preferCustomContentTypes.label', 'Prefer custom content types'), hint: (0, utils_2.getMessage)('pages.settings.form.preferCustomContentTypes.hint', 'Prefer if to use only api:: prefixed content types'), checked: values.preferCustomContentTypes, onChange: ({ target: { checked } }) => {
242
- setFieldValue('preferCustomContentTypes', checked, true);
243
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required })),
244
- react_1.default.createElement(Grid_1.GridItem, { col: 12, s: 12, xs: 12 },
245
- react_1.default.createElement(Select_1.Select, { name: "selectedContentTypes", label: (0, utils_2.getMessage)('pages.settings.form.contentTypes.label'), placeholder: (0, utils_2.getMessage)('pages.settings.form.contentTypes.placeholder'), hint: (0, utils_2.getMessage)('pages.settings.form.contentTypes.hint'), onClear: () => setFieldValue('selectedContentTypes', [], false), value: values.selectedContentTypes, onChange: (value) => setFieldValue('selectedContentTypes', value, false), multi: true, withTags: true, disabled: restartStatus.required }, allContentTypes.map((item) => react_1.default.createElement(Select_1.Option, { key: item.uid, value: item.uid }, item.info.displayName)))),
246
- !(0, lodash_1.isEmpty)(values.selectedContentTypes) && (react_1.default.createElement(Grid_1.GridItem, { col: 12 },
247
- react_1.default.createElement(Accordion_1.AccordionGroup, { label: (0, utils_2.getMessage)('pages.settings.form.contentTypesSettings.label'), labelAction: react_1.default.createElement(Tooltip_1.Tooltip, { description: (0, utils_2.getMessage)('pages.settings.form.contentTypesSettings.tooltip') },
248
- react_1.default.createElement(icons_1.Information, { "aria-hidden": true })) }, (0, lodash_1.orderBy)(values.selectedContentTypes).map(uid => {
249
- const contentType = allContentTypes.find(item => item.uid == uid);
250
- if (!contentType)
251
- return;
252
- const { info: { displayName }, available, isSingle } = contentType;
253
- const attributeKeys = Object.keys(contentType.attributes).sort();
254
- const stringAttributes = attributeKeys.filter(key => STRING_ATTRIBUTE_TYPES.includes(contentType.attributes[key].type));
255
- const relationAttributes = attributeKeys.filter(key => RELATION_ATTRIBUTE_TYPES.includes(contentType.attributes[key].type));
256
- const key = `collectionSettings-${uid}`;
257
- return (react_1.default.createElement(Accordion_1.Accordion, { expanded: contentTypeExpanded === key, toggle: () => handleSetContentTypeExpanded(key), key: key, id: key, size: "S" },
258
- react_1.default.createElement(Accordion_1.AccordionToggle, { title: displayName, togglePosition: "left", startIcon: (isSingle && !available) ? (react_1.default.createElement(icons_1.ExclamationMarkCircle, { "aria-hidden": true })) : null }),
259
- react_1.default.createElement(Accordion_1.AccordionContent, null,
260
- react_1.default.createElement(Box_1.Box, { padding: 6 },
261
- react_1.default.createElement(Stack_1.Stack, { size: 4 },
262
- (isSingle && !available) && (react_1.default.createElement(styles_1.PermanentAlert, { title: (0, utils_2.getMessage)('pages.settings.form.contentTypesSettings.initializationWarning.title'), variant: "danger", onClose: (e) => e.preventDefault() }, (0, utils_2.getMessage)('pages.settings.form.contentTypesSettings.initializationWarning.content'))),
263
- react_1.default.createElement(Select_1.Select, { name: `collectionSettings-${uid}-entryLabel`, label: (0, utils_2.getMessage)('pages.settings.form.nameField.label'), hint: (0, utils_2.getMessage)(`pages.settings.form.nameField.${(0, lodash_1.isEmpty)(stringAttributes) ? 'empty' : 'hint'}`), placeholder: (0, utils_2.getMessage)('pages.settings.form.nameField.placeholder'), onClear: () => setFieldValue('nameFields', (0, utils_1.prepareNewValueForRecord)(uid, values.nameFields, [])), value: values.nameFields[uid] || [], onChange: (value) => setFieldValue('nameFields', (0, utils_1.prepareNewValueForRecord)(uid, values.nameFields, value)), multi: true, withTags: true, disabled: restartStatus.required || (0, lodash_1.isEmpty)(stringAttributes) }, stringAttributes.map(key => (react_1.default.createElement(Select_1.Option, { key: uid + key, value: key }, (0, lodash_1.capitalize)(key.split('_').join(' ')))))),
264
- react_1.default.createElement(Select_1.Select, { name: `collectionSettings-${uid}-populate`, label: (0, utils_2.getMessage)('pages.settings.form.populate.label'), hint: (0, utils_2.getMessage)(`pages.settings.form.populate.${(0, lodash_1.isEmpty)(relationAttributes) ? 'empty' : 'hint'}`), placeholder: (0, utils_2.getMessage)('pages.settings.form.populate.placeholder'), onClear: () => setFieldValue('populate', (0, utils_1.prepareNewValueForRecord)(uid, values.populate, [])), value: values.populate[uid] || [], onChange: (value) => setFieldValue('populate', (0, utils_1.prepareNewValueForRecord)(uid, values.populate, value)), multi: true, withTags: true, disabled: restartStatus.required || (0, lodash_1.isEmpty)(relationAttributes) }, relationAttributes.map(key => (react_1.default.createElement(Select_1.Option, { key: uid + key, value: key }, (0, lodash_1.capitalize)(key.split('_').join(' ')))))),
265
- react_1.default.createElement(Select_1.Select, { name: `collectionSettings-${uid}-pathDefaultFields`, label: (0, utils_2.getMessage)('pages.settings.form.pathDefaultFields.label'), hint: (0, utils_2.getMessage)(`pages.settings.form.pathDefaultFields.${(0, lodash_1.isEmpty)(stringAttributes) ? 'empty' : 'hint'}`), placeholder: (0, utils_2.getMessage)('pages.settings.form.pathDefaultFields.placeholder'), onClear: () => setFieldValue('pathDefaultFields', (0, utils_1.prepareNewValueForRecord)(uid, values.pathDefaultFields, [])), value: values.pathDefaultFields[uid] || [], onChange: (value) => setFieldValue('pathDefaultFields', (0, utils_1.prepareNewValueForRecord)(uid, values.pathDefaultFields, value)), multi: true, withTags: true, disabled: restartStatus.required || (0, lodash_1.isEmpty)(stringAttributes) }, stringAttributes.map(key => (react_1.default.createElement(Select_1.Option, { key: uid + key, value: key }, (0, lodash_1.capitalize)(key.split('_').join(' ')))))))))));
266
- }))))))),
267
- react_1.default.createElement(Box_1.Box, { ...BOX_DEFAULT_PROPS },
268
- react_1.default.createElement(Stack_1.Stack, { size: 4 },
269
- react_1.default.createElement(Typography_1.Typography, { variant: "delta", as: "h2" }, (0, utils_2.getMessage)('pages.settings.additional.title')),
270
- react_1.default.createElement(Grid_1.Grid, { gap: 4 },
271
- react_1.default.createElement(Grid_1.GridItem, { col: 6, s: 6, xs: 12 },
272
- react_1.default.createElement(Box_1.Box, { style: { maxWidth: 257 } },
273
- react_1.default.createElement(NumberInput_1.NumberInput, { name: "allowedLevels", label: (0, utils_2.getMessage)('pages.settings.form.allowedLevels.label'), placeholder: (0, utils_2.getMessage)('pages.settings.form.allowedLevels.placeholder'), hint: (0, utils_2.getMessage)('pages.settings.form.allowedLevels.hint'), onValueChange: (value) => setFieldValue('allowedLevels', value, false), value: values.allowedLevels, disabled: restartStatus.required }))),
274
- react_1.default.createElement(Grid_1.GridItem, { col: 6, s: 12, xs: 12 },
275
- react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "cascadeMenuAttachedChecked", label: (0, utils_2.getMessage)('pages.settings.form.cascadeMenuAttached.label'), hint: (0, utils_2.getMessage)('pages.settings.form.cascadeMenuAttached.hint'), checked: values.cascadeMenuAttachedChecked, onChange: ({ target: { checked } }) => {
276
- setFieldValue('cascadeMenuAttachedChecked', checked, true);
277
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required }))),
278
- react_1.default.createElement(Grid_1.Grid, { gap: 4 },
279
- react_1.default.createElement(Grid_1.GridItem, { col: 6, s: 12, xs: 12 },
280
- react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "audienceFieldChecked", label: (0, utils_2.getMessage)('pages.settings.form.audience.label'), hint: (0, utils_2.getMessage)('pages.settings.form.audience.hint'), checked: values.audienceFieldChecked, onChange: () => setFieldValue('audienceFieldChecked', !values.audienceFieldChecked, false), onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required })),
281
- isI18NPluginEnabled && (react_1.default.createElement(Grid_1.GridItem, { col: 6, s: 12, xs: 12 },
282
- react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "i18nEnabled", label: (0, utils_2.getMessage)('pages.settings.form.i18n.label'), hint: defaultLocale
283
- ? (0, utils_2.getMessage)('pages.settings.form.i18n.hint')
284
- : (0, utils_2.getMessage)('pages.settings.form.i18n.hint.missingDefaultLocale'), checked: values.i18nEnabled, onChange: ({ target: { checked } }) => {
285
- setFieldValue('i18nEnabled', checked, false);
286
- if (checked) {
287
- setPruneObsoleteI18nNavigations(false);
288
- }
289
- else {
290
- setDisableI18nModalOpened(true);
291
- setI18nModalOnCancel(() => () => {
292
- setFieldValue('i18nEnabled', true);
293
- });
294
- }
295
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required || !defaultLocale })))),
296
- isCachePluginEnabled && (react_1.default.createElement(Grid_1.Grid, { gap: 4 },
297
- react_1.default.createElement(Grid_1.GridItem, { col: 12, s: 12, xs: 12 },
298
- react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "cacheEnabled", label: (0, utils_2.getMessage)('pages.settings.form.cache.label'), hint: (0, utils_2.getMessage)('pages.settings.form.cache.hint'), checked: values.isCacheEnabled, onChange: ({ target: { checked } }) => {
299
- setFieldValue('isCacheEnabled', checked, false);
300
- }, onLabel: "Enabled", offLabel: "Disabled", disabled: restartStatus.required })))))),
301
- react_1.default.createElement(Box_1.Box, { ...BOX_DEFAULT_PROPS },
302
- react_1.default.createElement(Stack_1.Stack, { size: 4 },
303
- react_1.default.createElement(Typography_1.Typography, { variant: "delta", as: "h2" }, (0, utils_2.getMessage)('pages.settings.customFields.title')),
304
- react_1.default.createElement(CustomFieldTable_1.default, { data: customFields, onOpenModal: handleOpenCustomFieldModal, onRemoveCustomField: handleRemoveCustomField, onToggleCustomField: handleToggleCustomField }))),
305
- react_1.default.createElement(Box_1.Box, { ...BOX_DEFAULT_PROPS },
306
- react_1.default.createElement(Stack_1.Stack, { size: 4 },
307
- react_1.default.createElement(Typography_1.Typography, { variant: "delta", as: "h2" }, (0, utils_2.getMessage)('pages.settings.restoring.title')),
308
- react_1.default.createElement(Grid_1.Grid, { gap: 4 },
309
- react_1.default.createElement(Grid_1.GridItem, { col: 12, s: 12, xs: 12 },
310
- react_1.default.createElement(Typography_1.Typography, null, (0, utils_2.getMessage)('pages.settings.actions.restore.description'))),
311
- react_1.default.createElement(Grid_1.GridItem, { col: 6, s: 12, xs: 12 },
312
- react_1.default.createElement(helper_plugin_1.CheckPermissions, { permissions: permissions_1.default.access },
313
- react_1.default.createElement(Button_1.Button, { variant: "danger-light", startIcon: react_1.default.createElement(icons_1.Refresh, null), onClick: () => setIsRestorePopupOpen(true) }, (0, utils_2.getMessage)('pages.settings.actions.restore'))),
314
- react_1.default.createElement(ConfirmationDialog_1.default, { isVisible: isRestorePopupOpen, header: (0, utils_2.getMessage)('pages.settings.actions.restore.confirmation.header'), labelConfirm: (0, utils_2.getMessage)('pages.settings.actions.restore.confirmation.confirm'), iconConfirm: react_1.default.createElement(icons_1.Refresh, null), onConfirm: () => onPopupClose(true), onCancel: () => onPopupClose(false) }, (0, utils_2.getMessage)('pages.settings.actions.restore.confirmation.description')),
315
- disableI18nModal))))))));
316
- })),
317
- isCustomFieldModalOpen &&
318
- react_1.default.createElement(CustomFieldModal_1.default, { onClose: () => setIsCustomFieldModalOpen(false), onSubmit: handleSubmitCustomField, isOpen: isCustomFieldModalOpen, data: customFieldSelected, usedCustomFieldNames: customFields.filter(f => f.name !== customFieldSelected?.name).map(f => f.name) })));
319
- };
320
- exports.default = SettingsPage;
321
- //# sourceMappingURL=index.js.map
@@ -1,35 +0,0 @@
1
- import { StrapiContentTypeFullSchema } from "strapi-typed";
2
- import { Effect, NavigationPluginConfig } from "../../../../types";
3
- export type RawPayload = {
4
- allowedLevels: number;
5
- audienceFieldChecked: boolean;
6
- cascadeMenuAttachedChecked: boolean;
7
- i18nEnabled: boolean;
8
- nameFields: Record<string, string[]>;
9
- pathDefaultFields: Record<string, string[]>;
10
- populate: Record<string, string[]>;
11
- selectedContentTypes: string[];
12
- isCacheEnabled: boolean;
13
- preferCustomContentTypes: boolean;
14
- };
15
- export type StrapiContentTypeSchema = StrapiContentTypeFullSchema & {
16
- available: boolean;
17
- isSingle: boolean;
18
- plugin: string;
19
- label: string;
20
- };
21
- export type PreparePayload = (payload: {
22
- form: RawPayload;
23
- pruneObsoleteI18nNavigations: boolean;
24
- }) => NavigationPluginConfig;
25
- export type OnSave = Effect<RawPayload>;
26
- export type OnPopupClose = Effect<boolean>;
27
- export type HandleSetContentTypeExpanded = Effect<string | undefined>;
28
- export type RestartReasons = 'I18N' | 'GRAPH_QL' | 'I18N_NAVIGATIONS_PRUNE' | 'CACHE';
29
- export type RestartStatus = {
30
- required: true;
31
- reasons?: RestartReasons[];
32
- } | {
33
- required: false;
34
- };
35
- //# sourceMappingURL=types.d.ts.map
@@ -1,20 +0,0 @@
1
- import { NavigationItemCustomField } from "../../../../../types";
2
- export declare const schemaFactory: (usedCustomFieldNames: string[]) => import("yup/lib/object").OptionalObjectSchema<{
3
- name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
4
- label: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
5
- type: import("yup/lib/mixed").MixedSchema<any, Record<string, any>, any>;
6
- required: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, Record<string, any>>;
7
- multi: import("yup/lib/mixed").MixedSchema<any, Record<string, any>, any>;
8
- options: import("yup/lib/mixed").MixedSchema<any, Record<string, any>, any>;
9
- enabled: import("yup").BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
10
- }, Record<string, any>, import("yup/lib/object").TypeOfShape<{
11
- name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
12
- label: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
13
- type: import("yup/lib/mixed").MixedSchema<any, Record<string, any>, any>;
14
- required: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, Record<string, any>>;
15
- multi: import("yup/lib/mixed").MixedSchema<any, Record<string, any>, any>;
16
- options: import("yup/lib/mixed").MixedSchema<any, Record<string, any>, any>;
17
- enabled: import("yup").BooleanSchema<boolean | undefined, Record<string, any>, boolean | undefined>;
18
- }>>;
19
- export declare const defaultValues: NavigationItemCustomField;
20
- //# sourceMappingURL=form.d.ts.map
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultValues = exports.schemaFactory = void 0;
4
- const yup_1 = require("yup");
5
- const helper_plugin_1 = require("@strapi/helper-plugin");
6
- const translations_1 = require("../../../translations");
7
- const common_1 = require("../common");
8
- const schemaFactory = (usedCustomFieldNames) => {
9
- return (0, yup_1.object)({
10
- name: (0, yup_1.string)().matches(/^\S+$/, "Invalid name string. Name cannot contain spaces").required(helper_plugin_1.translatedErrors.required).notOneOf(usedCustomFieldNames, helper_plugin_1.translatedErrors.unique),
11
- label: (0, yup_1.string)().required(helper_plugin_1.translatedErrors.required),
12
- type: (0, yup_1.mixed)().required(helper_plugin_1.translatedErrors.required).oneOf(common_1.customFieldsTypes, (0, translations_1.getTradId)("notification.error.customField.type")),
13
- required: (0, yup_1.bool)().required(helper_plugin_1.translatedErrors.required),
14
- multi: (0, yup_1.mixed)().when('type', {
15
- is: (val) => val === 'select',
16
- then: (0, yup_1.bool)().required(helper_plugin_1.translatedErrors.required),
17
- otherwise: (0, yup_1.bool)().notRequired()
18
- }),
19
- options: (0, yup_1.mixed)().when('type', {
20
- is: (val) => val === 'select',
21
- then: (0, yup_1.array)().of((0, yup_1.string)()),
22
- otherwise: (0, yup_1.mixed)().notRequired(),
23
- }),
24
- enabled: (0, yup_1.bool)().notRequired(),
25
- });
26
- };
27
- exports.schemaFactory = schemaFactory;
28
- exports.defaultValues = {
29
- name: "",
30
- label: "",
31
- type: "string",
32
- required: false,
33
- multi: false,
34
- options: [],
35
- enabled: true,
36
- };
37
- //# sourceMappingURL=form.js.map
@@ -1,3 +0,0 @@
1
- export function resolveGlobalLikeId(uid?: string): any;
2
- export function isContentTypeEligible(uid?: string, config?: {}): boolean;
3
- //# sourceMappingURL=functions.d.ts.map
@@ -1,26 +0,0 @@
1
- 'use strict';
2
- const { capitalize } = require("lodash");
3
- const UID_REGEX = /^(?<type>[a-z0-9-]+)\:{2}(?<api>[a-z0-9-]+)\.{1}(?<contentType>[a-z0-9-]+)$/i;
4
- const splitTypeUid = (uid = '') => {
5
- return uid.split(UID_REGEX).filter((s) => s && s.length > 0);
6
- };
7
- module.exports = {
8
- resolveGlobalLikeId(uid = '') {
9
- const parse = (str) => str.split('-')
10
- .map(_ => capitalize(_))
11
- .join('');
12
- const [type, scope, contentTypeName] = splitTypeUid(uid);
13
- if (type === 'api') {
14
- return parse(contentTypeName);
15
- }
16
- return `${parse(scope)}${parse(contentTypeName)}`;
17
- },
18
- isContentTypeEligible(uid = '', config = {}) {
19
- const { allowedContentTypes: baseAllowedContentTypes = [], restrictedContentTypes = [], preferCustomContentTypes = false, selectedContentTypes = [], } = config;
20
- const allowedContentTypes = preferCustomContentTypes ? ["api::", ...selectedContentTypes] : baseAllowedContentTypes;
21
- const isOneOfAllowedType = allowedContentTypes.filter(_ => uid.includes(_) || (uid === _)).length > 0;
22
- const isNoneOfRestricted = restrictedContentTypes.filter(_ => uid.includes(_) || (uid === _)).length === 0;
23
- return !!uid && isOneOfAllowedType && isNoneOfRestricted;
24
- },
25
- };
26
- //# sourceMappingURL=functions.js.map
@@ -1,14 +0,0 @@
1
- import { VFC } from "react";
2
- export interface ConfirmEffect {
3
- (source: string): void;
4
- }
5
- export interface CancelEffect {
6
- (): void;
7
- }
8
- interface Props {
9
- onConfirm: ConfirmEffect;
10
- onCancel: CancelEffect;
11
- }
12
- export declare const I18nCopyNavigationItemsModal: VFC<Props>;
13
- export {};
14
- //# sourceMappingURL=index.d.ts.map
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.I18nCopyNavigationItemsModal = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const ConfirmationDialog_1 = __importDefault(require("../../../../components/ConfirmationDialog"));
9
- const utils_1 = require("../../../../utils");
10
- const refreshIcon = react_1.default.createElement(react_1.default.Fragment, null);
11
- const I18nCopyNavigationItemsModal = ({ onConfirm, onCancel, }) => {
12
- return (react_1.default.createElement(ConfirmationDialog_1.default, { isVisible: true, header: (0, utils_1.getMessage)("pages.view.actions.i18nCopyItems.confirmation.header"), labelConfirm: (0, utils_1.getMessage)("pages.view.actions.i18nCopyItems.confirmation.confirm"), iconConfirm: refreshIcon, mainIcon: refreshIcon, onConfirm: onConfirm, onCancel: onCancel }, (0, utils_1.getMessage)("pages.view.actions.i18nCopyItems.confirmation.content")));
13
- };
14
- exports.I18nCopyNavigationItemsModal = I18nCopyNavigationItemsModal;
15
- //# sourceMappingURL=index.js.map
@@ -1,6 +0,0 @@
1
- export default NavigationContentHeader;
2
- declare function NavigationContentHeader({ startActions, endActions }: {
3
- startActions: any;
4
- endActions: any;
5
- }): JSX.Element;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1,14 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
7
- const Flex_1 = require("@strapi/design-system/Flex");
8
- const NavigationContentHeader = ({ startActions, endActions }) => {
9
- return (react_1.default.createElement(Flex_1.Flex, { justifyContent: "space-between", width: "100%" },
10
- react_1.default.createElement(Flex_1.Flex, { alignItems: "space-between" }, startActions),
11
- react_1.default.createElement(Flex_1.Flex, { alignItems: "space-between" }, endActions)));
12
- };
13
- exports.default = NavigationContentHeader;
14
- //# sourceMappingURL=index.js.map
@@ -1,14 +0,0 @@
1
- export default NavigationHeader;
2
- declare function NavigationHeader({ activeNavigation, availableNavigations, structureHasErrors, structureHasChanged, handleChangeSelection, handleLocalizationSelection, handleSave, handleCachePurge, config, permissions, }: {
3
- activeNavigation: any;
4
- availableNavigations: any;
5
- structureHasErrors: any;
6
- structureHasChanged: any;
7
- handleChangeSelection: any;
8
- handleLocalizationSelection: any;
9
- handleSave: any;
10
- handleCachePurge: any;
11
- config: any;
12
- permissions?: {} | undefined;
13
- }): JSX.Element;
14
- //# sourceMappingURL=index.d.ts.map
@@ -1,92 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importStar(require("react"));
30
- const react_intl_1 = require("react-intl");
31
- const Layout_1 = require("@strapi/design-system/Layout");
32
- const Stack_1 = require("@strapi/design-system/Stack");
33
- const Button_1 = require("@strapi/design-system/Button");
34
- const Check_1 = __importDefault(require("@strapi/icons/Check"));
35
- const More_1 = __importDefault(require("@strapi/icons/More"));
36
- const Information_1 = __importDefault(require("@strapi/icons/Information"));
37
- const Tag_1 = require("@strapi/design-system/Tag");
38
- const translations_1 = require("../../../../translations");
39
- const styles_1 = require("./styles");
40
- const Select_1 = require("@strapi/design-system/Select");
41
- const Box_1 = require("@strapi/design-system/Box");
42
- const Grid_1 = require("@strapi/design-system/Grid");
43
- const lodash_1 = require("lodash");
44
- const useNavigationManager_1 = require("../../../../hooks/useNavigationManager");
45
- const submitIcon = react_1.default.createElement(Check_1.default, null);
46
- const pickDefaultLocaleNavigation = ({ activeNavigation, config }) => config.i18nEnabled
47
- ? activeNavigation
48
- ? activeNavigation.localeCode === config.defaultLocale
49
- ? activeNavigation
50
- : activeNavigation?.localizations.find(({ localeCode }) => localeCode === config.defaultLocale)
51
- : null
52
- : activeNavigation;
53
- const NavigationHeader = ({ activeNavigation, availableNavigations, structureHasErrors, structureHasChanged, handleChangeSelection, handleLocalizationSelection, handleSave, handleCachePurge, config, permissions = {}, }) => {
54
- const { formatMessage } = (0, react_intl_1.useIntl)();
55
- const allLocaleVersions = (0, react_1.useMemo)(() => activeNavigation?.localizations.length && config.i18nEnabled
56
- ? (0, lodash_1.uniqBy)([activeNavigation, ...(activeNavigation.localizations ?? [])].sort((a, b) => a.localeCode.localeCompare(b.localeCode)), 'id')
57
- : [], [activeNavigation, config]);
58
- const hasLocalizations = config.i18nEnabled && allLocaleVersions.length;
59
- const passedActiveNavigation = pickDefaultLocaleNavigation({ activeNavigation, config });
60
- const { closeNavigationManagerModal, openNavigationManagerModal, navigationManagerModal } = (0, useNavigationManager_1.useNavigationManager)();
61
- const { canUpdate } = permissions;
62
- return (react_1.default.createElement(Layout_1.HeaderLayout, { secondaryAction: react_1.default.createElement(Tag_1.Tag, { icon: react_1.default.createElement(Information_1.default, { "aria-hidden": true }) }, activeNavigation
63
- ? formatMessage((0, translations_1.getTrad)('header.meta'), {
64
- id: activeNavigation?.id,
65
- key: activeNavigation?.slug
66
- })
67
- : null), primaryAction: react_1.default.createElement(Stack_1.Stack, { horizontal: true, size: 2 },
68
- react_1.default.createElement(Box_1.Box, { marginRight: "8px" },
69
- react_1.default.createElement(Grid_1.Grid, { gap: 4, style: config.isCacheEnabled ? { display: "flex" } : undefined },
70
- !hasLocalizations ? (react_1.default.createElement(Grid_1.GridItem, { col: 2 })) : null,
71
- canUpdate && (react_1.default.createElement(Grid_1.GridItem, { col: 3 },
72
- react_1.default.createElement(Button_1.Button, { onClick: openNavigationManagerModal, startIcon: null, type: "button", variant: "secondary", fullWidth: true, size: "S" }, formatMessage((0, translations_1.getTrad)('header.action.manage'))))),
73
- react_1.default.createElement(Grid_1.GridItem, { col: canUpdate ? 4 : 10 },
74
- react_1.default.createElement(Select_1.Select, { type: "select", placeholder: "Change navigation", name: "navigationSelect", onChange: handleChangeSelection, value: passedActiveNavigation?.id, size: "S", style: null }, availableNavigations.map(({ id, name }) => react_1.default.createElement(Select_1.Option, { key: id, value: id }, name)))),
75
- hasLocalizations
76
- ? react_1.default.createElement(Grid_1.GridItem, { col: 2 },
77
- react_1.default.createElement(Select_1.Select, { type: "select", placeholder: formatMessage((0, translations_1.getTrad)('pages.main.header.localization.select.placeholder')), name: "navigationLocalizationSelect", onChange: handleLocalizationSelection, value: activeNavigation?.id, size: "S" }, allLocaleVersions.map(({ id, localeCode }) => react_1.default.createElement(Select_1.Option, { key: id, value: id }, localeCode))))
78
- : null,
79
- canUpdate && (react_1.default.createElement(Grid_1.GridItem, { col: 3 },
80
- react_1.default.createElement(Button_1.Button, { onClick: handleSave, startIcon: submitIcon, disabled: structureHasErrors || !structureHasChanged, type: "submit", fullWidth: true, size: "S" }, formatMessage((0, translations_1.getTrad)('submit.cta.save'))))),
81
- config.isCacheEnabled && (react_1.default.createElement(Grid_1.GridItem, { col: 3 },
82
- react_1.default.createElement(Button_1.Button, { onClick: handleCachePurge, variant: "danger", type: "submit", fullWidth: true, size: "S" }, formatMessage((0, translations_1.getTrad)('submit.cta.cache.purge'))))))),
83
- canUpdate && navigationManagerModal), title: formatMessage({
84
- id: (0, translations_1.getTrad)('header.title'),
85
- defaultMessage: 'UI Navigation',
86
- }), subtitle: formatMessage({
87
- id: (0, translations_1.getTrad)('header.description'),
88
- defaultMessage: 'Define your portal navigation',
89
- }) }));
90
- };
91
- exports.default = NavigationHeader;
92
- //# sourceMappingURL=index.js.map