| | |
| | | } |
| | | ); |
| | | |
| | | watch( |
| | | () => props.modelValue, |
| | | (newVal) => { |
| | | const [h, m] = newVal.split(":").map(Number); |
| | | const hourIdx = hours.indexOf(h); |
| | | const minuteIdx = minutes.indexOf(m); |
| | | |
| | | if (hourIdx !== -1) { |
| | | selectedIndexHour.value = hourIdx + 2; |
| | | selectedHour.value = h; |
| | | scrollToSelected("hour", selectedIndexHour.value); |
| | | } |
| | | |
| | | if (minuteIdx !== -1) { |
| | | selectedIndexMinute.value = minuteIdx + 2; |
| | | selectedMinute.value = m; |
| | | scrollToSelected("minute", selectedIndexMinute.value); |
| | | } |
| | | } |
| | | ); |
| | | |
| | | function onScroll(type: "hour" | "minute") { |
| | | if (isProgrammaticScroll[type]) { |
| | | // 程序滚动,忽略,避免死循环 |
| | |
| | | user-select: none; |
| | | cursor: pointer; |
| | | transition: color 0.3s ease, font-size 0.3s ease; |
| | | |
| | | |
| | | &.active { |
| | | font-size: 0.5rem; |