@sqlrooms/schema-tree 0.28.0-rc.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -13
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,19 +1,58 @@
|
|
|
1
|
-
|
|
1
|
+
React components for rendering DuckDB database/schema/table/column trees in SQLRooms apps.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Installation
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```bash
|
|
6
|
+
npm install @sqlrooms/schema-tree @sqlrooms/duckdb @sqlrooms/ui
|
|
7
|
+
```
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
- Column type badges
|
|
9
|
-
- Context menus for actions (e.g. copying column names)
|
|
10
|
-
- Customizable node rendering
|
|
11
|
-
- Hover states and visual feedback
|
|
9
|
+
## What this package provides
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
- `TableSchemaTree` for rendering full schema hierarchies
|
|
12
|
+
- node components (`DatabaseTreeNode`, `SchemaTreeNode`, `TableTreeNode`, `ColumnTreeNode`)
|
|
13
|
+
- `TreeNodeActionsMenu` for context-style node actions
|
|
14
|
+
- `defaultRenderTableSchemaNode` for quick customization
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
- `ColumnTreeNode`: Specialized node for displaying column information
|
|
17
|
-
- `TreeNodeActionsMenu`: Reusable menu component for node actions
|
|
16
|
+
## Basic usage
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
```tsx
|
|
19
|
+
import {TableSchemaTree} from '@sqlrooms/schema-tree';
|
|
20
|
+
import {useRoomStore} from './store';
|
|
21
|
+
|
|
22
|
+
export function SchemaExplorer() {
|
|
23
|
+
const schemaTrees = useRoomStore((state) => state.db.schemaTrees ?? []);
|
|
24
|
+
|
|
25
|
+
if (!schemaTrees.length) {
|
|
26
|
+
return <div className="p-2 text-sm">No schema loaded yet.</div>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<TableSchemaTree
|
|
31
|
+
className="h-full"
|
|
32
|
+
schemaTrees={schemaTrees}
|
|
33
|
+
skipSingleDatabaseOrSchema
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Custom node rendering
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import {DbSchemaNode} from '@sqlrooms/duckdb';
|
|
43
|
+
import {defaultRenderTableSchemaNode, TableSchemaTree} from '@sqlrooms/schema-tree';
|
|
44
|
+
|
|
45
|
+
const renderNode = (node: DbSchemaNode, isOpen: boolean) => (
|
|
46
|
+
<div className={isOpen ? 'opacity-100' : 'opacity-90'}>
|
|
47
|
+
{defaultRenderTableSchemaNode(node)}
|
|
48
|
+
</div>
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
<TableSchemaTree schemaTrees={schemaTrees} renderNode={renderNode} />;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Notes
|
|
55
|
+
|
|
56
|
+
- `schemaTrees` comes from the DuckDB slice (`state.db.schemaTrees`).
|
|
57
|
+
- Call `state.db.refreshTableSchemas()` after table changes to keep the tree up to date.
|
|
58
|
+
- This package is used by SQLRooms SQL editor table-structure panels.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/schema-tree",
|
|
3
|
-
"version": "0.28.0
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"author": "SQLRooms Contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"typedoc": "typedoc"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@sqlrooms/data-table": "0.28.0
|
|
29
|
-
"@sqlrooms/duckdb": "0.28.0
|
|
30
|
-
"@sqlrooms/ui": "0.28.0
|
|
31
|
-
"@sqlrooms/utils": "0.28.0
|
|
28
|
+
"@sqlrooms/data-table": "0.28.0",
|
|
29
|
+
"@sqlrooms/duckdb": "0.28.0",
|
|
30
|
+
"@sqlrooms/ui": "0.28.0",
|
|
31
|
+
"@sqlrooms/utils": "0.28.0",
|
|
32
32
|
"lucide-react": "^0.556.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"@types/react": "^19.1.13",
|
|
40
40
|
"@types/react-dom": "^19.1.9"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "dcac54f8adf77240e293c93d224a0ce9fd8142a9"
|
|
43
43
|
}
|