@progress/kendo-angular-dropdowns 21.4.1 → 22.0.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/common/localization/messages.d.ts +1 -1
  2. package/dropdowntrees/checked-state/base-check.directive.d.ts +1 -1
  3. package/fesm2022/progress-kendo-angular-dropdowns.mjs +173 -173
  4. package/package.json +14 -22
  5. package/schematics/ngAdd/index.js +2 -2
  6. package/esm2022/autocomplete/autocomplete.component.mjs +0 -1687
  7. package/esm2022/autocomplete/autocomplete.module.mjs +0 -70
  8. package/esm2022/comboboxes/combobox-column/column-cell-template.directive.mjs +0 -42
  9. package/esm2022/comboboxes/combobox-column/column-header-template.directive.mjs +0 -40
  10. package/esm2022/comboboxes/combobox-column/combobox-column.component.mjs +0 -116
  11. package/esm2022/comboboxes/combobox-column/util.mjs +0 -60
  12. package/esm2022/comboboxes/combobox.component.mjs +0 -2149
  13. package/esm2022/comboboxes/combobox.module.mjs +0 -77
  14. package/esm2022/comboboxes/multicolumncombobox.component.mjs +0 -883
  15. package/esm2022/common/adaptive-renderer.component.mjs +0 -253
  16. package/esm2022/common/constants/error-messages.mjs +0 -61
  17. package/esm2022/common/data.service.mjs +0 -250
  18. package/esm2022/common/disabled-items/disabled-items.service.mjs +0 -47
  19. package/esm2022/common/disabled-items/item-disabled.mjs +0 -5
  20. package/esm2022/common/filter-input.directive.mjs +0 -39
  21. package/esm2022/common/filtering/filter-settings.mjs +0 -5
  22. package/esm2022/common/filtering/filter.directive.mjs +0 -136
  23. package/esm2022/common/filtering/filterable-component.mjs +0 -34
  24. package/esm2022/common/list-item.directive.mjs +0 -25
  25. package/esm2022/common/list.component.mjs +0 -968
  26. package/esm2022/common/localization/custom-messages.component.mjs +0 -96
  27. package/esm2022/common/localization/localized-messages.directive.mjs +0 -47
  28. package/esm2022/common/localization/messages.mjs +0 -77
  29. package/esm2022/common/models/checkboxes-settings.mjs +0 -15
  30. package/esm2022/common/models/direction.mjs +0 -5
  31. package/esm2022/common/models/fillmode.mjs +0 -5
  32. package/esm2022/common/models/list-type.mjs +0 -5
  33. package/esm2022/common/models/page-change-event.mjs +0 -5
  34. package/esm2022/common/models/popup-settings.mjs +0 -5
  35. package/esm2022/common/models/preventable-event.mjs +0 -25
  36. package/esm2022/common/models/remove-tag-event.mjs +0 -23
  37. package/esm2022/common/models/rounded.mjs +0 -5
  38. package/esm2022/common/models/size.mjs +0 -5
  39. package/esm2022/common/models/virtualization-settings.mjs +0 -24
  40. package/esm2022/common/navigation/navigation-action.mjs +0 -32
  41. package/esm2022/common/navigation/navigation.service.mjs +0 -188
  42. package/esm2022/common/searchbar.component.mjs +0 -386
  43. package/esm2022/common/selection/selectable.directive.mjs +0 -83
  44. package/esm2022/common/selection/selection.service.mjs +0 -166
  45. package/esm2022/common/shared-events.directive.mjs +0 -99
  46. package/esm2022/common/taglist.component.mjs +0 -295
  47. package/esm2022/common/templates/custom-item-template.directive.mjs +0 -48
  48. package/esm2022/common/templates/fixed-group-template.directive.mjs +0 -55
  49. package/esm2022/common/templates/footer-template.directive.mjs +0 -49
  50. package/esm2022/common/templates/group-tag-template.directive.mjs +0 -47
  51. package/esm2022/common/templates/group-template.directive.mjs +0 -55
  52. package/esm2022/common/templates/header-template.directive.mjs +0 -49
  53. package/esm2022/common/templates/item-template.directive.mjs +0 -48
  54. package/esm2022/common/templates/no-data-template.directive.mjs +0 -49
  55. package/esm2022/common/templates/tag-template.directive.mjs +0 -46
  56. package/esm2022/common/templates/value-template.directive.mjs +0 -50
  57. package/esm2022/common/util.mjs +0 -376
  58. package/esm2022/directives.mjs +0 -172
  59. package/esm2022/dropdownlist/dropdownlist.component.mjs +0 -1999
  60. package/esm2022/dropdownlist/dropdownlist.module.mjs +0 -79
  61. package/esm2022/dropdowns.module.mjs +0 -76
  62. package/esm2022/dropdowntrees/checked-state/base-check.directive.mjs +0 -76
  63. package/esm2022/dropdowntrees/checked-state/check-all.directive.mjs +0 -170
  64. package/esm2022/dropdowntrees/checked-state/check.directive.mjs +0 -168
  65. package/esm2022/dropdowntrees/checked-state/checkable-settings.mjs +0 -5
  66. package/esm2022/dropdowntrees/checked-state/checked-item.mjs +0 -5
  67. package/esm2022/dropdowntrees/data-binding/dropdowntree/flat-binding.directive.mjs +0 -69
  68. package/esm2022/dropdowntrees/data-binding/dropdowntree/hierarchy-binding.directive.mjs +0 -62
  69. package/esm2022/dropdowntrees/data-binding/multiselecttree/flat-binding.directive.mjs +0 -69
  70. package/esm2022/dropdowntrees/data-binding/multiselecttree/hierarchy-binding.directive.mjs +0 -62
  71. package/esm2022/dropdowntrees/dropdowntree.component.mjs +0 -1967
  72. package/esm2022/dropdowntrees/dropdowntrees.module.mjs +0 -79
  73. package/esm2022/dropdowntrees/expanded-state/expand.directive.mjs +0 -49
  74. package/esm2022/dropdowntrees/lookup/lookup.mjs +0 -5
  75. package/esm2022/dropdowntrees/lookup/lookup.service.mjs +0 -82
  76. package/esm2022/dropdowntrees/multiselecttree.component.mjs +0 -2359
  77. package/esm2022/dropdowntrees/summary-tag/summary-tag.directive.mjs +0 -70
  78. package/esm2022/dropdowntrees/templates/node-template.directive.mjs +0 -31
  79. package/esm2022/index.mjs +0 -55
  80. package/esm2022/multiselect/multiselect.component.mjs +0 -2380
  81. package/esm2022/multiselect/multiselect.module.mjs +0 -79
  82. package/esm2022/multiselect/summary-tag.directive.mjs +0 -68
  83. package/esm2022/package-metadata.mjs +0 -16
  84. package/esm2022/progress-kendo-angular-dropdowns.mjs +0 -8
@@ -1,883 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { ChangeDetectorRef, Component, ContentChildren, ElementRef, forwardRef, HostBinding, Injector, isDevMode, NgZone, QueryList, Renderer2, ViewChild, ViewChildren } from '@angular/core';
6
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { EventsOutsideAngularDirective, isDocumentAvailable, KendoInput, MultiTabStop, parseCSSClassNames, ResizeSensorComponent, SeparatorComponent, TemplateContextDirective } from '@progress/kendo-angular-common';
8
- import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
9
- import { PopupService } from '@progress/kendo-angular-popup';
10
- import { AdaptiveService } from '@progress/kendo-angular-utils';
11
- import { ComboBoxComponent } from './combobox.component';
12
- import { ComboBoxColumnComponent } from './combobox-column/combobox-column.component';
13
- import { DataService } from '../common/data.service';
14
- import { DisabledItemsService } from '../common/disabled-items/disabled-items.service';
15
- import { NavigationService } from '../common/navigation/navigation.service';
16
- import { SelectionService } from '../common/selection/selection.service';
17
- import { animationDuration, getSizeClass, getter, isObject, isPresent, noop } from '../common/util';
18
- import { getRowWidthFromColumnsMeta, scrollbarWidth } from './combobox-column/util';
19
- import { FilterableComponent } from '../common/filtering/filterable-component';
20
- import { MultiColumnComboBoxMessages } from '../common/constants/error-messages';
21
- import { ListComponent } from '../common/list.component';
22
- import { AdaptiveRendererComponent } from '../common/adaptive-renderer.component';
23
- import { SearchBarComponent } from '../common/searchbar.component';
24
- import { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';
25
- import { SharedDropDownEventsDirective } from '../common/shared-events.directive';
26
- import { LocalizedMessagesDirective } from '../common/localization/localized-messages.directive';
27
- import { IconWrapperComponent } from '@progress/kendo-angular-icons';
28
- import { Subscription } from 'rxjs';
29
- import { take } from 'rxjs/operators';
30
- import * as i0 from "@angular/core";
31
- import * as i1 from "@progress/kendo-angular-l10n";
32
- import * as i2 from "@progress/kendo-angular-popup";
33
- import * as i3 from "../common/selection/selection.service";
34
- import * as i4 from "../common/navigation/navigation.service";
35
- import * as i5 from "../common/disabled-items/disabled-items.service";
36
- import * as i6 from "../common/data.service";
37
- import * as i7 from "@progress/kendo-angular-utils";
38
- /**
39
- * Represents the Kendo UI MultiColumnComboBox component for Angular.
40
- *
41
- * Use the `MultiColumnComboBoxComponent` to show a dropdown list with multiple columns.
42
- * [See example]({% slug overview_multicolumncombobox %}).
43
- *
44
- * @example
45
- * ```html
46
- * <kendo-multicolumncombobox [data]="data" [columns]="columns"></kendo-multicolumncombobox>
47
- * ```
48
- *
49
- * @remarks
50
- * Supported children components are: {@link ComboBoxColumnComponent}, {@link CustomMessagesComponent}.
51
- */
52
- export class MultiColumnComboBoxComponent extends ComboBoxComponent {
53
- hostElement;
54
- /**
55
- * @hidden
56
- */
57
- animationDuration = animationDuration;
58
- /**
59
- * @hidden
60
- */
61
- hostClasses = true;
62
- /**
63
- * @hidden
64
- */
65
- get isDisabled() {
66
- return this.disabled;
67
- }
68
- /**
69
- * Contains a query list of all declared `ComboBoxColumnComponent` columns.
70
- * Use this property to access and configure the columns displayed in the dropdown.
71
- */
72
- columns;
73
- /**
74
- * @hidden
75
- */
76
- set header(header) {
77
- // updates the header padding on initial render as the resize senzor doesn't kick in as early
78
- this.updateHeaderPadding(header && header.nativeElement);
79
- }
80
- /**
81
- * @hidden
82
- */
83
- set headerTable(headerTable) {
84
- this._headerTable = headerTable;
85
- if (this.headerTable) {
86
- this.zone.onStable.pipe(take(1)).subscribe(() => {
87
- this.rowWidth = this.calculateRowWidth();
88
- });
89
- }
90
- }
91
- get headerTable() {
92
- return this._headerTable;
93
- }
94
- /**
95
- * @hidden
96
- */
97
- set headerColumns(columns) {
98
- this.zone.onStable.pipe(take(1)).subscribe(() => {
99
- this.headerColumnWidths = columns.map(column => column.nativeElement.offsetWidth);
100
- });
101
- }
102
- /**
103
- * @hidden
104
- */
105
- rowWidth;
106
- /**
107
- * @hidden
108
- */
109
- headerColumnWidths = [];
110
- /**
111
- * @hidden
112
- */
113
- totalColumnsWidth;
114
- get popupWidth() {
115
- const wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;
116
- const min = `${wrapperOffsetWidth}px`;
117
- const width = this.popupSettings.width || getRowWidthFromColumnsMeta(this.columns) || wrapperOffsetWidth;
118
- const max = isNaN(width) ? width : `${width}px`;
119
- return { min, max };
120
- }
121
- _headerTable;
122
- removeWindowResizeListener = noop;
123
- columnsChangeSubscription = new Subscription();
124
- /**
125
- * @hidden
126
- */
127
- get tableSizeClass() {
128
- return `${this.size ? getSizeClass('table', this.size) : ''}`;
129
- }
130
- /**
131
- * @hidden
132
- */
133
- get listContainerClasses() {
134
- const containerClasses = ['k-popup', 'k-dropdowngrid-popup'];
135
- if (!this.popupSettings.popupClass) {
136
- return containerClasses;
137
- }
138
- const parsedPopupClasses = parseCSSClassNames(this.popupSettings.popupClass);
139
- if (parsedPopupClasses?.length) {
140
- containerClasses.push(...parsedPopupClasses);
141
- }
142
- return containerClasses;
143
- }
144
- constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, wrapper, injector, hostElement, adaptiveService) {
145
- super(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, injector, hostElement, adaptiveService);
146
- this.hostElement = hostElement;
147
- // the row height in @progress/kendo-theme-default
148
- this.defaultVirtualItemHeight = 36;
149
- // use a smaller virtual page size as columns with multiple cells can cause poor performance
150
- this.defaultVirtualPageSize = 30;
151
- }
152
- ngAfterViewInit() {
153
- this.updateColumnsMediaState();
154
- this.addWindowResizeListener();
155
- this.windowSize = this.adaptiveService.size;
156
- this.rowWidth = this.calculateRowWidth();
157
- this.totalColumnsWidth = this.columns.reduce((total, currentColumn) => total + currentColumn.width, 0);
158
- this.columnsChangeSubscription = this.columns.changes.subscribe(() => {
159
- this.rowWidth = this.calculateRowWidth();
160
- this.totalColumnsWidth = this.columns.reduce((total, currentColumn) => total + currentColumn.width, 0);
161
- });
162
- this.cdr.detectChanges();
163
- }
164
- ngOnDestroy() {
165
- super.ngOnDestroy();
166
- this.removeWindowResizeListener();
167
- if (this.columnsChangeSubscription) {
168
- this.columnsChangeSubscription.unsubscribe();
169
- }
170
- }
171
- /**
172
- * @hidden
173
- */
174
- textFrom(dataItem, field) {
175
- return getter(dataItem, field);
176
- }
177
- /**
178
- * @hidden
179
- *
180
- * Adds or removes a padding value at the end of the header container equal to the size of the scrollbar.
181
- * As when the items container has a scrollbar, the column headers and the cells are misaligned.
182
- * When the container has a scrollbar, the padding style is added, and when there is none - it is removed.
183
- */
184
- updateHeaderPadding(header) {
185
- if (!isPresent(header)) {
186
- return;
187
- }
188
- // the scrollbar is rendered on the left in rtl
189
- const headerPaddingPosition = this.localization.rtl ? 'padding-left' : 'padding-right';
190
- if (this.optionsList.hasScrollbar() && scrollbarWidth() > 0) {
191
- this.renderer.setStyle(header, headerPaddingPosition, `${scrollbarWidth()}px`);
192
- }
193
- else {
194
- this.renderer.removeStyle(header, headerPaddingPosition);
195
- }
196
- }
197
- /**
198
- *
199
- * @hidden
200
- */
201
- getColumnWidth(index) {
202
- if (!this.virtual) {
203
- return this.columns.get(index).width;
204
- }
205
- return this.headerColumnWidths[index];
206
- }
207
- verifySettings() {
208
- if (!isDevMode()) {
209
- return;
210
- }
211
- if (isPresent(this.data) && this.data.length > 0 && this.data.some((item) => !isObject(item))) {
212
- throw new Error(MultiColumnComboBoxMessages.data);
213
- }
214
- if (!isPresent(this.valueField) || !isPresent(this.textField)) {
215
- throw new Error(MultiColumnComboBoxMessages.textAndValue);
216
- }
217
- super.verifySettings();
218
- }
219
- addWindowResizeListener() {
220
- if (!isDocumentAvailable()) {
221
- return;
222
- }
223
- this.zone.runOutsideAngular(() => (this.removeWindowResizeListener = this.renderer.listen(window, 'resize', this.updateColumnsMediaState.bind(this))));
224
- }
225
- updateColumnsMediaState() {
226
- if (!(isPresent(this.columns) && isDocumentAvailable()) || this.isActionSheetExpanded) {
227
- return;
228
- }
229
- this.columns.forEach((column) => {
230
- const matchesMedia = !column.media || window.matchMedia(column.media).matches;
231
- if (column.matchesMedia !== matchesMedia) {
232
- column.matchesMedia = matchesMedia;
233
- if (this.isOpen) {
234
- // enter the zone only if the popup is actually open
235
- // update its width in case it's dependent on the columns' width
236
- this.zone.run(() => (this.popupRef.popupElement.style.width = this.popupWidth.max));
237
- }
238
- }
239
- });
240
- }
241
- calculateRowWidth() {
242
- if (this.isActionSheetExpanded || !this.virtual) {
243
- return;
244
- }
245
- return this.headerTable?.nativeElement.offsetWidth;
246
- }
247
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiColumnComboBoxComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PopupService }, { token: i3.SelectionService }, { token: i4.NavigationService }, { token: i5.DisabledItemsService }, { token: i6.DataService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
248
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MultiColumnComboBoxComponent, isStandalone: true, selector: "kendo-multicolumncombobox", host: { properties: { "class.k-dropdowngrid": "this.hostClasses", "class.k-disabled": "this.isDisabled" } }, providers: [
249
- SelectionService,
250
- DataService,
251
- NavigationService,
252
- DisabledItemsService,
253
- LocalizationService,
254
- {
255
- provide: L10N_PREFIX,
256
- useValue: 'kendo.multicolumncombobox',
257
- },
258
- {
259
- multi: true,
260
- provide: NG_VALUE_ACCESSOR,
261
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
262
- },
263
- {
264
- provide: KendoInput,
265
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
266
- },
267
- {
268
- provide: FilterableComponent,
269
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
270
- },
271
- {
272
- provide: MultiTabStop,
273
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
274
- },
275
- ], queries: [{ propertyName: "columns", predicate: ComboBoxColumnComponent }], viewQueries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "headerTable", first: true, predicate: ["headerTable"], descendants: true }, { propertyName: "headerColumns", predicate: ["columnHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
276
- <ng-container
277
- kendoMultiColumnComboBoxLocalizedMessages
278
- i18n-noDataText="
279
- kendo.multicolumncombobox.noDataText|The text displayed in the popup when there are no items
280
- "
281
- noDataText="NO DATA FOUND"
282
- i18n-clearTitle="kendo.multicolumncombobox.clearTitle|The title of the clear button"
283
- clearTitle="clear"
284
- i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
285
- selectButtonText="Select"
286
- i18n-popupLabel="
287
- kendo.multicolumncombobox.popupLabel|The label of the popup element that contains the list of options
288
- when its role is 'region'
289
- "
290
- popupLabel="Options list"
291
- i18n-adaptiveCloseButtonTitle="kendo.multicolumncombobox.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
292
- adaptiveCloseButtonTitle="Close"
293
- ></ng-container>
294
-
295
- <ng-container
296
- kendoDropDownSharedEvents
297
- [hostElement]="hostElement"
298
- [(isFocused)]="isFocused"
299
- (handleBlur)="handleBlur()"
300
- (onFocus)="handleFocus()"
301
- >
302
- @if (prefixTemplate) {
303
- <span class="k-input-prefix k-input-prefix-horizontal">
304
- <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
305
- </ng-template>
306
- </span>
307
- }
308
- @if (prefixTemplate && prefixTemplate.showSeparator) {
309
- <kendo-separator></kendo-separator>
310
- }
311
- <input
312
- kendoSearchbar
313
- [ariaControls]="ariaControls"
314
- [ariaExpanded]="isOpen"
315
- [id]="focusableId"
316
- [isLoading]="loading"
317
- [isSuggestable]="suggest"
318
- [isFilterable]="filterable"
319
- [activeDescendant]="activeDescendant"
320
- [userInput]="text"
321
- [suggestedText]="getSuggestion()"
322
- [disabled]="disabled"
323
- [readonly]="readonly"
324
- [tabIndex]="tabIndex"
325
- [isRequired]="isControlRequired"
326
- [placeholder]="placeholder"
327
- [inputAttributes]="inputAttributes"
328
- (onNavigate)="handleNavigate($event)"
329
- (valueChange)="searchBarChange($event)"
330
- (onBlur)="handleInputBlur()"
331
- (onFocus)="handleInputFocus()"
332
- (click)="handleClick()"
333
- />
334
- @if (clearButton && !loading && !disabled && (!readonly || readonly && isAdaptiveModeEnabled && windowSize !== 'large') && text?.length) {
335
- <span
336
- class="k-clear-value"
337
- [style.visibility]="clearButtonVisibility"
338
- aria-hidden="true"
339
- [attr.title]="messageFor('clearTitle')"
340
- (click)="clearValue($event)"
341
- [kendoEventsOutsideAngular]="{
342
- mousedown: preventEventDefault
343
- }"
344
- >
345
- <kendo-icon-wrapper name="x" [svgIcon]="xIcon"> </kendo-icon-wrapper>
346
- </span>
347
- }
348
-
349
- @if (loading) {
350
- <span class="k-i-loading k-input-loading-icon k-icon"></span>
351
- }
352
- @if (suffixTemplate && suffixTemplate.showSeparator) {
353
- <kendo-separator></kendo-separator>
354
- }
355
- @if (suffixTemplate) {
356
- <span class="k-input-suffix k-input-suffix-horizontal">
357
- <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
358
- </ng-template>
359
- </span>
360
- }
361
- <button
362
- #select
363
- tabindex="-1"
364
- unselectable="on"
365
- type="button"
366
- class="k-input-button k-button k-icon-button"
367
- [ngClass]="selectButtonClasses"
368
- [attr.aria-label]="messageFor('selectButtonText')"
369
- [attr.disabled]="disabled ? '' : null"
370
- [kendoEventsOutsideAngular]="{
371
- mousedown: preventEventDefault
372
- }"
373
- >
374
- <kendo-icon-wrapper
375
- [name]="icon || 'caret-alt-down'"
376
- innerCssClass="k-button-icon"
377
- [svgIcon]="svgIcon || caretAltDownIcon"
378
- >
379
- </kendo-icon-wrapper>
380
- </button>
381
- </ng-container>
382
-
383
- <ng-template #popupTemplate>
384
- <!--popup/actionsheet content-->
385
- <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
386
- </ng-template>
387
-
388
- @if (isOpen || isAdaptiveModeEnabled) {
389
- <kendo-resize-sensor (resize)="onResize()"> </kendo-resize-sensor>
390
- }
391
-
392
- <!-- when the popupSettings.appendTo value is set to 'component', this container is used -->
393
- <ng-container #container></ng-container>
394
-
395
- <kendo-adaptive-renderer
396
- [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
397
- [title]="adaptiveTitle"
398
- [showTextInput]="true"
399
- [subtitle]="adaptiveSubtitle"
400
- (closePopup)="closeActionSheet()"
401
- (textInputChange)="searchBarChange($event)"
402
- (navigate)="handleNavigate($event)"
403
- [placeholder]="placeholder"
404
- [searchBarValue]="text">
405
- </kendo-adaptive-renderer>
406
-
407
- <ng-template #sharedPopupActionSheetTemplate>
408
- <!--user-defined header template -->
409
- @if (headerTemplate) {
410
- <ng-template
411
- [templateContext]="{
412
- templateRef: headerTemplate?.templateRef
413
- }"
414
- >
415
- </ng-template>
416
- }
417
- <!--data table-->
418
- <div class="k-data-table" [ngClass]="tableSizeClass">
419
- <!--grid header-->
420
- <div #header class="k-table-header">
421
- <div #headerWrap class="k-table-header-wrap">
422
- <table #headerTable class="k-table" role="presentation">
423
- <colgroup>
424
- @for (column of columns; track column) {
425
- @if (!column.hidden && column.matchesMedia) {
426
- <col [style.width.px]="column.width" />
427
- }
428
- }
429
- </colgroup>
430
- <thead class="k-table-thead">
431
- <tr class="k-table-row">
432
- @for (column of columns; track column) {
433
- @if (!column.hidden && column.matchesMedia) {
434
- <th
435
- #columnHeader
436
- class="k-table-th"
437
- [ngStyle]="column.headerStyle"
438
- [ngClass]="column.headerClass"
439
- >
440
- @if (!column.headerTemplate) {
441
- {{ column.title || column.field }}
442
- }
443
- @if (column.headerTemplate) {
444
- <ng-template
445
- [templateContext]="{
446
- templateRef: column.headerTemplate?.templateRef,
447
- $implicit: column,
448
- column: column
449
- }"
450
- >
451
- </ng-template>
452
- }
453
- </th>
454
- }
455
- }
456
- </tr>
457
- </thead>
458
- </table>
459
- </div>
460
- </div>
461
- <!-- item template -->
462
- <ng-template #rowTemplate let-dataItem>
463
- @for (column of columns; track $index; let i = $index) {
464
- @if (!column.hidden && column.matchesMedia) {
465
- <span
466
- class="k-table-td"
467
- [ngClass]="column.class"
468
- [style.width.px]="getColumnWidth(i)"
469
- [style.max-width.px]="getColumnWidth(i)"
470
- [ngStyle]="column.style"
471
- >
472
- @if (!column.cellTemplate) {
473
- {{ textFrom(dataItem, column.field) }}
474
- }
475
- @if (column.cellTemplate) {
476
- <ng-template
477
- [templateContext]="{
478
- templateRef: column.cellTemplate?.templateRef,
479
- $implicit: dataItem,
480
- dataItem: dataItem,
481
- column: column
482
- }"
483
- >
484
- </ng-template>
485
- }
486
- </span>
487
- }
488
- }
489
- </ng-template>
490
- <kendo-list
491
- #optionsList
492
- [optionPrefix]="optionPrefix"
493
- [data]="data"
494
- [size]="isAdaptive ? 'large' : size"
495
- [textField]="textField"
496
- [valueField]="valueField"
497
- [template]="{ templateRef: rowTemplate }"
498
- [groupTemplate]="groupTemplate"
499
- [fixedGroupTemplate]="fixedGroupTemplate"
500
- [height]="listHeight"
501
- [show]="isOpen"
502
- [id]="listBoxId"
503
- [virtual]="virtual"
504
- [type]="'dropdowngrid'"
505
- [rowWidth]="rowWidth"
506
- [showStickyHeader]="showStickyHeader"
507
- (pageChange)="pageChange($event)"
508
- (listResize)="updateHeaderPadding(header)"
509
- (popupListScroll)="headerWrap.scrollLeft = $event.target.scrollLeft;"
510
- >
511
- </kendo-list>
512
-
513
- <!--no-data template-->
514
- @if (data.length === 0) {
515
- <div class="k-no-data">
516
- @if (noDataTemplate) {
517
- <ng-template
518
- [templateContext]="{
519
- templateRef: noDataTemplate?.templateRef
520
- }"
521
- >
522
- </ng-template>
523
- }
524
- @if (!noDataTemplate) {
525
- <div>{{ messageFor('noDataText') }}</div>
526
- }
527
- </div>
528
- }
529
-
530
- <!--user-defined footer template-->
531
- @if (footerTemplate) {
532
- <div class="k-table-footer">
533
- <table class="k-table">
534
- <tfoot class="k-table-tfoot">
535
- <tr class="k-table-row">
536
- <td class="k-table-td">
537
- <ng-template
538
- [templateContext]="{
539
- templateRef: footerTemplate.templateRef
540
- }"
541
- >
542
- </ng-template>
543
- </td>
544
- </tr>
545
- </tfoot>
546
- </table>
547
- </div>
548
- }
549
- </div>
550
- </ng-template>
551
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { kind: "directive", type: SharedDropDownEventsDirective, selector: "[kendoDropDownSharedEvents]", inputs: ["hostElement", "clearButtonClicked", "isFocused"], outputs: ["isFocusedChange", "onFocus", "handleBlur"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: SearchBarComponent, selector: "input[kendoSearchbar]", inputs: ["tagListId", "readonly", "disabled", "isRequired", "isSuggestable", "isFilterable", "userInput", "suggestedText", "inputAttributes", "id", "activeDescendant", "tabIndex", "isLoading", "ariaControls", "ariaExpanded", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: AdaptiveRendererComponent, selector: "kendo-adaptive-renderer", inputs: ["title", "subtitle", "showTextInput", "sharedPopupActionSheetTemplate", "text", "placeholder", "searchBarValue", "filterable"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "showStickyHeader", "rowWidth", "customItemTemplate", "text", "allowCustom", "defaultItem", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
552
- }
553
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiColumnComboBoxComponent, decorators: [{
554
- type: Component,
555
- args: [{
556
- providers: [
557
- SelectionService,
558
- DataService,
559
- NavigationService,
560
- DisabledItemsService,
561
- LocalizationService,
562
- {
563
- provide: L10N_PREFIX,
564
- useValue: 'kendo.multicolumncombobox',
565
- },
566
- {
567
- multi: true,
568
- provide: NG_VALUE_ACCESSOR,
569
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
570
- },
571
- {
572
- provide: KendoInput,
573
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
574
- },
575
- {
576
- provide: FilterableComponent,
577
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
578
- },
579
- {
580
- provide: MultiTabStop,
581
- useExisting: forwardRef(() => MultiColumnComboBoxComponent),
582
- },
583
- ],
584
- selector: 'kendo-multicolumncombobox',
585
- template: `
586
- <ng-container
587
- kendoMultiColumnComboBoxLocalizedMessages
588
- i18n-noDataText="
589
- kendo.multicolumncombobox.noDataText|The text displayed in the popup when there are no items
590
- "
591
- noDataText="NO DATA FOUND"
592
- i18n-clearTitle="kendo.multicolumncombobox.clearTitle|The title of the clear button"
593
- clearTitle="clear"
594
- i18n-selectButtonText="kendo.multicolumncombobox.selectButtonText|The title of the select button"
595
- selectButtonText="Select"
596
- i18n-popupLabel="
597
- kendo.multicolumncombobox.popupLabel|The label of the popup element that contains the list of options
598
- when its role is 'region'
599
- "
600
- popupLabel="Options list"
601
- i18n-adaptiveCloseButtonTitle="kendo.multicolumncombobox.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
602
- adaptiveCloseButtonTitle="Close"
603
- ></ng-container>
604
-
605
- <ng-container
606
- kendoDropDownSharedEvents
607
- [hostElement]="hostElement"
608
- [(isFocused)]="isFocused"
609
- (handleBlur)="handleBlur()"
610
- (onFocus)="handleFocus()"
611
- >
612
- @if (prefixTemplate) {
613
- <span class="k-input-prefix k-input-prefix-horizontal">
614
- <ng-template [ngTemplateOutlet]="prefixTemplate?.templateRef">
615
- </ng-template>
616
- </span>
617
- }
618
- @if (prefixTemplate && prefixTemplate.showSeparator) {
619
- <kendo-separator></kendo-separator>
620
- }
621
- <input
622
- kendoSearchbar
623
- [ariaControls]="ariaControls"
624
- [ariaExpanded]="isOpen"
625
- [id]="focusableId"
626
- [isLoading]="loading"
627
- [isSuggestable]="suggest"
628
- [isFilterable]="filterable"
629
- [activeDescendant]="activeDescendant"
630
- [userInput]="text"
631
- [suggestedText]="getSuggestion()"
632
- [disabled]="disabled"
633
- [readonly]="readonly"
634
- [tabIndex]="tabIndex"
635
- [isRequired]="isControlRequired"
636
- [placeholder]="placeholder"
637
- [inputAttributes]="inputAttributes"
638
- (onNavigate)="handleNavigate($event)"
639
- (valueChange)="searchBarChange($event)"
640
- (onBlur)="handleInputBlur()"
641
- (onFocus)="handleInputFocus()"
642
- (click)="handleClick()"
643
- />
644
- @if (clearButton && !loading && !disabled && (!readonly || readonly && isAdaptiveModeEnabled && windowSize !== 'large') && text?.length) {
645
- <span
646
- class="k-clear-value"
647
- [style.visibility]="clearButtonVisibility"
648
- aria-hidden="true"
649
- [attr.title]="messageFor('clearTitle')"
650
- (click)="clearValue($event)"
651
- [kendoEventsOutsideAngular]="{
652
- mousedown: preventEventDefault
653
- }"
654
- >
655
- <kendo-icon-wrapper name="x" [svgIcon]="xIcon"> </kendo-icon-wrapper>
656
- </span>
657
- }
658
-
659
- @if (loading) {
660
- <span class="k-i-loading k-input-loading-icon k-icon"></span>
661
- }
662
- @if (suffixTemplate && suffixTemplate.showSeparator) {
663
- <kendo-separator></kendo-separator>
664
- }
665
- @if (suffixTemplate) {
666
- <span class="k-input-suffix k-input-suffix-horizontal">
667
- <ng-template [ngTemplateOutlet]="suffixTemplate?.templateRef">
668
- </ng-template>
669
- </span>
670
- }
671
- <button
672
- #select
673
- tabindex="-1"
674
- unselectable="on"
675
- type="button"
676
- class="k-input-button k-button k-icon-button"
677
- [ngClass]="selectButtonClasses"
678
- [attr.aria-label]="messageFor('selectButtonText')"
679
- [attr.disabled]="disabled ? '' : null"
680
- [kendoEventsOutsideAngular]="{
681
- mousedown: preventEventDefault
682
- }"
683
- >
684
- <kendo-icon-wrapper
685
- [name]="icon || 'caret-alt-down'"
686
- innerCssClass="k-button-icon"
687
- [svgIcon]="svgIcon || caretAltDownIcon"
688
- >
689
- </kendo-icon-wrapper>
690
- </button>
691
- </ng-container>
692
-
693
- <ng-template #popupTemplate>
694
- <!--popup/actionsheet content-->
695
- <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
696
- </ng-template>
697
-
698
- @if (isOpen || isAdaptiveModeEnabled) {
699
- <kendo-resize-sensor (resize)="onResize()"> </kendo-resize-sensor>
700
- }
701
-
702
- <!-- when the popupSettings.appendTo value is set to 'component', this container is used -->
703
- <ng-container #container></ng-container>
704
-
705
- <kendo-adaptive-renderer
706
- [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
707
- [title]="adaptiveTitle"
708
- [showTextInput]="true"
709
- [subtitle]="adaptiveSubtitle"
710
- (closePopup)="closeActionSheet()"
711
- (textInputChange)="searchBarChange($event)"
712
- (navigate)="handleNavigate($event)"
713
- [placeholder]="placeholder"
714
- [searchBarValue]="text">
715
- </kendo-adaptive-renderer>
716
-
717
- <ng-template #sharedPopupActionSheetTemplate>
718
- <!--user-defined header template -->
719
- @if (headerTemplate) {
720
- <ng-template
721
- [templateContext]="{
722
- templateRef: headerTemplate?.templateRef
723
- }"
724
- >
725
- </ng-template>
726
- }
727
- <!--data table-->
728
- <div class="k-data-table" [ngClass]="tableSizeClass">
729
- <!--grid header-->
730
- <div #header class="k-table-header">
731
- <div #headerWrap class="k-table-header-wrap">
732
- <table #headerTable class="k-table" role="presentation">
733
- <colgroup>
734
- @for (column of columns; track column) {
735
- @if (!column.hidden && column.matchesMedia) {
736
- <col [style.width.px]="column.width" />
737
- }
738
- }
739
- </colgroup>
740
- <thead class="k-table-thead">
741
- <tr class="k-table-row">
742
- @for (column of columns; track column) {
743
- @if (!column.hidden && column.matchesMedia) {
744
- <th
745
- #columnHeader
746
- class="k-table-th"
747
- [ngStyle]="column.headerStyle"
748
- [ngClass]="column.headerClass"
749
- >
750
- @if (!column.headerTemplate) {
751
- {{ column.title || column.field }}
752
- }
753
- @if (column.headerTemplate) {
754
- <ng-template
755
- [templateContext]="{
756
- templateRef: column.headerTemplate?.templateRef,
757
- $implicit: column,
758
- column: column
759
- }"
760
- >
761
- </ng-template>
762
- }
763
- </th>
764
- }
765
- }
766
- </tr>
767
- </thead>
768
- </table>
769
- </div>
770
- </div>
771
- <!-- item template -->
772
- <ng-template #rowTemplate let-dataItem>
773
- @for (column of columns; track $index; let i = $index) {
774
- @if (!column.hidden && column.matchesMedia) {
775
- <span
776
- class="k-table-td"
777
- [ngClass]="column.class"
778
- [style.width.px]="getColumnWidth(i)"
779
- [style.max-width.px]="getColumnWidth(i)"
780
- [ngStyle]="column.style"
781
- >
782
- @if (!column.cellTemplate) {
783
- {{ textFrom(dataItem, column.field) }}
784
- }
785
- @if (column.cellTemplate) {
786
- <ng-template
787
- [templateContext]="{
788
- templateRef: column.cellTemplate?.templateRef,
789
- $implicit: dataItem,
790
- dataItem: dataItem,
791
- column: column
792
- }"
793
- >
794
- </ng-template>
795
- }
796
- </span>
797
- }
798
- }
799
- </ng-template>
800
- <kendo-list
801
- #optionsList
802
- [optionPrefix]="optionPrefix"
803
- [data]="data"
804
- [size]="isAdaptive ? 'large' : size"
805
- [textField]="textField"
806
- [valueField]="valueField"
807
- [template]="{ templateRef: rowTemplate }"
808
- [groupTemplate]="groupTemplate"
809
- [fixedGroupTemplate]="fixedGroupTemplate"
810
- [height]="listHeight"
811
- [show]="isOpen"
812
- [id]="listBoxId"
813
- [virtual]="virtual"
814
- [type]="'dropdowngrid'"
815
- [rowWidth]="rowWidth"
816
- [showStickyHeader]="showStickyHeader"
817
- (pageChange)="pageChange($event)"
818
- (listResize)="updateHeaderPadding(header)"
819
- (popupListScroll)="headerWrap.scrollLeft = $event.target.scrollLeft;"
820
- >
821
- </kendo-list>
822
-
823
- <!--no-data template-->
824
- @if (data.length === 0) {
825
- <div class="k-no-data">
826
- @if (noDataTemplate) {
827
- <ng-template
828
- [templateContext]="{
829
- templateRef: noDataTemplate?.templateRef
830
- }"
831
- >
832
- </ng-template>
833
- }
834
- @if (!noDataTemplate) {
835
- <div>{{ messageFor('noDataText') }}</div>
836
- }
837
- </div>
838
- }
839
-
840
- <!--user-defined footer template-->
841
- @if (footerTemplate) {
842
- <div class="k-table-footer">
843
- <table class="k-table">
844
- <tfoot class="k-table-tfoot">
845
- <tr class="k-table-row">
846
- <td class="k-table-td">
847
- <ng-template
848
- [templateContext]="{
849
- templateRef: footerTemplate.templateRef
850
- }"
851
- >
852
- </ng-template>
853
- </td>
854
- </tr>
855
- </tfoot>
856
- </table>
857
- </div>
858
- }
859
- </div>
860
- </ng-template>
861
- `,
862
- standalone: true,
863
- imports: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgTemplateOutlet, SeparatorComponent, SearchBarComponent, EventsOutsideAngularDirective, IconWrapperComponent, NgClass, ResizeSensorComponent, AdaptiveRendererComponent, TemplateContextDirective, NgStyle, ListComponent]
864
- }]
865
- }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.PopupService }, { type: i3.SelectionService }, { type: i4.NavigationService }, { type: i5.DisabledItemsService }, { type: i6.DataService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i7.AdaptiveService }], propDecorators: { hostClasses: [{
866
- type: HostBinding,
867
- args: ['class.k-dropdowngrid']
868
- }], isDisabled: [{
869
- type: HostBinding,
870
- args: ['class.k-disabled']
871
- }], columns: [{
872
- type: ContentChildren,
873
- args: [ComboBoxColumnComponent]
874
- }], header: [{
875
- type: ViewChild,
876
- args: ['header', { static: false }]
877
- }], headerTable: [{
878
- type: ViewChild,
879
- args: ['headerTable', { static: false }]
880
- }], headerColumns: [{
881
- type: ViewChildren,
882
- args: ['columnHeader']
883
- }] } });