@odx/angular 6.1.0 → 6.2.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 (334) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +19 -1
  3. package/cdk/connected-overlay/lib/models/connected-overlay-ref.d.ts +1 -1
  4. package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +9 -1
  5. package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +9 -5
  6. package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +4 -1
  7. package/cdk/option-control/lib/option-control.d.ts +2 -0
  8. package/cdk/radio-group-control/lib/radio-control.directive.d.ts +18 -0
  9. package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +3 -1
  10. package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +9 -5
  11. package/components/action-group/action-group.component.d.ts +3 -0
  12. package/components/area-header/area-header.component.d.ts +2 -1
  13. package/components/autocomplete/lib/autocomplete.component.d.ts +17 -4
  14. package/components/autocomplete/lib/components/option/autocomplete-option.component.d.ts +8 -0
  15. package/components/autocomplete/lib/directives/autocomplete-input-control.directive.d.ts +4 -0
  16. package/components/avatar/lib/avatar.component.d.ts +6 -2
  17. package/components/badge/lib/badge.component.d.ts +12 -1
  18. package/components/badge/lib/badge.directive.d.ts +18 -3
  19. package/components/bar/lib/directives/bar-button.directive.d.ts +6 -0
  20. package/components/button/lib/button.component.d.ts +9 -1
  21. package/components/button-group/lib/button-group.component.d.ts +12 -0
  22. package/components/calendar/lib/calendar.component.d.ts +11 -0
  23. package/components/calendar/lib/calendar.config.d.ts +6 -0
  24. package/components/calendar/lib/calendar.service.d.ts +13 -1
  25. package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +16 -0
  26. package/components/calendar/lib/daterange.service.d.ts +3 -0
  27. package/components/calendar/lib/directives/calendar-cell.directive.d.ts +4 -0
  28. package/components/calendar/lib/directives/calendar-view.directive.d.ts +18 -0
  29. package/components/calendar/lib/pipes/date-label.pipe.d.ts +4 -0
  30. package/components/card/lib/card.component.d.ts +26 -2
  31. package/components/card/lib/components/card-footer/card-footer.component.d.ts +3 -0
  32. package/components/card/lib/components/launch-card-subtitle/launch-card-subtitle.component.d.ts +3 -0
  33. package/components/card/lib/directives/card-content.directive.d.ts +3 -0
  34. package/components/card/lib/directives/card-title.directive.d.ts +3 -0
  35. package/components/checkbox/lib/checkbox.component.d.ts +9 -2
  36. package/components/chip/lib/components/chip/chip.component.d.ts +15 -3
  37. package/components/circular-progress/lib/circular-progress.component.d.ts +15 -2
  38. package/components/datepicker/lib/datepicker.component.d.ts +28 -1
  39. package/components/datepicker/lib/directives/datepicker-input-control.directive.d.ts +7 -1
  40. package/components/daterangepicker/lib/daterangepicker.component.d.ts +4 -0
  41. package/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.d.ts +3 -1
  42. package/components/daterangepicker/lib/required.validator.d.ts +8 -0
  43. package/components/dropdown/lib/dropdown.component.d.ts +6 -4
  44. package/components/dropdown/lib/dropdown.directive.d.ts +38 -3
  45. package/components/dropdown/lib/helpers/close-current-dropdown.d.ts +2 -1
  46. package/components/error-page/lib/error-page.component.d.ts +2 -0
  47. package/components/footer/lib/footer.component.d.ts +6 -2
  48. package/components/footer/lib/helpers/create-footer-links.d.ts +1 -2
  49. package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +2 -1
  50. package/components/form-field/lib/components/form-group/form-group.component.d.ts +7 -2
  51. package/components/form-field/lib/directives/form-field-error.directive.d.ts +2 -0
  52. package/components/form-field/lib/directives/form.directive.d.ts +4 -0
  53. package/components/form-field/lib/form-field.component.d.ts +17 -2
  54. package/components/form-field/lib/form-field.service.d.ts +27 -6
  55. package/components/form-field/lib/services/form-field-error.service.d.ts +11 -3
  56. package/components/header-navigation/lib/header-navigation.component.d.ts +3 -0
  57. package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +2 -2
  58. package/components/icon/lib/icon.component.d.ts +13 -1
  59. package/components/inline-message/lib/inline-message.component.d.ts +5 -1
  60. package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +1 -0
  61. package/components/list/lib/components/list-item/list-item.component.d.ts +10 -1
  62. package/components/list/lib/list.component.d.ts +1 -0
  63. package/components/loading-spinner/lib/loading-spinner.component.d.ts +3 -0
  64. package/components/loading-spinner/lib/loading-spinner.directive.d.ts +7 -0
  65. package/components/modal/lib/components/modal-header/modal-header.component.d.ts +0 -1
  66. package/components/modal/lib/components/modal-hero/modal-hero.component.d.ts +3 -0
  67. package/components/modal/lib/directives/index.d.ts +2 -0
  68. package/components/modal/lib/directives/prevent-form-method-dialog.directive.d.ts +9 -0
  69. package/components/modal/lib/directives/prevent-method-dialog.directive.d.ts +9 -0
  70. package/components/modal/lib/modal.component.d.ts +11 -3
  71. package/components/modal/lib/modal.module.d.ts +5 -3
  72. package/components/modal/lib/modal.service.d.ts +7 -5
  73. package/components/modal/lib/models/modal-ref.d.ts +18 -4
  74. package/components/notification/lib/components/notification-item/notification-item.component.d.ts +4 -4
  75. package/components/notification/lib/directives/notification-center.directive.d.ts +6 -3
  76. package/components/notification/lib/features/with-browser-notifications.d.ts +1 -1
  77. package/components/notification/lib/features/with-load-notifications.d.ts +2 -1
  78. package/components/notification/lib/features/with-notification-transformer.d.ts +2 -2
  79. package/components/notification/lib/features/with-peristent-notifications.d.ts +6 -8
  80. package/components/notification/lib/features/with-save-notifications.d.ts +1 -1
  81. package/components/paginator/lib/paginator.component.d.ts +50 -0
  82. package/components/progress/lib/progress.component.d.ts +6 -1
  83. package/components/radio-group/lib/components/radio-button/radio-button.component.d.ts +7 -0
  84. package/components/radio-group/lib/radio-group.component.d.ts +6 -0
  85. package/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.d.ts +9 -0
  86. package/components/rail-navigation/lib/rail-navigation.component.d.ts +10 -2
  87. package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +8 -10
  88. package/components/rich-list/lib/rich-list.component.d.ts +3 -0
  89. package/components/select/lib/components/select-option/select-option.component.d.ts +1 -0
  90. package/components/select/lib/directives/select-input-control.directive.d.ts +4 -1
  91. package/components/select/lib/select.component.d.ts +7 -1
  92. package/components/slider/lib/slider.directive.d.ts +7 -4
  93. package/components/spinbox/lib/spinbox.component.d.ts +9 -0
  94. package/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.d.ts +4 -1
  95. package/components/table/lib/components/check-cell/check-cell.component.d.ts +4 -1
  96. package/components/table/lib/components/header-title/header-title.component.d.ts +12 -1
  97. package/components/table/lib/table.component.d.ts +18 -1
  98. package/components/timepicker/lib/components/timepicker-option.component.d.ts +9 -1
  99. package/components/timepicker/lib/directives/timepicker-input-control.directive.d.ts +2 -0
  100. package/components/timepicker/lib/timepicker.component.d.ts +18 -3
  101. package/components/timepicker/lib/timepicker.service.d.ts +0 -7
  102. package/components/toast/lib/components/toast-container/toast-container.component.d.ts +19 -0
  103. package/components/toast/lib/components/toast-item/toast-item.component.d.ts +57 -1
  104. package/components/toast/lib/toast.service.d.ts +12 -0
  105. package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +3 -0
  106. package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +2 -0
  107. package/components/tooltip/lib/tooltip.component.d.ts +7 -1
  108. package/components/tooltip/lib/tooltip.directive.d.ts +15 -2
  109. package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +17 -0
  110. package/components/wizard/lib/wizard.component.d.ts +13 -1
  111. package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +20 -2
  112. package/esm2022/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +2 -2
  113. package/esm2022/cdk/dynamic-view/lib/dynamic-view.directive.mjs +4 -1
  114. package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +10 -6
  115. package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +5 -2
  116. package/esm2022/cdk/option-control/lib/option-control.mjs +3 -1
  117. package/esm2022/cdk/radio-group-control/lib/radio-control.directive.mjs +19 -1
  118. package/esm2022/cdk/radio-group-control/lib/radio-group-control.directive.mjs +3 -1
  119. package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +9 -4
  120. package/esm2022/components/action-group/action-group.component.mjs +4 -1
  121. package/esm2022/components/area-header/area-header.component.mjs +3 -2
  122. package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +8 -5
  123. package/esm2022/components/autocomplete/lib/components/option/autocomplete-option.component.mjs +9 -1
  124. package/esm2022/components/autocomplete/lib/directives/autocomplete-input-control.directive.mjs +5 -1
  125. package/esm2022/components/avatar/lib/avatar.component.mjs +7 -3
  126. package/esm2022/components/badge/lib/badge.component.mjs +7 -2
  127. package/esm2022/components/badge/lib/badge.directive.mjs +19 -4
  128. package/esm2022/components/bar/lib/directives/bar-button.directive.mjs +7 -1
  129. package/esm2022/components/button/lib/button.component.mjs +10 -2
  130. package/esm2022/components/button-group/lib/button-group.component.mjs +13 -1
  131. package/esm2022/components/calendar/lib/calendar.component.mjs +12 -1
  132. package/esm2022/components/calendar/lib/calendar.config.mjs +1 -1
  133. package/esm2022/components/calendar/lib/calendar.service.mjs +14 -2
  134. package/esm2022/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +13 -1
  135. package/esm2022/components/calendar/lib/daterange.service.mjs +4 -1
  136. package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +5 -1
  137. package/esm2022/components/calendar/lib/directives/calendar-view.directive.mjs +17 -1
  138. package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +5 -1
  139. package/esm2022/components/card/lib/card.component.mjs +25 -1
  140. package/esm2022/components/card/lib/components/card-footer/card-footer.component.mjs +4 -1
  141. package/esm2022/components/card/lib/components/launch-card-subtitle/launch-card-subtitle.component.mjs +4 -1
  142. package/esm2022/components/card/lib/directives/card-content.directive.mjs +4 -1
  143. package/esm2022/components/card/lib/directives/card-title.directive.mjs +4 -1
  144. package/esm2022/components/checkbox/lib/checkbox.component.mjs +10 -3
  145. package/esm2022/components/chip/lib/components/chip/chip.component.mjs +15 -3
  146. package/esm2022/components/circular-progress/lib/circular-progress.component.mjs +16 -3
  147. package/esm2022/components/datepicker/lib/datepicker.component.mjs +29 -2
  148. package/esm2022/components/datepicker/lib/directives/datepicker-input-control.directive.mjs +8 -2
  149. package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +5 -1
  150. package/esm2022/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.mjs +4 -2
  151. package/esm2022/components/daterangepicker/lib/required.validator.mjs +9 -9
  152. package/esm2022/components/dropdown/lib/dropdown.component.mjs +1 -5
  153. package/esm2022/components/dropdown/lib/dropdown.directive.mjs +31 -4
  154. package/esm2022/components/dropdown/lib/helpers/close-current-dropdown.mjs +3 -2
  155. package/esm2022/components/error-page/lib/error-page.component.mjs +3 -1
  156. package/esm2022/components/footer/lib/footer.component.mjs +7 -3
  157. package/esm2022/components/footer/lib/helpers/create-footer-links.mjs +2 -3
  158. package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +3 -2
  159. package/esm2022/components/form-field/lib/components/form-group/form-group.component.mjs +6 -3
  160. package/esm2022/components/form-field/lib/directives/form-field-error.directive.mjs +1 -1
  161. package/esm2022/components/form-field/lib/directives/form.directive.mjs +5 -1
  162. package/esm2022/components/form-field/lib/form-field.component.mjs +14 -2
  163. package/esm2022/components/form-field/lib/form-field.service.mjs +28 -7
  164. package/esm2022/components/form-field/lib/services/form-field-error.service.mjs +12 -4
  165. package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +1 -1
  166. package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +3 -3
  167. package/esm2022/components/icon/lib/icon.component.mjs +14 -2
  168. package/esm2022/components/inline-message/lib/inline-message.component.mjs +6 -2
  169. package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +2 -1
  170. package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +11 -2
  171. package/esm2022/components/list/lib/list.component.mjs +2 -1
  172. package/esm2022/components/loading-spinner/lib/loading-spinner.component.mjs +4 -1
  173. package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +8 -1
  174. package/esm2022/components/modal/lib/components/modal-header/modal-header.component.mjs +1 -1
  175. package/esm2022/components/modal/lib/components/modal-hero/modal-hero.component.mjs +4 -1
  176. package/esm2022/components/modal/lib/directives/index.mjs +3 -1
  177. package/esm2022/components/modal/lib/directives/prevent-form-method-dialog.directive.mjs +23 -0
  178. package/esm2022/components/modal/lib/directives/prevent-method-dialog.directive.mjs +23 -0
  179. package/esm2022/components/modal/lib/modal.component.mjs +36 -17
  180. package/esm2022/components/modal/lib/modal.module.mjs +10 -4
  181. package/esm2022/components/modal/lib/modal.service.mjs +4 -3
  182. package/esm2022/components/modal/lib/models/modal-ref.mjs +19 -5
  183. package/esm2022/components/notification/lib/components/notification-item/notification-item.component.mjs +5 -5
  184. package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +7 -4
  185. package/esm2022/components/notification/lib/features/with-browser-notifications.mjs +4 -5
  186. package/esm2022/components/notification/lib/features/with-load-notifications.mjs +3 -3
  187. package/esm2022/components/notification/lib/features/with-notification-transformer.mjs +3 -3
  188. package/esm2022/components/notification/lib/features/with-peristent-notifications.mjs +7 -9
  189. package/esm2022/components/notification/lib/features/with-save-notifications.mjs +3 -4
  190. package/esm2022/components/paginator/lib/paginator.component.mjs +51 -1
  191. package/esm2022/components/progress/lib/progress.component.mjs +7 -2
  192. package/esm2022/components/radio-group/lib/components/radio-button/radio-button.component.mjs +3 -1
  193. package/esm2022/components/radio-group/lib/radio-group.component.mjs +7 -1
  194. package/esm2022/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.mjs +7 -1
  195. package/esm2022/components/rail-navigation/lib/rail-navigation.component.mjs +11 -3
  196. package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +4 -6
  197. package/esm2022/components/rich-list/lib/rich-list.component.mjs +4 -1
  198. package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +2 -1
  199. package/esm2022/components/select/lib/directives/select-input-control.directive.mjs +4 -1
  200. package/esm2022/components/select/lib/select.component.mjs +8 -2
  201. package/esm2022/components/slider/lib/slider.directive.mjs +7 -4
  202. package/esm2022/components/spinbox/lib/spinbox.component.mjs +10 -1
  203. package/esm2022/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.mjs +5 -2
  204. package/esm2022/components/table/lib/components/check-cell/check-cell.component.mjs +5 -2
  205. package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +11 -1
  206. package/esm2022/components/table/lib/table.component.mjs +15 -1
  207. package/esm2022/components/timepicker/lib/components/timepicker-option.component.mjs +10 -2
  208. package/esm2022/components/timepicker/lib/directives/timepicker-input-control.directive.mjs +3 -1
  209. package/esm2022/components/timepicker/lib/timepicker.component.mjs +14 -4
  210. package/esm2022/components/timepicker/lib/timepicker.service.mjs +1 -8
  211. package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +20 -1
  212. package/esm2022/components/toast/lib/components/toast-item/toast-item.component.mjs +24 -1
  213. package/esm2022/components/toast/lib/toast.service.mjs +13 -1
  214. package/esm2022/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +4 -1
  215. package/esm2022/components/toggle-button-group/lib/toggle-button-group.component.mjs +3 -1
  216. package/esm2022/components/tooltip/lib/tooltip.component.mjs +6 -2
  217. package/esm2022/components/tooltip/lib/tooltip.directive.mjs +16 -3
  218. package/esm2022/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +18 -1
  219. package/esm2022/components/wizard/lib/wizard.component.mjs +22 -4
  220. package/esm2022/lib/controllers/disabled.controller.mjs +9 -1
  221. package/esm2022/lib/controllers/readonly.controller.mjs +3 -1
  222. package/esm2022/lib/directives/click-outside.directive.mjs +2 -1
  223. package/esm2022/lib/services/window-ref.mjs +22 -4
  224. package/esm2022/theming/lib/helpers/prefers-dark-theme.mjs +1 -1
  225. package/esm2022/theming/lib/theming.service.mjs +3 -1
  226. package/esm2022/utils/lib/helpers/queue.mjs +24 -14
  227. package/fesm2022/odx-angular-cdk-checkbox-control.mjs +19 -1
  228. package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  229. package/fesm2022/odx-angular-cdk-connected-overlay.mjs +1 -1
  230. package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
  231. package/fesm2022/odx-angular-cdk-dynamic-view.mjs +3 -0
  232. package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  233. package/fesm2022/odx-angular-cdk-expandable.mjs +13 -6
  234. package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
  235. package/fesm2022/odx-angular-cdk-option-control.mjs +2 -0
  236. package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
  237. package/fesm2022/odx-angular-cdk-radio-group-control.mjs +20 -0
  238. package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  239. package/fesm2022/odx-angular-components-accordion.mjs +8 -3
  240. package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
  241. package/fesm2022/odx-angular-components-action-group.mjs +3 -0
  242. package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
  243. package/fesm2022/odx-angular-components-area-header.mjs +2 -1
  244. package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
  245. package/fesm2022/odx-angular-components-autocomplete.mjs +19 -4
  246. package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
  247. package/fesm2022/odx-angular-components-avatar.mjs +6 -2
  248. package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
  249. package/fesm2022/odx-angular-components-badge.mjs +24 -4
  250. package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
  251. package/fesm2022/odx-angular-components-bar.mjs +6 -0
  252. package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
  253. package/fesm2022/odx-angular-components-button-group.mjs +12 -0
  254. package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
  255. package/fesm2022/odx-angular-components-button.mjs +9 -1
  256. package/fesm2022/odx-angular-components-button.mjs.map +1 -1
  257. package/fesm2022/odx-angular-components-calendar.mjs +63 -1
  258. package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
  259. package/fesm2022/odx-angular-components-card.mjs +36 -0
  260. package/fesm2022/odx-angular-components-card.mjs.map +1 -1
  261. package/fesm2022/odx-angular-components-checkbox.mjs +9 -2
  262. package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
  263. package/fesm2022/odx-angular-components-chip.mjs +14 -2
  264. package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
  265. package/fesm2022/odx-angular-components-circular-progress.mjs +15 -2
  266. package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
  267. package/fesm2022/odx-angular-components-datepicker.mjs +35 -2
  268. package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
  269. package/fesm2022/odx-angular-components-daterangepicker.mjs +15 -9
  270. package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
  271. package/fesm2022/odx-angular-components-dropdown.mjs +32 -8
  272. package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
  273. package/fesm2022/odx-angular-components-error-page.mjs +2 -0
  274. package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
  275. package/fesm2022/odx-angular-components-footer.mjs +7 -4
  276. package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
  277. package/fesm2022/odx-angular-components-form-field.mjs +62 -13
  278. package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
  279. package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
  280. package/fesm2022/odx-angular-components-icon.mjs +15 -3
  281. package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
  282. package/fesm2022/odx-angular-components-inline-message.mjs +5 -1
  283. package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
  284. package/fesm2022/odx-angular-components-list.mjs +12 -1
  285. package/fesm2022/odx-angular-components-list.mjs.map +1 -1
  286. package/fesm2022/odx-angular-components-loading-spinner.mjs +10 -0
  287. package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
  288. package/fesm2022/odx-angular-components-modal.mjs +110 -25
  289. package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
  290. package/fesm2022/odx-angular-components-notification.mjs +25 -26
  291. package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
  292. package/fesm2022/odx-angular-components-paginator.mjs +50 -0
  293. package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
  294. package/fesm2022/odx-angular-components-progress.mjs +6 -1
  295. package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
  296. package/fesm2022/odx-angular-components-radio-group.mjs +8 -0
  297. package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
  298. package/fesm2022/odx-angular-components-rail-navigation.mjs +16 -2
  299. package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
  300. package/fesm2022/odx-angular-components-rich-list.mjs +6 -5
  301. package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
  302. package/fesm2022/odx-angular-components-select.mjs +11 -1
  303. package/fesm2022/odx-angular-components-select.mjs.map +1 -1
  304. package/fesm2022/odx-angular-components-slider.mjs +6 -3
  305. package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
  306. package/fesm2022/odx-angular-components-spinbox.mjs +9 -0
  307. package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
  308. package/fesm2022/odx-angular-components-tab-bar.mjs +4 -1
  309. package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
  310. package/fesm2022/odx-angular-components-table.mjs +28 -1
  311. package/fesm2022/odx-angular-components-table.mjs.map +1 -1
  312. package/fesm2022/odx-angular-components-timepicker.mjs +24 -11
  313. package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
  314. package/fesm2022/odx-angular-components-toast.mjs +54 -0
  315. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  316. package/fesm2022/odx-angular-components-toggle-button-group.mjs +5 -0
  317. package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
  318. package/fesm2022/odx-angular-components-tooltip.mjs +20 -3
  319. package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
  320. package/fesm2022/odx-angular-components-wizard.mjs +38 -3
  321. package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
  322. package/fesm2022/odx-angular-theming.mjs +2 -0
  323. package/fesm2022/odx-angular-theming.mjs.map +1 -1
  324. package/fesm2022/odx-angular-utils.mjs +23 -13
  325. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  326. package/fesm2022/odx-angular.mjs +32 -3
  327. package/fesm2022/odx-angular.mjs.map +1 -1
  328. package/lib/controllers/disabled.controller.d.ts +8 -0
  329. package/lib/controllers/readonly.controller.d.ts +2 -0
  330. package/lib/directives/click-outside.directive.d.ts +1 -0
  331. package/lib/services/window-ref.d.ts +21 -3
  332. package/package.json +1 -1
  333. package/theming/lib/theming.service.d.ts +2 -0
  334. package/utils/lib/helpers/queue.d.ts +23 -13
@@ -117,11 +117,17 @@ class DisabledController extends Controller {
117
117
  /**
118
118
  * Sets the disabled state of the current controller. If the state changes, updates the internal
119
119
  * flag.
120
+ *
120
121
  * @param {boolean} value - The new disabled state to be applied.
121
122
  */
122
123
  set disabled(value) {
123
124
  this.isDisabled = value;
124
125
  }
126
+ /**
127
+ * Gets a value indicating whether the controller is disabled.
128
+ *
129
+ * @returns {boolean} - `true` if the controller is disabled, `false` otherwise.
130
+ */
125
131
  get disabled() {
126
132
  return this.isDisabled || !!this.parentController?.disabled;
127
133
  }
@@ -129,6 +135,7 @@ class DisabledController extends Controller {
129
135
  * Retrieves an instance of the `DisabledController` class from the dependency injection container.
130
136
  * If the `DisabledController` is not registered in the container, it returns `null`.
131
137
  *
138
+ * @static
132
139
  * @returns {DisabledController | null} An instance of the `DisabledController` class or `null` if not found.
133
140
  */
134
141
  static inject() {
@@ -139,6 +146,7 @@ class DisabledController extends Controller {
139
146
  * This method provides a way to connect a component with its closest `DisabledController` parent,
140
147
  * allowing for disabled state inheritance.
141
148
  *
149
+ * @static
142
150
  * @returns {Provider[]} An array of providers to enable disabled state management within a component.
143
151
  */
144
152
  static connect() {
@@ -263,6 +271,7 @@ class ReadonlyController extends Controller {
263
271
  /**
264
272
  * Returns an instance of the ReadonlyController or null if it cannot be found.
265
273
  *
274
+ * @static
266
275
  * @returns {ReadonlyController | null} An instance of the ReadonlyController or null.
267
276
  */
268
277
  static inject() {
@@ -273,6 +282,7 @@ class ReadonlyController extends Controller {
273
282
  * This method provides a way to connect a component with its closest `ReadonlyController` parent,
274
283
  * allowing for readonly state inheritance.
275
284
  *
285
+ * @static
276
286
  * @returns {Provider} An array of providers to enable readonly state management within a component.
277
287
  */
278
288
  static connect() {
@@ -355,6 +365,7 @@ class ClickOutsideDirective {
355
365
  * Controls whether the outside click detection is active. When `true`, the directive listens for outside clicks.
356
366
  *
357
367
  * @type {boolean}
368
+ * @default true
358
369
  */
359
370
  this.odxClickOutsideActive = true;
360
371
  /**
@@ -554,31 +565,43 @@ class WindowRef {
554
565
  this.title = inject(Title);
555
566
  /**
556
567
  * Accesses the document object, ensuring Angular compatibility and potential SSR friendliness.
568
+ *
569
+ * @type {Document}
557
570
  */
558
571
  this.document = inject(DOCUMENT);
559
572
  /**
560
573
  * Retrieves the native window object, with a fallback to the global window if necessary.
561
574
  * This approach helps ensure compatibility with Angular's SSR features.
575
+ *
576
+ * @type {Window}
562
577
  */
563
578
  this.nativeWindow = this.document.defaultView ?? window;
564
579
  /**
565
- * An observable that emits the online status of the browser, updating when the browser transitions between online and offline states.
580
+ * An observable that emits the online status of the browser, updating when the browser transitions
581
+ * between online and offline states.
582
+ *
583
+ * @emits {boolean} True if the browser is online; otherwise, false.
566
584
  */
567
585
  this.isOnline$ = fromEvents(this.nativeWindow, 'offline', 'online').pipe(startWith(null), map(() => this.isOnline()), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
568
586
  /**
569
- * An observable that emits the current page title upon navigation ends, useful for updating document titles in SPA applications.
587
+ * An observable that emits the current page title upon navigation ends,
588
+ * useful for updating document titles in SPA applications.
589
+ *
590
+ * @emits {string} The current page title.
570
591
  */
571
592
  this.pageTitle$ = (inject(Router, { optional: true })?.events ?? EMPTY).pipe(filter((event) => event instanceof NavigationEnd), startWith(null), debounceTime(0), map(() => this.title.getTitle()), shareReplay({ bufferSize: 1, refCount: true }));
572
593
  }
573
594
  /**
574
595
  * Gets the location object of the window.
575
- * @returns The location object of the window.
596
+ *
597
+ * @returns {Location} The location object of the window.
576
598
  */
577
599
  get location() {
578
600
  return this.nativeWindow.location;
579
601
  }
580
602
  /**
581
603
  * Determines if the browser is currently online.
604
+ *
582
605
  * @returns {boolean} True if the browser is online; otherwise, false.
583
606
  */
584
607
  isOnline() {
@@ -586,6 +609,7 @@ class WindowRef {
586
609
  }
587
610
  /**
588
611
  * Retrieves the browser's current language setting, falling back through several browser-specific properties.
612
+ *
589
613
  * @returns {string} The current language setting of the browser.
590
614
  */
591
615
  getLanguage() {
@@ -594,6 +618,7 @@ class WindowRef {
594
618
  }
595
619
  /**
596
620
  * Extracts the language code from the browser's current language setting.
621
+ *
597
622
  * @returns {string} The language code part of the browser's language setting.
598
623
  */
599
624
  getLanguageCode() {
@@ -609,6 +634,7 @@ class WindowRef {
609
634
  }
610
635
  /**
611
636
  * Opens a new browser tab or window and navigates to the specified URL.
637
+ *
612
638
  * @param {string | URL} [url] - The URL to open.
613
639
  * @param {string} [target] - The target window or tab.
614
640
  * @param {string} [features] - String that specifies the window features.
@@ -625,6 +651,7 @@ class WindowRef {
625
651
  }
626
652
  /**
627
653
  * Queries the DOM for an element associated with a specific Angular component type.
654
+ *
628
655
  * @template T The component type to query for.
629
656
  * @param {Type<T>} type - The Angular component type.
630
657
  * @returns {HTMLElement | null} The HTML element associated with the component, or null if not found.
@@ -635,6 +662,7 @@ class WindowRef {
635
662
  }
636
663
  /**
637
664
  * Retrieves the value of a CSS variable on a specified element.
665
+ *
638
666
  * @param {string} name - The name of the CSS variable.
639
667
  * @param {HTMLElement} [element=this.document.body] - The element from which to retrieve the CSS variable.
640
668
  * @returns {string} The value of the CSS variable.
@@ -644,6 +672,7 @@ class WindowRef {
644
672
  }
645
673
  /**
646
674
  * Extracts CSS color styles that match a specific filter from the document's stylesheets.
675
+ *
647
676
  * @param {string} filter - The filter to apply to CSS variable names.
648
677
  * @param {string} [selector=':root'] - The CSS selector to filter by.
649
678
  * @returns {Record<string, string>} A record containing the filtered CSS color styles.
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular.mjs","sources":["../../../../libs/angular/src/lib/controllers/controller.ts","../../../../libs/angular/src/lib/controllers/disabled.controller.ts","../../../../libs/angular/src/lib/controllers/readonly.controller.ts","../../../../libs/angular/src/lib/directives/click-outside.directive.ts","../../../../libs/angular/src/lib/directives/delegate-focus.directive.ts","../../../../libs/angular/src/lib/directives/with-disabled-state.directive.ts","../../../../libs/angular/src/lib/directives/with-tabindex.directive.ts","../../../../libs/angular/src/lib/core.module.ts","../../../../libs/angular/src/lib/models/environment.ts","../../../../libs/angular/src/lib/services/window-ref.ts","../../../../libs/angular/src/lib/tokens/identity-matcher.ts","../../../../libs/angular/src/lib/tokens/string-search-handler.ts","../../../../libs/angular/src/lib/tokens/stringify.ts","../../../../libs/angular/src/odx-angular.ts"],"sourcesContent":["import { ChangeDetectorRef, Directive, inject, OnChanges, OnDestroy } from '@angular/core';\nimport { isPresent, pluckFromArray } from '@odx/angular/utils';\nimport { EMPTY, merge, Observable, shareReplay, Subject, tap } from 'rxjs';\n\nfunction controllerChanges(controllers: Array<Controller | undefined | null>): Observable<void> {\n const changes$ = pluckFromArray(controllers.filter(isPresent), 'change$');\n\n return changes$.length > 0 ? merge(...changes$) : EMPTY;\n}\n\n/**\n * Sets up change detection for the provided controllers within the context of an Angular component or directive.\n * It listens for changes from the specified controllers and triggers Angular's change detection mechanism in response.\n *\n * @param {...Array<Controller | undefined | null>} controllers - The controllers to monitor for changes.\n * @returns {Observable<void>} An observable that emits whenever a change occurs in any of the provided controllers.\n */\nexport function detectControllerChanges(...controllers: Array<Controller | undefined | null>): Observable<void> {\n const changeDetector = inject(ChangeDetectorRef);\n\n return controllerChanges(controllers).pipe(tap(() => changeDetector.markForCheck()));\n}\n\n/**\n * An abstract base class representing a controller that can notify observers of changes in its state.\n * It provides lifecycle hooks for ngOnChanges and ngOnDestroy to manage its internal change observable.\n */\n@Directive()\nexport abstract class Controller implements OnChanges, OnDestroy {\n private readonly change$$ = new Subject<void>();\n\n /**\n * Represents an observable stream of changes.\n * @readonly\n */\n public readonly change$ = this.change$$.pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Sets up a controller instance to emit change events and trigger Angular change detection whenever\n * the controller's state changes. It is a utility method that can be used to initialize controllers\n * that are managed outside of Angular's DI system.\n *\n * @static\n * @param {Controller | null} controller - The controller instance to set up.\n * @param {ChangeDetectorRef} changeDetector - The Angular change detector reference to trigger change detection.\n * @returns {Controller | null} The same controller instance for chaining or null if the controller is not provided.\n */\n public static setup(controller: Controller | null, changeDetector: ChangeDetectorRef): Controller | null {\n controllerChanges([controller])\n .pipe(tap(() => changeDetector.markForCheck()))\n .subscribe();\n\n return controller;\n }\n\n public ngOnChanges(): void {\n this.triggerControllerChange();\n }\n\n public ngOnDestroy(): void {\n this.change$$.complete();\n }\n\n protected triggerControllerChange() {\n this.change$$.next();\n }\n}\n","import { booleanAttribute, ChangeDetectorRef, Directive, forwardRef, Host, inject, InjectionToken, Input, Optional, Provider } from '@angular/core';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nexport const DISABLED_CONTROLLER = new InjectionToken<DisabledController>('@odx/angular::DisabledWatchedController');\nexport const DISABLED_INTERNAL_CONTROLLER = new InjectionToken<DisabledController | null>('@odx/angular::DisabledController');\n\n/**\n * Directive that provides hierarchical disabled state management for Angular components or directives.\n * It allows for a disabled state to be inherited from parent components, facilitating the propagation\n * of disabled states down component trees. This is particularly useful in forms or complex component\n * structures where nested components need to respond to disabled states dynamically.\n *\n * The `DisabledController` works by injecting itself or a parent `DisabledController` instance to determine\n * the effective disabled state, taking into account both its own state and that of its parents.\n *\n * Usage:\n * Apply the `disabled` attribute, potentially bound to a component property, to use this directive.\n * The directive can be automatically provided to the component's children by calling the `connect`\n * static method in the component's providers array.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'app-custom-input',\n * templateUrl: './custom-input.component.html',\n * providers: [DisabledController.connect()],\n * standalone: true,\n * })\n * export class CustomInputComponent {\n * constructor(private disabledCtrl: DisabledController) {}\n * }\n * ```\n * ```html\n * <input [disabled]=\"disabledCtrl.disabled\" />\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[disabled]',\n providers: [\n {\n provide: DISABLED_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => DisabledController),\n },\n ],\n})\nexport class DisabledController extends Controller {\n private readonly parentController = inject(DISABLED_CONTROLLER, { optional: true, skipSelf: true });\n private isDisabled = false;\n\n /**\n * A reactive representation of the current effective disabled state, considering both\n * the controller's own state and that of its parent controllers.\n *\n * @emits {boolean} - The current disabled state.\n */\n public readonly isDisabled$ = this.change$.pipe(\n map(() => this.disabled),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Sets the disabled state of the current controller. If the state changes, updates the internal\n * flag.\n * @param {boolean} value - The new disabled state to be applied.\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n this.isDisabled = value;\n }\n\n public get disabled(): boolean {\n return this.isDisabled || !!this.parentController?.disabled;\n }\n\n /**\n * Retrieves an instance of the `DisabledController` class from the dependency injection container.\n * If the `DisabledController` is not registered in the container, it returns `null`.\n *\n * @returns {DisabledController | null} An instance of the `DisabledController` class or `null` if not found.\n */\n public static inject(): DisabledController | null {\n return inject(DISABLED_CONTROLLER, { optional: true });\n }\n\n /**\n * Static method to facilitate the injection of the `DisabledController` within Angular's DI system.\n * This method provides a way to connect a component with its closest `DisabledController` parent,\n * allowing for disabled state inheritance.\n *\n * @returns {Provider[]} An array of providers to enable disabled state management within a component.\n */\n public static connect(): Provider[] {\n return [\n {\n provide: DISABLED_INTERNAL_CONTROLLER,\n useFactory: (hostController: DisabledController | null) => hostController ?? new DisabledController(),\n deps: [[new Optional(), new Host(), DisabledController]],\n },\n {\n provide: DISABLED_CONTROLLER,\n useFactory: Controller.setup,\n deps: [[new Optional(), new Host(), DISABLED_INTERNAL_CONTROLLER], ChangeDetectorRef],\n },\n ];\n }\n\n /**\n * Sets the disabled state of the current controller and triggers change detection if the state changes.\n *\n * @param {boolean} state - The new disabled state to be applied.\n */\n public setDisabledState(state: boolean): void {\n if (this.disabled !== state) {\n this.disabled = state;\n this.ngOnChanges();\n }\n }\n}\n","import { booleanAttribute, ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, inject, InjectionToken, Input, Optional, Provider } from '@angular/core';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nconst ELEMENTS_WITH_READONLY_ATTRIBUTE = {\n input: true,\n textarea: true,\n select: true,\n} as Record<string, boolean>;\n\nexport const READONLY_CONTROLLER = new InjectionToken<ReadonlyController>('@odx/angular::ReadonlyWatchedController');\nexport const READONLY_INTERNAL_CONTROLLER = new InjectionToken<ReadonlyController | null>('@odx/angular::ReadonlyController');\n\n/**\n * Directive to manage and propagate the readonly state within Angular components or directives,\n * particularly useful for form elements like input, textarea, and select. It supports hierarchical\n * readonly state management, allowing a parent component's readonly state to be inherited by its children.\n *\n * The directive leverages Angular's dependency injection system to access parent readonly controllers,\n * enabling a cascading readonly state. This is beneficial in scenarios where a form or a part of it\n * should become readonly based on certain conditions.\n *\n * Usage:\n * Apply the `readonly` attribute, potentially bound to a component property, to use this directive.\n * The directive can automatically provide itself to the component's children by calling the `connect`\n * static method in the component's providers array.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'app-custom-input',\n * templateUrl: './custom-input.component.html',\n * providers: [ReadonlyController.connect()],\n * standalone: true,\n * })\n * export class CustomInputComponent {\n * constructor(private readonlyCtrl: ReadonlyController) {}\n * }\n * ```\n *\n * Template for CustomInputComponent with conditional readonly state:\n * ```html\n * <input [readonly]=\"readonlyCtrl.readonly\" />\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[readonly]',\n providers: [\n {\n provide: READONLY_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => ReadonlyController),\n },\n ],\n host: {\n '[attr.readonly]': 'hasReadonlyAttribute || null',\n },\n})\nexport class ReadonlyController extends Controller {\n private readonly parentController = inject(READONLY_CONTROLLER, { optional: true, skipSelf: true });\n private readonly nodeName: string;\n private isReadonly = false;\n\n protected hasReadonlyAttribute = false;\n\n /**\n * An observable that emits the current value of the `isReadonly` property whenever it changes.\n * The emitted values are distinct and replayed to new subscribers.\n *\n * @emits {boolean} The current readonly state of the controller.\n */\n public readonly isReadonly$ = this.change$.pipe(\n map(() => this.isReadonly),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Sets the readonly state of the current controller. If the state changes, updates the internal\n * flag that controls the rendering of the `readonly` attribute in the host element.\n *\n * @param {boolean} value - The new readonly state to be applied.\n */\n @Input({ transform: booleanAttribute })\n public set readonly(value: boolean) {\n if (this.isReadonly === value) return;\n this.isReadonly = value;\n this.hasReadonlyAttribute = this.isReadonly && ELEMENTS_WITH_READONLY_ATTRIBUTE[this.nodeName];\n }\n public get readonly(): boolean {\n return this.isReadonly || !!this.parentController?.readonly;\n }\n\n constructor(element: ElementRef<HTMLElement> | null) {\n super();\n this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';\n }\n\n /**\n * Returns an instance of the ReadonlyController or null if it cannot be found.\n *\n * @returns {ReadonlyController | null} An instance of the ReadonlyController or null.\n */\n public static inject(): ReadonlyController | null {\n return inject(READONLY_CONTROLLER, { optional: true });\n }\n\n /**\n * Static method to facilitate the injection of the `ReadonlyController` within Angular's DI system.\n * This method provides a way to connect a component with its closest `ReadonlyController` parent,\n * allowing for readonly state inheritance.\n *\n * @returns {Provider} An array of providers to enable readonly state management within a component.\n */\n public static connect(): Provider {\n return [\n {\n provide: READONLY_INTERNAL_CONTROLLER,\n useFactory: (hostController: ReadonlyController | null, elementRef: ElementRef | null) => hostController ?? new ReadonlyController(elementRef),\n deps: [\n [new Optional(), new Host(), ReadonlyController],\n [new Optional(), ElementRef],\n ],\n },\n {\n provide: READONLY_CONTROLLER,\n useFactory: Controller.setup,\n deps: [[new Optional(), new Host(), READONLY_INTERNAL_CONTROLLER], ChangeDetectorRef],\n },\n ];\n }\n}\n","import { booleanAttribute, Directive, EventEmitter, inject, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { deferFn, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { debounceTime, NEVER, Observable, Subscription, switchMap, tap } from 'rxjs';\n\n/**\n * Directive to detect clicks outside of an element. When active, it listens for clicks outside\n * the host element and emits an event through the `odxClickOutside` EventEmitter. This is useful\n * for handling UI logic that depends on outside clicks, such as closing a dropdown or modal\n * when the user clicks elsewhere on the page.\n *\n * Apply `odxClickOutside` to an element and bind an event handler to react to outside clicks.\n * Optionally, use `[odxClickOutsideActive]=\"condition\"` to enable or disable the detection dynamically.\n *\n * @example\n * ```html\n * <div\n * odxClickOutside\n * (odxClickOutside)=\"handleClickOutside()\"\n * [odxClickOutsideActive]=\"isDropdownOpen\">\n * <!-- Dropdown content -->\n * </div>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[odxClickOutside]',\n})\nexport class ClickOutsideDirective implements OnChanges, OnInit, OnDestroy {\n private listener?: Subscription;\n private readonly element = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly onOutsideClick$ = this.registerEventHandler('mousedown').pipe(\n switchMap((event) => {\n if (!this.odxClickOutsideActive) return NEVER;\n const hostElement = this.element.nativeElement;\n const targetElement = event.target as Element;\n const clickedOutside = hostElement.isConnected && targetElement.isConnected && !hostElement.contains(targetElement);\n return this.registerEventHandler('mouseup').pipe(\n debounceTime(0),\n tap(() => clickedOutside && this.odxClickOutside.emit(event)),\n );\n }),\n );\n\n /**\n * Controls whether the outside click detection is active. When `true`, the directive listens for outside clicks.\n *\n * @type {boolean}\n */\n @Input({ transform: booleanAttribute })\n public odxClickOutsideActive = true;\n\n /**\n * EventEmitter that emits the native Event object when an outside click is detected.\n *\n * @emits {Event}\n */\n @Output()\n public readonly odxClickOutside = new EventEmitter<Event>();\n\n public ngOnInit(): void {\n if (this.odxClickOutsideActive) {\n this.registerHandler();\n }\n }\n\n public ngOnChanges(changes: NgChanges<ClickOutsideDirective>): void {\n if (hasChanged(changes, 'odxClickOutsideActive', true)) {\n if (changes.odxClickOutsideActive?.currentValue) {\n this.registerHandler();\n } else {\n this.destroy();\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n private destroy() {\n if (this.listener) {\n this.listener.unsubscribe();\n this.listener = undefined;\n }\n }\n\n private registerHandler() {\n deferFn(() => {\n this.listener = this.onOutsideClick$.subscribe();\n });\n }\n\n private registerEventHandler<T extends Event>(eventName: string): Observable<T> {\n return new Observable<T>((subscriber) => {\n const listener = this.renderer.listen('document', eventName, (event: T) => {\n subscriber.next(event);\n });\n subscriber.add(listener);\n });\n }\n}\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\n\n/**\n * A directive to manage focus within components. It emits events when the host component is focused,\n * and dynamically updates the `tabindex` attribute to control focusability. This directive is particularly\n * useful for custom components that require explicit focus management, such as custom input components\n * or complex interactive components.\n *\n * The directive ensures that the component can be focused by setting `tabindex=\"0\"`, making it reachable\n * via keyboard navigation. When the component gains focus (`focusin`), it becomes non-focusable (`tabindex=\"-1\"`)\n * to manage focus delegation internally. It restores its focusability (`tabindex=\"0\"`) when losing focus (`focusout`),\n * allowing it to be focused again in the future.\n */\n@Directive({\n standalone: true,\n host: {\n '[attr.tabindex]': 'tabindex',\n },\n})\nexport class DelegateFocusDirective {\n protected tabindex = 0;\n\n /**\n * Emits an event when the element is focused.\n */\n @Output()\n public focused = new EventEmitter<void>();\n\n @HostListener('focus')\n protected handleFocus(): void {\n this.focused.next();\n }\n\n @HostListener('focusin')\n protected handleFocusIn(): void {\n this.tabindex = -1;\n }\n\n @HostListener('focusout')\n protected handleFocusOut(): void {\n this.tabindex = 0;\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { booleanToOptionalAttributeString } from '@odx/angular/utils';\nimport { DisabledController } from '../controllers';\n\nconst ELEMENTS_WITH_DISABLED_ATTRIBUTE = {\n button: true,\n fieldset: true,\n input: true,\n optgroup: true,\n option: true,\n select: true,\n textarea: true,\n} as Record<string, boolean>;\n\n@Directive({\n standalone: true,\n providers: [DisabledController.connect()],\n host: {\n '[class.is-disabled]': 'isDisabled',\n '[attr.aria-disabled]': 'ariaDisabled',\n '[attr.disabled]': 'hasDisabledAttribute && isDisabled || null',\n },\n})\nexport class WithDisabledState {\n protected readonly hasAriaRole: boolean;\n protected readonly hasDisabledAttribute: boolean;\n protected readonly disabledController = DisabledController.inject();\n\n protected get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n public get ariaDisabled(): string | null {\n return booleanToOptionalAttributeString(this.hasAriaRole && this.isDisabled);\n }\n\n constructor(element: ElementRef<HTMLElement>) {\n this.hasDisabledAttribute = !!ELEMENTS_WITH_DISABLED_ATTRIBUTE[element.nativeElement.nodeName.toLowerCase() ?? ''];\n this.hasAriaRole = element.nativeElement.hasAttribute('role');\n }\n}\n","import { Directive, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { reactiveAttributeBinding } from '@odx/angular/utils';\nimport { combineLatest, distinctUntilChanged, map, of, shareReplay, startWith } from 'rxjs';\nimport { DisabledController } from '../controllers';\n\n@Directive({ standalone: true })\nexport class WithTabIndex {\n private readonly isDisabled$ = DisabledController.inject()?.isDisabled$.pipe(startWith(false)) ?? of(false);\n private readonly tabindex = signal(0);\n private readonly tabindex$ = combineLatest([toObservable(this.tabindex), this.isDisabled$]).pipe(\n map(([tabindex, isDisabled]) => (isDisabled ? -1 : tabindex)),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n constructor() {\n reactiveAttributeBinding(this.tabindex$, 'tabindex');\n }\n\n public setTabindex(value: number | null) {\n this.tabindex.set(value ?? 0);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LetDirective } from '@ngrx/component';\nimport { DisabledController, ReadonlyController } from './controllers';\nimport { ClickOutsideDirective } from './directives';\n\nconst controllers = [DisabledController, ReadonlyController];\nconst modules = [ClickOutsideDirective, LetDirective];\n\n@NgModule({\n imports: [...controllers, ...modules],\n exports: [CommonModule, ...controllers, ...modules],\n})\nexport class CoreModule {}\n","export type Environment = typeof Environment[keyof typeof Environment];\n\nexport const Environment = {\n DEV: 'dev',\n STAGE: 'stage',\n PROD: 'prod'\n} as const;\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, reflectComponentType, Type } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { fromEvents } from '@odx/angular/rxjs';\nimport { getLanguageCode } from '@odx/angular/utils';\nimport { debounceTime, distinctUntilChanged, EMPTY, filter, map, shareReplay, startWith } from 'rxjs';\n\n/**\n * A service that wraps window and document functionalities, providing Angular-friendly ways to interact with the browser's window object,\n * manage the document and its title, listen to online/offline events, and perform other browser-related operations.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowRef {\n private readonly title = inject(Title);\n\n /**\n * Accesses the document object, ensuring Angular compatibility and potential SSR friendliness.\n */\n public readonly document = inject(DOCUMENT);\n\n /**\n * Retrieves the native window object, with a fallback to the global window if necessary.\n * This approach helps ensure compatibility with Angular's SSR features.\n */\n public readonly nativeWindow = this.document.defaultView ?? window;\n\n /**\n * An observable that emits the online status of the browser, updating when the browser transitions between online and offline states.\n */\n public readonly isOnline$ = fromEvents(this.nativeWindow, 'offline', 'online').pipe(\n startWith(null),\n map(() => this.isOnline()),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * An observable that emits the current page title upon navigation ends, useful for updating document titles in SPA applications.\n */\n public readonly pageTitle$ = (inject(Router, { optional: true })?.events ?? EMPTY).pipe(\n filter((event) => event instanceof NavigationEnd),\n startWith(null),\n debounceTime(0),\n map(() => this.title.getTitle()),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Gets the location object of the window.\n * @returns The location object of the window.\n */\n public get location(): Location {\n return this.nativeWindow.location;\n }\n\n /**\n * Determines if the browser is currently online.\n * @returns {boolean} True if the browser is online; otherwise, false.\n */\n public isOnline(): boolean {\n return this.nativeWindow.navigator.onLine;\n }\n\n /**\n * Retrieves the browser's current language setting, falling back through several browser-specific properties.\n * @returns {string} The current language setting of the browser.\n */\n public getLanguage(): string {\n const { language, languages, userLanguage } = this.nativeWindow.navigator as Navigator & { userLanguage?: string };\n\n return languages?.[0] ?? userLanguage ?? language;\n }\n\n /**\n * Extracts the language code from the browser's current language setting.\n * @returns {string} The language code part of the browser's language setting.\n */\n public getLanguageCode(): string {\n return getLanguageCode(this.getLanguage());\n }\n\n /**\n * Returns the origin of the current window location.\n *\n * @returns The origin of the current window location.\n */\n public getOrigin(): string {\n return this.location.origin;\n }\n\n /**\n * Opens a new browser tab or window and navigates to the specified URL.\n * @param {string | URL} [url] - The URL to open.\n * @param {string} [target] - The target window or tab.\n * @param {string} [features] - String that specifies the window features.\n * @returns {WindowProxy | null} A reference to the newly opened window or null if the call failed.\n */\n public openPage(url?: string | URL, target?: string, features?: string): WindowProxy | null {\n return this.nativeWindow.open(url, target, features);\n }\n\n /**\n * Reloads the current page.\n */\n public reloadPage(): void {\n return this.location.reload();\n }\n\n /**\n * Queries the DOM for an element associated with a specific Angular component type.\n * @template T The component type to query for.\n * @param {Type<T>} type - The Angular component type.\n * @returns {HTMLElement | null} The HTML element associated with the component, or null if not found.\n */\n public queryByComponent<T>(type: Type<T>): HTMLElement | null {\n const componentType = reflectComponentType(type);\n\n return componentType ? this.nativeWindow.document.querySelector(componentType.selector) : null;\n }\n\n /**\n * Retrieves the value of a CSS variable on a specified element.\n * @param {string} name - The name of the CSS variable.\n * @param {HTMLElement} [element=this.document.body] - The element from which to retrieve the CSS variable.\n * @returns {string} The value of the CSS variable.\n */\n public getCSSVariable(name: string, element: HTMLElement = this.document.body): string {\n return this.nativeWindow.getComputedStyle(element).getPropertyValue(`--${name}`).trim();\n }\n\n /**\n * Extracts CSS color styles that match a specific filter from the document's stylesheets.\n * @param {string} filter - The filter to apply to CSS variable names.\n * @param {string} [selector=':root'] - The CSS selector to filter by.\n * @returns {Record<string, string>} A record containing the filtered CSS color styles.\n */\n public getCSSColorStyles(filter: string, selector = ':root'): Record<string, string> {\n const selectorFilter = new RegExp(`^${selector}$`);\n const nameFilter = new RegExp(`^--${filter}`);\n const arr = Array.from(this.document.styleSheets)\n .filter(({ href }) => !href || href.startsWith(this.nativeWindow.location.origin))\n .map(({ cssRules }) => Array.from(cssRules)[0])\n .filter((rule) => rule instanceof CSSStyleRule && selectorFilter.test(rule.selectorText.trim()))\n .reduce((colors: Record<string, string>, rule) => {\n Object.values((rule as CSSStyleRule).style)\n .map((style) => style.toString().trim())\n .filter((name) => Boolean(name) && nameFilter.test(name))\n .forEach((name) => {\n const key = name.replace('--', '');\n colors[key] = this.getCSSVariable(key);\n });\n return colors;\n }, {});\n return arr;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * A function type that defines the logic to compare two items for identity.\n * It should return `true` if the items are considered identical, otherwise `false`.\n *\n * @template T The type of the items to be compared.\n * @param {T} item1 The first item to compare.\n * @param {T} item2 The second item to compare.\n * @returns {boolean} `true` if the items are identical, otherwise `false`.\n *\n * @example\n * ```ts\n * // A simple identity matcher for number types\n * const numberMatcher: IdentityMatcher<number> = (n1, n2) => n1 === n2;\n * console.log(numberMatcher(1, 1)); // Outputs: true\n * console.log(numberMatcher(1, 2)); // Outputs: false\n * ```\n */\nexport type IdentityMatcher<T> = (item1: T, item2: T) => boolean;\n\nconst ODX_DEFAULT_IDENTITY_MATCHER: IdentityMatcher<unknown> = (item1, item2) => item1 === item2;\n\n/**\n * An Angular `InjectionToken` for the `IdentityMatcher` function, allowing for the provision\n * and injection of custom identity matching logic throughout the application. The token is\n * provided with a default factory function that returns the `ODX_DEFAULT_IDENTITY_MATCHER`,\n * which can be overridden with custom logic as needed.\n *\n * @type {InjectionToken<IdentityMatcher<unknown>>}\n *\n * @example\n * ```ts\n * // Providing a custom identity matcher in an Angular module\n * @NgModule({\n * providers: [\n * { provide: ODX_IDENTITY_MATCHER, useValue: (item1, item2) => item1.id === item2.id }\n * ]\n * })\n * class AppModule {}\n *\n * // Injecting and using the custom provided identity matcher\n * constructor(@Inject(ODX_IDENTITY_MATCHER) private identityMatcher: IdentityMatcher<MyType>) {\n * console.log(this.identityMatcher({ id: 1 }, { id: 1 })); // Depends on the custom logic provided\n * }\n * ```\n */\nexport const ODX_IDENTITY_MATCHER = new InjectionToken<IdentityMatcher<unknown>>('@odx/angular::StringHandler', {\n providedIn: 'root',\n factory: () => ODX_DEFAULT_IDENTITY_MATCHER,\n});\n","import { InjectionToken } from '@angular/core';\n\n/**\n * A function type that defines the logic to search within a string item using a query string.\n * It should return `true` if the item matches the query according to the implemented logic, otherwise `false`.\n *\n * @param {string} item - The string item to search within.\n * @param {string} query - The query string to search for.\n * @returns {boolean} `true` if the query matches the item, otherwise `false`.\n *\n * @example\n * ```ts\n * // A simple case-insensitive search\n * const searchHandler: StringSearchHandler = (item, query) => item.toLowerCase().includes(query.toLowerCase());\n * console.log(searchHandler('Hello World', 'world')); // Outputs: true\n * ```\n */\nexport type StringSearchHandler = (item: string, query: string) => boolean;\n\nconst ODX_DEFAULT_STRING_SEARCH_HANDLER: StringSearchHandler = (item, query) => {\n return item.toLocaleLowerCase().includes(query.toLocaleLowerCase());\n};\n\n/**\n * An Angular `InjectionToken` for the `StringSearchHandler` function, allowing for the provision\n * and injection of custom string search logic throughout the application. This token is provided with\n * a default factory function that returns the `ODX_DEFAULT_STRING_SEARCH_HANDLER`, which can be overridden\n * with custom logic as needed.\n *\n * @type {InjectionToken<StringSearchHandler>}\n *\n * @example\n * ```ts\n * // Providing a custom string search handler in an Angular module\n * @NgModule({\n * providers: [\n * { provide: ODX_STRING_SEARCH_HANDLER, useValue: (item, query) => item.startsWith(query) }\n * ]\n * })\n * class AppModule {}\n *\n * // Injecting and using the custom provided string search handler\n * constructor(@Inject(ODX_STRING_SEARCH_HANDLER) private searchHandler: StringSearchHandler) {\n * console.log(this.searchHandler('Angular', 'A')); // Depends on the custom logic provided\n * }\n * ```\n */\nexport const ODX_STRING_SEARCH_HANDLER = new InjectionToken<StringSearchHandler>('@odx/angular::StringHandler', {\n providedIn: 'root',\n factory: () => ODX_DEFAULT_STRING_SEARCH_HANDLER,\n});\n","import { InjectionToken } from '@angular/core';\nimport { isPresent } from '@odx/angular/utils';\n\n/**\n * A function type that defines the logic to convert an item of any type into a string.\n * The function should handle various types gracefully, returning a meaningful string representation\n * for each. If the item is not present (null or undefined), an empty string should be returned.\n *\n * @template T The type of the item to be stringified.\n * @param {T} item - The item to stringify.\n * @returns {string} The string representation of the item.\n *\n * @example\n * ```ts\n * // A simple stringify function that handles null and undefined\n * const stringify: StringifyFn<unknown> = (item) => (isPresent(item) ? String(item) : '');\n * console.log(stringify(123)); // Outputs: \"123\"\n * console.log(stringify(null)); // Outputs: \"\"\n * ```\n */\nexport type StringifyFn<T> = (item: T) => string;\n\nconst ODX_DEFAULT_STRINGIFY: StringifyFn<unknown> = (item) => (isPresent(item) ? String(item) : '');\n\n/**\n * An Angular `InjectionToken` for the `StringifyFn` function, allowing the injection of custom\n * stringification logic throughout an application. By default, it is provided with a factory\n * function that returns `ODX_DEFAULT_STRINGIFY`. This setup permits easy customization of\n * how items are converted to strings, facilitating different stringification strategies\n * for various application needs.\n *\n * @type {InjectionToken<StringifyFn<unknown>>}\n *\n * @example\n * ```ts\n * // Providing a custom stringify function in an Angular module\n * @NgModule({\n * providers: [\n * { provide: ODX_STRINGIFY, useValue: (item) => JSON.stringify(item) }\n * ]\n * })\n * class AppModule {}\n *\n * // Injecting and using the custom provided stringify function\n * constructor(@Inject(ODX_STRINGIFY) private stringify: StringifyFn<unknown>) {\n * console.log(this.stringify({ key: 'value' })); // Outputs: '{\"key\":\"value\"}'\n * }\n * ```\n */\nexport const ODX_STRINGIFY = new InjectionToken<StringifyFn<unknown>>('@odx/angular::Stringify', {\n providedIn: 'root',\n factory: () => ODX_DEFAULT_STRINGIFY,\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular.mjs","sources":["../../../../libs/angular/src/lib/controllers/controller.ts","../../../../libs/angular/src/lib/controllers/disabled.controller.ts","../../../../libs/angular/src/lib/controllers/readonly.controller.ts","../../../../libs/angular/src/lib/directives/click-outside.directive.ts","../../../../libs/angular/src/lib/directives/delegate-focus.directive.ts","../../../../libs/angular/src/lib/directives/with-disabled-state.directive.ts","../../../../libs/angular/src/lib/directives/with-tabindex.directive.ts","../../../../libs/angular/src/lib/core.module.ts","../../../../libs/angular/src/lib/models/environment.ts","../../../../libs/angular/src/lib/services/window-ref.ts","../../../../libs/angular/src/lib/tokens/identity-matcher.ts","../../../../libs/angular/src/lib/tokens/string-search-handler.ts","../../../../libs/angular/src/lib/tokens/stringify.ts","../../../../libs/angular/src/odx-angular.ts"],"sourcesContent":["import { ChangeDetectorRef, Directive, inject, OnChanges, OnDestroy } from '@angular/core';\nimport { isPresent, pluckFromArray } from '@odx/angular/utils';\nimport { EMPTY, merge, Observable, shareReplay, Subject, tap } from 'rxjs';\n\nfunction controllerChanges(controllers: Array<Controller | undefined | null>): Observable<void> {\n const changes$ = pluckFromArray(controllers.filter(isPresent), 'change$');\n\n return changes$.length > 0 ? merge(...changes$) : EMPTY;\n}\n\n/**\n * Sets up change detection for the provided controllers within the context of an Angular component or directive.\n * It listens for changes from the specified controllers and triggers Angular's change detection mechanism in response.\n *\n * @param {...Array<Controller | undefined | null>} controllers - The controllers to monitor for changes.\n * @returns {Observable<void>} An observable that emits whenever a change occurs in any of the provided controllers.\n */\nexport function detectControllerChanges(...controllers: Array<Controller | undefined | null>): Observable<void> {\n const changeDetector = inject(ChangeDetectorRef);\n\n return controllerChanges(controllers).pipe(tap(() => changeDetector.markForCheck()));\n}\n\n/**\n * An abstract base class representing a controller that can notify observers of changes in its state.\n * It provides lifecycle hooks for ngOnChanges and ngOnDestroy to manage its internal change observable.\n */\n@Directive()\nexport abstract class Controller implements OnChanges, OnDestroy {\n private readonly change$$ = new Subject<void>();\n\n /**\n * Represents an observable stream of changes.\n * @readonly\n */\n public readonly change$ = this.change$$.pipe(shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Sets up a controller instance to emit change events and trigger Angular change detection whenever\n * the controller's state changes. It is a utility method that can be used to initialize controllers\n * that are managed outside of Angular's DI system.\n *\n * @static\n * @param {Controller | null} controller - The controller instance to set up.\n * @param {ChangeDetectorRef} changeDetector - The Angular change detector reference to trigger change detection.\n * @returns {Controller | null} The same controller instance for chaining or null if the controller is not provided.\n */\n public static setup(controller: Controller | null, changeDetector: ChangeDetectorRef): Controller | null {\n controllerChanges([controller])\n .pipe(tap(() => changeDetector.markForCheck()))\n .subscribe();\n\n return controller;\n }\n\n public ngOnChanges(): void {\n this.triggerControllerChange();\n }\n\n public ngOnDestroy(): void {\n this.change$$.complete();\n }\n\n protected triggerControllerChange() {\n this.change$$.next();\n }\n}\n","import { booleanAttribute, ChangeDetectorRef, Directive, forwardRef, Host, inject, InjectionToken, Input, Optional, Provider } from '@angular/core';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nexport const DISABLED_CONTROLLER = new InjectionToken<DisabledController>('@odx/angular::DisabledWatchedController');\nexport const DISABLED_INTERNAL_CONTROLLER = new InjectionToken<DisabledController | null>('@odx/angular::DisabledController');\n\n/**\n * Directive that provides hierarchical disabled state management for Angular components or directives.\n * It allows for a disabled state to be inherited from parent components, facilitating the propagation\n * of disabled states down component trees. This is particularly useful in forms or complex component\n * structures where nested components need to respond to disabled states dynamically.\n *\n * The `DisabledController` works by injecting itself or a parent `DisabledController` instance to determine\n * the effective disabled state, taking into account both its own state and that of its parents.\n *\n * Usage:\n * Apply the `disabled` attribute, potentially bound to a component property, to use this directive.\n * The directive can be automatically provided to the component's children by calling the `connect`\n * static method in the component's providers array.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'app-custom-input',\n * templateUrl: './custom-input.component.html',\n * providers: [DisabledController.connect()],\n * standalone: true,\n * })\n * export class CustomInputComponent {\n * constructor(private disabledCtrl: DisabledController) {}\n * }\n * ```\n * ```html\n * <input [disabled]=\"disabledCtrl.disabled\" />\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[disabled]',\n providers: [\n {\n provide: DISABLED_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => DisabledController),\n },\n ],\n})\nexport class DisabledController extends Controller {\n private readonly parentController = inject(DISABLED_CONTROLLER, { optional: true, skipSelf: true });\n private isDisabled = false;\n\n /**\n * A reactive representation of the current effective disabled state, considering both\n * the controller's own state and that of its parent controllers.\n *\n * @emits {boolean} - The current disabled state.\n */\n public readonly isDisabled$ = this.change$.pipe(\n map(() => this.disabled),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Sets the disabled state of the current controller. If the state changes, updates the internal\n * flag.\n *\n * @param {boolean} value - The new disabled state to be applied.\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n this.isDisabled = value;\n }\n\n /**\n * Gets a value indicating whether the controller is disabled.\n *\n * @returns {boolean} - `true` if the controller is disabled, `false` otherwise.\n */\n public get disabled(): boolean {\n return this.isDisabled || !!this.parentController?.disabled;\n }\n\n /**\n * Retrieves an instance of the `DisabledController` class from the dependency injection container.\n * If the `DisabledController` is not registered in the container, it returns `null`.\n *\n * @static\n * @returns {DisabledController | null} An instance of the `DisabledController` class or `null` if not found.\n */\n public static inject(): DisabledController | null {\n return inject(DISABLED_CONTROLLER, { optional: true });\n }\n\n /**\n * Static method to facilitate the injection of the `DisabledController` within Angular's DI system.\n * This method provides a way to connect a component with its closest `DisabledController` parent,\n * allowing for disabled state inheritance.\n *\n * @static\n * @returns {Provider[]} An array of providers to enable disabled state management within a component.\n */\n public static connect(): Provider[] {\n return [\n {\n provide: DISABLED_INTERNAL_CONTROLLER,\n useFactory: (hostController: DisabledController | null) => hostController ?? new DisabledController(),\n deps: [[new Optional(), new Host(), DisabledController]],\n },\n {\n provide: DISABLED_CONTROLLER,\n useFactory: Controller.setup,\n deps: [[new Optional(), new Host(), DISABLED_INTERNAL_CONTROLLER], ChangeDetectorRef],\n },\n ];\n }\n\n /**\n * Sets the disabled state of the current controller and triggers change detection if the state changes.\n *\n * @param {boolean} state - The new disabled state to be applied.\n */\n public setDisabledState(state: boolean): void {\n if (this.disabled !== state) {\n this.disabled = state;\n this.ngOnChanges();\n }\n }\n}\n","import { booleanAttribute, ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, inject, InjectionToken, Input, Optional, Provider } from '@angular/core';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { Controller } from './controller';\n\nconst ELEMENTS_WITH_READONLY_ATTRIBUTE = {\n input: true,\n textarea: true,\n select: true,\n} as Record<string, boolean>;\n\nexport const READONLY_CONTROLLER = new InjectionToken<ReadonlyController>('@odx/angular::ReadonlyWatchedController');\nexport const READONLY_INTERNAL_CONTROLLER = new InjectionToken<ReadonlyController | null>('@odx/angular::ReadonlyController');\n\n/**\n * Directive to manage and propagate the readonly state within Angular components or directives,\n * particularly useful for form elements like input, textarea, and select. It supports hierarchical\n * readonly state management, allowing a parent component's readonly state to be inherited by its children.\n *\n * The directive leverages Angular's dependency injection system to access parent readonly controllers,\n * enabling a cascading readonly state. This is beneficial in scenarios where a form or a part of it\n * should become readonly based on certain conditions.\n *\n * Usage:\n * Apply the `readonly` attribute, potentially bound to a component property, to use this directive.\n * The directive can automatically provide itself to the component's children by calling the `connect`\n * static method in the component's providers array.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'app-custom-input',\n * templateUrl: './custom-input.component.html',\n * providers: [ReadonlyController.connect()],\n * standalone: true,\n * })\n * export class CustomInputComponent {\n * constructor(private readonlyCtrl: ReadonlyController) {}\n * }\n * ```\n *\n * Template for CustomInputComponent with conditional readonly state:\n * ```html\n * <input [readonly]=\"readonlyCtrl.readonly\" />\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[readonly]',\n providers: [\n {\n provide: READONLY_INTERNAL_CONTROLLER,\n useExisting: forwardRef(() => ReadonlyController),\n },\n ],\n host: {\n '[attr.readonly]': 'hasReadonlyAttribute || null',\n },\n})\nexport class ReadonlyController extends Controller {\n private readonly parentController = inject(READONLY_CONTROLLER, { optional: true, skipSelf: true });\n private readonly nodeName: string;\n private isReadonly = false;\n\n protected hasReadonlyAttribute = false;\n\n /**\n * An observable that emits the current value of the `isReadonly` property whenever it changes.\n * The emitted values are distinct and replayed to new subscribers.\n *\n * @emits {boolean} The current readonly state of the controller.\n */\n public readonly isReadonly$ = this.change$.pipe(\n map(() => this.isReadonly),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Sets the readonly state of the current controller. If the state changes, updates the internal\n * flag that controls the rendering of the `readonly` attribute in the host element.\n *\n * @param {boolean} value - The new readonly state to be applied.\n */\n @Input({ transform: booleanAttribute })\n public set readonly(value: boolean) {\n if (this.isReadonly === value) return;\n this.isReadonly = value;\n this.hasReadonlyAttribute = this.isReadonly && ELEMENTS_WITH_READONLY_ATTRIBUTE[this.nodeName];\n }\n public get readonly(): boolean {\n return this.isReadonly || !!this.parentController?.readonly;\n }\n\n constructor(element: ElementRef<HTMLElement> | null) {\n super();\n this.nodeName = element?.nativeElement.nodeName.toLowerCase() ?? '';\n }\n\n /**\n * Returns an instance of the ReadonlyController or null if it cannot be found.\n *\n * @static\n * @returns {ReadonlyController | null} An instance of the ReadonlyController or null.\n */\n public static inject(): ReadonlyController | null {\n return inject(READONLY_CONTROLLER, { optional: true });\n }\n\n /**\n * Static method to facilitate the injection of the `ReadonlyController` within Angular's DI system.\n * This method provides a way to connect a component with its closest `ReadonlyController` parent,\n * allowing for readonly state inheritance.\n *\n * @static\n * @returns {Provider} An array of providers to enable readonly state management within a component.\n */\n public static connect(): Provider {\n return [\n {\n provide: READONLY_INTERNAL_CONTROLLER,\n useFactory: (hostController: ReadonlyController | null, elementRef: ElementRef | null) => hostController ?? new ReadonlyController(elementRef),\n deps: [\n [new Optional(), new Host(), ReadonlyController],\n [new Optional(), ElementRef],\n ],\n },\n {\n provide: READONLY_CONTROLLER,\n useFactory: Controller.setup,\n deps: [[new Optional(), new Host(), READONLY_INTERNAL_CONTROLLER], ChangeDetectorRef],\n },\n ];\n }\n}\n","import { booleanAttribute, Directive, EventEmitter, inject, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { deferFn, hasChanged, injectElement, NgChanges } from '@odx/angular/utils';\nimport { debounceTime, NEVER, Observable, Subscription, switchMap, tap } from 'rxjs';\n\n/**\n * Directive to detect clicks outside of an element. When active, it listens for clicks outside\n * the host element and emits an event through the `odxClickOutside` EventEmitter. This is useful\n * for handling UI logic that depends on outside clicks, such as closing a dropdown or modal\n * when the user clicks elsewhere on the page.\n *\n * Apply `odxClickOutside` to an element and bind an event handler to react to outside clicks.\n * Optionally, use `[odxClickOutsideActive]=\"condition\"` to enable or disable the detection dynamically.\n *\n * @example\n * ```html\n * <div\n * odxClickOutside\n * (odxClickOutside)=\"handleClickOutside()\"\n * [odxClickOutsideActive]=\"isDropdownOpen\">\n * <!-- Dropdown content -->\n * </div>\n * ```\n */\n@Directive({\n standalone: true,\n selector: '[odxClickOutside]',\n})\nexport class ClickOutsideDirective implements OnChanges, OnInit, OnDestroy {\n private listener?: Subscription;\n private readonly element = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly onOutsideClick$ = this.registerEventHandler('mousedown').pipe(\n switchMap((event) => {\n if (!this.odxClickOutsideActive) return NEVER;\n const hostElement = this.element.nativeElement;\n const targetElement = event.target as Element;\n const clickedOutside = hostElement.isConnected && targetElement.isConnected && !hostElement.contains(targetElement);\n return this.registerEventHandler('mouseup').pipe(\n debounceTime(0),\n tap(() => clickedOutside && this.odxClickOutside.emit(event)),\n );\n }),\n );\n\n /**\n * Controls whether the outside click detection is active. When `true`, the directive listens for outside clicks.\n *\n * @type {boolean}\n * @default true\n */\n @Input({ transform: booleanAttribute })\n public odxClickOutsideActive = true;\n\n /**\n * EventEmitter that emits the native Event object when an outside click is detected.\n *\n * @emits {Event}\n */\n @Output()\n public readonly odxClickOutside = new EventEmitter<Event>();\n\n public ngOnInit(): void {\n if (this.odxClickOutsideActive) {\n this.registerHandler();\n }\n }\n\n public ngOnChanges(changes: NgChanges<ClickOutsideDirective>): void {\n if (hasChanged(changes, 'odxClickOutsideActive', true)) {\n if (changes.odxClickOutsideActive?.currentValue) {\n this.registerHandler();\n } else {\n this.destroy();\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy();\n }\n\n private destroy() {\n if (this.listener) {\n this.listener.unsubscribe();\n this.listener = undefined;\n }\n }\n\n private registerHandler() {\n deferFn(() => {\n this.listener = this.onOutsideClick$.subscribe();\n });\n }\n\n private registerEventHandler<T extends Event>(eventName: string): Observable<T> {\n return new Observable<T>((subscriber) => {\n const listener = this.renderer.listen('document', eventName, (event: T) => {\n subscriber.next(event);\n });\n subscriber.add(listener);\n });\n }\n}\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\n\n/**\n * A directive to manage focus within components. It emits events when the host component is focused,\n * and dynamically updates the `tabindex` attribute to control focusability. This directive is particularly\n * useful for custom components that require explicit focus management, such as custom input components\n * or complex interactive components.\n *\n * The directive ensures that the component can be focused by setting `tabindex=\"0\"`, making it reachable\n * via keyboard navigation. When the component gains focus (`focusin`), it becomes non-focusable (`tabindex=\"-1\"`)\n * to manage focus delegation internally. It restores its focusability (`tabindex=\"0\"`) when losing focus (`focusout`),\n * allowing it to be focused again in the future.\n */\n@Directive({\n standalone: true,\n host: {\n '[attr.tabindex]': 'tabindex',\n },\n})\nexport class DelegateFocusDirective {\n protected tabindex = 0;\n\n /**\n * Emits an event when the element is focused.\n */\n @Output()\n public focused = new EventEmitter<void>();\n\n @HostListener('focus')\n protected handleFocus(): void {\n this.focused.next();\n }\n\n @HostListener('focusin')\n protected handleFocusIn(): void {\n this.tabindex = -1;\n }\n\n @HostListener('focusout')\n protected handleFocusOut(): void {\n this.tabindex = 0;\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { booleanToOptionalAttributeString } from '@odx/angular/utils';\nimport { DisabledController } from '../controllers';\n\nconst ELEMENTS_WITH_DISABLED_ATTRIBUTE = {\n button: true,\n fieldset: true,\n input: true,\n optgroup: true,\n option: true,\n select: true,\n textarea: true,\n} as Record<string, boolean>;\n\n@Directive({\n standalone: true,\n providers: [DisabledController.connect()],\n host: {\n '[class.is-disabled]': 'isDisabled',\n '[attr.aria-disabled]': 'ariaDisabled',\n '[attr.disabled]': 'hasDisabledAttribute && isDisabled || null',\n },\n})\nexport class WithDisabledState {\n protected readonly hasAriaRole: boolean;\n protected readonly hasDisabledAttribute: boolean;\n protected readonly disabledController = DisabledController.inject();\n\n protected get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n public get ariaDisabled(): string | null {\n return booleanToOptionalAttributeString(this.hasAriaRole && this.isDisabled);\n }\n\n constructor(element: ElementRef<HTMLElement>) {\n this.hasDisabledAttribute = !!ELEMENTS_WITH_DISABLED_ATTRIBUTE[element.nativeElement.nodeName.toLowerCase() ?? ''];\n this.hasAriaRole = element.nativeElement.hasAttribute('role');\n }\n}\n","import { Directive, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { reactiveAttributeBinding } from '@odx/angular/utils';\nimport { combineLatest, distinctUntilChanged, map, of, shareReplay, startWith } from 'rxjs';\nimport { DisabledController } from '../controllers';\n\n@Directive({ standalone: true })\nexport class WithTabIndex {\n private readonly isDisabled$ = DisabledController.inject()?.isDisabled$.pipe(startWith(false)) ?? of(false);\n private readonly tabindex = signal(0);\n private readonly tabindex$ = combineLatest([toObservable(this.tabindex), this.isDisabled$]).pipe(\n map(([tabindex, isDisabled]) => (isDisabled ? -1 : tabindex)),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n constructor() {\n reactiveAttributeBinding(this.tabindex$, 'tabindex');\n }\n\n public setTabindex(value: number | null) {\n this.tabindex.set(value ?? 0);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LetDirective } from '@ngrx/component';\nimport { DisabledController, ReadonlyController } from './controllers';\nimport { ClickOutsideDirective } from './directives';\n\nconst controllers = [DisabledController, ReadonlyController];\nconst modules = [ClickOutsideDirective, LetDirective];\n\n@NgModule({\n imports: [...controllers, ...modules],\n exports: [CommonModule, ...controllers, ...modules],\n})\nexport class CoreModule {}\n","export type Environment = typeof Environment[keyof typeof Environment];\n\nexport const Environment = {\n DEV: 'dev',\n STAGE: 'stage',\n PROD: 'prod'\n} as const;\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, reflectComponentType, Type } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { fromEvents } from '@odx/angular/rxjs';\nimport { getLanguageCode } from '@odx/angular/utils';\nimport { debounceTime, distinctUntilChanged, EMPTY, filter, map, shareReplay, startWith } from 'rxjs';\n\n/**\n * A service that wraps window and document functionalities, providing Angular-friendly ways to interact with the browser's window object,\n * manage the document and its title, listen to online/offline events, and perform other browser-related operations.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class WindowRef {\n private readonly title = inject(Title);\n\n /**\n * Accesses the document object, ensuring Angular compatibility and potential SSR friendliness.\n *\n * @type {Document}\n */\n public readonly document = inject(DOCUMENT);\n\n /**\n * Retrieves the native window object, with a fallback to the global window if necessary.\n * This approach helps ensure compatibility with Angular's SSR features.\n *\n * @type {Window}\n */\n public readonly nativeWindow = this.document.defaultView ?? window;\n\n /**\n * An observable that emits the online status of the browser, updating when the browser transitions\n * between online and offline states.\n *\n * @emits {boolean} True if the browser is online; otherwise, false.\n */\n public readonly isOnline$ = fromEvents(this.nativeWindow, 'offline', 'online').pipe(\n startWith(null),\n map(() => this.isOnline()),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * An observable that emits the current page title upon navigation ends,\n * useful for updating document titles in SPA applications.\n *\n * @emits {string} The current page title.\n */\n public readonly pageTitle$ = (inject(Router, { optional: true })?.events ?? EMPTY).pipe(\n filter((event) => event instanceof NavigationEnd),\n startWith(null),\n debounceTime(0),\n map(() => this.title.getTitle()),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n /**\n * Gets the location object of the window.\n *\n * @returns {Location} The location object of the window.\n */\n public get location(): Location {\n return this.nativeWindow.location;\n }\n\n /**\n * Determines if the browser is currently online.\n *\n * @returns {boolean} True if the browser is online; otherwise, false.\n */\n public isOnline(): boolean {\n return this.nativeWindow.navigator.onLine;\n }\n\n /**\n * Retrieves the browser's current language setting, falling back through several browser-specific properties.\n *\n * @returns {string} The current language setting of the browser.\n */\n public getLanguage(): string {\n const { language, languages, userLanguage } = this.nativeWindow.navigator as Navigator & { userLanguage?: string };\n\n return languages?.[0] ?? userLanguage ?? language;\n }\n\n /**\n * Extracts the language code from the browser's current language setting.\n *\n * @returns {string} The language code part of the browser's language setting.\n */\n public getLanguageCode(): string {\n return getLanguageCode(this.getLanguage());\n }\n\n /**\n * Returns the origin of the current window location.\n *\n * @returns The origin of the current window location.\n */\n public getOrigin(): string {\n return this.location.origin;\n }\n\n /**\n * Opens a new browser tab or window and navigates to the specified URL.\n *\n * @param {string | URL} [url] - The URL to open.\n * @param {string} [target] - The target window or tab.\n * @param {string} [features] - String that specifies the window features.\n * @returns {WindowProxy | null} A reference to the newly opened window or null if the call failed.\n */\n public openPage(url?: string | URL, target?: string, features?: string): WindowProxy | null {\n return this.nativeWindow.open(url, target, features);\n }\n\n /**\n * Reloads the current page.\n */\n public reloadPage(): void {\n return this.location.reload();\n }\n\n /**\n * Queries the DOM for an element associated with a specific Angular component type.\n *\n * @template T The component type to query for.\n * @param {Type<T>} type - The Angular component type.\n * @returns {HTMLElement | null} The HTML element associated with the component, or null if not found.\n */\n public queryByComponent<T>(type: Type<T>): HTMLElement | null {\n const componentType = reflectComponentType(type);\n\n return componentType ? this.nativeWindow.document.querySelector(componentType.selector) : null;\n }\n\n /**\n * Retrieves the value of a CSS variable on a specified element.\n *\n * @param {string} name - The name of the CSS variable.\n * @param {HTMLElement} [element=this.document.body] - The element from which to retrieve the CSS variable.\n * @returns {string} The value of the CSS variable.\n */\n public getCSSVariable(name: string, element: HTMLElement = this.document.body): string {\n return this.nativeWindow.getComputedStyle(element).getPropertyValue(`--${name}`).trim();\n }\n\n /**\n * Extracts CSS color styles that match a specific filter from the document's stylesheets.\n *\n * @param {string} filter - The filter to apply to CSS variable names.\n * @param {string} [selector=':root'] - The CSS selector to filter by.\n * @returns {Record<string, string>} A record containing the filtered CSS color styles.\n */\n public getCSSColorStyles(filter: string, selector = ':root'): Record<string, string> {\n const selectorFilter = new RegExp(`^${selector}$`);\n const nameFilter = new RegExp(`^--${filter}`);\n const arr = Array.from(this.document.styleSheets)\n .filter(({ href }) => !href || href.startsWith(this.nativeWindow.location.origin))\n .map(({ cssRules }) => Array.from(cssRules)[0])\n .filter((rule) => rule instanceof CSSStyleRule && selectorFilter.test(rule.selectorText.trim()))\n .reduce((colors: Record<string, string>, rule) => {\n Object.values((rule as CSSStyleRule).style)\n .map((style) => style.toString().trim())\n .filter((name) => Boolean(name) && nameFilter.test(name))\n .forEach((name) => {\n const key = name.replace('--', '');\n colors[key] = this.getCSSVariable(key);\n });\n return colors;\n }, {});\n return arr;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * A function type that defines the logic to compare two items for identity.\n * It should return `true` if the items are considered identical, otherwise `false`.\n *\n * @template T The type of the items to be compared.\n * @param {T} item1 The first item to compare.\n * @param {T} item2 The second item to compare.\n * @returns {boolean} `true` if the items are identical, otherwise `false`.\n *\n * @example\n * ```ts\n * // A simple identity matcher for number types\n * const numberMatcher: IdentityMatcher<number> = (n1, n2) => n1 === n2;\n * console.log(numberMatcher(1, 1)); // Outputs: true\n * console.log(numberMatcher(1, 2)); // Outputs: false\n * ```\n */\nexport type IdentityMatcher<T> = (item1: T, item2: T) => boolean;\n\nconst ODX_DEFAULT_IDENTITY_MATCHER: IdentityMatcher<unknown> = (item1, item2) => item1 === item2;\n\n/**\n * An Angular `InjectionToken` for the `IdentityMatcher` function, allowing for the provision\n * and injection of custom identity matching logic throughout the application. The token is\n * provided with a default factory function that returns the `ODX_DEFAULT_IDENTITY_MATCHER`,\n * which can be overridden with custom logic as needed.\n *\n * @type {InjectionToken<IdentityMatcher<unknown>>}\n *\n * @example\n * ```ts\n * // Providing a custom identity matcher in an Angular module\n * @NgModule({\n * providers: [\n * { provide: ODX_IDENTITY_MATCHER, useValue: (item1, item2) => item1.id === item2.id }\n * ]\n * })\n * class AppModule {}\n *\n * // Injecting and using the custom provided identity matcher\n * constructor(@Inject(ODX_IDENTITY_MATCHER) private identityMatcher: IdentityMatcher<MyType>) {\n * console.log(this.identityMatcher({ id: 1 }, { id: 1 })); // Depends on the custom logic provided\n * }\n * ```\n */\nexport const ODX_IDENTITY_MATCHER = new InjectionToken<IdentityMatcher<unknown>>('@odx/angular::StringHandler', {\n providedIn: 'root',\n factory: () => ODX_DEFAULT_IDENTITY_MATCHER,\n});\n","import { InjectionToken } from '@angular/core';\n\n/**\n * A function type that defines the logic to search within a string item using a query string.\n * It should return `true` if the item matches the query according to the implemented logic, otherwise `false`.\n *\n * @param {string} item - The string item to search within.\n * @param {string} query - The query string to search for.\n * @returns {boolean} `true` if the query matches the item, otherwise `false`.\n *\n * @example\n * ```ts\n * // A simple case-insensitive search\n * const searchHandler: StringSearchHandler = (item, query) => item.toLowerCase().includes(query.toLowerCase());\n * console.log(searchHandler('Hello World', 'world')); // Outputs: true\n * ```\n */\nexport type StringSearchHandler = (item: string, query: string) => boolean;\n\nconst ODX_DEFAULT_STRING_SEARCH_HANDLER: StringSearchHandler = (item, query) => {\n return item.toLocaleLowerCase().includes(query.toLocaleLowerCase());\n};\n\n/**\n * An Angular `InjectionToken` for the `StringSearchHandler` function, allowing for the provision\n * and injection of custom string search logic throughout the application. This token is provided with\n * a default factory function that returns the `ODX_DEFAULT_STRING_SEARCH_HANDLER`, which can be overridden\n * with custom logic as needed.\n *\n * @type {InjectionToken<StringSearchHandler>}\n *\n * @example\n * ```ts\n * // Providing a custom string search handler in an Angular module\n * @NgModule({\n * providers: [\n * { provide: ODX_STRING_SEARCH_HANDLER, useValue: (item, query) => item.startsWith(query) }\n * ]\n * })\n * class AppModule {}\n *\n * // Injecting and using the custom provided string search handler\n * constructor(@Inject(ODX_STRING_SEARCH_HANDLER) private searchHandler: StringSearchHandler) {\n * console.log(this.searchHandler('Angular', 'A')); // Depends on the custom logic provided\n * }\n * ```\n */\nexport const ODX_STRING_SEARCH_HANDLER = new InjectionToken<StringSearchHandler>('@odx/angular::StringHandler', {\n providedIn: 'root',\n factory: () => ODX_DEFAULT_STRING_SEARCH_HANDLER,\n});\n","import { InjectionToken } from '@angular/core';\nimport { isPresent } from '@odx/angular/utils';\n\n/**\n * A function type that defines the logic to convert an item of any type into a string.\n * The function should handle various types gracefully, returning a meaningful string representation\n * for each. If the item is not present (null or undefined), an empty string should be returned.\n *\n * @template T The type of the item to be stringified.\n * @param {T} item - The item to stringify.\n * @returns {string} The string representation of the item.\n *\n * @example\n * ```ts\n * // A simple stringify function that handles null and undefined\n * const stringify: StringifyFn<unknown> = (item) => (isPresent(item) ? String(item) : '');\n * console.log(stringify(123)); // Outputs: \"123\"\n * console.log(stringify(null)); // Outputs: \"\"\n * ```\n */\nexport type StringifyFn<T> = (item: T) => string;\n\nconst ODX_DEFAULT_STRINGIFY: StringifyFn<unknown> = (item) => (isPresent(item) ? String(item) : '');\n\n/**\n * An Angular `InjectionToken` for the `StringifyFn` function, allowing the injection of custom\n * stringification logic throughout an application. By default, it is provided with a factory\n * function that returns `ODX_DEFAULT_STRINGIFY`. This setup permits easy customization of\n * how items are converted to strings, facilitating different stringification strategies\n * for various application needs.\n *\n * @type {InjectionToken<StringifyFn<unknown>>}\n *\n * @example\n * ```ts\n * // Providing a custom stringify function in an Angular module\n * @NgModule({\n * providers: [\n * { provide: ODX_STRINGIFY, useValue: (item) => JSON.stringify(item) }\n * ]\n * })\n * class AppModule {}\n *\n * // Injecting and using the custom provided stringify function\n * constructor(@Inject(ODX_STRINGIFY) private stringify: StringifyFn<unknown>) {\n * console.log(this.stringify({ key: 'value' })); // Outputs: '{\"key\":\"value\"}'\n * }\n * ```\n */\nexport const ODX_STRINGIFY = new InjectionToken<StringifyFn<unknown>>('@odx/angular::Stringify', {\n providedIn: 'root',\n factory: () => ODX_DEFAULT_STRINGIFY,\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -46,14 +46,21 @@ export declare class DisabledController extends Controller {
46
46
  /**
47
47
  * Sets the disabled state of the current controller. If the state changes, updates the internal
48
48
  * flag.
49
+ *
49
50
  * @param {boolean} value - The new disabled state to be applied.
50
51
  */
51
52
  set disabled(value: boolean);
53
+ /**
54
+ * Gets a value indicating whether the controller is disabled.
55
+ *
56
+ * @returns {boolean} - `true` if the controller is disabled, `false` otherwise.
57
+ */
52
58
  get disabled(): boolean;
53
59
  /**
54
60
  * Retrieves an instance of the `DisabledController` class from the dependency injection container.
55
61
  * If the `DisabledController` is not registered in the container, it returns `null`.
56
62
  *
63
+ * @static
57
64
  * @returns {DisabledController | null} An instance of the `DisabledController` class or `null` if not found.
58
65
  */
59
66
  static inject(): DisabledController | null;
@@ -62,6 +69,7 @@ export declare class DisabledController extends Controller {
62
69
  * This method provides a way to connect a component with its closest `DisabledController` parent,
63
70
  * allowing for disabled state inheritance.
64
71
  *
72
+ * @static
65
73
  * @returns {Provider[]} An array of providers to enable disabled state management within a component.
66
74
  */
67
75
  static connect(): Provider[];
@@ -59,6 +59,7 @@ export declare class ReadonlyController extends Controller {
59
59
  /**
60
60
  * Returns an instance of the ReadonlyController or null if it cannot be found.
61
61
  *
62
+ * @static
62
63
  * @returns {ReadonlyController | null} An instance of the ReadonlyController or null.
63
64
  */
64
65
  static inject(): ReadonlyController | null;
@@ -67,6 +68,7 @@ export declare class ReadonlyController extends Controller {
67
68
  * This method provides a way to connect a component with its closest `ReadonlyController` parent,
68
69
  * allowing for readonly state inheritance.
69
70
  *
71
+ * @static
70
72
  * @returns {Provider} An array of providers to enable readonly state management within a component.
71
73
  */
72
74
  static connect(): Provider;
@@ -29,6 +29,7 @@ export declare class ClickOutsideDirective implements OnChanges, OnInit, OnDestr
29
29
  * Controls whether the outside click detection is active. When `true`, the directive listens for outside clicks.
30
30
  *
31
31
  * @type {boolean}
32
+ * @default true
32
33
  */
33
34
  odxClickOutsideActive: boolean;
34
35
  /**
@@ -8,38 +8,52 @@ export declare class WindowRef {
8
8
  private readonly title;
9
9
  /**
10
10
  * Accesses the document object, ensuring Angular compatibility and potential SSR friendliness.
11
+ *
12
+ * @type {Document}
11
13
  */
12
14
  readonly document: Document;
13
15
  /**
14
16
  * Retrieves the native window object, with a fallback to the global window if necessary.
15
17
  * This approach helps ensure compatibility with Angular's SSR features.
18
+ *
19
+ * @type {Window}
16
20
  */
17
21
  readonly nativeWindow: Window & typeof globalThis;
18
22
  /**
19
- * An observable that emits the online status of the browser, updating when the browser transitions between online and offline states.
23
+ * An observable that emits the online status of the browser, updating when the browser transitions
24
+ * between online and offline states.
25
+ *
26
+ * @emits {boolean} True if the browser is online; otherwise, false.
20
27
  */
21
28
  readonly isOnline$: import("rxjs").Observable<boolean>;
22
29
  /**
23
- * An observable that emits the current page title upon navigation ends, useful for updating document titles in SPA applications.
30
+ * An observable that emits the current page title upon navigation ends,
31
+ * useful for updating document titles in SPA applications.
32
+ *
33
+ * @emits {string} The current page title.
24
34
  */
25
35
  readonly pageTitle$: import("rxjs").Observable<string>;
26
36
  /**
27
37
  * Gets the location object of the window.
28
- * @returns The location object of the window.
38
+ *
39
+ * @returns {Location} The location object of the window.
29
40
  */
30
41
  get location(): Location;
31
42
  /**
32
43
  * Determines if the browser is currently online.
44
+ *
33
45
  * @returns {boolean} True if the browser is online; otherwise, false.
34
46
  */
35
47
  isOnline(): boolean;
36
48
  /**
37
49
  * Retrieves the browser's current language setting, falling back through several browser-specific properties.
50
+ *
38
51
  * @returns {string} The current language setting of the browser.
39
52
  */
40
53
  getLanguage(): string;
41
54
  /**
42
55
  * Extracts the language code from the browser's current language setting.
56
+ *
43
57
  * @returns {string} The language code part of the browser's language setting.
44
58
  */
45
59
  getLanguageCode(): string;
@@ -51,6 +65,7 @@ export declare class WindowRef {
51
65
  getOrigin(): string;
52
66
  /**
53
67
  * Opens a new browser tab or window and navigates to the specified URL.
68
+ *
54
69
  * @param {string | URL} [url] - The URL to open.
55
70
  * @param {string} [target] - The target window or tab.
56
71
  * @param {string} [features] - String that specifies the window features.
@@ -63,6 +78,7 @@ export declare class WindowRef {
63
78
  reloadPage(): void;
64
79
  /**
65
80
  * Queries the DOM for an element associated with a specific Angular component type.
81
+ *
66
82
  * @template T The component type to query for.
67
83
  * @param {Type<T>} type - The Angular component type.
68
84
  * @returns {HTMLElement | null} The HTML element associated with the component, or null if not found.
@@ -70,6 +86,7 @@ export declare class WindowRef {
70
86
  queryByComponent<T>(type: Type<T>): HTMLElement | null;
71
87
  /**
72
88
  * Retrieves the value of a CSS variable on a specified element.
89
+ *
73
90
  * @param {string} name - The name of the CSS variable.
74
91
  * @param {HTMLElement} [element=this.document.body] - The element from which to retrieve the CSS variable.
75
92
  * @returns {string} The value of the CSS variable.
@@ -77,6 +94,7 @@ export declare class WindowRef {
77
94
  getCSSVariable(name: string, element?: HTMLElement): string;
78
95
  /**
79
96
  * Extracts CSS color styles that match a specific filter from the document's stylesheets.
97
+ *
80
98
  * @param {string} filter - The filter to apply to CSS variable names.
81
99
  * @param {string} [selector=':root'] - The CSS selector to filter by.
82
100
  * @returns {Record<string, string>} A record containing the filtered CSS color styles.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "6.1.0",
3
+ "version": "6.2.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -17,6 +17,8 @@ export declare class ThemingService {
17
17
  /**
18
18
  * An observable stream of the current theme, emitting values whenever the theme changes.
19
19
  * Subscribers to this observable can react to theme changes in real-time.
20
+ *
21
+ * @emits {Theme} The currently selected theme.
20
22
  */
21
23
  readonly theme$: import("rxjs").Observable<Theme>;
22
24
  constructor();