index.tsx 867 B

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