@odx/angular 1.0.0-rc.6 → 1.0.0-rc.7

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 (193) hide show
  1. package/cdk/connected-overlay/README.md +3 -0
  2. package/cdk/connected-overlay/index.d.ts +3 -0
  3. package/cdk/connected-overlay/lib/connected-overlay.component.d.ts +28 -0
  4. package/cdk/connected-overlay/lib/connected-overlay.service.d.ts +10 -0
  5. package/cdk/connected-overlay/lib/helpers/compute-overlay-position.d.ts +3 -0
  6. package/cdk/connected-overlay/lib/helpers/get-opposite-overlay-side.d.ts +2 -0
  7. package/cdk/connected-overlay/lib/helpers/get-overlay-side.d.ts +2 -0
  8. package/cdk/connected-overlay/lib/helpers/index.d.ts +3 -0
  9. package/cdk/connected-overlay/lib/models/connected-overlay-options.d.ts +23 -0
  10. package/cdk/connected-overlay/lib/models/connected-overlay-ref.d.ts +12 -0
  11. package/cdk/connected-overlay/lib/models/index.d.ts +2 -0
  12. package/cdk/dynamic-view/lib/models/dynamic-view-options.d.ts +1 -1
  13. package/components/circular-progress/lib/circular-progress.component.d.ts +1 -0
  14. package/components/dropdown/README.md +3 -0
  15. package/components/dropdown/index.d.ts +3 -0
  16. package/components/dropdown/lib/dropdown.component.d.ts +11 -0
  17. package/components/dropdown/lib/dropdown.directive.d.ts +32 -0
  18. package/components/dropdown/lib/dropdown.module.d.ts +8 -0
  19. package/components/dropdown/lib/models/dropdown-options.d.ts +3 -0
  20. package/components/dropdown/lib/models/index.d.ts +1 -0
  21. package/components/inline-message/README.md +3 -0
  22. package/components/inline-message/index.d.ts +2 -0
  23. package/components/inline-message/lib/inline-message.component.d.ts +9 -0
  24. package/components/inline-message/lib/models/inline-message-variant.d.ts +7 -0
  25. package/components/loading-spinner/lib/loading-spinner.component.d.ts +2 -2
  26. package/components/loading-spinner/lib/loading-spinner.directive.d.ts +6 -7
  27. package/components/select/README.md +3 -0
  28. package/components/select/index.d.ts +7 -0
  29. package/components/select/lib/abstract/index.d.ts +2 -0
  30. package/components/select/lib/abstract/select-control-option.d.ts +7 -0
  31. package/components/select/lib/abstract/select-control.d.ts +11 -0
  32. package/components/select/lib/components/index.d.ts +1 -0
  33. package/components/select/lib/components/option/option.component.d.ts +22 -0
  34. package/components/select/lib/directives/index.d.ts +1 -0
  35. package/components/select/lib/directives/select-search-field.directive.d.ts +13 -0
  36. package/components/select/lib/pipes/index.d.ts +1 -0
  37. package/components/select/lib/pipes/select-search-filter.pipe.d.ts +13 -0
  38. package/components/select/lib/select.component.d.ts +50 -0
  39. package/components/select/lib/select.module.d.ts +11 -0
  40. package/components/select/lib/select.tokens.d.ts +3 -0
  41. package/components/spinbox/README.md +3 -0
  42. package/components/spinbox/index.d.ts +1 -0
  43. package/components/spinbox/lib/spinbox.component.d.ts +25 -0
  44. package/components/tooltip/README.md +3 -0
  45. package/components/tooltip/index.d.ts +3 -0
  46. package/components/tooltip/lib/helpers/index.d.ts +1 -0
  47. package/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.d.ts +2 -0
  48. package/components/tooltip/lib/models/index.d.ts +3 -0
  49. package/components/tooltip/lib/models/tooltip-options.d.ts +10 -0
  50. package/components/tooltip/lib/models/tooltip-size.d.ts +7 -0
  51. package/components/tooltip/lib/models/tooltip-trigger.d.ts +1 -0
  52. package/components/tooltip/lib/tooltip.component.d.ts +12 -0
  53. package/components/tooltip/lib/tooltip.directive.d.ts +33 -0
  54. package/esm2020/cdk/connected-overlay/index.mjs +4 -0
  55. package/esm2020/cdk/connected-overlay/lib/connected-overlay.component.mjs +112 -0
  56. package/esm2020/cdk/connected-overlay/lib/connected-overlay.service.mjs +25 -0
  57. package/esm2020/cdk/connected-overlay/lib/helpers/compute-overlay-position.mjs +57 -0
  58. package/esm2020/cdk/connected-overlay/lib/helpers/get-opposite-overlay-side.mjs +13 -0
  59. package/esm2020/cdk/connected-overlay/lib/helpers/get-overlay-side.mjs +4 -0
  60. package/esm2020/cdk/connected-overlay/lib/helpers/index.mjs +4 -0
  61. package/esm2020/cdk/connected-overlay/lib/models/connected-overlay-options.mjs +10 -0
  62. package/esm2020/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +15 -0
  63. package/esm2020/cdk/connected-overlay/lib/models/index.mjs +3 -0
  64. package/esm2020/cdk/connected-overlay/odx-angular-cdk-connected-overlay.mjs +5 -0
  65. package/esm2020/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +5 -3
  66. package/esm2020/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +4 -2
  67. package/esm2020/cdk/dynamic-view/lib/models/dynamic-view-options.mjs +1 -1
  68. package/esm2020/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +3 -3
  69. package/esm2020/components/circular-progress/lib/circular-progress.component.mjs +11 -4
  70. package/esm2020/components/dropdown/index.mjs +4 -0
  71. package/esm2020/components/dropdown/lib/dropdown.component.mjs +31 -0
  72. package/esm2020/components/dropdown/lib/dropdown.directive.mjs +123 -0
  73. package/esm2020/components/dropdown/lib/dropdown.module.mjs +18 -0
  74. package/esm2020/components/dropdown/lib/models/dropdown-options.mjs +7 -0
  75. package/esm2020/components/dropdown/lib/models/index.mjs +2 -0
  76. package/esm2020/components/dropdown/odx-angular-components-dropdown.mjs +5 -0
  77. package/esm2020/components/inline-message/index.mjs +3 -0
  78. package/esm2020/components/inline-message/lib/inline-message.component.mjs +43 -0
  79. package/esm2020/components/inline-message/lib/models/inline-message-variant.mjs +7 -0
  80. package/esm2020/components/inline-message/odx-angular-components-inline-message.mjs +5 -0
  81. package/esm2020/components/loading-spinner/lib/loading-spinner.component.mjs +7 -7
  82. package/esm2020/components/loading-spinner/lib/loading-spinner.directive.mjs +28 -24
  83. package/esm2020/components/main-menu/lib/main-menu.component.mjs +3 -3
  84. package/esm2020/components/select/index.mjs +8 -0
  85. package/esm2020/components/select/lib/abstract/index.mjs +3 -0
  86. package/esm2020/components/select/lib/abstract/select-control-option.mjs +2 -0
  87. package/esm2020/components/select/lib/abstract/select-control.mjs +2 -0
  88. package/esm2020/components/select/lib/components/index.mjs +2 -0
  89. package/esm2020/components/select/lib/components/option/option.component.mjs +78 -0
  90. package/esm2020/components/select/lib/directives/index.mjs +2 -0
  91. package/esm2020/components/select/lib/directives/select-search-field.directive.mjs +47 -0
  92. package/esm2020/components/select/lib/pipes/index.mjs +2 -0
  93. package/esm2020/components/select/lib/pipes/select-search-filter.pipe.mjs +51 -0
  94. package/esm2020/components/select/lib/select.component.mjs +190 -0
  95. package/esm2020/components/select/lib/select.module.mjs +21 -0
  96. package/esm2020/components/select/lib/select.tokens.mjs +3 -0
  97. package/esm2020/components/select/odx-angular-components-select.mjs +5 -0
  98. package/esm2020/components/spinbox/index.mjs +2 -0
  99. package/esm2020/components/spinbox/lib/spinbox.component.mjs +91 -0
  100. package/esm2020/components/spinbox/odx-angular-components-spinbox.mjs +5 -0
  101. package/esm2020/components/tooltip/index.mjs +4 -0
  102. package/esm2020/components/tooltip/lib/helpers/index.mjs +2 -0
  103. package/esm2020/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.mjs +9 -0
  104. package/esm2020/components/tooltip/lib/models/index.mjs +4 -0
  105. package/esm2020/components/tooltip/lib/models/tooltip-options.mjs +10 -0
  106. package/esm2020/components/tooltip/lib/models/tooltip-size.mjs +7 -0
  107. package/esm2020/components/tooltip/lib/models/tooltip-trigger.mjs +2 -0
  108. package/esm2020/components/tooltip/lib/tooltip.component.mjs +39 -0
  109. package/esm2020/components/tooltip/lib/tooltip.directive.mjs +132 -0
  110. package/esm2020/components/tooltip/odx-angular-components-tooltip.mjs +5 -0
  111. package/esm2020/index.mjs +2 -1
  112. package/esm2020/lib/tokens/identity-matcher.mjs +7 -0
  113. package/esm2020/lib/tokens/index.mjs +4 -0
  114. package/esm2020/lib/tokens/string-search-handler.mjs +9 -0
  115. package/esm2020/lib/tokens/stringify.mjs +8 -0
  116. package/esm2020/rxjs/index.mjs +2 -1
  117. package/esm2020/rxjs/lib/delay-until.mjs +5 -0
  118. package/esm2020/utils/lib/decorators/index.mjs +2 -1
  119. package/esm2020/utils/lib/decorators/pure.mjs +37 -0
  120. package/esm2020/utils/lib/helpers/defer-fn.mjs +4 -0
  121. package/esm2020/utils/lib/helpers/event-manager.mjs +30 -0
  122. package/esm2020/utils/lib/helpers/index.mjs +3 -1
  123. package/fesm2015/odx-angular-cdk-connected-overlay.mjs +234 -0
  124. package/fesm2015/odx-angular-cdk-connected-overlay.mjs.map +1 -0
  125. package/fesm2015/odx-angular-cdk-dynamic-view.mjs +6 -3
  126. package/fesm2015/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  127. package/fesm2015/odx-angular-components-accordion.mjs +2 -2
  128. package/fesm2015/odx-angular-components-accordion.mjs.map +1 -1
  129. package/fesm2015/odx-angular-components-circular-progress.mjs +10 -3
  130. package/fesm2015/odx-angular-components-circular-progress.mjs.map +1 -1
  131. package/fesm2015/odx-angular-components-dropdown.mjs +168 -0
  132. package/fesm2015/odx-angular-components-dropdown.mjs.map +1 -0
  133. package/fesm2015/odx-angular-components-inline-message.mjs +55 -0
  134. package/fesm2015/odx-angular-components-inline-message.mjs.map +1 -0
  135. package/fesm2015/odx-angular-components-loading-spinner.mjs +75 -85
  136. package/fesm2015/odx-angular-components-loading-spinner.mjs.map +1 -1
  137. package/fesm2015/odx-angular-components-main-menu.mjs +2 -2
  138. package/fesm2015/odx-angular-components-main-menu.mjs.map +1 -1
  139. package/fesm2015/odx-angular-components-select.mjs +375 -0
  140. package/fesm2015/odx-angular-components-select.mjs.map +1 -0
  141. package/fesm2015/odx-angular-components-spinbox.mjs +100 -0
  142. package/fesm2015/odx-angular-components-spinbox.mjs.map +1 -0
  143. package/fesm2015/odx-angular-components-tooltip.mjs +187 -0
  144. package/fesm2015/odx-angular-components-tooltip.mjs.map +1 -0
  145. package/fesm2015/odx-angular-rxjs.mjs +6 -2
  146. package/fesm2015/odx-angular-rxjs.mjs.map +1 -1
  147. package/fesm2015/odx-angular-utils.mjs +72 -2
  148. package/fesm2015/odx-angular-utils.mjs.map +1 -1
  149. package/fesm2015/odx-angular.mjs +21 -1
  150. package/fesm2015/odx-angular.mjs.map +1 -1
  151. package/fesm2020/odx-angular-cdk-connected-overlay.mjs +230 -0
  152. package/fesm2020/odx-angular-cdk-connected-overlay.mjs.map +1 -0
  153. package/fesm2020/odx-angular-cdk-dynamic-view.mjs +6 -3
  154. package/fesm2020/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  155. package/fesm2020/odx-angular-components-accordion.mjs +2 -2
  156. package/fesm2020/odx-angular-components-accordion.mjs.map +1 -1
  157. package/fesm2020/odx-angular-components-circular-progress.mjs +10 -3
  158. package/fesm2020/odx-angular-components-circular-progress.mjs.map +1 -1
  159. package/fesm2020/odx-angular-components-dropdown.mjs +172 -0
  160. package/fesm2020/odx-angular-components-dropdown.mjs.map +1 -0
  161. package/fesm2020/odx-angular-components-inline-message.mjs +55 -0
  162. package/fesm2020/odx-angular-components-inline-message.mjs.map +1 -0
  163. package/fesm2020/odx-angular-components-loading-spinner.mjs +74 -84
  164. package/fesm2020/odx-angular-components-loading-spinner.mjs.map +1 -1
  165. package/fesm2020/odx-angular-components-main-menu.mjs +2 -2
  166. package/fesm2020/odx-angular-components-main-menu.mjs.map +1 -1
  167. package/fesm2020/odx-angular-components-select.mjs +362 -0
  168. package/fesm2020/odx-angular-components-select.mjs.map +1 -0
  169. package/fesm2020/odx-angular-components-spinbox.mjs +97 -0
  170. package/fesm2020/odx-angular-components-spinbox.mjs.map +1 -0
  171. package/fesm2020/odx-angular-components-tooltip.mjs +192 -0
  172. package/fesm2020/odx-angular-components-tooltip.mjs.map +1 -0
  173. package/fesm2020/odx-angular-rxjs.mjs +6 -2
  174. package/fesm2020/odx-angular-rxjs.mjs.map +1 -1
  175. package/fesm2020/odx-angular-utils.mjs +71 -2
  176. package/fesm2020/odx-angular-utils.mjs.map +1 -1
  177. package/fesm2020/odx-angular.mjs +21 -1
  178. package/fesm2020/odx-angular.mjs.map +1 -1
  179. package/index.d.ts +1 -0
  180. package/lib/tokens/identity-matcher.d.ts +3 -0
  181. package/lib/tokens/index.d.ts +3 -0
  182. package/lib/tokens/string-search-handler.d.ts +3 -0
  183. package/lib/tokens/stringify.d.ts +3 -0
  184. package/package.json +50 -2
  185. package/rxjs/index.d.ts +1 -0
  186. package/rxjs/lib/delay-until.d.ts +2 -0
  187. package/utils/lib/decorators/index.d.ts +1 -0
  188. package/utils/lib/decorators/pure.d.ts +1 -0
  189. package/utils/lib/helpers/defer-fn.d.ts +1 -0
  190. package/utils/lib/helpers/event-manager.d.ts +12 -0
  191. package/utils/lib/helpers/index.d.ts +2 -0
  192. package/components/loading-spinner/lib/loading-spinner.service.d.ts +0 -9
  193. package/esm2020/components/loading-spinner/lib/loading-spinner.service.mjs +0 -17
@@ -138,7 +138,7 @@ let MainMenuComponent = class MainMenuComponent {
138
138
  }
139
139
  };
140
140
  MainMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MainMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
141
- MainMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: "isOpen" }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keydown.escape": "close()" }, properties: { "class.is-open": "isOpen" } }, ngImport: i0, template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "directive", type: i3.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }], animations: [
141
+ MainMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: "isOpen" }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, ngImport: i0, template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "directive", type: i3.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }], animations: [
142
142
  trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
143
143
  trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
144
144
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -165,7 +165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
165
165
  type: Output
166
166
  }], close: [{
167
167
  type: HostListener,
168
- args: ['window:keydown.escape']
168
+ args: ['window:keyup.esc']
169
169
  }] } });
170
170
 
171
171
  const modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective];
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { isBoolean } from '@odx/angular/utils';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n public open(): void {\n this.toggle(true);\n }\n\n public close(): void {\n this.toggle(false);\n }\n\n public toggle(forceState?: boolean): void {\n if (isBoolean(forceState)) {\n this.isOpen$$.next(forceState);\n } else if (this.isOpen()) {\n this.isOpen$$.next(false);\n } else {\n this.isOpen$$.next(true);\n }\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n public onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { DisabledController } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, Transform } from '@odx/angular/utils';\n\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n providers: [DisabledController.connect()],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[class.is-disabled]': 'isDisabled',\n '[attr.disabled]': 'isDisabled || null',\n '[attr.role]': '\"button\"',\n '[tabindex]': 'isDisabled ? -1 : 0',\n },\n})\nexport class MainMenuItemDirective {\n public static readonly ngAcceptInputType_isSelected: BooleanInput;\n\n protected readonly disabledController = DisabledController.inject();\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement<HTMLLinkElement>();\n\n public get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n @Transform(coerceBooleanProperty)\n @Input()\n public isSelected = false;\n}\n","import { transition, trigger, useAnimation } from '@angular/animations';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, HostListener, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { fadeIn, fadeOut, slideInLeft, slideOutLeft } from '@odx/angular/animations';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from './main-menu.service';\n\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective],\n standalone: true,\n host: {\n '[class.is-open]': 'isOpen',\n },\n animations: [\n trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),\n trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),\n ],\n})\nexport class MainMenuComponent {\n public static readonly ngAcceptInputType_isOpen: BooleanInput;\n\n protected readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement();\n\n @Input()\n public title!: string;\n\n @Input()\n public subtitle: string | null = null;\n\n @Input()\n public copyright: string | null = null;\n\n @Input()\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(coerceBooleanProperty(value));\n }\n\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n @HostListener('window:keydown.escape')\n public close(): void {\n this.mainMenuService.close();\n }\n}\n","<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { isBoolean } from '@odx/angular/utils';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n public open(): void {\n this.toggle(true);\n }\n\n public close(): void {\n this.toggle(false);\n }\n\n public toggle(forceState?: boolean): void {\n if (isBoolean(forceState)) {\n this.isOpen$$.next(forceState);\n } else if (this.isOpen()) {\n this.isOpen$$.next(false);\n } else {\n this.isOpen$$.next(true);\n }\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n public onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { DisabledController } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, Transform } from '@odx/angular/utils';\n\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n providers: [DisabledController.connect()],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[class.is-disabled]': 'isDisabled',\n '[attr.disabled]': 'isDisabled || null',\n '[attr.role]': '\"button\"',\n '[tabindex]': 'isDisabled ? -1 : 0',\n },\n})\nexport class MainMenuItemDirective {\n public static readonly ngAcceptInputType_isSelected: BooleanInput;\n\n protected readonly disabledController = DisabledController.inject();\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement<HTMLLinkElement>();\n\n public get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n @Transform(coerceBooleanProperty)\n @Input()\n public isSelected = false;\n}\n","import { transition, trigger, useAnimation } from '@angular/animations';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, Component, HostListener, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { fadeIn, fadeOut, slideInLeft, slideOutLeft } from '@odx/angular/animations';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from './main-menu.service';\n\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective],\n standalone: true,\n host: {\n '[class.is-open]': 'isOpen',\n },\n animations: [\n trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),\n trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),\n ],\n})\nexport class MainMenuComponent {\n public static readonly ngAcceptInputType_isOpen: BooleanInput;\n\n protected readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement();\n\n @Input()\n public title!: string;\n\n @Input()\n public subtitle: string | null = null;\n\n @Input()\n public copyright: string | null = null;\n\n @Input()\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(coerceBooleanProperty(value));\n }\n\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n @HostListener('window:keyup.esc')\n public close(): void {\n this.mainMenuService.close();\n }\n}\n","<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\">\n {{ title }}\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n {{ subtitle }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n {{ copyright }}\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,375 @@
1
+ import { __decorate, __metadata } from 'tslib';
2
+ import * as i0 from '@angular/core';
3
+ import { InjectionToken, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, HostListener, Directive, Pipe, EventEmitter, Output, ContentChild, ContentChildren, ViewChild, NgModule } from '@angular/core';
4
+ import * as i2 from '@odx/angular';
5
+ import { DisabledController, ReadonlyController, detectControllerChanges, CoreModule, ODX_STRINGIFY, ODX_STRING_SEARCH_HANDLER, ODX_IDENTITY_MATCHER } from '@odx/angular';
6
+ import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
7
+ import { CSSComponent } from '@odx/angular/internal';
8
+ import { untilDestroyed, injectElement, Pure, deferFn, Transform } from '@odx/angular/utils';
9
+ import { skip, fromEvent, map, distinctUntilChanged, filter } from 'rxjs';
10
+ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
11
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
12
+ import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
13
+ import { DropdownDirective } from '@odx/angular/components/dropdown';
14
+ import { IconComponent } from '@odx/angular/components/icon';
15
+ import { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';
16
+ import * as i1 from '@angular/common';
17
+
18
+ const SELECT_CONTROL = new InjectionToken('@odx/angular/components/select::SelectControl');
19
+
20
+ let OptionComponent = class OptionComponent {
21
+ constructor() {
22
+ this.disabledController = DisabledController.inject();
23
+ this.readonlyController = ReadonlyController.inject();
24
+ this.takeUntilDestroyed = untilDestroyed();
25
+ this.selectControl = inject(SELECT_CONTROL);
26
+ this.isActive = false;
27
+ this.element = injectElement();
28
+ this.isSelected = false;
29
+ this.value = null;
30
+ detectControllerChanges(this.selectControl)
31
+ .pipe(skip(1), this.takeUntilDestroyed())
32
+ .subscribe(() => {
33
+ this.isSelected = this.selectControl.isOptionSelected(this);
34
+ });
35
+ }
36
+ get disabled() {
37
+ var _a, _b;
38
+ return !!((_a = this.disabledController) === null || _a === void 0 ? void 0 : _a.disabled) || !!((_b = this.readonlyController) === null || _b === void 0 ? void 0 : _b.readonly);
39
+ }
40
+ ngOnInit() {
41
+ this.isSelected = this.selectControl.isOptionSelected(this);
42
+ }
43
+ getLabel() {
44
+ var _a;
45
+ return (_a = this.element.nativeElement.textContent) !== null && _a !== void 0 ? _a : '';
46
+ }
47
+ setActiveStyles() {
48
+ if (this.disabled)
49
+ return;
50
+ this.isActive = true;
51
+ if (this.selectControl.isOpen) {
52
+ this.selectControl.scrollOptionIntoView(this);
53
+ }
54
+ else {
55
+ this.selectControl.selectOption(this);
56
+ }
57
+ }
58
+ setInactiveStyles() {
59
+ this.isActive = false;
60
+ }
61
+ select(event) {
62
+ event.preventDefault();
63
+ event.stopPropagation();
64
+ this.selectControl.selectOption(this);
65
+ }
66
+ };
67
+ OptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: OptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
+ OptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: OptionComponent, isStandalone: true, selector: "odx-option", inputs: { value: "value" }, host: { attributes: { "role": "option" }, listeners: { "click": "select($event)" }, properties: { "attr.aria-selected": "isSelected", "attr.aria-disabled": "disabled || null", "class.is-selected": "isSelected", "class.is-active": "isActive", "class.is-disabled": "disabled" } }, providers: [DisabledController.connect(), ReadonlyController.connect()], ngImport: i0, template: "<ng-content></ng-content>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
69
+ OptionComponent = __decorate([
70
+ CSSComponent('option'),
71
+ __metadata("design:paramtypes", [])
72
+ ], OptionComponent);
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: OptionComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ standalone: true, selector: 'odx-option', imports: [CoreModule, DynamicViewDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DisabledController.connect(), ReadonlyController.connect()], host: {
76
+ '[attr.aria-selected]': 'isSelected',
77
+ '[attr.aria-disabled]': 'disabled || null',
78
+ '[class.is-selected]': 'isSelected',
79
+ '[class.is-active]': 'isActive',
80
+ '[class.is-disabled]': 'disabled',
81
+ role: 'option',
82
+ }, template: "<ng-content></ng-content>\n" }]
83
+ }], ctorParameters: function () { return []; }, propDecorators: { value: [{
84
+ type: Input
85
+ }], select: [{
86
+ type: HostListener,
87
+ args: ['click', ['$event']]
88
+ }] } });
89
+
90
+ let SelectSearchFieldDirective = class SelectSearchFieldDirective {
91
+ constructor() {
92
+ this.takeUntilDestroyed = untilDestroyed();
93
+ this.element = injectElement();
94
+ // eslint-disable-next-line @angular-eslint/no-input-rename
95
+ this.notFoundContent = null;
96
+ this.valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(map(() => this.getValue()), distinctUntilChanged(), this.takeUntilDestroyed());
97
+ }
98
+ reset() {
99
+ this.element.nativeElement.value = '';
100
+ }
101
+ focus() {
102
+ this.element.nativeElement.focus();
103
+ }
104
+ getValue() {
105
+ return this.element.nativeElement.value;
106
+ }
107
+ };
108
+ SelectSearchFieldDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectSearchFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
109
+ SelectSearchFieldDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: SelectSearchFieldDirective, isStandalone: true, selector: "input[odxSelectSearchField]", inputs: { notFoundContent: ["odxSelectSearchField", "notFoundContent"] }, host: { listeners: { "keydown.delete": "reset()" }, properties: { "class.odx-form-field-control": "true" } }, ngImport: i0 });
110
+ SelectSearchFieldDirective = __decorate([
111
+ CSSComponent('select__search')
112
+ ], SelectSearchFieldDirective);
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectSearchFieldDirective, decorators: [{
114
+ type: Directive,
115
+ args: [{
116
+ standalone: true,
117
+ selector: 'input[odxSelectSearchField]',
118
+ host: {
119
+ '[class.odx-form-field-control]': 'true',
120
+ },
121
+ }]
122
+ }], propDecorators: { notFoundContent: [{
123
+ type: Input,
124
+ args: ['odxSelectSearchField']
125
+ }], reset: [{
126
+ type: HostListener,
127
+ args: ['keydown.delete']
128
+ }] } });
129
+
130
+ class SelectSearchFilterPipe {
131
+ constructor() {
132
+ this.searchController = inject(SELECT_CONTROL, { optional: true });
133
+ this.stringify = inject(ODX_STRINGIFY);
134
+ this.stringSearchHandler = inject(ODX_STRING_SEARCH_HANDLER);
135
+ }
136
+ get searchField() {
137
+ var _a;
138
+ return (_a = this.searchController) === null || _a === void 0 ? void 0 : _a.searchField;
139
+ }
140
+ transform(items, searchHandler) {
141
+ if (this.searchField) {
142
+ return this.filter(items, this.searchField.getValue(), searchHandler);
143
+ }
144
+ return items;
145
+ }
146
+ filter(items, query, searchHandler) {
147
+ var _a, _b;
148
+ if (!items) {
149
+ return null;
150
+ }
151
+ query = query.trim();
152
+ if (query === '') {
153
+ return items;
154
+ }
155
+ const search = searchHandler !== null && searchHandler !== void 0 ? searchHandler : this.stringSearchHandler;
156
+ const stringify = (_b = (_a = this.searchController) === null || _a === void 0 ? void 0 : _a.stringify) !== null && _b !== void 0 ? _b : this.stringify;
157
+ return items.filter((item) => search(stringify(item), query));
158
+ }
159
+ }
160
+ SelectSearchFilterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectSearchFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
161
+ SelectSearchFilterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: SelectSearchFilterPipe, isStandalone: true, name: "odxSelectSearchFilter", pure: false });
162
+ __decorate([
163
+ Pure,
164
+ __metadata("design:type", Function),
165
+ __metadata("design:paramtypes", [Object, String, Function]),
166
+ __metadata("design:returntype", Object)
167
+ ], SelectSearchFilterPipe.prototype, "filter", null);
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectSearchFilterPipe, decorators: [{
169
+ type: Pipe,
170
+ args: [{
171
+ pure: false,
172
+ name: 'odxSelectSearchFilter',
173
+ standalone: true,
174
+ }]
175
+ }], propDecorators: { filter: [] } });
176
+
177
+ var SelectComponent_1;
178
+ let SelectComponent = SelectComponent_1 = class SelectComponent extends CustomFormControl {
179
+ constructor() {
180
+ super(null);
181
+ this.searchFieldEnabled = false;
182
+ this.smoothScrollEnabled = false;
183
+ this.selectedOption = null;
184
+ this.selectedOptionText = null;
185
+ this.element = injectElement();
186
+ this.placeholder = '';
187
+ this.isLoading = false;
188
+ this.selectedOptionTemplate = null;
189
+ this.identityMatcher = inject(ODX_IDENTITY_MATCHER);
190
+ this.change = new EventEmitter();
191
+ detectControllerChanges(this).subscribe();
192
+ }
193
+ get hasOptions() {
194
+ return !!this.options && this.options.length > 0;
195
+ }
196
+ get isOpen() {
197
+ var _a;
198
+ return !!((_a = this.dropdown) === null || _a === void 0 ? void 0 : _a.isOpen);
199
+ }
200
+ get selectedOptionContent() {
201
+ var _a;
202
+ return this.selectedOption ? (_a = this.selectedOptionTemplate) !== null && _a !== void 0 ? _a : this.selectedOptionText : null;
203
+ }
204
+ ngAfterViewInit() {
205
+ var _a;
206
+ if (!this.options)
207
+ return;
208
+ this.keyManager = new ActiveDescendantKeyManager(this.options).withHomeAndEnd().skipPredicate((item) => item.disabled);
209
+ this.options.changes.pipe(filter(() => this.isOpen)).subscribe(() => {
210
+ deferFn(() => this.activateSelectedOption());
211
+ this.triggerControllerChange();
212
+ });
213
+ (_a = this.searchField) === null || _a === void 0 ? void 0 : _a.valueChange$.subscribe(() => this.triggerControllerChange());
214
+ }
215
+ registerOnChange(fn) {
216
+ super.registerOnChange((value) => {
217
+ this.updateSelectedOption();
218
+ fn(value);
219
+ });
220
+ }
221
+ selectOption(option) {
222
+ var _a, _b;
223
+ if (option && !option.disabled) {
224
+ this.updateValue((_a = option.value) !== null && _a !== void 0 ? _a : null);
225
+ }
226
+ (_b = this.dropdown) === null || _b === void 0 ? void 0 : _b.close();
227
+ }
228
+ isOptionSelected(option) {
229
+ if (option && !option.disabled) {
230
+ return this.identityMatcher(option.value, this.value);
231
+ }
232
+ return false;
233
+ }
234
+ scrollOptionIntoView({ element }) {
235
+ const behavior = this.smoothScrollEnabled ? 'smooth' : undefined;
236
+ element.nativeElement.scrollIntoView({ block: 'center', behavior });
237
+ }
238
+ openDropdown(event) {
239
+ var _a, _b;
240
+ if (this.isLoading)
241
+ return;
242
+ if (this.isOpen && this.hasOptions) {
243
+ if (event.key === 'Enter' || event.key === 'Tab') {
244
+ event.preventDefault();
245
+ event.stopImmediatePropagation();
246
+ this.selectOption((_a = this.keyManager) === null || _a === void 0 ? void 0 : _a.activeItem);
247
+ return;
248
+ }
249
+ }
250
+ (_b = this.keyManager) === null || _b === void 0 ? void 0 : _b.onKeydown(event);
251
+ }
252
+ activateSelectedOption() {
253
+ var _a, _b, _c, _d;
254
+ let activeIndex = (_a = this.options) === null || _a === void 0 ? void 0 : _a.toArray().findIndex((option) => option.isSelected && !option.disabled);
255
+ if (!activeIndex || activeIndex === -1) {
256
+ activeIndex = (_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.toArray().findIndex((option) => !option.disabled)) !== null && _c !== void 0 ? _c : -1;
257
+ }
258
+ (_d = this.keyManager) === null || _d === void 0 ? void 0 : _d.setActiveItem(activeIndex);
259
+ }
260
+ onDropdownOpen() {
261
+ this.activateSelectedOption();
262
+ if (!this.searchFieldEnabled) {
263
+ this.searchFieldEnabled = !!this.searchField;
264
+ deferFn(() => { var _a; return (_a = this.searchField) === null || _a === void 0 ? void 0 : _a.focus(); });
265
+ }
266
+ }
267
+ onDropdownClose() {
268
+ var _a;
269
+ this.disableSmoothScroll();
270
+ if (this.searchFieldEnabled) {
271
+ this.searchFieldEnabled = false;
272
+ (_a = this.element.nativeElement) === null || _a === void 0 ? void 0 : _a.focus();
273
+ }
274
+ }
275
+ onDropdownClosed() {
276
+ var _a;
277
+ (_a = this.searchField) === null || _a === void 0 ? void 0 : _a.reset();
278
+ }
279
+ disableSmoothScroll() {
280
+ this.smoothScrollEnabled = false;
281
+ }
282
+ enableSmoothScroll() {
283
+ this.smoothScrollEnabled = true;
284
+ }
285
+ updateSelectedOption() {
286
+ var _a, _b, _c, _d, _e, _f;
287
+ this.selectedOption = (_c = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.toArray()) === null || _b === void 0 ? void 0 : _b.find((option) => option.isSelected)) !== null && _c !== void 0 ? _c : null;
288
+ if (this.selectedOption) {
289
+ this.selectedOptionText = (_f = (_d = this.stringify) === null || _d === void 0 ? void 0 : _d.call(this, (_e = this.selectedOption) === null || _e === void 0 ? void 0 : _e.value)) !== null && _f !== void 0 ? _f : this.selectedOption.getLabel();
290
+ }
291
+ else {
292
+ this.selectedOptionText = null;
293
+ }
294
+ }
295
+ };
296
+ SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
297
+ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SelectComponent, isStandalone: true, selector: "odx-select", inputs: { placeholder: "placeholder", isLoading: "isLoading", selectedOptionTemplate: "selectedOptionTemplate", stringify: "stringify", identityMatcher: "identityMatcher" }, outputs: { change: "change" }, host: { listeners: { "click": "openDropdown($event)", "keydown": "openDropdown($event)" }, properties: { "attr.aria-disabled": "isDisabled || null", "class.is-open": "isOpen", "tabindex": "searchFieldEnabled ? -1 : 0" } }, providers: [
298
+ DisabledController.connect(),
299
+ ReadonlyController.connect(),
300
+ {
301
+ provide: SELECT_CONTROL,
302
+ useExisting: SelectComponent_1,
303
+ },
304
+ ], queries: [{ propertyName: "searchField", first: true, predicate: SelectSearchFieldDirective, descendants: true }, { propertyName: "options", predicate: OptionComponent, descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n>\n <ng-template [ngIf]=\"!searchFieldEnabled\" [ngIfElse]=\"searchFieldTemplate\">\n <div class=\"odx-select__value\" *ngIf=\"selectedOptionContent; else placeholderTemplate\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n </ng-template>\n <ng-template #placeholderTemplate>\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n </ng-template>\n <ng-template #searchFieldTemplate>\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n </ng-template>\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-select-dropdown\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\" [ngIfElse]=\"noOptionsTemplate\">\n <ng-content></ng-content>\n </ng-template>\n <ng-template #noOptionsTemplate>\n <odx-option disabled>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-option>\n </ng-template>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownOptions", "odxDropdownReferenceElement"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "component", type: OptionComponent, selector: "odx-option", inputs: ["value"] }, { kind: "ngmodule", type: LoadingSpinnerModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
305
+ __decorate([
306
+ Transform(coerceBooleanProperty),
307
+ __metadata("design:type", Object)
308
+ ], SelectComponent.prototype, "isLoading", void 0);
309
+ SelectComponent = SelectComponent_1 = __decorate([
310
+ CSSComponent('select'),
311
+ __metadata("design:paramtypes", [])
312
+ ], SelectComponent);
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectComponent, decorators: [{
314
+ type: Component,
315
+ args: [{ standalone: true, selector: 'odx-select', imports: [CoreModule, DropdownDirective, IconComponent, DynamicViewDirective, OptionComponent, LoadingSpinnerModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
316
+ DisabledController.connect(),
317
+ ReadonlyController.connect(),
318
+ {
319
+ provide: SELECT_CONTROL,
320
+ useExisting: SelectComponent,
321
+ },
322
+ ], host: {
323
+ '[attr.aria-disabled]': 'isDisabled || null',
324
+ '[class.is-open]': 'isOpen',
325
+ '[tabindex]': 'searchFieldEnabled ? -1 : 0',
326
+ }, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n>\n <ng-template [ngIf]=\"!searchFieldEnabled\" [ngIfElse]=\"searchFieldTemplate\">\n <div class=\"odx-select__value\" *ngIf=\"selectedOptionContent; else placeholderTemplate\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n </ng-template>\n <ng-template #placeholderTemplate>\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n </ng-template>\n <ng-template #searchFieldTemplate>\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n </ng-template>\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-select-dropdown\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\" [ngIfElse]=\"noOptionsTemplate\">\n <ng-content></ng-content>\n </ng-template>\n <ng-template #noOptionsTemplate>\n <odx-option disabled>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-option>\n </ng-template>\n </div>\n</ng-template>\n" }]
327
+ }], ctorParameters: function () { return []; }, propDecorators: { placeholder: [{
328
+ type: Input
329
+ }], isLoading: [{
330
+ type: Input
331
+ }], selectedOptionTemplate: [{
332
+ type: Input
333
+ }], stringify: [{
334
+ type: Input
335
+ }], identityMatcher: [{
336
+ type: Input
337
+ }], change: [{
338
+ type: Output
339
+ }], searchField: [{
340
+ type: ContentChild,
341
+ args: [SelectSearchFieldDirective]
342
+ }], options: [{
343
+ type: ContentChildren,
344
+ args: [OptionComponent, { descendants: true, emitDistinctChangesOnly: true }]
345
+ }], dropdown: [{
346
+ type: ViewChild,
347
+ args: [DropdownDirective]
348
+ }], openDropdown: [{
349
+ type: HostListener,
350
+ args: ['click', ['$event']]
351
+ }, {
352
+ type: HostListener,
353
+ args: ['keydown', ['$event']]
354
+ }] } });
355
+
356
+ const modules = [SelectComponent, SelectSearchFieldDirective, SelectSearchFilterPipe, OptionComponent];
357
+ class SelectModule {
358
+ }
359
+ SelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
360
+ SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, imports: [SelectComponent, SelectSearchFieldDirective, SelectSearchFilterPipe, OptionComponent], exports: [CoreModule, SelectComponent, SelectSearchFieldDirective, SelectSearchFilterPipe, OptionComponent] });
361
+ SelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, imports: [SelectComponent, OptionComponent, CoreModule] });
362
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, decorators: [{
363
+ type: NgModule,
364
+ args: [{
365
+ imports: modules,
366
+ exports: [CoreModule, ...modules],
367
+ }]
368
+ }] });
369
+
370
+ /**
371
+ * Generated bundle index. Do not edit.
372
+ */
373
+
374
+ export { OptionComponent, SELECT_CONTROL, SelectComponent, SelectModule, SelectSearchFieldDirective, SelectSearchFilterPipe };
375
+ //# sourceMappingURL=odx-angular-components-select.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odx-angular-components-select.mjs","sources":["../../../../libs/angular/components/select/src/lib/select.tokens.ts","../../../../libs/angular/components/select/src/lib/components/option/option.component.ts","../../../../libs/angular/components/select/src/lib/components/option/option.component.html","../../../../libs/angular/components/select/src/lib/directives/select-search-field.directive.ts","../../../../libs/angular/components/select/src/lib/pipes/select-search-filter.pipe.ts","../../../../libs/angular/components/select/src/lib/select.component.ts","../../../../libs/angular/components/select/src/lib/select.component.html","../../../../libs/angular/components/select/src/lib/select.module.ts","../../../../libs/angular/components/select/src/odx-angular-components-select.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { SelectControl } from './abstract';\n\nexport const SELECT_CONTROL = new InjectionToken<SelectControl>('@odx/angular/components/select::SelectControl');\n","import { ChangeDetectionStrategy, Component, HostListener, inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CoreModule, detectControllerChanges, DisabledController, ReadonlyController } from '@odx/angular';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { skip } from 'rxjs';\nimport { SelectControlOption } from '../../abstract';\nimport { SELECT_CONTROL } from '../../select.tokens';\n\n@CSSComponent('option')\n@Component({\n standalone: true,\n selector: 'odx-option',\n imports: [CoreModule, DynamicViewDirective],\n templateUrl: './option.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DisabledController.connect(), ReadonlyController.connect()],\n host: {\n '[attr.aria-selected]': 'isSelected',\n '[attr.aria-disabled]': 'disabled || null',\n '[class.is-selected]': 'isSelected',\n '[class.is-active]': 'isActive',\n '[class.is-disabled]': 'disabled',\n role: 'option',\n },\n})\nexport class OptionComponent<T = unknown> implements OnInit, SelectControlOption<T> {\n private readonly disabledController = DisabledController.inject();\n private readonly readonlyController = ReadonlyController.inject();\n private readonly takeUntilDestroyed = untilDestroyed();\n\n protected readonly selectControl = inject(SELECT_CONTROL);\n protected isActive = false;\n\n public readonly element = injectElement();\n public isSelected = false;\n\n @Input()\n public value: T | null = null;\n\n public get disabled(): boolean {\n return !!this.disabledController?.disabled || !!this.readonlyController?.readonly;\n }\n\n constructor() {\n detectControllerChanges(this.selectControl)\n .pipe(skip(1), this.takeUntilDestroyed())\n .subscribe(() => {\n this.isSelected = this.selectControl.isOptionSelected(this);\n });\n }\n\n public ngOnInit(): void {\n this.isSelected = this.selectControl.isOptionSelected(this);\n }\n\n public getLabel(): string {\n return this.element.nativeElement.textContent ?? '';\n }\n\n public setActiveStyles(): void {\n if (this.disabled) return;\n this.isActive = true;\n if (this.selectControl.isOpen) {\n this.selectControl.scrollOptionIntoView(this);\n } else {\n this.selectControl.selectOption(this);\n }\n }\n\n public setInactiveStyles(): void {\n this.isActive = false;\n }\n\n @HostListener('click', ['$event'])\n protected select(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.selectControl.selectOption(this);\n }\n}\n","<ng-content></ng-content>\n","import { Directive, HostListener, Input } from '@angular/core';\nimport { DynamicContent } from '@odx/angular/cdk/dynamic-view';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\n\n@CSSComponent('select__search')\n@Directive({\n standalone: true,\n selector: 'input[odxSelectSearchField]',\n host: {\n '[class.odx-form-field-control]': 'true',\n },\n})\nexport class SelectSearchFieldDirective {\n private readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLInputElement>();\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('odxSelectSearchField')\n public notFoundContent: DynamicContent | null = null;\n\n public valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n map(() => this.getValue()),\n distinctUntilChanged(),\n this.takeUntilDestroyed()\n );\n\n @HostListener('keydown.delete')\n public reset(): void {\n this.element.nativeElement.value = '';\n }\n\n public focus(): void {\n this.element.nativeElement.focus();\n }\n\n public getValue(): string {\n return this.element.nativeElement.value;\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { ODX_STRINGIFY, ODX_STRING_SEARCH_HANDLER, StringSearchHandler } from '@odx/angular';\nimport { Pure } from '@odx/angular/utils';\nimport { SelectSearchFieldDirective } from '../directives';\nimport { SELECT_CONTROL } from '../select.tokens';\n\n@Pipe({\n pure: false,\n name: 'odxSelectSearchFilter',\n standalone: true,\n})\nexport class SelectSearchFilterPipe implements PipeTransform {\n private readonly searchController = inject(SELECT_CONTROL, { optional: true });\n private readonly stringify = inject(ODX_STRINGIFY);\n private readonly stringSearchHandler = inject(ODX_STRING_SEARCH_HANDLER);\n\n private get searchField(): SelectSearchFieldDirective | undefined {\n return this.searchController?.searchField;\n }\n\n public transform<T>(items: T[] | null, searchHandler?: StringSearchHandler): T[] | null {\n if (this.searchField) {\n return this.filter(items, this.searchField.getValue(), searchHandler);\n }\n return items;\n }\n\n @Pure\n private filter<T>(items: T[] | null, query: string, searchHandler?: StringSearchHandler): T[] | null {\n if (!items) {\n return null;\n }\n query = query.trim();\n if (query === '') {\n return items;\n }\n const search = searchHandler ?? this.stringSearchHandler;\n const stringify = this.searchController?.stringify ?? this.stringify;\n\n return items.filter((item) => search(stringify(item), query));\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CoreModule, detectControllerChanges, DisabledController, IdentityMatcher, ODX_IDENTITY_MATCHER, ReadonlyController, StringifyFn } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { DropdownDirective } from '@odx/angular/components/dropdown';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { deferFn, injectElement, Transform } from '@odx/angular/utils';\nimport { filter } from 'rxjs';\nimport { SelectControl, SelectControlOption } from './abstract';\nimport { OptionComponent } from './components';\nimport { SelectSearchFieldDirective } from './directives';\nimport { SELECT_CONTROL } from './select.tokens';\n\n@CSSComponent('select')\n@Component({\n standalone: true,\n selector: 'odx-select',\n imports: [CoreModule, DropdownDirective, IconComponent, DynamicViewDirective, OptionComponent, LoadingSpinnerModule],\n templateUrl: './select.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DisabledController.connect(),\n ReadonlyController.connect(),\n {\n provide: SELECT_CONTROL,\n useExisting: SelectComponent,\n },\n ],\n host: {\n '[attr.aria-disabled]': 'isDisabled || null',\n '[class.is-open]': 'isOpen',\n '[tabindex]': 'searchFieldEnabled ? -1 : 0',\n },\n})\nexport class SelectComponent<T = unknown> extends CustomFormControl<T | null> implements AfterViewInit, SelectControl<T> {\n public static ngAcceptInputType_isLoading: BooleanInput;\n\n private keyManager?: ActiveDescendantKeyManager<OptionComponent<T>>;\n\n protected searchFieldEnabled = false;\n protected smoothScrollEnabled = false;\n protected selectedOption: OptionComponent<T> | null = null;\n protected selectedOptionText: string | null = null;\n\n public readonly element = injectElement();\n\n protected get hasOptions(): boolean {\n return !!this.options && this.options.length > 0;\n }\n\n public get isOpen(): boolean {\n return !!this.dropdown?.isOpen;\n }\n\n public get selectedOptionContent(): TemplateRef<{ $implicit: T | null }> | string | null {\n return this.selectedOption ? this.selectedOptionTemplate ?? this.selectedOptionText : null;\n }\n\n @Input()\n public placeholder = '';\n\n @Transform(coerceBooleanProperty)\n @Input()\n public isLoading = false;\n\n @Input()\n public selectedOptionTemplate?: TemplateRef<{ $implicit: T }> | null = null;\n\n @Input()\n public stringify?: StringifyFn<T | null>;\n\n @Input()\n public identityMatcher: IdentityMatcher<T | null> = inject(ODX_IDENTITY_MATCHER);\n\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public change = new EventEmitter<void>();\n\n @ContentChild(SelectSearchFieldDirective)\n public searchField?: SelectSearchFieldDirective;\n\n @ContentChildren(OptionComponent, { descendants: true, emitDistinctChangesOnly: true })\n protected options?: QueryList<OptionComponent<T>>;\n\n @ViewChild(DropdownDirective)\n protected dropdown?: DropdownDirective;\n\n constructor() {\n super(null);\n\n detectControllerChanges(this).subscribe();\n }\n\n public ngAfterViewInit(): void {\n if (!this.options) return;\n this.keyManager = new ActiveDescendantKeyManager(this.options).withHomeAndEnd().skipPredicate((item) => item.disabled);\n this.options.changes.pipe(filter(() => this.isOpen)).subscribe(() => {\n deferFn(() => this.activateSelectedOption());\n this.triggerControllerChange();\n });\n this.searchField?.valueChange$.subscribe(() => this.triggerControllerChange());\n }\n\n public override registerOnChange(fn: (value: T | null) => void): void {\n super.registerOnChange((value) => {\n this.updateSelectedOption();\n fn(value);\n });\n }\n\n public selectOption(option?: SelectControlOption<T> | null): void {\n if (option && !option.disabled) {\n this.updateValue(option.value ?? null);\n }\n this.dropdown?.close();\n }\n\n public isOptionSelected(option: SelectControlOption<T>): boolean {\n if (option && !option.disabled) {\n return this.identityMatcher(option.value, this.value);\n }\n return false;\n }\n\n public scrollOptionIntoView({ element }: SelectControlOption<T>): void {\n const behavior = this.smoothScrollEnabled ? 'smooth' : undefined;\n element.nativeElement.scrollIntoView({ block: 'center', behavior });\n }\n\n @HostListener('click', ['$event'])\n @HostListener('keydown', ['$event'])\n protected openDropdown(event: KeyboardEvent) {\n if (this.isLoading) return;\n if (this.isOpen && this.hasOptions) {\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.selectOption(this.keyManager?.activeItem);\n return;\n }\n }\n this.keyManager?.onKeydown(event);\n }\n\n protected activateSelectedOption(): void {\n let activeIndex = this.options?.toArray().findIndex((option) => option.isSelected && !option.disabled);\n if (!activeIndex || activeIndex === -1) {\n activeIndex = this.options?.toArray().findIndex((option) => !option.disabled) ?? -1;\n }\n this.keyManager?.setActiveItem(activeIndex);\n }\n\n protected onDropdownOpen(): void {\n this.activateSelectedOption();\n if (!this.searchFieldEnabled) {\n this.searchFieldEnabled = !!this.searchField;\n deferFn(() => this.searchField?.focus());\n }\n }\n\n protected onDropdownClose(): void {\n this.disableSmoothScroll();\n if (this.searchFieldEnabled) {\n this.searchFieldEnabled = false;\n this.element.nativeElement?.focus();\n }\n }\n\n protected onDropdownClosed(): void {\n this.searchField?.reset();\n }\n\n protected disableSmoothScroll(): void {\n this.smoothScrollEnabled = false;\n }\n\n protected enableSmoothScroll(): void {\n this.smoothScrollEnabled = true;\n }\n\n private updateSelectedOption(): void {\n this.selectedOption = this.options?.toArray()?.find((option) => option.isSelected) ?? null;\n if (this.selectedOption) {\n this.selectedOptionText = this.stringify?.(this.selectedOption?.value) ?? this.selectedOption.getLabel();\n } else {\n this.selectedOptionText = null;\n }\n }\n}\n","<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true }\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n (odxDropdownAfterOpen)=\"enableSmoothScroll()\"\n>\n <ng-template [ngIf]=\"!searchFieldEnabled\" [ngIfElse]=\"searchFieldTemplate\">\n <div class=\"odx-select__value\" *ngIf=\"selectedOptionContent; else placeholderTemplate\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\"></ng-template>\n </div>\n </ng-template>\n <ng-template #placeholderTemplate>\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n </ng-template>\n <ng-template #searchFieldTemplate>\n <ng-content select=\"[odxSelectSearchField]\"></ng-content>\n </ng-template>\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\"></odx-icon>\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-select-dropdown\" role=\"listbox\">\n <ng-template [ngIf]=\"hasOptions\" [ngIfElse]=\"noOptionsTemplate\">\n <ng-content></ng-content>\n </ng-template>\n <ng-template #noOptionsTemplate>\n <odx-option disabled>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\"></ng-template>\n </odx-option>\n </ng-template>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { OptionComponent } from './components';\nimport { SelectSearchFieldDirective } from './directives';\nimport { SelectSearchFilterPipe } from './pipes';\nimport { SelectComponent } from './select.component';\n\nconst modules = [SelectComponent, SelectSearchFieldDirective, SelectSearchFilterPipe, OptionComponent];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class SelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}