Getting Started

Quick Start

Primo esempio funzionante di SearchToolbar con filtri base e generazione query PostgREST.

Esempio base

L'evento @apply emette uno stato completo SearchState (filtri + preset + rules + group-by). Quando usi solo i filtri base, leggi state.filters e passalo a buildPostgrestQuery.

Esempio con stato completo

Quando attivi i layer avanzati (preset, rule builder, group-by), usa buildPostgrestQueryFromState per ottenere la query combinata di tutti i layer:

import { buildPostgrestQueryFromState } from '@pzeta/vue-ricerca'
import type { SearchState } from '@pzeta/vue-ricerca'

function onApply(state: SearchState) {
  const query = buildPostgrestQueryFromState(state, {
    fields,
    presets,
    ruleBuilderFields,
    groupByFields,
  })
  // → { and: '(stato.eq.attivo,nome.ilike.*mario*)', order: 'datacreazione.desc' }
}

Con useSearchToolbar (headless)

Quando devi controllare i filtri programmaticamente senza il componente UI:

import { useSearchToolbar, buildPostgrestQuery } from '@pzeta/vue-ricerca'

const { filters, isValid, hasActiveFilters, apply, reset } = useSearchToolbar({
  fields,
  initialValues: { stato: 'attivo' },
  onApply: (state) => {
    const query = buildPostgrestQuery(state.filters, fields)
    // fetch con query params
  },
})

Flusso dati

FieldConfig[] ─► SearchToolbar ─► @apply(SearchState) ─► buildPostgrestQuery(state.filters, fields) ─► query params
                       │                                  buildPostgrestQueryFromState(state, config) ─► query con tutti i layer
                       │
                       └── v-model:filtri (Record<string, unknown>)
La libreria non esegue chiamate HTTP: genera solo i parametri di filtro come Record<string, string>. L'integrazione con fetch/axios/PostgREST client rimane a carico del consumer.