Cellnav rewrite and speed improvements #2084
Merged
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.
This is a large set of changes that focuses on reverting how we track elements within the the grid's row repeater. For the cellNav feature we changed to tracking by row.uid, which was causing us to recycle DOM elements at a very quick pace, resulting in thrashing the browser.
Going back to
track by $indexrequired rewriting the cellNav feature so that it no longer relies on "true" browserfocus. but fakes it by handling click events and tracking the history of how we navigate cells. These changes to cellNav ALSO requiresdmany changes inside the edit feature, as it was implicitly relying onfocusas well. We still do depend on focused elements, but only in the sense that we need to have them capture keyboard events.There are also several speed improvements and fixes that were discovered in the course of this change, e.g. watches that shouldn't have been firing, calculations running when they shouldn't have and causing race conditions, etc.