diff --git a/code.tsx b/code.tsx index 8974bfe..d5f35d0 100644 --- a/code.tsx +++ b/code.tsx @@ -59,6 +59,7 @@ function getKeyDecorator(column: Column): KeyDecorator { function DatabaseTableWidget() { const [theme, setTheme] = useSyncedState("theme", "#000c86") + const [collapsed, setCollapsed] = useSyncedState("collapsed", false) const [tableName, setTableName] = useSyncedState("tableName", null) const [columns, setColumns] = useSyncedState("columns", (): Column[] => []) @@ -92,6 +93,11 @@ function DatabaseTableWidget() { tooltip: "Edit table", propertyName: "edit", }, + { + itemType: "action", + tooltip: collapsed ? "Expand" : "Collapse", + propertyName: "collapse", + }, ], ({ propertyName, propertyValue }) => { switch (propertyName) { @@ -107,6 +113,8 @@ function DatabaseTableWidget() { }) figma.ui.postMessage(columns) }) + case "collapse": + return setCollapsed((state) => !state) } } ) @@ -143,50 +151,75 @@ function DatabaseTableWidget() { /> - {columns.map((column) => { - let { icon, color } = getKeyDecorator(column) - - return ( + { + collapsed ? ( setCollapsed(false)} > - {icon} - - - {column.name} - - - {column.type}{column.nullable ? "?" : ""} + {columns.length} collapsed fields. Click to reveal - ) - })} + ) : columns.map((column) => { + let { icon, color } = getKeyDecorator(column) + + return ( + + + {icon} + + + {column.name} + + + {column.type}{column.nullable ? "?" : ""} + + + ) + }) + } ) }