-
Notifications
You must be signed in to change notification settings - Fork 58
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
Optimizing displayCheck: "full"
#604
Optimizing displayCheck: "full"
#604
Conversation
🦋 Changeset detectedLatest commit: fe27341 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Codecov Report
@@ Coverage Diff @@
## master #604 +/- ##
==========================================
- Coverage 97.22% 97.16% -0.06%
==========================================
Files 1 1
Lines 144 141 -3
Branches 60 59 -1
==========================================
- Hits 140 137 -3
Misses 4 4
Continue to review full report at Codecov.
|
Not sure why the coverage has decreased. It may be that there are cases other than the |
46e6d3f
to
fe27341
Compare
I think the reason it has decreased is because technically, there were 4 lines that were covered before, and now there is only one: But this is a blind comparison between before (say 300 lines total) and now (say 296 lines total), so technically, coverage has decreased by a fraction, but that's not because there are lines that were covered before and aren't now. It's because there are just less lines covered. Hopefully that makes sense. Not something to worry about in this case. |
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.
This looks good, thank you!
Oh so that's how the coverage is calculated. Thank you for the clarification! |
@all-contributors add @DaviDevMod for code, test |
I've put up a pull request to add @DaviDevMod! 🎉 |
TODO: - fix the one failing test (see bunch of DEBUG comments) - optimize/clarify getCandidate... loop (see DEBUG comment) - clarify docs about getShadowRoot() === true that's meant for non-zero test
TODO: Add support for `getShadowRoot: true` instead of function.
TODO: Add support for `getShadowRoot: true` instead of function.
* chore(dev): declarative shadow root test fixtures - new development shadow-root-utils - refactor setupFixture to render using new utils - refactor current shadow dom tests to use declarative root - debug page renders shadow root fixtures correctly * feat: separate radio light/shadow dom groups * feat: detect display across shadow boundaries * feat: scan through shadow boundary - iterate down dom instead of query when getShadowRoot is provided - new candidate list/tree format with scoped lists * chore(types): added getShadowDom to types * fix: type of getShadowRoot option * test: add test to locate tabbable host * feat: slot elements are not focusable/tabbable * chore: added some jsdocs * refactor: modernize syntax - as requested in PR * Prepare for 5.3.0-beta.0 * 5.3.0-beta.0 * Adjusting code after #604 and comments * Disable shadow DOM for isFocusable/isTabbable if getShadowRoot not given This goes along with disabling it for `tabbable()` and `focusable()` when the option isn't given. * Clarify getShadowRoot must be set to enable shadow DOM support * Add support for `getShadowRoot: true` Note this is the equivalent of `getShadowRoot: () => false` which simply enables shadow DOM support for all open shadows. * Prepare for v5.3.0-beta.1 * 5.3.0-beta.1 * Add prepublishOnly script for manual publishing * fix(index.js) The tabIndex of audio, video and details was left to the default if set to some NaN (#610) * fix(index.js) The tabIndex of contentEditable elements was assumed to be zero in any case, not only in the case it was not specifically set. * Simplified and optimized 'getTabIndex'. * Made better use of short-circuit evaluation in 'isNodeMatchingSelectorTabbable', reducing the chances to call the computationally expensive 'isNodeMatchingSelectorFocusable'. * (Re)Added 'isScope' parameter to 'getTabIndex'. This parameter wasn't present in the master branch, so I lost it in the rebase process. * Added tests for a `contenteditable` with negative tab index. * Fixed bug, now the getTabIndex can return 0 not only when the tabindex is not explicitly set, but also when is set to a value that gives NaN when parsed as integer (which would have been resulted in the default browser tabIndex, as if the tabindex wasn't set at all). Also added test for the case an element has a tab index that can't be turned into an integer. * Added changeset, added entry in CHANGELOG.md and wrote more tests. * Be consistent with asterisks * Sync package.json/yarn.lock with beta-530 base branch Co-authored-by: Stefan Cameron <stefan@stefcameron.com> * [#632] Add test for radios in a form (#638) Can't repro the issue, but might as well keep the test since we seem to like fieldsets but not forms for some reason. * Add changeset for shadow root support Co-authored-by: Ido Rosenthal <idoros@gmail.com> Co-authored-by: DaviDevMod <98312056+DaviDevMod@users.noreply.github.com>
This broke ~all of our unit tests which touch code that uses |
Optimized
displayCheck: "full"
by replacing this DOM traversal (executed on every potential focusable element) with the following statement:which is a more general check for whether an elements has display boxes.
display: "none"
is only a special case of!node.getClientRects().length
.Another case of elements with no display boxes would be elements with
display: "contents"
. And (since this case wasn't previosly handled) tests have been added to cover this possibility.Fixes #592
PR Checklist
Please leave this checklist in your PR.
typeof document/window !== 'undefined'
before using it in code that gets executed on load.yarn changeset
locally to add one, and follow the prompts).