Todos los componentes (244)
Constructor de consultas
Gestión · QueryBuilder
Qué es y cuándo usarlo
Un constructor de consultas con grupos anidados: condiciones «campo, operador, valor» unidas por «y» o por «o», con grupos dentro de grupos y la posibilidad de negar un grupo.
Cuándo usarlo
- Un filtro que no cabe en un par de desplegables: «importe mayor de 100 y (cliente empieza por Ac o no cobrada)».
fieldsson los campos, cada uno con su tipo (text,number,dateoboolean): el tipo decide los operadores y el campo de valor.- Entrega un árbol de datos (
QueryGroup) poronChange. Para aplicarlo en el cliente,filterByQuery(registros, consulta, campos, leer); en el servidor se recorre el mismo árbol. valuelo hace controlado; sin él, empieza eninitialValue.maxDepthlimita cuántos grupos caben uno dentro de otro (5 como máximo).- Una condición a medias (sin valor) no filtra nada, así que se puede ir montando sin vaciar la lista.
Cuándo no
- Un filtro simple de una tabla: el panel de filtros avanzados de
Table, que usa la misma lógica de condiciones. - Búsqueda por texto libre: un campo de búsqueda.
- El árbol no se valida contra el servidor: quien lo recibe decide qué campos y operadores acepta.
Teclado: es un conjunto de controles normales; el tabulador recorre cada grupo en orden, y cada cambio de estructura (añadir o quitar) se anuncia.
Accesibilidad: cada grupo es un grupo con nombre («Grupo 2»); cada condición numera sus campos («Valor de la condición 3»). La negación y el «y/o» son controles con etiqueta, no solo color: la raya del grupo cambia, pero también lo dice su casilla.
Aspecto fino: cada grupo es una caja con una raya a la izquierda del color de acento, o del de error si está negado; las condiciones se parten en varias líneas cuando no caben.
Cómo se ve
- ClienteEstadoTotal (€)contieneno contienees igual aes distinto deempieza porestá vacíono está vacíoPagadoPendienteEnviado
- ClienteEstadoTotal (€)es igual aes distinto demayor quemayor o igual quemenor quemenor o igual queentreestá vacíono está vacío
2 condiciones activas
LOWER("estado") = ? AND "total" > ?
-- parámetros: ["pagado",100]1 de 5 pedidos cumplen la consulta.
<QueryBuilder
label="Qué pedidos buscar"
fields={campos}
value={consulta}
onChange={setConsulta}
summary
exports={["sql", "text"]}
/>Props
Se importa con import { QueryBuilder } from '@amset/ui'. Las obligatorias van marcadas.
| Prop | Tipo | Para qué sirve |
|---|---|---|
fieldsobligatoria | readonly QueryField[] | Los campos por los que se puede filtrar, con su tipo: el tipo decide los operadores y el campo de valor. |
labelobligatoria | string | Que consulta es («Filtro de facturas»): nombra el constructor para quien usa un lector de pantalla. Obligatorio. |
className | string | Se une a las clases de la biblioteca, no las sustituye. |
disabled | boolean | — |
exports | readonly QueryExportFormat[] | Debajo del constructor, la consulta escrita en estos formatos (uno cada vez, elegido de una lista): `sql` (un `WHERE` con sus parametros), `mongo` (un filtro) y `text` (una frase). El mismo texto sale de `queryToSql`, `queryToMongo` y `queryToText`, para usar la consulta en el servidor. Por defecto, no se enseña. |
initialValue | QueryGroup | — |
maxDepth | number | Cuantos grupos se pueden meter uno dentro de otro, contando el raiz. Por defecto, 5, que es tambien el tope. |
onChange | (value: QueryGroup) => void | — |
readOnly | boolean | Se ve y se recorre, pero no cambia. |
summary | boolean | El recuento de condiciones activas bajo el constructor. Por defecto, si. |
value | QueryGroup | La consulta. Si se pasa, el constructor es controlado. |
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:
