feat(virtual-scroll): add virtual-scroll component
PR
PR Checklist
Please check if your PR fulfills the following requirements:
- [x] The commit message follows our Commit Message Guidelines
- [ ] Tests for the changes have been added (for bug fixes / features)
- [ ] Docs have been added / updated (for bug fixes / features)
PR Type
What kind of change does this PR introduce?
- [ ] Bugfix
- [x] Feature
- [ ] Code style update (formatting, local variables)
- [ ] Refactoring (no functional changes, no api changes)
- [ ] Build related changes
- [ ] CI related changes
- [ ] Documentation content changes
- [ ] Other... Please describe:
What is the current behavior?
Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?
- [x] Yes
- [ ] No
Other information
Summary by CodeRabbit
-
New Features
- Added a new virtual scroll component for Vue applications to enhance performance with large datasets.
- Introduced task configuration for TypeScript builds in Visual Studio Code.
-
Updates
- Integrated
VirtualScrollandVirtualScrollPcin modules to improve desktop interface functionality. - Updated dependencies to include
@opentiny/vue-virtual-scroll.
- Integrated
-
Enhancements
- Improved component import and export structures for better modularity and maintainability.
- Enhanced style management with new LESS files for virtual scrolling.
[!IMPORTANT]
Review skipped
Auto reviews are disabled on base/target branches other than the default branch.
Base branches to auto review (1)
- release-*
Please check the settings in the CodeRabbit UI or the
.coderabbit.yamlfile in this repository. To trigger a single review, invoke the@coderabbitai reviewcommand.You can disable this status message by setting the
reviews.review_statustofalsein the CodeRabbit configuration file.
Walkthrough
The changes introduce a robust virtual scrolling feature to the Vue project, enhancing component interactions and overall performance. Key updates include the addition of the VirtualScroll component, modifications to templates and imports, and improvements to build configurations. Renderless functions have also been refined to better manage state and user interactions, enabling a more efficient and responsive development experience.
Changes
| Files | Change Summary |
|---|---|
examples/sites/demos/pc/app/tree/basic-usage.vue |
Added VirtualScroll component, modified template structure, and updated imports. |
packages/modules.json |
Removed TreeSelectPc, added entries for VirtualScroll and VirtualScrollPc. |
packages/renderless/src/virtual-scroll/index.ts |
Introduced utility functions for managing user data and UI in a virtual scroll context. |
packages/renderless/src/virtual-scroll/vue.ts |
Added a renderless function for state and service management within Vue applications. |
packages/vue/package.json |
Included @opentiny/vue-virtual-scroll in the project dependencies. |
packages/vue/src/virtual-scroll/index.ts |
Defined the VirtualScroll component, including installation and version handling. |
packages/vue/src/virtual-scroll/src/index.ts |
Implemented main logic for the virtual scroll component, with props and conditional rendering. |
packages/vue/src/virtual-scroll/src/pc.vue |
Developed a Vue component for virtual scrolling, defining events and props for user interaction. |
packages/theme/src/virtual-scroll/index.less |
Created an empty index.less file with a comment to disable stylelint for empty sources. |
packages/theme/src/virtual-scroll/vue.less |
Introduced an empty vue.less file with a comment to disable stylelint for empty sources. |
Sequence Diagram(s)
sequenceDiagram
participant User
participant UI as UI Component
participant VirtualScroll as VirtualScroll Component
participant Renderless as Renderless Logic
User ->> UI: Scrolls Content
UI ->> VirtualScroll: Update Scroll Position
VirtualScroll ->> Renderless: Fetch Data
Renderless -->> VirtualScroll: Return Data
VirtualScroll ->> UI: Render New Data
UI -->> User: Display Updated Content
Poem
In lines of code where features scroll,
Virtual lists now take control.
Components blend, templates adjust,
In Vue, we place our trust.
Smooth and swift, the data flows,
Enhancing all, as usage grows.
🌟🍃
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?
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>.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
@coderabbitaiin 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
@coderabbitaiin 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 show all the console.log statements in this repository.@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 as PR comments)
@coderabbitai pauseto pause the reviews on a PR.@coderabbitai resumeto resume the paused reviews.@coderabbitai reviewto trigger an incremental review. This is useful when automatic reviews are disabled for the repository.@coderabbitai full reviewto do a full review from scratch and review all the files again.@coderabbitai summaryto regenerate the summary of the PR.@coderabbitai resolveresolve all the CodeRabbit review comments.@coderabbitai configurationto show the current CodeRabbit configuration for the repository.@coderabbitai helpto get help.
Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile 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.
[e2e-test-warn] The component to be tested is missing.
The title of the Pull request should look like "fix(vue-renderless): [action-menu, alert] fix xxx bug".
Please make sure you've read our contributing guide
@necoxrr 虚拟滚动是一个新组件,先参考这个文档,走通组件流程,确保执行 pnpm site 命令之后,打开的本地网站左侧组件导航能看到这个组件,并且可以看到组件的demo/api文档。
请参考:增加新组件的步骤
Bot detected the issue body's language is not English, translate it automatically.
@necoxrr Virtual scrolling is a new component. Please refer to this document first, go through the component process, and ensure that after executing the pnpm site command, you can see this component in the left component navigation of the opened local website, and you can see the component's demo/ api documentation.
[Steps to add new components](https://github.com/opentiny/tiny-vue/wiki/%E5%A2%9E%E5%8A%A0%E6%96%B0%E7%BB%84%E4 %BB%B6%E7%9A%84%E6%AD%A5%E9%AA%A4)