import React, { useEffect, useState } from "react"; import { DropdownListContainer, DropdownHeader, DropdownIcon, DropdownTitle, ListContainer, ToggleIconClosed, ToggleIconOpened, DropdownOptions, ToggleContainer, } from "./DropdownList.styled"; import PropTypes from "prop-types"; import { useTranslation } from "react-i18next"; const DropdownList = (props) => { const [listShown, setListShown] = useState(props.defaultOpen); const { t } = useTranslation(); useEffect(() => { if (props.open !== null || props.open !== undefined) setListShown(props.open); }, [props.open]); const handleShow = () => { if (props.setIsOpened) props.setIsOpened(!listShown); if (!props.disabled) setListShown((prevState) => !prevState); if (!(props.open !== null || props.open !== undefined)) setListShown((prevState) => !prevState); }; return ( {props.dropdownIcon && ( handleShow() : () => {}} disabled={props.disabled} > {props.dropdownIcon} )} handleShow() : () => {}} textcolor={props.textcolor} disabled={props.disabled} > {props.title} {( props.open !== null && props.open !== undefined ? props.open : listShown ) ? ( handleShow() : () => {}} > {props.toggleIconOpened} ) : ( handleShow() : () => {}} disabled={props.disabled} > {props.toggleIconClosed} )} {props.headerOptions} {props.children} ); }; export default DropdownList; DropdownList.propTypes = { title: PropTypes.string, dropdownIcon: PropTypes.node, toggleIconOpened: PropTypes.node, toggleIconClosed: PropTypes.node, children: PropTypes.node, fullWidth: PropTypes.bool, defaultOpen: PropTypes.bool, toggleIconStyles: PropTypes.any, headerOptions: PropTypes.node, textcolor: PropTypes.string, setIsOpened: PropTypes.func, open: PropTypes.bool, disabled: PropTypes.bool, }; DropdownList.defaultProps = { fullWidth: false, defaultOpen: false, };