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`](Self::current_page), [`items_per_page`](Self::items_per_page), /// [`total_items`](Self::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, se /// controla con [`PagerVisibility`] a través de [`with_prev_next()`](Self::with_prev_next) y /// [`with_jump()`](Self::with_jump): `Never` los oculta siempre, `Always` los muestra siempre (en /// el caso de los botones, con el extremo correspondiente desactivado en vez de oculto), y `Auto` /// -el valor por defecto de ambos- los muestra sólo cuando el número total de páginas supera al /// número de páginas que se muestra en el paginador; en ese caso, si la página actual coincide con /// un extremo, el botón correspondiente se muestra igualmente, pero desactivado. /// /// Un elemento `