import { createSignal, FlowComponent, JSX, mergeProps } from "solid-js"; import Collapsible from "./Collapsible"; const createAccordion = (defaultItem: number | null = 0) => { const [item, setItem] = createSignal(defaultItem); const AccordionItem: FlowComponent<{ label?: JSX.Element; item?: number; activeTitleColor?: string; }> = (p) => { const props = mergeProps({ item: Math.random() }, p); return ( {props.label} } activeTitleColor={props.activeTitleColor} onChange={(evt: any) => setItem(evt.currentTarget.checked && props.item) } > {props.children} ); }; return [AccordionItem, item, setItem] as [ typeof AccordionItem, typeof item, typeof setItem ]; }; export default createAccordion;