fix(ui): allow json fields to be updated externally #11371
+103
−15
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.
What?
Unable to update json fields externally. For example, calling
setValue
on a json field would not be reflected in the admin panel UI.Why?
JSON fields use the monaco editor to manage state internally, so programmatically updating the value in state does not change the internal value.
How?
Set a ref when the user updates the value and then unset the ref after the change is complete.
Inside the hook that watches
value
, if the value changed and the change came from the system (i.e. a programmatic change) refresh the editor by adjusting its key prop. If the change was made by the user, there is no need to refresh the editor.Fixes #10819