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: ✨ 新增Curtain 幕帘属性,支持使用其他图标 #648

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

icjs-cc
Copy link

@icjs-cc icjs-cc commented Oct 9, 2024

🤔 这个 PR 的性质是?(至少选择一个)

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

🔗 相关 Issue

💡 需求背景和解决方案

某些情况下幕帘不使用环状关闭图标且颜色需要自定义,存在背景为白色的情况,关闭按钮无法查看情况

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

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

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充

Summary by CodeRabbit

  • 新功能

    • 更新了 wd-curtain 组件的文档,增加了新属性和现有功能的说明。
    • 新增 close-icon-nameclose-icon-sizeclose-icon-color 属性,允许用户自定义关闭按钮的图标、大小和颜色。
    • 在示例中展示了新属性的使用。
  • 样式

    • 为按钮组件的活动状态添加了新的样式规则,使其在按下时具有圆角效果。

Copy link

vercel bot commented Oct 9, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
wot-design-uni ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 9, 2024 8:38am

Copy link

coderabbitai bot commented Oct 9, 2024

Walkthrough

此拉取请求的更改主要集中在wd-curtain组件的文档和实现上。文档更新了新属性的描述,并澄清了现有功能。新增的属性包括close-icon-nameclose-icon-sizeclose-icon-color。在Index.vue中,添加了一个新的演示块,展示了如何使用这些新属性。types.ts文件中也引入了新的类型和属性,增强了组件的功能。最后,wd-curtain.vue文件更新了模板部分,以支持新的动态属性。

Changes

文件路径 更改摘要
docs/component/curtain.md 更新文档,新增close-icon-nameclose-icon-sizeclose-icon-color属性,澄清hide-when-close属性。
src/pages/curtain/Index.vue 添加新的演示块,使用新属性,新增value9handleClick9handleClose9方法。
src/uni_modules/wot-design-uni/components/wd-curtain/types.ts 新增CloseIconName类型,扩展curtainProps对象,新增closeIconNamecloseIconSizecloseIconColor属性。
src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue 更新模板,替换wd-icon组件的name属性并新增动态属性。
src/uni_modules/wot-design-uni/components/wd-button/index.scss 为按钮组件的活动状态添加新的样式规则,新增border-radius: 6px;

Possibly related PRs

Suggested reviewers

  • Moonofweisheng

兔子欢快跳跃,
新属性如花绽放,
关上窗帘轻轻合,
自定义真美妙,
代码舞动如春风,
组件灵活更精彩,
让我们一起欢庆吧! 🐇✨


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

netlify bot commented Oct 9, 2024

Deploy Preview for wot-design-uni ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit c87b6f8
🔍 Latest deploy log https://app.netlify.com/sites/wot-design-uni/deploys/670640aedcc4c60008cac439
😎 Deploy Preview https://deploy-preview-648--wot-design-uni.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

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

🧹 Outside diff range and nitpick comments (9)
src/uni_modules/wot-design-uni/components/wd-curtain/types.ts (2)

41-44: 建议改进 closeIconSize 属性定义

新增的 closeIconSize 属性允许自定义关闭图标的大小,这符合 PR 的目标。然而,为了保持一致性,建议使用 makeStringProp 函数来定义此属性,并可能添加一个默认值。

例如:

closeIconSize: makeStringProp(''),

这样可以保持与其他属性定义的一致性,并可能提供更好的类型推断。


45-48: 建议改进 closeIconColor 属性定义

新增的 closeIconColor 属性允许自定义关闭图标的颜色,这符合 PR 的目标。然而,为了保持一致性,建议使用 makeStringProp 函数来定义此属性,并可能添加一个默认值。

例如:

closeIconColor: makeStringProp(''),

这样可以保持与其他属性定义的一致性,并可能提供更好的类型推断。

src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue (2)

22-28: 关闭图标的自定义性得到了增强,很好的改进!

这些更改允许更灵活地自定义关闭图标,这与PR的目标相符。动态属性的使用使得组件更加可配置。

建议:

  1. 考虑为新添加的属性提供默认值,以确保向后兼容性。
  2. 可以考虑在组件的文档中添加这些新属性的使用示例,以帮助其他开发者理解如何使用这些新功能。

Line range hint 31-184: 脚本部分需要更新以支持新的属性

虽然模板中添加了新的属性,但是在脚本部分没有看到相应的更新。建议进行以下改进:

  1. curtainProps 对象中定义新的属性 closeIconNamecloseIconSizecloseIconColor
  2. 考虑完全迁移到 Composition API,以提高代码的一致性和可维护性。
  3. 为新属性添加适当的类型定义和默认值。

示例:

import { curtainProps } from './types'

// 在 types.ts 文件中更新 curtainProps
export const curtainProps = {
  // ... 现有的属性
  closeIconName: {
    type: String,
    default: 'close'
  },
  closeIconSize: {
    type: [String, Number],
    default: 20
  },
  closeIconColor: {
    type: String,
    default: '#fff'
  }
}
docs/component/curtain.md (1)

111-111: 新属性 close-icon-name 添加得很好

这个新属性很好地实现了PR的目标,允许用户自定义关闭按钮的图标。描述清晰,可选值明确。

建议稍微调整一下格式,使用制表符代替空格来对齐列,以保持与其他行的一致性。例如:

| close-icon-name | 关闭按钮图标 | string | close-outline / close | close-outline | - |
src/pages/curtain/Index.vue (3)

21-23: 新增的演示块看起来不错!

新增的"自定义图标"演示块很好地展示了新功能。为了进一步提高可读性,建议考虑在按钮文本中更明确地说明自定义内容。

建议将按钮文本从"关闭图标自定义"修改为更具体的描述,例如:

-      <wd-button @click="handleClick9">关闭图标自定义</wd-button>
+      <wd-button @click="handleClick9">自定义关闭图标(颜色/大小)</wd-button>

这样可以更清楚地表明用户可以自定义的具体内容。


41-50: 新的 wd-curtain 组件实现看起来很好!

新增的 wd-curtain 组件很好地实现了自定义图标的功能。props 的命名遵循了 Vue 的最佳实践,这很棒。

为了更好地展示新功能的灵活性,建议考虑使用动态值而不是硬编码值。例如:

       :value="value9"
       :src="img"
       :to="link"
-      closeIconName="close"
-      closeIconSize="20"
-      closeIconColor="red"
+      :closeIconName="customIconName"
+      :closeIconSize="customIconSize"
+      :closeIconColor="customIconColor"
       @close="handleClose9"
       :width="280"

然后在 script 部分添加这些响应式变量:

const customIconName = ref('close')
const customIconSize = ref(20)
const customIconColor = ref('red')

这样可以更容易地在演示中动态更改这些值,展示组件的灵活性。


64-64: 新增的响应式变量和方法实现正确!

新增的 value9 响应式变量以及 handleClick9handleClose9 方法的实现与文件中现有的模式保持一致,这很好。

为了保持与 TypeScript 最佳实践的一致性,建议为新增的函数添加返回类型注解。例如:

-function handleClick9() {
+function handleClick9(): void {
   value9.value = true
 }
-function handleClose9() {
+function handleClose9(): void {
   value9.value = false
 }

这样可以提高代码的可读性和类型安全性。

Also applies to: 116-121

src/uni_modules/wot-design-uni/components/wd-button/index.scss (1)

85-85: 考虑使用变量来定义border-radius值

新增的border-radius: 6px;属性增强了按钮激活状态的视觉效果,这是一个很好的改进。然而,为了保持样式的一致性和可维护性,建议使用一个SCSS变量来定义这个值,而不是直接使用硬编码的像素值。

建议修改如下:

- border-radius: 6px;
+ border-radius: $-button-active-radius;

然后在文件顶部或相应的变量文件中定义这个变量:

$-button-active-radius: 6px;

这样做可以让样式更容易在整个组件库中保持一致,并且在需要调整时更方便修改。

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 4e9a9da and c87b6f8.

📒 Files selected for processing (5)
  • docs/component/curtain.md (1 hunks)
  • src/pages/curtain/Index.vue (4 hunks)
  • src/uni_modules/wot-design-uni/components/wd-button/index.scss (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-curtain/types.ts (2 hunks)
  • src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue (1 hunks)
🧰 Additional context used
🪛 Markdownlint
docs/component/curtain.md

112-112: Column: 39
Hard tabs

(MD010, no-hard-tabs)


112-112: Column: 43
Hard tabs

(MD010, no-hard-tabs)


113-113: Column: 40
Hard tabs

(MD010, no-hard-tabs)


113-113: Column: 44
Hard tabs

(MD010, no-hard-tabs)

🔇 Additional comments (7)
src/uni_modules/wot-design-uni/components/wd-curtain/types.ts (3)

5-5: 新类型 CloseIconName 添加正确

新增的 CloseIconName 类型定义符合 PR 的目标,允许为关闭按钮使用替代图标。类型定义清晰,并且正确导出,可以在其他文件中使用。


36-40: 新属性 closeIconName 添加正确

新增的 closeIconName 属性正确使用了新定义的 CloseIconName 类型,并设置了默认值 'close-outline',保持了向后兼容性。使用 makeStringProp 的方式与文件中其他属性保持一致。


Line range hint 1-48: 总体评价

此文件的更改很好地实现了 PR 的目标,为 Curtain 组件引入了自定义关闭图标的新属性。新增的 CloseIconName 类型和 closeIconName 属性的实现都很完善。对于 closeIconSizecloseIconColor 属性,建议使用 makeStringProp 来保持一致性。总的来说,这些更改增强了组件的灵活性和可定制性,符合预期目标。

src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue (1)

Line range hint 1-187: 总体评估:改进了组件的灵活性,但需要完善实现

这些更改增强了 wd-curtain 组件的自定义能力,特别是在关闭图标的样式上。这与PR的目标相符,可以解决在不同背景下图标可见性的问题。

主要亮点:

  1. 模板中新增的动态属性提高了组件的可配置性。
  2. 更改符合PR的目标,增加了使用替代图标的能力。

需要改进的地方:

  1. 脚本部分需要更新以支持新添加的属性。
  2. 考虑统一使用 Composition API 来提高代码一致性。
  3. 确保新属性在组件文档中得到充分说明。

建议在合并这个PR之前,先完善脚本部分的实现,以确保新功能能够正常工作。

为了验证新属性的使用情况,请运行以下脚本:

✅ Verification successful

验证通过wd-curtain 组件的新属性已在多个地方正确使用,符合 PR 的目标。

  • src/pages/curtain/Index.vue 中,多个实例传递了新属性如 :custom-class:custom-styleclose-position,确保了组件的灵活性和可配置性。
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 描述:检查 wd-curtain 组件的使用情况,特别是新属性的使用

# 测试:搜索 wd-curtain 组件的使用,预期会看到新属性的使用示例
rg --type vue 'wd-curtain' -A 10 -g '!*/wd-curtain/*'

Length of output: 81


Script:

#!/bin/bash
# 描述:重新检查 wd-curtain 组件的使用情况,修正文件类型识别错误

# 测试:搜索 wd-curtain 组件的使用,预期会看到新属性的使用示例
rg 'wd-curtain' -A 10 -g '*.vue' -g '!*/wd-curtain/*'

Length of output: 5443

docs/component/curtain.md (1)

111-113: 总体评价:文档更新符合PR目标,增强了组件功能

新增的三个属性(close-icon-nameclose-icon-sizeclose-icon-color)很好地实现了PR的目标,允许用户自定义关闭按钮的图标、大小和颜色。这些更改增强了组件的灵活性和可用性。

建议采取以下后续步骤:

  1. 修复已指出的格式问题,确保使用空格而不是硬标签来对齐表格列。
  2. 考虑添加一个使用这些新属性的示例代码,以帮助用户更好地理解如何使用这些新功能。
  3. 确保组件的实现代码已更新以支持这些新属性。
  4. 更新相关的单元测试以覆盖这些新属性。

请运行以下脚本来验证组件实现是否已更新:

🧰 Tools
🪛 Markdownlint

112-112: Column: 39
Hard tabs

(MD010, no-hard-tabs)


112-112: Column: 43
Hard tabs

(MD010, no-hard-tabs)


113-113: Column: 40
Hard tabs

(MD010, no-hard-tabs)


113-113: Column: 44
Hard tabs

(MD010, no-hard-tabs)

src/pages/curtain/Index.vue (1)

Line range hint 1-138: 总体实现很棒,新功能集成得很好!

整体来看,新增的自定义图标功能实现得很好,与现有代码结构保持了一致性。主要亮点包括:

  1. 新增的演示块清晰地展示了新功能。
  2. wd-curtain 组件的新属性正确实现了自定义图标的功能。
  3. 新增的响应式变量和方法与现有模式保持一致。

建议的小改进主要集中在增强代码的可读性和灵活性上,这些小改动可以进一步提升代码质量。

src/uni_modules/wot-design-uni/components/wd-button/index.scss (1)

Line range hint 1-424: 总体评价:代码改动合理,提升了用户体验

这次的改动虽然很小,但是通过为按钮的激活状态添加圆角,提升了用户交互的视觉反馈。这个改动与组件的整体设计风格保持一致,有助于改善用户体验。

除了之前提到的使用变量来定义border-radius值的建议外,没有发现其他需要修改的地方。整个文件的结构良好,样式定义清晰,遵循了组件库的设计规范。

@@ -108,6 +108,9 @@ function handleClose() {
| close-position | 关闭按钮位置 | string | inset / top / bottom / top-left / top-right / bottom-left / bottom-right | inset | - |
| close-on-click-modal | 点击遮罩是否关闭 | boolean | - | false | - |
| hide-when-close | 是否当关闭时将弹出层隐藏(display: none) | boolean | - | true | - |
| close-icon-name | 关闭按钮图标 | string | close-outline / close | close-outline | - |
| close-icon-size | 图标的字体大小 | string | - | inherit | - |
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

新属性 close-icon-size 是个很好的补充

这个属性很好地补充了 close-icon-name,为用户提供了更多的自定义选项。描述简洁明了。

但是,这一行存在格式问题。请修复硬标签(hard tabs)的使用,改用空格来保持一致性。例如:

| close-icon-size | 图标的字体大小 | string | - | inherit | - |
🧰 Tools
🪛 Markdownlint

112-112: Column: 39
Hard tabs

(MD010, no-hard-tabs)


112-112: Column: 43
Hard tabs

(MD010, no-hard-tabs)

@@ -108,6 +108,9 @@ function handleClose() {
| close-position | 关闭按钮位置 | string | inset / top / bottom / top-left / top-right / bottom-left / bottom-right | inset | - |
| close-on-click-modal | 点击遮罩是否关闭 | boolean | - | false | - |
| hide-when-close | 是否当关闭时将弹出层隐藏(display: none) | boolean | - | true | - |
| close-icon-name | 关闭按钮图标 | string | close-outline / close | close-outline | - |
| close-icon-size | 图标的字体大小 | string | - | inherit | - |
| close-icon-color | 图标的字体颜色 | string | - | inherit | - |
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

新属性 close-icon-color 进一步增强了自定义选项

这个属性很好地补充了之前的两个新属性,为用户提供了全面的关闭图标自定义选项。描述简洁明了。

但是,这一行也存在格式问题。请修复硬标签(hard tabs)的使用,改用空格来保持一致性。例如:

| close-icon-color | 图标的字体颜色 | string | - | inherit | - |

为了更好地展示这些新属性的使用,我建议在文档中添加一个示例。您需要我为您生成一个使用这些新属性的示例代码吗?

🧰 Tools
🪛 Markdownlint

113-113: Column: 40
Hard tabs

(MD010, no-hard-tabs)


113-113: Column: 44
Hard tabs

(MD010, no-hard-tabs)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant