Skip to content

Commit db6c934

Browse files
authored
fix: Prevent Spectrum Picker from selecting new value after closing (adobe#8475)
* fix: Picker select after close * apply pointerevents none to every child when popover is closing * fix the fix due to when state vs renders happen
1 parent 4402632 commit db6c934

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

packages/@adobe/spectrum-css-temp/components/popover/index.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ governing permissions and limitations under the License.
5151
overflow: hidden;
5252
}
5353

54+
/* Prevent clicks during exit animation (e.g. Picker selecting wrong item).
55+
pointer-events is not inherited, so we must disable it on the popover and all descendants. */
56+
.spectrum-Popover.is-exiting,
57+
.spectrum-Popover.is-exiting * {
58+
pointer-events: none;
59+
touch-action: none;
60+
}
61+
5462
.is-open {
5563
composes: spectrum-overlay--open;
5664
}

packages/@react-spectrum/overlays/src/Popover.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ const PopoverWrapper = forwardRef((props: PopoverWrapperProps, ref: ForwardedRef
138138
{
139139
'spectrum-Popover--withTip': !hideArrow,
140140
'is-open': isOpen,
141-
[`is-open--${placement}`]: isOpen
141+
[`is-open--${placement}`]: isOpen,
142+
'is-exiting': !state.isOpen
142143
},
143144
classNames(
144145
overrideStyles,

0 commit comments

Comments
 (0)