对话框
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
isOpen | boolean | — | 对话框是否打开。该属性必填。 |
isInline | boolean | false | 以普通文档流渲染内容,不使用 <dialog>、遮罩与模态行为,仅用于文档预览。 |
width | number | string | 400 | 首选宽度,数字单位为像素,字符串原样使用。窄屏时夹取到视口内,全屏变体忽略此项。 |
maxHeight | number | string | '75vh' | 最大高度,数字单位为像素,字符串原样使用。全屏变体忽略此项。 |
position | DialogPosition | 居中 | 对话框的静态偏移,支持 top、bottom、start、end,未设置时居中。逻辑属性 start 与 end 在 RTL 下自动镜像,全屏变体忽略此项。 |
variant | 'standard' | 'fullscreen' | 'standard' | 对话框变体:standard 为标准对话框,fullscreen 占满整个视口。 |
purpose | 'required' | 'form' | 'info' | 'info' | 允许的关闭方式:required 禁用 Escape 与点击遮罩,必须由用户响应;form 仅允许 Escape;info 两者都允许。 |
padding | 0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 主题默认值(16px) | 对话框内边距,取值对应 --astryx-spacing-* 令牌。 |
事件
openChange(isOpen: boolean):用户通过 Escape 或点击遮罩请求关闭时以false触发,是否触发取决于purpose。父组件通过设置isOpen来关闭。
插槽
default:对话框内容。通常为DialogHeader,之后是正文与操作区。
DialogHeader 属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
title | string | — | 对话框标题。打开时获得默认焦点,并为对话框命名。必填。 |
subtitle | string | — | 标题下方的次要文字。为空时不渲染。 |
hasCloseButton | boolean | false | 显示关闭按钮,点击时发出 openChange(false)。 |
closeButtonLabel | string | 'Close' | 关闭按钮的无障碍名称。 |
DialogHeader 事件与插槽
openChange(isOpen: boolean):点击关闭按钮时以false触发。startContent:标题之前的内容,例如返回按钮。endContent:标题之后、关闭按钮之前的内容。
useImperativeDialog
show(content, options?):以给定内容打开对话框。选项与传给 Hook 的默认选项合并。hide():关闭对话框。isOpen:只读的打开状态。Host:在模板中渲染一次的组件。
主题
css
.my-dialog {
--astryx-dialog-background: #fff;
--astryx-dialog-foreground: #000;
}--astryx-dialog-background:表面颜色。--astryx-dialog-foreground:文字颜色。--astryx-dialog-overlay:遮罩颜色。--astryx-dialog-shadow:表面阴影。--astryx-dialog-padding:未设置padding属性时的默认内边距。--astryx-dialog-title-color:标题颜色。