@progress/kendo-vue-dropdowns 3.10.2 → 3.11.0-dev.202305230751
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.
- package/dist/cdn/js/kendo-vue-dropdowns.js +1 -1
- package/dist/es/AutoComplete/AutoComplete.js +115 -15
- package/dist/es/AutoComplete/AutoCompleteProps.d.ts +12 -0
- package/dist/es/ComboBox/ComboBox.js +115 -16
- package/dist/es/ComboBox/ComboBoxProps.d.ts +12 -0
- package/dist/es/DropDownList/DropDownList.js +101 -14
- package/dist/es/DropDownList/DropDownListProps.d.ts +12 -0
- package/dist/es/DropDownTree/DropDownTree.d.ts +49 -1
- package/dist/es/DropDownTree/DropDownTree.js +863 -638
- package/dist/es/DropDownTree/DropDownTreeProps.d.ts +19 -8
- package/dist/es/MultiSelect/MultiSelect.js +122 -28
- package/dist/es/MultiSelect/MultiSelectProps.d.ts +12 -0
- package/dist/es/MultiSelectTree/MultiSelectTree.js +12 -12
- package/dist/es/common/DropDownBase.d.ts +2 -0
- package/dist/es/common/DropDownBase.js +20 -0
- package/dist/es/common/GroupStickyHeader.d.ts +29 -0
- package/dist/es/common/GroupStickyHeader.js +59 -0
- package/dist/es/common/List.d.ts +2 -0
- package/dist/es/common/List.js +53 -25
- package/dist/es/common/ListFilter.js +47 -25
- package/dist/es/common/ListGroupItem.d.ts +41 -0
- package/dist/es/common/ListGroupItem.js +71 -0
- package/dist/es/common/settings.d.ts +1 -0
- package/dist/es/main.d.ts +2 -1
- package/dist/es/main.js +2 -1
- package/dist/es/package-metadata.js +1 -1
- package/dist/esm/AutoComplete/AutoComplete.js +115 -15
- package/dist/esm/AutoComplete/AutoCompleteProps.d.ts +12 -0
- package/dist/esm/ComboBox/ComboBox.js +115 -16
- package/dist/esm/ComboBox/ComboBoxProps.d.ts +12 -0
- package/dist/esm/DropDownList/DropDownList.js +101 -14
- package/dist/esm/DropDownList/DropDownListProps.d.ts +12 -0
- package/dist/esm/DropDownTree/DropDownTree.d.ts +49 -1
- package/dist/esm/DropDownTree/DropDownTree.js +863 -638
- package/dist/esm/DropDownTree/DropDownTreeProps.d.ts +19 -8
- package/dist/esm/MultiSelect/MultiSelect.js +122 -28
- package/dist/esm/MultiSelect/MultiSelectProps.d.ts +12 -0
- package/dist/esm/MultiSelectTree/MultiSelectTree.js +12 -12
- package/dist/esm/common/DropDownBase.d.ts +2 -0
- package/dist/esm/common/DropDownBase.js +20 -0
- package/dist/esm/common/GroupStickyHeader.d.ts +29 -0
- package/dist/esm/common/GroupStickyHeader.js +59 -0
- package/dist/esm/common/List.d.ts +2 -0
- package/dist/esm/common/List.js +53 -25
- package/dist/esm/common/ListFilter.js +47 -25
- package/dist/esm/common/ListGroupItem.d.ts +41 -0
- package/dist/esm/common/ListGroupItem.js +71 -0
- package/dist/esm/common/settings.d.ts +1 -0
- package/dist/esm/main.d.ts +2 -1
- package/dist/esm/main.js +2 -1
- package/dist/esm/package-metadata.js +1 -1
- package/dist/npm/AutoComplete/AutoComplete.js +114 -14
- package/dist/npm/AutoComplete/AutoCompleteProps.d.ts +12 -0
- package/dist/npm/ComboBox/ComboBox.js +115 -16
- package/dist/npm/ComboBox/ComboBoxProps.d.ts +12 -0
- package/dist/npm/DropDownList/DropDownList.js +101 -14
- package/dist/npm/DropDownList/DropDownListProps.d.ts +12 -0
- package/dist/npm/DropDownTree/DropDownTree.d.ts +49 -1
- package/dist/npm/DropDownTree/DropDownTree.js +868 -639
- package/dist/npm/DropDownTree/DropDownTreeProps.d.ts +19 -8
- package/dist/npm/MultiSelect/MultiSelect.js +122 -28
- package/dist/npm/MultiSelect/MultiSelectProps.d.ts +12 -0
- package/dist/npm/MultiSelectTree/MultiSelectTree.js +12 -12
- package/dist/npm/common/DropDownBase.d.ts +2 -0
- package/dist/npm/common/DropDownBase.js +20 -0
- package/dist/npm/common/GroupStickyHeader.d.ts +29 -0
- package/dist/npm/common/GroupStickyHeader.js +66 -0
- package/dist/npm/common/List.d.ts +2 -0
- package/dist/npm/common/List.js +52 -24
- package/dist/npm/common/ListFilter.js +47 -25
- package/dist/npm/common/ListGroupItem.d.ts +41 -0
- package/dist/npm/common/ListGroupItem.js +78 -0
- package/dist/npm/common/settings.d.ts +1 -0
- package/dist/npm/main.d.ts +2 -1
- package/dist/npm/main.js +3 -1
- package/dist/npm/package-metadata.js +1 -1
- package/package.json +10 -8
- package/dist/es/DropDownTree/useDropdownWidth.d.ts +0 -4
- package/dist/es/DropDownTree/useDropdownWidth.js +0 -10
- package/dist/esm/DropDownTree/useDropdownWidth.d.ts +0 -4
- package/dist/esm/DropDownTree/useDropdownWidth.js +0 -10
- package/dist/npm/DropDownTree/useDropdownWidth.d.ts +0 -4
- package/dist/npm/DropDownTree/useDropdownWidth.js +0 -17
|
@@ -25,6 +25,7 @@ import { ListFilter } from '../common/ListFilter';
|
|
|
25
25
|
import { ListDefaultItem } from '../common/ListDefaultItem';
|
|
26
26
|
import { List } from '../common/List';
|
|
27
27
|
import DropDownBase from '../common/DropDownBase';
|
|
28
|
+
import { GroupStickyHeader } from '../common/GroupStickyHeader';
|
|
28
29
|
import { selectButton, messages } from '../messages/main';
|
|
29
30
|
import { provideLocalizationService } from '@progress/kendo-vue-intl';
|
|
30
31
|
import { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, preventDefaultNonInputs, getFocusedItem } from '../common/utils';
|
|
@@ -127,6 +128,8 @@ var DropDownListVue2 = {
|
|
|
127
128
|
}
|
|
128
129
|
},
|
|
129
130
|
itemRender: [String, Function, Object],
|
|
131
|
+
groupHeaderItemRender: [String, Function, Object],
|
|
132
|
+
groupStickyHeaderItemRender: [String, Function, Object],
|
|
130
133
|
listNoDataRender: [String, Function, Object],
|
|
131
134
|
focusedItemIndex: Function,
|
|
132
135
|
header: [String, Function, Object],
|
|
@@ -163,6 +166,9 @@ var DropDownListVue2 = {
|
|
|
163
166
|
validator: function validator(value) {
|
|
164
167
|
return ['small', 'medium', 'large'].includes(value);
|
|
165
168
|
}
|
|
169
|
+
},
|
|
170
|
+
groupField: {
|
|
171
|
+
type: String
|
|
166
172
|
}
|
|
167
173
|
},
|
|
168
174
|
inject: {
|
|
@@ -183,7 +189,10 @@ var DropDownListVue2 = {
|
|
|
183
189
|
},
|
|
184
190
|
_skipFocusEvent: false,
|
|
185
191
|
valueDuringOnChange: {},
|
|
186
|
-
_navigated: false
|
|
192
|
+
_navigated: false,
|
|
193
|
+
group: undefined,
|
|
194
|
+
isScrolling: false,
|
|
195
|
+
itemHeight: 0
|
|
187
196
|
};
|
|
188
197
|
},
|
|
189
198
|
watch: {
|
|
@@ -234,11 +243,14 @@ var DropDownListVue2 = {
|
|
|
234
243
|
this.setValidity();
|
|
235
244
|
},
|
|
236
245
|
updated: function updated() {
|
|
237
|
-
var _a
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
246
|
+
var _a;
|
|
247
|
+
var _b = this.$props,
|
|
248
|
+
_c = _b.dataItems,
|
|
249
|
+
dataItems = _c === void 0 ? [] : _c,
|
|
250
|
+
dataItemKey = _b.dataItemKey,
|
|
251
|
+
virtual = _b.virtual,
|
|
252
|
+
groupField = _b.groupField,
|
|
253
|
+
textField = _b.textField;
|
|
242
254
|
var opened = this.$props.opened !== undefined ? this.$props.opened : this.currentOpened;
|
|
243
255
|
var prevOpened = this.prevOpened !== undefined ? this.prevOpened : this.prevCurrentOpened;
|
|
244
256
|
var opening = !prevOpened && opened;
|
|
@@ -282,11 +294,19 @@ var DropDownListVue2 = {
|
|
|
282
294
|
var selectedItemIndex = dataItems.findIndex(function (i) {
|
|
283
295
|
return areSame(i, selectedItem_1, dataItemKey);
|
|
284
296
|
});
|
|
297
|
+
// Needed to calculate the proper item index when in grouping mode
|
|
298
|
+
if (groupField) {
|
|
299
|
+
selectedItemIndex = (_a = this.base.getGroupedDataModernMode(dataItems, groupField)) === null || _a === void 0 ? void 0 : _a.indexOf(selectedItem_1);
|
|
300
|
+
}
|
|
285
301
|
var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);
|
|
286
302
|
if (opening && virtual) {
|
|
287
303
|
this.base.scrollToVirtualItem(virtual, selectedItemIndex);
|
|
288
304
|
this.prevCurrentOpened = true;
|
|
289
305
|
} else if (opening && !virtual) {
|
|
306
|
+
// Resets the sticky header group value for scenarios with open/close of component's popup
|
|
307
|
+
if (dataItems && dataItems.length !== 0) {
|
|
308
|
+
this.base.resetGroupStickyHeader(dataItems[0][groupField], this);
|
|
309
|
+
}
|
|
290
310
|
this.base.scrollToItem(selectedItemIndex);
|
|
291
311
|
this.prevCurrentOpened = true;
|
|
292
312
|
} else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {
|
|
@@ -487,6 +507,9 @@ var DropDownListVue2 = {
|
|
|
487
507
|
}
|
|
488
508
|
},
|
|
489
509
|
handleKeyDown: function handleKeyDown(event) {
|
|
510
|
+
if (this.isScrolling) {
|
|
511
|
+
this.isScrolling = false;
|
|
512
|
+
}
|
|
490
513
|
var _a = this.$props,
|
|
491
514
|
_b = _a.dataItems,
|
|
492
515
|
dataItems = _b === void 0 ? [] : _b,
|
|
@@ -611,6 +634,8 @@ var DropDownListVue2 = {
|
|
|
611
634
|
state.data.currentText = event.target.value;
|
|
612
635
|
}
|
|
613
636
|
this.base.filterChanged(event.target.value, state);
|
|
637
|
+
// Used to reset the value of the StickyHeader when filtering the data
|
|
638
|
+
state.data.group = undefined;
|
|
614
639
|
this.applyState(state);
|
|
615
640
|
},
|
|
616
641
|
onPopupOpened: function onPopupOpened() {
|
|
@@ -682,6 +707,39 @@ var DropDownListVue2 = {
|
|
|
682
707
|
},
|
|
683
708
|
repositionPopup: function repositionPopup() {
|
|
684
709
|
this.base.repositionPopup();
|
|
710
|
+
},
|
|
711
|
+
onScroll: function onScroll(event) {
|
|
712
|
+
this.isScrolling = true;
|
|
713
|
+
var _a = this.base,
|
|
714
|
+
vs = _a.vs,
|
|
715
|
+
list = _a.list;
|
|
716
|
+
vs.scrollHandler(event);
|
|
717
|
+
var state = this.base.initState();
|
|
718
|
+
var groupField = this.$props.groupField;
|
|
719
|
+
var _b = this.$props.dataItems,
|
|
720
|
+
dataItems = _b === void 0 ? [] : _b;
|
|
721
|
+
if (!groupField || !dataItems.length) {
|
|
722
|
+
return;
|
|
723
|
+
}
|
|
724
|
+
var itemHeight = this.itemHeight = this.itemHeight || (vs.enabled ? vs.itemHeight : list ? list.children[0].offsetHeight : 0);
|
|
725
|
+
var target = event.target;
|
|
726
|
+
var scrollTop = target.scrollTop - vs.skip * itemHeight;
|
|
727
|
+
if (groupField) {
|
|
728
|
+
dataItems = this.base.getGroupedDataModernMode(dataItems, groupField);
|
|
729
|
+
}
|
|
730
|
+
var group = dataItems[0][groupField];
|
|
731
|
+
for (var i = 1; i < dataItems.length; i++) {
|
|
732
|
+
if (itemHeight * i > scrollTop) {
|
|
733
|
+
break;
|
|
734
|
+
}
|
|
735
|
+
if (dataItems[i] && dataItems[i][groupField]) {
|
|
736
|
+
group = dataItems[i][groupField];
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
if (group !== this.group) {
|
|
740
|
+
state.data.group = group;
|
|
741
|
+
this.applyState(state);
|
|
742
|
+
}
|
|
685
743
|
}
|
|
686
744
|
},
|
|
687
745
|
render: function render(createElement) {
|
|
@@ -799,11 +857,18 @@ var DropDownListVue2 = {
|
|
|
799
857
|
};
|
|
800
858
|
var renderList = function renderList() {
|
|
801
859
|
var _this2 = this;
|
|
802
|
-
var
|
|
860
|
+
var _a = this.$props,
|
|
861
|
+
textField = _a.textField,
|
|
862
|
+
groupField = _a.groupField;
|
|
863
|
+
var dataItemsToRender = this.$props.dataItems || [];
|
|
803
864
|
var itemRender = templateRendering.call(this, this.$props.itemRender, getListeners.call(this));
|
|
865
|
+
var groupHeaderItemRender = templateRendering.call(this, this.$props.groupHeaderItemRender, getListeners.call(this));
|
|
804
866
|
var listNoDataRender = templateRendering.call(this, this.$props.listNoDataRender, getListeners.call(this));
|
|
805
867
|
var skip = virtual.skip;
|
|
806
868
|
var translate = "translateY(".concat(vs.translate, "px)");
|
|
869
|
+
if (groupField) {
|
|
870
|
+
dataItemsToRender = this.base.getGroupedDataModernMode(dataItemsToRender, groupField);
|
|
871
|
+
}
|
|
807
872
|
return (
|
|
808
873
|
// @ts-ignore function children
|
|
809
874
|
h(List, {
|
|
@@ -811,7 +876,7 @@ var DropDownListVue2 = {
|
|
|
811
876
|
attrs: this.v3 ? undefined : {
|
|
812
877
|
id: this.base.listBoxId,
|
|
813
878
|
show: opened,
|
|
814
|
-
dataItems:
|
|
879
|
+
dataItems: dataItemsToRender.slice(),
|
|
815
880
|
focusedIndex: this.focusedIndex(),
|
|
816
881
|
value: this.computedValue(),
|
|
817
882
|
textField: textField,
|
|
@@ -826,10 +891,12 @@ var DropDownListVue2 = {
|
|
|
826
891
|
} : undefined,
|
|
827
892
|
skip: skip,
|
|
828
893
|
itemRender: itemRender,
|
|
829
|
-
|
|
894
|
+
groupHeaderItemRender: groupHeaderItemRender,
|
|
895
|
+
noDataRender: listNoDataRender,
|
|
896
|
+
groupField: groupField
|
|
830
897
|
},
|
|
831
898
|
show: opened,
|
|
832
|
-
dataItems:
|
|
899
|
+
dataItems: dataItemsToRender.slice(),
|
|
833
900
|
focusedIndex: this.focusedIndex(),
|
|
834
901
|
value: this.computedValue(),
|
|
835
902
|
textField: textField,
|
|
@@ -848,11 +915,13 @@ var DropDownListVue2 = {
|
|
|
848
915
|
onListclick: this.handleItemClick,
|
|
849
916
|
on: this.v3 ? undefined : {
|
|
850
917
|
"listclick": this.handleItemClick,
|
|
851
|
-
"scroll":
|
|
918
|
+
"scroll": this.onScroll
|
|
852
919
|
},
|
|
853
920
|
itemRender: itemRender,
|
|
921
|
+
groupHeaderItemRender: groupHeaderItemRender,
|
|
854
922
|
noDataRender: listNoDataRender,
|
|
855
|
-
|
|
923
|
+
groupField: groupField,
|
|
924
|
+
onScroll: this.onScroll
|
|
856
925
|
}, this.v3 ? function () {
|
|
857
926
|
return [renderScrollElement.call(_this2)];
|
|
858
927
|
} : [renderScrollElement.call(_this2)])
|
|
@@ -893,6 +962,7 @@ var DropDownListVue2 = {
|
|
|
893
962
|
var _a;
|
|
894
963
|
var headerTemplate = templateRendering.call(this, this.$props.header, getListeners.call(this));
|
|
895
964
|
var footerTemplate = templateRendering.call(this, this.$props.footer, getListeners.call(this));
|
|
965
|
+
var groupStickyHeaderTemplate = templateRendering.call(this, this.$props.groupStickyHeaderItemRender, getListeners.call(this));
|
|
896
966
|
var header = getTemplate.call(this, {
|
|
897
967
|
h: h,
|
|
898
968
|
template: headerTemplate
|
|
@@ -902,6 +972,9 @@ var DropDownListVue2 = {
|
|
|
902
972
|
template: footerTemplate
|
|
903
973
|
});
|
|
904
974
|
var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;
|
|
975
|
+
if (this.group === undefined && this.$props.groupField !== undefined) {
|
|
976
|
+
this.group = getItemValue(dataItems[0], this.$props.groupField);
|
|
977
|
+
}
|
|
905
978
|
return (
|
|
906
979
|
// @ts-ignore function children
|
|
907
980
|
h(ListContainer, {
|
|
@@ -937,12 +1010,26 @@ var DropDownListVue2 = {
|
|
|
937
1010
|
onClose: this.onPopupClosed,
|
|
938
1011
|
onBlur: this.handleBlur
|
|
939
1012
|
}, this.v3 ? function () {
|
|
940
|
-
return [renderListFilter.call(_this3), renderDefaultItem.call(_this3),
|
|
1013
|
+
return [renderListFilter.call(_this3), renderDefaultItem.call(_this3), _this3.group && dataItems.length !== 0 && h(GroupStickyHeader, {
|
|
1014
|
+
group: _this3.group,
|
|
1015
|
+
attrs: _this3.v3 ? undefined : {
|
|
1016
|
+
group: _this3.group,
|
|
1017
|
+
render: groupStickyHeaderTemplate
|
|
1018
|
+
},
|
|
1019
|
+
render: groupStickyHeaderTemplate
|
|
1020
|
+
}), header && h("div", {
|
|
941
1021
|
"class": "k-list-header"
|
|
942
1022
|
}, [header]), renderList.call(_this3), footer && h("div", {
|
|
943
1023
|
"class": "k-list-footer"
|
|
944
1024
|
}, [footer])];
|
|
945
|
-
} : [renderListFilter.call(_this3), renderDefaultItem.call(_this3),
|
|
1025
|
+
} : [renderListFilter.call(_this3), renderDefaultItem.call(_this3), _this3.group && dataItems.length !== 0 && h(GroupStickyHeader, {
|
|
1026
|
+
group: _this3.group,
|
|
1027
|
+
attrs: _this3.v3 ? undefined : {
|
|
1028
|
+
group: _this3.group,
|
|
1029
|
+
render: groupStickyHeaderTemplate
|
|
1030
|
+
},
|
|
1031
|
+
render: groupStickyHeaderTemplate
|
|
1032
|
+
}), header && h("div", {
|
|
946
1033
|
"class": "k-list-header"
|
|
947
1034
|
}, [header]), renderList.call(_this3), footer && h("div", {
|
|
948
1035
|
"class": "k-list-footer"
|
|
@@ -284,4 +284,16 @@ export interface DropDownListProps extends FormComponentProps {
|
|
|
284
284
|
* @default `solid`
|
|
285
285
|
*/
|
|
286
286
|
fillMode?: null | 'solid' | 'outline' | 'flat' | string;
|
|
287
|
+
/**
|
|
288
|
+
* Sets the data item field that represents the start of a group. Applicable to objects data.
|
|
289
|
+
*/
|
|
290
|
+
groupField?: string;
|
|
291
|
+
/**
|
|
292
|
+
* Fires when a DropDownList group header item is about to be rendered. Used to override the default appearance of the group's headers.
|
|
293
|
+
*/
|
|
294
|
+
groupHeaderItemRender?: any;
|
|
295
|
+
/**
|
|
296
|
+
* Fires when a DropDownList sticky group header item is about to be rendered. Used to override the default appearance of the sticky group header of the component.
|
|
297
|
+
*/
|
|
298
|
+
groupStickyHeaderItemRender?: any;
|
|
287
299
|
}
|
|
@@ -1 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from '../additionalTypes';
|
|
2
|
+
declare type DefaultData<V> = object | ((this: V) => {});
|
|
3
|
+
declare type DefaultMethods<V> = {
|
|
4
|
+
[key: string]: (this: V, ...args: any[]) => any;
|
|
5
|
+
};
|
|
6
|
+
import { DropDownTreeProps } from './DropDownTreeProps';
|
|
7
|
+
/**
|
|
8
|
+
* @hidden
|
|
9
|
+
*/
|
|
10
|
+
export interface DropDownTreeState {
|
|
11
|
+
calculatedId: string;
|
|
12
|
+
anchor: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @hidden
|
|
16
|
+
*/
|
|
17
|
+
export interface DropDownTreeComputed {
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
isOpen: boolean;
|
|
20
|
+
computedValue: any;
|
|
21
|
+
hasValue: boolean;
|
|
22
|
+
currentValueText: string;
|
|
23
|
+
wrapperClass: object;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
export interface DropDownTreeMethods {
|
|
29
|
+
[key: string]: any;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @hidden
|
|
33
|
+
*/
|
|
34
|
+
export interface DropDownTreeData {
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @hidden
|
|
38
|
+
*/
|
|
39
|
+
export interface DropDownTreeAll extends Vue2type, DropDownTreeMethods, DropDownTreeData, DropDownTreeComputed, DropDownTreeState {
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
declare let DropDownTreeVue2: ComponentOptions<DropDownTreeAll, DefaultData<DropDownTreeData>, DefaultMethods<DropDownTreeAll>, DropDownTreeComputed, RecordPropsDefinition<DropDownTreeProps>>;
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
declare const DropDownTree: DefineComponent<DropDownTreeProps, any, DropDownTreeData, DropDownTreeComputed, DropDownTreeMethods, {}, {}, {}, string, DropDownTreeProps, DropDownTreeProps, {}>;
|
|
49
|
+
export { DropDownTree, DropDownTreeVue2 };
|