import BaseFoundation, { DefaultAdapter } from "../base/foundation"; export interface CollapsibleFoundationProps { isOpen?: boolean; duration?: number; keepDOM?: boolean; className?: string; collapseHeight?: number; reCalcKey?: number | string; id?: string; fade?: boolean } export interface CollapsibleFoundationState { domInRenderTree: boolean; domHeight: number; visible: boolean; isTransitioning: boolean } export interface CollapsibleAdapter

, S = Record> extends DefaultAdapter { setDOMInRenderTree: (isInRenderTree: boolean) => void; setDOMHeight: (domHeight: number) => void; setVisible: (visible: boolean) => void; setIsTransitioning: (isTransitioning: boolean) => void } class CollapsibleFoundation extends BaseFoundation, CollapsibleFoundationProps, CollapsibleFoundationState> { constructor(adapter: CollapsibleAdapter) { super({ ...adapter }); } updateDOMInRenderTree = (isInRenderTree) => { this._adapter.setDOMInRenderTree(isInRenderTree); } updateDOMHeight = (domHeight: number) => { this._adapter.setDOMHeight(domHeight); } updateVisible = (visible: boolean) => { this._adapter.setVisible(visible); } updateIsTransitioning = (isTransitioning: boolean) => { this._adapter.setIsTransitioning(isTransitioning); } } export default CollapsibleFoundation;