iter(g166): 下拉选项支持分组标题

This commit is contained in:
HIsheR
2026-10-26 16:13:05 +08:00
parent e1b7de6f20
commit a80644c35b
8 changed files with 81 additions and 16 deletions
+5 -3
View File
@@ -1,6 +1,6 @@
# @ui-arch 组件库 Agent 文档(无图形版)
> 自动生成于 2026-10-26T08:10:50.397Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 自动生成于 2026-10-26T08:12:34.257Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 组件 = 普通函数,传 props 返回 DOM;状态用 signal 双向绑定:读 signal() 写 signal(v)。
## 快速上手
@@ -275,7 +275,7 @@ const night = signal(true); switchButton({ label: '夜间模式', checked: night
参数:
- options(必填):OptionItem[] —— 选项列表,每项 { value, label }
- options(必填):OptionItem[] —— 选项列表,每项 { value, label };每项可加 group 指定分组小标题
- value:Signal<string> —— 选中值信号,双向绑定
- placeholder:string —— 未选中时触发器显示的占位文案
- searchable:boolean —— 弹层顶部带搜索框,按标签包含匹配过滤;缺省 false
@@ -298,6 +298,7 @@ const city = signal(''); select({ options: [{ value: 'bj', label: '北京' }], v
5. 弹层展开时按 Esc 只收起下拉并回焦触发器;若下拉在弹窗/抽屉内,再按一次 Esc 才关外层(逐层关闭)
6. searchable: true 时打开即聚焦搜索框,输入实时过滤;↑↓/Home/End 只在可见项间移动,无命中显示「无匹配选项」
7. 需要允许「不选」的筛选项就开 clearable:有值时右缘出现 ×,点它把值写成空串并回调 onChange(''),键盘在收起态按 Delete / Backspace 等价
8. 候选多时给选项加 group:相邻同组合成一段、组首插灰色小标题(段间有分隔线),过滤后整组无命中时标题一起隐藏——搜索路径与键盘 ↑↓ 仍只走真实选项
现场演示:apps/docs/demo.html#sec-form
@@ -1597,7 +1598,7 @@ affix({ offset: 8 }, card({ title: '滚动时我会贴顶' }, h('p', null, '正
参数:
- options(必填):CheckOption[] —— 选项集合:value / label / 可选 disabled
- options(必填):CheckOption[] —— 选项集合:value / label / 可选 disabled;每项可加 group 指定分组小标题
- value:Signal<string[]> —— 选中值数组信号;不传则内部维护
- placeholder:string —— 未选时占位文案;已选时让位给标签
- max:number —— 最多选几项:到上限后未选项自动禁用
@@ -1620,6 +1621,7 @@ multiSelect({ value: tagPick, max: 3, placeholder: '选择技术栈', options: [
4. ↑↓ 环形移动高亮、Enter 切换当前项、Esc 收起(与其它弹层共用一个 Esc 栈)
5. value 传数组信号即受控,外部写入会同步标签区
6. 选中项多时传 maxTagCount: 2 折叠:前 2 枚标签照常逐个删除,其余折成虚线「+N」,悬停 title 给出被折叠的项名,点它直接展开弹层;受控数组一变折叠数就重算
7. 候选分组同样用 group 字段:小标题是不可点击的 li(不占键盘高亮下标),选中后的标签顺序仍按点击顺序而非分组顺序
现场演示:apps/docs/demo.html#sec-multiselect