Skip to content

useTable ​

Main data-table composable. Orchestrates all table sub-hooks, loads items from the server, and provides the full API consumed by the DataTable component.

File: vue/src/js/hooks/useTable.js


Props Factory ​

js
import { makeTableProps } from '@/hooks/useTable'

Key props (assembled from all sub-hook makeXxxProps factories):

PropTypeDefaultDescription
endpointsObject{}URL map: index, store, update, destroy, forceDelete, restore, show
columnsArray[]Column definitions — see useTableHeaders
formSchemaObjectrequiredSchema for the create/edit form
rowActionsArray|Object[]Per-row action definitions — see useTableItemActions
filterListArray[]Status filter tabs
filterListAdvancedObject{}Advanced filter panel definitions
nameString—Module name used for i18n and permissions
moduleNameString—Override module name for permissions
createOnModalBooleantrueOpen the create form in a modal
editOnModalBooleantrueOpen the edit form in a modal
itemsPerPageNumber20Default items per page
actionsArray[]Table-level bulk/toolbar actions

Usage ​

js
import { useTable, makeTableProps } from '@/hooks/useTable'

const props = defineProps(makeTableProps())
const emit = defineEmits(['update:modelValue'])

const table = useTable(props, { emit })

Returns ​

useTable spreads the return values of all sub-hooks. Key top-level additions:

NameTypeDescription
elementsRef<Array>The current page of table rows
totalElementsRef<Number>Total record count (for pagination)
tableLoadingRef<Boolean>true while items are being loaded
loadItems() => PromiseFetch items from endpoints.index using the current filter/sort/page state
sortElements(key, direction) => voidSort the table by a column
dataTableRowProps(item) => ObjectReturns Vuetify row props (click handlers, classes) for each row
headersForDataTableComputedRef<Array>Processed column definitions ready for v-data-table
optionsRef<Object>Vuetify data-table options object (page, itemsPerPage, sortBy, groupBy)

Sub-hooks Orchestrated ​

useTable composes the following sub-hooks internally:

Sub-hookResponsibility
useTableStateURL/localStorage state persistence
useTableItemEdited item and soft-delete detection
useTableNamesi18n titles and delete dialog text
useTableFiltersSearch, status tabs, advanced filters
useTableHeadersColumn visibility, localStorage persistence
useTableFormsCreate/edit form state
useTableItemActionsRow action dispatch
useTableModalsDelete/custom/show modals
useTableActionsTable-level toolbar actions
useTableGroupClient-side column grouping

Data Loading ​

loadItems builds an axios GET request to endpoints.index including:

  • Current page, items-per-page, and sort-by from options
  • Active search string
  • Active status filter slug
  • Active advanced filters

Results are stored in elements and totalElements.

See Also ​