diff --git a/.ua/index.json b/.ua/index.json index 448267b..bed6fac 100644 --- a/.ua/index.json +++ b/.ua/index.json @@ -1,6 +1,6 @@ { "$schema": "ui-arch-registry-index/0.1", - "generatedAt": "2026-10-26T14:21:24.531Z", + "generatedAt": "2026-10-26T14:23:08.179Z", "repoRoot": ".", "packages": [ { @@ -4100,7 +4100,7 @@ "example": "const tags = signal(['前端', '设计']);\ninputTag({ value: tags, max: 5, onChange: (list) => console.log(list.length) })", "steps": [ "传一个 signal 作为 value:回车或逗号把当前输入转成 chip,写回信号后立即重画", - "点 chip 上的 × 删除单个标签;输入框为空时按退格键删掉最后一个(手不离键盘也能改)", + "点 chip 上的 × 删除单个标签,删完焦点交回输入框(chip 一删按钮就消失,不接住焦点键盘用户要从头 Tab);输入框为空时按退格键删掉最后一个(手不离键盘也能改)", "输入后直接失焦也会成标签,不必强行回车;max 满额后输入框禁用,占位文案变成「最多 N 个标签」", "要区分大小写重复判断就传 allowDuplicate: true;默认按原样去重", "样式复用输入组与标签:外框聚焦光环、chip 圆角与语义色都跟既有组件一致,无新增视觉字面量" diff --git a/llms-full.txt b/llms-full.txt index 8538fb8..d7b4384 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -1,6 +1,6 @@ # @ui-arch 组件库 Agent 文档(无图形版) -> 自动生成于 2026-10-26T14:21:24.531Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。 +> 自动生成于 2026-10-26T14:23:08.179Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。 > 组件 = 普通函数,传 props 返回 DOM;状态用 signal 双向绑定:读 signal() 写 signal(v)。 ## 快速上手 @@ -2170,7 +2170,7 @@ inputTag({ value: tags, max: 5, onChange: (list) => console.log(list.length) }) 手把手: 1. 传一个 signal 作为 value:回车或逗号把当前输入转成 chip,写回信号后立即重画 -2. 点 chip 上的 × 删除单个标签;输入框为空时按退格键删掉最后一个(手不离键盘也能改) +2. 点 chip 上的 × 删除单个标签,删完焦点交回输入框(chip 一删按钮就消失,不接住焦点键盘用户要从头 Tab);输入框为空时按退格键删掉最后一个(手不离键盘也能改) 3. 输入后直接失焦也会成标签,不必强行回车;max 满额后输入框禁用,占位文案变成「最多 N 个标签」 4. 要区分大小写重复判断就传 allowDuplicate: true;默认按原样去重 5. 样式复用输入组与标签:外框聚焦光环、chip 圆角与语义色都跟既有组件一致,无新增视觉字面量 diff --git a/packages/skin/ui/src/inputTag.ts b/packages/skin/ui/src/inputTag.ts index 29ff1ec..46499a2 100644 --- a/packages/skin/ui/src/inputTag.ts +++ b/packages/skin/ui/src/inputTag.ts @@ -40,7 +40,10 @@ export function inputTag(props: InputTagProps): HTMLElement { type: 'button', class: 'ua-tag-close', 'aria-label': `移除标签 ${tag}`, - onClick: () => put(props.value().filter((item) => item !== tag)), // 按值删,不用索引(外部可能已改序) + onClick: () => { + put(props.value().filter((item) => item !== tag)); // 按值删,不用索引(外部可能已改序) + input.focus(); // 焦点归还:chip 一删按钮就消失,不接住焦点会掉回 body + }, }, '×'); root.insertBefore(h('span', { class: 'ua-tag' }, h('span', {}, tag), close), input); } diff --git a/packages/skin/ui/ua.manifest.json b/packages/skin/ui/ua.manifest.json index 62b8e06..e9291f6 100644 --- a/packages/skin/ui/ua.manifest.json +++ b/packages/skin/ui/ua.manifest.json @@ -3971,7 +3971,7 @@ "example": "const tags = signal(['前端', '设计']);\ninputTag({ value: tags, max: 5, onChange: (list) => console.log(list.length) })", "steps": [ "传一个 signal 作为 value:回车或逗号把当前输入转成 chip,写回信号后立即重画", - "点 chip 上的 × 删除单个标签;输入框为空时按退格键删掉最后一个(手不离键盘也能改)", + "点 chip 上的 × 删除单个标签,删完焦点交回输入框(chip 一删按钮就消失,不接住焦点键盘用户要从头 Tab);输入框为空时按退格键删掉最后一个(手不离键盘也能改)", "输入后直接失焦也会成标签,不必强行回车;max 满额后输入框禁用,占位文案变成「最多 N 个标签」", "要区分大小写重复判断就传 allowDuplicate: true;默认按原样去重", "样式复用输入组与标签:外框聚焦光环、chip 圆角与语义色都跟既有组件一致,无新增视觉字面量"