UNPKG

@tanstack/table-core

Version:

Headless UI for building powerful tables & datagrids for TS/JS.

82 lines (80 loc) 3.46 kB
import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from "../../utils.js"; import { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, row_getVisibleCellsByColumnId, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible } from "./columnVisibilityFeature.utils.js"; //#region src/features/column-visibility/columnVisibilityFeature.ts /** * Feature that adds column visibility state and APIs for hiding and showing columns. */ const columnVisibilityFeature = { getInitialState: (initialState) => { return { columnVisibility: getDefaultColumnVisibilityState(), ...initialState }; }, getDefaultTableOptions: (table) => { return { onColumnVisibilityChange: makeStateUpdater("columnVisibility", table) }; }, assignColumnPrototype: (prototype, table) => { assignPrototypeAPIs("columnVisibilityFeature", prototype, table, { column_getIsVisible: { fn: (column) => column_getIsVisible(column), memoDeps: (column) => [ table.options.columns, table.atoms.columnVisibility?.get(), column.columns ] }, column_getCanHide: { fn: (column) => column_getCanHide(column) }, column_getToggleVisibilityHandler: { fn: (column) => column_getToggleVisibilityHandler(column) }, column_toggleVisibility: { fn: (column, visible) => column_toggleVisibility(column, visible) } }); }, assignRowPrototype: (prototype, table) => { assignPrototypeAPIs("columnVisibilityFeature", prototype, table, { row_getVisibleCells: { fn: (row) => row_getVisibleCells(row), memoDeps: (row) => [ row.getAllCells(), table.atoms.columnPinning?.get(), table.atoms.columnVisibility?.get() ] }, row_getVisibleCellsByColumnId: { fn: (row) => row_getVisibleCellsByColumnId(row), memoDeps: (row) => [row.getAllCells(), table.atoms.columnVisibility?.get()] } }); }, constructTableAPIs: (table) => { assignTableAPIs("columnVisibilityFeature", table, { table_getVisibleFlatColumns: { fn: () => table_getVisibleFlatColumns(table), memoDeps: () => [ table.atoms.columnVisibility?.get(), table.atoms.columnOrder?.get(), table.atoms.grouping?.get(), table.options.columns, table.options.groupedColumnMode ] }, table_getVisibleLeafColumns: { fn: () => table_getVisibleLeafColumns(table), memoDeps: () => [ table.atoms.columnVisibility?.get(), table.atoms.columnOrder?.get(), table.atoms.grouping?.get(), table.options.columns, table.options.groupedColumnMode ] }, table_setColumnVisibility: { fn: (updater) => table_setColumnVisibility(table, updater) }, table_resetColumnVisibility: { fn: (defaultState) => table_resetColumnVisibility(table, defaultState) }, table_toggleAllColumnsVisible: { fn: (value) => table_toggleAllColumnsVisible(table, value) }, table_getIsAllColumnsVisible: { fn: () => table_getIsAllColumnsVisible(table) }, table_getIsSomeColumnsVisible: { fn: () => table_getIsSomeColumnsVisible(table) }, table_getToggleAllColumnsVisibilityHandler: { fn: () => table_getToggleAllColumnsVisibilityHandler(table) } }); } }; //#endregion export { columnVisibilityFeature };