All files / src/components/delete_item DeleteItem.tsx

0% Statements 0/42
0% Branches 0/1
0% Functions 0/1
0% Lines 0/42

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 60                                                                                                                       
import { FC, useState } from 'react';
import { Pending } from '../../models/pending';
import { ErrorResponse } from '../../models/errorResponse';
import { OkResponse } from '../../models/okResponse';
import { Loading } from '..';
import ReactModal from 'react-modal';
import DeleteItemButton from './DeleteItemButton';
import DeleteItemResult from './DeleteItemResult';
 
type Props = {
  id: string;
  isHidden: boolean;
};
 
ReactModal.setAppElement('#root');
 
const DeleteItem: FC<Props> = (props) => {
  // set modal state
  const [modalIsOpen, setIsOpen] = useState<boolean>(false);
  // set delete result
  const [result, setResult] = useState<OkResponse | ErrorResponse | Pending | null>(null);
  return (
    <>
      <DeleteItemButton id={props.id} isHidden={props.isHidden} setIsOpen={setIsOpen} setResult={setResult} />
      <ReactModal
        isOpen={modalIsOpen}
        contentLabel="DeleteItemModal"
        style={{
          overlay: {
            backgroundColor: 'rgba(0, 0, 0, 0.5)',
          },
          content: {
            top: '50%',
            left: '50%',
            right: 'auto',
            bottom: 'auto',
            transform: 'translate(-50%, -50%)',
            width: '90%',
            minWidth: '320px',
            maxWidth: '900px',
          },
        }}
      >
        {result === null ? (
          // 初期表示
          <></>
        ) : result === 'pending' ? (
          // 処理中
          <Loading />
        ) : (
          // fetch結果
          <DeleteItemResult result={result} />
        )}
      </ReactModal>
    </>
  );
};
 
export default DeleteItem;