import dash_mantine_components as dmc
from dash import Input, Output, callback, Dash, _dash_renderer
import json
_dash_renderer._set_react_version("18.2.0")
app = Dash()
data = [
{
"label": "src",
"value": "src",
"children": [
{
"label": "components",
"value": "src/components",
"children": [
{"label": "Accordion.tsx", "value": "src/components/Accordion.tsx"},
{"label": "Tree.tsx", "value": "src/components/Tree.tsx"},
{"label": "Button.tsx", "value": "src/components/Button.tsx"},
],
},
],
},
{
"label": "node_modules",
"value": "node_modules",
"children": [
{
"label": "react",
"value": "node_modules/react",
"children": [
{"label": "index.d.ts", "value": "node_modules/react/index.d.ts"},
{
"label": "package.json",
"value": "node_modules/react/package.json",
},
],
},
{
"label": "@mantine",
"value": "node_modules/@mantine",
"children": [
{
"label": "core",
"value": "node_modules/@mantine/core",
"children": [
{
"label": "index.d.ts",
"value": "node_modules/@mantine/core/index.d.ts",
},
{
"label": "package.json",
"value": "node_modules/@mantine/core/package.json",
},
],
},
{
"label": "hooks",
"value": "node_modules/@mantine/hooks",
"children": [
{
"label": "index.d.ts",
"value": "node_modules/@mantine/hooks/index.d.ts",
},
{
"label": "package.json",
"value": "node_modules/@mantine/hooks/package.json",
},
],
},
{
"label": "form",
"value": "node_modules/@mantine/form",
"children": [
{
"label": "index.d.ts",
"value": "node_modules/@mantine/form/index.d.ts",
},
{
"label": "package.json",
"value": "node_modules/@mantine/form/package.json",
},
],
},
],
},
],
},
{
"label": "package.json",
"value": "package.json",
},
{
"label": "tsconfig.json",
"value": "tsconfig.json",
},
]
app.layout = dmc.MantineProvider(
[
dmc.Group(
[
dmc.Tree(
id="tree",
data=data,
levelOffset="xl",
expanded=[
"node_modules",
"node_modules/@mantine",
"node_modules/@mantine/form",
"node_modules/@mantine/form/index.d.ts",
],
checkboxes=True,
checked=["node_modules/@mantine/form/index.d.ts"],
),
dmc.CodeHighlight(id="expanded", code="", language="json"),
dmc.CodeHighlight(id="checked", code="", language="json"),
],
align="flex-start",
grow=True,
)
],
theme={"primaryColor": "pink"},
)
@callback(
Output("expanded", "code"),
Output("checked", "code"),
Input("tree", "expanded"),
Input("tree", "checked"),
)
def tree_callback(expanded, checked):
expanded_code = json.dumps({"expanded": expanded}, indent=4)
checked_code = json.dumps({"checked": checked}, indent=4)
return expanded_code, checked_code
if __name__ == "__main__":
app.run(debug=True)