@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
@@ -3,16 +3,60 @@ import { numberAttribute, Injectable, makeEnvironmentProviders } from '@angular/
3
3
  import { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';
4
4
  import { isFunction, debounce } from '@odx/angular/utils';
5
5
 
6
+ /**
7
+ * An abstract class for implementing custom event plugins in Angular. This class provides
8
+ * the core functionality required to create a custom event listener with specific behavior,
9
+ * allowing developers to extend Angular's native event handling capabilities.
10
+ *
11
+ * @example
12
+ * Extending EventPlugin to create a custom event plugin:
13
+ * ```ts
14
+ * @Injectable()
15
+ * class CustomEventPlugin extends EventPlugin {
16
+ * public readonly modifier = /custom/;
17
+ *
18
+ * public addEventListener(element: HTMLElement, eventName: string, handler: EventListener): Function {
19
+ * // Custom logic for adding an event listener
20
+ * }
21
+ * }
22
+ * ```
23
+ *
24
+ * ```html
25
+ * <div (click.custom)="handleClick($event)"></div>
26
+ * ```
27
+ */
6
28
  class EventPlugin {
29
+ /**
30
+ * Adds a global event listener.
31
+ *
32
+ * @returns {Function} - A function that does nothing.
33
+ */
7
34
  addGlobalEventListener() {
8
35
  return () => void 0;
9
36
  }
37
+ /**
38
+ * Checks if the event plugin supports the given event name.
39
+ *
40
+ * @param {string} eventName - The name of the event.
41
+ * @returns {boolean} - `true` if the event plugin supports the event, `false` otherwise.
42
+ */
10
43
  supports(eventName) {
11
44
  return this.modifier.test(eventName);
12
45
  }
46
+ /**
47
+ * Gets the NgZone instance from the event manager.
48
+ *
49
+ * @returns {NgZone} - The NgZone instance.
50
+ */
13
51
  getZone() {
14
52
  return this.manager.getZone();
15
53
  }
54
+ /**
55
+ * Tears down the event listener.
56
+ *
57
+ * @param {Function | null} listener - The event listener function.
58
+ * @returns {Function} - A function that can be called to clean up the listener.
59
+ */
16
60
  teardown(listener) {
17
61
  return () => (isFunction(listener) ? listener() : void 0);
18
62
  }
@@ -21,6 +65,38 @@ class EventPlugin {
21
65
  /* istanbul ignore file */
22
66
  /* eslint-disable @typescript-eslint/ban-types */
23
67
  const DEFAULT_DELAY = 250;
68
+ /**
69
+ * A service that extends `EventPlugin` for debouncing events. This service wraps event listeners
70
+ * and ensures that they are triggered no more than once per specified delay period. It is
71
+ * particularly useful for handling events that fire frequently, such as mouse movements
72
+ * or keystrokes, in a performant manner.
73
+ *
74
+ * The delay period can be specified directly in the event name using the syntax
75
+ * `(eventName.debounce.delay)`, where `delay` is the debounce duration in milliseconds.
76
+ * If no delay is specified, a default delay of 250 milliseconds is used.
77
+ *
78
+ * @example
79
+ * Provide the `DebounceEventPlugin` in an Angular module:
80
+ * ```ts
81
+ * @NgModule({
82
+ * providers: [
83
+ * ...
84
+ * provideEventPlugins(),
85
+ * ...
86
+ * ],
87
+ * })
88
+ * export class AppModule {}
89
+ * ```
90
+ *
91
+ * In a component template, apply the debounce modifier to an event, specifying a custom delay:
92
+ * ```html
93
+ * <button (click.debounce.400)="handleClick($event)"></button>
94
+ * ```
95
+ * In a component template, apply the debounce modifier with the default delay:
96
+ * ```html
97
+ * <input (keyup.debounce)="onKeyUp($event)" placeholder="Type here...">
98
+ * ```
99
+ */
24
100
  class DebounceEventPlugin extends EventPlugin {
25
101
  constructor() {
26
102
  super(...arguments);
@@ -51,6 +127,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
51
127
 
52
128
  /* istanbul ignore file */
53
129
  /* eslint-disable @typescript-eslint/ban-types */
130
+ /**
131
+ * A service that extends `EventPlugin` to allow event handlers to be deferred until the end of the current call stack.
132
+ * This can improve performance by avoiding triggering Angular's change detection unnecessarily.
133
+ *
134
+ * @example
135
+ * Provide the `DeferEventPlugin` in an Angular module:
136
+ * ```ts
137
+ * @NgModule({
138
+ * providers: [
139
+ * ...
140
+ * provideEventPlugins(),
141
+ * ...
142
+ * ],
143
+ * })
144
+ * export class AppModule {}
145
+ * ```
146
+ *
147
+ * In your Angular component:
148
+ * ```html
149
+ * <button (click.defer)="handleClick($event)"></button>
150
+ * ```
151
+ *
152
+ * The `.defer` modifier in the event name `click.defer` indicates that the event handler should be deferred.
153
+ */
54
154
  class DeferEventPlugin extends EventPlugin {
55
155
  constructor() {
56
156
  super(...arguments);
@@ -79,6 +179,41 @@ const EVENT_PLUGINS = PLUGINS.map((useClass) => ({
79
179
  useClass,
80
180
  multi: true,
81
181
  }));
182
+ /**
183
+ * Provides a set of custom event plugins to Angular's event handling system. This function
184
+ * registers custom event plugins like `DebounceEventPlugin` and `DeferEventPlugin`, enhancing
185
+ * the capabilities of Angular's native event management. By using `EVENT_MANAGER_PLUGINS`, these
186
+ * plugins are integrated into Angular's event system and can be utilized in templates and components
187
+ * to handle events with custom behaviors such as debouncing or deferring event execution.
188
+ *
189
+ * @example
190
+ * Registering the event plugins in an Angular module:
191
+ * ```ts
192
+ * @NgModule({
193
+ * imports: [
194
+ * BrowserModule,
195
+ * BrowserAnimationsModule,
196
+ * // other imports...
197
+ * ],
198
+ * declarations: [AppComponent],
199
+ * providers: [
200
+ * provideEventPlugins(),
201
+ * ],
202
+ * bootstrap: [AppComponent],
203
+ * })
204
+ * export class AppModule {}
205
+ * ```
206
+ * Assuming `DebounceEventPlugin` modifies event names with a `.debounce` modifier:
207
+ * ```html
208
+ * <button (click.debounce)="handleDebouncedClick($event)">Click Me</button>
209
+ * ```
210
+ * Assuming `DeferEventPlugin` modifies event names with a `.defer` modifier:
211
+ * ```html
212
+ * <div (mouseenter.defer)="handleDeferredMouseEnter($event)"></div>
213
+ * ```
214
+ *
215
+ * @returns {EnvironmentProviders} - A configuration object for Angular's DI system, to be used with `makeEnvironmentProviders`.
216
+ */
82
217
  function provideEventPlugins() {
83
218
  return makeEnvironmentProviders(EVENT_PLUGINS);
84
219
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-event-plugins.mjs","sources":["../../../../libs/angular/cdk/event-plugins/src/lib/models/event-plugin.ts","../../../../libs/angular/cdk/event-plugins/src/lib/plugins/debounce-event-plugin.ts","../../../../libs/angular/cdk/event-plugins/src/lib/plugins/defer-event-plugin.ts","../../../../libs/angular/cdk/event-plugins/src/lib/event-plugins.config.ts","../../../../libs/angular/cdk/event-plugins/src/odx-angular-cdk-event-plugins.ts"],"sourcesContent":["/* istanbul ignore file */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { NgZone } from '@angular/core';\nimport { EventManager } from '@angular/platform-browser';\nimport { isFunction } from '@odx/angular/utils';\n\ntype EventManagerArg = ConstructorParameters<typeof EventManager>[0][0];\n\ntype EventManagerPlugin = {\n [K in keyof EventManagerArg]: EventManagerArg[K];\n};\n\nexport abstract class EventPlugin implements EventManagerPlugin {\n protected abstract readonly modifier: RegExp;\n\n public manager!: EventManager;\n\n public abstract addEventListener(element: HTMLElement, eventName: string, handler: EventListener): Function;\n\n public addGlobalEventListener(): Function {\n return () => void 0;\n }\n\n public supports(eventName: string): boolean {\n return this.modifier.test(eventName);\n }\n\n protected getZone(): NgZone {\n return this.manager.getZone();\n }\n\n protected teardown(listener: Function | null): () => void {\n return () => (isFunction(listener) ? listener() : void 0);\n }\n}\n","/* istanbul ignore file */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { Injectable, numberAttribute } from '@angular/core';\nimport { debounce } from '@odx/angular/utils';\nimport { EventPlugin } from '../models';\n\nconst DEFAULT_DELAY = 250;\n\n@Injectable()\nexport class DebounceEventPlugin extends EventPlugin {\n public readonly modifier = /debounce/;\n\n public addEventListener(element: HTMLElement, eventName: string, originalHandler: EventListener): Function {\n const [name, , delay] = eventName.split('.');\n const handler = this.createHandler(originalHandler, numberAttribute(delay, DEFAULT_DELAY));\n\n return this.runOutsideAngular(() => this.manager.addEventListener(element, name, handler));\n }\n\n private createHandler(originalHandler: EventListener, delay: number): (event: Event) => void {\n const innerHandler = (event: Event): void => this.getZone().runGuarded(() => originalHandler(event));\n\n return debounce(innerHandler, delay);\n }\n\n private runOutsideAngular(addListener: () => Function): () => void {\n let listener: Function | null = null;\n this.getZone().runOutsideAngular(() => {\n listener = addListener();\n });\n\n return this.teardown(listener);\n }\n}\n","/* istanbul ignore file */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { Injectable } from '@angular/core';\nimport { EventPlugin } from '../models';\n\n@Injectable()\nexport class DeferEventPlugin extends EventPlugin {\n public readonly modifier = /defer/;\n\n public addEventListener(element: HTMLElement, eventName: string, originalHandler: EventListener): Function {\n const [name] = eventName.split('.');\n const handler = this.createHandler(originalHandler);\n\n return this.getZone().runOutsideAngular(() => this.manager.addEventListener(element, name, handler));\n }\n\n private createHandler(originalHandler: EventListener): (event: Event) => void {\n return (event: Event): void => {\n setTimeout(() => this.getZone().runGuarded(() => originalHandler(event)), 0);\n };\n }\n}\n","import { makeEnvironmentProviders, EnvironmentProviders, Provider } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { DebounceEventPlugin, DeferEventPlugin } from './plugins';\n\nconst PLUGINS = [DebounceEventPlugin, DeferEventPlugin];\n\nexport const EVENT_PLUGINS: Provider[] = PLUGINS.map((useClass) => ({\n provide: EVENT_MANAGER_PLUGINS,\n useClass,\n multi: true,\n}));\n\nexport function provideEventPlugins(): EnvironmentProviders {\n return makeEnvironmentProviders(EVENT_PLUGINS);\n}\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-cdk-event-plugins.mjs","sources":["../../../../libs/angular/cdk/event-plugins/src/lib/models/event-plugin.ts","../../../../libs/angular/cdk/event-plugins/src/lib/plugins/debounce-event-plugin.ts","../../../../libs/angular/cdk/event-plugins/src/lib/plugins/defer-event-plugin.ts","../../../../libs/angular/cdk/event-plugins/src/lib/event-plugins.config.ts","../../../../libs/angular/cdk/event-plugins/src/odx-angular-cdk-event-plugins.ts"],"sourcesContent":["/* istanbul ignore file */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { NgZone } from '@angular/core';\nimport { EventManager } from '@angular/platform-browser';\nimport { isFunction } from '@odx/angular/utils';\n\ntype EventManagerArg = ConstructorParameters<typeof EventManager>[0][0];\n\ntype EventManagerPlugin = {\n [K in keyof EventManagerArg]: EventManagerArg[K];\n};\n\n/**\n * An abstract class for implementing custom event plugins in Angular. This class provides\n * the core functionality required to create a custom event listener with specific behavior,\n * allowing developers to extend Angular's native event handling capabilities.\n *\n * @example\n * Extending EventPlugin to create a custom event plugin:\n * ```ts\n * @Injectable()\n * class CustomEventPlugin extends EventPlugin {\n * public readonly modifier = /custom/;\n *\n * public addEventListener(element: HTMLElement, eventName: string, handler: EventListener): Function {\n * // Custom logic for adding an event listener\n * }\n * }\n * ```\n *\n * ```html\n * <div (click.custom)=\"handleClick($event)\"></div>\n * ```\n */\nexport abstract class EventPlugin implements EventManagerPlugin {\n protected abstract readonly modifier: RegExp;\n\n /**\n * The event manager for handling events.\n *\n * @type {EventManager}\n */\n public manager!: EventManager;\n\n /**\n * Adds an event listener to the given element.\n *\n * @param {HTMLElement} element - The element to attach the event listener to.\n * @param {string} eventName - The name of the event.\n * @param {EventListener} handler - The event listener function.\n * @returns {Function} - A function that can be called to remove the event listener.\n */\n public abstract addEventListener(element: HTMLElement, eventName: string, handler: EventListener): Function;\n\n /**\n * Adds a global event listener.\n *\n * @returns {Function} - A function that does nothing.\n */\n public addGlobalEventListener(): Function {\n return () => void 0;\n }\n\n /**\n * Checks if the event plugin supports the given event name.\n *\n * @param {string} eventName - The name of the event.\n * @returns {boolean} - `true` if the event plugin supports the event, `false` otherwise.\n */\n public supports(eventName: string): boolean {\n return this.modifier.test(eventName);\n }\n\n /**\n * Gets the NgZone instance from the event manager.\n *\n * @returns {NgZone} - The NgZone instance.\n */\n protected getZone(): NgZone {\n return this.manager.getZone();\n }\n\n /**\n * Tears down the event listener.\n *\n * @param {Function | null} listener - The event listener function.\n * @returns {Function} - A function that can be called to clean up the listener.\n */\n protected teardown(listener: Function | null): () => void {\n return () => (isFunction(listener) ? listener() : void 0);\n }\n}\n","/* istanbul ignore file */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { Injectable, numberAttribute } from '@angular/core';\nimport { debounce } from '@odx/angular/utils';\nimport { EventPlugin } from '../models';\n\nconst DEFAULT_DELAY = 250;\n\n/**\n * A service that extends `EventPlugin` for debouncing events. This service wraps event listeners\n * and ensures that they are triggered no more than once per specified delay period. It is\n * particularly useful for handling events that fire frequently, such as mouse movements\n * or keystrokes, in a performant manner.\n *\n * The delay period can be specified directly in the event name using the syntax\n * `(eventName.debounce.delay)`, where `delay` is the debounce duration in milliseconds.\n * If no delay is specified, a default delay of 250 milliseconds is used.\n *\n * @example\n * Provide the `DebounceEventPlugin` in an Angular module:\n * ```ts\n * @NgModule({\n * providers: [\n * ...\n * provideEventPlugins(),\n * ...\n * ],\n * })\n * export class AppModule {}\n * ```\n *\n * In a component template, apply the debounce modifier to an event, specifying a custom delay:\n * ```html\n * <button (click.debounce.400)=\"handleClick($event)\"></button>\n * ```\n * In a component template, apply the debounce modifier with the default delay:\n * ```html\n * <input (keyup.debounce)=\"onKeyUp($event)\" placeholder=\"Type here...\">\n * ```\n */\n@Injectable()\nexport class DebounceEventPlugin extends EventPlugin {\n public readonly modifier = /debounce/;\n\n public addEventListener(element: HTMLElement, eventName: string, originalHandler: EventListener): Function {\n const [name, , delay] = eventName.split('.');\n const handler = this.createHandler(originalHandler, numberAttribute(delay, DEFAULT_DELAY));\n\n return this.runOutsideAngular(() => this.manager.addEventListener(element, name, handler));\n }\n\n private createHandler(originalHandler: EventListener, delay: number): (event: Event) => void {\n const innerHandler = (event: Event): void => this.getZone().runGuarded(() => originalHandler(event));\n\n return debounce(innerHandler, delay);\n }\n\n private runOutsideAngular(addListener: () => Function): () => void {\n let listener: Function | null = null;\n this.getZone().runOutsideAngular(() => {\n listener = addListener();\n });\n\n return this.teardown(listener);\n }\n}\n","/* istanbul ignore file */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { Injectable } from '@angular/core';\nimport { EventPlugin } from '../models';\n\n/**\n * A service that extends `EventPlugin` to allow event handlers to be deferred until the end of the current call stack.\n * This can improve performance by avoiding triggering Angular's change detection unnecessarily.\n *\n * @example\n * Provide the `DeferEventPlugin` in an Angular module:\n * ```ts\n * @NgModule({\n * providers: [\n * ...\n * provideEventPlugins(),\n * ...\n * ],\n * })\n * export class AppModule {}\n * ```\n *\n * In your Angular component:\n * ```html\n * <button (click.defer)=\"handleClick($event)\"></button>\n * ```\n *\n * The `.defer` modifier in the event name `click.defer` indicates that the event handler should be deferred.\n */\n@Injectable()\nexport class DeferEventPlugin extends EventPlugin {\n public readonly modifier = /defer/;\n\n public addEventListener(element: HTMLElement, eventName: string, originalHandler: EventListener): Function {\n const [name] = eventName.split('.');\n const handler = this.createHandler(originalHandler);\n\n return this.getZone().runOutsideAngular(() => this.manager.addEventListener(element, name, handler));\n }\n\n private createHandler(originalHandler: EventListener): (event: Event) => void {\n return (event: Event): void => {\n setTimeout(() => this.getZone().runGuarded(() => originalHandler(event)), 0);\n };\n }\n}\n","import { EnvironmentProviders, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { DebounceEventPlugin, DeferEventPlugin } from './plugins';\n\nconst PLUGINS = [DebounceEventPlugin, DeferEventPlugin];\n\nexport const EVENT_PLUGINS: Provider[] = PLUGINS.map((useClass) => ({\n provide: EVENT_MANAGER_PLUGINS,\n useClass,\n multi: true,\n}));\n\n/**\n * Provides a set of custom event plugins to Angular's event handling system. This function\n * registers custom event plugins like `DebounceEventPlugin` and `DeferEventPlugin`, enhancing\n * the capabilities of Angular's native event management. By using `EVENT_MANAGER_PLUGINS`, these\n * plugins are integrated into Angular's event system and can be utilized in templates and components\n * to handle events with custom behaviors such as debouncing or deferring event execution.\n *\n * @example\n * Registering the event plugins in an Angular module:\n * ```ts\n * @NgModule({\n * imports: [\n * BrowserModule,\n * BrowserAnimationsModule,\n * // other imports...\n * ],\n * declarations: [AppComponent],\n * providers: [\n * provideEventPlugins(),\n * ],\n * bootstrap: [AppComponent],\n * })\n * export class AppModule {}\n * ```\n * Assuming `DebounceEventPlugin` modifies event names with a `.debounce` modifier:\n * ```html\n * <button (click.debounce)=\"handleDebouncedClick($event)\">Click Me</button>\n * ```\n * Assuming `DeferEventPlugin` modifies event names with a `.defer` modifier:\n * ```html\n * <div (mouseenter.defer)=\"handleDeferredMouseEnter($event)\"></div>\n * ```\n *\n * @returns {EnvironmentProviders} - A configuration object for Angular's DI system, to be used with `makeEnvironmentProviders`.\n */\nexport function provideEventPlugins(): EnvironmentProviders {\n return makeEnvironmentProviders(EVENT_PLUGINS);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -5,11 +5,22 @@ import { getUniqueId } from '@odx/angular/utils';
5
5
  const ODX_EXPANDABLE_CONTAINER = new InjectionToken('@odx/angular/cdk/expandable::ExpandableContainer');
6
6
  const ODX_EXPANDABLE_ITEM = new InjectionToken('@odx/angular/cdk/expandable::ExpandableItem');
7
7
 
8
+ /**
9
+ * `ExpandableContainerDirective` provides a container for managing a group of expandable items,
10
+ * allowing them to expand or collapse. It supports the functionality to either allow multiple
11
+ * items to be expanded simultaneously or restrict to a single item at a time.
12
+ *
13
+ * This directive uses Angular's dependency injection to optionally inject a parent `ExpandableItem` or `ExpandableContainer`,
14
+ * enabling nested expandable structures. The `multiple` property can be set to dictate the expand/collapse behavior.
15
+ */
8
16
  class ExpandableContainerDirective {
9
17
  constructor() {
10
18
  this.expandedItems = new Set();
11
19
  this.parentItem = inject(ODX_EXPANDABLE_ITEM, { optional: true, skipSelf: true });
12
20
  this.parentContainer = inject(ODX_EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });
21
+ /**
22
+ * Determines whether multiple items can be expanded within the container.
23
+ */
13
24
  this.multiple = this.parentContainer?.multiple ?? false;
14
25
  }
15
26
  ngOnInit() {
@@ -18,18 +29,39 @@ class ExpandableContainerDirective {
18
29
  ngOnDestroy() {
19
30
  this.parentItem?.removeChild(this);
20
31
  }
32
+ /**
33
+ * Collapses all the expanded items within the expandable container.
34
+ */
21
35
  collapseAll() {
22
36
  this.expandedItems.forEach((item) => item.collapse());
23
37
  }
38
+ /**
39
+ * Collapses the specified item.
40
+ *
41
+ * @param item - The item to collapse.
42
+ */
24
43
  collapse(item) {
25
44
  this.expandedItems.delete(item);
26
45
  }
46
+ /**
47
+ * Expands the specified item.
48
+ * If `multiple` is set to `false`, it collapses all other items before expanding the specified item.
49
+ * @param item - The item to expand.
50
+ */
27
51
  expand(item) {
28
52
  if (!this.multiple) {
29
53
  this.collapseAll();
30
54
  }
31
55
  this.expandedItems.add(item);
32
56
  }
57
+ /**
58
+ * Toggles the expansion state of the specified item.
59
+ * If `forceState` is provided, it will set the expansion state to the specified value.
60
+ * If `forceState` is not provided, it will toggle the expansion state of the item.
61
+ *
62
+ * @param item - The item to toggle the expansion state for.
63
+ * @param forceState - Optional. The desired expansion state to set for the item.
64
+ */
33
65
  toggle(item, forceState) {
34
66
  const shouldExpand = forceState ?? !this.isExpanded(item);
35
67
  if (shouldExpand) {
@@ -39,9 +71,18 @@ class ExpandableContainerDirective {
39
71
  this.collapse(item);
40
72
  }
41
73
  }
74
+ /**
75
+ * Checks if the specified item is expanded.
76
+ * @param item - The item to check.
77
+ * @returns `true` if the item is expanded, `false` otherwise.
78
+ */
42
79
  isExpanded(item) {
43
80
  return this.expandedItems.has(item);
44
81
  }
82
+ /**
83
+ * Checks if there is any expanded item.
84
+ * @returns {boolean} True if there is at least one expanded item, false otherwise.
85
+ */
45
86
  hasExpandedItem() {
46
87
  return this.expandedItems.size > 0;
47
88
  }
@@ -61,14 +102,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
61
102
  args: [{ transform: booleanAttribute }]
62
103
  }] } });
63
104
 
105
+ /**
106
+ * `ExpandableItemDirective` allows you to manage the expansion state of an item within an expandable container, such as an accordion or a nested list. It provides methods to expand, collapse, and toggle the item, and automatically registers itself with a parent expandable container if one is available.
107
+ *
108
+ * You can control the expanded state programmatically by binding to the `expanded` property.
109
+ */
64
110
  class ExpandableItemDirective {
65
111
  constructor() {
66
112
  this.changeDetectorRef = inject(ChangeDetectorRef);
67
113
  this.childContainers = new Set();
68
114
  this.container = inject(ODX_EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });
69
115
  this._expanded = false;
116
+ /** Unique identifier for the expandable item. */
70
117
  this.id = getUniqueId('odx-expandable-item');
71
118
  }
119
+ /**
120
+ * Controls the expanded state of the item.
121
+ *
122
+ * @param {boolean} value - When `true`, expands the item; when `false`, collapses the item.
123
+ *
124
+ * @example
125
+ * Bind to the expanded state:
126
+ * ```html
127
+ * <div odxExpandableItem [expanded]="isItemExpanded"></div>
128
+ * ```
129
+ */
72
130
  set expanded(value) {
73
131
  if (this._expanded === value)
74
132
  return;
@@ -82,21 +140,51 @@ class ExpandableItemDirective {
82
140
  }
83
141
  this.changeDetectorRef.markForCheck();
84
142
  }
143
+ /**
144
+ * Gets a value indicating whether the item is expanded.
145
+ * If the item is contained within a container, it checks the container's `isExpanded` method.
146
+ * Otherwise, it returns the value of the `_expanded` property.
147
+ *
148
+ * @type {boolean} `true` if the item is expanded; otherwise, `false`.
149
+ */
85
150
  get expanded() {
86
151
  return this.container?.isExpanded(this) ?? this._expanded;
87
152
  }
153
+ /**
154
+ * Toggles the expansion state of the item, optionally forcing a specific state.
155
+ *
156
+ * @param {boolean} forceState - When provided, forces the expansion state to the specified value.
157
+ */
88
158
  toggle(forceState) {
89
159
  this.expanded = forceState ?? !this.expanded;
90
160
  }
161
+ /** Expands the item.
162
+ *
163
+ * @returns {void}
164
+ */
91
165
  expand() {
92
166
  this.toggle(true);
93
167
  }
168
+ /** Collapses the item.
169
+ *
170
+ * @returns {void}
171
+ */
94
172
  collapse() {
95
173
  this.toggle(false);
96
174
  }
175
+ /** Adds a child container to the item.
176
+ *
177
+ * @param {ExpandableContainer} container - The child container to add.
178
+ * @returns {void}
179
+ */
97
180
  addChild(container) {
98
181
  this.childContainers.add(container);
99
182
  }
183
+ /** Removes a child container from the item.
184
+ *
185
+ * @param {ExpandableContainer} container - The child container to remove.
186
+ * @returns {void}
187
+ */
100
188
  removeChild(container) {
101
189
  this.childContainers.delete(container);
102
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-expandable.mjs","sources":["../../../../libs/angular/cdk/expandable/src/lib/expandable.tokens.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/expandable-container.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/expandable-item.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/expandable.module.ts","../../../../libs/angular/cdk/expandable/src/odx-angular-cdk-expandable.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ExpandableContainer, ExpandableItem } from './facade';\n\nexport const ODX_EXPANDABLE_CONTAINER = new InjectionToken<ExpandableContainer>('@odx/angular/cdk/expandable::ExpandableContainer');\nexport const ODX_EXPANDABLE_ITEM = new InjectionToken<ExpandableItem>('@odx/angular/cdk/expandable::ExpandableItem');\n","import { booleanAttribute, Directive, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ODX_EXPANDABLE_CONTAINER, ODX_EXPANDABLE_ITEM } from '../expandable.tokens';\nimport type { ExpandableContainer, ExpandableItem } from '../facade';\n\n@Directive({\n standalone: true,\n selector: '[odxExpandableContainer]',\n exportAs: 'odxExpandableContainer',\n providers: [{ provide: ODX_EXPANDABLE_CONTAINER, useExisting: ExpandableContainerDirective }],\n})\nexport class ExpandableContainerDirective implements ExpandableContainer, OnInit, OnDestroy {\n private readonly expandedItems = new Set<ExpandableItem>();\n private readonly parentItem = inject(ODX_EXPANDABLE_ITEM, { optional: true, skipSelf: true });\n private readonly parentContainer = inject(ODX_EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });\n\n @Input({ transform: booleanAttribute })\n public multiple = this.parentContainer?.multiple ?? false;\n\n public ngOnInit(): void {\n this.parentItem?.addChild(this);\n }\n\n public ngOnDestroy(): void {\n this.parentItem?.removeChild(this);\n }\n\n public collapseAll(): void {\n this.expandedItems.forEach((item) => item.collapse());\n }\n\n public collapse(item: ExpandableItem): void {\n this.expandedItems.delete(item);\n }\n\n public expand(item: ExpandableItem): void {\n if (!this.multiple) {\n this.collapseAll();\n }\n this.expandedItems.add(item);\n }\n\n public toggle(item: ExpandableItem, forceState?: boolean): void {\n const shouldExpand = forceState ?? !this.isExpanded(item);\n if (shouldExpand) {\n this.expand(item);\n } else {\n this.collapse(item);\n }\n }\n\n public isExpanded(item: ExpandableItem): boolean {\n return this.expandedItems.has(item);\n }\n\n public hasExpandedItem(): boolean {\n return this.expandedItems.size > 0;\n }\n}\n","import { booleanAttribute, ChangeDetectorRef, Directive, inject, Input } from '@angular/core';\nimport { getUniqueId } from '@odx/angular/utils';\nimport { ODX_EXPANDABLE_CONTAINER, ODX_EXPANDABLE_ITEM } from '../expandable.tokens';\nimport type { ExpandableContainer, ExpandableItem } from '../facade';\n\n@Directive({\n standalone: true,\n selector: '[odxExpandableItem]',\n exportAs: 'odxExpandableItem',\n providers: [{ provide: ODX_EXPANDABLE_ITEM, useExisting: ExpandableItemDirective }],\n})\nexport class ExpandableItemDirective implements ExpandableItem {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly childContainers = new Set<ExpandableContainer>();\n private readonly container = inject(ODX_EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });\n private _expanded = false;\n\n @Input()\n public id = getUniqueId('odx-expandable-item');\n\n @Input({ transform: booleanAttribute })\n public set expanded(value: boolean) {\n if (this._expanded === value) return;\n this._expanded = value;\n if (this._expanded) {\n this.container?.expand(this);\n } else {\n this.closeAllChildren();\n this.container?.collapse(this);\n }\n this.changeDetectorRef.markForCheck();\n }\n public get expanded(): boolean {\n return this.container?.isExpanded(this) ?? this._expanded;\n }\n\n public toggle(forceState?: boolean): void {\n this.expanded = forceState ?? !this.expanded;\n }\n\n public expand(): void {\n this.toggle(true);\n }\n\n public collapse(): void {\n this.toggle(false);\n }\n\n public addChild(container: ExpandableContainer): void {\n this.childContainers.add(container);\n }\n\n public removeChild(container: ExpandableContainer): void {\n this.childContainers.delete(container);\n }\n\n private closeAllChildren(): void {\n this.childContainers.forEach((container) => container.collapseAll());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ExpandableContainerDirective, ExpandableItemDirective } from './directives';\n\nconst modules = [ExpandableContainerDirective, ExpandableItemDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class ExpandableModule {}\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-cdk-expandable.mjs","sources":["../../../../libs/angular/cdk/expandable/src/lib/expandable.tokens.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/expandable-container.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/expandable-item.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/expandable.module.ts","../../../../libs/angular/cdk/expandable/src/odx-angular-cdk-expandable.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ExpandableContainer, ExpandableItem } from './facade';\n\nexport const ODX_EXPANDABLE_CONTAINER = new InjectionToken<ExpandableContainer>('@odx/angular/cdk/expandable::ExpandableContainer');\nexport const ODX_EXPANDABLE_ITEM = new InjectionToken<ExpandableItem>('@odx/angular/cdk/expandable::ExpandableItem');\n","import { booleanAttribute, Directive, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ODX_EXPANDABLE_CONTAINER, ODX_EXPANDABLE_ITEM } from '../expandable.tokens';\nimport type { ExpandableContainer, ExpandableItem } from '../facade';\n\n/**\n * `ExpandableContainerDirective` provides a container for managing a group of expandable items,\n * allowing them to expand or collapse. It supports the functionality to either allow multiple\n * items to be expanded simultaneously or restrict to a single item at a time.\n *\n * This directive uses Angular's dependency injection to optionally inject a parent `ExpandableItem` or `ExpandableContainer`,\n * enabling nested expandable structures. The `multiple` property can be set to dictate the expand/collapse behavior.\n */\n@Directive({\n standalone: true,\n selector: '[odxExpandableContainer]',\n exportAs: 'odxExpandableContainer',\n providers: [{ provide: ODX_EXPANDABLE_CONTAINER, useExisting: ExpandableContainerDirective }],\n})\nexport class ExpandableContainerDirective implements ExpandableContainer, OnInit, OnDestroy {\n private readonly expandedItems = new Set<ExpandableItem>();\n private readonly parentItem = inject(ODX_EXPANDABLE_ITEM, { optional: true, skipSelf: true });\n private readonly parentContainer = inject(ODX_EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });\n\n /**\n * Determines whether multiple items can be expanded within the container.\n */\n @Input({ transform: booleanAttribute })\n public multiple = this.parentContainer?.multiple ?? false;\n\n public ngOnInit(): void {\n this.parentItem?.addChild(this);\n }\n\n public ngOnDestroy(): void {\n this.parentItem?.removeChild(this);\n }\n\n /**\n * Collapses all the expanded items within the expandable container.\n */\n public collapseAll(): void {\n this.expandedItems.forEach((item) => item.collapse());\n }\n\n /**\n * Collapses the specified item.\n *\n * @param item - The item to collapse.\n */\n public collapse(item: ExpandableItem): void {\n this.expandedItems.delete(item);\n }\n\n /**\n * Expands the specified item.\n * If `multiple` is set to `false`, it collapses all other items before expanding the specified item.\n * @param item - The item to expand.\n */\n public expand(item: ExpandableItem): void {\n if (!this.multiple) {\n this.collapseAll();\n }\n this.expandedItems.add(item);\n }\n\n /**\n * Toggles the expansion state of the specified item.\n * If `forceState` is provided, it will set the expansion state to the specified value.\n * If `forceState` is not provided, it will toggle the expansion state of the item.\n *\n * @param item - The item to toggle the expansion state for.\n * @param forceState - Optional. The desired expansion state to set for the item.\n */\n public toggle(item: ExpandableItem, forceState?: boolean): void {\n const shouldExpand = forceState ?? !this.isExpanded(item);\n if (shouldExpand) {\n this.expand(item);\n } else {\n this.collapse(item);\n }\n }\n\n /**\n * Checks if the specified item is expanded.\n * @param item - The item to check.\n * @returns `true` if the item is expanded, `false` otherwise.\n */\n public isExpanded(item: ExpandableItem): boolean {\n return this.expandedItems.has(item);\n }\n\n /**\n * Checks if there is any expanded item.\n * @returns {boolean} True if there is at least one expanded item, false otherwise.\n */\n public hasExpandedItem(): boolean {\n return this.expandedItems.size > 0;\n }\n}\n","import { booleanAttribute, ChangeDetectorRef, Directive, inject, Input } from '@angular/core';\nimport { getUniqueId } from '@odx/angular/utils';\nimport { ODX_EXPANDABLE_CONTAINER, ODX_EXPANDABLE_ITEM } from '../expandable.tokens';\nimport type { ExpandableContainer, ExpandableItem } from '../facade';\n\n/**\n * `ExpandableItemDirective` allows you to manage the expansion state of an item within an expandable container, such as an accordion or a nested list. It provides methods to expand, collapse, and toggle the item, and automatically registers itself with a parent expandable container if one is available.\n *\n * You can control the expanded state programmatically by binding to the `expanded` property.\n */\n@Directive({\n standalone: true,\n selector: '[odxExpandableItem]',\n exportAs: 'odxExpandableItem',\n providers: [{ provide: ODX_EXPANDABLE_ITEM, useExisting: ExpandableItemDirective }],\n})\nexport class ExpandableItemDirective implements ExpandableItem {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly childContainers = new Set<ExpandableContainer>();\n private readonly container = inject(ODX_EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });\n private _expanded = false;\n\n /** Unique identifier for the expandable item. */\n @Input()\n public id = getUniqueId('odx-expandable-item');\n\n /**\n * Controls the expanded state of the item.\n *\n * @param {boolean} value - When `true`, expands the item; when `false`, collapses the item.\n *\n * @example\n * Bind to the expanded state:\n * ```html\n * <div odxExpandableItem [expanded]=\"isItemExpanded\"></div>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public set expanded(value: boolean) {\n if (this._expanded === value) return;\n this._expanded = value;\n if (this._expanded) {\n this.container?.expand(this);\n } else {\n this.closeAllChildren();\n this.container?.collapse(this);\n }\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * Gets a value indicating whether the item is expanded.\n * If the item is contained within a container, it checks the container's `isExpanded` method.\n * Otherwise, it returns the value of the `_expanded` property.\n *\n * @type {boolean} `true` if the item is expanded; otherwise, `false`.\n */\n public get expanded(): boolean {\n return this.container?.isExpanded(this) ?? this._expanded;\n }\n\n /**\n * Toggles the expansion state of the item, optionally forcing a specific state.\n *\n * @param {boolean} forceState - When provided, forces the expansion state to the specified value.\n */\n public toggle(forceState?: boolean): void {\n this.expanded = forceState ?? !this.expanded;\n }\n\n /** Expands the item.\n *\n * @returns {void}\n */\n public expand(): void {\n this.toggle(true);\n }\n\n /** Collapses the item.\n *\n * @returns {void}\n */\n public collapse(): void {\n this.toggle(false);\n }\n\n /** Adds a child container to the item.\n *\n * @param {ExpandableContainer} container - The child container to add.\n * @returns {void}\n */\n public addChild(container: ExpandableContainer): void {\n this.childContainers.add(container);\n }\n\n /** Removes a child container from the item.\n *\n * @param {ExpandableContainer} container - The child container to remove.\n * @returns {void}\n */\n public removeChild(container: ExpandableContainer): void {\n this.childContainers.delete(container);\n }\n\n private closeAllChildren(): void {\n this.childContainers.forEach((container) => container.collapseAll());\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ExpandableContainerDirective, ExpandableItemDirective } from './directives';\n\nconst modules = [ExpandableContainerDirective, ExpandableItemDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class ExpandableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,20 +2,67 @@ import * as i0 from '@angular/core';
2
2
  import { inject, ChangeDetectorRef, Directive, Input, HostListener } from '@angular/core';
3
3
  import { untilDestroyed, injectElement } from '@odx/angular/utils';
4
4
 
5
+ /**
6
+ * `OptionControl` is an abstract directive that serves as a base class for implementing selectable options in a dropdown
7
+ * list or a similar component. It integrates with CDK's `Highlightable` interface to provide keyboard navigation support.
8
+ *
9
+ * This base class handles the visual feedback for active and selected states and provides a structure for defining
10
+ * how an option is selected.
11
+ *
12
+ * Extend `OptionControl` to create a concrete option component:
13
+ * @example
14
+ * ```ts
15
+ * @Component({
16
+ * selector: 'my-option',
17
+ * templateUrl: './my-option.component.html',
18
+ * providers: [{ provide: OptionControl, useExisting: forwardRef(() => MyOptionComponent) }],
19
+ * })
20
+ * class MyOptionComponent extends OptionControl<MyDataType> {
21
+ * @Input() override value: MyDataType | null = null;
22
+ *
23
+ * protected override selectOption(): void {
24
+ * // Custom logic for when this option is selected
25
+ * }
26
+ * }
27
+ * ```
28
+ *
29
+ * Implement `selectOption` in subclasses to define what happens when an option is selected, such as updating a model
30
+ * or closing a dropdown.
31
+ */
5
32
  class OptionControl {
6
33
  constructor() {
7
34
  this.takeUntilDestroyed = untilDestroyed();
8
35
  this.cdr = inject(ChangeDetectorRef);
9
36
  this.isActive = false;
37
+ /**
38
+ * Represents the value of the option control.
39
+ *
40
+ * @type {T} - The type of the value.
41
+ */
10
42
  this.value = null;
11
43
  this.element = injectElement();
12
44
  }
45
+ /**
46
+ * Sets the active styles for the option control.
47
+ *
48
+ * @returns {void}
49
+ */
13
50
  setActiveStyles() {
14
51
  this.isActive = true;
15
52
  }
53
+ /**
54
+ * Sets the inactive styles for the option control.
55
+ *
56
+ * @returns {void}
57
+ */
16
58
  setInactiveStyles() {
17
59
  this.isActive = false;
18
60
  }
61
+ /**
62
+ * Retrieves the label of the option control.
63
+ *
64
+ * @returns {string} - The label of the option control.
65
+ */
19
66
  getLabel() {
20
67
  return this.element.nativeElement.textContent?.trim() ?? '';
21
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-option-control.mjs","sources":["../../../../libs/angular/cdk/option-control/src/lib/option-control.ts","../../../../libs/angular/cdk/option-control/src/odx-angular-cdk-option-control.ts"],"sourcesContent":["import { Highlightable } from '@angular/cdk/a11y';\nimport { ChangeDetectorRef, Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n host: {\n role: 'option',\n '[class.odx-option]': 'true',\n '[class.is-active]': 'isActive',\n '[attr.aria-selected]': 'isSelected',\n '[class.is-selected]': 'isSelected',\n },\n})\nexport abstract class OptionControl<T> implements Highlightable {\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly cdr = inject(ChangeDetectorRef);\n\n protected isActive = false;\n\n @Input()\n public value: T | null = null;\n\n public readonly element: ElementRef<HTMLElement> = injectElement();\n\n public setActiveStyles(): void {\n this.isActive = true;\n }\n\n public setInactiveStyles(): void {\n this.isActive = false;\n }\n\n public getLabel(): string {\n return this.element.nativeElement.textContent?.trim() ?? '';\n }\n\n protected abstract selectOption(): void;\n\n @HostListener('click', ['$event'])\n protected select(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.selectOption();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAcsB,aAAa,CAAA;AAVnC,IAAA,WAAA,GAAA;QAWqB,IAAkB,CAAA,kBAAA,GAAG,cAAc,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEzC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAGpB,IAAK,CAAA,KAAA,GAAa,IAAI,CAAC;QAEd,IAAO,CAAA,OAAA,GAA4B,aAAa,EAAE,CAAC;AAuBpE,KAAA;IArBQ,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;IAEM,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;IAEM,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KAC7D;AAKS,IAAA,MAAM,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;+GA/BmB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,mBAAmB,EAAE,UAAU;AAC/B,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,qBAAqB,EAAE,YAAY;AACpC,qBAAA;AACF,iBAAA,CAAA;8BAQQ,KAAK,EAAA,CAAA;sBADX,KAAK;gBAoBI,MAAM,EAAA,CAAA;sBADf,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACvCnC;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-cdk-option-control.mjs","sources":["../../../../libs/angular/cdk/option-control/src/lib/option-control.ts","../../../../libs/angular/cdk/option-control/src/odx-angular-cdk-option-control.ts"],"sourcesContent":["import { Highlightable } from '@angular/cdk/a11y';\nimport { ChangeDetectorRef, Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\n\n/**\n * `OptionControl` is an abstract directive that serves as a base class for implementing selectable options in a dropdown\n * list or a similar component. It integrates with CDK's `Highlightable` interface to provide keyboard navigation support.\n *\n * This base class handles the visual feedback for active and selected states and provides a structure for defining\n * how an option is selected.\n *\n * Extend `OptionControl` to create a concrete option component:\n * @example\n * ```ts\n * @Component({\n * selector: 'my-option',\n * templateUrl: './my-option.component.html',\n * providers: [{ provide: OptionControl, useExisting: forwardRef(() => MyOptionComponent) }],\n * })\n * class MyOptionComponent extends OptionControl<MyDataType> {\n * @Input() override value: MyDataType | null = null;\n *\n * protected override selectOption(): void {\n * // Custom logic for when this option is selected\n * }\n * }\n * ```\n *\n * Implement `selectOption` in subclasses to define what happens when an option is selected, such as updating a model\n * or closing a dropdown.\n */\n@Directive({\n standalone: true,\n host: {\n role: 'option',\n '[class.odx-option]': 'true',\n '[class.is-active]': 'isActive',\n '[attr.aria-selected]': 'isSelected',\n '[class.is-selected]': 'isSelected',\n },\n})\nexport abstract class OptionControl<T> implements Highlightable {\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly cdr = inject(ChangeDetectorRef);\n\n protected isActive = false;\n\n /**\n * Represents the value of the option control.\n *\n * @type {T} - The type of the value.\n */\n @Input()\n public value: T | null = null;\n\n public readonly element: ElementRef<HTMLElement> = injectElement();\n\n /**\n * Sets the active styles for the option control.\n *\n * @returns {void}\n */\n public setActiveStyles(): void {\n this.isActive = true;\n }\n\n /**\n * Sets the inactive styles for the option control.\n *\n * @returns {void}\n */\n public setInactiveStyles(): void {\n this.isActive = false;\n }\n\n /**\n * Retrieves the label of the option control.\n *\n * @returns {string} - The label of the option control.\n */\n public getLabel(): string {\n return this.element.nativeElement.textContent?.trim() ?? '';\n }\n\n protected abstract selectOption(): void;\n\n @HostListener('click', ['$event'])\n protected select(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.selectOption();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;MAWmB,aAAa,CAAA;AAVnC,IAAA,WAAA,GAAA;QAWqB,IAAkB,CAAA,kBAAA,GAAG,cAAc,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEzC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAE3B;;;;AAIG;QAEI,IAAK,CAAA,KAAA,GAAa,IAAI,CAAC;QAEd,IAAO,CAAA,OAAA,GAA4B,aAAa,EAAE,CAAC;AAsCpE,KAAA;AApCC;;;;AAIG;IACI,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;AAED;;;;AAIG;IACI,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED;;;;AAIG;IACI,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KAC7D;AAKS,IAAA,MAAM,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;+GAnDmB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,mBAAmB,EAAE,UAAU;AAC/B,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,qBAAqB,EAAE,YAAY;AACpC,qBAAA;AACF,iBAAA,CAAA;8BAaQ,KAAK,EAAA,CAAA;sBADX,KAAK;gBAmCI,MAAM,EAAA,CAAA;sBADf,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACtFnC;;AAEG;;;;"}
@@ -5,6 +5,17 @@ import { injectElement, booleanToAttributeString } from '@odx/angular/utils';
5
5
  import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
6
6
 
7
7
  const RADIO_GROUP_CONTROL = new InjectionToken('@odx/angular/cdk/radio-group-control::RadioGroupControl');
8
+ /**
9
+ * A directive that provides radio group functionality for its child radio button components.
10
+ * It tracks the value and selection state of a group of `odxRadioControl` directives.
11
+ *
12
+ * This directive extends `CustomFormControl` to integrate seamlessly with Angular Forms API,
13
+ * providing form control methods and properties. It supports form control states like disabled
14
+ * and readonly through `DisabledController` and `ReadonlyController` directives.
15
+ *
16
+ * It uses Angular's dependency injection to provide itself as `RADIO_GROUP_CONTROL` token,
17
+ * allowing child radio buttons to communicate with the radio group directive.
18
+ */
8
19
  class RadioGroupControlDirective extends CustomFormControl {
9
20
  constructor() {
10
21
  super(null);
@@ -46,6 +57,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
46
57
  args: ['focusout', ['$event']]
47
58
  }] } });
48
59
 
60
+ /**
61
+ * A directive that provides radio button functionality within a radio group.
62
+ * It tracks the active state based on the current value of the parent `odxRadioGroupControl`.
63
+ *
64
+ * This directive integrates with Angular Forms through `DisabledController` and `ReadonlyController` directives,
65
+ * enabling form control states like disabled and readonly. It automatically updates its classes
66
+ * to reflect these states and the active (checked) state.
67
+ */
49
68
  class RadioControlDirective {
50
69
  get ariaChecked() {
51
70
  return booleanToAttributeString(this.isActive);
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-radio-group-control.mjs","sources":["../../../../libs/angular/cdk/radio-group-control/src/lib/radio-group-control.directive.ts","../../../../libs/angular/cdk/radio-group-control/src/lib/radio-control.directive.ts","../../../../libs/angular/cdk/radio-group-control/src/lib/radio-group-control.module.ts","../../../../libs/angular/cdk/radio-group-control/src/odx-angular-cdk-radio-group-control.ts"],"sourcesContent":["import { Directive, forwardRef, HostListener, InjectionToken } from '@angular/core';\nimport { DisabledController, ReadonlyController } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { injectElement } from '@odx/angular/utils';\n\nexport const RADIO_GROUP_CONTROL = new InjectionToken<RadioGroupControlDirective>('@odx/angular/cdk/radio-group-control::RadioGroupControl');\n\n@Directive({\n standalone: true,\n selector: '[odxRadioGroupControl]',\n providers: [\n {\n provide: RADIO_GROUP_CONTROL,\n useExisting: forwardRef(() => RadioGroupControlDirective),\n multi: false,\n },\n DisabledController.connect(),\n ReadonlyController.connect(),\n ],\n})\nexport class RadioGroupControlDirective<T = unknown> extends CustomFormControl<T | null> {\n private readonly hostElement = injectElement();\n\n constructor() {\n super(null);\n }\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (event.target !== this.hostElement.nativeElement) {\n this.onTouched();\n }\n }\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { detectControllerChanges, DisabledController, ReadonlyController } from '@odx/angular';\nimport { booleanToAttributeString } from '@odx/angular/utils';\nimport { RADIO_GROUP_CONTROL } from './radio-group-control.directive';\n\n@Directive({\n standalone: true,\n selector: '[odxRadioControl]',\n host: {\n '[class.is-active]': 'isActive',\n '[class.is-disabled]': 'disabledController?.disabled',\n '[class.is-readonly]': 'readonlyController?.readonly',\n '[class.has-error]': 'radioGroupControl.hasError',\n },\n providers: [DisabledController.connect(), ReadonlyController.connect()],\n})\nexport class RadioControlDirective<T = unknown> {\n protected readonly disabledController = DisabledController.inject();\n protected readonly readonlyController = ReadonlyController.inject();\n protected readonly radioGroupControl = inject(RADIO_GROUP_CONTROL, { skipSelf: true });\n\n @Input()\n public value: T | null = null;\n\n public get ariaChecked(): string {\n return booleanToAttributeString(this.isActive);\n }\n\n public get isActive(): boolean {\n return this.radioGroupControl.value === this.value;\n }\n\n constructor() {\n detectControllerChanges(this.radioGroupControl).subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { RadioControlDirective } from './radio-control.directive';\nimport { RadioGroupControlDirective } from './radio-group-control.directive';\n\nconst modules = [RadioGroupControlDirective, RadioControlDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class RadioGroupControlModule {}\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-cdk-radio-group-control.mjs","sources":["../../../../libs/angular/cdk/radio-group-control/src/lib/radio-group-control.directive.ts","../../../../libs/angular/cdk/radio-group-control/src/lib/radio-control.directive.ts","../../../../libs/angular/cdk/radio-group-control/src/lib/radio-group-control.module.ts","../../../../libs/angular/cdk/radio-group-control/src/odx-angular-cdk-radio-group-control.ts"],"sourcesContent":["import { Directive, forwardRef, HostListener, InjectionToken } from '@angular/core';\nimport { DisabledController, ReadonlyController } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { injectElement } from '@odx/angular/utils';\n\nexport const RADIO_GROUP_CONTROL = new InjectionToken<RadioGroupControlDirective>('@odx/angular/cdk/radio-group-control::RadioGroupControl');\n\n/**\n * A directive that provides radio group functionality for its child radio button components.\n * It tracks the value and selection state of a group of `odxRadioControl` directives.\n *\n * This directive extends `CustomFormControl` to integrate seamlessly with Angular Forms API,\n * providing form control methods and properties. It supports form control states like disabled\n * and readonly through `DisabledController` and `ReadonlyController` directives.\n *\n * It uses Angular's dependency injection to provide itself as `RADIO_GROUP_CONTROL` token,\n * allowing child radio buttons to communicate with the radio group directive.\n */\n@Directive({\n standalone: true,\n selector: '[odxRadioGroupControl]',\n providers: [\n {\n provide: RADIO_GROUP_CONTROL,\n useExisting: forwardRef(() => RadioGroupControlDirective),\n multi: false,\n },\n DisabledController.connect(),\n ReadonlyController.connect(),\n ],\n})\nexport class RadioGroupControlDirective<T = unknown> extends CustomFormControl<T | null> {\n private readonly hostElement = injectElement();\n\n constructor() {\n super(null);\n }\n\n @HostListener('focusout', ['$event'])\n public onFocusOut(event: FocusEvent): void {\n if (event.target !== this.hostElement.nativeElement) {\n this.onTouched();\n }\n }\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { detectControllerChanges, DisabledController, ReadonlyController } from '@odx/angular';\nimport { booleanToAttributeString } from '@odx/angular/utils';\nimport { RADIO_GROUP_CONTROL } from './radio-group-control.directive';\n\n/**\n * A directive that provides radio button functionality within a radio group.\n * It tracks the active state based on the current value of the parent `odxRadioGroupControl`.\n *\n * This directive integrates with Angular Forms through `DisabledController` and `ReadonlyController` directives,\n * enabling form control states like disabled and readonly. It automatically updates its classes\n * to reflect these states and the active (checked) state.\n */\n@Directive({\n standalone: true,\n selector: '[odxRadioControl]',\n host: {\n '[class.is-active]': 'isActive',\n '[class.is-disabled]': 'disabledController?.disabled',\n '[class.is-readonly]': 'readonlyController?.readonly',\n '[class.has-error]': 'radioGroupControl.hasError',\n },\n providers: [DisabledController.connect(), ReadonlyController.connect()],\n})\nexport class RadioControlDirective<T = unknown> {\n protected readonly disabledController = DisabledController.inject();\n protected readonly readonlyController = ReadonlyController.inject();\n protected readonly radioGroupControl = inject(RADIO_GROUP_CONTROL, { skipSelf: true });\n\n @Input()\n public value: T | null = null;\n\n public get ariaChecked(): string {\n return booleanToAttributeString(this.isActive);\n }\n\n public get isActive(): boolean {\n return this.radioGroupControl.value === this.value;\n }\n\n constructor() {\n detectControllerChanges(this.radioGroupControl).subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { RadioControlDirective } from './radio-control.directive';\nimport { RadioGroupControlDirective } from './radio-group-control.directive';\n\nconst modules = [RadioGroupControlDirective, RadioControlDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class RadioGroupControlModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}