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 幕帘属性,支持使用其他图标 #646

Closed
wants to merge 5 commits into 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,并澄清了hide-when-close属性的默认值。
    • Index.vue中增加了一个新的演示块,允许自定义关闭图标。
  • 样式

    • 为按钮组件的活动状态添加了新的样式规则,增加了圆角效果。
  • 文档

    • 更新了文档中的HTML和TypeScript示例,以展示新属性的使用。
    • 扩展了属性和事件表,包含新属性的描述和默认值。

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:28am

Copy link

coderabbitai bot commented Oct 9, 2024

Caution

Review failed

The pull request is closed.

Walkthrough

本次更改主要集中在 wd-curtain 组件的文档和实现上。文档更新了新属性 close-icon-nameclose-icon-sizeclose-icon-color,并澄清了现有属性 hide-when-close 的默认值。此外,Index.vue 文件中增加了一个自定义图标的演示块,展示了如何使用新属性。types.ts 文件中添加了新的类型和属性以支持这些更改,而 wd-curtain.vue 文件更新了模板和脚本部分以实现新的自定义选项。最后,index.scss 文件对按钮的活动状态进行了样式调整。

Changes

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

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Curtain
    participant Button

    User->>Button: 点击自定义图标按钮
    Button->>Curtain: 触发 handleClick9()
    Curtain->>Curtain: 更新 value9 为 true
    Curtain->>User: 显示 wd-curtain 组件
    User->>Curtain: 点击关闭图标
    Curtain->>Button: 触发 handleClose9()
    Curtain->>Curtain: 更新 value9 为 false
    Curtain->>User: 隐藏 wd-curtain 组件
Loading

Possibly related PRs

Suggested reviewers

  • Moonofweisheng

Poem

🐰在幕布后,图标闪亮,
新属性来,功能更强。
关闭按钮,色彩多样,
点击一下,快乐无量!
兔子欢跳,庆祝这场! 🌟


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 e5c9920
🔍 Latest deploy log https://app.netlify.com/sites/wot-design-uni/deploys/67063e4c7cd4e9000860fc78
😎 Deploy Preview https://deploy-preview-646--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 (8)
src/uni_modules/wot-design-uni/components/wd-curtain/types.ts (1)

36-48: 新增属性很好地支持了关闭图标的自定义

新增的 closeIconNamecloseIconSizecloseIconColor 属性很好地支持了关闭图标的自定义需求。使用新定义的 CloseIconName 类型和默认值 'close-outline' 保证了向后兼容性。每个新属性都有清晰的注释说明其用途。

建议:
为了提高代码的类型安全性,建议为 closeIconSizecloseIconColor 添加具体的类型注解,例如:

closeIconSize: String as PropType<string>,
closeIconColor: String as PropType<string>

这样可以更明确地指定这些属性期望的类型。

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

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

新增的 closeIconNamecloseIconSizecloseIconColor 属性增强了组件的灵活性,使其能够适应不同的设计需求。这些更改与PR的目标完全一致。

为了进一步提高可读性,建议将 custom-class 属性移到新的一行:

<wd-icon
  :name="closeIconName"
  :size="closeIconSize"
  :color="closeIconColor"
  :custom-class="`wd-curtain__content-close ${closePosition}`"
  @click="close"
/>

这样可以使每个属性都在单独的一行上,提高代码的清晰度。


Line range hint 1-224: 总体而言,这些更改很好地实现了PR的目标

  1. 成功实现了自定义关闭图标的功能,解决了原有圆形关闭图标在白色背景下不易见的问题。
  2. 新增的属性(closeIconNamecloseIconSizecloseIconColor)提高了组件的灵活性和可定制性。
  3. 核心功能保持不变,确保了向后兼容性。
  4. 新导入的工具函数和Vue特性为未来的优化铺平了道路。

建议考虑以下几点来进一步完善组件:

  1. 利用新导入的 computed 函数创建计算属性,可能可以优化一些现有的逻辑。
  2. 使用 addUnitobjToStyle 函数来增强样式处理,特别是在 computeImgStyle 函数中。
  3. 考虑为新增的属性添加默认值,以提高组件的易用性。

这些建议可以在未来的迭代中逐步实施,进一步提升组件的性能和开发体验。

docs/component/curtain.md (4)

111-111: 新属性 close-icon-name 添加正确,但需要更新版本号

新增的 close-icon-name 属性很好地支持了自定义关闭按钮图标的功能。这与PR的目标相符,增强了组件的灵活性。

请将 $LOWEST_VERSION$ 替换为实际的最低支持版本号。这将帮助用户了解从哪个版本开始可以使用这个新特性。


112-112: 新属性 close-icon-size 添加正确,但存在格式问题

新增的 close-icon-size 属性很好地支持了自定义关闭图标大小的功能,这与PR的目标相符,进一步增强了组件的可定制性。

请将该行中的硬标签(Tab)替换为空格,以保持文档格式的一致性。建议使用4个空格进行缩进。例如:

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


113-113: 新属性 close-icon-color 添加正确,但存在格式问题

新增的 close-icon-color 属性很好地支持了自定义关闭图标颜色的功能,这与PR的目标相符,进一步增强了组件的可定制性。

请将该行中的硬标签(Tab)替换为空格,以保持文档格式的一致性。建议使用4个空格进行缩进。例如:

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


111-113: 总体评价:新属性添加有效,文档更新清晰

新增的三个属性 close-icon-nameclose-icon-sizeclose-icon-color 很好地实现了PR的目标,允许用户自定义关闭图标的样式。文档的更新清晰明了,与现有格式保持一致。

为进一步提高文档质量,建议:

  1. 统一使用空格而非硬标签(Tab)进行缩进。
  2. close-icon-name 属性指定具体的最低支持版本号,替换 $LOWEST_VERSION$ 占位符。
  3. 考虑在文档的"基本用法"或"修改关闭按钮位置"部分添加一个使用这些新属性的示例,以帮助用户更好地理解如何使用这些新功能。

这些小改进将使文档更加完善和用户友好。

🧰 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/uni_modules/wot-design-uni/components/wd-button/index.scss (1)

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

这个改动为按钮的活动状态添加了圆角效果,提升了视觉体验。然而,我有以下建议和疑问:

  1. 为了提高可维护性,建议使用一个SCSS变量来定义border-radius值,而不是直接使用硬编码的6px。这样可以在未来更容易地统一修改所有相关的圆角值。

  2. 这个改动似乎与PR的主要目标(Curtain组件和自定义图标)没有直接关系。能否解释一下这个改动与PR整体目标的关联性?

建议将代码修改为:

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

&:active::before {
  opacity: 0.15;
  border-radius: $button-active-border-radius;
}

这样可以在文件顶部或相关的变量文件中定义$button-active-border-radius,使得样式更易于管理和调整。

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

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

📒 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 (2 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 (3)
src/uni_modules/wot-design-uni/components/wd-curtain/types.ts (1)

5-5: 新增 CloseIconName 类型定义符合需求

新增的 CloseIconName 类型定义很好地支持了使用其他图标的需求。类型导出正确,命名约定与现有的 ClosePosition 类型保持一致。

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

21-23: 新增的自定义图标功能实现正确

新增的演示块和 wd-curtain 组件的实现符合预期,正确地展示了自定义关闭图标的功能。代码结构清晰,与现有代码风格一致。

Also applies to: 41-50


64-64: 脚本部分的更改正确实现了新功能

新增的响应式引用 value9 和方法 handleClick9handleClose9 正确实现了自定义图标功能的状态管理,与现有代码结构保持一致。

Also applies to: 116-121

Comment on lines 48 to 49
import { addUnit, objToStyle } from '../common/util'
import { computed, ref, watch, type CSSProperties } from 'vue'
Copy link

Choose a reason for hiding this comment

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

💡 Codebase verification

新导入的内容未在组件中使用,请检查是否需要这些导入。如果不需要,请移除它们以优化代码。

🔗 Analysis chain

导入的更新增强了组件的功能,很好!

新增的 addUnitobjToStyle 工具函数以及 CSSProperties 类型的导入表明了对样式处理的改进。同时,导入 computed 函数暗示可能会使用计算属性来优化组件逻辑。

为了确保这些新导入的充分利用,请确认:

  1. addUnitobjToStyle 函数在组件中的使用位置。
  2. CSSProperties 类型是否用于类型注解。
  3. 是否计划添加新的计算属性。

可以运行以下脚本来验证这些导入的使用情况:


请运行以下脚本以验证新导入的内容在组件中的实际使用情况:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 检查新导入的使用情况
echo "Checking usage of new imports:"
rg "addUnit|objToStyle|CSSProperties|computed" src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue

Length of output: 354


Script:

# 检查 `addUnit` 和 `objToStyle` 的使用情况
rg 'addUnit\(|objToStyle\(' src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue

# 检查 `CSSProperties` 类型的使用情况,排除导入语句
rg 'CSSProperties' src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue | grep -v 'import'

# 检查 `computed` 的使用情况,排除导入语句
rg 'computed\(' src/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue | grep -v 'import'

Length of output: 304

@@ -48,6 +61,7 @@ const value5 = ref<boolean>(false)
const value6 = ref<boolean>(false)
const value7 = ref<boolean>(false)
const value8 = ref<boolean>(false)
const value9 = ref<boolean>(false)
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

建议重构重复代码

当前实现中,每个 curtain 实例都有独立的 valuehandleClickhandleClose 方法,导致了大量重复代码。建议考虑重构,使用一个通用的状态管理方法来处理所有 curtain 实例,这样可以显著减少代码重复并提高可维护性。

例如,可以考虑使用一个对象来管理所有 curtain 的状态,并使用一个通用的方法来处理打开和关闭操作。

以下是一个可能的重构方案:

interface CurtainState {
  [key: string]: boolean;
}

const curtainStates = reactive<CurtainState>({
  curtain1: false,
  curtain2: false,
  // ... 其他 curtain
  curtain9: false
});

function handleCurtainToggle(curtainKey: string) {
  curtainStates[curtainKey] = !curtainStates[curtainKey];
}

然后在模板中可以这样使用:

<wd-button @click="handleCurtainToggle('curtain9')">关闭图标自定义</wd-button>

<wd-curtain
  :value="curtainStates.curtain9"
  :src="img"
  :to="link"
  closeIconName="close"
  closeIconSize="20"
  closeIconColor="red"
  @close="handleCurtainToggle('curtain9')"
  :width="280"
></wd-curtain>

这种方法可以大大减少重复代码,使得添加新的 curtain 实例变得更加简单和一致。

Also applies to: 116-121

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