igniteui-angular 21.1.4 → 21.1.5

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.
@@ -303,6 +303,7 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
303
303
  }
304
304
  }
305
305
  if (event.key === this.platformUtil.KEYMAP.ESCAPE) {
306
+ event.stopPropagation();
306
307
  if (this.collapsed) {
307
308
  const oldSelection = this.selection;
308
309
  this.clearSelection(true);
@@ -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, HostListener, Output, ViewChild, inject } 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 an igx-simple-combo's selection is changing. */\nexport interface ISimpleComboSelectionChangingEventArgs extends CancelableEventArgs, IBaseEventArgs {\n /** An object which represents the value that is currently selected */\n oldValue: any;\n /** An object which represents the value that will be selected after this event */\n newValue: any;\n /** An object which represents the item that is currently selected */\n oldSelection: any;\n /** An object which represents the item that will be selected after this event */\n newSelection: any;\n /** The text that will be displayed in the combo text box */\n displayText: string;\n}\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 providers: [\n IgxComboAPIService,\n { provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }\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 @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 }\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 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 if (args.newSelection !== args.oldSelection) {\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(args.newValue);\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) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__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-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 <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\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\">\n </ng-container>\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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"}
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, inject } 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 an igx-simple-combo's selection is changing. */\nexport interface ISimpleComboSelectionChangingEventArgs extends CancelableEventArgs, IBaseEventArgs {\n /** An object which represents the value that is currently selected */\n oldValue: any;\n /** An object which represents the value that will be selected after this event */\n newValue: any;\n /** An object which represents the item that is currently selected */\n oldSelection: any;\n /** An object which represents the item that will be selected after this event */\n newSelection: any;\n /** The text that will be displayed in the combo text box */\n displayText: string;\n}\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 providers: [\n IgxComboAPIService,\n { provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },\n { provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }\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 @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 }\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 if (args.newSelection !== args.oldSelection) {\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(args.newValue);\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) {\n <igx-suffix [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__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-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 <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\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\">\n </ng-container>\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "igniteui-angular",
3
- "version": "21.1.4",
3
+ "version": "21.1.5",
4
4
  "description": "Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps",
5
5
  "author": "Infragistics",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -124,20 +124,66 @@ Implements `ControlValueAccessor` and `Validator`. Works with both reactive and
124
124
  > **Docs:** [Date Range Picker](https://www.infragistics.com/products/ignite-ui-angular/angular/components/date-range-picker)
125
125
 
126
126
  ```typescript
127
- import { IgxDateRangePickerComponent } from 'igniteui-angular/date-picker';
127
+ import { IgxDateRangePickerComponent, IgxDateRangeStartComponent, IgxDateRangeEndComponent } from 'igniteui-angular/date-picker';
128
128
  import { IgxDateTimeEditorDirective } from 'igniteui-angular/directives';
129
129
  import { IGX_INPUT_GROUP_DIRECTIVES } from 'igniteui-angular/input-group';
130
+ import { IgxIconComponent } from 'igniteui-angular/icon';
131
+ import { IgxPickerToggleComponent, IgxPickerClearComponent } from 'igniteui-angular/core';
132
+ ```
130
133
 
131
- // import { IgxDateTimeEditorDirective, IGX_INPUT_GROUP_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
134
+ ```html
135
+ <igx-date-range-picker [(ngModel)]="dateRange">
136
+ <igx-date-range-start>
137
+ <input igxInput igxDateTimeEditor type="text" />
138
+ </igx-date-range-start>
139
+ <igx-date-range-end>
140
+ <input igxInput igxDateTimeEditor type="text" />
141
+ </igx-date-range-end>
142
+ </igx-date-range-picker>
132
143
  ```
133
144
 
145
+
146
+ `IgxDateRangePickerComponent` is imported from `igniteui-angular/date-picker`.
147
+
148
+ In the two-input configuration:
149
+
150
+ - place the `input` directly inside `igx-date-range-start` and `igx-date-range-end`
151
+ - use `igx-picker-toggle igxPrefix` for the calendar action
152
+ - use `igx-picker-clear igxSuffix` for the clear action
153
+
154
+ A plain `igx-prefix` or `igx-suffix` with an `igx-icon` is decorative only and does not trigger picker actions.
155
+ Do not wrap the inputs in an additional `igx-input-group`.
156
+
157
+ **Avoid these patterns in two-input mode:**
158
+
159
+ - `<igx-prefix><igx-icon>calendar_today</igx-icon></igx-prefix>`
160
+
161
+ - placing the toggle on only one input unless explicitly requested
162
+
163
+ Common two-input configuration with calendar toggles:
164
+
134
165
  ```html
135
166
  <igx-date-range-picker [(ngModel)]="dateRange">
136
167
  <igx-date-range-start>
168
+ <igx-picker-toggle igxPrefix>
169
+ <igx-icon>calendar_today</igx-icon>
170
+ </igx-picker-toggle>
171
+ <label igxLabel>Start Date</label>
137
172
  <input igxInput igxDateTimeEditor type="text" />
173
+ <igx-picker-clear igxSuffix>
174
+ <igx-icon>clear</igx-icon>
175
+ </igx-picker-clear>
138
176
  </igx-date-range-start>
177
+
139
178
  <igx-date-range-end>
179
+ <igx-picker-toggle igxPrefix>
180
+ <igx-icon>calendar_today</igx-icon>
181
+ </igx-picker-toggle>
182
+ <label igxLabel>End Date</label>
140
183
  <input igxInput igxDateTimeEditor type="text" />
184
+ <igx-picker-clear igxSuffix>
185
+ <igx-icon>clear</igx-icon>
186
+ </igx-picker-clear>
141
187
  </igx-date-range-end>
142
188
  </igx-date-range-picker>
143
189
  ```
@@ -303,6 +349,8 @@ export class MyFormComponent {
303
349
  - **Always check `app.config.ts` first** — add `provideAnimations()` before using Combo, Select, Date Picker, or any overlay component
304
350
  - **Import from specific entry points** — avoid the root `igniteui-angular` barrel
305
351
  - Date/Time pickers implement both `ControlValueAccessor` and `Validator` — they integrate with reactive forms natively
352
+ - For `igx-date-range-picker` with separate start and end inputs, use this structure for both inputs: `igx-picker-toggle igxPrefix`, then `input igxInput igxDateTimeEditor`, then optional `igx-picker-clear igxSuffix`.
353
+ - Do not use a plain `igx-prefix` / `igx-suffix` icon for calendar or clear actions.
306
354
 
307
355
  ## See Also
308
356
 
@@ -89,8 +89,7 @@ import { IgxComboComponent } from 'igniteui-angular';
89
89
  | Input Group | `igniteui-angular/input-group` |
90
90
  | Combo / Simple Combo | `igniteui-angular/combo` |
91
91
  | Select | `igniteui-angular/select` |
92
- | Date Picker | `igniteui-angular/date-picker` |
93
- | Date Range Picker | `igniteui-angular/date-range-picker` |
92
+ | Date Picker / Date Range Picker | `igniteui-angular/date-picker` |
94
93
  | Time Picker | `igniteui-angular/time-picker` |
95
94
  | Calendar | `igniteui-angular/calendar` |
96
95
  | Checkbox | `igniteui-angular/checkbox` |
@@ -1505,6 +1505,7 @@ declare abstract class IgxActionStripToken {
1505
1505
  abstract cdr: ChangeDetectorRef;
1506
1506
  abstract context: any;
1507
1507
  abstract menuOverlaySettings: OverlaySettings;
1508
+ abstract actionButtons: QueryList<IgxActionStripActionsToken>;
1508
1509
  abstract get hideOnRowLeave(): boolean;
1509
1510
  abstract show(context?: any): void;
1510
1511
  abstract hide(): void;
@@ -1850,8 +1850,11 @@ declare class IgxForOfDirective<T, U extends T[] = T[]> extends IgxForOfToken<T,
1850
1850
  protected _differ: IterableDiffer<T> | null;
1851
1851
  protected _trackByFn: TrackByFunction<T>;
1852
1852
  protected individualSizeCache: number[];
1853
+ /**
1854
+ * @hidden
1855
+ */
1853
1856
  /** Internal track for scroll top that is being virtualized */
1854
- protected _virtScrollPosition: number;
1857
+ _virtScrollPosition: number;
1855
1858
  /** If the next onScroll event is triggered due to internal setting of scrollTop */
1856
1859
  protected _bScrollInternal: boolean;
1857
1860
  protected _embeddedViews: Array<EmbeddedViewRef<any>>;
@@ -3731,6 +3734,7 @@ declare class IgxTooltipTargetDirective extends IgxToggleActionDirective impleme
3731
3734
  private _positionSettings;
3732
3735
  private _showTriggers;
3733
3736
  private _hideTriggers;
3737
+ private _pendingShowTrigger;
3734
3738
  private _abortController;
3735
3739
  /**
3736
3740
  * @hidden
@@ -3739,11 +3743,11 @@ declare class IgxTooltipTargetDirective extends IgxToggleActionDirective impleme
3739
3743
  /**
3740
3744
  * @hidden
3741
3745
  */
3742
- onShow(): void;
3746
+ onShow(event?: Event): void;
3743
3747
  /**
3744
3748
  * @hidden
3745
3749
  */
3746
- onHide(): void;
3750
+ onHide(event?: Event): void;
3747
3751
  /**
3748
3752
  * @hidden
3749
3753
  */
@@ -3793,6 +3797,12 @@ declare class IgxTooltipTargetDirective extends IgxToggleActionDirective impleme
3793
3797
  * It stops the running animation, and the tooltip is instantly shown.
3794
3798
  */
3795
3799
  private _stopTimeoutAndAnimation;
3800
+ /**
3801
+ * Used when a hide trigger occurs before the tooltip opens.
3802
+ * Clears the pending timeout and resets the tracked show trigger
3803
+ * so the tooltip does not open after the user has already left the target.
3804
+ */
3805
+ private _cancelPendingShow;
3796
3806
  /**
3797
3807
  * Used when a single tooltip is used for multiple targets.
3798
3808
  */
@@ -6243,6 +6243,7 @@ declare class IgxExcelStyleSearchComponent implements AfterViewInit, OnDestroy {
6243
6243
  * @hidden @internal
6244
6244
  */
6245
6245
  private rejectNonNumericalEntries;
6246
+ private matchesNumericValue;
6246
6247
  private onArrowUpKeyDown;
6247
6248
  private onArrowDownKeyDown;
6248
6249
  private onHomeKeyDown;
@@ -3597,6 +3597,7 @@ declare abstract class IgxGridBaseDirective implements GridType, OnInit, DoCheck
3597
3597
  protected buildDataView(_data: any[]): void;
3598
3598
  private _applyWidthHostBinding;
3599
3599
  protected verticalScrollHandler(event: any): void;
3600
+ protected hasMenuPinningActions(): boolean;
3600
3601
  protected horizontalScrollHandler(event: any): void;
3601
3602
  protected get renderedActualRowHeight(): number;
3602
3603
  private executeCallback;
@@ -583,7 +583,9 @@ declare class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirect
583
583
  protected actionStripComponents: QueryList<IgxActionStripToken>;
584
584
  /** @hidden @internal */
585
585
  get actionStrip(): IgxActionStripToken;
586
+ /** @hidden @internal */
586
587
  get advancedFilteringExpressionsTree(): IFilteringExpressionsTree;
588
+ /** @hidden @internal */
587
589
  set advancedFilteringExpressionsTree(value: IFilteringExpressionsTree);
588
590
  private _data;
589
591
  private h_id;