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: ✨ 新增Tour引导操作组件 #608

Closed
wants to merge 5 commits into from

Conversation

Wangxq0614
Copy link

@Wangxq0614 Wangxq0614 commented Sep 17, 2024

用于引导用户了解产品功能的气泡组件

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

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

🔗 相关 Issue

💡 需求背景和解决方案

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

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

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

Summary by CodeRabbit

  • 新功能

    • 引入了“导览”组件,为用户提供互动式引导体验,帮助理解产品功能。
    • 新增“导览”页面,扩展应用的导航结构。
    • 在输入数字组件中新增adjustPosition属性,允许开发者控制键盘显示时页面位置的自动调整。
    • 更新了上传组件的before-preview功能,新增file参数,提供更详细的文件处理信息。
  • 文档

    • 更新了文档,详细说明导览组件的用法、样式和配置选项。
    • 更新了输入数字组件和上传组件的文档,增加了新属性和参数的说明。
  • 样式

    • 添加了导览组件的样式文件,提升视觉效果和用户体验。

用于引导用户了解产品功能的气泡组件
Copy link

vercel bot commented Sep 17, 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 Sep 18, 2024 6:15am

Copy link

netlify bot commented Sep 17, 2024

Deploy Preview for wot-design-uni ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 3379105
🔍 Latest deploy log https://app.netlify.com/sites/wot-design-uni/deploys/66ea6f9c6f1e6c0008036f24
😎 Deploy Preview https://deploy-preview-608--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 bot commented Sep 17, 2024

Walkthrough

此次更改引入了多个组件的文档和功能更新,包括新增的Tour组件以提供用户引导体验,input-number组件的adjustPosition属性,以及upload组件中before-preview函数的参数更新。这些改动扩展了应用程序的功能,增强了用户交互和组件的灵活性。

Changes

文件路径 更改摘要
docs/component/input-number.md 添加了adjustPosition属性的文档,控制键盘显示时页面位置的自动调整。
docs/component/tour.md 添加了关于“Tour”组件的文档,介绍了其功能、样式定制和事件处理。
docs/component/upload.md 更新了before-preview函数的参数列表,新增file参数,提供了关于预览文件的更多上下文信息。
src/pages.json src/pages.json中添加了新的“tour”页面条目,扩展了应用程序的导航结构。
src/pages/index/Index.vue Index.vue文件的list数组中添加了新的“tour 引导”条目。
src/pages/upload/Index.vue 修改了beforePreview函数,新增file参数以增强预览确认的能力。
src/uni_modules/wot-design-uni/components/wd-input-number/types.ts 新增adjustPosition属性到inputNumberProps对象,控制页面在键盘显示时的自动调整。
src/uni_modules/wot-design-uni/components/wd-input-number/wd-input-number.vue wd-input-number组件中添加:adjust-position属性绑定,增强组件的灵活性。
src/uni_modules/wot-design-uni/components/wd-upload/types.ts 修改UploadBeforePreviewOption类型,新增file属性以提供更详细的文件处理上下文。
src/uni_modules/wot-design-uni/components/wd-upload/wd-upload.vue 在多个函数中新增file参数,增强文件预览处理逻辑。
src/uni_modules/wot-design-uni/components/wd-loadmore/wd-loadmore.vue 修改了<text>元素的关闭标签格式,移除了多余的空格。

Possibly related PRs

Suggested reviewers

  • 暂无建议的审阅者。

Poem

🐰 在兔子洞里欢跳跃,
新的引导让人乐无边。
互动气泡闪亮亮,
功能展示真奇妙!
跟随步伐不迷路,
兔子带你乐无穷!
🌟


Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between e4acfe9 and 3379105.

Files selected for processing (10)
  • docs/component/input-number.md (1 hunks)
  • docs/component/upload.md (2 hunks)
  • src/pages.json (1 hunks)
  • src/pages/index/Index.vue (1 hunks)
  • src/pages/upload/Index.vue (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-input-number/types.ts (2 hunks)
  • src/uni_modules/wot-design-uni/components/wd-input-number/wd-input-number.vue (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-loadmore/wd-loadmore.vue (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-upload/types.ts (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-upload/wd-upload.vue (4 hunks)
Files skipped from review due to trivial changes (1)
  • src/uni_modules/wot-design-uni/components/wd-loadmore/wd-loadmore.vue
Files skipped from review as they are similar to previous changes (2)
  • src/pages.json
  • src/pages/index/Index.vue
Additional comments not posted (10)
src/uni_modules/wot-design-uni/components/wd-input-number/types.ts (1)

69-73: LGTM!

新增的 adjustPosition 属性为组件提供了更多的灵活性,允许开发者根据具体需求控制键盘弹出时页面位置的自动调整行为。该属性使用 makeBooleanProp 函数正确地声明为布尔类型,默认值为 true,确保了向后兼容性。同时,注释清晰地说明了该属性的用途。

docs/component/input-number.md (1)

119-119: 文档更新正确无误!

新增的 adjustPosition 属性文档说明清晰,默认值设置合理。使用 $LOWEST_VERSION$ 占位符标记未来版本引入该属性的做法正确。

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

14-14: 看起来不错!

添加 :adjust-position 属性绑定到 <input> 元素,可以根据 adjustPosition 属性的值动态调整输入框的位置。这增强了组件的灵活性,允许根据需要调整输入框的位置。

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

Line range hint 129-138: 修改看起来不错!

添加新的 file 参数可以在预览确认的上下文中增强函数处理或处理文件的能力。这为基于被预览文件实现更详细的逻辑或检查提供了可能性。总体控制流保持不变,因此该修改不太可能引入任何错误或问题。

src/uni_modules/wot-design-uni/components/wd-upload/types.ts (1)

Line range hint 67-71: LGTM!新增的 file 属性很有用。

通过在 UploadBeforePreviewOption 中新增 file 属性,开发者可以在预览前获取到更多关于文件的上下文信息。这使得在生成预览之前,可以方便地对文件进行额外的验证或操作。这个改动增强了文件上传相关的功能,让处理预览选项时能够直接访问文件对象。

src/uni_modules/wot-design-uni/components/wd-upload/wd-upload.vue (4)

567-567: 增强了预览处理逻辑的上下文信息。

通过在传递给 beforePreview 回调的对象中包含 file 参数,预览处理逻辑现在可以访问正在预览的特定文件。这可以方便在显示文件之前执行与该文件相关的额外操作或检查。file 属性的添加增强了预览过程中可用的上下文信息,有可能改善用户体验和功能。


624-624: 增强了预览处理逻辑的上下文信息。

通过在传递给 beforePreview 回调的对象中包含 file 参数,预览处理逻辑现在可以访问正在预览的特定文件。这可以方便在显示文件之前执行与该文件相关的额外操作或检查。file 属性的添加增强了预览过程中可用的上下文信息,有可能改善用户体验和功能。


649-649: 增强了预览处理逻辑的上下文信息。

通过在传递给 beforePreview 回调的对象中包含 file 参数,预览处理逻辑现在可以访问正在预览的特定文件。这可以方便在显示文件之前执行与该文件相关的额外操作或检查。file 属性的添加增强了预览过程中可用的上下文信息,有可能改善用户体验和功能。


669-669: 增强了预览处理逻辑的上下文信息。

通过在传递给 beforePreview 回调的对象中包含 file 参数,预览处理逻辑现在可以访问正在预览的特定文件。这可以方便在显示文件之前执行与该文件相关的额外操作或检查。file 属性的添加增强了预览过程中可用的上下文信息,有可能改善用户体验和功能。

docs/component/upload.md (1)

102-102: 文档和代码保持一致,很好地反映了 before-preview 钩子的签名变更。

添加 file 参数增强了 before-preview 钩子的功能,允许开发人员访问正在预览的文件的属性。这为基于文件属性实现额外逻辑提供了更多的上下文。

Also applies to: 591-591


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 generate interesting stats about this repository and render them as a table.
    -- @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

@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

Outside diff range and nitpick comments (1)
src/uni_modules/wot-design-uni/components/wd-tour/wd-tour.vue (1)

98-119: 考虑优化错误处理

setPopupStyles 方法中,对于可能出现的错误,目前只是使用 console.error 进行了输出。建议对错误进行更细致的处理,例如:

  • 对不同类型的错误进行区分和提示,帮助开发者快速定位问题。
  • 在生产环境下,可以考虑降级处理,避免影响用户体验。
  • 可以将错误信息记录到日志系统,方便后续问题排查。
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between cae2e56 and e4acfe9.

Files selected for processing (7)
  • docs/component/tour.md (1 hunks)
  • src/pages.json (2 hunks)
  • src/pages/index/Index.vue (1 hunks)
  • src/pages/tour/Index.vue (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-tour/index.scss (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-tour/types.ts (1 hunks)
  • src/uni_modules/wot-design-uni/components/wd-tour/wd-tour.vue (1 hunks)
Additional comments not posted (23)
src/pages/tour/Index.vue (3)

4-11: 示例清晰展示了Tour组件的基本用法。

该示例通过一个按钮点击触发Tour引导,并通过show1状态变量控制Tour的显示和隐藏。Tour的步骤定义在steps1数组中,包含了正确的属性配置。


13-24: 示例很好地展示了Tour组件的样式定制功能。

该示例通过设置bgColor属性自定义了Tour的背景颜色,并通过content插槽和contentStyle属性自定义了提示内容的样式。这为用户提供了灵活的样式定制选项,以满足不同的设计需求。


26-38: 示例完整展示了Tour组件的多步骤引导功能。

该示例定义了两个引导步骤,分别通过target属性指定了不同的目标元素。这种方式可以引导用户按照特定的顺序了解页面的不同部分和功能。示例中还通过popupStyle属性自定义了提示框的样式,以适应不同的设计需求。

src/uni_modules/wot-design-uni/components/wd-tour/types.ts (4)

7-7: 类型定义正确

TTourType 类型定义正确,涵盖了引导组件的两种模式:'step' 和 'card'。导出该类型以便在代码库的其他部分使用是一个很好的实践。


12-29: 接口定义完整

IStepOptions 接口定义完整,涵盖了配置引导步骤所需的属性。其中:

  • target 属性支持字符串选择器和 Element 对象,提供了灵活性。
  • content 属性是可选的,允许存在没有内容的步骤。
  • 自定义样式属性 contentStylepopupStyle 允许对步骤进行细粒度的样式设置。

接口的设计考虑周全,非常适合引导组件的使用场景。


35-42: 接口定义合理

IRect 接口以结构化的方式表示元素的尺寸和位置,其中:

  • 泛型类型参数 T 允许值类型(数字或字符串)的灵活性。
  • 所有属性都是可选的,允许部分尺寸/位置定义。

接口的设计合理,可以满足各种场景下表示元素尺寸和位置的需求。


44-120: 组件属性定义完善

tourOptions 常量包含了引导组件的所有属性定义,其中:

  • 使用了 ../common/props 中的 baseProps,并定义了引导组件特有的其他属性。
  • 属性名描述清晰,遵循一致的命名约定。
  • 使用 Vue 的 PropType 工具类型正确定义了属性类型。
  • 为可选属性提供了默认值,确保组件有合理的默认行为。

属性定义完善,涵盖了引导组件的各种配置需求,非常适合组件的使用场景。

src/uni_modules/wot-design-uni/components/wd-tour/index.scss (5)

4-17: 很棒的 mixin!

这个 mixin 提供了一种可重用的方式来定位元素的伪元素在底部。它允许自定义水平位置(左侧或右侧)和偏移量,使用条件语句根据提供的参数应用适当的样式。mixin 的逻辑和语法都没有明显的问题。


19-34: 很好的深色主题样式!

这些样式为 wd-tour 组件提供了一个深色主题变体。它们将文本颜色更改为较浅的阴影以获得更好的对比度,调整遮罩元素的阴影以创建更暗的叠加层,将弹出元素的背景色更改为较暗的阴影,并更新箭头的边框颜色以匹配较暗的背景。样式的语法和属性没有明显的问题。


37-45: 遮罩元素样式没问题!

这些样式将元素定位为固定的,以覆盖整个视口。它有一个透明的背景,允许下面的内容可见。高 z-index 确保元素显示在其他内容之上。样式的语法和属性没有明显的问题。


46-81: 弹出元素样式看起来不错!

这些样式将弹出元素定位为固定的,具有高 z-index,以显示在其他内容之上。它有一个白色背景和圆角。箭头使用 ::before 伪元素创建,并根据修饰符类定位在不同的位置。箭头的边框颜色设置为与弹出框的背景色相匹配。position-bottom mixin 用于将箭头定位在左侧和右侧位置的底部。样式的语法、属性和修饰符使用没有明显的问题。


93-124: 内容元素样式没有问题!

这些样式设置内容元素的显示、内边距、外边距、字体大小和对齐方式。顶部内容右对齐,当有标题时具有底部外边距。内部内容具有外边距和较小的字体大小,当有标题时没有外边距。底部内容具有顶部外边距,并使用 flexbox 进行对齐和间距。bottom-init 内容具有水平外边距。bottom-operate 内容使用 flexbox 进行对齐,元素之间有间隙。样式的语法、属性和修饰符使用没有明显的问题。

docs/component/tour.md (6)

7-28: 文档说明清晰,示例代码恰当。

该部分对 Tour 组件的基本用法进行了清晰的说明,提到了 target 属性应设置为目标元素的 id。同时,针对微信小程序的特殊性给出了很好的提示。示例代码也很好地演示了基本的组件设置。


39-54: 类型说明准确,示例代码恰当。

该部分对引导类型 stepcard 进行了清晰的说明。同时提到无论使用哪种类型,基本数据类型需要保持一致,这一点很重要。示例代码也很好地展示了两种类型的区别。


56-90: 自定义样式说明清晰,示例代码恰当。

该部分对如何使用 popupStylecontentStyle 自定义每个步骤的样式进行了清晰的说明。同时提到开发者应避免覆盖默认的必要参数,这一点很有帮助。示例代码也很好地演示了自定义样式的用法。


92-113: 自定义内容说明清晰,示例代码恰当。

该部分对如何使用 slot 插槽自定义气泡弹出层内容进行了清晰的说明。示例代码也很好地演示了自定义内容的用法。


115-133: 组件属性列表完整,说明详细。

该部分以表格的形式列出了 Tour 组件的所有属性。每个属性都有说明、类型、可选值、默认值和最低版本的详细信息。表格格式清晰易读。


134-164: 数据格式、插槽、事件和外部样式类列表完整,说明详细。

这些部分以表格的形式列出了 Tour 组件的 steps 属性的数据格式、可用插槽、事件和外部样式类。每个项目都有详细的说明和最低版本信息。表格格式清晰易读。

src/uni_modules/wot-design-uni/components/wd-tour/wd-tour.vue (3)

1-65: 模板结构清晰,逻辑合理

模板部分的结构和逻辑都很清晰,通过条件渲染和样式绑定实现了引导步骤的显示和定位。以下是一些细节:

  • 根元素绑定了 class 和 touchmove 事件以防止滚动。
  • 使用 v-show 指令控制遮罩层和弹出层的显示。
  • 通过 v-for 指令渲染引导步骤,并根据当前步骤的索引进行条件渲染。
  • 弹出层的位置和对齐方式通过样式绑定动态设置。
  • 提供了自定义内容和按钮的插槽。

总体而言,模板部分的实现很好,没有明显的问题。


67-179: 使用 Composition API,逻辑清晰

脚本部分使用了 Vue 3 的 Composition API 和 script setup 语法,代码结构清晰,逻辑易于理解。以下是一些细节:

  • 通过 definePropsdefineEmits 函数定义了组件的 props 和 emits。
  • 使用 ref 函数定义了响应式状态变量。
  • 使用 computed 函数定义了计算属性。
  • 定义了计算弹出层位置和处理用户交互的方法。
  • 使用侦听器响应 modelValue prop 的变化。

总体而言,脚本部分的实现很好,代码可读性和可维护性较高。


181-183: 样式引入方式合理

样式部分使用了 SCSS 语法,并通过 @import 语句引入了外部的样式文件。这种方式可以使组件的样式与结构和逻辑分离,提高代码的可维护性。

src/pages.json (1)

755-764: 代码没有问题!

新增的"tour"页面配置正确无误,包括:

  • 页面路径和名称设置恰当。
  • 样式配置禁用了垂直方向的回弹滚动,并设置了导航栏标题文本。
  • 整体结构和值都没有明显问题。

添加这个新页面有效地扩展了应用程序的导航结构。

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

292-295: 看起来不错!

新增的 tour 条目与现有的 list 数组结构一致,表明正在引入一个新的"引导"功能。这个改动是合理的。

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.

3 participants