summaryrefslogtreecommitdiffhomepage
path: root/desktop/packages/mullvad-vpn/src/renderer/hooks/useInitialFocus.ts
blob: bd1d3a45eb2ed43077a6e55ad2d9572affde8852 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import React from 'react';

import { useFocusReferenceAfterPaint } from './useFocusReferenceAfterPaint';
import { useIsDefaultActiveElementAfterMount } from './useIsDefaultActiveElementAfterMount';

export const useInitialFocus = <T extends HTMLElement = HTMLDivElement>(): {
  ref?: React.RefObject<T | null>;
} => {
  const ref = React.useRef<T>(null);

  const isDefaultFocus = useIsDefaultActiveElementAfterMount();
  const shouldFocus = isDefaultFocus === true;

  useFocusReferenceAfterPaint(ref, shouldFocus);

  if (!isDefaultFocus)
    return {
      ref: undefined,
    };
  return {
    ref,
  };
};