diff --git a/.ua/backlog.json b/.ua/backlog.json index b65773b..8c599d0 100644 --- a/.ua/backlog.json +++ b/.ua/backlog.json @@ -2402,6 +2402,15 @@ "status": "done", "notes": "nearestMinute(mm) 取 Math.round(mm/step) 下标并钳到列尾,空值/NaN 直接返回空串;column 内引入 activeText():时列精确比、分列走最近档,is-active 与 aria-selected 同源(原先两处各写一遍比较);打开时锚点改为「有值滚值(时取 Number(hh)、分取 nearest 的下标)、无值滚此刻」;点最近档 commit 时按当前 hh + 档值写回,触发器在用户重选前仍显示原值;manifest steps 补一条说明该行为;check 全绿、audit 十一类 0(踩坑:bash -e 内联脚本里的反引号被命令替换吃掉,改用 Edit 工具精改模板字符串)", "domain": "tune" + }, + { + "id": "g224", + "title": "timePicker 收起态 ↑↓ 微调时间", + "motivation": "表单里最常做的是「往后挪 15 分钟」这种微调,现在必须开弹层、找到分列、点格子、再收起;inputNumber 早就有 ↑↓ 步进,时间选择却没有对应的键盘手感。", + "acceptance": "收起态聚焦触发器时 ↑↓ 按 minuteStep 加减、Shift + ↑↓ 按小时加减,跨 00:00 / 23:59 环形回绕,写回与收起态清空共用同一套 keydown;展开态按键仍归列内导航;manifest 步骤说明;npm run check 全绿。", + "status": "done", + "notes": "root 的 keydown 收成三段:展开态直接让位给列内导航 → 收起态 clearable 时接管 Backspace/Delete → 有值时接管 ↑↓(delta = ±(shiftKey ? 60 : step),总分钟数 +1440 取模实现环形),写回走同一个 commit(值没变不派发);timePicker.ts 159 行仍在 200 行门禁内;manifest steps 补第 9 条说明步长与 Shift 语义", + "domain": "tune" } ] } diff --git a/.ua/iterations.log b/.ua/iterations.log index 2e7b9b3..8a2556a 100644 --- a/.ua/iterations.log +++ b/.ua/iterations.log @@ -267,3 +267,4 @@ {"ts":"2026-10-26T20:02:26+08:00","id":"g221","result":"done","commit":"92bc8bb","summary":"verify 新增 checkScrollCoverage:括号配平扫出全部 overflow 容器,逐个核对是否在细条规则内(14/14 覆盖),负向自检摘掉 .ua-timepicker-col 即报错"} {"ts":"2026-10-26T20:03:19+08:00","id":"g222","result":"done","commit":"3067c63","summary":"timePicker 补 size 三档:高度并入顶部「控件高度三档」统一规则、组件段删掉重复高度声明,与 textField/select 同源"} {"ts":"2026-10-26T20:04:32+08:00","id":"g223","result":"done","commit":"126da05","summary":"timePicker 非档值(如 09:07 + 15 分钟档)改为按最近档高亮与滚动,锚点优先跟值,消除「有值却无高亮」的空弹层"} +{"ts":"2026-10-26T20:05:13+08:00","id":"g224","result":"done","commit":"63351dc","summary":"timePicker 收起态支持 ↑↓ 按步长微调、Shift + ↑↓ 按小时微调,跨零点环形回绕,与收回合同一套 keydown"}