import { useMemo, useState } from "react"; import { Action, ObjectType } from "../../../data/constants"; import { Input, Button, Popover, Select } from "@douyinfe/semi-ui"; import { IconMore, IconKeyStroked } from "@douyinfe/semi-icons"; import { useEnums, useDiagram, useTypes, useUndoRedo } from "../../../hooks"; import { useTranslation } from "react-i18next"; import { dbToTypes } from "../../../data/datatypes"; import { DragHandle } from "../../SortableList/DragHandle"; import FieldDetails from "./FieldDetails"; export default function TableField({ data, tid, index }) { const { updateField } = useDiagram(); const { types } = useTypes(); const { enums } = useEnums(); const { tables, database } = useDiagram(); const { t } = useTranslation(); const { setUndoStack, setRedoStack } = useUndoRedo(); const [editField, setEditField] = useState({}); const table = useMemo(() => tables.find((t) => t.id === tid), [tables, tid]); return (
updateField(tid, data.id, { name: value })} onFocus={(e) => setEditField({ name: e.target.value })} onBlur={(e) => { if (e.target.value === editField.name) return; setUndoStack((prev) => [ ...prev, { action: Action.EDIT, element: ObjectType.TABLE, component: "field", tid: tid, fid: index, undo: editField, redo: { name: e.target.value }, message: t("edit_table", { tableName: table.name, extra: "[field]", }), }, ]); setRedoStack([]); }} />