Skip to content
3 changes: 2 additions & 1 deletion src/components/InfoBar/InfoBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ export const InfoBar: FC<InfoBarsProps> = React.forwardRef(

useEffect(() => {
setTimeout(() => {
if (closeButtonRef.current && moveFocusToCloseButton) {
if (closeButtonRef.current) {
if (closeButtonRef.current && moveFocusToCloseButton)
closeButtonRef.current.focus();
}
}, 1000);
Expand Down
11 changes: 7 additions & 4 deletions src/components/Snackbar/snack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { InfoBarType } from '../InfoBar';

const DEFAULT_POSITION: SnackbarPosition = 'top-center';

let focusedElementRef: HTMLElement | null = null;
let elementToFocus: HTMLElement | null = null;

export const SNACK_EVENTS: Record<string, string> = {
SERVE: 'serveSnack',
Expand All @@ -33,7 +33,9 @@ export const serve = (props: SnackbarProps): VoidFunction => {
document.dispatchEvent(serveSnackEvent);
}

focusedElementRef = document.activeElement as HTMLElement;
if (props.lastFocusableElement) {
elementToFocus = props.lastFocusableElement;
}

if (!props.closable || props.actionButtonProps) {
setTimeout(() => {
Expand All @@ -50,11 +52,12 @@ export const eat = (snackId: string): void => {
cancelable: false,
detail: snackId,
});

if (canUseDocElement()) {
document.dispatchEvent(removeSnackEvent);
}
if (focusedElementRef) {
focusedElementRef.focus();
if (elementToFocus) {
elementToFocus.focus();
}
};

Expand Down