strapi-plugin-navigation 2.0.13 → 2.1.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 (288) hide show
  1. package/README.md +105 -27
  2. package/admin/src/components/Alert/styles.d.ts +2 -0
  3. package/admin/src/components/Alert/styles.js +10 -4
  4. package/admin/src/components/CollapseButton/index.d.ts +7 -0
  5. package/admin/src/components/CollapseButton/index.js +21 -22
  6. package/admin/src/components/ConfirmationDialog/index.d.ts +28 -0
  7. package/admin/src/components/ConfirmationDialog/index.js +32 -54
  8. package/admin/src/components/EmptyView/index.d.ts +3 -0
  9. package/admin/src/components/EmptyView/index.js +9 -7
  10. package/admin/src/components/Item/ItemCardBadge/index.d.ts +3 -0
  11. package/admin/src/components/Item/ItemCardBadge/index.js +11 -7
  12. package/admin/src/components/Item/ItemCardHeader/Wrapper.d.ts +3 -0
  13. package/admin/src/components/Item/ItemCardHeader/Wrapper.js +10 -6
  14. package/admin/src/components/Item/ItemCardHeader/index.d.ts +12 -0
  15. package/admin/src/components/Item/ItemCardHeader/index.js +33 -52
  16. package/admin/src/components/Item/ItemCardRemovedOverlay/index.d.ts +2 -0
  17. package/admin/src/components/Item/ItemCardRemovedOverlay/index.js +10 -4
  18. package/admin/src/components/Item/Wrapper.d.ts +3 -0
  19. package/admin/src/components/Item/Wrapper.js +10 -6
  20. package/admin/src/components/Item/index.d.ts +31 -0
  21. package/admin/src/components/Item/index.js +163 -242
  22. package/admin/src/components/NavigationItemList/Wrapper.d.ts +3 -0
  23. package/admin/src/components/NavigationItemList/Wrapper.js +9 -5
  24. package/admin/src/components/NavigationItemList/index.d.ts +35 -0
  25. package/admin/src/components/NavigationItemList/index.js +28 -66
  26. package/admin/src/components/RestartAlert/index.d.ts +3 -0
  27. package/admin/src/components/RestartAlert/index.js +10 -5
  28. package/admin/src/components/Search/index.d.ts +6 -0
  29. package/admin/src/components/Search/index.js +57 -46
  30. package/admin/src/components/icons/navigation.d.ts +6 -0
  31. package/admin/src/components/icons/navigation.js +11 -13
  32. package/admin/src/contexts/DataManagerContext.d.ts +3 -0
  33. package/admin/src/contexts/DataManagerContext.js +6 -5
  34. package/admin/src/hooks/useAllContentTypes.d.ts +6 -0
  35. package/admin/src/hooks/useAllContentTypes.js +10 -11
  36. package/admin/src/hooks/useDataManager.d.ts +3 -0
  37. package/admin/src/hooks/useDataManager.js +10 -6
  38. package/admin/src/hooks/useI18nCopyNavigationItemsModal.d.ts +9 -0
  39. package/admin/src/hooks/useI18nCopyNavigationItemsModal.js +51 -0
  40. package/admin/src/hooks/useNavigationConfig.d.ts +10 -0
  41. package/admin/src/hooks/useNavigationConfig.js +52 -56
  42. package/admin/src/hooks/useNavigationManager.d.ts +7 -0
  43. package/admin/src/hooks/useNavigationManager.js +41 -0
  44. package/admin/src/index.d.ts +14 -0
  45. package/admin/src/index.js +92 -76
  46. package/admin/src/pages/App/index.d.ts +3 -0
  47. package/admin/src/pages/App/index.js +43 -31
  48. package/admin/src/pages/DataManagerProvider/actions.d.ts +19 -0
  49. package/admin/src/pages/DataManagerProvider/actions.js +22 -26
  50. package/admin/src/pages/DataManagerProvider/index.d.ts +12 -0
  51. package/admin/src/pages/DataManagerProvider/index.js +316 -298
  52. package/admin/src/pages/DataManagerProvider/init.d.ts +3 -0
  53. package/admin/src/pages/DataManagerProvider/init.js +5 -3
  54. package/admin/src/pages/DataManagerProvider/reducer.d.ts +19 -0
  55. package/admin/src/pages/DataManagerProvider/reducer.js +119 -121
  56. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts +24 -0
  57. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js +88 -0
  58. package/admin/src/pages/SettingsPage/index.d.ts +3 -0
  59. package/admin/src/pages/SettingsPage/index.js +242 -335
  60. package/admin/src/pages/SettingsPage/utils/functions.d.ts +5 -0
  61. package/admin/src/pages/SettingsPage/utils/functions.js +3 -8
  62. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.d.ts +14 -0
  63. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.js +15 -0
  64. package/admin/src/pages/View/components/NavigationContentHeader/index.d.ts +6 -0
  65. package/admin/src/pages/View/components/NavigationContentHeader/index.js +13 -17
  66. package/admin/src/pages/View/components/NavigationHeader/index.d.ts +12 -0
  67. package/admin/src/pages/View/components/NavigationHeader/index.js +79 -65
  68. package/admin/src/pages/View/components/NavigationHeader/styles.d.ts +2 -0
  69. package/admin/src/pages/View/components/NavigationHeader/styles.js +10 -5
  70. package/admin/src/pages/View/components/NavigationItemForm/index.d.ts +57 -0
  71. package/admin/src/pages/View/components/NavigationItemForm/index.js +416 -453
  72. package/admin/src/pages/View/components/NavigationItemForm/utils/form.d.ts +45 -0
  73. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js +84 -52
  74. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.d.ts +23 -0
  75. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.js +24 -34
  76. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.d.ts +4 -0
  77. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.js +16 -16
  78. package/admin/src/pages/View/components/NavigationItemPopup/index.d.ts +30 -0
  79. package/admin/src/pages/View/components/NavigationItemPopup/index.js +85 -108
  80. package/admin/src/pages/View/components/NavigationManager/Create/index.d.ts +9 -0
  81. package/admin/src/pages/View/components/NavigationManager/Create/index.js +57 -0
  82. package/admin/src/pages/View/components/NavigationManager/Delete/index.d.ts +8 -0
  83. package/admin/src/pages/View/components/NavigationManager/Delete/index.js +28 -0
  84. package/admin/src/pages/View/components/NavigationManager/Edit/index.d.ts +8 -0
  85. package/admin/src/pages/View/components/NavigationManager/Edit/index.js +54 -0
  86. package/admin/src/pages/View/components/NavigationManager/Error/index.d.ts +8 -0
  87. package/admin/src/pages/View/components/NavigationManager/Error/index.js +53 -0
  88. package/admin/src/pages/View/components/NavigationManager/Form/index.d.ts +19 -0
  89. package/admin/src/pages/View/components/NavigationManager/Form/index.js +98 -0
  90. package/admin/src/pages/View/components/NavigationManager/List/index.d.ts +8 -0
  91. package/admin/src/pages/View/components/NavigationManager/List/index.js +138 -0
  92. package/admin/src/pages/View/components/NavigationManager/index.d.ts +10 -0
  93. package/admin/src/pages/View/components/NavigationManager/index.js +189 -0
  94. package/admin/src/pages/View/components/NavigationManager/types.d.ts +53 -0
  95. package/admin/src/pages/View/components/NavigationManager/types.js +3 -0
  96. package/admin/src/pages/View/index.d.ts +4 -0
  97. package/admin/src/pages/View/index.js +231 -304
  98. package/admin/src/pages/View/utils/enums.d.ts +9 -0
  99. package/admin/src/pages/View/utils/enums.js +11 -8
  100. package/admin/src/pages/View/utils/form.d.ts +2 -0
  101. package/admin/src/pages/View/utils/form.js +15 -12
  102. package/admin/src/pages/View/utils/index.d.ts +2 -0
  103. package/admin/src/pages/View/utils/index.js +11 -3
  104. package/admin/src/pages/View/utils/parsers.d.ts +49 -0
  105. package/admin/src/pages/View/utils/parsers.js +239 -278
  106. package/admin/src/permissions.d.ts +12 -0
  107. package/admin/src/permissions.js +11 -7
  108. package/admin/src/pluginId.d.ts +3 -0
  109. package/admin/src/pluginId.js +2 -2
  110. package/admin/src/translations/en.json +157 -104
  111. package/admin/src/translations/fr.json +44 -44
  112. package/admin/src/translations/index.d.ts +12 -0
  113. package/admin/src/translations/index.js +17 -11
  114. package/admin/src/utils/api.d.ts +8 -0
  115. package/admin/src/utils/api.js +54 -50
  116. package/admin/src/utils/getTrad.d.ts +3 -0
  117. package/admin/src/utils/getTrad.js +9 -5
  118. package/admin/src/utils/index.d.ts +18 -0
  119. package/admin/src/utils/index.js +36 -15
  120. package/package.json +20 -19
  121. package/permissions.d.ts +9 -0
  122. package/permissions.js +5 -4
  123. package/server/bootstrap/index.d.ts +4 -0
  124. package/server/bootstrap/index.js +41 -0
  125. package/server/config/index.d.ts +5 -0
  126. package/server/config/index.js +33 -9
  127. package/server/config/setupStrategy.d.ts +3 -0
  128. package/server/config/setupStrategy.js +38 -0
  129. package/server/content-types/audience/index.d.ts +27 -0
  130. package/server/content-types/audience/index.js +9 -8
  131. package/server/content-types/audience/schema.d.ts +25 -0
  132. package/server/content-types/audience/schema.js +26 -0
  133. package/server/content-types/index.d.ts +255 -0
  134. package/server/content-types/index.js +15 -12
  135. package/server/content-types/navigation/index.d.ts +64 -0
  136. package/server/content-types/navigation/index.js +11 -8
  137. package/server/content-types/navigation/lifecycle.d.ts +9 -0
  138. package/server/content-types/navigation/lifecycle.js +8 -12
  139. package/server/content-types/navigation/schema.d.ts +55 -0
  140. package/server/content-types/navigation/schema.js +56 -0
  141. package/server/content-types/navigation-item/index.d.ts +112 -0
  142. package/server/content-types/navigation-item/index.js +11 -8
  143. package/server/content-types/navigation-item/lifecycle.d.ts +16 -0
  144. package/server/content-types/navigation-item/lifecycle.js +28 -32
  145. package/server/content-types/navigation-item/schema.d.ts +97 -0
  146. package/server/content-types/navigation-item/schema.js +102 -0
  147. package/server/content-types/navigations-items-related/index.d.ts +56 -0
  148. package/server/content-types/navigations-items-related/index.js +11 -8
  149. package/server/content-types/navigations-items-related/lifecycle.d.ts +8 -0
  150. package/server/content-types/navigations-items-related/lifecycle.js +20 -17
  151. package/server/content-types/navigations-items-related/schema.d.ts +49 -0
  152. package/server/content-types/navigations-items-related/schema.js +50 -0
  153. package/server/controllers/admin.d.ts +4 -0
  154. package/server/controllers/admin.js +130 -0
  155. package/server/controllers/client.d.ts +4 -0
  156. package/server/controllers/client.js +57 -0
  157. package/server/controllers/index.d.ts +4 -0
  158. package/server/controllers/index.js +12 -6
  159. package/server/destroy.d.ts +3 -0
  160. package/server/destroy.js +5 -0
  161. package/server/graphql/config.d.ts +4 -0
  162. package/server/graphql/config.js +28 -0
  163. package/server/graphql/index.d.ts +2 -0
  164. package/server/graphql/index.js +18 -22
  165. package/server/graphql/queries/index.d.ts +3 -0
  166. package/server/graphql/queries/index.js +15 -15
  167. package/server/graphql/queries/render-navigation-child.d.ts +15 -0
  168. package/server/graphql/queries/render-navigation-child.js +24 -15
  169. package/server/graphql/queries/render-navigation.d.ts +21 -0
  170. package/server/graphql/queries/render-navigation.js +31 -15
  171. package/server/graphql/resolvers-config.d.ts +10 -0
  172. package/server/graphql/resolvers-config.js +5 -3
  173. package/server/graphql/setupStrategy.d.ts +3 -0
  174. package/server/graphql/setupStrategy.js +15 -0
  175. package/server/graphql/types/content-types-name-fields.d.ts +6 -0
  176. package/server/graphql/types/content-types-name-fields.js +13 -9
  177. package/server/graphql/types/content-types.d.ts +5 -0
  178. package/server/graphql/types/content-types.js +17 -15
  179. package/server/graphql/types/create-navigation-item.d.ts +5 -0
  180. package/server/graphql/types/create-navigation-item.js +18 -16
  181. package/server/graphql/types/create-navigation-related.d.ts +5 -0
  182. package/server/graphql/types/create-navigation-related.js +9 -7
  183. package/server/graphql/types/create-navigation.d.ts +5 -0
  184. package/server/graphql/types/create-navigation.js +8 -6
  185. package/server/graphql/types/index.d.ts +3 -0
  186. package/server/graphql/types/index.js +15 -13
  187. package/server/graphql/types/navigation-config.d.ts +5 -0
  188. package/server/graphql/types/navigation-config.js +10 -8
  189. package/server/graphql/types/navigation-details.d.ts +5 -0
  190. package/server/graphql/types/navigation-details.js +11 -9
  191. package/server/graphql/types/navigation-item-related-data.d.ts +5 -0
  192. package/server/graphql/types/navigation-item-related-data.js +9 -0
  193. package/server/graphql/types/navigation-item-related.d.ts +7 -0
  194. package/server/graphql/types/navigation-item-related.js +25 -0
  195. package/server/graphql/types/navigation-item.d.ts +5 -0
  196. package/server/graphql/types/navigation-item.js +28 -29
  197. package/server/graphql/types/navigation-render-type.d.ts +5 -0
  198. package/server/graphql/types/navigation-render-type.js +7 -4
  199. package/server/graphql/types/navigation.d.ts +5 -0
  200. package/server/graphql/types/navigation.js +10 -8
  201. package/server/i18n/constant.d.ts +2 -0
  202. package/server/i18n/constant.js +5 -0
  203. package/server/i18n/errors.d.ts +7 -0
  204. package/server/i18n/errors.js +14 -0
  205. package/server/i18n/graphQLEnhancers.d.ts +10 -0
  206. package/server/i18n/graphQLEnhancers.js +10 -0
  207. package/server/i18n/index.d.ts +8 -0
  208. package/server/i18n/index.js +23 -0
  209. package/server/i18n/navigationSetupStrategy.d.ts +3 -0
  210. package/server/i18n/navigationSetupStrategy.js +119 -0
  211. package/server/i18n/serviceEnhancers.d.ts +13 -0
  212. package/server/i18n/serviceEnhancers.js +156 -0
  213. package/server/i18n/types.d.ts +60 -0
  214. package/server/i18n/types.js +3 -0
  215. package/server/i18n/utils.d.ts +12 -0
  216. package/server/i18n/utils.js +29 -0
  217. package/server/index.d.ts +273 -0
  218. package/server/index.js +26 -0
  219. package/server/navigation/index.d.ts +2 -0
  220. package/server/navigation/index.js +18 -0
  221. package/server/navigation/setupStrategy.d.ts +3 -0
  222. package/server/navigation/setupStrategy.js +39 -0
  223. package/server/register/index.d.ts +3 -0
  224. package/server/register/index.js +4 -0
  225. package/server/routes/admin.d.ts +4 -0
  226. package/server/routes/admin.js +82 -61
  227. package/server/routes/client.d.ts +4 -0
  228. package/server/routes/client.js +25 -21
  229. package/server/routes/index.d.ts +6 -0
  230. package/server/routes/index.js +13 -4
  231. package/server/services/admin.d.ts +5 -0
  232. package/server/services/admin.js +238 -0
  233. package/server/services/client.d.ts +5 -0
  234. package/server/services/client.js +249 -0
  235. package/server/services/common.d.ts +5 -0
  236. package/server/services/common.js +313 -0
  237. package/server/services/index.d.ts +7 -0
  238. package/server/services/index.js +14 -6
  239. package/server/utils/constant.d.ts +27 -0
  240. package/server/utils/constant.js +24 -0
  241. package/server/utils/functions.d.ts +139 -0
  242. package/server/utils/functions.js +226 -0
  243. package/server/utils/index.d.ts +3 -0
  244. package/server/utils/index.js +19 -0
  245. package/strapi-admin.d.ts +3 -0
  246. package/strapi-admin.js +8 -1
  247. package/strapi-server.d.ts +273 -0
  248. package/strapi-server.js +6 -17
  249. package/tsconfig.tsbuildinfo +1 -0
  250. package/types/bootstrap.d.ts +13 -0
  251. package/types/bootstrap.js +3 -0
  252. package/types/config.d.ts +21 -0
  253. package/types/config.js +3 -0
  254. package/types/contentTypes.d.ts +85 -0
  255. package/types/contentTypes.js +3 -0
  256. package/types/controllers.d.ts +48 -0
  257. package/types/controllers.js +5 -0
  258. package/types/graphQL.d.ts +3 -0
  259. package/types/graphQL.js +3 -0
  260. package/types/i18n.d.ts +9 -0
  261. package/types/i18n.js +3 -0
  262. package/types/index.d.ts +9 -0
  263. package/types/index.js +25 -0
  264. package/types/services.d.ts +74 -0
  265. package/types/services.js +3 -0
  266. package/types/utils.d.ts +62 -0
  267. package/types/utils.js +27 -0
  268. package/utils/InvalidParamNavigationError.d.ts +4 -0
  269. package/utils/InvalidParamNavigationError.js +8 -0
  270. package/utils/NavigationError.d.ts +5 -0
  271. package/utils/NavigationError.js +7 -7
  272. package/__mocks__/pages.settings.json +0 -25
  273. package/__mocks__/strapi.js +0 -207
  274. package/jest.config.js +0 -14
  275. package/server/bootstrap.js +0 -52
  276. package/server/config.js +0 -9
  277. package/server/content-types/audience/lifecycle.js +0 -8
  278. package/server/content-types/audience/schema.json +0 -23
  279. package/server/content-types/navigation/schema.json +0 -45
  280. package/server/content-types/navigation-item/schema.json +0 -99
  281. package/server/content-types/navigations-items-related/schema.json +0 -47
  282. package/server/controllers/navigation.js +0 -105
  283. package/server/graphql/types/navigation-related.js +0 -25
  284. package/server/services/__tests__/functions.test.js +0 -48
  285. package/server/services/__tests__/navigation.test.js +0 -91
  286. package/server/services/navigation.js +0 -791
  287. package/server/services/utils/constant.js +0 -21
  288. package/server/services/utils/functions.js +0 -226
@@ -0,0 +1,2 @@
1
+ export function checkFormValidity(data: any, schema: any): Promise<any>;
2
+ //# sourceMappingURL=form.d.ts.map
@@ -1,13 +1,16 @@
1
- import { getYupInnerErrors } from '@strapi/helper-plugin';
2
-
3
- export const checkFormValidity = async (data, schema) => {
4
- let errors = null;
5
-
6
- try {
7
- await schema.validate(data, { abortEarly: false });
8
- } catch (err) {
9
- errors = getYupInnerErrors(err);
10
- }
11
-
12
- return errors;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkFormValidity = void 0;
4
+ const helper_plugin_1 = require("@strapi/helper-plugin");
5
+ const checkFormValidity = async (data, schema) => {
6
+ let errors = null;
7
+ try {
8
+ await schema.validate(data, { abortEarly: false });
9
+ }
10
+ catch (err) {
11
+ errors = (0, helper_plugin_1.getYupInnerErrors)(err);
12
+ }
13
+ return errors;
13
14
  };
15
+ exports.checkFormValidity = checkFormValidity;
16
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,11 @@
1
- /* eslint-disable import/prefer-default-export */
2
- export { default as forms } from "./forms";
3
- export { default as parsers } from "./parsers";
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.parsers = exports.forms = void 0;
7
+ var forms_1 = require("./forms");
8
+ Object.defineProperty(exports, "forms", { enumerable: true, get: function () { return __importDefault(forms_1).default; } });
9
+ var parsers_1 = require("./parsers");
10
+ Object.defineProperty(exports, "parsers", { enumerable: true, get: function () { return __importDefault(parsers_1).default; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,49 @@
1
+ export function transformItemToRESTPayload(item: any, parent?: undefined, master?: undefined, config?: {}, parentAttachedToMenu?: boolean): {
2
+ id: any;
3
+ parent: undefined;
4
+ master: undefined;
5
+ title: any;
6
+ type: any;
7
+ updated: any;
8
+ removed: any;
9
+ order: any;
10
+ uiRouterKey: any;
11
+ collapsed: any;
12
+ menuAttached: any;
13
+ audience: any;
14
+ path: any;
15
+ externalPath: any;
16
+ related: {
17
+ refId: any;
18
+ ref: any;
19
+ field: any;
20
+ }[] | undefined;
21
+ items: any;
22
+ };
23
+ export function transformToRESTPayload(payload: any, config?: {}): {
24
+ id: any;
25
+ name: any;
26
+ visible: any;
27
+ items: any;
28
+ };
29
+ export function transformItemToViewPayload(payload: any, items: any[] | undefined, config: any): any;
30
+ export function prepareItemToViewPayload({ items, viewParentId, config, structureIdPrefix }: {
31
+ items?: any[] | undefined;
32
+ viewParentId?: null | undefined;
33
+ config?: {} | undefined;
34
+ structureIdPrefix?: string | undefined;
35
+ }): any;
36
+ export function extractRelatedItemLabel(item?: {}, fields?: {}, config?: {}): any;
37
+ export function usedContentTypes(items?: any[]): any;
38
+ export function isRelationCorrect({ related, type }: {
39
+ related: any;
40
+ type: any;
41
+ }): boolean;
42
+ export function isRelationPublished({ relatedRef, relatedType, type, isCollection }: {
43
+ relatedRef: any;
44
+ relatedType?: {} | undefined;
45
+ type: any;
46
+ isCollection: any;
47
+ }): any;
48
+ export function validateNavigationStructure(items?: any[]): any;
49
+ //# sourceMappingURL=parsers.d.ts.map
@@ -1,307 +1,268 @@
1
- import { v4 as uuid, validate as isUuid } from 'uuid'
2
- import { find, get, isArray, isEmpty, isNil, isNumber, isObject, isString, last, omit, orderBy } from 'lodash';
3
- import { navigationItemType } from './enums';
4
-
5
- export const transformItemToRESTPayload = (
6
- item,
7
- parent = undefined,
8
- master = undefined,
9
- config = {},
10
- parentAttachedToMenu = true,
11
- ) => {
12
- const {
13
- id,
14
- title,
15
- type = navigationItemType.INTERNAL,
16
- updated = false,
17
- removed = false,
18
- uiRouterKey,
19
- menuAttached,
20
- path,
21
- externalPath,
22
- related,
23
- relatedType,
24
- order,
25
- audience = [],
26
- items = [],
27
- collapsed,
28
- isSingle
29
- } = item;
30
- const isExternal = type === navigationItemType.EXTERNAL;
31
- const isWrapper = type === navigationItemType.WRAPPER;
32
- const { contentTypes = [] } = config;
33
-
34
- const parsedRelated = Number(related);
35
- const relatedId = isExternal || isWrapper || isNaN(parsedRelated) ? related?.value || related : parsedRelated;
36
-
37
- const relatedContentType = relatedType ?
38
- find(contentTypes,
39
- ct => ct.uid === relatedType) :
40
- undefined;
41
- const itemAttachedToMenu = menuAttached && parentAttachedToMenu;
42
- return {
43
- id,
44
- parent,
45
- master,
46
- title,
47
- type,
48
- updated,
49
- removed,
50
- order,
51
- uiRouterKey,
52
- collapsed,
53
- menuAttached: itemAttachedToMenu,
54
- audience: audience.map((audienceItem) =>
55
- isObject(audienceItem) ? audienceItem.value : audienceItem,
56
- ),
57
- path: isExternal ? undefined : path,
58
- externalPath: isExternal ? externalPath : undefined,
59
- related: isExternal || isWrapper
60
- ? undefined
61
- : [
62
- {
63
- refId: isSingle && !relatedId ? 1 : relatedId,
64
- ref: relatedContentType ? relatedContentType.uid : relatedType,
65
- field: relatedContentType && relatedContentType.relatedField ? relatedContentType.relatedField : 'navigation',
66
- },
67
- ],
68
- items: items.map((iItem) => transformItemToRESTPayload(iItem, id, master, config, itemAttachedToMenu)),
69
- };
70
- };
71
-
72
- export const transformToRESTPayload = (payload, config = {}) => {
73
- const { id, name, visible, items } = payload;
74
- return {
75
- id,
76
- name,
77
- visible,
78
- items: items.map((item) => transformItemToRESTPayload(item, null, id, config)),
79
- };
80
- };
81
-
82
- const linkRelations = (item, config) => {
83
- const { contentTypeItems = [], contentTypes = [] } = config;
84
- const { type, related, relatedType, relatedRef, isSingle } = item;
85
- let relation = {
86
- related: undefined,
87
- relatedRef: undefined,
88
- relatedType: undefined,
89
- };
90
-
91
- if (isSingle && relatedType) {
92
- const relatedContentType = contentTypes.find(_ => relatedType === _.uid) || {};
93
- const { singleRelatedItem = {} } = item;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateNavigationStructure = exports.isRelationPublished = exports.isRelationCorrect = exports.usedContentTypes = exports.extractRelatedItemLabel = exports.prepareItemToViewPayload = exports.transformItemToViewPayload = exports.transformToRESTPayload = exports.transformItemToRESTPayload = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const lodash_1 = require("lodash");
6
+ const enums_1 = require("./enums");
7
+ const transformItemToRESTPayload = (item, parent = undefined, master = undefined, config = {}, parentAttachedToMenu = true) => {
8
+ const { id, title, type = enums_1.navigationItemType.INTERNAL, updated = false, removed = false, uiRouterKey, menuAttached, path, externalPath, related, relatedType, order, audience = [], items = [], collapsed, isSingle } = item;
9
+ const isExternal = type === enums_1.navigationItemType.EXTERNAL;
10
+ const isWrapper = type === enums_1.navigationItemType.WRAPPER;
11
+ const { contentTypes = [] } = config;
12
+ const parsedRelated = Number(related);
13
+ const relatedId = isExternal || isWrapper || isNaN(parsedRelated) ? related?.value || related : parsedRelated;
14
+ const relatedContentType = relatedType ?
15
+ (0, lodash_1.find)(contentTypes, ct => ct.uid === relatedType) :
16
+ undefined;
17
+ const itemAttachedToMenu = menuAttached && parentAttachedToMenu;
94
18
  return {
95
- ...item,
96
- relatedType,
97
- relatedRef: {
98
- ...singleRelatedItem,
99
- ...omit(relatedContentType, 'collectionName'),
100
- isSingle,
101
- __collectionUid: relatedContentType.uid,
102
- },
19
+ id,
20
+ parent,
21
+ master,
22
+ title,
23
+ type,
24
+ updated,
25
+ removed,
26
+ order,
27
+ uiRouterKey,
28
+ collapsed,
29
+ menuAttached: itemAttachedToMenu,
30
+ audience: audience.map((audienceItem) => (0, lodash_1.isObject)(audienceItem) ? audienceItem.value : audienceItem),
31
+ path: isExternal ? undefined : path,
32
+ externalPath: isExternal ? externalPath : undefined,
33
+ related: isExternal || isWrapper
34
+ ? undefined
35
+ : [
36
+ {
37
+ refId: isSingle && !relatedId ? 1 : relatedId,
38
+ ref: relatedContentType ? relatedContentType.uid : relatedType,
39
+ field: relatedContentType && relatedContentType.relatedField ? relatedContentType.relatedField : 'navigation',
40
+ },
41
+ ],
42
+ items: items.map((iItem) => (0, exports.transformItemToRESTPayload)(iItem, id, master, config, itemAttachedToMenu)),
103
43
  };
104
- }
105
-
106
- // we got empty array after remove object in relation
107
- // from API we got related as array but on edit it is primitive type
108
- if ((type !== navigationItemType.INTERNAL) || !related || (isObject(related) && isEmpty(related))) {
44
+ };
45
+ exports.transformItemToRESTPayload = transformItemToRESTPayload;
46
+ const transformToRESTPayload = (payload, config = {}) => {
47
+ const { id, name, visible, items } = payload;
109
48
  return {
110
- ...item,
111
- ...relation,
49
+ id,
50
+ name,
51
+ visible,
52
+ items: items.map((item) => (0, exports.transformItemToRESTPayload)(item, null, id, config)),
112
53
  };
113
- }
114
-
115
- const relatedItem = isArray(related) ? last(related) : related;
116
-
117
- const parsedRelated = Number(related);
118
- const relatedId = isNaN(parsedRelated) ? related : parsedRelated;
119
-
120
- const relationNotChanged = relatedRef && relatedItem ? relatedRef.id === relatedItem : false;
121
-
122
- if (relationNotChanged) {
123
- return item;
124
- }
125
-
126
- const shouldFindRelated = (isNumber(related) || isUuid(related) || isString(related)) && !relatedRef;
127
- const shouldBuildRelated = !relatedRef || (relatedRef && (relatedRef.id !== relatedId));
128
-
129
- if (shouldBuildRelated && !shouldFindRelated) {
130
- const relatedContentType = find(contentTypes,
131
- ct => ct.uid === relatedItem.__contentType, {});
132
- const { uid, labelSingular, isSingle } = relatedContentType;
133
- relation = {
134
- related: relatedItem.id,
135
- relatedRef: {
136
- ...relatedItem,
137
- __collectionUid: uid,
138
- isSingle,
139
- labelSingular,
140
- },
141
- relatedType: uid,
142
- };
143
- } else if (shouldFindRelated) {
144
- const relatedRef = find(contentTypeItems, cti => cti.id === relatedId);
145
- const relatedContentType = find(contentTypes, ct => ct.uid === relatedType);
146
- const { uid, contentTypeName, labelSingular, isSingle } = relatedContentType;
147
-
148
- relation = {
149
- relatedRef: {
150
- ...relatedRef,
151
- __collectionUid: uid,
152
- __contentType: contentTypeName,
153
- isSingle,
154
- labelSingular,
155
- },
54
+ };
55
+ exports.transformToRESTPayload = transformToRESTPayload;
56
+ const linkRelations = (item, config) => {
57
+ const { contentTypeItems = [], contentTypes = [] } = config;
58
+ const { type, related, relatedType, relatedRef, isSingle } = item;
59
+ let relation = {
60
+ related: undefined,
61
+ relatedRef: undefined,
62
+ relatedType: undefined,
156
63
  };
157
- } else {
64
+ if (isSingle && relatedType) {
65
+ const relatedContentType = contentTypes.find(_ => relatedType === _.uid) || {};
66
+ const { singleRelatedItem = {} } = item;
67
+ return {
68
+ ...item,
69
+ relatedType,
70
+ relatedRef: {
71
+ ...singleRelatedItem,
72
+ ...(0, lodash_1.omit)(relatedContentType, 'collectionName'),
73
+ isSingle,
74
+ __collectionUid: relatedContentType.uid,
75
+ },
76
+ };
77
+ }
78
+ if ((type !== enums_1.navigationItemType.INTERNAL) || !related || ((0, lodash_1.isObject)(related) && (0, lodash_1.isEmpty)(related))) {
79
+ return {
80
+ ...item,
81
+ ...relation,
82
+ };
83
+ }
84
+ const relatedItem = (0, lodash_1.isArray)(related) ? (0, lodash_1.last)(related) : related;
85
+ const parsedRelated = Number(related);
86
+ const relatedId = isNaN(parsedRelated) ? related : parsedRelated;
87
+ const relationNotChanged = relatedRef && relatedItem ? relatedRef.id === relatedItem : false;
88
+ if (relationNotChanged) {
89
+ return item;
90
+ }
91
+ const shouldFindRelated = ((0, lodash_1.isNumber)(related) || (0, uuid_1.validate)(related) || (0, lodash_1.isString)(related)) && !relatedRef;
92
+ const shouldBuildRelated = !relatedRef || (relatedRef && (relatedRef.id !== relatedId));
93
+ if (shouldBuildRelated && !shouldFindRelated) {
94
+ const relatedContentType = (0, lodash_1.find)(contentTypes, ct => ct.uid === relatedItem.__contentType, {});
95
+ const { uid, labelSingular, isSingle } = relatedContentType;
96
+ relation = {
97
+ related: relatedItem.id,
98
+ relatedRef: {
99
+ ...relatedItem,
100
+ __collectionUid: uid,
101
+ isSingle,
102
+ labelSingular,
103
+ },
104
+ relatedType: uid,
105
+ };
106
+ }
107
+ else if (shouldFindRelated) {
108
+ const relatedRef = (0, lodash_1.find)(contentTypeItems, cti => cti.id === relatedId);
109
+ const relatedContentType = (0, lodash_1.find)(contentTypes, ct => ct.uid === relatedType);
110
+ const { uid, contentTypeName, labelSingular, isSingle } = relatedContentType;
111
+ relation = {
112
+ relatedRef: {
113
+ ...relatedRef,
114
+ __collectionUid: uid,
115
+ __contentType: contentTypeName,
116
+ isSingle,
117
+ labelSingular,
118
+ },
119
+ };
120
+ }
121
+ else {
122
+ return {
123
+ ...item,
124
+ };
125
+ }
158
126
  return {
159
- ...item,
127
+ ...item,
128
+ ...relation,
160
129
  };
161
- }
162
-
163
- return {
164
- ...item,
165
- ...relation,
166
- };
167
130
  };
168
-
169
- const reOrderItems = (items = []) =>
170
- orderBy(items, ['order'], ['asc'])
131
+ const reOrderItems = (items = []) => (0, lodash_1.orderBy)(items, ['order'], ['asc'])
171
132
  .map((item, n) => {
172
- const order = n + 1;
173
- return {
133
+ const order = n + 1;
134
+ return {
174
135
  ...item,
175
136
  order,
176
137
  updated: item.updated || order !== item.order,
177
- };
178
- });
179
-
180
- export const transformItemToViewPayload = (payload, items = [], config) => {
181
- if (!payload.viewParentId) {
182
- if (payload.viewId) {
183
- const updatedRootLevel = items
184
- .map((item) => {
185
- if (item.viewId === payload.viewId) {
186
- return linkRelations({
187
- ...payload,
188
- }, config);
189
- }
190
- return {
191
- ...item,
192
- };
193
- });
194
- return reOrderItems(updatedRootLevel);
195
- }
196
- return [
197
- ...reOrderItems(items),
198
- linkRelations({
199
- ...payload,
200
- order: items.length + 1,
201
- viewId: uuid(),
202
- }, config),
203
- ];
204
- }
205
-
206
- const updatedLevel = items
207
- .map((item) => {
208
- const branchItems = item.items || [];
209
- if (payload.viewParentId === item.viewId) {
210
- if (!payload.viewId) {
211
- return {
212
- ...item,
213
- items: [
214
- ...reOrderItems(branchItems),
215
- linkRelations({
216
- ...payload,
217
- order: branchItems.length + 1,
218
- viewId: uuid(),
219
- }, config),
220
- ],
221
- };
138
+ };
139
+ });
140
+ const transformItemToViewPayload = (payload, items = [], config) => {
141
+ if (!payload.viewParentId) {
142
+ if (payload.viewId) {
143
+ const updatedRootLevel = items
144
+ .map((item) => {
145
+ if (item.viewId === payload.viewId) {
146
+ return linkRelations({
147
+ ...payload,
148
+ }, config);
149
+ }
150
+ return {
151
+ ...item,
152
+ items: (0, exports.transformItemToViewPayload)(payload, item.items, config),
153
+ };
154
+ });
155
+ return reOrderItems(updatedRootLevel);
222
156
  }
223
- const updatedBranchItems = branchItems
224
- .map((iItem) => {
225
- if (iItem.viewId === payload.viewId) {
226
- return linkRelations(payload, config);
157
+ return [
158
+ ...reOrderItems(items),
159
+ linkRelations({
160
+ ...payload,
161
+ order: items.length + 1,
162
+ viewId: (0, uuid_1.v4)(),
163
+ }, config),
164
+ ];
165
+ }
166
+ const updatedLevel = items
167
+ .map((item) => {
168
+ const branchItems = item.items || [];
169
+ if (payload.viewParentId === item.viewId) {
170
+ if (!payload.viewId) {
171
+ return {
172
+ ...item,
173
+ items: [
174
+ ...reOrderItems(branchItems),
175
+ linkRelations({
176
+ ...payload,
177
+ order: branchItems.length + 1,
178
+ viewId: (0, uuid_1.v4)(),
179
+ }, config),
180
+ ],
181
+ };
227
182
  }
183
+ const updatedBranchItems = branchItems
184
+ .map((iItem) => {
185
+ if (iItem.viewId === payload.viewId) {
186
+ return linkRelations(payload, config);
187
+ }
188
+ return {
189
+ ...iItem,
190
+ };
191
+ });
228
192
  return {
229
- ...iItem,
193
+ ...item,
194
+ items: reOrderItems(updatedBranchItems),
230
195
  };
231
- });
196
+ }
232
197
  return {
233
- ...item,
234
- items: reOrderItems(updatedBranchItems),
198
+ ...item,
199
+ items: (0, exports.transformItemToViewPayload)(payload, item.items, config),
235
200
  };
236
- }
237
- return {
238
- ...item,
239
- items: transformItemToViewPayload(payload, item.items, config),
240
- };
241
201
  });
242
- return reOrderItems(updatedLevel);
202
+ return reOrderItems(updatedLevel);
243
203
  };
244
-
245
- export const prepareItemToViewPayload = (items = [], viewParentId = null, config = {}) =>
246
- reOrderItems(items.map((item, n) => {
247
- const viewId = uuid();
204
+ exports.transformItemToViewPayload = transformItemToViewPayload;
205
+ const prepareItemToViewPayload = ({ items = [], viewParentId = null, config = {}, structureIdPrefix = '' }) => reOrderItems(items.map((item, n) => {
206
+ const viewId = (0, uuid_1.v4)();
207
+ const structureId = structureIdPrefix ? `${structureIdPrefix}.${n}` : n.toString();
248
208
  return {
249
- ...linkRelations({
250
- viewId,
251
- viewParentId,
252
- ...item,
253
- order: item.order || (n + 1),
254
- updated: item.updated || isNil(item.order),
255
- }, config),
256
- items: prepareItemToViewPayload(item.items, viewId, config),
209
+ ...linkRelations({
210
+ viewId,
211
+ viewParentId,
212
+ ...item,
213
+ order: item.order || (n + 1),
214
+ structureId,
215
+ updated: item.updated || (0, lodash_1.isNil)(item.order),
216
+ }, config),
217
+ items: (0, exports.prepareItemToViewPayload)({
218
+ config,
219
+ items: item.items,
220
+ structureIdPrefix: structureId,
221
+ viewId,
222
+ }),
257
223
  };
258
- }));
259
-
260
- export const extractRelatedItemLabel = (item = {}, fields = {}, config = {}) => {
261
- if (get(item, 'isSingle', false)) {
262
- return get(item, 'labelSingular', '');
263
- }
264
- const { contentTypes = [] } = config;
265
- const { __collectionUid } = item;
266
- const contentType = contentTypes.find(_ => _.uid === __collectionUid)
267
- const { default: defaultFields = [] } = fields;
268
- return get(fields, `${contentType ? contentType.uid : __collectionUid}`, defaultFields).map((_) => item[_]).filter((_) => _)[0] || '';
224
+ }));
225
+ exports.prepareItemToViewPayload = prepareItemToViewPayload;
226
+ const extractRelatedItemLabel = (item = {}, fields = {}, config = {}) => {
227
+ if ((0, lodash_1.get)(item, 'isSingle', false)) {
228
+ return (0, lodash_1.get)(item, 'labelSingular', '');
229
+ }
230
+ const { contentTypes = [] } = config;
231
+ const { __collectionUid } = item;
232
+ const contentType = contentTypes.find(_ => _.uid === __collectionUid);
233
+ const { default: defaultFields = [] } = fields;
234
+ return (0, lodash_1.get)(fields, `${contentType ? contentType.uid : __collectionUid}`, defaultFields).map((_) => item[_]).filter((_) => _)[0] || '';
269
235
  };
270
-
271
- export const usedContentTypes = (items = []) => items.flatMap(
272
- (item) => {
273
- const used = (item.items ? usedContentTypes(item.items) : []);
236
+ exports.extractRelatedItemLabel = extractRelatedItemLabel;
237
+ const usedContentTypes = (items = []) => items.flatMap((item) => {
238
+ const used = (item.items ? (0, exports.usedContentTypes)(item.items) : []);
274
239
  if (item.relatedRef) {
275
- return [item.relatedRef, ...used];
240
+ return [item.relatedRef, ...used];
276
241
  }
277
242
  return used;
278
- },
279
- );
280
-
281
- export const isRelationCorrect = ({ related, type }) => {
282
- const isRelationDefined = !isNil(related);
283
- return type !== navigationItemType.INTERNAL || (type === navigationItemType.INTERNAL && isRelationDefined);
243
+ });
244
+ exports.usedContentTypes = usedContentTypes;
245
+ const isRelationCorrect = ({ related, type }) => {
246
+ const isRelationDefined = !(0, lodash_1.isNil)(related);
247
+ return type !== enums_1.navigationItemType.INTERNAL || (type === enums_1.navigationItemType.INTERNAL && isRelationDefined);
284
248
  };
285
-
286
- export const isRelationPublished = ({ relatedRef, relatedType = {}, type, isCollection }) => {
287
- if (isCollection) {
288
- return relatedType.available || relatedRef.available;
289
- }
290
- if ((type === navigationItemType.INTERNAL)) {
291
- const isHandledByPublshFlow = relatedRef ? 'published_at' in relatedRef : false;
292
- if (isHandledByPublshFlow) {
293
- return get(relatedRef, 'published_at', true);
249
+ exports.isRelationCorrect = isRelationCorrect;
250
+ const isRelationPublished = ({ relatedRef, relatedType = {}, type, isCollection }) => {
251
+ if (isCollection) {
252
+ return relatedType.available || relatedRef.available;
253
+ }
254
+ if ((type === enums_1.navigationItemType.INTERNAL)) {
255
+ const isHandledByPublshFlow = relatedRef ? 'published_at' in relatedRef : false;
256
+ if (isHandledByPublshFlow) {
257
+ return (0, lodash_1.get)(relatedRef, 'published_at', true);
258
+ }
294
259
  }
295
- }
296
- return true;
260
+ return true;
297
261
  };
298
-
299
- export const validateNavigationStructure = (items = []) =>
300
- items.map(item =>
301
- (
302
- item.removed ||
303
- isRelationCorrect({ related: item.related, type: item.type }) ||
304
- (item.isSingle && isRelationCorrect({ related: item.relatedType, type: item.type }))
305
- ) &&
306
- validateNavigationStructure(item.items)
307
- ).filter(item => !item).length === 0;
262
+ exports.isRelationPublished = isRelationPublished;
263
+ const validateNavigationStructure = (items = []) => items.map(item => (item.removed ||
264
+ (0, exports.isRelationCorrect)({ related: item.related, type: item.type }) ||
265
+ (item.isSingle && (0, exports.isRelationCorrect)({ related: item.relatedType, type: item.type }))) &&
266
+ (0, exports.validateNavigationStructure)(item.items)).filter(item => !item).length === 0;
267
+ exports.validateNavigationStructure = validateNavigationStructure;
268
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1,12 @@
1
+ export default pluginPermissions;
2
+ declare namespace pluginPermissions {
3
+ const access: {
4
+ action: string;
5
+ subject: null;
6
+ }[];
7
+ const update: {
8
+ action: string;
9
+ subject: null;
10
+ }[];
11
+ }
12
+ //# sourceMappingURL=permissions.d.ts.map