-
-
Notifications
You must be signed in to change notification settings - Fork 5.3k
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 disabled
inputs temporarily erase values
#10249
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Problem React-hook-form sets the value of `disabled` inputs to `undefined`. For most data providers, this isn't a problem (except the disabled field won't be sent in the update). But FakeRest is local, so it receives the `undefined` value, and uses it to override the existing value. In effect, this erases the value. This can be seen e.g. in the simple example, by changing the first input of PostEdit to `<TexuInput source="id" disabled" />` ## Solution Remove `undefined` values from the edit payload.
ra-data-fakerest
removes data when a form has an input disabled
ra-data-fakerest
removes data when a form has a disabled
input
djhi
reviewed
Sep 30, 2024
Comment on lines
135
to
141
{ | ||
...old[index], | ||
// Stringify and parse the data to remove undefined values. | ||
// If we don't do this, an update with { id: undefined } as payload | ||
// would remove the id from the record, which no real data provider does. | ||
...JSON.parse(JSON.stringify(data)), | ||
} as RecordType, |
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.
Shouldn't we have tests for this?
Comment on lines
127
to
133
{ | ||
...newCollection[index], | ||
// Stringify and parse the data to remove undefined values. | ||
// If we don't do this, an update with { id: undefined } as payload | ||
// would remove the id from the record, which no real data provider does. | ||
...JSON.parse(JSON.stringify(data)), | ||
}, |
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.
Same
ra-data-fakerest
removes data when a form has a disabled
input disabled
inputs temporarily erase values
djhi
approved these changes
Oct 1, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
React-hook-form sets the value of
disabled
inputs toundefined
. For most data providers, this isn't a problem (except the disabled field won't be sent in the update).But FakeRest is local, so it receives the
undefined
value, and uses it to override the existing value. In effect, this erases the value.I also noticed that we made the same mistake in optimistic updates.
This can be seen e.g. in the simple example, by changing the first input of PostEdit to
<TexuInput source="id" disabled" />
Solution
Remove
undefined
values from the edit payload:ra-data-fakerest
useUpdate
optimistic updateuseUpdateMany
optimistic updateSupersedes #10242