Radio & Checkbox 热区扩至 20×20 并补充 visual case(DES-96/DES-97)
Pre-release · 类型: ✨ 新功能
关联 issue:DES-96 / DES-97 / WEB-847
问题
WEB-847 后续反馈(DES-68 加了 label prop 之后):
- Checkbox:hover 到文字时鼠标没有变为 pointer
- RadioGroup:hover 文字不能点中
排查结论:label prop 的组件实现本身正常(真实浏览器验证点文字可选中、光标为 pointer),症状来自 design-site demo 没有改用 label prop——Checkbox demo 用裸 htmlFor label(无 pointer 样式),RadioGroup demo 只是并排 <span>(无关联、点不中)。
另外控件自身热区仅为视觉框 14×14px,小于 Figma 的 20×20 图标容器。
改动文件
packages/design/src/components/Checkbox/constants.tspackages/design/src/components/Checkbox/styles.tspackages/design/src/components/Checkbox/Checkbox.test.tsxpackages/design/src/components/Checkbox/Checkbox.visual.spec.tsx(新增)packages/design/src/components/Checkbox/CheckboxDesignSpec.mdpackages/design/src/components/RadioGroup/styles.tspackages/design/src/components/RadioGroup/RadioGroup.test.tsxpackages/design/src/components/RadioGroup/RadioGroup.visual.spec.tsx(新增)packages/design/src/components/RadioGroup/RadioGroupDesignSpec.mdpackages/design/scripts/visual-diff-config.tspackages/design-site/docs/components/atomic/controls/checkbox.mdx(含 zh-CN)packages/design-site/docs/components/atomic/controls/radio-group.mdx(含 zh-CN)
改动内容
- 热区扩大:
Checkbox根元素与RadioGroupItem根元素增加relative before:absolute before:-inset-[3px] before:content-[''],视觉尺寸不变(14px),可点击热区四边各外扩 3px,对齐 Figma 20×20 图标容器。 - 文档 demo 修正:design-site 的 Checkbox「带标签」与 RadioGroup「基础用法 / 禁用状态」demo 改用
labelprop,整行可点击且文字上为 pointer 光标;Props 表补充label/labelClassName。 - visual case:新增
Checkbox.visual.spec.tsx(主矩阵 / round / hover / with-label)与RadioGroup.visual.spec.tsx(主矩阵 / hover / with-label),并包含点击区域行为测试(点文字选中、文字 pointer 光标、视觉框外 2px 点击仍可选中);scripts/visual-diff-config.ts注册对应 Figma 节点映射。 - 单测:补充 hit area class 断言与
label行为(结构包裹、点文字选中、光标样式、禁用态)。