♻️ (html): Añade valores extra a Props

- Reordena campos, variantes y métodos para mayor consistencia interna.
- Añade `extra_or`, `extra_or_default` y `extra_or_else` a `Props`.
- Mejora la documentación y amplía los tests de integración.
This commit is contained in:
Manuel Cillero 2026-07-09 00:05:28 +02:00
parent a26aa4d30a
commit 25713a8a13
26 changed files with 578 additions and 227 deletions

View file

@ -21,7 +21,7 @@ use crate::theme::*;
/// ```
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Container {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve el tipo semántico del contenedor.
container_kind: bs::container::Kind,
@ -141,7 +141,7 @@ impl Container {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
///
/// También acepta clases predefinidas para:
///

View file

@ -39,7 +39,7 @@ use crate::theme::*;
/// ```
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Dropdown {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve el título del menú desplegable.
title: L10n,
@ -185,7 +185,7 @@ impl Dropdown {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
#[builder_fn]
pub fn with_prop(mut self, op: PropsOp) -> Self {
self.props.alter_prop(op);

View file

@ -45,7 +45,7 @@ pub enum ItemKind {
/// asociada, manteniendo una interfaz común para renderizar todos los elementos del menú.
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Item {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve el tipo de elemento representado.
item_kind: ItemKind,
@ -266,7 +266,7 @@ impl Item {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
#[builder_fn]
pub fn with_prop(mut self, op: PropsOp) -> Self {
self.props.alter_prop(op);

View file

@ -15,7 +15,7 @@ pub enum IconKind {
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Icon {
/// Devuelve los atributos HTML y clases CSS del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
icon_kind: IconKind,
aria_label: AttrL10n,
@ -110,7 +110,7 @@ impl Icon {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
#[builder_fn]
pub fn with_prop(mut self, op: PropsOp) -> Self {
self.props.alter_prop(op);

View file

@ -14,7 +14,7 @@ use crate::theme::*;
/// - Aplicar el texto alternativo `alt` con **localización** mediante [`L10n`].
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Image {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve las dimensiones de la imagen.
size: bs::image::Size,
@ -86,7 +86,7 @@ impl Image {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
///
/// También acepta clases predefinidas para:
///

View file

@ -34,7 +34,7 @@ use crate::theme::*;
/// ```
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Nav {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve el estilo visual seleccionado.
nav_kind: bs::nav::Kind,
@ -103,7 +103,7 @@ impl Nav {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
#[builder_fn]
pub fn with_prop(mut self, op: PropsOp) -> Self {
self.props.alter_prop(op);

View file

@ -59,7 +59,7 @@ impl ItemKind {
/// asociada, manteniendo una interfaz común para renderizar todos los elementos del menú.
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Item {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve el tipo de elemento representado.
item_kind: ItemKind,
@ -271,7 +271,7 @@ impl Item {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
#[builder_fn]
pub fn with_prop(mut self, op: PropsOp) -> Self {
self.props.alter_prop(op);

View file

@ -137,7 +137,7 @@ const TOGGLE_OFFCANVAS: &str = "offcanvas";
/// ```
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Navbar {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve el punto de ruptura configurado.
expand: token::BreakPoint,
@ -346,7 +346,7 @@ impl Navbar {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
///
/// También acepta clases predefinidas para:
///

View file

@ -43,7 +43,7 @@ use crate::theme::*;
/// ```
#[derive(AutoDefault, Clone, Debug, Getters)]
pub struct Offcanvas {
/// Devuelve identificador, clases CSS y atributos HTML del componente.
/// Devuelve identificador, clases CSS, atributos HTML y valores extra del componente.
props: Props,
/// Devuelve el título del panel.
title: L10n,
@ -100,7 +100,7 @@ impl Offcanvas {
self
}
/// Modifica identificador, clases CSS o atributos HTML del componente.
/// Modifica identificador, clases CSS, atributos HTML o valores extra del componente.
#[builder_fn]
pub fn with_prop(mut self, op: PropsOp) -> Self {
self.props.alter_prop(op);