Event System

Yable includes a typed event emitter for responding to table interactions.

Available Events

EventPayloadDescription
cell:clickCellClickEventCell was clicked
cell:dblclickCellClickEventCell was double-clicked
cell:contextmenuCellClickEventCell right-click
row:clickRowClickEventRow was clicked
row:dblclickRowClickEventRow was double-clicked
row:contextmenuRowClickEventRow right-click
header:clickHeaderClickEventHeader cell was clicked
header:contextmenuHeaderClickEventHeader right-click
cell:edit:startCellEditEventCell entered edit mode
cell:edit:commitCellEditEventCell edit was committed
cell:edit:cancelCellEditEventCell edit was cancelled
selection:changeSelectionChangeEventRow selection changed
sort:changeSortChangeEventSorting changed
filter:changeFilterChangeEventFilters changed
page:changePageChangeEventPagination changed
state:changeStateChangeEventAny state changed

How to Use

// Subscribe to events
const unsubscribe = table.events.on('cell:click', (event) => {
  console.log('Clicked cell:', event.column.id, event.row.original)
})

// Unsubscribe
unsubscribe()

// Or use off()
table.events.off('cell:click', handler)

// Emit custom events
table.events.emit('cell:click', {
  cell: someCell,
  row: someRow,
  column: someColumn,
})

// Remove all listeners
table.events.removeAllListeners()

Table Callback Options

You can also handle events via table options:

const table = useTable({
  data,
  columns,
  onCellClick: (event) => console.log('Cell clicked:', event),
  onRowClick: (event) => console.log('Row clicked:', event),
  onHeaderClick: (event) => console.log('Header clicked:', event),
})