import React, { useState, useRef } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faChevronRight } from "@fortawesome/free-solid-svg-icons"; interface Props { children: React.ReactNode; defaultCollapsed?: boolean; className?: string; contentClassName?: string; title?: React.ReactNode; } export default function ExpandableCell({ children, defaultCollapsed = true, className, contentClassName = "expandable-cell__content_defaults", title, }: Props) { const [open, setOpen] = useState(!defaultCollapsed); const contentRef = useRef(null); const contentHeight = contentRef.current ? contentRef.current.scrollHeight : 0; const calcMaxHeight = open ? `${contentHeight}px` : "0px"; const classes = ["expandable-cell", className, open ? "is-open" : ""] .filter(Boolean) .join(" "); return (
{children}
); }