Dialog
模态对话框:宽 440、560 或 720,圆角 20;标题、描述、正文、操作。⌘Enter 提交。较长的表单使用 StepDialog:每步一个问题。
function Form() {
const [open, setOpen] = useState(false);
const create = () => {
setOpen(false);
toast.success("Key created");
};
return (
<>
<Dialog
open={open}
onOpenChange={setOpen}
trigger={<Button variant="primary">Create key</Button>}
title="Create key"
description="Applications use this key to call the gateway."
onSubmit={create}
footer={
<>
<Dialog.Close>
<Button>Cancel</Button>
</Dialog.Close>
<Button variant="primary" onClick={create} shortcut={["mod", "enter"]}>
Create key
</Button>
</>
}
>
<div className="flex flex-col gap-20">
<Input label="Name" placeholder="checkout-web" autoFocus />
<Select
label="Expires"
options={[
{ value: "never", label: "Never" },
{ value: "90", label: "In 90 days" },
]}
defaultValue="90"
fullWidth
/>
</div>
</Dialog>
</>
);
}import { Dialog } from "@logicplanes/kaeso-ui";属性
childrenReactNode对话框的内容和操作。
defaultOpenboolean非受控时,是否初始为打开状态。
descriptionReactNode标题下方的一句话。
footerReactNode右对齐的操作:先是取消(次要),再是主要操作。
headerStartReactNode标题上方的顶栏,开头放置此内容,末尾是关闭圆形按钮(LayerDialog 的返回按钮)。标题、描述和内容保持同一左边缘;传入
null保留顶栏但开头为空。hideCloseboolean隐藏关闭圆形按钮(少用)。
inlineboolean不使用 Portal 和背景遮罩渲染,用于文档和状态矩阵。
onOpenChange((open: boolean) => void)打开或关闭时调用。
onSubmit(() => void)按 ⌘Enter 时调用(通常是主要操作)。
openboolean受控时,是否处于打开状态。
size"md" | "sm" | "lg"对话框的宽度。
titleReactNode对话框的标题,同时作为其无障碍名称。
triggerReactElement<unknown, string | JSXElementConstructor<any>>触发器,单个元素。