@odx/angular 5.3.4 → 5.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 (140) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/components/footer/README.md +3 -0
  3. package/components/footer/index.d.ts +3 -0
  4. package/components/footer/lib/footer.component.d.ts +23 -0
  5. package/components/footer/lib/footer.config.d.ts +30 -0
  6. package/components/footer/lib/footer.i18n.d.ts +3 -0
  7. package/components/footer/lib/helpers/create-footer-links.d.ts +12 -0
  8. package/components/footer/lib/helpers/index.d.ts +1 -0
  9. package/components/footer/lib/models/footer-link.d.ts +4 -0
  10. package/components/footer/lib/models/footer-variant.d.ts +5 -0
  11. package/components/footer/lib/models/index.d.ts +2 -0
  12. package/components/header/lib/header.component.d.ts +1 -1
  13. package/components/header-navigation/README.md +3 -0
  14. package/components/header-navigation/index.d.ts +3 -0
  15. package/components/header-navigation/lib/directives/header-navigation-link.directive.d.ts +11 -0
  16. package/components/header-navigation/lib/directives/index.d.ts +1 -0
  17. package/components/header-navigation/lib/header-navigation.component.d.ts +8 -0
  18. package/components/header-navigation/lib/header-navigation.module.d.ts +9 -0
  19. package/components/main-menu/lib/helpers/create-main-menu-links.d.ts +2 -1
  20. package/components/main-menu/lib/main-menu.component.d.ts +5 -5
  21. package/components/main-menu/lib/main-menu.config.d.ts +1 -0
  22. package/components/notification/README.md +3 -0
  23. package/components/notification/index.d.ts +7 -0
  24. package/components/notification/lib/components/index.d.ts +2 -0
  25. package/components/notification/lib/components/notification-center/notification-center.component.d.ts +19 -0
  26. package/components/notification/lib/components/notification-item/notification-item.component.d.ts +37 -0
  27. package/components/notification/lib/directives/index.d.ts +1 -0
  28. package/components/notification/lib/directives/notification-center.directive.d.ts +69 -0
  29. package/components/notification/lib/features/index.d.ts +5 -0
  30. package/components/notification/lib/features/with-browser-notifications.d.ts +17 -0
  31. package/components/notification/lib/features/with-load-notifications.d.ts +18 -0
  32. package/components/notification/lib/features/with-notification-transformer.d.ts +26 -0
  33. package/components/notification/lib/features/with-peristent-notifications.d.ts +63 -0
  34. package/components/notification/lib/features/with-save-notifications.d.ts +11 -0
  35. package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +2 -0
  36. package/components/notification/lib/helpers/index.d.ts +3 -0
  37. package/components/notification/lib/helpers/sort-notifications.d.ts +3 -0
  38. package/components/notification/lib/helpers/to-notification-collection.d.ts +3 -0
  39. package/components/notification/lib/models/index.d.ts +8 -0
  40. package/components/notification/lib/models/notification-action.d.ts +2 -0
  41. package/components/notification/lib/models/notification-collection.d.ts +6 -0
  42. package/components/notification/lib/models/notification-feature.d.ts +5 -0
  43. package/components/notification/lib/models/notification-options.d.ts +7 -0
  44. package/components/notification/lib/models/notification-query.d.ts +2 -0
  45. package/components/notification/lib/models/notification-sort-fn.d.ts +2 -0
  46. package/components/notification/lib/models/notification.d.ts +6 -0
  47. package/components/notification/lib/models/notification.ref.d.ts +9 -0
  48. package/components/notification/lib/notification.config.d.ts +11 -0
  49. package/components/notification/lib/notification.i18n.d.ts +3 -0
  50. package/components/notification/lib/notification.logger.d.ts +3 -0
  51. package/components/notification/lib/notification.service.d.ts +110 -0
  52. package/components/notification/lib/notification.tokens.d.ts +4 -0
  53. package/components/notification/lib/services/index.d.ts +1 -0
  54. package/components/notification/lib/services/notification-center.service.d.ts +69 -0
  55. package/components/notification/testing/README.md +3 -0
  56. package/components/notification/testing/index.d.ts +1 -0
  57. package/components/notification/testing/lib/test-helpers.d.ts +5 -0
  58. package/components/toast/lib/toast.service.d.ts +30 -2
  59. package/esm2022/breakpoints/lib/directives/match-breakpoints.directive.mjs +3 -2
  60. package/esm2022/components/footer/index.mjs +4 -0
  61. package/esm2022/components/footer/lib/footer.component.mjs +51 -0
  62. package/esm2022/components/footer/lib/footer.config.mjs +29 -0
  63. package/esm2022/components/footer/lib/footer.i18n.mjs +19 -0
  64. package/esm2022/components/footer/lib/helpers/create-footer-links.mjs +25 -0
  65. package/esm2022/components/footer/lib/helpers/index.mjs +2 -0
  66. package/esm2022/components/footer/lib/models/footer-link.mjs +2 -0
  67. package/esm2022/components/footer/lib/models/footer-variant.mjs +5 -0
  68. package/esm2022/components/footer/lib/models/index.mjs +3 -0
  69. package/esm2022/components/footer/odx-angular-components-footer.mjs +5 -0
  70. package/esm2022/components/header/lib/header.component.mjs +3 -3
  71. package/esm2022/components/header-navigation/index.mjs +4 -0
  72. package/esm2022/components/header-navigation/lib/directives/header-navigation-link.directive.mjs +37 -0
  73. package/esm2022/components/header-navigation/lib/directives/index.mjs +2 -0
  74. package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +28 -0
  75. package/esm2022/components/header-navigation/lib/header-navigation.module.mjs +19 -0
  76. package/esm2022/components/header-navigation/odx-angular-components-header-navigation.mjs +5 -0
  77. package/esm2022/components/main-menu/lib/helpers/create-main-menu-links.mjs +7 -4
  78. package/esm2022/components/main-menu/lib/main-menu.component.mjs +9 -11
  79. package/esm2022/components/main-menu/lib/main-menu.config.mjs +1 -1
  80. package/esm2022/components/notification/index.mjs +8 -0
  81. package/esm2022/components/notification/lib/components/index.mjs +3 -0
  82. package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +65 -0
  83. package/esm2022/components/notification/lib/components/notification-item/notification-item.component.mjs +65 -0
  84. package/esm2022/components/notification/lib/directives/index.mjs +2 -0
  85. package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +142 -0
  86. package/esm2022/components/notification/lib/features/index.mjs +6 -0
  87. package/esm2022/components/notification/lib/features/with-browser-notifications.mjs +75 -0
  88. package/esm2022/components/notification/lib/features/with-load-notifications.mjs +45 -0
  89. package/esm2022/components/notification/lib/features/with-notification-transformer.mjs +34 -0
  90. package/esm2022/components/notification/lib/features/with-peristent-notifications.mjs +94 -0
  91. package/esm2022/components/notification/lib/features/with-save-notifications.mjs +45 -0
  92. package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +7 -0
  93. package/esm2022/components/notification/lib/helpers/index.mjs +4 -0
  94. package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +10 -0
  95. package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +9 -0
  96. package/esm2022/components/notification/lib/models/index.mjs +9 -0
  97. package/esm2022/components/notification/lib/models/notification-action.mjs +2 -0
  98. package/esm2022/components/notification/lib/models/notification-collection.mjs +2 -0
  99. package/esm2022/components/notification/lib/models/notification-feature.mjs +4 -0
  100. package/esm2022/components/notification/lib/models/notification-options.mjs +2 -0
  101. package/esm2022/components/notification/lib/models/notification-query.mjs +2 -0
  102. package/esm2022/components/notification/lib/models/notification-sort-fn.mjs +2 -0
  103. package/esm2022/components/notification/lib/models/notification.mjs +2 -0
  104. package/esm2022/components/notification/lib/models/notification.ref.mjs +2 -0
  105. package/esm2022/components/notification/lib/notification.config.mjs +11 -0
  106. package/esm2022/components/notification/lib/notification.i18n.mjs +11 -0
  107. package/esm2022/components/notification/lib/notification.logger.mjs +3 -0
  108. package/esm2022/components/notification/lib/notification.service.mjs +168 -0
  109. package/esm2022/components/notification/lib/notification.tokens.mjs +7 -0
  110. package/esm2022/components/notification/lib/services/index.mjs +2 -0
  111. package/esm2022/components/notification/lib/services/notification-center.service.mjs +96 -0
  112. package/esm2022/components/notification/odx-angular-components-notification.mjs +5 -0
  113. package/esm2022/components/notification/testing/index.mjs +2 -0
  114. package/esm2022/components/notification/testing/lib/test-helpers.mjs +33 -0
  115. package/esm2022/components/notification/testing/odx-angular-components-notification-testing.mjs +5 -0
  116. package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +6 -6
  117. package/esm2022/components/toast/lib/toast.service.mjs +38 -8
  118. package/esm2022/utils/lib/helpers/array.mjs +24 -1
  119. package/esm2022/utils/lib/helpers/build-website-url.mjs +24 -1
  120. package/fesm2022/odx-angular-breakpoints.mjs +2 -1
  121. package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
  122. package/fesm2022/odx-angular-components-footer.mjs +131 -0
  123. package/fesm2022/odx-angular-components-footer.mjs.map +1 -0
  124. package/fesm2022/odx-angular-components-header-navigation.mjs +84 -0
  125. package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -0
  126. package/fesm2022/odx-angular-components-header.mjs +2 -2
  127. package/fesm2022/odx-angular-components-header.mjs.map +1 -1
  128. package/fesm2022/odx-angular-components-main-menu.mjs +11 -9
  129. package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
  130. package/fesm2022/odx-angular-components-notification-testing.mjs +39 -0
  131. package/fesm2022/odx-angular-components-notification-testing.mjs.map +1 -0
  132. package/fesm2022/odx-angular-components-notification.mjs +832 -0
  133. package/fesm2022/odx-angular-components-notification.mjs.map +1 -0
  134. package/fesm2022/odx-angular-components-toast.mjs +42 -11
  135. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  136. package/fesm2022/odx-angular-utils.mjs +46 -0
  137. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  138. package/package.json +25 -1
  139. package/utils/lib/helpers/array.d.ts +23 -0
  140. package/utils/lib/helpers/build-website-url.d.ts +23 -0
@@ -1,7 +1,30 @@
1
1
  import { isNumber, isString } from './type-guards';
2
+ /**
3
+ * Extracts the values of a specified key from each object in an array.
4
+ *
5
+ * @template T - The type of the objects in the array.
6
+ * @template K - The type of the keys of `T`.
7
+ * @param {T[]} arr - The array of objects to pluck values from.
8
+ * @param {K} key - The key whose values are to be plucked from each object in the array.
9
+ * @returns {Array<T[K]>} An array of values corresponding to the specified key from each object.
10
+ * @example
11
+ * const users = [{ name: 'Alice' }, { name: 'Bob' }];
12
+ * const names = pluckFromArray(users, 'name'); // ['Alice', 'Bob']
13
+ */
2
14
  export function pluckFromArray(arr, key) {
3
15
  return arr.map((value) => value[key]);
4
16
  }
17
+ /**
18
+ * Creates a compare function for sorting an array of objects based on a specified key and direction.
19
+ *
20
+ * @template T - The type of the objects in the array.
21
+ * @param {keyof T} key - The key to sort by.
22
+ * @param {OrderByDirection} [direction='ASC'] - The direction to sort ('ASC' for ascending, 'DESC' for descending).
23
+ * @returns {(a: T, b: T) => number} A compare function that can be used in the array sort method.
24
+ * @example
25
+ * const items = [{ value: 10 }, { value: 5 }, { value: 7 }];
26
+ * const sortedItems = items.sort(orderBy('value', 'ASC')); // Sorted by value in ascending order
27
+ */
5
28
  export function orderBy(key, direction = 'ASC') {
6
29
  return (a, b) => {
7
30
  const leftValue = direction === 'ASC' ? a[key] : b[key];
@@ -21,4 +44,4 @@ export function orderBy(key, direction = 'ASC') {
21
44
  return 0;
22
45
  };
23
46
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE1BQU0sVUFBVSxjQUFjLENBQXVCLEdBQVEsRUFBRSxHQUFNO0lBQ25FLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUlELE1BQU0sVUFBVSxPQUFPLENBQUksR0FBWSxFQUFFLFlBQThCLEtBQUs7SUFDMUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNkLE1BQU0sU0FBUyxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sU0FBUyxHQUFHLFVBQVUsQ0FBQztTQUMvQjtRQUNELElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQyxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciwgaXNTdHJpbmcgfSBmcm9tICcuL3R5cGUtZ3VhcmRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBsdWNrRnJvbUFycmF5PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPihhcnI6IFRbXSwga2V5OiBLKTogQXJyYXk8VFtLXT4ge1xuICByZXR1cm4gYXJyLm1hcCgodmFsdWUpID0+IHZhbHVlW2tleV0pO1xufVxuXG5leHBvcnQgdHlwZSBPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmRlckJ5PFQ+KGtleToga2V5b2YgVCwgZGlyZWN0aW9uOiBPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQycpOiAoYTogVCwgYjogVCkgPT4gbnVtYmVyIHtcbiAgcmV0dXJuIChhLCBiKSA9PiB7XG4gICAgY29uc3QgbGVmdFZhbHVlID0gZGlyZWN0aW9uID09PSAnQVNDJyA/IGFba2V5XSA6IGJba2V5XTtcbiAgICBjb25zdCByaWdodFZhbHVlID0gZGlyZWN0aW9uID09PSAnQVNDJyA/IGJba2V5XSA6IGFba2V5XTtcbiAgICBpZiAobGVmdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKHJpZ2h0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoaXNOdW1iZXIobGVmdFZhbHVlKSAmJiBpc051bWJlcihyaWdodFZhbHVlKSkge1xuICAgICAgcmV0dXJuIGxlZnRWYWx1ZSAtIHJpZ2h0VmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhsZWZ0VmFsdWUpICYmIGlzU3RyaW5nKHJpZ2h0VmFsdWUpKSB7XG4gICAgICByZXR1cm4gbGVmdFZhbHVlLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShyaWdodFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfTtcbn1cbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5EOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBdUIsR0FBUSxFQUFFLEdBQU07SUFDbkUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBSUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUksR0FBWSxFQUFFLFlBQThCLEtBQUs7SUFDMUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNkLE1BQU0sU0FBUyxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sU0FBUyxHQUFHLFVBQVUsQ0FBQztTQUMvQjtRQUNELElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQyxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciwgaXNTdHJpbmcgfSBmcm9tICcuL3R5cGUtZ3VhcmRzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgdmFsdWVzIG9mIGEgc3BlY2lmaWVkIGtleSBmcm9tIGVhY2ggb2JqZWN0IGluIGFuIGFycmF5LlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdHMgaW4gdGhlIGFycmF5LlxuICogQHRlbXBsYXRlIEsgLSBUaGUgdHlwZSBvZiB0aGUga2V5cyBvZiBgVGAuXG4gKiBAcGFyYW0ge1RbXX0gYXJyIC0gVGhlIGFycmF5IG9mIG9iamVjdHMgdG8gcGx1Y2sgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0t9IGtleSAtIFRoZSBrZXkgd2hvc2UgdmFsdWVzIGFyZSB0byBiZSBwbHVja2VkIGZyb20gZWFjaCBvYmplY3QgaW4gdGhlIGFycmF5LlxuICogQHJldHVybnMge0FycmF5PFRbS10+fSBBbiBhcnJheSBvZiB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgc3BlY2lmaWVkIGtleSBmcm9tIGVhY2ggb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHVzZXJzID0gW3sgbmFtZTogJ0FsaWNlJyB9LCB7IG5hbWU6ICdCb2InIH1dO1xuICogY29uc3QgbmFtZXMgPSBwbHVja0Zyb21BcnJheSh1c2VycywgJ25hbWUnKTsgLy8gWydBbGljZScsICdCb2InXVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Y2tGcm9tQXJyYXk8VCwgSyBleHRlbmRzIGtleW9mIFQ+KGFycjogVFtdLCBrZXk6IEspOiBBcnJheTxUW0tdPiB7XG4gIHJldHVybiBhcnIubWFwKCh2YWx1ZSkgPT4gdmFsdWVba2V5XSk7XG59XG5cbmV4cG9ydCB0eXBlIE9yZGVyQnlEaXJlY3Rpb24gPSAnQVNDJyB8ICdERVNDJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcGFyZSBmdW5jdGlvbiBmb3Igc29ydGluZyBhbiBhcnJheSBvZiBvYmplY3RzIGJhc2VkIG9uIGEgc3BlY2lmaWVkIGtleSBhbmQgZGlyZWN0aW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdHMgaW4gdGhlIGFycmF5LlxuICogQHBhcmFtIHtrZXlvZiBUfSBrZXkgLSBUaGUga2V5IHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge09yZGVyQnlEaXJlY3Rpb259IFtkaXJlY3Rpb249J0FTQyddIC0gVGhlIGRpcmVjdGlvbiB0byBzb3J0ICgnQVNDJyBmb3IgYXNjZW5kaW5nLCAnREVTQycgZm9yIGRlc2NlbmRpbmcpLlxuICogQHJldHVybnMgeyhhOiBULCBiOiBUKSA9PiBudW1iZXJ9IEEgY29tcGFyZSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIHRoZSBhcnJheSBzb3J0IG1ldGhvZC5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBpdGVtcyA9IFt7IHZhbHVlOiAxMCB9LCB7IHZhbHVlOiA1IH0sIHsgdmFsdWU6IDcgfV07XG4gKiBjb25zdCBzb3J0ZWRJdGVtcyA9IGl0ZW1zLnNvcnQob3JkZXJCeSgndmFsdWUnLCAnQVNDJykpOyAvLyBTb3J0ZWQgYnkgdmFsdWUgaW4gYXNjZW5kaW5nIG9yZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcmRlckJ5PFQ+KGtleToga2V5b2YgVCwgZGlyZWN0aW9uOiBPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQycpOiAoYTogVCwgYjogVCkgPT4gbnVtYmVyIHtcbiAgcmV0dXJuIChhLCBiKSA9PiB7XG4gICAgY29uc3QgbGVmdFZhbHVlID0gZGlyZWN0aW9uID09PSAnQVNDJyA/IGFba2V5XSA6IGJba2V5XTtcbiAgICBjb25zdCByaWdodFZhbHVlID0gZGlyZWN0aW9uID09PSAnQVNDJyA/IGJba2V5XSA6IGFba2V5XTtcbiAgICBpZiAobGVmdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKHJpZ2h0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoaXNOdW1iZXIobGVmdFZhbHVlKSAmJiBpc051bWJlcihyaWdodFZhbHVlKSkge1xuICAgICAgcmV0dXJuIGxlZnRWYWx1ZSAtIHJpZ2h0VmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhsZWZ0VmFsdWUpICYmIGlzU3RyaW5nKHJpZ2h0VmFsdWUpKSB7XG4gICAgICByZXR1cm4gbGVmdFZhbHVlLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShyaWdodFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfTtcbn1cbiJdfQ==
@@ -1,6 +1,29 @@
1
1
  import { buildUrl } from './build-url';
2
+ /**
3
+ * A constant representing the base URL for the Draeger website.
4
+ * @constant
5
+ * @type {string}
6
+ * @default 'https://www.draeger.com'
7
+ */
2
8
  export const DRAEGER_WEBSITE_URL = 'https://www.draeger.com';
9
+ /**
10
+ * Constructs a full URL for the Draeger website by appending the provided path segments to the base URL.
11
+ * This function is a utility for creating fully qualified URLs to various resources or pages within the Draeger website.
12
+ *
13
+ * @function buildWebsiteUrl
14
+ * @param {...(string | number | symbol | null | undefined)} segments - The path segments to append to the base URL.
15
+ * These can include strings, numbers, symbols, or null/undefined values (the latter two are ignored).
16
+ * @returns {string} The fully constructed URL, including the base URL and all provided path segments.
17
+ *
18
+ * @example
19
+ * // Returns 'https://www.draeger.com/about-us'
20
+ * const url = buildWebsiteUrl('about-us');
21
+ *
22
+ * @example
23
+ * // Can also handle multiple segments, returning 'https://www.draeger.com/products/search/123'
24
+ * const productUrl = buildWebsiteUrl('products', 'search', 123);
25
+ */
3
26
  export function buildWebsiteUrl(...segments) {
4
27
  return buildUrl(DRAEGER_WEBSITE_URL, ...segments);
5
28
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd2Vic2l0ZS11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2J1aWxkLXdlYnNpdGUtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcseUJBQXlCLENBQUM7QUFFN0QsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFHLFFBQTREO0lBQzdGLE9BQU8sUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ1aWxkVXJsIH0gZnJvbSAnLi9idWlsZC11cmwnO1xuXG5leHBvcnQgY29uc3QgRFJBRUdFUl9XRUJTSVRFX1VSTCA9ICdodHRwczovL3d3dy5kcmFlZ2VyLmNvbSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFdlYnNpdGVVcmwoLi4uc2VnbWVudHM6IEFycmF5PHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCB8IG51bGwgfCB1bmRlZmluZWQ+KTogc3RyaW5nIHtcbiAgcmV0dXJuIGJ1aWxkVXJsKERSQUVHRVJfV0VCU0lURV9VUkwsIC4uLnNlZ21lbnRzKTtcbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd2Vic2l0ZS11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2J1aWxkLXdlYnNpdGUtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBRyxRQUE0RDtJQUM3RixPQUFPLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFVybCB9IGZyb20gJy4vYnVpbGQtdXJsJztcblxuLyoqXG4gKiBBIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgYmFzZSBVUkwgZm9yIHRoZSBEcmFlZ2VyIHdlYnNpdGUuXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAZGVmYXVsdCAnaHR0cHM6Ly93d3cuZHJhZWdlci5jb20nXG4gKi9cbmV4cG9ydCBjb25zdCBEUkFFR0VSX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3LmRyYWVnZXIuY29tJztcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgZnVsbCBVUkwgZm9yIHRoZSBEcmFlZ2VyIHdlYnNpdGUgYnkgYXBwZW5kaW5nIHRoZSBwcm92aWRlZCBwYXRoIHNlZ21lbnRzIHRvIHRoZSBiYXNlIFVSTC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgYSB1dGlsaXR5IGZvciBjcmVhdGluZyBmdWxseSBxdWFsaWZpZWQgVVJMcyB0byB2YXJpb3VzIHJlc291cmNlcyBvciBwYWdlcyB3aXRoaW4gdGhlIERyYWVnZXIgd2Vic2l0ZS5cbiAqXG4gKiBAZnVuY3Rpb24gYnVpbGRXZWJzaXRlVXJsXG4gKiBAcGFyYW0gey4uLihzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgfCBudWxsIHwgdW5kZWZpbmVkKX0gc2VnbWVudHMgLSBUaGUgcGF0aCBzZWdtZW50cyB0byBhcHBlbmQgdG8gdGhlIGJhc2UgVVJMLlxuICogVGhlc2UgY2FuIGluY2x1ZGUgc3RyaW5ncywgbnVtYmVycywgc3ltYm9scywgb3IgbnVsbC91bmRlZmluZWQgdmFsdWVzICh0aGUgbGF0dGVyIHR3byBhcmUgaWdub3JlZCkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZnVsbHkgY29uc3RydWN0ZWQgVVJMLCBpbmNsdWRpbmcgdGhlIGJhc2UgVVJMIGFuZCBhbGwgcHJvdmlkZWQgcGF0aCBzZWdtZW50cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmV0dXJucyAnaHR0cHM6Ly93d3cuZHJhZWdlci5jb20vYWJvdXQtdXMnXG4gKiBjb25zdCB1cmwgPSBidWlsZFdlYnNpdGVVcmwoJ2Fib3V0LXVzJyk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENhbiBhbHNvIGhhbmRsZSBtdWx0aXBsZSBzZWdtZW50cywgcmV0dXJuaW5nICdodHRwczovL3d3dy5kcmFlZ2VyLmNvbS9wcm9kdWN0cy9zZWFyY2gvMTIzJ1xuICogY29uc3QgcHJvZHVjdFVybCA9IGJ1aWxkV2Vic2l0ZVVybCgncHJvZHVjdHMnLCAnc2VhcmNoJywgMTIzKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV2Vic2l0ZVVybCguLi5zZWdtZW50czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBzdHJpbmcge1xuICByZXR1cm4gYnVpbGRVcmwoRFJBRUdFUl9XRUJTSVRFX1VSTCwgLi4uc2VnbWVudHMpO1xufVxuIl19
@@ -74,7 +74,8 @@ class MatchBreakpointsDirective {
74
74
  this.viewContainer.clear();
75
75
  const template = matchesBreakpoints ? this.template : this.elseTemplate;
76
76
  if (template) {
77
- this.viewContainer.createEmbeddedView(template);
77
+ const viewRef = this.viewContainer.createEmbeddedView(template);
78
+ viewRef.markForCheck();
78
79
  }
79
80
  }
80
81
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MatchBreakpointsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-breakpoints.mjs","sources":["../../../../libs/angular/breakpoints/src/lib/helpers/configure-breakpoint.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.config.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.service.ts","../../../../libs/angular/breakpoints/src/lib/directives/match-breakpoints.directive.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.module.ts","../../../../libs/angular/breakpoints/src/odx-angular-breakpoints.ts"],"sourcesContent":["type BreakpointOperators = '<' | '=' | '>';\ntype BreakpointConfig<T extends string> = Record<`${BreakpointOperators}${T}`, string>;\n\nexport function configureBreakpoint<T extends string>(name: T, min: number, max: number): BreakpointConfig<T> {\n return {\n [`<${name}` as const]: `(max-width: ${min - 1}px)`,\n [`=${name}` as const]: `(min-width: ${min}px) and (max-width: ${max - 1}px)`,\n [`>${name}` as const]: `(min-width: ${min}px)`,\n } as BreakpointConfig<T>;\n}\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { configureBreakpoint } from './helpers/configure-breakpoint';\n\nexport const DEFAULT_BREAKPOINTS = {\n ...configureBreakpoint('phone-s', 360, 480),\n ...configureBreakpoint('phone', 480, 768),\n ...configureBreakpoint('tablet', 768, 960),\n ...configureBreakpoint('desktop-s', 960, 1200),\n ...configureBreakpoint('desktop', 1200, 9999),\n} as const;\n\nexport interface BreakpointsConfig {\n breakpoints: Partial<OdxAngular.Breakpoints>;\n}\n\nexport const { BreakpointsConfig, BreakpointsDefaultConfig, injectBreakpointsConfig, provideBreakpointsConfig } = createConfigTokens(\n 'Breakpoints',\n '@odx/angular/breakpoints',\n {\n breakpoints: DEFAULT_BREAKPOINTS,\n } as BreakpointsConfig\n);\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject, Injectable } from '@angular/core';\nimport { distinctUntilChanged, map, Observable, of, shareReplay } from 'rxjs';\nimport { injectBreakpointsConfig } from './breakpoints.config';\nimport { BreakpointName } from './models';\n\n@Injectable({ providedIn: 'root' })\nexport class BreakpointsService {\n private readonly breakpointObserver = inject(BreakpointObserver);\n private readonly config = injectBreakpointsConfig();\n\n public observe(breakpoints: BreakpointName[]): Observable<boolean> {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.createBreakpointObserver(mediaQueries);\n }\n\n public matches(breakpoints: BreakpointName[]): boolean {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.breakpointObserver.isMatched(mediaQueries);\n }\n\n private getMediaQueries(breakpointNames: BreakpointName[]): string[] {\n return breakpointNames.map((name) => this.config.breakpoints[name] as string).filter(Boolean);\n }\n\n private createBreakpointObserver(mediaQueries: string[]): Observable<boolean> {\n if (mediaQueries.length < 1) return of(false);\n\n return this.breakpointObserver.observe(mediaQueries).pipe(\n map(({ matches }) => matches),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { coerceArray, untilDestroyed } from '@odx/angular/utils';\nimport { BehaviorSubject, switchMap, tap } from 'rxjs';\nimport { BreakpointsService } from '../breakpoints.service';\nimport { BreakpointName } from '../models';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxMatchBreakpoints]',\n})\nexport class MatchBreakpointsDirective implements OnInit {\n private readonly breakpoints$$ = new BehaviorSubject<BreakpointName[]>([]);\n private readonly breakpointsService = inject(BreakpointsService);\n private readonly takeUntilDestroyed = untilDestroyed();\n private readonly template = inject(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n @Input('odxMatchBreakpoints')\n public set breakpoints(value: BreakpointName | BreakpointName[] | null | undefined) {\n this.breakpoints$$.next(coerceArray(value ?? []));\n }\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('odxMatchBreakpointsElse')\n public elseTemplate?: TemplateRef<unknown> | null = null;\n\n public ngOnInit(): void {\n this.breakpoints$$\n .pipe(\n switchMap((breakpoints) => this.breakpointsService.observe(breakpoints)),\n tap((matchesBreakpoints) => this.render(matchesBreakpoints)),\n this.takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n private render(matchesBreakpoints: boolean): void {\n this.viewContainer.clear();\n const template = matchesBreakpoints ? this.template : this.elseTemplate;\n if (template) {\n this.viewContainer.createEmbeddedView(template);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MatchBreakpointsDirective } from './directives';\n\nconst modules = [MatchBreakpointsDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class BreakpointsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-breakpoints.mjs","sources":["../../../../libs/angular/breakpoints/src/lib/helpers/configure-breakpoint.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.config.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.service.ts","../../../../libs/angular/breakpoints/src/lib/directives/match-breakpoints.directive.ts","../../../../libs/angular/breakpoints/src/lib/breakpoints.module.ts","../../../../libs/angular/breakpoints/src/odx-angular-breakpoints.ts"],"sourcesContent":["type BreakpointOperators = '<' | '=' | '>';\ntype BreakpointConfig<T extends string> = Record<`${BreakpointOperators}${T}`, string>;\n\nexport function configureBreakpoint<T extends string>(name: T, min: number, max: number): BreakpointConfig<T> {\n return {\n [`<${name}` as const]: `(max-width: ${min - 1}px)`,\n [`=${name}` as const]: `(min-width: ${min}px) and (max-width: ${max - 1}px)`,\n [`>${name}` as const]: `(min-width: ${min}px)`,\n } as BreakpointConfig<T>;\n}\n","import { createConfigTokens } from '@odx/angular/utils';\nimport { configureBreakpoint } from './helpers/configure-breakpoint';\n\nexport const DEFAULT_BREAKPOINTS = {\n ...configureBreakpoint('phone-s', 360, 480),\n ...configureBreakpoint('phone', 480, 768),\n ...configureBreakpoint('tablet', 768, 960),\n ...configureBreakpoint('desktop-s', 960, 1200),\n ...configureBreakpoint('desktop', 1200, 9999),\n} as const;\n\nexport interface BreakpointsConfig {\n breakpoints: Partial<OdxAngular.Breakpoints>;\n}\n\nexport const { BreakpointsConfig, BreakpointsDefaultConfig, injectBreakpointsConfig, provideBreakpointsConfig } = createConfigTokens(\n 'Breakpoints',\n '@odx/angular/breakpoints',\n {\n breakpoints: DEFAULT_BREAKPOINTS,\n } as BreakpointsConfig\n);\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject, Injectable } from '@angular/core';\nimport { distinctUntilChanged, map, Observable, of, shareReplay } from 'rxjs';\nimport { injectBreakpointsConfig } from './breakpoints.config';\nimport { BreakpointName } from './models';\n\n@Injectable({ providedIn: 'root' })\nexport class BreakpointsService {\n private readonly breakpointObserver = inject(BreakpointObserver);\n private readonly config = injectBreakpointsConfig();\n\n public observe(breakpoints: BreakpointName[]): Observable<boolean> {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.createBreakpointObserver(mediaQueries);\n }\n\n public matches(breakpoints: BreakpointName[]): boolean {\n const mediaQueries = this.getMediaQueries(breakpoints);\n\n return this.breakpointObserver.isMatched(mediaQueries);\n }\n\n private getMediaQueries(breakpointNames: BreakpointName[]): string[] {\n return breakpointNames.map((name) => this.config.breakpoints[name] as string).filter(Boolean);\n }\n\n private createBreakpointObserver(mediaQueries: string[]): Observable<boolean> {\n if (mediaQueries.length < 1) return of(false);\n\n return this.breakpointObserver.observe(mediaQueries).pipe(\n map(({ matches }) => matches),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n}\n","import { Directive, inject, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { coerceArray, untilDestroyed } from '@odx/angular/utils';\nimport { BehaviorSubject, switchMap, tap } from 'rxjs';\nimport { BreakpointsService } from '../breakpoints.service';\nimport { BreakpointName } from '../models';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[odxMatchBreakpoints]',\n})\nexport class MatchBreakpointsDirective implements OnInit {\n private readonly breakpoints$$ = new BehaviorSubject<BreakpointName[]>([]);\n private readonly breakpointsService = inject(BreakpointsService);\n private readonly takeUntilDestroyed = untilDestroyed();\n private readonly template = inject(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n @Input('odxMatchBreakpoints')\n public set breakpoints(value: BreakpointName | BreakpointName[] | null | undefined) {\n this.breakpoints$$.next(coerceArray(value ?? []));\n }\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('odxMatchBreakpointsElse')\n public elseTemplate?: TemplateRef<unknown> | null = null;\n\n public ngOnInit(): void {\n this.breakpoints$$\n .pipe(\n switchMap((breakpoints) => this.breakpointsService.observe(breakpoints)),\n tap((matchesBreakpoints) => this.render(matchesBreakpoints)),\n this.takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n private render(matchesBreakpoints: boolean): void {\n this.viewContainer.clear();\n const template = matchesBreakpoints ? this.template : this.elseTemplate;\n if (template) {\n const viewRef = this.viewContainer.createEmbeddedView(template);\n viewRef.markForCheck();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MatchBreakpointsDirective } from './directives';\n\nconst modules = [MatchBreakpointsDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class BreakpointsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import { __decorate, __metadata } from 'tslib';
2
+ import * as i1 from '@angular/common';
3
+ import { CommonModule } from '@angular/common';
4
+ import * as i0 from '@angular/core';
5
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';
6
+ import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
7
+ import { LinkDirective } from '@odx/angular/components/link';
8
+ import { LogoDirective } from '@odx/angular/components/logo';
9
+ import { CSSModifier, CSSComponent } from '@odx/angular/internal';
10
+ import { provideTranslations, TranslatePipe } from '@odx/angular/internal/translate';
11
+ import { createConfigTokens, buildWebsiteUrl, trackByIndex, injectElement } from '@odx/angular/utils';
12
+ import { of, combineLatest, map } from 'rxjs';
13
+
14
+ var footerTranslations = {
15
+ en: {
16
+ legalNotice: 'Legal notice',
17
+ providerIdentification: 'Provider identification',
18
+ dataProtection: 'Data protection',
19
+ openSource: 'Open-source licenses',
20
+ termsAndConditions: 'Terms and Conditions',
21
+ status: 'Status',
22
+ },
23
+ de: {
24
+ legalNotice: 'Rechtliche Hinweise',
25
+ providerIdentification: 'Impressum',
26
+ dataProtection: 'Datenschutz',
27
+ openSource: 'Open-Source-Lizenzen',
28
+ termsAndConditions: 'Allgemeine Geschäftsbedingungen',
29
+ status: 'Status',
30
+ },
31
+ };
32
+
33
+ /**
34
+ * Creates configuration tokens for the footer links, providing a structured way to inject and manage footer link configurations.
35
+ * This utility function encapsulates the configuration for footer links, including defaults and the ability to inject custom configurations.
36
+ *
37
+ * @returns {Object} An object containing configuration tokens for footer links:
38
+ * - `FooterLinksConfig`: A token for injecting the footer links configuration.
39
+ * - `FooterLinksDefaultConfig`: A token representing the default configuration values.
40
+ * - `injectFooterLinksConfig`: A function to inject the current footer links configuration.
41
+ * - `provideFooterLinksConfig`: A function to provide a custom configuration for footer links.
42
+ *
43
+ * @example
44
+ * // In your module or component
45
+ * @NgModule({
46
+ * providers: [
47
+ * provideFooterLinksConfig({
48
+ * legalNoticeUrl: 'https://www.custom-url/legal-notice',
49
+ * providerIdentificationUrl: 'https://www.custom-url/provider-identification',
50
+ * dynamicLinks: myDynamicLinksObservable
51
+ * })
52
+ * ]
53
+ * })
54
+ * export class MyModule {}
55
+ */
56
+ const { FooterLinksConfig, FooterLinksDefaultConfig, injectFooterLinksConfig, provideFooterLinksConfig } = createConfigTokens('FooterLinks', '@odx/angular/components/footer', {
57
+ providerIdentificationUrl: buildWebsiteUrl('provideridentification'),
58
+ legalNoticeUrl: buildWebsiteUrl('legalnotice'),
59
+ });
60
+
61
+ /**
62
+ * Creates an observable stream of footer links, combining statically configured links with dynamically provided ones.
63
+ * It leverages the footer links configuration injected from `injectFooterLinksConfig` and optionally includes
64
+ * dynamic links if provided. All links are filtered to include only those with a non-empty URL.
65
+ *
66
+ * @function createFooterLinks$
67
+ * @returns {Observable<FooterLink[]>} An Observable that emits an array of `FooterLink` objects. Each `FooterLink`
68
+ * contains a `name` and a `url`. The observable emits updates if the set of dynamic links changes.
69
+ */
70
+ function createFooterLinks$() {
71
+ const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } = injectFooterLinksConfig();
72
+ const dynamicLinks$ = dynamicLinks ?? of([]);
73
+ const links = [
74
+ { name: 'status', url: statusUrl },
75
+ { name: 'termsAndConditions', url: termsAndConditionsUrl },
76
+ { name: 'providerIdentification', url: providerIdentificationUrl },
77
+ { name: 'openSource', url: openSourceUrl },
78
+ { name: 'dataProtection', url: dataProtectionUrl },
79
+ { name: 'legalNotice', url: legalNoticeUrl },
80
+ ];
81
+ return combineLatest([dynamicLinks$, of(links)]).pipe(map((links) => links.flat().filter((link) => !!link.url)));
82
+ }
83
+
84
+ const FooterVariant = {
85
+ LIGHT: 'light',
86
+ DARK: 'dark',
87
+ };
88
+
89
+ /**
90
+ * Represents the footer component of an application, dynamically generating links and supporting various styles.
91
+ * This component integrates dynamic and static content for the footer, including a logo, navigational links, and a customizable description.
92
+ *
93
+ * @usage `<odx-footer [description]="dynamicOrStaticContent" [variant]="'light'|'dark'"></odx-footer>`
94
+ *
95
+ * @input
96
+ * - `description` - Accepts dynamic content (observable or static string) for displaying a custom description in the footer.
97
+ * - `variant` - Sets the footer's appearance theme, supporting `light` and `dark` variants as defined by `FooterVariant`.
98
+ */
99
+ let FooterComponent = class FooterComponent {
100
+ constructor() {
101
+ this.footerLinks$ = createFooterLinks$();
102
+ this.trackByIndex = trackByIndex;
103
+ this.element = injectElement();
104
+ this.description = null;
105
+ this.variant = FooterVariant.LIGHT;
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "odx-footer", inputs: { description: "description", variant: "variant" }, providers: [provideTranslations(footerTranslations)], ngImport: i0, template: "<div class=\"odx-footer__inner\">\n <div class=\"odx-footer__content\">\n <ng-content></ng-content>\n </div>\n <nav class=\"odx-footer__navigation\">\n <ng-content select=\"[odxLink]\" />\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of footerLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </nav>\n <p class=\"odx-footer__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
109
+ };
110
+ __decorate([
111
+ CSSModifier(),
112
+ __metadata("design:type", String)
113
+ ], FooterComponent.prototype, "variant", void 0);
114
+ FooterComponent = __decorate([
115
+ CSSComponent('footer')
116
+ ], FooterComponent);
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, decorators: [{
118
+ type: Component,
119
+ args: [{ standalone: true, selector: 'odx-footer', imports: [LinkDirective, LogoDirective, DynamicViewDirective, CommonModule, TranslatePipe], providers: [provideTranslations(footerTranslations)], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"odx-footer__inner\">\n <div class=\"odx-footer__content\">\n <ng-content></ng-content>\n </div>\n <nav class=\"odx-footer__navigation\">\n <ng-content select=\"[odxLink]\" />\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of footerLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </nav>\n <p class=\"odx-footer__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </p>\n</div>\n" }]
120
+ }], propDecorators: { description: [{
121
+ type: Input
122
+ }], variant: [{
123
+ type: Input
124
+ }] } });
125
+
126
+ /**
127
+ * Generated bundle index. Do not edit.
128
+ */
129
+
130
+ export { FooterComponent, FooterLinksConfig, FooterLinksDefaultConfig, FooterVariant, injectFooterLinksConfig, provideFooterLinksConfig };
131
+ //# sourceMappingURL=odx-angular-components-footer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-components-footer.mjs","sources":["../../../../libs/angular/components/footer/src/lib/footer.i18n.ts","../../../../libs/angular/components/footer/src/lib/footer.config.ts","../../../../libs/angular/components/footer/src/lib/helpers/create-footer-links.ts","../../../../libs/angular/components/footer/src/lib/models/footer-variant.ts","../../../../libs/angular/components/footer/src/lib/footer.component.ts","../../../../libs/angular/components/footer/src/lib/footer.component.html","../../../../libs/angular/components/footer/src/odx-angular-components-footer.ts"],"sourcesContent":["import { TranslationObject } from '@odx/angular/internal/translate';\n\nexport default {\n en: {\n legalNotice: 'Legal notice',\n providerIdentification: 'Provider identification',\n dataProtection: 'Data protection',\n openSource: 'Open-source licenses',\n termsAndConditions: 'Terms and Conditions',\n status: 'Status',\n },\n de: {\n legalNotice: 'Rechtliche Hinweise',\n providerIdentification: 'Impressum',\n dataProtection: 'Datenschutz',\n openSource: 'Open-Source-Lizenzen',\n termsAndConditions: 'Allgemeine Geschäftsbedingungen',\n status: 'Status',\n },\n} as TranslationObject;\n","import { MainMenuLinksConfig } from '@odx/angular/components/main-menu';\nimport { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\nimport { Observable } from 'rxjs';\nimport { FooterLink } from './models';\n\nexport interface FooterLinksConfig extends MainMenuLinksConfig {\n dynamicLinks?: Observable<FooterLink[]>;\n}\n\n/**\n * Creates configuration tokens for the footer links, providing a structured way to inject and manage footer link configurations.\n * This utility function encapsulates the configuration for footer links, including defaults and the ability to inject custom configurations.\n *\n * @returns {Object} An object containing configuration tokens for footer links:\n * - `FooterLinksConfig`: A token for injecting the footer links configuration.\n * - `FooterLinksDefaultConfig`: A token representing the default configuration values.\n * - `injectFooterLinksConfig`: A function to inject the current footer links configuration.\n * - `provideFooterLinksConfig`: A function to provide a custom configuration for footer links.\n *\n * @example\n * // In your module or component\n * @NgModule({\n * providers: [\n * provideFooterLinksConfig({\n * legalNoticeUrl: 'https://www.custom-url/legal-notice',\n * providerIdentificationUrl: 'https://www.custom-url/provider-identification',\n * dynamicLinks: myDynamicLinksObservable\n * })\n * ]\n * })\n * export class MyModule {}\n */\nexport const { FooterLinksConfig, FooterLinksDefaultConfig, injectFooterLinksConfig, provideFooterLinksConfig } = createConfigTokens(\n 'FooterLinks',\n '@odx/angular/components/footer',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as FooterLinksConfig,\n);\n","import { Observable, combineLatest, map, of } from 'rxjs';\nimport { injectFooterLinksConfig } from '../footer.config';\nimport { FooterLink } from '../models';\n\n/**\n * Creates an observable stream of footer links, combining statically configured links with dynamically provided ones.\n * It leverages the footer links configuration injected from `injectFooterLinksConfig` and optionally includes\n * dynamic links if provided. All links are filtered to include only those with a non-empty URL.\n *\n * @function createFooterLinks$\n * @returns {Observable<FooterLink[]>} An Observable that emits an array of `FooterLink` objects. Each `FooterLink`\n * contains a `name` and a `url`. The observable emits updates if the set of dynamic links changes.\n */\n\nexport function createFooterLinks$(): Observable<FooterLink[]> {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } =\n injectFooterLinksConfig();\n const dynamicLinks$ = dynamicLinks ?? of([]);\n const links = [\n { name: 'status', url: statusUrl },\n { name: 'termsAndConditions', url: termsAndConditionsUrl },\n { name: 'providerIdentification', url: providerIdentificationUrl },\n { name: 'openSource', url: openSourceUrl },\n { name: 'dataProtection', url: dataProtectionUrl },\n { name: 'legalNotice', url: legalNoticeUrl },\n ];\n\n return combineLatest([dynamicLinks$, of(links)]).pipe(map((links) => links.flat().filter((link): link is FooterLink => !!link.url)));\n}\n","export type FooterVariant = (typeof FooterVariant)[keyof typeof FooterVariant];\n\nexport const FooterVariant = {\n LIGHT: 'light',\n DARK: 'dark',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';\nimport { injectElement, trackByIndex } from '@odx/angular/utils';\nimport footerTranslations from './footer.i18n';\nimport { createFooterLinks$ } from './helpers';\nimport { FooterVariant } from './models';\n\n/**\n * Represents the footer component of an application, dynamically generating links and supporting various styles.\n * This component integrates dynamic and static content for the footer, including a logo, navigational links, and a customizable description.\n *\n * @usage `<odx-footer [description]=\"dynamicOrStaticContent\" [variant]=\"'light'|'dark'\"></odx-footer>`\n *\n * @input\n * - `description` - Accepts dynamic content (observable or static string) for displaying a custom description in the footer.\n * - `variant` - Sets the footer's appearance theme, supporting `light` and `dark` variants as defined by `FooterVariant`.\n */\n\n@CSSComponent('footer')\n@Component({\n standalone: true,\n selector: 'odx-footer',\n imports: [LinkDirective, LogoDirective, DynamicViewDirective, CommonModule, TranslatePipe],\n templateUrl: './footer.component.html',\n providers: [provideTranslations(footerTranslations)],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FooterComponent {\n protected readonly footerLinks$ = createFooterLinks$();\n protected readonly trackByIndex = trackByIndex;\n public readonly element = injectElement();\n\n @Input()\n public description?: DynamicTextContent | null = null;\n\n @CSSModifier()\n @Input()\n public variant: FooterVariant = FooterVariant.LIGHT;\n}\n","<div class=\"odx-footer__inner\">\n <div class=\"odx-footer__content\">\n <ng-content></ng-content>\n </div>\n <nav class=\"odx-footer__navigation\">\n <ng-content select=\"[odxLink]\" />\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of footerLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </nav>\n <p class=\"odx-footer__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"></ng-template>\n </p>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, inject, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/router';
4
+ import { RouterLinkActive } from '@angular/router';
5
+ import { reactiveClassBinding, injectElement } from '@odx/angular/utils';
6
+ import { startWith, distinctUntilChanged } from 'rxjs';
7
+ import { __decorate, __metadata } from 'tslib';
8
+ import { ActionGroupComponent } from '@odx/angular/components/action-group';
9
+ import { CSSModifier, CSSComponent } from '@odx/angular/internal';
10
+ import { CoreModule } from '@odx/angular';
11
+
12
+ class HeaderNavigationRouterLinkDirective {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationRouterLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HeaderNavigationRouterLinkDirective, isStandalone: true, selector: "[routerLink][odxHeaderNavigationLink]", hostDirectives: [{ directive: i1.RouterLinkActive, inputs: ["routerLinkActiveOptions", "routerLinkActiveOptions"] }], ngImport: i0 }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationRouterLinkDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ standalone: true,
20
+ selector: '[routerLink][odxHeaderNavigationLink]',
21
+ hostDirectives: [{ directive: RouterLinkActive, inputs: ['routerLinkActiveOptions'] }],
22
+ }]
23
+ }] });
24
+ class HeaderNavigationLinkDirective {
25
+ constructor() {
26
+ const routerLinkActive = inject(RouterLinkActive, { self: true, optional: true });
27
+ if (!routerLinkActive)
28
+ return;
29
+ const isActive$ = routerLinkActive.isActiveChange.pipe(startWith(routerLinkActive.isActive), distinctUntilChanged());
30
+ reactiveClassBinding(isActive$, 'is-active');
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
33
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HeaderNavigationLinkDirective, isStandalone: true, selector: "[odxHeaderNavigationLink]", ngImport: i0 }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationLinkDirective, decorators: [{
36
+ type: Directive,
37
+ args: [{
38
+ standalone: true,
39
+ selector: '[odxHeaderNavigationLink]',
40
+ }]
41
+ }], ctorParameters: function () { return []; } });
42
+
43
+ let HeaderNavigationComponent = class HeaderNavigationComponent {
44
+ constructor() {
45
+ this.element = injectElement();
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: HeaderNavigationComponent, isStandalone: true, selector: "odx-header-navigation", inputs: { centered: ["centered", "centered", booleanAttribute] }, ngImport: i0, template: "<odx-action-group class=\"odx-header-navigation__inner\">\n <ng-content select=\"ng-template, [odxHeaderNavigationLink]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n", dependencies: [{ kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
49
+ };
50
+ __decorate([
51
+ CSSModifier(),
52
+ __metadata("design:type", Boolean)
53
+ ], HeaderNavigationComponent.prototype, "centered", void 0);
54
+ HeaderNavigationComponent = __decorate([
55
+ CSSComponent('header-navigation')
56
+ ], HeaderNavigationComponent);
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationComponent, decorators: [{
58
+ type: Component,
59
+ args: [{ standalone: true, selector: 'odx-header-navigation', imports: [ActionGroupComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<odx-action-group class=\"odx-header-navigation__inner\">\n <ng-content select=\"ng-template, [odxHeaderNavigationLink]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n" }]
60
+ }], propDecorators: { centered: [{
61
+ type: Input,
62
+ args: [{ transform: booleanAttribute }]
63
+ }] } });
64
+
65
+ const modules = [HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective];
66
+ class HeaderNavigationModule {
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
68
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, imports: [HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective], exports: [CoreModule, HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective] }); }
69
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, imports: [HeaderNavigationComponent, CoreModule] }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderNavigationModule, decorators: [{
72
+ type: NgModule,
73
+ args: [{
74
+ imports: modules,
75
+ exports: [CoreModule, ...modules],
76
+ }]
77
+ }] });
78
+
79
+ /**
80
+ * Generated bundle index. Do not edit.
81
+ */
82
+
83
+ export { HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationModule, HeaderNavigationRouterLinkDirective };
84
+ //# sourceMappingURL=odx-angular-components-header-navigation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-components-header-navigation.mjs","sources":["../../../../libs/angular/components/header-navigation/src/lib/directives/header-navigation-link.directive.ts","../../../../libs/angular/components/header-navigation/src/lib/header-navigation.component.ts","../../../../libs/angular/components/header-navigation/src/lib/header-navigation.component.html","../../../../libs/angular/components/header-navigation/src/lib/header-navigation.module.ts","../../../../libs/angular/components/header-navigation/src/odx-angular-components-header-navigation.ts"],"sourcesContent":["import { Directive, inject } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { reactiveClassBinding } from '@odx/angular/utils';\nimport { distinctUntilChanged, startWith } from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[routerLink][odxHeaderNavigationLink]',\n hostDirectives: [{ directive: RouterLinkActive, inputs: ['routerLinkActiveOptions'] }],\n})\nexport class HeaderNavigationRouterLinkDirective {}\n\n@Directive({\n standalone: true,\n selector: '[odxHeaderNavigationLink]',\n})\nexport class HeaderNavigationLinkDirective {\n constructor() {\n const routerLinkActive = inject(RouterLinkActive, { self: true, optional: true });\n if (!routerLinkActive) return;\n const isActive$ = routerLinkActive.isActiveChange.pipe(startWith(routerLinkActive.isActive), distinctUntilChanged());\n reactiveClassBinding(isActive$, 'is-active');\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, booleanAttribute } from '@angular/core';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('header-navigation')\n@Component({\n standalone: true,\n selector: 'odx-header-navigation',\n templateUrl: './header-navigation.component.html',\n imports: [ActionGroupComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderNavigationComponent {\n public readonly element = injectElement();\n\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public centered!: boolean;\n}\n","<odx-action-group class=\"odx-header-navigation__inner\">\n <ng-content select=\"ng-template, [odxHeaderNavigationLink]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective } from './directives';\nimport { HeaderNavigationComponent } from './header-navigation.component';\n\nconst modules = [HeaderNavigationComponent, HeaderNavigationLinkDirective, HeaderNavigationRouterLinkDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class HeaderNavigationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -52,14 +52,14 @@ let HeaderComponent = class HeaderComponent {
52
52
  this.element = injectElement();
53
53
  }
54
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HeaderComponent, isStandalone: true, selector: "odx-header", ngImport: i0, template: "<ng-content select=\"button[odxMainMenuButton]\"></ng-content>\n<odx-logo></odx-logo>\n<ng-content select=\"odx-header-title\"></ng-content>\n<ng-content select=\"odx-action-group, odx-auth\"></ng-content>\n<ng-content select=\"[odxHeaderAvatar]\"></ng-content>\n", dependencies: [{ kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HeaderComponent, isStandalone: true, selector: "odx-header", ngImport: i0, template: "<ng-content select=\"button[odxMainMenuButton]\" />\n<odx-logo />\n<ng-content select=\"odx-header-title\" />\n<div class=\"odx-header__content\">\n <ng-content />\n</div>\n<ng-content select=\"odx-action-group, odx-auth\" />\n<ng-content select=\"[odxHeaderAvatar]\" />\n", dependencies: [{ kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
56
56
  };
57
57
  HeaderComponent = __decorate([
58
58
  CSSComponent('header')
59
59
  ], HeaderComponent);
60
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, decorators: [{
61
61
  type: Component,
62
- args: [{ standalone: true, selector: 'odx-header', imports: [LogoDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"button[odxMainMenuButton]\"></ng-content>\n<odx-logo></odx-logo>\n<ng-content select=\"odx-header-title\"></ng-content>\n<ng-content select=\"odx-action-group, odx-auth\"></ng-content>\n<ng-content select=\"[odxHeaderAvatar]\"></ng-content>\n" }]
62
+ args: [{ standalone: true, selector: 'odx-header', imports: [LogoDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"button[odxMainMenuButton]\" />\n<odx-logo />\n<ng-content select=\"odx-header-title\" />\n<div class=\"odx-header__content\">\n <ng-content />\n</div>\n<ng-content select=\"odx-action-group, odx-auth\" />\n<ng-content select=\"[odxHeaderAvatar]\" />\n" }]
63
63
  }] });
64
64
 
65
65
  const modules = [
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-header.mjs","sources":["../../../../libs/angular/components/header/src/lib/directives/header-avatar.directive.ts","../../../../libs/angular/components/header/src/lib/directives/header-title.directive.ts","../../../../libs/angular/components/header/src/lib/header.component.ts","../../../../libs/angular/components/header/src/lib/header.component.html","../../../../libs/angular/components/header/src/lib/header.module.ts","../../../../libs/angular/components/header/src/odx-angular-components-header.ts"],"sourcesContent":["import { AfterViewInit, Directive, inject } from '@angular/core';\nimport { ButtonComponent, ButtonVariant } from '@odx/angular/components/button';\n\n@Directive({\n standalone: true,\n selector: 'button[odxButton][odxHeaderAvatar]',\n host: {\n '[class.odx-header__avatar]': 'true',\n },\n})\nexport class HeaderAvatarDirective implements AfterViewInit {\n private readonly button = inject(ButtonComponent, { self: true });\n\n public ngAfterViewInit(): void {\n this.button.variant = ButtonVariant.GHOST;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'odx-header-title',\n standalone: true,\n host: {\n '[class.odx-header__title]': 'true',\n },\n})\nexport class HeaderTitleDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('header')\n@Component({\n standalone: true,\n selector: 'odx-header',\n imports: [LogoDirective],\n templateUrl: './header.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent {\n public readonly element = injectElement();\n}\n","<ng-content select=\"button[odxMainMenuButton]\"></ng-content>\n<odx-logo></odx-logo>\n<ng-content select=\"odx-header-title\"></ng-content>\n<ng-content select=\"odx-action-group, odx-auth\"></ng-content>\n<ng-content select=\"[odxHeaderAvatar]\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { AvatarComponent } from '@odx/angular/components/avatar';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MainMenuModule } from '@odx/angular/components/main-menu';\nimport { HeaderAvatarDirective, HeaderTitleDirective } from './directives';\nimport { HeaderComponent } from './header.component';\n\nconst modules = [\n HeaderComponent,\n HeaderTitleDirective,\n HeaderAvatarDirective,\n MainMenuModule,\n ActionGroupComponent,\n IconComponent,\n ButtonComponent,\n AvatarComponent,\n];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class HeaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-header.mjs","sources":["../../../../libs/angular/components/header/src/lib/directives/header-avatar.directive.ts","../../../../libs/angular/components/header/src/lib/directives/header-title.directive.ts","../../../../libs/angular/components/header/src/lib/header.component.ts","../../../../libs/angular/components/header/src/lib/header.component.html","../../../../libs/angular/components/header/src/lib/header.module.ts","../../../../libs/angular/components/header/src/odx-angular-components-header.ts"],"sourcesContent":["import { AfterViewInit, Directive, inject } from '@angular/core';\nimport { ButtonComponent, ButtonVariant } from '@odx/angular/components/button';\n\n@Directive({\n standalone: true,\n selector: 'button[odxButton][odxHeaderAvatar]',\n host: {\n '[class.odx-header__avatar]': 'true',\n },\n})\nexport class HeaderAvatarDirective implements AfterViewInit {\n private readonly button = inject(ButtonComponent, { self: true });\n\n public ngAfterViewInit(): void {\n this.button.variant = ButtonVariant.GHOST;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'odx-header-title',\n standalone: true,\n host: {\n '[class.odx-header__title]': 'true',\n },\n})\nexport class HeaderTitleDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('header')\n@Component({\n standalone: true,\n selector: 'odx-header',\n imports: [LogoDirective],\n templateUrl: './header.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent {\n public readonly element = injectElement();\n}\n","<ng-content select=\"button[odxMainMenuButton]\" />\n<odx-logo />\n<ng-content select=\"odx-header-title\" />\n<div class=\"odx-header__content\">\n <ng-content />\n</div>\n<ng-content select=\"odx-action-group, odx-auth\" />\n<ng-content select=\"[odxHeaderAvatar]\" />\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { AvatarComponent } from '@odx/angular/components/avatar';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MainMenuModule } from '@odx/angular/components/main-menu';\nimport { HeaderAvatarDirective, HeaderTitleDirective } from './directives';\nimport { HeaderComponent } from './header.component';\n\nconst modules = [\n HeaderComponent,\n HeaderTitleDirective,\n HeaderAvatarDirective,\n MainMenuModule,\n ActionGroupComponent,\n IconComponent,\n ButtonComponent,\n AvatarComponent,\n];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class HeaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,12 +3,13 @@ import * as i0 from '@angular/core';
3
3
  import { Injectable, inject, Directive, HostListener, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
4
4
  import { CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement, createConfigTokens, buildWebsiteUrl, trackByIndex } from '@odx/angular/utils';
6
- import { BehaviorSubject, distinctUntilChanged, shareReplay, EMPTY } from 'rxjs';
6
+ import { BehaviorSubject, distinctUntilChanged, shareReplay, of, combineLatest, map } from 'rxjs';
7
7
  import { trigger, transition, useAnimation } from '@angular/animations';
8
8
  import * as i1$1 from '@odx/angular';
9
9
  import { CoreModule, WithDisabledState, WithTabIndex } from '@odx/angular';
10
10
  import { slideInLeft, slideOutLeft, fadeIn, fadeOut } from '@odx/angular/animations';
11
11
  import { A11yModule } from '@odx/angular/cdk/a11y';
12
+ import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
12
13
  import * as i4 from '@odx/angular/components/area-header';
13
14
  import { AreaHeaderModule } from '@odx/angular/components/area-header';
14
15
  import * as i5 from '@odx/angular/components/button';
@@ -77,16 +78,18 @@ const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLinksConf
77
78
  legalNoticeUrl: buildWebsiteUrl('legalnotice'),
78
79
  });
79
80
 
80
- function createMainMenuLinks() {
81
- const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl } = injectMainMenuLinksConfig();
81
+ function createMainMenuLinks$() {
82
+ const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } = injectMainMenuLinksConfig();
83
+ const dynamicLinks$ = dynamicLinks ?? of([]);
82
84
  const links = [
85
+ { name: 'status', url: statusUrl },
83
86
  { name: 'termsAndConditions', url: termsAndConditionsUrl },
84
87
  { name: 'providerIdentification', url: providerIdentificationUrl },
85
88
  { name: 'openSource', url: openSourceUrl },
86
89
  { name: 'dataProtection', url: dataProtectionUrl },
87
90
  { name: 'legalNotice', url: legalNoticeUrl },
88
91
  ];
89
- return links.filter((link) => !!link.url);
92
+ return combineLatest([dynamicLinks$, of(links)].filter(Boolean)).pipe(map((links) => links.flat().filter((link) => !!link.url)));
90
93
  }
91
94
 
92
95
  var mainMenuTranslations = {
@@ -110,9 +113,8 @@ var mainMenuTranslations = {
110
113
 
111
114
  let MainMenuComponent = class MainMenuComponent {
112
115
  constructor() {
113
- this.dynamicLinks = injectMainMenuLinksConfig().dynamicLinks ?? EMPTY;
114
116
  this.mainMenuService = inject(MainMenuService);
115
- this.mainMenuLinks = createMainMenuLinks();
117
+ this.mainMenuLinks$ = createMainMenuLinks$();
116
118
  this.trackByIndex = trackByIndex;
117
119
  this.element = injectElement();
118
120
  this.subtitle = null;
@@ -129,7 +131,7 @@ let MainMenuComponent = class MainMenuComponent {
129
131
  this.mainMenuService.close();
130
132
  }
131
133
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], ngImport: i0, template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of dynamicLinks | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1$1.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }], animations: [
134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], ngImport: i0, template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1$1.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], animations: [
133
135
  trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
134
136
  trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
135
137
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -139,12 +141,12 @@ MainMenuComponent = __decorate([
139
141
  ], MainMenuComponent);
140
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, decorators: [{
141
143
  type: Component,
142
- args: [{ selector: 'odx-main-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective], providers: [provideTranslations(mainMenuTranslations)], standalone: true, host: {
144
+ args: [{ selector: 'odx-main-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective], providers: [provideTranslations(mainMenuTranslations)], standalone: true, host: {
143
145
  '[class.is-open]': 'isOpen',
144
146
  }, animations: [
145
147
  trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
146
148
  trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
147
- ], template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of dynamicLinks | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n" }]
149
+ ], template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n" }]
148
150
  }], propDecorators: { title: [{
149
151
  type: Input,
150
152
  args: [{ required: true }]