@progress/kendo-angular-dropdowns 19.0.0-develop.2 → 19.0.0-develop.20

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 (28) hide show
  1. package/autocomplete/autocomplete.component.d.ts +11 -17
  2. package/comboboxes/combobox.component.d.ts +12 -14
  3. package/common/{action-sheet.component.d.ts → adaptive-renderer.component.d.ts} +10 -13
  4. package/common/list.component.d.ts +8 -1
  5. package/common/localization/messages.d.ts +5 -5
  6. package/common/util.d.ts +0 -6
  7. package/dropdownlist/dropdownlist.component.d.ts +7 -19
  8. package/dropdowntrees/dropdowntree.component.d.ts +9 -16
  9. package/dropdowntrees/multiselecttree.component.d.ts +9 -28
  10. package/esm2022/autocomplete/autocomplete.component.mjs +71 -94
  11. package/esm2022/comboboxes/combobox.component.mjs +85 -100
  12. package/esm2022/comboboxes/multicolumncombobox.component.mjs +23 -26
  13. package/esm2022/common/{action-sheet.component.mjs → adaptive-renderer.component.mjs} +71 -107
  14. package/esm2022/common/list.component.mjs +300 -213
  15. package/esm2022/common/localization/messages.mjs +7 -7
  16. package/esm2022/common/searchbar.component.mjs +2 -3
  17. package/esm2022/common/util.mjs +0 -22
  18. package/esm2022/dropdownlist/dropdownlist.component.mjs +50 -123
  19. package/esm2022/dropdowntrees/dropdowntree.component.mjs +63 -72
  20. package/esm2022/dropdowntrees/multiselecttree.component.mjs +65 -122
  21. package/esm2022/index.mjs +1 -1
  22. package/esm2022/multiselect/multiselect.component.mjs +133 -190
  23. package/esm2022/package-metadata.mjs +2 -2
  24. package/fesm2022/progress-kendo-angular-dropdowns.mjs +920 -1130
  25. package/index.d.ts +1 -1
  26. package/multiselect/multiselect.component.d.ts +13 -26
  27. package/package.json +10 -10
  28. package/schematics/ngAdd/index.js +2 -2
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { guid, isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, getter, isNumber, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, animationDuration, isTruthy, setListBoxAriaLabelledBy, setActionSheetTitle, updateActionSheetAdaptiveAppearance } from '../common/util';
5
+ import { guid, isPresent, isArray, isObjectArray, resolveAllValues, selectedIndices, getter, isNumber, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, animationDuration, isTruthy, setListBoxAriaLabelledBy, setActionSheetTitle } from '../common/util';
6
6
  import { SearchBarComponent } from '../common/searchbar.component';
7
7
  import { ViewChild, Renderer2, ViewContainerRef, Component, HostBinding, Input, ElementRef, TemplateRef, Output, EventEmitter, isDevMode, forwardRef, ContentChild, ChangeDetectorRef, KeyValueDiffers, NgZone, Injector } from '@angular/core';
8
8
  import { Subscription, Subject, of, merge } from 'rxjs';
@@ -35,11 +35,10 @@ import { DataService } from '../common/data.service';
35
35
  import { ListComponent } from '../common/list.component';
36
36
  import { normalizeCheckboxesSettings } from '../common/models/checkboxes-settings';
37
37
  import { normalizeVirtualizationSettings } from '../common/models/virtualization-settings';
38
- import { plusIcon, xIcon } from '@progress/kendo-svg-icons';
39
- import { ResponsiveRendererComponent } from '../common/action-sheet.component';
40
- import { SelectableDirective } from '../common/selection/selectable.directive';
38
+ import { xIcon } from '@progress/kendo-svg-icons';
39
+ import { AdaptiveRendererComponent } from '../common/adaptive-renderer.component';
41
40
  import { TagListComponent } from '../common/taglist.component';
42
- import { NgIf, NgTemplateOutlet, NgClass } from '@angular/common';
41
+ import { NgIf, NgTemplateOutlet } from '@angular/common';
43
42
  import { SharedDropDownEventsDirective } from '../common/shared-events.directive';
44
43
  import { LocalizedMessagesDirective } from '../common/localization/localized-messages.directive';
45
44
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
@@ -100,10 +99,6 @@ export class MultiSelectComponent {
100
99
  * @hidden
101
100
  */
102
101
  xIcon = xIcon;
103
- /**
104
- * @hidden
105
- */
106
- plusIcon = plusIcon;
107
102
  listBoxId = `k-${guid()}`;
108
103
  tagListId = `k-${guid()}`;
109
104
  tagPrefix = "tag-" + guid();
@@ -115,18 +110,18 @@ export class MultiSelectComponent {
115
110
  /**
116
111
  * @hidden
117
112
  */
118
- responsiveRendererComponent;
113
+ adaptiveRendererComponent;
119
114
  /**
120
115
  * @hidden
121
116
  */
122
117
  get actionSheet() {
123
- return this.responsiveRendererComponent?.actionSheet;
118
+ return this.adaptiveRendererComponent?.actionSheet;
124
119
  }
125
120
  /**
126
121
  * @hidden
127
122
  */
128
123
  get actionSheetSearchBar() {
129
- return this.responsiveRendererComponent?.actionSheetSearchBar;
124
+ return this.adaptiveRendererComponent?.actionSheetSearchBar;
130
125
  }
131
126
  /**
132
127
  * @hidden
@@ -181,16 +176,6 @@ export class MultiSelectComponent {
181
176
  });
182
177
  }
183
178
  }
184
- /**
185
- * @hidden
186
- */
187
- onAdaptiveTextBoxChange(text) {
188
- if (this.filterable) {
189
- this.filterChange.emit(text);
190
- return;
191
- }
192
- this.searchTextAndFocus(text);
193
- }
194
179
  /**
195
180
  * Blurs the MultiSelect.
196
181
  */
@@ -215,29 +200,7 @@ export class MultiSelectComponent {
215
200
  */
216
201
  handleBlur() {
217
202
  if (!this.isActionSheetExpanded) {
218
- if (!this.isFocused) {
219
- return;
220
- }
221
- this.isFocused = false;
222
- if (hasObservers(this.onBlur) ||
223
- hasObservers(this.filterChange) ||
224
- hasObservers(this.close) ||
225
- isUntouched(this.wrapper.nativeElement)) {
226
- this._zone.run(() => {
227
- this.closePopup();
228
- if (!(this.isOpen && this.allowCustom)) {
229
- this.clearFilter();
230
- }
231
- this.onBlur.emit();
232
- this.onTouchedCallback();
233
- });
234
- }
235
- else {
236
- if (!this.allowCustom) {
237
- this.clearFilter();
238
- }
239
- this.closePopup();
240
- }
203
+ this.blurComponent();
241
204
  }
242
205
  }
243
206
  /**
@@ -472,19 +435,14 @@ export class MultiSelectComponent {
472
435
  adaptiveMode = 'none';
473
436
  /**
474
437
  * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
475
- * By default the ActionSheet title uses the text provided for the label of the AutoComplete.
438
+ * By default the ActionSheet title uses the text provided for the label of the MultiSelect.
476
439
  */
477
- title = '';
440
+ adaptiveTitle = '';
478
441
  /**
479
442
  * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.
480
- * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.
443
+ * By default the ActionSheet does not render a subtitle.
481
444
  */
482
- set subtitle(_subtitle) {
483
- this._subtitle = _subtitle;
484
- }
485
- get subtitle() {
486
- return this._subtitle || this.placeholder;
487
- }
445
+ adaptiveSubtitle;
488
446
  /**
489
447
  * @hidden
490
448
  */
@@ -764,13 +722,32 @@ export class MultiSelectComponent {
764
722
  get isAdaptive() {
765
723
  return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
766
724
  }
725
+ /**
726
+ * @hidden
727
+ */
728
+ applyValue() {
729
+ if (!this.isActionSheetExpanded) {
730
+ return;
731
+ }
732
+ const isValueChanged = !(this.value.every(i => this._valueHolder.find(item => i === item)) && this._valueHolder.length === this.value.length);
733
+ if (isValueChanged) {
734
+ this.value = this._valueHolder;
735
+ this._valueHolder = [];
736
+ this.emitValueChange();
737
+ }
738
+ this.clearFilter();
739
+ this.togglePopup(false);
740
+ if (this.allowCustom && this.isCustomValueSelected) {
741
+ this.isCustomValueSelected = false;
742
+ }
743
+ }
767
744
  disabledIndices;
768
745
  initialized = false;
769
746
  _size = 'medium';
770
747
  _rounded = 'medium';
771
748
  _fillMode = 'solid';
772
- _subtitle;
773
749
  _valueHolder = [];
750
+ isCustomValueSelected = false;
774
751
  constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, injector, hostElement, adaptiveService) {
775
752
  this.wrapper = wrapper;
776
753
  this.localization = localization;
@@ -804,7 +781,8 @@ export class MultiSelectComponent {
804
781
  * @hidden
805
782
  */
806
783
  get customItemSizeClass() {
807
- return `${this.size ? getSizeClass('list', this.size) : ''}`;
784
+ const currentSize = this.isAdaptive ? 'large' : this.size;
785
+ return `${currentSize ? getSizeClass('list', currentSize) : ''}`;
808
786
  }
809
787
  get width() {
810
788
  let wrapperOffsetWidth = 0;
@@ -843,22 +821,6 @@ export class MultiSelectComponent {
843
821
  return 'visible';
844
822
  }
845
823
  }
846
- /**
847
- * @hidden
848
- */
849
- applyValue() {
850
- this.value = this._valueHolder;
851
- this._valueHolder = [];
852
- this.emitValueChange();
853
- this.togglePopup(false);
854
- }
855
- /**
856
- * @hidden
857
- */
858
- cancelValue() {
859
- this._valueHolder = [];
860
- this.togglePopup(false);
861
- }
862
824
  /**
863
825
  * @hidden
864
826
  */
@@ -964,6 +926,9 @@ export class MultiSelectComponent {
964
926
  if (this.isOpen && this.selectionService.focused === undefined) {
965
927
  if (this.dataService.itemsCount > 0) {
966
928
  this.selectionService.focused = this.firstFocusableIndex(0);
929
+ if (this.allowCustom) {
930
+ this.selectionService.focused = 0;
931
+ }
967
932
  }
968
933
  else if (this.allowCustom) {
969
934
  this.selectionService.focused = -1;
@@ -991,6 +956,10 @@ export class MultiSelectComponent {
991
956
  * @hidden
992
957
  */
993
958
  handleFilter(text) {
959
+ if (this.isActionSheetExpanded && this.allowCustom && this.isCustomValueSelected) {
960
+ this.addCustomValue(this.text);
961
+ this.addCustomValue(text);
962
+ }
994
963
  this.text = text;
995
964
  if (text && !this.isOpen) {
996
965
  this.openPopup();
@@ -1137,11 +1106,6 @@ export class MultiSelectComponent {
1137
1106
  this.searchbar.setInputSize();
1138
1107
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'mousedown', this.handleMousedown.bind(this)));
1139
1108
  this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));
1140
- if (this.actionSheet && isDocumentAvailable()) {
1141
- // The following syntax is used as it does not violate CSP compliance
1142
- this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');
1143
- this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');
1144
- }
1145
1109
  this._zone.onStable.pipe(take(1)).subscribe(() => {
1146
1110
  const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby') ||
1147
1111
  this.searchbar.input.nativeElement.getAttribute('data-kendo-label-id');
@@ -1401,34 +1365,49 @@ export class MultiSelectComponent {
1401
1365
  const itemIndex = this.dataService.indexOf(newValue);
1402
1366
  const customItem = itemIndex === -1;
1403
1367
  if (this.value.indexOf(newValue) === -1) {
1404
- this.tags = this.tagMapper([...this.selectedDataItems, normalizedValue]);
1368
+ !this.isActionSheetExpanded && (this.tags = this.tagMapper([...this.selectedDataItems, normalizedValue]));
1405
1369
  if (!customItem) {
1406
1370
  this.selectionService.add(itemIndex);
1407
1371
  }
1372
+ else if (this.isActionSheetExpanded) {
1373
+ const isValueInHolder = this._valueHolder.some(item => getter(item, this.valueField) === newValue);
1374
+ if (isValueInHolder) {
1375
+ this._valueHolder = this._valueHolder.filter(item => getter(item, this.valueField) !== newValue);
1376
+ this.isCustomValueSelected = false;
1377
+ }
1378
+ else {
1379
+ this._valueHolder = [...this._valueHolder, newValue];
1380
+ this.isCustomValueSelected = true;
1381
+ }
1382
+ }
1408
1383
  else {
1409
1384
  this.value = [...this.value, newValue];
1410
1385
  }
1411
1386
  }
1387
+ else if (!customItem && this.selectionService.isSelected(itemIndex)) {
1388
+ this.selectionService.deselect(itemIndex);
1389
+ this.selectionService.focused = itemIndex;
1390
+ }
1391
+ else if (this.isActionSheetExpanded) {
1392
+ this._valueHolder = this._valueHolder.filter(item => getter(item, this.valueField) !== newValue);
1393
+ this.isCustomValueSelected = false;
1394
+ }
1412
1395
  else {
1413
- if (!customItem && this.selectionService.isSelected(itemIndex)) {
1414
- this.selectionService.deselect(itemIndex);
1415
- this.selectionService.focused = itemIndex;
1416
- }
1417
- else {
1418
- this.value = this.value.filter(item => getter(item, this.valueField) !== newValue);
1419
- }
1396
+ this.value = this.value.filter(item => getter(item, this.valueField) !== newValue);
1420
1397
  }
1421
- this.emitValueChange();
1398
+ !this.isActionSheetExpanded && this.emitValueChange();
1422
1399
  }
1423
1400
  if (this.autoClose) {
1424
1401
  this.togglePopup(false);
1425
1402
  }
1426
- if (this.autoClose || !this.filterable) {
1403
+ if ((this.autoClose || !this.filterable) && !this.isActionSheetExpanded) {
1427
1404
  this.clearFilter();
1428
1405
  }
1429
- this.nextTick(() => {
1430
- this.searchbar.focus();
1431
- });
1406
+ if (!this.isActionSheetExpanded) {
1407
+ this.nextTick(() => {
1408
+ this.searchbar.focus();
1409
+ });
1410
+ }
1432
1411
  });
1433
1412
  }
1434
1413
  handleItemChange(event) {
@@ -1436,7 +1415,7 @@ export class MultiSelectComponent {
1436
1415
  if (this.autoClose && !event.preventClosingPopup && !this.isActionSheetExpanded) {
1437
1416
  this.togglePopup(false);
1438
1417
  }
1439
- if (this.autoClose || !this.filterable) {
1418
+ if ((this.autoClose || !this.filterable) && !this.isActionSheetExpanded) {
1440
1419
  this.clearFilter();
1441
1420
  }
1442
1421
  }
@@ -1691,8 +1670,9 @@ export class MultiSelectComponent {
1691
1670
  this._open = open;
1692
1671
  this.destroyPopup();
1693
1672
  if (this.isActionSheetExpanded) {
1694
- this.closeActionSheet();
1695
- this.focus();
1673
+ this.actionSheet.toggle(false);
1674
+ this.closed.emit();
1675
+ this.isFocused = false;
1696
1676
  }
1697
1677
  if (this._open) {
1698
1678
  this.createPopup();
@@ -1798,29 +1778,46 @@ export class MultiSelectComponent {
1798
1778
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
1799
1779
  }
1800
1780
  }
1801
- closeActionSheet() {
1802
- this.actionSheet.toggle(false);
1803
- this.filterable && this.filterChange.emit('');
1804
- this.responsiveRendererComponent.searchBarValue = '';
1805
- this.closed.emit();
1806
- }
1807
1781
  openActionSheet() {
1808
- this.windowSize = this.adaptiveService.size;
1809
1782
  this.actionSheet.toggle(true);
1810
1783
  // Stores the current value state until the user either accepts or cancels it
1811
1784
  this._valueHolder = [...this.value];
1812
1785
  this.cdr.detectChanges();
1813
1786
  setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);
1814
- this.title = setActionSheetTitle(this.searchbar.input, this.title);
1815
- updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
1787
+ this.adaptiveTitle = setActionSheetTitle(this.searchbar.input, this.adaptiveTitle);
1816
1788
  this.cdr.detectChanges();
1817
1789
  this.opened.emit();
1818
1790
  this.optionsList.scrollToItem(this.selectionService.focused);
1819
1791
  this.selectionService.focus(this.selectionService.focused);
1820
1792
  this.actionSheetSearchBar.focus();
1821
1793
  }
1794
+ blurComponent() {
1795
+ if (!this.isFocused) {
1796
+ return;
1797
+ }
1798
+ this.isFocused = false;
1799
+ if (hasObservers(this.onBlur) ||
1800
+ hasObservers(this.filterChange) ||
1801
+ hasObservers(this.close) ||
1802
+ isUntouched(this.wrapper.nativeElement)) {
1803
+ this._zone.run(() => {
1804
+ this.closePopup();
1805
+ if (!(this.isOpen && this.allowCustom)) {
1806
+ this.clearFilter();
1807
+ }
1808
+ this.onBlur.emit();
1809
+ this.onTouchedCallback();
1810
+ });
1811
+ }
1812
+ else {
1813
+ if (!this.allowCustom) {
1814
+ this.clearFilter();
1815
+ }
1816
+ this.closePopup();
1817
+ }
1818
+ }
1822
1819
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i2.PopupService }, { token: i3.DataService }, { token: i4.SelectionService }, { token: i5.NavigationService }, { token: i6.DisabledItemsService }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.Injector }, { token: i0.ElementRef }, { token: i7.AdaptiveService }], target: i0.ɵɵFactoryTarget.Component });
1823
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectComponent, isStandalone: true, selector: "kendo-multiselect", inputs: { showStickyHeader: "showStickyHeader", focusableId: "focusableId", autoClose: "autoClose", loading: "loading", data: "data", value: "value", valueField: "valueField", textField: "textField", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", placeholder: "placeholder", adaptiveMode: "adaptiveMode", title: "title", subtitle: "subtitle", disabled: "disabled", itemDisabled: "itemDisabled", checkboxes: "checkboxes", readonly: "readonly", filterable: "filterable", virtual: "virtual", popupSettings: "popupSettings", listHeight: "listHeight", valuePrimitive: "valuePrimitive", clearButton: "clearButton", tagMapper: "tagMapper", allowCustom: "allowCustom", valueNormalizer: "valueNormalizer", inputAttributes: "inputAttributes" }, outputs: { filterChange: "filterChange", valueChange: "valueChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur", removeTag: "removeTag" }, host: { properties: { "class.k-readonly": "this.readonly", "class.k-multiselect": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.dir", "class.k-disabled": "this.disabledClass", "class.k-loading": "this.isLoading" } }, providers: [
1820
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectComponent, isStandalone: true, selector: "kendo-multiselect", inputs: { showStickyHeader: "showStickyHeader", focusableId: "focusableId", autoClose: "autoClose", loading: "loading", data: "data", value: "value", valueField: "valueField", textField: "textField", tabindex: "tabindex", tabIndex: "tabIndex", size: "size", rounded: "rounded", fillMode: "fillMode", placeholder: "placeholder", adaptiveMode: "adaptiveMode", adaptiveTitle: "adaptiveTitle", adaptiveSubtitle: "adaptiveSubtitle", disabled: "disabled", itemDisabled: "itemDisabled", checkboxes: "checkboxes", readonly: "readonly", filterable: "filterable", virtual: "virtual", popupSettings: "popupSettings", listHeight: "listHeight", valuePrimitive: "valuePrimitive", clearButton: "clearButton", tagMapper: "tagMapper", allowCustom: "allowCustom", valueNormalizer: "valueNormalizer", inputAttributes: "inputAttributes" }, outputs: { filterChange: "filterChange", valueChange: "valueChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur", inputFocus: "inputFocus", inputBlur: "inputBlur", removeTag: "removeTag" }, host: { properties: { "class.k-readonly": "this.readonly", "class.k-multiselect": "this.hostClasses", "class.k-input": "this.hostClasses", "attr.dir": "this.dir", "class.k-disabled": "this.disabledClass", "class.k-loading": "this.isLoading" } }, providers: [
1824
1821
  MULTISELECT_VALUE_ACCESSOR,
1825
1822
  DataService,
1826
1823
  SelectionService,
@@ -1837,7 +1834,7 @@ export class MultiSelectComponent {
1837
1834
  {
1838
1835
  provide: KendoInput, useExisting: forwardRef(() => MultiSelectComponent)
1839
1836
  }
1840
- ], queries: [{ propertyName: "template", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: "customItemTemplate", first: true, predicate: CustomItemTemplateDirective, descendants: true }, { propertyName: "groupTemplate", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: "fixedGroupTemplate", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "tagTemplate", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: "groupTagTemplate", first: true, predicate: GroupTagTemplateDirective, descendants: true }, { propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "responsiveRendererComponent", first: true, predicate: ResponsiveRendererComponent, descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbar", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: "tagList", first: true, predicate: TagListComponent, descendants: true, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], exportAs: ["kendoMultiSelect"], usesOnChanges: true, ngImport: i0, template: `
1837
+ ], queries: [{ propertyName: "template", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: "customItemTemplate", first: true, predicate: CustomItemTemplateDirective, descendants: true }, { propertyName: "groupTemplate", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: "fixedGroupTemplate", first: true, predicate: FixedGroupTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "tagTemplate", first: true, predicate: TagTemplateDirective, descendants: true }, { propertyName: "groupTagTemplate", first: true, predicate: GroupTagTemplateDirective, descendants: true }, { propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "suffixTemplate", first: true, predicate: SuffixTemplateDirective, descendants: true }, { propertyName: "prefixTemplate", first: true, predicate: PrefixTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "adaptiveRendererComponent", first: true, predicate: AdaptiveRendererComponent, descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "searchbar", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: "tagList", first: true, predicate: TagListComponent, descendants: true, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], exportAs: ["kendoMultiSelect"], usesOnChanges: true, ngImport: i0, template: `
1841
1838
  <ng-container kendoMultiSelectLocalizedMessages
1842
1839
  i18n-noDataText="kendo.multiselect.noDataText|The text displayed in the popup when there are no items"
1843
1840
  noDataText="NO DATA FOUND"
@@ -1848,11 +1845,8 @@ export class MultiSelectComponent {
1848
1845
  i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
1849
1846
  popupLabel="Options list"
1850
1847
 
1851
- i18n-applyButton="kendo.multiselect.applyButton|The text of the Apply button in the action sheet"
1852
- applyButton="Apply"
1853
-
1854
- i18n-cancelButton="kendo.multiselect.cancelButton|The text of the Cancel button in the action sheet"
1855
- cancelButton="Cancel"
1848
+ i18n-adaptiveCloseButtonTitle="kendo.multiselect.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."
1849
+ adaptiveCloseButtonTitle="Close"
1856
1850
  >
1857
1851
  </ng-container>
1858
1852
 
@@ -1944,22 +1938,17 @@ export class MultiSelectComponent {
1944
1938
  <kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1945
1939
  <ng-container #container></ng-container>
1946
1940
 
1947
- <!--adaptive rendering-->
1948
- <responsive-renderer
1941
+ <kendo-adaptive-renderer
1949
1942
  [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
1950
- [isActionSheetExpanded]="isActionSheetExpanded"
1951
- [title]="title"
1943
+ [title]="adaptiveTitle"
1952
1944
  [showTextInput]="true"
1953
- [showActionButtons]="true"
1954
- [subtitle]="subtitle"
1955
- (closePopup)="togglePopup(false)"
1956
- (textInputChange)="onAdaptiveTextBoxChange($event)"
1945
+ [subtitle]="adaptiveSubtitle"
1946
+ (closePopup)="applyValue()"
1947
+ (textInputChange)="handleFilter($event)"
1957
1948
  [placeholder]="placeholder"
1958
1949
  (navigate)="handleNavigate($event)"
1959
- (onApply)="applyValue()"
1960
- (onCancel)="cancelValue()"
1961
- >
1962
- </responsive-renderer>
1950
+ [searchBarValue]="text">
1951
+ </kendo-adaptive-renderer>
1963
1952
 
1964
1953
  <ng-template #sharedPopupActionSheetTemplate>
1965
1954
  <!--header template-->
@@ -1968,32 +1957,10 @@ export class MultiSelectComponent {
1968
1957
  templateRef: headerTemplate.templateRef
1969
1958
  }">
1970
1959
  </ng-template>
1971
- <!--custom item template-->
1972
- <div
1973
- *ngIf="allowCustom && text"
1974
- class="k-list"
1975
- [ngClass]="customItemSizeClass"
1976
- >
1977
- <div class="k-list-item k-custom-item" kendoDropDownsSelectable [multipleSelection]="true" [index]="-1">
1978
- <ng-template *ngIf="customItemTemplate;else default_custom_item_template"
1979
- [templateContext]="{
1980
- templateRef: customItemTemplate.templateRef,
1981
- $implicit: text
1982
- }">
1983
- </ng-template>
1984
- <ng-template #default_custom_item_template>{{ text }}</ng-template>
1985
- <kendo-icon-wrapper
1986
- class="k-icon"
1987
- name="plus"
1988
- [svgIcon]="plusIcon"
1989
- >
1990
- </kendo-icon-wrapper>
1991
- </div>
1992
- </div>
1993
1960
  <!--list-->
1994
1961
  <kendo-list
1995
1962
  #optionsList
1996
- [size]="size"
1963
+ [size]="isAdaptive ? 'large' : size"
1997
1964
  [rounded]="rounded"
1998
1965
  [id]="listBoxId"
1999
1966
  [optionPrefix]="optionPrefix"
@@ -2012,6 +1979,9 @@ export class MultiSelectComponent {
2012
1979
  [isMultiselect]="true"
2013
1980
  [isActionSheetExpanded]="isActionSheetExpanded"
2014
1981
  [showStickyHeader]="showStickyHeader"
1982
+ [customItemTemplate]="customItemTemplate"
1983
+ [text]="text"
1984
+ [allowCustom]="allowCustom"
2015
1985
  >
2016
1986
  </kendo-list>
2017
1987
  <!--no data template-->
@@ -2032,7 +2002,7 @@ export class MultiSelectComponent {
2032
2002
  }">
2033
2003
  </ng-template>
2034
2004
  </ng-template>
2035
- `, 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { 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: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ResponsiveRendererComponent, selector: "responsive-renderer", inputs: ["title", "showActionButtons", "subtitle", "size", "showTextInput", "sharedPopupActionSheetTemplate", "isActionSheetExpanded", "text", "placeholder"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand", "onCollapse", "onApply", "onCancel"] }, { kind: "directive", type: TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: SelectableDirective, selector: "[kendoDropDownsSelectable]", inputs: ["index", "checkboxes", "height", "isMultiselect", "multipleSelection"] }, { 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", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize", "popupListScroll"] }] });
2005
+ `, 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SeparatorComponent, selector: "kendo-separator", inputs: ["orientation"] }, { kind: "component", type: TagListComponent, selector: "kendo-taglist", inputs: ["tags", "textField", "valueField", "valueDepth", "focused", "template", "groupTemplate", "disabled", "tagPrefix", "id", "size", "rounded", "fillMode", "disabledIndices"], outputs: ["removeTag"] }, { 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: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { 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: "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"] }] });
2036
2006
  }
2037
2007
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectComponent, decorators: [{
2038
2008
  type: Component,
@@ -2068,11 +2038,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2068
2038
  i18n-popupLabel="kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region'"
2069
2039
  popupLabel="Options list"
2070
2040
 
2071
- i18n-applyButton="kendo.multiselect.applyButton|The text of the Apply button in the action sheet"
2072
- applyButton="Apply"
2073
-
2074
- i18n-cancelButton="kendo.multiselect.cancelButton|The text of the Cancel button in the action sheet"
2075
- cancelButton="Cancel"
2041
+ i18n-adaptiveCloseButtonTitle="kendo.multiselect.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."
2042
+ adaptiveCloseButtonTitle="Close"
2076
2043
  >
2077
2044
  </ng-container>
2078
2045
 
@@ -2164,22 +2131,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2164
2131
  <kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
2165
2132
  <ng-container #container></ng-container>
2166
2133
 
2167
- <!--adaptive rendering-->
2168
- <responsive-renderer
2134
+ <kendo-adaptive-renderer
2169
2135
  [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
2170
- [isActionSheetExpanded]="isActionSheetExpanded"
2171
- [title]="title"
2136
+ [title]="adaptiveTitle"
2172
2137
  [showTextInput]="true"
2173
- [showActionButtons]="true"
2174
- [subtitle]="subtitle"
2175
- (closePopup)="togglePopup(false)"
2176
- (textInputChange)="onAdaptiveTextBoxChange($event)"
2138
+ [subtitle]="adaptiveSubtitle"
2139
+ (closePopup)="applyValue()"
2140
+ (textInputChange)="handleFilter($event)"
2177
2141
  [placeholder]="placeholder"
2178
2142
  (navigate)="handleNavigate($event)"
2179
- (onApply)="applyValue()"
2180
- (onCancel)="cancelValue()"
2181
- >
2182
- </responsive-renderer>
2143
+ [searchBarValue]="text">
2144
+ </kendo-adaptive-renderer>
2183
2145
 
2184
2146
  <ng-template #sharedPopupActionSheetTemplate>
2185
2147
  <!--header template-->
@@ -2188,32 +2150,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2188
2150
  templateRef: headerTemplate.templateRef
2189
2151
  }">
2190
2152
  </ng-template>
2191
- <!--custom item template-->
2192
- <div
2193
- *ngIf="allowCustom && text"
2194
- class="k-list"
2195
- [ngClass]="customItemSizeClass"
2196
- >
2197
- <div class="k-list-item k-custom-item" kendoDropDownsSelectable [multipleSelection]="true" [index]="-1">
2198
- <ng-template *ngIf="customItemTemplate;else default_custom_item_template"
2199
- [templateContext]="{
2200
- templateRef: customItemTemplate.templateRef,
2201
- $implicit: text
2202
- }">
2203
- </ng-template>
2204
- <ng-template #default_custom_item_template>{{ text }}</ng-template>
2205
- <kendo-icon-wrapper
2206
- class="k-icon"
2207
- name="plus"
2208
- [svgIcon]="plusIcon"
2209
- >
2210
- </kendo-icon-wrapper>
2211
- </div>
2212
- </div>
2213
2153
  <!--list-->
2214
2154
  <kendo-list
2215
2155
  #optionsList
2216
- [size]="size"
2156
+ [size]="isAdaptive ? 'large' : size"
2217
2157
  [rounded]="rounded"
2218
2158
  [id]="listBoxId"
2219
2159
  [optionPrefix]="optionPrefix"
@@ -2232,6 +2172,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2232
2172
  [isMultiselect]="true"
2233
2173
  [isActionSheetExpanded]="isActionSheetExpanded"
2234
2174
  [showStickyHeader]="showStickyHeader"
2175
+ [customItemTemplate]="customItemTemplate"
2176
+ [text]="text"
2177
+ [allowCustom]="allowCustom"
2235
2178
  >
2236
2179
  </kendo-list>
2237
2180
  <!--no data template-->
@@ -2254,11 +2197,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2254
2197
  </ng-template>
2255
2198
  `,
2256
2199
  standalone: true,
2257
- imports: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgIf, NgTemplateOutlet, SeparatorComponent, TagListComponent, SearchBarComponent, IconWrapperComponent, ResizeSensorComponent, ResponsiveRendererComponent, TemplateContextDirective, NgClass, SelectableDirective, ListComponent]
2200
+ imports: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgIf, NgTemplateOutlet, SeparatorComponent, TagListComponent, SearchBarComponent, IconWrapperComponent, ResizeSensorComponent, AdaptiveRendererComponent, TemplateContextDirective, ListComponent]
2258
2201
  }]
2259
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: i3.DataService }, { type: i4.SelectionService }, { type: i5.NavigationService }, { type: i6.DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i7.AdaptiveService }]; }, propDecorators: { responsiveRendererComponent: [{
2202
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i2.PopupService }, { type: i3.DataService }, { type: i4.SelectionService }, { type: i5.NavigationService }, { type: i6.DisabledItemsService }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.Injector }, { type: i0.ElementRef }, { type: i7.AdaptiveService }]; }, propDecorators: { adaptiveRendererComponent: [{
2260
2203
  type: ViewChild,
2261
- args: [ResponsiveRendererComponent]
2204
+ args: [AdaptiveRendererComponent]
2262
2205
  }], showStickyHeader: [{
2263
2206
  type: Input
2264
2207
  }], focusableId: [{
@@ -2290,9 +2233,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2290
2233
  type: Input
2291
2234
  }], adaptiveMode: [{
2292
2235
  type: Input
2293
- }], title: [{
2236
+ }], adaptiveTitle: [{
2294
2237
  type: Input
2295
- }], subtitle: [{
2238
+ }], adaptiveSubtitle: [{
2296
2239
  type: Input
2297
2240
  }], disabled: [{
2298
2241
  type: Input
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1745321623,
14
- version: '19.0.0-develop.2',
13
+ publishDate: 1747410176,
14
+ version: '19.0.0-develop.20',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };