iter(g08): 新增 segmented 分段控制器组件
This commit is contained in:
+50
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "ui-arch-registry-index/0.1",
|
||||
"generatedAt": "2026-10-26T02:16:50.161Z",
|
||||
"generatedAt": "2026-10-26T02:20:07.266Z",
|
||||
"repoRoot": ".",
|
||||
"packages": [
|
||||
{
|
||||
@@ -177,7 +177,8 @@
|
||||
"formItem(props, control):表单字段,label + 必填红星 + 规则校验 + 错误区,返回 { el, validate } 句柄",
|
||||
"dataTable(props):数据表格,粘性表头 / 行选择(全选三态)/ 排序 / 筛选 / 分页 / 空状态;loading 为真时数据行换骨架行且筛选/翻页禁用,内核为 table-core",
|
||||
"image(props):图片,缩略图点击 / 回车开遮罩大图预览(Esc 或点击遮罩关闭),width 控制缩略宽",
|
||||
"timeline(props):时间线,items 按序渲染纵向事件流(标题 / 时间 / 正文 + 语义色节点),mode 控制轴线左右,pending 追加进行中节点"
|
||||
"timeline(props):时间线,items 按序渲染纵向事件流(标题 / 时间 / 正文 + 语义色节点),mode 控制轴线左右,pending 追加进行中节点",
|
||||
"segmented(props):分段控制器,胶囊分段 + 滑动滑块,value 信号双向绑定,←→ 环形导航,整组或单项可禁用"
|
||||
],
|
||||
"keyTypes": [
|
||||
"ButtonProps",
|
||||
@@ -216,7 +217,8 @@
|
||||
"DrawerProps",
|
||||
"AvatarProps",
|
||||
"TimelineItem",
|
||||
"TimelineProps"
|
||||
"TimelineProps",
|
||||
"SegmentedProps"
|
||||
]
|
||||
},
|
||||
"usage": "const checked = signal(false); checkbox({ label: '同意', checked }); const open = signal(false); modal({ title: '确认', open }, '内容')",
|
||||
@@ -1616,6 +1618,51 @@
|
||||
"需要轴线居右(如右侧栏时间流)时传 mode: 'right',条目与节点整体镜像",
|
||||
"content 为纯文本;需要按钮等交互内容时改用 accordion / card 组合"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "segmented",
|
||||
"title": "分段控制器 Segmented",
|
||||
"demo": "sec-segmented",
|
||||
"props": [
|
||||
{
|
||||
"n": "options",
|
||||
"t": "OptionItem[]",
|
||||
"r": 1,
|
||||
"d": "分段选项列表(互斥),每项含 value / label / disabled"
|
||||
},
|
||||
{
|
||||
"n": "value",
|
||||
"t": "Signal<string>",
|
||||
"r": 1,
|
||||
"d": "当前选中值信号,双向绑定(点击写回,外部赋值即同步滑块)"
|
||||
},
|
||||
{
|
||||
"n": "size",
|
||||
"t": "'sm' | 'md'",
|
||||
"d": "尺寸档位;缺省 md",
|
||||
"df": "md"
|
||||
},
|
||||
{
|
||||
"n": "disabled",
|
||||
"t": "boolean | Signal<boolean>",
|
||||
"d": "整组禁用:布尔直接置位,传信号则动态同步;单项禁用走 options[].disabled"
|
||||
},
|
||||
{
|
||||
"n": "onChange",
|
||||
"t": "(value: string) => void",
|
||||
"k": 1,
|
||||
"d": "切换回调(禁用项与重复点击当前项都不触发)"
|
||||
}
|
||||
],
|
||||
"example": "segmented({ options: [{ value: 'day', label: '日' }, { value: 'week', label: '周' }], value: range })",
|
||||
"steps": [
|
||||
"和 tabs 的分工:tabs 是页签(下划线指示条 + 面板语义),segmented 是紧凑互斥切换(视图 / 单位 / 时间粒度)",
|
||||
"value 必须传信号:点击写回信号,外部改信号滑块自动平移,不要在回调里另存一份状态",
|
||||
"options[].disabled 置灰单项;disabled 传布尔或信号则整组失效(连滑块一起置灰)",
|
||||
"键盘:←→ 在可用项间环形移动并选中,Tab 只落在当前项上(漫游 tabindex)",
|
||||
"滑块几何由组件测量按钮位置得到,不要在外部改按钮宽度 / 内边距,否则需自行重渲染",
|
||||
"需要带图标或更复杂布局的分段,改用 radioGroup + 自定义样式"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user