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