@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
@@ -2,7 +2,7 @@ import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, inject, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Directive, HostListener, Pipe, forwardRef, ContentChildren, ContentChild, NgModule } from '@angular/core';
4
4
  import * as i2 from '@odx/angular';
5
- import { DisabledController, detectControllerChanges, CoreModule, ODX_IDENTITY_MATCHER } from '@odx/angular';
5
+ import { detectControllerChanges, CoreModule, ODX_IDENTITY_MATCHER } from '@odx/angular';
6
6
  import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
7
7
  import { OptionControl } from '@odx/angular/cdk/option-control';
8
8
  import { CheckboxComponent } from '@odx/angular/components/checkbox';
@@ -19,15 +19,47 @@ import { deferFn } from '@odx/angular/utils';
19
19
 
20
20
  const SELECT_CONTROL = new InjectionToken('@odx/angular/components/select::SelectComponent');
21
21
 
22
+ /**
23
+ * SelectOptionComponent is a customizable option element for use within a SelectComponent.
24
+ * It supports complex data structures, integration with checkbox components for multi-select,
25
+ * and can be disabled as needed.
26
+ * It extends OptionControl to provide additional behavior specific to select components.
27
+ *
28
+ * @see {OptionControl}
29
+ */
22
30
  let SelectOptionComponent = class SelectOptionComponent extends OptionControl {
31
+ /**
32
+ * Setter for the disabled state of the select option.
33
+ *
34
+ * @param value - The new value for the disabled state.
35
+ */
36
+ set disabled(value) {
37
+ this._isDisabled = value;
38
+ }
39
+ /**
40
+ * Getter for the disabled state of the select option.
41
+ *
42
+ * @returns {boolean} The current disabled state of the option.
43
+ */
23
44
  get disabled() {
24
- return !!this.disabledController?.disabled;
45
+ return this._isDisabled;
25
46
  }
26
47
  constructor() {
27
48
  super();
28
- this.disabledController = DisabledController.inject();
49
+ this._isDisabled = false;
29
50
  this.selectControl = inject(SELECT_CONTROL);
51
+ /**
52
+ * Indicates whether the option is currently selected.
53
+ *
54
+ * @type {boolean}
55
+ */
30
56
  this.isSelected = false;
57
+ /**
58
+ * Indicates whether a not found message should be displayed, used typically for search results.
59
+ *
60
+ * @type {boolean}
61
+ * @default false
62
+ */
31
63
  this.notFoundMessage = false;
32
64
  detectControllerChanges(this.selectControl)
33
65
  .pipe(this.takeUntilDestroyed())
@@ -38,6 +70,9 @@ let SelectOptionComponent = class SelectOptionComponent extends OptionControl {
38
70
  ngOnInit() {
39
71
  this.isSelected = this.selectControl.isOptionSelected(this);
40
72
  }
73
+ /**
74
+ * Sets active styles for the option when it becomes the target of keyboard navigation or mouse hover.
75
+ */
41
76
  setActiveStyles() {
42
77
  if (this.disabled)
43
78
  return;
@@ -49,6 +84,9 @@ let SelectOptionComponent = class SelectOptionComponent extends OptionControl {
49
84
  this.selectControl.selectOption(this);
50
85
  }
51
86
  }
87
+ /**
88
+ * Toggles the selection state of the option when it is part of a multi-select control.
89
+ */
52
90
  switchCheckbox() {
53
91
  if (this.selectControl.multiple) {
54
92
  this.isSelected = !this.isSelected;
@@ -59,7 +97,7 @@ let SelectOptionComponent = class SelectOptionComponent extends OptionControl {
59
97
  this.selectControl.selectOption(this);
60
98
  }
61
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: SelectOptionComponent, isStandalone: true, selector: "odx-select-option, odx-option", inputs: { notFoundMessage: ["notFoundMessage", "notFoundMessage", booleanAttribute] }, host: { properties: { "attr.aria-disabled": "disabled || null", "class.is-disabled": "disabled" } }, providers: [DisabledController.connect()], usesInheritance: true, ngImport: i0, template: "<odx-checkbox [checked]=\"isSelected\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CheckboxComponent, selector: "odx-checkbox", inputs: ["indeterminate"], outputs: ["indeterminateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: SelectOptionComponent, isStandalone: true, selector: "odx-select-option, odx-option", inputs: { notFoundMessage: ["notFoundMessage", "notFoundMessage", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, host: { properties: { "attr.aria-disabled": "disabled || null", "class.is-disabled": "disabled" } }, usesInheritance: true, ngImport: i0, template: "<odx-checkbox [checked]=\"isSelected\" [disabled]=\"disabled\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "component", type: CheckboxComponent, selector: "odx-checkbox", inputs: ["indeterminate"], outputs: ["indeterminateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
63
101
  };
64
102
  SelectOptionComponent = __decorate([
65
103
  CSSComponent('select-option'),
@@ -67,19 +105,32 @@ SelectOptionComponent = __decorate([
67
105
  ], SelectOptionComponent);
68
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectOptionComponent, decorators: [{
69
107
  type: Component,
70
- args: [{ standalone: true, selector: 'odx-select-option, odx-option', imports: [CoreModule, DynamicViewDirective, CheckboxComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DisabledController.connect()], host: {
108
+ args: [{ standalone: true, selector: 'odx-select-option, odx-option', imports: [CoreModule, DynamicViewDirective, CheckboxComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
71
109
  '[attr.aria-disabled]': 'disabled || null',
72
110
  '[class.is-disabled]': 'disabled',
73
- }, template: "<odx-checkbox [checked]=\"isSelected\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
111
+ }, template: "<odx-checkbox [checked]=\"isSelected\" [disabled]=\"disabled\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
74
112
  }], ctorParameters: function () { return []; }, propDecorators: { notFoundMessage: [{
75
113
  type: Input,
76
114
  args: [{ transform: booleanAttribute }]
115
+ }], disabled: [{
116
+ type: Input,
117
+ args: [{ transform: booleanAttribute }]
77
118
  }] } });
78
119
 
120
+ /**
121
+ * SelectInputControlDirective extends InputControlDirective to provide additional behavior
122
+ * specific to select components with search functionality. This directive manages interactions
123
+ * within the search input field, such as resetting the field content upon specific key events.
124
+ *
125
+ * @see {InputControlDirective}
126
+ */
79
127
  let SelectInputControlDirective = class SelectInputControlDirective extends InputControlDirective {
80
128
  constructor() {
81
129
  super(...arguments);
82
- // eslint-disable-next-line @angular-eslint/no-input-rename
130
+ /**
131
+ * Dynamic content to be displayed when no matching search results are found.
132
+ * This can be specified as HTML content or a string.
133
+ */
83
134
  this.notFoundContent = null;
84
135
  }
85
136
  handleDelete() {
@@ -105,6 +156,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
105
156
  args: ['keydown.delete']
106
157
  }] } });
107
158
 
159
+ /**
160
+ * SelectSearchFilterPipe extends BaseSearchFilterPipe to provide search filtering functionality
161
+ * specifically for select components. It filters options based on the input query, supporting
162
+ * complex filtering logic as defined in the BaseSearchFilterPipe.
163
+ *
164
+ * This pipe is not pure, meaning it updates and reevaluates when inputs change or when
165
+ * impure actions occur in the application.
166
+ *
167
+ * @see {BaseSearchFilterPipe}
168
+ */
108
169
  class SelectSearchFilterPipe extends BaseSearchFilterPipe {
109
170
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectSearchFilterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
110
171
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SelectSearchFilterPipe, isStandalone: true, name: "odxSelectSearchFilter", pure: false }); }
@@ -119,18 +180,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
119
180
  }] });
120
181
 
121
182
  var SelectComponent_1;
183
+ /**
184
+ * SelectComponent provides an advanced dropdown list that supports autocomplete, multiple selection,
185
+ * and accessibility features. It extends AutocompleteControl for seamless integration with Angular forms.
186
+ *
187
+ * @see {AutocompleteControl}
188
+ */
122
189
  let SelectComponent = class SelectComponent extends AutocompleteControl {
123
190
  constructor() {
124
191
  super(...arguments);
125
192
  this.searchFieldEnabled = false;
126
193
  this.selectedOption = null;
127
194
  this.selectedOptionText = null;
195
+ /**
196
+ * Placeholder text for the select input when no option is selected.
197
+ *
198
+ * @type {string}
199
+ */
128
200
  this.placeholder = '';
201
+ /**
202
+ * Sets whether multiple options can be selected.
203
+ *
204
+ * @type {boolean}
205
+ */
129
206
  this.multiple = false;
207
+ /**
208
+ * Custom template for displaying the selected option.
209
+ *
210
+ * @type {TemplateRef<{ $implicit: T }> | null}
211
+ */
130
212
  this.selectedOptionTemplate = null;
213
+ /**
214
+ * Function to determine if two options are identical, useful for detecting changes in selection.
215
+ *
216
+ * @type {IdentityMatcher<T | null>}
217
+ *
218
+ * @example
219
+ * ```ts
220
+ * (item1, item2) => item1.id === item2.id
221
+ * ```
222
+ */
131
223
  this.identityMatcher = inject(ODX_IDENTITY_MATCHER);
132
224
  }
133
225
  static { SelectComponent_1 = this; }
226
+ /**
227
+ * Returns the content of the selected option for display. This can be a template or plain text.
228
+ *
229
+ * @type {TemplateRef<{ $implicit: T | null }> | string | null}
230
+ */
134
231
  get selectedOptionContent() {
135
232
  return this.selectedOption ? this.selectedOptionTemplate ?? this.selectedOptionText : null;
136
233
  }
@@ -141,12 +238,24 @@ let SelectComponent = class SelectComponent extends AutocompleteControl {
141
238
  this.handleQueryListOption(this.options);
142
239
  this.handleSearchFieldChanges();
143
240
  }
241
+ /**
242
+ * Registers a function to be called when the value of the select changes.
243
+ *
244
+ * @param {Function} fn The function to be called when the value changes.
245
+ * @returns {void}
246
+ */
144
247
  registerOnChange(fn) {
145
248
  super.registerOnChange((value) => {
146
249
  this.updateSelectedOption();
147
250
  fn(value);
148
251
  });
149
252
  }
253
+ /**
254
+ * Selects a given option and updates the component's value accordingly.
255
+ *
256
+ * @param {SelectOptionComponent<T | T[]> | null} option The option to select.
257
+ * @returns {void}
258
+ */
150
259
  selectOption(option) {
151
260
  if (option && !option.disabled) {
152
261
  this.optionSelected.emit();
@@ -154,8 +263,14 @@ let SelectComponent = class SelectComponent extends AutocompleteControl {
154
263
  const value = this.multiple ? this.multipleSelectValueResolver(option) : option.value;
155
264
  this.updateValue(value ?? null);
156
265
  }
157
- !this.multiple && this.closeDropdown();
266
+ !this.multiple && !option?.disabled && this.closeDropdown();
158
267
  }
268
+ /**
269
+ * Checks whether a given option is selected.
270
+ *
271
+ * @param {SelectOptionComponent<T | T[]>} option The option to check.
272
+ * @returns {boolean} Whether the option is selected.
273
+ */
159
274
  isOptionSelected(option) {
160
275
  if (option && !option.disabled) {
161
276
  if (this.multiple && Array.isArray(this.value)) {
@@ -182,9 +297,9 @@ let SelectComponent = class SelectComponent extends AutocompleteControl {
182
297
  this.searchField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => this.triggerControllerChange());
183
298
  }
184
299
  handleControllerEvent(event) {
185
- if (this.isLoading || this.readonlyController?.readonly)
300
+ if (this.isLoading || this.readonlyController?.readonly || !this.isOpen)
186
301
  return;
187
- if (this.isOpen && this.hasOptions) {
302
+ if (this.hasOptions) {
188
303
  if (event.key === 'Enter' || event.key === 'Tab') {
189
304
  event.preventDefault();
190
305
  event.stopImmediatePropagation();
@@ -259,7 +374,7 @@ let SelectComponent = class SelectComponent extends AutocompleteControl {
259
374
  provide: ODX_SEARCH_FILTER_HOST,
260
375
  useExisting: SELECT_CONTROL,
261
376
  },
262
- ], queries: [{ propertyName: "searchField", first: true, predicate: SelectInputControlDirective, descendants: true }, { propertyName: "options", predicate: SelectOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n>\n <ng-template [ngIf]=\"!searchFieldEnabled\" [ngIfElse]=\"searchFieldTemplate\">\n <div class=\"odx-select__value\" *ngIf=\"selectedOptionContent; else placeholderTemplate\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n </ng-template>\n <ng-template #placeholderTemplate>\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n </ng-template>\n <ng-template #searchFieldTemplate>\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n </ng-template>\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\" [ngIfElse]=\"noOptionsTemplate\">\n <ng-content></ng-content>\n </ng-template>\n <ng-template #noOptionsTemplate>\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-select-option>\n </ng-template>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "component", type: SelectOptionComponent, selector: "odx-select-option, odx-option", inputs: ["notFoundMessage"] }, { kind: "ngmodule", type: LoadingSpinnerModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
377
+ ], queries: [{ propertyName: "searchField", first: true, predicate: SelectInputControlDirective, descendants: true }, { propertyName: "options", predicate: SelectOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n>\n <ng-template [ngIf]=\"!searchFieldEnabled\" [ngIfElse]=\"searchFieldTemplate\">\n <div class=\"odx-select__value\" *ngIf=\"selectedOptionContent; else placeholderTemplate\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n </ng-template>\n <ng-template #placeholderTemplate>\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n </ng-template>\n <ng-template #searchFieldTemplate>\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n </ng-template>\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\" [ngIfElse]=\"noOptionsTemplate\">\n <ng-content></ng-content>\n </ng-template>\n <ng-template #noOptionsTemplate>\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-select-option>\n </ng-template>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "component", type: SelectOptionComponent, selector: "odx-select-option, odx-option", inputs: ["notFoundMessage", "disabled"] }, { kind: "ngmodule", type: LoadingSpinnerModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
263
378
  };
264
379
  __decorate([
265
380
  CSSModifier(),
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-select.mjs","sources":["../../../../libs/angular/components/select/src/lib/select.tokens.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.html","../../../../libs/angular/components/select/src/lib/directives/select-input-control.directive.ts","../../../../libs/angular/components/select/src/lib/pipes/select-search-filter.pipe.ts","../../../../libs/angular/components/select/src/lib/select.component.ts","../../../../libs/angular/components/select/src/lib/select.component.html","../../../../libs/angular/components/select/src/lib/select.module.ts","../../../../libs/angular/components/select/src/odx-angular-components-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { SelectComponent } from './select.component';\n\nexport const SELECT_CONTROL = new InjectionToken<SelectComponent>('@odx/angular/components/select::SelectComponent');\n","import { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges, DisabledController } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { SELECT_CONTROL } from '../../select.tokens';\n\n@CSSComponent('select-option')\n@Component({\n standalone: true,\n selector: 'odx-select-option, odx-option',\n imports: [CoreModule, DynamicViewDirective, CheckboxComponent],\n templateUrl: './select-option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DisabledController.connect()],\n host: {\n '[attr.aria-disabled]': 'disabled || null',\n '[class.is-disabled]': 'disabled',\n },\n})\nexport class SelectOptionComponent<T = unknown> extends OptionControl<T> implements OnInit {\n private readonly disabledController = DisabledController.inject();\n\n protected readonly selectControl = inject(SELECT_CONTROL);\n\n public isSelected = false;\n\n @Input({ transform: booleanAttribute })\n public notFoundMessage = false;\n\n public get disabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n constructor() {\n super();\n\n detectControllerChanges(this.selectControl)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.isSelected = this.selectControl.isOptionSelected(this);\n });\n }\n\n public ngOnInit(): void {\n this.isSelected = this.selectControl.isOptionSelected(this);\n }\n\n public override setActiveStyles(): void {\n if (this.disabled) return;\n\n this.isActive = true;\n\n if (this.selectControl.isOpen) {\n this.selectControl.scrollOptionIntoView(this);\n } else {\n this.selectControl.selectOption(this);\n }\n }\n\n public switchCheckbox(): void {\n if (this.selectControl.multiple) {\n this.isSelected = !this.isSelected;\n this.cdr.markForCheck();\n }\n }\n\n protected selectOption(): void {\n this.selectControl.selectOption(this);\n }\n}\n","<odx-checkbox [checked]=\"isSelected\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\n\n@CSSComponent('select__control')\n@Directive({\n standalone: true,\n selector: 'input[odxSelectSearchField]',\n})\nexport class SelectInputControlDirective extends InputControlDirective {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('odxSelectSearchField')\n public notFoundContent: DynamicContent | null = null;\n\n @HostListener('keydown.delete')\n public handleDelete(): void {\n this.reset();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { BaseSearchFilterPipe } from '@odx/angular/cdk/autocomplete-control';\n\n@Pipe({\n pure: false,\n name: 'odxSelectSearchFilter',\n standalone: true,\n})\nexport class SelectSearchFilterPipe extends BaseSearchFilterPipe implements PipeTransform {}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n inject,\n Input,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CoreModule, IdentityMatcher, ODX_IDENTITY_MATCHER } from '@odx/angular';\nimport { AutocompleteControl, ODX_SEARCH_FILTER_HOST } from '@odx/angular/cdk/autocomplete-control';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { DropdownDirective } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { fromQueryList } from '@odx/angular/rxjs';\nimport { deferFn } from '@odx/angular/utils';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SELECT_CONTROL } from './select.tokens';\n\n@CSSComponent('select')\n@Component({\n standalone: true,\n selector: 'odx-select',\n imports: [CoreModule, DropdownDirective, IconComponent, DynamicViewDirective, SelectOptionComponent, LoadingSpinnerModule],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SELECT_CONTROL,\n useExisting: forwardRef(() => SelectComponent),\n },\n {\n provide: ODX_SEARCH_FILTER_HOST,\n useExisting: SELECT_CONTROL,\n },\n ],\n host: {\n '[tabindex]': 'searchFieldEnabled || isDisabled ? -1 : 0',\n '[attr.aria-multiselectable]': 'multiple',\n },\n})\nexport class SelectComponent<T = unknown> extends AutocompleteControl<T | null> implements AfterViewInit {\n protected searchFieldEnabled = false;\n protected selectedOption: SelectOptionComponent<T> | null = null;\n protected selectedOptionText: string | null = null;\n\n @ContentChildren(SelectOptionComponent, { descendants: true, emitDistinctChangesOnly: true })\n protected options?: QueryList<SelectOptionComponent<T>>;\n\n @ContentChild(SelectInputControlDirective)\n public searchField?: SelectInputControlDirective;\n\n public get selectedOptionContent(): TemplateRef<{ $implicit: T | null }> | string | null {\n return this.selectedOption ? this.selectedOptionTemplate ?? this.selectedOptionText : null;\n }\n\n @Input()\n public placeholder = '';\n\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public multiple = false;\n\n @Input()\n public selectedOptionTemplate?: TemplateRef<{ $implicit: T }> | null = null;\n\n @Input()\n public identityMatcher: IdentityMatcher<T | null> = inject(ODX_IDENTITY_MATCHER);\n\n public override ngAfterViewInit(): void {\n if (!this.options) return;\n\n this.initKeyManager(this.options);\n this.handleQueryListOption(this.options);\n this.handleSearchFieldChanges();\n }\n\n public override registerOnChange(fn: (value: T | null) => void): void {\n super.registerOnChange((value) => {\n this.updateSelectedOption();\n fn(value);\n });\n }\n\n public selectOption(option?: SelectOptionComponent<T | T[]> | null): void {\n if (option && !option.disabled) {\n this.optionSelected.emit();\n option.switchCheckbox();\n const value = this.multiple ? this.multipleSelectValueResolver(option as SelectOptionComponent<T>) : option.value;\n this.updateValue((value as T) ?? null);\n }\n\n !this.multiple && this.closeDropdown();\n }\n\n public isOptionSelected(option: SelectOptionComponent<T | T[]>): boolean {\n if (option && !option.disabled) {\n if (this.multiple && Array.isArray(this.value)) {\n return (this.value as T[]).some((val) => this.identityMatcher(option.value as T, val));\n }\n return this.identityMatcher(option.value as T, this.value);\n }\n return false;\n }\n\n protected override initKeyManager(options: QueryList<SelectOptionComponent<T>>): void {\n this.keyManager = new ActiveDescendantKeyManager(options).withHomeAndEnd().skipPredicate((item) => item.disabled);\n }\n\n protected handleQueryListOption(options: QueryList<SelectOptionComponent<T>>): void {\n fromQueryList(options)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.updateSelectedOption();\n if (this.isOpen) {\n deferFn(() => this.activateSelectedOption());\n }\n });\n }\n\n protected handleSearchFieldChanges(): void {\n this.searchField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => this.triggerControllerChange());\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.isLoading || this.readonlyController?.readonly) return;\n if (this.isOpen && this.hasOptions) {\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.selectOption(this.keyManager?.activeItem as SelectOptionComponent<T> | undefined);\n return;\n }\n }\n this.keyManager?.onKeydown(event);\n }\n\n protected activateSelectedOption(): void {\n let activeIndex = this.options?.toArray().findIndex((option) => option.isSelected && !option.disabled);\n if (!activeIndex || activeIndex === -1) {\n activeIndex = this.options?.toArray().findIndex((option) => !option.disabled) ?? -1;\n }\n this.keyManager?.setActiveItem(activeIndex);\n }\n\n protected onDropdownOpen(): void {\n this.activateSelectedOption();\n if (!this.searchFieldEnabled) {\n deferFn(() => this.focusSelectSearchField());\n }\n }\n\n protected onDropdownClose(): void {\n this.disableSmoothScroll();\n this.element.nativeElement.blur();\n if (this.searchFieldEnabled) {\n this.searchFieldEnabled = false;\n this.element.nativeElement?.focus();\n }\n }\n\n protected onDropdownClosed(): void {\n this.searchField?.reset();\n }\n\n private updateSelectedOption(): void {\n const options = this.options?.toArray();\n this.selectedOption = options?.find((option) => option.isSelected) ?? null;\n\n if (this.multiple) {\n this.options?.forEach((option) => (option.isSelected = this.isOptionSelected(option)));\n this.selectedOptionText =\n options\n ?.filter(({ isSelected }) => isSelected)\n .map((option) => this.stringify?.(option.value) ?? option.getLabel())\n .join(', ') ?? null;\n\n this.changeDetector.detectChanges();\n return;\n }\n this.selectedOptionText = this.selectedOption ? this.stringify?.(this.selectedOption?.value) ?? this.selectedOption.getLabel() : null;\n this.changeDetector.detectChanges();\n }\n\n private focusSelectSearchField(): void {\n this.searchFieldEnabled = !!this.searchField;\n deferFn(() => this.searchField?.focus());\n this.changeDetector.detectChanges();\n }\n\n private multipleSelectValueResolver(option: SelectOptionComponent<T>): T {\n let value = Array.isArray(this.value) ? (this.value as T[]) : [];\n if (option.isSelected) {\n (value as T[]).push(option.value as T);\n } else {\n value = value.filter((val) => !this.identityMatcher(option.value as T, val));\n }\n return value as T;\n }\n}\n","<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n>\n <ng-template [ngIf]=\"!searchFieldEnabled\" [ngIfElse]=\"searchFieldTemplate\">\n <div class=\"odx-select__value\" *ngIf=\"selectedOptionContent; else placeholderTemplate\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n </ng-template>\n <ng-template #placeholderTemplate>\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n </ng-template>\n <ng-template #searchFieldTemplate>\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n </ng-template>\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\" [ngIfElse]=\"noOptionsTemplate\">\n <ng-content></ng-content>\n </ng-template>\n <ng-template #noOptionsTemplate>\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-select-option>\n </ng-template>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SelectSearchFilterPipe } from './pipes';\nimport { SelectComponent } from './select.component';\n\nconst modules = [SelectComponent, SelectInputControlDirective, SelectSearchFilterPipe, SelectOptionComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class SelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-select.mjs","sources":["../../../../libs/angular/components/select/src/lib/select.tokens.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.ts","../../../../libs/angular/components/select/src/lib/components/select-option/select-option.component.html","../../../../libs/angular/components/select/src/lib/directives/select-input-control.directive.ts","../../../../libs/angular/components/select/src/lib/pipes/select-search-filter.pipe.ts","../../../../libs/angular/components/select/src/lib/select.component.ts","../../../../libs/angular/components/select/src/lib/select.component.html","../../../../libs/angular/components/select/src/lib/select.module.ts","../../../../libs/angular/components/select/src/odx-angular-components-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { SelectComponent } from './select.component';\n\nexport const SELECT_CONTROL = new InjectionToken<SelectComponent>('@odx/angular/components/select::SelectComponent');\n","import { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CheckboxComponent } from '@odx/angular/components/checkbox';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { SELECT_CONTROL } from '../../select.tokens';\n\n/**\n * SelectOptionComponent is a customizable option element for use within a SelectComponent.\n * It supports complex data structures, integration with checkbox components for multi-select,\n * and can be disabled as needed.\n * It extends OptionControl to provide additional behavior specific to select components.\n *\n * @see {OptionControl}\n */\n@CSSComponent('select-option')\n@Component({\n standalone: true,\n selector: 'odx-select-option, odx-option',\n imports: [CoreModule, DynamicViewDirective, CheckboxComponent],\n templateUrl: './select-option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-disabled]': 'disabled || null',\n '[class.is-disabled]': 'disabled',\n },\n})\nexport class SelectOptionComponent<T = unknown> extends OptionControl<T> implements OnInit {\n private _isDisabled = false;\n\n protected readonly selectControl = inject(SELECT_CONTROL);\n\n /**\n * Indicates whether the option is currently selected.\n *\n * @type {boolean}\n */\n public isSelected = false;\n\n /**\n * Indicates whether a not found message should be displayed, used typically for search results.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public notFoundMessage = false;\n\n /**\n * Setter for the disabled state of the select option.\n *\n * @param value - The new value for the disabled state.\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n this._isDisabled = value;\n }\n\n /**\n * Getter for the disabled state of the select option.\n *\n * @returns {boolean} The current disabled state of the option.\n */\n public get disabled(): boolean {\n return this._isDisabled;\n }\n\n constructor() {\n super();\n\n detectControllerChanges(this.selectControl)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.isSelected = this.selectControl.isOptionSelected(this);\n });\n }\n\n public ngOnInit(): void {\n this.isSelected = this.selectControl.isOptionSelected(this);\n }\n\n /**\n * Sets active styles for the option when it becomes the target of keyboard navigation or mouse hover.\n */\n public override setActiveStyles(): void {\n if (this.disabled) return;\n\n this.isActive = true;\n\n if (this.selectControl.isOpen) {\n this.selectControl.scrollOptionIntoView(this);\n } else {\n this.selectControl.selectOption(this);\n }\n }\n\n /**\n * Toggles the selection state of the option when it is part of a multi-select control.\n */\n public switchCheckbox(): void {\n if (this.selectControl.multiple) {\n this.isSelected = !this.isSelected;\n this.cdr.markForCheck();\n }\n }\n\n protected selectOption(): void {\n this.selectControl.selectOption(this);\n }\n}\n","<odx-checkbox [checked]=\"isSelected\" [disabled]=\"disabled\" *ngIf=\"selectControl.multiple && !notFoundMessage; else single\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</odx-checkbox>\n\n<ng-template #single>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { InputControlDirective } from '@odx/angular/cdk/custom-form-control';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\n\n/**\n * SelectInputControlDirective extends InputControlDirective to provide additional behavior\n * specific to select components with search functionality. This directive manages interactions\n * within the search input field, such as resetting the field content upon specific key events.\n *\n * @see {InputControlDirective}\n */\n@CSSComponent('select__control')\n@Directive({\n standalone: true,\n selector: 'input[odxSelectSearchField]',\n})\nexport class SelectInputControlDirective extends InputControlDirective {\n /**\n * Dynamic content to be displayed when no matching search results are found.\n * This can be specified as HTML content or a string.\n */\n @Input('odxSelectSearchField')\n public notFoundContent: DynamicContent | null = null;\n\n @HostListener('keydown.delete')\n public handleDelete(): void {\n this.reset();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { BaseSearchFilterPipe } from '@odx/angular/cdk/autocomplete-control';\n/**\n * SelectSearchFilterPipe extends BaseSearchFilterPipe to provide search filtering functionality\n * specifically for select components. It filters options based on the input query, supporting\n * complex filtering logic as defined in the BaseSearchFilterPipe.\n *\n * This pipe is not pure, meaning it updates and reevaluates when inputs change or when\n * impure actions occur in the application.\n *\n * @see {BaseSearchFilterPipe}\n */\n@Pipe({\n pure: false,\n name: 'odxSelectSearchFilter',\n standalone: true,\n})\nexport class SelectSearchFilterPipe extends BaseSearchFilterPipe implements PipeTransform {}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n inject,\n Input,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CoreModule, IdentityMatcher, ODX_IDENTITY_MATCHER } from '@odx/angular';\nimport { AutocompleteControl, ODX_SEARCH_FILTER_HOST } from '@odx/angular/cdk/autocomplete-control';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { DropdownDirective } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { fromQueryList } from '@odx/angular/rxjs';\nimport { deferFn } from '@odx/angular/utils';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SELECT_CONTROL } from './select.tokens';\n\n/**\n * SelectComponent provides an advanced dropdown list that supports autocomplete, multiple selection,\n * and accessibility features. It extends AutocompleteControl for seamless integration with Angular forms.\n *\n * @see {AutocompleteControl}\n */\n@CSSComponent('select')\n@Component({\n standalone: true,\n selector: 'odx-select',\n imports: [CoreModule, DropdownDirective, IconComponent, DynamicViewDirective, SelectOptionComponent, LoadingSpinnerModule],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: SELECT_CONTROL,\n useExisting: forwardRef(() => SelectComponent),\n },\n {\n provide: ODX_SEARCH_FILTER_HOST,\n useExisting: SELECT_CONTROL,\n },\n ],\n host: {\n '[tabindex]': 'searchFieldEnabled || isDisabled ? -1 : 0',\n '[attr.aria-multiselectable]': 'multiple',\n },\n})\nexport class SelectComponent<T = unknown> extends AutocompleteControl<T | null> implements AfterViewInit {\n protected searchFieldEnabled = false;\n protected selectedOption: SelectOptionComponent<T> | null = null;\n protected selectedOptionText: string | null = null;\n\n @ContentChildren(SelectOptionComponent, { descendants: true, emitDistinctChangesOnly: true })\n protected options?: QueryList<SelectOptionComponent<T>>;\n\n /**\n * Directive managing the search input field within the select.\n *\n * @type {SelectInputControlDirective}\n */\n @ContentChild(SelectInputControlDirective)\n public searchField?: SelectInputControlDirective;\n\n /**\n * Returns the content of the selected option for display. This can be a template or plain text.\n *\n * @type {TemplateRef<{ $implicit: T | null }> | string | null}\n */\n public get selectedOptionContent(): TemplateRef<{ $implicit: T | null }> | string | null {\n return this.selectedOption ? this.selectedOptionTemplate ?? this.selectedOptionText : null;\n }\n\n /**\n * Placeholder text for the select input when no option is selected.\n *\n * @type {string}\n */\n @Input()\n public placeholder = '';\n\n /**\n * Sets whether multiple options can be selected.\n *\n * @type {boolean}\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public multiple = false;\n\n /**\n * Custom template for displaying the selected option.\n *\n * @type {TemplateRef<{ $implicit: T }> | null}\n */\n @Input()\n public selectedOptionTemplate?: TemplateRef<{ $implicit: T }> | null = null;\n\n /**\n * Function to determine if two options are identical, useful for detecting changes in selection.\n *\n * @type {IdentityMatcher<T | null>}\n *\n * @example\n * ```ts\n * (item1, item2) => item1.id === item2.id\n * ```\n */\n @Input()\n public identityMatcher: IdentityMatcher<T | null> = inject(ODX_IDENTITY_MATCHER);\n\n public override ngAfterViewInit(): void {\n if (!this.options) return;\n\n this.initKeyManager(this.options);\n this.handleQueryListOption(this.options);\n this.handleSearchFieldChanges();\n }\n\n /**\n * Registers a function to be called when the value of the select changes.\n *\n * @param {Function} fn The function to be called when the value changes.\n * @returns {void}\n */\n public override registerOnChange(fn: (value: T | null) => void): void {\n super.registerOnChange((value) => {\n this.updateSelectedOption();\n fn(value);\n });\n }\n\n /**\n * Selects a given option and updates the component's value accordingly.\n *\n * @param {SelectOptionComponent<T | T[]> | null} option The option to select.\n * @returns {void}\n */\n public selectOption(option?: SelectOptionComponent<T | T[]> | null): void {\n if (option && !option.disabled) {\n this.optionSelected.emit();\n option.switchCheckbox();\n const value = this.multiple ? this.multipleSelectValueResolver(option as SelectOptionComponent<T>) : option.value;\n this.updateValue((value as T) ?? null);\n }\n\n !this.multiple && !option?.disabled && this.closeDropdown();\n }\n\n /**\n * Checks whether a given option is selected.\n *\n * @param {SelectOptionComponent<T | T[]>} option The option to check.\n * @returns {boolean} Whether the option is selected.\n */\n public isOptionSelected(option: SelectOptionComponent<T | T[]>): boolean {\n if (option && !option.disabled) {\n if (this.multiple && Array.isArray(this.value)) {\n return (this.value as T[]).some((val) => this.identityMatcher(option.value as T, val));\n }\n return this.identityMatcher(option.value as T, this.value);\n }\n return false;\n }\n\n protected override initKeyManager(options: QueryList<SelectOptionComponent<T>>): void {\n this.keyManager = new ActiveDescendantKeyManager(options).withHomeAndEnd().skipPredicate((item) => item.disabled);\n }\n\n protected handleQueryListOption(options: QueryList<SelectOptionComponent<T>>): void {\n fromQueryList(options)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n this.updateSelectedOption();\n if (this.isOpen) {\n deferFn(() => this.activateSelectedOption());\n }\n });\n }\n\n protected handleSearchFieldChanges(): void {\n this.searchField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => this.triggerControllerChange());\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected handleControllerEvent(event: KeyboardEvent) {\n if (this.isLoading || this.readonlyController?.readonly || !this.isOpen) return;\n if (this.hasOptions) {\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.selectOption(this.keyManager?.activeItem as SelectOptionComponent<T> | undefined);\n return;\n }\n }\n this.keyManager?.onKeydown(event);\n }\n\n protected activateSelectedOption(): void {\n let activeIndex = this.options?.toArray().findIndex((option) => option.isSelected && !option.disabled);\n if (!activeIndex || activeIndex === -1) {\n activeIndex = this.options?.toArray().findIndex((option) => !option.disabled) ?? -1;\n }\n this.keyManager?.setActiveItem(activeIndex);\n }\n\n protected onDropdownOpen(): void {\n this.activateSelectedOption();\n if (!this.searchFieldEnabled) {\n deferFn(() => this.focusSelectSearchField());\n }\n }\n\n protected onDropdownClose(): void {\n this.disableSmoothScroll();\n this.element.nativeElement.blur();\n if (this.searchFieldEnabled) {\n this.searchFieldEnabled = false;\n this.element.nativeElement?.focus();\n }\n }\n\n protected onDropdownClosed(): void {\n this.searchField?.reset();\n }\n\n private updateSelectedOption(): void {\n const options = this.options?.toArray();\n this.selectedOption = options?.find((option) => option.isSelected) ?? null;\n\n if (this.multiple) {\n this.options?.forEach((option) => (option.isSelected = this.isOptionSelected(option)));\n this.selectedOptionText =\n options\n ?.filter(({ isSelected }) => isSelected)\n .map((option) => this.stringify?.(option.value) ?? option.getLabel())\n .join(', ') ?? null;\n\n this.changeDetector.detectChanges();\n return;\n }\n this.selectedOptionText = this.selectedOption ? this.stringify?.(this.selectedOption?.value) ?? this.selectedOption.getLabel() : null;\n this.changeDetector.detectChanges();\n }\n\n private focusSelectSearchField(): void {\n this.searchFieldEnabled = !!this.searchField;\n deferFn(() => this.searchField?.focus());\n this.changeDetector.detectChanges();\n }\n\n private multipleSelectValueResolver(option: SelectOptionComponent<T>): T {\n let value = Array.isArray(this.value) ? (this.value as T[]) : [];\n if (option.isSelected) {\n (value as T[]).push(option.value as T);\n } else {\n value = value.filter((val) => !this.identityMatcher(option.value as T, val));\n }\n return value as T;\n }\n}\n","<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n>\n <ng-template [ngIf]=\"!searchFieldEnabled\" [ngIfElse]=\"searchFieldTemplate\">\n <div class=\"odx-select__value\" *ngIf=\"selectedOptionContent; else placeholderTemplate\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n </ng-template>\n <ng-template #placeholderTemplate>\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n </ng-template>\n <ng-template #searchFieldTemplate>\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n </ng-template>\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\" [ngIfElse]=\"noOptionsTemplate\">\n <ng-content></ng-content>\n </ng-template>\n <ng-template #noOptionsTemplate>\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-select-option>\n </ng-template>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { SelectOptionComponent } from './components';\nimport { SelectInputControlDirective } from './directives';\nimport { SelectSearchFilterPipe } from './pipes';\nimport { SelectComponent } from './select.component';\n\nconst modules = [SelectComponent, SelectInputControlDirective, SelectSearchFilterPipe, SelectOptionComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class SelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,19 +6,38 @@ import { WithDisabledState } from '@odx/angular';
6
6
  import { CSSComponent } from '@odx/angular/internal';
7
7
  import { injectElement } from '@odx/angular/utils';
8
8
 
9
+ /**
10
+ * SliderDirective enhances an HTML input of type range by integrating custom slider functionality.
11
+ * It incorporates disabled state handling and custom style binding for visual feedback based on the slider's value.
12
+ * Has host directives for disabled state handling.
13
+ *
14
+ * @see {WithDisabledState}
15
+ */
9
16
  let SliderDirective = class SliderDirective {
10
17
  constructor() {
11
18
  this.element = injectElement();
12
19
  }
20
+ /**
21
+ * Retrieves the current value of the slider.
22
+ */
13
23
  get value() {
14
24
  return Number(this.element.nativeElement.value);
15
25
  }
26
+ /**
27
+ * Retrieves the maximum value of the slider. Defaults to 100 if not specified.
28
+ */
16
29
  get max() {
17
30
  return Number(this.element.nativeElement.max) || 100;
18
31
  }
32
+ /**
33
+ * Retrieves the minimum value of the slider. Defaults to the native minimum if not specified.
34
+ */
19
35
  get min() {
20
36
  return Number(this.element.nativeElement.min);
21
37
  }
38
+ /**
39
+ * Computes the percentage of the slider.
40
+ */
22
41
  get valuePercentage() {
23
42
  return (100 * (this.value - this.min)) / (this.max - this.min) || 0;
24
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-slider.mjs","sources":["../../../../libs/angular/components/slider/src/lib/slider.directive.ts","../../../../libs/angular/components/slider/src/odx-angular-components-slider.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding } from '@angular/core';\nimport { WithDisabledState } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n@CSSComponent('slider')\n@Directive({\n standalone: true,\n selector: 'input[type=range][odxSlider]',\n hostDirectives: [WithDisabledState],\n})\nexport class SliderDirective {\n public readonly element: ElementRef<HTMLInputElement> = injectElement();\n\n public get value(): number {\n return Number(this.element.nativeElement.value);\n }\n public get max(): number {\n return Number(this.element.nativeElement.max) || 100;\n }\n public get min(): number {\n return Number(this.element.nativeElement.min);\n }\n\n @HostBinding(`style.--odx-slider-filled.%`)\n public get valuePercentage(): number {\n return (100 * (this.value - this.min)) / (this.max - this.min) || 0;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAWa,IAAA,eAAe,GAArB,MAAM,eAAe,CAAA;AAArB,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAiC,aAAa,EAAE,CAAC;AAgBzE,KAAA;AAdC,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACjD;AACD,IAAA,IAAW,GAAG,GAAA;AACZ,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;KACtD;AACD,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KAC/C;AAED,IAAA,IACW,eAAe,GAAA;QACxB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACrE;+GAhBU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAAf,eAAe,GAAA,UAAA,CAAA;IAN3B,YAAY,CAAC,QAAQ,CAAC;AAMV,CAAA,EAAA,eAAe,CAiB3B,CAAA;4FAjBY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,cAAc,EAAE,CAAC,iBAAiB,CAAC;AACpC,iBAAA,CAAA;8BAeY,eAAe,EAAA,CAAA;sBADzB,WAAW;uBAAC,CAA6B,2BAAA,CAAA,CAAA;;;ACxB5C;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-components-slider.mjs","sources":["../../../../libs/angular/components/slider/src/lib/slider.directive.ts","../../../../libs/angular/components/slider/src/odx-angular-components-slider.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding } from '@angular/core';\nimport { WithDisabledState } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * SliderDirective enhances an HTML input of type range by integrating custom slider functionality.\n * It incorporates disabled state handling and custom style binding for visual feedback based on the slider's value.\n * Has host directives for disabled state handling.\n *\n * @see {WithDisabledState}\n */\n@CSSComponent('slider')\n@Directive({\n standalone: true,\n selector: 'input[type=range][odxSlider]',\n hostDirectives: [WithDisabledState],\n})\nexport class SliderDirective {\n public readonly element: ElementRef<HTMLInputElement> = injectElement();\n\n /**\n * Retrieves the current value of the slider.\n */\n public get value(): number {\n return Number(this.element.nativeElement.value);\n }\n\n /**\n * Retrieves the maximum value of the slider. Defaults to 100 if not specified.\n */\n public get max(): number {\n return Number(this.element.nativeElement.max) || 100;\n }\n\n /**\n * Retrieves the minimum value of the slider. Defaults to the native minimum if not specified.\n */\n public get min(): number {\n return Number(this.element.nativeElement.min);\n }\n\n /**\n * Computes the percentage of the slider.\n */\n @HostBinding(`style.--odx-slider-filled.%`)\n public get valuePercentage(): number {\n return (100 * (this.value - this.min)) / (this.max - this.min) || 0;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAKA;;;;;;AAMG;AAOU,IAAA,eAAe,GAArB,MAAM,eAAe,CAAA;AAArB,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAiC,aAAa,EAAE,CAAC;AA8BzE,KAAA;AA5BC;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACjD;AAED;;AAEG;AACH,IAAA,IAAW,GAAG,GAAA;AACZ,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KAC/C;AAED;;AAEG;AACH,IAAA,IACW,eAAe,GAAA;QACxB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACrE;+GA9BU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAAf,eAAe,GAAA,UAAA,CAAA;IAN3B,YAAY,CAAC,QAAQ,CAAC;AAMV,CAAA,EAAA,eAAe,CA+B3B,CAAA;4FA/BY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,8BAA8B;oBACxC,cAAc,EAAE,CAAC,iBAAiB,CAAC;AACpC,iBAAA,CAAA;8BA6BY,eAAe,EAAA,CAAA;sBADzB,WAAW;uBAAC,CAA6B,2BAAA,CAAA,CAAA;;;AC7C5C;;AAEG;;;;"}
@@ -8,6 +8,13 @@ import { fromEvents } from '@odx/angular/rxjs';
8
8
  import { untilDestroyed, injectElement } from '@odx/angular/utils';
9
9
  import { filter, tap, switchMap, NEVER, timer, startWith } from 'rxjs';
10
10
 
11
+ /**
12
+ * SpinboxComponent is a custom form control for numeric input which allows users to increment and decrement
13
+ * the value using corresponding buttons. It supports keyboard navigation and automatic boundary checks for the values.
14
+ * Extends CustomFormControl to provide additional behavior.
15
+ *
16
+ * @see {CustomFormControl}
17
+ */
11
18
  let SpinboxComponent = class SpinboxComponent extends CustomFormControl {
12
19
  get inputElement() {
13
20
  return this.control?.element.nativeElement;
@@ -16,8 +23,17 @@ let SpinboxComponent = class SpinboxComponent extends CustomFormControl {
16
23
  super(0);
17
24
  this.takeUntilDestroyed = untilDestroyed();
18
25
  this.element = injectElement();
26
+ /**
27
+ * The maximum allowable value for the spinbox.
28
+ */
19
29
  this.max = Infinity;
30
+ /**
31
+ * The minimum allowable value for the spinbox.
32
+ */
20
33
  this.min = -Infinity;
34
+ /**
35
+ * The value increment or decrement step for the spinbox.
36
+ */
21
37
  this.step = 1;
22
38
  detectControllerChanges(this).subscribe();
23
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-spinbox.mjs","sources":["../../../../libs/angular/components/spinbox/src/lib/spinbox.component.ts","../../../../libs/angular/components/spinbox/src/lib/spinbox.component.html","../../../../libs/angular/components/spinbox/src/odx-angular-components-spinbox.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, numberAttribute, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { detectControllerChanges, DisabledController, ReadonlyController } from '@odx/angular';\nimport { ControlDirective, CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { fromEvents } from '@odx/angular/rxjs';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { filter, NEVER, Observable, startWith, switchMap, tap, timer } from 'rxjs';\n\n@CSSComponent('spinbox')\n@Component({\n standalone: true,\n selector: 'odx-spinbox',\n templateUrl: 'spinbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ControlDirective],\n providers: [DisabledController.connect(), ReadonlyController.connect()],\n})\nexport class SpinboxComponent extends CustomFormControl<number> implements AfterViewInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n private get inputElement(): HTMLInputElement {\n return this.control?.element.nativeElement as HTMLInputElement;\n }\n\n @ViewChild('decrementButton')\n protected decrementButton!: ElementRef<HTMLButtonElement>;\n\n @ViewChild('incrementButton')\n protected incrementButton!: ElementRef<HTMLButtonElement>;\n\n public readonly element = injectElement();\n\n @Input({ transform: numberAttribute })\n public max = Infinity;\n\n @Input({ transform: numberAttribute })\n public min = -Infinity;\n\n @Input({ transform: numberAttribute })\n public step = 1;\n\n constructor() {\n super(0);\n detectControllerChanges(this).subscribe();\n }\n\n public ngAfterViewInit(): void {\n this.registerPressHold(this.decrementButton).subscribe(() => {\n this.inputElement?.stepDown();\n this.onInputChange();\n });\n this.registerPressHold(this.incrementButton).subscribe(() => {\n this.inputElement?.stepUp();\n this.onInputChange();\n });\n }\n\n protected maxSteps({ code }: KeyboardEvent) {\n if (code === 'End' && this.min !== -Infinity) {\n this.updateValue(this.min);\n } else if (code === 'Home' && this.max !== Infinity) {\n this.updateValue(this.max);\n }\n }\n\n protected checkValue(): void {\n const value = numberAttribute(this.inputElement.value);\n this.updateValue(value < this.min ? this.min : value > this.max ? this.max : value);\n }\n\n protected onInputChange(): void {\n this.updateValue(numberAttribute(this.inputElement.value));\n }\n\n private registerPressHold(target: ElementRef<HTMLElement>): Observable<unknown> {\n return fromEvents(target.nativeElement, 'keydown', 'mousedown', 'mouseup', 'keyup').pipe(\n filter((event) => event?.type !== 'keydown' || ['Space', 'Enter'].includes((event as KeyboardEvent).code)),\n tap((event) => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(({ type }) => (['mouseup', 'keyup'].includes(type) ? NEVER : timer(500, 100).pipe(startWith(undefined)))),\n this.takeUntilDestroyed(),\n );\n }\n}\n","<button\n [disabled]=\"isDisabled || isReadonly\"\n type=\"button\"\n class=\"odx-spinbox__action odx-icon\"\n data-icon-set=\"core\"\n data-icon-name=\"minus\"\n #decrementButton\n></button>\n<input\n odxControl\n class=\"odx-spinbox__input\"\n [disabled]=\"isDisabled\"\n [readonly]=\"isReadonly\"\n type=\"number\"\n [value]=\"value\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (keydown)=\"maxSteps($event)\"\n (change)=\"onInputChange()\"\n (blur)=\"checkValue()\"\n/>\n<button\n [disabled]=\"isDisabled || isReadonly\"\n type=\"button\"\n data-icon-set=\"core\"\n data-icon-name=\"plus\"\n class=\"odx-spinbox__action odx-icon\"\n #incrementButton\n></button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-spinbox.mjs","sources":["../../../../libs/angular/components/spinbox/src/lib/spinbox.component.ts","../../../../libs/angular/components/spinbox/src/lib/spinbox.component.html","../../../../libs/angular/components/spinbox/src/odx-angular-components-spinbox.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, numberAttribute, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { detectControllerChanges, DisabledController, ReadonlyController } from '@odx/angular';\nimport { ControlDirective, CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { fromEvents } from '@odx/angular/rxjs';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { filter, NEVER, Observable, startWith, switchMap, tap, timer } from 'rxjs';\n\n/**\n * SpinboxComponent is a custom form control for numeric input which allows users to increment and decrement\n * the value using corresponding buttons. It supports keyboard navigation and automatic boundary checks for the values.\n * Extends CustomFormControl to provide additional behavior.\n *\n * @see {CustomFormControl}\n */\n@CSSComponent('spinbox')\n@Component({\n standalone: true,\n selector: 'odx-spinbox',\n templateUrl: 'spinbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [ControlDirective],\n providers: [DisabledController.connect(), ReadonlyController.connect()],\n})\nexport class SpinboxComponent extends CustomFormControl<number> implements AfterViewInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n private get inputElement(): HTMLInputElement {\n return this.control?.element.nativeElement as HTMLInputElement;\n }\n\n @ViewChild('decrementButton')\n protected decrementButton!: ElementRef<HTMLButtonElement>;\n\n @ViewChild('incrementButton')\n protected incrementButton!: ElementRef<HTMLButtonElement>;\n\n public readonly element = injectElement();\n\n /**\n * The maximum allowable value for the spinbox.\n */\n @Input({ transform: numberAttribute })\n public max = Infinity;\n\n /**\n * The minimum allowable value for the spinbox.\n */\n @Input({ transform: numberAttribute })\n public min = -Infinity;\n\n /**\n * The value increment or decrement step for the spinbox.\n */\n @Input({ transform: numberAttribute })\n public step = 1;\n\n constructor() {\n super(0);\n detectControllerChanges(this).subscribe();\n }\n\n public ngAfterViewInit(): void {\n this.registerPressHold(this.decrementButton).subscribe(() => {\n this.inputElement?.stepDown();\n this.onInputChange();\n });\n this.registerPressHold(this.incrementButton).subscribe(() => {\n this.inputElement?.stepUp();\n this.onInputChange();\n });\n }\n\n protected maxSteps({ code }: KeyboardEvent) {\n if (code === 'End' && this.min !== -Infinity) {\n this.updateValue(this.min);\n } else if (code === 'Home' && this.max !== Infinity) {\n this.updateValue(this.max);\n }\n }\n\n protected checkValue(): void {\n const value = numberAttribute(this.inputElement.value);\n this.updateValue(value < this.min ? this.min : value > this.max ? this.max : value);\n }\n\n protected onInputChange(): void {\n this.updateValue(numberAttribute(this.inputElement.value));\n }\n\n private registerPressHold(target: ElementRef<HTMLElement>): Observable<unknown> {\n return fromEvents(target.nativeElement, 'keydown', 'mousedown', 'mouseup', 'keyup').pipe(\n filter((event) => event?.type !== 'keydown' || ['Space', 'Enter'].includes((event as KeyboardEvent).code)),\n tap((event) => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(({ type }) => (['mouseup', 'keyup'].includes(type) ? NEVER : timer(500, 100).pipe(startWith(undefined)))),\n this.takeUntilDestroyed(),\n );\n }\n}\n","<button\n [disabled]=\"isDisabled || isReadonly\"\n type=\"button\"\n class=\"odx-spinbox__action odx-icon\"\n data-icon-set=\"core\"\n data-icon-name=\"minus\"\n #decrementButton\n></button>\n<input\n odxControl\n class=\"odx-spinbox__input\"\n [disabled]=\"isDisabled\"\n [readonly]=\"isReadonly\"\n type=\"number\"\n [value]=\"value\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (keydown)=\"maxSteps($event)\"\n (change)=\"onInputChange()\"\n (blur)=\"checkValue()\"\n/>\n<button\n [disabled]=\"isDisabled || isReadonly\"\n type=\"button\"\n data-icon-set=\"core\"\n data-icon-name=\"plus\"\n class=\"odx-spinbox__action odx-icon\"\n #incrementButton\n></button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -8,6 +8,16 @@ import { ControlDirective } from '@odx/angular/cdk/custom-form-control';
8
8
  import { CSSComponent } from '@odx/angular/internal';
9
9
  import { CheckboxRequiredValidator, NG_VALIDATORS } from '@angular/forms';
10
10
 
11
+ /**
12
+ * SwitchComponent provides a custom switch (toggle) control that can be used within forms
13
+ * or standalone for toggling a specific binary state. It supports readonly and disabled states,
14
+ * and integrates seamlessly with Angular's form controls for data binding and state management.
15
+ * Has host directives for disabled state handling.
16
+ * Extends CheckBoxControl to provide additional behavior.
17
+ *
18
+ * @see {WithDisabledState}
19
+ * @see {CheckBoxControl}
20
+ */
11
21
  let SwitchComponent = class SwitchComponent extends CheckBoxControl {
12
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SwitchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13
23
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SwitchComponent, isStandalone: true, selector: "odx-switch", host: { properties: { "class.is-active": "checked" } }, providers: [ReadonlyController.connect()], usesInheritance: true, hostDirectives: [{ directive: i1.WithDisabledState }], ngImport: i0, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content></ng-content>\n </div>\n</label>\n", dependencies: [{ kind: "directive", type: ControlDirective, selector: "[odxControl]", exportAs: ["odxControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -22,6 +32,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
22
32
  }, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content></ng-content>\n </div>\n</label>\n" }]
23
33
  }] });
24
34
 
35
+ /**
36
+ * SwitchValidator extends CheckboxRequiredValidator to provide required field validation
37
+ * for switch components used within Angular forms. It ensures that the switch is marked as required
38
+ * and must be toggled (checked) to meet form validation criteria.
39
+ *
40
+ * This directive automatically attaches itself to any switch component with a 'required' attribute
41
+ * and a form control binding (formControlName, formControl, or ngModel).
42
+ *
43
+ * Extends CheckboxRequiredValidator.
44
+ *
45
+ * @see {CheckboxRequiredValidator}
46
+ */
25
47
  class SwitchValidator extends CheckboxRequiredValidator {
26
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SwitchValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
27
49
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SwitchValidator, isStandalone: true, selector: "odx-switch[required][formControlName], odx-switch[required][formControl], odx-switch[required][ngModel]", providers: [