@progress/kendo-vue-dropdowns 3.14.2 → 3.15.0-dev.202309281301

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 (62) hide show
  1. package/dist/cdn/js/kendo-vue-dropdowns.js +1 -1
  2. package/dist/es/ComboBox/ComboBox.js +244 -42
  3. package/dist/es/ComboBox/ComboBoxProps.d.ts +8 -0
  4. package/dist/es/DropDownList/DropDownList.d.ts +3 -0
  5. package/dist/es/DropDownList/DropDownList.js +197 -43
  6. package/dist/es/DropDownList/DropDownListProps.d.ts +8 -0
  7. package/dist/es/DropDownTree/DropDownTree.js +257 -105
  8. package/dist/es/DropDownTree/DropDownTreeProps.d.ts +8 -0
  9. package/dist/es/MultiSelect/MultiSelect.js +340 -65
  10. package/dist/es/MultiSelect/MultiSelectProps.d.ts +8 -0
  11. package/dist/es/MultiSelectTree/MultiSelectTree.js +345 -127
  12. package/dist/es/MultiSelectTree/MultiSelectTreeProps.d.ts +8 -0
  13. package/dist/es/common/DropDownBase.d.ts +7 -0
  14. package/dist/es/common/DropDownBase.js +13 -1
  15. package/dist/es/common/ListFilter.d.ts +1 -0
  16. package/dist/es/common/ListFilter.js +31 -25
  17. package/dist/es/common/constants.d.ts +4 -0
  18. package/dist/es/common/constants.js +4 -0
  19. package/dist/es/messages/main.d.ts +10 -0
  20. package/dist/es/messages/main.js +10 -0
  21. package/dist/es/package-metadata.js +1 -1
  22. package/dist/esm/ComboBox/ComboBox.js +244 -42
  23. package/dist/esm/ComboBox/ComboBoxProps.d.ts +8 -0
  24. package/dist/esm/DropDownList/DropDownList.d.ts +3 -0
  25. package/dist/esm/DropDownList/DropDownList.js +197 -43
  26. package/dist/esm/DropDownList/DropDownListProps.d.ts +8 -0
  27. package/dist/esm/DropDownTree/DropDownTree.js +257 -105
  28. package/dist/esm/DropDownTree/DropDownTreeProps.d.ts +8 -0
  29. package/dist/esm/MultiSelect/MultiSelect.js +340 -65
  30. package/dist/esm/MultiSelect/MultiSelectProps.d.ts +8 -0
  31. package/dist/esm/MultiSelectTree/MultiSelectTree.js +345 -127
  32. package/dist/esm/MultiSelectTree/MultiSelectTreeProps.d.ts +8 -0
  33. package/dist/esm/common/DropDownBase.d.ts +7 -0
  34. package/dist/esm/common/DropDownBase.js +13 -1
  35. package/dist/esm/common/ListFilter.d.ts +1 -0
  36. package/dist/esm/common/ListFilter.js +31 -25
  37. package/dist/esm/common/constants.d.ts +4 -0
  38. package/dist/esm/common/constants.js +4 -0
  39. package/dist/esm/messages/main.d.ts +10 -0
  40. package/dist/esm/messages/main.js +10 -0
  41. package/dist/esm/package-metadata.js +1 -1
  42. package/dist/npm/ComboBox/ComboBox.js +242 -40
  43. package/dist/npm/ComboBox/ComboBoxProps.d.ts +8 -0
  44. package/dist/npm/DropDownList/DropDownList.d.ts +3 -0
  45. package/dist/npm/DropDownList/DropDownList.js +195 -41
  46. package/dist/npm/DropDownList/DropDownListProps.d.ts +8 -0
  47. package/dist/npm/DropDownTree/DropDownTree.js +254 -102
  48. package/dist/npm/DropDownTree/DropDownTreeProps.d.ts +8 -0
  49. package/dist/npm/MultiSelect/MultiSelect.js +338 -63
  50. package/dist/npm/MultiSelect/MultiSelectProps.d.ts +8 -0
  51. package/dist/npm/MultiSelectTree/MultiSelectTree.js +343 -125
  52. package/dist/npm/MultiSelectTree/MultiSelectTreeProps.d.ts +8 -0
  53. package/dist/npm/common/DropDownBase.d.ts +7 -0
  54. package/dist/npm/common/DropDownBase.js +12 -0
  55. package/dist/npm/common/ListFilter.d.ts +1 -0
  56. package/dist/npm/common/ListFilter.js +31 -25
  57. package/dist/npm/common/constants.d.ts +4 -0
  58. package/dist/npm/common/constants.js +10 -0
  59. package/dist/npm/messages/main.d.ts +10 -0
  60. package/dist/npm/messages/main.js +11 -1
  61. package/dist/npm/package-metadata.js +1 -1
  62. package/package.json +12 -9
@@ -37,6 +37,9 @@ var ClearButton_1 = require("../common/ClearButton");
37
37
  var kendo_vue_intl_1 = require("@progress/kendo-vue-intl");
38
38
  var main_1 = require("../messages/main");
39
39
  var kendo_svg_icons_1 = require("@progress/kendo-svg-icons");
40
+ var constants_1 = require("../common/constants");
41
+ var kendo_vue_layout_1 = require("@progress/kendo-vue-layout");
42
+ var ListFilter_1 = require("../common/ListFilter");
40
43
  var VALIDATION_MESSAGE = 'Please enter a valid value!';
41
44
  /**
42
45
  * @hidden
@@ -184,6 +187,14 @@ var ComboBoxVue2 = {
184
187
  },
185
188
  groupField: {
186
189
  type: String
190
+ },
191
+ adaptive: {
192
+ type: Boolean,
193
+ default: undefined
194
+ },
195
+ adaptiveTitle: {
196
+ type: String,
197
+ default: undefined
187
198
  }
188
199
  },
189
200
  inject: {
@@ -208,10 +219,13 @@ var ComboBoxVue2 = {
208
219
  suggested: '',
209
220
  group: undefined,
210
221
  isScrolling: false,
211
- itemHeight: 0
222
+ itemHeight: 0,
223
+ state: undefined,
224
+ windowWidth: 0
212
225
  };
213
226
  },
214
227
  created: function created() {
228
+ this.observer = null;
215
229
  this.valueDuringOnChange = undefined;
216
230
  this.currentText = undefined;
217
231
  this.currentValue = undefined;
@@ -238,6 +252,10 @@ var ComboBoxVue2 = {
238
252
  };
239
253
  },
240
254
  mounted: function mounted() {
255
+ this.observer = kendo_vue_common_1.canUseDOM && new ResizeObserver(this.calculateMedia);
256
+ if ((document === null || document === void 0 ? void 0 : document.body) && this.observer) {
257
+ this.observer.observe(document.body);
258
+ }
241
259
  this.hasMounted = true;
242
260
  // @ts-ignore
243
261
  this.input = this.v3 ? this.inputRef.input : this.$refs.input.input;
@@ -246,6 +264,11 @@ var ComboBoxVue2 = {
246
264
  this.base.didMount();
247
265
  this.setValidity();
248
266
  },
267
+ destroyed: !!isV3 ? undefined : function () {
268
+ if (this.observer) {
269
+ this.observer.disconnect();
270
+ }
271
+ },
249
272
  updated: function updated() {
250
273
  var _a;
251
274
  var _b = this.$props,
@@ -255,7 +278,7 @@ var ComboBoxVue2 = {
255
278
  virtual = _b.virtual,
256
279
  groupField = _b.groupField,
257
280
  textField = _b.textField;
258
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
281
+ var opened = this.isOpen;
259
282
  var prevOpened = this.prevOpened !== undefined ? this.prevOpened : this.prevCurrentOpened;
260
283
  var opening = !prevOpened && opened;
261
284
  var closing = prevOpened && !opened;
@@ -337,6 +360,13 @@ var ComboBoxVue2 = {
337
360
  this.virtualTotalHasChanged = true;
338
361
  }
339
362
  this.virtualHasChanged = true;
363
+ },
364
+ isOpen: function isOpen() {
365
+ var _this = this;
366
+ setTimeout(function () {
367
+ var listItem = document.querySelector('.k-list-item');
368
+ _this.itemHeight = _this.base.getListItemHeight(listItem);
369
+ }, 100);
340
370
  }
341
371
  },
342
372
  computed: {
@@ -364,6 +394,30 @@ var ComboBoxVue2 = {
364
394
  'k-rtl': this.$props.dir === 'rtl'
365
395
  };
366
396
  }
397
+ },
398
+ isOpen: {
399
+ get: function get() {
400
+ return this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
401
+ }
402
+ },
403
+ animationStyles: {
404
+ get: function get() {
405
+ return this.windowWidth <= constants_1.MOBILE_SMALL_DEVICE ? {
406
+ top: 0,
407
+ width: '100%',
408
+ height: '100%'
409
+ } : undefined;
410
+ }
411
+ },
412
+ classNameAdaptive: {
413
+ get: function get() {
414
+ return this.windowWidth <= constants_1.MOBILE_SMALL_DEVICE ? 'k-adaptive-actionsheet k-actionsheet-fullscreen' : 'k-adaptive-actionsheet k-actionsheet-bottom';
415
+ }
416
+ },
417
+ adaptiveState: {
418
+ get: function get() {
419
+ return this.windowWidth <= constants_1.MOBILE_MEDIUM_DEVICE && this.$props.adaptive;
420
+ }
367
421
  }
368
422
  },
369
423
  methods: {
@@ -457,8 +511,13 @@ var ComboBoxVue2 = {
457
511
  },
458
512
  toggleBtnClick: function toggleBtnClick(event) {
459
513
  var state = this.base.initState();
514
+ var opened = this.isOpen;
515
+ var renderAdaptive = this.adaptiveState;
460
516
  state.event = event;
461
517
  this.base.togglePopup(state);
518
+ if (!opened && renderAdaptive) {
519
+ this.base.filterChanged('', state);
520
+ }
462
521
  this.applyState(state);
463
522
  },
464
523
  applyValueOnEnter: function applyValueOnEnter(value, state) {
@@ -468,7 +527,7 @@ var ComboBoxVue2 = {
468
527
  dataItems = _c === void 0 ? [] : _c,
469
528
  textField = _b.textField,
470
529
  allowCustom = _b.allowCustom;
471
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
530
+ var opened = this.isOpen;
472
531
  var currentValueText = (0, utils_1.getItemValue)(this.computedValue(), textField);
473
532
  var valueIndex = currentValueText === value ? this.index : (0, utils_1.getItemIndexByText)(dataItems, value, textField);
474
533
  var itemSelected = valueIndex !== -1;
@@ -502,11 +561,11 @@ var ComboBoxVue2 = {
502
561
  dataItems = _c === void 0 ? [] : _c,
503
562
  textField = _b.textField,
504
563
  allowCustom = _b.allowCustom;
505
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
564
+ var opened = this.isOpen;
506
565
  var valueItemText = (0, utils_1.getItemValue)(this.computedValue(), textField);
507
566
  this.suggested = '';
508
567
  if (text === valueItemText || text === '' && !(0, utils_1.isPresent)(valueItemText)) {
509
- if (opened) {
568
+ if (opened && !this.adaptiveState) {
510
569
  this.base.togglePopup(state);
511
570
  }
512
571
  return this.applyState(state);
@@ -525,13 +584,13 @@ var ComboBoxVue2 = {
525
584
  state.data.currentText = undefined;
526
585
  this.base.filterChanged('', state);
527
586
  }
528
- if (opened) {
587
+ if (opened && !this.adaptiveState) {
529
588
  this.base.togglePopup(state);
530
589
  }
531
590
  this.applyState(state);
532
591
  },
533
592
  selectFocusedItem: function selectFocusedItem(text, state) {
534
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
593
+ var opened = this.isOpen;
535
594
  var _a = this.$props,
536
595
  _b = _a.dataItems,
537
596
  dataItems = _b === void 0 ? [] : _b,
@@ -582,7 +641,7 @@ var ComboBoxVue2 = {
582
641
  this.isScrolling = false;
583
642
  }
584
643
  var keyCode = event.keyCode;
585
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
644
+ var opened = this.isOpen;
586
645
  var state = this.base.initState();
587
646
  state.event = event;
588
647
  if (!event.altKey && (keyCode === kendo_vue_common_1.Keys.up || keyCode === kendo_vue_common_1.Keys.down)) {
@@ -603,6 +662,10 @@ var ComboBoxVue2 = {
603
662
  event.preventDefault();
604
663
  this.applyValueOnEnter(event.currentTarget.value, state);
605
664
  } else if (keyCode === kendo_vue_common_1.Keys.esc) {
665
+ if (this.adaptiveState) {
666
+ this.toggleBtnClick(event); // Handle the closing on "Esc" key press in adaptive mode
667
+ }
668
+
606
669
  togglePopup();
607
670
  }
608
671
  } else {
@@ -616,7 +679,7 @@ var ComboBoxVue2 = {
616
679
  inputOnChange: function inputOnChange(event) {
617
680
  var state = this.base.initState();
618
681
  state.event = event;
619
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
682
+ var opened = this.isOpen;
620
683
  var input = event.currentTarget;
621
684
  var value = input.value;
622
685
  if (this.$props.suggest) {
@@ -662,7 +725,7 @@ var ComboBoxVue2 = {
662
725
  state.data.currentText = undefined;
663
726
  }
664
727
  this.triggerOnChange(null, state);
665
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
728
+ var opened = this.isOpen;
666
729
  if (opened) {
667
730
  this.base.togglePopup(state);
668
731
  }
@@ -720,6 +783,12 @@ var ComboBoxVue2 = {
720
783
  this.base.applyState(state);
721
784
  this.valueDuringOnChange = undefined;
722
785
  },
786
+ calculateMedia: function calculateMedia(entries) {
787
+ for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
788
+ var entry = entries_1[_i];
789
+ this.windowWidth = entry.target.clientWidth;
790
+ }
791
+ },
723
792
  repositionPopup: function repositionPopup() {
724
793
  this.base.repositionPopup();
725
794
  },
@@ -733,6 +802,7 @@ var ComboBoxVue2 = {
733
802
  var groupField = this.$props.groupField;
734
803
  var _b = this.$props.dataItems,
735
804
  dataItems = _b === void 0 ? [] : _b;
805
+ var group;
736
806
  if (!groupField || !dataItems.length) {
737
807
  return;
738
808
  }
@@ -741,8 +811,8 @@ var ComboBoxVue2 = {
741
811
  var scrollTop = target.scrollTop - vs.skip * itemHeight;
742
812
  if (groupField) {
743
813
  dataItems = this.base.getGroupedDataModernMode(dataItems, groupField);
814
+ group = dataItems[0][groupField];
744
815
  }
745
- var group = dataItems[0][groupField];
746
816
  for (var i = 1; i < dataItems.length; i++) {
747
817
  if (itemHeight * i > scrollTop) {
748
818
  break;
@@ -759,6 +829,7 @@ var ComboBoxVue2 = {
759
829
  },
760
830
  render: function render(createElement) {
761
831
  var _a;
832
+ var _this = this;
762
833
  var h = gh || createElement;
763
834
  var _b = this.$props,
764
835
  dir = _b.dir,
@@ -775,7 +846,12 @@ var ComboBoxVue2 = {
775
846
  virtual = _b.virtual,
776
847
  size = _b.size,
777
848
  fillMode = _b.fillMode,
778
- rounded = _b.rounded;
849
+ rounded = _b.rounded,
850
+ adaptiveTitle = _b.adaptiveTitle,
851
+ header = _b.header,
852
+ footer = _b.footer,
853
+ groupStickyHeaderItemRender = _b.groupStickyHeaderItemRender,
854
+ placeholder = _b.placeholder;
779
855
  var focused = this.currentFocused;
780
856
  var isValid = !this.$props.validityStyles || this.validity().valid;
781
857
  var text = this.$props.filter !== undefined ? this.$props.filter : this.currentText;
@@ -790,12 +866,146 @@ var ComboBoxVue2 = {
790
866
  height: '200px'
791
867
  }, this.$props.popupSettings);
792
868
  var ariaLabelExpandButton = (0, kendo_vue_intl_1.provideLocalizationService)(this).toLanguageString(main_1.expandButton, main_1.messages[main_1.expandButton]);
869
+ var opened = this.isOpen;
870
+ var renderAdaptive = this.adaptiveState;
793
871
  vs.enabled = virtual !== undefined;
794
872
  if (virtual !== undefined) {
795
873
  vs.skip = virtual.skip;
796
874
  vs.total = virtual.total;
797
875
  vs.pageSize = virtual.pageSize;
798
876
  }
877
+ if (this.group === undefined && this.$props.groupField !== undefined) {
878
+ this.group = (0, utils_1.getItemValue)(this.$props.dataItems[0], this.$props.groupField);
879
+ }
880
+ var handleMobileFilterChange = function handleMobileFilterChange(event) {
881
+ var state = _this.base.initState();
882
+ state.event = event;
883
+ var eventTargetValue = event.event.target.value;
884
+ state.data.text = eventTargetValue;
885
+ _this.base.filterChanged(eventTargetValue, state);
886
+ _this.applyState(state);
887
+ };
888
+ var adaptiveActionSheetHeaderTemplateDef = function adaptiveActionSheetHeaderTemplateDef() {
889
+ return [h("div", {
890
+ "class": "k-actionsheet-titlebar-group k-hbox"
891
+ }, [h("div", {
892
+ "class": "k-actionsheet-title"
893
+ }, [h("div", {
894
+ "class": "k-text-center"
895
+ }, [adaptiveTitle]), placeholder && h("div", {
896
+ "class": "k-actionsheet-subtitle k-text-center"
897
+ }, [placeholder])]), h("div", {
898
+ "class": "k-actionsheet-actions"
899
+ }, [h(kendo_vue_buttons_1.Button, {
900
+ tabindex: 5,
901
+ attrs: this.v3 ? undefined : {
902
+ tabindex: 5,
903
+ "aria-label": "Cancel",
904
+ "aria-disabled": "false",
905
+ type: "button",
906
+ fillMode: "flat",
907
+ icon: "x",
908
+ svgIcon: kendo_svg_icons_1.xIcon
909
+ },
910
+ "aria-label": "Cancel",
911
+ "aria-disabled": "false",
912
+ type: "button",
913
+ fillMode: "flat",
914
+ onClick: _this.toggleBtnClick,
915
+ on: this.v3 ? undefined : {
916
+ "click": _this.toggleBtnClick
917
+ },
918
+ icon: "x",
919
+ svgIcon: kendo_svg_icons_1.xIcon
920
+ })])]), h("div", {
921
+ "class": "k-actionsheet-titlebar-group k-actionsheet-filter"
922
+ }, [renderMobileListFilter.call(_this)])];
923
+ };
924
+ var adaptiveActionSheetHeaderTemplate = kendo_vue_common_1.templateRendering.call(this, adaptiveActionSheetHeaderTemplateDef, kendo_vue_common_1.getListeners.call(this));
925
+ var adaptiveActionSheetContentTemplateDef = function adaptiveActionSheetContentTemplateDef() {
926
+ var _a;
927
+ var headerToRender = base.getTemplateDef.call(_this, header, h);
928
+ var footerToRender = base.getTemplateDef.call(_this, footer, h);
929
+ var groupStickyHeaderTemplate = kendo_vue_common_1.templateRendering.call(_this, groupStickyHeaderItemRender, kendo_vue_common_1.getListeners.call(_this));
930
+ var dataItems = _this.$props.dataItems || [];
931
+ return h("div", {
932
+ "class": "k-list-container"
933
+ }, [headerToRender && h("div", {
934
+ "class": "k-list-header"
935
+ }, [headerToRender]), h("div", {
936
+ "class": (0, kendo_vue_common_1.classNames)('k-list', (_a = {}, _a["k-list-".concat(sizeMap[size] || size)] = !renderAdaptive ? size : false, _a['k-list-lg'] = renderAdaptive ? true : false, _a['k-virtual-list'] = vs.enabled, _a))
937
+ }, [header && h("div", {
938
+ "class": "k-list-header"
939
+ }, [header]), _this.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
940
+ group: _this.group,
941
+ attrs: this.v3 ? undefined : {
942
+ group: _this.group,
943
+ render: groupStickyHeaderTemplate
944
+ },
945
+ render: groupStickyHeaderTemplate
946
+ }), renderList.call(_this), footerToRender && h("div", {
947
+ className: "k-list-footer",
948
+ attrs: this.v3 ? undefined : {
949
+ className: "k-list-footer"
950
+ }
951
+ }, [footerToRender])])]);
952
+ };
953
+ var adaptiveActionSheetContentTemplate = kendo_vue_common_1.templateRendering.call(this, adaptiveActionSheetContentTemplateDef, kendo_vue_common_1.getListeners.call(this));
954
+ var renderAdaptiveListContainer = function renderAdaptiveListContainer() {
955
+ return h(kendo_vue_layout_1.ActionSheet, {
956
+ expand: opened,
957
+ attrs: this.v3 ? undefined : {
958
+ expand: opened,
959
+ animation: true,
960
+ animationStyles: this.animationStyles,
961
+ className: this.classNameAdaptive,
962
+ contentClassName: '!k-overflow-hidden',
963
+ header: adaptiveActionSheetHeaderTemplate,
964
+ content: adaptiveActionSheetContentTemplate,
965
+ navigatableElements: ['input.k-input-inner', '.k-actionsheet-actions > button']
966
+ },
967
+ animation: true,
968
+ animationStyles: this.animationStyles,
969
+ className: this.classNameAdaptive,
970
+ contentClassName: '!k-overflow-hidden',
971
+ header: adaptiveActionSheetHeaderTemplate,
972
+ content: adaptiveActionSheetContentTemplate,
973
+ onClose: this.toggleBtnClick,
974
+ on: this.v3 ? undefined : {
975
+ "close": this.toggleBtnClick
976
+ },
977
+ navigatableElements: ['input.k-input-inner', '.k-actionsheet-actions > button']
978
+ });
979
+ };
980
+ var renderMobileListFilter = function renderMobileListFilter() {
981
+ var state = this.base.initState();
982
+ var mobileText = state.data.text;
983
+ return h(ListFilter_1.ListFilter, {
984
+ adaptiveMode: true,
985
+ attrs: this.v3 ? undefined : {
986
+ adaptiveMode: true,
987
+ value: mobileText,
988
+ size: this.$props.size,
989
+ rounded: this.$props.rounded,
990
+ fillMode: this.$props.fillMode
991
+ },
992
+ value: mobileText,
993
+ ref: 'filterInput',
994
+ onChange: function onChange(ev) {
995
+ return handleMobileFilterChange(ev);
996
+ },
997
+ on: this.v3 ? undefined : {
998
+ "change": function onChange(ev) {
999
+ return handleMobileFilterChange(ev);
1000
+ },
1001
+ "keydown": this.onInputKeyDown
1002
+ },
1003
+ onKeydown: this.onInputKeyDown,
1004
+ size: this.$props.size,
1005
+ rounded: this.$props.rounded,
1006
+ fillMode: this.$props.fillMode
1007
+ });
1008
+ };
799
1009
  var renderList = function renderList() {
800
1010
  var _this2 = this;
801
1011
  var _a;
@@ -812,7 +1022,6 @@ var ComboBoxVue2 = {
812
1022
  };
813
1023
  }
814
1024
  var skip = virtual.skip;
815
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
816
1025
  var translate = "translateY(".concat(vs.translate, "px)");
817
1026
  var focusedIndex = opened ? this.getFocusedIndex() : undefined;
818
1027
  var value = (0, utils_1.isPresent)(text) && text !== selectedItemText ? null : this.computedValue();
@@ -833,7 +1042,7 @@ var ComboBoxVue2 = {
833
1042
  valueField: dataItemKey,
834
1043
  optionsGuid: base.guid,
835
1044
  wrapperStyle: {
836
- maxHeight: popupSettings.height
1045
+ maxHeight: !renderAdaptive ? popupSettings.height : undefined
837
1046
  },
838
1047
  wrapperCssClass: (0, kendo_vue_common_1.classNames)('k-list-content', (_a = {}, _a['k-list-scroller'] = !this.$props.virtual, _a)),
839
1048
  listStyle: vs.enabled ? {
@@ -854,7 +1063,7 @@ var ComboBoxVue2 = {
854
1063
  optionsGuid: base.guid,
855
1064
  ref: 'list',
856
1065
  wrapperStyle: {
857
- maxHeight: popupSettings.height
1066
+ maxHeight: !renderAdaptive ? popupSettings.height : undefined
858
1067
  },
859
1068
  wrapperCssClass: (0, kendo_vue_common_1.classNames)('k-list-content', (_a = {}, _a['k-list-scroller'] = !this.$props.virtual, _a)),
860
1069
  listStyle: vs.enabled ? {
@@ -886,18 +1095,9 @@ var ComboBoxVue2 = {
886
1095
  var renderListContainer = function renderListContainer() {
887
1096
  var _this3 = this;
888
1097
  var _a;
889
- var headerTemplate = kendo_vue_common_1.templateRendering.call(this, this.$props.header, kendo_vue_common_1.getListeners.call(this));
890
- var footerTemplate = kendo_vue_common_1.templateRendering.call(this, this.$props.footer, kendo_vue_common_1.getListeners.call(this));
891
1098
  var groupStickyHeaderTemplate = kendo_vue_common_1.templateRendering.call(this, this.$props.groupStickyHeaderItemRender, kendo_vue_common_1.getListeners.call(this));
892
- var header = kendo_vue_common_1.getTemplate.call(this, {
893
- h: h,
894
- template: headerTemplate
895
- });
896
- var footer = kendo_vue_common_1.getTemplate.call(this, {
897
- h: h,
898
- template: footerTemplate
899
- });
900
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
1099
+ var headerListContainer = base.getTemplateDef.call(this, header);
1100
+ var footerListContainer = base.getTemplateDef.call(this, footer);
901
1101
  var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;
902
1102
  var dataItems = this.$props.dataItems || [];
903
1103
  if (this.group === undefined && this.$props.groupField !== undefined) {
@@ -934,36 +1134,35 @@ var ComboBoxVue2 = {
934
1134
  }),
935
1135
  dir: dir !== undefined ? dir : this.base.dirCalculated
936
1136
  }, this.v3 ? function () {
937
- return [header && h("div", {
1137
+ return [headerListContainer && h("div", {
938
1138
  "class": "k-list-header"
939
- }, [header]), _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
1139
+ }, [headerListContainer]), _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
940
1140
  group: _this3.group,
941
1141
  attrs: _this3.v3 ? undefined : {
942
1142
  group: _this3.group,
943
1143
  render: groupStickyHeaderTemplate
944
1144
  },
945
1145
  render: groupStickyHeaderTemplate
946
- }), renderList.call(_this3), footer && h("div", {
1146
+ }), renderList.call(_this3), footerListContainer && h("div", {
947
1147
  "class": "k-list-footer"
948
- }, [footer])];
949
- } : [header && h("div", {
1148
+ }, [footerListContainer])];
1149
+ } : [headerListContainer && h("div", {
950
1150
  "class": "k-list-header"
951
- }, [header]), _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
1151
+ }, [headerListContainer]), _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
952
1152
  group: _this3.group,
953
1153
  attrs: _this3.v3 ? undefined : {
954
1154
  group: _this3.group,
955
1155
  render: groupStickyHeaderTemplate
956
1156
  },
957
1157
  render: groupStickyHeaderTemplate
958
- }), renderList.call(_this3), footer && h("div", {
1158
+ }), renderList.call(_this3), footerListContainer && h("div", {
959
1159
  "class": "k-list-footer"
960
- }, [footer])])
1160
+ }, [footerListContainer])])
961
1161
  );
962
1162
  };
963
1163
  var renderSearchBar = function renderSearchBar(searchText, searchId) {
964
1164
  var _this = this;
965
1165
  var _a = this.$props,
966
- placeholder = _a.placeholder,
967
1166
  tabIndex = _a.tabIndex,
968
1167
  _b = _a.dataItems,
969
1168
  dataItems = _b === void 0 ? [] : _b,
@@ -973,7 +1172,6 @@ var ComboBoxVue2 = {
973
1172
  skip: 0
974
1173
  };
975
1174
  }
976
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
977
1175
  var value = this.computedValue();
978
1176
  var selectedIndex = Math.max(0, dataItems.findIndex(function (i) {
979
1177
  return (0, utils_1.areSame)(i, value, dataItemKey);
@@ -1028,7 +1226,7 @@ var ComboBoxVue2 = {
1028
1226
  })
1029
1227
  );
1030
1228
  };
1031
- var combobox = h("span", {
1229
+ var comboboxDefault = h("span", {
1032
1230
  "class": (0, kendo_vue_common_1.classNames)('k-combobox k-input', (_a = {}, _a["k-input-".concat(sizeMap[size] || size)] = size, _a["k-rounded-".concat(roundedMap[rounded] || rounded)] = rounded, _a["k-input-".concat(fillMode)] = fillMode, _a['k-invalid'] = !isValid, _a['k-loading'] = loading, _a['k-required'] = this.required, _a['k-disabled'] = disabled, _a['k-focus'] = focused && !disabled, _a), className),
1033
1231
  ref: (0, kendo_vue_common_1.setRef)(this, 'kendoAnchor', this.anchor),
1034
1232
  style: !label ? style : __assign(__assign({}, style), {
@@ -1087,7 +1285,11 @@ var ComboBoxVue2 = {
1087
1285
  onMousedown: function mousedown(e) {
1088
1286
  return e.preventDefault();
1089
1287
  }
1090
- }), renderListContainer.call(this)]);
1288
+ }), !renderAdaptive && renderListContainer.call(this)]);
1289
+ // The following one combines the default rendering of the Combobox and the Adaptive rendering.
1290
+ // This is needed because of Vue 2 specifics
1291
+ var combobox = [comboboxDefault, renderAdaptive && renderAdaptiveListContainer.call(this)];
1292
+ var comboboxToRender = isV3 ? combobox : this.$props.adaptive ? h("span", [combobox]) : comboboxDefault;
1091
1293
  return label ? h("span", {
1092
1294
  "class": this.spanClassNames,
1093
1295
  onFocusin: this.handleFocus,
@@ -1098,7 +1300,7 @@ var ComboBoxVue2 = {
1098
1300
  attrs: this.v3 ? undefined : {
1099
1301
  dir: this.$props.dir
1100
1302
  }
1101
- }, [combobox, this.$props.label ? id ? h("label", {
1303
+ }, [comboboxToRender, this.$props.label ? id ? h("label", {
1102
1304
  "for": id,
1103
1305
  attrs: this.v3 ? undefined : {
1104
1306
  "for": id
@@ -1106,7 +1308,7 @@ var ComboBoxVue2 = {
1106
1308
  "class": "k-label"
1107
1309
  }, [this.$props.label]) : h("span", {
1108
1310
  "class": "k-label"
1109
- }, [this.$props.label]) : null]) : combobox;
1311
+ }, [this.$props.label]) : null]) : comboboxToRender;
1110
1312
  }
1111
1313
  };
1112
1314
  exports.ComboBoxVue2 = ComboBoxVue2;
@@ -266,4 +266,12 @@ export interface ComboBoxProps extends FormComponentProps {
266
266
  * Fires when a ComboBox sticky group header item is about to be rendered. Used to override the default appearance of the sticky group header of the component.
267
267
  */
268
268
  groupStickyHeaderItemRender?: any;
269
+ /**
270
+ * Provides different rendering of the popup element based on the screen dimensions ([see example]({% slug adaptive_rendering_combobox %})).
271
+ */
272
+ adaptive?: boolean;
273
+ /**
274
+ * Specifies the text that is rendered as title in the adaptive popup ([see example]({% slug adaptive_rendering_combobox %})).
275
+ */
276
+ adaptiveTitle?: string;
269
277
  }
@@ -83,6 +83,9 @@ export interface DropDownListComputed {
83
83
  [key: string]: any;
84
84
  spanClassNames: any;
85
85
  index: number;
86
+ isOpen: boolean;
87
+ classNameAdaptive: string;
88
+ animationStyles: object | undefined;
86
89
  }
87
90
  /**
88
91
  * @hidden