iter(g119): 空状态支持自定义图标
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import { h } from '@ui-arch/frame';
|
||||
import type { EmptyProps } from './types.js';
|
||||
|
||||
/*** 空状态:居中占位提示,title/description 可选,action 放操作区(常见为按钮) ***/
|
||||
/*** 空状态:居中占位提示,title/description 可选,action 放操作区(常见为按钮),icon 可换成自家插图 ***/
|
||||
export function empty(props: EmptyProps): HTMLDivElement {
|
||||
return h(
|
||||
'div',
|
||||
{ class: 'ua-empty', role: 'status' }, // role=status 由读屏播报
|
||||
h('div', { class: 'ua-empty-icon', 'aria-hidden': 'true' }, '⌀'), // 装饰符号,读屏跳过
|
||||
h('div', { class: 'ua-empty-icon', 'aria-hidden': 'true' }, props.icon ?? '⌀'), // 装饰符号默认 ⌀,读屏跳过
|
||||
props.title ? h('div', { class: 'ua-empty-title' }, props.title) : null,
|
||||
props.description ? h('div', { class: 'ua-empty-desc' }, props.description) : null,
|
||||
props.action ? h('div', { class: 'ua-empty-action' }, props.action) : null,
|
||||
|
||||
@@ -230,6 +230,7 @@ export interface RateProps {
|
||||
export interface EmptyProps {
|
||||
title?: string; // 主标题;缺省不渲染
|
||||
description?: string; // 补充说明;缺省不渲染
|
||||
icon?: unknown; // 图标区内容(字符串 / 图标 DOM);缺省渲染 ⌀ 占位符号
|
||||
action?: unknown; // 操作区内容(常见为按钮);缺省不渲染
|
||||
}
|
||||
|
||||
|
||||
@@ -1327,6 +1327,11 @@
|
||||
"t": "string",
|
||||
"d": "补充说明;缺省不渲染"
|
||||
},
|
||||
{
|
||||
"n": "icon",
|
||||
"t": "unknown",
|
||||
"d": "图标区内容(字符串或图标 DOM);缺省渲染 ⌀ 占位符号,装饰性元素不进无障碍树"
|
||||
},
|
||||
{
|
||||
"n": "action",
|
||||
"t": "unknown",
|
||||
@@ -1337,7 +1342,8 @@
|
||||
"steps": [
|
||||
"在列表 / 表格 / 筛选结果为空时渲染 empty 占位",
|
||||
"title 一句话说明状态,description 补充原因或建议",
|
||||
"action 传入 DOM(如 ghost 按钮)引导用户下一步操作"
|
||||
"action 传入 DOM(如 ghost 按钮)引导用户下一步操作",
|
||||
"要换成自家插图就传 icon(字符串或 SVG 节点):它固定 aria-hidden,文案仍由 title / description 承担"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user