From 87bdc03213d48a7ca1aeaae505c403f371ab4fcb Mon Sep 17 00:00:00 2001 From: HIsheR Date: Mon, 26 Oct 2026 20:07:05 +0800 Subject: [PATCH] =?UTF-8?q?iter(g227):=20=E6=89=93=E5=BC=80=E5=90=8E?= =?UTF-8?q?=E7=84=A6=E7=82=B9=E8=BF=9B=E5=85=A5=E6=97=B6=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- llms-full.txt | 3 ++- packages/skin/ui/src/timePicker.ts | 2 ++ packages/skin/ui/ua.manifest.json | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/llms-full.txt b/llms-full.txt index 3727217..e25aa91 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -1,6 +1,6 @@ # @ui-arch 组件库 Agent 文档(无图形版) -> 自动生成于 2026-10-26T12:04:54.649Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。 +> 自动生成于 2026-10-26T12:06:51.450Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。 > 组件 = 普通函数,传 props 返回 DOM;状态用 signal 双向绑定:读 signal() 写 signal(v)。 ## 快速上手 @@ -2017,6 +2017,7 @@ const at = signal('09:30'); timePicker({ value: at, minuteStep: 15, onChange: (t 7. 要和输入框并排对齐就传 size(sm / md / lg):高度走 --ua-control-h-* 三档,与 textField、select 的档位完全同源,不会出现「旁边的输入框矮 6px」 8. 传入值不在步长档上时(如 09:07 + 15 分钟档)不会「没有高亮」:分列按最近档高亮并滚到位,点它即落到 09:15;原值在触发器上照常显示,直到用户重新选 9. 收起态键盘微调:聚焦触发器按 ↑↓ 按步长加减(12:30 步长 15 → 12:45),Shift + ↑↓ 按小时加减,跨 00:00 / 23:xx 自动环形;改完同样触发 onChange +10. 打开弹层后焦点直接落在时列当前格(键盘用户不必再 Tab 找):列内 ↑↓ 立即生效,Esc 收起后焦点回到触发器 现场演示:apps/docs/demo.html#sec-timepicker diff --git a/packages/skin/ui/src/timePicker.ts b/packages/skin/ui/src/timePicker.ts index 2f56ef5..a99eeca 100644 --- a/packages/skin/ui/src/timePicker.ts +++ b/packages/skin/ui/src/timePicker.ts @@ -148,6 +148,8 @@ export function timePicker(props: TimePickerProps): HTMLElement { const { hh, mm } = picked(); reveal(hourCol.col, hourCol.buttons, hh ? Number(hh) : now.getHours()); // 有值先滚到值上 reveal(minuteCol.col, minuteCol.buttons, mm ? minutes.indexOf(nearestMinute(mm)) : Math.floor(now.getMinutes() / step)); + const enter = hourCol.buttons.find((el) => el.classList.contains('is-active')) ?? hourCol.buttons[0]; // 打开即把焦点送进时列 + enter?.focus({ preventScroll: true }); // preventScroll:别把刚算好的列内滚动位置顶掉 }); // 布局就绪后再量 } else { releaseEsc?.(); diff --git a/packages/skin/ui/ua.manifest.json b/packages/skin/ui/ua.manifest.json index 4d42271..8e48be1 100644 --- a/packages/skin/ui/ua.manifest.json +++ b/packages/skin/ui/ua.manifest.json @@ -3705,7 +3705,8 @@ "需要允许回到「未选」态就传 clearable: true:有值时触发器右侧出现 ×(不进 Tab 序),聚焦触发器按 Delete / Backspace 也能清空,回调收到空串", "要和输入框并排对齐就传 size(sm / md / lg):高度走 --ua-control-h-* 三档,与 textField、select 的档位完全同源,不会出现「旁边的输入框矮 6px」", "传入值不在步长档上时(如 09:07 + 15 分钟档)不会「没有高亮」:分列按最近档高亮并滚到位,点它即落到 09:15;原值在触发器上照常显示,直到用户重新选", - "收起态键盘微调:聚焦触发器按 ↑↓ 按步长加减(12:30 步长 15 → 12:45),Shift + ↑↓ 按小时加减,跨 00:00 / 23:xx 自动环形;改完同样触发 onChange" + "收起态键盘微调:聚焦触发器按 ↑↓ 按步长加减(12:30 步长 15 → 12:45),Shift + ↑↓ 按小时加减,跨 00:00 / 23:xx 自动环形;改完同样触发 onChange", + "打开弹层后焦点直接落在时列当前格(键盘用户不必再 Tab 找):列内 ↑↓ 立即生效,Esc 收起后焦点回到触发器" ] } ]