Saltearse al contenido

Panel expandible (ExpandablePanel)

ExpandablePanel (Panel expandible) es un componente versátil que permite que el contenido sea plegable, mejorando la organización de la interfaz de usuario al ocultar contenido que no es inmediatamente relevante para el usuario. Este componente puede funcionar en modo controlado o incontrolado, con características adicionales como un modo invisible para una interfaz de usuario más sutil, y un modo de campo opcional para alinearse con el estilo de los campos de formulario.

Para usar el ExpandablePanel, impórtalo desde tus componentes y proporciona las props necesarias incluyendo title (título), children (elementos secundarios), y props de control como expanded (expandido), onExpandedChange (al cambiar estado expandido), y props de estilo como titleClassName (clase del título), className (clase CSS).

Un ejemplo que muestra el uso básico del componente ExpandablePanel.

import React, { useState } from "react";
import { ExpandablePanel } from "@firecms/ui";
export default function ExpandablePanelBasicDemo() {
const [expanded, setExpanded] = useState(false);
return (
<ExpandablePanel
title={"Click to expand"}
expanded={expanded}
onExpandedChange={setExpanded}
>
<div className={"p-4"}>
Here is some content that was hidden but now is visible!
</div>
</ExpandablePanel>
);
}

Esta variante muestra el ExpandablePanel utilizado como un campo en un formulario, demostrando la combinación de la propiedad asField (como campo).

import React, { useState } from "react";
import { ExpandablePanel } from "@firecms/ui";
export default function ExpandablePanelFieldDemo() {
const [expanded, setExpanded] = useState(false);
return (
<ExpandablePanel
title={"Field Expandable Panel"}
expanded={expanded}
onExpandedChange={setExpanded}
asField={true}
>
<div className={"p-4"}>
This Expandable Panel is styled as a field, making it a great choice for forms.
</div>
</ExpandablePanel>
);
}

Un ejemplo de ExpandablePanel donde los bordes del panel se hacen invisibles para una integración más perfecta en la interfaz de usuario circundante.

import React, { useState } from "react";
import { ExpandablePanel } from "@firecms/ui";
export default function ExpandablePanelInvisibleDemo() {
const [expanded, setExpanded] = useState(false);
return (
<ExpandablePanel
title={"Invisible Expandable Panel"}
expanded={expanded}
onExpandedChange={setExpanded}
invisible={true}
>
<div className={"p-4"}>
This content is hidden inside an invisible panel, making the UI cleaner.
</div>
</ExpandablePanel>
);
}