react-transition-group icon indicating copy to clipboard operation
react-transition-group copied to clipboard

CSS transition not working in nextjs

Open vishnu-sagubandi opened this issue 3 years ago • 2 comments

I am using NextJS with tailwind css and react18 and this is my code, and it is not adding up css classes to children

import React,{useState,useEffect,useRef} from 'react';
import {FiChevronLeft, FiChevronRight} from 'react-icons/fi';
import { CSSTransition} from 'react-transition-group'

const LeadsFilter = (props) => {
    const [open,setOpen]=useState(false);
    const [activeMenu, setActiveMenu] = useState('main');
    const [menuHeight, setMenuHeight] = useState(null);

    const Menu = (props) => {
        return (
            <div className="flex flex-shrink-0 flex-col w-[12rem] h-fit bg-[#FFF] rounded select-none overflow-hidden">
                {props.children}
            </div>
        )
    }

    const NavItem = (props) => {
        return (
            <div className={"flex transition-colors duration-300 items-center w-full h-full p-3 text-[#1a1a1a]/[0.85] text-sm leading-[150%] hover:bg-[#005B98] hover:text-[#FAFAFA] cursor-pointer "+(props.type==="left"?"justify-start":"justify-between")} onClick={() => props.goToMenu && setActiveMenu(props.goToMenu)}>
                {props.type==="left"&&<FiChevronLeft className='text-lg'/>}
                {props.children}
                {!(props.type==="left")&&<FiChevronRight className='text-base'/>}
            </div>
        )
    }

    const DropdownMenu = () => {

        return (
            <div className="flex w-[12rem] h-fit absolute top-[2rem] right-0 z-50 bg-[#FFF] rounded select-none overflow-hidden" >
                <CSSTransition
                    in={activeMenu === 'main'}
                    timeout={500}
                    classNames="menu-primary"
                    onExit={()=>console.log("Exit")}
                    unmountOnExit
                    >
                        <div className='main'>
                            <Menu>
                                <NavItem goToMenu="datewise">Datewise</NavItem>
                                <NavItem goToMenu="status">Status</NavItem>
                                <NavItem goToMenu="source">Source</NavItem>
                            </Menu>
                        </div>
                </CSSTransition>
                <CSSTransition
                    in={activeMenu === 'datewise'}
                    timeout={500}
                    classNames="menu-secondary"
                    unmountOnExit
                    >
                        <div className='main'>
                    <Menu>
                        <NavItem goToMenu="main" type="left">Datewise</NavItem>
                        <NavItem>Sub NavItem 1</NavItem>
                        <NavItem>Sub NavItem 2</NavItem>
                        <NavItem>Sub NavItem 3</NavItem>
                    </Menu>
                    </div>
                </CSSTransition>
                <CSSTransition
                    in={activeMenu === 'status'}
                    timeout={500}
                    classNames="menu-secondary"
                    unmountOnExit>
                        <div className='main'>
                    <Menu>
                        <NavItem goToMenu="main" type="left">Status</NavItem>
                        <NavItem>Sub NavItem 1</NavItem>
                        <NavItem>Sub NavItem 2</NavItem>
                        <NavItem>Sub NavItem 3</NavItem>
                    </Menu>
                    </div>
                </CSSTransition>
                <CSSTransition
                    in={activeMenu === 'source'}
                    timeout={500}
                    classNames="menu-secondary"
                    unmountOnExit>
                        <div className='main'>
                    <Menu>
                        <NavItem goToMenu="main" type="left">Source</NavItem>
                        <NavItem>Sub NavItem 1</NavItem>
                        <NavItem>Sub NavItem 2</NavItem>
                        <NavItem>Sub NavItem 3</NavItem>
                    </Menu>
                    </div>
                </CSSTransition>
            </div>
        )
    }

    return (
        <div className="flex w-fit h-fit relative">
            <span onClick={()=>setOpen(!open)}>{React.Children.map(props.children,(child)=>{
                if(child.type?.name==="Title")return child;
            })}
            </span>
            {open && <DropdownMenu/>}
        </div>
    )
}

const Title = (props) => {
        return (
            <div className="flex w-fit h-fit">
                {props.children}
            </div>
        )
    }

LeadsFilter.Title=Title;

export default LeadsFilter;

Can anyone plz help me out??

vishnu-sagubandi avatar Jun 18 '22 12:06 vishnu-sagubandi

I am having same exact issue. It doesn't even attempt to add the classes.

cheryl-c-tirerack avatar Jun 14 '23 22:06 cheryl-c-tirerack

Is there any solution for this?

stvmachine avatar Sep 18 '23 04:09 stvmachine