Todos los componentes (204)
Selector de cantidad
Elección · QuantityPicker · .amset-quantity
Qué es y cuándo usarlo
El menos y el más de una línea de carrito: − 2 +. Por dentro es un campo de texto numérico propio, así que la cifra también se escribe a mano y nunca se sale de los topes.
Cuándo usarlo
- La cantidad de cada producto en el carrito, o en la ficha antes de «Añadir al carrito».
valueyonChangepara controlarla desde fuera, oinitialValue(1 por defecto) para dejarla suelta;namela envía en un formulario nativo.mines la más baja (1 por defecto).maxcon las existencias: al llegar, el botón de sumar se deshabilita de verdad. DesdewarnFromunidades (5 por defecto) dice cuántas quedan («Quedan 3», o «Sin existencias» con 0); un stock grande no se enseña.- Es la caja de
NumberFieldcon botones:size(30, 36 o 44 px) yvariant(outline,soft,ghost) son los de todos los campos, y en un formulario queda alineado con ellos. readOnlyen un pedido ya cerrado: la cifra se lee y se enfoca, pero no cambia;disabledmientras no se puede tocar.
Cuándo no
- Un número que no es una cantidad de carrito (un importe, un porcentaje, un peso):
NumberField. - Elegir la talla o el metal antes de la cantidad:
VariantPicker.
Teclado: Tab llega a la cifra; flecha arriba y flecha abajo suman y restan uno, Re Pág y Av Pág dan un salto mayor, e Inicio y Fin van a los topes (Fin solo si hay max). Se puede escribir el número: al salir o con Intro, lo que se pasa de un tope se queda en el tope (99 con 4 en stock se queda en 4). Los botones no están en el orden del Tab: con el teclado se usan las flechas.
Accesibilidad: la etiqueta (label) es obligatoria y concreta («Cantidad de Anillo Aurelia»), porque en un carrito hay un selector por línea. Por defecto solo la oye el lector de pantalla (hiddenLabel, puesto de serie); con hiddenLabel={false} a la vista es la etiqueta de los campos. Los botones son botones de verdad, «Quitar uno» y «Añadir uno», con su estado deshabilitado. El aviso de existencias se lee como descripción de la cifra y entra con una transición corta. El foco es el anillo de 2 px de los campos en la caja. Con el dedo, la caja pasa a 48 px, cada botón a 44 px de ancho y la cifra a 16 px, para que el iPhone no amplíe la página.
Contexto: el idioma de LocaleProvider (o de AmsetProvider) decide cómo se escribe la cifra; sin proveedor, es-ES.
Aspecto fino: --amset-quantity-figures (cuántas cifras caben sin que la caja crezca; 3 por defecto) y las variables de los campos, --amset-field-* (alto, relleno, fuente, radio, fondo y borde). Los botones son los de NumberField (amset-number__step) y el aviso, amset-quantity__stock.
Cómo se ve
2 × 89,00 € = 178,00 € · Para el envío gratis faltan 1.
<QuantityPicker label="Unidades" value={unidades} onChange={setUnidades} min={1} max={10} />Props
Se importa con import { QuantityPicker } from '@amset/ui'. Las obligatorias van marcadas.
| Prop | Tipo | Para qué sirve |
|---|---|---|
labelobligatoria | string | Obligatoria y concreta: en un carrito hay un selector por linea, y «Cantidad» a secas repetido seis veces no distingue ninguno. |
className | string | — |
disabled | boolean | Ni los botones ni la cifra responden, y salen del orden del Tab. |
hiddenLabel | boolean | La etiqueta solo para el lector de pantalla, que es lo normal en un carrito. |
initialValue | number | La cantidad al empezar, sin controlarla desde fuera. Por defecto, 1. |
max | number | Las existencias. Al llegar, el boton de sumar se apaga y se dice por que. |
min | number | La cantidad mas baja. Por defecto, 1. |
name | string | Con que nombre viaja en un formulario nativo: la cantidad como numero (`12000`), no su texto (`12.000`). |
onChange | (quantity: number) => void | — |
readOnly | boolean | La cifra se enfoca y se lee, pero no cambia: un pedido ya cerrado. |
size | "sm" | "md" | "lg" | — |
value | number | La cantidad, controlada desde fuera (con `onChange`). |
variant | FieldVariant | — |
warnFrom | number | A partir de cuantas unidades se avisa de que queda poco. Por defecto 5. |
Acepta además los atributos del elemento que pinta: className, style, data-*, aria-* y sus eventos.
Mandos
Estas variables CSS son la forma de adaptarlo. Se declaran sobre el selector del componente, no en :root: la hoja las redeclara en la propia regla y una declaración en el mismo elemento gana siempre.
| Variable | Por defecto |
|---|---|
--amset-quantity-figures | 3 |
Cómo se cambia
.amset-quantity {
--amset-quantity-figures: ...;
}En el banco de pruebas
Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech:
