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

feat: textarea v15 #2887

Merged
merged 5 commits into from
Dec 26, 2024
Merged

feat: textarea v15 #2887

merged 5 commits into from
Dec 26, 2024

Conversation

xiaoyatong
Copy link
Collaborator

@xiaoyatong xiaoyatong commented Dec 25, 2024

🤔 这个变动的性质是?

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

🔗 相关 Issue

💡 需求背景和解决方案

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

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

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

Summary by CodeRabbit

  • 新特性
    • 添加了 plainstatusmessage 属性到 TextArea 组件,增强了组件的可配置性。
    • 更新了 TextArea 组件的文档,包含新属性和修改的属性。
    • 引入了新的演示组件 Demo9,展示错误状态的处理。
  • 样式
    • 重构了 TextArea 组件的样式,提高了视觉层次感和响应能力。
    • 更新了 CSS 变量,调整了文本区域的填充、行高和光标颜色。
  • 文档
    • 更新了 TextArea 组件的英文和中文文档,添加了新属性的描述并移除了不再使用的 CSS 变量。

Copy link

coderabbitai bot commented Dec 25, 2024

概述

演练

此次更新主要针对 NutUI React 的 TextArea 组件进行了全面升级。更新包括引入新的属性(plainstatusmessage)、调整样式变量、优化组件文档,并为不同环境(H5 和 Taro)提供了一致的实现。这些变更旨在提高组件的灵活性和可用性,同时简化了组件的使用方式。

变更

文件路径 变更摘要
src/packages/textarea/* 新增 plainstatusmessage 属性,调整组件渲染逻辑
src/styles/variables.scss 更新 TextArea 相关样式变量,注释部分旧变量
src/config.json 为 TextArea 组件添加 v15 标记
文档文件 更新组件文档,添加新属性说明,移除部分 CSS 变量

建议审阅者

  • oasis-cloud

可能相关的 PR

诗歌

🐰 文本区域,新生姿态
属性闪耀,样式飞扬
错误信息,优雅呈现
代码如诗,兔子欢唱
升级之路,畅通无阻


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.

@github-actions github-actions bot added the 3.x label Dec 25, 2024
Copy link

codecov bot commented Dec 25, 2024

Codecov Report

Attention: Patch coverage is 90.69767% with 4 lines in your changes missing coverage. Please review.

Project coverage is 85.84%. Comparing base (b4a99b1) to head (606d59f).
Report is 3 commits behind head on feat_v3.x.

Files with missing lines Patch % Lines
src/packages/textarea/textarea.tsx 90.69% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           feat_v3.x    #2887   +/-   ##
==========================================
  Coverage      85.84%   85.84%           
==========================================
  Files            271      271           
  Lines          18427    18434    +7     
  Branches        2726     2731    +5     
==========================================
+ Hits           15818    15825    +7     
  Misses          2604     2604           
  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: 0

🧹 Nitpick comments (10)
src/packages/textarea/demos/h5/demo5.tsx (1)

11-11: 新属性“type=container”与自定义主题配合使用可增强样式灵活性。
此处配置可行,但建议在文档或示例注释中说明“container”与“plain”的区别,让使用者更好地理解不同的渲染效果。

src/packages/textarea/demos/h5/demo1.tsx (2)

6-12: 第一个 TextArea 逻辑正常,但可在注释或文档中说明示例用法。

  1. 建议在代码或文档中说明为什么示例默认值改为“基础用法1”。
  2. 若需要更丰富的演示,可在演示页面增加常见事件或占位符用例。

13-19: 第二个 TextArea 增加了“type=container”,与第一个形成对比演示。
此种写法正确,可在组件文档中补充差异对比示例,让开发者了解两者视觉与功能上的区别。

src/packages/textarea/textarea.taro.tsx (2)

24-24: 在接口中新增 “type: 'plain' | 'container'” 属性,为组件带来更加多样的渲染选择。
接口声明清晰,但请在文档注释中简要提示两种类型的区别和适用场景。


109-109: 使用动态 className 时最好确保容器类名与“type”无冲突。
此处写法简洁,但需妥善处理与其他可能的类型扩展,建议后续统一管理“type”可选项,避免类型命名冲突。

src/packages/textarea/textarea.scss (2)

32-32: 固定高度为 40px
手动固定高度可能会限制可扩展性,若自动高度场景多,可考虑配置化以免影响灵活度。


44-55: 注释掉的占位符伪元素
保留此段注释可留待后续开发,如无使用计划应酌情删除以减少代码冗余。

src/styles/variables.scss (3)

564-564: 注释旧的 $textarea-font 变量
建议在确认不再使用后彻底删除,减少冗余。


566-566: 注释 $textarea-limit-color
若后期不再需要,可移除此变量,减少维护成本。


576-579: 注释 $textarea-disabled-color
在新方案下或已被 $color-text-disabled 取代,保留注释占位可引发混淆。

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between b4a99b1 and 3d51df2.

⛔ Files ignored due to path filters (1)
  • src/packages/textarea/__test__/__snapshots__/textarea.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (20)
  • migrate-from-v2.md (1 hunks)
  • src/packages/textarea/demos/h5/demo1.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo2.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo3.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo4.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo5.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo6.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo7.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo8.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo2.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo3.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo4.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo5.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo6.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo7.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo8.tsx (1 hunks)
  • src/packages/textarea/textarea.scss (2 hunks)
  • src/packages/textarea/textarea.taro.tsx (4 hunks)
  • src/packages/textarea/textarea.tsx (4 hunks)
  • src/styles/variables.scss (1 hunks)
🔇 Additional comments (32)
src/packages/textarea/demos/h5/demo4.tsx (1)

5-5: 此处增加了 type="container" 属性,功能看起来符合预期。
若与 autoSize 同时使用,需要确认在小屏或特殊场景下的展示是否正常。

src/packages/textarea/demos/h5/demo3.tsx (1)

5-5: TextArea 添加了 type="container" 属性后,请确保计数功能(showCount)在容器模式下表现稳定。
整体逻辑无异常,建议在 Demo 中进一步测试各种输入长度。

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

5-5: 在 Taro 环境下增加了 type="container",功能与 H5 版本保持一致。
请与团队确认是否需要在不同平台做差异化展示。

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

5-5: 此处在 Taro Demo 中同样设置 type="container",配合 showCount 建议在实际设备上验证计数与布局是否正常。

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

7-7: 建议确认容器类型样式是否符合预期
此处新增 type="container" 属性后,应确保样式文件对该类型进行了适当的布局或外观处理。如果已有对应的样式定义且功能测试通过,则无需额外改动。

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

7-7: 建议确认容器类型样式是否符合预期
此处新增 type="container" 属性,与 H5 版本保持一致,建议检查 Taro 环境下是否对该类型进行了正确的样式或交互支持。

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

8-8: 确认容器模式下的文本显示效果
type="container" 结合右对齐时,需检查在不同屏幕或容器大小下的显示和可用性,避免因容器布局导致的文本被裁切或超出边界。

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

8-8: 验证 Taro 环境下容器模式兼容性
在 Taro 环境中使用 type="container" 同样要测试其在不同设备上渲染时的表现,并确保与 style={{ textAlign: 'right' }} 搭配使用时没有布局冲突。

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

11-11: 添加了新属性 type="container"

此处为新增属性,确保在样式或交互上已内置对 type="container" 的完整支持。建议在文档或示例中说明该类型的具体作用和差异,以便使用者理解其用途。

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

10-10: 新增属性 type="container" 的可用性检查

已在 TextArea 中添加 type="container"。请确认 Taro 环境下已同步支持该属性的渲染逻辑和样式。若需要特殊样式或行为,可考虑在对应的 CSS 文件中进行补充。

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

6-12: TextArea 中添加 type="container" 并优化换行书写

此改动使组件可以展示新的容器风格。保持多行写法有利于后续扩展其他属性,也提升了可读性。若有更多相关属性需要同逻辑处理,建议一并添加并在文档中说明。

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

6-12: 新增 type="container",并使用多行返回以提升可读性

此处使用多行结构提升了可维护性,且在 Taro 版示例中与 H5 版本保持一致。建议在实际使用前测试容器样式渲染,确保无兼容性问题。

src/packages/textarea/demos/taro/demo5.tsx (1)

11-11: 在 Taro 环境下同样增加了“type=container”属性,确保与 H5 端风格一致即可。
若后续需要区分 Taro 与 H5 的差异化表现,可考虑在组件内部进行环境判定及样式差异处理。

src/packages/textarea/demos/h5/demo1.tsx (2)

2-2: 导入 Space 组件有利于提升布局灵活性。
此改动能使示例结构更清晰,也便于在多个 TextArea 之间添加更多元素或改动时保持良好排版。


20-20: Space 组件封尾位置正确,注意后续若新增其他示例模块时,要保持层次清晰。
当前结构简洁明了,无需额外修改。

src/packages/textarea/textarea.taro.tsx (2)

39-39: 在 defaultProps 中默认设置 “type=plain”。
保持向后兼容性,避免已有场景因切换默认值而受到影响。此举合理。


55-55: 解构赋值中引入“type”属性时建议在文档或注释中说明优先级。
若组件外部传入了 type,便会覆盖 defaultProps;保持清晰的优先级文档有助于减少误用。

src/packages/textarea/textarea.tsx (4)

18-18: 新增 type 属性,增强可配置性
这个改动扩展了 TextAreaProps,允许选择 'plain''container' 两种模式。该实现思路清晰且易于维护。


34-34: 正确设置 type 的默认值
defaultProps 中将 type 默认为 'plain',符合向后兼容和使用习惯。


56-56: 在 props 中合并并读取新属性 type
从代码逻辑来看,type 与其他属性一起解构使用,使用方式简洁明了。


124-124: 根据 type 动态设置 className
通过类名前缀 + -plain-container 实现风格切换,思路清晰,无需修改可继续保持。

src/packages/textarea/textarea.scss (8)

2-3: 使用 flex 布局并改为 column 方向
display: flex; flex-direction: column; 更好地适配多行内容排布,样式配置合理。


7-8: 字体与圆角重设
调整 font-sizeborder-radius,使样式更统一;暂无明显问题。


10-13: 新增 &-container 内部容器样式
通过 padding 与背景色区别于默认模式,与新增的 type 相匹配,易维护。


16-20: 字符统计区域样式
text-align: right; margin-top: 8px;等设置确保字数统计靠右并保持间隔,布局清晰。


23-23: 禁用状态的文字颜色
将 color 设置为 $color-text-disabled,方便整体维护和全局样式一致性。


36-36: 保持字体与全局基准一致
font-size: $font-size-base; 有助于文字在各组件间保持一致性。


63-66: 设置占位符颜色
整体颜色与 $color-text-help 保持一致,风格统一且可读性高。


69-69: 多处禁用状态的文字颜色
统一使用 $color-text-disabled,推荐后续维护时保持与整体设计规范一致。

Also applies to: 71-71, 74-74, 76-76

migrate-from-v2.md (1)

519-520: 新增文档说明 TextArea type 属性
明确限定 'plain''container',同时建议移除旧的样式变量,文档指引清晰。

src/styles/variables.scss (2)

565-565: 修改 $textarea-padding12px
&-container 内部 padding 相呼应,适配新的组件样式风格。


574-574: 行高改为 20px
此行高更适合多行文本需求,有助于可读性。

oasis-cloud

This comment was marked as resolved.

@oasis-cloud
Copy link
Collaborator

oasis-cloud commented Dec 26, 2024

image
  • demo 中没看到错误提示
  • 光标颜色默认主题色

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: 1

🧹 Nitpick comments (6)
src/packages/textarea/demos/taro/demo1.tsx (2)

6-13: 为视觉提示添加占位文案或提示语
此处 TextArea 设置了 plain 属性,并且有默认值,但并未设置任何占位提示(例如提示用户输入内容等)。可根据交互需求,考虑是否需要添加清晰的占位符,以提升用户使用体验。


14-19: 根据反馈可添加错误状态或验证逻辑
参考 PR 评论中提到的“无错误信息展示”等反馈,可在 TextArea 失焦或编辑时,通过 statusmessage 等属性进行验证和提示,增强组件在表单场景中的可用性。

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

4-10: 演示组件功能明确,但可考虑补充更多演示场景。
当前示例仅演示了错误状态的 TextArea,若需要全面展示交互形式,建议在文档或示例中补充如:正确状态、禁用状态、受控状态等,方便用户理解。

src/packages/textarea/textarea.scss (3)

10-13: 容器类 &-container 拆分合理,方便管理额外样式。
当前拆分结构便于后续扩展,如边距或背景色独立配置。


56-68: 注释掉的伪元素部分可考虑移除或改为调试分支。
若后续无使用场景,建议删除无效代码,以保持代码整洁。


81-88: 禁用状态下占位符颜色与普通文字颜色一致。
在可用性上可考虑略微区分,但目前做法已满足一般需求。

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 3d51df2 and 00af84f.

📒 Files selected for processing (12)
  • migrate-from-v2.md (1 hunks)
  • src/config.json (1 hunks)
  • src/packages/textarea/demo.taro.tsx (6 hunks)
  • src/packages/textarea/demo.tsx (6 hunks)
  • src/packages/textarea/demos/h5/demo1.tsx (1 hunks)
  • src/packages/textarea/demos/h5/demo9.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo1.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo9.tsx (1 hunks)
  • src/packages/textarea/textarea.scss (1 hunks)
  • src/packages/textarea/textarea.taro.tsx (4 hunks)
  • src/packages/textarea/textarea.tsx (4 hunks)
  • src/styles/variables.scss (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • src/packages/textarea/demos/taro/demo9.tsx
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/packages/textarea/demos/h5/demo1.tsx
  • src/packages/textarea/textarea.taro.tsx
  • src/packages/textarea/textarea.tsx
🔇 Additional comments (25)
src/packages/textarea/demos/taro/demo1.tsx (1)

2-2: 使用Space组件可以有效提升布局整洁度
导入 Space 组件来包裹多个 TextArea ,从可维护性与可读性上都很实用。若后续有更多输入框或其他组件,可继续沿用此布局方式。

src/packages/textarea/demos/h5/demo9.tsx (2)

1-2: 引入方式符合规范,暂未发现问题。
导入 ReactTextArea 组件语义清晰,能正常使用。


12-13: 导出默认组件的方式正确。
该导出写法简洁直观,未发现明显问题。

src/packages/textarea/demo.tsx (6)

11-11: 新增 Demo9 导入无冲突。
不过需确保 Demo9 文件被正确创建并包含预期功能,以防在构建或打包时出现导入错误。


25-25: 新增属性 error 表意清晰。
将错误提示抽象为一个新属性符合可维护性,建议同时在文档中说明此属性用途。


42-42: 中文翻译项添加正确。
error: '错误状态' 能直观表达界面含义,确保与界面元素对应即可。


56-56: 繁体中文翻译项添加正确。
error: '錯誤狀態' 与简体中文对应,确保无拼写或用语差异即可。


70-70: 英文翻译项添加正确。
error: 'Status is error' 能简要表达状态含义,无问题。


93-94: 新增错误状态示例展示清晰。
在此处渲染 <Demo9 /> 并配合标题 translated.error,成功直观地传递错误信息演示,符合预期。

src/packages/textarea/demo.taro.tsx (6)

14-14: 成功导入 Demo9 组件。
注意在 Taro 环境中确认该组件的依赖与文件路径的正确性。


28-28: 新增 error 属性语义合理。
在多语言场景下清晰标记错误信息,易于后续维护。


45-45: 简体中文翻译无语义歧义。
error: '错误状态' 与主站一致。


59-59: 繁体中文翻译无语义歧义。
error: '錯誤狀態' 表达逻辑正常。


73-73: 英文翻译保持一致性。
error: 'Status is error' 搭配简明标题较好。


97-98: 新增错误示例渲染合理。
在 Taro 中的 <h2><Demo9 /> 搭配能保持与 H5 版本一致的体验。

src/packages/textarea/textarea.scss (7)

2-3: 使用 flex 并改为纵向布局。
此修改使内容在垂直方向上更易排布,适用于较长文字输入。


7-8: 字体继承基础变量,边角圆角符合设计规范。
在视觉上更统一,后续可结合主题变量灵活调整。


15-18: 错误状态样式补充合理。
&-error 结合边框和背景突出错误信息,且将颜色与主题色变量绑定,保持风格一致。


21-25: 字数限制区样式更改为右对齐,视觉更集中。
margin-top 区分,与文本域主体分离度更高。


28-28: 禁用状态颜色改为 $color-text-disabled
保证禁用提示在不同主题下保持一致。


32-37: &-description 新增有助于展示错误文案。
此类提供单独的排版和颜色样式,便于与主体区分。


75-77: 占位符默认颜色改为 $color-text-help
提示调性与整体帮助信息平齐,保持UI一致性。

migrate-from-v2.md (1)

519-520: TextArea 组件的重要更新

对 TextArea 组件进行了以下改进:

  1. 新增 plain 属性,用于支持纯文本模式
  2. 优化了样式变量,移除了可以使用基础样式变量的冗余定义

这些更改有助于:

  • 提供更灵活的文本输入展示方式
  • 简化样式配置,提高代码复用性
src/config.json (1)

705-705: TextArea 组件版本升级至 v15

组件升级到 v15 版本,标记了重要的功能更新。建议查看组件文档了解新版本的具体变更。

src/styles/variables.scss (1)

564-572: 优化 TextArea 样式变量定义

样式变量的更新主要包括:

  1. 统一内边距为 12px,提升布局一致性
  2. 光标颜色改用主题色,增强视觉反馈
  3. 行高调整为 20px,优化文本显示效果

这些调整有助于:

  • 提升组件的视觉体验
  • 增强与其他组件的样式一致性

Comment on lines +44 to +48
height: 40px;
min-width: 0;
margin: 0;
padding: 0;
font-size: $textarea-font;
font-size: $font-size-base;
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

文本域强制固定 height: 40px 可能影响自适应布局。
若设计需求存在高度自动扩展,可考虑以 min-height 替换固定高度,更灵活地展示多行文本。

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: 0

🧹 Nitpick comments (7)
src/packages/textarea/doc.zh-TW.md (2)

91-93: 属性文档格式需要修正

  1. status 属性的类型描述中包含了错误的转义字符 \/,应修改为 /
  2. message 属性的默认值应保持一致性,建议使用 - 而不是空字符串
- | status | 文本域狀態,可標記為 默認狀態 和 錯誤狀態 | `default /\ error` | `default` |
+ | status | 文本域狀態,可標記為 默認狀態 和 錯誤狀態 | `default / error` | `default` |
- | message | 文本域描述,搭配error狀態使用 | `string` | `` |
+ | message | 文本域描述,搭配error狀態使用 | `string` | `-` |

Line range hint 1-90: 建议补充新属性的使用示例

当前文档中缺少对新增的 plainstatusmessage 属性的使用示例,建议添加相关示例代码以帮助用户理解这些新特性的使用方法。

src/packages/textarea/doc.taro.md (2)

92-94: 属性文档格式需要修正

  1. status 属性的类型描述中包含了错误的转义字符 \/,应修改为 /
  2. message 属性的默认值应保持一致性,建议使用 - 而不是空字符串
- | status | 文本域状态,可标记为 默认状态 和 错误状态 | `default /\ error` | `default` |
+ | status | 文本域状态,可标记为 默认状态 和 错误状态 | `default / error` | `default` |
- | message | 文本域描述,搭配error状态使用 | `string` | `` |
+ | message | 文本域描述,搭配error状态使用 | `string` | `-` |

Line range hint 1-91: 建议补充新属性的使用示例

当前文档中缺少对新增的 plainstatusmessage 属性的使用示例,建议添加相关示例代码以帮助用户理解这些新特性在 Taro 环境中的使用方法。

src/packages/textarea/doc.md (2)

92-94: 属性文档格式需要修正

  1. status 属性的类型描述中包含了错误的转义字符 \/,应修改为 /
  2. message 属性的默认值应保持一致性,建议使用 - 而不是空字符串
- | status | 文本域状态,可标记为 默认状态 和 错误状态 | `default /\ error` | `default` |
+ | status | 文本域状态,可标记为 默认状态 和 错误状态 | `default / error` | `default` |
- | message | 文本域描述,搭配error状态使用 | `string` | `` |
+ | message | 文本域描述,搭配error状态使用 | `string` | `-` |

Line range hint 1-91: 建议补充新属性的使用示例

当前文档中缺少对新增的 plainstatusmessage 属性的使用示例,建议添加相关示例代码以帮助用户理解这些新特性的使用方法。特别是 statusmessage 属性的组合使用场景。

migrate-from-v2.md (1)

519-522: 迁移指南更新准确!

迁移指南中的TextArea组件变更说明完整且清晰:

  • 新增 plain 属性用于标记文本框类型
  • 新增 status 属性用于定义状态
  • 新增 message 属性用于错误提示
  • 移除了一些可使用基础样式变量的属性

建议补充一下移除的样式变量对应的新变量名称,方便用户迁移时进行替换。

建议添加以下内容:

- 删掉一些可使用基础样式变量,并且建议使用基础样式变量的样式变量,比如 `$textarea-font` `$textarea-limit-color` `$textarea-disabled-color`
+ 删掉一些可使用基础样式变量的样式变量:
+ - `$textarea-font` 替换为 `$font-family`
+ - `$textarea-limit-color` 替换为 `$text-color`
+ - `$textarea-disabled-color` 替换为 `$disabled-color`
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 00af84f and 6229151.

📒 Files selected for processing (5)
  • migrate-from-v2.md (1 hunks)
  • src/packages/textarea/doc.en-US.md (1 hunks)
  • src/packages/textarea/doc.md (2 hunks)
  • src/packages/textarea/doc.taro.md (1 hunks)
  • src/packages/textarea/doc.zh-TW.md (1 hunks)
🔇 Additional comments (2)
src/packages/textarea/doc.md (1)

109-109: 确认光标颜色变更

光标颜色从 $color-title 更改为 $color-primary,这个变更需要确认是否符合设计规范。

src/packages/textarea/doc.en-US.md (1)

92-94: 文档更新清晰且完整!

新增的属性定义明确,与组件功能相符:

  • plain 属性用于区分容器类型
  • status 属性用于定义输入框状态
  • message 属性用于展示错误信息

这些更新与PR评论中提到的错误信息展示需求相吻合。

运行以下脚本验证文档中的属性是否与实际实现一致:

✅ Verification successful

TextArea组件的属性实现已验证完成

根据代码搜索结果,在 src/packages/textarea/textarea.tsxsrc/packages/textarea/textarea.taro.tsx 文件中都找到了对应的属性实现:

// 属性定义
plain: boolean
status: 'error' | 'default'
message: string

// 默认值
plain: false,
status: 'default',
message: '',

属性的实现与文档完全一致:

  • plain 属性用于区分容器类型,默认为 false
  • status 属性用于定义输入框状态,可选值为 'error' 或 'default',默认为 'default'
  • message 属性用于展示描述信息,默认为空字符串
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 描述:验证TextArea组件的属性实现
# 预期:在实现文件中找到对应的属性定义

# 检查属性定义
ast-grep --pattern 'interface TextAreaProps {
  $$$
  plain?: boolean
  status?: $_ 
  message?: string
  $$$
}'

Length of output: 114


Script:

#!/bin/bash
# 搜索TextArea相关的类型定义文件
fd -e ts -e tsx -e d.ts | xargs rg -l "TextArea.*Props"

# 搜索plain属性的使用
rg "plain.*?:" -A 2

# 搜索status属性的使用
rg "status.*?:" -A 2

# 搜索message属性的使用
rg "message.*?:" -A 2

Length of output: 57008

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: 1

🧹 Nitpick comments (3)
src/packages/textarea/textarea.scss (1)

49-60: 建议移除未使用的注释代码

建议清理这段被注释的代码,如果将来需要可以通过版本控制系统找回。保持代码整洁有助于提高可维护性。

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

24-25: 建议改进类型定义

建议将 status 的可选值定义为枚举类型,以提高类型安全性和代码可维护性:

- status: 'error' | 'default'
+ enum TextAreaStatus {
+   Error = 'error',
+   Default = 'default'
+ }
+ status: TextAreaStatus
src/packages/textarea/textarea.tsx (1)

121-162: 组件结构合理,建议小幅优化

组件整体结构清晰,但建议将 showCount 相关的渲染逻辑抽取为独立组件,以提高代码的可维护性:

+ const TextAreaCounter = ({ value, maxLength, disabled, classPrefix }) => (
+   <div className={`${classPrefix}-limit ${disabled ? `${classPrefix}-limit-disabled` : ''}`}>
+     {value.length}/{maxLength < 0 ? 0 : maxLength}
+   </div>
+ )

  return (
    <>
      <div className={...}>
        <textarea {...props} />
-       {showCount && (
-         <div className={`${classPrefix}-limit ${disabled ? `${classPrefix}-limit-disabled` : ''}`}>
-           {inputValue.length}/{maxLength < 0 ? 0 : maxLength}
-         </div>
-       )}
+       {showCount && (
+         <TextAreaCounter
+           value={inputValue}
+           maxLength={maxLength}
+           disabled={disabled}
+           classPrefix={classPrefix}
+         />
+       )}
      </div>
    </>
  )
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 144-145: src/packages/textarea/textarea.tsx#L144-L145
Added lines #L144 - L145 were not covered by tests


[warning] 147-148: src/packages/textarea/textarea.tsx#L147-L148
Added lines #L147 - L148 were not covered by tests

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 6229151 and 606d59f.

⛔ Files ignored due to path filters (1)
  • src/packages/textarea/__test__/__snapshots__/textarea.spec.tsx.snap is excluded by !**/*.snap
📒 Files selected for processing (10)
  • migrate-from-v2.md (1 hunks)
  • src/packages/textarea/demos/h5/demo9.tsx (1 hunks)
  • src/packages/textarea/demos/taro/demo9.tsx (1 hunks)
  • src/packages/textarea/doc.en-US.md (1 hunks)
  • src/packages/textarea/doc.md (2 hunks)
  • src/packages/textarea/doc.taro.md (1 hunks)
  • src/packages/textarea/doc.zh-TW.md (1 hunks)
  • src/packages/textarea/textarea.scss (2 hunks)
  • src/packages/textarea/textarea.taro.tsx (4 hunks)
  • src/packages/textarea/textarea.tsx (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (7)
  • src/packages/textarea/demos/taro/demo9.tsx
  • src/packages/textarea/doc.en-US.md
  • src/packages/textarea/demos/h5/demo9.tsx
  • src/packages/textarea/doc.zh-TW.md
  • src/packages/textarea/doc.md
  • src/packages/textarea/doc.taro.md
  • migrate-from-v2.md
🧰 Additional context used
🪛 GitHub Check: codecov/patch
src/packages/textarea/textarea.tsx

[warning] 144-145: src/packages/textarea/textarea.tsx#L144-L145
Added lines #L144 - L145 were not covered by tests


[warning] 147-148: src/packages/textarea/textarea.tsx#L147-L148
Added lines #L147 - L148 were not covered by tests

🔇 Additional comments (4)
src/packages/textarea/textarea.scss (2)

37-37: 固定高度可能限制组件灵活性

将文本域高度固定为 40px 可能会影响组件在不同场景下的适应性。建议使用 min-height 来确保最小高度的同时保持灵活性。


15-18: 错误状态样式需要验证

请确认错误状态的边框颜色(0.5px solid $color-danger)和背景色($color-danger-light)是否符合设计规范。

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

133-142: 代码结构良好

Textarea 组件的核心渲染逻辑结构清晰,属性传递完整,事件处理合理。

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

143-148: 输入法组合事件处理需要测试覆盖

与 Taro 版本类似,Web 版本的输入法组合事件处理也缺少测试覆盖。建议添加测试用例确保功能正确性。

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 144-145: src/packages/textarea/textarea.tsx#L144-L145
Added lines #L144 - L145 were not covered by tests


[warning] 147-148: src/packages/textarea/textarea.tsx#L147-L148
Added lines #L147 - L148 were not covered by tests

Comment on lines +123 to +128
onCompositionStart: () => {
compositionRef.current = true
},
onCompositionEnd: () => {
compositionRef.current = false
},
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

需要补充输入法组合事件的测试用例

经过验证,当前测试文件(src/packages/textarea/test/)中缺少对 composition 事件的测试覆盖。代码中使用了 compositionRef 来处理输入法组合输入,这是一个重要的功能点,建议添加以下测试场景:

  • 输入法组合输入开始时(onCompositionStart)的状态变化
  • 输入法组合输入结束时(onCompositionEnd)的状态变化
  • 在组合输入过程中的值处理逻辑

参考现有的测试用例格式,可以使用 fireEvent 来模拟这些事件。

🔗 Analysis chain

输入法组合事件处理缺少测试覆盖

compositionStart 和 compositionEnd 事件的处理逻辑缺少测试覆盖。建议添加相关测试用例以确保中文输入等场景的正确性。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查是否存在相关测试用例
rg -l "composition.*Event" "src/packages/textarea/**/*test*"

Length of output: 134


Script:

#!/bin/bash
# 查找textarea相关的测试文件
fd "test.*\.(tsx|ts|js|jsx)$" src/packages/textarea

# 查找所有包含composition相关测试的文件
rg -l "composition" --type ts --type tsx --type js --type jsx src/packages/textarea

Length of output: 165


Script:

#!/bin/bash
# 使用更通用的搜索方式查找测试文件
fd "test" src/packages/textarea

# 查找所有包含composition的文件
rg -l "composition" src/packages/textarea

Length of output: 180


Script:

#!/bin/bash
# 检查测试目录下的文件内容
fd . src/packages/textarea/__test__/ -t f -x cat {}

# 查看composition相关的具体实现上下文
rg "composition" -B 2 -A 2 src/packages/textarea/textarea.taro.tsx src/packages/textarea/textarea.tsx

Length of output: 5382

@oasis-cloud oasis-cloud merged commit bb0685f into jdf2e:feat_v3.x Dec 26, 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