src/app/components/AppModal/index.tsx   A
last analyzed

Complexity

Total Complexity 2
Complexity/F 0

Size

Lines of Code 47
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
eloc 42
mnd 2
bc 2
fnc 0
dl 0
loc 47
ccs 18
cts 18
cp 1
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1 1
import React, { useCallback } from "react";
2 1
import { useDispatch, useSelector } from "react-redux";
3 1
import { useTranslation } from "react-i18next";
4
5 1
import {
6
  closeModal,
7
  driveWithDarkMode,
8
  geti18nConfig,
9
  getModalType,
10
  isModalVisible,
11
} from "@cianciarusocataldo/modular-engine";
12
13 1
import { Modal } from "@cianciarusocataldo/modular-ui";
14
15 1
const AppModal = ({
16 12
  modals,
17
}: {
18
  modals: Record<string, () => JSX.Element>;
19
}) => {
20 12
  const dispatch = useDispatch();
21
22 12
  const onClose = useCallback(() => {
23 1
    dispatch(closeModal());
24
  }, [dispatch]);
25
26 12
  const type = useSelector(getModalType);
27 12
  const isVisible = useSelector(isModalVisible);
28 12
  const i18n = useSelector(geti18nConfig);
29 12
  const ModalContent = type && modals[type] ? modals[type] : () => <div />;
30
31 12
  const { t } = useTranslation(i18n.modalsNamespace);
32
33 12
  const ModalComponent = driveWithDarkMode(Modal);
34
35 12
  return (
36
    <ModalComponent
37
      onClose={onClose}
38
      title={type ? t(type) : ""}
39
      hide={!isVisible}
40
    >
41
      <ModalContent />
42
    </ModalComponent>
43
  );
44
};
45
46
export default AppModal;
47