Files
rowy/src/components/ColumnModals/ColumnModals.tsx

49 lines
1.4 KiB
TypeScript
Raw Normal View History

import { useAtom } from "jotai";
import { RESET } from "jotai/utils";
import NewColumnModal from "./NewColumnModal";
import NameChangeModal from "./NameChangeModal";
import TypeChangeModal from "./TypeChangeModal";
import ColumnConfigModal from "./ColumnConfigModal";
2023-08-06 13:38:14 +05:30
import SetColumnWidthModal from "./SetColumnWidthModal";
2022-06-03 12:47:40 +10:00
import {
tableScope,
tableSchemaAtom,
columnModalAtom,
} from "@src/atoms/tableScope";
import { ColumnConfig } from "@src/types/table";
export interface IColumnModalProps {
onClose: () => void;
column: ColumnConfig;
}
export default function ColumnModals() {
const [tableSchema] = useAtom(tableSchemaAtom, tableScope);
2022-06-03 12:47:40 +10:00
const [columnModal, setColumnModal] = useAtom(columnModalAtom, tableScope);
if (!columnModal) return null;
const onClose = () => setColumnModal(RESET);
if (columnModal.type === "new") return <NewColumnModal onClose={onClose} />;
const column = tableSchema.columns?.[columnModal.columnKey ?? ""];
if (!column) return null;
if (columnModal.type === "name")
return <NameChangeModal onClose={onClose} column={column} />;
if (columnModal.type === "type")
return <TypeChangeModal onClose={onClose} column={column} />;
if (columnModal.type === "config")
return <ColumnConfigModal onClose={onClose} column={column} />;
2023-08-06 13:38:14 +05:30
if (columnModal.type === "setColumnWidth")
return <SetColumnWidthModal onClose={onClose} column={column} />;
return null;
}