@progress/kendo-angular-dropdowns 12.0.0-develop.6 → 12.0.0-develop.8

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 (33) hide show
  1. package/autocomplete/autocomplete.component.d.ts +82 -20
  2. package/comboboxes/combobox.component.d.ts +76 -8
  3. package/comboboxes/multicolumncombobox.component.d.ts +4 -0
  4. package/common/action-sheet.component.d.ts +43 -0
  5. package/common/list.component.d.ts +2 -1
  6. package/common/localization/messages.d.ts +9 -1
  7. package/common/selection/selectable.directive.d.ts +2 -1
  8. package/common/shared.module.d.ts +11 -7
  9. package/common/util.d.ts +39 -2
  10. package/dropdownlist/dropdownlist.component.d.ts +78 -9
  11. package/dropdowntrees/dropdowntree.component.d.ts +80 -8
  12. package/dropdowntrees/multiselecttree.component.d.ts +90 -6
  13. package/esm2020/autocomplete/autocomplete.component.mjs +294 -116
  14. package/esm2020/comboboxes/combobox.component.mjs +251 -60
  15. package/esm2020/comboboxes/multicolumncombobox.component.mjs +110 -119
  16. package/esm2020/common/action-sheet.component.mjs +243 -0
  17. package/esm2020/common/list.component.mjs +11 -2
  18. package/esm2020/common/localization/messages.mjs +5 -1
  19. package/esm2020/common/selection/selectable.directive.mjs +3 -3
  20. package/esm2020/common/shared.module.mjs +13 -6
  21. package/esm2020/common/util.mjs +68 -2
  22. package/esm2020/dropdownlist/dropdownlist.component.mjs +245 -64
  23. package/esm2020/dropdowntrees/dropdowntree.component.mjs +254 -56
  24. package/esm2020/dropdowntrees/multiselecttree.component.mjs +291 -55
  25. package/esm2020/index.mjs +1 -0
  26. package/esm2020/multiselect/multiselect.component.mjs +320 -88
  27. package/esm2020/package-metadata.mjs +2 -2
  28. package/fesm2015/progress-kendo-angular-dropdowns.mjs +2085 -552
  29. package/fesm2020/progress-kendo-angular-dropdowns.mjs +2054 -545
  30. package/index.d.ts +2 -0
  31. package/multiselect/multiselect.component.d.ts +87 -10
  32. package/package.json +9 -8
  33. package/schematics/ngAdd/index.js +2 -2
@@ -19,7 +19,7 @@ import { DisabledItemsService } from '../common/disabled-items/disabled-items.se
19
19
  import { merge, of, Subject, Subscription } from 'rxjs';
20
20
  import { catchError, filter, map, partition, tap, throttleTime } from 'rxjs/operators';
21
21
  import { isChanged, isDocumentAvailable, KendoInput, hasObservers, anyChanged } from '@progress/kendo-angular-common';
22
- import { isPresent, guid, getter, isEmptyString, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass } from '../common/util';
22
+ import { isPresent, guid, getter, isEmptyString, isUntouched, inDropDown, getSizeClass, getRoundedClass, getFillModeClass, isTruthy, windowSize, setListBoxAriaLabelLebBy, setActionSheetTitle, updateActionSheetAdaptiveAppearance, animationDuration } from '../common/util';
23
23
  import { NavigationAction } from '../common/navigation/navigation-action';
24
24
  import { Keys } from '@progress/kendo-angular-common';
25
25
  import { PreventableEvent } from '../common/models/preventable-event';
@@ -33,6 +33,7 @@ import { ListComponent } from '../common/list.component';
33
33
  import { normalizeVirtualizationSettings } from '../common/models/virtualization-settings';
34
34
  import { pointers } from '@progress/kendo-common';
35
35
  import { caretAltDownIcon, xIcon } from '@progress/kendo-svg-icons';
36
+ import { ResponsiveRendererComponent } from '../common/action-sheet.component';
36
37
  import * as i0 from "@angular/core";
37
38
  import * as i1 from "@progress/kendo-angular-l10n";
38
39
  import * as i2 from "@progress/kendo-angular-popup";
@@ -42,11 +43,12 @@ import * as i5 from "../common/disabled-items/disabled-items.service";
42
43
  import * as i6 from "../common/data.service";
43
44
  import * as i7 from "../common/searchbar.component";
44
45
  import * as i8 from "@progress/kendo-angular-icons";
45
- import * as i9 from "../common/list.component";
46
- import * as i10 from "@progress/kendo-angular-common";
47
- import * as i11 from "../common/localization/localized-messages.directive";
48
- import * as i12 from "@angular/common";
49
- import * as i13 from "../common/templates/template-context.directive";
46
+ import * as i9 from "@progress/kendo-angular-common";
47
+ import * as i10 from "../common/action-sheet.component";
48
+ import * as i11 from "../common/list.component";
49
+ import * as i12 from "../common/localization/localized-messages.directive";
50
+ import * as i13 from "@angular/common";
51
+ import * as i14 from "../common/templates/template-context.directive";
50
52
  /**
51
53
  * @hidden
52
54
  */
@@ -88,6 +90,10 @@ export class ComboBoxComponent {
88
90
  this.cdr = cdr;
89
91
  this.renderer = renderer;
90
92
  this.touchEnabled = touchEnabled;
93
+ /**
94
+ * @hidden
95
+ */
96
+ this.animationDuration = animationDuration;
91
97
  /**
92
98
  * @hidden
93
99
  */
@@ -157,12 +163,15 @@ export class ComboBoxComponent {
157
163
  */
158
164
  this.placeholder = "";
159
165
  /**
160
- * Sets the height of the suggestions list. By default, `listHeight` is 200px.
161
- *
162
- * > The `listHeight` property affects only the list of suggestions and not the whole popup container.
163
- * > To set the height of the popup container, use `popupSettings.height`.
166
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
164
167
  */
165
- this.listHeight = 200;
168
+ this.adaptiveMode = 'none';
169
+ /**
170
+ * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.
171
+ * By default the ActionSheet title uses the text provided for the label of the AutoComplete.
172
+ */
173
+ this.title = '';
174
+ this._listHeight = 200;
166
175
  /**
167
176
  * Enables the auto-completion of the text based on the first data item.
168
177
  */
@@ -237,6 +246,10 @@ export class ComboBoxComponent {
237
246
  this.onBlur = new EventEmitter();
238
247
  this.widgetClasses = true;
239
248
  this._isFocused = false;
249
+ /**
250
+ * @hidden
251
+ */
252
+ this.windowSize = 'large';
240
253
  this.listBoxId = `k-${guid()}`;
241
254
  this.optionPrefix = `k-${guid()}`;
242
255
  this.onChangeCallback = (_) => { };
@@ -266,6 +279,18 @@ export class ComboBoxComponent {
266
279
  this.direction = localization.rtl ? 'rtl' : 'ltr';
267
280
  this.data = [];
268
281
  }
282
+ /**
283
+ * @hidden
284
+ */
285
+ get actionSheet() {
286
+ return this.responsiveRendererComponent?.actionSheet;
287
+ }
288
+ /**
289
+ * @hidden
290
+ */
291
+ get actionSheetSearchBar() {
292
+ return this.responsiveRendererComponent?.actionSheetSearchBar;
293
+ }
269
294
  set text(text) {
270
295
  this._text = isPresent(text) ? text.toString() : "";
271
296
  }
@@ -367,6 +392,22 @@ export class ComboBoxComponent {
367
392
  }
368
393
  return this._valuePrimitive;
369
394
  }
395
+ /**
396
+ * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.
397
+ * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.
398
+ */
399
+ set subtitle(_subtitle) {
400
+ this._subtitle = _subtitle;
401
+ }
402
+ get subtitle() {
403
+ return this._subtitle || this.placeholder;
404
+ }
405
+ /**
406
+ * @hidden
407
+ */
408
+ get isAdaptiveModeEnabled() {
409
+ return this.adaptiveMode === 'auto';
410
+ }
370
411
  /**
371
412
  * Configures the popup of the ComboBox.
372
413
  *
@@ -383,6 +424,24 @@ export class ComboBoxComponent {
383
424
  get popupSettings() {
384
425
  return this._popupSettings;
385
426
  }
427
+ /**
428
+ * Sets the height of the options list in the popup. By default, `listHeight` is 200px.
429
+ *
430
+ * > The `listHeight` property affects only the list of options and not the whole popup container.
431
+ * > To set the height of the popup container, use `popupSettings.height`.
432
+ *
433
+ * > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.
434
+ */
435
+ set listHeight(_listHeight) {
436
+ this._listHeight = _listHeight;
437
+ }
438
+ ;
439
+ get listHeight() {
440
+ if (this.isAdaptive) {
441
+ return;
442
+ }
443
+ return this._listHeight;
444
+ }
386
445
  /**
387
446
  * Defines a Boolean function that is executed for each data item in the component
388
447
  * ([see examples]({% slug disableditems_combobox %})). Determines whether the item will be disabled.
@@ -499,6 +558,19 @@ export class ComboBoxComponent {
499
558
  return 'visible';
500
559
  }
501
560
  }
561
+ /**
562
+ * @hidden
563
+ */
564
+ get isActionSheetExpanded() {
565
+ return this.actionSheet?.expanded;
566
+ }
567
+ ;
568
+ /**
569
+ * @hidden
570
+ */
571
+ get isAdaptive() {
572
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
573
+ }
502
574
  get popupWidth() {
503
575
  let wrapperOffsetWidth = 0;
504
576
  if (isDocumentAvailable()) {
@@ -521,6 +593,11 @@ export class ComboBoxComponent {
521
593
  this.attachSelectClickHandler();
522
594
  this.setComponentClasses();
523
595
  }
596
+ ngAfterViewInit() {
597
+ this.windowSize = windowSize();
598
+ this.cdr.detectChanges();
599
+ this.renderer.setAttribute(this.actionSheet?.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
600
+ }
524
601
  createValueStream() {
525
602
  const valueStream = this.valueSubject.pipe(filter((candidate) => {
526
603
  const current = getter(this.value, this.valueField);
@@ -721,7 +798,7 @@ export class ComboBoxComponent {
721
798
  }
722
799
  }
723
800
  /**
724
- * Toggles the visibility of the popup. If you use the `toggle` method to open or close the popup,
801
+ * Toggles the visibility of the popup or actionSheet. If you use the `toggle` method to open or close the popup or actionSheet,
725
802
  * the `open` and `close` events will not be fired.
726
803
  *
727
804
  * @param open - The state of the popup.
@@ -734,10 +811,19 @@ export class ComboBoxComponent {
734
811
  });
735
812
  }
736
813
  /**
737
- * Returns the current open state of the popup.
814
+ * Returns the current open state. Returns `true` if the popup or actionSheet is open.
738
815
  */
739
816
  get isOpen() {
740
- return this._open;
817
+ return isTruthy(this._open || this.isActionSheetExpanded);
818
+ }
819
+ /**
820
+ * @hidden
821
+ */
822
+ handleClick() {
823
+ this.windowSize = windowSize();
824
+ if (this.isAdaptive) {
825
+ this.togglePopup(true);
826
+ }
741
827
  }
742
828
  /**
743
829
  * Resets the value of the ComboBox.
@@ -820,7 +906,14 @@ export class ComboBoxComponent {
820
906
  * @hidden
821
907
  */
822
908
  onResize() {
823
- if (this.isOpen) {
909
+ if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {
910
+ if (this.isOpen) {
911
+ this.togglePopup(false);
912
+ }
913
+ this.windowSize = windowSize();
914
+ this.cdr.detectChanges();
915
+ }
916
+ if (this.isOpen && !this.isActionSheetExpanded) {
824
917
  const popupWrapper = this.popupRef.popupElement;
825
918
  const { min, max } = this.popupWidth;
826
919
  popupWrapper.style.minWidth = min;
@@ -926,13 +1019,7 @@ export class ComboBoxComponent {
926
1019
  return result;
927
1020
  }
928
1021
  search(text, startFrom = 0) {
929
- let index;
930
- if (text.length && this.dataService.itemsCount) {
931
- index = this.dataService.findIndex(this.findIndexPredicate(text), startFrom);
932
- }
933
- else {
934
- index = -1;
935
- }
1022
+ const index = this.findIndex(text, startFrom);
936
1023
  if (this.disabledItemsService.isIndexDisabled(index)) {
937
1024
  if (index + 1 < this.dataService.itemsCount) {
938
1025
  this.search(text, index + 1);
@@ -948,6 +1035,18 @@ export class ComboBoxComponent {
948
1035
  }
949
1036
  }
950
1037
  }
1038
+ /**
1039
+ * @hidden
1040
+ */
1041
+ onAdaptiveTextBoxChange(text) {
1042
+ if (this.filterable && this.filterText !== text) {
1043
+ this.filterText = text;
1044
+ this.filterChange.emit(text);
1045
+ }
1046
+ else {
1047
+ this.search(text);
1048
+ }
1049
+ }
951
1050
  /**
952
1051
  * @hidden
953
1052
  */
@@ -1005,6 +1104,10 @@ export class ComboBoxComponent {
1005
1104
  ((action === NavigationAction.Enter && this.isOpen) || action !== NavigationAction.Enter)) {
1006
1105
  event.preventDefault();
1007
1106
  }
1107
+ if (action === NavigationAction.Tab && this.isActionSheetExpanded) {
1108
+ event.stopImmediatePropagation();
1109
+ this.togglePopup(false);
1110
+ }
1008
1111
  }
1009
1112
  handleEnter() {
1010
1113
  const text = this.text;
@@ -1036,32 +1139,34 @@ export class ComboBoxComponent {
1036
1139
  * @hidden
1037
1140
  */
1038
1141
  handleBlur() {
1039
- this._filtering = false;
1040
- this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers
1041
- this.isFocused = false;
1042
- const unresolvedSelection = getter(this.dataItem, this.valueField) !== getter(this.value, this.valueField);
1043
- const currentText = this.searchbar.value;
1044
- const textHasChanged = currentText !== (getter(this.dataItem, this.textField) || '');
1045
- const valueHasChanged = unresolvedSelection || textHasChanged;
1046
- const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement);
1047
- if (runInZone) {
1048
- this.zone.run(() => {
1049
- if (valueHasChanged) {
1050
- const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();
1051
- if (lowerCaseMatch || unresolvedSelection) {
1052
- this.selectionService.change(this.selectionService.focused);
1053
- }
1054
- else {
1055
- this.change(currentText, true);
1142
+ if (!this.isActionSheetExpanded) {
1143
+ this._filtering = false;
1144
+ this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers
1145
+ this.isFocused = false;
1146
+ const unresolvedSelection = getter(this.dataItem, this.valueField) !== getter(this.value, this.valueField);
1147
+ const currentText = this.searchbar.value;
1148
+ const textHasChanged = currentText !== (getter(this.dataItem, this.textField) || '');
1149
+ const valueHasChanged = unresolvedSelection || textHasChanged;
1150
+ const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement);
1151
+ if (runInZone) {
1152
+ this.zone.run(() => {
1153
+ if (valueHasChanged) {
1154
+ const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();
1155
+ if (lowerCaseMatch || unresolvedSelection) {
1156
+ this.selectionService.change(this.selectionService.focused);
1157
+ }
1158
+ else {
1159
+ this.change(currentText, true);
1160
+ }
1056
1161
  }
1057
- }
1058
- this.onBlur.emit();
1059
- this.onTouchedCallback();
1162
+ this.onBlur.emit();
1163
+ this.onTouchedCallback();
1164
+ this.togglePopup(false);
1165
+ });
1166
+ }
1167
+ else {
1060
1168
  this.togglePopup(false);
1061
- });
1062
- }
1063
- else {
1064
- this.togglePopup(false);
1169
+ }
1065
1170
  }
1066
1171
  }
1067
1172
  /**
@@ -1124,6 +1229,9 @@ export class ComboBoxComponent {
1124
1229
  }
1125
1230
  else {
1126
1231
  this.valueSubject.next(candidate);
1232
+ if (this.isActionSheetExpanded) {
1233
+ this.togglePopup(false);
1234
+ }
1127
1235
  }
1128
1236
  }
1129
1237
  emitValueChange() {
@@ -1197,6 +1305,11 @@ export class ComboBoxComponent {
1197
1305
  if (this.virtual) {
1198
1306
  this.virtual.skip = 0;
1199
1307
  }
1308
+ this.windowSize = windowSize();
1309
+ if (this.isAdaptive) {
1310
+ this.openActionSheet();
1311
+ return;
1312
+ }
1200
1313
  const horizontalAlign = this.direction === "rtl" ? "right" : "left";
1201
1314
  const anchorPosition = { horizontal: horizontalAlign, vertical: "bottom" };
1202
1315
  const popupPosition = { horizontal: horizontalAlign, vertical: "top" };
@@ -1228,7 +1341,9 @@ export class ComboBoxComponent {
1228
1341
  }
1229
1342
  this.popupRef.popupOpen.subscribe(() => {
1230
1343
  this.cdr.detectChanges();
1344
+ setListBoxAriaLabelLebBy(this.optionsList, this.searchbar.input, this.renderer);
1231
1345
  this.optionsList.scrollToItem(this.selectionService.focused);
1346
+ this.selectionService.focus(this.selectionService.focused);
1232
1347
  this.opened.emit();
1233
1348
  });
1234
1349
  this.popupRef.popupClose.subscribe(() => {
@@ -1239,7 +1354,11 @@ export class ComboBoxComponent {
1239
1354
  _toggle(open) {
1240
1355
  this._open = open;
1241
1356
  this.destroyPopup();
1357
+ if (this.isActionSheetExpanded) {
1358
+ this.closeActionSheet();
1359
+ }
1242
1360
  if (this._open) {
1361
+ this.windowSize = windowSize();
1243
1362
  this.createPopup();
1244
1363
  }
1245
1364
  }
@@ -1295,9 +1414,40 @@ export class ComboBoxComponent {
1295
1414
  this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));
1296
1415
  }
1297
1416
  }
1417
+ findIndex(value, startFrom = 0) {
1418
+ let index;
1419
+ if (value && value.length && this.dataService.itemsCount) {
1420
+ index = this.dataService.findIndex(this.findIndexPredicate(value), startFrom);
1421
+ }
1422
+ else {
1423
+ index = -1;
1424
+ }
1425
+ ;
1426
+ return index;
1427
+ }
1428
+ closeActionSheet() {
1429
+ this.actionSheet.toggle(false);
1430
+ this.actionSheetSearchBar.value = '';
1431
+ this.filterable && this.filterChange.emit('');
1432
+ this.searchbar.input.nativeElement.focus();
1433
+ this.closed.emit();
1434
+ }
1435
+ openActionSheet() {
1436
+ this.windowSize = windowSize();
1437
+ this.actionSheet.toggle(true);
1438
+ this.cdr.detectChanges();
1439
+ setListBoxAriaLabelLebBy(this.optionsList, this.searchbar.input, this.renderer);
1440
+ this.title = setActionSheetTitle(this.searchbar.input, this.title);
1441
+ updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);
1442
+ this.cdr.detectChanges();
1443
+ this.opened.emit();
1444
+ this.optionsList.scrollToItem(this.selectionService.focused);
1445
+ this.selectionService.focus(this.selectionService.focused);
1446
+ this.actionSheetSearchBar.focus();
1447
+ }
1298
1448
  }
1299
1449
  ComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ComboBoxComponent, deps: [{ token: i0.ElementRef }, { 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: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1300
- ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ComboBoxComponent, selector: "kendo-combobox", inputs: { focusableId: "focusableId", allowCustom: "allowCustom", data: "data", value: "value", textField: "textField", valueField: "valueField", valuePrimitive: "valuePrimitive", valueNormalizer: "valueNormalizer", placeholder: "placeholder", popupSettings: "popupSettings", listHeight: "listHeight", iconClass: "iconClass", loading: "loading", suggest: "suggest", clearButton: "clearButton", disabled: "disabled", itemDisabled: "itemDisabled", readonly: "readonly", tabindex: "tabindex", tabIndex: "tabIndex", filterable: "filterable", virtual: "virtual", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", selectionChange: "selectionChange", filterChange: "filterChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-combobox": "this.widgetClasses", "class.k-input": "this.widgetClasses", "class.k-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.dir": "this.dir" } }, providers: [
1450
+ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ComboBoxComponent, selector: "kendo-combobox", inputs: { focusableId: "focusableId", allowCustom: "allowCustom", data: "data", value: "value", textField: "textField", valueField: "valueField", valuePrimitive: "valuePrimitive", valueNormalizer: "valueNormalizer", placeholder: "placeholder", adaptiveMode: "adaptiveMode", title: "title", subtitle: "subtitle", popupSettings: "popupSettings", listHeight: "listHeight", iconClass: "iconClass", loading: "loading", suggest: "suggest", clearButton: "clearButton", disabled: "disabled", itemDisabled: "itemDisabled", readonly: "readonly", tabindex: "tabindex", tabIndex: "tabIndex", filterable: "filterable", virtual: "virtual", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", selectionChange: "selectionChange", filterChange: "filterChange", open: "open", opened: "opened", close: "close", closed: "closed", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-combobox": "this.widgetClasses", "class.k-input": "this.widgetClasses", "class.k-disabled": "this.isDisabled", "class.k-loading": "this.isLoading", "attr.dir": "this.dir" } }, providers: [
1301
1451
  COMBOBOX_VALUE_ACCESSOR,
1302
1452
  DataService,
1303
1453
  SelectionService,
@@ -1314,7 +1464,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
1314
1464
  {
1315
1465
  provide: KendoInput, useExisting: forwardRef(() => ComboBoxComponent)
1316
1466
  }
1317
- ], queries: [{ propertyName: "template", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "groupTemplate", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: "fixedGroupTemplate", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "searchbar", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], exportAs: ["kendoComboBox"], usesOnChanges: true, ngImport: i0, template: `
1467
+ ], queries: [{ propertyName: "template", first: true, predicate: ItemTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: HeaderTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: FooterTemplateDirective, descendants: true }, { propertyName: "noDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "groupTemplate", first: true, predicate: GroupTemplateDirective, descendants: true }, { propertyName: "fixedGroupTemplate", first: true, predicate: FixedGroupTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "responsiveRendererComponent", first: true, predicate: ResponsiveRendererComponent, descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "searchbar", first: true, predicate: SearchBarComponent, descendants: true, static: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true, static: true }], exportAs: ["kendoComboBox"], usesOnChanges: true, ngImport: i0, template: `
1318
1468
  <ng-container kendoComboBoxLocalizedMessages
1319
1469
  i18n-noDataText="kendo.combobox.noDataText|The text displayed in the popup when there are no items"
1320
1470
  noDataText="NO DATA FOUND"
@@ -1341,13 +1491,14 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
1341
1491
  [userInput]="text"
1342
1492
  [suggestedText]="getSuggestion()"
1343
1493
  [disabled]="disabled"
1344
- [readonly]="readonly"
1494
+ [readonly]="readonly || isAdaptive"
1345
1495
  [tabIndex]="tabIndex"
1346
1496
  [placeholder]="placeholder"
1347
1497
  (onNavigate)="handleNavigate($event)"
1348
1498
  (valueChange)="searchBarChange($event)"
1349
1499
  (onBlur)="handleBlur()"
1350
1500
  (onFocus)="handleFocus()"
1501
+ (click)="handleClick()"
1351
1502
  ></kendo-searchbar>
1352
1503
  <span
1353
1504
  *ngIf="clearButton && !loading && !disabled && !readonly && text?.length"
@@ -1387,6 +1538,25 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
1387
1538
  <span *ngIf="loading || iconClass" class="k-button-icon k-icon" [ngClass]="buttonClasses"></span>
1388
1539
  </button>
1389
1540
  <ng-template #popupTemplate>
1541
+ <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1542
+ </ng-template>
1543
+ <kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1544
+ <ng-container #container></ng-container>
1545
+
1546
+ <!--adaptive rendering-->
1547
+ <responsive-renderer
1548
+ [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
1549
+ [isActionSheetExpanded]="isActionSheetExpanded"
1550
+ [title]="title"
1551
+ [showTextInput]="true"
1552
+ [subtitle]="subtitle"
1553
+ (closePopup)="togglePopup(false)"
1554
+ (textInputChange)="onAdaptiveTextBoxChange($event)"
1555
+ (navigate)="handleNavigate($event)"
1556
+ [placeholder]="placeholder"
1557
+ >
1558
+ </responsive-renderer>
1559
+ <ng-template #sharedPopupActionSheetTemplate>
1390
1560
  <!--header template-->
1391
1561
  <ng-template *ngIf="headerTemplate"
1392
1562
  [templateContext]="{
@@ -1430,11 +1600,7 @@ ComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
1430
1600
  }">
1431
1601
  </ng-template>
1432
1602
  </ng-template>
1433
- <ng-template [ngIf]="isOpen">
1434
- <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
1435
- </ng-template>
1436
- <ng-container #container></ng-container>
1437
- `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i9.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }, { type: i10.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: i11.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i13.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
1603
+ `, isInline: true, components: [{ type: i7.SearchBarComponent, selector: "kendo-searchbar", inputs: ["id", "tagListId", "activeDescendant", "disabled", "readonly", "tabIndex", "role", "isLoading", "ariaControls", "ariaExpanded", "isSuggestable", "isFilterable", "userInput", "suggestedText", "placeholder"], outputs: ["valueChange", "onBlur", "onFocus", "onClick", "onNavigate"] }, { type: i8.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i9.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: i10.ResponsiveRendererComponent, selector: "responsive-renderer", inputs: ["title", "showActionButtons", "subtitle", "size", "showTextInput", "sharedPopupActionSheetTemplate", "isActionSheetExpanded", "text", "placeholder"], outputs: ["closePopup", "textInputChange", "navigate", "onExpand", "onCollapse", "onApply", "onCancel"] }, { type: i11.ListComponent, selector: "kendo-list", inputs: ["selected", "focused", "textField", "valueField", "height", "template", "groupTemplate", "fixedGroupTemplate", "show", "id", "optionPrefix", "multipleSelection", "virtual", "type", "checkboxes", "ariaLive", "isMultiselect", "isActionSheetExpanded", "data", "size", "rounded"], outputs: ["onClick", "pageChange", "listResize"] }], directives: [{ type: i12.LocalizedMessagesDirective, selector: "\n [kendoDropDownListLocalizedMessages],\n [kendoDropDownTreeLocalizedMessages],\n [kendoComboBoxLocalizedMessages],\n [kendoMultiColumnComboBoxLocalizedMessages],\n [kendoAutoCompleteLocalizedMessages],\n [kendoMultiSelectLocalizedMessages],\n [kendoMultiSelectTreeLocalizedMessages]\n " }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i14.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }] });
1438
1604
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ComboBoxComponent, decorators: [{
1439
1605
  type: Component,
1440
1606
  args: [{
@@ -1485,13 +1651,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1485
1651
  [userInput]="text"
1486
1652
  [suggestedText]="getSuggestion()"
1487
1653
  [disabled]="disabled"
1488
- [readonly]="readonly"
1654
+ [readonly]="readonly || isAdaptive"
1489
1655
  [tabIndex]="tabIndex"
1490
1656
  [placeholder]="placeholder"
1491
1657
  (onNavigate)="handleNavigate($event)"
1492
1658
  (valueChange)="searchBarChange($event)"
1493
1659
  (onBlur)="handleBlur()"
1494
1660
  (onFocus)="handleFocus()"
1661
+ (click)="handleClick()"
1495
1662
  ></kendo-searchbar>
1496
1663
  <span
1497
1664
  *ngIf="clearButton && !loading && !disabled && !readonly && text?.length"
@@ -1531,6 +1698,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1531
1698
  <span *ngIf="loading || iconClass" class="k-button-icon k-icon" [ngClass]="buttonClasses"></span>
1532
1699
  </button>
1533
1700
  <ng-template #popupTemplate>
1701
+ <ng-container *ngTemplateOutlet="sharedPopupActionSheetTemplate"></ng-container>
1702
+ </ng-template>
1703
+ <kendo-resize-sensor *ngIf="isOpen || isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1704
+ <ng-container #container></ng-container>
1705
+
1706
+ <!--adaptive rendering-->
1707
+ <responsive-renderer
1708
+ [sharedPopupActionSheetTemplate]="sharedPopupActionSheetTemplate"
1709
+ [isActionSheetExpanded]="isActionSheetExpanded"
1710
+ [title]="title"
1711
+ [showTextInput]="true"
1712
+ [subtitle]="subtitle"
1713
+ (closePopup)="togglePopup(false)"
1714
+ (textInputChange)="onAdaptiveTextBoxChange($event)"
1715
+ (navigate)="handleNavigate($event)"
1716
+ [placeholder]="placeholder"
1717
+ >
1718
+ </responsive-renderer>
1719
+ <ng-template #sharedPopupActionSheetTemplate>
1534
1720
  <!--header template-->
1535
1721
  <ng-template *ngIf="headerTemplate"
1536
1722
  [templateContext]="{
@@ -1574,10 +1760,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1574
1760
  }">
1575
1761
  </ng-template>
1576
1762
  </ng-template>
1577
- <ng-template [ngIf]="isOpen">
1578
- <kendo-resize-sensor (resize)="onResize()"></kendo-resize-sensor>
1579
- </ng-template>
1580
- <ng-container #container></ng-container>
1581
1763
  `
1582
1764
  }]
1583
1765
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { 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: undefined, decorators: [{
@@ -1585,7 +1767,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1585
1767
  }, {
1586
1768
  type: Inject,
1587
1769
  args: [TOUCH_ENABLED]
1588
- }] }]; }, propDecorators: { focusableId: [{
1770
+ }] }]; }, propDecorators: { responsiveRendererComponent: [{
1771
+ type: ViewChild,
1772
+ args: [ResponsiveRendererComponent]
1773
+ }], focusableId: [{
1589
1774
  type: Input
1590
1775
  }], allowCustom: [{
1591
1776
  type: Input
@@ -1603,6 +1788,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1603
1788
  type: Input
1604
1789
  }], placeholder: [{
1605
1790
  type: Input
1791
+ }], adaptiveMode: [{
1792
+ type: Input
1793
+ }], title: [{
1794
+ type: Input
1795
+ }], subtitle: [{
1796
+ type: Input
1606
1797
  }], popupSettings: [{
1607
1798
  type: Input
1608
1799
  }], listHeight: [{