enes

TagPicker AI

Un TagPicker combina un campo de texto y un menú desplegable, y permite elegir varias opciones de una lista o escribir una propia. Cada elección se convierte en un Tag descartable que se muestra en el control.

Uso

<script>
	import { TagPicker, TagPickerOption } from 'fluentui-svelte';

	const options = ['John Doe', 'Jane Doe', 'Max Mustermann'];

	let selectedOptions = $state([]);
</script>

<TagPicker
	bind:selectedOptions
	inputAttributes={{ 'aria-label': 'Select Employees' }}
	tagGroupProps={{ 'aria-label': 'Selected Employees' }}
>
	{#each options as option (option)}
		<TagPickerOption value={option}>{option}</TagPickerOption>
	{/each}
</TagPicker>

Navegación con teclado

Pulsar Backspace en un input vacío elimina el último tag, así que avisa a tus usuarios. ArrowDown y ArrowUp abren la lista y recorren las opciones, Enter elige la opción bajo el cursor, y Escape o Tab cierran la lista. Home y End mueven el cursor de texto del input.

Forma

Usa shape: rounded (predeterminada), square o circular.

Los tags heredan shape. Usa tagGroupProps.shape para sobrescribirlo.

Por defecto

Enlaza selectedOptions con los valores de las opciones elegidas y pasa los elementos TagPickerOption como hijos. El snippet tag renderiza el tag de una opción elegida, aquí con un Avatar como media. Renderiza un Tag con el value recibido.

Botón

Pasa readonly mediante inputAttributes para que la entrada sea de solo lectura y el TagPicker funcione como un botón que abre la lista.

Deshabilitado

Un TagPicker deshabilitado no se puede abrir, escribir en él ni modificar, y sus tags no se pueden descartar.

Icono de expansión

Reemplaza la flecha del desplegable con expandIcon, un componente o un snippet, o quítala pasando null.

Filtrado

Las opciones se filtran mientras el usuario escribe: una opción permanece cuando su texto contiene lo escrito, sin distinguir mayúsculas. La primera coincidencia queda resaltada para que Enter la elija, y notFoundText se muestra cuando no queda ninguna opción.

Agrupado

Agrupa las opciones con TagPickerOptionGroup. Un grupo sin ninguna opción en pantalla se oculta solo.

Sin popover

Omite las opciones para obtener un TagPicker sin lista, y dejar que los usuarios escriban sus propios tags. Enlaza value y agrega el tag en querySubmitted, que se llama al pulsar Enter con texto en el input.

Acción secundaria

Agrega un botón junto a la flecha del desplegable con el snippet secondaryAction.

Selección única

Con single, una nueva elección reemplaza el tag actual y cierra la lista.

Tamaño

Un TagPicker es medium por defecto, o large o extra-large. El tamaño del control también define el tamaño de sus tags.

Texto truncado

Un tag más ancho que el control, o que su propio max-width, acorta su texto con puntos suspensivos. Dale un title al tag para que el texto completo siga disponible, y trunca tú mismo el texto de las opciones.

Atributos de los controles de formulario

Los atributos y eventos se aplican al campo nativo del formulario; ref permite acceder a él. Para el contenedor, usa wrapperAttributes y wrapperRef.

Propiedades del componente (TagPicker)

NameTypeDefaultDescription
shape'circular' | 'rounded' | 'square''rounded'Forma del campo y forma predeterminada de sus tags seleccionados.
wrapperRef bindableHTMLDivElement | nullLa referencia DOM del elemento contenedor.
ref bindableHTMLSelectElement | nullLa referencia DOM del select múltiple nativo que guarda las opciones seleccionadas. El resto de atributos del selector se aplican a él.
inputRef bindableHTMLInputElement | nullLa referencia DOM del input de texto.
inputAttributesHTMLInputAttributesLos atributos que se aplican al input de texto.
selectedOptions bindablestring[][]Los valores de las opciones elegidas, mostrados como tags en el control. Un valor que ninguna opción tiene se muestra tal cual.
value bindablestring''El texto escrito en el input. Filtra las opciones y se borra al elegir una.
open bindablebooleanfalseControla el estado abierto de la lista de opciones.
singlebooleanLimita el picker a un solo tag: elegir una opción reemplaza el actual y cierra la lista.
disabledbooleanDeshabilita la interacción del usuario: el input, los tags y la lista.
size'medium' | 'large' | 'extra-large''medium'El tamaño del control. También define el tamaño de los tags.
placeholderstringEl texto de marcador de posición del input.
notFoundTextstring'No options available'El mensaje que se muestra en lugar de la lista cuando no queda ninguna opción por elegir.
expandIconSnippet | Component | nullChevronDownRegularLa flecha del desplegable. Pasa null para quitarla.
secondaryActionSnippetUn elemento tipo botón que se muestra al final del control, antes de la flecha del desplegable.
tagSnippet<[{ value: string; text: string }]>Renderiza el tag de una opción elegida, para darle media o texto personalizado. Recurre a un tag simple. Renderiza un Tag con el value recibido.
tagGroupPropsTagGroupPropsPropiedades del TagGroup seleccionado. Sobrescribe aquí shape para dar a los tags una forma distinta de la del campo. Usa aria-label o aria-labelledby para nombrar el grupo.
wrapperAttributesHTMLAttributesLos atributos que se aplican al elemento wrapper.
onSelectionChange(e: Event, selectedOptions: string[]) => voidSe llama cuando se elige una opción o se quita un tag.
querySubmitted(e: KeyboardEvent, query: string) => voidSe llama cuando se pulsa Enter con texto en el input y sin ninguna opción bajo el cursor. Aquí se agrega un tag de texto libre.
childrenSnippetLas opciones. Omítelo para obtener un picker sin lista.
NativeFieldAttributes<Omit<HTMLSelectAttributes, 'value' | 'multiple' | 'size' | 'disabled' | 'children'>>

Propiedades del componente (TagPickerOption)

NameTypeDefaultDescription
valuestringEl valor que se agrega a selectedOptions cuando se elige la opción.
textstringEl texto por el que se filtra la opción y el texto de su tag. Recurre a value.
idstringEl id del elemento de la opción, al que el input hace referencia mediante aria-activedescendant. Recurre a un id generado.
ref bindableHTMLLIElement | nullLa referencia del DOM del elemento de la opción.
disabledbooleanDeja la opción fuera de alcance: se muestra, pero el cursor la salta.
ListViewItemProps<'li'> without as, value, onAction, checkmark

Propiedades del componente (TagPickerOptionGroup)

NameTypeDefaultDescription
labelstringLa etiqueta del grupo.
ref bindableHTMLUListElement | nullLa referencia del DOM del elemento del grupo.
childrenSnippetLas opciones del grupo.
wrapperAttributesHTMLAttributesLos atributos que se aplican al elemento wrapper.
wrapperRef bindableHTMLLIElement | nullLa referencia DOM del elemento contenedor.
HTMLAttributes<HTMLUListElement> without children
Editar este documento Ver como Markdown