@koobiq/components 18.18.0 → 18.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/actions-panel/actions-panel-config.d.ts +79 -0
  2. package/actions-panel/actions-panel-container.d.ts +90 -0
  3. package/actions-panel/actions-panel-container.scss +33 -0
  4. package/actions-panel/actions-panel-ref.d.ts +31 -0
  5. package/actions-panel/actions-panel-tokens.scss +13 -0
  6. package/actions-panel/actions-panel.d.ts +144 -0
  7. package/actions-panel/index.d.ts +5 -0
  8. package/actions-panel/module.d.ts +7 -0
  9. package/core/animation/animation.d.ts +26 -0
  10. package/core/form-field/form-field-ref.d.ts +4 -0
  11. package/core/locales/en-US.d.ts +45 -0
  12. package/core/locales/es-LA.d.ts +45 -0
  13. package/core/locales/fa-IR.d.ts +45 -0
  14. package/core/locales/locale-service.d.ts +315 -0
  15. package/core/locales/pt-BR.d.ts +45 -0
  16. package/core/locales/ru-RU.d.ts +45 -0
  17. package/core/locales/tk-TM.d.ts +45 -0
  18. package/core/locales/types.d.ts +6 -0
  19. package/core/locales/zh-CN.d.ts +45 -0
  20. package/core/option/option-tokens.scss +5 -1
  21. package/core/option/option.d.ts +3 -1
  22. package/core/option/option.scss +6 -4
  23. package/core/styles/common/_list.scss +2 -9
  24. package/core/styles/common/_select.scss +6 -0
  25. package/core/styles/common/_tokens.scss +1 -1
  26. package/datepicker/calendar.component.d.ts +9 -0
  27. package/datepicker/datepicker-input.directive.d.ts +5 -1
  28. package/dl/dl.component.d.ts +4 -4
  29. package/dropdown/_dropdown-theme.scss +9 -10
  30. package/dropdown/dropdown-tokens.scss +1 -0
  31. package/dropdown/dropdown.component.d.ts +1 -1
  32. package/dropdown/dropdown.scss +5 -0
  33. package/dropdown/dropdown.types.d.ts +3 -1
  34. package/esm2022/accordion/accordion-trigger.component.mjs +1 -1
  35. package/esm2022/actions-panel/actions-panel-config.mjs +55 -0
  36. package/esm2022/actions-panel/actions-panel-container.mjs +217 -0
  37. package/esm2022/actions-panel/actions-panel-ref.mjs +62 -0
  38. package/esm2022/actions-panel/actions-panel.mjs +220 -0
  39. package/esm2022/actions-panel/index.mjs +6 -0
  40. package/esm2022/actions-panel/koobiq-components-actions-panel.mjs +5 -0
  41. package/esm2022/actions-panel/module.mjs +21 -0
  42. package/esm2022/breadcrumbs/breadcrumbs.mjs +2 -2
  43. package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
  44. package/esm2022/code-block/code-block.mjs +1 -1
  45. package/esm2022/core/animation/animation.mjs +29 -1
  46. package/esm2022/core/common-behaviors/common-module.mjs +2 -2
  47. package/esm2022/core/form-field/form-field-ref.mjs +1 -1
  48. package/esm2022/core/locales/en-US.mjs +46 -1
  49. package/esm2022/core/locales/es-LA.mjs +46 -1
  50. package/esm2022/core/locales/fa-IR.mjs +46 -1
  51. package/esm2022/core/locales/pt-BR.mjs +46 -1
  52. package/esm2022/core/locales/ru-RU.mjs +46 -1
  53. package/esm2022/core/locales/tk-TM.mjs +46 -1
  54. package/esm2022/core/locales/types.mjs +1 -1
  55. package/esm2022/core/locales/zh-CN.mjs +46 -1
  56. package/esm2022/core/option/option.mjs +12 -5
  57. package/esm2022/core/version.mjs +2 -2
  58. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  59. package/esm2022/datepicker/calendar.component.mjs +20 -2
  60. package/esm2022/datepicker/datepicker-input.directive.mjs +22 -11
  61. package/esm2022/datepicker/datepicker-toggle.component.mjs +1 -1
  62. package/esm2022/dl/dl.component.mjs +12 -9
  63. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  64. package/esm2022/dropdown/dropdown-trigger.directive.mjs +6 -1
  65. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  66. package/esm2022/dropdown/dropdown.types.mjs +1 -1
  67. package/esm2022/file-upload/multiple-file-upload.component.mjs +1 -1
  68. package/esm2022/file-upload/single-file-upload.component.mjs +1 -1
  69. package/esm2022/filter-bar/filter-bar-button.mjs +30 -0
  70. package/esm2022/filter-bar/filter-bar.mjs +168 -0
  71. package/esm2022/filter-bar/filter-bar.module.mjs +65 -0
  72. package/esm2022/filter-bar/filter-bar.types.mjs +13 -0
  73. package/esm2022/filter-bar/filter-refresher.mjs +34 -0
  74. package/esm2022/filter-bar/filter-reset.mjs +38 -0
  75. package/esm2022/filter-bar/filter-search.mjs +132 -0
  76. package/esm2022/filter-bar/filters.mjs +225 -0
  77. package/esm2022/filter-bar/index.mjs +2 -0
  78. package/esm2022/filter-bar/koobiq-components-filter-bar.mjs +5 -0
  79. package/esm2022/filter-bar/pipe-add.mjs +129 -0
  80. package/esm2022/filter-bar/pipe.directive.mjs +55 -0
  81. package/esm2022/filter-bar/pipes/base-pipe.mjs +106 -0
  82. package/esm2022/filter-bar/pipes/pipe-button.mjs +59 -0
  83. package/esm2022/filter-bar/pipes/pipe-date.mjs +171 -0
  84. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +172 -0
  85. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +96 -0
  86. package/esm2022/filter-bar/pipes/pipe-select.mjs +88 -0
  87. package/esm2022/filter-bar/pipes/pipe-state.mjs +45 -0
  88. package/esm2022/filter-bar/pipes/pipe-text.mjs +89 -0
  89. package/esm2022/filter-bar/pipes/pipe-title.mjs +96 -0
  90. package/esm2022/filter-bar/public-api.mjs +20 -0
  91. package/esm2022/form-field/cleaner.mjs +1 -1
  92. package/esm2022/form-field/form-field.mjs +13 -6
  93. package/esm2022/form-field/password-hint.mjs +1 -1
  94. package/esm2022/form-field/password-toggle.mjs +1 -1
  95. package/esm2022/form-field/stepper.mjs +1 -1
  96. package/esm2022/icon/icon-button.component.mjs +9 -9
  97. package/esm2022/icon/icon-item.component.mjs +10 -10
  98. package/esm2022/icon/icon.component.mjs +9 -12
  99. package/esm2022/list/list-selection.component.mjs +18 -15
  100. package/esm2022/list/list.component.mjs +2 -2
  101. package/esm2022/modal/modal.component.mjs +1 -1
  102. package/esm2022/modal/modal.directive.mjs +1 -1
  103. package/esm2022/navbar/navbar-item.component.mjs +2 -2
  104. package/esm2022/navbar/navbar.component.mjs +2 -2
  105. package/esm2022/navbar/vertical-navbar.component.mjs +18 -16
  106. package/esm2022/overflow-items/overflow-items.mjs +129 -139
  107. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  108. package/esm2022/popover/popover.component.mjs +30 -10
  109. package/esm2022/radio/radio.component.mjs +2 -2
  110. package/esm2022/select/select.component.mjs +3 -3
  111. package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
  112. package/esm2022/sidepanel/sidepanel-directives.mjs +2 -2
  113. package/esm2022/tabs/tab-header.component.mjs +1 -1
  114. package/esm2022/tabs/tab-nav-bar.mjs +2 -2
  115. package/esm2022/tags/tag.component.mjs +2 -2
  116. package/esm2022/textarea/textarea.component.mjs +9 -5
  117. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  118. package/esm2022/timezone/timezone-select.component.mjs +2 -2
  119. package/esm2022/title/title.directive.mjs +12 -5
  120. package/esm2022/toast/toast.component.mjs +2 -2
  121. package/esm2022/tree/toggle.mjs +1 -1
  122. package/esm2022/tree/tree-option.component.mjs +5 -4
  123. package/esm2022/tree/tree-selection.component.mjs +10 -3
  124. package/esm2022/tree-select/tree-select.component.mjs +6 -4
  125. package/fesm2022/koobiq-components-accordion.mjs +1 -1
  126. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-actions-panel.mjs +567 -0
  128. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -0
  129. package/fesm2022/koobiq-components-breadcrumbs.mjs +1 -1
  130. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
  132. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-code-block.mjs +1 -1
  134. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-core.mjs +357 -7
  136. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  137. package/fesm2022/koobiq-components-datepicker.mjs +40 -12
  138. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  139. package/fesm2022/koobiq-components-dl.mjs +11 -8
  140. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  141. package/fesm2022/koobiq-components-dropdown.mjs +10 -5
  142. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  143. package/fesm2022/koobiq-components-file-upload.mjs +2 -2
  144. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  145. package/fesm2022/koobiq-components-filter-bar.mjs +1596 -0
  146. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -0
  147. package/fesm2022/koobiq-components-form-field.mjs +16 -9
  148. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  149. package/fesm2022/koobiq-components-icon.mjs +23 -26
  150. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  151. package/fesm2022/koobiq-components-list.mjs +19 -16
  152. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  153. package/fesm2022/koobiq-components-modal.mjs +2 -2
  154. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-navbar.mjs +21 -19
  156. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  157. package/fesm2022/koobiq-components-overflow-items.mjs +129 -139
  158. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  159. package/fesm2022/koobiq-components-popover.mjs +31 -11
  160. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  161. package/fesm2022/koobiq-components-radio.mjs +2 -2
  162. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  163. package/fesm2022/koobiq-components-select.mjs +2 -2
  164. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  165. package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
  166. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  167. package/fesm2022/koobiq-components-tabs.mjs +2 -2
  168. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  169. package/fesm2022/koobiq-components-tags.mjs +2 -2
  170. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  171. package/fesm2022/koobiq-components-textarea.mjs +8 -4
  172. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  173. package/fesm2022/koobiq-components-timezone.mjs +4 -4
  174. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  175. package/fesm2022/koobiq-components-title.mjs +11 -4
  176. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  177. package/fesm2022/koobiq-components-toast.mjs +1 -1
  178. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  179. package/fesm2022/koobiq-components-tree-select.mjs +5 -3
  180. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  181. package/fesm2022/koobiq-components-tree.mjs +14 -6
  182. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  183. package/filter-bar/_filter-bar-theme.scss +61 -0
  184. package/filter-bar/filter-bar-button.d.ts +8 -0
  185. package/filter-bar/filter-bar.d.ts +55 -0
  186. package/filter-bar/filter-bar.module.d.ts +17 -0
  187. package/filter-bar/filter-bar.scss +60 -0
  188. package/filter-bar/filter-bar.types.d.ts +97 -0
  189. package/filter-bar/filter-refresher.d.ts +5 -0
  190. package/filter-bar/filter-refresher.scss +6 -0
  191. package/filter-bar/filter-reset.d.ts +11 -0
  192. package/filter-bar/filter-search.d.ts +25 -0
  193. package/filter-bar/filter-search.scss +14 -0
  194. package/filter-bar/filters.d.ts +72 -0
  195. package/filter-bar/filters.scss +92 -0
  196. package/filter-bar/index.d.ts +1 -0
  197. package/filter-bar/pipe-add.d.ts +18 -0
  198. package/filter-bar/pipe-add.scss +5 -0
  199. package/filter-bar/pipe.directive.d.ts +13 -0
  200. package/filter-bar/pipes/base-pipe.d.ts +40 -0
  201. package/filter-bar/pipes/base-pipe.scss +117 -0
  202. package/filter-bar/pipes/pipe-button.d.ts +13 -0
  203. package/filter-bar/pipes/pipe-button.scss +5 -0
  204. package/filter-bar/pipes/pipe-date.d.ts +41 -0
  205. package/filter-bar/pipes/pipe-date.scss +132 -0
  206. package/filter-bar/pipes/pipe-datetime.d.ts +41 -0
  207. package/filter-bar/pipes/pipe-multi-select.d.ts +22 -0
  208. package/filter-bar/pipes/pipe-multiselect.scss +15 -0
  209. package/filter-bar/pipes/pipe-select.d.ts +21 -0
  210. package/filter-bar/pipes/pipe-select.scss +3 -0
  211. package/filter-bar/pipes/pipe-state.d.ts +14 -0
  212. package/filter-bar/pipes/pipe-text.d.ts +19 -0
  213. package/filter-bar/pipes/pipe-title.d.ts +25 -0
  214. package/filter-bar/public-api.d.ts +19 -0
  215. package/form-field/form-field.d.ts +6 -1
  216. package/form-field/form-field.scss +1 -0
  217. package/icon/icon-button.component.d.ts +5 -3
  218. package/icon/icon-item.component.d.ts +5 -3
  219. package/icon/icon.component.d.ts +5 -4
  220. package/list/list.scss +2 -3
  221. package/navbar/vertical-navbar.component.d.ts +4 -1
  222. package/overflow-items/overflow-items.d.ts +59 -71
  223. package/package.json +19 -7
  224. package/popover/popover.component.d.ts +6 -1
  225. package/radio/radio-tokens.scss +7 -3
  226. package/radio/radio.scss +19 -15
  227. package/schematics/ng-add/index.js +6 -6
  228. package/select/_select-theme.scss +9 -1
  229. package/tags/tag.scss +3 -0
  230. package/textarea/textarea.component.d.ts +2 -1
  231. package/timezone/timezone-option-tokens.scss +3 -2
  232. package/title/title.directive.d.ts +2 -0
  233. package/tree/tree-option.scss +2 -1
  234. package/tree-select/_tree-select-theme.scss +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-tree-select.mjs","sources":["../../../packages/components/tree-select/tree-select.component.ts","../../../packages/components/tree-select/tree-select.html","../../../packages/components/tree-select/tree-select.module.ts","../../../packages/components/tree-select/koobiq-components-tree-select.ts"],"sourcesContent":["import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { Platform, _getEventTarget } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Provider,\n QueryList,\n Renderer2,\n Self,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SPACE,\n TAB,\n UP_ARROW,\n hasModifierKey,\n isSelectAll\n} from '@koobiq/cdk/keycodes';\nimport {\n CanDisable,\n CanDisableCtor,\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n HasTabIndex,\n HasTabIndexCtor,\n KBQ_LOCALE_SERVICE,\n KBQ_PARENT_POPUP,\n KBQ_SELECT_SCROLL_STRATEGY,\n KbqAbstractSelect,\n KbqLocaleService,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectTrigger,\n MultipleMode,\n defaultOffsetY,\n getKbqSelectDynamicMultipleError,\n getKbqSelectNonArrayValueError,\n kbqSelectAnimations,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '@koobiq/components/core';\nimport { KbqCleaner, KbqFormField, KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { KbqTag } from '@koobiq/components/tags';\nimport { KbqTree, KbqTreeOption, KbqTreeSelection } from '@koobiq/components/tree';\nimport { SizeXxs as SelectSizeMultipleContentGap } from '@koobiq/design-tokens';\nimport { Observable, Subject, Subscription, defer, merge } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, startWith, switchMap, take } from 'rxjs/operators';\n\nlet nextUniqueId = 0;\n\n/** Tree select trigger value type. */\nexport type KbqTreeSelectTriggerValue = {\n disabled: boolean;\n value: string;\n viewValue: string;\n};\n\n/** @deprecated Will be removed in the next major release, use `KbqTreeSelectTriggerValue` instead */\nexport interface ITriggerValue extends KbqTreeSelectTriggerValue {}\n\n/** Tree select panel width type. */\nexport type KbqTreeSelectPanelWidth = 'auto' | number | null;\n\n/** Options for the `kbq-tree-select` that can be configured using the `KBQ_TREE_SELECT_OPTIONS` injection token. */\nexport type KbqTreeSelectOptions = Partial<{\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n panelWidth: KbqTreeSelectPanelWidth;\n}>;\n\n/** Injection token that can be used to provide the default options for the `kbq-tree-select`. */\nexport const KBQ_TREE_SELECT_OPTIONS = new InjectionToken<KbqTreeSelectOptions>('KBQ_TREE_SELECT_OPTIONS');\n\n/** Utility provider for `KBQ_TREE_SELECT_OPTIONS`. */\nexport const kbqTreeSelectOptionsProvider = (options: KbqTreeSelectOptions): Provider => {\n return {\n provide: KBQ_TREE_SELECT_OPTIONS,\n useValue: options\n };\n};\n\n/** Change event object that is emitted when the select value has changed. */\nexport class KbqTreeSelectChange {\n constructor(\n public source: KbqTreeSelect,\n public value: any,\n public isUserInput = false\n ) {}\n}\n\n/** @docs-private */\nclass KbqTreeSelectBase extends KbqAbstractSelect {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public elementRef: ElementRef,\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {\n super();\n }\n}\n\n/** @docs-private */\nconst KbqTreeSelectMixinBase: CanDisableCtor & HasTabIndexCtor & CanUpdateErrorStateCtor & typeof KbqTreeSelectBase =\n mixinTabIndex(mixinDisabled(mixinErrorState(KbqTreeSelectBase)));\n\n@Component({\n selector: 'kbq-tree-select',\n exportAs: 'kbqTreeSelect',\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss', 'tree-select-tokens.scss'],\n inputs: ['disabled', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-tree-select',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-invalid]': 'errorState',\n\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n\n '(click)': 'toggle()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(window:resize)': 'calculateHiddenItems()'\n },\n animations: [\n kbqSelectAnimations.transformPanel,\n kbqSelectAnimations.fadeInContent\n ],\n providers: [\n { provide: KbqFormFieldControl, useExisting: KbqTreeSelect },\n { provide: KbqTree, useExisting: KbqTreeSelect },\n { provide: KBQ_PARENT_POPUP, useExisting: KbqTreeSelect }\n ]\n})\nexport class KbqTreeSelect\n extends KbqTreeSelectMixinBase\n implements\n AfterContentInit,\n AfterViewInit,\n OnChanges,\n OnDestroy,\n OnInit,\n DoCheck,\n ControlValueAccessor,\n CanDisable,\n HasTabIndex,\n KbqFormFieldControl<KbqTreeOption>,\n CanUpdateErrorState\n{\n protected readonly isBrowser = inject(Platform).isBrowser;\n\n private readonly defaultOptions = inject(KBQ_TREE_SELECT_OPTIONS, { optional: true });\n\n /** A name for this control that can be used by `kbq-form-field`. */\n controlType = 'select';\n\n hiddenItems: number = 0;\n\n /** The last measured value for the trigger's client bounding rect. */\n triggerRect: DOMRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<any>;\n\n /** The value of the select panel's transform-origin property. */\n transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy = this.scrollStrategyFactory();\n\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n offsetY = defaultOffsetY;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: this.offsetY\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -this.offsetY\n }\n ];\n\n options: QueryList<KbqTreeOption>;\n\n /**\n * Trigger - is a clickable field to open select dropdown panel\n */\n @ViewChild('trigger', { static: false }) trigger: ElementRef;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n @ViewChildren(KbqTag) tags: QueryList<KbqTag>;\n\n @ContentChild('kbqSelectCleaner', { static: true }) cleaner: KbqCleaner;\n\n /** User-supplied override of the trigger element. */\n @ContentChild(KbqSelectTrigger, { static: false }) customTrigger: KbqSelectTrigger;\n\n @ContentChild(KbqSelectMatcher, { static: false }) customMatcher: KbqSelectMatcher;\n\n @ContentChild('kbqSelectTagContent', { static: false, read: TemplateRef }) customTagTemplateRef: TemplateRef<any>;\n\n @ContentChild(KbqTreeSelection, { static: false }) tree: KbqTreeSelection;\n\n @ContentChild(KbqSelectSearch, { static: false }) search: KbqSelectSearch;\n\n @Input() hiddenItemsText: string = 'еще {{ number }}';\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly openedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => o),\n map(() => {})\n );\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly closedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => !o),\n map(() => {})\n );\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange = new EventEmitter<KbqTreeSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: KbqTreeOption, b: KbqTreeOption, options: KbqTreeOption[]) => number;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<KbqTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.onSelectionChange)))\n );\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<KbqTreeSelectChange>;\n\n /** Combined stream of all of the child options userInteraction events. */\n readonly userInteractionChanges: Observable<void> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.userInteraction)))\n );\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.userInteractionChanges)\n );\n });\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n\n set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getKbqSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n private _multiple: boolean = false;\n\n @Input()\n get autoSelect(): boolean {\n if (this.multiple) {\n return false;\n }\n\n return this._autoSelect;\n }\n\n set autoSelect(value: boolean) {\n this._autoSelect = coerceBooleanProperty(value);\n }\n\n private _autoSelect: boolean = true;\n\n get value(): any {\n return this.tree.getSelectedValues();\n }\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n\n private _id: string;\n\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this.parentFormField) {\n this._disabled ? this.parentFormField.stopFocusMonitor() : this.parentFormField.runFocusMonitor();\n }\n }\n\n private _disabled: boolean = false;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n }\n\n private _focused = false;\n\n /** Width of the overlay panel. */\n protected overlayWidth: string | number;\n\n /** Min width of the overlay panel. */\n protected overlayMinWidth: string | number;\n\n /** Origin for the overlay panel. */\n protected overlayOrigin?: CdkOverlayOrigin | ElementRef;\n\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n @Input() panelWidth: KbqTreeSelectPanelWidth = this.defaultOptions?.panelWidth || null;\n\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n get canShowCleaner(): boolean {\n return !this.disabled && this.cleaner && this.selectionModel.hasValue();\n }\n\n isEmptySearchResult: boolean;\n\n triggerValues: KbqTreeSelectTriggerValue[] = [];\n\n private closeSubscription = Subscription.EMPTY;\n\n private _panelOpen = false;\n\n private originalOnKeyDown: (event: KeyboardEvent) => void;\n\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `kbq-tree-select-${nextUniqueId++}`;\n\n // Used for storing the values that were assigned before the options were initialized.\n private tempValues: string | string[] | null;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n elementRef: ElementRef,\n readonly changeDetectorRef: ChangeDetectorRef,\n private readonly ngZone: NgZone,\n private readonly renderer: Renderer2,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Inject(KBQ_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory,\n @Optional() private readonly dir: Directionality,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Host() @Optional() private readonly parentFormField: KbqFormField,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService?: KbqLocaleService\n ) {\n super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scrollTop = 0;\n\n if (this.search) {\n this.search.focus();\n }\n\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.tree) return;\n\n this.tree.resetFocusedItemOnBlur = false;\n this.tree.optionShouldHoldFocusOnBlur = true;\n\n this.selectionModel = this.tree.selectionModel = new SelectionModel<any>(this.multiple);\n\n this.selectionModel.changed.subscribe(() => {\n this.onChange(this.selectedValues);\n\n if (this.multiple) {\n this.refreshTriggerValues();\n }\n });\n\n this.tree.ngAfterContentInit();\n\n this.initKeyManager();\n\n this.options = this.tree.renderedOptions;\n this.tree.autoSelect = this.autoSelect;\n\n if (this.tree.multipleMode === null) {\n this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;\n }\n\n if (this.multiple) {\n this.tree.noUnselectLast = false;\n }\n\n if (this.tempValues) {\n this.setSelectionByValue(this.tempValues);\n this.tempValues = null;\n }\n\n this.userInteractionChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (!this.multiple && this.panelOpen) {\n this.close();\n\n Promise.resolve().then(() => this.focus());\n }\n });\n\n this.tree.selectionChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new KbqTreeSelectChange(this, event.option));\n\n if (this.search) {\n this.search.focus();\n }\n });\n\n if (!this.multiple) {\n this.selectionModel.changed\n .pipe(\n filter(({ added }) => !!added.length),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(({ added }) => {\n this.tree.keyManager.setFocusOrigin('program');\n this.tree.keyManager.setActiveItem(this.options.find(({ data }) => data === added[0]) as any);\n });\n }\n\n this.subscribeOnSearchChanges();\n }\n\n ngAfterViewInit() {\n if (!this.tree) {\n return;\n }\n\n this.tags.changes.pipe(startWith(null)).subscribe(() => {\n this.calculateHiddenItems();\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes.disabled) {\n this.stateChanges.next();\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this.closeSubscription.unsubscribe();\n }\n\n @Input()\n hiddenItemsTextFormatter(hiddenItemsText: string, hiddenItems: number): string {\n return hiddenItemsText.replace('{{ number }}', hiddenItems.toString());\n }\n\n clearValue($event): void {\n $event.stopPropagation();\n\n this.selectionModel.clear();\n this.tree.keyManager.setActiveItem(-1);\n\n this.setSelectionByValue([]);\n\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new KbqTreeSelectChange(this, this.selectedValues));\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n onTouched = () => {};\n\n toggle(): void {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) {\n return;\n }\n\n this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this.parentFormField) {\n this.overlayOrigin = this.parentFormField.getConnectedOverlayOrigin();\n }\n\n this.overlayWidth = this.getOverlayWidth(this.overlayOrigin);\n this.overlayMinWidth = this.overlayWidth ? '' : this.triggerRect.width;\n\n this._panelOpen = true;\n\n setTimeout(() => this.highlightCorrectOption());\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (!this._panelOpen) {\n return;\n }\n\n this._panelOpen = false;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n if (this.search) {\n this.search.reset();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.tree) {\n this.setSelectionByValue(value);\n } else {\n this.tempValues = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n get selected(): any {\n return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));\n\n return this.multiple ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty) {\n return '';\n }\n\n return this.tree.treeControl.getViewValue(this.selected);\n }\n\n get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n isRtl(): boolean {\n return this.dir ? this.dir.value === 'rtl' : false;\n }\n\n get firstSelected() {\n return this.selectionModel.selected.filter((node) => !this.tree.treeControl.isDisabled(node))[0];\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (!this.disabled) {\n if (this.panelOpen) {\n this.handleOpenKeydown(event);\n } else {\n this.handleClosedKeydown(event);\n }\n }\n }\n\n onFocus() {\n if (!this.disabled) {\n this._focused = true;\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.setOverlayPosition();\n this.panel.nativeElement.scrollTop = this.scrollTop;\n\n this.tree.updateScrollSize();\n });\n\n this.closeSubscription = this.closingActions().subscribe(() => this.close());\n }\n\n /** Returns the theme to be used on the panel. */\n getPanelTheme(): string {\n return this.parentFormField ? `kbq-${this.parentFormField.color}` : '';\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Invoked when an option is clicked. */\n onRemoveSelectedOption(selectedOption: any, $event) {\n $event.stopPropagation();\n\n this.selectionModel.deselect(\n this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value)\n );\n\n this.selectionChange.emit(\n new KbqTreeSelectChange(\n this,\n this.options.find((option) => option.value === selectedOption.value) || selectedOption.value\n )\n );\n\n this.onChange(this.selectedValues);\n }\n\n calculateHiddenItems() {\n if (!this.isBrowser || this.customTrigger || this.empty || !this.multiple || this.customMatcher) return;\n\n const totalItemsWidth = this.getTotalItemsWidthInMatcher();\n const [totalVisibleItemsWidth, visibleItems] = this.getTotalVisibleItems();\n\n this.hiddenItems = this.selectionModel.selected.length - visibleItems;\n this.changeDetectorRef.detectChanges();\n\n if (this.hiddenItems) {\n const itemsCounter = this.trigger.nativeElement.querySelector('.kbq-select__match-hidden-text');\n const matcherList = this.trigger.nativeElement.querySelector('.kbq-select__match-list');\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n const itemsCounterWidth: number = Math.floor(itemsCounter.getBoundingClientRect().width);\n\n const matcherListWidth: number = Math.floor(matcherList.getBoundingClientRect().width);\n const matcherWidth: number = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);\n\n if (itemsCounterShowed && totalItemsWidth < matcherWidth) {\n this.hiddenItems = 0;\n this.changeDetectorRef.detectChanges();\n }\n\n if (\n totalVisibleItemsWidth === matcherListWidth ||\n totalVisibleItemsWidth + itemsCounterWidth < matcherListWidth\n ) {\n this.changeDetectorRef.markForCheck();\n\n return;\n }\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private updateLocaleParams = () => {\n this.hiddenItemsText = this.localeService?.getParams('select').hiddenItemsText;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir\n .overlayRef!.outsidePointerEvents()\n .pipe(filter((event) => !this.elementRef.nativeElement.contains(_getEventTarget(event))));\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n private getTotalItemsWidthInMatcher(): number {\n const triggerClone = this.buildTriggerClone();\n triggerClone.querySelector('.kbq-select__match-hidden-text')?.remove();\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let totalItemsWidth: number = 0;\n const selectedItemsViewValueContainers = triggerClone.querySelectorAll<HTMLElement>('kbq-tag');\n selectedItemsViewValueContainers.forEach((item) => (totalItemsWidth += this.getItemWidth(item)));\n\n triggerClone.remove();\n\n return totalItemsWidth;\n }\n\n private getTotalVisibleItems(): [number, number] {\n const triggerClone = this.buildTriggerClone();\n this.renderer.setStyle(triggerClone.querySelector('.kbq-select__match-hidden-text'), 'display', 'block');\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let visibleItemsCount: number = 0;\n let totalVisibleItemsWidth: number = 0;\n (triggerClone.querySelectorAll('kbq-tag') as NodeListOf<HTMLElement>).forEach((item) => {\n if (item.offsetTop < item.offsetHeight) {\n totalVisibleItemsWidth += this.getItemWidth(item);\n visibleItemsCount++;\n }\n });\n\n triggerClone.remove();\n\n return [totalVisibleItemsWidth, visibleItemsCount];\n }\n\n /** Gets how wide the overlay panel should be. */\n private getOverlayWidth(origin?: ElementRef | CdkOverlayOrigin): string | number {\n if (this.panelWidth === 'auto') {\n const elementRef = origin instanceof CdkOverlayOrigin ? origin.elementRef : origin || this.elementRef;\n return elementRef.nativeElement.getBoundingClientRect().width;\n }\n return this.panelWidth ?? '';\n }\n\n private buildTriggerClone(): HTMLDivElement {\n const triggerClone = this.trigger.nativeElement.cloneNode(true);\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n return triggerClone;\n }\n\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = getComputedStyle(element);\n\n const width: number = parseInt(computedStyle.width as string);\n const marginLeft: number = parseInt(computedStyle.marginLeft as string);\n const marginRight: number = parseInt(computedStyle.marginRight as string);\n\n return width + marginLeft + marginRight + parseInt(SelectSizeMultipleContentGap);\n }\n\n private handleClosedKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey =\n keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {\n this.tree.keyManager.onKeydown(event);\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if ((isArrowKey && event.altKey) || keyCode === ESCAPE || keyCode === TAB) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n this.focus();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n return this.originalOnKeyDown.call(this.tree, event);\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n this.originalOnKeyDown.call(this.tree, event);\n } else {\n this.close();\n }\n } else if (this.multiple && isSelectAll(event)) {\n event.preventDefault();\n\n const hasDeselectedOptions = this.options.some((option) => !option.selected);\n\n this.options.forEach((option) => {\n if (hasDeselectedOptions && !option.disabled) {\n option.select(false);\n } else {\n option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.onKeydown(event);\n\n if (\n this.multiple &&\n isArrowKey &&\n event.shiftKey &&\n this.tree.keyManager.activeItem &&\n this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n this.tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && this.tree.keyManager.activeItem) {\n this.tree.setSelectedOptionsByKey(\n this.tree.keyManager.activeItem,\n hasModifierKey(event, 'shiftKey'),\n hasModifierKey(event, 'ctrlKey')\n );\n }\n\n if (this.search) {\n this.search.focus();\n }\n }\n }\n\n private refreshTriggerValues(): void {\n this.triggerValues = this.selectionModel.selected.map((node) => ({\n value: this.tree.treeControl.getValue(node),\n viewValue: this.tree.treeControl.getViewValue(node),\n disabled: this.tree.treeControl.isDisabled(node)\n }));\n\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n if (this.multiple && value) {\n if (!Array.isArray(value)) {\n throw getKbqSelectNonArrayValueError();\n }\n\n this.tree.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree.setOptionsFromValues([value]);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n this.originalOnKeyDown = this.tree.onKeyDown;\n\n this.tree.onKeyDown = () => {};\n\n this.tree.keyManager.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this._panelOpen && this.panel) {\n this.scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {\n this.tree.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this.selectionModel.sort((a, b) => {\n return this.sortComparator\n ? this.sortComparator(a, b, options)\n : options.indexOf(a) - options.indexOf(b);\n });\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n if (!this.tree.keyManager) {\n return;\n }\n\n const selectedOption = this.options.find((option) => (option.data as any) === this.firstSelected);\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n\n if (selectedOption) {\n this.tree.keyManager.setActiveItem(selectedOption);\n } else {\n this.tree.keyManager.setFirstItemActive();\n\n if (this.tree.keyManager.activeItem?.disabled) {\n this.tree.keyManager.setActiveItem(-1);\n }\n }\n }\n\n /** Scrolls the active option into view. */\n private scrollActiveOptionIntoView() {\n this.tree.keyManager.activeItem?.focus();\n }\n\n private subscribeOnSearchChanges() {\n if (!this.search?.ngControl.valueChanges) {\n return;\n }\n\n this.search.ngControl.valueChanges.pipe(delay(0)).subscribe((value) => {\n this.isEmptySearchResult = !!value && this.tree.isEmpty;\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder || '\\u00A0' }}\n </span>\n }\n @if (!empty) {\n <span>\n @if (!!customTrigger) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiple) {\n <div class=\"kbq-select__match-list\">\n @if (!customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <kbq-tag\n [class.kbq-error]=\"errorState\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled) {\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n (click)=\"onRemoveSelectedOption(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n }\n @if (customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <ng-container\n [ngTemplateOutlet]=\"customTagTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n }\n </span>\n }\n\n @if (canShowCleaner) {\n <div class=\"kbq-select__cleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i color=\"contrast-fade\" kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n>\n <div\n #panel\n cdkMonitorSubtreeFocus\n class=\"kbq-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.transformOrigin]=\"transformOrigin\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (search) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div\n #optionsContainer\n class=\"kbq-tree-select__content kbq-scrollbar\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\"\n [@fadeInContent]=\"'showing'\"\n >\n @if (isEmptySearchResult) {\n <div class=\"kbq-select__no-options-message\">\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n </div>\n }\n\n <ng-content select=\"kbq-tree-selection\" />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-tree-select-footer]\" />\n </div>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n KBQ_SELECT_SCROLL_STRATEGY_PROVIDER,\n KbqPseudoCheckboxModule,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectSearchEmptyResult,\n KbqSelectTrigger\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTagsModule } from '@koobiq/components/tags';\nimport { KbqTreeModule } from '@koobiq/components/tree';\nimport { KbqTreeSelect } from './tree-select.component';\n\n@NgModule({\n imports: [\n OverlayModule,\n KbqTreeModule,\n KbqIconModule,\n KbqTagsModule,\n KbqPseudoCheckboxModule,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult,\n NgClass,\n NgTemplateOutlet,\n A11yModule\n ],\n exports: [\n KbqTreeSelect,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult\n ],\n declarations: [KbqTreeSelect],\n providers: [KBQ_SELECT_SCROLL_STRATEGY_PROVIDER]\n})\nexport class KbqTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectSizeMultipleContentGap"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-tree-select.mjs","sources":["../../../packages/components/tree-select/tree-select.component.ts","../../../packages/components/tree-select/tree-select.html","../../../packages/components/tree-select/tree-select.module.ts","../../../packages/components/tree-select/koobiq-components-tree-select.ts"],"sourcesContent":["import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { Platform, _getEventTarget } from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n Host,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Provider,\n QueryList,\n Renderer2,\n Self,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SPACE,\n TAB,\n UP_ARROW,\n hasModifierKey,\n isSelectAll\n} from '@koobiq/cdk/keycodes';\nimport {\n CanDisable,\n CanDisableCtor,\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n HasTabIndex,\n HasTabIndexCtor,\n KBQ_LOCALE_SERVICE,\n KBQ_PARENT_POPUP,\n KBQ_SELECT_SCROLL_STRATEGY,\n KbqAbstractSelect,\n KbqLocaleService,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectTrigger,\n MultipleMode,\n defaultOffsetY,\n getKbqSelectDynamicMultipleError,\n getKbqSelectNonArrayValueError,\n kbqSelectAnimations,\n mixinDisabled,\n mixinErrorState,\n mixinTabIndex\n} from '@koobiq/components/core';\nimport { KbqCleaner, KbqFormField, KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { KbqTag } from '@koobiq/components/tags';\nimport { KbqTree, KbqTreeOption, KbqTreeSelection } from '@koobiq/components/tree';\nimport { SizeXxs as SelectSizeMultipleContentGap } from '@koobiq/design-tokens';\nimport { Observable, Subject, Subscription, defer, merge } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, startWith, switchMap, take } from 'rxjs/operators';\n\nlet nextUniqueId = 0;\n\n/** Tree select trigger value type. */\nexport type KbqTreeSelectTriggerValue = {\n disabled: boolean;\n value: string;\n viewValue: string;\n};\n\n/** @deprecated Will be removed in the next major release, use `KbqTreeSelectTriggerValue` instead */\nexport interface ITriggerValue extends KbqTreeSelectTriggerValue {}\n\n/** Tree select panel width type. */\nexport type KbqTreeSelectPanelWidth = 'auto' | number | null;\n\n/** Options for the `kbq-tree-select` that can be configured using the `KBQ_TREE_SELECT_OPTIONS` injection token. */\nexport type KbqTreeSelectOptions = Partial<{\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n panelWidth: KbqTreeSelectPanelWidth;\n}>;\n\n/** Injection token that can be used to provide the default options for the `kbq-tree-select`. */\nexport const KBQ_TREE_SELECT_OPTIONS = new InjectionToken<KbqTreeSelectOptions>('KBQ_TREE_SELECT_OPTIONS');\n\n/** Utility provider for `KBQ_TREE_SELECT_OPTIONS`. */\nexport const kbqTreeSelectOptionsProvider = (options: KbqTreeSelectOptions): Provider => {\n return {\n provide: KBQ_TREE_SELECT_OPTIONS,\n useValue: options\n };\n};\n\n/** Change event object that is emitted when the select value has changed. */\nexport class KbqTreeSelectChange {\n constructor(\n public source: KbqTreeSelect,\n public value: any,\n public isUserInput = false\n ) {}\n}\n\n/** @docs-private */\nclass KbqTreeSelectBase extends KbqAbstractSelect {\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n constructor(\n public elementRef: ElementRef,\n public defaultErrorStateMatcher: ErrorStateMatcher,\n public parentForm: NgForm,\n public parentFormGroup: FormGroupDirective,\n public ngControl: NgControl\n ) {\n super();\n }\n}\n\n/** @docs-private */\nconst KbqTreeSelectMixinBase: CanDisableCtor & HasTabIndexCtor & CanUpdateErrorStateCtor & typeof KbqTreeSelectBase =\n mixinTabIndex(mixinDisabled(mixinErrorState(KbqTreeSelectBase)));\n\n@Component({\n selector: 'kbq-tree-select',\n exportAs: 'kbqTreeSelect',\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss', 'tree-select-tokens.scss'],\n inputs: ['disabled', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-tree-select',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-invalid]': 'errorState',\n\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n\n '(click)': 'toggle()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(window:resize)': 'calculateHiddenItems()'\n },\n animations: [\n kbqSelectAnimations.transformPanel,\n kbqSelectAnimations.fadeInContent\n ],\n providers: [\n { provide: KbqFormFieldControl, useExisting: KbqTreeSelect },\n { provide: KbqTree, useExisting: KbqTreeSelect },\n { provide: KBQ_PARENT_POPUP, useExisting: KbqTreeSelect }\n ]\n})\nexport class KbqTreeSelect\n extends KbqTreeSelectMixinBase\n implements\n AfterContentInit,\n AfterViewInit,\n OnChanges,\n OnDestroy,\n OnInit,\n DoCheck,\n ControlValueAccessor,\n CanDisable,\n HasTabIndex,\n KbqFormFieldControl<KbqTreeOption>,\n CanUpdateErrorState\n{\n protected readonly isBrowser = inject(Platform).isBrowser;\n\n private readonly defaultOptions = inject(KBQ_TREE_SELECT_OPTIONS, { optional: true });\n\n /** A name for this control that can be used by `kbq-form-field`. */\n controlType = 'select';\n\n hiddenItems: number = 0;\n\n /** The last measured value for the trigger's client bounding rect. */\n triggerRect: DOMRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<any>;\n\n /** The value of the select panel's transform-origin property. */\n transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy = this.scrollStrategyFactory();\n\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n offsetY = defaultOffsetY;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: this.offsetY\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -this.offsetY\n }\n ];\n\n options: QueryList<KbqTreeOption>;\n\n /**\n * Trigger - is a clickable field to open select dropdown panel\n */\n @ViewChild('trigger', { static: false }) trigger: ElementRef;\n\n @ViewChild('panel', { static: false }) panel: ElementRef;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n @ViewChildren(KbqTag) tags: QueryList<KbqTag>;\n\n @ContentChild('kbqSelectCleaner', { static: true }) cleaner: KbqCleaner;\n\n /** User-supplied override of the trigger element. */\n @ContentChild(KbqSelectTrigger, { static: false }) customTrigger: KbqSelectTrigger;\n\n @ContentChild(KbqSelectMatcher, { static: false }) customMatcher: KbqSelectMatcher;\n\n @ContentChild('kbqSelectTagContent', { static: false, read: TemplateRef }) customTagTemplateRef: TemplateRef<any>;\n\n @ContentChild(KbqTreeSelection, { static: false }) tree: KbqTreeSelection;\n\n @ContentChild(KbqSelectSearch, { static: false }) search: KbqSelectSearch;\n\n @Input() hiddenItemsText: string = 'еще {{ number }}';\n\n /** Event emitted when the select panel has been toggled. */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly openedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => o),\n map(() => {})\n );\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly closedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => !o),\n map(() => {})\n );\n\n /** Event emitted when the selected value has been changed by the user. */\n @Output() readonly selectionChange = new EventEmitter<KbqTreeSelectChange>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[] | Set<string> | { [key: string]: any };\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n @Input() sortComparator: (a: KbqTreeOption, b: KbqTreeOption, options: KbqTreeOption[]) => number;\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<KbqTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.onSelectionChange)))\n );\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<KbqTreeSelectChange>;\n\n /** Combined stream of all of the child options userInteraction events. */\n readonly userInteractionChanges: Observable<void> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.userInteraction)))\n );\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.userInteractionChanges)\n );\n });\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n\n set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getKbqSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n private _multiple: boolean = false;\n\n @Input()\n get autoSelect(): boolean {\n if (this.multiple) {\n return false;\n }\n\n return this._autoSelect;\n }\n\n set autoSelect(value: boolean) {\n this._autoSelect = coerceBooleanProperty(value);\n }\n\n private _autoSelect: boolean = true;\n\n get value(): any {\n return this.tree.getSelectedValues();\n }\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n\n private _id: string;\n\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n get disabled() {\n return this._disabled;\n }\n\n set disabled(value: any) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this.parentFormField) {\n this._disabled ? this.parentFormField.stopFocusMonitor() : this.parentFormField.runFocusMonitor();\n }\n }\n\n private _disabled: boolean = false;\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n }\n\n private _focused = false;\n\n /** Width of the overlay panel. */\n protected overlayWidth: string | number;\n\n /** Min width of the overlay panel. */\n protected overlayMinWidth: string | number;\n\n /** Origin for the overlay panel. */\n protected overlayOrigin?: CdkOverlayOrigin | ElementRef;\n\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n @Input() panelWidth: KbqTreeSelectPanelWidth = this.defaultOptions?.panelWidth || null;\n\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n get canShowCleaner(): boolean {\n return !this.disabled && this.cleaner && this.selectionModel.hasValue();\n }\n\n isEmptySearchResult: boolean;\n\n triggerValues: KbqTreeSelectTriggerValue[] = [];\n\n private closeSubscription = Subscription.EMPTY;\n\n private _panelOpen = false;\n\n private originalOnKeyDown: (event: KeyboardEvent) => void;\n\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `kbq-tree-select-${nextUniqueId++}`;\n\n // Used for storing the values that were assigned before the options were initialized.\n private tempValues: string | string[] | null;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n elementRef: ElementRef,\n readonly changeDetectorRef: ChangeDetectorRef,\n private readonly ngZone: NgZone,\n private readonly renderer: Renderer2,\n defaultErrorStateMatcher: ErrorStateMatcher,\n @Inject(KBQ_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory,\n @Optional() private readonly dir: Directionality,\n @Optional() parentForm: NgForm,\n @Optional() parentFormGroup: FormGroupDirective,\n @Host() @Optional() private readonly parentFormField: KbqFormField,\n @Optional() @Self() ngControl: NgControl,\n @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService?: KbqLocaleService\n ) {\n super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n\n ngOnInit() {\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scrollTop = 0;\n\n if (this.search) {\n this.search.focus();\n }\n\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.tree) return;\n\n this.tree.resetFocusedItemOnBlur = false;\n this.tree.optionShouldHoldFocusOnBlur = true;\n\n this.selectionModel = this.tree.selectionModel = new SelectionModel<any>(this.multiple);\n\n this.selectionModel.changed.subscribe(() => {\n this.onChange(this.selectedValues);\n\n if (this.multiple) {\n this.refreshTriggerValues();\n }\n });\n\n this.tree.ngAfterContentInit();\n\n this.initKeyManager();\n\n this.options = this.tree.renderedOptions;\n this.tree.autoSelect = this.autoSelect;\n\n if (this.tree.multipleMode === null) {\n this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;\n }\n\n if (this.multiple) {\n this.tree.noUnselectLast = false;\n }\n\n if (this.tempValues) {\n this.setSelectionByValue(this.tempValues);\n this.tempValues = null;\n }\n\n this.userInteractionChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (!this.multiple && this.panelOpen) {\n this.close();\n\n Promise.resolve().then(() => this.focus());\n }\n });\n\n this.tree.selectionChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new KbqTreeSelectChange(this, event.option));\n\n if (this.search) {\n this.search.focus();\n }\n });\n\n if (!this.multiple) {\n this.selectionModel.changed\n .pipe(\n filter(({ added }) => !!added.length),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(({ added }) => {\n this.tree.keyManager.setFocusOrigin('program');\n this.tree.keyManager.setActiveItem(this.options.find(({ data }) => data === added[0]) as any);\n });\n }\n\n this.subscribeOnSearchChanges();\n }\n\n ngAfterViewInit() {\n if (!this.tree) {\n return;\n }\n\n this.tags.changes.pipe(startWith(null)).subscribe(() => {\n this.calculateHiddenItems();\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes.disabled) {\n this.stateChanges.next();\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this.closeSubscription.unsubscribe();\n }\n\n @Input()\n hiddenItemsTextFormatter(hiddenItemsText: string, hiddenItems: number): string {\n return hiddenItemsText.replace('{{ number }}', hiddenItems.toString());\n }\n\n clearValue($event): void {\n $event.stopPropagation();\n\n this.selectionModel.clear();\n this.tree.keyManager.setActiveItem(-1);\n\n this.setSelectionByValue([]);\n\n this.onChange(this.selectedValues);\n\n this.selectionChange.emit(new KbqTreeSelectChange(this, this.selectedValues));\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n onTouched = () => {};\n\n toggle(): void {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) {\n return;\n }\n\n this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this.parentFormField) {\n this.overlayOrigin = this.parentFormField.getConnectedOverlayOrigin();\n }\n\n this.overlayWidth = this.getOverlayWidth(this.overlayOrigin);\n this.overlayMinWidth = this.overlayWidth ? '' : this.triggerRect.width;\n\n this._panelOpen = true;\n\n setTimeout(() => this.highlightCorrectOption());\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (!this._panelOpen) {\n return;\n }\n\n this._panelOpen = false;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n if (this.search) {\n this.search.reset();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.tree) {\n this.setSelectionByValue(value);\n } else {\n this.tempValues = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n get selected(): any {\n return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));\n\n return this.multiple ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty) {\n return '';\n }\n\n return this.tree.treeControl.getViewValue(this.selected);\n }\n\n get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n isRtl(): boolean {\n return this.dir ? this.dir.value === 'rtl' : false;\n }\n\n get firstSelected() {\n return this.selectionModel.selected.filter((node) => !this.tree.treeControl.isDisabled(node))[0];\n }\n\n handleKeydown(event: KeyboardEvent) {\n if (!this.disabled) {\n if (this.panelOpen) {\n this.handleOpenKeydown(event);\n } else {\n this.handleClosedKeydown(event);\n }\n }\n }\n\n onFocus() {\n if (!this.disabled) {\n this._focused = true;\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n\n if (this.ngControl?.control) {\n const control = this.ngControl.control;\n\n control.updateValueAndValidity({ emitEvent: false });\n (control.statusChanges as EventEmitter<string>).emit(control.status);\n }\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.setOverlayPosition();\n this.panel.nativeElement.scrollTop = this.scrollTop;\n\n this.tree.updateScrollSize();\n });\n\n this.closeSubscription = this.closingActions().subscribe(() => this.close());\n }\n\n /** Returns the theme to be used on the panel. */\n getPanelTheme(): string {\n return this.parentFormField ? `kbq-${this.parentFormField.color}` : '';\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Invoked when an option is clicked. */\n onRemoveSelectedOption(selectedOption: any, $event) {\n $event.stopPropagation();\n\n this.selectionModel.deselect(\n this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value)\n );\n\n this.selectionChange.emit(\n new KbqTreeSelectChange(\n this,\n this.options.find((option) => option.value === selectedOption.value) || selectedOption.value\n )\n );\n\n this.onChange(this.selectedValues);\n }\n\n calculateHiddenItems() {\n if (!this.isBrowser || this.customTrigger || this.empty || !this.multiple || this.customMatcher) return;\n\n const totalItemsWidth = this.getTotalItemsWidthInMatcher();\n const [totalVisibleItemsWidth, visibleItems] = this.getTotalVisibleItems();\n\n this.hiddenItems = this.selectionModel.selected.length - visibleItems;\n this.changeDetectorRef.detectChanges();\n\n if (this.hiddenItems) {\n const itemsCounter = this.trigger.nativeElement.querySelector('.kbq-select__match-hidden-text');\n const matcherList = this.trigger.nativeElement.querySelector('.kbq-select__match-list');\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n const itemsCounterWidth: number = Math.floor(itemsCounter.getBoundingClientRect().width);\n\n const matcherListWidth: number = Math.floor(matcherList.getBoundingClientRect().width);\n const matcherWidth: number = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);\n\n if (itemsCounterShowed && totalItemsWidth < matcherWidth) {\n this.hiddenItems = 0;\n this.changeDetectorRef.detectChanges();\n }\n\n if (\n totalVisibleItemsWidth === matcherListWidth ||\n totalVisibleItemsWidth + itemsCounterWidth < matcherListWidth\n ) {\n this.changeDetectorRef.markForCheck();\n\n return;\n }\n }\n\n this.changeDetectorRef.markForCheck();\n }\n\n private updateLocaleParams = () => {\n this.hiddenItemsText = this.localeService?.getParams('select').hiddenItemsText;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir\n .overlayRef!.outsidePointerEvents()\n .pipe(filter((event) => !this.elementRef.nativeElement.contains(_getEventTarget(event))));\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n private getTotalItemsWidthInMatcher(): number {\n const triggerClone = this.buildTriggerClone();\n triggerClone.querySelector('.kbq-select__match-hidden-text')?.remove();\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let totalItemsWidth: number = 0;\n const selectedItemsViewValueContainers = triggerClone.querySelectorAll<HTMLElement>('kbq-tag');\n selectedItemsViewValueContainers.forEach((item) => (totalItemsWidth += this.getItemWidth(item)));\n\n triggerClone.remove();\n\n return totalItemsWidth;\n }\n\n private getTotalVisibleItems(): [number, number] {\n const triggerClone = this.buildTriggerClone();\n this.renderer.setStyle(triggerClone.querySelector('.kbq-select__match-hidden-text'), 'display', 'block');\n this.renderer.appendChild(this.trigger.nativeElement, triggerClone);\n\n let visibleItemsCount: number = 0;\n let totalVisibleItemsWidth: number = 0;\n (triggerClone.querySelectorAll('kbq-tag') as NodeListOf<HTMLElement>).forEach((item) => {\n if (item.offsetTop < item.offsetHeight) {\n totalVisibleItemsWidth += this.getItemWidth(item);\n visibleItemsCount++;\n }\n });\n\n triggerClone.remove();\n\n return [totalVisibleItemsWidth, visibleItemsCount];\n }\n\n /** Gets how wide the overlay panel should be. */\n private getOverlayWidth(origin?: ElementRef | CdkOverlayOrigin): string | number {\n if (this.panelWidth === 'auto') {\n const elementRef = origin instanceof CdkOverlayOrigin ? origin.elementRef : origin || this.elementRef;\n return elementRef.nativeElement.getBoundingClientRect().width;\n }\n return this.panelWidth ?? '';\n }\n\n private buildTriggerClone(): HTMLDivElement {\n const triggerClone = this.trigger.nativeElement.cloneNode(true);\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n return triggerClone;\n }\n\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = getComputedStyle(element);\n\n const width: number = parseInt(computedStyle.width as string);\n const marginLeft: number = parseInt(computedStyle.marginLeft as string);\n const marginRight: number = parseInt(computedStyle.marginRight as string);\n\n return width + marginLeft + marginRight + parseInt(SelectSizeMultipleContentGap);\n }\n\n private handleClosedKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey =\n keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {\n this.tree.keyManager.onKeydown(event);\n }\n }\n\n private handleOpenKeydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n if ((isArrowKey && event.altKey) || keyCode === ESCAPE || keyCode === TAB) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n this.focus();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n return this.originalOnKeyDown.call(this.tree, event);\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n this.originalOnKeyDown.call(this.tree, event);\n } else {\n this.close();\n }\n } else if (this.multiple && isSelectAll(event)) {\n event.preventDefault();\n\n const hasDeselectedOptions = this.options.some((option) => !option.selected);\n\n this.options.forEach((option) => {\n if (hasDeselectedOptions && !option.disabled) {\n option.select(false);\n } else {\n option.deselect();\n }\n });\n } else {\n const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n this.tree.keyManager.onKeydown(event);\n\n if (\n this.multiple &&\n isArrowKey &&\n event.shiftKey &&\n this.tree.keyManager.activeItem &&\n this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n this.tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && this.tree.keyManager.activeItem) {\n this.tree.setSelectedOptionsByKey(\n this.tree.keyManager.activeItem,\n hasModifierKey(event, 'shiftKey'),\n // ctrlKey is for Windows, metaKey is for MacOS\n hasModifierKey(event, 'ctrlKey', 'metaKey')\n );\n }\n\n if (this.search) {\n this.search.focus();\n }\n }\n }\n\n private refreshTriggerValues(): void {\n this.triggerValues = this.selectionModel.selected.map((node) => ({\n value: this.tree.treeControl.getValue(node),\n viewValue: this.tree.treeControl.getViewValue(node),\n disabled: this.tree.treeControl.isDisabled(node)\n }));\n\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n if (this.multiple && value) {\n if (!Array.isArray(value)) {\n throw getKbqSelectNonArrayValueError();\n }\n\n this.tree.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree.setOptionsFromValues([value]);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n this.originalOnKeyDown = this.tree.onKeyDown;\n\n this.tree.onKeyDown = () => {};\n\n this.tree.keyManager.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this._panelOpen && this.panel) {\n this.scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {\n this.tree.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n\n this.selectionModel.sort((a, b) => {\n return this.sortComparator\n ? this.sortComparator(a, b, options)\n : options.indexOf(a) - options.indexOf(b);\n });\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n if (!this.tree.keyManager) {\n return;\n }\n\n const selectedOption = this.options.find((option) => (option.data as any) === this.firstSelected);\n\n this.tree.keyManager.setFocusOrigin('keyboard');\n\n if (selectedOption) {\n this.tree.keyManager.setActiveItem(selectedOption);\n } else {\n this.tree.keyManager.setFirstItemActive();\n\n if (this.tree.keyManager.activeItem?.disabled) {\n this.tree.keyManager.setActiveItem(-1);\n }\n }\n }\n\n /** Scrolls the active option into view. */\n private scrollActiveOptionIntoView() {\n this.tree.keyManager.activeItem?.focus();\n }\n\n private subscribeOnSearchChanges() {\n if (!this.search?.ngControl.valueChanges) {\n return;\n }\n\n this.search.ngControl.valueChanges.pipe(delay(0)).subscribe((value) => {\n this.isEmptySearchResult = !!value && this.tree.isEmpty;\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder || '\\u00A0' }}\n </span>\n }\n @if (!empty) {\n <span>\n @if (!!customTrigger) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiple) {\n <div class=\"kbq-select__match-list\">\n @if (!customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <kbq-tag\n [class.kbq-error]=\"errorState\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled) {\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n (click)=\"onRemoveSelectedOption(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n }\n @if (customTagTemplateRef) {\n @for (option of triggerValues; track option) {\n <ng-container\n [ngTemplateOutlet]=\"customTagTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n }\n </span>\n }\n\n @if (canShowCleaner) {\n <div class=\"kbq-select__cleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i color=\"contrast-fade\" kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n>\n <div\n #panel\n cdkMonitorSubtreeFocus\n class=\"kbq-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.transformOrigin]=\"transformOrigin\"\n (keydown)=\"handleKeydown($event)\"\n >\n @if (search) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div\n #optionsContainer\n class=\"kbq-tree-select__content kbq-scrollbar\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\"\n [@fadeInContent]=\"'showing'\"\n >\n @if (isEmptySearchResult) {\n <div class=\"kbq-select__no-options-message\">\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n </div>\n }\n\n <ng-content select=\"kbq-tree-selection\" />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-tree-select-footer]\" />\n </div>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n KBQ_SELECT_SCROLL_STRATEGY_PROVIDER,\n KbqPseudoCheckboxModule,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectSearchEmptyResult,\n KbqSelectTrigger\n} from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTagsModule } from '@koobiq/components/tags';\nimport { KbqTreeModule } from '@koobiq/components/tree';\nimport { KbqTreeSelect } from './tree-select.component';\n\n@NgModule({\n imports: [\n OverlayModule,\n KbqTreeModule,\n KbqIconModule,\n KbqTagsModule,\n KbqPseudoCheckboxModule,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult,\n NgClass,\n NgTemplateOutlet,\n A11yModule\n ],\n exports: [\n KbqTreeSelect,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult\n ],\n declarations: [KbqTreeSelect],\n providers: [KBQ_SELECT_SCROLL_STRATEGY_PROVIDER]\n})\nexport class KbqTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectSizeMultipleContentGap"],"mappings":"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"}
@@ -799,7 +799,7 @@ class KbqTreeNodeToggleComponent extends KbqTreeNodeToggleBaseDirective {
799
799
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTreeNodeToggleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
800
800
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: KbqTreeNodeToggleComponent, selector: "kbq-tree-node-toggle", inputs: { disabled: "disabled" }, host: { listeners: { "click": "toggle($event)" }, properties: { "class.kbq-expanded": "iconState", "attr.disabled": "disabled || null" }, classAttribute: "kbq-tree-node-toggle" }, exportAs: ["kbqTreeNodeToggle"], usesInheritance: true, ngImport: i0, template: `
801
801
  <i kbq-icon="kbq-chevron-down-s_16"></i>
802
- `, isInline: true, styles: [".kbq-tree-node-toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:100%;padding-left:var(--kbq-tree-size-toggle-padding);padding-right:var(--kbq-tree-size-toggle-padding);cursor:pointer}.kbq-tree-node-toggle .kbq-icon{transform:rotate(-90deg)}.kbq-tree-node-toggle.kbq-expanded .kbq-icon{transform:rotate(0)}.kbq-tree-node-toggle[disabled]{cursor:default}.kbq-tree-selection:focus{outline:none}.kbq-tree-option{background:var(--kbq-tree-default-container-background)}.kbq-tree-option .kbq-option-text{color:var(--kbq-tree-default-text-color)}.kbq-tree-option .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-default-tree-toggle-color)}.kbq-tree-option .kbq-option-action .kbq-icon{color:var(--kbq-tree-default-action-button-color)}.kbq-tree-option .kbq-option-caption{color:var(--kbq-tree-default-caption-color)}.kbq-tree-option:hover:not(.kbq-disabled){background:var(--kbq-tree-states-hover-container-background)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-option-text{color:var(--kbq-tree-states-hover-text-color)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option:hover:not(.kbq-disabled) .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-hover-tree-toggle-color)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-hover-action-button-color)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-option-caption{color:var(--kbq-tree-states-hover-caption-color)}.kbq-tree-option.kbq-selected{background:var(--kbq-tree-states-selected-container-background)}.kbq-tree-option.kbq-selected .kbq-option-text{color:var(--kbq-tree-states-selected-text-color)}.kbq-tree-option.kbq-selected .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option.kbq-selected .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-selected-tree-toggle-color)}.kbq-tree-option.kbq-selected .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-selected-action-button-color)}.kbq-tree-option.kbq-selected .kbq-option-caption{color:var(--kbq-tree-states-selected-caption-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled){background:var(--kbq-tree-states-selected-hover-container-background)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-option-text{color:var(--kbq-tree-states-selected-hover-text-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-selected-hover-tree-toggle-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-selected-hover-action-button-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-option-caption{color:var(--kbq-tree-states-selected-hover-caption-color)}.kbq-tree-option.kbq-disabled{background:var(--kbq-tree-states-disabled-container-background)}.kbq-tree-option.kbq-disabled .kbq-option-text{color:var(--kbq-tree-states-disabled-text-color)}.kbq-tree-option.kbq-disabled .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option.kbq-disabled .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-disabled-tree-toggle-color)}.kbq-tree-option.kbq-disabled .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-disabled-action-button-color)}.kbq-tree-option.kbq-disabled .kbq-option-caption{color:var(--kbq-tree-states-disabled-caption-color)}.kbq-tree-option.kbq-disabled .kbq-icon{color:var(--kbq-states-icon-disabled)}.cdk-keyboard-focused .kbq-tree-option.kbq-focused{border-color:var(--kbq-tree-states-focused-focus-outline-color)}.kbq-tree-option{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-tree-option-caption{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n", ".kbq-tree,.kbq-tree-selection{--kbq-tree-size-indent-level: var(--kbq-size-xxl);--kbq-tree-size-container-padding-right: var(--kbq-size-s);--kbq-tree-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-tree-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-tree-size-container-content-gap-vertical: 0px;--kbq-tree-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-tree-size-text-padding-vertical: var(--kbq-size-3xs);--kbq-tree-option-border-radius: var(--kbq-size-border-radius);--kbq-tree-default-container-background: transparent;--kbq-tree-default-text-color: var(--kbq-foreground-contrast);--kbq-tree-default-icon-color: var(--kbq-icon-contrast);--kbq-tree-default-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-tree-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tree-states-selected-container-background: var(--kbq-background-theme-less);--kbq-tree-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-tree-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-disabled-container-background: transparent;--kbq-tree-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tree-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-tree-toggle-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-action-button-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"], dependencies: [{ kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
802
+ `, isInline: true, styles: [".kbq-tree-node-toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:100%;padding-left:var(--kbq-tree-size-toggle-padding);padding-right:var(--kbq-tree-size-toggle-padding);cursor:pointer}.kbq-tree-node-toggle .kbq-icon{transform:rotate(-90deg)}.kbq-tree-node-toggle.kbq-expanded .kbq-icon{transform:rotate(0)}.kbq-tree-node-toggle[disabled]{cursor:default}.kbq-tree-selection:focus{outline:none}.kbq-tree-option{background:var(--kbq-tree-default-container-background)}.kbq-tree-option .kbq-option-text{color:var(--kbq-tree-default-text-color)}.kbq-tree-option .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-default-tree-toggle-color)}.kbq-tree-option .kbq-option-action .kbq-icon{color:var(--kbq-tree-default-action-button-color)}.kbq-tree-option .kbq-option-caption{color:var(--kbq-tree-default-caption-color)}.kbq-tree-option:hover:not(.kbq-disabled){background:var(--kbq-tree-states-hover-container-background)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-option-text{color:var(--kbq-tree-states-hover-text-color)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option:hover:not(.kbq-disabled) .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-hover-tree-toggle-color)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-hover-action-button-color)}.kbq-tree-option:hover:not(.kbq-disabled) .kbq-option-caption{color:var(--kbq-tree-states-hover-caption-color)}.kbq-tree-option.kbq-selected{background:var(--kbq-tree-states-selected-container-background)}.kbq-tree-option.kbq-selected .kbq-option-text{color:var(--kbq-tree-states-selected-text-color)}.kbq-tree-option.kbq-selected .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option.kbq-selected .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-selected-tree-toggle-color)}.kbq-tree-option.kbq-selected .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-selected-action-button-color)}.kbq-tree-option.kbq-selected .kbq-option-caption{color:var(--kbq-tree-states-selected-caption-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled){background:var(--kbq-tree-states-selected-hover-container-background)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-option-text{color:var(--kbq-tree-states-selected-hover-text-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-selected-hover-tree-toggle-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-selected-hover-action-button-color)}.kbq-tree-option.kbq-selected:hover:not(.kbq-disabled) .kbq-option-caption{color:var(--kbq-tree-states-selected-hover-caption-color)}.kbq-tree-option.kbq-disabled{background:var(--kbq-tree-states-disabled-container-background)}.kbq-tree-option.kbq-disabled .kbq-option-text{color:var(--kbq-tree-states-disabled-text-color)}.kbq-tree-option.kbq-disabled .kbq-tree-node-toggle .kbq-icon,.kbq-tree-option.kbq-disabled .kbq-icon.kbq-tree-node-toggle{color:var(--kbq-tree-states-disabled-tree-toggle-color)}.kbq-tree-option.kbq-disabled .kbq-option-action .kbq-icon{color:var(--kbq-tree-states-disabled-action-button-color)}.kbq-tree-option.kbq-disabled .kbq-option-caption{color:var(--kbq-tree-states-disabled-caption-color)}.kbq-tree-option.kbq-disabled .kbq-icon{color:var(--kbq-states-icon-disabled)}.cdk-keyboard-focused .kbq-tree-option.kbq-focused{border-color:var(--kbq-tree-states-focused-focus-outline-color)}.kbq-tree-option{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-tree-option-caption{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n", ".kbq-tree,.kbq-tree-selection{--kbq-tree-size-indent-level: var(--kbq-size-xxl);--kbq-tree-size-container-padding-right: var(--kbq-size-s);--kbq-tree-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-tree-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-tree-size-container-content-gap-vertical: 0px;--kbq-tree-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-tree-size-text-padding-vertical: var(--kbq-size-3xs);--kbq-tree-option-border-radius: var(--kbq-size-border-radius);--kbq-tree-default-container-background: transparent;--kbq-tree-default-text-color: var(--kbq-foreground-contrast);--kbq-tree-default-icon-color: var(--kbq-icon-contrast);--kbq-tree-default-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-tree-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tree-states-selected-container-background: var(--kbq-background-theme-less);--kbq-tree-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-tree-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-disabled-container-background: transparent;--kbq-tree-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tree-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-tree-toggle-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-action-button-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"], dependencies: [{ kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor", "kbq-icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
803
803
  }
804
804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTreeNodeToggleComponent, decorators: [{
805
805
  type: Component,
@@ -1041,7 +1041,8 @@ class KbqTreeOption extends KbqTreeNode {
1041
1041
  this.markForCheck();
1042
1042
  this.userInteraction.emit();
1043
1043
  const shiftKey = $event ? hasModifierKey($event, 'shiftKey') : false;
1044
- const ctrlKey = $event ? hasModifierKey($event, 'ctrlKey') : false;
1044
+ // ctrlKey is for Windows, metaKey is for MacOS
1045
+ const ctrlKey = $event ? hasModifierKey($event, 'ctrlKey', 'metaKey') : false;
1045
1046
  this.tree.setSelectedOptionsByClick(this, shiftKey, ctrlKey);
1046
1047
  }
1047
1048
  emitSelectionChangeEvent(isUserInput = false) {
@@ -1061,7 +1062,7 @@ class KbqTreeOption extends KbqTreeNode {
1061
1062
  { provide: KbqTreeNode, useExisting: KbqTreeOption },
1062
1063
  { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqTreeOption },
1063
1064
  { provide: KBQ_OPTION_ACTION_PARENT, useExisting: KbqTreeOption }
1064
- ], queries: [{ propertyName: "toggleElementDirective", first: true, predicate: KbqTreeNodeToggleDirective, descendants: true }, { propertyName: "toggleElementComponent", first: true, predicate: KbqTreeNodeToggleComponent, descendants: true }, { propertyName: "pseudoCheckbox", first: true, predicate: KbqPseudoCheckbox, descendants: true }, { propertyName: "actionButton", first: true, predicate: KbqOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: KbqTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: KbqDropdownTrigger, descendants: true }], viewQueries: [{ propertyName: "parentTextElement", first: true, predicate: ["kbqTitleContainer"], descendants: true }], exportAs: ["kbqTreeOption"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"kbq-tree-node-toggle, [kbq-tree-node-toggle], [kbqTreeNodeToggle]\" />\n\n@if (externalPseudoCheckbox) {\n <ng-content select=\"kbq-pseudo-checkbox\" />\n} @else {\n @if (showCheckbox) {\n <kbq-pseudo-checkbox [disabled]=\"disabled\" [state]=\"checkboxState\" />\n }\n}\n\n<ng-content select=\"kbq-checkbox\" />\n\n<ng-content select=\"[kbq-icon]\" />\n\n<ng-content select=\"kbq-progress-spinner\" />\n\n<span #kbqTitleContainer class=\"kbq-option-text\">\n <ng-content />\n</span>\n\n<ng-content select=\"kbq-option-action\" />\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-tree-option{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;display:flex;align-items:center;min-height:32px;word-wrap:break-word;border-width:var(--kbq-tree-size-container-focus-outline-width);border-style:solid;border-color:transparent;border-radius:var(--kbq-tree-option-border-radius);padding-top:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));padding-right:calc(var(--kbq-tree-size-container-padding-right) - var(--kbq-tree-size-container-focus-outline-width));padding-bottom:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));gap:var(--kbq-tree-size-container-content-gap-horizontal)}.kbq-tree-option .kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 0);padding-bottom:var(--kbq-list-size-text-padding-vertical, 0)}.kbq-tree-option .kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-tree-option .kbq-option-text:empty{display:none}.kbq-tree-option:focus{outline:none}.kbq-tree-option.kbq-disabled .kbq-icon{cursor:default}.kbq-tree-option:not(.kbq-disabled){cursor:pointer}.kbq-tree-option .kbq-option-action{display:none}.kbq-tree-option:not(.kbq-disabled):hover .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-focused .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-action-button-focused .kbq-option-action{display:flex}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active):has(+:is(.kbq-selected,.kbq-focused,.kbq-active)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active)+:is(.kbq-selected,.kbq-focused,.kbq-active){border-top-left-radius:0;border-top-right-radius:0}\n", ".kbq-tree,.kbq-tree-selection{--kbq-tree-size-indent-level: var(--kbq-size-xxl);--kbq-tree-size-container-padding-right: var(--kbq-size-s);--kbq-tree-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-tree-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-tree-size-container-content-gap-vertical: 0px;--kbq-tree-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-tree-size-text-padding-vertical: var(--kbq-size-3xs);--kbq-tree-option-border-radius: var(--kbq-size-border-radius);--kbq-tree-default-container-background: transparent;--kbq-tree-default-text-color: var(--kbq-foreground-contrast);--kbq-tree-default-icon-color: var(--kbq-icon-contrast);--kbq-tree-default-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-tree-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tree-states-selected-container-background: var(--kbq-background-theme-less);--kbq-tree-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-tree-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-disabled-container-background: transparent;--kbq-tree-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tree-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-tree-toggle-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-action-button-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"], dependencies: [{ kind: "component", type: i1.KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: ["color", "big", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1065
+ ], queries: [{ propertyName: "toggleElementDirective", first: true, predicate: KbqTreeNodeToggleDirective, descendants: true }, { propertyName: "toggleElementComponent", first: true, predicate: KbqTreeNodeToggleComponent, descendants: true }, { propertyName: "pseudoCheckbox", first: true, predicate: KbqPseudoCheckbox, descendants: true }, { propertyName: "actionButton", first: true, predicate: KbqOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: KbqTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: KbqDropdownTrigger, descendants: true }], viewQueries: [{ propertyName: "parentTextElement", first: true, predicate: ["kbqTitleContainer"], descendants: true }], exportAs: ["kbqTreeOption"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"kbq-tree-node-toggle, [kbq-tree-node-toggle], [kbqTreeNodeToggle]\" />\n\n@if (externalPseudoCheckbox) {\n <ng-content select=\"kbq-pseudo-checkbox\" />\n} @else {\n @if (showCheckbox) {\n <kbq-pseudo-checkbox [disabled]=\"disabled\" [state]=\"checkboxState\" />\n }\n}\n\n<ng-content select=\"kbq-checkbox\" />\n\n<ng-content select=\"[kbq-icon]\" />\n\n<ng-content select=\"kbq-progress-spinner\" />\n\n<span #kbqTitleContainer class=\"kbq-option-text\">\n <ng-content />\n</span>\n\n<ng-content select=\"kbq-option-action\" />\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-tree-option{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;display:flex;align-items:center;min-height:32px;word-wrap:break-word;border-width:var(--kbq-tree-size-container-focus-outline-width);border-style:solid;border-color:transparent;border-radius:var(--kbq-tree-option-border-radius);padding-top:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));padding-right:calc(var(--kbq-tree-size-container-padding-right) - var(--kbq-tree-size-container-focus-outline-width));padding-bottom:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));gap:var(--kbq-tree-size-container-content-gap-horizontal)}.kbq-tree-option .kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 0);padding-bottom:var(--kbq-list-size-text-padding-vertical, 0)}.kbq-tree-option .kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-tree-option .kbq-option-text:empty{display:none}.kbq-tree-option:focus{outline:none}.kbq-tree-option.kbq-disabled .kbq-icon{cursor:default}.kbq-tree-option:not(.kbq-disabled){cursor:pointer}.kbq-tree-option .kbq-option-action{display:none}.kbq-tree-option:not(.kbq-disabled):hover .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-focused .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-action-button-focused .kbq-option-action{display:flex}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active):has(+:is(.kbq-selected,.kbq-focused,.kbq-active)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active)+:is(.kbq-selected,.kbq-focused,.kbq-active){border-top-left-radius:0;border-top-right-radius:0}\n", ".kbq-tree,.kbq-tree-selection{--kbq-tree-size-indent-level: var(--kbq-size-xxl);--kbq-tree-size-container-padding-right: var(--kbq-size-s);--kbq-tree-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-tree-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-tree-size-container-content-gap-vertical: 0px;--kbq-tree-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-tree-size-text-padding-vertical: var(--kbq-size-3xs);--kbq-tree-option-border-radius: var(--kbq-size-border-radius);--kbq-tree-default-container-background: transparent;--kbq-tree-default-text-color: var(--kbq-foreground-contrast);--kbq-tree-default-icon-color: var(--kbq-icon-contrast);--kbq-tree-default-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-tree-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tree-states-selected-container-background: var(--kbq-background-theme-less);--kbq-tree-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-tree-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-disabled-container-background: transparent;--kbq-tree-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tree-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-tree-toggle-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-action-button-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"], dependencies: [{ kind: "component", type: i1.KbqPseudoCheckbox, selector: "kbq-pseudo-checkbox", inputs: ["color", "big", "state", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1065
1066
  }
1066
1067
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTreeOption, decorators: [{
1067
1068
  type: Component,
@@ -1082,7 +1083,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
1082
1083
  { provide: KbqTreeNode, useExisting: KbqTreeOption },
1083
1084
  { provide: KBQ_TITLE_TEXT_REF, useExisting: KbqTreeOption },
1084
1085
  { provide: KBQ_OPTION_ACTION_PARENT, useExisting: KbqTreeOption }
1085
- ], template: "<ng-content select=\"kbq-tree-node-toggle, [kbq-tree-node-toggle], [kbqTreeNodeToggle]\" />\n\n@if (externalPseudoCheckbox) {\n <ng-content select=\"kbq-pseudo-checkbox\" />\n} @else {\n @if (showCheckbox) {\n <kbq-pseudo-checkbox [disabled]=\"disabled\" [state]=\"checkboxState\" />\n }\n}\n\n<ng-content select=\"kbq-checkbox\" />\n\n<ng-content select=\"[kbq-icon]\" />\n\n<ng-content select=\"kbq-progress-spinner\" />\n\n<span #kbqTitleContainer class=\"kbq-option-text\">\n <ng-content />\n</span>\n\n<ng-content select=\"kbq-option-action\" />\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-tree-option{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;display:flex;align-items:center;min-height:32px;word-wrap:break-word;border-width:var(--kbq-tree-size-container-focus-outline-width);border-style:solid;border-color:transparent;border-radius:var(--kbq-tree-option-border-radius);padding-top:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));padding-right:calc(var(--kbq-tree-size-container-padding-right) - var(--kbq-tree-size-container-focus-outline-width));padding-bottom:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));gap:var(--kbq-tree-size-container-content-gap-horizontal)}.kbq-tree-option .kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 0);padding-bottom:var(--kbq-list-size-text-padding-vertical, 0)}.kbq-tree-option .kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-tree-option .kbq-option-text:empty{display:none}.kbq-tree-option:focus{outline:none}.kbq-tree-option.kbq-disabled .kbq-icon{cursor:default}.kbq-tree-option:not(.kbq-disabled){cursor:pointer}.kbq-tree-option .kbq-option-action{display:none}.kbq-tree-option:not(.kbq-disabled):hover .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-focused .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-action-button-focused .kbq-option-action{display:flex}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active):has(+:is(.kbq-selected,.kbq-focused,.kbq-active)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active)+:is(.kbq-selected,.kbq-focused,.kbq-active){border-top-left-radius:0;border-top-right-radius:0}\n", ".kbq-tree,.kbq-tree-selection{--kbq-tree-size-indent-level: var(--kbq-size-xxl);--kbq-tree-size-container-padding-right: var(--kbq-size-s);--kbq-tree-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-tree-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-tree-size-container-content-gap-vertical: 0px;--kbq-tree-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-tree-size-text-padding-vertical: var(--kbq-size-3xs);--kbq-tree-option-border-radius: var(--kbq-size-border-radius);--kbq-tree-default-container-background: transparent;--kbq-tree-default-text-color: var(--kbq-foreground-contrast);--kbq-tree-default-icon-color: var(--kbq-icon-contrast);--kbq-tree-default-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-tree-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tree-states-selected-container-background: var(--kbq-background-theme-less);--kbq-tree-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-tree-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-disabled-container-background: transparent;--kbq-tree-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tree-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-tree-toggle-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-action-button-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"] }]
1086
+ ], template: "<ng-content select=\"kbq-tree-node-toggle, [kbq-tree-node-toggle], [kbqTreeNodeToggle]\" />\n\n@if (externalPseudoCheckbox) {\n <ng-content select=\"kbq-pseudo-checkbox\" />\n} @else {\n @if (showCheckbox) {\n <kbq-pseudo-checkbox [disabled]=\"disabled\" [state]=\"checkboxState\" />\n }\n}\n\n<ng-content select=\"kbq-checkbox\" />\n\n<ng-content select=\"[kbq-icon]\" />\n\n<ng-content select=\"kbq-progress-spinner\" />\n\n<span #kbqTitleContainer class=\"kbq-option-text\">\n <ng-content />\n</span>\n\n<ng-content select=\"kbq-option-action\" />\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-tree-option{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;display:flex;align-items:center;min-height:32px;word-wrap:break-word;border-width:var(--kbq-tree-size-container-focus-outline-width);border-style:solid;border-color:transparent;border-radius:var(--kbq-tree-option-border-radius);padding-top:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));padding-right:calc(var(--kbq-tree-size-container-padding-right) - var(--kbq-tree-size-container-focus-outline-width));padding-bottom:calc(var(--kbq-tree-size-container-padding-vertical) - var(--kbq-tree-size-container-focus-outline-width));gap:var(--kbq-tree-size-container-content-gap-horizontal)}.kbq-tree-option .kbq-option-text{display:flex;flex-direction:column;width:100%;box-sizing:content-box;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:var(--kbq-list-size-text-padding-vertical, 0);padding-bottom:var(--kbq-list-size-text-padding-vertical, 0)}.kbq-tree-option .kbq-option-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.kbq-tree-option .kbq-option-text:empty{display:none}.kbq-tree-option:focus{outline:none}.kbq-tree-option.kbq-disabled .kbq-icon{cursor:default}.kbq-tree-option:not(.kbq-disabled){cursor:pointer}.kbq-tree-option .kbq-option-action{display:none}.kbq-tree-option:not(.kbq-disabled):hover .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-focused .kbq-option-action,.kbq-tree-option:not(.kbq-disabled).kbq-action-button-focused .kbq-option-action{display:flex}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active):has(+:is(.kbq-selected,.kbq-focused,.kbq-active)){border-bottom-left-radius:0;border-bottom-right-radius:0}.kbq-tree-option:is(.kbq-selected,.kbq-focused,.kbq-active)+:is(.kbq-selected,.kbq-focused,.kbq-active){border-top-left-radius:0;border-top-right-radius:0}\n", ".kbq-tree,.kbq-tree-selection{--kbq-tree-size-indent-level: var(--kbq-size-xxl);--kbq-tree-size-container-padding-right: var(--kbq-size-s);--kbq-tree-size-container-padding-vertical: var(--kbq-size-xxs);--kbq-tree-size-container-content-gap-horizontal: var(--kbq-size-s);--kbq-tree-size-container-content-gap-vertical: 0px;--kbq-tree-size-container-focus-outline-width: var(--kbq-size-3xs);--kbq-tree-size-text-padding-vertical: var(--kbq-size-3xs);--kbq-tree-option-border-radius: var(--kbq-size-border-radius);--kbq-tree-default-container-background: transparent;--kbq-tree-default-text-color: var(--kbq-foreground-contrast);--kbq-tree-default-icon-color: var(--kbq-icon-contrast);--kbq-tree-default-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-default-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-hover-container-background: var(--kbq-states-background-transparent-hover);--kbq-tree-states-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tree-states-selected-container-background: var(--kbq-background-theme-less);--kbq-tree-states-selected-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-selected-hover-container-background: var(--kbq-states-background-theme-less-hover);--kbq-tree-states-selected-hover-text-color: var(--kbq-foreground-contrast);--kbq-tree-states-selected-hover-icon-color: var(--kbq-icon-contrast);--kbq-tree-states-selected-hover-tree-toggle-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-action-button-color: var(--kbq-icon-contrast-fade);--kbq-tree-states-selected-hover-caption-color: var(--kbq-foreground-contrast-secondary);--kbq-tree-states-disabled-container-background: transparent;--kbq-tree-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tree-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-tree-toggle-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-action-button-color: var(--kbq-states-icon-disabled);--kbq-tree-states-disabled-caption-color: var(--kbq-states-foreground-disabled)}\n"] }]
1086
1087
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
1087
1088
  type: Inject,
1088
1089
  args: [KBQ_TREE_OPTION_PARENT_COMPONENT]
@@ -1398,7 +1399,12 @@ class KbqTreeSelection extends KbqTreeBase {
1398
1399
  return;
1399
1400
  }
1400
1401
  this.keyManager.setFocusOrigin('keyboard');
1401
- this.keyManager.setFirstItemActive();
1402
+ if (this.selectionModel.selected.length) {
1403
+ this.highlightSelectedOption();
1404
+ }
1405
+ else {
1406
+ this.keyManager.setFirstItemActive();
1407
+ }
1402
1408
  this.keyManager.setFocusOrigin('program');
1403
1409
  }
1404
1410
  highlightSelectedOption() {
@@ -1461,7 +1467,9 @@ class KbqTreeSelection extends KbqTreeBase {
1461
1467
  this.keyManager.setNextPageItemActive();
1462
1468
  }
1463
1469
  if (this.keyManager.activeItem && isVerticalMovement(event)) {
1464
- this.setSelectedOptionsByKey(this.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey'));
1470
+ this.setSelectedOptionsByKey(this.keyManager.activeItem, hasModifierKey(event, 'shiftKey'),
1471
+ // ctrlKey is for Windows, metaKey is for MacOS
1472
+ hasModifierKey(event, 'ctrlKey', 'metaKey'));
1465
1473
  }
1466
1474
  }
1467
1475
  updateScrollSize() {