Saltar al contenido
EspañolEnglish
Todos los componentes (204)

Teléfono

Campos · PhoneField

Qué es y cuándo usarlo

El teléfono con prefijo de país y número en la misma caja, pero como dos controles: un Select para el prefijo y un campo tel para el número. El valor entra y sale en E.164 (+34612345678), que es lo que se guarda; lo que se escribe puede llevar espacios, guiones, puntos o paréntesis, que se quitan solos del valor (en el campo se quedan como se escribieron).

Cuándo usarlo

  • Cualquier teléfono que se vaya a guardar para llamar o mandar un SMS.
  • Controlado, con value y onChange, o sin controlar, con initialValue (o nada): entonces el campo guarda por su cuenta lo que se escribe. En los dos casos, el prefijo elegido se queda aunque el número esté vacío.
  • Trae los 244 países y territorios con prefijo internacional de la UIT, cada uno con su bandera y su nombre en el idioma activo (Intl.DisplayNames), por orden alfabético. prefixes cambia la lista por una propia (se enseña en el orden en que llega), initialPrefix dice el prefijo que sale elegido (+34) e initialCountry el país, que hace falta cuando el prefijo es compartido: +1 sin más es Estados Unidos, initialCountry="CA" es Canadá.
  • Un número guardado se reparte solo por su prefijo, y si el prefijo es compartido, por sus primeras cifras: +1 809… es la República Dominicana y +44 1481… Guernsey.
  • looksLikePhone(value) comprueba la forma antes de enviar (E.164, de 6 a 15 cifras); si el número existe lo sabe quien llame, no el formulario.

Cuándo no

  • Un número que no es un teléfono (un código postal, una referencia): TextField.

Teclado: Tab llega primero al prefijo y luego al número. En el prefijo, Intro, Espacio o las flechas abren la lista con el país elegido a la vista. Con la lista abierta, escribir el nombre busca («Fra» lleva a Francia; el espacio sigue buscando, «Reino U»), las flechas mueven de uno en uno, Re Pág y Av Pág de diez en diez, Inicio y Fin a los extremos, Intro elige y Escape cierra devolviendo el foco. Con el ratón, la rueda desplaza la lista. Al cambiar de país, el número se mantiene.

Accesibilidad: los dos controles tienen nombre propio: «Prefijo del país» y la etiqueta del campo. En el disparador se ve la bandera y el prefijo («+34»); en la lista, cada opción se llama por su país y su prefijo («España (+34)»). La bandera es decorativa. La ayuda y el error describen el número, y en el móvil sale el teclado de teléfono.

Aspecto fino: sin variables propias: usa las del campo (--amset-field-*), que el prefijo hereda, y se ajusta con las clases amset-phone__group, amset-phone__prefix, amset-phone__separator, amset-phone__number y, en la lista, amset-phone__option, amset-phone__country y amset-phone__dial.

Cómo se ve

ES
Para avisarte cuando salga el pedido

Se guarda como +34612345678

<PhoneField
  label="Telefono de contacto"
  hint="Para avisarte cuando salga el pedido"
  value={telefono}
  onChange={setTelefono}
/>

Props

Se importa con import { PhoneField } from '@amset/ui'. Las obligatorias van marcadas.

PropTipoPara qué sirve
labelobligatoriastringObligatoria: un campo sin etiqueta visible no entra en la libreria.
classNamestring—
disabledboolean—
errorstring—
hintstring—
initialCountrystringPais que sale elegido al empezar, por su codigo ISO (`'CA'`). Manda sobre `initialPrefix`, y hace falta cuando el prefijo es compartido: `+1` sin mas es Estados Unidos.
initialPrefixstringPrefijo que sale elegido al empezar. Por defecto, España (`+34`).
initialValuestringSin controlar: el valor con el que empieza, en E.164. Lo que se escribe despues lo guarda el campo.
namestringPara que el telefono viaje en un formulario nativo. Lo que se envia es el numero en E.164 (`+34612345678`), no el trozo que se ve en el campo.
onChange(e164: string) => void—
placeholderstring—
prefixesreadonly CountryPrefix[]La lista de paises. Por defecto, los 244 con prefijo internacional (`DEFAULT_PREFIXES`), con el nombre en el idioma activo y ordenados por ese nombre. Una lista propia se enseña en el orden en que llega.
requiredboolean—
size"sm" | "md" | "lg"—
valuestringControlado, en E.164: `+34612345678`. Con `onChange`, quien lo usa guarda el cambio.
variantFieldVariant—

Acepta además los atributos del elemento que pinta: className, style, data-*, aria-* y sus eventos.

En el banco de pruebas

Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech: