igniteui-angular 21.1.0-rc.4 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/fesm2022/igniteui-angular-grids-core.mjs +5 -3
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +6 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +1 -0
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-lite.mjs +2 -0
- package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
- package/fesm2022/igniteui-angular-simple-combo.mjs +1 -1
- package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
- package/lib/core/styles/components/grid/_grid-theme.scss +4 -1
- package/migrations/migration-collection.json +7 -0
- package/migrations/update-21_1_0_add-agent-skills/index.d.ts +3 -0
- package/migrations/update-21_1_0_add-agent-skills/index.js +46 -0
- package/package.json +4 -4
- package/skills/igniteui-angular-components/SKILL.md +71 -0
- package/skills/igniteui-angular-components/references/charts.md +447 -0
- package/skills/igniteui-angular-components/references/data-display.md +347 -0
- package/skills/igniteui-angular-components/references/directives.md +149 -0
- package/skills/igniteui-angular-components/references/feedback.md +141 -0
- package/skills/igniteui-angular-components/references/form-controls.md +298 -0
- package/skills/igniteui-angular-components/references/layout-manager.md +415 -0
- package/skills/igniteui-angular-components/references/layout.md +216 -0
- package/skills/igniteui-angular-components/references/setup.md +157 -0
- package/skills/igniteui-angular-grids/SKILL.md +110 -0
- package/skills/igniteui-angular-grids/references/data-operations.md +436 -0
- package/skills/igniteui-angular-grids/references/editing.md +480 -0
- package/skills/igniteui-angular-grids/references/features.md +218 -0
- package/skills/igniteui-angular-grids/references/paging-remote.md +388 -0
- package/skills/igniteui-angular-grids/references/state.md +448 -0
- package/skills/igniteui-angular-grids/references/structure.md +290 -0
- package/skills/igniteui-angular-grids/references/types.md +428 -0
- package/skills/igniteui-angular-theming/SKILL.md +530 -0
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- package/types/igniteui-angular-grids-lite.d.ts +2 -0
|
@@ -24,6 +24,8 @@ class IgxGridLite extends IgcGridLite {
|
|
|
24
24
|
* @fires sorted - Emitted when a sort operation initiated through the UI has completed.
|
|
25
25
|
* @fires filtering - Emitted when filtering is initiated through the UI.
|
|
26
26
|
* @fires filtered - Emitted when a filter operation initiated through the UI has completed.
|
|
27
|
+
*
|
|
28
|
+
* @developerPreview 21.1.0
|
|
27
29
|
*/
|
|
28
30
|
class IgxGridLiteComponent {
|
|
29
31
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igniteui-angular-grids-lite.mjs","sources":["../../../projects/igniteui-angular/grids/lite/src/grid-lite.component.ts","../../../projects/igniteui-angular/grids/lite/src/grid-lite-column.component.ts","../../../projects/igniteui-angular/grids/lite/src/grid-lite-column.component.html","../../../projects/igniteui-angular/grids/lite/src/igniteui-angular-grids-lite.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, inject, input, model, OnInit } from '@angular/core';\nimport { DataPipelineConfiguration, FilterExpression, GridLiteSortingOptions, IgcGridLite, Keys, SortingExpression } from 'igniteui-grid-lite';\nimport { IgxGridLiteColumnConfiguration } from './grid-lite-column.component';\n\nexport type IgxGridLiteSortingOptions = GridLiteSortingOptions;\nexport type IgxGridLiteDataPipelineConfiguration<T extends object = any> = DataPipelineConfiguration<T>;\nexport type IgxGridLiteSortingExpression<T extends object = any> = SortingExpression<T>;\nexport type IgxGridLiteFilteringExpression<T extends object = any> = FilterExpression<T>;\n\n\nclass IgxGridLite<T extends object = any> extends IgcGridLite<T> {\n public static override get tagName() {\n return 'igx-grid-lite' as any;\n }\n public static override register(): void {\n // still call super for child components:\n super.register();\n\n if (!customElements.get(IgxGridLite.tagName)) {\n customElements.define(IgxGridLite.tagName, IgxGridLite);\n }\n }\n}\n\n/**\n * The Grid Lite is a web component for displaying data in a tabular format quick and easy.\n *\n * Out of the box it provides row virtualization, sort and filter operations (client and server side),\n * the ability to template cells and headers and column hiding.\n *\n * @fires sorting - Emitted when sorting is initiated through the UI.\n * @fires sorted - Emitted when a sort operation initiated through the UI has completed.\n * @fires filtering - Emitted when filtering is initiated through the UI.\n * @fires filtered - Emitted when a filter operation initiated through the UI has completed.\n */\n@Component({\n selector: 'igx-grid-lite',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n host: {\n '[data]': \"data()\",\n '[autoGenerate]': \"autoGenerate()\",\n '[sortingOptions]': \"sortingOptions()\",\n '[dataPipelineConfiguration]': \"dataPipelineConfiguration()\",\n '(sorted)': \"onSorted($any($event))\",\n '(filtered)': \"onFiltered($any($event))\",\n 'adopt-root-styles': '',\n },\n template: `<ng-content></ng-content>`\n})\n\nexport class IgxGridLiteComponent<T extends object = any> implements OnInit {\n\n //#region Internal state\n\n private readonly gridRef = inject(ElementRef) as ElementRef<IgxGridLite<T>>;\n\n //#endregion\n\n //#region Inputs\n\n /** The data source for the grid. */\n public readonly data = input<T[]>([]);\n\n /**\n * Whether the grid will try to \"resolve\" its column configuration based on the passed\n * data source.\n *\n * @remarks\n * This property is ignored if any existing column configuration already exists in the grid.\n */\n public readonly autoGenerate = input(false, { transform: booleanAttribute });;\n\n /** Sort configuration property for the grid. */\n public readonly sortingOptions = input<IgxGridLiteSortingOptions>({\n mode: 'multiple'\n });\n\n /**\n * Configuration object which controls remote data operations for the grid.\n */\n public readonly dataPipelineConfiguration = input<IgxGridLiteDataPipelineConfiguration>();\n\n /**\n * The sort state for the grid.\n *\n * @remarks\n * This is a two-way bindable property. It will be updated when sort operations\n * complete through the UI.\n */\n public readonly sortingExpressions = model<IgxGridLiteSortingExpression<T>[]>([]);\n\n /**\n * The filter state for the grid.\n *\n * @remarks\n * This is a two-way bindable property. It will be updated when filter operations\n * complete through the UI.\n */\n public readonly filteringExpressions = model<IgxGridLiteFilteringExpression<T>[]>([]);\n\n //#endregion\n\n //#region Getters / Setters\n\n /**\n * Get the column configuration of the grid.\n */\n public get columns(): IgxGridLiteColumnConfiguration<T>[] {\n return this.gridRef.nativeElement.columns ?? [];\n }\n\n /**\n * Returns the collection of rendered row elements in the grid.\n *\n * @remarks\n * Since the grid has virtualization, this property returns only the currently rendered\n * chunk of elements in the DOM.\n */\n public get rows() {\n return this.gridRef.nativeElement.rows ?? [];\n }\n\n /**\n * Returns the state of the data source after sort/filter operations\n * have been applied.\n */\n public get dataView(): ReadonlyArray<T> {\n return this.gridRef.nativeElement.dataView ?? [];\n }\n\n //#endregion\n\n constructor() {\n // D.P. Temporary guarded assign instead of binding to prevent WC issue with setter logic re-doing sort/filter\n effect(() => {\n const grid = this.gridRef.nativeElement\n if (!grid) return;\n const newValue = this.filteringExpressions();\n if (new Set(newValue).symmetricDifference(new Set(grid.filterExpressions)).size !== 0) {\n grid.clearFilter();\n grid.filterExpressions = newValue;\n }\n });\n effect(() => {\n const grid = this.gridRef.nativeElement\n if (!grid) return;\n const newValue = this.sortingExpressions();\n if (new Set(newValue).symmetricDifference(new Set(grid.sortingExpressions)).size !== 0) {\n grid.clearSort();\n grid.sortingExpressions = newValue;\n }\n });\n }\n\n /**\n * @hidden @internal\n */\n public ngOnInit(): void {\n IgxGridLite.register();\n }\n\n //#region Public API\n\n /**\n * Performs a filter operation in the grid based on the passed expression(s).\n */\n public filter(config: IgxGridLiteFilteringExpression | IgxGridLiteFilteringExpression[]): void {\n this.gridRef.nativeElement.filter(config as FilterExpression<T> | FilterExpression<T>[]);\n }\n\n /**\n * Performs a sort operation in the grid based on the passed expression(s).\n */\n public sort(expressions: IgxGridLiteSortingExpression<T> | IgxGridLiteSortingExpression<T>[]) {\n this.gridRef.nativeElement.sort(expressions);\n }\n\n /**\n * Resets the current sort state of the control.\n */\n public clearSort(key?: Keys<T>): void {\n this.gridRef.nativeElement.clearSort(key);\n }\n\n /**\n * Resets the current filter state of the control.\n */\n public clearFilter(key?: Keys<T>): void {\n this.gridRef.nativeElement.clearFilter(key);\n }\n\n /**\n * Navigates to a position in the grid based on provided row index and column field.\n * @param row The row index to navigate to\n * @param column The column field to navigate to, if any\n * @param activate Optionally also activate the navigated cell\n */\n public async navigateTo(row: number, column?: Keys<T>, activate = false) {\n await this.gridRef.nativeElement.navigateTo(row, column, activate);\n }\n\n /**\n * Returns a {@link IgxGridLiteColumnConfiguration} for a given column.\n */\n public getColumn(id: Keys<T> | number): IgxGridLiteColumnConfiguration<T> | undefined {\n return this.gridRef.nativeElement.getColumn(id);\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected onSorted(_event: CustomEvent<SortingExpression<T>>): void {\n this.sortingExpressions.set(this.gridRef.nativeElement.sortingExpressions ?? []);\n }\n\n protected onFiltered(_event: CustomEvent<FilterExpression<T>>): void {\n this.filteringExpressions.set(this.gridRef.nativeElement.filterExpressions ?? []);\n }\n\n //#endregion\n\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [IgxGridLite.tagName]: IgxGridLite;\n }\n\n interface HTMLElementEventMap {\n 'sorting': CustomEvent<IgxGridLiteSortingExpression<any>>;\n 'sorted': CustomEvent<IgxGridLiteSortingExpression<any>>;\n 'filtering': CustomEvent<IgxGridLiteFilteringExpression<any>>;\n 'filtered': CustomEvent<IgxGridLiteFilteringExpression<any>>;\n }\n}\n\n// see https://github.com/ng-packagr/ng-packagr/issues/3233\nexport {};\n","import { booleanAttribute, ChangeDetectionStrategy, Component, contentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, effect, EmbeddedViewRef, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ColumnConfiguration, ColumnSortConfiguration, IgcCellContext, IgcHeaderContext, Keys, DataType } from 'igniteui-grid-lite';\n\n/** Configuration object for grid columns. */\nexport type IgxGridLiteColumnConfiguration<T extends object = any> = ColumnConfiguration<T>;\n\nexport type IgxGridLiteColumnSortConfiguration<T extends object = any> = ColumnSortConfiguration<T>;\n\n\n/**\n * Directive providing type information for header template contexts.\n * Use this directive on ng-template elements that render header templates.\n *\n * @example\n * ```html\n * <ng-template igxGridLiteHeader let-column>\n * <div>{{column.header}}</div>\n * </ng-template>\n * ```\n */\n@Directive({ selector: '[igxGridLiteHeader]' })\nexport class IgxGridLiteHeaderTemplateDirective<T extends object = any> {\n public template = inject<TemplateRef<IgxGridLiteHeaderTemplateContext<T>>>(TemplateRef);\n\n public static ngTemplateContextGuard<T extends object = any>(_: IgxGridLiteHeaderTemplateDirective<T>, ctx: any): ctx is IgxGridLiteHeaderTemplateContext<T> {\n return true;\n }\n}\n\n/**\n * Directive providing type information for cell template contexts.\n * Use this directive on ng-template elements that render cell templates.\n *\n * @example\n * ```html\n * <ng-template igxGridLiteCell let-value let-column=\"column\" let-rowIndex=\"rowIndex\" let-data=\"data\">\n * <div>{{value}}</div>\n * </ng-template>\n * ```\n */\n@Directive({ selector: '[igxGridLiteCell]' })\nexport class IgxGridLiteCellTemplateDirective<T extends object = any> {\n public template = inject<TemplateRef<IgxGridLiteCellTemplateContext<T>>>(TemplateRef);\n\n public static ngTemplateContextGuard<T extends object = any>(_: IgxGridLiteCellTemplateDirective<T>, ctx: unknown): ctx is IgxGridLiteCellTemplateContext<T> {\n return true;\n }\n}\n\n@Component({\n selector: 'igx-grid-lite-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './grid-lite-column.component.html'\n})\nexport class IgxGridLiteColumnComponent<T extends object = any> {\n\n //#region Internal state\n\n private readonly _view = inject(ViewContainerRef);\n\n /** Reference to the embedded view for the header template and its template function. */\n private headerViewRef?: EmbeddedViewRef<IgxGridLiteHeaderTemplateContext<T>>;\n protected headerTemplateFunc?: (ctx: IgcHeaderContext<T>) => Node[];\n\n /** Reference to the embedded view for the cell template and its template function. */\n private cellViewRefs? = new Map<T, EmbeddedViewRef<IgxGridLiteCellTemplateContext<T>>>();\n protected cellTemplateFunc?: (ctx: IgcCellContext<T>) => Node[];\n\n /** Template directives used for inline templating */\n private readonly headerTemplateDirective = contentChild(IgxGridLiteHeaderTemplateDirective<T>);\n private readonly cellTemplateDirective = contentChild(IgxGridLiteCellTemplateDirective<T>);\n\n //#endregion\n\n //#region Inputs\n\n /** The field from the data for this column. */\n public readonly field = input<Keys<T>>();\n\n /** The data type of the column's values. */\n public readonly dataType = input<DataType>('string');\n\n /** The header text of the column. */\n public readonly header = input<string>();\n\n /** The width of the column. */\n public readonly width = input<string>();\n\n /** Indicates whether the column is hidden. */\n public readonly hidden = input(false, { transform: booleanAttribute });\n\n /** Indicates whether the column is resizable. */\n public readonly resizable = input(false, { transform: booleanAttribute });\n\n /** Indicates whether the column is sortable. */\n public readonly sortable = input(false, { transform: booleanAttribute });\n\n /** Whether sort operations will be case sensitive. */\n public readonly sortingCaseSensitive = input(false, { transform: booleanAttribute });\n\n /** Sort configuration for the column (e.g., custom comparer). */\n public readonly sortConfiguration = input<IgxGridLiteColumnSortConfiguration<T>>();\n\n /** Indicates whether the column is filterable. */\n public readonly filterable = input(false, { transform: booleanAttribute });\n\n /** Whether filter operations will be case sensitive. */\n public readonly filteringCaseSensitive = input(false, { transform: booleanAttribute });\n\n /** Custom header template for the column. */\n public readonly headerTemplate = input<TemplateRef<IgxGridLiteHeaderTemplateContext<T>>>();\n\n /** Custom cell template for the column. */\n public readonly cellTemplate = input<TemplateRef<IgxGridLiteCellTemplateContext<T>>>();\n\n //#endregion\n\n constructor() {\n effect((onCleanup) => {\n const directive = this.headerTemplateDirective();\n const template = this.headerTemplate() ?? directive?.template;\n if (template) {\n this.headerTemplateFunc = (ctx: IgcHeaderContext<T>) => {\n if (!this.headerViewRef) {\n const angularContext = {\n ...ctx,\n $implicit: ctx.column\n }\n this.headerViewRef = this._view.createEmbeddedView(template, angularContext);\n }\n return this.headerViewRef.rootNodes;\n };\n }\n onCleanup(() => {\n if (this.headerViewRef) {\n this.headerViewRef.destroy();\n this.headerViewRef = undefined;\n }\n })\n });\n\n effect((onCleanup) => {\n const directive = this.cellTemplateDirective();\n const template = this.cellTemplate() ?? directive?.template;\n if (template) {\n this.cellTemplateFunc = (ctx: IgcCellContext<T>) => {\n const oldViewRef = this.cellViewRefs.get(ctx.row.data);\n const angularContext = {\n ...ctx,\n $implicit: ctx.value,\n } as IgxGridLiteCellTemplateContext<T>;\n if (!oldViewRef) {\n const newViewRef = this._view.createEmbeddedView(template, angularContext);\n this.cellViewRefs.set(ctx.row.data, newViewRef);\n return newViewRef.rootNodes;\n }\n Object.assign(oldViewRef.context, angularContext);\n return oldViewRef.rootNodes;\n };\n }\n onCleanup(() => {\n this.cellViewRefs.forEach((viewRef) => {\n viewRef.destroy();\n });\n this.cellViewRefs?.clear();\n });\n });\n }\n}\n\n/**\n * Context provided to the header template.\n */\nexport type IgxGridLiteHeaderTemplateContext<T extends object = any> = IgcHeaderContext<T> & {\n /**\n * The current configuration for the column.\n */\n $implicit: IgcHeaderContext<T>['column'];\n}\n\n/**\n * Context provided to the header template.\n */\nexport type IgxGridLiteCellTemplateContext<T extends object = any> = IgcCellContext<T> & {\n /**\n * The value from the data source for this cell.\n */\n $implicit: IgcCellContext<T>['value'];\n};\n","<igc-grid-lite-column\n [field]=\"field()\"\n [dataType]=\"dataType()\"\n [header]=\"header()\"\n [width]=\"width()\"\n [hidden]=\"hidden()\"\n [resizable]=\"resizable()\"\n [sortable]=\"sortable()\"\n [sortingCaseSensitive]=\"sortingCaseSensitive()\"\n [sortConfiguration]=\"sortConfiguration()\"\n [filterable]=\"filterable()\"\n [filteringCaseSensitive]=\"filteringCaseSensitive()\"\n [headerTemplate]=\"headerTemplateFunc\"\n [cellTemplate]=\"cellTemplateFunc\"\n></igc-grid-lite-column>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igniteui-angular-grids-lite.mjs","sources":["../../../projects/igniteui-angular/grids/lite/src/grid-lite.component.ts","../../../projects/igniteui-angular/grids/lite/src/grid-lite-column.component.ts","../../../projects/igniteui-angular/grids/lite/src/grid-lite-column.component.html","../../../projects/igniteui-angular/grids/lite/src/igniteui-angular-grids-lite.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, inject, input, model, OnInit } from '@angular/core';\nimport { DataPipelineConfiguration, FilterExpression, GridLiteSortingOptions, IgcGridLite, Keys, SortingExpression } from 'igniteui-grid-lite';\nimport { IgxGridLiteColumnConfiguration } from './grid-lite-column.component';\n\nexport type IgxGridLiteSortingOptions = GridLiteSortingOptions;\nexport type IgxGridLiteDataPipelineConfiguration<T extends object = any> = DataPipelineConfiguration<T>;\nexport type IgxGridLiteSortingExpression<T extends object = any> = SortingExpression<T>;\nexport type IgxGridLiteFilteringExpression<T extends object = any> = FilterExpression<T>;\n\n\nclass IgxGridLite<T extends object = any> extends IgcGridLite<T> {\n public static override get tagName() {\n return 'igx-grid-lite' as any;\n }\n public static override register(): void {\n // still call super for child components:\n super.register();\n\n if (!customElements.get(IgxGridLite.tagName)) {\n customElements.define(IgxGridLite.tagName, IgxGridLite);\n }\n }\n}\n\n/**\n * The Grid Lite is a web component for displaying data in a tabular format quick and easy.\n *\n * Out of the box it provides row virtualization, sort and filter operations (client and server side),\n * the ability to template cells and headers and column hiding.\n *\n * @fires sorting - Emitted when sorting is initiated through the UI.\n * @fires sorted - Emitted when a sort operation initiated through the UI has completed.\n * @fires filtering - Emitted when filtering is initiated through the UI.\n * @fires filtered - Emitted when a filter operation initiated through the UI has completed.\n *\n * @developerPreview 21.1.0\n */\n@Component({\n selector: 'igx-grid-lite',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n host: {\n '[data]': \"data()\",\n '[autoGenerate]': \"autoGenerate()\",\n '[sortingOptions]': \"sortingOptions()\",\n '[dataPipelineConfiguration]': \"dataPipelineConfiguration()\",\n '(sorted)': \"onSorted($any($event))\",\n '(filtered)': \"onFiltered($any($event))\",\n 'adopt-root-styles': '',\n },\n template: `<ng-content></ng-content>`\n})\n\nexport class IgxGridLiteComponent<T extends object = any> implements OnInit {\n\n //#region Internal state\n\n private readonly gridRef = inject(ElementRef) as ElementRef<IgxGridLite<T>>;\n\n //#endregion\n\n //#region Inputs\n\n /** The data source for the grid. */\n public readonly data = input<T[]>([]);\n\n /**\n * Whether the grid will try to \"resolve\" its column configuration based on the passed\n * data source.\n *\n * @remarks\n * This property is ignored if any existing column configuration already exists in the grid.\n */\n public readonly autoGenerate = input(false, { transform: booleanAttribute });;\n\n /** Sort configuration property for the grid. */\n public readonly sortingOptions = input<IgxGridLiteSortingOptions>({\n mode: 'multiple'\n });\n\n /**\n * Configuration object which controls remote data operations for the grid.\n */\n public readonly dataPipelineConfiguration = input<IgxGridLiteDataPipelineConfiguration>();\n\n /**\n * The sort state for the grid.\n *\n * @remarks\n * This is a two-way bindable property. It will be updated when sort operations\n * complete through the UI.\n */\n public readonly sortingExpressions = model<IgxGridLiteSortingExpression<T>[]>([]);\n\n /**\n * The filter state for the grid.\n *\n * @remarks\n * This is a two-way bindable property. It will be updated when filter operations\n * complete through the UI.\n */\n public readonly filteringExpressions = model<IgxGridLiteFilteringExpression<T>[]>([]);\n\n //#endregion\n\n //#region Getters / Setters\n\n /**\n * Get the column configuration of the grid.\n */\n public get columns(): IgxGridLiteColumnConfiguration<T>[] {\n return this.gridRef.nativeElement.columns ?? [];\n }\n\n /**\n * Returns the collection of rendered row elements in the grid.\n *\n * @remarks\n * Since the grid has virtualization, this property returns only the currently rendered\n * chunk of elements in the DOM.\n */\n public get rows() {\n return this.gridRef.nativeElement.rows ?? [];\n }\n\n /**\n * Returns the state of the data source after sort/filter operations\n * have been applied.\n */\n public get dataView(): ReadonlyArray<T> {\n return this.gridRef.nativeElement.dataView ?? [];\n }\n\n //#endregion\n\n constructor() {\n // D.P. Temporary guarded assign instead of binding to prevent WC issue with setter logic re-doing sort/filter\n effect(() => {\n const grid = this.gridRef.nativeElement\n if (!grid) return;\n const newValue = this.filteringExpressions();\n if (new Set(newValue).symmetricDifference(new Set(grid.filterExpressions)).size !== 0) {\n grid.clearFilter();\n grid.filterExpressions = newValue;\n }\n });\n effect(() => {\n const grid = this.gridRef.nativeElement\n if (!grid) return;\n const newValue = this.sortingExpressions();\n if (new Set(newValue).symmetricDifference(new Set(grid.sortingExpressions)).size !== 0) {\n grid.clearSort();\n grid.sortingExpressions = newValue;\n }\n });\n }\n\n /**\n * @hidden @internal\n */\n public ngOnInit(): void {\n IgxGridLite.register();\n }\n\n //#region Public API\n\n /**\n * Performs a filter operation in the grid based on the passed expression(s).\n */\n public filter(config: IgxGridLiteFilteringExpression | IgxGridLiteFilteringExpression[]): void {\n this.gridRef.nativeElement.filter(config as FilterExpression<T> | FilterExpression<T>[]);\n }\n\n /**\n * Performs a sort operation in the grid based on the passed expression(s).\n */\n public sort(expressions: IgxGridLiteSortingExpression<T> | IgxGridLiteSortingExpression<T>[]) {\n this.gridRef.nativeElement.sort(expressions);\n }\n\n /**\n * Resets the current sort state of the control.\n */\n public clearSort(key?: Keys<T>): void {\n this.gridRef.nativeElement.clearSort(key);\n }\n\n /**\n * Resets the current filter state of the control.\n */\n public clearFilter(key?: Keys<T>): void {\n this.gridRef.nativeElement.clearFilter(key);\n }\n\n /**\n * Navigates to a position in the grid based on provided row index and column field.\n * @param row The row index to navigate to\n * @param column The column field to navigate to, if any\n * @param activate Optionally also activate the navigated cell\n */\n public async navigateTo(row: number, column?: Keys<T>, activate = false) {\n await this.gridRef.nativeElement.navigateTo(row, column, activate);\n }\n\n /**\n * Returns a {@link IgxGridLiteColumnConfiguration} for a given column.\n */\n public getColumn(id: Keys<T> | number): IgxGridLiteColumnConfiguration<T> | undefined {\n return this.gridRef.nativeElement.getColumn(id);\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected onSorted(_event: CustomEvent<SortingExpression<T>>): void {\n this.sortingExpressions.set(this.gridRef.nativeElement.sortingExpressions ?? []);\n }\n\n protected onFiltered(_event: CustomEvent<FilterExpression<T>>): void {\n this.filteringExpressions.set(this.gridRef.nativeElement.filterExpressions ?? []);\n }\n\n //#endregion\n\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [IgxGridLite.tagName]: IgxGridLite;\n }\n\n interface HTMLElementEventMap {\n 'sorting': CustomEvent<IgxGridLiteSortingExpression<any>>;\n 'sorted': CustomEvent<IgxGridLiteSortingExpression<any>>;\n 'filtering': CustomEvent<IgxGridLiteFilteringExpression<any>>;\n 'filtered': CustomEvent<IgxGridLiteFilteringExpression<any>>;\n }\n}\n\n// see https://github.com/ng-packagr/ng-packagr/issues/3233\nexport {};\n","import { booleanAttribute, ChangeDetectionStrategy, Component, contentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, effect, EmbeddedViewRef, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ColumnConfiguration, ColumnSortConfiguration, IgcCellContext, IgcHeaderContext, Keys, DataType } from 'igniteui-grid-lite';\n\n/** Configuration object for grid columns. */\nexport type IgxGridLiteColumnConfiguration<T extends object = any> = ColumnConfiguration<T>;\n\nexport type IgxGridLiteColumnSortConfiguration<T extends object = any> = ColumnSortConfiguration<T>;\n\n\n/**\n * Directive providing type information for header template contexts.\n * Use this directive on ng-template elements that render header templates.\n *\n * @example\n * ```html\n * <ng-template igxGridLiteHeader let-column>\n * <div>{{column.header}}</div>\n * </ng-template>\n * ```\n */\n@Directive({ selector: '[igxGridLiteHeader]' })\nexport class IgxGridLiteHeaderTemplateDirective<T extends object = any> {\n public template = inject<TemplateRef<IgxGridLiteHeaderTemplateContext<T>>>(TemplateRef);\n\n public static ngTemplateContextGuard<T extends object = any>(_: IgxGridLiteHeaderTemplateDirective<T>, ctx: any): ctx is IgxGridLiteHeaderTemplateContext<T> {\n return true;\n }\n}\n\n/**\n * Directive providing type information for cell template contexts.\n * Use this directive on ng-template elements that render cell templates.\n *\n * @example\n * ```html\n * <ng-template igxGridLiteCell let-value let-column=\"column\" let-rowIndex=\"rowIndex\" let-data=\"data\">\n * <div>{{value}}</div>\n * </ng-template>\n * ```\n */\n@Directive({ selector: '[igxGridLiteCell]' })\nexport class IgxGridLiteCellTemplateDirective<T extends object = any> {\n public template = inject<TemplateRef<IgxGridLiteCellTemplateContext<T>>>(TemplateRef);\n\n public static ngTemplateContextGuard<T extends object = any>(_: IgxGridLiteCellTemplateDirective<T>, ctx: unknown): ctx is IgxGridLiteCellTemplateContext<T> {\n return true;\n }\n}\n\n@Component({\n selector: 'igx-grid-lite-column',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './grid-lite-column.component.html'\n})\nexport class IgxGridLiteColumnComponent<T extends object = any> {\n\n //#region Internal state\n\n private readonly _view = inject(ViewContainerRef);\n\n /** Reference to the embedded view for the header template and its template function. */\n private headerViewRef?: EmbeddedViewRef<IgxGridLiteHeaderTemplateContext<T>>;\n protected headerTemplateFunc?: (ctx: IgcHeaderContext<T>) => Node[];\n\n /** Reference to the embedded view for the cell template and its template function. */\n private cellViewRefs? = new Map<T, EmbeddedViewRef<IgxGridLiteCellTemplateContext<T>>>();\n protected cellTemplateFunc?: (ctx: IgcCellContext<T>) => Node[];\n\n /** Template directives used for inline templating */\n private readonly headerTemplateDirective = contentChild(IgxGridLiteHeaderTemplateDirective<T>);\n private readonly cellTemplateDirective = contentChild(IgxGridLiteCellTemplateDirective<T>);\n\n //#endregion\n\n //#region Inputs\n\n /** The field from the data for this column. */\n public readonly field = input<Keys<T>>();\n\n /** The data type of the column's values. */\n public readonly dataType = input<DataType>('string');\n\n /** The header text of the column. */\n public readonly header = input<string>();\n\n /** The width of the column. */\n public readonly width = input<string>();\n\n /** Indicates whether the column is hidden. */\n public readonly hidden = input(false, { transform: booleanAttribute });\n\n /** Indicates whether the column is resizable. */\n public readonly resizable = input(false, { transform: booleanAttribute });\n\n /** Indicates whether the column is sortable. */\n public readonly sortable = input(false, { transform: booleanAttribute });\n\n /** Whether sort operations will be case sensitive. */\n public readonly sortingCaseSensitive = input(false, { transform: booleanAttribute });\n\n /** Sort configuration for the column (e.g., custom comparer). */\n public readonly sortConfiguration = input<IgxGridLiteColumnSortConfiguration<T>>();\n\n /** Indicates whether the column is filterable. */\n public readonly filterable = input(false, { transform: booleanAttribute });\n\n /** Whether filter operations will be case sensitive. */\n public readonly filteringCaseSensitive = input(false, { transform: booleanAttribute });\n\n /** Custom header template for the column. */\n public readonly headerTemplate = input<TemplateRef<IgxGridLiteHeaderTemplateContext<T>>>();\n\n /** Custom cell template for the column. */\n public readonly cellTemplate = input<TemplateRef<IgxGridLiteCellTemplateContext<T>>>();\n\n //#endregion\n\n constructor() {\n effect((onCleanup) => {\n const directive = this.headerTemplateDirective();\n const template = this.headerTemplate() ?? directive?.template;\n if (template) {\n this.headerTemplateFunc = (ctx: IgcHeaderContext<T>) => {\n if (!this.headerViewRef) {\n const angularContext = {\n ...ctx,\n $implicit: ctx.column\n }\n this.headerViewRef = this._view.createEmbeddedView(template, angularContext);\n }\n return this.headerViewRef.rootNodes;\n };\n }\n onCleanup(() => {\n if (this.headerViewRef) {\n this.headerViewRef.destroy();\n this.headerViewRef = undefined;\n }\n })\n });\n\n effect((onCleanup) => {\n const directive = this.cellTemplateDirective();\n const template = this.cellTemplate() ?? directive?.template;\n if (template) {\n this.cellTemplateFunc = (ctx: IgcCellContext<T>) => {\n const oldViewRef = this.cellViewRefs.get(ctx.row.data);\n const angularContext = {\n ...ctx,\n $implicit: ctx.value,\n } as IgxGridLiteCellTemplateContext<T>;\n if (!oldViewRef) {\n const newViewRef = this._view.createEmbeddedView(template, angularContext);\n this.cellViewRefs.set(ctx.row.data, newViewRef);\n return newViewRef.rootNodes;\n }\n Object.assign(oldViewRef.context, angularContext);\n return oldViewRef.rootNodes;\n };\n }\n onCleanup(() => {\n this.cellViewRefs.forEach((viewRef) => {\n viewRef.destroy();\n });\n this.cellViewRefs?.clear();\n });\n });\n }\n}\n\n/**\n * Context provided to the header template.\n */\nexport type IgxGridLiteHeaderTemplateContext<T extends object = any> = IgcHeaderContext<T> & {\n /**\n * The current configuration for the column.\n */\n $implicit: IgcHeaderContext<T>['column'];\n}\n\n/**\n * Context provided to the header template.\n */\nexport type IgxGridLiteCellTemplateContext<T extends object = any> = IgcCellContext<T> & {\n /**\n * The value from the data source for this cell.\n */\n $implicit: IgcCellContext<T>['value'];\n};\n","<igc-grid-lite-column\n [field]=\"field()\"\n [dataType]=\"dataType()\"\n [header]=\"header()\"\n [width]=\"width()\"\n [hidden]=\"hidden()\"\n [resizable]=\"resizable()\"\n [sortable]=\"sortable()\"\n [sortingCaseSensitive]=\"sortingCaseSensitive()\"\n [sortConfiguration]=\"sortConfiguration()\"\n [filterable]=\"filterable()\"\n [filteringCaseSensitive]=\"filteringCaseSensitive()\"\n [headerTemplate]=\"headerTemplateFunc\"\n [cellTemplate]=\"cellTemplateFunc\"\n></igc-grid-lite-column>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -144,7 +144,7 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
|
144
144
|
this.cdr.markForCheck();
|
|
145
145
|
this._displayValue = this.createDisplayText(super.selection, oldSelection);
|
|
146
146
|
this._value = this.valueKey ? super.selection.map(item => item[this.valueKey]) : super.selection;
|
|
147
|
-
this.filterValue = this._displayValue?.toString() || '';
|
|
147
|
+
this.searchValue = this.filterValue = this._displayValue?.toString() || '';
|
|
148
148
|
}
|
|
149
149
|
/** @hidden @internal */
|
|
150
150
|
ngAfterViewInit() {
|
|
@@ -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.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 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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"}
|
|
@@ -272,6 +272,13 @@
|
|
|
272
272
|
"factory": "./update-21_1_0_css-migration",
|
|
273
273
|
"recommended": true,
|
|
274
274
|
"optional": true
|
|
275
|
+
},
|
|
276
|
+
"migration-54": {
|
|
277
|
+
"version": "21.1.0",
|
|
278
|
+
"description": "Add AI Agent skills for Ignite UI for Angular components and theming to the project.",
|
|
279
|
+
"factory": "./update-21_1_0_add-agent-skills",
|
|
280
|
+
"recommended": true,
|
|
281
|
+
"optional": true
|
|
275
282
|
}
|
|
276
283
|
}
|
|
277
284
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const core_1 = require("@angular-devkit/core");
|
|
13
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
14
|
+
const tsUtils_1 = require("../common/tsUtils");
|
|
15
|
+
exports.default = () => (host, context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
let skillsPath = (0, core_1.normalize)(`.claude/skills`);
|
|
17
|
+
const agentsPath = (0, core_1.normalize)(`.agents/skills`);
|
|
18
|
+
const cursorSkills = (0, core_1.normalize)(`.cursor/skills`);
|
|
19
|
+
const githubSkills = (0, core_1.normalize)(`.github/skills`);
|
|
20
|
+
if (host.getDir(agentsPath).subdirs.length)
|
|
21
|
+
skillsPath = agentsPath;
|
|
22
|
+
if (host.getDir(cursorSkills).subdirs.length)
|
|
23
|
+
skillsPath = cursorSkills;
|
|
24
|
+
if (host.getDir(githubSkills).subdirs.length)
|
|
25
|
+
skillsPath = githubSkills;
|
|
26
|
+
let from;
|
|
27
|
+
const packagePath = `/node_modules/${tsUtils_1.IG_PACKAGE_NAME}`;
|
|
28
|
+
const licensedPackagePath = `/node_modules/${tsUtils_1.IG_LICENSED_PACKAGE_NAME}`;
|
|
29
|
+
// exists works on files only, so check package.json
|
|
30
|
+
if (host.exists(`${packagePath}/package.json`))
|
|
31
|
+
from = (0, core_1.normalize)(`${packagePath}/skills`);
|
|
32
|
+
if (host.exists(`${licensedPackagePath}/package.json`))
|
|
33
|
+
from = (0, core_1.normalize)(`${licensedPackagePath}/skills`);
|
|
34
|
+
if (from) {
|
|
35
|
+
const skillsSource = () => {
|
|
36
|
+
const tree = schematics_1.Tree.empty();
|
|
37
|
+
host.getDir(from).visit((filePath) => {
|
|
38
|
+
tree.create((0, core_1.relative)(from, filePath), host.read(filePath));
|
|
39
|
+
});
|
|
40
|
+
return tree;
|
|
41
|
+
};
|
|
42
|
+
context.logger.info(`Added Ignite UI for Angular agent skill files to ${skillsPath}.`);
|
|
43
|
+
context.logger.info(`If your agent doesn't load from that path by default, please refer to its documentation and move the skill files as needed.`);
|
|
44
|
+
return (0, schematics_1.mergeWith)((0, schematics_1.apply)(skillsSource, [(0, schematics_1.move)(skillsPath)]), schematics_1.MergeStrategy.Overwrite);
|
|
45
|
+
}
|
|
46
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "igniteui-angular",
|
|
3
|
-
"version": "21.1.0
|
|
3
|
+
"version": "21.1.0",
|
|
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",
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
"@angular/forms": "21",
|
|
87
87
|
"hammerjs": "^2.0.8",
|
|
88
88
|
"@types/hammerjs": "^2.0.46",
|
|
89
|
-
"igniteui-webcomponents": "^
|
|
90
|
-
"igniteui-grid-lite": "~0.
|
|
89
|
+
"igniteui-webcomponents": "^7.0.0",
|
|
90
|
+
"igniteui-grid-lite": "~0.6.0"
|
|
91
91
|
},
|
|
92
92
|
"peerDependenciesMeta": {
|
|
93
93
|
"hammerjs": {
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
"igxDevDependencies": {
|
|
107
|
-
"@igniteui/angular-schematics": "~21.1.1490
|
|
107
|
+
"@igniteui/angular-schematics": "~21.1.1490"
|
|
108
108
|
},
|
|
109
109
|
"ng-update": {
|
|
110
110
|
"migrations": "./migrations/migration-collection.json",
|