Feedback
用户反馈收集弹窗:以 SideSheet(popup) 或 Modal(modal) 形态收集 emoji 评分 / 文本 / 单选 / 多选 / 自定义反馈。纯组合本库 SideSheet/Modal + TextArea/RadioGroup/CheckboxGroup/Button。
如何引入
import { Feedback } from '@chenzy-design/svelte';基本使用
通过 visible 设置是否显示。默认反馈内容是 emoji 形式,可通过 onValueChange 获取当前选择。
文字类型
设置 type 为 text 可获得多行输入框形式,可通过 textAreaProps 设置多行输入框参数。
单选反馈
设置 type 为 radio 可获得单选形式,可通过 radioGroupProps 设置单选参数。
多选反馈
设置 type 为 checkbox 可获得多选形式,可通过 checkboxGroupProps 设置多选参数。
自定义反馈内容
设置 type 为 custom,通过 children 设置内容;需自行经 okButtonProps.disabled 控制提交禁用。
模态对话框形式
通过 mode 切换反馈形式,默认 popup,设为 modal 可获得模态对话框形式。
反馈完成提示
反馈完成后,可切换展示信息提示用户本次反馈已经完成。
API 参考
Feedback
Props
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
mode | 展示模式:popup=SideSheet 抽屉;modal=Modal 弹窗 | 'popup' | 'modal' | popup |
type | 反馈内容类型 | 'text' | 'emoji' | 'radio' | 'checkbox' | 'custom' | emoji |
onValueChange | 反馈内容变化时的回调 | (value: string | string[] | Object) => void | - |
textAreaProps | 设置多行输入框的参数 | TextAreaProps | - |
radioGroupProps | 设置单选的参数(含 options) | RadioGroupProps | - |
checkboxGroupProps | 设置多选的参数(含 options) | CheckboxGroupProps | - |
renderContent | 自定义反馈内容展示(接收已渲染的默认内容) | (content: Snippet) => Snippet | - |
onOk | 点击确定回调,返回 promise 时 resolve 后自动关闭 | (e) => void | Promise<any> | - |
onCancel | 取消回调,返回 promise 时 resolve 后自动关闭 | (e) => void | Promise<any> | - |
okButtonProps | 设置提交按钮的参数(type=custom 时可用 disabled 控制禁用) | ButtonProps | - |
cancelButtonProps | 设置取消按钮的参数 | ButtonProps | - |
afterClose | 关闭后回调 | () => void | - |
...rest | mode=modal 透传 ModalProps;mode=popup 透传 SideSheetProps(含 visible/title/footer/width 等) | ModalProps | SideSheetProps | - |
Accessibility
| ARIA role | dialog |
| 键盘交互 | Esc |
- 外壳复用 Modal/SideSheet 的 role=dialog + focus-trap + Esc + 背景 inert
- emoji 为裸 span + click(对齐 Semi,无 role=radio / roving tabindex),补 Enter/Space 键盘触发
设计变量
| 变量 | 默认值 | 用法 |
|---|---|---|
--cd-color-feedback-thank-text | var(--cd-color-text-2) | 感谢文字的文本颜色 |