Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: icons for v15 #2874

Merged
merged 6 commits into from
Dec 22, 2024
Merged

fix: icons for v15 #2874

merged 6 commits into from
Dec 22, 2024

Conversation

xiaoyatong
Copy link
Collaborator

@xiaoyatong xiaoyatong commented Dec 22, 2024

🤔 这个变动的性质是?

  • 新特性提交
  • 日常 bug 修复
  • 站点、文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • TypeScript 定义更新
  • 包体积优化
  • 性能优化
  • 功能增强
  • 国际化改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他改动(是关于什么的改动?)

🔗 相关 Issue

💡 需求背景和解决方案

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项⚠️

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • fork仓库代码是否为最新避免文件冲突
  • Files changed 没有 package.json lock 等无关文件

Summary by CodeRabbit

  • 新功能

    • 更新了多个组件中的图标,替换为新的图标以提升视觉效果。
    • Tabbar组件中,"发现"标签被更改为"逛"。
  • 样式

    • 修改了按钮的布局,使用Space组件替代Grid组件,改善了按钮之间的间距。
    • 更新了按钮图标的显示样式,确保一致性和美观。
  • 文档

    • 更新了多个演示文件中的图标导入,确保使用最新的图标组件。
  • 依赖

    • 更新了@nutui/icons-react@nutui/icons-react-taro的版本,以支持新的图标。

Copy link

coderabbitai bot commented Dec 22, 2024

概述

演练

这个拉取请求主要涉及在 NutUI React 组件库中更新和替换图标。更改跨越多个组件和演示文件,主要是将旧图标(如 ChecklistFind)替换为新图标(如 CheckHi)。这些更改主要影响图标的视觉表示,同时保持组件的整体功能和结构不变。

变更

文件路径 变更摘要
src/packages/badge/* 测试文件和演示中的图标从 Checklist 替换为 Check
src/packages/tabbar/* 大量演示文件中的 Find 图标替换为 Hi,标题从"发现"改为"逛"
src/packages/checkbox/* 多个演示文件中 Checklist 图标替换为 Check
src/packages/steps/* 演示文件中的图标替换,如 People 替换为 Transit
package.json 更新 @nutui/icons-react@nutui/icons-react-taro 依赖版本

可能相关的 PR

建议标签

size/XL

建议审阅者

  • oasis-cloud

诗歌

🐰 图标跳舞,换新装
代码如春风,轻轻变换
Checklist 告别,Check 登场
兔子微笑,库更年轻
开源精神,无限延长 🌈


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (14)
src/packages/steps/demos/h5/demo1.tsx (1)

17-19: 布局样式修改建议

使用 flex 布局是个好的改进,但建议考虑以下优化:

  1. 考虑将样式抽取到独立的样式文件中
  2. 可以使用 CSS-in-JS 或 styled-components 来更好地管理样式
+// 建议将样式抽取到独立文件
+const ButtonWrapper = styled.div`
+  margin-top: 10px;
+  display: flex;
+  justify-content: center;
+`;

-<div
-  style={{ marginTop: '10px', display: 'flex', justifyContent: 'center' }}
->
+<ButtonWrapper>
src/packages/segmented/demos/h5/demo3.tsx (1)

9-9: 建议:重新考虑使用相同图标的设计方案

在两个不同功能的选项中使用相同的 Star 图标可能会影响用户体验,建议:

  • 为不同功能选择独特的图标以提高可识别性
  • 确保图标能够直观地表达对应功能的含义

Also applies to: 14-14

src/packages/tabbar/demos/taro/demo8.tsx (1)

3-3: 建议统一图标尺寸规范

为了保持与 H5 版本的一致性,建议在 Taro 版本中也指定图标尺寸属性(width={20} height={20})。这样可以确保在不同平台上有统一的展示效果。

-import { Category, Hi, Home } from '@nutui/icons-react-taro'
+import { Category, Hi, Home } from '@nutui/icons-react-taro'

 const Demo8 = () => (
   <Tabbar inactiveColor="#7d7e80" activeColor="#0073ff">
-    <Tabbar.Item title="首页" icon={<Home />} />
-    <Tabbar.Item title="分类" icon={<Category />} />
-    <Tabbar.Item title="逛" icon={<Hi />} />
+    <Tabbar.Item title="首页" icon={<Home width={20} height={20} />} />
+    <Tabbar.Item title="分类" icon={<Category width={20} height={20} />} />
+    <Tabbar.Item title="逛" icon={<Hi width={20} height={20} />} />
   </Tabbar>
 )

Also applies to: 9-9

src/packages/tabbar/demos/taro/demo3.tsx (2)

3-3: 建议统一图标尺寸规范

与其他 demo 保持一致,建议添加图标尺寸属性。

-    <Tabbar.Item icon={<Home />} />
-    <Tabbar.Item icon={<Category />} />
-    <Tabbar.Item icon={<Hi />} />
-    <Tabbar.Item icon={<Cart />} />
-    <Tabbar.Item icon={<User />} />
+    <Tabbar.Item icon={<Home width={20} height={20} />} />
+    <Tabbar.Item icon={<Category width={20} height={20} />} />
+    <Tabbar.Item icon={<Hi width={20} height={20} />} />
+    <Tabbar.Item icon={<Cart width={20} height={20} />} />
+    <Tabbar.Item icon={<User width={20} height={20} />} />

Also applies to: 13-13


Line range hint 6-8: 建议优化事件处理函数

在生产环境中建议移除或替换 console.log,使用更合适的日志记录方式。

   <Tabbar
-    onSwitch={(value) => {
-      console.log(value)
-    }}
+    onSwitch={(value) => {
+      // TODO: 添加适当的事件处理逻辑
+    }}
   >
src/packages/tabbar/demos/taro/demo9.tsx (1)

3-3: 图标尺寸设置统一,更新合理!

  1. 所有图标统一使用 size={18} 属性,保持了视觉一致性
  2. 新图标的导入和使用符合组件规范

建议:考虑将图标尺寸提取为常量,便于统一管理。

+ const ICON_SIZE = 18;
  <Tabbar fixed>
-   <Tabbar.Item title="首页" icon={<Home size={18} />} />
+   <Tabbar.Item title="首页" icon={<Home size={ICON_SIZE} />} />
    // ... 其他项目类似更新
  </Tabbar>

Also applies to: 9-9

src/packages/tabbar/demos/taro/demo6.tsx (1)

3-3: 建议为图标添加无障碍支持

建议为图标组件添加 aria-label 属性,以提升无障碍访问支持。同时确保图标和文本的语义表达保持一致。

- <Tabbar.Item title="逛" icon={<Hi size={18} />} />
+ <Tabbar.Item title="逛" icon={<Hi size={18} aria-label="浏览商品" />} />

Also applies to: 9-9

src/packages/tabbar/demos/taro/demo7.tsx (1)

6-6: 建议验证颜色对比度

当前使用的颜色:

  • 未激活颜色:#7d7e80
  • 激活颜色:#0073ff

建议验证这些颜色是否符合 WCAG 2.0 的无障碍标准,确保在不同背景色下都具有足够的对比度。同时建议在组件文档中说明这些自定义颜色的使用场景。

Also applies to: 9-9

src/packages/tabbar/demos/h5/demo1.tsx (1)

3-3: 建议:补充文档和测试用例

考虑到导航项文案的变更,建议:

  1. 更新相关文档中的示例说明
  2. 确保测试用例覆盖新的文案和图标
  3. 添加组件属性说明文档,特别是关于图标尺寸的使用规范

需要我帮助生成相关文档或测试用例吗?

Also applies to: 13-13

src/packages/radio/demos/taro/demo9.tsx (1)

12-14: 建议优化重复代码

当前实现中有两个完全相同的 Radio 组件配置,建议将共同属性抽取或使用数组映射来减少重复代码。

示例优化:

- <Radio icon={<Check />} activeIcon={<Check color="red" />} value="1">
-   自定义图标
- </Radio>
- <Radio icon={<Check />} activeIcon={<Check color="red" />} value="2">
-   自定义图标
- </Radio>
+ {['1', '2'].map((value) => (
+   <Radio
+     key={value}
+     icon={<Check />}
+     activeIcon={<Check color="red" />}
+     value={value}
+   >
+     自定义图标
+   </Radio>
+ ))}

Also applies to: 15-17

src/packages/radio/demos/h5/demo9.tsx (1)

13-14: 建议统一样式处理方式

建议将重复的样式配置抽取为常量,并考虑使用 CSS-in-JS 或统一的样式主题系统:

+ const radioIconProps = {
+   icon: <Check />,
+   activeIcon: <Check style={{ color: 'red' }} />,
+ };

  return (
    <Radio.Group defaultValue="1" labelPosition="left" style={{ width: '100%' }}>
-     <Radio
-       icon={<Check />}
-       activeIcon={<Check style={{ color: 'red' }} />}
-       value="1"
-     >
+     <Radio {...radioIconProps} value="1">
        自定义图标
      </Radio>
-     <Radio
-       icon={<Check />}
-       activeIcon={<Check style={{ color: 'red' }} />}
-       value="2"
-     >
+     <Radio {...radioIconProps} value="2">
        自定义图标
      </Radio>
    </Radio.Group>
  );

Also applies to: 20-21

src/packages/collapse/demos/taro/demo6.tsx (1)

33-33: 建议使用主题变量替代硬编码的样式值

当前实现中直接使用了硬编码的颜色值 #999 和固定的图标尺寸 12。建议:

  1. 使用主题变量来管理颜色
  2. 考虑将图标尺寸也纳入主题系统
- color: '#999',
+ color: 'var(--nutui-collapse-extra-color)',

- <Check color="#999" size={12} />
+ <Check color="var(--nutui-collapse-extra-color)" size="var(--nutui-collapse-icon-size)" />

Also applies to: 36-37

src/sites/doc/components/issue/issue.tsx (1)

3-3: 图标语义改进

Checklist 更改为 Check 图标更好地表达了"已关闭"的状态含义,这是一个很好的改进。

建议考虑为图标添加语义化的 aria-label

-          <Check />
+          <Check aria-label="已关闭" />

Also applies to: 54-54

src/packages/checkbox/demos/h5/demo2.tsx (1)

52-67: 建议优化代码复用

多个 Checkbox 组件使用相同的 activeIcon 配置,建议提取为常量或配置项,以提高可维护性。

 const Demo2 = () => {
   const [controlled, setControlled] = useState(false)
   const [controlledGroup, setControlledGroup] = useState(['2'])
+  const commonActiveIcon = <Check className="nut-checkbox-button-icon-checked" />
   // ...
   <Checkbox
-    activeIcon={<Check className="nut-checkbox-button-icon-checked" />}
+    activeIcon={commonActiveIcon}
     shape="button"
     // ...
   />
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 651fcc2 and f2f9b34.

⛔ Files ignored due to path filters (17)
  • src/packages/address/__test__/__snapshots__/address.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/audio/__test__/__snapshots__/audio.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/backtop/__test__/__snapshots__/backtop.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/badge/__test__/__snapshots__/badge.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/cascader/__tests__/__snapshots__/cascader.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/checkbox/__test__/__snapshots__/checkbox.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/collapse/__test__/__snapshots__/collapse.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/grid/__test__/__snapshots__/grid.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/hoverbutton/__test__/__snapshots__/hoverbutton.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/image/__test__/__snapshots__/image.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/menu/__test__/__snapshots__/menu.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/noticebar/__test__/__snapshots__/noticebar.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/numberkeyboard/_test_/__snapshots__/index.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/rate/__test__/__snapshots__/rate.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/resultpage/__test__/__snapshots__/resultpage.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/tabbar/__tests__/__snapshots__/tabbar.spec.tsx.snap is excluded by !**/*.snap
  • src/packages/timeselect/__test__/__snapshots__/timeselect.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (58)
  • src/packages/badge/__test__/badge.spec.tsx (2 hunks)
  • src/packages/badge/demos/h5/demo1.tsx (4 hunks)
  • src/packages/badge/demos/h5/demo4.tsx (1 hunks)
  • src/packages/badge/demos/taro/demo4.tsx (1 hunks)
  • src/packages/cascader/cascader.taro.tsx (2 hunks)
  • src/packages/cascader/cascader.tsx (2 hunks)
  • src/packages/checkbox/demos/h5/demo1.tsx (2 hunks)
  • src/packages/checkbox/demos/h5/demo2.tsx (2 hunks)
  • src/packages/checkbox/demos/h5/demo7.tsx (2 hunks)
  • src/packages/checkbox/demos/taro/demo1.tsx (2 hunks)
  • src/packages/checkbox/demos/taro/demo2.tsx (2 hunks)
  • src/packages/checkbox/demos/taro/demo7.tsx (2 hunks)
  • src/packages/collapse/demos/h5/demo5.tsx (2 hunks)
  • src/packages/collapse/demos/h5/demo6.tsx (3 hunks)
  • src/packages/collapse/demos/taro/demo5.tsx (2 hunks)
  • src/packages/collapse/demos/taro/demo6.tsx (3 hunks)
  • src/packages/hoverbutton/demos/taro/demo3.tsx (2 hunks)
  • src/packages/inputnumber/inputnumber.scss (1 hunks)
  • src/packages/popover/demos/h5/demo2.tsx (2 hunks)
  • src/packages/popover/demos/taro/demo2.tsx (2 hunks)
  • src/packages/radio/__test__/radio.spec.tsx (2 hunks)
  • src/packages/radio/demos/h5/demo8.tsx (1 hunks)
  • src/packages/radio/demos/h5/demo9.tsx (2 hunks)
  • src/packages/radio/demos/taro/demo8.tsx (1 hunks)
  • src/packages/radio/demos/taro/demo9.tsx (2 hunks)
  • src/packages/segmented/demos/h5/demo3.tsx (1 hunks)
  • src/packages/segmented/demos/taro/demo3.tsx (1 hunks)
  • src/packages/steps/__tests__/steps.spec.tsx (3 hunks)
  • src/packages/steps/demos/h5/demo1.tsx (1 hunks)
  • src/packages/steps/demos/h5/demo2.tsx (1 hunks)
  • src/packages/steps/demos/h5/demo3.tsx (1 hunks)
  • src/packages/steps/demos/h5/demo4.tsx (1 hunks)
  • src/packages/steps/demos/h5/demo5.tsx (1 hunks)
  • src/packages/steps/demos/h5/demo6.tsx (2 hunks)
  • src/packages/steps/demos/h5/demo7.tsx (2 hunks)
  • src/packages/steps/demos/taro/demo1.tsx (1 hunks)
  • src/packages/steps/demos/taro/demo6.tsx (2 hunks)
  • src/packages/steps/demos/taro/demo7.tsx (2 hunks)
  • src/packages/tabbar/__tests__/tabbar.spec.tsx (6 hunks)
  • src/packages/tabbar/demos/h5/demo1.tsx (2 hunks)
  • src/packages/tabbar/demos/h5/demo2.tsx (2 hunks)
  • src/packages/tabbar/demos/h5/demo3.tsx (2 hunks)
  • src/packages/tabbar/demos/h5/demo4.tsx (1 hunks)
  • src/packages/tabbar/demos/h5/demo5.tsx (1 hunks)
  • src/packages/tabbar/demos/h5/demo6.tsx (1 hunks)
  • src/packages/tabbar/demos/h5/demo7.tsx (1 hunks)
  • src/packages/tabbar/demos/h5/demo8.tsx (1 hunks)
  • src/packages/tabbar/demos/h5/demo9.tsx (1 hunks)
  • src/packages/tabbar/demos/taro/demo1.tsx (2 hunks)
  • src/packages/tabbar/demos/taro/demo2.tsx (1 hunks)
  • src/packages/tabbar/demos/taro/demo3.tsx (2 hunks)
  • src/packages/tabbar/demos/taro/demo4.tsx (1 hunks)
  • src/packages/tabbar/demos/taro/demo5.tsx (1 hunks)
  • src/packages/tabbar/demos/taro/demo6.tsx (1 hunks)
  • src/packages/tabbar/demos/taro/demo7.tsx (1 hunks)
  • src/packages/tabbar/demos/taro/demo8.tsx (1 hunks)
  • src/packages/tabbar/demos/taro/demo9.tsx (1 hunks)
  • src/sites/doc/components/issue/issue.tsx (2 hunks)
✅ Files skipped from review due to trivial changes (8)
  • src/packages/tabbar/demos/h5/demo4.tsx
  • src/packages/steps/demos/h5/demo4.tsx
  • src/packages/steps/demos/taro/demo1.tsx
  • src/packages/radio/demos/taro/demo8.tsx
  • src/packages/steps/demos/h5/demo2.tsx
  • src/packages/steps/demos/h5/demo3.tsx
  • src/packages/steps/demos/h5/demo5.tsx
  • src/packages/tabbar/demos/taro/demo4.tsx
🔇 Additional comments (39)
src/packages/collapse/demos/taro/demo5.tsx (2)

13-13: 存在与 H5 版本相同的问题

该实现与 H5 版本存在相同的问题:

  1. 组件内部图标使用不一致
  2. Star 图标的语义表达不够准确

建议参考 H5 版本的修改建议进行统一处理。

Also applies to: 16-16


3-3: 验证:检查整个代码库的图标使用一致性

需要确保图标的使用在整个代码库中保持一致。

Also applies to: 13-16

✅ Verification successful

Based on the search results, I can now generate the final response since I have gathered comprehensive information about icon usage across the codebase:

图标使用已保持一致性

代码库中 Star 图标的使用已经保持一致性,主要体现在:

  • H5 版本统一使用 @nutui/icons-react
  • Taro 版本统一使用 @nutui/icons-react-taro
  • 在相同组件的 H5 和 Taro 版本中保持了一致的图标使用方式
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查代码库中 Star 图标的使用情况
echo "检查 Star 图标的使用场景:"
rg -l "import.*Star.*from.*@nutui/icons" | while read -r file; do
    echo "=== $file ==="
    rg "Star" "$file" -A 2 -B 2
done

# 检查 Collapse 组件中的 expandIcon 使用情况
echo -e "\n检查 Collapse 组件的 expandIcon 使用:"
rg "<Collapse\.Item.*expandIcon" -A 1

Length of output: 24350

src/packages/segmented/demos/taro/demo3.tsx (2)

3-3: 导入语句正确!

Star 图标从正确的包中导入,符合项目规范。


9-9: 请确认图标使用的一致性

两个不同的选项(Apps 和 AfterSaleService)使用相同的 Star 图标可能会让用户感到困惑。请确认:

  1. 这是否符合设计规范?
  2. 是否应该使用不同的图标来区分不同的功能?

运行以下脚本来检查其他组件中的图标使用情况:

Also applies to: 14-14

✅ Verification successful

Let me gather more context about the icon usage patterns in these demo files.


图标使用符合组件设计规范

经过验证,这是一个展示 Segmented 组件基础功能的演示用例。在 H5 和 Taro 版本中都使用了相同的图标模式,这表明这是有意为之的设计选择,用于演示组件的图标功能特性。在演示用例中使用相同的图标是可以接受的,因为:

  1. 这是一个功能演示,重点在于展示 Segmented 组件支持图标的能力
  2. H5 和 Taro 版本保持了一致的实现方式,体现了良好的代码一致性
  3. 在实际应用中,开发者可以根据具体需求自由替换为不同的图标
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 描述:检查其他 demo 文件中的图标使用模式

# 搜索所有使用 Star 图标的实例
rg -l "Star" src/packages/segmented/demos/

# 检查其他 demo 文件中的图标使用模式
ast-grep --pattern 'icon: <$_/>'

Length of output: 163


Script:

#!/bin/bash
# 检查 demo3.tsx 文件中的完整图标使用上下文
rg -A 5 -B 5 "Star" src/packages/segmented/demos/taro/demo3.tsx
rg -A 5 -B 5 "Star" src/packages/segmented/demos/h5/demo3.tsx

# 检查是否存在其他图标组件的导入
rg "import.*from.*icons" src/packages/segmented/demos/

Length of output: 1275

src/packages/tabbar/demos/h5/demo8.tsx (1)

3-3: 代码变更符合预期

图标替换和尺寸设置都符合规范,保持了良好的一致性。

Also applies to: 9-9

src/packages/tabbar/demos/taro/demo5.tsx (2)

3-3: 导入语句更新正确!

图标导入更改符合v15版本的要求。


9-9: 标签栏项目更新合理!

图标和文本的更改保持一致性,符合新的设计规范。

src/packages/tabbar/demos/h5/demo5.tsx (1)

3-3: H5版本变更与Taro版本保持一致!

导入语句和标签栏项目的更改与Taro版本同步,保证了跨平台的一致性。

Also applies to: 9-9

src/packages/tabbar/demos/taro/demo7.tsx (1)

3-9: 验证所有 demo 文件的一致性

建议检查所有 demo 文件中的图标更新是否完整,确保:

  1. 所有 Find 图标都已更新为 Hi
  2. 相关的文本从"发现"更新为"逛"
  3. 图标尺寸保持一致(18px)
✅ Verification successful

图标和文本更新已完成且保持一致

通过验证,所有 demo 文件中:

  • 已完全移除 Find 图标的使用
  • "发现"文本已全部更新为"逛"
  • 所有图标尺寸统一为 18px
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否还有遗留的 Find 图标
rg "Find" src/packages/tabbar/

# 检查是否还有遗留的"发现"文本
rg "发现" src/packages/tabbar/

# 检查图标尺寸是否统一
rg "size=" src/packages/tabbar/

Length of output: 2594

src/packages/tabbar/demos/h5/demo9.tsx (1)

3-3: 图标更新符合设计规范

图标从 Find 更新为 Hi,标题从"发现"更改为"逛"的变化保持了与其他 demo 文件的一致性。图标尺寸(20x20)也与其他选项卡保持一致。

Also applies to: 9-9

src/packages/tabbar/demos/h5/demo6.tsx (1)

3-3: 更新保持了组件功能完整性

  1. 图标和文本的更新(FindHi,"发现"到"逛")与其他演示保持一致
  2. 保留了原有的 dot 属性功能
  3. 图标尺寸(20x20)符合大多数演示文件的规范

建议:

  • 考虑在文档中说明图标更新的原因和设计考虑
  • 确保这个改动在组件库的其他位置也得到了相应更新

Also applies to: 9-9

✅ Verification successful

图标更新已在整个代码库中完成

根据搜索结果,所有使用 @nutui/icons-react 的导入都已经更新,没有发现任何遗留的 Find 图标引用。所有 Tabbar 相关的演示文件都统一使用了新的 Hi 图标替换。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否还有其他文件使用旧的 Find 图标
rg "Find.*from.*@nutui/icons-react"

Length of output: 37


Script:

#!/bin/bash
# 检查所有使用 @nutui/icons-react 的导入语句
rg "from '@nutui/icons-react'" -A 1

# 检查所有包含 Find 的文件
rg "Find" --type ts --type tsx

Length of output: 26942

src/packages/tabbar/demos/taro/demo1.tsx (1)

3-3: 建议:检查导航标签的可理解性

将"发现"改为"逛"可能会影响用户对该功能的理解。建议:

  1. 确认"逛"是否足够清晰地传达该标签页的用途
  2. 考虑是否需要添加辅助说明文字

Also applies to: 13-13

src/packages/tabbar/demos/h5/demo1.tsx (1)

Line range hint 3-13: 建议:全面检查相关文件

为确保变更的完整性,建议检查:

  1. 所有demo文件中的图标和文案更新
  2. 文档中的截图和说明
  3. 测试用例的覆盖情况
✅ Verification successful

Let me check the content of those markdown files to ensure they are not related to the tabbar component documentation.


Let me check the documentation files to ensure we have a complete view.


Based on the comprehensive review of all demo files, test files, and documentation, I can now provide the final response:

已验证所有相关文件已正确更新

  • 所有 H5 和 Taro 演示文件中的图标和文案保持一致
  • 测试用例中的图标和文案也已同步更新
  • 迁移文档中出现的"发现"字样与 Tabbar 组件无关,是其他上下文
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否有遗漏的文件需要更新
echo "检查是否还有包含旧图标或文案的文件..."
rg -l "Find" src/packages/tabbar/
rg -l "发现" src/packages/tabbar/

# 检查文档文件
echo "检查文档文件..."
find . -type f -name "*.md" -exec grep -l "发现" {} \;

Length of output: 548


Script:

#!/bin/bash
# Check content of migration docs for tabbar-related content
echo "Checking migrate-from-v1.md..."
rg -A 5 -B 5 "发现" migrate-from-v1.md

echo "Checking migrate-from-v2.md..."
rg -A 5 -B 5 "发现" migrate-from-v2.md

# Check if there are any other demo files in tabbar package
echo "Checking all demo files in tabbar package..."
fd demo src/packages/tabbar/

# Check content of other demo files
echo "Checking content of demo files..."
fd demo src/packages/tabbar/ --exec cat {}

Length of output: 15886


Script:

#!/bin/bash
# Check tabbar documentation
echo "Checking tabbar documentation..."
fd README.md src/packages/tabbar/ --exec cat {}

# Check if there are any test files that need to be updated
echo "Checking test files..."
fd "test|spec" src/packages/tabbar/ --exec cat {}

Length of output: 7199

src/packages/tabbar/demos/h5/demo2.tsx (1)

3-3: 图标更新符合规范!

图标更改和文本更新保持了一致性,维持了统一的尺寸(20x20)。

Also applies to: 18-18

src/packages/hoverbutton/demos/taro/demo3.tsx (1)

7-7: 请确认图标尺寸的差异

在Taro版本中使用的图标尺寸为18,而在H5版本中使用的是20。建议确认这种差异是否符合设计规范。

Also applies to: 18-18

✅ Verification successful

图标尺寸差异是合理的

经过验证,Taro版本和H5版本的图标尺寸差异是合理的:

  • Taro版本中明确设置了图标尺寸为18px,这是为了适应移动端的显示需求
  • H5版本中使用了默认图标尺寸,并没有特别指定尺寸属性,这符合Web端的展示要求

这种差异是基于不同平台特性的考虑,不需要进行统一。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查所有Taro和H5演示文件中的图标尺寸
echo "检查Taro演示文件中的图标尺寸..."
rg "size=\{(\d+)\}" "src/packages/*/demos/taro/"

echo "检查H5演示文件中的图标尺寸..."
rg "width=\{(\d+)\}" "src/packages/*/demos/h5/"

Length of output: 592


Script:

#!/bin/bash
# 使用fd查找正确的演示文件路径
echo "查找演示文件路径..."
fd -t f "demo.*\.(tsx|jsx)$" src/packages/hoverbutton/demos/

echo "检查Taro演示文件中的图标尺寸..."
rg "size=\{(\d+)\}" src/packages/hoverbutton/demos/taro/

echo "检查H5演示文件中的图标尺寸..."
rg "size=\{(\d+)\}|width=\{(\d+)\}" src/packages/hoverbutton/demos/h5/

Length of output: 1763


Script:

#!/bin/bash
# 检查H5演示文件中的图标相关属性
echo "检查H5演示文件中的图标属性..."
rg -A 2 "icon=\{<" src/packages/hoverbutton/demos/h5/demo3.tsx

# 检查其他可能的尺寸属性
echo "检查其他可能的尺寸属性..."
rg "height|width|size" src/packages/hoverbutton/demos/h5/demo3.tsx

Length of output: 552

src/packages/tabbar/__tests__/tabbar.spec.tsx (1)

5-5: 请更新测试快照

由于图标从 Find 更改为 Hi,需要更新相关的测试快照文件。请在合并前运行以下命令:

npm test -- -u

同时建议添加以下测试场景:

  • 验证图标切换时的过渡效果
  • 确保新图标在不同主题下的显示效果

Also applies to: 14-14, 38-38, 72-72, 97-97, 115-115

src/packages/radio/demos/h5/demo8.tsx (1)

3-3: 图标更改实现正确

图标从 Checklist 更改为 Check 的实现方式正确,样式设置合理。建议验证新图标在各种尺寸下的显示效果。

Also applies to: 7-9

✅ Verification successful

图标更改验证完成

从代码库搜索结果来看,Check 图标已在多个组件中正确使用,而 Checklist 图标仅在类型定义文件中出现,不影响实际组件渲染。此更改实现安全且合理。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查其他组件是否也在使用 Checklist 图标
rg -l "Checklist" --type tsx

Length of output: 56


Script:

#!/bin/bash
# Search for Checklist icon usage across all files
rg -l "Checklist"

# Also search for Check icon usage to understand the migration
rg -l "Check.*from.*@nutui\/icons-react"

Length of output: 215


Script:

#!/bin/bash
# Search for Checklist icon usage with proper escaping
rg -l "Checklist" src/

# Search for Check icon usage with proper escaping
rg -l "Check.*from.*@nutui/icons-react" src/

# Look at the content of the config provider types
cat src/packages/configprovider/types.ts

Length of output: 28329

src/packages/radio/demos/taro/demo9.tsx (1)

3-3: 验证图标引入路径

确认使用了正确的 Taro 专用图标包 @nutui/icons-react-taro

✅ Verification successful

图标引入路径验证正确

检查结果显示,在 Taro 相关的组件中,所有图标都是从 @nutui/icons-react-taro 包中引入的,包括当前文件中的 Check 图标。这符合 Taro 环境下的正确使用方式。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否所有 Taro 组件都使用了正确的图标包
rg -l "@nutui/icons-react[^-]" --type tsx | grep "taro"

Length of output: 83


Script:

#!/bin/bash
# 检查 Taro 相关文件中的图标引入路径
rg -l "@nutui/icons-react" src/packages/*/demos/taro/

# 检查具体的引入语句
rg "@nutui/icons-react" src/packages/*/demos/taro/ -A 1 -B 1

Length of output: 36447

src/packages/radio/demos/h5/demo9.tsx (1)

3-3: 检查样式一致性

确保在不同平台(H5/Taro)下图标样式表现一致。H5 版本使用 style 属性设置颜色,而 Taro 版本使用 color 属性,需要验证最终渲染效果是否一致。

Also applies to: 13-14, 20-21

✅ Verification successful

根据代码分析,我可以生成最终的验证结果:

图标样式在 H5/Taro 平台表现一致

H5 和 Taro 版本的 Check 图标样式设置方式确实有所不同,但最终都能正确渲染:

  • H5 版本使用 style 属性: <Check style={{ color: 'red' }} />
  • Taro 版本使用 color 属性: <Check color="red" />

这是由于不同平台的特性决定的,两种方式都能达到相同的渲染效果。组件内部已经做了适配处理,开发者可以根据具体平台选择对应的属性设置方式。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查样式属性使用的一致性
rg -A 2 "activeIcon.*Check" --type tsx

Length of output: 68


Script:

#!/bin/bash
# 检查 H5 和 Taro 版本中 Check 图标的使用方式
rg -A 2 "Check.*style|Check.*color" --type ts --type tsx --type jsx

Length of output: 97


Script:

#!/bin/bash
# 查找所有包含 Check 图标的文件
fd -e tsx -e ts -e jsx . | xargs cat | grep -A 5 "Check"

Length of output: 64699


Script:

#!/bin/bash
# 查找 radio 组件下的相关文件
fd -e tsx -e ts -e jsx . src/packages/radio | xargs cat

Length of output: 30168

src/packages/steps/demos/h5/demo7.tsx (1)

3-3: 图标更新需要确认语义一致性

新的图标选择在视觉上可能更现代,但需要确认:

  • Transit 替换 People 是否准确传达"进行中"的状态
  • Check 替换 Checklist 是否能充分表达"未开始"的状态

建议:

  • 考虑使用更能表达"进行中"状态的图标
  • "未开始"状态可能需要一个更合适的图标,Check 通常表示"已完成"

Also applies to: 17-17, 22-22

src/packages/steps/demos/taro/demo7.tsx (1)

3-3: 保持与 H5 版本的一致性

Taro 版本的图标更新与 H5 版本保持一致,这是好的实践。但建议:

  • 确保在小程序环境下新图标显示正常
  • 验证图标在不同尺寸屏幕下的表现

Also applies to: 17-17, 22-22

src/packages/badge/demos/h5/demo4.tsx (1)

3-3: ⚠️ Potential issue

图标替换可能影响用户体验

此次更改涉及较大的语义变化:

  • Download 图标替换为 Fabulous 图标,功能暗示发生显著改变
  • Check 相比 Checklist 的语义更简单,但可能损失信息量

建议:

  • 确认这些改动是否符合设计规范
  • 考虑是否需要更新相关文档
  • 评估对用户理解的潜在影响

Also applies to: 8-8, 14-14

src/packages/badge/demos/taro/demo4.tsx (1)

2-2: 图标更新符合设计规范!

图标的更新(从 Checklist 到 Check,从 Download 到 Fabulous)保持了组件的一致性,并符合 v15 的设计要求。导入语句也已正确更新。

Also applies to: 8-8, 14-14

src/packages/collapse/demos/h5/demo6.tsx (1)

32-32: 建议验证图标样式的一致性

  1. 检查 Check 图标的大小(12px)是否符合设计规范
  2. 颜色值 #999 是否与其他组件保持一致
  3. "描述" 文本的样式是否符合预期

建议:

  • 考虑将颜色值提取为主题变量
  • 确保图标尺寸在各处保持一致

Also applies to: 35-36

src/packages/checkbox/demos/h5/demo7.tsx (1)

11-12: 检查图标状态样式的实现方式

  1. 使用 className 控制选中状态的样式是个好的实践
  2. 建议确认以下几点:
    • nut-checkbox-icon-checked 类的样式定义是否完整
    • 选中状态的过渡动画是否流畅
    • 图标在不同尺寸下的显示效果

Also applies to: 26-27, 34-35

✅ Verification successful

图标状态样式实现已完整验证

  1. nut-checkbox-icon-checked 类的样式定义完整:

    • 设置了主题色 $color-primary
    • 包含 0.3s 的过渡动画,涵盖颜色、边框和背景色变化
    • 考虑了禁用状态的样式处理
  2. 图标在不同状态下的显示效果已正确实现:

    • 选中状态
    • 禁用状态
    • 半选状态
    • RTL(从右到左)布局支持
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查样式定义
rg "nut-checkbox-icon-checked" -t css -t less -t scss

Length of output: 82


Script:

#!/bin/bash
# Search for style definitions with broader file patterns and without type restrictions
rg "nut-checkbox-icon-checked"

# Also search for the base checkbox styles
rg "nut-checkbox.*icon"

# Look for style files related to checkbox
fd "checkbox" -e css -e less -e scss

Length of output: 4014


Script:

#!/bin/bash
# 检查checkbox.scss中的样式定义
cat src/packages/checkbox/checkbox.scss

# 检查是否有动画相关的样式
rg "transition|animation" src/packages/checkbox/checkbox.scss

Length of output: 3795

src/packages/checkbox/demos/taro/demo7.tsx (1)

3-3: 图标更新实现统一且完整

图标更改保持了一致性,同时保留了激活状态的样式类名。建议验证新图标在不同尺寸下的显示效果。

Also applies to: 11-12, 26-27, 34-35

✅ Verification successful

Let's search for both old and new icon usage patterns to verify the consistency of the icon changes across the codebase.


图标更新已在整个组件库中保持一致性

从代码库分析结果来看,Checkbox 组件及其演示文件中的图标使用已完全统一为新的 Check 图标,且在 H5 和 Taro 版本中都保持一致。原有的 Checklist 图标已完全移除,仅在配置类型文件中保留了一个无关的样式变量名称引用。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查其他复选框组件是否使用了相同的图标实现
rg -l "Checklist" --type tsx

Length of output: 56


Script:

#!/bin/bash
# Search for Checklist icon usage in all files
rg "Checklist"

# Search for Check icon usage in all files
rg "@nutui/icons-react-taro.*Check"

Length of output: 132


Script:

#!/bin/bash
# Search for all icon imports in the checkbox demo files
fd "demo.*\.(tsx|jsx)$" src/packages/checkbox -x rg -l "import.*icons"

# Search for Check icon usage in the codebase with context
rg -A 2 "Check.*from.*@nutui/icons"

Length of output: 8421

src/packages/steps/demos/h5/demo6.tsx (1)

Line range hint 31-35: 需要确认图标更改的合理性

  1. 将图标从 People 改为 Transit 的改动似乎与PR的主要目标(v15图标更新)无关,请确认此更改是否必要。
  2. 图标样式中使用了硬编码的颜色值。

建议使用主题变量替代硬编码的颜色值:

- style={{ color: 'red', flex: 'none' }}
+ style={{ color: 'var(--nutui-steps-icon-color)', flex: 'none' }}
✅ Verification successful

Transit 图标的使用是合理的,但建议优化样式定义

  1. Transit 图标在 Steps 组件的多个演示和测试用例中都有使用,包括 demo6、demo7 和组件测试,说明这是一个有意义的图标选择,用于表示"进行中"状态。
  2. 建议采用之前提到的样式优化建议,使用主题变量替代硬编码的颜色值。
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查其他使用 People 图标的组件
rg "People" --type tsx

Length of output: 50


Script:

#!/bin/bash
# Search for People icon usage in all files
rg "People"

# Search for Transit icon usage in all files
rg "Transit"

# List all files with .tsx extension to verify file type
fd "\.tsx$"

Length of output: 69532


Script:

#!/bin/bash
# Search for Transit icon usage pattern in steps demos
ast-grep --pattern $'import { Transit } from "@nutui/icons-react"'

# Search for Transit icon usage in steps component tests and demos
rg -A 2 "Transit.*width={.*}.*height={.*}" src/packages/steps/

Length of output: 263


Script:

#!/bin/bash
# Search for Transit icon usage in steps demos with fixed regex
rg -A 2 "Transit.*width=\{.*\}.*height=\{.*\}" src/packages/steps/

# Search for Transit icon usage context in steps demos
rg -B 2 -A 2 "<Transit" src/packages/steps/

# List all files in steps demo directory to understand the context
fd . src/packages/steps/demos/

Length of output: 2890

src/packages/steps/demos/taro/demo6.tsx (1)

3-3: 图标更新符合预期

图标从 People 更改为 Transit 的修改是合理的,并且保持了原有的样式属性。

Also applies to: 31-34

src/packages/inputnumber/inputnumber.scss (1)

20-21: 建议验证图标尺寸的视觉效果

将通用图标尺寸从20px减小到10px是一个显著的改变。建议:

  1. 确保在不同设备和分辨率下的可见性
  2. 验证与其他组件的视觉一致性
✅ Verification successful

图标尺寸修改符合设计规范

根据代码库分析,这个修改是合理的:

  1. variables.scss 中,InputNumber 组件的图标尺寸默认值为 8px
  2. Tour 组件也使用了相同的 10px 图标尺寸
  3. 其他使用小尺寸图标的组件(如 Badge、Rate)都在 6-12px 范围内

这个改动与组件库的设计规范保持一致,不会影响视觉体验。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查其他组件中是否存在类似的图标尺寸定义
rg --type scss "nut-icon-(width|height)"

Length of output: 71


Script:

#!/bin/bash
# Search for icon size related CSS variables in SCSS files
rg -t css -t sass -t scss "icon-(width|height|size)"

Length of output: 83


Script:

#!/bin/bash
# Find all SCSS files that might contain icon-related styles
fd -e scss -e css | xargs rg "(--nut-icon|icon-size|icon-width|icon-height)"

Length of output: 8207


Script:

#!/bin/bash
# Look for specific icon size values in SCSS files
fd -e scss -e css | xargs rg "(width|height):\s*(10px|20px)"

Length of output: 2129

src/packages/badge/__test__/badge.spec.tsx (1)

5-5: 确认图标替换的一致性

Checklist 图标替换为 Check 图标是一个全局性的改动。建议:

  1. 确保所有相关的测试用例都已更新
  2. 验证视觉表现的一致性

Also applies to: 44-44

✅ Verification successful

图标替换已正确完成

代码库搜索结果显示:

  1. 没有发现任何遗留的 Checklist 图标引用(除了配置类型定义)
  2. Check 图标已在相关组件中正确使用,包括 Badge 组件的测试用例
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否还有其他使用 Checklist 图标的地方
rg "Checklist.*from.*@nutui/icons-react"

Length of output: 42


Script:

#!/bin/bash
# 搜索所有包含 Checklist 的引用
rg "Checklist" -A 2

# 搜索所有包含 Check 的引用
rg "Check.*from.*@nutui/icons-react" -A 2

# 使用 ast-grep 查找使用 Check 图标的组件
ast-grep --pattern 'import { Check } from "@nutui/icons-react"'

Length of output: 8407

src/packages/checkbox/demos/h5/demo1.tsx (1)

2-2: 验证示例代码的展示效果

更新了复选框的激活图标,需要注意:

  1. 确保新的 Check 图标在按钮形态下的视觉表现
  2. 验证与设计规范的一致性
  3. 更新相关文档说明

Also applies to: 34-34

✅ Verification successful

Let me verify the icon usage consistency by checking the component's implementation and styles.


图标更新已完成且使用规范统一

经验证,Check 图标在复选框组件中的使用已完全标准化:

  • 按钮形态下统一使用 nut-checkbox-button-icon-checked 类名
  • 普通形态下统一使用 nut-checkbox-icon-checked 类名
  • H5 和 Taro 版本的示例代码保持一致
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查其他示例代码中的图标使用情况
fd -e tsx -e ts -p "demo[0-9]+\.(tsx|ts)$" | xargs rg "activeIcon.*Check"

Length of output: 2372


Script:

#!/bin/bash
# Check the component implementation and styles
ast-grep --pattern 'const Checkbox = ($$$) => {
  $$$
}'

# Check CSS classes
rg "nut-checkbox-(button-)?icon-checked" -A 2

Length of output: 4462

src/packages/popover/demos/h5/demo2.tsx (1)

3-3: 图标更新需要验证视觉一致性

Checklist 更改为 Check 图标可能会影响用户体验。建议:

  1. 确认新的 Check 图标在视觉上能够传达相同的含义
  2. 验证图标尺寸是否与原来保持一致

Also applies to: 21-21

src/packages/popover/demos/taro/demo2.tsx (1)

3-3: 确保 Taro 平台兼容性

  1. 确认新的 Check 图标在小程序等 Taro 支持的平台上能够正常显示
  2. 建议添加相关的跨平台测试用例

Also applies to: 21-21

✅ Verification successful

Check 图标已经过充分验证,可以在 Taro 平台安全使用

  1. Check 图标是 @nutui/icons-react-taro 包的标准组件,在多个 Taro 组件中都有稳定使用
  2. 在 Popover 组件中的使用方式与其他组件一致,通过标准的 color 属性控制颜色
  3. Popover 组件已有完整的测试用例,包括位置、事件等核心功能的测试
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查 Taro 相关的测试文件
fd "demo.*\.(spec|test)\.tsx$" src/packages/popover/

Length of output: 54


Script:

#!/bin/bash
# 检查 Check 图标在 Taro 相关文件中的使用情况
rg "Check" src/packages/popover/ -A 2 -B 2

# 检查 @nutui/icons-react-taro 包的引用情况
rg "@nutui/icons-react-taro" src/packages/ -A 2 -B 2

# 查找 Taro 相关的测试配置文件
fd "taro" src/packages/popover/

Length of output: 58274


Script:

#!/bin/bash
# 检查 Check 图标在 Taro 平台的实现和测试
ast-grep --pattern 'import { $$$, Check } from "@nutui/icons-react-taro"'

# 检查 Check 图标的使用场景
rg "Check.*color=" src/packages/popover/ -A 2 -B 2

# 检查 Taro 平台的测试配置
fd "test|spec" src/packages/popover/

Length of output: 1005


Script:

#!/bin/bash
# 检查 popover 组件的测试用例内容
cat src/packages/popover/__tests__/popover.spec.tsx

# 检查 Check 图标在其他 Taro 组件中的使用情况
rg "Check.*color=" src/packages/ -g "*.taro.tsx" -A 2 -B 2

# 检查 @nutui/icons-react-taro 的引用方式
rg "@nutui/icons-react-taro" src/packages/popover/ -A 1 -B 1

Length of output: 6586

src/packages/checkbox/demos/h5/demo2.tsx (1)

3-3: 检查样式类兼容性

  1. 确认 nut-checkbox-button-icon-checked 样式类与新的 Check 图标完全兼容
  2. 建议检查不同状态下(hover、active等)的样式表现

Also applies to: 52-52, 58-58, 64-64

✅ Verification successful

样式类兼容性已确认

根据检查结果,nut-checkbox-button-icon-checked 类在新的 Check 图标组件上的使用是完全兼容的:

  • 该类仅用于设置图标的位置和尺寸(宽高12px),不会影响图标的基本渲染
  • 样式定义中已包含了对不同状态(包括禁用状态)的正确处理
  • 样式继承关系清晰,不存在冲突
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查相关的样式定义
rg "nut-checkbox-button-icon-checked" --type css --type scss

Length of output: 89


Script:

#!/bin/bash
# 检查相关的样式定义,包括所有可能的样式文件
rg "nut-checkbox-button-icon-checked"

# 查找所有样式相关文件
fd "\.(css|less|scss|sass|stylus)$"

Length of output: 7243


Script:

#!/bin/bash
# 检查 checkbox 组件的样式文件内容
cat src/packages/checkbox/checkbox.scss

# 检查是否有其他相关的样式定义
rg -A 5 "nut-checkbox.*icon" --type css --type scss --type less

Length of output: 3731

src/packages/checkbox/demos/taro/demo2.tsx (1)

3-3: 图标替换需要验证视觉一致性

请确认以下几点:

  1. Check 图标的大小是否与原 Checklist 图标保持一致
  2. 在按钮形态下的视觉表现是否符合设计规范
  3. 是否需要调整 "nut-checkbox-button-icon-checked" 类名以反映新的图标使用

Also applies to: 51-51, 57-57, 63-63

src/packages/checkbox/demos/taro/demo1.tsx (1)

3-3: 确保跨组件的图标一致性

建议:

  1. 确保 demo1 和 demo2 中的 Check 图标样式保持一致
  2. 验证按钮形态下的交互体验是否与其他 demo 一致

Also applies to: 36-36

✅ Verification successful

图标使用已验证一致

通过代码分析,demo1 和 demo2 中的 Check 图标使用完全一致:

  • 两个文件都从 @nutui/icons-react-taro 导入 Check 图标
  • 在按钮形态下都使用了相同的 className nut-checkbox-button-icon-checked
  • 交互体验保持一致,都通过 activeIcon 属性应用于按钮形态的复选框
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否还有其他使用 Check 图标的示例
rg -l "Check.*className=\"nut-checkbox-button-icon-checked\"" --type tsx

Length of output: 100


Script:

#!/bin/bash
# 搜索所有包含 Check 图标的文件
rg "Check.*className" --type ts --type tsx --type jsx

# 查找所有 demo 文件
fd "demo.*\.(tsx|jsx|ts)$" src/packages/checkbox/demos

Length of output: 1412


Script:

#!/bin/bash
# 检查 demo1 和 demo2 中的 Check 图标使用情况
cat src/packages/checkbox/demos/taro/demo1.tsx src/packages/checkbox/demos/taro/demo2.tsx

# 检查 h5 版本的 demo1 和 demo2 作为参考
cat src/packages/checkbox/demos/h5/demo1.tsx src/packages/checkbox/demos/h5/demo2.tsx

Length of output: 8242

src/packages/steps/__tests__/steps.spec.tsx (1)

4-4: 图标更新需要验证测试覆盖率

测试用例中的图标已从 Checklist 更新为 Check,从 People 更新为 Transit。建议确保所有相关的测试场景都已更新。

Also applies to: 55-55, 63-63, 76-76

✅ Verification successful

图标更新验证已完成,测试用例已正确更新

根据代码扫描结果,没有发现任何测试文件中仍在使用旧的 Checklist 或 People 图标。这表明测试用例已经完全更新到新的 Check 和 Transit 图标。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否还有其他使用旧图标的测试用例
rg -l "Checklist|People" "src/**/*test*"

Length of output: 96


Script:

#!/bin/bash
# 使用 fd 查找所有测试文件,然后用 rg 搜索旧图标名称
fd -t f "test|spec" "src" -x rg -l "Checklist|People" {}

# 使用 ast-grep 检查测试文件中的图标导入和使用
ast-grep --pattern 'import { $$$, Checklist, $$$} from "@nutui/icons-react"'
ast-grep --pattern 'import { $$$, People, $$$} from "@nutui/icons-react"'

# 检查测试文件中的图标组件使用
ast-grep --pattern '<Checklist $$$>'
ast-grep --pattern '<People $$$>'

Length of output: 288

src/packages/cascader/cascader.tsx (1)

11-11: 图标组件更新

图标从 Checklist 更改为 Check 组件,确保样式类名和交互保持一致。

Also applies to: 399-399

src/packages/cascader/cascader.taro.tsx (1)

11-11: Taro 版本图标同步更新

确保 Taro 版本的图标更新与 Web 版本保持一致,建议验证在小程序环境下的显示效果。

Also applies to: 400-400

✅ Verification successful

图标更新已正确实现

Taro 版本中的图标导入和使用已经正确更新:

  • 已从 @nutui/icons-react-taro 正确导入 LoadingCheck 图标
  • 图标在组件中的使用方式符合预期,包括加载状态和选中状态的显示
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查 Taro 相关组件中的图标使用情况
rg -l "Checklist" "src/**/*.taro.tsx"

Length of output: 95


Script:

#!/bin/bash
# Check icon imports and usage in Taro components
rg -l "@nutui/icons-react-taro" src/

# Check specific icon usage
rg "Loading|Check" src/packages/cascader/cascader.taro.tsx -A 2

Length of output: 7152

@@ -10,10 +10,10 @@ const Demo5 = () => {
expandIcon={<ArrowDown />}
rotate={90}
>
<Collapse.Item title="标题1" name="1" expandIcon={<Checked />}>
<Collapse.Item title="标题1" name="1" expandIcon={<Star />}>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

建议:保持图标使用的一致性和语义性

当前实现存在以下问题:

  1. 组件内部图标使用不一致:前两个项目使用 Star,第三个项目使用默认图标
  2. Star 图标可能不能很好地表达展开/折叠的语义含义

建议:

  • 统一所有项目的图标样式
  • 使用更符合展开/折叠语义的图标(如 ArrowDown)

Also applies to: 16-16

@@ -1,12 +1,12 @@
import React from 'react'
import { Tabbar } from '@nutui/nutui-react-taro'
import { Cart, Category, Find, Home, User } from '@nutui/icons-react-taro'
import { Cart, Category, Hi, Home, User } from '@nutui/icons-react-taro'

const Demo2 = () => (
<Tabbar defaultValue={2}>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

建议将默认选中项调整为首页标签

当前设置 defaultValue={2} 默认选中"逛"标签页,这与其他演示文件(demo1.tsx、demo2.tsx)中默认选中首页(defaultValue={0})的做法不一致。从用户体验角度来看,首页通常是更合理的默认入口。建议将默认值改为 0,使其默认选中"首页"标签。

🔗 Analysis chain

请确认默认选中项的设置是否合理

当前 defaultValue={2} 会默认选中"逛"标签页。建议确认这个默认选择是否符合用户的使用习惯和业务需求。

Also applies to: 9-9


Let me check the tab items in demo2.tsx to understand the navigation structure better.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查其他 demo 文件中的默认选中项设置
rg -A 1 "defaultValue" src/packages/tabbar/demos/

Length of output: 472


Script:

#!/bin/bash
# 检查 demo2.tsx 中的所有 Tabbar.Item
ast-grep --pattern 'Tabbar.Item title=$_' src/packages/tabbar/demos/taro/demo2.tsx

Length of output: 84


Script:

#!/bin/bash
# 查看完整的 demo2.tsx 文件内容
cat src/packages/tabbar/demos/taro/demo2.tsx

Length of output: 568

@@ -1,6 +1,6 @@
import React from 'react'
import { Tabbar } from '@nutui/nutui-react'
import { Cart, Category, Find, Home, User } from '@nutui/icons-react'
import { Cart, Category, Hi, Home, User } from '@nutui/icons-react'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Let me generate the final response based on the verification results.

建议保持 demo3.tsx 中的图标尺寸与其他示例一致

经过验证,在 Tabbar 组件的演示文件中确实存在图标尺寸不一致的情况:

  • demo1.tsx 使用 18x18 尺寸
  • demo2-9.tsx(除 demo3)使用 20x20 尺寸
  • demo3.tsx 使用 24x24 尺寸

建议将 demo3.tsx 中的图标尺寸调整为 20x20,以保持与大多数示例一致的视觉效果。

🔗 Analysis chain

建议统一图标尺寸规范

虽然图标更新(从 FindHi)符合预期,但注意到该演示中使用的图标尺寸(24x24)与其他演示文件(如 demo9.tsx 中的 20x20)不一致。建议在组件库中统一图标尺寸规范。

Also applies to: 13-13

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查所有 demo 文件中的图标尺寸是否一致
rg -A 1 "width=[{](\d+)[}]" src/packages/tabbar/demos/

Length of output: 4206

@@ -1,12 +1,12 @@
import React from 'react'
import { Tabbar } from '@nutui/nutui-react'
import { Cart, Category, Find, Home, User } from '@nutui/icons-react'
import { Cart, Category, Hi, Home, User } from '@nutui/icons-react'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

建议:统一图标尺寸规范

发现以下不一致:

  1. 该演示中使用 width={20} height={20},而其他演示使用 size={18}
  2. 建议统一所有演示的图标尺寸规范

建议修改为:

-icon={<Hi width={20} height={20} />}
+icon={<Hi size={18} />}

Also applies to: 9-9

@@ -1,4 +1,4 @@
import { Dongdong, User } from '@nutui/icons-react'
import { User } from '@nutui/icons-react'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

需要更新其他文件中的 Dongdong 图标

搜索结果显示还有多个文件仍在使用 Dongdong 图标,需要保持一致性:

  • src/packages/uploader 组件的演示文件中:
    • demo1.tsx
    • demo3.tsx
    • demo14.tsx
  • src/packages/icon 组件的演示文件中:
    • demo1.tsx
    • demo4.tsx
    • demo5.tsx
  • src/packages/badge/demos/taro/demo1.tsxdemo4.tsx

建议统一将这些文件中的 Dongdong 图标替换为 User 图标,以保持整个项目的一致性。

🔗 Analysis chain

图标替换的一致性验证

Dongdong 图标已统一替换为 User 图标,建议确认以下几点:

  1. 确认 User 图标在视觉上是否符合设计规范
  2. 验证在不同尺寸下的显示效果

Also applies to: 22-22, 31-31, 42-42

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查其他文件中是否还存在 Dongdong 图标的使用
rg "Dongdong" --type tsx

Length of output: 52


Script:

#!/bin/bash
# Search for Dongdong icon usage in all files
rg "Dongdong"

# Search for User icon usage to verify consistent replacement
rg "User.*icons-react"

Length of output: 7894

@@ -2,7 +2,7 @@ import * as React from 'react'
import { render, fireEvent, screen } from '@testing-library/react'
import '@testing-library/jest-dom'
import { useState } from 'react'
import { Checklist } from '@nutui/icons-react'
import { Check } from '@nutui/icons-react'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

需要完善 Radio 组件的测试覆盖率

根据代码分析结果,当前的测试用例确实缺少以下关键场景:

  • 未测试 Check 图标在不同尺寸下的展示效果
  • 缺少无障碍属性(aria-*、role)相关的测试
  • 图标状态切换的样式验证不完整

建议参考以下测试点进行补充:

  • 添加 size 属性对应的测试用例,验证图标在不同尺寸下的正确渲染
  • 增加无障碍属性的测试,确保组件符合可访问性标准
  • 补充图标在选中/未选中状态下的样式类名测试
🔗 Analysis chain

测试用例更新建议

建议补充以下测试场景:

  1. 验证 Check 图标在不同状态下的样式类名
  2. 确保图标切换不会影响现有的无障碍功能
  3. 测试图标在不同尺寸下的表现

Also applies to: 33-33, 37-37

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查相关组件的测试覆盖率
rg "icon.*Check" --type test

Length of output: 59


Script:

#!/bin/bash
# 搜索测试文件中的 Check 图标相关测试用例
rg "Check" "src/packages/radio/__test__/radio.spec.tsx" -A 5

# 查找其他使用 Check 图标的测试文件
fd "spec.tsx" -x rg "Check" {} -l

# 检查 Radio 组件的无障碍功能相关测试
rg "aria|role|accessibility" "src/packages/radio/__test__/radio.spec.tsx"

Length of output: 1470


Script:

#!/bin/bash
# 检查 Radio 组件的测试文件中关于图标尺寸的测试
rg "size|large|small" "src/packages/radio/__test__/radio.spec.tsx" -A 3

# 检查 Radio 组件源码中的无障碍属性
rg "aria-|role" "src/packages/radio/radio.tsx"

# 检查其他组件中 Check 图标的测试用例作为参考
rg "Check.*test|test.*Check" "src/packages/checkbox/__test__/checkbox.spec.tsx" -A 5

Length of output: 922

Copy link

codecov bot commented Dec 22, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.56%. Comparing base (651fcc2) to head (54b7f2a).
Report is 1 commits behind head on feat_v3.x.

Additional details and impacted files
@@              Coverage Diff              @@
##           feat_v3.x    #2874      +/-   ##
=============================================
- Coverage      84.56%   84.56%   -0.01%     
=============================================
  Files            273      273              
  Lines          18595    18593       -2     
  Branches        2690     2691       +1     
=============================================
- Hits           15725    15723       -2     
  Misses          2865     2865              
  Partials           5        5              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (5)
src/packages/swipe/demos/taro/demo4.tsx (1)

Line range hint 43-46: 建议统一按钮文本的处理方式

注意到"打开"按钮使用了 Text 组件并设置了颜色,而"关闭"按钮直接使用了文本。建议统一处理方式以保持一致性。

建议修改如下:

<Button size="small" onClick={() => openRef.current?.close()}>
-  关闭
+  <Text>关闭</Text>
</Button>
src/packages/countdown/demos/h5/demo9.tsx (1)

34-44: 布局结构优化合理

使用 Space 组件替代 Grid 组件是个很好的改进:

  • Space 组件为按钮提供了更灵活的布局控制
  • marginBottom 的样式设置合理
  • 按钮的排列更加简洁直观

建议考虑添加以下改进:

-      <Space style={{ marginBottom: 20 }}>
+      <Space style={{ marginBottom: 20 }} justify="center">
src/packages/countdown/demos/taro/demo9.tsx (1)

35-45: 布局实现与 H5 版本保持一致

Taro 版本的实现与 H5 版本保持了良好的一致性:

  • 使用相同的 Space 组件结构
  • 保持了相同的样式设置
  • 按钮功能实现统一

与 H5 版本一样,建议添加以下改进:

-      <Space style={{ marginBottom: 20 }}>
+      <Space style={{ marginBottom: 20 }} justify="center">
src/packages/audio/demos/h5/demo3.tsx (1)

7-7: 建议优化 useState 的类型定义

当前使用 any 类型可能会降低代码的类型安全性。建议明确指定图标组件的类型。

-const [voiceIcon, setVoiceIcon] = useState<any>(<PlayStart />)
+const [voiceIcon, setVoiceIcon] = useState<React.ReactElement>(<PlayStart />)
src/packages/button/button.scss (1)

1-4: 建议重新审视按钮组件的布局策略

考虑到按钮组件的复杂性(包含多种尺寸、状态和变体),建议:

  1. 创建明确的布局文档,说明不同场景下的布局行为
  2. 添加布局相关的测试用例
  3. 考虑使用 CSS Modules 或 CSS-in-JS 方案来更好地管理样式隔离
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dc6b487 and 54b7f2a.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (8)
  • src/packages/audio/demos/h5/demo3.tsx (1 hunks)
  • src/packages/avatar/demo.tsx (1 hunks)
  • src/packages/avatarcropper/demo.tsx (1 hunks)
  • src/packages/button/button.scss (1 hunks)
  • src/packages/countdown/demos/h5/demo9.tsx (2 hunks)
  • src/packages/countdown/demos/taro/demo9.tsx (2 hunks)
  • src/packages/swipe/demos/h5/demo4.tsx (2 hunks)
  • src/packages/swipe/demos/taro/demo4.tsx (3 hunks)
✅ Files skipped from review due to trivial changes (1)
  • src/packages/avatarcropper/demo.tsx
🔇 Additional comments (8)
src/packages/swipe/demos/h5/demo4.tsx (1)

2-2: 布局结构优化得当!

使用 Space 组件包装按钮是一个很好的改进:

  • 提供了更好的按钮间距管理
  • 布局结构更加清晰
  • 符合组件库的最佳实践

Also applies to: 26-37

src/packages/swipe/demos/taro/demo4.tsx (1)

2-2: 布局改进符合预期!

Space 组件的应用与 H5 版本保持一致,很好地改善了按钮布局。

Also applies to: 39-50

src/packages/countdown/demos/h5/demo9.tsx (1)

2-2: 导入声明更改正确

从 Grid 切换到 Space 组件的导入声明更改符合新的实现需求。

src/packages/countdown/demos/taro/demo9.tsx (1)

2-2: Taro 平台的导入声明正确

正确使用了 @nutui/nutui-react-taro 包中的组件。

src/packages/avatar/demo.tsx (1)

54-54: 请确认移除 'full' class 的样式影响

移除 'full' class 可能会影响组件的布局和响应式展示。建议验证以下几点:

  1. 组件在不同屏幕尺寸下的展示效果
  2. Demo 示例的整体布局是否正常
  3. 与其他组件 Demo 的样式保持一致
src/packages/audio/demos/h5/demo3.tsx (2)

3-3: 图标导入更新符合v15规范

图标从旧版的 PlayCircleFill/PoweroffCircleFill 更新为新版的 PlayStart/PlayStop,符合组件升级要求。


3-3: 验证图标更新的一致性

需要确保新的图标使用方式与其他组件保持一致。

Also applies to: 7-7, 11-11, 14-14

✅ Verification successful

图标更新已正确实施

代码搜索结果显示,PlayStartPlayStop 图标仅在 src/packages/audio/demos/h5/demo3.tsx 文件中使用,且没有发现旧图标 PlayCircleFillPoweroffCircleFill 的使用痕迹。这表明图标更新是一致且完整的。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for old icon usage that might need updating
rg "PlayCircleFill|PoweroffCircleFill" --type tsx

# Search for new icon usage pattern to verify consistency
rg "PlayStart|PlayStop" --type tsx

Length of output: 144


Script:

#!/bin/bash
# Search for old icon usage that might need updating
rg "PlayCircleFill|PoweroffCircleFill"

# Search for new icon usage pattern to verify consistency
rg "PlayStart|PlayStop"

# Also check for any icon imports from @nutui/icons-react
rg "@nutui/icons-react"

Length of output: 34480

src/packages/button/button.scss (1)

Line range hint 5-10: 建议验证 React Native 兼容性

请确认此显示属性的更改是否会影响 React Native 环境下的渲染表现。React Native 的布局系统与 Web 存在差异,可能需要特殊处理。

✅ Verification successful

React Native 兼容性已得到适当处理

通过代码分析,可以确认:

  1. 按钮组件已经通过 harmonyAndRn() 工具函数正确处理了 React Native 环境下的样式差异
  2. button.taro.tsx 中,针对 RN 环境有特殊的样式处理逻辑:
    • 背景色使用 backgroundColor 而不是 background
    • 文本容器有独立的样式计算
  3. SCSS 文件中的条件编译指令(#ifdef rn harmony#ifndef rn harmony)确保了 width 属性在不同平台下有正确的表现

因此,当前的样式更改不会对 React Native 环境造成负面影响。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否有其他 React Native 特定的样式处理
rg -g "*.{tsx,ts}" "rn harmony" ./src/packages/button/

Length of output: 56


Script:

#!/bin/bash
# 检查按钮组件中的条件编译指令
rg "#ifdef.*rn harmony|#ifndef.*rn harmony" ./src/packages/button/

# 检查按钮组件的样式文件中的 width 相关设置
rg "width:" ./src/packages/button/

# 检查是否存在 React Native 特定的样式或组件配置文件
fd -e ts -e tsx -e scss ".*button.*" ./src/packages/button/

Length of output: 1800


Script:

#!/bin/bash
# 检查 button.taro.tsx 中的特定 RN 处理逻辑
cat ./src/packages/button/button.taro.tsx

# 检查测试文件中的 RN 相关测试用例
cat ./src/packages/button/__test__/button.spec.tsx

Length of output: 7753

Comment on lines 9 to 16
if (audioElement) {
audioElement.addEventListener('playing', (e) => {
setVoiceIcon(<PoweroffCircleFill />)
setVoiceIcon(<PlayStop />)
})
audioElement.addEventListener('pause', (e) => {
setVoiceIcon(<PlayCircleFill />)
setVoiceIcon(<PlayStart />)
})
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

建议重构事件监听器的实现方式

当前实现存在以下问题:

  1. 直接使用 querySelectorAll 操作 DOM 不符合 React 最佳实践
  2. 没有清理事件监听器可能导致内存泄漏
  3. 事件监听器应该在 useEffect 中管理

建议按照以下方式重构:

 const Demo3 = () => {
   const [duration, setDuration] = useState(0)
   const [voiceIcon, setVoiceIcon] = useState<React.ReactElement>(<PlayStart />)
-  const audioElement = document.querySelectorAll('audio')[2]
-  if (audioElement) {
-    audioElement.addEventListener('playing', (e) => {
-      setVoiceIcon(<PlayStop />)
-    })
-    audioElement.addEventListener('pause', (e) => {
-      setVoiceIcon(<PlayStart />)
-    })
-  }
+  useEffect(() => {
+    const audioElement = document.getElementById('custom-voice-audio')
+    if (!audioElement) return
+    
+    const handlePlaying = () => setVoiceIcon(<PlayStop />)
+    const handlePause = () => setVoiceIcon(<PlayStart />)
+    
+    audioElement.addEventListener('playing', handlePlaying)
+    audioElement.addEventListener('pause', handlePause)
+    
+    return () => {
+      audioElement.removeEventListener('playing', handlePlaying)
+      audioElement.removeEventListener('pause', handlePause)
+    }
+  }, [])

Committable suggestion skipped: line range outside the PR's diff.

Comment on lines 3 to +4
display: flex;
display: inline-block;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

需要重新考虑显示属性的设置方式

在同一元素上同时设置 display: flexdisplay: inline-block 是有问题的:

  1. 后面的 inline-block 声明会覆盖前面的 flex 声明
  2. 这会导致组件内部的 flex 布局失效
  3. 可能会影响按钮在不同场景下的对齐和间距

建议采用以下解决方案之一:

.nut-button {
  position: relative;
-  display: flex;
-  display: inline-block;
+  display: inline-flex;

或者:

.nut-button {
  position: relative;
+  &:not(.nut-button-block) {
+    display: inline-flex;
+  }
+  &.nut-button-block {
+    display: flex;
+  }

Committable suggestion skipped: line range outside the PR's diff.

@oasis-cloud oasis-cloud merged commit 83cee35 into jdf2e:feat_v3.x Dec 22, 2024
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants