UNPKG

@tanstack/table-core

Version:

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

174 lines (166 loc) 5.88 kB
/** * table-core * * Copyright (c) TanStack * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ 'use strict'; var utils = require('../utils.js'); // const RowExpanding = { getInitialState: state => { return { expanded: {}, ...state }; }, getDefaultOptions: table => { return { onExpandedChange: utils.makeStateUpdater('expanded', table), paginateExpandedRows: true }; }, createTable: table => { let registered = false; let queued = false; table._autoResetExpanded = () => { var _ref, _table$options$autoRe; if (!registered) { table._queue(() => { registered = true; }); return; } if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) { if (queued) return; queued = true; table._queue(() => { table.resetExpanded(); queued = false; }); } }; table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater); table.toggleAllRowsExpanded = expanded => { if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) { table.setExpanded(true); } else { table.setExpanded({}); } }; table.resetExpanded = defaultState => { var _table$initialState$e, _table$initialState; table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {}); }; table.getCanSomeRowsExpand = () => { return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand()); }; table.getToggleAllRowsExpandedHandler = () => { return e => { e.persist == null || e.persist(); table.toggleAllRowsExpanded(); }; }; table.getIsSomeRowsExpanded = () => { const expanded = table.getState().expanded; return expanded === true || Object.values(expanded).some(Boolean); }; table.getIsAllRowsExpanded = () => { const expanded = table.getState().expanded; // If expanded is true, save some cycles and return true if (typeof expanded === 'boolean') { return expanded === true; } if (!Object.keys(expanded).length) { return false; } // If any row is not expanded, return false if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) { return false; } // They must all be expanded :shrug: return true; }; table.getExpandedDepth = () => { let maxDepth = 0; const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded); rowIds.forEach(id => { const splitId = id.split('.'); maxDepth = Math.max(maxDepth, splitId.length); }); return maxDepth; }; table.getPreExpandedRowModel = () => table.getSortedRowModel(); table.getExpandedRowModel = () => { if (!table._getExpandedRowModel && table.options.getExpandedRowModel) { table._getExpandedRowModel = table.options.getExpandedRowModel(table); } if (table.options.manualExpanding || !table._getExpandedRowModel) { return table.getPreExpandedRowModel(); } return table._getExpandedRowModel(); }; }, createRow: (row, table) => { row.toggleExpanded = expanded => { table.setExpanded(old => { var _expanded; const exists = old === true ? true : !!(old != null && old[row.id]); let oldExpanded = {}; if (old === true) { Object.keys(table.getRowModel().rowsById).forEach(rowId => { oldExpanded[rowId] = true; }); } else { oldExpanded = old; } expanded = (_expanded = expanded) != null ? _expanded : !exists; if (!exists && expanded) { return { ...oldExpanded, [row.id]: true }; } if (exists && !expanded) { const { [row.id]: _, ...rest } = oldExpanded; return rest; } return old; }); }; row.getIsExpanded = () => { var _table$options$getIsR; const expanded = table.getState().expanded; return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id])); }; row.getCanExpand = () => { var _table$options$getRow, _table$options$enable, _row$subRows; return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length); }; row.getIsAllParentsExpanded = () => { let isFullyExpanded = true; let currentRow = row; while (isFullyExpanded && currentRow.parentId) { currentRow = table.getRow(currentRow.parentId, true); isFullyExpanded = currentRow.getIsExpanded(); } return isFullyExpanded; }; row.getToggleExpandedHandler = () => { const canExpand = row.getCanExpand(); return () => { if (!canExpand) return; row.toggleExpanded(); }; }; } }; exports.RowExpanding = RowExpanding; //# sourceMappingURL=RowExpanding.js.map