@progress/kendo-vue-dropdowns 3.5.0-dev.202208020811 → 3.5.1-dev.202208110751
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 +3 -3
- package/dist/es/AutoComplete/AutoCompleteProps.js +1 -0
- package/dist/es/ComboBox/ComboBox.js +4 -4
- package/dist/es/ComboBox/ComboBoxProps.d.ts +1 -1
- package/dist/es/ComboBox/ComboBoxProps.js +1 -0
- package/dist/es/DropDownList/DropDownList.js +5 -13
- package/dist/es/DropDownList/DropDownListProps.js +1 -0
- package/dist/es/MultiSelect/MultiSelect.js +16 -20
- package/dist/es/MultiSelect/MultiSelectProps.d.ts +1 -1
- package/dist/es/MultiSelect/MultiSelectProps.js +1 -0
- package/dist/es/MultiSelect/TagList.js +3 -3
- package/dist/es/common/List.js +2 -2
- package/dist/es/common/ListFilter.js +1 -1
- package/dist/es/common/events.js +1 -0
- package/dist/es/common/filterDescriptor.js +1 -0
- package/dist/es/package-metadata.js +1 -1
- package/dist/esm/AutoComplete/AutoComplete.d.ts +107 -0
- package/dist/esm/AutoComplete/AutoComplete.js +761 -0
- package/dist/esm/AutoComplete/AutoCompleteProps.d.ts +202 -0
- package/dist/esm/AutoComplete/AutoCompleteProps.js +2 -0
- package/dist/esm/ComboBox/ComboBox.d.ts +99 -0
- package/dist/esm/ComboBox/ComboBox.js +1063 -0
- package/dist/esm/ComboBox/ComboBoxProps.d.ts +244 -0
- package/dist/esm/ComboBox/ComboBoxProps.js +2 -0
- package/dist/esm/DropDownList/DropDownList.d.ts +100 -0
- package/dist/esm/DropDownList/DropDownList.js +1088 -0
- package/dist/esm/DropDownList/DropDownListProps.d.ts +274 -0
- package/dist/esm/DropDownList/DropDownListProps.js +2 -0
- package/dist/esm/MultiSelect/MultiSelect.d.ts +115 -0
- package/dist/esm/MultiSelect/MultiSelect.js +1249 -0
- package/dist/esm/MultiSelect/MultiSelectProps.d.ts +262 -0
- package/dist/esm/MultiSelect/MultiSelectProps.js +2 -0
- package/dist/esm/MultiSelect/TagList.d.ts +51 -0
- package/dist/esm/MultiSelect/TagList.js +180 -0
- package/dist/esm/additionalTypes.ts +21 -0
- package/dist/esm/common/ClearButton.d.ts +21 -0
- package/dist/esm/common/ClearButton.js +68 -0
- package/dist/esm/common/DropDownBase.d.ts +84 -0
- package/dist/esm/common/DropDownBase.js +303 -0
- package/dist/esm/common/List.d.ts +58 -0
- package/dist/esm/common/List.js +176 -0
- package/dist/esm/common/ListContainer.d.ts +40 -0
- package/dist/esm/common/ListContainer.js +131 -0
- package/dist/esm/common/ListDefaultItem.d.ts +29 -0
- package/dist/esm/common/ListDefaultItem.js +62 -0
- package/dist/esm/common/ListFilter.d.ts +46 -0
- package/dist/esm/common/ListFilter.js +112 -0
- package/dist/esm/common/ListItem.d.ts +71 -0
- package/dist/esm/common/ListItem.js +105 -0
- package/dist/esm/common/Navigation.d.ts +12 -0
- package/dist/esm/common/Navigation.js +34 -0
- package/dist/esm/common/SearchBar.d.ts +65 -0
- package/dist/esm/common/SearchBar.js +177 -0
- package/dist/esm/common/VirtualScroll.d.ts +42 -0
- package/dist/esm/common/VirtualScroll.js +196 -0
- package/dist/esm/common/events.d.ts +63 -0
- package/dist/esm/common/events.js +1 -0
- package/dist/esm/common/filterDescriptor.d.ts +41 -0
- package/dist/esm/common/filterDescriptor.js +2 -0
- package/dist/esm/common/settings.d.ts +102 -0
- package/dist/esm/common/settings.js +8 -0
- package/dist/esm/common/utils.d.ts +57 -0
- package/dist/esm/common/utils.js +184 -0
- package/dist/esm/main.d.ts +13 -0
- package/dist/esm/main.js +5 -0
- package/dist/esm/messages/index.d.ts +20 -0
- package/dist/esm/messages/index.js +21 -0
- package/dist/esm/package-metadata.d.ts +5 -0
- package/dist/esm/package-metadata.js +11 -0
- package/dist/esm/package.json +3 -0
- package/dist/npm/AutoComplete/AutoComplete.js +18 -18
- package/dist/npm/ComboBox/ComboBox.js +36 -36
- package/dist/npm/ComboBox/ComboBoxProps.d.ts +1 -1
- package/dist/npm/DropDownList/DropDownList.js +36 -44
- package/dist/npm/MultiSelect/MultiSelect.js +34 -38
- package/dist/npm/MultiSelect/MultiSelectProps.d.ts +1 -1
- package/dist/npm/MultiSelect/TagList.js +3 -3
- package/dist/npm/common/ClearButton.js +1 -1
- package/dist/npm/common/DropDownBase.js +6 -6
- package/dist/npm/common/List.js +8 -8
- package/dist/npm/common/ListContainer.js +1 -1
- package/dist/npm/common/ListDefaultItem.js +2 -2
- package/dist/npm/common/ListFilter.js +3 -3
- package/dist/npm/common/ListItem.js +2 -2
- package/dist/npm/common/Navigation.js +1 -1
- package/dist/npm/common/SearchBar.js +2 -2
- package/dist/npm/package-metadata.js +1 -1
- package/package.json +11 -5
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
var isV3 = allVue.version && allVue.version[0] === '3';
|
|
6
|
+
var ref = allVue.ref;
|
|
7
|
+
import { canUseDOM, getRef, setRef } from '@progress/kendo-vue-common';
|
|
8
|
+
/**
|
|
9
|
+
* @hidden
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
var SearchBarVue2 = {
|
|
13
|
+
name: 'search-bar',
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
emits: {
|
|
16
|
+
'change': null,
|
|
17
|
+
'keydown': null,
|
|
18
|
+
'focus': null,
|
|
19
|
+
'blur': null
|
|
20
|
+
},
|
|
21
|
+
props: {
|
|
22
|
+
value: String,
|
|
23
|
+
id: String,
|
|
24
|
+
placeholder: String,
|
|
25
|
+
tabIndex: Number,
|
|
26
|
+
size: {
|
|
27
|
+
type: Number,
|
|
28
|
+
default: undefined
|
|
29
|
+
},
|
|
30
|
+
suggestedText: String,
|
|
31
|
+
focused: Boolean,
|
|
32
|
+
disabled: Boolean,
|
|
33
|
+
readOnly: Boolean,
|
|
34
|
+
expanded: Boolean,
|
|
35
|
+
owns: String,
|
|
36
|
+
name: String,
|
|
37
|
+
activedescendant: String,
|
|
38
|
+
describedby: String,
|
|
39
|
+
clearButton: Boolean,
|
|
40
|
+
accessKey: String,
|
|
41
|
+
ariaLabelledBy: String
|
|
42
|
+
},
|
|
43
|
+
data: function data() {
|
|
44
|
+
return {
|
|
45
|
+
prevValue: undefined,
|
|
46
|
+
prevSuggestedText: undefined
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
watch: {
|
|
50
|
+
suggestedText: function suggestedText(_, oldValue) {
|
|
51
|
+
this.prevSuggestedText = oldValue;
|
|
52
|
+
},
|
|
53
|
+
value: function value(_, oldValue) {
|
|
54
|
+
this.prevValue = oldValue;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
updated: function updated() {
|
|
58
|
+
var _a = this.$props,
|
|
59
|
+
value = _a.value,
|
|
60
|
+
suggestedText = _a.suggestedText,
|
|
61
|
+
focused = _a.focused;
|
|
62
|
+
|
|
63
|
+
if (!this.input) {
|
|
64
|
+
this.input = this.$refs.input;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var input = this.input;
|
|
68
|
+
var valueChanged = this.$data.prevValue !== value || suggestedText !== this.prevSuggestedText;
|
|
69
|
+
var deleting = valueChanged && this.$data.prevValue && this.$data.prevValue.startsWith(value) && !(this.$data.prevSuggestedText && suggestedText && this.$data.prevSuggestedText.endsWith(suggestedText));
|
|
70
|
+
|
|
71
|
+
if (focused && input && canUseDOM && document.activeElement !== input) {
|
|
72
|
+
input.focus();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (suggestedText && valueChanged && !deleting && input) {
|
|
76
|
+
input.setSelectionRange(value.length - suggestedText.length, value.length);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
setup: !isV3 ? undefined : function () {
|
|
81
|
+
var v3 = !!isV3;
|
|
82
|
+
var inputRef = ref(null);
|
|
83
|
+
return {
|
|
84
|
+
v3: v3,
|
|
85
|
+
inputRef: inputRef
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
mounted: function mounted() {
|
|
89
|
+
this.input = getRef(this, 'input');
|
|
90
|
+
},
|
|
91
|
+
methods: {
|
|
92
|
+
onChange: function onChange(e) {
|
|
93
|
+
this.$emit('change', e);
|
|
94
|
+
},
|
|
95
|
+
onBlur: function onBlur(e) {
|
|
96
|
+
this.$emit('blur', e);
|
|
97
|
+
},
|
|
98
|
+
onFocus: function onFocus(e) {
|
|
99
|
+
this.$emit('focus', e);
|
|
100
|
+
},
|
|
101
|
+
onKeyDown: function onKeyDown(e) {
|
|
102
|
+
this.$emit('keydown', e);
|
|
103
|
+
},
|
|
104
|
+
clearButtonClick: function clearButtonClick(e) {
|
|
105
|
+
this.$emit('clearbuttonclick', e);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
// @ts-ignore
|
|
109
|
+
render: function render(createElement) {
|
|
110
|
+
var h = gh || createElement;
|
|
111
|
+
return h("input", {
|
|
112
|
+
autocomplete: "off",
|
|
113
|
+
attrs: this.v3 ? undefined : {
|
|
114
|
+
autocomplete: "off",
|
|
115
|
+
id: this.$props.id,
|
|
116
|
+
type: "text",
|
|
117
|
+
placeholder: this.$props.placeholder,
|
|
118
|
+
tabindex: this.$props.tabIndex,
|
|
119
|
+
accesskey: this.$props.accessKey,
|
|
120
|
+
role: "combobox",
|
|
121
|
+
name: this.$props.name,
|
|
122
|
+
size: this.$props.size ? this.$props.size : 20,
|
|
123
|
+
"aria-disabled": this.$props.disabled || undefined,
|
|
124
|
+
disabled: this.$props.disabled || undefined,
|
|
125
|
+
readonly: this.$props.readOnly || undefined,
|
|
126
|
+
"aria-autocomplete": this.$props.suggestedText ? 'both' : 'list',
|
|
127
|
+
"aria-haspopup": "listbox",
|
|
128
|
+
"aria-expanded": this.$props.expanded || false,
|
|
129
|
+
"aria-controls": this.$props.owns,
|
|
130
|
+
"aria-activedescendant": this.$props.activedescendant,
|
|
131
|
+
"aria-describedby": this.$props.describedby,
|
|
132
|
+
"aria-labelledby": this.$props.ariaLabelledBy
|
|
133
|
+
},
|
|
134
|
+
id: this.$props.id,
|
|
135
|
+
type: "text",
|
|
136
|
+
key: "searchbar",
|
|
137
|
+
placeholder: this.$props.placeholder,
|
|
138
|
+
"class": "k-input-inner",
|
|
139
|
+
tabindex: this.$props.tabIndex,
|
|
140
|
+
accesskey: this.$props.accessKey,
|
|
141
|
+
role: "combobox",
|
|
142
|
+
name: this.$props.name,
|
|
143
|
+
value: this.v3 ? this.$props.value : null,
|
|
144
|
+
domProps: this.v3 ? undefined : {
|
|
145
|
+
"value": this.$props.value
|
|
146
|
+
},
|
|
147
|
+
size: this.$props.size ? this.$props.size : 20,
|
|
148
|
+
onInput: this.onChange,
|
|
149
|
+
on: this.v3 ? undefined : {
|
|
150
|
+
"input": this.onChange,
|
|
151
|
+
"keydown": this.onKeyDown,
|
|
152
|
+
"focusin": this.onFocus,
|
|
153
|
+
"blur": this.onBlur
|
|
154
|
+
},
|
|
155
|
+
ref: setRef(this, 'input'),
|
|
156
|
+
onKeydown: this.onKeyDown,
|
|
157
|
+
onFocusin: this.onFocus,
|
|
158
|
+
onBlur: this.onBlur,
|
|
159
|
+
"aria-disabled": this.$props.disabled || undefined,
|
|
160
|
+
disabled: this.$props.disabled || undefined,
|
|
161
|
+
readonly: this.$props.readOnly || undefined,
|
|
162
|
+
"aria-autocomplete": this.$props.suggestedText ? 'both' : 'list',
|
|
163
|
+
"aria-haspopup": "listbox",
|
|
164
|
+
"aria-expanded": this.$props.expanded || false,
|
|
165
|
+
"aria-controls": this.$props.owns,
|
|
166
|
+
"aria-activedescendant": this.$props.activedescendant,
|
|
167
|
+
"aria-describedby": this.$props.describedby,
|
|
168
|
+
"aria-labelledby": this.$props.ariaLabelledBy
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* @hidden
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
var SearchBar = SearchBarVue2;
|
|
177
|
+
export { SearchBar, SearchBarVue2 };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Page } from './settings';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
export interface ComponentState {
|
|
6
|
+
skip?: number;
|
|
7
|
+
selectedIndex?: number;
|
|
8
|
+
opened?: boolean;
|
|
9
|
+
event?: any;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
export default class VirtualScroll {
|
|
15
|
+
container: HTMLDivElement | null;
|
|
16
|
+
scrollElement: HTMLDivElement | null;
|
|
17
|
+
list: any;
|
|
18
|
+
containerHeight: number;
|
|
19
|
+
skip: number;
|
|
20
|
+
total: number;
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
pageSize: number;
|
|
23
|
+
itemHeight: number;
|
|
24
|
+
PageChange: (event: Page, syntheticEvent: any) => void;
|
|
25
|
+
ScrollChange: (Event: any) => void;
|
|
26
|
+
private prevScrollPos;
|
|
27
|
+
private listTranslate;
|
|
28
|
+
private scrollSyncing;
|
|
29
|
+
constructor();
|
|
30
|
+
get translate(): number;
|
|
31
|
+
scrollerRef: (element: HTMLDivElement | null) => void;
|
|
32
|
+
calcScrollElementHeight: () => boolean;
|
|
33
|
+
changePage(skip: number, e: any): void;
|
|
34
|
+
translateTo(dY: number): void;
|
|
35
|
+
reset(): void;
|
|
36
|
+
scrollToEnd(): void;
|
|
37
|
+
localScrollUp(e: any): void;
|
|
38
|
+
localScrollDown(e: any): void;
|
|
39
|
+
scrollNonStrict(e: any): void;
|
|
40
|
+
scrollHandler(this: any, e: any): void;
|
|
41
|
+
validateTranslate(translate: number): number;
|
|
42
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
var maxHeightIE = 1533915;
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
var VirtualScroll =
|
|
7
|
+
/** @class */
|
|
8
|
+
function () {
|
|
9
|
+
function VirtualScroll() {
|
|
10
|
+
var _this = this;
|
|
11
|
+
|
|
12
|
+
this.containerHeight = 0;
|
|
13
|
+
this.skip = 0;
|
|
14
|
+
this.total = 0;
|
|
15
|
+
this.enabled = false;
|
|
16
|
+
this.pageSize = 0;
|
|
17
|
+
this.itemHeight = 0;
|
|
18
|
+
this.prevScrollPos = 0;
|
|
19
|
+
this.listTranslate = 0;
|
|
20
|
+
this.scrollSyncing = false;
|
|
21
|
+
|
|
22
|
+
this.scrollerRef = function (element) {
|
|
23
|
+
var vs = _this;
|
|
24
|
+
vs.container = element;
|
|
25
|
+
|
|
26
|
+
if (element) {
|
|
27
|
+
element.setAttribute('unselectable', 'on');
|
|
28
|
+
setTimeout(vs.calcScrollElementHeight.bind(vs), 0);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
this.calcScrollElementHeight = function () {
|
|
33
|
+
_this.scrollSyncing = true;
|
|
34
|
+
var heightChanged = false;
|
|
35
|
+
_this.itemHeight = _this.list ? _this.list.children[0].offsetHeight : _this.itemHeight;
|
|
36
|
+
_this.containerHeight = Math.min(maxHeightIE, _this.itemHeight * _this.total);
|
|
37
|
+
var newHeight = _this.containerHeight;
|
|
38
|
+
|
|
39
|
+
if (_this.scrollElement) {
|
|
40
|
+
heightChanged = _this.scrollElement.style.height !== newHeight + 'px';
|
|
41
|
+
|
|
42
|
+
if (heightChanged) {
|
|
43
|
+
_this.scrollElement.style.height = newHeight + 'px';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
_this.scrollSyncing = false;
|
|
48
|
+
return heightChanged;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
this.scrollHandler = this.scrollHandler.bind(this);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Object.defineProperty(VirtualScroll.prototype, "translate", {
|
|
55
|
+
get: function get() {
|
|
56
|
+
return this.listTranslate;
|
|
57
|
+
},
|
|
58
|
+
enumerable: false,
|
|
59
|
+
configurable: true
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
VirtualScroll.prototype.changePage = function (skip, e) {
|
|
63
|
+
var newSkip = Math.min(Math.max(0, skip), this.total - this.pageSize);
|
|
64
|
+
|
|
65
|
+
if (newSkip !== this.skip) {
|
|
66
|
+
this.PageChange({
|
|
67
|
+
skip: newSkip,
|
|
68
|
+
take: this.pageSize
|
|
69
|
+
}, e);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
VirtualScroll.prototype.translateTo = function (dY) {
|
|
74
|
+
this.listTranslate = dY;
|
|
75
|
+
|
|
76
|
+
if (this.list) {
|
|
77
|
+
this.list.style.transform = 'translateY(' + dY + 'px)';
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
VirtualScroll.prototype.reset = function () {
|
|
82
|
+
if (this.container) {
|
|
83
|
+
this.calcScrollElementHeight();
|
|
84
|
+
this.container.scrollTop = 0;
|
|
85
|
+
this.translateTo(0);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
VirtualScroll.prototype.scrollToEnd = function () {
|
|
90
|
+
if (this.container && this.list) {
|
|
91
|
+
this.calcScrollElementHeight();
|
|
92
|
+
this.container.scrollTop = this.container.scrollHeight - this.container.offsetHeight; // this.translateTo(this.container.scrollHeight - this.list.offsetHeight);
|
|
93
|
+
|
|
94
|
+
this.translateTo(this.container.scrollHeight); // - this.list.offsetHeight
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
VirtualScroll.prototype.localScrollUp = function (e) {
|
|
99
|
+
var height = this.itemHeight;
|
|
100
|
+
var scrollTop = this.container.scrollTop;
|
|
101
|
+
var targetTranslate = this.listTranslate;
|
|
102
|
+
var items;
|
|
103
|
+
var additionalOnTop = scrollTop - targetTranslate;
|
|
104
|
+
|
|
105
|
+
if (additionalOnTop > height) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
for (items = 0; items < this.skip; items++) {
|
|
110
|
+
if (targetTranslate + height + additionalOnTop <= scrollTop) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
targetTranslate -= height;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
targetTranslate = this.validateTranslate(targetTranslate);
|
|
118
|
+
|
|
119
|
+
if (this.skip - items <= 0 && targetTranslate >= scrollTop) {
|
|
120
|
+
this.translateTo(0);
|
|
121
|
+
this.changePage(0, e);
|
|
122
|
+
this.container.scrollTop = 0;
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (targetTranslate !== this.listTranslate) {
|
|
127
|
+
this.translateTo(targetTranslate);
|
|
128
|
+
this.changePage(this.skip - items, e);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
VirtualScroll.prototype.localScrollDown = function (e) {
|
|
133
|
+
var height = this.itemHeight;
|
|
134
|
+
var scrollTop = this.container.scrollTop;
|
|
135
|
+
var targetTranslate = this.listTranslate;
|
|
136
|
+
var itemsLenght = this.list.children.length;
|
|
137
|
+
var items;
|
|
138
|
+
|
|
139
|
+
for (items = 0; items < itemsLenght; items++) {
|
|
140
|
+
if (targetTranslate + height >= scrollTop) {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
targetTranslate += height;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
targetTranslate = this.validateTranslate(targetTranslate);
|
|
148
|
+
|
|
149
|
+
if (items >= itemsLenght && this.skip + items >= this.total) {
|
|
150
|
+
this.translateTo(targetTranslate);
|
|
151
|
+
this.changePage(this.total - 1, e);
|
|
152
|
+
} else if (targetTranslate !== this.listTranslate) {
|
|
153
|
+
this.translateTo(targetTranslate);
|
|
154
|
+
this.changePage(this.skip + items, e);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
VirtualScroll.prototype.scrollNonStrict = function (e) {
|
|
159
|
+
var floatItemIndex = this.total * this.prevScrollPos / this.containerHeight;
|
|
160
|
+
var itemIndex = Math.min(Math.floor(floatItemIndex), this.total - 1);
|
|
161
|
+
var targetTranslate = this.containerHeight * floatItemIndex / this.total;
|
|
162
|
+
targetTranslate = this.validateTranslate(targetTranslate);
|
|
163
|
+
this.translateTo(targetTranslate);
|
|
164
|
+
this.changePage(itemIndex, e);
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
VirtualScroll.prototype.scrollHandler = function (e) {
|
|
168
|
+
var scrollTop = this.container ? this.container.scrollTop : 0;
|
|
169
|
+
var prev = this.prevScrollPos;
|
|
170
|
+
this.prevScrollPos = scrollTop;
|
|
171
|
+
this.ScrollChange(e);
|
|
172
|
+
|
|
173
|
+
if (!this.enabled || !this.list || !this.container || this.scrollSyncing) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (scrollTop - prev <= 0 && scrollTop > this.listTranslate - this.list.scrollHeight / 10) {
|
|
178
|
+
this.localScrollUp(e);
|
|
179
|
+
} else if (scrollTop - prev > 0 && scrollTop < this.listTranslate + this.list.scrollHeight * 2 / 3) {
|
|
180
|
+
this.localScrollDown(e);
|
|
181
|
+
} else {
|
|
182
|
+
this.scrollNonStrict(e);
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
VirtualScroll.prototype.validateTranslate = function (translate) {
|
|
187
|
+
translate = Math.max(0, translate); // translate = Math.min(this.containerHeight - this.list!.offsetHeight, translate);
|
|
188
|
+
|
|
189
|
+
translate = Math.min(this.containerHeight, translate);
|
|
190
|
+
return translate;
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
return VirtualScroll;
|
|
194
|
+
}();
|
|
195
|
+
|
|
196
|
+
export default VirtualScroll;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { FilterDescriptor } from './filterDescriptor';
|
|
2
|
+
import { Page } from './settings';
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
*/
|
|
6
|
+
export interface DropdownEvent {
|
|
7
|
+
/**
|
|
8
|
+
* A native event.
|
|
9
|
+
*/
|
|
10
|
+
event: any;
|
|
11
|
+
/**
|
|
12
|
+
* An event target.
|
|
13
|
+
*/
|
|
14
|
+
target: any;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @hidden
|
|
18
|
+
*/
|
|
19
|
+
export interface FilterChangeEvent extends DropdownEvent {
|
|
20
|
+
/**
|
|
21
|
+
* A native event.
|
|
22
|
+
*/
|
|
23
|
+
event: any;
|
|
24
|
+
/**
|
|
25
|
+
* The default `FilterDescriptor` object.
|
|
26
|
+
*/
|
|
27
|
+
filter: FilterDescriptor;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
export interface ChangeEvent extends DropdownEvent {
|
|
33
|
+
/**
|
|
34
|
+
* The current value of the component.
|
|
35
|
+
*/
|
|
36
|
+
value: any;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @hidden
|
|
40
|
+
*/
|
|
41
|
+
export interface OpenEvent extends DropdownEvent {
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @hidden
|
|
45
|
+
*/
|
|
46
|
+
export interface CloseEvent extends DropdownEvent {
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @hidden
|
|
50
|
+
*/
|
|
51
|
+
export interface FocusEvent extends DropdownEvent {
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* @hidden
|
|
55
|
+
*/
|
|
56
|
+
export interface BlurEvent extends DropdownEvent {
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @hidden
|
|
60
|
+
*/
|
|
61
|
+
export interface PageChangeEvent extends DropdownEvent {
|
|
62
|
+
page: Page;
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A basic filter expression. Usually a part of [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}).
|
|
3
|
+
*
|
|
4
|
+
* For more information, refer to the [`filterBy`]({% slug api_kendo-data-query_filterby %}) method.
|
|
5
|
+
*/
|
|
6
|
+
export interface FilterDescriptor {
|
|
7
|
+
/**
|
|
8
|
+
* The field of the data item to which the filter operator is applied.
|
|
9
|
+
*/
|
|
10
|
+
field?: string | Function;
|
|
11
|
+
/**
|
|
12
|
+
* The filter operator (comparison).
|
|
13
|
+
*
|
|
14
|
+
* The supported operators are:
|
|
15
|
+
* * `"eq"` (equal to)
|
|
16
|
+
* * `"neq"` (not equal to)
|
|
17
|
+
* * `"isnull"` (is equal to null)
|
|
18
|
+
* * `"isnotnull"` (is not equal to null)
|
|
19
|
+
* * `"lt"` (less than)
|
|
20
|
+
* * `"lte"` (less than or equal to)
|
|
21
|
+
* * `"gt"` (greater than)
|
|
22
|
+
* * `"gte"` (greater than or equal to)
|
|
23
|
+
*
|
|
24
|
+
* The following operators are supported for string fields only:
|
|
25
|
+
* * `"startswith"`
|
|
26
|
+
* * `"endswith"`
|
|
27
|
+
* * `"contains"`
|
|
28
|
+
* * `"doesnotcontain"`
|
|
29
|
+
* * `"isempty"`
|
|
30
|
+
* * `"isnotempty"`
|
|
31
|
+
*/
|
|
32
|
+
operator: string | Function;
|
|
33
|
+
/**
|
|
34
|
+
* The value to which the field is compared. Has to be of the same type as the field.
|
|
35
|
+
*/
|
|
36
|
+
value?: any;
|
|
37
|
+
/**
|
|
38
|
+
* Determines if the string comparison is case-insensitive.
|
|
39
|
+
*/
|
|
40
|
+
ignoreCase?: boolean;
|
|
41
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { PopupAnimation } from '@progress/kendo-vue-popup';
|
|
2
|
+
/**
|
|
3
|
+
* Represents the `skip` and `take` configurations which are wrapped in the `page` object.
|
|
4
|
+
*/
|
|
5
|
+
export interface Page {
|
|
6
|
+
/**
|
|
7
|
+
* The number of records to skip.
|
|
8
|
+
*/
|
|
9
|
+
skip: number;
|
|
10
|
+
/**
|
|
11
|
+
* The number of records to take.
|
|
12
|
+
*/
|
|
13
|
+
take: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The virtualization settings.
|
|
17
|
+
*/
|
|
18
|
+
export interface VirtualizationSettings {
|
|
19
|
+
/**
|
|
20
|
+
* The number of the requested records.
|
|
21
|
+
*/
|
|
22
|
+
pageSize: number;
|
|
23
|
+
/**
|
|
24
|
+
* The number of records to skip.
|
|
25
|
+
*/
|
|
26
|
+
skip: number;
|
|
27
|
+
/**
|
|
28
|
+
* The number of all records.
|
|
29
|
+
*/
|
|
30
|
+
total: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The settings of the popup container.
|
|
34
|
+
*/
|
|
35
|
+
export interface DropDownsPopupSettings {
|
|
36
|
+
/**
|
|
37
|
+
* Controls the popup animation. By default, the open and close animations are enabled.
|
|
38
|
+
*/
|
|
39
|
+
animate?: boolean | PopupAnimation;
|
|
40
|
+
/**
|
|
41
|
+
* Specifies a list of CSS classes that will be added to the Popup element.
|
|
42
|
+
*/
|
|
43
|
+
className?: string | Array<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Sets the width of the popup container. By default, the width of the host element is used.
|
|
46
|
+
*/
|
|
47
|
+
width?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Sets the height of the popup container. By default, the height is 200px.
|
|
50
|
+
*/
|
|
51
|
+
height?: string;
|
|
52
|
+
}
|
|
53
|
+
import { FilterDescriptor } from './filterDescriptor';
|
|
54
|
+
/**
|
|
55
|
+
* @hidden
|
|
56
|
+
*/
|
|
57
|
+
export interface EventData {
|
|
58
|
+
type?: string;
|
|
59
|
+
filter?: FilterDescriptor;
|
|
60
|
+
page?: Page;
|
|
61
|
+
suggestion?: Suggestion;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Represents the `Suggestion` object of the AutoComplete.
|
|
65
|
+
*/
|
|
66
|
+
export interface Suggestion {
|
|
67
|
+
/**
|
|
68
|
+
* Represents the typed text of the user.
|
|
69
|
+
*/
|
|
70
|
+
readonly userInput: string;
|
|
71
|
+
/**
|
|
72
|
+
* Represents the suggested text without the user input.
|
|
73
|
+
*/
|
|
74
|
+
readonly value: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* @hidden
|
|
78
|
+
*/
|
|
79
|
+
export interface InternalState {
|
|
80
|
+
data: DropDownStateBase;
|
|
81
|
+
events: Array<EventData>;
|
|
82
|
+
event: any;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @hidden
|
|
86
|
+
*/
|
|
87
|
+
export interface DropDownStateBase {
|
|
88
|
+
/**
|
|
89
|
+
* Input element text of the Component.
|
|
90
|
+
*/
|
|
91
|
+
text?: string;
|
|
92
|
+
value?: any;
|
|
93
|
+
focused?: boolean;
|
|
94
|
+
opened?: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @hidden
|
|
98
|
+
*/
|
|
99
|
+
export declare enum ActiveDescendant {
|
|
100
|
+
PopupList = 0,
|
|
101
|
+
TagsList = 1
|
|
102
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export var ActiveDescendant;
|
|
5
|
+
(function (ActiveDescendant) {
|
|
6
|
+
ActiveDescendant[ActiveDescendant["PopupList"] = 0] = "PopupList";
|
|
7
|
+
ActiveDescendant[ActiveDescendant["TagsList"] = 1] = "TagsList";
|
|
8
|
+
})(ActiveDescendant || (ActiveDescendant = {}));
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
declare const isPresent: (value: any) => boolean;
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
declare const sameCharsOnly: (word: string, character: string) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
declare const shuffleData: (data: Array<any>, splitIndex: number, defaultItem: any) => any[];
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
declare const matchText: (text: string, word: string, ignoreCase?: boolean) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
declare const scrollToItem: (scrollElem: HTMLDivElement, itemHeight: number, itemIndex: number, translate: number, virtualScroll: boolean) => void;
|
|
21
|
+
/**
|
|
22
|
+
* @hidden
|
|
23
|
+
*/
|
|
24
|
+
declare const itemIndexStartsWith: (items: any[], text?: string, field?: string) => number;
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
declare const getItemIndexByText: (data: Array<any>, text: string, textField?: string, matchCase?: boolean) => number;
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
declare const getItemValue: (item: any, field?: string) => any;
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
declare const matchDataCollections: (data1?: Array<any>, data2?: Array<any>, key?: string) => boolean;
|
|
37
|
+
/**
|
|
38
|
+
* @hidden
|
|
39
|
+
*/
|
|
40
|
+
declare const removeDataItems: (items: Array<any>, toRemove: Array<any>, key?: string) => void;
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
declare const areSame: (item1: any, item2: any, key?: string) => boolean;
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
declare const getFocusedItem: (data: Array<any>, value?: string, textField?: string) => number;
|
|
49
|
+
/**
|
|
50
|
+
* @hidden
|
|
51
|
+
*/
|
|
52
|
+
declare const suggestValue: (value?: string, data?: Array<any>, textField?: string) => string;
|
|
53
|
+
/**
|
|
54
|
+
* @hidden
|
|
55
|
+
*/
|
|
56
|
+
declare const preventDefaultNonInputs: (event: any) => void;
|
|
57
|
+
export { isPresent, sameCharsOnly, shuffleData, matchText, scrollToItem, itemIndexStartsWith, getItemIndexByText, getItemValue, matchDataCollections, removeDataItems, areSame, getFocusedItem, preventDefaultNonInputs, suggestValue };
|