igniteui-angular 22.1.0-beta.6 → 22.1.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/fesm2022/igniteui-angular-accordion.mjs +4 -4
  2. package/fesm2022/igniteui-angular-accordion.mjs.map +1 -1
  3. package/fesm2022/igniteui-angular-action-strip.mjs +0 -1
  4. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  5. package/fesm2022/igniteui-angular-avatar.mjs.map +1 -1
  6. package/fesm2022/igniteui-angular-badge.mjs +0 -1
  7. package/fesm2022/igniteui-angular-badge.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-banner.mjs +2 -2
  9. package/fesm2022/igniteui-angular-banner.mjs.map +1 -1
  10. package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
  11. package/fesm2022/igniteui-angular-calendar.mjs +4 -5
  12. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  13. package/fesm2022/igniteui-angular-card.mjs.map +1 -1
  14. package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
  15. package/fesm2022/igniteui-angular-chips.mjs.map +1 -1
  16. package/fesm2022/igniteui-angular-combo.mjs +17 -6
  17. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  18. package/fesm2022/igniteui-angular-core.mjs +16 -337
  19. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  20. package/fesm2022/igniteui-angular-date-picker.mjs +12 -14
  21. package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
  22. package/fesm2022/igniteui-angular-dialog.mjs +1 -1
  23. package/fesm2022/igniteui-angular-dialog.mjs.map +1 -1
  24. package/fesm2022/igniteui-angular-directives.mjs +45 -47
  25. package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
  26. package/fesm2022/igniteui-angular-drop-down.mjs +3 -2
  27. package/fesm2022/igniteui-angular-drop-down.mjs.map +1 -1
  28. package/fesm2022/igniteui-angular-expansion-panel.mjs +23 -12
  29. package/fesm2022/igniteui-angular-expansion-panel.mjs.map +1 -1
  30. package/fesm2022/igniteui-angular-grids-core.mjs +484 -202
  31. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  32. package/fesm2022/igniteui-angular-grids-grid.mjs +115 -94
  33. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  34. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +15 -19
  35. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  36. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  37. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +75 -153
  38. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  39. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +28 -35
  40. package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
  41. package/fesm2022/igniteui-angular-icon.mjs.map +1 -1
  42. package/fesm2022/igniteui-angular-input-group.mjs +1 -1
  43. package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
  44. package/fesm2022/igniteui-angular-list.mjs.map +1 -1
  45. package/fesm2022/igniteui-angular-navbar.mjs.map +1 -1
  46. package/fesm2022/igniteui-angular-navigation-drawer.mjs +2 -3
  47. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  48. package/fesm2022/igniteui-angular-paginator.mjs.map +1 -1
  49. package/fesm2022/igniteui-angular-progressbar.mjs +5 -2
  50. package/fesm2022/igniteui-angular-progressbar.mjs.map +1 -1
  51. package/fesm2022/igniteui-angular-query-builder.mjs +18 -19
  52. package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
  53. package/fesm2022/igniteui-angular-radio.mjs +1 -1
  54. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  55. package/fesm2022/igniteui-angular-select.mjs.map +1 -1
  56. package/fesm2022/igniteui-angular-simple-combo.mjs +10 -7
  57. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  58. package/fesm2022/igniteui-angular-slider.mjs +3 -3
  59. package/fesm2022/igniteui-angular-slider.mjs.map +1 -1
  60. package/fesm2022/igniteui-angular-splitter.mjs +1 -1
  61. package/fesm2022/igniteui-angular-splitter.mjs.map +1 -1
  62. package/fesm2022/igniteui-angular-stepper.mjs +1 -1
  63. package/fesm2022/igniteui-angular-stepper.mjs.map +1 -1
  64. package/fesm2022/igniteui-angular-tabs.mjs.map +1 -1
  65. package/fesm2022/igniteui-angular-time-picker.mjs +3 -6
  66. package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
  67. package/fesm2022/igniteui-angular-tree.mjs +8 -10
  68. package/fesm2022/igniteui-angular-tree.mjs.map +1 -1
  69. package/migrations/migration-collection.json +0 -7
  70. package/package.json +1 -1
  71. package/types/igniteui-angular-avatar.d.ts +1 -1
  72. package/types/igniteui-angular-banner.d.ts +3 -3
  73. package/types/igniteui-angular-calendar.d.ts +9 -9
  74. package/types/igniteui-angular-card.d.ts +1 -1
  75. package/types/igniteui-angular-carousel.d.ts +9 -9
  76. package/types/igniteui-angular-chat.d.ts +1 -1
  77. package/types/igniteui-angular-chips.d.ts +5 -5
  78. package/types/igniteui-angular-combo.d.ts +17 -13
  79. package/types/igniteui-angular-core.d.ts +200 -495
  80. package/types/igniteui-angular-date-picker.d.ts +3 -3
  81. package/types/igniteui-angular-dialog.d.ts +4 -4
  82. package/types/igniteui-angular-directives.d.ts +60 -59
  83. package/types/igniteui-angular-drop-down.d.ts +16 -16
  84. package/types/igniteui-angular-expansion-panel.d.ts +6 -6
  85. package/types/igniteui-angular-grids-core.d.ts +1053 -791
  86. package/types/igniteui-angular-grids-grid.d.ts +104 -267
  87. package/types/igniteui-angular-grids-hierarchical-grid.d.ts +68 -547
  88. package/types/igniteui-angular-grids-lite.d.ts +7 -7
  89. package/types/igniteui-angular-grids-pivot-grid.d.ts +94 -129
  90. package/types/igniteui-angular-grids-tree-grid.d.ts +5 -51
  91. package/types/igniteui-angular-icon.d.ts +2 -2
  92. package/types/igniteui-angular-input-group.d.ts +4 -4
  93. package/types/igniteui-angular-list.d.ts +4 -4
  94. package/types/igniteui-angular-navigation-drawer.d.ts +3 -3
  95. package/types/igniteui-angular-progressbar.d.ts +1 -0
  96. package/types/igniteui-angular-query-builder.d.ts +9 -9
  97. package/types/igniteui-angular-radio.d.ts +1 -1
  98. package/types/igniteui-angular-select.d.ts +5 -5
  99. package/types/igniteui-angular-simple-combo.d.ts +2 -2
  100. package/types/igniteui-angular-slider.d.ts +4 -4
  101. package/types/igniteui-angular-splitter.d.ts +3 -3
  102. package/types/igniteui-angular-time-picker.d.ts +8 -8
  103. package/types/igniteui-angular-tree.d.ts +8 -8
  104. package/migrations/update-22_1_0_import-migration/index.d.ts +0 -2
  105. package/migrations/update-22_1_0_import-migration/index.js +0 -228
  106. package/migrations/update-22_1_0_import-migration/index.spec.d.ts +0 -1
  107. package/migrations/update-22_1_0_import-migration/index.spec.js +0 -188
@@ -2,7 +2,7 @@ import * as i3 from 'igniteui-angular/input-group';
2
2
  import { IgxInputGroupComponent, IgxInputDirective, IgxSuffixDirective, IgxLabelDirective, IgxPrefixDirective, IgxHintDirective } from 'igniteui-angular/input-group';
3
3
  import { NgTemplateOutlet } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { inject, EventEmitter, ViewChild, Output, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
5
+ import { inject, EventEmitter, HostListener, ViewChild, Output, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
6
6
  import { FormGroupDirective, NG_VALUE_ACCESSOR } from '@angular/forms';
7
7
  import { takeUntil } from 'rxjs/operators';
8
8
  import { PlatformUtil } from 'igniteui-angular/core';
@@ -564,11 +564,11 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
564
564
  return value !== undefined;
565
565
  }
566
566
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxSimpleComboComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
567
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxSimpleComboComponent, isStandalone: true, selector: "igx-simple-combo", outputs: { selectionChanging: "selectionChanging", selectionChanged: "selectionChanged" }, host: { listeners: { "keydown.ArrowDown": "onArrowDown($any($event))", "keydown.Alt.ArrowDown": "onArrowDown($any($event))" } }, providers: [
567
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxSimpleComboComponent, isStandalone: true, selector: "igx-simple-combo", outputs: { selectionChanging: "selectionChanging", selectionChanged: "selectionChanged" }, host: { listeners: { "keydown.ArrowDown": "onArrowDown($event)", "keydown.Alt.ArrowDown": "onArrowDown($event)" } }, providers: [
568
568
  IgxComboAPIService,
569
569
  { provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },
570
570
  { provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }
571
- ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }, { propertyName: "addItem", first: true, predicate: IgxComboAddItemComponent, descendants: true }, { propertyName: "textSelection", first: true, predicate: IgxTextSelectionDirective, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\">\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"displayValue\" role=\"combobox\"\n aria-haspopup=\"listbox\" aria-autocomplete=\"list\" aria-readonly=\"false\"\n [attr.aria-expanded]=\"!this.dropdown.collapsed\" [attr.aria-controls]=\"this.dropdown.listId\"\n [attr.aria-labelledby]=\"this.ariaLabelledBy || this.label?.id || this.placeholder\"\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxTextSelection]=\"!composing\"\n [attr.aria-label]=\"getAriaLabel()\"\n (input)=\"handleInputChange($event)\" (click)=\"handleInputClick()\"\n (keyup)=\"handleKeyUp($event)\" (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" (paste)=\"handleInputChange($event)\"/>\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n\n @if (hasSelectedItem && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClear($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n\n @if (showSearchCaseIcon) {\n <igx-suffix>\n <igx-icon family=\"default\" name=\"case_sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n }\n\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\" (click)=\"onClick($event)\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"this.ariaLabelledBy || this.label?.id || this.placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"dropdown.onFocus()\" (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item [role]=\"item?.isHeader? 'group' : 'option'\" [singleMode]=\"true\"\n [itemHeight]=\"itemHeight\" (click)=\"handleItemClick()\" *igxFor=\"let item of data!\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize; scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData?.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData?.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf?.length!\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: max(var(--is-large, 1) * max(1rem, -1 * 1rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content .igx-vhelper--vertical{position:relative}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"], dependencies: [{ kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxTextSelectionDirective, selector: "[igxTextSelection]", inputs: ["igxTextSelection"], exportAs: ["igxTextSelection"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForInitialChunkSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "chunkSizeChange", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
571
+ ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }, { propertyName: "addItem", first: true, predicate: IgxComboAddItemComponent, descendants: true }, { propertyName: "textSelection", first: true, predicate: IgxTextSelectionDirective, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\">\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"displayValue\" role=\"combobox\"\n aria-haspopup=\"listbox\" aria-autocomplete=\"list\" aria-readonly=\"false\"\n [attr.aria-expanded]=\"!this.dropdown.collapsed\" [attr.aria-controls]=\"this.dropdown.listId\"\n [attr.aria-labelledby]=\"this.ariaLabelledBy || this.label?.id || this.placeholder\"\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxTextSelection]=\"!composing\"\n [attr.aria-label]=\"getAriaLabel()\"\n (input)=\"handleInputChange($event)\" (click)=\"handleInputClick()\"\n (keyup)=\"handleKeyUp($event)\" (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" (paste)=\"handleInputChange($event)\"/>\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n\n @if (hasSelectedItem && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClear($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n\n @if (showSearchCaseIcon) {\n <igx-suffix>\n <igx-icon family=\"default\" name=\"case_sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n }\n\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\" (click)=\"onClick($event)\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"this.ariaLabelledBy || this.label?.id || this.placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"dropdown.onFocus()\" (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item [role]=\"item?.isHeader? 'group' : 'option'\" [singleMode]=\"true\"\n [itemHeight]=\"itemHeight\" (click)=\"handleItemClick()\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize; scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: max(var(--is-large, 1) * max(1rem, -1 * 1rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content .igx-vhelper--vertical{position:relative}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"], dependencies: [{ kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxTextSelectionDirective, selector: "[igxTextSelection]", inputs: ["igxTextSelection"], exportAs: ["igxTextSelection"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForInitialChunkSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "chunkSizeChange", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
572
572
  }
573
573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxSimpleComboComponent, decorators: [{
574
574
  type: Component,
@@ -576,10 +576,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
576
576
  IgxComboAPIService,
577
577
  { provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },
578
578
  { provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }
579
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Eager, host: {
580
- '(keydown.ArrowDown)': 'onArrowDown($any($event))',
581
- '(keydown.Alt.ArrowDown)': 'onArrowDown($any($event))'
582
- }, imports: [IgxInputGroupComponent, IgxInputDirective, IgxTextSelectionDirective, IgxSuffixDirective, NgTemplateOutlet, IgxIconComponent, IgxComboDropDownComponent, IgxDropDownItemNavigationDirective, IgxForOfDirective, IgxComboItemComponent, IgxComboAddItemComponent, IgxButtonDirective, IgxRippleDirective, IgxComboFilteringPipe, IgxComboGroupingPipe], template: "<igx-input-group #inputGroup [type]=\"type\">\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"displayValue\" role=\"combobox\"\n aria-haspopup=\"listbox\" aria-autocomplete=\"list\" aria-readonly=\"false\"\n [attr.aria-expanded]=\"!this.dropdown.collapsed\" [attr.aria-controls]=\"this.dropdown.listId\"\n [attr.aria-labelledby]=\"this.ariaLabelledBy || this.label?.id || this.placeholder\"\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxTextSelection]=\"!composing\"\n [attr.aria-label]=\"getAriaLabel()\"\n (input)=\"handleInputChange($event)\" (click)=\"handleInputClick()\"\n (keyup)=\"handleKeyUp($event)\" (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" (paste)=\"handleInputChange($event)\"/>\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n\n @if (hasSelectedItem && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClear($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n\n @if (showSearchCaseIcon) {\n <igx-suffix>\n <igx-icon family=\"default\" name=\"case_sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n }\n\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\" (click)=\"onClick($event)\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"this.ariaLabelledBy || this.label?.id || this.placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"dropdown.onFocus()\" (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item [role]=\"item?.isHeader? 'group' : 'option'\" [singleMode]=\"true\"\n [itemHeight]=\"itemHeight\" (click)=\"handleItemClick()\" *igxFor=\"let item of data!\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize; scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData?.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData?.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf?.length!\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: max(var(--is-large, 1) * max(1rem, -1 * 1rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content .igx-vhelper--vertical{position:relative}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"] }]
579
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxInputGroupComponent, IgxInputDirective, IgxTextSelectionDirective, IgxSuffixDirective, NgTemplateOutlet, IgxIconComponent, IgxComboDropDownComponent, IgxDropDownItemNavigationDirective, IgxForOfDirective, IgxComboItemComponent, IgxComboAddItemComponent, IgxButtonDirective, IgxRippleDirective, IgxComboFilteringPipe, IgxComboGroupingPipe], template: "<igx-input-group #inputGroup [type]=\"type\">\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"displayValue\" role=\"combobox\"\n aria-haspopup=\"listbox\" aria-autocomplete=\"list\" aria-readonly=\"false\"\n [attr.aria-expanded]=\"!this.dropdown.collapsed\" [attr.aria-controls]=\"this.dropdown.listId\"\n [attr.aria-labelledby]=\"this.ariaLabelledBy || this.label?.id || this.placeholder\"\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxTextSelection]=\"!composing\"\n [attr.aria-label]=\"getAriaLabel()\"\n (input)=\"handleInputChange($event)\" (click)=\"handleInputClick()\"\n (keyup)=\"handleKeyUp($event)\" (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" (paste)=\"handleInputChange($event)\"/>\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n\n @if (hasSelectedItem && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClear($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n\n @if (showSearchCaseIcon) {\n <igx-suffix>\n <igx-icon family=\"default\" name=\"case_sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n }\n\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\" (click)=\"onClick($event)\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"this.ariaLabelledBy || this.label?.id || this.placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"dropdown.onFocus()\" (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item [role]=\"item?.isHeader? 'group' : 'option'\" [singleMode]=\"true\"\n [itemHeight]=\"itemHeight\" (click)=\"handleItemClick()\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize; scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", styles: ["@layer ig.base{.igx-drop-down{--item-count: 6;--_search-input-inline-padding: max(var(--is-large, 1) * max(1rem, -1 * 1rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-drop-down .igx-combo{display:contents}.igx-combo{position:relative;display:block}.igx-combo__checkbox{margin-inline-end:.5rem}.igx-combo__search{--ig-input-group-border-border-radius: 0;padding-inline:var(--_search-input-inline-padding);padding-block:var(--_search-input-block-padding);z-index:26;border-bottom:.0625rem dashed var(--search-separator-border-color)}.igx-combo__search igx-input-group{--ig-size: 1}.igx-combo__case-icon{cursor:pointer;color:var(--ig-gray-600);background:#0000}.igx-combo__case-icon .igx-icon--inactive{--ig-icon-disabled-color: var(--ig-gray-600);opacity:1}.igx-combo__case-icon--active{color:var(--ig-primary-500)}.igx-combo__content .igx-vhelper--vertical{position:relative}.igx-combo__content{position:relative;overflow:hidden;max-height:calc(var(--size)*var(--item-count))}.igx-combo__content:focus{outline:rgba(0,0,0,0)}.igx-combo__add{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem 1.5rem;gap:1rem;background:var(--empty-list-background)}.igx-combo__add-item{height:auto;background:var(--empty-list-background);justify-content:center;outline:none}.igx-combo__empty{display:flex;justify-content:center;align-items:center;width:100%;color:var(--empty-list-placeholder-color);padding:0 1.5rem;font-size:.8125rem}}@layer ig.material{@container style(--ig-theme: material){.igx-combo__checkbox{margin-inline-end:1rem}.igx-combo__checkbox div{padding:0}.igx-combo__search igx-input-group{--size: 2.375rem}.igx-combo__search .igx-input-group__bundle{padding-block-start:0;height:auto}.igx-combo__search .igx-input-group__bundle-main{padding-inline-start:0!important}.igx-combo__search .igx-input-group__bundle-start,.igx-combo__search .igx-input-group__bundle-end{min-width:0}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-combo__search{--ig-input-group-border-border-radius: 0}.igx-combo__search igx-input-group{--size: 1.75rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-start,.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-end{border-block-end-color:var(--focused-border-color);border-block-end-width:.125rem}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle-main{border-block-end-width:.125rem}.igx-combo__search igx-input-group:not(.igx-input-group--prefixed) .igx-input-group__bundle-main,.igx-combo__search igx-input-group:not(.igx-input-group--suffixed) .igx-input-group__bundle-main{border-inline-width:0;border-block-start-width:0}.igx-combo__search igx-input-group.igx-input-group--suffixed .igx-input-group__bundle-end{border-inline-end-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline:0}.igx-combo__search .igx-input-group--focused:not(.igx-input-group--file) .igx-input-group__bundle-main{box-shadow:none}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.25rem, -1 * .25rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.125rem, -1 * .125rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search .igx-input-group__bundle{border-inline-width:0;border-block-start-width:0}.igx-combo__search .igx-input-group__input{padding-inline-start:0}.igx-combo__search .igx-input-group--focused .igx-input-group__bundle:after{border-inline-width:0;border-block-start-width:0}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-combo{--_search-input-inline-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))), var(--is-small, 1) * max(.5rem, -1 * .5rem) * var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));--_search-input-block-padding: max(var(--is-large, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))), var(--is-medium, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))), var(--is-small, 1) * max(.75rem, -1 * .75rem) * var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing))))}.igx-combo__search igx-input-group{--ig-size: 2}.igx-combo__content{max-height:calc(var(--size)*var(--item-count) + 1rem)}}}\n"] }]
583
580
  }], ctorParameters: () => [], propDecorators: { dropdown: [{
584
581
  type: ViewChild,
585
582
  args: [IgxComboDropDownComponent, { static: true }]
@@ -593,6 +590,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
593
590
  }], textSelection: [{
594
591
  type: ViewChild,
595
592
  args: [IgxTextSelectionDirective, { static: true }]
593
+ }], onArrowDown: [{
594
+ type: HostListener,
595
+ args: ['keydown.ArrowDown', ['$event']]
596
+ }, {
597
+ type: HostListener,
598
+ args: ['keydown.Alt.ArrowDown', ['$event']]
596
599
  }] } });
597
600
 
598
601
  /* NOTE: Simple combo directives collection for ease-of-use import in standalone components scenario */
@@ -1 +1 @@
1
- {"version":3,"file":"igniteui-angular-simple-combo.mjs","sources":["../../../projects/igniteui-angular/simple-combo/src/simple-combo/simple-combo.component.ts","../../../projects/igniteui-angular/simple-combo/src/simple-combo/simple-combo.component.html","../../../projects/igniteui-angular/simple-combo/src/simple-combo/public_api.ts","../../../projects/igniteui-angular/simple-combo/src/simple-combo/simple-combo.module.ts","../../../projects/igniteui-angular/simple-combo/src/igniteui-angular-simple-combo.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, Component, DoCheck, EventEmitter, Output, ViewChild, ViewEncapsulation, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { CancelableEventArgs, IBaseCancelableBrowserEventArgs, IBaseEventArgs, PlatformUtil } from 'igniteui-angular/core';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { IgxForOfDirective } from 'igniteui-angular/directives';\nimport { IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxTextSelectionDirective } from 'igniteui-angular/directives';\nimport { IgxInputGroupComponent, IgxInputDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IGX_COMBO_COMPONENT, IgxComboAddItemComponent, IgxComboAPIService, IgxComboBaseDirective, IgxComboDropDownComponent, IgxComboFilteringPipe, IgxComboGroupingPipe, IgxComboItemComponent } from 'igniteui-angular/combo';\nimport { IgxDropDownItemNavigationDirective } from 'igniteui-angular/drop-down';\n\n/** Emitted when the Combo's selection has changed. */\nexport interface ISimpleComboSelectionChangedEventArgs extends IBaseEventArgs {\n /** The old selection value */\n oldValue: any;\n /** The new selection value */\n newValue: any;\n /** The old selection item */\n oldSelection: any;\n /** The new selection item */\n newSelection: any;\n /** The display text of the combo text box */\n displayText: string;\n}\n\n/** Emitted when the Combo's selection is changing. */\nexport interface ISimpleComboSelectionChangingEventArgs extends ISimpleComboSelectionChangedEventArgs, CancelableEventArgs {}\n\n/**\n * Represents a drop-down list that provides filtering functionality, allowing users to choose a single option from a predefined list.\n *\n * @igxModule IgxSimpleComboModule\n * @igxTheme igx-combo-theme\n * @igxKeywords combobox, single combo selection\n * @igxGroup Grids & Lists\n *\n * @remarks\n * It provides the ability to filter items as well as perform single selection on the provided data.\n * Additionally, it exposes keyboard navigation and custom styling capabilities.\n * @example\n * ```html\n * <igx-simple-combo [itemsMaxHeight]=\"250\" [data]=\"locationData\"\n * [displayKey]=\"'field'\" [valueKey]=\"'field'\"\n * placeholder=\"Location\" searchPlaceholder=\"Search...\">\n * </igx-simple-combo>\n * ```\n */\n@Component({\n selector: 'igx-simple-combo',\n templateUrl: 'simple-combo.component.html',\n styleUrls: ['../../../combo/src/combo/combo.component.css'],\n providers: [\n IgxComboAPIService,\n { provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '(keydown.ArrowDown)': 'onArrowDown($any($event))',\n '(keydown.Alt.ArrowDown)': 'onArrowDown($any($event))'\n },\n imports: [IgxInputGroupComponent, IgxInputDirective, IgxTextSelectionDirective, IgxSuffixDirective, NgTemplateOutlet, IgxIconComponent, IgxComboDropDownComponent, IgxDropDownItemNavigationDirective, IgxForOfDirective, IgxComboItemComponent, IgxComboAddItemComponent, IgxButtonDirective, IgxRippleDirective, IgxComboFilteringPipe, IgxComboGroupingPipe]\n})\nexport class IgxSimpleComboComponent extends IgxComboBaseDirective implements ControlValueAccessor, AfterViewInit, DoCheck {\n private platformUtil = inject(PlatformUtil);\n private formGroupDirective = inject(FormGroupDirective, { optional: true });\n\n /** @hidden @internal */\n @ViewChild(IgxComboDropDownComponent, { static: true })\n public dropdown!: IgxComboDropDownComponent;\n\n /** @hidden @internal */\n @ViewChild(IgxComboAddItemComponent)\n public addItem!: IgxComboAddItemComponent;\n\n /**\n * Emitted when item selection is changing, before the selection completes\n *\n * ```html\n * <igx-simple-combo (selectionChanging)='handleSelection()'></igx-simple-combo>\n * ```\n */\n @Output()\n public selectionChanging = new EventEmitter<ISimpleComboSelectionChangingEventArgs>();\n\n /**\n * Emitted when item selection is changed, after the selection completes\n *\n * ```html\n * <igx-simple-combo (selectionChanged)='handleSelection()'></igx-simple-combo>\n * ```\n */\n @Output()\n public selectionChanged = new EventEmitter<ISimpleComboSelectionChangedEventArgs>();\n\n @ViewChild(IgxTextSelectionDirective, { static: true })\n private textSelection!: IgxTextSelectionDirective;\n\n public override get value(): any {\n return this._value[0];\n }\n\n /**\n * Get current selection state\n *\n * @returns The selected item, if any\n * ```typescript\n * let mySelection = this.combo.selection;\n * ```\n */\n public override get selection(): any {\n return super.selection[0];\n }\n\n /** @hidden @internal */\n public composing = false;\n\n private _updateInput = true;\n\n private _collapsing = false;\n\n /** @hidden @internal */\n public get filteredData(): any[] | null {\n return this._filteredData;\n }\n /** @hidden @internal */\n public set filteredData(val: any[] | null) {\n this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val!;\n this.checkMatch();\n }\n\n /** @hidden @internal */\n public override get searchValue(): string {\n return this._searchValue;\n }\n public override set searchValue(val: string) {\n this._searchValue = val;\n }\n\n private get selectedItem(): any {\n return this.selectionService.get(this.id).values().next().value;\n }\n\n protected get hasSelectedItem(): boolean {\n return !!this.selectionService.get(this.id).size;\n }\n\n constructor() {\n super();\n this.comboAPI.register(this);\n }\n\n /** @hidden @internal */\n public onArrowDown(event: KeyboardEvent): void {\n if (this.collapsed) {\n event.preventDefault();\n event.stopPropagation();\n this.open();\n } else {\n if (this.virtDir.igxForOf!.length > 0 && !this.hasSelectedItem) {\n this.dropdown.navigateNext();\n this.dropdownContainer.nativeElement.focus();\n } else if (this.allowCustomValues) {\n this.addItem?.element.nativeElement.focus();\n }\n }\n }\n\n /**\n * Select a defined item\n *\n * @param item the item to be selected\n * ```typescript\n * this.combo.select(\"New York\");\n * ```\n */\n public select(item: any): void {\n if (item !== undefined) {\n const newSelection = this.selectionService.add_items(this.id, item instanceof Array ? item : [item], true);\n this.setSelection(newSelection);\n }\n }\n\n /**\n * Deselect the currently selected item\n *\n * @param item the items to be deselected\n * ```typescript\n * this.combo.deselect(\"New York\");\n * ```\n */\n public deselect(): void {\n this.clearSelection();\n }\n\n /** @hidden @internal */\n public writeValue(value: any): void {\n const oldSelection = super.selection;\n this.selectionService.select_items(this.id, this.isValid(value) ? [value] : [], true);\n this.cdr.markForCheck();\n this._displayValue = this.createDisplayText(super.selection, oldSelection);\n this._value = this.valueKey ? super.selection.map(item => item[this.valueKey]) : super.selection;\n this.searchValue = this.filterValue = this._displayValue?.toString() || '';\n }\n\n /** @hidden @internal */\n public override ngAfterViewInit(): void {\n this.virtDir.contentSizeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (super.selection.length > 0) {\n const index = this.virtDir.igxForOf!.findIndex(e => {\n let current = e ? e[this.valueKey] : undefined;\n if (this.valueKey === null || this.valueKey === undefined) {\n current = e;\n }\n return current === super.selection[0];\n });\n if (!this.isRemote) {\n // navigate to item only if we have local data\n // as with remote data this will fiddle with igxFor's scroll handler\n // and will trigger another chunk load which will break the visualization\n this.dropdown.navigateItem(index);\n }\n }\n });\n this.dropdown.opening.pipe(takeUntil(this.destroy$)).subscribe((args) => {\n if (args.cancel) {\n return;\n }\n this._collapsing = false;\n const filtered = this.filteredData!.find(this.findAllMatches);\n if (filtered === undefined || filtered === null) {\n this.filterValue = this.searchValue = this.comboInput.value;\n return;\n }\n });\n this.dropdown.opened.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.composing) {\n this.comboInput.focus();\n }\n });\n this.dropdown.closing.pipe(takeUntil(this.destroy$)).subscribe((args) => {\n if (args.cancel) {\n return;\n }\n if (this.getEditElement() && !args.event) {\n this._collapsing = true;\n // Only focus back when programmatically closing (no user event)\n // to avoid focus loops when user clicks on another combo\n this.comboInput.focus();\n } else {\n this.clearOnBlur();\n this._onTouchedCallback();\n }\n });\n\n // in reactive form the control is not present initially\n // and sets the selection to an invalid value in writeValue method\n if (!this.isValid(this.selectedItem)) {\n this.selectionService.clear(this.id);\n this._displayValue = '';\n }\n\n super.ngAfterViewInit();\n }\n\n /** @hidden @internal */\n public ngDoCheck(): void {\n if (this.data?.length && super.selection.length && !this._displayValue) {\n this._displayValue = this.createDisplayText(super.selection, []);\n this._value = this.valueKey ? super.selection.map(item => item[this.valueKey]) : super.selection;\n }\n }\n\n /** @hidden @internal */\n public override handleInputChange(event?: any): void {\n if (this.collapsed && this.comboInput.focused) {\n this.open();\n }\n if (event !== undefined) {\n this.filterValue = this.searchValue = typeof event === 'string' ? event : event.target.value;\n }\n if (!this.comboInput.value.trim() && super.selection.length) {\n // handle clearing of input by space\n this.clearSelection();\n this._onChangeCallback(null);\n this.filterValue = '';\n }\n if (super.selection.length) {\n const args: ISimpleComboSelectionChangingEventArgs = {\n newValue: undefined,\n oldValue: this.selectedItem,\n newSelection: undefined,\n oldSelection: this.selection,\n displayText: typeof event === 'string' ? event : event?.target?.value,\n owner: this,\n cancel: false\n };\n this.selectionChanging.emit(args);\n if (!args.cancel) {\n this.selectionService.select_items(this.id, [], true);\n const changedArgs: ISimpleComboSelectionChangedEventArgs = {\n newValue: undefined,\n oldValue: this.selectedItem,\n newSelection: undefined,\n oldSelection: this.selection,\n displayText: typeof event === 'string' ? event : event?.target?.value,\n owner: this\n };\n this.selectionChanged.emit(changedArgs);\n }\n }\n // when filtering the focused item should be the first item or the currently selected item\n if (!this.dropdown.focusedItem || this.dropdown.focusedItem.id !== this.dropdown.items[0].id) {\n this.dropdown.navigateFirst();\n }\n super.handleInputChange(event);\n this.composing = true;\n }\n\n /** @hidden @internal */\n public handleInputClick(): void {\n if (this.collapsed) {\n this.open();\n this.comboInput.focus();\n }\n }\n\n /** @hidden @internal */\n public override handleKeyDown(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.ENTER) {\n const filtered = this.filteredData!.find(this.findAllMatches);\n if (filtered === null || filtered === undefined) {\n return;\n }\n if (!this.dropdown.collapsed) {\n const focusedItem = this.dropdown.focusedItem;\n if (focusedItem && !focusedItem.isHeader) {\n this.select(focusedItem.itemID);\n event.preventDefault();\n event.stopPropagation();\n this.close();\n } else {\n event.preventDefault();\n event.stopPropagation();\n this.comboInput.focus();\n }\n }\n // manually trigger text selection as it will not be triggered during editing\n this.textSelection.trigger();\n return;\n }\n if (event.key === this.platformUtil.KEYMAP.BACKSPACE\n || event.key === this.platformUtil.KEYMAP.DELETE) {\n this._updateInput = false;\n this.clearSelection(true);\n }\n if (!this.collapsed && event.key === this.platformUtil.KEYMAP.TAB) {\n const filtered = this.filteredData!.find(this.findAllMatches);\n if (filtered === null || filtered === undefined) {\n this.clearOnBlur();\n this.close();\n return;\n }\n const focusedItem = this.dropdown.focusedItem;\n if (focusedItem && !focusedItem.isHeader) {\n this.select(focusedItem.itemID);\n this.close();\n this.textSelection.trigger();\n } else {\n this.clearOnBlur();\n this.close();\n }\n }\n if (event.key === this.platformUtil.KEYMAP.ESCAPE) {\n event.stopPropagation();\n if (this.collapsed) {\n const oldSelection = this.selection;\n this.clearSelection(true);\n if (this.selection !== oldSelection) {\n this.comboInput.value = this.filterValue = this.searchValue = '';\n }\n this.dropdown.focusedItem = null;\n this.comboInput.focus();\n } else {\n this.close();\n }\n }\n this.composing = false;\n super.handleKeyDown(event);\n }\n\n /** @hidden @internal */\n public handleKeyUp(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.ARROW_DOWN) {\n this.dropdown.focusedItem = this.hasSelectedItem && this.filteredData!.length > 0\n ? this.dropdown.items.find(i => i.itemID === this.selectedItem)!\n : this.dropdown.items[0]!;\n this.dropdownContainer.nativeElement.focus();\n }\n }\n\n /** @hidden @internal */\n public handleItemKeyDown(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.ARROW_UP && event.altKey) {\n this.close();\n this.comboInput.focus();\n return;\n }\n if (event.key === this.platformUtil.KEYMAP.ENTER) {\n this.comboInput.focus();\n }\n }\n\n /** @hidden @internal */\n public handleItemClick(): void {\n this.close();\n this.comboInput.focus();\n }\n\n /** @hidden @internal */\n public override onBlur(): void {\n // when clicking the toggle button to close the combo and immediately clicking outside of it\n // the collapsed state is not modified as the dropdown is still not closed\n if (this.collapsed || this._collapsing) {\n this.clearOnBlur();\n }\n super.onBlur();\n }\n\n /** @hidden @internal */\n public getEditElement(): HTMLElement {\n return this.comboInput.nativeElement;\n }\n\n /** @hidden @internal */\n public handleClear(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const oldSelection = this.selection;\n this.clearSelection(true);\n\n if (!this.collapsed) {\n this.focusSearchInput(true);\n }\n event.stopPropagation();\n\n if (this.selection !== oldSelection) {\n this.comboInput.value = this.filterValue = this.searchValue = '';\n }\n\n this.dropdown.focusedItem = null;\n this.composing = false;\n this.comboInput.focus();\n }\n\n /** @hidden @internal */\n public handleOpened(): void {\n this.triggerCheck();\n if (!this.comboInput.focused) {\n this.dropdownContainer.nativeElement.focus();\n }\n this.opened.emit({ owner: this });\n }\n\n /** @hidden @internal */\n public override handleClosing(e: IBaseCancelableBrowserEventArgs): void {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.closing.emit(args);\n e.cancel = args.cancel;\n if (e.cancel) {\n return;\n }\n\n this.composing = false;\n // explicitly update selection so that we don't have to force CD\n const isTab = (e.event as KeyboardEvent)?.key === this.platformUtil.KEYMAP.TAB;\n this.textSelection.selected = !isTab;\n }\n\n /** @hidden @internal */\n public focusSearchInput(opening?: boolean): void {\n if (opening) {\n this.dropdownContainer.nativeElement.focus();\n } else {\n this.comboInput.nativeElement.focus();\n }\n }\n\n /** @hidden @internal */\n public override onClick(event: MouseEvent): void {\n super.onClick(event);\n if (this.comboInput.value.length === 0) {\n this.virtDir.scrollTo(0);\n }\n }\n\n protected findAllMatches = (element: any): boolean => {\n const value = this.displayKey ? element[this.displayKey] : element;\n if (value === null || value === undefined || value === '') {\n // we can accept null, undefined and empty strings as empty display values\n return true;\n }\n const searchValue = this.searchValue || this.comboInput.value;\n return !!searchValue && value.toString().toLowerCase().includes(searchValue.toLowerCase());\n };\n\n protected setSelection(newSelection: any): void {\n const newValueAsArray = newSelection ? Array.from(newSelection) as IgxComboItemComponent[] : [];\n const oldValueAsArray = Array.from(this.selectionService.get(this.id) || []);\n const newItems = this.convertKeysToItems(newValueAsArray);\n const oldItems = this.convertKeysToItems(oldValueAsArray);\n const displayText = this.createDisplayText(this.convertKeysToItems(newValueAsArray), oldValueAsArray);\n const args: ISimpleComboSelectionChangingEventArgs = {\n newValue: newValueAsArray[0],\n oldValue: oldValueAsArray[0],\n newSelection: newItems[0],\n oldSelection: oldItems[0],\n displayText,\n owner: this,\n cancel: false\n };\n const shouldEmitSelectionEvents = args.newSelection !== args.oldSelection;\n if (shouldEmitSelectionEvents) {\n this.selectionChanging.emit(args);\n }\n // TODO: refactor below code as it sets the selection and the display text\n if (!args.cancel) {\n let argsSelection = this.isValid(args.newValue)\n ? args.newValue\n : [];\n argsSelection = Array.isArray(argsSelection) ? argsSelection : [argsSelection];\n this.selectionService.select_items(this.id, argsSelection, true);\n this._value = argsSelection;\n if (this._updateInput) {\n this.comboInput.value = this._displayValue = this.searchValue = displayText !== args.displayText\n ? args.displayText\n : this.createDisplayText(super.selection, [args.oldValue]);\n }\n this._onChangeCallback(this.value);\n if (shouldEmitSelectionEvents) {\n const changedArgs: ISimpleComboSelectionChangedEventArgs = {\n newValue: this.value,\n oldValue: oldValueAsArray[0],\n newSelection: this.selection,\n oldSelection: oldItems[0],\n displayText: this._displayValue,\n owner: this\n };\n this.selectionChanged.emit(changedArgs);\n }\n this._updateInput = true;\n } else if (this.isRemote) {\n this.registerRemoteEntries(newValueAsArray, false);\n } else {\n args.displayText = this.createDisplayText(oldItems, []);\n\n const oldSelectionArray = args.oldSelection ? [args.oldSelection] : [];\n this.comboInput.value = this._displayValue = this.searchValue = this.createDisplayText(oldSelectionArray, []);\n\n if (this.isRemote) {\n this.registerRemoteEntries(newValueAsArray, false);\n }\n }\n }\n\n protected createDisplayText(newSelection: any[], oldSelection: any[]): string {\n if (this.isRemote) {\n const selection = this.valueKey ? newSelection.map(item => item[this.valueKey]) : newSelection;\n return this.getRemoteSelection(selection, oldSelection);\n }\n\n if (this.displayKey !== null\n && this.displayKey !== undefined\n && newSelection.length > 0) {\n return newSelection.filter(e => e).map(e => e[this.displayKey])[0]?.toString() || '';\n }\n\n return newSelection[0]?.toString() || '';\n }\n\n protected override getRemoteSelection(newSelection: any[], oldSelection: any[]): string {\n if (!newSelection.length) {\n this.registerRemoteEntries(oldSelection, false);\n return '';\n }\n\n this.registerRemoteEntries(oldSelection, false);\n this.registerRemoteEntries(newSelection);\n return Object.keys(this._remoteSelection).map(e => (this._remoteSelection as any)[e])[0] || '';\n }\n\n /** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */\n protected override registerRemoteEntries(ids: any[], add = true) {\n const selection = this.getValueDisplayPairs(ids)[0];\n\n if (add && selection) {\n (this._remoteSelection as any)[selection[this.valueKey]] = selection[this.displayKey].toString();\n } else {\n this._remoteSelection = {};\n }\n }\n\n private clearSelection(ignoreFilter?: boolean): void {\n let newSelection = this.selectionService.get_empty();\n if (this.filteredData!.length !== this.data!.length && !ignoreFilter) {\n newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));\n }\n if (this.selectionService.get(this.id).size > 0 || this.comboInput.value.trim()) {\n this.setSelection(newSelection);\n }\n }\n\n private clearOnBlur(): void {\n if (this.isRemote) {\n const searchValue = this.searchValue || this.comboInput.value;\n const remoteValue = Object.keys(this._remoteSelection).map(e => (this._remoteSelection as any)[e])[0] || '';\n if (searchValue !== remoteValue) {\n this.clear();\n }\n return;\n }\n\n const filtered = this.filteredData!.find(this.findMatch);\n // selecting null in primitive data returns undefined as the search text is '', but the item is null\n if (filtered === undefined && this.selectedItem !== null || !super.selection.length) {\n this.clear();\n }\n }\n\n private getElementVal(element: any): string {\n const elementVal = this.displayKey ? element[this.displayKey] : element;\n return String(elementVal);\n }\n\n private clear(): void {\n this.clearSelection(true);\n const oldSelection = this.selection;\n if (this.selection !== oldSelection) {\n this.comboInput.value = this._displayValue = this.searchValue = '';\n }\n }\n\n private isValid(value: any): boolean {\n if (this.formGroupDirective && value === null) {\n return false;\n }\n\n if (this.required) {\n return value !== null && value !== '' && value !== undefined\n }\n\n return value !== undefined;\n }\n}\n","<igx-input-group #inputGroup [type]=\"type\">\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"displayValue\" role=\"combobox\"\n aria-haspopup=\"listbox\" aria-autocomplete=\"list\" aria-readonly=\"false\"\n [attr.aria-expanded]=\"!this.dropdown.collapsed\" [attr.aria-controls]=\"this.dropdown.listId\"\n [attr.aria-labelledby]=\"this.ariaLabelledBy || this.label?.id || this.placeholder\"\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxTextSelection]=\"!composing\"\n [attr.aria-label]=\"getAriaLabel()\"\n (input)=\"handleInputChange($event)\" (click)=\"handleInputClick()\"\n (keyup)=\"handleKeyUp($event)\" (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" (paste)=\"handleInputChange($event)\"/>\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n\n @if (hasSelectedItem && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClear($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n\n @if (showSearchCaseIcon) {\n <igx-suffix>\n <igx-icon family=\"default\" name=\"case_sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n }\n\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\" (click)=\"onClick($event)\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"this.ariaLabelledBy || this.label?.id || this.placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"dropdown.onFocus()\" (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item [role]=\"item?.isHeader? 'group' : 'option'\" [singleMode]=\"true\"\n [itemHeight]=\"itemHeight\" (click)=\"handleItemClick()\" *igxFor=\"let item of data!\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize; scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData?.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData?.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf?.length!\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n","import { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxSimpleComboComponent } from './simple-combo.component';\nimport { IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboToggleIconDirective } from 'igniteui-angular/combo';\n\nexport * from './simple-combo.component';\n\n/* NOTE: Simple combo directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_SIMPLE_COMBO_DIRECTIVES = [\n IgxSimpleComboComponent,\n IgxComboAddItemDirective,\n IgxComboClearIconDirective,\n IgxComboEmptyDirective,\n IgxComboFooterDirective,\n IgxComboHeaderDirective,\n IgxComboHeaderItemDirective,\n IgxComboItemDirective,\n IgxComboToggleIconDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_SIMPLE_COMBO_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_SIMPLE_COMBO_DIRECTIVES\n ],\n exports: [\n ...IGX_SIMPLE_COMBO_DIRECTIVES\n ]\n})\nexport class IgxSimpleComboModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxSimpleComboComponent"],"mappings":";;;;;;;;;;;;;;AAgCA;;;;;;;;;;;;;;;;;;AAkBG;AAkBG,MAAO,uBAAwB,SAAQ,qBAAqB,CAAA;AAmC9D,IAAA,IAAoB,KAAK,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACzB;AAEA;;;;;;;AAOG;AACH,IAAA,IAAoB,SAAS,GAAA;AACzB,QAAA,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7B;;AAUA,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa;IAC7B;;IAEA,IAAW,YAAY,CAAC,GAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG,GAAI;QAC1F,IAAI,CAAC,UAAU,EAAE;IACrB;;AAGA,IAAA,IAAoB,WAAW,GAAA;QAC3B,OAAO,IAAI,CAAC,YAAY;IAC5B;IACA,IAAoB,WAAW,CAAC,GAAW,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;IAC3B;AAEA,IAAA,IAAY,YAAY,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;IACnE;AAEA,IAAA,IAAc,eAAe,GAAA;AACzB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI;IACpD;AAEA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AApFH,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACnC,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAU3E;;;;;;AAMG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAA0C;AAErF;;;;;;AAMG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAyC;;QAsB5E,IAAA,CAAA,SAAS,GAAG,KAAK;QAEhB,IAAA,CAAA,YAAY,GAAG,IAAI;QAEnB,IAAA,CAAA,WAAW,GAAG,KAAK;AA2XjB,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,OAAY,KAAa;AACjD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO;AAClE,YAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;;AAEvD,gBAAA,OAAO,IAAI;YACf;YACA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7D,YAAA,OAAO,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC9F,QAAA,CAAC;AArWG,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChC;;AAGO,IAAA,WAAW,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,IAAI,EAAE;QACf;aAAO;AACH,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC5D,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE;YAChD;AAAO,iBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC/B,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;YAC/C;QACJ;IACJ;AAEA;;;;;;;AAOG;AACI,IAAA,MAAM,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,YAAY,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAC1G,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QACnC;IACJ;AAEA;;;;;;;AAOG;IACI,QAAQ,GAAA;QACX,IAAI,CAAC,cAAc,EAAE;IACzB;;AAGO,IAAA,UAAU,CAAC,KAAU,EAAA;AACxB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;AACrF,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC;AAC1E,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS;AAChG,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9E;;IAGgB,eAAe,GAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACzE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAS,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/C,oBAAA,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;AAC9C,oBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;wBACvD,OAAO,GAAG,CAAC;oBACf;oBACA,OAAO,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;;;AAIhB,oBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;gBACrC;YACJ;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACpE,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb;YACJ;AACA,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC7D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC7C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;gBAC3D;YACJ;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC/D,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YAC3B;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACpE,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb;YACJ;YACA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACtC,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;;AAGvB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YAC3B;iBAAO;gBACH,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,kBAAkB,EAAE;YAC7B;AACJ,QAAA,CAAC,CAAC;;;QAIF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAClC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QAC3B;QAEA,KAAK,CAAC,eAAe,EAAE;IAC3B;;IAGO,SAAS,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACpE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS;QACpG;IACJ;;AAGgB,IAAA,iBAAiB,CAAC,KAAW,EAAA;QACzC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAC3C,IAAI,CAAC,IAAI,EAAE;QACf;AACA,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAChG;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;;YAEzD,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;QACzB;AACA,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;AACxB,YAAA,MAAM,IAAI,GAA2C;AACjD,gBAAA,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,gBAAA,YAAY,EAAE,SAAS;gBACvB,YAAY,EAAE,IAAI,CAAC,SAAS;AAC5B,gBAAA,WAAW,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK;AACrE,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE;aACX;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,gBAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;AACrD,gBAAA,MAAM,WAAW,GAA0C;AACvD,oBAAA,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,oBAAA,YAAY,EAAE,SAAS;oBACvB,YAAY,EAAE,IAAI,CAAC,SAAS;AAC5B,oBAAA,WAAW,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK;AACrE,oBAAA,KAAK,EAAE;iBACV;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC3C;QACJ;;QAEA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC1F,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;QACjC;AACA,QAAA,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACzB;;IAGO,gBAAgB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;QAC3B;IACJ;;AAGgB,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE;AAC9C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC7D,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC7C;YACJ;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC1B,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC7C,gBAAA,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AACtC,oBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;oBAC/B,KAAK,CAAC,cAAc,EAAE;oBACtB,KAAK,CAAC,eAAe,EAAE;oBACvB,IAAI,CAAC,KAAK,EAAE;gBAChB;qBAAO;oBACH,KAAK,CAAC,cAAc,EAAE;oBACtB,KAAK,CAAC,eAAe,EAAE;AACvB,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;gBAC3B;YACJ;;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAC5B;QACJ;QACA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;eACpC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE;AAClD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC7B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE;AAC/D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC7D,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC7C,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE;gBACZ;YACJ;AACA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC7C,YAAA,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AACtC,gBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC/B,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAChC;iBAAO;gBACH,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE;YAChB;QACJ;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE;YAC/C,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS;AACnC,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,EAAE;AACjC,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;gBACpE;AACA,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YAC3B;iBAAO;gBACH,IAAI,CAAC,KAAK,EAAE;YAChB;QACJ;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;IAC9B;;AAGO,IAAA,WAAW,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAa,CAAC,MAAM,GAAG;kBAC1E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY;kBAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE;AAC7B,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE;QAChD;IACJ;;AAGO,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;YACjE,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACvB;QACJ;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE;AAC9C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;QAC3B;IACJ;;IAGO,eAAe,GAAA;QAClB,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IAC3B;;IAGgB,MAAM,GAAA;;;QAGlB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;YACpC,IAAI,CAAC,WAAW,EAAE;QACtB;QACA,KAAK,CAAC,MAAM,EAAE;IAClB;;IAGO,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACxC;;AAGO,IAAA,WAAW,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;QACJ;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAEzB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC/B;QACA,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;QACpE;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IAC3B;;IAGO,YAAY,GAAA;QACf,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE;QAChD;QACA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrC;;AAGgB,IAAA,aAAa,CAAC,CAAkC,EAAA;AAC5D,QAAA,MAAM,IAAI,GAAoC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AAC/F,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACtB,QAAA,IAAI,CAAC,CAAC,MAAM,EAAE;YACV;QACJ;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAEtB,QAAA,MAAM,KAAK,GAAI,CAAC,CAAC,KAAuB,EAAE,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;AAC9E,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,KAAK;IACxC;;AAGO,IAAA,gBAAgB,CAAC,OAAiB,EAAA;QACrC,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE;QAChD;aAAO;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;QACzC;IACJ;;AAGgB,IAAA,OAAO,CAAC,KAAiB,EAAA;AACrC,QAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5B;IACJ;AAYU,IAAA,YAAY,CAAC,YAAiB,EAAA;AACpC,QAAA,MAAM,eAAe,GAAG,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAA4B,GAAG,EAAE;AAC/F,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;AACzD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;AACrG,QAAA,MAAM,IAAI,GAA2C;AACjD,YAAA,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;AAC5B,YAAA,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;AAC5B,YAAA,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzB,YAAA,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzB,WAAW;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,MAAM,EAAE;SACX;QACD,MAAM,yBAAyB,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;QACzE,IAAI,yBAAyB,EAAE;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACrC;;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;kBACxC,IAAI,CAAC;kBACL,EAAE;AACR,YAAA,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,CAAC,aAAa,CAAC;AAC9E,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC;AAChE,YAAA,IAAI,CAAC,MAAM,GAAG,aAAa;AAC3B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW,KAAK,IAAI,CAAC;sBAC/E,IAAI,CAAC;AACP,sBAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClE;AACA,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,MAAM,WAAW,GAA0C;oBACvD,QAAQ,EAAE,IAAI,CAAC,KAAK;AACpB,oBAAA,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;oBAC5B,YAAY,EAAE,IAAI,CAAC,SAAS;AAC5B,oBAAA,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;oBACzB,WAAW,EAAE,IAAI,CAAC,aAAa;AAC/B,oBAAA,KAAK,EAAE;iBACV;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC3C;AACA,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC5B;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,KAAK,CAAC;QACtD;aAAO;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC;AAEvD,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;YACtE,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,CAAC;AAE7G,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,KAAK,CAAC;YACtD;QACJ;IACJ;IAEU,iBAAiB,CAAC,YAAmB,EAAE,YAAmB,EAAA;AAChE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY;YAC9F,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC;QAC3D;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK;eACjB,IAAI,CAAC,UAAU,KAAK;AACpB,eAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACxF;QAEA,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C;IAEmB,kBAAkB,CAAC,YAAmB,EAAE,YAAmB,EAAA;AAC1E,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC/C,YAAA,OAAO,EAAE;QACb;AAEA,QAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAK,IAAI,CAAC,gBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IAClG;;AAGmB,IAAA,qBAAqB,CAAC,GAAU,EAAE,GAAG,GAAG,IAAI,EAAA;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEnD,QAAA,IAAI,GAAG,IAAI,SAAS,EAAE;YACjB,IAAI,CAAC,gBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;QACpG;aAAO;AACH,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;QAC9B;IACJ;AAEQ,IAAA,cAAc,CAAC,YAAsB,EAAA;QACzC,IAAI,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;AACpD,QAAA,IAAI,IAAI,CAAC,YAAa,CAAC,MAAM,KAAK,IAAI,CAAC,IAAK,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;YAClE,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnI;QACA,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AAC7E,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QACnC;IACJ;IAEQ,WAAW,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7D,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAK,IAAI,CAAC,gBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3G,YAAA,IAAI,WAAW,KAAK,WAAW,EAAE;gBAC7B,IAAI,CAAC,KAAK,EAAE;YAChB;YACA;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;AAExD,QAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;YACjF,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;AAEQ,IAAA,aAAa,CAAC,OAAY,EAAA;AAC9B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO;AACvE,QAAA,OAAO,MAAM,CAAC,UAAU,CAAC;IAC7B;IAEQ,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS;AACnC,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE;QACtE;IACJ;AAEQ,IAAA,OAAO,CAAC,KAAU,EAAA;QACtB,IAAI,IAAI,CAAC,kBAAkB,IAAI,KAAK,KAAK,IAAI,EAAE;AAC3C,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;QAChE;QAEA,OAAO,KAAK,KAAK,SAAS;IAC9B;8GA/kBS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAbrB;YACP,kBAAkB;AAClB,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,uBAAuB,EAAE;YACtE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI;AAClF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAcU,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIzB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuBxB,yBAAyB,qFCpGxC,24NAiIA,EAAA,MAAA,EAAA,CAAA,2vLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/Dc,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,4EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kCAAkC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,+ZAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,qBAAqB,kDAAE,oBAAoB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAErV,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,SAAA,EAGjB;wBACP,kBAAkB;AAClB,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,yBAAyB,EAAE;wBACtE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,yBAAyB,EAAE,KAAK,EAAE,IAAI;AAClF,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,KAAK,EAAA,IAAA,EACxC;AACF,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,yBAAyB,EAAE;AAC9B,qBAAA,EAAA,OAAA,EACQ,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,24NAAA,EAAA,MAAA,EAAA,CAAA,2vLAAA,CAAA,EAAA;;sBAO9V,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAIrD,SAAS;uBAAC,wBAAwB;;sBAUlC;;sBAUA;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AE9F1D;AACO,MAAM,2BAA2B,GAAG;IACvC,uBAAuB;IACvB,wBAAwB;IACxB,0BAA0B;IAC1B,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;IACvB,2BAA2B;IAC3B,qBAAqB;IACrB,2BAA2B;IAC3B,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB;;;ACjBJ;;;AAGG;MASU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,OAAA,EAAA,CAAAA,uBAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAAA,uBAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,OAAA,EAAA,CAAAA,uBAAA,CAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN;AACJ,iBAAA;;;ACdD;;AAEG;;;;"}
1
+ {"version":3,"file":"igniteui-angular-simple-combo.mjs","sources":["../../../projects/igniteui-angular/simple-combo/src/simple-combo/simple-combo.component.ts","../../../projects/igniteui-angular/simple-combo/src/simple-combo/simple-combo.component.html","../../../projects/igniteui-angular/simple-combo/src/simple-combo/public_api.ts","../../../projects/igniteui-angular/simple-combo/src/simple-combo/simple-combo.module.ts","../../../projects/igniteui-angular/simple-combo/src/igniteui-angular-simple-combo.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, Component, DoCheck, EventEmitter, HostListener, Output, ViewChild, ViewEncapsulation, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { CancelableEventArgs, IBaseCancelableBrowserEventArgs, IBaseEventArgs, PlatformUtil } from 'igniteui-angular/core';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { IgxForOfDirective } from 'igniteui-angular/directives';\nimport { IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxTextSelectionDirective } from 'igniteui-angular/directives';\nimport { IgxInputGroupComponent, IgxInputDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IGX_COMBO_COMPONENT, IgxComboAddItemComponent, IgxComboAPIService, IgxComboBaseDirective, IgxComboDropDownComponent, IgxComboFilteringPipe, IgxComboGroupingPipe, IgxComboItemComponent } from 'igniteui-angular/combo';\nimport { IgxDropDownItemNavigationDirective } from 'igniteui-angular/drop-down';\n\n/** Emitted when the Combo's selection has changed. */\nexport interface ISimpleComboSelectionChangedEventArgs extends IBaseEventArgs {\n /** The old selection value */\n oldValue: any;\n /** The new selection value */\n newValue: any;\n /** The old selection item */\n oldSelection: any;\n /** The new selection item */\n newSelection: any;\n /** The display text of the combo text box */\n displayText: string;\n}\n\n/** Emitted when the Combo's selection is changing. */\nexport interface ISimpleComboSelectionChangingEventArgs extends ISimpleComboSelectionChangedEventArgs, CancelableEventArgs {}\n\n/**\n * Represents a drop-down list that provides filtering functionality, allowing users to choose a single option from a predefined list.\n *\n * @igxModule IgxSimpleComboModule\n * @igxTheme igx-combo-theme\n * @igxKeywords combobox, single combo selection\n * @igxGroup Grids & Lists\n *\n * @remarks\n * It provides the ability to filter items as well as perform single selection on the provided data.\n * Additionally, it exposes keyboard navigation and custom styling capabilities.\n * @example\n * ```html\n * <igx-simple-combo [itemsMaxHeight]=\"250\" [data]=\"locationData\"\n * [displayKey]=\"'field'\" [valueKey]=\"'field'\"\n * placeholder=\"Location\" searchPlaceholder=\"Search...\">\n * </igx-simple-combo>\n * ```\n */\n@Component({\n selector: 'igx-simple-combo',\n templateUrl: 'simple-combo.component.html',\n styleUrls: ['../../../combo/src/combo/combo.component.css'],\n providers: [\n IgxComboAPIService,\n { provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxInputGroupComponent, IgxInputDirective, IgxTextSelectionDirective, IgxSuffixDirective, NgTemplateOutlet, IgxIconComponent, IgxComboDropDownComponent, IgxDropDownItemNavigationDirective, IgxForOfDirective, IgxComboItemComponent, IgxComboAddItemComponent, IgxButtonDirective, IgxRippleDirective, IgxComboFilteringPipe, IgxComboGroupingPipe]\n})\nexport class IgxSimpleComboComponent extends IgxComboBaseDirective implements ControlValueAccessor, AfterViewInit, DoCheck {\n private platformUtil = inject(PlatformUtil);\n private formGroupDirective = inject(FormGroupDirective, { optional: true });\n\n /** @hidden @internal */\n @ViewChild(IgxComboDropDownComponent, { static: true })\n public dropdown: IgxComboDropDownComponent;\n\n /** @hidden @internal */\n @ViewChild(IgxComboAddItemComponent)\n public addItem: IgxComboAddItemComponent;\n\n /**\n * Emitted when item selection is changing, before the selection completes\n *\n * ```html\n * <igx-simple-combo (selectionChanging)='handleSelection()'></igx-simple-combo>\n * ```\n */\n @Output()\n public selectionChanging = new EventEmitter<ISimpleComboSelectionChangingEventArgs>();\n\n /**\n * Emitted when item selection is changed, after the selection completes\n *\n * ```html\n * <igx-simple-combo (selectionChanged)='handleSelection()'></igx-simple-combo>\n * ```\n */\n @Output()\n public selectionChanged = new EventEmitter<ISimpleComboSelectionChangedEventArgs>();\n\n @ViewChild(IgxTextSelectionDirective, { static: true })\n private textSelection: IgxTextSelectionDirective;\n\n public override get value(): any {\n return this._value[0];\n }\n\n /**\n * Get current selection state\n *\n * @returns The selected item, if any\n * ```typescript\n * let mySelection = this.combo.selection;\n * ```\n */\n public override get selection(): any {\n return super.selection[0];\n }\n\n /** @hidden @internal */\n public composing = false;\n\n private _updateInput = true;\n\n private _collapsing = false;\n\n /** @hidden @internal */\n public get filteredData(): any[] | null {\n return this._filteredData;\n }\n /** @hidden @internal */\n public set filteredData(val: any[] | null) {\n this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val;\n this.checkMatch();\n }\n\n /** @hidden @internal */\n public override get searchValue(): string {\n return this._searchValue;\n }\n public override set searchValue(val: string) {\n this._searchValue = val;\n }\n\n private get selectedItem(): any {\n return this.selectionService.get(this.id).values().next().value;\n }\n\n protected get hasSelectedItem(): boolean {\n return !!this.selectionService.get(this.id).size;\n }\n\n constructor() {\n super();\n this.comboAPI.register(this);\n }\n\n /** @hidden @internal */\n @HostListener('keydown.ArrowDown', ['$event'])\n @HostListener('keydown.Alt.ArrowDown', ['$event'])\n public onArrowDown(event: Event): void {\n if (this.collapsed) {\n event.preventDefault();\n event.stopPropagation();\n this.open();\n } else {\n if (this.virtDir.igxForOf.length > 0 && !this.hasSelectedItem) {\n this.dropdown.navigateNext();\n this.dropdownContainer.nativeElement.focus();\n } else if (this.allowCustomValues) {\n this.addItem?.element.nativeElement.focus();\n }\n }\n }\n\n /**\n * Select a defined item\n *\n * @param item the item to be selected\n * ```typescript\n * this.combo.select(\"New York\");\n * ```\n */\n public select(item: any): void {\n if (item !== undefined) {\n const newSelection = this.selectionService.add_items(this.id, item instanceof Array ? item : [item], true);\n this.setSelection(newSelection);\n }\n }\n\n /**\n * Deselect the currently selected item\n *\n * @param item the items to be deselected\n * ```typescript\n * this.combo.deselect(\"New York\");\n * ```\n */\n public deselect(): void {\n this.clearSelection();\n }\n\n /** @hidden @internal */\n public writeValue(value: any): void {\n const oldSelection = super.selection;\n this.selectionService.select_items(this.id, this.isValid(value) ? [value] : [], true);\n this.cdr.markForCheck();\n this._displayValue = this.createDisplayText(super.selection, oldSelection);\n this._value = this.valueKey ? super.selection.map(item => item[this.valueKey]) : super.selection;\n this.searchValue = this.filterValue = this._displayValue?.toString() || '';\n }\n\n /** @hidden @internal */\n public override ngAfterViewInit(): void {\n this.virtDir.contentSizeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (super.selection.length > 0) {\n const index = this.virtDir.igxForOf.findIndex(e => {\n let current = e ? e[this.valueKey] : undefined;\n if (this.valueKey === null || this.valueKey === undefined) {\n current = e;\n }\n return current === super.selection[0];\n });\n if (!this.isRemote) {\n // navigate to item only if we have local data\n // as with remote data this will fiddle with igxFor's scroll handler\n // and will trigger another chunk load which will break the visualization\n this.dropdown.navigateItem(index);\n }\n }\n });\n this.dropdown.opening.pipe(takeUntil(this.destroy$)).subscribe((args) => {\n if (args.cancel) {\n return;\n }\n this._collapsing = false;\n const filtered = this.filteredData.find(this.findAllMatches);\n if (filtered === undefined || filtered === null) {\n this.filterValue = this.searchValue = this.comboInput.value;\n return;\n }\n });\n this.dropdown.opened.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.composing) {\n this.comboInput.focus();\n }\n });\n this.dropdown.closing.pipe(takeUntil(this.destroy$)).subscribe((args) => {\n if (args.cancel) {\n return;\n }\n if (this.getEditElement() && !args.event) {\n this._collapsing = true;\n // Only focus back when programmatically closing (no user event)\n // to avoid focus loops when user clicks on another combo\n this.comboInput.focus();\n } else {\n this.clearOnBlur();\n this._onTouchedCallback();\n }\n });\n\n // in reactive form the control is not present initially\n // and sets the selection to an invalid value in writeValue method\n if (!this.isValid(this.selectedItem)) {\n this.selectionService.clear(this.id);\n this._displayValue = '';\n }\n\n super.ngAfterViewInit();\n }\n\n /** @hidden @internal */\n public ngDoCheck(): void {\n if (this.data?.length && super.selection.length && !this._displayValue) {\n this._displayValue = this.createDisplayText(super.selection, []);\n this._value = this.valueKey ? super.selection.map(item => item[this.valueKey]) : super.selection;\n }\n }\n\n /** @hidden @internal */\n public override handleInputChange(event?: any): void {\n if (this.collapsed && this.comboInput.focused) {\n this.open();\n }\n if (event !== undefined) {\n this.filterValue = this.searchValue = typeof event === 'string' ? event : event.target.value;\n }\n if (!this.comboInput.value.trim() && super.selection.length) {\n // handle clearing of input by space\n this.clearSelection();\n this._onChangeCallback(null);\n this.filterValue = '';\n }\n if (super.selection.length) {\n const args: ISimpleComboSelectionChangingEventArgs = {\n newValue: undefined,\n oldValue: this.selectedItem,\n newSelection: undefined,\n oldSelection: this.selection,\n displayText: typeof event === 'string' ? event : event?.target?.value,\n owner: this,\n cancel: false\n };\n this.selectionChanging.emit(args);\n if (!args.cancel) {\n this.selectionService.select_items(this.id, [], true);\n const changedArgs: ISimpleComboSelectionChangedEventArgs = {\n newValue: undefined,\n oldValue: this.selectedItem,\n newSelection: undefined,\n oldSelection: this.selection,\n displayText: typeof event === 'string' ? event : event?.target?.value,\n owner: this\n };\n this.selectionChanged.emit(changedArgs);\n }\n }\n // when filtering the focused item should be the first item or the currently selected item\n if (!this.dropdown.focusedItem || this.dropdown.focusedItem.id !== this.dropdown.items[0].id) {\n this.dropdown.navigateFirst();\n }\n super.handleInputChange(event);\n this.composing = true;\n }\n\n /** @hidden @internal */\n public handleInputClick(): void {\n if (this.collapsed) {\n this.open();\n this.comboInput.focus();\n }\n }\n\n /** @hidden @internal */\n public override handleKeyDown(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.ENTER) {\n const filtered = this.filteredData.find(this.findAllMatches);\n if (filtered === null || filtered === undefined) {\n return;\n }\n if (!this.dropdown.collapsed) {\n const focusedItem = this.dropdown.focusedItem;\n if (focusedItem && !focusedItem.isHeader) {\n this.select(focusedItem.itemID);\n event.preventDefault();\n event.stopPropagation();\n this.close();\n } else {\n event.preventDefault();\n event.stopPropagation();\n this.comboInput.focus();\n }\n }\n // manually trigger text selection as it will not be triggered during editing\n this.textSelection.trigger();\n return;\n }\n if (event.key === this.platformUtil.KEYMAP.BACKSPACE\n || event.key === this.platformUtil.KEYMAP.DELETE) {\n this._updateInput = false;\n this.clearSelection(true);\n }\n if (!this.collapsed && event.key === this.platformUtil.KEYMAP.TAB) {\n const filtered = this.filteredData.find(this.findAllMatches);\n if (filtered === null || filtered === undefined) {\n this.clearOnBlur();\n this.close();\n return;\n }\n const focusedItem = this.dropdown.focusedItem;\n if (focusedItem && !focusedItem.isHeader) {\n this.select(focusedItem.itemID);\n this.close();\n this.textSelection.trigger();\n } else {\n this.clearOnBlur();\n this.close();\n }\n }\n if (event.key === this.platformUtil.KEYMAP.ESCAPE) {\n event.stopPropagation();\n if (this.collapsed) {\n const oldSelection = this.selection;\n this.clearSelection(true);\n if (this.selection !== oldSelection) {\n this.comboInput.value = this.filterValue = this.searchValue = '';\n }\n this.dropdown.focusedItem = null;\n this.comboInput.focus();\n } else {\n this.close();\n }\n }\n this.composing = false;\n super.handleKeyDown(event);\n }\n\n /** @hidden @internal */\n public handleKeyUp(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.ARROW_DOWN) {\n this.dropdown.focusedItem = this.hasSelectedItem && this.filteredData.length > 0\n ? this.dropdown.items.find(i => i.itemID === this.selectedItem)\n : this.dropdown.items[0];\n this.dropdownContainer.nativeElement.focus();\n }\n }\n\n /** @hidden @internal */\n public handleItemKeyDown(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.ARROW_UP && event.altKey) {\n this.close();\n this.comboInput.focus();\n return;\n }\n if (event.key === this.platformUtil.KEYMAP.ENTER) {\n this.comboInput.focus();\n }\n }\n\n /** @hidden @internal */\n public handleItemClick(): void {\n this.close();\n this.comboInput.focus();\n }\n\n /** @hidden @internal */\n public override onBlur(): void {\n // when clicking the toggle button to close the combo and immediately clicking outside of it\n // the collapsed state is not modified as the dropdown is still not closed\n if (this.collapsed || this._collapsing) {\n this.clearOnBlur();\n }\n super.onBlur();\n }\n\n /** @hidden @internal */\n public getEditElement(): HTMLElement {\n return this.comboInput.nativeElement;\n }\n\n /** @hidden @internal */\n public handleClear(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const oldSelection = this.selection;\n this.clearSelection(true);\n\n if (!this.collapsed) {\n this.focusSearchInput(true);\n }\n event.stopPropagation();\n\n if (this.selection !== oldSelection) {\n this.comboInput.value = this.filterValue = this.searchValue = '';\n }\n\n this.dropdown.focusedItem = null;\n this.composing = false;\n this.comboInput.focus();\n }\n\n /** @hidden @internal */\n public handleOpened(): void {\n this.triggerCheck();\n if (!this.comboInput.focused) {\n this.dropdownContainer.nativeElement.focus();\n }\n this.opened.emit({ owner: this });\n }\n\n /** @hidden @internal */\n public override handleClosing(e: IBaseCancelableBrowserEventArgs): void {\n const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n this.closing.emit(args);\n e.cancel = args.cancel;\n if (e.cancel) {\n return;\n }\n\n this.composing = false;\n // explicitly update selection so that we don't have to force CD\n const isTab = (e.event as KeyboardEvent)?.key === this.platformUtil.KEYMAP.TAB;\n this.textSelection.selected = !isTab;\n }\n\n /** @hidden @internal */\n public focusSearchInput(opening?: boolean): void {\n if (opening) {\n this.dropdownContainer.nativeElement.focus();\n } else {\n this.comboInput.nativeElement.focus();\n }\n }\n\n /** @hidden @internal */\n public override onClick(event: Event): void {\n super.onClick(event);\n if (this.comboInput.value.length === 0) {\n this.virtDir.scrollTo(0);\n }\n }\n\n protected findAllMatches = (element: any): boolean => {\n const value = this.displayKey ? element[this.displayKey] : element;\n if (value === null || value === undefined || value === '') {\n // we can accept null, undefined and empty strings as empty display values\n return true;\n }\n const searchValue = this.searchValue || this.comboInput.value;\n return !!searchValue && value.toString().toLowerCase().includes(searchValue.toLowerCase());\n };\n\n protected setSelection(newSelection: any): void {\n const newValueAsArray = newSelection ? Array.from(newSelection) as IgxComboItemComponent[] : [];\n const oldValueAsArray = Array.from(this.selectionService.get(this.id) || []);\n const newItems = this.convertKeysToItems(newValueAsArray);\n const oldItems = this.convertKeysToItems(oldValueAsArray);\n const displayText = this.createDisplayText(this.convertKeysToItems(newValueAsArray), oldValueAsArray);\n const args: ISimpleComboSelectionChangingEventArgs = {\n newValue: newValueAsArray[0],\n oldValue: oldValueAsArray[0],\n newSelection: newItems[0],\n oldSelection: oldItems[0],\n displayText,\n owner: this,\n cancel: false\n };\n const shouldEmitSelectionEvents = args.newSelection !== args.oldSelection;\n if (shouldEmitSelectionEvents) {\n this.selectionChanging.emit(args);\n }\n // TODO: refactor below code as it sets the selection and the display text\n if (!args.cancel) {\n let argsSelection = this.isValid(args.newValue)\n ? args.newValue\n : [];\n argsSelection = Array.isArray(argsSelection) ? argsSelection : [argsSelection];\n this.selectionService.select_items(this.id, argsSelection, true);\n this._value = argsSelection;\n if (this._updateInput) {\n this.comboInput.value = this._displayValue = this.searchValue = displayText !== args.displayText\n ? args.displayText\n : this.createDisplayText(super.selection, [args.oldValue]);\n }\n this._onChangeCallback(this.value);\n if (shouldEmitSelectionEvents) {\n const changedArgs: ISimpleComboSelectionChangedEventArgs = {\n newValue: this.value,\n oldValue: oldValueAsArray[0],\n newSelection: this.selection,\n oldSelection: oldItems[0],\n displayText: this._displayValue,\n owner: this\n };\n this.selectionChanged.emit(changedArgs);\n }\n this._updateInput = true;\n } else if (this.isRemote) {\n this.registerRemoteEntries(newValueAsArray, false);\n } else {\n args.displayText = this.createDisplayText(oldItems, []);\n\n const oldSelectionArray = args.oldSelection ? [args.oldSelection] : [];\n this.comboInput.value = this._displayValue = this.searchValue = this.createDisplayText(oldSelectionArray, []);\n\n if (this.isRemote) {\n this.registerRemoteEntries(newValueAsArray, false);\n }\n }\n }\n\n protected createDisplayText(newSelection: any[], oldSelection: any[]): string {\n if (this.isRemote) {\n const selection = this.valueKey ? newSelection.map(item => item[this.valueKey]) : newSelection;\n return this.getRemoteSelection(selection, oldSelection);\n }\n\n if (this.displayKey !== null\n && this.displayKey !== undefined\n && newSelection.length > 0) {\n return newSelection.filter(e => e).map(e => e[this.displayKey])[0]?.toString() || '';\n }\n\n return newSelection[0]?.toString() || '';\n }\n\n protected override getRemoteSelection(newSelection: any[], oldSelection: any[]): string {\n if (!newSelection.length) {\n this.registerRemoteEntries(oldSelection, false);\n return '';\n }\n\n this.registerRemoteEntries(oldSelection, false);\n this.registerRemoteEntries(newSelection);\n return Object.keys(this._remoteSelection).map(e => this._remoteSelection[e])[0] || '';\n }\n\n /** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */\n protected override registerRemoteEntries(ids: any[], add = true) {\n const selection = this.getValueDisplayPairs(ids)[0];\n\n if (add && selection) {\n this._remoteSelection[selection[this.valueKey]] = selection[this.displayKey].toString();\n } else {\n this._remoteSelection = {};\n }\n }\n\n private clearSelection(ignoreFilter?: boolean): void {\n let newSelection = this.selectionService.get_empty();\n if (this.filteredData.length !== this.data.length && !ignoreFilter) {\n newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));\n }\n if (this.selectionService.get(this.id).size > 0 || this.comboInput.value.trim()) {\n this.setSelection(newSelection);\n }\n }\n\n private clearOnBlur(): void {\n if (this.isRemote) {\n const searchValue = this.searchValue || this.comboInput.value;\n const remoteValue = Object.keys(this._remoteSelection).map(e => this._remoteSelection[e])[0] || '';\n if (searchValue !== remoteValue) {\n this.clear();\n }\n return;\n }\n\n const filtered = this.filteredData.find(this.findMatch);\n // selecting null in primitive data returns undefined as the search text is '', but the item is null\n if (filtered === undefined && this.selectedItem !== null || !super.selection.length) {\n this.clear();\n }\n }\n\n private getElementVal(element: any): string {\n const elementVal = this.displayKey ? element[this.displayKey] : element;\n return String(elementVal);\n }\n\n private clear(): void {\n this.clearSelection(true);\n const oldSelection = this.selection;\n if (this.selection !== oldSelection) {\n this.comboInput.value = this._displayValue = this.searchValue = '';\n }\n }\n\n private isValid(value: any): boolean {\n if (this.formGroupDirective && value === null) {\n return false;\n }\n\n if (this.required) {\n return value !== null && value !== '' && value !== undefined\n }\n\n return value !== undefined;\n }\n}\n","<igx-input-group #inputGroup [type]=\"type\">\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"displayValue\" role=\"combobox\"\n aria-haspopup=\"listbox\" aria-autocomplete=\"list\" aria-readonly=\"false\"\n [attr.aria-expanded]=\"!this.dropdown.collapsed\" [attr.aria-controls]=\"this.dropdown.listId\"\n [attr.aria-labelledby]=\"this.ariaLabelledBy || this.label?.id || this.placeholder\"\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [igxTextSelection]=\"!composing\"\n [attr.aria-label]=\"getAriaLabel()\"\n (input)=\"handleInputChange($event)\" (click)=\"handleInputClick()\"\n (keyup)=\"handleKeyUp($event)\" (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" (paste)=\"handleInputChange($event)\"/>\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n\n @if (hasSelectedItem && !disableClear) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button igx-input-group__clear-button\"\n (click)=\"handleClear($event)\">\n @if (clearIconTemplate) {\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n }\n @if (!clearIconTemplate) {\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n }\n </igx-suffix>\n }\n\n @if (showSearchCaseIcon) {\n <igx-suffix>\n <igx-icon family=\"default\" name=\"case_sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n }\n\n <igx-suffix class=\"igx-input-group__toggle-button igx-combo__toggle-button\" (click)=\"onClick($event)\">\n @if (toggleIconTemplate) {\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n }\n @if (!toggleIconTemplate) {\n <igx-icon family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n }\n </igx-suffix>\n\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"this.ariaLabelledBy || this.label?.id || this.placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <!-- The igx-combo class is needed here in order to scope the css variables -->\n <div class=\"igx-combo\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"dropdown.onFocus()\" (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item [role]=\"item?.isHeader? 'group' : 'option'\" [singleMode]=\"true\"\n [itemHeight]=\"itemHeight\" (click)=\"handleItemClick()\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; initialChunkSize: 10; containerSize: itemsMaxHeight || containerSize; itemSize: itemHeight || itemSize; scrollOrientation: 'vertical';\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\">\n @if (item?.isHeader) {\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n }\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n @if (!item?.isHeader) {\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n }\n </igx-combo-item>\n </div>\n\n @if (filteredData.length === 0 || isAddButtonVisible()) {\n <div class=\"igx-combo__add\">\n @if (filteredData.length === 0) {\n <div class=\"igx-combo__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n }\n @if (isAddButtonVisible()) {\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n","import { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxSimpleComboComponent } from './simple-combo.component';\nimport { IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboToggleIconDirective } from 'igniteui-angular/combo';\n\nexport * from './simple-combo.component';\n\n/* NOTE: Simple combo directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_SIMPLE_COMBO_DIRECTIVES = [\n IgxSimpleComboComponent,\n IgxComboAddItemDirective,\n IgxComboClearIconDirective,\n IgxComboEmptyDirective,\n IgxComboFooterDirective,\n IgxComboHeaderDirective,\n IgxComboHeaderItemDirective,\n IgxComboItemDirective,\n IgxComboToggleIconDirective,\n IgxLabelDirective,\n IgxPrefixDirective,\n IgxSuffixDirective,\n IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_SIMPLE_COMBO_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_SIMPLE_COMBO_DIRECTIVES\n ],\n exports: [\n ...IGX_SIMPLE_COMBO_DIRECTIVES\n ]\n})\nexport class IgxSimpleComboModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxSimpleComboComponent"],"mappings":"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"}