index.tsx 849 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import React, { useState, useEffect } from 'react';
  2. import {
  3. Wrapper, Label, ContentWrapper, Content,
  4. } from './styled';
  5. type Props = {
  6. label: React.ReactNode;
  7. children?: React.ReactNode;
  8. isActive?: boolean;
  9. };
  10. const Collapse: React.FunctionComponent<Props> = ({
  11. label = '',
  12. children = '',
  13. isActive = false,
  14. }: Props) => {
  15. const [isCollapse, setCollapse] = useState(true);
  16. const handleClick = (): void => {
  17. setCollapse(!isCollapse);
  18. };
  19. useEffect(() => {
  20. setCollapse(!isActive);
  21. }, [isActive]);
  22. return (
  23. <Wrapper>
  24. <Label onClick={handleClick}>
  25. {label}
  26. </Label>
  27. { children ? (
  28. <ContentWrapper isCollapse={isCollapse}>
  29. <Content>
  30. {children}
  31. </Content>
  32. </ContentWrapper>
  33. ) : null}
  34. </Wrapper>
  35. );
  36. };
  37. export default Collapse;