summaryrefslogtreecommitdiff
path: root/garden/src/components/Modal.tsx
blob: d0a547578e7bf1c7f2262530c418ceb2ffec9aae (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
import type { JSX } from "solid-js";

interface ModalProps {
  title: string;
  onClose: () => void;
  children: JSX.Element;
}

export default function Modal(props: ModalProps) {
  function handleBackdrop(event: MouseEvent) {
    if (event.target === event.currentTarget) {
      props.onClose();
    }
  }

  return (
    <div class="modal-backdrop" onClick={handleBackdrop}>
      <div class="modal-content">
        <div class="modal-header">
          <span class="modal-title">{props.title}</span>
          <button type="button" class="modal-close" onClick={props.onClose}>&times;</button>
        </div>
        <div class="modal-body">
          {props.children}
        </div>
      </div>
    </div>
  );
}