-
Notifications
You must be signed in to change notification settings - Fork 6.9k
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: add updateSchema to form api #4453
Conversation
|
Warning Rate limit exceeded@anncwb has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 22 minutes and 15 seconds before requesting another review. How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. WalkthroughThe pull request introduces a new Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant FormApi
participant FormComponent
User->>FormComponent: Click update button
FormComponent->>FormApi: Call updateSchema with new options
FormApi->>FormApi: Validate new schema
alt Valid schema
FormApi->>FormApi: Update schema state
FormApi->>FormComponent: Notify schema updated
else Invalid schema
FormApi->>FormApi: Log error
end
Assessment against linked issues
Possibly related PRs
Suggested reviewers
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? 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 using PR comments)
Other keywords and placeholders
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: 2
Outside diff range and nitpick comments (1)
packages/@core/ui-kit/form-ui/src/form-api.ts (1)
192-193
: Ensure 'fieldName' checks handle all valid valuesThe checks
item.fieldName
might exclude validfieldName
values that are falsy (e.g., an empty string''
or0
). If such values are acceptable asfieldName
, consider adjusting the condition to include them.Update the conditions to explicitly check for
null
orundefined
:const hasField = updated.every( - (item) => Reflect.has(item, 'fieldName') && item.fieldName, + (item) => item.fieldName !== null && item.fieldName !== undefined, );And:
if (item.fieldName) { + // Proceed if fieldName is not null or undefined - if (item.fieldName) { + if (item.fieldName !== null && item.fieldName !== undefined) { updatedMap[item.fieldName] = item; }Also applies to: 205-207
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (3)
- packages/@core/ui-kit/form-ui/tests/form-api.test.ts (2 hunks)
- packages/@core/ui-kit/form-ui/src/form-api.ts (2 hunks)
- playground/src/views/examples/form/api.vue (3 hunks)
Additional comments not posted (7)
packages/@core/ui-kit/form-ui/__tests__/form-api.test.ts (1)
148-207
: LGTM!The
updateSchema
test suite is well-structured and covers various scenarios to ensure the expected behavior of theupdateSchema
method. The test cases validate the correct updates, error handling, and conditions under which updates should not occur.The test suite enhances the overall test coverage and provides confidence in the functionality of the
updateSchema
method.playground/src/views/examples/form/api.vue (4)
91-118
: LGTM!The new
updateSchema
case in thehandleClick
function provides a useful way to dynamically update the form schema. Modifying theoptions
property of thefieldOptions
field and adding a third option labeled "选项3" expands the available choices for the user. This feature enhances the flexibility of the form component.
223-223
: LGTM!The new button in the template, bound to the
handleClick
method with theupdateSchema
action, provides a user interface to trigger the dynamic schema update functionality. This addition complements theupdateSchema
case in thehandleClick
function and makes the feature easily accessible to users.
Line range hint
1-252
: Changes align with the PR objectives.The implemented changes in this file are consistent with the PR objectives:
- The new
updateSchema
case in thehandleClick
function allows for updating the schema of the form by modifying field properties, fulfilling the primary objective of adding anupdateSchema
feature to the form API.- The modifications to the
fieldOptions
field, including theSelect
component and the updatedoptions
, demonstrate the capability to directly modify form field properties.- The new button in the template provides a user interface to trigger the schema update functionality, aligning with the goal of making the feature accessible.
Overall, the changes successfully address the requirements outlined in the PR objectives.
44-62
: Verify the field name change across the codebase.The changes to replace the
Input
component with aSelect
component, along with the added properties and options, enhance the form's interactivity and user experience. The field name change fromfield3
tofieldOptions
and label update to "下拉选" accurately reflect the new functionality.Please ensure that the field name change from
field3
tofieldOptions
is updated consistently across the codebase, including any references in other components, functions, or API calls.Run the following script to verify the field name usage:
packages/@core/ui-kit/form-ui/src/form-api.ts (2)
213-213
: Verify that the 'merge' function merges schemas as intendedWhen merging
updatedData
into the existingschema
, ensure that themerge
function correctly handles nested properties and arrays according to your application's requirements.If
merge
doesn't handle complex nested structures as needed, consider using a deep merge utility or adjusting the merge function.
189-217
: Well-implemented 'updateSchema' methodThe
updateSchema
method effectively updates the form schema based on the provided partial schemas. It utilizes a map for efficient lookups and merges updates without mutating the original schema array.
Description
close #4447
Type of change
Please delete options that are not relevant.
pnpm-lock.yaml
unless you introduce a new test example.Checklist
pnpm run docs:dev
command.pnpm test
.feat:
,fix:
,perf:
,docs:
, orchore:
.Summary by CodeRabbit
New Features
updateSchema
method for dynamic updates to form schemas.Input
component with aSelect
component, enhancing user interaction with new options.Bug Fixes
Tests
updateSchema
method, validating correct updates and error logging.