@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
@@ -31,6 +31,7 @@ var allVue = Vue;
31
31
  var gh = allVue.h;
32
32
  var isV3 = allVue.version && allVue.version[0] === '3';
33
33
  var ref = allVue.ref;
34
+ var inject = allVue.inject;
34
35
  var kendo_vue_common_1 = require("@progress/kendo-vue-common");
35
36
  var sizeMap = kendo_vue_common_1.kendoThemeMaps.sizeMap,
36
37
  roundedMap = kendo_vue_common_1.kendoThemeMaps.roundedMap;
@@ -44,6 +45,12 @@ var ClearButton_1 = require("../common/ClearButton");
44
45
  var settings_1 = require("./../common/settings");
45
46
  var utils_1 = require("../common/utils");
46
47
  var kendo_svg_icons_1 = require("@progress/kendo-svg-icons");
48
+ var kendo_vue_buttons_1 = require("@progress/kendo-vue-buttons");
49
+ var constants_1 = require("../common/constants");
50
+ var kendo_vue_layout_1 = require("@progress/kendo-vue-layout");
51
+ var ListFilter_1 = require("../common/ListFilter");
52
+ var kendo_vue_intl_1 = require("@progress/kendo-vue-intl");
53
+ var main_1 = require("./../messages/main");
47
54
  var VALIDATION_MESSAGE = 'Please enter a valid value!';
48
55
  var preventDefault = function preventDefault(event) {
49
56
  return event.preventDefault();
@@ -197,6 +204,14 @@ var MultiSelectVue2 = {
197
204
  },
198
205
  groupField: {
199
206
  type: String
207
+ },
208
+ adaptive: {
209
+ type: Boolean,
210
+ default: undefined
211
+ },
212
+ adaptiveTitle: {
213
+ type: String,
214
+ default: undefined
200
215
  }
201
216
  },
202
217
  // @ts-ignore
@@ -204,10 +219,12 @@ var MultiSelectVue2 = {
204
219
  var v3 = !!isV3;
205
220
  var inputRef = ref(null);
206
221
  var kendoAnchorRef = ref(null);
222
+ var kendoLocalizationService = inject('kendoLocalizationService', {});
207
223
  return {
208
224
  v3: v3,
209
225
  inputRef: inputRef,
210
- kendoAnchorRef: kendoAnchorRef
226
+ kendoAnchorRef: kendoAnchorRef,
227
+ kendoLocalizationService: kendoLocalizationService
211
228
  };
212
229
  },
213
230
  computed: {
@@ -223,9 +240,34 @@ var MultiSelectVue2 = {
223
240
  'k-rtl': this.$props.dir === 'rtl'
224
241
  };
225
242
  }
243
+ },
244
+ isOpen: {
245
+ get: function get() {
246
+ return this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
247
+ }
248
+ },
249
+ animationStyles: {
250
+ get: function get() {
251
+ return this.windowWidth <= constants_1.MOBILE_SMALL_DEVICE ? {
252
+ top: 0,
253
+ width: '100%',
254
+ height: '100%'
255
+ } : undefined;
256
+ }
257
+ },
258
+ classNameAdaptive: {
259
+ get: function get() {
260
+ return this.windowWidth <= constants_1.MOBILE_SMALL_DEVICE ? 'k-adaptive-actionsheet k-actionsheet-fullscreen' : 'k-adaptive-actionsheet k-actionsheet-bottom';
261
+ }
262
+ },
263
+ adaptiveState: {
264
+ get: function get() {
265
+ return this.windowWidth <= constants_1.MOBILE_MEDIUM_DEVICE && this.$props.adaptive;
266
+ }
226
267
  }
227
268
  },
228
269
  created: function created() {
270
+ this.observer = null;
229
271
  this.valuesItemsDuringOnChange = null;
230
272
  this._tags = [];
231
273
  this._skipFocusEvent = false;
@@ -234,6 +276,11 @@ var MultiSelectVue2 = {
234
276
  this.anchor = (0, kendo_vue_common_1.guid)();
235
277
  this.inputId = (0, kendo_vue_common_1.guid)();
236
278
  },
279
+ inject: {
280
+ kendoLocalizationService: {
281
+ default: null
282
+ }
283
+ },
237
284
  data: function data() {
238
285
  return {
239
286
  hasMounted: false,
@@ -251,7 +298,9 @@ var MultiSelectVue2 = {
251
298
  activedescendant: settings_1.ActiveDescendant.PopupList,
252
299
  group: undefined,
253
300
  isScrolling: false,
254
- itemHeight: 0
301
+ itemHeight: 0,
302
+ windowWidth: 0,
303
+ initialAdaptiveRenderingValues: undefined
255
304
  };
256
305
  },
257
306
  watch: {
@@ -265,6 +314,18 @@ var MultiSelectVue2 = {
265
314
  if (newValue && oldValue && newValue.total !== oldValue.total) {
266
315
  this.virtualTotalHasChanged = true;
267
316
  }
317
+ },
318
+ isOpen: function isOpen(newValue) {
319
+ var _this = this;
320
+ if (newValue) {
321
+ this.initialAdaptiveRenderingValues = this.base.component.currentValue;
322
+ } else {
323
+ this.initialAdaptiveRenderingValues = undefined;
324
+ }
325
+ setTimeout(function () {
326
+ var listItem = document.querySelector('.k-list-item');
327
+ _this.itemHeight = _this.base.getListItemHeight(listItem);
328
+ }, 100);
268
329
  }
269
330
  },
270
331
  updated: function updated() {
@@ -276,7 +337,7 @@ var MultiSelectVue2 = {
276
337
  _d = _b.dataItems,
277
338
  dataItems = _d === void 0 ? [] : _d;
278
339
  var skip = virtual ? virtual.skip : 0;
279
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
340
+ var opened = this.isOpen;
280
341
  var prevOpened = this.prevOpened !== undefined ? this.prevOpened : this.prevCurrentOpened;
281
342
  var opening = !prevOpened && opened;
282
343
  var closing = prevOpened && !opened;
@@ -334,6 +395,10 @@ var MultiSelectVue2 = {
334
395
  this.setValidity();
335
396
  },
336
397
  mounted: function mounted() {
398
+ this.observer = kendo_vue_common_1.canUseDOM && new ResizeObserver(this.calculateMedia);
399
+ if ((document === null || document === void 0 ? void 0 : document.body) && this.observer) {
400
+ this.observer.observe(document.body);
401
+ }
337
402
  this.hasMounted = true;
338
403
  // @ts-ignore
339
404
  this.input = this.v3 ? this.inputRef.input : this.$refs.input.input;
@@ -343,7 +408,18 @@ var MultiSelectVue2 = {
343
408
  this.searchBarRef();
344
409
  this.setValidity();
345
410
  },
411
+ destroyed: !!isV3 ? undefined : function () {
412
+ if (this.observer) {
413
+ this.observer.disconnect();
414
+ }
415
+ },
346
416
  methods: {
417
+ clearFilter: function clearFilter(state) {
418
+ if (this.currentText) {
419
+ state.data.currentText = '';
420
+ }
421
+ this.base.filterChanged('', state);
422
+ },
347
423
  computedValue: function computedValue() {
348
424
  var result = [];
349
425
  if (this.valuesItemsDuringOnChange) {
@@ -409,11 +485,8 @@ var MultiSelectVue2 = {
409
485
  newItems = __spreadArray(__spreadArray([], value, true), [dataItem], false);
410
486
  }
411
487
  var text = this.$props.filter !== undefined ? this.$props.filter : this.currentText;
412
- if (text) {
413
- if (this.currentText) {
414
- state.data.currentText = '';
415
- }
416
- this.base.filterChanged('', state);
488
+ if (text && !this.adaptiveState) {
489
+ this.clearFilter(state);
417
490
  }
418
491
  if (this.currentFocusedIndex !== undefined) {
419
492
  state.data.currentFocusedIndex = undefined;
@@ -422,7 +495,7 @@ var MultiSelectVue2 = {
422
495
  this.base.triggerPageChangeCornerItems(dataItem, state);
423
496
  },
424
497
  onTagDelete: function onTagDelete(itemsToRemove, event) {
425
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
498
+ var opened = this.isOpen;
426
499
  var state = this.base.initState();
427
500
  state.event = event;
428
501
  if (opened) {
@@ -441,7 +514,7 @@ var MultiSelectVue2 = {
441
514
  allowCustom = _a.allowCustom,
442
515
  _b = _a.dataItems,
443
516
  dataItems = _b === void 0 ? [] : _b;
444
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
517
+ var opened = this.isOpen;
445
518
  var text = this.$props.filter !== undefined ? this.$props.filter : this.currentText;
446
519
  var _c = this.getFocusedState(),
447
520
  focusedType = _c.focusedType,
@@ -501,8 +574,8 @@ var MultiSelectVue2 = {
501
574
  },
502
575
  onChangeHandler: function onChangeHandler(event) {
503
576
  var state = this.base.initState();
504
- var value = event.currentTarget.value;
505
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
577
+ var value = event && (event.currentTarget && event.currentTarget.value || event.value);
578
+ var opened = this.isOpen;
506
579
  state.event = event;
507
580
  if (this.$props.filter === undefined) {
508
581
  state.data.currentText = value;
@@ -519,7 +592,7 @@ var MultiSelectVue2 = {
519
592
  this.applyState(state);
520
593
  },
521
594
  clearButtonClick: function clearButtonClick(event) {
522
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
595
+ var opened = this.isOpen;
523
596
  var state = this.base.initState();
524
597
  state.event = event;
525
598
  event.stopPropagation();
@@ -548,7 +621,7 @@ var MultiSelectVue2 = {
548
621
  }
549
622
  var keyCode = event.keyCode;
550
623
  var text = this.$props.filter !== undefined ? this.$props.filter : this.currentText;
551
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
624
+ var opened = this.isOpen;
552
625
  var focusedItem = this.getFocusedState().focusedItem;
553
626
  var state = this.base.initState();
554
627
  state.event = event;
@@ -574,6 +647,10 @@ var MultiSelectVue2 = {
574
647
  this.selectFocusedItem(event);
575
648
  }
576
649
  } else if (keyCode === kendo_vue_common_1.Keys.esc) {
650
+ if (this.adaptiveState) {
651
+ this.handleWrapperClick(event); // Handle the closing on "Esc" key press in adaptive mode
652
+ }
653
+
577
654
  togglePopup();
578
655
  }
579
656
  } else if (event.altKey && keyCode === kendo_vue_common_1.Keys.down) {
@@ -738,7 +815,7 @@ var MultiSelectVue2 = {
738
815
  this.applyState(state);
739
816
  },
740
817
  handleWrapperClick: function handleWrapperClick(event) {
741
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
818
+ var opened = this.isOpen;
742
819
  var input = this.input;
743
820
  if (!opened && input) {
744
821
  this.focusElement(input);
@@ -751,14 +828,34 @@ var MultiSelectVue2 = {
751
828
  });
752
829
  state.data.currentFocused = true;
753
830
  }
831
+ this.clearFilter(state);
754
832
  this.base.togglePopup(state);
755
833
  this.applyState(state);
756
834
  },
835
+ onCancel: function onCancel(event) {
836
+ var state = this.base.initState();
837
+ state.event = event;
838
+ event.stopPropagation();
839
+ var opened = this.isOpen;
840
+ if (state.focusedIndex !== undefined) {
841
+ state.data.focusedIndex = undefined;
842
+ }
843
+ if (opened) {
844
+ this.base.togglePopup(state);
845
+ }
846
+ state.events.push({
847
+ type: 'onCancel'
848
+ });
849
+ this.clearFilter(state);
850
+ this.triggerOnChange(__spreadArray([], this.initialAdaptiveRenderingValues, true), state);
851
+ this.base.triggerPageChangeCornerItems(__spreadArray([], this.initialAdaptiveRenderingValues, true), state);
852
+ this.applyState(state);
853
+ },
757
854
  handleItemClick: function handleItemClick(index, event) {
758
855
  var state = this.base.initState();
759
856
  state.event = event;
760
857
  this.handleItemSelect(index, state);
761
- if (this.$props.autoClose) {
858
+ if (this.$props.autoClose && !this.adaptiveState) {
762
859
  this.base.togglePopup(state);
763
860
  }
764
861
  this.applyState(state);
@@ -767,7 +864,7 @@ var MultiSelectVue2 = {
767
864
  if (!this.currentFocused || this._skipFocusEvent) {
768
865
  return;
769
866
  }
770
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
867
+ var opened = this.isOpen;
771
868
  var state = this.base.initState();
772
869
  var _a = this.$props,
773
870
  allowCustom = _a.allowCustom,
@@ -777,7 +874,7 @@ var MultiSelectVue2 = {
777
874
  state.events.push({
778
875
  type: 'blur'
779
876
  });
780
- if (opened) {
877
+ if (opened && !this.adaptiveState) {
781
878
  if (this.currentOpened) {
782
879
  state.data.currentOpened = false;
783
880
  }
@@ -833,6 +930,12 @@ var MultiSelectVue2 = {
833
930
  this.input.focus();
834
931
  }
835
932
  },
933
+ calculateMedia: function calculateMedia(entries) {
934
+ for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
935
+ var entry = entries_1[_i];
936
+ this.windowWidth = entry.target.clientWidth;
937
+ }
938
+ },
836
939
  repositionPopup: function repositionPopup() {
837
940
  this.base.repositionPopup();
838
941
  },
@@ -846,6 +949,7 @@ var MultiSelectVue2 = {
846
949
  var groupField = this.$props.groupField;
847
950
  var _b = this.$props.dataItems,
848
951
  dataItems = _b === void 0 ? [] : _b;
952
+ var group;
849
953
  if (!groupField || !dataItems.length) {
850
954
  return;
851
955
  }
@@ -854,8 +958,9 @@ var MultiSelectVue2 = {
854
958
  var scrollTop = target.scrollTop - vs.skip * itemHeight;
855
959
  if (groupField) {
856
960
  dataItems = this.base.getGroupedDataModernMode(dataItems, groupField);
961
+ dataItems = this.base.getGroupedDataModernMode(dataItems, groupField);
962
+ group = dataItems[0][groupField];
857
963
  }
858
- var group = dataItems[0][groupField];
859
964
  for (var i = 1; i < dataItems.length; i++) {
860
965
  if (itemHeight * i > scrollTop) {
861
966
  break;
@@ -873,6 +978,7 @@ var MultiSelectVue2 = {
873
978
  render: function render(createElement) {
874
979
  var _this4 = this;
875
980
  var _a;
981
+ var _this = this;
876
982
  var h = gh || createElement;
877
983
  var _b = this.$props,
878
984
  style = _b.style,
@@ -888,7 +994,13 @@ var MultiSelectVue2 = {
888
994
  fillMode = _b.fillMode,
889
995
  rounded = _b.rounded,
890
996
  tagsRounded = _b.tagsRounded,
891
- removeTagIcon = _b.removeTagIcon;
997
+ removeTagIcon = _b.removeTagIcon,
998
+ adaptiveTitle = _b.adaptiveTitle,
999
+ header = _b.header,
1000
+ footer = _b.footer,
1001
+ groupStickyHeaderItemRender = _b.groupStickyHeaderItemRender,
1002
+ _c = _b.dataItems,
1003
+ dataItems = _c === void 0 ? [] : _c;
892
1004
  var focused = this.currentFocused;
893
1005
  var popupSettings = Object.assign({}, {
894
1006
  animate: true,
@@ -901,6 +1013,12 @@ var MultiSelectVue2 = {
901
1013
  var vs = this.base.vs;
902
1014
  var id = this.$props.id || this.inputId;
903
1015
  var tagRender = kendo_vue_common_1.templateRendering.call(this, this.$props.tagRender, kendo_vue_common_1.getListeners.call(this));
1016
+ var opened = this.isOpen;
1017
+ var renderAdaptive = this.adaptiveState;
1018
+ var localization = (0, kendo_vue_intl_1.provideLocalizationService)(this);
1019
+ if (this.group === undefined && this.$props.groupField !== undefined) {
1020
+ this.group = (0, utils_1.getItemValue)(this.$props.dataItems[0], this.$props.groupField);
1021
+ }
904
1022
  vs.enabled = virtual !== undefined;
905
1023
  if (virtual !== undefined) {
906
1024
  vs.skip = virtual.skip;
@@ -908,25 +1026,36 @@ var MultiSelectVue2 = {
908
1026
  vs.pageSize = virtual.pageSize;
909
1027
  }
910
1028
  var tagsToRender = [];
911
- if (tags === undefined) {
912
- this.computedValue().forEach(function (item) {
1029
+ if (this.initialAdaptiveRenderingValues === undefined) {
1030
+ if (tags === undefined) {
1031
+ this.computedValue().forEach(function (item) {
1032
+ tagsToRender.push({
1033
+ text: (0, utils_1.getItemValue)(item, textField),
1034
+ data: [item]
1035
+ });
1036
+ });
1037
+ } else {
1038
+ tagsToRender.push.apply(tagsToRender, tags);
1039
+ }
1040
+ } else {
1041
+ var valuesBeforeAdaptiveRendering = __spreadArray([], this.initialAdaptiveRenderingValues, true);
1042
+ valuesBeforeAdaptiveRendering.forEach(function (item) {
913
1043
  tagsToRender.push({
914
1044
  text: (0, utils_1.getItemValue)(item, textField),
915
1045
  data: [item]
916
1046
  });
917
1047
  });
918
- } else {
919
- tagsToRender.push.apply(tagsToRender, tags);
920
1048
  }
921
- this.setItems(tagsToRender, this._tags);
1049
+ if (tagsToRender.length > 0) {
1050
+ this.setItems(tagsToRender, this._tags);
1051
+ }
922
1052
  var isValid = !this.$props.validityStyles || this.validity().valid;
923
1053
  var renderSearchBar = function renderSearchBar(searchId) {
924
1054
  var _this = this;
925
1055
  var activedescendant = this.activedescendant;
926
1056
  var placeholder = this.$props.placeholder;
927
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
928
1057
  var focusedIndex = this.getFocusedState().focusedIndex;
929
- var placeholderToShow = value.length === 0 && !searchText ? placeholder : undefined;
1058
+ var placeholderToShow = tagsToRender.length === 0 || value.length === 0 && !searchText ? placeholder : undefined;
930
1059
  var ariaActivedescendant = activedescendant === settings_1.ActiveDescendant.TagsList && focusedTag !== undefined ? "tag-".concat(this.base.guid, "-").concat(focusedTag.text.replace(/\s+/g, '-')) : "option-".concat(this.base.guid, "-").concat(focusedIndex);
931
1060
  return (
932
1061
  // @ts-ignore function children
@@ -938,7 +1067,7 @@ var MultiSelectVue2 = {
938
1067
  tabIndex: this.$props.tabIndex,
939
1068
  accessKey: this.$props.accessKey,
940
1069
  placeholder: placeholderToShow,
941
- value: searchText,
1070
+ value: !renderAdaptive ? searchText : '',
942
1071
  disabled: disabled,
943
1072
  expanded: opened,
944
1073
  owns: this.base.listBoxId,
@@ -951,7 +1080,7 @@ var MultiSelectVue2 = {
951
1080
  tabIndex: this.$props.tabIndex,
952
1081
  accessKey: this.$props.accessKey,
953
1082
  placeholder: placeholderToShow,
954
- value: searchText,
1083
+ value: !renderAdaptive ? searchText : '',
955
1084
  onChange: this.onChangeHandler,
956
1085
  on: this.v3 ? undefined : {
957
1086
  "change": this.onChangeHandler,
@@ -976,16 +1105,15 @@ var MultiSelectVue2 = {
976
1105
  var renderList = function renderList() {
977
1106
  var _this2 = this;
978
1107
  var groupField = this.$props.groupField;
979
- var dataItems = this.$props.dataItems || [];
980
1108
  var itemRender = kendo_vue_common_1.templateRendering.call(this, this.$props.itemRender, kendo_vue_common_1.getListeners.call(this));
981
1109
  var groupHeaderItemRender = kendo_vue_common_1.templateRendering.call(this, this.$props.groupHeaderItemRender, kendo_vue_common_1.getListeners.call(this));
982
1110
  var listNoDataRender = kendo_vue_common_1.templateRendering.call(this, this.$props.listNoDataRender, kendo_vue_common_1.getListeners.call(this));
983
1111
  var skip = virtual ? virtual.skip : 0;
984
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
985
1112
  var focusedIndex = this.getFocusedState().focusedIndex;
986
1113
  var translate = "translateY(".concat(vs.translate, "px)");
1114
+ var listDataItems = dataItems;
987
1115
  if (groupField) {
988
- dataItems = this.base.getGroupedDataModernMode(dataItems, groupField);
1116
+ listDataItems = this.base.getGroupedDataModernMode(dataItems, groupField);
989
1117
  }
990
1118
  return (
991
1119
  // @ts-ignore function children
@@ -994,14 +1122,14 @@ var MultiSelectVue2 = {
994
1122
  attrs: this.v3 ? undefined : {
995
1123
  id: this.base.listBoxId,
996
1124
  show: opened,
997
- dataItems: dataItems.slice(),
1125
+ dataItems: listDataItems.slice(),
998
1126
  focusedIndex: focusedIndex - skip,
999
1127
  value: this.computedValue(),
1000
1128
  textField: textField,
1001
1129
  valueField: dataItemKey,
1002
1130
  optionsGuid: this.base.guid,
1003
1131
  wrapperStyle: {
1004
- maxHeight: popupSettings.height
1132
+ maxHeight: !renderAdaptive ? popupSettings.height : undefined
1005
1133
  },
1006
1134
  wrapperCssClass: 'k-list-content',
1007
1135
  listStyle: vs.enabled ? {
@@ -1014,7 +1142,7 @@ var MultiSelectVue2 = {
1014
1142
  groupField: groupField
1015
1143
  },
1016
1144
  show: opened,
1017
- dataItems: dataItems.slice(),
1145
+ dataItems: listDataItems.slice(),
1018
1146
  focusedIndex: focusedIndex - skip,
1019
1147
  value: this.computedValue(),
1020
1148
  textField: textField,
@@ -1022,7 +1150,7 @@ var MultiSelectVue2 = {
1022
1150
  optionsGuid: this.base.guid,
1023
1151
  ref: 'list',
1024
1152
  wrapperStyle: {
1025
- maxHeight: popupSettings.height
1153
+ maxHeight: !renderAdaptive ? popupSettings.height : undefined
1026
1154
  },
1027
1155
  wrapperCssClass: 'k-list-content',
1028
1156
  listStyle: vs.enabled ? {
@@ -1055,22 +1183,10 @@ var MultiSelectVue2 = {
1055
1183
  var _this3 = this;
1056
1184
  var _a;
1057
1185
  var base = this.base;
1058
- var _b = this.$props,
1059
- allowCustom = _b.allowCustom,
1060
- _c = _b.dataItems,
1061
- dataItems = _c === void 0 ? [] : _c;
1062
- var headerTemplate = kendo_vue_common_1.templateRendering.call(this, this.$props.header, kendo_vue_common_1.getListeners.call(this));
1063
- var footerTemplate = kendo_vue_common_1.templateRendering.call(this, this.$props.footer, kendo_vue_common_1.getListeners.call(this));
1186
+ var allowCustom = this.$props.allowCustom;
1064
1187
  var groupStickyHeaderTemplate = kendo_vue_common_1.templateRendering.call(this, this.$props.groupStickyHeaderItemRender, kendo_vue_common_1.getListeners.call(this));
1065
- var header = kendo_vue_common_1.getTemplate.call(this, {
1066
- h: h,
1067
- template: headerTemplate
1068
- });
1069
- var footer = kendo_vue_common_1.getTemplate.call(this, {
1070
- h: h,
1071
- template: footerTemplate
1072
- });
1073
- var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
1188
+ var headerListContainer = base.getTemplateDef.call(this, header);
1189
+ var footerListContainer = base.getTemplateDef.call(this, footer);
1074
1190
  var currentText = this.$props.filter !== undefined ? this.$props.filter : this.currentText;
1075
1191
  var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;
1076
1192
  var focusedType = this.getFocusedState().focusedType;
@@ -1134,32 +1250,187 @@ var MultiSelectVue2 = {
1134
1250
  }),
1135
1251
  itemsCount: dataItems.length
1136
1252
  }, this.v3 ? function () {
1137
- return [header && h("div", {
1253
+ return [headerListContainer && h("div", {
1138
1254
  "class": "k-list-header"
1139
- }, [header]), customItem, _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
1255
+ }, [headerListContainer]), customItem, _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
1140
1256
  group: _this3.group,
1141
1257
  attrs: _this3.v3 ? undefined : {
1142
1258
  group: _this3.group,
1143
1259
  render: groupStickyHeaderTemplate
1144
1260
  },
1145
1261
  render: groupStickyHeaderTemplate
1146
- }), renderList.call(_this3), footer && h("div", {
1262
+ }), renderList.call(_this3), footerListContainer && h("div", {
1147
1263
  "class": "k-list-footer"
1148
- }, [footer]), virtual && header];
1149
- } : [header && h("div", {
1264
+ }, [footerListContainer]), virtual && header];
1265
+ } : [headerListContainer && h("div", {
1150
1266
  "class": "k-list-header"
1151
- }, [header]), customItem, _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
1267
+ }, [headerListContainer]), customItem, _this3.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
1152
1268
  group: _this3.group,
1153
1269
  attrs: _this3.v3 ? undefined : {
1154
1270
  group: _this3.group,
1155
1271
  render: groupStickyHeaderTemplate
1156
1272
  },
1157
1273
  render: groupStickyHeaderTemplate
1158
- }), renderList.call(_this3), footer && h("div", {
1274
+ }), renderList.call(_this3), footerListContainer && h("div", {
1159
1275
  "class": "k-list-footer"
1160
- }, [footer]), virtual && header])
1276
+ }, [footerListContainer]), virtual && header])
1161
1277
  );
1162
1278
  };
1279
+ var renderListFilter = function renderListFilter() {
1280
+ var filterText = this.$props.filter !== undefined ? this.$props.filter : this.currentText;
1281
+ return this.$props.filterable &&
1282
+ // @ts-ignore
1283
+ h(ListFilter_1.ListFilter, {
1284
+ value: filterText,
1285
+ attrs: this.v3 ? undefined : {
1286
+ value: filterText,
1287
+ size: size,
1288
+ rounded: rounded,
1289
+ fillMode: fillMode
1290
+ },
1291
+ ref: 'filterInput',
1292
+ onChange: this.onChangeHandler,
1293
+ on: this.v3 ? undefined : {
1294
+ "change": this.onChangeHandler,
1295
+ "keydown": this.onInputKeyDown
1296
+ },
1297
+ onKeydown: this.onInputKeyDown,
1298
+ size: size,
1299
+ rounded: rounded,
1300
+ fillMode: fillMode
1301
+ });
1302
+ };
1303
+ var adaptiveActionSheetHeaderTemplateDef = function adaptiveActionSheetHeaderTemplateDef() {
1304
+ return [h("div", {
1305
+ "class": "k-actionsheet-titlebar-group k-hbox"
1306
+ }, [h("div", {
1307
+ "class": "k-actionsheet-title"
1308
+ }, [h("div", {
1309
+ "class": "k-text-center"
1310
+ }, [adaptiveTitle]), h("div", {
1311
+ "class": "k-actionsheet-subtitle k-text-center"
1312
+ })]), h("div", {
1313
+ "class": "k-actionsheet-actions"
1314
+ }, [h(kendo_vue_buttons_1.Button, {
1315
+ tabindex: 5,
1316
+ attrs: this.v3 ? undefined : {
1317
+ tabindex: 5,
1318
+ "aria-label": "Cancel",
1319
+ "aria-disabled": "false",
1320
+ type: "button",
1321
+ fillMode: "flat",
1322
+ icon: "x",
1323
+ svgIcon: kendo_svg_icons_1.xIcon
1324
+ },
1325
+ "aria-label": "Cancel",
1326
+ "aria-disabled": "false",
1327
+ type: "button",
1328
+ fillMode: "flat",
1329
+ onClick: _this.onCancel,
1330
+ on: this.v3 ? undefined : {
1331
+ "click": _this.onCancel
1332
+ },
1333
+ icon: "x",
1334
+ svgIcon: kendo_svg_icons_1.xIcon
1335
+ })])]), h("div", {
1336
+ "class": "k-actionsheet-titlebar-group k-actionsheet-filter"
1337
+ }, [renderListFilter.call(_this)])];
1338
+ };
1339
+ var adaptiveActionSheetHeaderTemplate = kendo_vue_common_1.templateRendering.call(this, adaptiveActionSheetHeaderTemplateDef, kendo_vue_common_1.getListeners.call(this));
1340
+ var adaptiveActionSheetFooterTemplateDef = function adaptiveActionSheetFooterTemplateDef() {
1341
+ var cancelText = localization.toLanguageString(main_1.adaptiveModeFooterCancel, main_1.messages[main_1.adaptiveModeFooterCancel]);
1342
+ var applyText = localization.toLanguageString(main_1.adaptiveModeFooterApply, main_1.messages[main_1.adaptiveModeFooterApply]);
1343
+ return [h(kendo_vue_buttons_1.Button, {
1344
+ size: "large",
1345
+ attrs: this.v3 ? undefined : {
1346
+ size: "large",
1347
+ "aria-label": cancelText,
1348
+ "aria-disabled": "false",
1349
+ type: "button"
1350
+ },
1351
+ "aria-label": cancelText,
1352
+ "aria-disabled": "false",
1353
+ type: "button",
1354
+ onClick: _this.onCancel,
1355
+ on: this.v3 ? undefined : {
1356
+ "click": _this.onCancel
1357
+ }
1358
+ }, [cancelText]), h(kendo_vue_buttons_1.Button, {
1359
+ themeColor: "primary",
1360
+ attrs: this.v3 ? undefined : {
1361
+ themeColor: "primary",
1362
+ size: "large",
1363
+ "aria-label": applyText,
1364
+ "aria-disabled": "false",
1365
+ type: "button"
1366
+ },
1367
+ size: "large",
1368
+ "aria-label": applyText,
1369
+ "aria-disabled": "false",
1370
+ type: "button",
1371
+ onClick: _this.handleWrapperClick,
1372
+ on: this.v3 ? undefined : {
1373
+ "click": _this.handleWrapperClick
1374
+ }
1375
+ }, [applyText])];
1376
+ };
1377
+ var adaptiveActionSheetFooterTemplate = kendo_vue_common_1.templateRendering.call(this, adaptiveActionSheetFooterTemplateDef, kendo_vue_common_1.getListeners.call(this));
1378
+ var adaptiveActionSheetContentTemplateDef = function adaptiveActionSheetContentTemplateDef() {
1379
+ var _a;
1380
+ var headerToRender = _this.base.getTemplateDef.call(_this, header, h);
1381
+ var footerToRender = _this.base.getTemplateDef.call(_this, footer, h);
1382
+ var groupStickyHeaderTemplate = kendo_vue_common_1.templateRendering.call(_this, groupStickyHeaderItemRender, kendo_vue_common_1.getListeners.call(_this));
1383
+ return h("div", {
1384
+ "class": "k-list-container"
1385
+ }, [headerToRender && h("div", {
1386
+ "class": "k-list-header"
1387
+ }, [headerToRender]), h("div", {
1388
+ "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))
1389
+ }, [_this.group && dataItems.length !== 0 && h(GroupStickyHeader_1.GroupStickyHeader, {
1390
+ group: _this.group,
1391
+ attrs: this.v3 ? undefined : {
1392
+ group: _this.group,
1393
+ render: groupStickyHeaderTemplate
1394
+ },
1395
+ render: groupStickyHeaderTemplate
1396
+ }), renderList.call(_this), footerToRender && h("div", {
1397
+ className: "k-list-footer",
1398
+ attrs: this.v3 ? undefined : {
1399
+ className: "k-list-footer"
1400
+ }
1401
+ }, [footerToRender])])]);
1402
+ };
1403
+ var adaptiveActionSheetContentTemplate = kendo_vue_common_1.templateRendering.call(this, adaptiveActionSheetContentTemplateDef, kendo_vue_common_1.getListeners.call(this));
1404
+ var renderAdaptiveListContainer = function renderAdaptiveListContainer() {
1405
+ return h(kendo_vue_layout_1.ActionSheet, {
1406
+ expand: opened,
1407
+ attrs: this.v3 ? undefined : {
1408
+ expand: opened,
1409
+ animation: true,
1410
+ animationStyles: this.animationStyles,
1411
+ className: this.classNameAdaptive,
1412
+ contentClassName: '!k-overflow-hidden',
1413
+ footerClassName: 'k-actions k-actions-stretched',
1414
+ header: adaptiveActionSheetHeaderTemplate,
1415
+ content: adaptiveActionSheetContentTemplate,
1416
+ footer: adaptiveActionSheetFooterTemplate,
1417
+ navigatableElements: ['input.k-input-inner', '.k-actionsheet-actions > button']
1418
+ },
1419
+ animation: true,
1420
+ animationStyles: this.animationStyles,
1421
+ className: this.classNameAdaptive,
1422
+ contentClassName: '!k-overflow-hidden',
1423
+ footerClassName: 'k-actions k-actions-stretched',
1424
+ header: adaptiveActionSheetHeaderTemplate,
1425
+ content: adaptiveActionSheetContentTemplate,
1426
+ footer: adaptiveActionSheetFooterTemplate,
1427
+ onClose: this.onCancel,
1428
+ on: this.v3 ? undefined : {
1429
+ "close": this.onCancel
1430
+ },
1431
+ navigatableElements: ['input.k-input-inner', '.k-actionsheet-actions > button']
1432
+ });
1433
+ };
1163
1434
  var component = h("span", {
1164
1435
  ref: (0, kendo_vue_common_1.setRef)(this, 'kendoAnchor', this.anchor),
1165
1436
  "class": (0, kendo_vue_common_1.classNames)('k-multiselect', '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-focus'] = focused && !disabled, _a['k-disabled'] = disabled, _a['k-invalid'] = !isValid, _a['k-loading'] = loading, _a['k-required'] = this.required, _a)),
@@ -1209,7 +1480,7 @@ var MultiSelectVue2 = {
1209
1480
  }) : undefined
1210
1481
  }, this.v3 ? function () {
1211
1482
  return [renderSearchBar.call(_this4, id)];
1212
- } : [renderSearchBar.call(_this4, id)]), clearButton &&
1483
+ } : [renderSearchBar.call(_this4, id)]), tagsToRender.length > 0 && clearButton &&
1213
1484
  // @ts-ignore function children
1214
1485
  h(ClearButton_1.ClearButton, {
1215
1486
  onClearclick: this.clearButtonClick,
@@ -1218,14 +1489,18 @@ var MultiSelectVue2 = {
1218
1489
  }
1219
1490
  }), h("span", {
1220
1491
  "class": loading ? 'k-input-loading-icon k-icon k-i-loading' : undefined
1221
- }), renderListContainer.call(this)]);
1492
+ }), !renderAdaptive && renderListContainer.call(this)]);
1493
+ // The following one combines the default rendering of the MultiSelect and the Adaptive rendering.
1494
+ // This is needed because of Vue 2 specifics
1495
+ var multiselect = [component, renderAdaptive && renderAdaptiveListContainer.call(this)];
1496
+ var multiselectToRender = isV3 ? multiselect : this.$props.adaptive ? h("span", [multiselect]) : component;
1222
1497
  return label ? h("span", {
1223
1498
  "class": this.spanClassNames,
1224
1499
  dir: this.$props.dir,
1225
1500
  attrs: this.v3 ? undefined : {
1226
1501
  dir: this.$props.dir
1227
1502
  }
1228
- }, [component, this.$props.label ? id ? h("label", {
1503
+ }, [multiselectToRender, this.$props.label ? id ? h("label", {
1229
1504
  "for": id,
1230
1505
  attrs: this.v3 ? undefined : {
1231
1506
  "for": id
@@ -1233,7 +1508,7 @@ var MultiSelectVue2 = {
1233
1508
  "class": "k-label"
1234
1509
  }, [this.$props.label]) : h("span", {
1235
1510
  "class": "k-label"
1236
- }, [this.$props.label]) : null]) : component;
1511
+ }, [this.$props.label]) : null]) : multiselectToRender;
1237
1512
  }
1238
1513
  };
1239
1514
  exports.MultiSelectVue2 = MultiSelectVue2;