Alune 组件
useAluneConfirm
通过 Promise<boolean> 获取确认结果,由共享 Provider 承载弹窗。
使用方式
返回 (options: AluneConfirmOptions) => Promise<boolean>。确认成功为 true,取消为 false;异步 onOk 拒绝时继续停留。需要位于共享 Provider 内。
import { AluneConfirmProvider, useAluneConfirm } from '@alune/ui'; 运行示例
运行与复制源码来自同一 TSX 文件。浮层、状态和主题独立于文档;所有回调只更新本地模拟数据。
正在加载示例…
查看运行源码
import { useState } from 'react';
import { Button, useAluneConfirm, DialogNote } from '@alune/ui';
export default function Example() {
const confirm = useAluneConfirm();
const [result, setResult] = useState('');
return (
<div className="example example--narrow">
<h2 className="example-title">确认后更新本地状态</h2>
<div className="example-row">
<Button
onClick={async () => {
const accepted = await confirm({
title: '继续本地示例?',
level: 1,
content: <DialogNote title="确认范围">只更新此页面状态。</DialogNote>,
});
setResult(accepted ? '已确认' : '已取消');
}}
>
请求确认
</Button>
</div>
<p className="example-status" role="status">
{result}
</p>
</div>
);
}
API
AluneConfirmProvider
AluneUIProvider 已组合这个 Provider。只有自行组合底层上下文的宿主才需要单独使用,避免重复确认承载。
AluneConfirmProviderProps
| 属性 / 方法 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
children | ReactNode | — | 是 | 渲染的子内容。 |
useAluneConfirm
返回 (options: AluneConfirmOptions) => Promise<boolean>。确认成功为 true,取消为 false;异步 onOk 拒绝时继续停留。需要位于共享 Provider 内。
AluneConfirmOptions
| 属性 / 方法 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
content | ReactNode | — | 否 | 富内容。 |
onOk | (() => unknown) | — | 否 | 返回 Promise 时等待;成功后确认结果为 true,拒绝时继续停留。 |
onCancel | (() => void) | — | 否 | 取消回调,宿主更新受控状态。 |
body | "default" | "flush" | "tight" | "scroll" | — | 否 | 正文内边距或滚动方式。 |
footer | ReactNode | — | 否 | 替换操作行,null 移除整个页脚。 |
title | ReactNode | — | 是 | 标题或主文案。 |
danger | boolean | — | 否 | 危险操作样式。 |
level | DialogLevel | — | 否 | 风险等级:0 普通表单,1 提醒,2 不可撤销。 |
tone | DialogTone | — | 否 | 语义色调。 |
size | number | DialogSize | — | 否 | 预设尺寸或数字宽度。 |
glyph | ReactNode | — | 否 | 标题图标,false 隐藏。 |
eyebrow | DialogEyebrow | — | 否 | 标题上方的上下文。 |
levelLabel | ReactNode | — | 否 | 风险标签,false 隐藏。 |
description | ReactNode | — | 否 | 辅助说明。 |
hints | ReactNode | — | 否 | 页脚提示,false 隐藏。 |
hintVerb | ReactNode | — | 否 | 默认 Enter 提示中的操作动词。 |
okIcon | false | "warning" | "info" | "x" | "arrow-right" | "arrow-up-right" | "check" | "caret" | "trash" | "lock" | "key" | "server" | "folder" | "folder-open" | "branch" | "merge" | "pr" | "archive" | "cloud-up" | "cloud-down" | "globe" | "user" | "mail" | "terminal" | "laptop" | "search" | "bell" | "copy" | "eye" | "eye-off" | "link" | "sparkle" | "sliders" | "columns" | "download" | "moon" | "sun" | "wave" | "file" | "file-plus" | "refresh" | "plus" | "pencil" | "swap" | "shield" | "plug" | "tree" | "commit" | "chat" | "dots" | "clock" | "undo" | — | 否 | 确认按钮图标,false 隐藏。 |
okDisabled | boolean | — | 否 | 锁定确认按钮。 |
busyText | ReactNode | — | 否 | 等待状态文案。 |
hideCancel | boolean | — | 否 | 隐藏取消按钮。 |
extra | ReactNode | — | 否 | 额外内容或操作。 |
acknowledge | ReactNode | — | 否 | 必须勾选的确认说明;不传时没有此门槛。 |
typedConfirm | { value: string; label?: ReactNode; placeholder?: string; icon?: DialogIconName; mismatch?: ReactNode; match?: ReactNode; } | — | 否 | 必须输入的目标文字与匹配说明。 |
initialFocus | "ok" | "cancel" | "field" | — | 否 | 初始焦点目标;默认由风险等级决定。 |
AluneConfirmApi
| 属性 / 方法 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
confirm | (options: AluneConfirmOptions) => Promise<boolean> | — | 是 | 接收 AluneConfirmOptions,返回 Promise<boolean>,确认 true,取消 false。 |
交互与使用限制
为每个操作提供可访问名称,为输入关联 label;使用语义化组件和清晰焦点。不要只靠颜色传达状态,禁用与等待时避免重复执行。
返回 (options: AluneConfirmOptions) => Promise<boolean>。确认成功为 true,取消为 false;异步 onOk 拒绝时继续停留。需要位于共享 Provider 内。
键盘、焦点、风险确认与通知策略的完整约定见交互规范。