({ index, data })
| 16 | import { nanoid } from "nanoid"; |
| 17 | |
| 18 | export default function TypeInfo({ index, data }) { |
| 19 | const { layout } = useLayout(); |
| 20 | const { deleteType, updateType } = useTypes(); |
| 21 | const { tables, updateField } = useDiagram(); |
| 22 | const { setUndoStack, setRedoStack } = useUndoRedo(); |
| 23 | const [editField, setEditField] = useState({}); |
| 24 | const { t } = useTranslation(); |
| 25 | |
| 26 | // TODO: remove indexes, not a valid case after adding id to types |
| 27 | const typeId = data.id ?? index; |
| 28 | |
| 29 | return ( |
| 30 | <div id={`scroll_type_${typeId}`}> |
| 31 | <Collapse.Panel |
| 32 | header={ |
| 33 | <div className="overflow-hidden text-ellipsis whitespace-nowrap"> |
| 34 | {data.name} |
| 35 | </div> |
| 36 | } |
| 37 | itemKey={`${index}`} |
| 38 | > |
| 39 | <div className="flex items-center mb-2.5"> |
| 40 | <div className="text-md font-semibold break-keep">{t("name")}: </div> |
| 41 | <Input |
| 42 | value={data.name} |
| 43 | readonly={layout.readOnly} |
| 44 | validateStatus={data.name === "" ? "error" : "default"} |
| 45 | placeholder={t("name")} |
| 46 | className="ms-2" |
| 47 | onChange={(value) => { |
| 48 | updateType(typeId, { name: value }); |
| 49 | tables.forEach((table) => { |
| 50 | table.fields.forEach((field) => { |
| 51 | if (field.type.toLowerCase() === data.name.toLowerCase()) { |
| 52 | updateField(table.id, field.id, { |
| 53 | type: value.toUpperCase(), |
| 54 | }); |
| 55 | } |
| 56 | }); |
| 57 | }); |
| 58 | }} |
| 59 | onFocus={(e) => setEditField({ name: e.target.value })} |
| 60 | onBlur={(e) => { |
| 61 | if (e.target.value === editField.name) return; |
| 62 | |
| 63 | const updatedFields = tables.reduce((acc, table) => { |
| 64 | table.fields.forEach((field, i) => { |
| 65 | if (field.type.toLowerCase() === data.name.toLowerCase()) { |
| 66 | acc.push({ tid: table.id, fid: i }); |
| 67 | } |
| 68 | }); |
| 69 | return acc; |
| 70 | }, []); |
| 71 | |
| 72 | setUndoStack((prev) => [ |
| 73 | ...prev, |
| 74 | { |
| 75 | action: Action.EDIT, |
nothing calls this directly
no test coverage detected