@odx/angular 6.0.0 → 6.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 (669) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/animations/lib/expand.d.ts +44 -0
  3. package/animations/lib/fade.d.ts +70 -0
  4. package/animations/lib/slide.d.ts +21 -0
  5. package/animations/lib/wait-for-child-animations.d.ts +38 -0
  6. package/breakpoints/lib/breakpoints.config.d.ts +38 -0
  7. package/breakpoints/lib/breakpoints.service.d.ts +43 -0
  8. package/breakpoints/lib/directives/match-breakpoints.directive.d.ts +36 -0
  9. package/breakpoints/lib/helpers/configure-breakpoint.d.ts +19 -0
  10. package/cdk/a11y/lib/directives/interactive.directive.d.ts +32 -0
  11. package/cdk/a11y/lib/directives/list-focus-manager-option.directive.d.ts +22 -0
  12. package/cdk/a11y/lib/directives/list-focus-manager.directive.d.ts +17 -0
  13. package/cdk/active-indicator/lib/active-indicator.directive.d.ts +63 -0
  14. package/cdk/autocomplete-control/lib/autocomplete-control.d.ts +53 -0
  15. package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +3 -0
  16. package/cdk/connected-overlay/lib/connected-overlay.service.d.ts +44 -0
  17. package/cdk/connected-overlay/lib/helpers/compute-overlay-position.d.ts +10 -0
  18. package/cdk/connected-overlay/lib/models/connected-overlay-ref.d.ts +49 -0
  19. package/cdk/custom-form-control/lib/custom-form-control.d.ts +108 -0
  20. package/cdk/custom-form-control/lib/input-control.directive.d.ts +75 -0
  21. package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +25 -0
  22. package/cdk/dynamic-view/lib/dynamic-view.service.d.ts +30 -0
  23. package/cdk/dynamic-view/lib/helpers/create-projectable-nodes.d.ts +22 -0
  24. package/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.d.ts +22 -0
  25. package/cdk/dynamic-view/lib/helpers/is-dynamic-view.d.ts +22 -0
  26. package/cdk/dynamic-view/lib/models/dynamic-component-ref.d.ts +39 -0
  27. package/cdk/dynamic-view/lib/models/dynamic-template-ref.d.ts +36 -0
  28. package/cdk/dynamic-view/lib/tokens/dynamic-view-context.d.ts +4 -0
  29. package/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.d.ts +10 -0
  30. package/cdk/event-plugins/lib/event-plugins.config.d.ts +35 -0
  31. package/cdk/event-plugins/lib/models/event-plugin.d.ts +57 -0
  32. package/cdk/event-plugins/lib/plugins/debounce-event-plugin.d.ts +32 -0
  33. package/cdk/event-plugins/lib/plugins/defer-event-plugin.d.ts +24 -0
  34. package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +41 -0
  35. package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +47 -0
  36. package/cdk/option-control/lib/option-control.d.ts +47 -0
  37. package/cdk/radio-group-control/lib/radio-control.directive.d.ts +8 -0
  38. package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +11 -0
  39. package/components/accordion/lib/accordion.component.d.ts +8 -0
  40. package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +37 -1
  41. package/components/accordion/lib/directives/accordion-item-title.d.ts +3 -0
  42. package/components/action-group/action-group.component.d.ts +6 -0
  43. package/components/area-header/area-header.component.d.ts +8 -0
  44. package/components/area-header/directives/area-header-content.directive.d.ts +3 -0
  45. package/components/area-header/directives/area-header-subtitle.directive.d.ts +3 -0
  46. package/components/autocomplete/lib/autocomplete.component.d.ts +18 -0
  47. package/components/avatar/lib/avatar.component.d.ts +8 -0
  48. package/components/badge/lib/badge.component.d.ts +10 -0
  49. package/components/badge/lib/badge.directive.d.ts +15 -0
  50. package/components/bar/lib/bar.component.d.ts +7 -0
  51. package/components/bar/lib/directives/bar-button.directive.d.ts +3 -0
  52. package/components/bar/lib/directives/bar-label.directive.d.ts +3 -0
  53. package/components/breadcrumbs/lib/breadcrumbs.component.d.ts +3 -0
  54. package/components/button/lib/button.component.d.ts +10 -0
  55. package/components/button-group/lib/button-group.component.d.ts +15 -0
  56. package/components/calendar/lib/calendar.component.d.ts +48 -0
  57. package/components/calendar/lib/calendar.config.d.ts +17 -0
  58. package/components/calendar/lib/calendar.service.d.ts +48 -0
  59. package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +24 -0
  60. package/components/calendar/lib/components/calendar-month/calendar-month.component.d.ts +6 -0
  61. package/components/calendar/lib/components/calendar-year/calendar-year.component.d.ts +6 -0
  62. package/components/calendar/lib/components/calendar-years/calendar-years.component.d.ts +6 -0
  63. package/components/calendar/lib/daterange.service.d.ts +16 -0
  64. package/components/calendar/lib/directives/calendar-cell.directive.d.ts +37 -0
  65. package/components/calendar/lib/directives/calendar-view.directive.d.ts +41 -0
  66. package/components/calendar/lib/pipes/date-label.pipe.d.ts +5 -0
  67. package/components/calendar/lib/services/calendar-month.service.d.ts +1 -0
  68. package/components/calendar/lib/services/calendar-year.service.d.ts +1 -0
  69. package/components/calendar/lib/services/calendar-years.service.d.ts +1 -0
  70. package/components/calendar/lib/utils/check-cell-in-range.d.ts +1 -0
  71. package/components/calendar/lib/utils/check-identical-date.d.ts +1 -0
  72. package/components/calendar/lib/utils/get-A11y-label.d.ts +1 -0
  73. package/components/calendar/lib/utils/is-date-disabled.d.ts +1 -0
  74. package/components/calendar/lib/utils/parse-date.d.ts +1 -0
  75. package/components/calendar/lib/utils/validate-daterange.d.ts +1 -0
  76. package/components/calendar/lib/utils/validate-max-date.d.ts +1 -0
  77. package/components/calendar/lib/utils/validate-min-date.d.ts +1 -0
  78. package/components/calendar/lib/utils/validate-next-date-set.d.ts +1 -0
  79. package/components/calendar/lib/utils/validate-previous-date-set.d.ts +1 -0
  80. package/components/checkbox/lib/checkbox.component.d.ts +32 -0
  81. package/components/checkbox/lib/checkbox.validator.d.ts +23 -0
  82. package/components/chip/lib/components/chip/chip.component.d.ts +14 -0
  83. package/components/chip/lib/components/chip-list/chip-list.component.d.ts +3 -0
  84. package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +3 -0
  85. package/components/circular-progress/lib/circular-progress.component.d.ts +20 -0
  86. package/components/content-box/lib/content-box.component.d.ts +3 -0
  87. package/components/content-box/lib/directives/content-box-footer.directive.d.ts +3 -0
  88. package/components/content-box/lib/directives/content-box-header.directive.d.ts +3 -0
  89. package/components/datepicker/lib/datepicker.component.d.ts +47 -0
  90. package/components/datepicker/lib/datepicker.config.d.ts +19 -0
  91. package/components/datepicker/lib/directives/datepicker-input-control.directive.d.ts +30 -0
  92. package/components/datepicker/lib/utils/get-datepicker-input-pattern.d.ts +2 -0
  93. package/components/datepicker/lib/utils/get-datepicker-input-value-as-date.d.ts +1 -0
  94. package/components/daterangepicker/lib/daterangepicker.component.d.ts +89 -0
  95. package/components/daterangepicker/lib/daterangepicker.config.d.ts +19 -0
  96. package/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.d.ts +30 -0
  97. package/components/daterangepicker/lib/range.validator.d.ts +15 -0
  98. package/components/daterangepicker/lib/required.validator.d.ts +6 -0
  99. package/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.d.ts +2 -0
  100. package/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.d.ts +1 -0
  101. package/components/dropdown/lib/dropdown.component.d.ts +16 -0
  102. package/components/dropdown/lib/dropdown.directive.d.ts +67 -0
  103. package/components/dropdown/lib/helpers/close-current-dropdown.d.ts +5 -0
  104. package/components/error-page/lib/error-page.component.d.ts +7 -0
  105. package/components/error-page/lib/error-page.config.d.ts +18 -0
  106. package/components/footer/lib/footer.component.d.ts +9 -6
  107. package/components/footer/lib/footer.config.d.ts +2 -0
  108. package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +13 -0
  109. package/components/form-field/lib/components/form-group/form-group.component.d.ts +16 -0
  110. package/components/form-field/lib/directives/form-field-control.directive.d.ts +5 -0
  111. package/components/form-field/lib/directives/form-field-error.directive.d.ts +6 -0
  112. package/components/form-field/lib/directives/form-field-hint.directive.d.ts +3 -0
  113. package/components/form-field/lib/directives/form-field-label.directive.d.ts +3 -0
  114. package/components/form-field/lib/directives/form.directive.d.ts +13 -0
  115. package/components/form-field/lib/form-field.component.d.ts +20 -0
  116. package/components/form-field/lib/form-field.service.d.ts +42 -0
  117. package/components/form-field/lib/services/form-field-error.service.d.ts +24 -0
  118. package/components/header/lib/directives/header-avatar.directive.d.ts +4 -0
  119. package/components/header/lib/directives/header-title.directive.d.ts +3 -0
  120. package/components/header/lib/header.component.d.ts +3 -0
  121. package/components/header-navigation/lib/directives/header-navigation-link.directive.d.ts +3 -0
  122. package/components/header-navigation/lib/header-navigation.component.d.ts +6 -0
  123. package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +14 -0
  124. package/components/icon/lib/icon.component.d.ts +24 -0
  125. package/components/icon/lib/icon.config.d.ts +26 -0
  126. package/components/inline-message/lib/inline-message.component.d.ts +13 -0
  127. package/components/link/link.directive.d.ts +3 -0
  128. package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +6 -0
  129. package/components/list/lib/components/list-item/list-item.component.d.ts +17 -1
  130. package/components/list/lib/list.component.d.ts +5 -0
  131. package/components/loading-spinner/lib/loading-spinner.component.d.ts +8 -0
  132. package/components/loading-spinner/lib/loading-spinner.directive.d.ts +22 -0
  133. package/components/logo/logo.directive.d.ts +15 -0
  134. package/components/main-menu/lib/directives/main-menu-button.directive.d.ts +5 -1
  135. package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +3 -0
  136. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +16 -0
  137. package/components/main-menu/lib/helpers/create-main-menu-links.d.ts +1 -0
  138. package/components/main-menu/lib/main-menu.component.d.ts +42 -0
  139. package/components/main-menu/lib/main-menu.config.d.ts +31 -0
  140. package/components/main-menu/lib/main-menu.service.d.ts +28 -0
  141. package/components/mainfilter-group/lib/mainfilter-group.component.d.ts +4 -0
  142. package/components/menu/lib/directives/menu-item.directive.d.ts +6 -0
  143. package/components/menu/lib/menu.component.d.ts +13 -1
  144. package/components/menu/lib/menu.directive.d.ts +31 -0
  145. package/components/modal/lib/components/basic-modal/basic-modal.component.d.ts +14 -0
  146. package/components/modal/lib/components/modal-footer/modal-footer.component.d.ts +3 -0
  147. package/components/modal/lib/components/modal-header/modal-header.component.d.ts +9 -0
  148. package/components/modal/lib/components/modal-hero/modal-hero.component.d.ts +21 -0
  149. package/components/modal/lib/directives/modal-close.directive.d.ts +25 -1
  150. package/components/modal/lib/directives/modal-content.directive.d.ts +3 -0
  151. package/components/modal/lib/directives/modal-dismiss.directive.d.ts +18 -1
  152. package/components/modal/lib/helpers/inject-modal-ref.d.ts +21 -0
  153. package/components/modal/lib/helpers/provide-modal-ref.d.ts +9 -0
  154. package/components/modal/lib/modal.component.d.ts +25 -0
  155. package/components/modal/lib/modal.config.d.ts +33 -0
  156. package/components/modal/lib/modal.directive.d.ts +29 -0
  157. package/components/modal/lib/modal.service.d.ts +54 -0
  158. package/components/modal/lib/models/modal-ref.d.ts +34 -0
  159. package/components/navigation-back/lib/navigation-back.component.d.ts +3 -0
  160. package/components/notification/lib/components/notification-center/notification-center.component.d.ts +0 -2
  161. package/components/notification/lib/directives/notification-center.directive.d.ts +18 -4
  162. package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +1 -0
  163. package/components/notification/lib/helpers/sort-notifications.d.ts +1 -0
  164. package/components/notification/lib/helpers/to-notification-collection.d.ts +1 -0
  165. package/components/notification/lib/models/notification-feature.d.ts +15 -0
  166. package/components/notification/lib/notification.config.d.ts +54 -0
  167. package/components/notification/lib/notification.logger.d.ts +1 -0
  168. package/components/notification/lib/notification.service.d.ts +55 -0
  169. package/components/notification/lib/notification.tokens.d.ts +3 -0
  170. package/components/notification/lib/services/notification-center.service.d.ts +9 -0
  171. package/components/paginator/lib/paginator.component.d.ts +89 -0
  172. package/components/paginator/lib/paginator.config.d.ts +24 -2
  173. package/components/progress/lib/progress.component.d.ts +15 -0
  174. package/components/radio-group/lib/components/radio-button/radio-button.component.d.ts +18 -1
  175. package/components/radio-group/lib/radio-group.component.d.ts +11 -0
  176. package/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.d.ts +19 -0
  177. package/components/rail-navigation/lib/rail-navigation.component.d.ts +26 -0
  178. package/components/rich-list/lib/components/rich-list-content/rich-list-content.component.d.ts +4 -0
  179. package/components/rich-list/lib/components/rich-list-header/rich-list-header.component.d.ts +4 -0
  180. package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +9 -1
  181. package/components/rich-list/lib/rich-list.component.d.ts +9 -2
  182. package/components/select/lib/components/select-option/select-option.component.d.ts +39 -2
  183. package/components/select/lib/directives/select-input-control.directive.d.ts +11 -0
  184. package/components/select/lib/pipes/select-search-filter.pipe.d.ts +10 -0
  185. package/components/select/lib/select.component.d.ts +59 -0
  186. package/components/slider/lib/slider.directive.d.ts +19 -0
  187. package/components/spinbox/lib/spinbox.component.d.ts +16 -0
  188. package/components/switch/lib/switch.component.d.ts +10 -0
  189. package/components/switch/lib/switch.validator.d.ts +12 -0
  190. package/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.d.ts +28 -0
  191. package/components/tab-bar/lib/tab-bar.component.d.ts +69 -0
  192. package/components/table/lib/components/check-cell/check-cell.component.d.ts +18 -0
  193. package/components/table/lib/components/header-title/header-title.component.d.ts +33 -1
  194. package/components/table/lib/directives/table-cell.directive.d.ts +4 -0
  195. package/components/table/lib/directives/table-row.directive.d.ts +4 -0
  196. package/components/table/lib/table.component.d.ts +36 -0
  197. package/components/timepicker/lib/timepicker.component.d.ts +11 -2
  198. package/components/timepicker/lib/utils/generate-time-stamps.d.ts +2 -1
  199. package/components/timepicker/lib/utils/ngx-mask-helper.d.ts +2 -2
  200. package/components/toast/lib/components/toast-item/toast-item.component.d.ts +5 -4
  201. package/components/toast/lib/models/toast.d.ts +4 -2
  202. package/components/toast/lib/toast.config.d.ts +26 -0
  203. package/components/toast/lib/toast.service.d.ts +35 -0
  204. package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +11 -0
  205. package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +12 -0
  206. package/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.d.ts +7 -0
  207. package/components/tooltip/lib/tooltip.component.d.ts +20 -0
  208. package/components/tooltip/lib/tooltip.directive.d.ts +35 -0
  209. package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +34 -0
  210. package/components/wizard/lib/wizard.component.d.ts +20 -0
  211. package/esm2022/animations/lib/expand.mjs +45 -1
  212. package/esm2022/animations/lib/fade.mjs +71 -1
  213. package/esm2022/animations/lib/slide.mjs +22 -1
  214. package/esm2022/animations/lib/wait-for-child-animations.mjs +39 -1
  215. package/esm2022/breakpoints/lib/breakpoints.config.mjs +39 -1
  216. package/esm2022/breakpoints/lib/breakpoints.service.mjs +44 -1
  217. package/esm2022/breakpoints/lib/directives/match-breakpoints.directive.mjs +37 -1
  218. package/esm2022/breakpoints/lib/helpers/configure-breakpoint.mjs +20 -1
  219. package/esm2022/cdk/a11y/lib/directives/interactive.directive.mjs +33 -1
  220. package/esm2022/cdk/a11y/lib/directives/list-focus-manager-option.directive.mjs +23 -1
  221. package/esm2022/cdk/a11y/lib/directives/list-focus-manager.directive.mjs +18 -1
  222. package/esm2022/cdk/active-indicator/lib/active-indicator.directive.mjs +64 -1
  223. package/esm2022/cdk/autocomplete-control/lib/autocomplete-control.mjs +40 -2
  224. package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +4 -1
  225. package/esm2022/cdk/connected-overlay/lib/connected-overlay.service.mjs +45 -1
  226. package/esm2022/cdk/connected-overlay/lib/helpers/compute-overlay-position.mjs +11 -1
  227. package/esm2022/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +50 -1
  228. package/esm2022/cdk/custom-form-control/lib/custom-form-control.mjs +109 -3
  229. package/esm2022/cdk/custom-form-control/lib/input-control.directive.mjs +76 -1
  230. package/esm2022/cdk/dynamic-view/lib/dynamic-view.directive.mjs +18 -1
  231. package/esm2022/cdk/dynamic-view/lib/dynamic-view.service.mjs +31 -1
  232. package/esm2022/cdk/dynamic-view/lib/helpers/create-projectable-nodes.mjs +23 -1
  233. package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.mjs +23 -1
  234. package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-view.mjs +23 -1
  235. package/esm2022/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +40 -1
  236. package/esm2022/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +37 -1
  237. package/esm2022/cdk/dynamic-view/lib/tokens/dynamic-view-context.mjs +5 -1
  238. package/esm2022/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.mjs +11 -1
  239. package/esm2022/cdk/event-plugins/lib/event-plugins.config.mjs +36 -1
  240. package/esm2022/cdk/event-plugins/lib/models/event-plugin.mjs +45 -1
  241. package/esm2022/cdk/event-plugins/lib/plugins/debounce-event-plugin.mjs +33 -1
  242. package/esm2022/cdk/event-plugins/lib/plugins/defer-event-plugin.mjs +25 -1
  243. package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +42 -1
  244. package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +48 -1
  245. package/esm2022/cdk/option-control/lib/option-control.mjs +48 -1
  246. package/esm2022/cdk/radio-group-control/lib/radio-control.directive.mjs +9 -1
  247. package/esm2022/cdk/radio-group-control/lib/radio-group-control.directive.mjs +12 -1
  248. package/esm2022/components/accordion/lib/accordion.component.mjs +9 -1
  249. package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +31 -1
  250. package/esm2022/components/accordion/lib/directives/accordion-item-title.mjs +4 -1
  251. package/esm2022/components/action-group/action-group.component.mjs +7 -1
  252. package/esm2022/components/area-header/area-header.component.mjs +9 -1
  253. package/esm2022/components/area-header/directives/area-header-content.directive.mjs +4 -1
  254. package/esm2022/components/area-header/directives/area-header-subtitle.directive.mjs +4 -1
  255. package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +29 -5
  256. package/esm2022/components/avatar/lib/avatar.component.mjs +9 -1
  257. package/esm2022/components/badge/lib/badge.component.mjs +11 -1
  258. package/esm2022/components/badge/lib/badge.directive.mjs +16 -1
  259. package/esm2022/components/bar/lib/bar.component.mjs +8 -1
  260. package/esm2022/components/bar/lib/directives/bar-button.directive.mjs +4 -1
  261. package/esm2022/components/bar/lib/directives/bar-label.directive.mjs +4 -1
  262. package/esm2022/components/breadcrumbs/lib/breadcrumbs.component.mjs +4 -1
  263. package/esm2022/components/button/lib/button.component.mjs +11 -1
  264. package/esm2022/components/button-group/lib/button-group.component.mjs +16 -1
  265. package/esm2022/components/calendar/lib/calendar.component.mjs +35 -1
  266. package/esm2022/components/calendar/lib/calendar.config.mjs +18 -1
  267. package/esm2022/components/calendar/lib/calendar.service.mjs +49 -1
  268. package/esm2022/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +19 -1
  269. package/esm2022/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +7 -1
  270. package/esm2022/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +7 -1
  271. package/esm2022/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +7 -1
  272. package/esm2022/components/calendar/lib/daterange.service.mjs +17 -1
  273. package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +26 -1
  274. package/esm2022/components/calendar/lib/directives/calendar-view.directive.mjs +39 -1
  275. package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +6 -1
  276. package/esm2022/components/calendar/lib/services/calendar-month.service.mjs +2 -1
  277. package/esm2022/components/calendar/lib/services/calendar-year.service.mjs +2 -1
  278. package/esm2022/components/calendar/lib/services/calendar-years.service.mjs +2 -1
  279. package/esm2022/components/calendar/lib/utils/check-cell-in-range.mjs +2 -1
  280. package/esm2022/components/calendar/lib/utils/check-identical-date.mjs +2 -1
  281. package/esm2022/components/calendar/lib/utils/get-A11y-label.mjs +2 -1
  282. package/esm2022/components/calendar/lib/utils/is-date-disabled.mjs +2 -1
  283. package/esm2022/components/calendar/lib/utils/parse-date.mjs +2 -1
  284. package/esm2022/components/calendar/lib/utils/validate-daterange.mjs +2 -1
  285. package/esm2022/components/calendar/lib/utils/validate-max-date.mjs +2 -1
  286. package/esm2022/components/calendar/lib/utils/validate-min-date.mjs +2 -1
  287. package/esm2022/components/calendar/lib/utils/validate-next-date-set.mjs +2 -1
  288. package/esm2022/components/calendar/lib/utils/validate-previous-date-set.mjs +2 -1
  289. package/esm2022/components/checkbox/lib/checkbox.component.mjs +33 -1
  290. package/esm2022/components/checkbox/lib/checkbox.validator.mjs +24 -1
  291. package/esm2022/components/chip/lib/components/chip/chip.component.mjs +15 -1
  292. package/esm2022/components/chip/lib/components/chip-list/chip-list.component.mjs +4 -1
  293. package/esm2022/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +4 -1
  294. package/esm2022/components/circular-progress/lib/circular-progress.component.mjs +21 -1
  295. package/esm2022/components/content-box/lib/content-box.component.mjs +4 -1
  296. package/esm2022/components/content-box/lib/directives/content-box-footer.directive.mjs +4 -1
  297. package/esm2022/components/content-box/lib/directives/content-box-header.directive.mjs +4 -1
  298. package/esm2022/components/datepicker/lib/datepicker.component.mjs +33 -1
  299. package/esm2022/components/datepicker/lib/datepicker.config.mjs +20 -1
  300. package/esm2022/components/datepicker/lib/directives/datepicker-input-control.directive.mjs +31 -1
  301. package/esm2022/components/datepicker/lib/utils/get-datepicker-input-pattern.mjs +3 -1
  302. package/esm2022/components/datepicker/lib/utils/get-datepicker-input-value-as-date.mjs +2 -1
  303. package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +65 -1
  304. package/esm2022/components/daterangepicker/lib/daterangepicker.config.mjs +20 -1
  305. package/esm2022/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.mjs +31 -1
  306. package/esm2022/components/daterangepicker/lib/range.validator.mjs +16 -1
  307. package/esm2022/components/daterangepicker/lib/required.validator.mjs +15 -1
  308. package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.mjs +3 -1
  309. package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.mjs +2 -1
  310. package/esm2022/components/dropdown/lib/dropdown.component.mjs +8 -1
  311. package/esm2022/components/dropdown/lib/dropdown.directive.mjs +55 -1
  312. package/esm2022/components/dropdown/lib/helpers/close-current-dropdown.mjs +6 -1
  313. package/esm2022/components/error-page/lib/error-page.component.mjs +8 -1
  314. package/esm2022/components/error-page/lib/error-page.config.mjs +9 -1
  315. package/esm2022/components/footer/lib/footer.component.mjs +10 -7
  316. package/esm2022/components/footer/lib/footer.config.mjs +3 -1
  317. package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +14 -1
  318. package/esm2022/components/form-field/lib/components/form-group/form-group.component.mjs +13 -1
  319. package/esm2022/components/form-field/lib/directives/form-field-control.directive.mjs +6 -1
  320. package/esm2022/components/form-field/lib/directives/form-field-error.directive.mjs +4 -1
  321. package/esm2022/components/form-field/lib/directives/form-field-hint.directive.mjs +4 -1
  322. package/esm2022/components/form-field/lib/directives/form-field-label.directive.mjs +4 -1
  323. package/esm2022/components/form-field/lib/directives/form.directive.mjs +14 -1
  324. package/esm2022/components/form-field/lib/form-field.component.mjs +14 -1
  325. package/esm2022/components/form-field/lib/form-field.service.mjs +43 -1
  326. package/esm2022/components/form-field/lib/services/form-field-error.service.mjs +25 -1
  327. package/esm2022/components/header/lib/directives/header-avatar.directive.mjs +5 -1
  328. package/esm2022/components/header/lib/directives/header-title.directive.mjs +4 -1
  329. package/esm2022/components/header/lib/header.component.mjs +4 -1
  330. package/esm2022/components/header-navigation/lib/directives/header-navigation-link.directive.mjs +4 -1
  331. package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +4 -1
  332. package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +15 -1
  333. package/esm2022/components/icon/lib/icon.component.mjs +25 -1
  334. package/esm2022/components/icon/lib/icon.config.mjs +20 -1
  335. package/esm2022/components/inline-message/lib/inline-message.component.mjs +14 -1
  336. package/esm2022/components/link/link.directive.mjs +4 -1
  337. package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +7 -1
  338. package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +18 -2
  339. package/esm2022/components/list/lib/list.component.mjs +6 -1
  340. package/esm2022/components/loading-spinner/lib/loading-spinner.component.mjs +10 -2
  341. package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +23 -1
  342. package/esm2022/components/logo/logo.directive.mjs +16 -1
  343. package/esm2022/components/main-menu/lib/directives/main-menu-button.directive.mjs +5 -1
  344. package/esm2022/components/main-menu/lib/directives/main-menu-close.directive.mjs +4 -1
  345. package/esm2022/components/main-menu/lib/directives/main-menu-item.directive.mjs +17 -1
  346. package/esm2022/components/main-menu/lib/helpers/create-main-menu-links.mjs +2 -1
  347. package/esm2022/components/main-menu/lib/main-menu.component.mjs +37 -1
  348. package/esm2022/components/main-menu/lib/main-menu.config.mjs +32 -1
  349. package/esm2022/components/main-menu/lib/main-menu.service.mjs +29 -1
  350. package/esm2022/components/mainfilter-group/lib/mainfilter-group.component.mjs +5 -1
  351. package/esm2022/components/menu/lib/directives/menu-item.directive.mjs +7 -1
  352. package/esm2022/components/menu/lib/menu.component.mjs +13 -1
  353. package/esm2022/components/menu/lib/menu.directive.mjs +19 -1
  354. package/esm2022/components/modal/lib/components/basic-modal/basic-modal.component.mjs +15 -1
  355. package/esm2022/components/modal/lib/components/modal-footer/modal-footer.component.mjs +4 -1
  356. package/esm2022/components/modal/lib/components/modal-header/modal-header.component.mjs +4 -1
  357. package/esm2022/components/modal/lib/components/modal-hero/modal-hero.component.mjs +12 -1
  358. package/esm2022/components/modal/lib/directives/modal-close.directive.mjs +25 -1
  359. package/esm2022/components/modal/lib/directives/modal-content.directive.mjs +4 -1
  360. package/esm2022/components/modal/lib/directives/modal-dismiss.directive.mjs +18 -1
  361. package/esm2022/components/modal/lib/helpers/inject-modal-ref.mjs +22 -1
  362. package/esm2022/components/modal/lib/helpers/provide-modal-ref.mjs +10 -1
  363. package/esm2022/components/modal/lib/modal.component.mjs +21 -2
  364. package/esm2022/components/modal/lib/modal.config.mjs +34 -1
  365. package/esm2022/components/modal/lib/modal.directive.mjs +25 -1
  366. package/esm2022/components/modal/lib/modal.service.mjs +39 -1
  367. package/esm2022/components/modal/lib/models/modal-ref.mjs +34 -1
  368. package/esm2022/components/navigation-back/lib/navigation-back.component.mjs +4 -1
  369. package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +1 -3
  370. package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +19 -5
  371. package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +2 -1
  372. package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +2 -1
  373. package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +2 -1
  374. package/esm2022/components/notification/lib/models/notification-feature.mjs +16 -1
  375. package/esm2022/components/notification/lib/notification.config.mjs +45 -1
  376. package/esm2022/components/notification/lib/notification.logger.mjs +2 -1
  377. package/esm2022/components/notification/lib/notification.service.mjs +56 -1
  378. package/esm2022/components/notification/lib/notification.tokens.mjs +4 -1
  379. package/esm2022/components/notification/lib/services/notification-center.service.mjs +10 -1
  380. package/esm2022/components/paginator/lib/paginator.component.mjs +90 -1
  381. package/esm2022/components/paginator/lib/paginator.config.mjs +29 -1
  382. package/esm2022/components/progress/lib/progress.component.mjs +16 -1
  383. package/esm2022/components/radio-group/lib/components/radio-button/radio-button.component.mjs +20 -3
  384. package/esm2022/components/radio-group/lib/radio-group.component.mjs +13 -2
  385. package/esm2022/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.mjs +17 -1
  386. package/esm2022/components/rail-navigation/lib/rail-navigation.component.mjs +27 -1
  387. package/esm2022/components/rich-list/lib/components/rich-list-content/rich-list-content.component.mjs +5 -1
  388. package/esm2022/components/rich-list/lib/components/rich-list-header/rich-list-header.component.mjs +5 -1
  389. package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +10 -2
  390. package/esm2022/components/rich-list/lib/rich-list.component.mjs +10 -3
  391. package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +49 -7
  392. package/esm2022/components/select/lib/directives/select-input-control.directive.mjs +12 -2
  393. package/esm2022/components/select/lib/pipes/select-search-filter.pipe.mjs +11 -1
  394. package/esm2022/components/select/lib/select.component.mjs +59 -5
  395. package/esm2022/components/slider/lib/slider.directive.mjs +20 -1
  396. package/esm2022/components/spinbox/lib/spinbox.component.mjs +17 -1
  397. package/esm2022/components/switch/lib/switch.component.mjs +11 -1
  398. package/esm2022/components/switch/lib/switch.validator.mjs +13 -1
  399. package/esm2022/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.mjs +29 -1
  400. package/esm2022/components/tab-bar/lib/tab-bar.component.mjs +71 -1
  401. package/esm2022/components/table/lib/components/check-cell/check-cell.component.mjs +19 -1
  402. package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +30 -2
  403. package/esm2022/components/table/lib/directives/table-cell.directive.mjs +5 -1
  404. package/esm2022/components/table/lib/directives/table-row.directive.mjs +5 -1
  405. package/esm2022/components/table/lib/table.component.mjs +30 -1
  406. package/esm2022/components/timepicker/lib/timepicker.component.mjs +15 -6
  407. package/esm2022/components/timepicker/lib/utils/generate-time-stamps.mjs +5 -3
  408. package/esm2022/components/timepicker/lib/utils/ngx-mask-helper.mjs +3 -3
  409. package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +3 -3
  410. package/esm2022/components/toast/lib/components/toast-item/toast-item.component.mjs +5 -3
  411. package/esm2022/components/toast/lib/models/toast.mjs +1 -1
  412. package/esm2022/components/toast/lib/toast.config.mjs +27 -1
  413. package/esm2022/components/toast/lib/toast.service.mjs +36 -1
  414. package/esm2022/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +12 -1
  415. package/esm2022/components/toggle-button-group/lib/toggle-button-group.component.mjs +14 -2
  416. package/esm2022/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.mjs +8 -1
  417. package/esm2022/components/tooltip/lib/tooltip.component.mjs +18 -1
  418. package/esm2022/components/tooltip/lib/tooltip.directive.mjs +36 -1
  419. package/esm2022/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +35 -1
  420. package/esm2022/components/wizard/lib/wizard.component.mjs +21 -1
  421. package/esm2022/internal/lib/helpers/decorator-property-name.mjs +9 -1
  422. package/esm2022/internal/translate/lib/translate.config.mjs +32 -1
  423. package/esm2022/internal/translate/lib/translate.service.mjs +30 -1
  424. package/esm2022/lib/controllers/controller.mjs +26 -1
  425. package/esm2022/lib/controllers/disabled.controller.mjs +60 -1
  426. package/esm2022/lib/controllers/readonly.controller.mjs +57 -1
  427. package/esm2022/lib/directives/click-outside.directive.mjs +30 -1
  428. package/esm2022/lib/directives/delegate-focus.directive.mjs +15 -1
  429. package/esm2022/lib/services/window-ref.mjs +67 -1
  430. package/esm2022/lib/tokens/identity-matcher.mjs +25 -1
  431. package/esm2022/lib/tokens/string-search-handler.mjs +25 -1
  432. package/esm2022/lib/tokens/stringify.mjs +26 -1
  433. package/esm2022/localization/lib/features/with-http-language-header.mjs +54 -1
  434. package/esm2022/localization/lib/features/with-http-language-query-param.mjs +52 -1
  435. package/esm2022/localization/lib/loaders/browser-language-loader.mjs +33 -1
  436. package/esm2022/localization/lib/localization.config.mjs +71 -1
  437. package/esm2022/localization/lib/localization.service.mjs +42 -3
  438. package/esm2022/localization/lib/models/localization-feature.mjs +8 -1
  439. package/esm2022/rxjs/index.mjs +2 -2
  440. package/esm2022/rxjs/lib/delay-until.mjs +23 -1
  441. package/esm2022/rxjs/lib/from-element-mutation.mjs +22 -1
  442. package/esm2022/rxjs/lib/from-element-resize.mjs +25 -1
  443. package/esm2022/rxjs/lib/from-events.mjs +25 -1
  444. package/esm2022/rxjs/lib/from-query-list.mjs +24 -0
  445. package/esm2022/sdk/lib/application-environment.mjs +51 -1
  446. package/esm2022/theming/lib/helpers/prefers-dark-theme.mjs +19 -1
  447. package/esm2022/theming/lib/helpers/resolve-theme.mjs +26 -1
  448. package/esm2022/theming/lib/helpers/theme-storage.mjs +43 -1
  449. package/esm2022/theming/lib/theming.config.mjs +34 -1
  450. package/esm2022/theming/lib/theming.service.mjs +32 -1
  451. package/esm2022/utils/lib/decorators/pure.mjs +52 -1
  452. package/esm2022/utils/lib/helpers/angular.mjs +37 -1
  453. package/esm2022/utils/lib/helpers/array.mjs +5 -1
  454. package/esm2022/utils/lib/helpers/build-url.mjs +21 -1
  455. package/esm2022/utils/lib/helpers/build-website-url.mjs +3 -2
  456. package/esm2022/utils/lib/helpers/cache-storage-client.mjs +52 -1
  457. package/esm2022/utils/lib/helpers/coercion.mjs +18 -1
  458. package/esm2022/utils/lib/helpers/debounce.mjs +28 -1
  459. package/esm2022/utils/lib/helpers/defer-fn.mjs +21 -1
  460. package/esm2022/utils/lib/helpers/dom.mjs +71 -1
  461. package/esm2022/utils/lib/helpers/get-axis.mjs +21 -1
  462. package/esm2022/utils/lib/helpers/get-language-code.mjs +18 -1
  463. package/esm2022/utils/lib/helpers/get-opposite-side.mjs +22 -1
  464. package/esm2022/utils/lib/helpers/get-side.mjs +18 -1
  465. package/esm2022/utils/lib/helpers/get-unique-id.mjs +34 -1
  466. package/esm2022/utils/lib/helpers/match-url.mjs +41 -1
  467. package/esm2022/utils/lib/helpers/ng-changes.mjs +30 -1
  468. package/esm2022/utils/lib/helpers/provide-config.mjs +57 -1
  469. package/esm2022/utils/lib/helpers/queue.mjs +84 -1
  470. package/esm2022/utils/lib/helpers/type-guards.mjs +58 -1
  471. package/esm2022/utils/lib/helpers/until-destroyed.mjs +39 -1
  472. package/fesm2022/odx-angular-animations.mjs +173 -0
  473. package/fesm2022/odx-angular-animations.mjs.map +1 -1
  474. package/fesm2022/odx-angular-breakpoints.mjs +136 -0
  475. package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
  476. package/fesm2022/odx-angular-cdk-a11y.mjs +71 -0
  477. package/fesm2022/odx-angular-cdk-a11y.mjs.map +1 -1
  478. package/fesm2022/odx-angular-cdk-active-indicator.mjs +63 -0
  479. package/fesm2022/odx-angular-cdk-active-indicator.mjs.map +1 -1
  480. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +39 -1
  481. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs.map +1 -1
  482. package/fesm2022/odx-angular-cdk-checkbox-control.mjs +3 -0
  483. package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  484. package/fesm2022/odx-angular-cdk-connected-overlay.mjs +103 -0
  485. package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
  486. package/fesm2022/odx-angular-cdk-custom-form-control.mjs +183 -2
  487. package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  488. package/fesm2022/odx-angular-cdk-dynamic-view.mjs +202 -0
  489. package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  490. package/fesm2022/odx-angular-cdk-event-plugins.mjs +135 -0
  491. package/fesm2022/odx-angular-cdk-event-plugins.mjs.map +1 -1
  492. package/fesm2022/odx-angular-cdk-expandable.mjs +88 -0
  493. package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
  494. package/fesm2022/odx-angular-cdk-option-control.mjs +47 -0
  495. package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
  496. package/fesm2022/odx-angular-cdk-radio-group-control.mjs +19 -0
  497. package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  498. package/fesm2022/odx-angular-components-accordion.mjs +41 -0
  499. package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
  500. package/fesm2022/odx-angular-components-action-group.mjs +6 -0
  501. package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
  502. package/fesm2022/odx-angular-components-area-header.mjs +14 -0
  503. package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
  504. package/fesm2022/odx-angular-components-autocomplete.mjs +28 -4
  505. package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
  506. package/fesm2022/odx-angular-components-avatar.mjs +8 -0
  507. package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
  508. package/fesm2022/odx-angular-components-badge.mjs +25 -0
  509. package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
  510. package/fesm2022/odx-angular-components-bar.mjs +13 -0
  511. package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
  512. package/fesm2022/odx-angular-components-breadcrumbs.mjs +3 -0
  513. package/fesm2022/odx-angular-components-breadcrumbs.mjs.map +1 -1
  514. package/fesm2022/odx-angular-components-button-group.mjs +15 -0
  515. package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
  516. package/fesm2022/odx-angular-components-button.mjs +10 -0
  517. package/fesm2022/odx-angular-components-button.mjs.map +1 -1
  518. package/fesm2022/odx-angular-components-calendar.mjs +232 -0
  519. package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
  520. package/fesm2022/odx-angular-components-checkbox.mjs +55 -0
  521. package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
  522. package/fesm2022/odx-angular-components-chip.mjs +20 -0
  523. package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
  524. package/fesm2022/odx-angular-components-circular-progress.mjs +20 -0
  525. package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
  526. package/fesm2022/odx-angular-components-content-box.mjs +9 -0
  527. package/fesm2022/odx-angular-components-content-box.mjs.map +1 -1
  528. package/fesm2022/odx-angular-components-datepicker.mjs +84 -0
  529. package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
  530. package/fesm2022/odx-angular-components-daterangepicker.mjs +145 -0
  531. package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
  532. package/fesm2022/odx-angular-components-dropdown.mjs +66 -0
  533. package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
  534. package/fesm2022/odx-angular-components-error-page.mjs +15 -0
  535. package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
  536. package/fesm2022/odx-angular-components-footer.mjs +11 -6
  537. package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
  538. package/fesm2022/odx-angular-components-form-field.mjs +131 -0
  539. package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
  540. package/fesm2022/odx-angular-components-header-navigation.mjs +6 -0
  541. package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
  542. package/fesm2022/odx-angular-components-header.mjs +10 -0
  543. package/fesm2022/odx-angular-components-header.mjs.map +1 -1
  544. package/fesm2022/odx-angular-components-icon.mjs +57 -0
  545. package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
  546. package/fesm2022/odx-angular-components-inline-message.mjs +13 -0
  547. package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
  548. package/fesm2022/odx-angular-components-link.mjs +3 -0
  549. package/fesm2022/odx-angular-components-link.mjs.map +1 -1
  550. package/fesm2022/odx-angular-components-list.mjs +28 -1
  551. package/fesm2022/odx-angular-components-list.mjs.map +1 -1
  552. package/fesm2022/odx-angular-components-loading-spinner.mjs +30 -0
  553. package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
  554. package/fesm2022/odx-angular-components-logo.mjs +15 -0
  555. package/fesm2022/odx-angular-components-logo.mjs.map +1 -1
  556. package/fesm2022/odx-angular-components-main-menu.mjs +119 -0
  557. package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
  558. package/fesm2022/odx-angular-components-mainfilter-group.mjs +4 -0
  559. package/fesm2022/odx-angular-components-mainfilter-group.mjs.map +1 -1
  560. package/fesm2022/odx-angular-components-menu.mjs +36 -0
  561. package/fesm2022/odx-angular-components-menu.mjs.map +1 -1
  562. package/fesm2022/odx-angular-components-modal.mjs +252 -0
  563. package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
  564. package/fesm2022/odx-angular-components-navigation-back.mjs +3 -0
  565. package/fesm2022/odx-angular-components-navigation-back.mjs.map +1 -1
  566. package/fesm2022/odx-angular-components-notification.mjs +148 -6
  567. package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
  568. package/fesm2022/odx-angular-components-paginator.mjs +117 -0
  569. package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
  570. package/fesm2022/odx-angular-components-progress.mjs +15 -0
  571. package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
  572. package/fesm2022/odx-angular-components-radio-group.mjs +30 -2
  573. package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
  574. package/fesm2022/odx-angular-components-rail-navigation.mjs +42 -0
  575. package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
  576. package/fesm2022/odx-angular-components-rich-list.mjs +26 -3
  577. package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
  578. package/fesm2022/odx-angular-components-select.mjs +126 -11
  579. package/fesm2022/odx-angular-components-select.mjs.map +1 -1
  580. package/fesm2022/odx-angular-components-slider.mjs +19 -0
  581. package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
  582. package/fesm2022/odx-angular-components-spinbox.mjs +16 -0
  583. package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
  584. package/fesm2022/odx-angular-components-switch.mjs +22 -0
  585. package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
  586. package/fesm2022/odx-angular-components-tab-bar.mjs +98 -0
  587. package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
  588. package/fesm2022/odx-angular-components-table.mjs +84 -1
  589. package/fesm2022/odx-angular-components-table.mjs.map +1 -1
  590. package/fesm2022/odx-angular-components-timepicker.mjs +20 -9
  591. package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
  592. package/fesm2022/odx-angular-components-toast.mjs +67 -4
  593. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  594. package/fesm2022/odx-angular-components-toggle-button-group.mjs +23 -0
  595. package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
  596. package/fesm2022/odx-angular-components-tooltip.mjs +59 -0
  597. package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
  598. package/fesm2022/odx-angular-components-wizard.mjs +54 -0
  599. package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
  600. package/fesm2022/odx-angular-internal-translate.mjs +60 -0
  601. package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
  602. package/fesm2022/odx-angular-internal.mjs +8 -0
  603. package/fesm2022/odx-angular-internal.mjs.map +1 -1
  604. package/fesm2022/odx-angular-localization.mjs +254 -2
  605. package/fesm2022/odx-angular-localization.mjs.map +1 -1
  606. package/fesm2022/odx-angular-rxjs.mjs +115 -5
  607. package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
  608. package/fesm2022/odx-angular-sdk.mjs +50 -0
  609. package/fesm2022/odx-angular-sdk.mjs.map +1 -1
  610. package/fesm2022/odx-angular-theming.mjs +149 -0
  611. package/fesm2022/odx-angular-theming.mjs.map +1 -1
  612. package/fesm2022/odx-angular-utils.mjs +709 -1
  613. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  614. package/fesm2022/odx-angular.mjs +322 -0
  615. package/fesm2022/odx-angular.mjs.map +1 -1
  616. package/internal/lib/helpers/decorator-property-name.d.ts +8 -0
  617. package/internal/translate/lib/translate.config.d.ts +31 -0
  618. package/internal/translate/lib/translate.service.d.ts +29 -0
  619. package/lib/controllers/controller.d.ts +25 -0
  620. package/lib/controllers/disabled.controller.d.ts +59 -0
  621. package/lib/controllers/readonly.controller.d.ts +56 -0
  622. package/lib/directives/click-outside.directive.d.ts +29 -0
  623. package/lib/directives/delegate-focus.directive.d.ts +14 -0
  624. package/lib/services/window-ref.d.ts +66 -0
  625. package/lib/tokens/identity-matcher.d.ts +41 -0
  626. package/lib/tokens/string-search-handler.d.ts +39 -0
  627. package/lib/tokens/stringify.d.ts +42 -0
  628. package/localization/lib/features/with-http-language-header.d.ts +63 -0
  629. package/localization/lib/features/with-http-language-query-param.d.ts +61 -0
  630. package/localization/lib/loaders/browser-language-loader.d.ts +32 -0
  631. package/localization/lib/localization.config.d.ts +81 -0
  632. package/localization/lib/localization.service.d.ts +39 -0
  633. package/localization/lib/models/localization-feature.d.ts +7 -0
  634. package/package.json +1 -1
  635. package/rxjs/index.d.ts +1 -1
  636. package/rxjs/lib/delay-until.d.ts +22 -0
  637. package/rxjs/lib/from-element-mutation.d.ts +21 -0
  638. package/rxjs/lib/from-element-resize.d.ts +24 -0
  639. package/rxjs/lib/from-events.d.ts +24 -0
  640. package/rxjs/lib/from-query-list.d.ts +22 -0
  641. package/sdk/lib/application-environment.d.ts +59 -0
  642. package/theming/lib/helpers/prefers-dark-theme.d.ts +18 -0
  643. package/theming/lib/helpers/resolve-theme.d.ts +25 -0
  644. package/theming/lib/helpers/theme-storage.d.ts +42 -0
  645. package/theming/lib/theming.config.d.ts +46 -0
  646. package/theming/lib/theming.service.d.ts +31 -0
  647. package/utils/lib/decorators/pure.d.ts +51 -0
  648. package/utils/lib/helpers/angular.d.ts +36 -0
  649. package/utils/lib/helpers/array.d.ts +4 -0
  650. package/utils/lib/helpers/build-url.d.ts +20 -0
  651. package/utils/lib/helpers/build-website-url.d.ts +2 -1
  652. package/utils/lib/helpers/cache-storage-client.d.ts +51 -0
  653. package/utils/lib/helpers/coercion.d.ts +17 -0
  654. package/utils/lib/helpers/debounce.d.ts +27 -0
  655. package/utils/lib/helpers/defer-fn.d.ts +20 -0
  656. package/utils/lib/helpers/dom.d.ts +70 -0
  657. package/utils/lib/helpers/get-axis.d.ts +20 -0
  658. package/utils/lib/helpers/get-language-code.d.ts +17 -0
  659. package/utils/lib/helpers/get-opposite-side.d.ts +21 -0
  660. package/utils/lib/helpers/get-side.d.ts +17 -0
  661. package/utils/lib/helpers/get-unique-id.d.ts +33 -0
  662. package/utils/lib/helpers/match-url.d.ts +40 -0
  663. package/utils/lib/helpers/ng-changes.d.ts +52 -0
  664. package/utils/lib/helpers/provide-config.d.ts +56 -0
  665. package/utils/lib/helpers/queue.d.ts +83 -0
  666. package/utils/lib/helpers/type-guards.d.ts +57 -0
  667. package/utils/lib/helpers/until-destroyed.d.ts +38 -0
  668. package/esm2022/rxjs/lib/form-query-list.mjs +0 -5
  669. package/rxjs/lib/form-query-list.d.ts +0 -3
@@ -175,16 +175,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
175
175
  * @returns {string} The processed and potentially reformatted value.
176
176
  *
177
177
  * @example
178
+ * ```ts
178
179
  * // Prepend 0 to single-digit hours greater than 1
179
180
  * processInputValue("2", { inputType: "insertText" }); // Returns "02"
180
181
  *
181
- * @example
182
182
  * // Ensure minute values are within valid ranges
183
183
  * processInputValue("11:8", { inputType: "insertText" }); // Returns "11:08"
184
184
  *
185
- * @example
186
185
  * // Append 'M' to AM/PM indicators
187
186
  * processInputValue("2 p", { inputType: "insertText" }); // Returns "2 PM"
187
+ * ```
188
188
  */
189
189
  function processInputValue(value, event) {
190
190
  if (value.length === 1 && Number(value) > 1) {
@@ -289,14 +289,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
289
289
  * @param {boolean} useLocale - Determines if the time stamps should use the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).
290
290
  * @returns {string[]} An array of formatted time stamps as strings.
291
291
  * @example
292
+ * ```ts
292
293
  * // Generate time stamps every 30 minutes using 24-hour format
293
294
  * generateTimeStamps(30, false);
294
295
  * // Returns ["00:00", "00:30", "01:00", ..., "23:30"]
295
296
  *
296
- * @example
297
297
  * // Generate time stamps every 60 minutes using 12-hour format with AM/PM
298
298
  * generateTimeStamps(60, true);
299
299
  * // Returns ["12:00 AM", "01:00 AM", ..., "11:00 PM"]
300
+ * ```
300
301
  */
301
302
  function generateTimeStamps(step, useLocale) {
302
303
  const roundedStep = Math.round(step);
@@ -315,12 +316,13 @@ function generateTimeStamps(step, useLocale) {
315
316
  * @param {boolean} useLocale - Determines if the time should be formatted using the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).
316
317
  * @returns {string} The formatted time as a string.
317
318
  * @example
319
+ * ```ts
318
320
  * // Format time using 24-hour format
319
321
  * formatTime(14, 30, false); // "14:30"
320
322
  *
321
- * @example
322
323
  * // Format time using 12-hour format with AM/PM
323
324
  * formatTime(14, 30, true); // "2:30 PM"
325
+ * ```
324
326
  */
325
327
  function formatTime(hours, minutes, useLocale) {
326
328
  if (useLocale) {
@@ -338,7 +340,7 @@ var TimepickerComponent_1;
338
340
  * Represents a time picker component allowing users to select a time from a dropdown list.
339
341
  * This component integrates with Angular forms and supports customization for locale, time range, and step intervals.
340
342
  *
341
- * @extends {CustomFormControl<string | null>}
343
+ * @see {CustomFormControl}
342
344
  */
343
345
  let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
344
346
  static { TimepickerComponent_1 = this; }
@@ -354,6 +356,10 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
354
356
  }
355
357
  this._useLocale = val;
356
358
  }
359
+ /**
360
+ * Gets a boolean value indicating whether the locale is being used.
361
+ * @returns {boolean} A boolean value indicating whether the locale is being used.
362
+ */
357
363
  get useLocale() {
358
364
  return this._useLocale;
359
365
  }
@@ -384,10 +390,11 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
384
390
  this.handleDateFieldChanges();
385
391
  this.updateInputValue();
386
392
  }
387
- onOpen() {
388
- this.keyManager = new ActiveDescendantKeyManager(this.options).withHomeAndEnd();
389
- this.setActiveOptionBasedOnCurrentValue();
390
- }
393
+ /**
394
+ * Checks if the given time option is selected.
395
+ * @param option - The time option to check.
396
+ * @returns True if the option is selected, false otherwise.
397
+ */
391
398
  isTimeOptionSelected(option) {
392
399
  return this.value === option.value;
393
400
  }
@@ -421,6 +428,10 @@ let TimepickerComponent = class TimepickerComponent extends CustomFormControl {
421
428
  get timeStampsList() {
422
429
  return generateTimeStamps(this.step, this.useLocale);
423
430
  }
431
+ onOpen() {
432
+ this.keyManager = new ActiveDescendantKeyManager(this.options).withHomeAndEnd();
433
+ this.setActiveOptionBasedOnCurrentValue();
434
+ }
424
435
  handleControllerEvent(event) {
425
436
  if (this.readonlyController?.readonly)
426
437
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-timepicker.mjs","sources":["../../../../libs/angular/components/timepicker/src/lib/timepicker.token.ts","../../../../libs/angular/components/timepicker/src/lib/components/timepicker-option.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.service.ts","../../../../libs/angular/components/timepicker/src/lib/utils/ngx-mask-helper.ts","../../../../libs/angular/components/timepicker/src/lib/directives/timepicker-input-control.directive.ts","../../../../libs/angular/components/timepicker/src/lib/utils/generate-time-stamps.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.html","../../../../libs/angular/components/timepicker/src/lib/timepicker.module.ts","../../../../libs/angular/components/timepicker/src/odx-angular-components-timepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { TimepickerComponent } from './timepicker.component';\n\n/**\n * An InjectionToken used for injecting an instance of TimepickerComponent.\n * This token facilitates the decoupling of the TimepickerComponent's implementation from its consumption,\n * allowing for more flexible and maintainable code, especially in scenarios requiring custom time picker\n * behavior or appearance.\n */\nexport const TIMEPICKER_CONTROL = new InjectionToken<TimepickerComponent>('@odx/angular/components/timepicker::TimepickerComponent');\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { DisabledController, WithDisabledState, detectControllerChanges } from '@odx/angular';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\n\n/**\n * Represents a selectable option within a timepicker component. This component allows for\n * individual time values to be selected from a dropdown menu as part of the timepicker interface.\n * It integrates with the timepicker's control to manage selection state and accessibility.\n *\n * @extends {OptionControl<string>}\n */\n@CSSComponent('timepicker-option')\n@Component({\n selector: 'odx-timepicker-option',\n template: `<ng-content></ng-content>`,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DisabledController.connect()],\n hostDirectives: [WithDisabledState],\n})\nexport class TimepickerOptionComponent extends OptionControl<string> implements OnInit {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n protected readonly disabledController = DisabledController.inject();\n\n public isSelected = false;\n public override isActive = false;\n\n public get disabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n /**\n * Emits an event when the option is selected, allowing the timepicker component to update its value and close the dropdown.\n */\n @Output()\n public selected = new EventEmitter<TimepickerOptionComponent>();\n\n constructor() {\n super();\n detectControllerChanges(this.timepicker).pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.isSelected = this.timepicker.isTimeOptionSelected(this);\n }\n\n protected selectOption(): void {\n this.selected.emit(this);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { isAfter, isBefore, isEqual } from 'date-fns';\n\n/**\n * Service to provide utility functions for timepicker components, including validation, placeholder generation, and finding the closest time.\n * It also handles locale-based time formatting.\n */\n@Injectable({ providedIn: 'root' })\nexport class TimepickerService {\n private readonly windowRef = inject(WindowRef);\n\n /**\n * Generates a placeholder string for time input fields.\n *\n * @param {boolean} apm - Specifies if the placeholder should include AM/PM notation.\n * @returns {string} The placeholder string.\n */\n public getPlaceholder(apm = false): string {\n return apm ? '--:-- --' : '--:--';\n }\n\n /**\n * Validates if the given time is less than or equal to a maximum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} max - The maximum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public maxValidation(time: string, max: string): boolean {\n const [targetValue, maxValue] = this.convertToDates([time, max]);\n return isBefore(targetValue, maxValue) || isEqual(targetValue, maxValue);\n }\n\n /**\n * Validates if the given time is greater than or equal to a minimum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} min - The minimum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public minValidation(time: string, min: string): boolean {\n const [targetValue, minValue] = this.convertToDates([time, min]);\n return isAfter(targetValue, minValue) || isEqual(targetValue, minValue);\n }\n\n /**\n * Finds the closest time to a target time from a list of times.\n *\n * @param {string[]} timeStamps - The list of times to search through.\n * @param {string} targetTime - The target time to find the closest match for.\n * @returns {string} The closest time to the target.\n */\n public findClosestDate(timeStamps: string[], targetTime: string): string {\n const [target] = this.convertToDates([targetTime]);\n const datesArray = this.convertToDates(timeStamps);\n\n const closestDate = datesArray.reduce((prev, curr) => {\n return Math.abs(curr.getTime() - target.getTime()) < Math.abs(prev.getTime() - target.getTime()) ? curr : prev;\n });\n\n return this.getLocalizedTimeFormat(`${closestDate.getHours()}:${closestDate.getMinutes()}`);\n }\n\n /**\n * Formats a time string to a localized time format.\n *\n * @param {string} time - The time string to format.\n * @param {boolean} hour12 - Specifies if the output should use 12-hour format with AM/PM notation.\n * @returns {string} The formatted time string.\n */\n public getLocalizedTimeFormat(time: string, hour12 = false): string {\n const locale = hour12 ? 'en-US' : 'en-GB';\n const [date] = this.convertToDates([time]);\n return new this.windowRef.nativeWindow.Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12,\n }).format(date);\n }\n\n /**\n * Converts an array of time strings to an array of Date objects.\n *\n * @param {string[]} times - The time strings to convert.\n * @returns {Date[]} An array of Date objects corresponding to the input times.\n * @private\n */\n private convertToDates(times: string[]): Date[] {\n return times.map((time) => new Date(`${time} 2022-12-19`));\n }\n}\n","/**\n * Processes and formats a time input value based on specific rules. It adjusts the input for valid time format,\n * especially focusing on single-digit hour inputs, ensuring minute values start with 0 if the last digit is greater\n * than 5, and appending 'M' to AM/PM indicators.\n *\n * @param {string} value - The current input value of the time field.\n * @param {InputEvent} event - The input event triggered by the user's interaction with the field.\n * @returns {string} The processed and potentially reformatted value.\n *\n * @example\n * // Prepend 0 to single-digit hours greater than 1\n * processInputValue(\"2\", { inputType: \"insertText\" }); // Returns \"02\"\n *\n * @example\n * // Ensure minute values are within valid ranges\n * processInputValue(\"11:8\", { inputType: \"insertText\" }); // Returns \"11:08\"\n *\n * @example\n * // Append 'M' to AM/PM indicators\n * processInputValue(\"2 p\", { inputType: \"insertText\" }); // Returns \"2 PM\"\n */\nexport function processInputValue(value: string, event: InputEvent): string {\n if (value.length === 1 && Number(value) > 1) {\n value = `0${value}`;\n } else if (value.length === 4 && Number(value.at(-1)) > 5) {\n value = `${value.slice(0, -1)}0${value.slice(-1)}`;\n }\n\n if (/[AaPp]/.test(value) && event.inputType === 'insertText') {\n value = `${value.toUpperCase()}M`;\n }\n\n return value;\n}\n","import { Directive, inject } from '@angular/core';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { IConfig, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\nimport { TimepickerService } from '../timepicker.service';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\nimport { processInputValue } from '../utils/ngx-mask-helper';\n\n/**\n * Directive to enhance a standard input element for time picking, integrating mask functionality for time format.\n * It automatically adapts to locale settings provided by the enclosing `TimepickerComponent` to display time in the appropriate format.\n *\n * @extends {InputControlDirective}\n */\n@CSSComponent('timepicker__control')\n@Directive({\n standalone: true,\n selector: 'input[odxTimepickerControl]',\n host: {\n '[attr.readonly]': 'isReadonly || null',\n '[attr.placeholder]': 'placeholder',\n },\n providers: [provideNgxMask(), NgxMaskPipe],\n hostDirectives: [WithTabIndex, WithDisabledState],\n})\nexport class TimepickerInputControlDirective extends InputControlDirective {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n private readonly timepickerService = inject(TimepickerService);\n protected readonly ngxMaskPipe = inject(NgxMaskPipe);\n\n /**\n * Configuration for the mask applied to the timepicker input. Adjusts based on locale settings.\n */\n protected get maskConfig(): Partial<IConfig> {\n return {\n validation: false,\n apm: this.timepicker.useLocale,\n leadZeroDateTime: !this.timepicker.useLocale,\n\n patterns: {\n A: { pattern: new RegExp('[AaPp]') },\n M: { pattern: new RegExp('M') },\n },\n };\n }\n\n /**\n * Stream of value changes for the input element, applying the mask and processing the input based on locale.\n */\n public override valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n distinctUntilChanged(),\n map((event) => this.applyMask(event)),\n );\n\n /**\n * Computes and returns the placeholder text for the input based on locale settings.\n *\n * @returns {string} The placeholder text for the input.\n */\n public get placeholder(): string {\n return this.timepickerService.getPlaceholder(this.timepicker.useLocale);\n }\n\n /**\n * Determines whether the timepicker input is readonly, based on the state of the parent timepicker component.\n *\n * @returns {boolean} `true` if the input should be readonly; otherwise, `false`.\n */\n protected get isReadonly(): boolean {\n return this.timepicker.isReadonly;\n }\n\n /**\n * Applies the time format mask to the input value, transforming and returning the masked value.\n *\n * @param {Event} event - The input event triggering the mask application.\n * @returns {string} The masked input value.\n */\n private applyMask(event: Event): string {\n const mask = this.timepicker.useLocale ? 'Hh:m0 AM' : 'Hh:m0';\n let value = this.ngxMaskPipe.transform(this.nativeElementValue, mask, this.maskConfig);\n if (this.timepicker.useLocale) {\n value = processInputValue(value, event as InputEvent);\n }\n this.nativeElementValue = value;\n return value;\n }\n}\n","/**\n * Generates an array of time stamps within a 24-hour period based on the specified step interval.\n * The time stamps can be formatted in 24-hour format or 12-hour format with AM/PM based on locale preference.\n *\n * @param {number} step - The interval, in minutes, between each time stamp.\n * @param {boolean} useLocale - Determines if the time stamps should use the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string[]} An array of formatted time stamps as strings.\n * @example\n * // Generate time stamps every 30 minutes using 24-hour format\n * generateTimeStamps(30, false);\n * // Returns [\"00:00\", \"00:30\", \"01:00\", ..., \"23:30\"]\n *\n * @example\n * // Generate time stamps every 60 minutes using 12-hour format with AM/PM\n * generateTimeStamps(60, true);\n * // Returns [\"12:00 AM\", \"01:00 AM\", ..., \"11:00 PM\"]\n */\nexport function generateTimeStamps(step: number, useLocale: boolean): string[] {\n const roundedStep = Math.round(step);\n\n return Array.from({ length: Math.ceil(24 * (60 / roundedStep)) }, (_, i) => {\n const hours = Math.floor((i * roundedStep) / 60);\n const minutes = (i * roundedStep) % 60;\n return formatTime(hours, minutes, useLocale);\n });\n}\n\n/**\n * Formats a given time as a string based on the specified hour, minute, and locale preference.\n * Can format time in either 24-hour format or 12-hour format with AM/PM.\n *\n * @param {number} hours - The hour component of the time.\n * @param {number} minutes - The minute component of the time.\n * @param {boolean} useLocale - Determines if the time should be formatted using the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string} The formatted time as a string.\n * @example\n * // Format time using 24-hour format\n * formatTime(14, 30, false); // \"14:30\"\n *\n * @example\n * // Format time using 12-hour format with AM/PM\n * formatTime(14, 30, true); // \"2:30 PM\"\n */\nfunction formatTime(hours: number, minutes: number, useLocale: boolean): string {\n if (useLocale) {\n const period = hours >= 12 ? 'PM' : 'AM';\n const displayHours = hours % 12 === 0 ? 12 : hours % 12;\n return `${displayHours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')} ${period}`;\n } else {\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { DisabledController, ReadonlyController } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { DropdownDirective, DropdownModule } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, isFunction, trackByIndex, untilDestroyed } from '@odx/angular/utils';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerService } from './timepicker.service';\nimport { TIMEPICKER_CONTROL } from './timepicker.token';\nimport { generateTimeStamps } from './utils/generate-time-stamps';\n\n/**\n * Represents a time picker component allowing users to select a time from a dropdown list.\n * This component integrates with Angular forms and supports customization for locale, time range, and step intervals.\n *\n * @extends {CustomFormControl<string | null>}\n */\n@CSSComponent('timepicker')\n@Component({\n standalone: true,\n selector: 'odx-timepicker',\n templateUrl: 'timepicker.component.html',\n providers: [\n DisabledController.connect(),\n ReadonlyController.connect(),\n {\n provide: TIMEPICKER_CONTROL,\n useExisting: forwardRef(() => TimepickerComponent),\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, ActionGroupComponent, ButtonComponent, DropdownModule, TimepickerOptionComponent, IconComponent, TimepickerInputControlDirective],\n host: {\n '[attr.readonly]': 'readonlyController?.readonly || null',\n },\n})\nexport class TimepickerComponent extends CustomFormControl<string | null> implements AfterViewInit {\n private readonly timepickerService = inject(TimepickerService);\n private _useLocale = false;\n protected keyManager?: ActiveDescendantKeyManager<OptionControl<string>>;\n\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly trackByIndex = trackByIndex;\n\n @ViewChild(DropdownDirective)\n protected readonly dropdown?: DropdownDirective;\n\n @ViewChildren(TimepickerOptionComponent, { emitDistinctChangesOnly: true })\n protected options!: QueryList<TimepickerOptionComponent>;\n\n public readonly element = injectElement();\n\n /**\n * Controls whether the timepicker should use locale-specific time formats AM/PM.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set useLocale(val: boolean) {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, val);\n this.updateValue(time);\n this.dateField.nativeElementValue = time;\n }\n this._useLocale = val;\n }\n\n public get useLocale(): boolean {\n return this._useLocale;\n }\n\n /**\n * Controls the step interval between time options in minutes.\n * @default 30\n */\n @Input({ transform: numberAttribute })\n public step = 30;\n\n /**\n * Specifies the minimum time value that can be selected ('05:00' or '05:00 AM').\n * @default '00:00'\n */\n @Input()\n public min = '00:00';\n\n /**\n * Specifies the maximum time value that can be selected ('22:00' or '10:00 PM').\n * @default '23:59'\n */\n @Input()\n public max = '23:59';\n\n @ViewChild(TimepickerInputControlDirective)\n public dateField?: TimepickerInputControlDirective;\n\n constructor() {\n super(null);\n }\n\n public ngAfterViewInit(): void {\n this.handleDateFieldChanges();\n this.updateInputValue();\n }\n\n public onOpen(): void {\n this.keyManager = new ActiveDescendantKeyManager<OptionControl<string>>(this.options).withHomeAndEnd();\n this.setActiveOptionBasedOnCurrentValue();\n }\n\n public isTimeOptionSelected(option: TimepickerOptionComponent): boolean {\n return this.value === option.value;\n }\n\n /**\n * Handles the selection of a time option from the dropdown, updating the input field and closing the dropdown.\n *\n * @param {TimepickerOptionComponent} option - The selected time option component.\n */\n public timeSelected(option?: TimepickerOptionComponent): void {\n if (!option || option.disabled) return;\n const time = this.timepickerService.getLocalizedTimeFormat(option.getLabel(), this.useLocale);\n this.dateField && (this.dateField.nativeElementValue = time);\n this.updateValue(time);\n this.dropdown?.close();\n }\n\n /**\n * Determines whether the specified time is within the allowed time range.\n *\n * @param {string} time - The time to check, in 'HH:mm' or 'HH:mm AM/PM' format.\n * @returns {boolean} True if the time is within the range; otherwise, false.\n */\n public inTimeRange(time: string): boolean {\n return this.timepickerService.maxValidation(time, this.max) && this.timepickerService.minValidation(time, this.min);\n }\n\n /**\n * Generates the list of time options based on the configured step interval and locale settings AM/PM.\n *\n * @returns {string[]} An array of time strings in 'HH:mm' format.\n */\n public get timeStampsList(): string[] {\n return generateTimeStamps(this.step, this.useLocale);\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.readonlyController?.readonly) return;\n\n this.keyManager?.onKeydown(event);\n const activeOption = this.keyManager?.activeItem as TimepickerOptionComponent;\n activeOption && this.scrollToActiveOption(activeOption, { behavior: 'smooth' });\n\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.timeSelected(activeOption);\n }\n }\n\n protected handleDateFieldChanges(): void {\n this.dateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe((time) => this.updateValue(time ?? null));\n }\n\n private setActiveOptionBasedOnCurrentValue(): void {\n const isSelected = this.options.find((option) => option.isSelected);\n if (isSelected) {\n this.activateOption(isSelected);\n return;\n }\n\n this.activateNearestTimeOption();\n }\n\n private activateOption(option: TimepickerOptionComponent): void {\n this.keyManager && this.keyManager.setActiveItem(option);\n this.scrollToActiveOption(option);\n }\n\n private activateNearestTimeOption(): void {\n if (!this.value) {\n const currentDate = new Date();\n const isNearest = this.findNearestTimeOption(currentDate);\n if (isNearest) {\n this.activateOption(isNearest);\n }\n }\n }\n\n private findNearestTimeOption(currentDate: Date): TimepickerOptionComponent | undefined {\n const availableTimeSlots = this.options.filter((option) => !option.disabled);\n const nearestTimeValue = this.timepickerService.findClosestDate(\n availableTimeSlots.map((option) => option.value) as string[],\n `${currentDate.getHours()}:${currentDate.getMinutes()}`,\n );\n\n return availableTimeSlots.find((option) => option.value === nearestTimeValue);\n }\n\n private updateInputValue(): void {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, this.useLocale);\n this.dateField.nativeElementValue = time;\n }\n }\n\n private scrollToActiveOption(option: TimepickerOptionComponent, _opts: ScrollIntoViewOptions = {}): void {\n if (isFunction(option.element.nativeElement.scrollIntoView)) {\n option.element.nativeElement.scrollIntoView({ block: 'center', ..._opts });\n }\n }\n}\n","<div class=\"odx-timepicker__wrapper\">\n <input [value]=\"value\" odxTimepickerControl type=\"text\" />\n</div>\n\n<odx-action-group class=\"odx-no-margin\">\n <button\n #dropdownTrigger\n class=\"odx-timepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n aria-label=\"Select time\"\n [odxDropdown]=\"timeList\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, position: 'bottom-start', enableFallback: false }\"\n [odxDropdownTriggerElement]=\"dropdownTrigger.element.nativeElement\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n (odxDropdownAfterOpen)=\"onOpen()\"\n >\n <odx-icon name=\"chevron-down\" />\n </button>\n</odx-action-group>\n\n<ng-template #timeList>\n <div class=\"odx-timepicker__option-list\" role=\"listbox\">\n <odx-timepicker-option\n [value]=\"time\"\n [disabled]=\"!inTimeRange(time)\"\n *ngFor=\"let time of timeStampsList; trackBy: trackByIndex\"\n (selected)=\"timeSelected($event)\"\n >{{ time }}</odx-timepicker-option\n >\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerComponent } from './timepicker.component';\n\nconst modules = [TimepickerComponent, TimepickerInputControlDirective, TimepickerOptionComponent];\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class TimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-timepicker.mjs","sources":["../../../../libs/angular/components/timepicker/src/lib/timepicker.token.ts","../../../../libs/angular/components/timepicker/src/lib/components/timepicker-option.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.service.ts","../../../../libs/angular/components/timepicker/src/lib/utils/ngx-mask-helper.ts","../../../../libs/angular/components/timepicker/src/lib/directives/timepicker-input-control.directive.ts","../../../../libs/angular/components/timepicker/src/lib/utils/generate-time-stamps.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.ts","../../../../libs/angular/components/timepicker/src/lib/timepicker.component.html","../../../../libs/angular/components/timepicker/src/lib/timepicker.module.ts","../../../../libs/angular/components/timepicker/src/odx-angular-components-timepicker.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { TimepickerComponent } from './timepicker.component';\n\n/**\n * An InjectionToken used for injecting an instance of TimepickerComponent.\n * This token facilitates the decoupling of the TimepickerComponent's implementation from its consumption,\n * allowing for more flexible and maintainable code, especially in scenarios requiring custom time picker\n * behavior or appearance.\n */\nexport const TIMEPICKER_CONTROL = new InjectionToken<TimepickerComponent>('@odx/angular/components/timepicker::TimepickerComponent');\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { DisabledController, WithDisabledState, detectControllerChanges } from '@odx/angular';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\n\n/**\n * Represents a selectable option within a timepicker component. This component allows for\n * individual time values to be selected from a dropdown menu as part of the timepicker interface.\n * It integrates with the timepicker's control to manage selection state and accessibility.\n *\n * @extends {OptionControl<string>}\n */\n@CSSComponent('timepicker-option')\n@Component({\n selector: 'odx-timepicker-option',\n template: `<ng-content></ng-content>`,\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DisabledController.connect()],\n hostDirectives: [WithDisabledState],\n})\nexport class TimepickerOptionComponent extends OptionControl<string> implements OnInit {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n protected readonly disabledController = DisabledController.inject();\n\n public isSelected = false;\n public override isActive = false;\n\n public get disabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n /**\n * Emits an event when the option is selected, allowing the timepicker component to update its value and close the dropdown.\n */\n @Output()\n public selected = new EventEmitter<TimepickerOptionComponent>();\n\n constructor() {\n super();\n detectControllerChanges(this.timepicker).pipe(this.takeUntilDestroyed()).subscribe();\n }\n\n public ngOnInit(): void {\n this.isSelected = this.timepicker.isTimeOptionSelected(this);\n }\n\n protected selectOption(): void {\n this.selected.emit(this);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { isAfter, isBefore, isEqual } from 'date-fns';\n\n/**\n * Service to provide utility functions for timepicker components, including validation, placeholder generation, and finding the closest time.\n * It also handles locale-based time formatting.\n */\n@Injectable({ providedIn: 'root' })\nexport class TimepickerService {\n private readonly windowRef = inject(WindowRef);\n\n /**\n * Generates a placeholder string for time input fields.\n *\n * @param {boolean} apm - Specifies if the placeholder should include AM/PM notation.\n * @returns {string} The placeholder string.\n */\n public getPlaceholder(apm = false): string {\n return apm ? '--:-- --' : '--:--';\n }\n\n /**\n * Validates if the given time is less than or equal to a maximum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} max - The maximum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public maxValidation(time: string, max: string): boolean {\n const [targetValue, maxValue] = this.convertToDates([time, max]);\n return isBefore(targetValue, maxValue) || isEqual(targetValue, maxValue);\n }\n\n /**\n * Validates if the given time is greater than or equal to a minimum time constraint.\n *\n * @param {string} time - The time to validate.\n * @param {string} min - The minimum allowable time.\n * @returns {boolean} True if the time is valid, false otherwise.\n */\n public minValidation(time: string, min: string): boolean {\n const [targetValue, minValue] = this.convertToDates([time, min]);\n return isAfter(targetValue, minValue) || isEqual(targetValue, minValue);\n }\n\n /**\n * Finds the closest time to a target time from a list of times.\n *\n * @param {string[]} timeStamps - The list of times to search through.\n * @param {string} targetTime - The target time to find the closest match for.\n * @returns {string} The closest time to the target.\n */\n public findClosestDate(timeStamps: string[], targetTime: string): string {\n const [target] = this.convertToDates([targetTime]);\n const datesArray = this.convertToDates(timeStamps);\n\n const closestDate = datesArray.reduce((prev, curr) => {\n return Math.abs(curr.getTime() - target.getTime()) < Math.abs(prev.getTime() - target.getTime()) ? curr : prev;\n });\n\n return this.getLocalizedTimeFormat(`${closestDate.getHours()}:${closestDate.getMinutes()}`);\n }\n\n /**\n * Formats a time string to a localized time format.\n *\n * @param {string} time - The time string to format.\n * @param {boolean} hour12 - Specifies if the output should use 12-hour format with AM/PM notation.\n * @returns {string} The formatted time string.\n */\n public getLocalizedTimeFormat(time: string, hour12 = false): string {\n const locale = hour12 ? 'en-US' : 'en-GB';\n const [date] = this.convertToDates([time]);\n return new this.windowRef.nativeWindow.Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12,\n }).format(date);\n }\n\n /**\n * Converts an array of time strings to an array of Date objects.\n *\n * @param {string[]} times - The time strings to convert.\n * @returns {Date[]} An array of Date objects corresponding to the input times.\n * @private\n */\n private convertToDates(times: string[]): Date[] {\n return times.map((time) => new Date(`${time} 2022-12-19`));\n }\n}\n","/**\n * Processes and formats a time input value based on specific rules. It adjusts the input for valid time format,\n * especially focusing on single-digit hour inputs, ensuring minute values start with 0 if the last digit is greater\n * than 5, and appending 'M' to AM/PM indicators.\n *\n * @param {string} value - The current input value of the time field.\n * @param {InputEvent} event - The input event triggered by the user's interaction with the field.\n * @returns {string} The processed and potentially reformatted value.\n *\n * @example\n * ```ts\n * // Prepend 0 to single-digit hours greater than 1\n * processInputValue(\"2\", { inputType: \"insertText\" }); // Returns \"02\"\n *\n * // Ensure minute values are within valid ranges\n * processInputValue(\"11:8\", { inputType: \"insertText\" }); // Returns \"11:08\"\n *\n * // Append 'M' to AM/PM indicators\n * processInputValue(\"2 p\", { inputType: \"insertText\" }); // Returns \"2 PM\"\n * ```\n */\nexport function processInputValue(value: string, event: InputEvent): string {\n if (value.length === 1 && Number(value) > 1) {\n value = `0${value}`;\n } else if (value.length === 4 && Number(value.at(-1)) > 5) {\n value = `${value.slice(0, -1)}0${value.slice(-1)}`;\n }\n\n if (/[AaPp]/.test(value) && event.inputType === 'insertText') {\n value = `${value.toUpperCase()}M`;\n }\n\n return value;\n}\n","import { Directive, inject } from '@angular/core';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { IConfig, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\nimport { TimepickerService } from '../timepicker.service';\nimport { TIMEPICKER_CONTROL } from '../timepicker.token';\nimport { processInputValue } from '../utils/ngx-mask-helper';\n\n/**\n * Directive to enhance a standard input element for time picking, integrating mask functionality for time format.\n * It automatically adapts to locale settings provided by the enclosing `TimepickerComponent` to display time in the appropriate format.\n *\n * @extends {InputControlDirective}\n */\n@CSSComponent('timepicker__control')\n@Directive({\n standalone: true,\n selector: 'input[odxTimepickerControl]',\n host: {\n '[attr.readonly]': 'isReadonly || null',\n '[attr.placeholder]': 'placeholder',\n },\n providers: [provideNgxMask(), NgxMaskPipe],\n hostDirectives: [WithTabIndex, WithDisabledState],\n})\nexport class TimepickerInputControlDirective extends InputControlDirective {\n private readonly timepicker = inject(TIMEPICKER_CONTROL);\n private readonly timepickerService = inject(TimepickerService);\n protected readonly ngxMaskPipe = inject(NgxMaskPipe);\n\n /**\n * Configuration for the mask applied to the timepicker input. Adjusts based on locale settings.\n */\n protected get maskConfig(): Partial<IConfig> {\n return {\n validation: false,\n apm: this.timepicker.useLocale,\n leadZeroDateTime: !this.timepicker.useLocale,\n\n patterns: {\n A: { pattern: new RegExp('[AaPp]') },\n M: { pattern: new RegExp('M') },\n },\n };\n }\n\n /**\n * Stream of value changes for the input element, applying the mask and processing the input based on locale.\n */\n public override valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n distinctUntilChanged(),\n map((event) => this.applyMask(event)),\n );\n\n /**\n * Computes and returns the placeholder text for the input based on locale settings.\n *\n * @returns {string} The placeholder text for the input.\n */\n public get placeholder(): string {\n return this.timepickerService.getPlaceholder(this.timepicker.useLocale);\n }\n\n /**\n * Determines whether the timepicker input is readonly, based on the state of the parent timepicker component.\n *\n * @returns {boolean} `true` if the input should be readonly; otherwise, `false`.\n */\n protected get isReadonly(): boolean {\n return this.timepicker.isReadonly;\n }\n\n /**\n * Applies the time format mask to the input value, transforming and returning the masked value.\n *\n * @param {Event} event - The input event triggering the mask application.\n * @returns {string} The masked input value.\n */\n private applyMask(event: Event): string {\n const mask = this.timepicker.useLocale ? 'Hh:m0 AM' : 'Hh:m0';\n let value = this.ngxMaskPipe.transform(this.nativeElementValue, mask, this.maskConfig);\n if (this.timepicker.useLocale) {\n value = processInputValue(value, event as InputEvent);\n }\n this.nativeElementValue = value;\n return value;\n }\n}\n","/**\n * Generates an array of time stamps within a 24-hour period based on the specified step interval.\n * The time stamps can be formatted in 24-hour format or 12-hour format with AM/PM based on locale preference.\n *\n * @param {number} step - The interval, in minutes, between each time stamp.\n * @param {boolean} useLocale - Determines if the time stamps should use the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string[]} An array of formatted time stamps as strings.\n * @example\n * ```ts\n * // Generate time stamps every 30 minutes using 24-hour format\n * generateTimeStamps(30, false);\n * // Returns [\"00:00\", \"00:30\", \"01:00\", ..., \"23:30\"]\n *\n * // Generate time stamps every 60 minutes using 12-hour format with AM/PM\n * generateTimeStamps(60, true);\n * // Returns [\"12:00 AM\", \"01:00 AM\", ..., \"11:00 PM\"]\n * ```\n */\nexport function generateTimeStamps(step: number, useLocale: boolean): string[] {\n const roundedStep = Math.round(step);\n\n return Array.from({ length: Math.ceil(24 * (60 / roundedStep)) }, (_, i) => {\n const hours = Math.floor((i * roundedStep) / 60);\n const minutes = (i * roundedStep) % 60;\n return formatTime(hours, minutes, useLocale);\n });\n}\n\n/**\n * Formats a given time as a string based on the specified hour, minute, and locale preference.\n * Can format time in either 24-hour format or 12-hour format with AM/PM.\n *\n * @param {number} hours - The hour component of the time.\n * @param {number} minutes - The minute component of the time.\n * @param {boolean} useLocale - Determines if the time should be formatted using the 12-hour format with AM/PM (`true`) or the 24-hour format (`false`).\n * @returns {string} The formatted time as a string.\n * @example\n * ```ts\n * // Format time using 24-hour format\n * formatTime(14, 30, false); // \"14:30\"\n *\n * // Format time using 12-hour format with AM/PM\n * formatTime(14, 30, true); // \"2:30 PM\"\n * ```\n */\nfunction formatTime(hours: number, minutes: number, useLocale: boolean): string {\n if (useLocale) {\n const period = hours >= 12 ? 'PM' : 'AM';\n const displayHours = hours % 12 === 0 ? 12 : hours % 12;\n return `${displayHours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')} ${period}`;\n } else {\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n }\n}\n","import { A11yModule, ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Input,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { DisabledController, ReadonlyController } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { DropdownDirective, DropdownModule } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, isFunction, trackByIndex, untilDestroyed } from '@odx/angular/utils';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerService } from './timepicker.service';\nimport { TIMEPICKER_CONTROL } from './timepicker.token';\nimport { generateTimeStamps } from './utils/generate-time-stamps';\n\n/**\n * Represents a time picker component allowing users to select a time from a dropdown list.\n * This component integrates with Angular forms and supports customization for locale, time range, and step intervals.\n *\n * @see {CustomFormControl}\n */\n@CSSComponent('timepicker')\n@Component({\n standalone: true,\n selector: 'odx-timepicker',\n templateUrl: 'timepicker.component.html',\n providers: [\n DisabledController.connect(),\n ReadonlyController.connect(),\n {\n provide: TIMEPICKER_CONTROL,\n useExisting: forwardRef(() => TimepickerComponent),\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, ActionGroupComponent, ButtonComponent, DropdownModule, TimepickerOptionComponent, IconComponent, TimepickerInputControlDirective],\n host: {\n '[attr.readonly]': 'readonlyController?.readonly || null',\n },\n})\nexport class TimepickerComponent extends CustomFormControl<string | null> implements AfterViewInit {\n private readonly timepickerService = inject(TimepickerService);\n private _useLocale = false;\n protected keyManager?: ActiveDescendantKeyManager<OptionControl<string>>;\n\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly trackByIndex = trackByIndex;\n\n @ViewChild(DropdownDirective)\n protected readonly dropdown?: DropdownDirective;\n\n @ViewChildren(TimepickerOptionComponent, { emitDistinctChangesOnly: true })\n protected options!: QueryList<TimepickerOptionComponent>;\n\n public readonly element = injectElement();\n\n /**\n * Controls whether the timepicker should use locale-specific time formats AM/PM.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set useLocale(val: boolean) {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, val);\n this.updateValue(time);\n this.dateField.nativeElementValue = time;\n }\n this._useLocale = val;\n }\n\n /**\n * Gets a boolean value indicating whether the locale is being used.\n * @returns {boolean} A boolean value indicating whether the locale is being used.\n */\n public get useLocale(): boolean {\n return this._useLocale;\n }\n\n /**\n * Controls the step interval between time options in minutes.\n * @default 30\n */\n @Input({ transform: numberAttribute })\n public step = 30;\n\n /**\n * Specifies the minimum time value that can be selected ('05:00' or '05:00 AM').\n * @default '00:00'\n */\n @Input()\n public min = '00:00';\n\n /**\n * Specifies the maximum time value that can be selected ('22:00' or '10:00 PM').\n * @default '23:59'\n */\n @Input()\n public max = '23:59';\n\n @ViewChild(TimepickerInputControlDirective)\n public dateField?: TimepickerInputControlDirective;\n\n constructor() {\n super(null);\n }\n\n public ngAfterViewInit(): void {\n this.handleDateFieldChanges();\n this.updateInputValue();\n }\n\n /**\n * Checks if the given time option is selected.\n * @param option - The time option to check.\n * @returns True if the option is selected, false otherwise.\n */\n public isTimeOptionSelected(option: TimepickerOptionComponent): boolean {\n return this.value === option.value;\n }\n\n /**\n * Handles the selection of a time option from the dropdown, updating the input field and closing the dropdown.\n *\n * @param {TimepickerOptionComponent} option - The selected time option component.\n */\n public timeSelected(option?: TimepickerOptionComponent): void {\n if (!option || option.disabled) return;\n const time = this.timepickerService.getLocalizedTimeFormat(option.getLabel(), this.useLocale);\n this.dateField && (this.dateField.nativeElementValue = time);\n this.updateValue(time);\n this.dropdown?.close();\n }\n\n /**\n * Determines whether the specified time is within the allowed time range.\n *\n * @param {string} time - The time to check, in 'HH:mm' or 'HH:mm AM/PM' format.\n * @returns {boolean} True if the time is within the range; otherwise, false.\n */\n public inTimeRange(time: string): boolean {\n return this.timepickerService.maxValidation(time, this.max) && this.timepickerService.minValidation(time, this.min);\n }\n\n /**\n * Generates the list of time options based on the configured step interval and locale settings AM/PM.\n *\n * @returns {string[]} An array of time strings in 'HH:mm' format.\n */\n public get timeStampsList(): string[] {\n return generateTimeStamps(this.step, this.useLocale);\n }\n\n protected onOpen(): void {\n this.keyManager = new ActiveDescendantKeyManager<OptionControl<string>>(this.options).withHomeAndEnd();\n this.setActiveOptionBasedOnCurrentValue();\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.readonlyController?.readonly) return;\n\n this.keyManager?.onKeydown(event);\n const activeOption = this.keyManager?.activeItem as TimepickerOptionComponent;\n activeOption && this.scrollToActiveOption(activeOption, { behavior: 'smooth' });\n\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.timeSelected(activeOption);\n }\n }\n\n protected handleDateFieldChanges(): void {\n this.dateField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe((time) => this.updateValue(time ?? null));\n }\n\n private setActiveOptionBasedOnCurrentValue(): void {\n const isSelected = this.options.find((option) => option.isSelected);\n if (isSelected) {\n this.activateOption(isSelected);\n return;\n }\n\n this.activateNearestTimeOption();\n }\n\n private activateOption(option: TimepickerOptionComponent): void {\n this.keyManager && this.keyManager.setActiveItem(option);\n this.scrollToActiveOption(option);\n }\n\n private activateNearestTimeOption(): void {\n if (!this.value) {\n const currentDate = new Date();\n const isNearest = this.findNearestTimeOption(currentDate);\n if (isNearest) {\n this.activateOption(isNearest);\n }\n }\n }\n\n private findNearestTimeOption(currentDate: Date): TimepickerOptionComponent | undefined {\n const availableTimeSlots = this.options.filter((option) => !option.disabled);\n const nearestTimeValue = this.timepickerService.findClosestDate(\n availableTimeSlots.map((option) => option.value) as string[],\n `${currentDate.getHours()}:${currentDate.getMinutes()}`,\n );\n\n return availableTimeSlots.find((option) => option.value === nearestTimeValue);\n }\n\n private updateInputValue(): void {\n if (this.value && this.dateField) {\n const time = this.timepickerService.getLocalizedTimeFormat(this.value, this.useLocale);\n this.dateField.nativeElementValue = time;\n }\n }\n\n private scrollToActiveOption(option: TimepickerOptionComponent, _opts: ScrollIntoViewOptions = {}): void {\n if (isFunction(option.element.nativeElement.scrollIntoView)) {\n option.element.nativeElement.scrollIntoView({ block: 'center', ..._opts });\n }\n }\n}\n","<div class=\"odx-timepicker__wrapper\">\n <input [value]=\"value\" odxTimepickerControl type=\"text\" />\n</div>\n\n<odx-action-group class=\"odx-no-margin\">\n <button\n #dropdownTrigger\n class=\"odx-timepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n aria-label=\"Select time\"\n [odxDropdown]=\"timeList\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, position: 'bottom-start', enableFallback: false }\"\n [odxDropdownTriggerElement]=\"dropdownTrigger.element.nativeElement\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n (odxDropdownAfterOpen)=\"onOpen()\"\n >\n <odx-icon name=\"chevron-down\" />\n </button>\n</odx-action-group>\n\n<ng-template #timeList>\n <div class=\"odx-timepicker__option-list\" role=\"listbox\">\n <odx-timepicker-option\n [value]=\"time\"\n [disabled]=\"!inTimeRange(time)\"\n *ngFor=\"let time of timeStampsList; trackBy: trackByIndex\"\n (selected)=\"timeSelected($event)\"\n >{{ time }}</odx-timepicker-option\n >\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { TimepickerOptionComponent } from './components/timepicker-option.component';\nimport { TimepickerInputControlDirective } from './directives/timepicker-input-control.directive';\nimport { TimepickerComponent } from './timepicker.component';\n\nconst modules = [TimepickerComponent, TimepickerInputControlDirective, TimepickerOptionComponent];\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class TimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -16,19 +16,65 @@ import { ActionGroupComponent } from '@odx/angular/components/action-group';
16
16
  import { ButtonComponent } from '@odx/angular/components/button';
17
17
  import { IconComponent } from '@odx/angular/components/icon';
18
18
 
19
+ /**
20
+ * Utility functions generated by `createConfigTokens` to handle injection and provision of `ToastConfig`.
21
+ * These include tokens and functions to access and provide the default configuration for toasts.
22
+ *
23
+ * `ToastDefaultConfig` provides the default settings for toasts.
24
+ * `ToastConfig` is a token that can be used to inject toast configuration settings.
25
+ * `injectToastConfig` is a function that retrieves the current toast configuration.
26
+ * `provideToastConfig` is a function used to specify a custom configuration for toasts.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * // In module providers:
31
+ * providers: [
32
+ * provideToastConfig({ // ... global module configuration }),
33
+ * ]
34
+ *
35
+ * // In a component or service:
36
+ * constructor(@Inject(ToastConfig) private readonly config: ToastConfig) {}
37
+ *
38
+ * // Or using the `injectToastConfig` function:
39
+ * @Component({ ... })
40
+ * export class MyComponent {
41
+ * private readonly config = injectToastConfig();
42
+ * }
43
+ * ```
44
+ */
19
45
  const { ToastDefaultConfig, ToastConfig, injectToastConfig, provideToastConfig } = createConfigTokens('Toast', '@odx/angular/components/toast', {
20
46
  dismissable: true,
21
47
  duration: 0,
22
48
  });
23
49
 
50
+ /**
51
+ * ToastService provides a centralized management system for toasts within an application.
52
+ * It handles the creation, updates, and dismissal of toasts based on a FIFO (first-in, first-out) queue.
53
+ * This service integrates custom toast options with default configurations and supports reactive updates through observables.
54
+ */
24
55
  class ToastService {
25
56
  constructor() {
26
57
  this.queue = new Queue();
27
58
  this.defaultOptions = injectToastConfig();
59
+ /**
60
+ * Observable stream of active toasts.
61
+ */
28
62
  this.toasts$ = this.queue.value$;
63
+ /**
64
+ * Observable that emits when any update occurs in the toast queue.
65
+ */
29
66
  this.onUpdate$ = this.queue.onUpdate$;
67
+ /**
68
+ * Observable that emits when a toast is added.
69
+ */
30
70
  this.onToastAdd$ = this.queue.onAdd$;
71
+ /**
72
+ * Observable that emits when a toast is updated.
73
+ */
31
74
  this.onToastUpdate$ = this.queue.onUpdate$;
75
+ /**
76
+ * Observable that emits when a toast is removed.
77
+ */
32
78
  this.onToastRemove$ = this.queue.onRemove$;
33
79
  /**
34
80
  * @deprecated Use `toasts$` instead
@@ -49,6 +95,13 @@ class ToastService {
49
95
  add(item, options = {}) {
50
96
  return this.create(item, options);
51
97
  }
98
+ /**
99
+ * Creates and queues a new toast based on the provided item and options.
100
+ * Merges given options with default configurations.
101
+ * @param {Toast} item The toast item to create.
102
+ * @param {Partial<ToastOptions>} options Optional additional options for the toast.
103
+ * @returns {ToastRef} The reference to the newly created toast.
104
+ */
52
105
  create(item, options = {}) {
53
106
  return this.queue.add({
54
107
  id: item.id ?? getUniqueId('odx-toast'),
@@ -62,6 +115,11 @@ class ToastService {
62
115
  remove(refOrId) {
63
116
  return this.dismiss(refOrId);
64
117
  }
118
+ /**
119
+ * Dismisses a specific toast identified by a reference or ID.
120
+ * @param {ToastRef | ToastRef['id']} refOrId The reference or ID of the toast to dismiss.
121
+ * @returns {ToastRef | null} The reference to the dismissed toast, or null if not found.
122
+ */
65
123
  dismiss(refOrId) {
66
124
  return this.queue.remove(refOrId);
67
125
  }
@@ -71,6 +129,9 @@ class ToastService {
71
129
  clear() {
72
130
  return this.dismissAll();
73
131
  }
132
+ /**
133
+ * Dismisses all toasts currently being displayed.
134
+ */
74
135
  dismissAll() {
75
136
  this.queue.clear();
76
137
  }
@@ -122,7 +183,7 @@ let ToastItemComponent = class ToastItemComponent {
122
183
  this.dismiss.next();
123
184
  }
124
185
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToastItemComponent, isStandalone: true, selector: "odx-toast", inputs: { id: "id", title: "title", description: "description", variant: "variant", actions: "actions", options: "options" }, outputs: { dismiss: "dismiss" }, host: { properties: { "attr.id": "id" } }, ngImport: i0, template: "<div class=\"odx-toast-item__content\">\n <odx-icon [name]=\"icon\" iconSet=\"core\"></odx-icon>\n <div class=\"odx-toast-item__text-content\">\n <p class=\"odx-toast-item__title\">\n <ng-template [odxDynamicView]=\"title\"> </ng-template>\n </p>\n <p class=\"odx-toast-item__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"> </ng-template>\n </p>\n </div>\n <button odxButton class=\"odx-toast-item__close\" (click)=\"onDismiss()\" *ngIf=\"options?.dismissable\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n</div>\n<odx-action-group class=\"odx-toast-item__buttons\" *ngIf=\"!!actions?.length\">\n <button odxButton (click)=\"action.action()\" *ngFor=\"let action of actions\">\n <odx-icon [name]=\"action.leftIcon\" iconSet=\"core\" alignLeft *ngIf=\"action.leftIcon\"></odx-icon>\n <ng-template [odxDynamicView]=\"action.label\"> </ng-template>\n <odx-icon [name]=\"action.rightIcon\" iconSet=\"core\" alignRight *ngIf=\"action.rightIcon\"></odx-icon>\n </button>\n</odx-action-group>\n", dependencies: [{ 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: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToastItemComponent, isStandalone: true, selector: "odx-toast", inputs: { id: "id", title: "title", description: "description", descriptionContext: "descriptionContext", variant: "variant", actions: "actions", options: "options" }, outputs: { dismiss: "dismiss" }, host: { properties: { "attr.id": "id" } }, ngImport: i0, template: "<div class=\"odx-toast-item__content\">\n <odx-icon [name]=\"icon\" iconSet=\"core\"></odx-icon>\n <div class=\"odx-toast-item__text-content\">\n <p class=\"odx-toast-item__title\">\n <ng-template [odxDynamicView]=\"title\"> </ng-template>\n </p>\n <p class=\"odx-toast-item__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\" [odxDynamicViewContext]=\"descriptionContext\"> </ng-template>\n </p>\n </div>\n <button odxButton class=\"odx-toast-item__close\" (click)=\"onDismiss()\" *ngIf=\"options?.dismissable\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n</div>\n<odx-action-group class=\"odx-toast-item__buttons\" *ngIf=\"!!actions?.length\">\n <button odxButton (click)=\"action.action()\" *ngFor=\"let action of actions\">\n <odx-icon [name]=\"action.leftIcon\" iconSet=\"core\" alignLeft *ngIf=\"action.leftIcon\"></odx-icon>\n <ng-template [odxDynamicView]=\"action.label\"> </ng-template>\n <odx-icon [name]=\"action.rightIcon\" iconSet=\"core\" alignRight *ngIf=\"action.rightIcon\"></odx-icon>\n </button>\n</odx-action-group>\n", dependencies: [{ 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: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
126
187
  };
127
188
  __decorate([
128
189
  CSSModifier(),
@@ -135,13 +196,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
135
196
  type: Component,
136
197
  args: [{ selector: 'odx-toast', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CommonModule, IconComponent, ButtonComponent, DynamicViewDirective, ActionGroupComponent], host: {
137
198
  '[attr.id]': 'id',
138
- }, template: "<div class=\"odx-toast-item__content\">\n <odx-icon [name]=\"icon\" iconSet=\"core\"></odx-icon>\n <div class=\"odx-toast-item__text-content\">\n <p class=\"odx-toast-item__title\">\n <ng-template [odxDynamicView]=\"title\"> </ng-template>\n </p>\n <p class=\"odx-toast-item__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"> </ng-template>\n </p>\n </div>\n <button odxButton class=\"odx-toast-item__close\" (click)=\"onDismiss()\" *ngIf=\"options?.dismissable\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n</div>\n<odx-action-group class=\"odx-toast-item__buttons\" *ngIf=\"!!actions?.length\">\n <button odxButton (click)=\"action.action()\" *ngFor=\"let action of actions\">\n <odx-icon [name]=\"action.leftIcon\" iconSet=\"core\" alignLeft *ngIf=\"action.leftIcon\"></odx-icon>\n <ng-template [odxDynamicView]=\"action.label\"> </ng-template>\n <odx-icon [name]=\"action.rightIcon\" iconSet=\"core\" alignRight *ngIf=\"action.rightIcon\"></odx-icon>\n </button>\n</odx-action-group>\n" }]
199
+ }, template: "<div class=\"odx-toast-item__content\">\n <odx-icon [name]=\"icon\" iconSet=\"core\"></odx-icon>\n <div class=\"odx-toast-item__text-content\">\n <p class=\"odx-toast-item__title\">\n <ng-template [odxDynamicView]=\"title\"> </ng-template>\n </p>\n <p class=\"odx-toast-item__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\" [odxDynamicViewContext]=\"descriptionContext\"> </ng-template>\n </p>\n </div>\n <button odxButton class=\"odx-toast-item__close\" (click)=\"onDismiss()\" *ngIf=\"options?.dismissable\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n</div>\n<odx-action-group class=\"odx-toast-item__buttons\" *ngIf=\"!!actions?.length\">\n <button odxButton (click)=\"action.action()\" *ngFor=\"let action of actions\">\n <odx-icon [name]=\"action.leftIcon\" iconSet=\"core\" alignLeft *ngIf=\"action.leftIcon\"></odx-icon>\n <ng-template [odxDynamicView]=\"action.label\"> </ng-template>\n <odx-icon [name]=\"action.rightIcon\" iconSet=\"core\" alignRight *ngIf=\"action.rightIcon\"></odx-icon>\n </button>\n</odx-action-group>\n" }]
139
200
  }], propDecorators: { id: [{
140
201
  type: Input
141
202
  }], title: [{
142
203
  type: Input
143
204
  }], description: [{
144
205
  type: Input
206
+ }], descriptionContext: [{
207
+ type: Input
145
208
  }], variant: [{
146
209
  type: Input
147
210
  }], actions: [{
@@ -185,7 +248,7 @@ let ToastContainerComponent = class ToastContainerComponent {
185
248
  this.toastService.dismiss(itemRef);
186
249
  }
187
250
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: ToastContainerComponent, isStandalone: true, selector: "odx-toast-container", inputs: { maxItems: ["maxItems", "maxItems", numberAttribute] }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<odx-toast\n @slide\n [id]=\"toastRef.id\"\n [title]=\"toastRef.item.title\"\n [description]=\"toastRef.item.description\"\n [actions]=\"toastRef.item.actions ?? []\"\n [variant]=\"toastRef.item.variant\"\n [options]=\"toastRef.options\"\n (dismiss)=\"onDismiss(toastRef)\"\n *ngFor=\"let toastRef of items$ | async; trackBy: trackById\"\n></odx-toast>\n<odx-chip class=\"odx-toast-container__counter\" *ngIf=\"hiddenToasts$ | async as more\">{{ more }} more Notifications</odx-chip>\n", dependencies: [{ 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: "component", type: ChipComponent, selector: "odx-chip", inputs: ["removable", "size", "variant"], outputs: ["remove"] }, { kind: "component", type: ToastItemComponent, selector: "odx-toast", inputs: ["id", "title", "description", "variant", "actions", "options"], outputs: ["dismiss"] }], animations: [
251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: ToastContainerComponent, isStandalone: true, selector: "odx-toast-container", inputs: { maxItems: ["maxItems", "maxItems", numberAttribute] }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<odx-toast\n @slide\n [id]=\"toastRef.id\"\n [title]=\"toastRef.item.title\"\n [description]=\"toastRef.item.description\"\n [descriptionContext]=\"toastRef.item.descriptionContext\"\n [actions]=\"toastRef.item.actions ?? []\"\n [variant]=\"toastRef.item.variant\"\n [options]=\"toastRef.options\"\n (dismiss)=\"onDismiss(toastRef)\"\n *ngFor=\"let toastRef of items$ | async; trackBy: trackById\"\n></odx-toast>\n<odx-chip class=\"odx-toast-container__counter\" *ngIf=\"hiddenToasts$ | async as more\">{{ more }} more Notifications</odx-chip>\n", dependencies: [{ 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: "component", type: ChipComponent, selector: "odx-chip", inputs: ["removable", "size", "variant"], outputs: ["remove"] }, { kind: "component", type: ToastItemComponent, selector: "odx-toast", inputs: ["id", "title", "description", "descriptionContext", "variant", "actions", "options"], outputs: ["dismiss"] }], animations: [
189
252
  trigger('slide', [
190
253
  transition(':enter', group([
191
254
  useAnimation(expand),
@@ -210,7 +273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
210
273
  ])),
211
274
  transition(':leave', group([useAnimation(collapse)])),
212
275
  ]),
213
- ], template: "<odx-toast\n @slide\n [id]=\"toastRef.id\"\n [title]=\"toastRef.item.title\"\n [description]=\"toastRef.item.description\"\n [actions]=\"toastRef.item.actions ?? []\"\n [variant]=\"toastRef.item.variant\"\n [options]=\"toastRef.options\"\n (dismiss)=\"onDismiss(toastRef)\"\n *ngFor=\"let toastRef of items$ | async; trackBy: trackById\"\n></odx-toast>\n<odx-chip class=\"odx-toast-container__counter\" *ngIf=\"hiddenToasts$ | async as more\">{{ more }} more Notifications</odx-chip>\n" }]
276
+ ], template: "<odx-toast\n @slide\n [id]=\"toastRef.id\"\n [title]=\"toastRef.item.title\"\n [description]=\"toastRef.item.description\"\n [descriptionContext]=\"toastRef.item.descriptionContext\"\n [actions]=\"toastRef.item.actions ?? []\"\n [variant]=\"toastRef.item.variant\"\n [options]=\"toastRef.options\"\n (dismiss)=\"onDismiss(toastRef)\"\n *ngFor=\"let toastRef of items$ | async; trackBy: trackById\"\n></odx-toast>\n<odx-chip class=\"odx-toast-container__counter\" *ngIf=\"hiddenToasts$ | async as more\">{{ more }} more Notifications</odx-chip>\n" }]
214
277
  }], propDecorators: { maxItems: [{
215
278
  type: Input,
216
279
  args: [{ transform: numberAttribute }]
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-toast.mjs","sources":["../../../../libs/angular/components/toast/src/lib/toast.config.ts","../../../../libs/angular/components/toast/src/lib/toast.service.ts","../../../../libs/angular/components/toast/src/lib/models/toast-variant.ts","../../../../libs/angular/components/toast/src/lib/components/toast-item/toast-item.component.ts","../../../../libs/angular/components/toast/src/lib/components/toast-item/toast-item.component.html","../../../../libs/angular/components/toast/src/lib/components/toast-container/toast-container.component.ts","../../../../libs/angular/components/toast/src/lib/components/toast-container/toast-container.component.html","../../../../libs/angular/components/toast/src/lib/toast.module.ts","../../../../libs/angular/components/toast/src/odx-angular-components-toast.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { ToastOptions } from './models/toast.options';\n\nexport type ToastConfig = ToastOptions;\n\nexport const { ToastDefaultConfig, ToastConfig, injectToastConfig, provideToastConfig } = createConfigTokens('Toast', '@odx/angular/components/toast', {\n dismissable: true,\n duration: 0,\n} as ToastConfig);\n","import { Injectable } from '@angular/core';\nimport { deepmerge } from '@odx/angular/internal';\nimport { getUniqueId, Queue } from '@odx/angular/utils';\nimport { Toast, ToastOptions, ToastRef } from './models';\nimport { injectToastConfig } from './toast.config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n private readonly queue = new Queue<ToastRef>();\n private readonly defaultOptions = injectToastConfig();\n\n public readonly toasts$ = this.queue.value$;\n public readonly onUpdate$ = this.queue.onUpdate$;\n\n public readonly onToastAdd$ = this.queue.onAdd$;\n public readonly onToastUpdate$ = this.queue.onUpdate$;\n public readonly onToastRemove$ = this.queue.onRemove$;\n\n /**\n * @deprecated Use `toasts$` instead\n */\n public readonly queue$ = this.toasts$;\n /**\n * @deprecated Use `onToastAdd$` instead\n */\n public readonly onAdd$ = this.onToastAdd$;\n /**\n * @deprecated Use `onToastRemove$` instead\n */\n public readonly onRemove$ = this.onToastRemove$;\n\n /**\n * @deprecated Use `create` instead\n */\n public add(item: Toast, options: Partial<ToastOptions> = {}): ToastRef {\n return this.create(item, options);\n }\n\n public create(item: Toast, options: Partial<ToastOptions> = {}): ToastRef {\n return this.queue.add({\n id: item.id ?? getUniqueId('odx-toast'),\n item,\n options: deepmerge(this.defaultOptions, options) as ToastOptions,\n });\n }\n\n /**\n * @deprecated Use `dismiss` instead\n */\n public remove(refOrId: ToastRef | ToastRef['id']): ToastRef | null {\n return this.dismiss(refOrId);\n }\n\n public dismiss(refOrId: ToastRef | ToastRef['id']): ToastRef | null {\n return this.queue.remove(refOrId);\n }\n\n /**\n * @deprecated Use `dismissAll` instead\n */\n public clear(): void {\n return this.dismissAll();\n }\n\n public dismissAll(): void {\n this.queue.clear();\n }\n}\n","export type ToastVariant = (typeof ToastVariant)[keyof typeof ToastVariant];\n\nexport const ToastVariant = {\n DEFAULT: 'default',\n WARNING: 'warning',\n DANGER: 'danger',\n SUCCESS: 'success',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { tap, timer } from 'rxjs';\nimport { ToastAction, ToastOptions, ToastVariant } from '../../models';\n\n@CSSComponent('toast-item')\n@Component({\n selector: 'odx-toast',\n templateUrl: './toast-item.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, IconComponent, ButtonComponent, DynamicViewDirective, ActionGroupComponent],\n host: {\n '[attr.id]': 'id',\n },\n})\nexport class ToastItemComponent implements OnInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement();\n\n public get icon(): string {\n switch (this.variant) {\n case ToastVariant.WARNING:\n return 'warning';\n case ToastVariant.DANGER:\n return 'error';\n case ToastVariant.SUCCESS:\n return 'check';\n default:\n return 'info';\n }\n }\n\n @Input()\n public id!: string;\n\n @Input()\n public title!: DynamicTextContent;\n\n @Input()\n public description?: DynamicTextContent | null;\n\n @CSSModifier()\n @Input()\n public variant?: ToastVariant | null = ToastVariant.DEFAULT;\n\n @Input()\n public actions?: ToastAction[];\n\n @Input()\n public options!: ToastOptions;\n\n @Output()\n public readonly dismiss = new EventEmitter<void>();\n\n public ngOnInit(): void {\n const { duration } = this.options;\n if (duration > 0) {\n timer(duration)\n .pipe(\n this.takeUntilDestroyed(),\n tap(() => this.onDismiss()),\n )\n .subscribe();\n }\n }\n\n public onDismiss(): void {\n this.dismiss.next();\n }\n}\n","<div class=\"odx-toast-item__content\">\n <odx-icon [name]=\"icon\" iconSet=\"core\"></odx-icon>\n <div class=\"odx-toast-item__text-content\">\n <p class=\"odx-toast-item__title\">\n <ng-template [odxDynamicView]=\"title\"> </ng-template>\n </p>\n <p class=\"odx-toast-item__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\"> </ng-template>\n </p>\n </div>\n <button odxButton class=\"odx-toast-item__close\" (click)=\"onDismiss()\" *ngIf=\"options?.dismissable\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n</div>\n<odx-action-group class=\"odx-toast-item__buttons\" *ngIf=\"!!actions?.length\">\n <button odxButton (click)=\"action.action()\" *ngFor=\"let action of actions\">\n <odx-icon [name]=\"action.leftIcon\" iconSet=\"core\" alignLeft *ngIf=\"action.leftIcon\"></odx-icon>\n <ng-template [odxDynamicView]=\"action.label\"> </ng-template>\n <odx-icon [name]=\"action.rightIcon\" iconSet=\"core\" alignRight *ngIf=\"action.rightIcon\"></odx-icon>\n </button>\n</odx-action-group>\n","import { group, transition, trigger, useAnimation } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewEncapsulation,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { collapse, expand, fadeIn, slideInRight } from '@odx/angular/animations';\nimport { ChipComponent } from '@odx/angular/components/chip';\nimport { HeaderComponent } from '@odx/angular/components/header';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, px, trackById } from '@odx/angular/utils';\nimport { Observable, map } from 'rxjs';\nimport { ToastRef } from '../../models';\nimport { ToastService } from '../../toast.service';\nimport { ToastItemComponent } from '../toast-item/toast-item.component';\n\nconst TOAST_ANIMATION_DELAY = '125ms';\n@CSSComponent('toast-container')\n@Component({\n selector: 'odx-toast-container',\n templateUrl: './toast-container.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, ChipComponent, ToastItemComponent],\n animations: [\n trigger('slide', [\n transition(\n ':enter',\n group([\n useAnimation(expand),\n useAnimation(fadeIn(), { params: { delay: TOAST_ANIMATION_DELAY } }),\n useAnimation(slideInRight, { params: { delay: TOAST_ANIMATION_DELAY } }),\n ]),\n ),\n transition(':leave', group([useAnimation(collapse)])),\n ]),\n ],\n})\nexport class ToastContainerComponent implements AfterViewInit, OnDestroy {\n private static INITIALIZED = false;\n\n private readonly windowRef = inject(WindowRef);\n private readonly renderer = inject(Renderer2);\n private readonly toastService = inject(ToastService);\n\n protected readonly trackById = trackById;\n\n public readonly element = injectElement();\n public readonly items$: Observable<ToastRef[]> = this.toastService.toasts$.pipe(map((refs) => refs.slice(0, this.maxItems)));\n public readonly hiddenToasts$: Observable<number> = this.toastService.toasts$.pipe(map((refs) => Math.max(0, refs.length - this.maxItems)));\n\n @Input({ transform: numberAttribute })\n public maxItems = 3;\n\n @Output()\n public readonly dismiss = this.toastService.onToastRemove$;\n\n public ngAfterViewInit(): void {\n if (ToastContainerComponent.INITIALIZED) {\n throw new Error('Only one toast container per application allowed');\n }\n ToastContainerComponent.INITIALIZED = true;\n const headerElement = this.windowRef.queryByComponent(HeaderComponent);\n if (headerElement) {\n this.renderer.setStyle(this.element.nativeElement, 'top', px(headerElement.offsetHeight));\n }\n }\n\n public ngOnDestroy(): void {\n ToastContainerComponent.INITIALIZED = false;\n }\n\n protected onDismiss(itemRef: ToastRef): void {\n this.toastService.dismiss(itemRef);\n }\n}\n","<odx-toast\n @slide\n [id]=\"toastRef.id\"\n [title]=\"toastRef.item.title\"\n [description]=\"toastRef.item.description\"\n [actions]=\"toastRef.item.actions ?? []\"\n [variant]=\"toastRef.item.variant\"\n [options]=\"toastRef.options\"\n (dismiss)=\"onDismiss(toastRef)\"\n *ngFor=\"let toastRef of items$ | async; trackBy: trackById\"\n></odx-toast>\n<odx-chip class=\"odx-toast-container__counter\" *ngIf=\"hiddenToasts$ | async as more\">{{ more }} more Notifications</odx-chip>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ToastContainerComponent, ToastItemComponent } from './components';\n\nconst modules = [ToastContainerComponent, ToastItemComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class ToastModule {}\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-toast.mjs","sources":["../../../../libs/angular/components/toast/src/lib/toast.config.ts","../../../../libs/angular/components/toast/src/lib/toast.service.ts","../../../../libs/angular/components/toast/src/lib/models/toast-variant.ts","../../../../libs/angular/components/toast/src/lib/components/toast-item/toast-item.component.ts","../../../../libs/angular/components/toast/src/lib/components/toast-item/toast-item.component.html","../../../../libs/angular/components/toast/src/lib/components/toast-container/toast-container.component.ts","../../../../libs/angular/components/toast/src/lib/components/toast-container/toast-container.component.html","../../../../libs/angular/components/toast/src/lib/toast.module.ts","../../../../libs/angular/components/toast/src/odx-angular-components-toast.ts"],"sourcesContent":["import { createConfigTokens } from '@odx/angular/utils';\nimport { ToastOptions } from './models/toast.options';\n\nexport type ToastConfig = ToastOptions;\n\n/**\n * Utility functions generated by `createConfigTokens` to handle injection and provision of `ToastConfig`.\n * These include tokens and functions to access and provide the default configuration for toasts.\n *\n * `ToastDefaultConfig` provides the default settings for toasts.\n * `ToastConfig` is a token that can be used to inject toast configuration settings.\n * `injectToastConfig` is a function that retrieves the current toast configuration.\n * `provideToastConfig` is a function used to specify a custom configuration for toasts.\n *\n * @example\n * ```ts\n * // In module providers:\n * providers: [\n * provideToastConfig({ // ... global module configuration }),\n * ]\n *\n * // In a component or service:\n * constructor(@Inject(ToastConfig) private readonly config: ToastConfig) {}\n *\n * // Or using the `injectToastConfig` function:\n * @Component({ ... })\n * export class MyComponent {\n * private readonly config = injectToastConfig();\n * }\n * ```\n */\nexport const { ToastDefaultConfig, ToastConfig, injectToastConfig, provideToastConfig } = createConfigTokens('Toast', '@odx/angular/components/toast', {\n dismissable: true,\n duration: 0,\n} as ToastConfig);\n","import { Injectable } from '@angular/core';\nimport { deepmerge } from '@odx/angular/internal';\nimport { getUniqueId, Queue } from '@odx/angular/utils';\nimport { Toast, ToastOptions, ToastRef } from './models';\nimport { injectToastConfig } from './toast.config';\n\n/**\n * ToastService provides a centralized management system for toasts within an application.\n * It handles the creation, updates, and dismissal of toasts based on a FIFO (first-in, first-out) queue.\n * This service integrates custom toast options with default configurations and supports reactive updates through observables.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n private readonly queue = new Queue<ToastRef>();\n private readonly defaultOptions = injectToastConfig();\n\n /**\n * Observable stream of active toasts.\n */\n public readonly toasts$ = this.queue.value$;\n\n /**\n * Observable that emits when any update occurs in the toast queue.\n */\n public readonly onUpdate$ = this.queue.onUpdate$;\n\n /**\n * Observable that emits when a toast is added.\n */\n public readonly onToastAdd$ = this.queue.onAdd$;\n\n /**\n * Observable that emits when a toast is updated.\n */\n public readonly onToastUpdate$ = this.queue.onUpdate$;\n\n /**\n * Observable that emits when a toast is removed.\n */\n public readonly onToastRemove$ = this.queue.onRemove$;\n\n /**\n * @deprecated Use `toasts$` instead\n */\n public readonly queue$ = this.toasts$;\n /**\n * @deprecated Use `onToastAdd$` instead\n */\n public readonly onAdd$ = this.onToastAdd$;\n /**\n * @deprecated Use `onToastRemove$` instead\n */\n public readonly onRemove$ = this.onToastRemove$;\n\n /**\n * @deprecated Use `create` instead\n */\n public add(item: Toast, options: Partial<ToastOptions> = {}): ToastRef {\n return this.create(item, options);\n }\n\n /**\n * Creates and queues a new toast based on the provided item and options.\n * Merges given options with default configurations.\n * @param {Toast} item The toast item to create.\n * @param {Partial<ToastOptions>} options Optional additional options for the toast.\n * @returns {ToastRef} The reference to the newly created toast.\n */\n public create(item: Toast, options: Partial<ToastOptions> = {}): ToastRef {\n return this.queue.add({\n id: item.id ?? getUniqueId('odx-toast'),\n item,\n options: deepmerge(this.defaultOptions, options) as ToastOptions,\n });\n }\n\n /**\n * @deprecated Use `dismiss` instead\n */\n public remove(refOrId: ToastRef | ToastRef['id']): ToastRef | null {\n return this.dismiss(refOrId);\n }\n\n /**\n * Dismisses a specific toast identified by a reference or ID.\n * @param {ToastRef | ToastRef['id']} refOrId The reference or ID of the toast to dismiss.\n * @returns {ToastRef | null} The reference to the dismissed toast, or null if not found.\n */\n public dismiss(refOrId: ToastRef | ToastRef['id']): ToastRef | null {\n return this.queue.remove(refOrId);\n }\n\n /**\n * @deprecated Use `dismissAll` instead\n */\n public clear(): void {\n return this.dismissAll();\n }\n\n /**\n * Dismisses all toasts currently being displayed.\n */\n public dismissAll(): void {\n this.queue.clear();\n }\n}\n","export type ToastVariant = (typeof ToastVariant)[keyof typeof ToastVariant];\n\nexport const ToastVariant = {\n DEFAULT: 'default',\n WARNING: 'warning',\n DANGER: 'danger',\n SUCCESS: 'success',\n} as const;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, Type, ViewEncapsulation } from '@angular/core';\nimport { DynamicContent, DynamicTextContent, DynamicViewDirective, GetDynamicViewContext } from '@odx/angular/cdk/dynamic-view';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { tap, timer } from 'rxjs';\nimport { ToastAction, ToastOptions, ToastVariant } from '../../models';\n\n@CSSComponent('toast-item')\n@Component({\n selector: 'odx-toast',\n templateUrl: './toast-item.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, IconComponent, ButtonComponent, DynamicViewDirective, ActionGroupComponent],\n host: {\n '[attr.id]': 'id',\n },\n})\nexport class ToastItemComponent implements OnInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement();\n\n public get icon(): string {\n switch (this.variant) {\n case ToastVariant.WARNING:\n return 'warning';\n case ToastVariant.DANGER:\n return 'error';\n case ToastVariant.SUCCESS:\n return 'check';\n default:\n return 'info';\n }\n }\n\n @Input()\n public id!: string;\n\n @Input()\n public title!: DynamicTextContent;\n\n @Input()\n public description?: DynamicContent | null;\n\n @Input()\n public descriptionContext?: GetDynamicViewContext<Type<unknown>>;\n\n @CSSModifier()\n @Input()\n public variant?: ToastVariant | null = ToastVariant.DEFAULT;\n\n @Input()\n public actions?: ToastAction[];\n\n @Input()\n public options!: ToastOptions;\n\n @Output()\n public readonly dismiss = new EventEmitter<void>();\n\n public ngOnInit(): void {\n const { duration } = this.options;\n if (duration > 0) {\n timer(duration)\n .pipe(\n this.takeUntilDestroyed(),\n tap(() => this.onDismiss()),\n )\n .subscribe();\n }\n }\n\n public onDismiss(): void {\n this.dismiss.next();\n }\n}\n","<div class=\"odx-toast-item__content\">\n <odx-icon [name]=\"icon\" iconSet=\"core\"></odx-icon>\n <div class=\"odx-toast-item__text-content\">\n <p class=\"odx-toast-item__title\">\n <ng-template [odxDynamicView]=\"title\"> </ng-template>\n </p>\n <p class=\"odx-toast-item__description\" *ngIf=\"description\">\n <ng-template [odxDynamicView]=\"description\" [odxDynamicViewContext]=\"descriptionContext\"> </ng-template>\n </p>\n </div>\n <button odxButton class=\"odx-toast-item__close\" (click)=\"onDismiss()\" *ngIf=\"options?.dismissable\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n</div>\n<odx-action-group class=\"odx-toast-item__buttons\" *ngIf=\"!!actions?.length\">\n <button odxButton (click)=\"action.action()\" *ngFor=\"let action of actions\">\n <odx-icon [name]=\"action.leftIcon\" iconSet=\"core\" alignLeft *ngIf=\"action.leftIcon\"></odx-icon>\n <ng-template [odxDynamicView]=\"action.label\"> </ng-template>\n <odx-icon [name]=\"action.rightIcon\" iconSet=\"core\" alignRight *ngIf=\"action.rightIcon\"></odx-icon>\n </button>\n</odx-action-group>\n","import { group, transition, trigger, useAnimation } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewEncapsulation,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { collapse, expand, fadeIn, slideInRight } from '@odx/angular/animations';\nimport { ChipComponent } from '@odx/angular/components/chip';\nimport { HeaderComponent } from '@odx/angular/components/header';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, px, trackById } from '@odx/angular/utils';\nimport { Observable, map } from 'rxjs';\nimport { ToastRef } from '../../models';\nimport { ToastService } from '../../toast.service';\nimport { ToastItemComponent } from '../toast-item/toast-item.component';\n\nconst TOAST_ANIMATION_DELAY = '125ms';\n@CSSComponent('toast-container')\n@Component({\n selector: 'odx-toast-container',\n templateUrl: './toast-container.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, ChipComponent, ToastItemComponent],\n animations: [\n trigger('slide', [\n transition(\n ':enter',\n group([\n useAnimation(expand),\n useAnimation(fadeIn(), { params: { delay: TOAST_ANIMATION_DELAY } }),\n useAnimation(slideInRight, { params: { delay: TOAST_ANIMATION_DELAY } }),\n ]),\n ),\n transition(':leave', group([useAnimation(collapse)])),\n ]),\n ],\n})\nexport class ToastContainerComponent implements AfterViewInit, OnDestroy {\n private static INITIALIZED = false;\n\n private readonly windowRef = inject(WindowRef);\n private readonly renderer = inject(Renderer2);\n private readonly toastService = inject(ToastService);\n\n protected readonly trackById = trackById;\n\n public readonly element = injectElement();\n public readonly items$: Observable<ToastRef[]> = this.toastService.toasts$.pipe(map((refs) => refs.slice(0, this.maxItems)));\n public readonly hiddenToasts$: Observable<number> = this.toastService.toasts$.pipe(map((refs) => Math.max(0, refs.length - this.maxItems)));\n\n @Input({ transform: numberAttribute })\n public maxItems = 3;\n\n @Output()\n public readonly dismiss = this.toastService.onToastRemove$;\n\n public ngAfterViewInit(): void {\n if (ToastContainerComponent.INITIALIZED) {\n throw new Error('Only one toast container per application allowed');\n }\n ToastContainerComponent.INITIALIZED = true;\n const headerElement = this.windowRef.queryByComponent(HeaderComponent);\n if (headerElement) {\n this.renderer.setStyle(this.element.nativeElement, 'top', px(headerElement.offsetHeight));\n }\n }\n\n public ngOnDestroy(): void {\n ToastContainerComponent.INITIALIZED = false;\n }\n\n protected onDismiss(itemRef: ToastRef): void {\n this.toastService.dismiss(itemRef);\n }\n}\n","<odx-toast\n @slide\n [id]=\"toastRef.id\"\n [title]=\"toastRef.item.title\"\n [description]=\"toastRef.item.description\"\n [descriptionContext]=\"toastRef.item.descriptionContext\"\n [actions]=\"toastRef.item.actions ?? []\"\n [variant]=\"toastRef.item.variant\"\n [options]=\"toastRef.options\"\n (dismiss)=\"onDismiss(toastRef)\"\n *ngFor=\"let toastRef of items$ | async; trackBy: trackById\"\n></odx-toast>\n<odx-chip class=\"odx-toast-container__counter\" *ngIf=\"hiddenToasts$ | async as more\">{{ more }} more Notifications</odx-chip>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { ToastContainerComponent, ToastItemComponent } from './components';\n\nconst modules = [ToastContainerComponent, ToastItemComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class ToastModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}