-
Notifications
You must be signed in to change notification settings - Fork 338
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
fix: jsx slot modelvalue can't update value #734
fix: jsx slot modelvalue can't update value #734
Conversation
WalkthroughThe recent changes enhance the Vue generator's functionality by introducing a new hook for handling JSX model value updates and integrating this with the existing attribute generation process. Additionally, the ESLint configuration has been modularized for better rule management. These modifications collectively aim to refine the codebase's maintainability and responsiveness to user interactions. Changes
Assessment against linked issues
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? TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Additionally, you can add CodeRabbit Configuration File (
|
There was a problem hiding this 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
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (3)
- packages/vue-generator/.eslintrc.cjs (2 hunks)
- packages/vue-generator/src/generator/vue/sfc/genSetupSFC.js (2 hunks)
- packages/vue-generator/src/generator/vue/sfc/generateAttribute.js (1 hunks)
Additional comments not posted (3)
packages/vue-generator/.eslintrc.cjs (1)
1-1
: Modularize ESLint configuration.The inclusion of external
rules
in the ESLint configuration enhances modularity and maintainability. The trailing comma inignorePatterns
ensures consistency.Also applies to: 22-23
packages/vue-generator/src/generator/vue/sfc/genSetupSFC.js (1)
22-23
: Enhance JSX model value handling.The addition of
handleJsxModelValueUpdate
todefaultAttributeHook
enhances the handling of JSX model value updates, aligning with the PR's objectives.Also applies to: 217-217
packages/vue-generator/src/generator/vue/sfc/generateAttribute.js (1)
518-547
: Implement automatic JSX model value updates.The
handleJsxModelValueUpdate
function effectively manages automatic binding foronUpdate:modelValue
, ensuring proper updates in JSX contexts.Verify the integration with existing components to ensure compatibility.
Verification successful
Integration of
handleJsxModelValueUpdate
verified in Vue SFC setupThe
handleJsxModelValueUpdate
function is referenced ingenSetupSFC.js
, indicating its integration in the Vue single file component setup process. This suggests compatibility with existing components using JSX.
- File References:
packages/vue-generator/src/generator/vue/sfc/genSetupSFC.js
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the integration of `handleJsxModelValueUpdate` with existing components. # Test: Search for the function usage. Expect: Proper integration in components using JSX. rg --type js --type jsx $'handleJsxModelValueUpdate'Length of output: 79
Script:
#!/bin/bash # Description: Verify the integration of `handleJsxModelValueUpdate` with existing components. # Test: Search for the function usage. Expect: Proper integration in components using JSX. rg --type js 'handleJsxModelValueUpdate'Length of output: 365
There was a problem hiding this 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
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (5)
- packages/vue-generator/src/generator/vue/sfc/generateAttribute.js (1 hunks)
- packages/vue-generator/test/testcases/sfc/slotModelValue/components-map.json (1 hunks)
- packages/vue-generator/test/testcases/sfc/slotModelValue/expected/slotModelValueTest.vue (1 hunks)
- packages/vue-generator/test/testcases/sfc/slotModelValue/page.schema.json (1 hunks)
- packages/vue-generator/test/testcases/sfc/slotModelValue/slotModel.test.js (1 hunks)
Files skipped from review due to trivial changes (1)
- packages/vue-generator/test/testcases/sfc/slotModelValue/components-map.json
Files skipped from review as they are similar to previous changes (1)
- packages/vue-generator/src/generator/vue/sfc/generateAttribute.js
Additional comments not posted (3)
packages/vue-generator/test/testcases/sfc/slotModelValue/slotModel.test.js (1)
1-12
: Good test structure! Verify snapshot existence.The test is well-structured and uses snapshot testing effectively. Ensure that the snapshot file
slotModelValueTest.vue
exists and is up-to-date.Verification successful
Snapshot file exists and is correctly referenced.
The snapshot file
slotModelValueTest.vue
is present at the expected location. The test setup is complete, and the snapshot testing should work as intended.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that the snapshot file exists. # Test: Check for the existence of the snapshot file. fd 'slotModelValueTest.vue' --type fLength of output: 125
packages/vue-generator/test/testcases/sfc/slotModelValue/expected/slotModelValueTest.vue (1)
1-95
: JSX usage looks correct! Verify component imports.The JSX syntax and usage of
onUpdate:modelValue
are correct and align with the PR objectives. Ensure thatTinyGrid
,TinyNumeric
, andTinyInput
are correctly imported and available in the project.Verification successful
Let's correct the syntax error in the shell script and rerun it to verify the imports of the components.
Let's adjust the regex pattern to escape special characters and rerun the script to verify the imports of the components.
Component imports are verified and correct!
The components
TinyGrid
,TinyNumeric
, andTinyInput
are correctly imported from@opentiny/vue
in the fileslotModelValueTest.vue
. Everything is set up as expected.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that the components are correctly imported. # Test: Check for the import statements of the components. rg --type js 'import { Grid as TinyGrid, Numeric as TinyNumeric, Input as TinyInput } from \'@opentiny/vue\''Length of output: 93
Script:
#!/bin/bash # Description: Verify that the components are correctly imported. # Test: Check for the import statements of the components. rg --type js "import { Grid as TinyGrid, Numeric as TinyNumeric, Input as TinyInput } from '@opentiny/vue'"Length of output: 299
Script:
#!/bin/bash # Description: Verify that the components are correctly imported. # Test: Check for the import statements of the components. rg --type js "import \{ Grid as TinyGrid, Numeric as TinyNumeric, Input as TinyInput \} from '@opentiny/vue'"Length of output: 299
packages/vue-generator/test/testcases/sfc/slotModelValue/page.schema.json (1)
1-150
: Schema structure is detailed and correct! Verify method bindings.The JSON schema is well-structured and aligns with the Vue component setup. Ensure that the method bindings
onChangeInput
andonChangeNumber
are correctly implemented and used in the code.
* fix(mockServer): mockServer page preview can't render element-plus element (#503) * fix(style): fix render error caused by inline style breaks (#526) * fix(metaComp): fix bug where metaHtmlText could set value to incorret schema children (#473) * fix(vue-generator): fix globalstate codegen error (#547) * fix(material): add componentsMap to app Schema after material build (#527) * fix: slot params missing double quote (#605) * fix: slot params missing double quote * fix: exclude nodemodule test case * fix: 修复onMouseover拼写错误 (#662) * fix: esbuild install failed on node v16 (#668) * fix: esbuild install failed on nodev16 * fix: esbuild install failed on nodev16 * fix: builtin components can't generate import statement with genSFCWithDefaultPlugin method (#656) * fix: esbuild install failed on nodev16 (#671) * fix: esbuild install failed on nodev16 * fix: esbuild install failed on nodev16 * fix: remove deps on root pkg.json * fix(preview): multiple nested blocks cannot preview #663 (#665) * fix(material): add missing componentsMap to mockServer (#701) * fix(setting): fix bindEvent dialog visible can't work on tinyvue 3.17 (#715) * feat(download-code): support download zip for not support browsers (#703) * feat(download-code): support download zip for not support browsers * feat(download-code): support download zip for not support browsers - review * feat(download-code): support download zip for not support browsers - review * docs: update milestone (#728) * docs: update milestone * fix: tab * fix: abaolute canvas init inlineStyle should be string (#730) * fix(download): Optimize download logic and adapt to iframe (#739) * fix(download): Optimize download logic and adapt to iframe * feat(cdn): change cdn from onmicrosoft to unpkg (#750) * fix: 隐藏画布根节点的包裹元素的操作选项 (#492) * fix(script): translate log (#549) * fix: translate log * Update scripts/connection.mjs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update scripts/connection.mjs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update scripts/connection.mjs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: reset spacing cannot generate correct source code (#657) * fix: jsx slot modelvalue can't update value (#734) * fix: jsx slot modelvalue can't update value * fix: add unit test for updateModel event * fix(canvas): absolute dnd update position to schema. close #664 (#751) * fix(generate-vue):修复出码文件选择界面打包后样式丢失问题 (#789) Co-authored-by: wangwenbing <[email protected]> * fix(stylePanel): fix setting border-radius could not work on first time (#481) * fix(common): fix verify required (#787) * fix: mixed lifeCyclesContent when empty lifecycles (#810) close #806 修复生命周期为空时,取当前页面schema生命周期值的 bug --------- Co-authored-by: chilingling <[email protected]> Co-authored-by: yeser <[email protected]> Co-authored-by: wenmine <[email protected]> Co-authored-by: Gene <[email protected]> Co-authored-by: yaoyun8 <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: bwrong <[email protected]> Co-authored-by: wangwenbing <[email protected]> Co-authored-by: Xie Jay <[email protected]>
* fix: jsx slot modelvalue can't update value * fix: add unit test for updateModel event
* fix(mockServer): mockServer page preview can't render element-plus element (opentiny#503) * fix(style): fix render error caused by inline style breaks (opentiny#526) * fix(metaComp): fix bug where metaHtmlText could set value to incorret schema children (opentiny#473) * fix(vue-generator): fix globalstate codegen error (opentiny#547) * fix(material): add componentsMap to app Schema after material build (opentiny#527) * fix: slot params missing double quote (opentiny#605) * fix: slot params missing double quote * fix: exclude nodemodule test case * fix: 修复onMouseover拼写错误 (opentiny#662) * fix: esbuild install failed on node v16 (opentiny#668) * fix: esbuild install failed on nodev16 * fix: esbuild install failed on nodev16 * fix: builtin components can't generate import statement with genSFCWithDefaultPlugin method (opentiny#656) * fix: esbuild install failed on nodev16 (opentiny#671) * fix: esbuild install failed on nodev16 * fix: esbuild install failed on nodev16 * fix: remove deps on root pkg.json * fix(preview): multiple nested blocks cannot preview opentiny#663 (opentiny#665) * fix(material): add missing componentsMap to mockServer (opentiny#701) * fix(setting): fix bindEvent dialog visible can't work on tinyvue 3.17 (opentiny#715) * feat(download-code): support download zip for not support browsers (opentiny#703) * feat(download-code): support download zip for not support browsers * feat(download-code): support download zip for not support browsers - review * feat(download-code): support download zip for not support browsers - review * docs: update milestone (opentiny#728) * docs: update milestone * fix: tab * fix: abaolute canvas init inlineStyle should be string (opentiny#730) * fix(download): Optimize download logic and adapt to iframe (opentiny#739) * fix(download): Optimize download logic and adapt to iframe * feat(cdn): change cdn from onmicrosoft to unpkg (opentiny#750) * fix: 隐藏画布根节点的包裹元素的操作选项 (opentiny#492) * fix(script): translate log (opentiny#549) * fix: translate log * Update scripts/connection.mjs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update scripts/connection.mjs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update scripts/connection.mjs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: reset spacing cannot generate correct source code (opentiny#657) * fix: jsx slot modelvalue can't update value (opentiny#734) * fix: jsx slot modelvalue can't update value * fix: add unit test for updateModel event * fix(canvas): absolute dnd update position to schema. close opentiny#664 (opentiny#751) * fix(generate-vue):修复出码文件选择界面打包后样式丢失问题 (opentiny#789) Co-authored-by: wangwenbing <[email protected]> * fix(stylePanel): fix setting border-radius could not work on first time (opentiny#481) * fix(common): fix verify required (opentiny#787) * fix: mixed lifeCyclesContent when empty lifecycles (opentiny#810) close opentiny#806 修复生命周期为空时,取当前页面schema生命周期值的 bug --------- Co-authored-by: chilingling <[email protected]> Co-authored-by: yeser <[email protected]> Co-authored-by: wenmine <[email protected]> Co-authored-by: Gene <[email protected]> Co-authored-by: yaoyun8 <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: bwrong <[email protected]> Co-authored-by: wangwenbing <[email protected]> Co-authored-by: Xie Jay <[email protected]>
English | 简体中文
PR
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
Background and solution
What is the current behavior?
Issue Number: close #731
modelValue 绑定时,如果是生成 jsx,需要同时声明
onUpdate:modelValue
事件比如:
但是,如果声明在 scrript 中,则为 jsx,需要为 modelValue 补充声明
onUpdate:modelValue
事件What is the new behavior?
Does this PR introduce a breaking change?
Other information
Summary by CodeRabbit
Summary by CodeRabbit
New Features
onUpdate:modelValue
event in JSX contexts.Configuration Improvements
Tests