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 | ... | ... |