Toast action 支持透传 actionProps 到底层按钮(WEB-1181)
版本: 0.6.7 · 类型: ✨ Feature
问题
ToastActionConfig(对外公开类型,经 Toast.tsx re-export)此前只接受 { label, onClick },action 按钮的 variant / size 在 ToastItem 内写死。调用方——例如 AI Feedback toast——无法自定义 action 按钮(自定义 variant、aria-label、data-testid 等)。
改动文件
packages/design/src/components/Toast/toast-manager.tspackages/design/src/components/Toast/ToastItem.tsxpackages/design/src/components/Toast/__tests__/Toast.test.tsx
改动内容
ToastActionConfig新增可选actionProps,透传给底层Button:- 类型:
Omit<ButtonProps, 'children' | 'onClick'> & { [key: `data-${string}`]: string | number | boolean | undefined };data-*索引签名沿用 DialogokButtonProps既有约定。 - 排除
children(由label承担)与onClick(由 Toast 组合为onClick+ 自动关闭,因此不可覆盖)。
- 类型:
ToastItem的renderActionButton里,{...config.actionProps}放在默认variant/size之后(使调用方可覆盖),但在组合onClick之前(使点击 + 自动关闭行为不可被覆盖)。- 单测:
aiFeedbacktoast 通过actionProps把 action 覆盖为variant="primary"+data-testid,断言 class 生效且onClick仍被触发。
用法
toast.aiFeedback('...', {
action: {
label: 'Regenerate',
onClick: handleRegenerate,
actionProps: { variant: 'primary', 'aria-label': 'Regenerate', 'data-testid': 'ai-regenerate' },
},
});