import React, { useRef, forwardRef } from 'react'; import range from 'lodash/range'; import get from 'lodash/get'; import actions from 'providers/Store/actions' import { useStore } from 'providers/Store'; import { IconChevronRight, IconDots } from '@tabler/icons'; import classnames from 'classnames'; import Dropdown from 'components/Dropdown'; import RequestMethod from './RequestMethod'; import StyledWrapper from './StyledWrapper'; const CollectionItem = ({item, collectionUid}) => { const [store, storeDispatch] = useStore(); const { activeRequestTabUid } = store; const dropdownTippyRef = useRef(); const MenuIcon = forwardRef((props, ref) => { return (
); }); const iconClassName = classnames({ 'rotate-90': item.collapsed }); const itemRowClassName = classnames('flex collection-item-name items-center', { 'item-focused-in-tab': item.uid == activeRequestTabUid }); const handleClick = (event) => { let tippyEl = get(dropdownTippyRef, 'current.reference'); if(tippyEl && tippyEl.contains && tippyEl.contains(event.target)) { return; } storeDispatch({ type: actions.SIDEBAR_COLLECTION_ITEM_CLICK, itemUid: item.uid, collectionUid: collectionUid }); }; const addRequest = () => { storeDispatch({ type: actions.ADD_REQUEST, itemUid: item.uid, collectionUid: collectionUid }); }; let indents = range(item.depth); const onDropdownCreate = (ref) => dropdownTippyRef.current = ref; return (
{indents && indents.length ? indents.map((i) => { return (
 {/* Indent */}
); }) : null}
{item.type === 'folder' ? ( ) : null}
{item.name}
} placement='bottom-start'>
{ dropdownTippyRef.current.hide(); addRequest(); }}> New Request
{ dropdownTippyRef.current.hide(); }}> New Folder
{ dropdownTippyRef.current.hide(); }}> Rename
{ dropdownTippyRef.current.hide(); }}> Delete
{item.collapsed ? (
{item.items && item.items.length ? item.items.map((i) => { return }) : null}
) : null}
); }; export default CollectionItem;