5180 fichiers 38.5 Mo 0 téléchargements 137 vues mis à jour il y a 4 heures ui
nitro-v36-with-renderer-v36 / src / common / CollapsibleSection.tsx
CollapsibleSection.tsx 1.3 Ko Télécharger le fichier
import { Collapsible } from '@base-ui/react/collapsible';
import { FC, ReactNode } from 'react';

export interface CollapsibleSectionProps {
    /** The always-visible heading (what a native `<summary>` held). */
    title: ReactNode;
    children?: ReactNode;
    defaultOpen?: boolean;
    /** Classes for the root, e.g. a column layout for the panel. */
    className?: string;
    /** Extra classes for the heading button. */
    triggerClassName?: string;
}

/**
 * Base UI replacement for `<details><summary>`. The panel stays mounted while
 * closed (hidden), like a native details element keeps its content, so form
 * state and refs inside it survive. The disclosure marker is drawn by css.
 */
export const CollapsibleSection: FC<CollapsibleSectionProps> = (props) => {
    const { title, children = null, defaultOpen = false, className, triggerClassName } = props;

    return (
        <Collapsible.Root className={className} defaultOpen={defaultOpen}>
            <Collapsible.Trigger className={triggerClassName ? `octane-collapsible-trigger ${triggerClassName}` : 'octane-collapsible-trigger'}>{title}</Collapsible.Trigger>
            <Collapsible.Panel keepMounted className="octane-collapsible-panel">
                {children}
            </Collapsible.Panel>
        </Collapsible.Root>
    );
};
15Sujets
1Dépôts
20Membres
7En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser