fix(Accordion): leaking stale summaryButtons refs on panel removal - #3193
Open
zigzagdev wants to merge 2 commits into
Open
fix(Accordion): leaking stale summaryButtons refs on panel removal#3193zigzagdev wants to merge 2 commits into
zigzagdev wants to merge 2 commits into
Conversation
addSummaryButton only ever pushed into this.summaryButtons and never removed an entry when a panel's button unmounted (its ref callback fires with null, which was ignored). After removing a panel, stale detached DOM nodes stayed in the array and index-based lookups in onKeyDownSummary/componentDidUpdate could reference them, so keyboard navigation could silently focus a stale node instead of the correct remaining panel. Key summaryButtons by the child's render index instead of push-only, clearing the slot when its ref detaches (button === null), and guard the id-based lookup and the componentDidUpdate focus call against holes left by pruned/removed slots.
Covers the fix in the previous commit: removing a panel and then navigating with the arrow keys focuses the correct remaining button instead of a stale detached node.
This file contains hidden or 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
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.
Fixes #
ButtonforAccordion'saddSummaryButtononly pushed intothis.summaryButtonsand never removed an entry when a panel's button unmounted (its ref callback fires withnull, which was ignored). After removing a panel, a stale detached DOM node stayed in the array, so keyboard navigation could focus that stale node instead of the correct remaining panel.With this fix, keying
summaryButtonsby the child's render index and clearing the slot when its ref detaches, and added a regression test.Additional description
CONTRIBUTOR checklist (do not remove)
Please complete for every pull request
npm run lint:fixhas been run and linting passes.components/component-docs.jsonCI tests pass (npm test).REVIEWER checklist (do not remove)
components/component-docs.jsontests.Required only if there are markup / UX changes
last-slds-markup-reviewinpackage.jsonand push.last-accessibility-review, topackage.jsonand push.npm run local-updatewithin locally cloned site repo to confirm the site will function correctly at the next release.