Getting Started

Installazione

Installazione e configurazione di @pzeta/vue-kanban v2 — peer deps, plugin Vue, inizializzazione del client PostgREST.

Installazione

npm install @pzeta/vue-kanban

# Opzionale — solo se userai i dialog default
npm install @pzeta/attivita @pzeta/vue-attachment

@pzeta/attivita e @pzeta/vue-attachment sono peerDependenciesMeta.optional: installale solo se importi da @pzeta/vue-kanban/dialogs.

Peer dependencies

PacchettoVersioneOptional
vue^3.5.32no
@pzeta/vue-components^1.4.0no
@pzeta/vue-i18n^1.0.2no
@pzeta/attivita^0.1.2 (richiesto solo da DefaultActivityDialog)
@pzeta/vue-attachment^2.0.1 (richiesto solo da DefaultAttachmentDialog)

Inizializzazione del client PostgREST

In v2 il configService legacy è stato sostituito da initializePostgRESTClient(). Va chiamato una volta prima di montare l'app:

// main.ts
import { createApp } from 'vue'
import { initializePostgRESTClient } from '@pzeta/vue-kanban'
import '@pzeta/vue-kanban/style.css'
import App from './App.vue'

const app = createApp(App)
await initializePostgRESTClient()
app.mount('#app')
La libreria legge la configurazione dalle variabili d'ambiente Vite (VITE_APP_API_URL, VITE_APP_SCHEMA, VITE_APP_DISABLE_CACHE). Vedi la sezione Variabili d'ambiente. Per backend non-PostgREST salta questa inizializzazione e passa un dataSource custom a useBoardService.

Registrazione plugin (opzionale)

Il plugin registra globalmente i componenti UI principali (i 4 componenti board + ActivityView):

import { VueKanbanPlugin } from '@pzeta/vue-kanban'

app.use(VueKanbanPlugin)

Componenti registrati:

  • KanbanBoard
  • KanbanColumn
  • EnhancedKanbanBoard
  • KanbanFasiBoard
  • ElementCard
  • ActivityView
Il plugin non registra i dialog default (DefaultFormDialog, ecc.): vanno importati esplicitamente da @pzeta/vue-kanban/dialogs per garantire il tree-shaking delle peer dependencies opzionali.

Opzioni del plugin

app.use(VueKanbanPlugin, {
  prefix: 'Pz',
  components: ['KanbanBoard', 'EnhancedKanbanBoard'], // selettivo
})
OpzioneTipoDefaultDescrizione
prefixstring''Prefisso aggiunto al nome dei componenti (es. PzKanbanBoard)
componentsComponentName[]tuttiLista selettiva di componenti da registrare

Import individuali

Per tree-shaking ottimale importa solo ciò che serve:

// Componenti
import { KanbanBoard, EnhancedKanbanBoard, KanbanFasiBoard, ElementCard } from '@pzeta/vue-kanban'

// Dialog wrapper (sub-export separato — peer deps optional)
import {
  DefaultFormDialog,
  DefaultTagDialog,
  DefaultCommentDialog,
  DefaultAttachmentDialog,
  DefaultActivityDialog,
} from '@pzeta/vue-kanban/dialogs'

// Composables
import { useBoardService, useBoardMetadata, useFasiService } from '@pzeta/vue-kanban'

// Datasource & Adapter
import {
  type KanbanDataSource,
  PostgRESTDataSource,
  type ItemAdapter,
  type NormalizedItem,
  defaultPostgRESTItemAdapter,
  ITEM_ADAPTER_KEY,
} from '@pzeta/vue-kanban'

// Tipi
import type {
  Board, BoardElement, BoardStato, BoardPriorita, BoardTag,
  SchedaKanban, FasePipeline, MoveItemResult,
} from '@pzeta/vue-kanban'

// Utility
import { getIdUtenteFromJwt } from '@pzeta/vue-kanban'

Variabili d'ambiente

VariabileDescrizioneDefault
VITE_APP_API_URLURL base PostgRESTwindow.location.origin
VITE_APP_SCHEMASchema PostgreSQLfasi
VITE_APP_DISABLE_CACHEDisabilita cache PostgRESTfalse
VITE_APP_SERVICES_URLURL servizi versionamento formdev: /git, prod: https://services.pzeta.it/git

Schema database (default fasi)

Con PostgRESTDataSource di default, la libreria si aspetta:

Tabella / RPCPKNote
fasi.boardidboardDefinizione board, codboard univoco
fasi.faseidfaseStati/colonne
fasi.schedaidschedaSchede (tabella scrittura)
fasi.v_schede_kanbanviewLettura schede arricchite
fasi.prioritaidprioritaPriorità per board
fasi.tagidtagTag per board
fasi.boardcampoidboardcampoCampi dinamici (dati_extra)
fasi.schedatagidschedatagM2M scheda↔tag
fasi.schedacommentoidschedacommentoCommenti
rpc/sposta_scheda_faseRPCSpostamento atomico

Endpoint, schema, primary key e RPC sono tutti override-abili via PostgRESTDataSourceOptions. Vedi KanbanDataSource.

Verifica installazione

<template>
  <EnhancedKanbanBoard board-id-or-code="TICKET" />
</template>

Se vedi le colonne caricate dal backend, l'installazione è OK.