Redux store & slices

Per-table Redux state shape and actions

File: ./ApiTables/table-providers/store.tsx

Store factory

export const createTableStore = () =>
  configureStore({
    reducer: {
      tableCore: tableCoreSlice,
      bulkActions: bulkActionsSlice,
      rowActions: rowActionsSlice,
      tableColumns: tableColumnsSlice,
    },
    devTools: true,
    middleware: (getDefaultMiddleware) =>
      getDefaultMiddleware({ serializableCheck: false }),
  });

getExternalState() returns externalStore.getState() from @/store/store for read-only access to the global app.


tableCore (tableCoreSlice.ts)

Domain: Structure metadata, query state, and row data.

State fieldSet byUsed for
tableName_getTableComponentsQuery URL segment
structureColumns_getTableComponentsColumn definitions
structureFilters_getTableComponentsFilter form schema
customElement_getTableComponentsString id for special UI hooks
appliedFilters_setAppliedFiltersObject keyed by filter name → sent as filters in POST
renderedFilters_setRenderedFiltersArray for chip UI in AppliedFilters
tableSorting_setTableSortingSent as sorts in POST
tableData_getTableDataCurrent rows
tablePagination_getTablePaginationServer pagination meta
tableBindings_getTableBindingsExtra server metadata
currentPage, pageSizepagination actionsQuery params
tableFetchingLoading_setTableLoadingRDT loading
tableRefresher_triggerTableReloadDependency bump for refetch

tableColumns (tableColumnsSlice.ts)

Domain: RDT column config, selection, column modals.

State fieldPurpose
tableColumnsFormatted columns for RDT
visibleColumnsSubset after visibility toggles
selectedRows, selectedIdsBulk / bulk-eligible row actions
toggledClearRowsFlip to force RDT clearSelectedRows
rowSelectedModalDatalist / HTML column popup payload

_setTableColumns: initial format via formatTableColumns, or { update: true } for width refresh after fetch.


bulkActions (bulkActionsSlice.ts)

State fieldPurpose
bulkActionsStructure list
selectedBulkActionAction awaiting confirmation or custom bulk modal
bulkActionPostLoadingRequest in flight
bulkActionPostResponseTriggers download/refetch in TableBulkActions effect

rowActions (rowActionsSlice.ts)

State fieldPurpose
structureRowActionsAll row actions from structure
selectedRowActionsIntersection of actions applicable to current selection as bulk
clickedRowActionAction pending confirmation or toggle modal
clickedRowActionIdRow id for per-row loading spinner
clickedRowActionResponseAPI response for view modal
customControlActionPayload for custom control popup
actionsInRegularCellsActions rendered per column vs dedicated column
rowActionPostLoadingGlobal row POST loading flag

Selector patterns

// Inside ApiTables subtree only
const { tableData, appliedFilters } = useSelector((s: any) => s.tableCore);
const { selectedRows } = useSelector((s: any) => s.tableColumns);

Do not expect tableCore on the global store.

On this page