summaryrefslogtreecommitdiff
path: root/src/components/ModalCloseAllConnections.tsx
blob: 72efc7cd28bbc1903e5afe0c28f82eef8049c83f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import cx from 'clsx';
import React from 'react';
import { useTranslation } from 'react-i18next';

import Modal from './Modal';

import Button from './Button';
import modalStyle from './Modal.module.scss';
import s from './ModalCloseAllConnections.module.scss';

const { useRef, useCallback, useMemo } = React;

type Props = {
  confirm?: string;
  isOpen: boolean;
  onRequestClose: () => void;
  primaryButtonOnTap: (e: React.MouseEvent<HTMLButtonElement>) => unknown;
};

export default function Comp({
  confirm = 'close_all_confirm',
  isOpen,
  onRequestClose,
  primaryButtonOnTap,
}: Props) {
  const { t } = useTranslation();
  const primaryButtonRef = useRef<HTMLButtonElement | null>(null);
  const onAfterOpen = useCallback(() => {
    if (primaryButtonRef.current) {
      primaryButtonRef.current.focus();
    }
  }, []);
  const className = useMemo(
    () => ({
      base: cx(modalStyle.content, s.cnt),
      afterOpen: s.afterOpen,
      beforeClose: '',
    }),
    []
  );
  return (
    <Modal
      isOpen={isOpen}
      onRequestClose={onRequestClose}
      onAfterOpen={onAfterOpen}
      className={className}
      overlayClassName={cx(modalStyle.overlay, s.overlay)}
    >
      <p>{t(confirm)}</p>
      <div className={s.btngrp}>
        <Button onClick={primaryButtonOnTap} ref={primaryButtonRef}>
          {t('close_all_confirm_yes')}
        </Button>
        <div style={{ width: 20 }} />
        <Button onClick={onRequestClose}>{t('close_all_confirm_no')}</Button>
      </div>
    </Modal>
  );
}