iter(g224): 收起态上下键微调时间

This commit is contained in:
HIsheR
2026-10-26 20:05:07 +08:00
parent c5826b7211
commit 63351dcaba
3 changed files with 14 additions and 5 deletions
+10 -3
View File
@@ -127,10 +127,17 @@ export function timePicker(props: TimePickerProps): HTMLElement {
effect(() => { clearBtn.hidden = !clearable || !value(); }); // 无值或未开启时藏起来(hidden 一并移出点击区)
root.addEventListener('keydown', (e: KeyboardEvent) => {
if (open() || !clearable) return; // 卫语句:展开时按键归列内导航,未开启清空则不接管
if (e.key !== 'Backspace' && e.key !== 'Delete') return; // 卫语句:只接管这两个键
if (open()) return; // 卫语句:展开时按键归列内导航
if (clearable && (e.key === 'Backspace' || e.key === 'Delete')) { // 收起态清空:不必伸手去点 ×
e.preventDefault();
clear();
return;
}
if (!value() || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown')) return; // 卫语句:无值不猜、只管上下键
e.preventDefault();
clear(); // 键盘等价:不必伸手去点 ×
const delta = (e.key === 'ArrowUp' ? 1 : -1) * (e.shiftKey ? 60 : step); // Shift + ↑↓ 按小时调,否则按步长调
const total = (Number(picked().hh) * 60 + Number(picked().mm) + delta + 1440) % 1440; // 环形:00:00 的上一档回到 23:xx
commit(pad(Math.floor(total / 60)), pad(total % 60)); // 收起态改值同样派发 onChange
});
bindOutside(root, open, () => open(false)); // 点外部收起:仅展开期间挂监听
effect(() => {