strapi-plugin-navigation 2.3.2 → 2.5.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 (407) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +855 -0
  3. package/admin/src/components/AdditionalFieldInput/index.d.ts +2 -2
  4. package/admin/src/components/AdditionalFieldInput/index.js +36 -8
  5. package/admin/src/components/AdditionalFieldInput/types.d.ts +1 -1
  6. package/admin/src/components/DragButton/index.d.ts +3 -1
  7. package/admin/src/components/DragButton/index.js +2 -1
  8. package/admin/src/components/Item/ItemCardHeader/index.d.ts +1 -0
  9. package/admin/src/components/Item/ItemCardHeader/index.js +10 -5
  10. package/admin/src/components/Item/index.js +24 -4
  11. package/admin/src/components/NavigationItemList/index.js +1 -1
  12. package/admin/src/components/Search/index.d.ts +10 -4
  13. package/admin/src/components/Search/index.js +45 -6
  14. package/admin/src/components/TextArrayInput/index.d.ts +2 -1
  15. package/admin/src/pages/DataManagerProvider/actions.d.ts +2 -0
  16. package/admin/src/pages/DataManagerProvider/actions.js +3 -1
  17. package/admin/src/pages/DataManagerProvider/index.js +28 -0
  18. package/admin/src/pages/DataManagerProvider/reducer.js +8 -0
  19. package/admin/src/pages/SettingsPage/common/const.d.ts +2 -0
  20. package/admin/src/pages/SettingsPage/common/const.js +5 -0
  21. package/admin/src/pages/SettingsPage/common/index.d.ts +2 -0
  22. package/admin/src/pages/SettingsPage/common/index.js +18 -0
  23. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js +27 -12
  24. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js +1 -1
  25. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts +2 -3
  26. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js +12 -14
  27. package/admin/src/pages/SettingsPage/index.js +22 -9
  28. package/admin/src/pages/SettingsPage/types.d.ts +2 -1
  29. package/admin/src/pages/SettingsPage/utils/form.js +2 -1
  30. package/admin/src/pages/View/components/NavigationHeader/index.d.ts +2 -1
  31. package/admin/src/pages/View/components/NavigationHeader/index.js +5 -3
  32. package/admin/src/pages/View/components/NavigationItemForm/index.js +49 -19
  33. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts +2 -1
  34. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js +2 -0
  35. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.d.ts +1 -0
  36. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.js +2 -1
  37. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.js +16 -4
  38. package/admin/src/pages/View/components/NavigationManager/PurgeCacheConfirm/index.d.ts +8 -0
  39. package/admin/src/pages/View/components/NavigationManager/PurgeCacheConfirm/index.js +34 -0
  40. package/admin/src/pages/View/components/NavigationManager/index.js +15 -2
  41. package/admin/src/pages/View/components/NavigationManager/types.d.ts +5 -1
  42. package/admin/src/pages/View/index.js +25 -12
  43. package/admin/src/pages/View/utils/form.d.ts +1 -1
  44. package/admin/src/pages/View/utils/types.d.ts +3 -0
  45. package/admin/src/pages/View/utils/types.js +3 -0
  46. package/admin/src/translations/ca.json +1 -0
  47. package/admin/src/translations/en.json +10 -0
  48. package/admin/src/translations/fr.json +1 -0
  49. package/admin/src/utils/api.js +1 -1
  50. package/package.json +76 -101
  51. package/server/bootstrap/index.js +3 -0
  52. package/server/cache/index.d.ts +2 -0
  53. package/server/cache/index.js +18 -0
  54. package/server/cache/serviceEnhancers.d.ts +3 -0
  55. package/server/cache/serviceEnhancers.js +16 -0
  56. package/server/cache/setupStrategy.d.ts +3 -0
  57. package/server/cache/setupStrategy.js +38 -0
  58. package/server/cache/types.d.ts +11 -0
  59. package/server/cache/types.js +3 -0
  60. package/server/cache/utils.d.ts +11 -0
  61. package/server/cache/utils.js +19 -0
  62. package/server/config/index.js +1 -0
  63. package/server/config/setupStrategy.js +1 -0
  64. package/server/content-types/index.d.ts +2 -0
  65. package/server/content-types/navigation/index.d.ts +1 -0
  66. package/server/content-types/navigation/index.js +3 -1
  67. package/server/content-types/navigation/lifecycles.d.ts +3 -0
  68. package/server/content-types/navigation/lifecycles.js +7 -0
  69. package/server/content-types/navigation-item/index.d.ts +1 -0
  70. package/server/content-types/navigation-item/index.js +3 -1
  71. package/server/content-types/navigation-item/lifecycles.d.ts +3 -0
  72. package/server/content-types/navigation-item/lifecycles.js +7 -0
  73. package/server/controllers/admin.js +37 -16
  74. package/server/controllers/client.js +2 -2
  75. package/server/graphql/queries/render-navigation-child.d.ts +1 -1
  76. package/server/graphql/queries/render-navigation.d.ts +1 -1
  77. package/server/graphql/types/index.js +1 -0
  78. package/server/graphql/types/navigation-item-additional-field-media.d.ts +5 -0
  79. package/server/graphql/types/navigation-item-additional-field-media.js +13 -0
  80. package/server/graphql/types/navigation-item.js +3 -0
  81. package/server/i18n/navigationSetupStrategy.js +1 -1
  82. package/server/i18n/utils.d.ts +1 -0
  83. package/server/i18n/utils.js +4 -0
  84. package/server/index.d.ts +2 -0
  85. package/server/routes/admin.js +20 -0
  86. package/server/services/admin.js +59 -15
  87. package/server/services/client.js +42 -11
  88. package/server/services/common.js +16 -0
  89. package/server/utils/constant.d.ts +3 -0
  90. package/server/utils/constant.js +21 -1
  91. package/server/utils/functions.d.ts +11 -3
  92. package/server/utils/functions.js +21 -3
  93. package/strapi-server.d.ts +2 -0
  94. package/tsconfig.tsbuildinfo +1 -1
  95. package/types/bootstrap.d.ts +3 -0
  96. package/types/config.d.ts +1 -0
  97. package/types/contentTypes.d.ts +7 -2
  98. package/types/controllers.d.ts +14 -3
  99. package/types/index.d.ts +1 -0
  100. package/types/index.js +1 -0
  101. package/types/lifecycle.d.ts +22 -0
  102. package/types/lifecycle.js +3 -0
  103. package/types/services.d.ts +20 -2
  104. package/__mocks__/strapi.d.ts +0 -3
  105. package/__mocks__/strapi.d.ts.map +0 -1
  106. package/__mocks__/strapi.js +0 -206
  107. package/__mocks__/strapi.js.map +0 -1
  108. package/admin/src/components/AdditionalFieldInput/index.d.ts.map +0 -1
  109. package/admin/src/components/AdditionalFieldInput/index.js.map +0 -1
  110. package/admin/src/components/AdditionalFieldInput/types.d.ts.map +0 -1
  111. package/admin/src/components/AdditionalFieldInput/types.js.map +0 -1
  112. package/admin/src/components/Alert/styles.d.ts.map +0 -1
  113. package/admin/src/components/Alert/styles.js.map +0 -1
  114. package/admin/src/components/CollapseButton/index.d.ts.map +0 -1
  115. package/admin/src/components/CollapseButton/index.js.map +0 -1
  116. package/admin/src/components/ConfirmationDialog/index.d.ts.map +0 -1
  117. package/admin/src/components/ConfirmationDialog/index.js.map +0 -1
  118. package/admin/src/components/DragButton/index.d.ts.map +0 -1
  119. package/admin/src/components/DragButton/index.js.map +0 -1
  120. package/admin/src/components/EmptyView/index.d.ts.map +0 -1
  121. package/admin/src/components/EmptyView/index.js.map +0 -1
  122. package/admin/src/components/Item/ItemCardBadge/index.d.ts.map +0 -1
  123. package/admin/src/components/Item/ItemCardBadge/index.js.map +0 -1
  124. package/admin/src/components/Item/ItemCardHeader/Wrapper.d.ts.map +0 -1
  125. package/admin/src/components/Item/ItemCardHeader/Wrapper.js.map +0 -1
  126. package/admin/src/components/Item/ItemCardHeader/icons.d.ts.map +0 -1
  127. package/admin/src/components/Item/ItemCardHeader/icons.js.map +0 -1
  128. package/admin/src/components/Item/ItemCardHeader/index.d.ts.map +0 -1
  129. package/admin/src/components/Item/ItemCardHeader/index.js.map +0 -1
  130. package/admin/src/components/Item/ItemCardRemovedOverlay/index.d.ts.map +0 -1
  131. package/admin/src/components/Item/ItemCardRemovedOverlay/index.js.map +0 -1
  132. package/admin/src/components/Item/Wrapper.d.ts.map +0 -1
  133. package/admin/src/components/Item/Wrapper.js.map +0 -1
  134. package/admin/src/components/Item/index.d.ts.map +0 -1
  135. package/admin/src/components/Item/index.js.map +0 -1
  136. package/admin/src/components/NavigationItemList/Wrapper.d.ts.map +0 -1
  137. package/admin/src/components/NavigationItemList/Wrapper.js.map +0 -1
  138. package/admin/src/components/NavigationItemList/index.d.ts.map +0 -1
  139. package/admin/src/components/NavigationItemList/index.js.map +0 -1
  140. package/admin/src/components/RestartAlert/index.d.ts.map +0 -1
  141. package/admin/src/components/RestartAlert/index.js.map +0 -1
  142. package/admin/src/components/Search/index.d.ts.map +0 -1
  143. package/admin/src/components/Search/index.js.map +0 -1
  144. package/admin/src/components/TextArrayInput/index.d.ts.map +0 -1
  145. package/admin/src/components/TextArrayInput/index.js.map +0 -1
  146. package/admin/src/components/icons/navigation.d.ts.map +0 -1
  147. package/admin/src/components/icons/navigation.js.map +0 -1
  148. package/admin/src/contexts/DataManagerContext.d.ts.map +0 -1
  149. package/admin/src/contexts/DataManagerContext.js.map +0 -1
  150. package/admin/src/hooks/useAllContentTypes.d.ts.map +0 -1
  151. package/admin/src/hooks/useAllContentTypes.js.map +0 -1
  152. package/admin/src/hooks/useDataManager.d.ts.map +0 -1
  153. package/admin/src/hooks/useDataManager.js.map +0 -1
  154. package/admin/src/hooks/useI18nCopyNavigationItemsModal.d.ts.map +0 -1
  155. package/admin/src/hooks/useI18nCopyNavigationItemsModal.js.map +0 -1
  156. package/admin/src/hooks/useNavigationConfig.d.ts.map +0 -1
  157. package/admin/src/hooks/useNavigationConfig.js.map +0 -1
  158. package/admin/src/hooks/useNavigationManager.d.ts.map +0 -1
  159. package/admin/src/hooks/useNavigationManager.js.map +0 -1
  160. package/admin/src/index.d.ts.map +0 -1
  161. package/admin/src/index.js.map +0 -1
  162. package/admin/src/pages/App/index.d.ts.map +0 -1
  163. package/admin/src/pages/App/index.js.map +0 -1
  164. package/admin/src/pages/DataManagerProvider/actions.d.ts.map +0 -1
  165. package/admin/src/pages/DataManagerProvider/actions.js.map +0 -1
  166. package/admin/src/pages/DataManagerProvider/index.d.ts.map +0 -1
  167. package/admin/src/pages/DataManagerProvider/index.js.map +0 -1
  168. package/admin/src/pages/DataManagerProvider/init.d.ts.map +0 -1
  169. package/admin/src/pages/DataManagerProvider/init.js.map +0 -1
  170. package/admin/src/pages/DataManagerProvider/reducer.d.ts.map +0 -1
  171. package/admin/src/pages/DataManagerProvider/reducer.js.map +0 -1
  172. package/admin/src/pages/NoAccessPage/index.d.ts.map +0 -1
  173. package/admin/src/pages/NoAccessPage/index.js.map +0 -1
  174. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.d.ts.map +0 -1
  175. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js.map +0 -1
  176. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.d.ts.map +0 -1
  177. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.js.map +0 -1
  178. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.d.ts.map +0 -1
  179. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js.map +0 -1
  180. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts.map +0 -1
  181. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js.map +0 -1
  182. package/admin/src/pages/SettingsPage/index.d.ts.map +0 -1
  183. package/admin/src/pages/SettingsPage/index.js.map +0 -1
  184. package/admin/src/pages/SettingsPage/types.d.ts.map +0 -1
  185. package/admin/src/pages/SettingsPage/types.js.map +0 -1
  186. package/admin/src/pages/SettingsPage/utils/form.d.ts.map +0 -1
  187. package/admin/src/pages/SettingsPage/utils/form.js.map +0 -1
  188. package/admin/src/pages/SettingsPage/utils/functions.d.ts.map +0 -1
  189. package/admin/src/pages/SettingsPage/utils/functions.js.map +0 -1
  190. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.d.ts.map +0 -1
  191. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.js.map +0 -1
  192. package/admin/src/pages/View/components/NavigationContentHeader/index.d.ts.map +0 -1
  193. package/admin/src/pages/View/components/NavigationContentHeader/index.js.map +0 -1
  194. package/admin/src/pages/View/components/NavigationHeader/index.d.ts.map +0 -1
  195. package/admin/src/pages/View/components/NavigationHeader/index.js.map +0 -1
  196. package/admin/src/pages/View/components/NavigationHeader/styles.d.ts.map +0 -1
  197. package/admin/src/pages/View/components/NavigationHeader/styles.js.map +0 -1
  198. package/admin/src/pages/View/components/NavigationItemForm/index.d.ts.map +0 -1
  199. package/admin/src/pages/View/components/NavigationItemForm/index.js.map +0 -1
  200. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts.map +0 -1
  201. package/admin/src/pages/View/components/NavigationItemForm/types.js.map +0 -1
  202. package/admin/src/pages/View/components/NavigationItemForm/utils/form.d.ts.map +0 -1
  203. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js.map +0 -1
  204. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.d.ts.map +0 -1
  205. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.js.map +0 -1
  206. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.d.ts.map +0 -1
  207. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.js.map +0 -1
  208. package/admin/src/pages/View/components/NavigationItemPopup/index.d.ts.map +0 -1
  209. package/admin/src/pages/View/components/NavigationItemPopup/index.js.map +0 -1
  210. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.d.ts.map +0 -1
  211. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.js.map +0 -1
  212. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.d.ts.map +0 -1
  213. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.js.map +0 -1
  214. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.d.ts.map +0 -1
  215. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.js.map +0 -1
  216. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.d.ts.map +0 -1
  217. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.js.map +0 -1
  218. package/admin/src/pages/View/components/NavigationManager/Footer/index.d.ts.map +0 -1
  219. package/admin/src/pages/View/components/NavigationManager/Footer/index.js.map +0 -1
  220. package/admin/src/pages/View/components/NavigationManager/Form/index.d.ts.map +0 -1
  221. package/admin/src/pages/View/components/NavigationManager/Form/index.js.map +0 -1
  222. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.d.ts.map +0 -1
  223. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.js.map +0 -1
  224. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.d.ts.map +0 -1
  225. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.js.map +0 -1
  226. package/admin/src/pages/View/components/NavigationManager/index.d.ts.map +0 -1
  227. package/admin/src/pages/View/components/NavigationManager/index.js.map +0 -1
  228. package/admin/src/pages/View/components/NavigationManager/types.d.ts.map +0 -1
  229. package/admin/src/pages/View/components/NavigationManager/types.js.map +0 -1
  230. package/admin/src/pages/View/index.d.ts.map +0 -1
  231. package/admin/src/pages/View/index.js.map +0 -1
  232. package/admin/src/pages/View/utils/form.d.ts.map +0 -1
  233. package/admin/src/pages/View/utils/form.js.map +0 -1
  234. package/admin/src/pages/View/utils/index.d.ts.map +0 -1
  235. package/admin/src/pages/View/utils/index.js.map +0 -1
  236. package/admin/src/pages/View/utils/parsers.d.ts.map +0 -1
  237. package/admin/src/pages/View/utils/parsers.js.map +0 -1
  238. package/admin/src/permissions.d.ts.map +0 -1
  239. package/admin/src/permissions.js.map +0 -1
  240. package/admin/src/pluginId.d.ts.map +0 -1
  241. package/admin/src/pluginId.js.map +0 -1
  242. package/admin/src/translations/index.d.ts.map +0 -1
  243. package/admin/src/translations/index.js.map +0 -1
  244. package/admin/src/utils/api.d.ts.map +0 -1
  245. package/admin/src/utils/api.js.map +0 -1
  246. package/admin/src/utils/enums.d.ts.map +0 -1
  247. package/admin/src/utils/enums.js.map +0 -1
  248. package/admin/src/utils/functions.d.ts.map +0 -1
  249. package/admin/src/utils/functions.js.map +0 -1
  250. package/admin/src/utils/index.d.ts.map +0 -1
  251. package/admin/src/utils/index.js.map +0 -1
  252. package/permissions.d.ts.map +0 -1
  253. package/permissions.js.map +0 -1
  254. package/server/bootstrap/index.d.ts.map +0 -1
  255. package/server/bootstrap/index.js.map +0 -1
  256. package/server/config/index.d.ts.map +0 -1
  257. package/server/config/index.js.map +0 -1
  258. package/server/config/setupStrategy.d.ts.map +0 -1
  259. package/server/config/setupStrategy.js.map +0 -1
  260. package/server/content-types/audience/index.d.ts.map +0 -1
  261. package/server/content-types/audience/index.js.map +0 -1
  262. package/server/content-types/audience/schema.d.ts.map +0 -1
  263. package/server/content-types/audience/schema.js.map +0 -1
  264. package/server/content-types/index.d.ts.map +0 -1
  265. package/server/content-types/index.js.map +0 -1
  266. package/server/content-types/navigation/index.d.ts.map +0 -1
  267. package/server/content-types/navigation/index.js.map +0 -1
  268. package/server/content-types/navigation/schema.d.ts.map +0 -1
  269. package/server/content-types/navigation/schema.js.map +0 -1
  270. package/server/content-types/navigation-item/index.d.ts.map +0 -1
  271. package/server/content-types/navigation-item/index.js.map +0 -1
  272. package/server/content-types/navigation-item/schema.d.ts.map +0 -1
  273. package/server/content-types/navigation-item/schema.js.map +0 -1
  274. package/server/content-types/navigations-items-related/index.d.ts.map +0 -1
  275. package/server/content-types/navigations-items-related/index.js.map +0 -1
  276. package/server/content-types/navigations-items-related/schema.d.ts.map +0 -1
  277. package/server/content-types/navigations-items-related/schema.js.map +0 -1
  278. package/server/controllers/admin.d.ts.map +0 -1
  279. package/server/controllers/admin.js.map +0 -1
  280. package/server/controllers/client.d.ts.map +0 -1
  281. package/server/controllers/client.js.map +0 -1
  282. package/server/controllers/index.d.ts.map +0 -1
  283. package/server/controllers/index.js.map +0 -1
  284. package/server/destroy.d.ts.map +0 -1
  285. package/server/destroy.js.map +0 -1
  286. package/server/graphql/config.d.ts.map +0 -1
  287. package/server/graphql/config.js.map +0 -1
  288. package/server/graphql/index.d.ts.map +0 -1
  289. package/server/graphql/index.js.map +0 -1
  290. package/server/graphql/queries/index.d.ts.map +0 -1
  291. package/server/graphql/queries/index.js.map +0 -1
  292. package/server/graphql/queries/render-navigation-child.d.ts.map +0 -1
  293. package/server/graphql/queries/render-navigation-child.js.map +0 -1
  294. package/server/graphql/queries/render-navigation.d.ts.map +0 -1
  295. package/server/graphql/queries/render-navigation.js.map +0 -1
  296. package/server/graphql/resolvers-config.d.ts.map +0 -1
  297. package/server/graphql/resolvers-config.js.map +0 -1
  298. package/server/graphql/setupStrategy.d.ts.map +0 -1
  299. package/server/graphql/setupStrategy.js.map +0 -1
  300. package/server/graphql/types/content-types-name-fields.d.ts.map +0 -1
  301. package/server/graphql/types/content-types-name-fields.js.map +0 -1
  302. package/server/graphql/types/content-types.d.ts.map +0 -1
  303. package/server/graphql/types/content-types.js.map +0 -1
  304. package/server/graphql/types/create-navigation-item.d.ts.map +0 -1
  305. package/server/graphql/types/create-navigation-item.js.map +0 -1
  306. package/server/graphql/types/create-navigation-related.d.ts.map +0 -1
  307. package/server/graphql/types/create-navigation-related.js.map +0 -1
  308. package/server/graphql/types/create-navigation.d.ts.map +0 -1
  309. package/server/graphql/types/create-navigation.js.map +0 -1
  310. package/server/graphql/types/index.d.ts.map +0 -1
  311. package/server/graphql/types/index.js.map +0 -1
  312. package/server/graphql/types/navigation-config.d.ts.map +0 -1
  313. package/server/graphql/types/navigation-config.js.map +0 -1
  314. package/server/graphql/types/navigation-details.d.ts.map +0 -1
  315. package/server/graphql/types/navigation-details.js.map +0 -1
  316. package/server/graphql/types/navigation-item-related-data.d.ts.map +0 -1
  317. package/server/graphql/types/navigation-item-related-data.js.map +0 -1
  318. package/server/graphql/types/navigation-item-related.d.ts.map +0 -1
  319. package/server/graphql/types/navigation-item-related.js.map +0 -1
  320. package/server/graphql/types/navigation-item.d.ts.map +0 -1
  321. package/server/graphql/types/navigation-item.js.map +0 -1
  322. package/server/graphql/types/navigation-render-type.d.ts.map +0 -1
  323. package/server/graphql/types/navigation-render-type.js.map +0 -1
  324. package/server/graphql/types/navigation.d.ts.map +0 -1
  325. package/server/graphql/types/navigation.js.map +0 -1
  326. package/server/i18n/constant.d.ts.map +0 -1
  327. package/server/i18n/constant.js.map +0 -1
  328. package/server/i18n/errors.d.ts.map +0 -1
  329. package/server/i18n/errors.js.map +0 -1
  330. package/server/i18n/graphQLEnhancers.d.ts.map +0 -1
  331. package/server/i18n/graphQLEnhancers.js.map +0 -1
  332. package/server/i18n/index.d.ts.map +0 -1
  333. package/server/i18n/index.js.map +0 -1
  334. package/server/i18n/navigationSetupStrategy.d.ts.map +0 -1
  335. package/server/i18n/navigationSetupStrategy.js.map +0 -1
  336. package/server/i18n/serviceEnhancers.d.ts.map +0 -1
  337. package/server/i18n/serviceEnhancers.js.map +0 -1
  338. package/server/i18n/types.d.ts.map +0 -1
  339. package/server/i18n/types.js.map +0 -1
  340. package/server/i18n/utils.d.ts.map +0 -1
  341. package/server/i18n/utils.js.map +0 -1
  342. package/server/index.d.ts.map +0 -1
  343. package/server/index.js.map +0 -1
  344. package/server/navigation/index.d.ts.map +0 -1
  345. package/server/navigation/index.js.map +0 -1
  346. package/server/navigation/setupStrategy.d.ts.map +0 -1
  347. package/server/navigation/setupStrategy.js.map +0 -1
  348. package/server/register/index.d.ts.map +0 -1
  349. package/server/register/index.js.map +0 -1
  350. package/server/routes/admin.d.ts.map +0 -1
  351. package/server/routes/admin.js.map +0 -1
  352. package/server/routes/client.d.ts.map +0 -1
  353. package/server/routes/client.js.map +0 -1
  354. package/server/routes/index.d.ts.map +0 -1
  355. package/server/routes/index.js.map +0 -1
  356. package/server/services/__tests__/service.test.d.ts +0 -2
  357. package/server/services/__tests__/service.test.d.ts.map +0 -1
  358. package/server/services/__tests__/service.test.js +0 -131
  359. package/server/services/__tests__/service.test.js.map +0 -1
  360. package/server/services/admin.d.ts.map +0 -1
  361. package/server/services/admin.js.map +0 -1
  362. package/server/services/client.d.ts.map +0 -1
  363. package/server/services/client.js.map +0 -1
  364. package/server/services/common.d.ts.map +0 -1
  365. package/server/services/common.js.map +0 -1
  366. package/server/services/index.d.ts.map +0 -1
  367. package/server/services/index.js.map +0 -1
  368. package/server/utils/__tests__/functions.test.d.ts +0 -2
  369. package/server/utils/__tests__/functions.test.d.ts.map +0 -1
  370. package/server/utils/__tests__/functions.test.js +0 -153
  371. package/server/utils/__tests__/functions.test.js.map +0 -1
  372. package/server/utils/constant.d.ts.map +0 -1
  373. package/server/utils/constant.js.map +0 -1
  374. package/server/utils/functions.d.ts.map +0 -1
  375. package/server/utils/functions.js.map +0 -1
  376. package/server/utils/index.d.ts.map +0 -1
  377. package/server/utils/index.js.map +0 -1
  378. package/setup-package.d.ts +0 -2
  379. package/setup-package.d.ts.map +0 -1
  380. package/setup-package.js +0 -19
  381. package/setup-package.js.map +0 -1
  382. package/strapi-admin.d.ts.map +0 -1
  383. package/strapi-admin.js.map +0 -1
  384. package/strapi-server.d.ts.map +0 -1
  385. package/strapi-server.js.map +0 -1
  386. package/types/bootstrap.d.ts.map +0 -1
  387. package/types/bootstrap.js.map +0 -1
  388. package/types/config.d.ts.map +0 -1
  389. package/types/config.js.map +0 -1
  390. package/types/contentTypes.d.ts.map +0 -1
  391. package/types/contentTypes.js.map +0 -1
  392. package/types/controllers.d.ts.map +0 -1
  393. package/types/controllers.js.map +0 -1
  394. package/types/graphQL.d.ts.map +0 -1
  395. package/types/graphQL.js.map +0 -1
  396. package/types/i18n.d.ts.map +0 -1
  397. package/types/i18n.js.map +0 -1
  398. package/types/index.d.ts.map +0 -1
  399. package/types/index.js.map +0 -1
  400. package/types/services.d.ts.map +0 -1
  401. package/types/services.js.map +0 -1
  402. package/types/utils.d.ts.map +0 -1
  403. package/types/utils.js.map +0 -1
  404. package/utils/InvalidParamNavigationError.d.ts.map +0 -1
  405. package/utils/InvalidParamNavigationError.js.map +0 -1
  406. package/utils/NavigationError.d.ts.map +0 -1
  407. package/utils/NavigationError.js.map +0 -1
@@ -54,7 +54,7 @@ const parsers_1 = require("./utils/parsers");
54
54
  const NoAccessPage_1 = __importDefault(require("../NoAccessPage"));
55
55
  const View = () => {
56
56
  const toggleNotification = (0, helper_plugin_1.useNotification)();
57
- const { items: availableNavigations, activeItem: activeNavigation, changedActiveItem: changedActiveNavigation, config, navigationItemPopupOpened, isLoading, isLoadingForAdditionalDataToBeSet, isLoadingForSubmit, handleChangeNavigationItemPopupVisibility, handleChangeSelection, handleChangeNavigationData, handleResetNavigationData, handleSubmitNavigation, handleLocalizationSelection, handleI18nCopy, getContentTypeItems, error, availableLocale: allAvailableLocale, readNavigationItemFromLocale, slugify, permissions, } = (0, useDataManager_1.default)();
57
+ const { items: availableNavigations, activeItem: activeNavigation, changedActiveItem: changedActiveNavigation, config, navigationItemPopupOpened, isLoading, isLoadingForAdditionalDataToBeSet, isLoadingForSubmit, handleChangeNavigationItemPopupVisibility, handleChangeSelection, handleChangeNavigationData, handleResetNavigationData, handleSubmitNavigation, handleLocalizationSelection, handleI18nCopy, getContentTypeItems, error, availableLocale: allAvailableLocale, readNavigationItemFromLocale, slugify, permissions, handleNavigationsPurge, } = (0, useDataManager_1.default)();
58
58
  const { canAccess, canUpdate } = permissions;
59
59
  const availableLocale = (0, react_1.useMemo)(() => allAvailableLocale.filter(locale => locale !== changedActiveNavigation?.localeCode), [changedActiveNavigation, allAvailableLocale]);
60
60
  const { i18nCopyItemsModal, i18nCopySourceLocale, setI18nCopyModalOpened, setI18nCopySourceLocale } = (0, useI18nCopyNavigationItemsModal_1.useI18nCopyNavigationItemsModal)((0, react_1.useCallback)((sourceLocale) => {
@@ -66,7 +66,7 @@ const View = () => {
66
66
  const openI18nCopyModalOpened = (0, react_1.useCallback)(() => { i18nCopySourceLocale && setI18nCopyModalOpened(true); }, [setI18nCopyModalOpened, i18nCopySourceLocale]);
67
67
  const [activeNavigationItem, setActiveNavigationItemState] = (0, react_1.useState)({});
68
68
  const { formatMessage } = (0, react_intl_1.useIntl)();
69
- const [searchValue, setSearchValue] = (0, react_1.useState)('');
69
+ const [{ value: searchValue, index: searchIndex }, setSearchValue] = (0, react_1.useState)({ value: '' });
70
70
  const [structureChanged, setStructureChanged] = (0, react_1.useState)(false);
71
71
  const isSearchEmpty = (0, lodash_1.isEmpty)(searchValue);
72
72
  const normalisedSearchValue = (searchValue || '').toLowerCase();
@@ -83,6 +83,9 @@ const View = () => {
83
83
  const handleSave = () => isLoadingForSubmit || structureHasErrors
84
84
  ? null
85
85
  : handleSubmitNavigation(formatMessage, (0, parsers_1.transformToRESTPayload)(changedActiveNavigation, config));
86
+ const handleCachePurge = () => {
87
+ handleNavigationsPurge([navigationSelectValue]);
88
+ };
86
89
  const changeNavigationItemPopupState = (visible, editedItem = {}) => {
87
90
  setActiveNavigationItemState(editedItem);
88
91
  handleChangeNavigationItemPopupVisibility(visible);
@@ -114,14 +117,23 @@ const View = () => {
114
117
  handleChangeNavigationData(changedStructure, true);
115
118
  setStructureChanged(true);
116
119
  };
117
- const filteredListFactory = (items, doUse) => items.reduce((acc, item) => {
118
- const subItems = !(0, lodash_1.isEmpty)(item.items) ? filteredListFactory(item.items, doUse) : [];
119
- if (doUse(item))
120
- return [item, ...subItems, ...acc];
121
- else
122
- return [...subItems, ...acc];
123
- }, []);
124
- const filteredList = !isSearchEmpty ? filteredListFactory(changedActiveNavigation.items, (item) => (item?.title || '').toLowerCase().includes(normalisedSearchValue)) : [];
120
+ const filteredListFactory = (items, doUse, activeIndex) => {
121
+ const filteredItems = items.reduce((acc, item) => {
122
+ const subItems = !(0, lodash_1.isEmpty)(item.items) ? filteredListFactory(item.items, doUse) : [];
123
+ if (doUse(item))
124
+ return [item, ...subItems, ...acc];
125
+ else
126
+ return [...subItems, ...acc];
127
+ }, []);
128
+ if (activeIndex !== undefined) {
129
+ const index = activeIndex % filteredItems.length;
130
+ return filteredItems.map((item, currentIndex) => {
131
+ return index === currentIndex ? ({ ...item, isSearchActive: true }) : item;
132
+ });
133
+ }
134
+ return filteredItems;
135
+ };
136
+ const filteredList = !isSearchEmpty ? filteredListFactory(changedActiveNavigation.items.map(_ => ({ ..._ })), (item) => (item?.title || '').toLowerCase().includes(normalisedSearchValue), normalisedSearchValue ? searchIndex : undefined) : [];
125
137
  const changeCollapseItemDeep = (item, isCollapsed) => {
126
138
  if (item.collapsed !== isCollapsed) {
127
139
  return {
@@ -173,6 +185,7 @@ const View = () => {
173
185
  ...item,
174
186
  collapsed: !item.collapsed,
175
187
  updated: true,
188
+ isSearchActive: false,
176
189
  });
177
190
  };
178
191
  const handleItemEdit = (item, levelPath = '', parentAttachedToMenu = true) => {
@@ -191,7 +204,7 @@ const View = () => {
191
204
  };
192
205
  const handleChangeNavigationSelection = (...args) => {
193
206
  handleChangeSelection(...args);
194
- setSearchValue('');
207
+ setSearchValue({ value: '', index: 0 });
195
208
  };
196
209
  const endActions = [
197
210
  {
@@ -223,7 +236,7 @@ const View = () => {
223
236
  });
224
237
  }
225
238
  return (react_1.default.createElement(Main_1.Main, { labelledBy: "title", "aria-busy": isLoadingForSubmit },
226
- react_1.default.createElement(NavigationHeader_1.default, { structureHasErrors: structureHasErrors, structureHasChanged: structureChanged, availableNavigations: availableNavigations, activeNavigation: activeNavigation, handleChangeSelection: handleChangeNavigationSelection, handleSave: handleSave, handleLocalizationSelection: handleLocalizationSelection, config: config, permissions: {
239
+ react_1.default.createElement(NavigationHeader_1.default, { structureHasErrors: structureHasErrors, structureHasChanged: structureChanged, availableNavigations: availableNavigations, activeNavigation: activeNavigation, handleChangeSelection: handleChangeNavigationSelection, handleSave: handleSave, handleCachePurge: handleCachePurge, handleLocalizationSelection: handleLocalizationSelection, config: config, permissions: {
227
240
  canAccess, canUpdate
228
241
  } }),
229
242
  react_1.default.createElement(Layout_1.ContentLayout, null,
@@ -1,2 +1,2 @@
1
- export function checkFormValidity(data: any, schema: any): Promise<Record<string, import("@strapi/helper-plugin/dist/types").TranslationMessage> | null>;
1
+ export function checkFormValidity(data: any, schema: any): Promise<Record<string, import("@strapi/helper-plugin").TranslationMessage> | null>;
2
2
  //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { GenericInputProps } from "@strapi/helper-plugin";
2
+ export type GenericInputOnChangeInput = Parameters<GenericInputProps["onChange"]>[0];
3
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -27,6 +27,7 @@
27
27
  "notification.navigation.submit": "S'han desat els canvis de navegació",
28
28
  "pages.main.header.localization.select.placeholder": "Seleccioneu la configuració regional",
29
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",
30
31
  "pages.settings.actions.disableI18n.confirmation.confirm": "entenc",
31
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ó.",
32
33
  "pages.settings.actions.disableI18n.confirmation.description.line2": "Podeu optar per eliminar les navegacions per a altres configuracions regionals.",
@@ -9,12 +9,14 @@
9
9
  "header.action.expandAll": "Expand All",
10
10
  "submit.cta.cancel": "Cancel",
11
11
  "submit.cta.save": "Save",
12
+ "submit.cta.cache.purge": "Clear cache",
12
13
  "empty": "Your navigation is empty",
13
14
  "empty.cta": "Create first item",
14
15
  "popup.item.header.view": "View navigation item",
15
16
  "popup.item.header.edit": "Edit navigation item",
16
17
  "popup.item.header.new": "New navigation item",
17
18
  "popup.item.form.title.label": "Title",
19
+ "popup.item.form.autoSync.label": "Read fields from related",
18
20
  "popup.item.form.title.placeholder": "Enter the item title or leave blank to pull from related entity",
19
21
  "popup.item.form.uiRouterKey.label": "UI router key",
20
22
  "popup.item.form.uiRouterKey.placeholder": "If empty, auto generated by \"Title\"",
@@ -65,10 +67,14 @@
65
67
  "popup.navigation.manage.button.goBack": "Go back",
66
68
  "popup.navigation.manage.button.cancel": "Cancel",
67
69
  "popup.navigation.manage.button.delete": "Delete",
70
+ "popup.navigation.manage.button.purge": "Clear read cache",
71
+ "popup.navigation.manage.footer.button.purge": "Clear",
72
+ "popup.navigation.manage.purge.header": "This action will clear API read cache. This will result in brief slowdown of reads for navigations below.",
68
73
  "popup.navigation.manage.button.save": "Save",
69
74
  "popup.navigation.manage.button.edit": "Edit",
70
75
  "popup.navigation.manage.button.create": "Create",
71
76
  "popup.navigation.manage.delete.header": "Following navigations will be removed:",
77
+ "popup.navigation.manage.header.CACHE_PURGE": "Read cache clear",
72
78
  "popup.navigation.manage.header.LIST": "All navigations",
73
79
  "popup.navigation.manage.header.CREATE": "New navigation",
74
80
  "popup.navigation.manage.header.DELETE": "Deleting",
@@ -84,11 +90,13 @@
84
90
  "notification.navigation.item.relation.status.published": "published",
85
91
  "notification.error": "Error while processing request.",
86
92
  "notification.error.customField.type": "Unsupported type of custom field",
93
+ "notification.error.customField.media.missing": "Media input component is missing",
87
94
  "notification.error.item.relation": "Relations provided in some items are incorrect",
88
95
  "notification.error.item.slug": "Unable to create valid UI Router Key(slug) from \"{ query }\". \"{ result }\" received",
89
96
  "page.auth.noAccess": "No access",
90
97
  "page.auth.not.allowed": "Oops! It seems like You do not have access to this page...",
91
98
  "pages.main.search.placeholder": "Type to start searching...",
99
+ "pages.main.search.subLabel": "press ENTER to highlight next item",
92
100
  "pages.main.header.localization.select.placeholder": "Select locale",
93
101
  "pages.settings.general.title": "General settings",
94
102
  "pages.settings.additional.title": "Additional settings",
@@ -131,6 +139,8 @@
131
139
  "pages.settings.form.cascadeMenuAttached.label": "Cascade menu attached",
132
140
  "pages.settings.form.cascadeMenuAttached.hint": "Disable if you don't want \"Menu attached\" to cascade on child items",
133
141
  "pages.settings.form.contentTypes.label": "Enable navigation for",
142
+ "pages.settings.form.cache.label": "REST cache",
143
+ "pages.settings.form.cache.hint": "Enable caching of client read requests",
134
144
  "pages.settings.form.i18n.label": "i18n",
135
145
  "pages.settings.form.i18n.hint": "Enable internationalisation",
136
146
  "pages.settings.form.i18n.hint.missingDefaultLocale": "Default locale missing!",
@@ -9,6 +9,7 @@
9
9
  "empty.cta": "Créer un premier élément",
10
10
  "popup.item.header": "Modifiez les éléments de navigation",
11
11
  "popup.item.form.title.label": "Titre",
12
+ "popup.item.form.autoSync.label": "Lire les champs associés",
12
13
  "popup.item.form.title.placeholder": "Saisissez le titre de l'élément ou laissez le champ vide pour utiliser celui de l'entité associée",
13
14
  "popup.item.form.uiRouterKey.label": "Clé de routeur pour l'interface utilisateur",
14
15
  "popup.item.form.uiRouterKey.placeholder": "Si vide, généré automatiquement par \"Title\"",
@@ -9,7 +9,7 @@ const fp_1 = require("lodash/fp");
9
9
  const pluginId_1 = __importDefault(require("../pluginId"));
10
10
  const fetchNavigationConfig = () => (0, helper_plugin_1.request)(`/${pluginId_1.default}/settings/config`, { method: 'GET' });
11
11
  exports.fetchNavigationConfig = fetchNavigationConfig;
12
- const updateNavigationConfig = ({ body }) => (0, helper_plugin_1.request)(`/${pluginId_1.default}/config`, { method: 'PUT', body }, true);
12
+ const updateNavigationConfig = ({ body }) => (0, helper_plugin_1.request)(`/${pluginId_1.default}/config`, { method: 'PUT', body: body }, true);
13
13
  exports.updateNavigationConfig = updateNavigationConfig;
14
14
  const restoreNavigationConfig = () => (0, helper_plugin_1.request)(`/${pluginId_1.default}/config`, { method: 'DELETE' }, true);
15
15
  exports.restoreNavigationConfig = restoreNavigationConfig;
package/package.json CHANGED
@@ -1,106 +1,81 @@
1
1
  {
2
- "name": "strapi-plugin-navigation",
3
- "version": "2.3.2",
4
- "description": "Strapi - Navigation plugin",
5
- "strapi": {
6
- "name": "navigation",
7
- "displayName": "Navigation",
8
- "description": "Create consumable navigation with a simple and straightforward visual builder",
9
- "kind": "plugin"
2
+ "name": "strapi-plugin-navigation",
3
+ "version": "2.5.0",
4
+ "description": "Strapi - Navigation plugin",
5
+ "strapi": {
6
+ "name": "navigation",
7
+ "displayName": "Navigation",
8
+ "description": "Create consumable navigation with a simple and straightforward visual builder",
9
+ "kind": "plugin"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/VirtusLab/strapi-plugin-navigation"
14
+ },
15
+ "scripts": {},
16
+ "types": "./types/index.d.ts",
17
+ "dependencies": {
18
+ "@sindresorhus/slugify": "1.1.0",
19
+ "@strapi/utils": "^4.23.1",
20
+ "lodash": "^4.17.21",
21
+ "pluralize": "^8.0.0",
22
+ "react": "^17.0.0 || ^18.0.0",
23
+ "react-dom": "^17.0.0 || ^18.0.0",
24
+ "react-intl": "6.4.1",
25
+ "react-router": "^5.3.4",
26
+ "react-router-dom": "^5.2.0",
27
+ "uuid": "^8.3.0"
28
+ },
29
+ "devDependencies": {},
30
+ "peerDependencies": {
31
+ "@strapi/data-transfer": "4.23.1",
32
+ "@strapi/strapi": "4.x",
33
+ "react": "^17.0.0 || ^18.0.0",
34
+ "react-dom": "^17.0.0 || ^18.0.0",
35
+ "react-router-dom": "^5.2.0",
36
+ "styled-components": "^5.2.1"
37
+ },
38
+ "author": {
39
+ "name": "VirtusLab",
40
+ "email": "strapi@virtuslab.com",
41
+ "url": "https://virtuslab.com"
42
+ },
43
+ "maintainers": [
44
+ {
45
+ "name": "VirtusLab // Mateusz Ziarko",
46
+ "email": "mziarko@virtuslab.com",
47
+ "url": "https://virtuslab.com"
10
48
  },
11
- "repository": {
12
- "type": "git",
13
- "url": "https://github.com/VirtusLab/strapi-plugin-navigation"
49
+ {
50
+ "name": "VirtusLab // Maksymilian Pamuła",
51
+ "email": "mpamula@virtuslab.com",
52
+ "url": "https://virtuslab.com"
14
53
  },
15
- "scripts": {
16
- "publish:latest": "cd build && npm publish --tag latest",
17
- "prepublish:latest": "npm run clean && npm run build && node build/setup-package.js",
18
- "test:unit": "jest --verbose --coverage",
19
- "test:unit:watch": "jest --watch",
20
- "build": "tsc",
21
- "build:dev": "npm run build && cp ./package.json ./build && cd ./build && yarn",
22
- "clean": "rm -rf build",
23
- "develop": "nodemon --exec \"npm run build:dev\""
54
+ {
55
+ "name": "VirtusLab // Maciej Witkowski",
56
+ "email": "mwitkowski@virtuslab.com",
57
+ "url": "https://virtuslab.com"
24
58
  },
25
- "types": "./types/index.d.ts",
26
- "dependencies": {
27
- "@sindresorhus/slugify": "1.1.0",
28
- "@strapi/utils": "^4.16.2",
29
- "lodash": "^4.17.21",
30
- "pluralize": "^8.0.0",
31
- "react": "^18.2.0",
32
- "react-dom": "^18.2.0",
33
- "react-intl": "6.4.1",
34
- "react-router": "^5.3.4",
35
- "react-router-dom": "^5.3.4",
36
- "uuid": "^8.3.0"
37
- },
38
- "devDependencies": {
39
- "@types/jest": "^27.4.1",
40
- "@types/lodash": "^4.14.181",
41
- "@types/pluralize": "^0.0.29",
42
- "@types/uuid": "^8.3.4",
43
- "codecov": "^3.7.2",
44
- "formik": "^2.2.9",
45
- "jest": "^27.5.1",
46
- "jest-cli": "^27.5.1",
47
- "jest-styled-components": "^7.0.2",
48
- "koa": "^2.8.0",
49
- "nodemon": "^2.0.15",
50
- "strapi-typed": "1.0.17",
51
- "ts-jest": "^27.1.3",
52
- "ts-node": "^10.7.0",
53
- "typescript": "5.2.2"
54
- },
55
- "peerDependencies": {
56
- "@strapi/data-transfer": "4.15.5",
57
- "@strapi/strapi": "4.x",
58
- "react": "^17.0.0 || ^18.0.0",
59
- "react-dom": "^17.0.0 || ^18.0.0",
60
- "react-router-dom": "^5.2.0",
61
- "styled-components": "^5.2.1"
62
- },
63
- "author": {
64
- "name": "VirtusLab",
65
- "email": "strapi@virtuslab.com",
66
- "url": "https://virtuslab.com"
67
- },
68
- "maintainers": [
69
- {
70
- "name": "VirtusLab // Mateusz Ziarko",
71
- "email": "mziarko@virtuslab.com",
72
- "url": "https://virtuslab.com"
73
- },
74
- {
75
- "name": "VirtusLab // Maksymilian Pamuła",
76
- "email": "mpamula@virtuslab.com",
77
- "url": "https://virtuslab.com"
78
- },
79
- {
80
- "name": "VirtusLab // Maciej Witkowski",
81
- "email": "mwitkowski@virtuslab.com",
82
- "url": "https://virtuslab.com"
83
- },
84
- {
85
- "name": "VirtusLab // Tomasz Puch",
86
- "email": "tpuch@virtuslab.com",
87
- "url": "https://virtuslab.com"
88
- }
89
- ],
90
- "engines": {
91
- "node": ">=18.0.0 <=20.x.x",
92
- "npm": ">=6.0.0"
93
- },
94
- "nodemonConfig": {
95
- "ignore": [
96
- "./build/**/*"
97
- ],
98
- "ext": "js,json,ts"
99
- },
100
- "keywords": [
101
- "strapi",
102
- "plugin",
103
- "navigation"
59
+ {
60
+ "name": "VirtusLab // Tomasz Puch",
61
+ "email": "tpuch@virtuslab.com",
62
+ "url": "https://virtuslab.com"
63
+ }
64
+ ],
65
+ "engines": {
66
+ "node": ">=18.0.0 <=20.x.x",
67
+ "npm": ">=6.0.0"
68
+ },
69
+ "nodemonConfig": {
70
+ "ignore": [
71
+ "./build/**/*"
104
72
  ],
105
- "license": "MIT"
106
- }
73
+ "ext": "js,json,ts"
74
+ },
75
+ "keywords": [
76
+ "strapi",
77
+ "plugin",
78
+ "navigation"
79
+ ],
80
+ "license": "MIT"
81
+ }
@@ -6,6 +6,7 @@ const permissions_1 = __importDefault(require("../../permissions"));
6
6
  const graphql_1 = require("../graphql");
7
7
  const navigation_1 = require("../navigation");
8
8
  const config_1 = require("../config");
9
+ const cache_1 = require("../cache");
9
10
  const assertUserPermissionsAvailability = ({ strapi }) => {
10
11
  if (!strapi.plugin("users-permissions")) {
11
12
  throw new Error("In order to make the navigation plugin work the users-permissions plugin is required");
@@ -14,6 +15,7 @@ const assertUserPermissionsAvailability = ({ strapi }) => {
14
15
  const setupGraphQL = graphql_1.graphQLSetupStrategy;
15
16
  const setupNavigation = navigation_1.navigationSetupStrategy;
16
17
  const setupConfig = config_1.configSetupStrategy;
18
+ const setupCache = cache_1.setupCacheStrategy;
17
19
  const setupPermissions = async ({ strapi }) => {
18
20
  const actions = [
19
21
  {
@@ -43,5 +45,6 @@ module.exports = async ({ strapi }) => {
43
45
  await setupConfig({ strapi });
44
46
  await setupGraphQL({ strapi });
45
47
  await setupNavigation({ strapi });
48
+ await setupCache({ strapi });
46
49
  };
47
50
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export * from "./setupStrategy";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./setupStrategy"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ import { AddCacheConfigFieldsInput, CacheConfigFields } from "./types";
2
+ export declare const addCacheConfigFields: <T>({ previousConfig, strapi, }: AddCacheConfigFieldsInput<T>) => Promise<T & CacheConfigFields>;
3
+ //# sourceMappingURL=serviceEnhancers.d.ts.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addCacheConfigFields = void 0;
4
+ const utils_1 = require("./utils");
5
+ const addCacheConfigFields = async ({ previousConfig, strapi, }) => {
6
+ const { enabled, hasCachePlugin } = await (0, utils_1.getCacheStatus)({
7
+ strapi,
8
+ });
9
+ return {
10
+ ...previousConfig,
11
+ isCacheEnabled: enabled,
12
+ isCachePluginEnabled: hasCachePlugin,
13
+ };
14
+ };
15
+ exports.addCacheConfigFields = addCacheConfigFields;
16
+ //# sourceMappingURL=serviceEnhancers.js.map
@@ -0,0 +1,3 @@
1
+ import { IRestCacheSetupStrategy } from "../../types";
2
+ export declare const setupCacheStrategy: IRestCacheSetupStrategy;
3
+ //# sourceMappingURL=setupStrategy.d.ts.map
@@ -0,0 +1,38 @@
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.setupCacheStrategy = void 0;
7
+ const router_1 = __importDefault(require("@koa/router"));
8
+ const client_1 = __importDefault(require("../routes/client"));
9
+ const utils_1 = require("./utils");
10
+ const setupCacheStrategy = async ({ strapi, }) => {
11
+ const { enabled, hasCachePlugin } = await (0, utils_1.getCacheStatus)({ strapi });
12
+ if (hasCachePlugin && enabled) {
13
+ const cachePlugin = strapi.plugin("rest-cache");
14
+ const createCacheMiddleware = cachePlugin?.middleware("recv");
15
+ if (!createCacheMiddleware) {
16
+ console.warn("Cache middleware not present in cache plugin. Stopping");
17
+ console.warn("Notify strapi-navigation-plugin-team");
18
+ return;
19
+ }
20
+ const pluginOption = strapi.config.get("plugin.rest-cache");
21
+ const router = new router_1.default();
22
+ const buildPathFrom = (route) => `/api/${route.info.pluginName}${route.path}`;
23
+ const buildFrom = (route) => ({
24
+ maxAge: pluginOption.strategy?.maxAge ?? 6 * 60 * 1000,
25
+ path: buildPathFrom(route),
26
+ method: "GET",
27
+ paramNames: ["idOrSlug", "childUIKey"],
28
+ keys: { useHeaders: [], useQueryParams: true },
29
+ hitpass: false,
30
+ });
31
+ client_1.default.routes.forEach((route) => {
32
+ router.get(buildPathFrom(route), createCacheMiddleware({ cacheRouteConfig: buildFrom(route) }, { strapi }));
33
+ });
34
+ strapi.server.router.use(router.routes());
35
+ }
36
+ };
37
+ exports.setupCacheStrategy = setupCacheStrategy;
38
+ //# sourceMappingURL=setupStrategy.js.map
@@ -0,0 +1,11 @@
1
+ import { IStrapi } from "strapi-typed";
2
+ export type AddCacheConfigFieldsInput<T> = {
3
+ previousConfig: T;
4
+ strapi: IStrapi;
5
+ viaSettingsPage?: boolean;
6
+ };
7
+ export type CacheConfigFields = {
8
+ isCacheEnabled: boolean;
9
+ isCachePluginEnabled: boolean;
10
+ };
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,11 @@
1
+ import { IStrapi } from "strapi-typed";
2
+ type GetCacheStatusInput = {
3
+ strapi: IStrapi;
4
+ };
5
+ type CacheStatus = {
6
+ hasCachePlugin: boolean;
7
+ enabled: boolean;
8
+ };
9
+ export declare const getCacheStatus: ({ strapi, }: GetCacheStatusInput) => Promise<CacheStatus>;
10
+ export {};
11
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCacheStatus = void 0;
4
+ const getCacheStatus = async ({ strapi, }) => {
5
+ const cachePlugin = strapi.plugin("rest-cache");
6
+ const hasCachePlugin = !!cachePlugin;
7
+ const pluginStore = strapi.store({
8
+ type: "plugin",
9
+ name: "navigation",
10
+ });
11
+ const config = await pluginStore.get({
12
+ key: "config",
13
+ });
14
+ return hasCachePlugin
15
+ ? { hasCachePlugin, enabled: config.isCacheEnabled }
16
+ : { hasCachePlugin, enabled: false };
17
+ };
18
+ exports.getCacheStatus = getCacheStatus;
19
+ //# sourceMappingURL=utils.js.map
@@ -29,6 +29,7 @@ const config = {
29
29
  pathDefaultFields: {},
30
30
  pruneObsoleteI18nNavigations: false,
31
31
  cascadeMenuAttached: true,
32
+ isCacheEnabled: false,
32
33
  },
33
34
  };
34
35
  exports.default = config;
@@ -25,6 +25,7 @@ const configSetupStrategy = async ({ strapi }) => {
25
25
  pruneObsoleteI18nNavigations: false,
26
26
  pathDefaultFields: getWithFallback("pathDefaultFields"),
27
27
  cascadeMenuAttached: getWithFallback("cascadeMenuAttached"),
28
+ isCacheEnabled: getWithFallback("isCacheEnabled"),
28
29
  };
29
30
  handleDeletedContentTypes(config, { strapi });
30
31
  (0, utils_1.validateAdditionalFields)(config.additionalFields);
@@ -79,6 +79,7 @@ declare const _default: {
79
79
  };
80
80
  };
81
81
  };
82
+ lifecycles: Record<import("../../types").LifeCycleHookName, import("../../types").Effect<import("../../types").LifeCycleEvent<import("../../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
82
83
  };
83
84
  "navigation-item": {
84
85
  schema: {
@@ -182,6 +183,7 @@ declare const _default: {
182
183
  };
183
184
  };
184
185
  };
186
+ lifecycles: Record<import("../../types").LifeCycleHookName, import("../../types").Effect<import("../../types").LifeCycleEvent<import("../../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
185
187
  };
186
188
  "navigations-items-related": {
187
189
  schema: {
@@ -53,6 +53,7 @@ declare const _default: {
53
53
  };
54
54
  };
55
55
  };
56
+ lifecycles: Record<import("../../../types").LifeCycleHookName, import("../../../types").Effect<import("../../../types").LifeCycleEvent<import("../../../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
56
57
  };
57
58
  export default _default;
58
59
  //# sourceMappingURL=index.d.ts.map
@@ -3,8 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lifecycles_1 = __importDefault(require("./lifecycles"));
6
7
  const schema_1 = __importDefault(require("./schema"));
7
8
  exports.default = {
8
- schema: schema_1.default
9
+ schema: schema_1.default,
10
+ lifecycles: lifecycles_1.default,
9
11
  };
10
12
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: Record<import("../../../types").LifeCycleHookName, import("../../../types").Effect<import("../../../types").LifeCycleEvent<import("../../../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
2
+ export default _default;
3
+ //# sourceMappingURL=lifecycles.d.ts.map
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../../utils");
4
+ exports.default = (0, utils_1.buildAllHookListeners)("navigation", {
5
+ strapi,
6
+ });
7
+ //# sourceMappingURL=lifecycles.js.map
@@ -100,6 +100,7 @@ declare const _default: {
100
100
  };
101
101
  };
102
102
  };
103
+ lifecycles: Record<import("../../../types").LifeCycleHookName, import("../../../types").Effect<import("../../../types").LifeCycleEvent<import("../../../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
103
104
  };
104
105
  export default _default;
105
106
  //# sourceMappingURL=index.d.ts.map
@@ -3,8 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lifecycles_1 = __importDefault(require("./lifecycles"));
6
7
  const schema_1 = __importDefault(require("./schema"));
7
8
  exports.default = {
8
- schema: schema_1.default
9
+ schema: schema_1.default,
10
+ lifecycles: lifecycles_1.default
9
11
  };
10
12
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: Record<import("../../../types").LifeCycleHookName, import("../../../types").Effect<import("../../../types").LifeCycleEvent<import("../../../types").LifeCycleHookName, unknown, Record<string, unknown>>>>;
2
+ export default _default;
3
+ //# sourceMappingURL=lifecycles.d.ts.map