import { CSSProperties, ReactNode } from 'react' import classNames from 'classnames' import { CommonComponentProps } from '../../utils/types' import { Icon } from '../icon/Icon' import { Collapse } from '../collapse/Collapse' import './Accordion.scss' export interface AccordionItemProps extends CommonComponentProps { className?: string style?: CSSProperties children?: ReactNode title?: ReactNode icon?: ReactNode | ((active: boolean) => ReactNode) name?: any activeName?: any multiple?: boolean disabled?: boolean duration?: number onClick?: () => void } export function AccordionItem(props: AccordionItemProps) { const { className, style, children, title, icon, name, activeName, multiple, disabled, duration = 300, onClick, ...restProps } = props const handleClick = () => { if (!disabled) { onClick?.() } } const active = multiple ? activeName.includes(name) : name === activeName const itemClass = classNames( 's-accordion-item', { 's-accordion-item-active': active, 's-accordion-item-disabled': disabled, }, className ) return (
{title}
{typeof icon === 'function' ? icon(active) : icon ?? ( )}
{children}
) } export default AccordionItem