MishkaGervaz.Table.Web.Events behaviour (MishkaGervaz v0.0.1-alpha.2)

Copy Markdown View Source

Handles all table events for MishkaGervaz.

This module centralizes event handling for:

  • Sorting
  • Filtering
  • Row actions (delete, edit, custom events)
  • Bulk actions
  • Row expansion
  • Archive status changes
  • Pagination

Sub-builders

Events functionality is split into specialized sub-builders:

  • SanitizationHandler - Input sanitization
  • RecordHandler - Record CRUD operations
  • SelectionHandler - Selection state management
  • BulkActionHandler - Bulk action execution
  • HookRunner - Hook execution
  • RelationFilterHandler - Relation filter search/select events

Customization

You can override individual sub-builders via DSL:

mishka_gervaz do
  table do
    events do
      sanitization MyApp.CustomSanitizationHandler
      record MyApp.CustomRecordHandler
      selection MyApp.CustomSelectionHandler
      bulk_action MyApp.CustomBulkActionHandler
      hooks MyApp.CustomHookRunner
      relation_filter MyApp.CustomRelationFilterHandler
    end
  end
end

Or override the entire Events module:

mishka_gervaz do
  table do
    events MyApp.CustomEvents
  end
end

See MishkaGervaz.Table.Web.Events.SanitizationHandler, MishkaGervaz.Table.Web.Events.RecordHandler, MishkaGervaz.Table.Web.Events.SelectionHandler, MishkaGervaz.Table.Web.Events.BulkActionHandler, MishkaGervaz.Table.Web.Events.HookRunner, MishkaGervaz.Table.Web.Events.RelationFilterHandler, MishkaGervaz.Table.Web.State, MishkaGervaz.Table.Web.DataLoader, MishkaGervaz.Table.Web.Live.

Summary

Callbacks

Main event handler dispatcher.

Functions

Main event handler dispatcher.

Types

socket()

@type socket() :: Phoenix.LiveView.Socket.t()

state()

@type state() :: MishkaGervaz.Table.Web.State.t()

Callbacks

handle(event, params, socket)

@callback handle(event :: String.t(), params :: map(), socket :: socket()) ::
  {:noreply, socket()}

Main event handler dispatcher.

Called from LiveComponent's handle_event callback.

Functions

handle(event, params, socket)

@spec handle(String.t(), map(), socket()) :: {:noreply, socket()}

Main event handler dispatcher.

Called from LiveComponent's handle_event callback.