Table

useTableCore

Composable interno con funzionalita core condivise tra DataTable e TreeTable (accesso nested, row key, classi CSS).

Composable interno — utilizzato dai componenti DataTable e TreeTable della libreria.

Firma TypeScript

export function useTableCore(options: UseTableCoreOptions): UseTableCoreResult

// UseTableCoreOptions (da @/types/basetable)
interface UseTableCoreOptions {
  dataKey?: string;           // default: 'id'
  stripedRows?: boolean;      // default: false
  showGridlines?: boolean;    // default: false
  scrollable?: boolean;       // default: false
  scrollHeight?: string;      // default: '400px'
  size?: Size;                // default: 'medium'
  loading?: boolean;          // default: false
  showHeader?: boolean;       // default: true
  rowHover?: boolean;         // default: true
  componentPrefix?: string;   // default: 'table'
}

export interface UseTableCoreResult {
  getNestedValue: (obj: unknown, path: string) => unknown;
  getRowKey: (row: unknown, index: number) => string | number;
  tableClasses: ComputedRef<string[]>;
  wrapperStyle: ComputedRef<Record<string, string>>;
}

Parametri

ParametroTipoDefaultDescrizione
dataKeystring'id'Proprieta usata come chiave univoca delle righe
stripedRowsbooleanfalseAggiunge classe striped
showGridlinesbooleanfalseAggiunge classe gridlines
scrollablebooleanfalseAbilita scroll verticale
scrollHeightstring'400px'Altezza massima per lo scroll
sizeSize'medium'Dimensione righe (small, medium, large)
loadingbooleanfalseAggiunge classe loading
componentPrefixstring'table'Prefisso per le classi CSS generate

Valore di Ritorno

ProprietàTipoDescrizione
getNestedValue(obj, path) => unknownAccede a proprieta nested con dot notation (es. 'user.name')
getRowKey(row, index) => string | numberRitorna row[dataKey] o index come fallback
tableClassesComputedRef<string[]>Array di classi CSS per il container della tabella
wrapperStyleComputedRef<Record<string, string>>Stile inline per scroll ({ maxHeight, overflow } se scrollable)

Esempio

const { getNestedValue, getRowKey, tableClasses, wrapperStyle } = useTableCore({
  dataKey: 'id',
  stripedRows: true,
  size: 'medium',
  componentPrefix: 'datatable'
})

// Accesso valore nested
const name = getNestedValue(row, 'user.profile.name')

// Chiave tracking v-for
const key = getRowKey(row, index)

Note

  • getNestedValue supporta qualsiasi profondita di dot notation; ritorna undefined se un segmento non esiste.
  • tableClasses include solo le classi non-default: size-small/size-large ma non size-medium (classe implicita).
  • wrapperStyle ritorna {} se scrollable=false, quindi e sicuro applicarlo sempre con :style="wrapperStyle".