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",
allowRangeSelection=False,
# checkOnSpace=True,
clearSelectionOnOutsideClick=True,
# expandOnClick=False,
# expandOnSpace=False,
levelOffset="xl",
selectOnClick=True,
data=data,
checkboxes=True,
checked=["node_modules/@mantine/form/index.d.ts"],
selected=["node_modules/@mantine/form/index.d.ts"],
expanded=[
"node_modules",
"node_modules/@mantine",
"node_modules/@mantine/form",
"node_modules/@mantine/form/index.d.ts",
],
),
dmc.CodeHighlight(id="expanded", code="", language="json"),
dmc.CodeHighlight(id="checked", code="", language="json"),
dmc.CodeHighlight(id="selected", code="", language="json"),
],
align="flex-start",
grow=True,
),
],
theme={"primaryColor": "pink"},
)
@callback(
Output("expanded", "code"),
Output("checked", "code"),
Output("selected", "code"),
Input("tree", "expanded"),
Input("tree", "checked"),
Input("tree", "selected"),
)
def tree_callback(expanded, checked, selected):
expanded_code = json.dumps({"expanded": expanded}, indent=4)
checked_code = json.dumps({"checked": checked}, indent=4)
selected_code = json.dumps({"selected": selected}, indent=4)
return expanded_code, checked_code, selected_code
if __name__ == "__main__":
app.run(debug=True)