123456789101112131415161718192021 |
- import {useCallback, useState} from 'react';
- import type {BreadcrumbControlOptions} from 'sentry/components/events/breadcrumbs/breadcrumbsDrawer';
- import type {FlagControlOptions} from 'sentry/components/events/featureFlags/utils';
- type FocusControlOption = BreadcrumbControlOptions | FlagControlOptions;
- export default function useFocusControl(initialFocusControl?: FocusControlOption) {
- const [focusControl, setFocusControl] = useState(initialFocusControl);
- // If the focused control element is blurred, unset the state to remove styles
- // This will allow us to simulate :focus-visible on the button elements.
- const getFocusProps = useCallback(
- (option: FocusControlOption) => {
- return option === focusControl
- ? {autoFocus: true, onBlur: () => setFocusControl(undefined)}
- : {};
- },
- [focusControl]
- );
- return {getFocusProps};
- }
|