UNPKG

@krowdy-ui/views

Version:

React components that implement Google's Material Design.

74 lines (65 loc) 1.98 kB
import React from 'react'; import PropTypes from 'prop-types'; import SortableTree, { removeNodeAtPath } from 'react-sortable-tree'; import Theme from './Theme'; import { IconButton } from '@krowdy-ui/core'; import { Close as CloseIcon, Edit as EdiIcon } from '@material-ui/icons'; var _ref = /*#__PURE__*/React.createElement(CloseIcon, { fontSize: "small" }); var _ref2 = /*#__PURE__*/React.createElement(EdiIcon, { fontSize: "small" }); function FiltersTree(props) { const { treeData, // : treeDataProps, onChange = () => {}, onClickEdit = () => {}, dots } = props; // const [ treeData, setTreeData ] = React.useState([]) // React.useEffect(() => { // setTreeData(treeDataProps) // eslint-disable-next-line react-hooks/exhaustive-deps // }, [ treeDataProps ]) const _handleUpdateTreeData = data => { // setTreeData(data) onChange(data); }; const _handleClickDelete = rowInfo => () => { const newTree = removeNodeAtPath({ getNodeKey: ({ treeIndex }) => treeIndex, path: rowInfo.path, treeData }); _handleUpdateTreeData(newTree); }; const _handleClickEdit = rowInfo => () => { onClickEdit(rowInfo.node); }; return /*#__PURE__*/React.createElement(SortableTree, { generateNodeProps: rowInfo => ({ buttons: [/*#__PURE__*/React.createElement(React.Fragment, { key: rowInfo.node._id }, /*#__PURE__*/React.createElement(IconButton, { onClick: _handleClickDelete(rowInfo), size: "small" }, _ref), /*#__PURE__*/React.createElement(IconButton, { onClick: _handleClickEdit(rowInfo), size: "small" }, _ref2))], dots }), isVirtualized: false, onChange: _handleUpdateTreeData, theme: Theme, treeData: treeData }); } process.env.NODE_ENV !== "production" ? FiltersTree.propTypes = { onChange: PropTypes.func, treeData: PropTypes.array } : void 0; export default FiltersTree;