Commit 915055614b5f6ab4758eb2b322f962c1a6894548
1 parent
d70cad45
TimePicker
TimePicker
Showing
1 changed file
with
24 additions
and
11 deletions
Show diff stats
src/components/date-picker/base/time-spinner.vue
... | ... | @@ -156,20 +156,33 @@ |
156 | 156 | this.$emit('on-change', data); |
157 | 157 | |
158 | 158 | const from = this.$els[type].scrollTop; |
159 | - | |
160 | - let index = cell.text; | |
161 | - const Type = firstUpperCase(type); | |
162 | - const disabled = this[`disabled${Type}`]; | |
163 | - if (disabled.length && this.hideDisabledOptions) { | |
164 | - let _count = 0; | |
165 | - disabled.forEach(item => item <= index ? _count++ : ''); | |
166 | - index -= _count; | |
167 | - } | |
168 | - | |
169 | - const to = 24 * index; | |
159 | + const to = 24 * this.getScrollIndex(type, cell.text); | |
170 | 160 | scrollTop(this.$els[type], from, to, 500); |
171 | 161 | } |
162 | + }, | |
163 | + getScrollIndex (type, index) { | |
164 | + const Type = firstUpperCase(type); | |
165 | + const disabled = this[`disabled${Type}`]; | |
166 | + if (disabled.length && this.hideDisabledOptions) { | |
167 | + let _count = 0; | |
168 | + disabled.forEach(item => item <= index ? _count++ : ''); | |
169 | + index -= _count; | |
170 | + } | |
171 | + return index; | |
172 | + }, | |
173 | + updateScroll () { | |
174 | + const times = ['hours', 'minutes', 'seconds']; | |
175 | + times.forEach(type => this.$els[type].style.overflow = 'hidden'); | |
176 | + this.$nextTick(() => { | |
177 | + times.forEach(type => { | |
178 | + this.$els[type].scrollTop = 24 * this.getScrollIndex(type, this[type]); | |
179 | + }); | |
180 | + this.$nextTick(() => times.forEach(type => this.$els[type].style.overflow = 'auto')); | |
181 | + }); | |
172 | 182 | } |
183 | + }, | |
184 | + compiled () { | |
185 | + this.updateScroll(); | |
173 | 186 | } |
174 | 187 | }; |
175 | 188 | </script> |
176 | 189 | \ No newline at end of file | ... | ... |