diff --git a/src/platform/plugins/shared/controls/public/controls/timeslider_control/components/time_slider_popover_button.tsx b/src/platform/plugins/shared/controls/public/controls/timeslider_control/components/time_slider_popover_button.tsx index fbc31da27a693..af4cc15749f79 100644 --- a/src/platform/plugins/shared/controls/public/controls/timeslider_control/components/time_slider_popover_button.tsx +++ b/src/platform/plugins/shared/controls/public/controls/timeslider_control/components/time_slider_popover_button.tsx @@ -48,6 +48,10 @@ const timeSliderStyles = { text-decoration: line-through; color: ${euiTheme.colors.mediumShade}; } + + &:focus { + outline-offset: -3px; + } `, }; diff --git a/src/platform/plugins/shared/controls/public/controls/timeslider_control/get_timeslider_control_factory.tsx b/src/platform/plugins/shared/controls/public/controls/timeslider_control/get_timeslider_control_factory.tsx index 82069a6195d91..873681dfdb441 100644 --- a/src/platform/plugins/shared/controls/public/controls/timeslider_control/get_timeslider_control_factory.tsx +++ b/src/platform/plugins/shared/controls/public/controls/timeslider_control/get_timeslider_control_factory.tsx @@ -65,6 +65,9 @@ export const getTimesliderControlFactory = (): ControlFactory< const isPopoverOpen$ = new BehaviorSubject(false); const hasTimeSliceSelection$ = new BehaviorSubject(Boolean(timeslice$)); + // Workaround for https://github.com/elastic/eui/issues/8949 + const lockPopoverOpen$ = new BehaviorSubject(false); + const timeRangePercentage = initTimeRangePercentage( initialState, syncTimesliceWithTimeRangePercentage @@ -328,8 +331,20 @@ export const getTimesliderControlFactory = (): ControlFactory< /> } isOpen={isPopoverOpen} - closePopover={() => isPopoverOpen$.next(false)} + closePopover={() => { + // Workaround for https://github.com/elastic/eui/issues/8949 + if (!lockPopoverOpen$.getValue()) isPopoverOpen$.next(false); + }} panelPaddingSize="s" + panelProps={{ + // Workaround for https://github.com/elastic/eui/issues/8949 + onKeyDown: (event) => { + if (event.key === 'Tab' && event.shiftKey) { + lockPopoverOpen$.next(true); + requestIdleCallback(() => lockPopoverOpen$.next(false)); + } + }, + }} >