import { useState } from "react";
import { CheckTreePicker } from "rsuite";
import SpinnerIcon from "@rsuite/icons/legacy/Spinner";
import "rsuite/dist/rsuite.min.css";
export default function App() {
const [value, setValue] = useState([]);
const [data, setData] = useState([]);
const customData = [
{
label: "Algorithms",
value: 1,
children: [
{
label: "Searching",
value: 2,
children: [
{
label: "Binary Search",
value: 3,
},
{
label: "Linear Search",
value: 4,
},
],
},
{
label: "Sorting",
value: 5,
children: [
{
label: "Selection Sort",
value: 6,
},
{
label: "Bubble Sort",
value: 7,
},
{
label: "Merge Sort",
value: 8,
},
],
},
],
},
];
return (
<center>
<div>
<h2>GeeksforGeeks</h2>
<h4 style={{ color: "green" }}>
React Suite CheckTreePicker Async</h4>
<div style={{ marginTop: 20, width: 800 }}>
<CheckTreePicker
data={customData}
value={value}
style={{ width: 280 }}
onChange={(value) => setValue(value)}
disabledItemValues={[4, 6, 7]}
onOpen={() => {
if (data.length === 0) {
setTimeout(() => {
setData([
{
label: "Parent Node",
value: "1",
children: [],
},
]);
}, 1000);
}
}}
renderMenu={(menuTree) => {
if (data.length === 0) {
return (
<p style={
{ padding: 6, textAlign: "center" }}>
<SpinnerIcon size="md" spin />
Loading...
</p>
);
}
return menuTree;
}}
getChildren={(activeNode) =>
new Promise((resolve) => {
setTimeout(() => {
resolve([
{
label: "Child Node",
value: `${activeNode.refKey}-0`,
children: [],
},
{
label: "Child Node",
value: `${activeNode.refKey}-1`,
children: [],
},
]);
}, 1000);
})
}
/>
</div>
</div>
</center>
);
}