@odx/angular 1.0.4 → 2.1.1

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 (263) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/breakpoints/README.md +3 -0
  3. package/breakpoints/index.d.ts +7 -0
  4. package/breakpoints/lib/breakpoints.config.d.ts +21 -0
  5. package/breakpoints/lib/breakpoints.module.d.ts +7 -0
  6. package/breakpoints/lib/breakpoints.service.d.ts +13 -0
  7. package/breakpoints/lib/breakpoints.typings.d.ts +8 -0
  8. package/breakpoints/lib/directives/index.d.ts +1 -0
  9. package/breakpoints/lib/directives/match-breakpoints.directive.d.ts +16 -0
  10. package/breakpoints/lib/helpers/configure-breakpoint.d.ts +4 -0
  11. package/breakpoints/lib/helpers/index.d.ts +1 -0
  12. package/breakpoints/lib/models/breakpoint.d.ts +5 -0
  13. package/breakpoints/lib/models/index.d.ts +1 -0
  14. package/cdk/autocomplete-control/README.md +3 -0
  15. package/cdk/autocomplete-control/index.d.ts +3 -0
  16. package/cdk/autocomplete-control/lib/abstract/base-search-field.directive.d.ts +13 -0
  17. package/cdk/autocomplete-control/lib/abstract/index.d.ts +1 -0
  18. package/cdk/autocomplete-control/lib/autocomplete-control.d.ts +39 -0
  19. package/cdk/autocomplete-control/lib/pipes/base-search-filter-pipe.d.ts +11 -0
  20. package/cdk/autocomplete-control/lib/pipes/index.d.ts +1 -0
  21. package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +1 -1
  22. package/cdk/option-control/README.md +3 -0
  23. package/cdk/option-control/index.d.ts +1 -0
  24. package/cdk/option-control/lib/option-control.d.ts +17 -0
  25. package/components/autocomplete/README.md +3 -0
  26. package/components/autocomplete/index.d.ts +6 -0
  27. package/components/autocomplete/lib/autocomplete.component.d.ts +30 -0
  28. package/components/autocomplete/lib/autocomplete.module.d.ts +11 -0
  29. package/components/autocomplete/lib/autocomplete.tokens.d.ts +3 -0
  30. package/components/autocomplete/lib/components/index.d.ts +1 -0
  31. package/components/autocomplete/lib/components/option/autocomplete-option.component.d.ts +9 -0
  32. package/components/autocomplete/lib/directives/autocomplete-search-field.directive.d.ts +9 -0
  33. package/components/autocomplete/lib/directives/index.d.ts +1 -0
  34. package/components/autocomplete/lib/pipes/autocomplete-search-filter.pipe.d.ts +12 -0
  35. package/components/autocomplete/lib/pipes/index.d.ts +1 -0
  36. package/components/chip/index.d.ts +1 -1
  37. package/components/chip/lib/{chip.component.d.ts → components/chip/chip.component.d.ts} +1 -1
  38. package/components/chip/lib/components/chip-list/chip-list.component.d.ts +6 -0
  39. package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +6 -0
  40. package/components/chip/lib/components/index.d.ts +3 -0
  41. package/components/dropdown/lib/dropdown.directive.d.ts +2 -1
  42. package/components/form-field/lib/models/form-field-variant.d.ts +1 -0
  43. package/components/main-menu/lib/directives/index.d.ts +1 -0
  44. package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +7 -0
  45. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +3 -4
  46. package/components/main-menu/lib/main-menu.module.d.ts +3 -2
  47. package/components/menu/lib/directives/menu-item.directive.d.ts +1 -1
  48. package/components/menu/lib/menu.module.d.ts +3 -2
  49. package/components/rail-navigation/index.d.ts +2 -1
  50. package/components/rail-navigation/lib/components/index.d.ts +1 -0
  51. package/components/rail-navigation/lib/models/index.d.ts +1 -0
  52. package/components/rail-navigation/lib/models/rail-navigation-variant.d.ts +5 -0
  53. package/components/rail-navigation/lib/rail-navigation.component.d.ts +4 -2
  54. package/components/rail-navigation/lib/rail-navigation.module.d.ts +2 -2
  55. package/components/select/index.d.ts +0 -1
  56. package/components/select/lib/components/index.d.ts +1 -1
  57. package/components/select/lib/components/select-option/select-option.component.d.ts +19 -0
  58. package/components/select/lib/directives/select-search-field.directive.d.ts +3 -7
  59. package/components/select/lib/pipes/select-search-filter.pipe.d.ts +8 -8
  60. package/components/select/lib/select.component.d.ts +15 -30
  61. package/components/select/lib/select.module.d.ts +2 -2
  62. package/components/select/lib/select.tokens.d.ts +2 -2
  63. package/components/table/README.md +3 -0
  64. package/components/table/index.d.ts +5 -0
  65. package/components/table/lib/components/check-cell/check-cell.component.d.ts +11 -0
  66. package/components/table/lib/components/header-title/header-title.component.d.ts +28 -0
  67. package/components/table/lib/components/index.d.ts +2 -0
  68. package/components/table/lib/directives/index.d.ts +2 -0
  69. package/components/table/lib/directives/table-cell.directive.d.ts +6 -0
  70. package/components/table/lib/directives/table-row.directive.d.ts +6 -0
  71. package/components/table/lib/interfaces/index.d.ts +3 -0
  72. package/components/table/lib/models/index.d.ts +2 -0
  73. package/components/table/lib/models/sort-variant.d.ts +6 -0
  74. package/components/table/lib/models/table-variant.d.ts +5 -0
  75. package/components/table/lib/table.component.d.ts +29 -0
  76. package/components/table/lib/table.config.d.ts +4 -0
  77. package/components/table/lib/table.module.d.ts +11 -0
  78. package/components/wizard/README.md +3 -0
  79. package/components/wizard/index.d.ts +3 -0
  80. package/components/wizard/lib/components/index.d.ts +1 -0
  81. package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +17 -0
  82. package/components/wizard/lib/wizard.component.d.ts +31 -0
  83. package/components/wizard/lib/wizard.module.d.ts +9 -0
  84. package/esm2020/breakpoints/index.mjs +8 -0
  85. package/esm2020/breakpoints/lib/breakpoints.config.mjs +13 -0
  86. package/esm2020/breakpoints/lib/breakpoints.module.mjs +17 -0
  87. package/esm2020/breakpoints/lib/breakpoints.service.mjs +34 -0
  88. package/esm2020/breakpoints/lib/breakpoints.typings.mjs +2 -0
  89. package/esm2020/breakpoints/lib/directives/index.mjs +2 -0
  90. package/esm2020/breakpoints/lib/directives/match-breakpoints.directive.mjs +48 -0
  91. package/esm2020/breakpoints/lib/helpers/configure-breakpoint.mjs +8 -0
  92. package/esm2020/breakpoints/lib/helpers/index.mjs +2 -0
  93. package/esm2020/breakpoints/lib/models/breakpoint.mjs +2 -0
  94. package/esm2020/breakpoints/lib/models/index.mjs +2 -0
  95. package/esm2020/breakpoints/odx-angular-breakpoints.mjs +5 -0
  96. package/esm2020/cdk/autocomplete-control/index.mjs +4 -0
  97. package/esm2020/cdk/autocomplete-control/lib/abstract/base-search-field.directive.mjs +38 -0
  98. package/esm2020/cdk/autocomplete-control/lib/abstract/index.mjs +2 -0
  99. package/esm2020/cdk/autocomplete-control/lib/autocomplete-control.mjs +90 -0
  100. package/esm2020/cdk/autocomplete-control/lib/pipes/base-search-filter-pipe.mjs +32 -0
  101. package/esm2020/cdk/autocomplete-control/lib/pipes/index.mjs +2 -0
  102. package/esm2020/cdk/autocomplete-control/odx-angular-cdk-autocomplete-control.mjs +5 -0
  103. package/esm2020/cdk/expandable/lib/directives/expandable-item.directive.mjs +5 -5
  104. package/esm2020/cdk/option-control/index.mjs +2 -0
  105. package/esm2020/cdk/option-control/lib/option-control.mjs +47 -0
  106. package/esm2020/cdk/option-control/odx-angular-cdk-option-control.mjs +5 -0
  107. package/esm2020/components/autocomplete/index.mjs +7 -0
  108. package/esm2020/components/autocomplete/lib/autocomplete.component.mjs +162 -0
  109. package/esm2020/components/autocomplete/lib/autocomplete.module.mjs +21 -0
  110. package/esm2020/components/autocomplete/lib/autocomplete.tokens.mjs +3 -0
  111. package/esm2020/components/autocomplete/lib/components/index.mjs +2 -0
  112. package/esm2020/components/autocomplete/lib/components/option/autocomplete-option.component.mjs +33 -0
  113. package/esm2020/components/autocomplete/lib/directives/autocomplete-search-field.directive.mjs +26 -0
  114. package/esm2020/components/autocomplete/lib/directives/index.mjs +2 -0
  115. package/esm2020/components/autocomplete/lib/pipes/autocomplete-search-filter.pipe.mjs +30 -0
  116. package/esm2020/components/autocomplete/lib/pipes/index.mjs +2 -0
  117. package/esm2020/components/autocomplete/odx-angular-components-autocomplete.mjs +5 -0
  118. package/esm2020/components/card/lib/card.component.mjs +2 -2
  119. package/esm2020/components/checkbox/lib/checkbox.component.mjs +2 -2
  120. package/esm2020/components/chip/index.mjs +2 -2
  121. package/esm2020/components/chip/lib/{chip.component.mjs → components/chip/chip.component.mjs} +2 -2
  122. package/esm2020/components/chip/lib/components/chip-list/chip-list.component.mjs +21 -0
  123. package/esm2020/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +21 -0
  124. package/esm2020/components/chip/lib/components/index.mjs +4 -0
  125. package/esm2020/components/dropdown/lib/dropdown.component.mjs +3 -3
  126. package/esm2020/components/dropdown/lib/dropdown.directive.mjs +10 -2
  127. package/esm2020/components/form-field/lib/components/form-group/form-group.component.mjs +3 -3
  128. package/esm2020/components/form-field/lib/form-field.component.mjs +3 -3
  129. package/esm2020/components/form-field/lib/form-field.service.mjs +2 -2
  130. package/esm2020/components/form-field/lib/models/form-field-variant.mjs +2 -1
  131. package/esm2020/components/main-menu/lib/directives/index.mjs +2 -1
  132. package/esm2020/components/main-menu/lib/directives/main-menu-close.directive.mjs +24 -0
  133. package/esm2020/components/main-menu/lib/directives/main-menu-item.directive.mjs +6 -12
  134. package/esm2020/components/main-menu/lib/main-menu.module.mjs +4 -4
  135. package/esm2020/components/main-menu/lib/main-menu.service.mjs +2 -11
  136. package/esm2020/components/menu/lib/directives/menu-item.directive.mjs +3 -3
  137. package/esm2020/components/menu/lib/menu.module.mjs +5 -4
  138. package/esm2020/components/rail-navigation/index.mjs +3 -2
  139. package/esm2020/components/rail-navigation/lib/components/index.mjs +2 -0
  140. package/esm2020/components/rail-navigation/lib/components/{rail-navigation-item.component.mjs → rail-navigation-item/rail-navigation-item.component.mjs} +3 -3
  141. package/esm2020/components/rail-navigation/lib/models/index.mjs +2 -0
  142. package/esm2020/components/rail-navigation/lib/models/rail-navigation-variant.mjs +5 -0
  143. package/esm2020/components/rail-navigation/lib/rail-navigation.component.mjs +19 -11
  144. package/esm2020/components/rail-navigation/lib/rail-navigation.module.mjs +4 -4
  145. package/esm2020/components/select/index.mjs +1 -2
  146. package/esm2020/components/select/lib/components/index.mjs +2 -2
  147. package/esm2020/components/select/lib/components/select-option/select-option.component.mjs +75 -0
  148. package/esm2020/components/select/lib/directives/select-search-field.directive.mjs +9 -21
  149. package/esm2020/components/select/lib/pipes/select-search-filter.pipe.mjs +12 -33
  150. package/esm2020/components/select/lib/select.component.mjs +44 -86
  151. package/esm2020/components/select/lib/select.module.mjs +5 -5
  152. package/esm2020/components/select/lib/select.tokens.mjs +2 -2
  153. package/esm2020/components/table/index.mjs +6 -0
  154. package/esm2020/components/table/lib/components/check-cell/check-cell.component.mjs +29 -0
  155. package/esm2020/components/table/lib/components/header-title/header-title.component.mjs +86 -0
  156. package/esm2020/components/table/lib/components/index.mjs +3 -0
  157. package/esm2020/components/table/lib/directives/index.mjs +3 -0
  158. package/esm2020/components/table/lib/directives/table-cell.directive.mjs +27 -0
  159. package/esm2020/components/table/lib/directives/table-row.directive.mjs +28 -0
  160. package/esm2020/components/table/lib/interfaces/index.mjs +4 -0
  161. package/esm2020/components/table/lib/models/index.mjs +3 -0
  162. package/esm2020/components/table/lib/models/sort-variant.mjs +6 -0
  163. package/esm2020/components/table/lib/models/table-variant.mjs +5 -0
  164. package/esm2020/components/table/lib/table.component.mjs +86 -0
  165. package/esm2020/components/table/lib/table.config.mjs +3 -0
  166. package/esm2020/components/table/lib/table.module.mjs +21 -0
  167. package/esm2020/components/table/odx-angular-components-table.mjs +5 -0
  168. package/esm2020/components/wizard/index.mjs +4 -0
  169. package/esm2020/components/wizard/lib/components/index.mjs +2 -0
  170. package/esm2020/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +73 -0
  171. package/esm2020/components/wizard/lib/wizard.component.mjs +155 -0
  172. package/esm2020/components/wizard/lib/wizard.module.mjs +19 -0
  173. package/esm2020/components/wizard/odx-angular-components-wizard.mjs +5 -0
  174. package/esm2020/internal/decorators/css-component.mjs +1 -1
  175. package/esm2020/internal/decorators/css-modifier.mjs +16 -21
  176. package/esm2020/internal/helpers/get-css-variables.mjs +12 -19
  177. package/esm2020/lib/services/window-ref.mjs +4 -1
  178. package/fesm2015/odx-angular-breakpoints.mjs +111 -0
  179. package/fesm2015/odx-angular-breakpoints.mjs.map +1 -0
  180. package/fesm2015/odx-angular-cdk-autocomplete-control.mjs +164 -0
  181. package/fesm2015/odx-angular-cdk-autocomplete-control.mjs.map +1 -0
  182. package/fesm2015/odx-angular-cdk-expandable.mjs +4 -4
  183. package/fesm2015/odx-angular-cdk-expandable.mjs.map +1 -1
  184. package/fesm2015/odx-angular-cdk-option-control.mjs +55 -0
  185. package/fesm2015/odx-angular-cdk-option-control.mjs.map +1 -0
  186. package/fesm2015/odx-angular-components-autocomplete.mjs +263 -0
  187. package/fesm2015/odx-angular-components-autocomplete.mjs.map +1 -0
  188. package/fesm2015/odx-angular-components-card.mjs +1 -1
  189. package/fesm2015/odx-angular-components-card.mjs.map +1 -1
  190. package/fesm2015/odx-angular-components-checkbox.mjs +1 -1
  191. package/fesm2015/odx-angular-components-checkbox.mjs.map +1 -1
  192. package/fesm2015/odx-angular-components-chip.mjs +35 -5
  193. package/fesm2015/odx-angular-components-chip.mjs.map +1 -1
  194. package/fesm2015/odx-angular-components-dropdown.mjs +11 -3
  195. package/fesm2015/odx-angular-components-dropdown.mjs.map +1 -1
  196. package/fesm2015/odx-angular-components-form-field.mjs +5 -4
  197. package/fesm2015/odx-angular-components-form-field.mjs.map +1 -1
  198. package/fesm2015/odx-angular-components-main-menu.mjs +30 -24
  199. package/fesm2015/odx-angular-components-main-menu.mjs.map +1 -1
  200. package/fesm2015/odx-angular-components-menu.mjs +6 -5
  201. package/fesm2015/odx-angular-components-menu.mjs.map +1 -1
  202. package/fesm2015/odx-angular-components-rail-navigation.mjs +23 -11
  203. package/fesm2015/odx-angular-components-rail-navigation.mjs.map +1 -1
  204. package/fesm2015/odx-angular-components-select.mjs +80 -175
  205. package/fesm2015/odx-angular-components-select.mjs.map +1 -1
  206. package/fesm2015/odx-angular-components-table.mjs +264 -0
  207. package/fesm2015/odx-angular-components-table.mjs.map +1 -0
  208. package/fesm2015/odx-angular-components-wizard.mjs +242 -0
  209. package/fesm2015/odx-angular-components-wizard.mjs.map +1 -0
  210. package/fesm2015/odx-angular-internal.mjs +27 -40
  211. package/fesm2015/odx-angular-internal.mjs.map +1 -1
  212. package/fesm2015/odx-angular.mjs +3 -0
  213. package/fesm2015/odx-angular.mjs.map +1 -1
  214. package/fesm2020/odx-angular-breakpoints.mjs +117 -0
  215. package/fesm2020/odx-angular-breakpoints.mjs.map +1 -0
  216. package/fesm2020/odx-angular-cdk-autocomplete-control.mjs +160 -0
  217. package/fesm2020/odx-angular-cdk-autocomplete-control.mjs.map +1 -0
  218. package/fesm2020/odx-angular-cdk-expandable.mjs +4 -4
  219. package/fesm2020/odx-angular-cdk-expandable.mjs.map +1 -1
  220. package/fesm2020/odx-angular-cdk-option-control.mjs +54 -0
  221. package/fesm2020/odx-angular-cdk-option-control.mjs.map +1 -0
  222. package/fesm2020/odx-angular-components-autocomplete.mjs +254 -0
  223. package/fesm2020/odx-angular-components-autocomplete.mjs.map +1 -0
  224. package/fesm2020/odx-angular-components-card.mjs +1 -1
  225. package/fesm2020/odx-angular-components-card.mjs.map +1 -1
  226. package/fesm2020/odx-angular-components-checkbox.mjs +1 -1
  227. package/fesm2020/odx-angular-components-checkbox.mjs.map +1 -1
  228. package/fesm2020/odx-angular-components-chip.mjs +35 -5
  229. package/fesm2020/odx-angular-components-chip.mjs.map +1 -1
  230. package/fesm2020/odx-angular-components-dropdown.mjs +11 -3
  231. package/fesm2020/odx-angular-components-dropdown.mjs.map +1 -1
  232. package/fesm2020/odx-angular-components-form-field.mjs +5 -4
  233. package/fesm2020/odx-angular-components-form-field.mjs.map +1 -1
  234. package/fesm2020/odx-angular-components-main-menu.mjs +30 -24
  235. package/fesm2020/odx-angular-components-main-menu.mjs.map +1 -1
  236. package/fesm2020/odx-angular-components-menu.mjs +6 -5
  237. package/fesm2020/odx-angular-components-menu.mjs.map +1 -1
  238. package/fesm2020/odx-angular-components-rail-navigation.mjs +23 -11
  239. package/fesm2020/odx-angular-components-rail-navigation.mjs.map +1 -1
  240. package/fesm2020/odx-angular-components-select.mjs +77 -170
  241. package/fesm2020/odx-angular-components-select.mjs.map +1 -1
  242. package/fesm2020/odx-angular-components-table.mjs +259 -0
  243. package/fesm2020/odx-angular-components-table.mjs.map +1 -0
  244. package/fesm2020/odx-angular-components-wizard.mjs +239 -0
  245. package/fesm2020/odx-angular-components-wizard.mjs.map +1 -0
  246. package/fesm2020/odx-angular-internal.mjs +26 -38
  247. package/fesm2020/odx-angular-internal.mjs.map +1 -1
  248. package/fesm2020/odx-angular.mjs +3 -0
  249. package/fesm2020/odx-angular.mjs.map +1 -1
  250. package/internal/decorators/css-component.d.ts +1 -1
  251. package/internal/decorators/css-modifier.d.ts +2 -2
  252. package/internal/helpers/get-css-variables.d.ts +2 -3
  253. package/lib/services/window-ref.d.ts +1 -0
  254. package/package.json +52 -4
  255. package/components/select/lib/abstract/index.d.ts +0 -2
  256. package/components/select/lib/abstract/select-control-option.d.ts +0 -9
  257. package/components/select/lib/abstract/select-control.d.ts +0 -12
  258. package/components/select/lib/components/option/option.component.d.ts +0 -26
  259. package/esm2020/components/select/lib/abstract/index.mjs +0 -3
  260. package/esm2020/components/select/lib/abstract/select-control-option.mjs +0 -2
  261. package/esm2020/components/select/lib/abstract/select-control.mjs +0 -2
  262. package/esm2020/components/select/lib/components/option/option.component.mjs +0 -95
  263. /package/components/rail-navigation/lib/components/{rail-navigation-item.component.d.ts → rail-navigation-item/rail-navigation-item.component.d.ts} +0 -0
@@ -0,0 +1,164 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, inject, ChangeDetectorRef, EventEmitter, ViewChild, Input, Output, HostListener } from '@angular/core';
3
+ import { untilDestroyed, injectElement, isFunction, Transform, Pure } from '@odx/angular/utils';
4
+ import { fromEvent, distinctUntilChanged, map } from 'rxjs';
5
+ import { __decorate, __metadata } from 'tslib';
6
+ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
7
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
+ import { detectControllerChanges, ODX_STRING_SEARCH_HANDLER, ODX_STRINGIFY } from '@odx/angular';
9
+ import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
10
+ import { DropdownDirective } from '@odx/angular/components/dropdown';
11
+
12
+ class BaseSearchFieldDirective {
13
+ constructor() {
14
+ this.takeUntilDestroyed = untilDestroyed();
15
+ this.element = injectElement();
16
+ this.valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(distinctUntilChanged(), map(() => this.nativeElementValue), this.takeUntilDestroyed());
17
+ }
18
+ get nativeElementValue() {
19
+ return this.element.nativeElement.value;
20
+ }
21
+ set nativeElementValue(value) {
22
+ this.element.nativeElement.value = value;
23
+ }
24
+ focus() {
25
+ this.element.nativeElement.focus();
26
+ }
27
+ blur() {
28
+ this.element.nativeElement.blur();
29
+ }
30
+ reset() {
31
+ this.element.nativeElement.value = '';
32
+ }
33
+ }
34
+ BaseSearchFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseSearchFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
+ BaseSearchFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: BaseSearchFieldDirective, isStandalone: true, host: { properties: { "class.odx-form-field-control": "true" } }, ngImport: i0 });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseSearchFieldDirective, decorators: [{
37
+ type: Directive,
38
+ args: [{
39
+ standalone: true,
40
+ host: {
41
+ '[class.odx-form-field-control]': 'true',
42
+ },
43
+ }]
44
+ }] });
45
+
46
+ class AutocompleteControl extends CustomFormControl {
47
+ get hasOptions() {
48
+ var _a;
49
+ return !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.length);
50
+ }
51
+ get isOpen() {
52
+ var _a;
53
+ return !!((_a = this.dropdown) === null || _a === void 0 ? void 0 : _a.isOpen);
54
+ }
55
+ constructor() {
56
+ super(null);
57
+ this.smoothScrollEnabled = false;
58
+ this.takeUntilDestroyed = untilDestroyed();
59
+ this.changeDetector = inject(ChangeDetectorRef);
60
+ this.element = injectElement();
61
+ this.isLoading = false;
62
+ this.optionSelected = new EventEmitter();
63
+ detectControllerChanges(this).subscribe();
64
+ }
65
+ ngAfterViewInit() {
66
+ if (!this.options)
67
+ return;
68
+ this.initKeyManager(this.options);
69
+ this.handleQueryListOption(this.options);
70
+ this.handleSearchFieldChanges();
71
+ }
72
+ scrollOptionIntoView({ element }) {
73
+ const behavior = this.smoothScrollEnabled ? 'smooth' : undefined;
74
+ if (isFunction(element.nativeElement.scrollIntoView)) {
75
+ element.nativeElement.scrollIntoView({ block: 'center', behavior });
76
+ }
77
+ }
78
+ initKeyManager(options) {
79
+ this.keyManager = new ActiveDescendantKeyManager(options).withHomeAndEnd();
80
+ }
81
+ disableSmoothScroll() {
82
+ this.smoothScrollEnabled = false;
83
+ }
84
+ enableSmoothScroll() {
85
+ this.smoothScrollEnabled = true;
86
+ }
87
+ openDropdown() {
88
+ var _a;
89
+ (_a = this.dropdown) === null || _a === void 0 ? void 0 : _a.open();
90
+ }
91
+ closeDropdown() {
92
+ var _a;
93
+ (_a = this.dropdown) === null || _a === void 0 ? void 0 : _a.close();
94
+ }
95
+ handleFocusOut(event) {
96
+ if (this.isOpen) {
97
+ event.stopImmediatePropagation();
98
+ }
99
+ this.onTouched();
100
+ }
101
+ }
102
+ AutocompleteControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
103
+ AutocompleteControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AutocompleteControl, isStandalone: true, inputs: { isLoading: "isLoading", stringify: "stringify" }, outputs: { optionSelected: "optionSelected" }, host: { listeners: { "focusout": "handleFocusOut($event)" }, properties: { "class.is-open": "isOpen", "attr.aria-disabled": "isDisabled || null" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
104
+ __decorate([
105
+ Transform(coerceBooleanProperty),
106
+ __metadata("design:type", Object)
107
+ ], AutocompleteControl.prototype, "isLoading", void 0);
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteControl, decorators: [{
109
+ type: Directive,
110
+ args: [{
111
+ standalone: true,
112
+ host: {
113
+ '[class.is-open]': 'isOpen',
114
+ '[attr.aria-disabled]': 'isDisabled || null',
115
+ },
116
+ }]
117
+ }], ctorParameters: function () { return []; }, propDecorators: { dropdown: [{
118
+ type: ViewChild,
119
+ args: [DropdownDirective]
120
+ }], isLoading: [{
121
+ type: Input
122
+ }], stringify: [{
123
+ type: Input
124
+ }], optionSelected: [{
125
+ type: Output
126
+ }], handleFocusOut: [{
127
+ type: HostListener,
128
+ args: ['focusout', ['$event']]
129
+ }] } });
130
+
131
+ class BaseSearchFilterPipe {
132
+ constructor() {
133
+ this.stringSearchHandler = inject(ODX_STRING_SEARCH_HANDLER);
134
+ this.stringify = inject(ODX_STRINGIFY);
135
+ }
136
+ transform(items, searchHandler) {
137
+ if (this.searchField) {
138
+ return this.filter(items, this.searchField.nativeElementValue, searchHandler);
139
+ }
140
+ return items;
141
+ }
142
+ filter(items, query, searchHandler) {
143
+ if (!items)
144
+ return null;
145
+ query = this.queryHandler(query);
146
+ if (query === '')
147
+ return items;
148
+ const search = searchHandler !== null && searchHandler !== void 0 ? searchHandler : this.stringSearchHandler;
149
+ return items.filter((item) => search(this.searchBy(item), query));
150
+ }
151
+ }
152
+ __decorate([
153
+ Pure,
154
+ __metadata("design:type", Function),
155
+ __metadata("design:paramtypes", [Object, String, Function]),
156
+ __metadata("design:returntype", Object)
157
+ ], BaseSearchFilterPipe.prototype, "filter", null);
158
+
159
+ /**
160
+ * Generated bundle index. Do not edit.
161
+ */
162
+
163
+ export { AutocompleteControl, BaseSearchFieldDirective, BaseSearchFilterPipe };
164
+ //# sourceMappingURL=odx-angular-cdk-autocomplete-control.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-cdk-autocomplete-control.mjs","sources":["../../../../libs/angular/cdk/autocomplete-control/src/lib/abstract/base-search-field.directive.ts","../../../../libs/angular/cdk/autocomplete-control/src/lib/autocomplete-control.ts","../../../../libs/angular/cdk/autocomplete-control/src/lib/pipes/base-search-filter-pipe.ts","../../../../libs/angular/cdk/autocomplete-control/src/odx-angular-cdk-autocomplete-control.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\n\n@Directive({\n standalone: true,\n host: {\n '[class.odx-form-field-control]': 'true',\n },\n})\nexport abstract class BaseSearchFieldDirective {\n protected readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLInputElement>();\n\n public valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n distinctUntilChanged(),\n map(() => this.nativeElementValue),\n this.takeUntilDestroyed()\n );\n\n public get nativeElementValue(): string {\n return this.element.nativeElement.value;\n }\n\n public set nativeElementValue(value: string) {\n this.element.nativeElement.value = value;\n }\n\n public focus(): void {\n this.element.nativeElement.focus();\n }\n\n public blur(): void {\n this.element.nativeElement.blur();\n }\n\n public reset(): void {\n this.element.nativeElement.value = '';\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, ChangeDetectorRef, Directive, EventEmitter, HostListener, inject, Input, Output, QueryList, ViewChild } from '@angular/core';\nimport { detectControllerChanges, StringifyFn } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { DropdownDirective } from '@odx/angular/components/dropdown';\nimport { injectElement, isFunction, Transform, untilDestroyed } from '@odx/angular/utils';\nimport { BaseSearchFieldDirective } from './abstract';\n\n@Directive({\n standalone: true,\n host: {\n '[class.is-open]': 'isOpen',\n '[attr.aria-disabled]': 'isDisabled || null',\n },\n})\nexport abstract class AutocompleteControl<T> extends CustomFormControl<T | null> implements AfterViewInit {\n public static ngAcceptInputType_isLoading: BooleanInput;\n\n protected keyManager?: ActiveDescendantKeyManager<OptionControl<T>>;\n\n protected smoothScrollEnabled = false;\n\n @ViewChild(DropdownDirective)\n protected readonly dropdown?: DropdownDirective;\n\n protected abstract readonly options?: QueryList<OptionControl<T>>;\n\n protected readonly takeUntilDestroyed = untilDestroyed();\n\n protected readonly changeDetector = inject(ChangeDetectorRef);\n\n public abstract searchField?: BaseSearchFieldDirective;\n\n public readonly element = injectElement();\n\n public get hasOptions(): boolean {\n return !!this.options?.length;\n }\n\n public get isOpen(): boolean {\n return !!this.dropdown?.isOpen;\n }\n\n @Transform(coerceBooleanProperty)\n @Input()\n public isLoading = false;\n\n @Input()\n public stringify?: StringifyFn<unknown>;\n\n @Output()\n public optionSelected = new EventEmitter<T>();\n\n constructor() {\n super(null);\n detectControllerChanges(this).subscribe();\n }\n\n public ngAfterViewInit(): void {\n if (!this.options) return;\n\n this.initKeyManager(this.options);\n this.handleQueryListOption(this.options);\n this.handleSearchFieldChanges();\n }\n\n public scrollOptionIntoView({ element }: OptionControl<T>): void {\n const behavior = this.smoothScrollEnabled ? 'smooth' : undefined;\n if (isFunction(element.nativeElement.scrollIntoView)) {\n element.nativeElement.scrollIntoView({ block: 'center', behavior });\n }\n }\n\n protected abstract handleQueryListOption(options: QueryList<OptionControl<T>>): void;\n\n protected abstract handleSearchFieldChanges(): void;\n\n protected abstract activateSelectedOption(): void;\n\n protected initKeyManager(options: QueryList<OptionControl<T>>): void {\n this.keyManager = new ActiveDescendantKeyManager(options).withHomeAndEnd();\n }\n\n protected disableSmoothScroll(): void {\n this.smoothScrollEnabled = false;\n }\n\n protected enableSmoothScroll(): void {\n this.smoothScrollEnabled = true;\n }\n\n protected openDropdown(): void {\n this.dropdown?.open();\n }\n\n protected closeDropdown(): void {\n this.dropdown?.close();\n }\n\n @HostListener('focusout', ['$event'])\n protected handleFocusOut(event: FocusEvent): void {\n if (this.isOpen) {\n event.stopImmediatePropagation();\n }\n this.onTouched();\n }\n}\n","import { inject } from '@angular/core';\nimport { ODX_STRINGIFY, ODX_STRING_SEARCH_HANDLER, StringifyFn, StringSearchHandler } from '@odx/angular';\nimport { Pure } from '@odx/angular/utils';\nimport { BaseSearchFieldDirective } from '../abstract';\n\nexport abstract class BaseSearchFilterPipe {\n private readonly stringSearchHandler = inject(ODX_STRING_SEARCH_HANDLER);\n protected readonly stringify = inject(ODX_STRINGIFY);\n\n public transform<T>(items: T[] | null, searchHandler?: StringSearchHandler): T[] | null {\n if (this.searchField) {\n return this.filter(items, this.searchField.nativeElementValue, searchHandler);\n }\n return items;\n }\n\n protected abstract get searchField(): BaseSearchFieldDirective | undefined;\n protected abstract get searchBy(): StringifyFn<unknown>;\n protected abstract queryHandler(query: string): string;\n\n @Pure\n private filter<T>(items: T[] | null, query: string, searchHandler?: StringSearchHandler): T[] | null {\n if (!items) return null;\n\n query = this.queryHandler(query);\n\n if (query === '') return items;\n\n const search = searchHandler ?? this.stringSearchHandler;\n\n return items.filter((item: T) => search(this.searchBy(item), query));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -27,14 +27,14 @@ class ExpandableItemDirective {
27
27
  get expanded() {
28
28
  return this._expanded;
29
29
  }
30
- toggle() {
31
- this.expanded = !this.expanded;
30
+ toggle(forceState) {
31
+ this.expanded = forceState !== null && forceState !== void 0 ? forceState : !this.expanded;
32
32
  }
33
33
  open() {
34
- this.expanded = true;
34
+ this.toggle(true);
35
35
  }
36
36
  close() {
37
- this.expanded = false;
37
+ this.toggle(false);
38
38
  }
39
39
  }
40
40
  ExpandableItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExpandableItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-expandable.mjs","sources":["../../../../libs/angular/cdk/expandable/src/lib/expandable.tokens.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/expandable-item.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/extandable-container.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/expandable.module.ts","../../../../libs/angular/cdk/expandable/src/odx-angular-cdk-expandable.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ExpandableContainer } from './facade';\n\nexport const EXPANDABLE_CONTAINER = new InjectionToken<ExpandableContainer>('@odx/angular/cdk/expandable::ExpandableContainer');\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Directive, Input, inject } from '@angular/core';\nimport { getUniqueId } from '@odx/angular/utils';\nimport { EXPANDABLE_CONTAINER } from '../expandable.tokens';\nimport { ExpandableItem } from '../facade';\n\n@Directive({\n standalone: true,\n selector: '[odxExpandableItem]',\n})\nexport class ExpandableItemDirective implements ExpandableItem {\n public static ngAcceptInputType_expanded: BooleanInput;\n\n private readonly container = inject(EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private _expanded = false;\n\n public readonly id = getUniqueId('odx-expandable-item');\n\n @Input()\n public set expanded(value: boolean) {\n this._expanded = coerceBooleanProperty(value);\n if (this._expanded) {\n this.container?.open(this);\n } else {\n this.container?.close(this);\n }\n this.changeDetectorRef.markForCheck();\n }\n public get expanded(): boolean {\n return this._expanded;\n }\n\n public toggle(): void {\n this.expanded = !this.expanded;\n }\n\n public open(): void {\n this.expanded = true;\n }\n\n public close(): void {\n this.expanded = false;\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\nimport { Transform } from '@odx/angular/utils';\nimport { ExpandableContainer, ExpandableItem } from '../facade';\n\n@Directive({\n standalone: true,\n selector: '[odxExpandableContainer]',\n})\nexport class ExpandableContainerDirective implements ExpandableContainer {\n public static ngAcceptInputType_multiple: BooleanInput;\n\n private openItems: Record<string, ExpandableItem> = {};\n\n @Transform(coerceBooleanProperty)\n @Input()\n public multiple = false;\n\n public close(item: ExpandableItem): void {\n delete this.openItems[item.id];\n }\n\n public closeAll(): void {\n for (const item of Object.values(this.openItems)) {\n item.close();\n }\n }\n\n public open(item: ExpandableItem): void {\n if (!this.multiple) {\n this.closeAll();\n }\n this.openItems[item.id] = item;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ExpandableContainerDirective, ExpandableItemDirective } from './directives';\n\nconst modules = [ExpandableContainerDirective, ExpandableItemDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class ExpandableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-cdk-expandable.mjs","sources":["../../../../libs/angular/cdk/expandable/src/lib/expandable.tokens.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/expandable-item.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/directives/extandable-container.directive.ts","../../../../libs/angular/cdk/expandable/src/lib/expandable.module.ts","../../../../libs/angular/cdk/expandable/src/odx-angular-cdk-expandable.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ExpandableContainer } from './facade';\n\nexport const EXPANDABLE_CONTAINER = new InjectionToken<ExpandableContainer>('@odx/angular/cdk/expandable::ExpandableContainer');\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Directive, Input, inject } from '@angular/core';\nimport { getUniqueId } from '@odx/angular/utils';\nimport { EXPANDABLE_CONTAINER } from '../expandable.tokens';\nimport { ExpandableItem } from '../facade';\n\n@Directive({\n standalone: true,\n selector: '[odxExpandableItem]',\n})\nexport class ExpandableItemDirective implements ExpandableItem {\n public static ngAcceptInputType_expanded: BooleanInput;\n\n private readonly container = inject(EXPANDABLE_CONTAINER, { optional: true, skipSelf: true });\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private _expanded = false;\n\n public readonly id = getUniqueId('odx-expandable-item');\n\n @Input()\n public set expanded(value: boolean) {\n this._expanded = coerceBooleanProperty(value);\n if (this._expanded) {\n this.container?.open(this);\n } else {\n this.container?.close(this);\n }\n this.changeDetectorRef.markForCheck();\n }\n public get expanded(): boolean {\n return this._expanded;\n }\n\n public toggle(forceState?: boolean): void {\n this.expanded = forceState ?? !this.expanded;\n }\n\n public open(): void {\n this.toggle(true);\n }\n\n public close(): void {\n this.toggle(false);\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\nimport { Transform } from '@odx/angular/utils';\nimport { ExpandableContainer, ExpandableItem } from '../facade';\n\n@Directive({\n standalone: true,\n selector: '[odxExpandableContainer]',\n})\nexport class ExpandableContainerDirective implements ExpandableContainer {\n public static ngAcceptInputType_multiple: BooleanInput;\n\n private openItems: Record<string, ExpandableItem> = {};\n\n @Transform(coerceBooleanProperty)\n @Input()\n public multiple = false;\n\n public close(item: ExpandableItem): void {\n delete this.openItems[item.id];\n }\n\n public closeAll(): void {\n for (const item of Object.values(this.openItems)) {\n item.close();\n }\n }\n\n public open(item: ExpandableItem): void {\n if (!this.multiple) {\n this.closeAll();\n }\n this.openItems[item.id] = item;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ExpandableContainerDirective, ExpandableItemDirective } from './directives';\n\nconst modules = [ExpandableContainerDirective, ExpandableItemDirective];\n\n@NgModule({\n imports: modules,\n exports: modules,\n})\nexport class ExpandableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ChangeDetectorRef, Directive, Input, HostListener } from '@angular/core';
3
+ import { untilDestroyed, injectElement } from '@odx/angular/utils';
4
+
5
+ class OptionControl {
6
+ constructor() {
7
+ this.takeUntilDestroyed = untilDestroyed();
8
+ this.cdr = inject(ChangeDetectorRef);
9
+ this.isActive = false;
10
+ this.value = null;
11
+ this.element = injectElement();
12
+ }
13
+ setActiveStyles() {
14
+ this.isActive = true;
15
+ }
16
+ setInactiveStyles() {
17
+ this.isActive = false;
18
+ }
19
+ getLabel() {
20
+ var _a, _b;
21
+ return (_b = (_a = this.element.nativeElement.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
22
+ }
23
+ select(event) {
24
+ event.stopPropagation();
25
+ event.preventDefault();
26
+ this.selectOption();
27
+ }
28
+ }
29
+ OptionControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OptionControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
30
+ OptionControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OptionControl, isStandalone: true, inputs: { value: "value" }, host: { attributes: { "role": "option" }, listeners: { "click": "select($event)" }, properties: { "class.odx-option": "true", "class.is-active": "isActive", "attr.aria-selected": "isSelected", "class.is-selected": "isSelected" } }, ngImport: i0 });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OptionControl, decorators: [{
32
+ type: Directive,
33
+ args: [{
34
+ standalone: true,
35
+ host: {
36
+ role: 'option',
37
+ '[class.odx-option]': 'true',
38
+ '[class.is-active]': 'isActive',
39
+ '[attr.aria-selected]': 'isSelected',
40
+ '[class.is-selected]': 'isSelected',
41
+ },
42
+ }]
43
+ }], propDecorators: { value: [{
44
+ type: Input
45
+ }], select: [{
46
+ type: HostListener,
47
+ args: ['click', ['$event']]
48
+ }] } });
49
+
50
+ /**
51
+ * Generated bundle index. Do not edit.
52
+ */
53
+
54
+ export { OptionControl };
55
+ //# sourceMappingURL=odx-angular-cdk-option-control.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-cdk-option-control.mjs","sources":["../../../../libs/angular/cdk/option-control/src/lib/option-control.ts","../../../../libs/angular/cdk/option-control/src/odx-angular-cdk-option-control.ts"],"sourcesContent":["import { Highlightable } from '@angular/cdk/a11y';\nimport { ChangeDetectorRef, Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n host: {\n role: 'option',\n '[class.odx-option]': 'true',\n '[class.is-active]': 'isActive',\n '[attr.aria-selected]': 'isSelected',\n '[class.is-selected]': 'isSelected',\n },\n})\nexport abstract class OptionControl<T> implements Highlightable {\n protected readonly takeUntilDestroyed = untilDestroyed();\n protected readonly cdr = inject(ChangeDetectorRef);\n\n protected isActive = false;\n\n @Input()\n public value: T | null = null;\n\n public readonly element: ElementRef<HTMLElement> = injectElement();\n\n public setActiveStyles(): void {\n this.isActive = true;\n }\n\n public setInactiveStyles(): void {\n this.isActive = false;\n }\n\n public getLabel(): string {\n return this.element.nativeElement.textContent?.trim() ?? '';\n }\n\n protected abstract selectOption(): void;\n\n @HostListener('click', ['$event'])\n protected select(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n\n this.selectOption();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAcsB,aAAa,CAAA;AAVnC,IAAA,WAAA,GAAA;AAWqB,QAAA,IAAkB,CAAA,kBAAA,GAAG,cAAc,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEzC,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAGpB,QAAA,IAAK,CAAA,KAAA,GAAa,IAAI,CAAC;AAEd,QAAA,IAAO,CAAA,OAAA,GAA4B,aAAa,EAAE,CAAC;KAuBpE;IArBQ,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;IAEM,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;IAEM,QAAQ,GAAA;;AACb,QAAA,OAAO,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;KAC7D;AAKS,IAAA,MAAM,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;;0GA/BmB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,mBAAmB,EAAE,UAAU;AAC/B,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,qBAAqB,EAAE,YAAY;AACpC,qBAAA;iBACF,CAAA;8BAQQ,KAAK,EAAA,CAAA;sBADX,KAAK;gBAoBI,MAAM,EAAA,CAAA;sBADf,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACvCnC;;AAEG;;;;"}
@@ -0,0 +1,263 @@
1
+ import { __decorate } from 'tslib';
2
+ import * as i0 from '@angular/core';
3
+ import { InjectionToken, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, forwardRef, ContentChildren, ContentChild, HostListener, Pipe, NgModule } from '@angular/core';
4
+ import * as i1 from '@odx/angular';
5
+ import { CoreModule, ReadonlyController, WithTabIndex, ClickOutsideDirective } from '@odx/angular';
6
+ import { BaseSearchFieldDirective, AutocompleteControl, BaseSearchFilterPipe } from '@odx/angular/cdk/autocomplete-control';
7
+ import { DropdownDirective } from '@odx/angular/components/dropdown';
8
+ import { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';
9
+ import { CSSComponent } from '@odx/angular/internal';
10
+ import { fromQueryList } from '@odx/angular/rxjs';
11
+ import { deferFn } from '@odx/angular/utils';
12
+ import { OptionControl } from '@odx/angular/cdk/option-control';
13
+ import * as i2 from '@angular/common';
14
+
15
+ const AUTOCOMPLETE_CONTROL = new InjectionToken('@odx/angular/components/autocomplete::AutocompleteComponent');
16
+
17
+ let AutocompleteOptionComponent = class AutocompleteOptionComponent extends OptionControl {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.autocompleteControl = inject(AUTOCOMPLETE_CONTROL);
21
+ }
22
+ setActiveStyles() {
23
+ this.isActive = true;
24
+ if (this.autocompleteControl.isOpen) {
25
+ this.autocompleteControl.scrollOptionIntoView(this);
26
+ }
27
+ }
28
+ selectOption() {
29
+ this.autocompleteControl.selectOption(this);
30
+ }
31
+ };
32
+ AutocompleteOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteOptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
33
+ AutocompleteOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AutocompleteOptionComponent, isStandalone: true, selector: "odx-autocomplete-option", usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
34
+ AutocompleteOptionComponent = __decorate([
35
+ CSSComponent('autocomplete-option')
36
+ ], AutocompleteOptionComponent);
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteOptionComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ standalone: true, selector: 'odx-autocomplete-option', imports: [CoreModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
40
+ }] });
41
+
42
+ class AutocompleteSearchFieldDirective extends BaseSearchFieldDirective {
43
+ constructor() {
44
+ super(...arguments);
45
+ this.readonlyController = ReadonlyController.inject();
46
+ }
47
+ }
48
+ AutocompleteSearchFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteSearchFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
49
+ AutocompleteSearchFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AutocompleteSearchFieldDirective, isStandalone: true, selector: "input[odxAutocompleteControl]", host: { properties: { "attr.readonly": "readonlyController?.readonly || null" } }, providers: [ReadonlyController.connect()], usesInheritance: true, hostDirectives: [{ directive: i1.WithTabIndex }], ngImport: i0 });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteSearchFieldDirective, decorators: [{
51
+ type: Directive,
52
+ args: [{
53
+ standalone: true,
54
+ selector: 'input[odxAutocompleteControl]',
55
+ host: {
56
+ '[attr.readonly]': 'readonlyController?.readonly || null',
57
+ },
58
+ providers: [ReadonlyController.connect()],
59
+ hostDirectives: [WithTabIndex],
60
+ }]
61
+ }] });
62
+
63
+ var AutocompleteComponent_1;
64
+ let AutocompleteComponent = AutocompleteComponent_1 = class AutocompleteComponent extends AutocompleteControl {
65
+ constructor() {
66
+ super(...arguments);
67
+ this.defaultActiveOptionIndex = 0;
68
+ this.clickOutsideDirective = inject(ClickOutsideDirective, { host: true });
69
+ this.dropdownOpenTriggers = [];
70
+ }
71
+ ngAfterViewInit() {
72
+ if (!this.options)
73
+ return;
74
+ this.initKeyManager(this.options);
75
+ this.handleQueryListOption(this.options);
76
+ this.handleSearchFieldChanges();
77
+ this.handleClickOutside();
78
+ }
79
+ selectOption(option) {
80
+ if (!(option === null || option === void 0 ? void 0 : option.value))
81
+ return;
82
+ this.updateValue(option.value);
83
+ this.updateSearchField(option.value);
84
+ this.optionSelected.emit(option.value);
85
+ this.closeDropdown();
86
+ }
87
+ resetSearchField() {
88
+ var _a;
89
+ this.updateValue('');
90
+ (_a = this.searchField) === null || _a === void 0 ? void 0 : _a.reset();
91
+ }
92
+ handleQueryListOption(options) {
93
+ fromQueryList(options)
94
+ .pipe(this.takeUntilDestroyed())
95
+ .subscribe(() => {
96
+ if (this.isOpen) {
97
+ deferFn(() => this.activateSelectedOption());
98
+ }
99
+ });
100
+ }
101
+ handleSearchFieldChanges() {
102
+ var _a;
103
+ (_a = this.searchField) === null || _a === void 0 ? void 0 : _a.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => {
104
+ this.triggerControllerChange();
105
+ deferFn(() => this.handleSearchFieldValueChange());
106
+ });
107
+ }
108
+ handleClickOutside() {
109
+ this.clickOutsideDirective.odxClickOutside.pipe(this.takeUntilDestroyed()).subscribe(() => this.clickOutside());
110
+ }
111
+ clickOutside() {
112
+ this.closeDropdown();
113
+ this.blurSelectSearchField();
114
+ }
115
+ handleSearchFieldValueChange() {
116
+ var _a, _b;
117
+ this.updateValue(((_b = (_a = this.searchField) === null || _a === void 0 ? void 0 : _a.nativeElementValue) !== null && _b !== void 0 ? _b : ''));
118
+ if (this.isOpen && !this.hasOptions) {
119
+ this.closeDropdown();
120
+ return;
121
+ }
122
+ if (this.isOpen && this.hasOptions) {
123
+ return;
124
+ }
125
+ if (!this.isOpen && this.hasOptions) {
126
+ this.openDropdown();
127
+ }
128
+ }
129
+ handleClickEvent() {
130
+ if (this.isLoading && this.isOpen) {
131
+ this.closeDropdown();
132
+ this.blurSelectSearchField();
133
+ return;
134
+ }
135
+ if (this.isReadonly || this.isDisabled)
136
+ return;
137
+ if (!this.isOpen && this.hasOptions) {
138
+ this.openDropdown();
139
+ }
140
+ }
141
+ handleKeyboardEvent(event) {
142
+ var _a, _b, _c;
143
+ if (this.isReadonly || this.isDisabled)
144
+ return;
145
+ if (this.isOpen && this.hasOptions) {
146
+ if (event.key === 'Enter' || event.key === 'Tab') {
147
+ event.preventDefault();
148
+ event.stopImmediatePropagation();
149
+ this.selectOption((_a = this.keyManager) === null || _a === void 0 ? void 0 : _a.activeItem);
150
+ return;
151
+ }
152
+ }
153
+ if (event.key === 'Enter') {
154
+ this.optionSelected.emit(((_b = this.value) !== null && _b !== void 0 ? _b : ''));
155
+ return;
156
+ }
157
+ if (!this.isOpen && event.key === 'Tab') {
158
+ return;
159
+ }
160
+ if (!this.isOpen && this.hasOptions) {
161
+ this.openDropdown();
162
+ return;
163
+ }
164
+ (_c = this.keyManager) === null || _c === void 0 ? void 0 : _c.onKeydown(event);
165
+ }
166
+ activateSelectedOption() {
167
+ var _a;
168
+ (_a = this.keyManager) === null || _a === void 0 ? void 0 : _a.setActiveItem(this.defaultActiveOptionIndex);
169
+ }
170
+ onDropdownBeforeOpen() {
171
+ this.activateSelectedOption();
172
+ }
173
+ updateSearchField(value) {
174
+ var _a, _b;
175
+ if (!this.searchField)
176
+ return;
177
+ this.searchField.nativeElementValue = (_b = (_a = this.stringify) === null || _a === void 0 ? void 0 : _a.call(this, value)) !== null && _b !== void 0 ? _b : value;
178
+ }
179
+ blurSelectSearchField() {
180
+ var _a;
181
+ (_a = this.searchField) === null || _a === void 0 ? void 0 : _a.blur();
182
+ }
183
+ };
184
+ AutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
185
+ AutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AutocompleteComponent, isStandalone: true, selector: "odx-autocomplete", host: { listeners: { "click": "handleClickEvent()", "keydown": "handleKeyboardEvent($event)" } }, providers: [
186
+ {
187
+ provide: AUTOCOMPLETE_CONTROL,
188
+ useExisting: forwardRef(() => AutocompleteComponent_1),
189
+ },
190
+ ], queries: [{ propertyName: "searchField", first: true, predicate: AutocompleteSearchFieldDirective, descendants: true }, { propertyName: "options", predicate: AutocompleteOptionComponent, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.ClickOutsideDirective }], ngImport: i0, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-autocomplete__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n [odxDropdownOpenTrigger]=\"dropdownOpenTriggers\"\n [odxDropdownClickOutsideActive]=\"false\"\n (odxDropdownBeforeOpen)=\"onDropdownBeforeOpen()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n (odxDropdownBeforeClose)=\"disableSmoothScroll()\"\n>\n <ng-content select=\"input[odxAutocompleteControl]\"></ng-content>\n</div>\n\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
191
+ AutocompleteComponent = AutocompleteComponent_1 = __decorate([
192
+ CSSComponent('autocomplete')
193
+ ], AutocompleteComponent);
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteComponent, decorators: [{
195
+ type: Component,
196
+ args: [{ standalone: true, selector: 'odx-autocomplete', imports: [DropdownDirective, AutocompleteOptionComponent, LoadingSpinnerModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
197
+ {
198
+ provide: AUTOCOMPLETE_CONTROL,
199
+ useExisting: forwardRef(() => AutocompleteComponent),
200
+ },
201
+ ], hostDirectives: [ClickOutsideDirective], template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-autocomplete__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n [odxDropdownOpenTrigger]=\"dropdownOpenTriggers\"\n [odxDropdownClickOutsideActive]=\"false\"\n (odxDropdownBeforeOpen)=\"onDropdownBeforeOpen()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n (odxDropdownBeforeClose)=\"disableSmoothScroll()\"\n>\n <ng-content select=\"input[odxAutocompleteControl]\"></ng-content>\n</div>\n\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n</ng-template>\n" }]
202
+ }], propDecorators: { options: [{
203
+ type: ContentChildren,
204
+ args: [AutocompleteOptionComponent, { descendants: true, emitDistinctChangesOnly: true }]
205
+ }], searchField: [{
206
+ type: ContentChild,
207
+ args: [AutocompleteSearchFieldDirective]
208
+ }], handleClickEvent: [{
209
+ type: HostListener,
210
+ args: ['click']
211
+ }], handleKeyboardEvent: [{
212
+ type: HostListener,
213
+ args: ['keydown', ['$event']]
214
+ }] } });
215
+
216
+ class AutocompleteSearchFilterPipe extends BaseSearchFilterPipe {
217
+ constructor() {
218
+ super(...arguments);
219
+ this.hostController = inject(AUTOCOMPLETE_CONTROL, { optional: true });
220
+ }
221
+ get searchField() {
222
+ var _a;
223
+ return (_a = this.hostController) === null || _a === void 0 ? void 0 : _a.searchField;
224
+ }
225
+ queryHandler(query) {
226
+ return (query === null || query === void 0 ? void 0 : query.trim()) || '';
227
+ }
228
+ get searchBy() {
229
+ var _a, _b;
230
+ return (_b = (_a = this.hostController) === null || _a === void 0 ? void 0 : _a.stringify) !== null && _b !== void 0 ? _b : this.stringify;
231
+ }
232
+ }
233
+ AutocompleteSearchFilterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteSearchFilterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe });
234
+ AutocompleteSearchFilterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteSearchFilterPipe, isStandalone: true, name: "odxAutocompleteSearchFilter", pure: false });
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteSearchFilterPipe, decorators: [{
236
+ type: Pipe,
237
+ args: [{
238
+ pure: false,
239
+ name: 'odxAutocompleteSearchFilter',
240
+ standalone: true,
241
+ }]
242
+ }] });
243
+
244
+ const modules = [AutocompleteComponent, AutocompleteSearchFieldDirective, AutocompleteSearchFilterPipe, AutocompleteOptionComponent];
245
+ class AutocompleteModule {
246
+ }
247
+ AutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
248
+ AutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteModule, imports: [AutocompleteComponent, AutocompleteSearchFieldDirective, AutocompleteSearchFilterPipe, AutocompleteOptionComponent], exports: [CoreModule, AutocompleteComponent, AutocompleteSearchFieldDirective, AutocompleteSearchFilterPipe, AutocompleteOptionComponent] });
249
+ AutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteModule, imports: [AutocompleteComponent, AutocompleteOptionComponent, CoreModule] });
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutocompleteModule, decorators: [{
251
+ type: NgModule,
252
+ args: [{
253
+ imports: modules,
254
+ exports: [CoreModule, ...modules],
255
+ }]
256
+ }] });
257
+
258
+ /**
259
+ * Generated bundle index. Do not edit.
260
+ */
261
+
262
+ export { AUTOCOMPLETE_CONTROL, AutocompleteComponent, AutocompleteModule, AutocompleteOptionComponent, AutocompleteSearchFieldDirective, AutocompleteSearchFilterPipe };
263
+ //# sourceMappingURL=odx-angular-components-autocomplete.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-components-autocomplete.mjs","sources":["../../../../libs/angular/components/autocomplete/src/lib/autocomplete.tokens.ts","../../../../libs/angular/components/autocomplete/src/lib/components/option/autocomplete-option.component.ts","../../../../libs/angular/components/autocomplete/src/lib/components/option/autocomplete-option.component.html","../../../../libs/angular/components/autocomplete/src/lib/directives/autocomplete-search-field.directive.ts","../../../../libs/angular/components/autocomplete/src/lib/autocomplete.component.ts","../../../../libs/angular/components/autocomplete/src/lib/autocomplete.component.html","../../../../libs/angular/components/autocomplete/src/lib/pipes/autocomplete-search-filter.pipe.ts","../../../../libs/angular/components/autocomplete/src/lib/autocomplete.module.ts","../../../../libs/angular/components/autocomplete/src/odx-angular-components-autocomplete.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AutocompleteComponent } from './autocomplete.component';\n\nexport const AUTOCOMPLETE_CONTROL = new InjectionToken<AutocompleteComponent>('@odx/angular/components/autocomplete::AutocompleteComponent');\n","import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { OptionControl } from '@odx/angular/cdk/option-control';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { AUTOCOMPLETE_CONTROL } from '../../autocomplete.tokens';\n\n@CSSComponent('autocomplete-option')\n@Component({\n standalone: true,\n selector: 'odx-autocomplete-option',\n imports: [CoreModule],\n templateUrl: './autocomplete-option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AutocompleteOptionComponent<T> extends OptionControl<T> {\n protected readonly autocompleteControl = inject(AUTOCOMPLETE_CONTROL);\n\n public override setActiveStyles(): void {\n this.isActive = true;\n\n if (this.autocompleteControl.isOpen) {\n this.autocompleteControl.scrollOptionIntoView(this);\n }\n }\n\n protected selectOption(): void {\n this.autocompleteControl.selectOption(this);\n }\n}\n","<ng-content></ng-content>\n","import { Directive } from '@angular/core';\nimport { ReadonlyController, WithTabIndex } from '@odx/angular';\nimport { BaseSearchFieldDirective } from '@odx/angular/cdk/autocomplete-control';\n\n@Directive({\n standalone: true,\n selector: 'input[odxAutocompleteControl]',\n host: {\n '[attr.readonly]': 'readonlyController?.readonly || null',\n },\n providers: [ReadonlyController.connect()],\n hostDirectives: [WithTabIndex],\n})\nexport class AutocompleteSearchFieldDirective extends BaseSearchFieldDirective {\n protected readonly readonlyController = ReadonlyController.inject();\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n inject,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ClickOutsideDirective } from '@odx/angular';\nimport { AutocompleteControl } from '@odx/angular/cdk/autocomplete-control';\nimport { DropdownDirective } from '@odx/angular/components/dropdown';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { fromQueryList } from '@odx/angular/rxjs';\nimport { deferFn } from '@odx/angular/utils';\nimport { AUTOCOMPLETE_CONTROL } from './autocomplete.tokens';\nimport { AutocompleteOptionComponent } from './components';\nimport { AutocompleteSearchFieldDirective } from './directives';\n\n@CSSComponent('autocomplete')\n@Component({\n standalone: true,\n selector: 'odx-autocomplete',\n imports: [DropdownDirective, AutocompleteOptionComponent, LoadingSpinnerModule],\n templateUrl: './autocomplete.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AUTOCOMPLETE_CONTROL,\n useExisting: forwardRef(() => AutocompleteComponent),\n },\n ],\n hostDirectives: [ClickOutsideDirective],\n})\nexport class AutocompleteComponent<T = unknown> extends AutocompleteControl<T | null> implements AfterViewInit {\n private readonly defaultActiveOptionIndex = 0;\n\n protected readonly clickOutsideDirective = inject(ClickOutsideDirective, { host: true });\n\n @ContentChildren(AutocompleteOptionComponent, { descendants: true, emitDistinctChangesOnly: true })\n public options?: QueryList<AutocompleteOptionComponent<T>>;\n\n @ContentChild(AutocompleteSearchFieldDirective)\n public searchField?: AutocompleteSearchFieldDirective;\n\n public readonly dropdownOpenTriggers = [];\n\n public override ngAfterViewInit(): void {\n if (!this.options) return;\n\n this.initKeyManager(this.options);\n this.handleQueryListOption(this.options);\n this.handleSearchFieldChanges();\n this.handleClickOutside();\n }\n\n public selectOption(option?: AutocompleteOptionComponent<T> | null): void {\n if (!option?.value) return;\n\n this.updateValue(option.value);\n this.updateSearchField(option.value);\n\n this.optionSelected.emit(option.value);\n\n this.closeDropdown();\n }\n\n public resetSearchField(): void {\n this.updateValue('' as T);\n this.searchField?.reset();\n }\n\n protected handleQueryListOption(options: QueryList<AutocompleteOptionComponent<T>>): void {\n fromQueryList(options)\n .pipe(this.takeUntilDestroyed())\n .subscribe(() => {\n if (this.isOpen) {\n deferFn(() => this.activateSelectedOption());\n }\n });\n }\n\n protected handleSearchFieldChanges(): void {\n this.searchField?.valueChange$.pipe(this.takeUntilDestroyed()).subscribe(() => {\n this.triggerControllerChange();\n deferFn(() => this.handleSearchFieldValueChange());\n });\n }\n\n protected handleClickOutside(): void {\n this.clickOutsideDirective.odxClickOutside.pipe(this.takeUntilDestroyed()).subscribe(() => this.clickOutside());\n }\n\n protected clickOutside(): void {\n this.closeDropdown();\n this.blurSelectSearchField();\n }\n\n protected handleSearchFieldValueChange(): void {\n this.updateValue((this.searchField?.nativeElementValue ?? '') as T);\n\n if (this.isOpen && !this.hasOptions) {\n this.closeDropdown();\n return;\n }\n\n if (this.isOpen && this.hasOptions) {\n return;\n }\n\n if (!this.isOpen && this.hasOptions) {\n this.openDropdown();\n }\n }\n\n @HostListener('click')\n protected handleClickEvent() {\n if (this.isLoading && this.isOpen) {\n this.closeDropdown();\n this.blurSelectSearchField();\n return;\n }\n\n if (this.isReadonly || this.isDisabled) return;\n\n if (!this.isOpen && this.hasOptions) {\n this.openDropdown();\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected handleKeyboardEvent(event: KeyboardEvent) {\n if (this.isReadonly || this.isDisabled) return;\n\n if (this.isOpen && this.hasOptions) {\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.selectOption(this.keyManager?.activeItem as AutocompleteOptionComponent<T> | undefined);\n return;\n }\n }\n\n if (event.key === 'Enter') {\n this.optionSelected.emit((this.value ?? '') as T);\n return;\n }\n\n if (!this.isOpen && event.key === 'Tab') {\n return;\n }\n\n if (!this.isOpen && this.hasOptions) {\n this.openDropdown();\n return;\n }\n\n this.keyManager?.onKeydown(event);\n }\n\n protected activateSelectedOption(): void {\n this.keyManager?.setActiveItem(this.defaultActiveOptionIndex);\n }\n\n protected onDropdownBeforeOpen(): void {\n this.activateSelectedOption();\n }\n\n private updateSearchField(value: T): void {\n if (!this.searchField) return;\n\n this.searchField.nativeElementValue = this.stringify?.(value) ?? (value as string);\n }\n\n private blurSelectSearchField(): void {\n this.searchField?.blur();\n }\n}\n","<div\n aria-haspopup=\"listbox\"\n class=\"odx-autocomplete__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n [odxDropdownOpenTrigger]=\"dropdownOpenTriggers\"\n [odxDropdownClickOutsideActive]=\"false\"\n (odxDropdownBeforeOpen)=\"onDropdownBeforeOpen()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n (odxDropdownBeforeClose)=\"disableSmoothScroll()\"\n>\n <ng-content select=\"input[odxAutocompleteControl]\"></ng-content>\n</div>\n\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n</ng-template>\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { StringifyFn } from '@odx/angular';\nimport { BaseSearchFieldDirective, BaseSearchFilterPipe } from '@odx/angular/cdk/autocomplete-control';\nimport { AUTOCOMPLETE_CONTROL } from '../autocomplete.tokens';\n\n@Pipe({\n pure: false,\n name: 'odxAutocompleteSearchFilter',\n standalone: true,\n})\nexport class AutocompleteSearchFilterPipe extends BaseSearchFilterPipe implements PipeTransform {\n protected readonly hostController = inject(AUTOCOMPLETE_CONTROL, { optional: true });\n\n protected get searchField(): BaseSearchFieldDirective | undefined {\n return this.hostController?.searchField;\n }\n\n protected queryHandler(query: string): string {\n return query?.trim() || '';\n }\n\n protected get searchBy(): StringifyFn<unknown> {\n return this.hostController?.stringify ?? this.stringify;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { AutocompleteOptionComponent } from './components';\nimport { AutocompleteSearchFieldDirective } from './directives';\nimport { AutocompleteSearchFilterPipe } from './pipes';\n\nconst modules = [AutocompleteComponent, AutocompleteSearchFieldDirective, AutocompleteSearchFilterPipe, AutocompleteOptionComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class AutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}