Ir al contenido

Filter

Un grupo de botones de radio para filtrado de opción única. Seleccionar una opción oculta las demás y muestra un botón de reinicio.

import { Filter } from 'asterui'

Básico

Filtro simple con opciones de cadena. Haz clic en una opción para seleccionar, haz clic en reiniciar para limpiar.

Selected: None

import { Filter, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState<string | undefined>()
  
  return (
      <Space direction="vertical" size="md">
        <Filter
          options={['Svelte', 'Vue', 'React', 'Angular']}
          value={value}
          onChange={setValue}
        />
        <p className="text-sm text-base-content/70">
          Selected: {value || 'None'}
        </p>
      </Space>
    )
}

export default App

Tamaños

Variantes de tamaño disponibles.

import { Filter, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical" size="lg">
        <Filter options={['Small', 'Medium', 'Large']} size="xs" />
        <Filter options={['Small', 'Medium', 'Large']} size="sm" />
        <Filter options={['Small', 'Medium', 'Large']} size="md" />
        <Filter options={['Small', 'Medium', 'Large']} size="lg" />
      </Space>
    )
}

export default App

Opciones de Objeto

Usa objetos para opciones con etiquetas, valores y estado deshabilitado personalizados.

Selected value: None

import { Filter, Space } from 'asterui'
import { useState } from 'react'

function App() {
  const [value, setValue] = useState<string | undefined>()
  
  return (
      <Space direction="vertical" size="md">
        <Filter
          options={[
            { label: 'JavaScript', value: 'js' },
            { label: 'TypeScript', value: 'ts' },
            { label: 'Python', value: 'py' },
            { label: 'Rust', value: 'rust', disabled: true },
          ]}
          value={value}
          onChange={setValue}
        />
        <p className="text-sm text-base-content/70">
          Selected value: {value || 'None'}
        </p>
      </Space>
    )
}

export default App

Sin Botón de Reinicio

Oculta el botón de reinicio cuando quieras requerir una selección.

import { Filter } from 'asterui'

function App() {
  return (
      <Filter
        options={['Option A', 'Option B', 'Option C']}
        showReset={false}
        defaultValue="Option A"
      />
    )
}

export default App
PropiedadDescripciónTipoPredeterminado
optionsOpciones de filtro(string | FilterOption)[]-
valueValor seleccionado controladostring-
defaultValueValor predeterminado para modo no controladostring-
onChangeLlamado cuando cambia la selección(value: string | undefined) => void-
nameNombre del grupo de radio (auto-generado si no se proporciona)string-
sizeTamaño del botón'xs' | 'sm' | 'md' | 'lg''md'
showResetMostrar botón de reiniciobooleantrue
resetLabelEtiqueta del botón de reinicioReact.ReactNode'×'
classNameClases CSS adicionalesstring-
data-testidID de prueba para pruebasstring-
PropiedadDescripciónTipoPredeterminado
labelTexto de visualización para la opciónstring-
valueValor de la opciónstring-
disabledSi la opción está deshabilitadabooleanfalse
data-testidID de prueba para pruebasstring-
  • Usa entradas de radio nativas para soporte de teclado y lector de pantalla
  • Las opciones usan aria-label para nombres accesibles
  • El botón de reinicio tiene aria-label="Reset filter"
  • Soporta navegación por teclado con Tab y Espacio/Enter