@tanstack/table-core 9.0.0-beta.26 → 9.0.0-beta.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/column-ordering/columnOrderingFeature.cjs +2 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.js +2 -1
- package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.cjs +24 -12
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.js +24 -12
- package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +62 -24
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.js +62 -24
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +35 -45
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.js +36 -46
- package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +38 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +38 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +49 -10
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +18 -4
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +18 -4
- package/dist/features/column-sizing/columnSizingFeature.utils.js +49 -11
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +8 -4
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.js +8 -4
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +3 -2
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +3 -2
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.js +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/static-functions.cjs +1 -0
- package/dist/static-functions.d.cts +2 -2
- package/dist/static-functions.d.ts +2 -2
- package/dist/static-functions.js +2 -2
- package/package.json +1 -1
- package/src/features/column-ordering/columnOrderingFeature.ts +1 -0
- package/src/features/column-pinning/columnPinningFeature.ts +12 -0
- package/src/features/column-resizing/columnResizingFeature.utils.ts +96 -44
- package/src/features/column-sizing/columnSizingFeature.ts +18 -18
- package/src/features/column-sizing/columnSizingFeature.types.ts +39 -0
- package/src/features/column-sizing/columnSizingFeature.utils.ts +94 -39
- package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +4 -2
- package/src/features/row-selection/rowSelectionFeature.utils.ts +5 -1
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
table_getPinnedVisibleLeafColumns,
|
|
5
5
|
table_getRightHeaderGroups,
|
|
6
6
|
} from '../column-pinning/columnPinningFeature.utils'
|
|
7
|
-
import { column_getIndex } from '../column-ordering/columnOrderingFeature.utils'
|
|
8
7
|
import {
|
|
9
8
|
callMemoOrStaticFn,
|
|
10
9
|
cloneState,
|
|
@@ -17,7 +16,11 @@ import type { TableFeatures } from '../../types/TableFeatures'
|
|
|
17
16
|
import type { Table_Internal } from '../../types/Table'
|
|
18
17
|
import type { Header } from '../../types/Header'
|
|
19
18
|
import type { Column_Internal } from '../../types/Column'
|
|
20
|
-
import type {
|
|
19
|
+
import type {
|
|
20
|
+
ColumnOffsets,
|
|
21
|
+
ColumnOffsetsByPosition,
|
|
22
|
+
ColumnSizingState,
|
|
23
|
+
} from './columnSizingFeature.types'
|
|
21
24
|
|
|
22
25
|
/**
|
|
23
26
|
* Creates the default committed column sizing state.
|
|
@@ -86,6 +89,85 @@ export function column_getSize<
|
|
|
86
89
|
)
|
|
87
90
|
}
|
|
88
91
|
|
|
92
|
+
function buildColumnOffsets<
|
|
93
|
+
TFeatures extends TableFeatures,
|
|
94
|
+
TData extends RowData,
|
|
95
|
+
>(columns: Array<Column_Internal<TFeatures, TData, unknown>>): ColumnOffsets {
|
|
96
|
+
const starts = makeObjectMap<number>()
|
|
97
|
+
const afters = makeObjectMap<number>()
|
|
98
|
+
const sizes = new Array<number>(columns.length)
|
|
99
|
+
|
|
100
|
+
let start = 0
|
|
101
|
+
for (let i = 0; i < columns.length; i++) {
|
|
102
|
+
const column = columns[i]!
|
|
103
|
+
const size = callMemoOrStaticFn(column, 'getSize', column_getSize)
|
|
104
|
+
sizes[i] = size
|
|
105
|
+
starts[column.id] = start
|
|
106
|
+
start += size
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
let after = 0
|
|
110
|
+
for (let i = columns.length - 1; i >= 0; i--) {
|
|
111
|
+
afters[columns[i]!.id] = after
|
|
112
|
+
after += sizes[i]!
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return { starts, afters }
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Builds start and after offset maps for every visible leaf column, computed
|
|
120
|
+
* once per pinning region plus the full visible list.
|
|
121
|
+
*
|
|
122
|
+
* A single table-level memo of this result backs all `column.getStart()` and
|
|
123
|
+
* `column.getAfter()` calls with O(1) lookups.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const offsets = table_getColumnOffsets(table)
|
|
128
|
+
* const leftOffset = offsets.left.starts[column.id]
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export function table_getColumnOffsets<
|
|
132
|
+
TFeatures extends TableFeatures,
|
|
133
|
+
TData extends RowData,
|
|
134
|
+
>(table: Table_Internal<TFeatures, TData>): ColumnOffsetsByPosition {
|
|
135
|
+
return {
|
|
136
|
+
all: buildColumnOffsets(
|
|
137
|
+
table_getPinnedVisibleLeafColumns(table) as Array<
|
|
138
|
+
Column_Internal<TFeatures, TData, unknown>
|
|
139
|
+
>,
|
|
140
|
+
),
|
|
141
|
+
center: buildColumnOffsets(
|
|
142
|
+
table_getPinnedVisibleLeafColumns(table, 'center') as Array<
|
|
143
|
+
Column_Internal<TFeatures, TData, unknown>
|
|
144
|
+
>,
|
|
145
|
+
),
|
|
146
|
+
left: buildColumnOffsets(
|
|
147
|
+
table_getPinnedVisibleLeafColumns(table, 'left') as Array<
|
|
148
|
+
Column_Internal<TFeatures, TData, unknown>
|
|
149
|
+
>,
|
|
150
|
+
),
|
|
151
|
+
right: buildColumnOffsets(
|
|
152
|
+
table_getPinnedVisibleLeafColumns(table, 'right') as Array<
|
|
153
|
+
Column_Internal<TFeatures, TData, unknown>
|
|
154
|
+
>,
|
|
155
|
+
),
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function toOffsetsKey(
|
|
160
|
+
position: ColumnPinningPosition | 'center' | undefined,
|
|
161
|
+
): keyof ColumnOffsetsByPosition {
|
|
162
|
+
return position === 'left'
|
|
163
|
+
? 'left'
|
|
164
|
+
: position === 'right'
|
|
165
|
+
? 'right'
|
|
166
|
+
: position === 'center'
|
|
167
|
+
? 'center'
|
|
168
|
+
: 'all' // undefined | false use the full visible list
|
|
169
|
+
}
|
|
170
|
+
|
|
89
171
|
/**
|
|
90
172
|
* Computes the offset from the start edge of a pinning region to this column.
|
|
91
173
|
*
|
|
@@ -103,28 +185,14 @@ export function column_getStart<
|
|
|
103
185
|
TValue extends CellData = CellData,
|
|
104
186
|
>(
|
|
105
187
|
column: Column_Internal<TFeatures, TData, TValue>,
|
|
106
|
-
position
|
|
188
|
+
position?: ColumnPinningPosition | 'center',
|
|
107
189
|
): number {
|
|
108
|
-
const
|
|
109
|
-
column,
|
|
110
|
-
'getIndex',
|
|
111
|
-
column_getIndex,
|
|
112
|
-
position,
|
|
113
|
-
)
|
|
114
|
-
if (index <= 0) return 0
|
|
115
|
-
|
|
116
|
-
const visibleLeafColumns = callMemoOrStaticFn(
|
|
190
|
+
const offsets = callMemoOrStaticFn(
|
|
117
191
|
column.table,
|
|
118
|
-
'
|
|
119
|
-
|
|
120
|
-
position,
|
|
121
|
-
)
|
|
122
|
-
|
|
123
|
-
const prevColumn = visibleLeafColumns[index - 1]!
|
|
124
|
-
return (
|
|
125
|
-
callMemoOrStaticFn(prevColumn, 'getStart', column_getStart, position) +
|
|
126
|
-
callMemoOrStaticFn(prevColumn, 'getSize', column_getSize)
|
|
192
|
+
'getColumnOffsets',
|
|
193
|
+
table_getColumnOffsets,
|
|
127
194
|
)
|
|
195
|
+
return offsets[toOffsetsKey(position)].starts[column.id] ?? 0
|
|
128
196
|
}
|
|
129
197
|
|
|
130
198
|
/**
|
|
@@ -144,27 +212,14 @@ export function column_getAfter<
|
|
|
144
212
|
TValue extends CellData = CellData,
|
|
145
213
|
>(
|
|
146
214
|
column: Column_Internal<TFeatures, TData, TValue>,
|
|
147
|
-
position
|
|
215
|
+
position?: ColumnPinningPosition | 'center',
|
|
148
216
|
): number {
|
|
149
|
-
const
|
|
217
|
+
const offsets = callMemoOrStaticFn(
|
|
150
218
|
column.table,
|
|
151
|
-
'
|
|
152
|
-
|
|
153
|
-
position,
|
|
154
|
-
)
|
|
155
|
-
const index = callMemoOrStaticFn(
|
|
156
|
-
column,
|
|
157
|
-
'getIndex',
|
|
158
|
-
column_getIndex,
|
|
159
|
-
position,
|
|
160
|
-
)
|
|
161
|
-
if (index < 0 || index >= visibleLeafColumns.length - 1) return 0
|
|
162
|
-
|
|
163
|
-
const nextColumn = visibleLeafColumns[index + 1]!
|
|
164
|
-
return (
|
|
165
|
-
callMemoOrStaticFn(nextColumn, 'getSize', column_getSize) +
|
|
166
|
-
callMemoOrStaticFn(nextColumn, 'getAfter', column_getAfter, position)
|
|
219
|
+
'getColumnOffsets',
|
|
220
|
+
table_getColumnOffsets,
|
|
167
221
|
)
|
|
222
|
+
return offsets[toOffsetsKey(position)].afters[column.id] ?? 0
|
|
168
223
|
}
|
|
169
224
|
|
|
170
225
|
/**
|
|
@@ -88,7 +88,9 @@ export const columnVisibilityFeature: TableFeature = {
|
|
|
88
88
|
memoDeps: () => [
|
|
89
89
|
table.atoms.columnVisibility?.get(),
|
|
90
90
|
table.atoms.columnOrder?.get(),
|
|
91
|
+
table.atoms.grouping?.get(),
|
|
91
92
|
table.options.columns,
|
|
93
|
+
table.options.groupedColumnMode,
|
|
92
94
|
],
|
|
93
95
|
},
|
|
94
96
|
table_getVisibleLeafColumns: {
|
|
@@ -96,7 +98,9 @@ export const columnVisibilityFeature: TableFeature = {
|
|
|
96
98
|
memoDeps: () => [
|
|
97
99
|
table.atoms.columnVisibility?.get(),
|
|
98
100
|
table.atoms.columnOrder?.get(),
|
|
101
|
+
table.atoms.grouping?.get(),
|
|
99
102
|
table.options.columns,
|
|
103
|
+
table.options.groupedColumnMode,
|
|
100
104
|
],
|
|
101
105
|
},
|
|
102
106
|
table_setColumnVisibility: {
|
|
@@ -72,6 +72,9 @@ export function column_getIsVisible<
|
|
|
72
72
|
TData extends RowData,
|
|
73
73
|
TValue extends CellData = CellData,
|
|
74
74
|
>(column: Column_Internal<TFeatures, TData, TValue>): boolean {
|
|
75
|
+
const columnVisibility = column.table.atoms.columnVisibility?.get()
|
|
76
|
+
if (!columnVisibility) return true
|
|
77
|
+
|
|
75
78
|
const childColumns = column.columns
|
|
76
79
|
if (childColumns.length) {
|
|
77
80
|
return childColumns.some((childColumn) =>
|
|
@@ -79,9 +82,8 @@ export function column_getIsVisible<
|
|
|
79
82
|
)
|
|
80
83
|
}
|
|
81
84
|
|
|
82
|
-
const columnVisibility = column.table.atoms.columnVisibility?.get()
|
|
83
85
|
return (
|
|
84
|
-
(
|
|
86
|
+
(hasOwn(columnVisibility, column.id)
|
|
85
87
|
? columnVisibility[column.id]
|
|
86
88
|
: undefined) ?? true
|
|
87
89
|
)
|
|
@@ -416,7 +416,11 @@ export function table_getIsSomePageRowsSelected<
|
|
|
416
416
|
return table
|
|
417
417
|
.getPaginatedRowModel()
|
|
418
418
|
.flatRows.filter((row) => row_getCanSelect(row))
|
|
419
|
-
.some(
|
|
419
|
+
.some(
|
|
420
|
+
(row) =>
|
|
421
|
+
row_getIsSelected(row) ||
|
|
422
|
+
callMemoOrStaticFn(row, 'getIsSomeSelected', row_getIsSomeSelected),
|
|
423
|
+
)
|
|
420
424
|
}
|
|
421
425
|
|
|
422
426
|
/**
|