TermsIdsTree.jsx 1012 Bytes
Newer Older
DarkForst's avatar
DarkForst committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
import React, { memo, useCallback } from 'react';
import { TreeSelect, Tree } from 'antd';
import Sidebar from '@/components/Custom/Sidebar';
import { getTermsIds } from '@/utils/common';
import omit from 'omit.js';

const TermsIdsTree = (props) => {

  const treeProps = omit(props, ['onChange', 'type'] || {});

  const handleChange = useCallback((key, node) => {
    props.onChange(getTermsIds(node, 'key'))
  }, []);

  const handleSidebarChange = useCallback((key, e) => {
    handleChange(key, e.node)
    // console.log('handleSidebarChange == ', key, node)
  }, []);

  const handleTreeChange = (value) => {
    if(value === undefined) {
      props.onChange(undefined);
    }
  }

  return (
    <>
      {
        props.type === 'select' && <TreeSelect {...treeProps} onSelect={ handleChange } onChange={ handleTreeChange } />
      }
      {
        props.type === 'tree' && <Sidebar {...treeProps} onSelectTreeNode={ handleSidebarChange } />
      }
    </>
  )
}

export default memo(TermsIdsTree);