import React, { useState, useRef, useEffect } from 'react'; import { Tag } from '../Tag'; import { Icon } from '../Icon'; import { iconTypes } from '../Icon/collection'; import { AccordionProps } from './types'; import styles from './Accordion.styles'; const { SectionStyled, HeaderStyled, H4Styled, DivStyled, DivStyledContent, getThemeColor, } = styles; const Accordion: React.FC = ({ children, hasLockIcon, id, isExpanded = false, subTitle, tagText, theme = 'blue', title, ...props }) => { const [isOpen, setIsOpen] = useState(isExpanded); const [height, setHeight] = useState(''); const [opacity, setOpacity] = useState('0%'); const [heightWhenOpen, setHeightWhenOpen] = useState(''); const formattedID = id.replace(/\s/g, '-'); const divElement = useRef(null); useEffect(() => { setHeightWhenOpen(`${divElement.current?.clientHeight}px`); setHeight(isOpen ? heightWhenOpen : '0px'); setOpacity('100%'); }, []); const toggleOpen = () => { setHeight(isOpen ? '0px' : heightWhenOpen); setIsOpen(!isOpen); }; return ( {title} {subTitle && (

{subTitle}

)} {hasLockIcon && ( )} {tagText && ( )}
{children}
); }; export default Accordion;