import React from "react";
import styles from "./index.less";
import { Transfer, Tree } from "antd";
const { TreeNode } = Tree;
// Customize Table Transfer
const isChecked = (selectedKeys, eventKey) => {
return selectedKeys.indexOf(eventKey) !== -1;
};
const generateTree = (treeNodes = [], checkedKeys = []) => {
return treeNodes.map(({ children, ...props }) => (
{generateTree(children, checkedKeys)}
));
};
const TreeTransfer = ({ dataSource, targetKeys, ...restProps }) => {
const transferDataSource = [];
function flatten(list = []) {
list.forEach(item => {
transferDataSource.push(item);
flatten(item.children);
});
}
flatten(dataSource);
return (
item.title}
showSelectAll={false}
>
{({ direction, onItemSelect, selectedKeys }) => {
if (direction === "left") {
const checkedKeys = [...selectedKeys, ...targetKeys];
return (
{
onItemSelect(eventKey, !isChecked(checkedKeys, eventKey));
}}
onSelect={(
_,
{
node: {
props: { eventKey }
}
}
) => {
onItemSelect(eventKey, !isChecked(checkedKeys, eventKey));
}}
>
{generateTree(dataSource, targetKeys)}
);
}
}}
);
};
const treeData = [
{ key: "0-0", title: "0-0" },
{
key: "0-1",
title: "0-1",
children: [
{ key: "0-1-0", title: "0-1-0" },
{ key: "0-1-1", title: "0-1-1" }
]
},
{ key: "0-2", title: "0-3" }
];
class App extends React.Component {
state = {
targetKeys: []
};
onChange = targetKeys => {
console.log("Target Keys:", targetKeys);
this.setState({ targetKeys });
};
render() {
const { targetKeys } = this.state;
return (
);
}
}
export default () => (
);