use crate::prelude::*; /// Define cuándo mostrar los botones de página anterior/siguiente o el formulario de salto a página /// de [`Pager`]. #[derive(AutoDefault, Clone, Copy, Debug, PartialEq)] pub enum PagerVisibility { /// Nunca se muestra. Never, /// Siempre se muestra (en el caso de los botones, se desactivan si no procede). Always, /// Se muestra sólo cuando el número total de páginas supera al número de páginas que se /// muestra en el paginador (ver la documentación de [`Pager`] para más detalle). #[default] Auto, } /// Define la alineación horizontal de [`Pager`] dentro de su contenedor. #[derive(AutoDefault, Clone, Copy, Debug, PartialEq)] pub enum PagerAlign { /// Alineado al comienzo. Start, /// Centrado (comportamiento por defecto). #[default] Center, /// Alineado al final. End, } /// Componente para añadir un **paginador** a un listado. /// /// `Pager` permite navegar por las páginas de un listado de ítems cuando supera el número máximo de /// ítems admitidos por página. Resuelve el enlace para acceder a cada página del listado a partir /// de una ruta base, un conjunto de parámetros de consulta adicionales (orden, búsqueda, etc.) y el /// estado actual ([`current_page`], [`items_per_page`], [`total_items`]). /// /// El componente se renderiza sólo si el listado requiere más de una página. /// /// No pretende sustituir a [`Table`] ni imponer cómo se presenta un listado: sólo modela la /// paginación en sí, normalmente presentada junto a `Table` dentro de un mismo contenedor. /// /// El listado de páginas se flanquea con dos botones de navegación: página anterior y página /// siguiente (las páginas primera y última ya están siempre disponibles como números, así que no /// llevan un botón dedicado). Su visibilidad, junto a la del formulario de salto a página y la del /// resumen de páginas, se controla con [`PagerVisibility`] a través de [`with_prev_next()`], /// [`with_jump()`] y [`with_summary()`]: `Never` los oculta siempre, `Always` los muestra siempre, /// y el valor por defecto `Auto` los muestra sólo cuando el paginador necesita truncar el listado /// de páginas por superar el número máximo de páginas visible. /// /// Un elemento `