Skip to content

Conversation

@mattkubej
Copy link
Contributor

@mattkubej mattkubej commented Oct 3, 2022

WHY are these changes introduced?

Fixes #7329

When multiple Polaris Popovers are open and pressing Escape, then all Popovers close. This creates conflict in moving focus to activator of a Popover, especially if a Popover is a child of another Popover. In the case of a parent child relationship, when both Popovers close, then the child Popover no longer has the activator available within the DOM to move focus to, so focus goes to the body.

WHAT is this pull request doing?

PopoverOverlay has a global listener for Escape key presses, so all Popovers respond to the Escape key presses and attempt to close. This pull request will only close the Popover where the event target of the keypress is either a descendant of the Popover or the associated activator. As a result, Popovers will iteratively close based on the presence of focus.

Demo of fix Demo of fix

How to 🎩

Validate Escape Popover behavior within the following codesandbox, which has a snapshot of Polaris with the change in this PR.

https://codesandbox.io/s/polaris-double-popover-escape-with-fix-0od2c3

🎩 checklist

@mattkubej
Copy link
Contributor Author

/snapit

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2022

size-limit report 📦

Path Size
polaris-react-cjs 204.9 KB (+0.02% 🔺)
polaris-react-esm 131.23 KB (+0.02% 🔺)
polaris-react-esnext 186.53 KB (+0.03% 🔺)
polaris-react-css 41.45 KB (0%)

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2022

🫰✨ Thanks @mattkubej! Your snapshots have been published to npm.

Test the snapshots by updating your package.json with the newly published versions:

yarn add @shopify/[email protected]
yarn add @shopify/[email protected]

@mattkubej
Copy link
Contributor Author

/snapit

@mattkubej mattkubej force-pushed the 7329-popover-escape branch from b11bee6 to 190a302 Compare October 3, 2022 23:15
@mattkubej
Copy link
Contributor Author

/snapit

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2022

🫰✨ Thanks @mattkubej! Your snapshots have been published to npm.

Test the snapshots by updating your package.json with the newly published versions:

yarn add @shopify/[email protected]
yarn add @shopify/[email protected]
yarn add @shopify/[email protected]

@mattkubej mattkubej force-pushed the 7329-popover-escape branch from 03f1c2c to 360daad Compare October 4, 2022 20:10
@mattkubej
Copy link
Contributor Author

/snapit

@github-actions
Copy link
Contributor

github-actions bot commented Oct 4, 2022

🫰✨ Thanks @mattkubej! Your snapshots have been published to npm.

Test the snapshots by updating your package.json with the newly published versions:

yarn add @shopify/[email protected]
yarn add @shopify/[email protected]
yarn add @shopify/[email protected]

@mattkubej mattkubej requested a review from ryansharman October 4, 2022 20:57
Copy link
Member

@sam-b-rose sam-b-rose left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean solution and nice tests! Thanks @mattkubej

Copy link

@ryansharman ryansharman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎩 looks good

@mattkubej mattkubej merged commit 2ee5c5d into main Oct 5, 2022
@mattkubej mattkubej deleted the 7329-popover-escape branch October 5, 2022 13:17
@github-actions github-actions bot mentioned this pull request Oct 5, 2022
mattkubej pushed a commit that referenced this pull request Oct 5, 2022
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @shopify/[email protected]

### Minor Changes

- [#7264](#7264)
[`5a1f45f7a`](5a1f45f)
Thanks [@lgriffee](https://github.com/lgriffee)! - Add sass padding and
margin migration

### Patch Changes

- [#7315](#7315)
[`c958899c7`](c958899)
Thanks [@lgriffee](https://github.com/lgriffee)! - Remove `0` and `0px`
length values from `replace-sass-lengths` migration

- Updated dependencies
\[[`0be40aa94`](0be40aa)]:
    -   @shopify/[email protected]

## @shopify/[email protected]

### Minor Changes

- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added alpha `Inline`
component


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added `AlphaStack`
component


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added `Columns`
component


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added `Box` component


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added `AlphaCard`
component


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added `fullWidth` prop
to `AlphaStack` and updated styleguide docs


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added alpha
`ContentBlock` component

### Patch Changes

- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Updated `AlphaCard`
border radius to a boolean


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Renamed `Columns`
spacing


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Renamed `background`
prop on `AlphaCard` for consistency


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Rename `Tiles`
component


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Renamed `AlphaCard`
`shadow` prop


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Refactored token types
in primitive Layout components
    Exposed `DepthShadowAlias` type


- [#7291](#7291)
[`3941f5281`](3941f52)
Thanks [@atesgoral](https://github.com/atesgoral)! - Improve default
style class selection of `Avatar` by using the entire name instead of
just the first letter


- [#7332](#7332)
[`2ee5c5d74`](2ee5c5d)
Thanks [@mattkubej](https://github.com/mattkubej)! - `PopoverOverlay`
closes focused `Popover` when pressing `Escape`

- Updated dependencies
\[[`0be40aa94`](0be40aa)]:
    -   @shopify/[email protected]

## @shopify/[email protected]

### Minor Changes

- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Refactored token types
in primitive Layout components
    Exposed `DepthShadowAlias` type

## @shopify/[email protected]

### Patch Changes

- Updated dependencies
\[[`5a1f45f7a`](5a1f45f),
[`c958899c7`](c958899)]:
    -   @shopify/[email protected]

## @shopify/[email protected]

### Patch Changes

- Updated dependencies
\[[`0be40aa94`](0be40aa)]:
    -   @shopify/[email protected]

## [email protected]

### Minor Changes

- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added alpha pages for
`AlphaStack`, `Box`, `Columns`, `Inline`, and `Tile` components. Updated
`StatusBanner` to capitalize status value.


- [#7353](#7353)
[`558b1cfae`](558b1cf)
Thanks [@kyledurand](https://github.com/kyledurand)! - Ported
codesandbox init code to React 18


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added alpha page for
`ContentBlock`

### Patch Changes

- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Updated `AlphaCard`
border radius to a boolean


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Renamed `Columns`
spacing


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Renamed `background`
prop on `AlphaCard` for consistency


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Rename `Tiles`
component


- [#7312](#7312)
[`2349db304`](2349db3)
Thanks [@martenbjork](https://github.com/martenbjork)! - Added a
redirect pointing to the Polaris license on Github


- [#7343](#7343)
[`7ced95bfb`](7ced95b)
Thanks [@laurkim](https://github.com/laurkim)! - Updated alpha `Box`
page to remove sentence regarding usage in existing components


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Renamed `AlphaCard`
`shadow` prop


- [#7056](#7056)
[`0be40aa94`](0be40aa)
Thanks [@laurkim](https://github.com/laurkim)! - Added `fullWidth` prop
to `AlphaStack` and updated styleguide docs


- [#7311](#7311)
[`fc05e3152`](fc05e31)
Thanks [@martenbjork](https://github.com/martenbjork)! - Improved the
layout on mobile

- Updated dependencies
\[[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`3941f5281`](3941f52),
[`2ee5c5d74`](2ee5c5d)]:
    -   @shopify/[email protected]
    -   @shopify/[email protected]

## [email protected]

### Patch Changes

- Updated dependencies
\[[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`0be40aa94`](0be40aa),
[`3941f5281`](3941f52),
[`2ee5c5d74`](2ee5c5d)]:
    -   @shopify/[email protected]

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Popover] With multiple Popovers open, focus is lost when pressing Escape to close

3 participants