diff --git a/components/lib/autocomplete/AutoComplete.vue b/components/lib/autocomplete/AutoComplete.vue index 14be34fac..e5022d4e3 100755 --- a/components/lib/autocomplete/AutoComplete.vue +++ b/components/lib/autocomplete/AutoComplete.vue @@ -777,8 +777,13 @@ export default { isValidSelectedOption(option) { return this.isValidOption(option) && this.isSelected(option); }, + isEquals(value1, value2) { + return ObjectUtils.equals(value1, value2, this.equalityKey); + }, isSelected(option) { - return ObjectUtils.equals(this.modelValue, this.getOptionValue(option), this.equalityKey); + const optionValue = this.getOptionValue(option); + + return this.multiple ? (this.modelValue || []).some((value) => this.isEquals(value, optionValue)) : this.isEquals(this.modelValue, this.getOptionValue(option)); }, findFirstOptionIndex() { return this.visibleOptions.findIndex((option) => this.isValidOption(option)); diff --git a/components/lib/datatable/DataTable.d.ts b/components/lib/datatable/DataTable.d.ts index ae1e7d490..9f88f6fd8 100755 --- a/components/lib/datatable/DataTable.d.ts +++ b/components/lib/datatable/DataTable.d.ts @@ -943,9 +943,9 @@ export interface DataTableProps { */ filterDisplay?: 'menu' | 'row' | undefined; /** - * Fields for global filter + * An array of fields as string or function to use in global filtering. */ - globalFilterFields?: string[] | undefined; + globalFilterFields?: (string | ((data: any) => string))[] | undefined; /** * Locale to use in filtering. The default locale is the host environment's current locale. */ diff --git a/components/lib/datatable/DataTable.vue b/components/lib/datatable/DataTable.vue index 64e45b4c9..4deb806bb 100755 --- a/components/lib/datatable/DataTable.vue +++ b/components/lib/datatable/DataTable.vue @@ -87,6 +87,7 @@ :filtersStore="filters" :filterDisplay="filterDisplay" :filterInputProps="filterInputProps" + :first="d_first" @column-click="onColumnHeaderClick($event)" @column-mousedown="onColumnHeaderMouseDown($event)" @filter-change="onFilterChange" diff --git a/components/lib/datatable/TableHeader.vue b/components/lib/datatable/TableHeader.vue index ea40057e8..a21b14d5c 100755 --- a/components/lib/datatable/TableHeader.vue +++ b/components/lib/datatable/TableHeader.vue @@ -29,6 +29,7 @@ :filterDisplay="filterDisplay" :filtersStore="filtersStore" :filterInputProps="filterInputProps" + :first="first" @filter-change="$emit('filter-change', $event)" @filter-apply="$emit('filter-apply')" @operator-change="$emit('operator-change', $event)" @@ -223,6 +224,10 @@ export default { type: Boolean, default: false }, + first: { + type: Number, + default: 0 + }, filterInputProps: { type: null, default: null diff --git a/components/lib/inputnumber/InputNumber.vue b/components/lib/inputnumber/InputNumber.vue index 1bce421b4..55c5f115f 100755 --- a/components/lib/inputnumber/InputNumber.vue +++ b/components/lib/inputnumber/InputNumber.vue @@ -355,7 +355,7 @@ export default { return; } - if (event.shiftKey || event.altKey) { + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) { this.isSpecialChar = true; return; diff --git a/components/lib/inputotp/InputOtp.vue b/components/lib/inputotp/InputOtp.vue index e16537c49..ec670ed1a 100755 --- a/components/lib/inputotp/InputOtp.vue +++ b/components/lib/inputotp/InputOtp.vue @@ -157,7 +157,7 @@ export default { break; default: - if ((this.integerOnly && !((event.code.startsWith('Digit') || event.code.startsWith('Numpad')) && Number(event.code) >= 0 && Number(event.code) <= 9)) || (this.tokens.join('').length >= this.length && event.code !== 'Delete')) { + if ((this.integerOnly && !((event.code.startsWith('Digit') || event.code.startsWith('Numpad')) && Number(event.key) >= 0 && Number(event.key) <= 9)) || (this.tokens.join('').length >= this.length && event.code !== 'Delete')) { event.preventDefault(); } diff --git a/components/lib/slider/Slider.vue b/components/lib/slider/Slider.vue index dda31db01..b2a5c7db1 100755 --- a/components/lib/slider/Slider.vue +++ b/components/lib/slider/Slider.vue @@ -5,8 +5,8 @@ v-if="!range" :class="cx('handle')" :style="[sx('handle'), handleStyle]" - @touchstart="onDragStart($event)" - @touchmove="onDrag($event)" + @touchstart.passive="onDragStart($event)" + @touchmove.passive="onDrag($event)" @touchend="onDragEnd($event)" @mousedown="onMouseDown($event)" @keydown="onKeyDown($event)" @@ -24,8 +24,8 @@ v-if="range" :class="cx('handle')" :style="[sx('handle'), rangeStartHandleStyle]" - @touchstart="onDragStart($event, 0)" - @touchmove="onDrag($event)" + @touchstart.passive="onDragStart($event, 0)" + @touchmove.passive="onDrag($event)" @touchend="onDragEnd($event)" @mousedown="onMouseDown($event, 0)" @keydown="onKeyDown($event, 0)" @@ -43,8 +43,8 @@ v-if="range" :class="cx('handle')" :style="[sx('handle'), rangeEndHandleStyle]" - @touchstart="onDragStart($event, 1)" - @touchmove="onDrag($event)" + @touchstart.passive="onDragStart($event, 1)" + @touchmove.passive="onDrag($event)" @touchend="onDragEnd($event)" @mousedown="onMouseDown($event, 1)" @keydown="onKeyDown($event, 1)" diff --git a/components/lib/tree/Tree.d.ts b/components/lib/tree/Tree.d.ts index bc189f94a..268c4fefb 100755 --- a/components/lib/tree/Tree.d.ts +++ b/components/lib/tree/Tree.d.ts @@ -370,13 +370,17 @@ export interface TreeSlots { }): VNode[]; /** * Custom node icon template. - * @param {Object} scope - togglericon slot's params. + * @param {Object} scope - nodeicon slot's params. */ nodeicon(scope: { /** * Tree node instance */ node: TreeNode; + /** + * Style class of the icon. + */ + class: string; }): VNode[]; /** * Custom checkbox icon diff --git a/components/lib/tree/Tree.spec.js b/components/lib/tree/Tree.spec.js index e9cacca40..a791a3ba3 100644 --- a/components/lib/tree/Tree.spec.js +++ b/components/lib/tree/Tree.spec.js @@ -63,7 +63,7 @@ describe('Tree.vue', () => { it('should render icon slot', ({ expect }) => { let wrapper = mount(Tree, { slots: { - nodeIcon: `` + nodeicon: `` }, props: { value: [ diff --git a/components/lib/tree/TreeNode.vue b/components/lib/tree/TreeNode.vue index 015629953..f3140f4e5 100755 --- a/components/lib/tree/TreeNode.vue +++ b/components/lib/tree/TreeNode.vue @@ -32,7 +32,7 @@ - + diff --git a/doc/button/IconsDoc.vue b/doc/button/IconsDoc.vue index a24fb0989..1b84061b7 100644 --- a/doc/button/IconsDoc.vue +++ b/doc/button/IconsDoc.vue @@ -38,7 +38,7 @@ export default {