Skip to content

useTableHeaders ​

Manages column visibility with localStorage persistence. Columns can be toggled off per-route and the selection survives page refreshes.

File: vue/src/js/hooks/table/useTableHeaders.js


Props Factory ​

js
import { makeTableHeadersProps } from '@/hooks/table/useTableHeaders'
PropTypeDefaultDescription
columnsArray[]Full column definition array
fixedLastColumnBooleanfalsePin the last column (actions) to the right
hideHeadersBooleanfalseHide all column headers
headerOptionsArray|Object{}Extra props merged into the header row
cellOptionsArray|Object{}Extra props merged into each cell
customRowObject{}Custom row template definition (hides headers when set)

Usage ​

js
import useTableHeaders, { makeTableHeadersProps } from '@/hooks/table/useTableHeaders'

const {
  headers,
  headersModel,
  hasSearchableHeader,
  selectedHeaders,
  hideHeaders,
  formattableHeaders,
  removeHeader,
  applyHeaders,
} = useTableHeaders(props)

Returns ​

State ​

NameTypeDescription
headersRef<Array>Currently visible columns (filtered from columns)
headersModelRef<Array>Full column list with visible boolean added to each entry (for the column picker UI)
hasSearchableHeaderRef<Boolean>true when at least one column has searchable: true

Computed ​

NameTypeDescription
selectedHeadersComputedRef<Array>Columns with visible === true
hideHeadersComputedRef<Boolean>true when props.hideHeaders is set or customRow is present
formattableHeadersComputedRef<Array>Columns with at least one of: columnEditable, removable, searchable, or groupable

Methods ​

NameSignatureDescription
removeHeader(key: String) => voidHide the column with the given key and persist to localStorage
applyHeaders() => voidApply the current headersModel visibility state and persist to localStorage

localStorage Key ​

Hidden columns are stored per-route under:

table_unvisible_columns_{window.location.pathname}

Column Definition Fields ​

FieldTypeDescription
keyStringUnique column identifier
titleStringDisplay header text
searchableBooleanAllow per-column search
removableBooleanAllow hiding via the column picker
columnEditableBooleanAllow inline cell editing
groupableBooleanAllow grouping by this column
groupOrder'asc'|'desc'Default sort order when grouped

See Also ​