iter: b04 新增独立 pagination 分页器并与 dataTable 页码联动

This commit is contained in:
HIsheR
2026-10-23 16:00:13 +08:00
parent 28820574e8
commit 8c9a63b5d2
12 changed files with 261 additions and 12 deletions
+30 -2
View File
@@ -1,6 +1,6 @@
# @ui-arch 组件库 Agent 文档(无图形版)
> 自动生成于 2026-10-23T07:52:40.603Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 自动生成于 2026-10-23T07:59:47.390Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 组件 = 普通函数,传 props 返回 DOM;状态用 signal 双向绑定:读 signal() 写 signal(v)。
## 快速上手
@@ -40,7 +40,7 @@
## @ui-arch/ui(skin-dom)v0.1.0
19 个 DOM 组件,统一用法:组件是普通函数,传入 props 返回 DOM 节点;需要状态时先创建 signal 再双向绑定。引入 CSS:import '@ui-arch/ui/ui.css'(内部已消费 tokens)。
20 个 DOM 组件,统一用法:组件是普通函数,传入 props 返回 DOM 节点;需要状态时先创建 signal 再双向绑定。引入 CSS:import '@ui-arch/ui/ui.css'(内部已消费 tokens)。
### button — 按钮 Button
@@ -395,6 +395,31 @@ const tab = signal('a'); tabs({ tabs: [{ value: 'a', label: '概览' }, { value:
现场演示:apps/docs/demo.html#sec-tabs-modal
### pagination — 分页器 Pagination
参数:
- page(必填):Signal<number> —— 当前页码信号,双向绑定:外部赋值自动翻页,点击页码写回信号
- pageSize(必填):number —— 每页条数
- total(必填):number —— 总条数
- onChange(回调):(page: number) => void —— 翻页回调
示例:
```
const page = signal(1); pagination({ page, pageSize: 3, total: 24, onChange: (p) => console.log(p) })
```
手把手:
1. 创建页码信号 page = signal(1),与 pageSize / total 一起传入
2. 页码 ≤7 全部展开;更多时只保留首尾与当前页 ±1,缺口折叠为省略号
3. 首末页自动禁用 ‹ › 翻页按钮,当前页禁点并标记 aria-current
4. 与 dataTable 联动:把同一个 page 信号传给 dataTable 的 page 参数,两处翻页自动同步
5. 键盘可达:全部是原生 button,Tab 聚焦后 Enter / Space 触发
现场演示:apps/docs/demo.html#sec-table
### modal — 弹窗 Modal
参数:
@@ -459,6 +484,7 @@ const name = signal(''); const f = form({ onSubmit: submit }, [formItem({ label:
- filterKey:string —— 工具栏筛选的列;缺省取第一列
- pageSize:number —— 每页行数;缺省 5
- selectable:boolean —— 启用行选择列:全选三态(含半选)、行 checkbox、已选计数;缺省 false
- page:Signal<number> —— 受控页码信号:与内核分页双向同步,传同一个信号给独立 pagination 组件即可联动
示例:
@@ -474,6 +500,7 @@ dataTable({ data: users, selectable: true, columns: [{ key: 'name', header: '姓
4. 选中行用低视觉比重样式(淡色底 + 弱化文字),选择状态存 rowKey,跨页不丢失
5. 工具栏输入框即筛选,输入即时过滤并回第 1 页;无匹配时显示空状态行
6. 表头粘性固定(滚动容器 max-height 420px),斑马纹 + 悬停高亮由 CSS 提供
7. 需要独立分页器联动时传 page 信号:const page = signal(1),dataTable({ page }) 与 pagination({ page }) 共用
现场演示:apps/docs/demo.html#sec-table
@@ -492,6 +519,7 @@ API 速览:
- toast.info/success/warning/error(message, duration?):消息提示工厂,右上角堆叠,默认 3s 自动消失,出入场微动画;showToast(props) 为完整入参版本
- tooltip(props, trigger):悬浮提示,包裹触发器,hover / focus 延迟 150ms 出场,移出 / 失焦 / Esc 收起
- skeleton(props):骨架屏占位,variant = text | rect | circle,text 支持 rows 多行,扫光微动画
- pagination(props):独立分页器,page 信号双向绑定,页码过多折叠省略号,首末页禁用翻页,键盘可达
- spinner(props):加载指示器,size 控制直径
- progress(props):进度条,轨道 + 渐变流动填充,value 信号驱动 0-100,满格切 success 色
- tabs(props):标签页,active 信号双向绑定,滑动指示条 + 方向键环形导航,支持禁用页签