@afeefa/vue-app 0.0.133 → 0.0.134
Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.134
|
package/package.json
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
@keydown.tab.prevent.exact="keyenter"
|
9
9
|
@keydown.space.prevent="keyenter"
|
10
10
|
@keydown.tab.shift.prevent="$emit('backtab')"
|
11
|
+
@keydown.exact="keyinput"
|
11
12
|
>
|
12
13
|
<template v-if="models_.length">
|
13
14
|
<a-table v-bind="$attrs">
|
@@ -56,6 +57,7 @@ import { ListViewMixin } from '@a-vue/components/list/ListViewMixin'
|
|
56
57
|
})
|
57
58
|
export default class SearchSelectList extends Mixins(ListViewMixin) {
|
58
59
|
activeModelIndex = -1
|
60
|
+
localSearchKey = ''
|
59
61
|
|
60
62
|
get hasHeader () {
|
61
63
|
return this.$slots.header && this.$slots.header.length > 1
|
@@ -88,6 +90,19 @@ export default class SearchSelectList extends Mixins(ListViewMixin) {
|
|
88
90
|
}
|
89
91
|
}
|
90
92
|
|
93
|
+
keyinput (event) {
|
94
|
+
if (event.key.length !== 1) {
|
95
|
+
return
|
96
|
+
}
|
97
|
+
|
98
|
+
this.localSearchKey = event.key
|
99
|
+
this.activeModelIndex = this.findActiveIndexForLocalSearch()
|
100
|
+
|
101
|
+
setTimeout(() => {
|
102
|
+
this.localSearchKey = ''
|
103
|
+
}, 200)
|
104
|
+
}
|
105
|
+
|
91
106
|
keydown () {
|
92
107
|
this.activeModelIndex++
|
93
108
|
if (this.activeModelIndex > this.models_.length - 1) {
|
@@ -131,6 +146,19 @@ export default class SearchSelectList extends Mixins(ListViewMixin) {
|
|
131
146
|
}
|
132
147
|
return -1
|
133
148
|
}
|
149
|
+
|
150
|
+
findActiveIndexForLocalSearch () {
|
151
|
+
for (const [index, model] of this.models_.entries()) {
|
152
|
+
const regex = new RegExp(`^${this.localSearchKey}`, 'i')
|
153
|
+
if (model.getTitle().match(regex)) {
|
154
|
+
if (this.activeModelIndex === index) {
|
155
|
+
continue
|
156
|
+
}
|
157
|
+
return index
|
158
|
+
}
|
159
|
+
}
|
160
|
+
return this.activeModelIndex
|
161
|
+
}
|
134
162
|
}
|
135
163
|
</script>
|
136
164
|
|