@infinite-table/infinite-react 4.4.1 → 5.0.0-canary.0
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/index.d.ts +288 -86
- package/index.dev.js +1216 -598
- package/index.dev.mjs +1216 -598
- package/index.js +1216 -598
- package/index.mjs +1216 -598
- package/package.json +2 -2
package/index.d.ts
CHANGED
|
@@ -118,7 +118,82 @@ declare class DeepMap<KeyType, ValueType> {
|
|
|
118
118
|
|
|
119
119
|
declare type VoidFn = () => void;
|
|
120
120
|
|
|
121
|
+
declare type TableRenderRange = {
|
|
122
|
+
start: [number, number];
|
|
123
|
+
end: [number, number];
|
|
124
|
+
rowFixed?: FixedPosition;
|
|
125
|
+
colFixed?: FixedPosition;
|
|
126
|
+
};
|
|
121
127
|
declare type FixedPosition = false | 'start' | 'end';
|
|
128
|
+
declare type WhichDirection = {
|
|
129
|
+
horizontal?: boolean;
|
|
130
|
+
vertical?: boolean;
|
|
131
|
+
};
|
|
132
|
+
declare type ItemSizeFunction = (index: number) => number;
|
|
133
|
+
interface IBrain {
|
|
134
|
+
getColCount: () => number;
|
|
135
|
+
getRowCount: () => number;
|
|
136
|
+
getFixedCellInfo: () => {
|
|
137
|
+
fixedRowsStart: number;
|
|
138
|
+
fixedColsStart: number;
|
|
139
|
+
fixedRowsEnd: number;
|
|
140
|
+
fixedColsEnd: number;
|
|
141
|
+
};
|
|
142
|
+
getRowspanParent: (rowIndex: number, colIndex: number) => number;
|
|
143
|
+
getColspanParent: (rowIndex: number, colIndex: number) => number;
|
|
144
|
+
getRowHeight: (rowIndex: number) => number;
|
|
145
|
+
getColWidth: (colIndex: number) => number;
|
|
146
|
+
getRowHeightWithSpan: (rowIndex: number, colIndex: number, rowspan: number) => number;
|
|
147
|
+
getColWidthWithSpan: (rowIndex: number, colIndex: number, colspan: number) => number;
|
|
148
|
+
isRowFixedStart: (rowIndex: number) => boolean;
|
|
149
|
+
isRowFixedEnd: (rowIndex: number) => boolean;
|
|
150
|
+
getScrollPosition: () => ScrollPosition;
|
|
151
|
+
getItemOffsetFor: (itemIndex: number, direction: 'horizontal' | 'vertical') => number;
|
|
152
|
+
getItemSize: (itemIndex: number, direction: 'horizontal' | 'vertical') => number;
|
|
153
|
+
getItemAt: (scrollPos: number, direction: 'horizontal' | 'vertical') => number;
|
|
154
|
+
getAvailableSize: () => Size;
|
|
155
|
+
getFixedStartRowsHeight: () => number;
|
|
156
|
+
getFixedEndRowsHeight: (options?: {
|
|
157
|
+
skipScroll: boolean;
|
|
158
|
+
}) => number;
|
|
159
|
+
getFixedStartColsWidth: () => number;
|
|
160
|
+
getFixedEndColsWidth: (options?: {
|
|
161
|
+
skipScroll: boolean;
|
|
162
|
+
}) => number;
|
|
163
|
+
getFixedEndColsOffsets: (options?: {
|
|
164
|
+
skipScroll: boolean;
|
|
165
|
+
}) => number[];
|
|
166
|
+
getFixedEndRowsOffsets: (options?: {
|
|
167
|
+
skipScroll: boolean;
|
|
168
|
+
}) => number[];
|
|
169
|
+
isRowFixed: (rowIndex: number) => boolean;
|
|
170
|
+
isColFixed: (colIndex: number) => boolean;
|
|
171
|
+
getRenderRange: () => TableRenderRange;
|
|
172
|
+
getExtraSpanCellsForRange: (options: {
|
|
173
|
+
horizontal: {
|
|
174
|
+
startIndex: number;
|
|
175
|
+
endIndex: number;
|
|
176
|
+
};
|
|
177
|
+
vertical: {
|
|
178
|
+
startIndex: number;
|
|
179
|
+
endIndex: number;
|
|
180
|
+
};
|
|
181
|
+
}) => [number, number][];
|
|
182
|
+
getRowspan: (rowIndex: number, colIndex: number) => number;
|
|
183
|
+
getColspan: (rowIndex: number, colIndex: number) => number;
|
|
184
|
+
getCellOffset: (rowIndex: number, colIndex: number) => {
|
|
185
|
+
x: number;
|
|
186
|
+
y: number;
|
|
187
|
+
};
|
|
188
|
+
name: string;
|
|
189
|
+
onRenderRangeChange: (fn: (renderRange: TableRenderRange) => void) => VoidFunction;
|
|
190
|
+
onScroll: (fn: OnScrollFn) => VoidFunction;
|
|
191
|
+
onAvailableSizeChange: (fn: (size: Size) => void) => VoidFunction;
|
|
192
|
+
onDestroy: (fn: VoidFunction) => void;
|
|
193
|
+
onScrollStart: (fn: VoidFunction) => VoidFunction;
|
|
194
|
+
onScrollStop: (fn: (scrollPos: ScrollPosition) => void) => VoidFunction;
|
|
195
|
+
}
|
|
196
|
+
|
|
122
197
|
declare type SpanFunction = ({ rowIndex, colIndex, }: {
|
|
123
198
|
rowIndex: number;
|
|
124
199
|
colIndex: number;
|
|
@@ -127,7 +202,6 @@ declare type RenderRangeType = {
|
|
|
127
202
|
startIndex: number;
|
|
128
203
|
endIndex: number;
|
|
129
204
|
};
|
|
130
|
-
declare type ItemSizeFunction = (index: number) => number;
|
|
131
205
|
declare type MatrixBrainOptions = {
|
|
132
206
|
width: number;
|
|
133
207
|
height: number;
|
|
@@ -138,16 +212,7 @@ declare type MatrixBrainOptions = {
|
|
|
138
212
|
rowspan?: SpanFunction;
|
|
139
213
|
colspan?: SpanFunction;
|
|
140
214
|
};
|
|
141
|
-
|
|
142
|
-
start: [number, number];
|
|
143
|
-
end: [number, number];
|
|
144
|
-
rowFixed?: FixedPosition;
|
|
145
|
-
colFixed?: FixedPosition;
|
|
146
|
-
};
|
|
147
|
-
declare type WhichDirection = {
|
|
148
|
-
horizontal?: boolean;
|
|
149
|
-
vertical?: boolean;
|
|
150
|
-
};
|
|
215
|
+
|
|
151
216
|
declare type FnOnRenderRangeChange = (range: TableRenderRange) => void;
|
|
152
217
|
declare type FnOnDirectionalRenderRangeChange = (range: [number, number]) => void;
|
|
153
218
|
declare type FnOnRenderCountChange = ({ horizontal, vertical, }: {
|
|
@@ -155,39 +220,61 @@ declare type FnOnRenderCountChange = ({ horizontal, vertical, }: {
|
|
|
155
220
|
vertical: number;
|
|
156
221
|
}) => void;
|
|
157
222
|
declare type OnAvailableSizeChange = (size: Size) => void;
|
|
158
|
-
declare
|
|
223
|
+
declare type ShouldUpdateRenderCountOptions = {
|
|
224
|
+
horizontalChange: boolean;
|
|
225
|
+
colsChanged: boolean;
|
|
226
|
+
colWidthChanged: boolean;
|
|
227
|
+
widthChanged: boolean;
|
|
228
|
+
colspanChanged: boolean;
|
|
229
|
+
verticalChange: boolean;
|
|
230
|
+
rowsChanged: boolean;
|
|
231
|
+
rowHeightChanged: boolean;
|
|
232
|
+
heightChanged: boolean;
|
|
233
|
+
rowspanChanged: boolean;
|
|
234
|
+
};
|
|
235
|
+
declare class MatrixBrain extends Logger implements IBrain {
|
|
159
236
|
private scrolling;
|
|
160
|
-
|
|
237
|
+
protected availableWidth: MatrixBrainOptions['width'];
|
|
238
|
+
protected availableRenderWidth: number;
|
|
239
|
+
isHorizontalLayoutBrain: boolean;
|
|
161
240
|
name: string;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
241
|
+
protected availableHeight: MatrixBrainOptions['height'];
|
|
242
|
+
protected availableRenderHeight: number;
|
|
243
|
+
protected cols: MatrixBrainOptions['cols'];
|
|
244
|
+
protected rows: MatrixBrainOptions['rows'];
|
|
245
|
+
/**
|
|
246
|
+
* This is only here for easier accessing in the renderer, when the horizontal layout is enabled.
|
|
247
|
+
* In this way, the API is the same for both brains, so we don't have to cast the brain type in the renderer.
|
|
248
|
+
*/
|
|
249
|
+
set rowsPerPage(rowsPerPage: number);
|
|
250
|
+
get rowsPerPage(): number;
|
|
251
|
+
protected _rowsPerPage: number;
|
|
252
|
+
protected rowHeight: MatrixBrainOptions['rowHeight'];
|
|
253
|
+
protected colWidth: MatrixBrainOptions['colWidth'];
|
|
167
254
|
private rowspan;
|
|
168
255
|
private colspan;
|
|
169
256
|
private rowspanParent;
|
|
170
257
|
private rowspanValue;
|
|
171
|
-
|
|
172
|
-
|
|
258
|
+
protected rowHeightCache: number[];
|
|
259
|
+
protected rowOffsetCache: number[];
|
|
173
260
|
private verticalTotalSize;
|
|
174
261
|
private colspanParent;
|
|
175
262
|
private colspanValue;
|
|
176
|
-
|
|
177
|
-
|
|
263
|
+
protected colWidthCache: number[];
|
|
264
|
+
protected colOffsetCache: number[];
|
|
178
265
|
private horizontalTotalSize;
|
|
179
266
|
private horizontalRenderCount?;
|
|
180
267
|
private verticalRenderCount?;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
268
|
+
protected horizontalRenderRange: RenderRangeType;
|
|
269
|
+
protected verticalRenderRange: RenderRangeType;
|
|
270
|
+
protected extraSpanCells: [number, number][];
|
|
184
271
|
private scrollPosition;
|
|
185
272
|
private onScrollFns;
|
|
186
273
|
private onRenderRangeChangeFns;
|
|
187
274
|
private onVerticalRenderRangeChangeFns;
|
|
188
275
|
private onHorizontalRenderRangeChangeFns;
|
|
189
276
|
private onDestroyFns;
|
|
190
|
-
|
|
277
|
+
protected destroyed: boolean;
|
|
191
278
|
private onRenderCountChangeFns;
|
|
192
279
|
private onAvailableSizeChangeFns;
|
|
193
280
|
private onScrollStartFns;
|
|
@@ -210,37 +297,38 @@ declare class MatrixBrain extends Logger {
|
|
|
210
297
|
* Number of rows that are fixed at the end
|
|
211
298
|
*/
|
|
212
299
|
private fixedRowsEnd;
|
|
213
|
-
constructor(name
|
|
300
|
+
constructor(name: string);
|
|
214
301
|
private reset;
|
|
215
302
|
private resetVertical;
|
|
216
303
|
private resetHorizontal;
|
|
217
304
|
setScrollStopDelay: (scrollStopDelay: number) => void;
|
|
305
|
+
getVirtualColIndex(colIndex: number, _opts?: {
|
|
306
|
+
pageIndex: number;
|
|
307
|
+
}): number;
|
|
218
308
|
getRowCount: () => number;
|
|
219
309
|
getColCount: () => number;
|
|
220
|
-
update
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
updateRenderCount: (which?: WhichDirection) => void;
|
|
233
|
-
private doUpdateRenderCount;
|
|
310
|
+
update(options: Partial<MatrixBrainOptions>, shouldUpdateRenderCount?: (options: ShouldUpdateRenderCountOptions) => boolean): void;
|
|
311
|
+
/**
|
|
312
|
+
*
|
|
313
|
+
* @param options.left - if true, extends the left side with the amount of current visible columns, otherwise with the specified number
|
|
314
|
+
* @param options.right - if true, extends the right side with the amount of current visible columns, otherwise with the specified number
|
|
315
|
+
*/
|
|
316
|
+
extendRenderRange(options: {
|
|
317
|
+
left?: number | boolean;
|
|
318
|
+
right?: number | boolean;
|
|
319
|
+
}): () => void;
|
|
320
|
+
updateRenderCount(which?: WhichDirection): void;
|
|
321
|
+
protected doUpdateRenderCount(which?: WhichDirection): void;
|
|
234
322
|
get scrollTopMax(): number;
|
|
235
323
|
get scrollLeftMax(): number;
|
|
236
324
|
private setScrolling;
|
|
237
325
|
private notifyScrollStart;
|
|
238
326
|
private notifyScrollStop;
|
|
239
|
-
setScrollPosition
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
327
|
+
setScrollPosition(scrollPosition: ScrollPosition, callback?: (scrollPos: ScrollPosition) => void): void;
|
|
328
|
+
protected notifyAvailableSizeChange: () => void;
|
|
329
|
+
protected notifyRenderRangeChange(): void;
|
|
330
|
+
protected notifyVerticalRenderRangeChange: () => void;
|
|
331
|
+
protected notifyHorizontalRenderRangeChange: () => void;
|
|
244
332
|
private notifyScrollChange;
|
|
245
333
|
private computeDirectionalRenderCount;
|
|
246
334
|
getFixedSize(direction: 'horizontal' | 'vertical'): number;
|
|
@@ -318,12 +406,15 @@ declare class MatrixBrain extends Logger {
|
|
|
318
406
|
endIndex: number;
|
|
319
407
|
};
|
|
320
408
|
getItemAt: (scrollPos: number, direction: 'horizontal' | 'vertical') => number;
|
|
321
|
-
getCellOffset
|
|
409
|
+
getCellOffset(rowIndex: number, colIndex: number): {
|
|
322
410
|
x: number;
|
|
323
411
|
y: number;
|
|
324
412
|
};
|
|
325
|
-
|
|
326
|
-
|
|
413
|
+
getInitialRowHeight(): number | ItemSizeFunction;
|
|
414
|
+
getInitialCols(): number;
|
|
415
|
+
getInitialRows(): number;
|
|
416
|
+
getItemOffsetFor(itemIndex: number, direction: 'horizontal' | 'vertical'): number;
|
|
417
|
+
protected computeCacheFor: (itemIndex: number, direction: 'horizontal' | 'vertical') => void;
|
|
327
418
|
private getItemSizeCacheFor;
|
|
328
419
|
private computeItemSpanUpTo;
|
|
329
420
|
private getCellSpan;
|
|
@@ -343,11 +434,13 @@ declare class MatrixBrain extends Logger {
|
|
|
343
434
|
* @returns the size of the specified item
|
|
344
435
|
*/
|
|
345
436
|
getItemSize: (itemIndex: number, direction: 'horizontal' | 'vertical') => number;
|
|
346
|
-
|
|
437
|
+
getRowIndexInPage(rowIndex: number): number;
|
|
438
|
+
getPageIndexForRow(_rowIndex: number): number;
|
|
439
|
+
getVirtualizedContentSize(): {
|
|
347
440
|
height: number;
|
|
348
441
|
width: number;
|
|
349
442
|
};
|
|
350
|
-
|
|
443
|
+
getVirtualizedContentSizeFor(direction: 'horizontal' | 'vertical'): number;
|
|
351
444
|
setRenderRange: ({ horizontal, vertical, extraCells, }: {
|
|
352
445
|
horizontal: RenderRangeType;
|
|
353
446
|
vertical: RenderRangeType;
|
|
@@ -373,8 +466,12 @@ declare class MatrixBrain extends Logger {
|
|
|
373
466
|
width: number;
|
|
374
467
|
height: number;
|
|
375
468
|
};
|
|
469
|
+
protected getAvailableRenderSize: () => {
|
|
470
|
+
width: number;
|
|
471
|
+
height: number;
|
|
472
|
+
};
|
|
376
473
|
private notifyDestroy;
|
|
377
|
-
destroy
|
|
474
|
+
destroy(): void;
|
|
378
475
|
}
|
|
379
476
|
|
|
380
477
|
declare enum InfiniteTableActionType {
|
|
@@ -397,6 +494,7 @@ declare type InfiniteTableAction = {
|
|
|
397
494
|
declare type InfiniteTableBaseCellProps<T> = {
|
|
398
495
|
column: InfiniteTableComputedColumn<T>;
|
|
399
496
|
align?: InfiniteTableColumnAlignValues;
|
|
497
|
+
horizontalLayoutPageIndex: number | null;
|
|
400
498
|
rowId?: any;
|
|
401
499
|
renderChildren: () => Renderable;
|
|
402
500
|
width: number;
|
|
@@ -489,6 +587,7 @@ declare type InfiniteTableColumnHeaderParam<DATA_TYPE, COL_TYPE = InfiniteTableC
|
|
|
489
587
|
columnSortInfo: DataSourceSingleSortInfo<DATA_TYPE> | null;
|
|
490
588
|
columnFilterValue: DataSourceFilterValueItem<DATA_TYPE> | null;
|
|
491
589
|
selectionMode: DataSourcePropSelectionMode;
|
|
590
|
+
horizontalLayoutPageIndex: null | number;
|
|
492
591
|
allRowsSelected: boolean;
|
|
493
592
|
someRowsSelected: boolean;
|
|
494
593
|
filtered: boolean;
|
|
@@ -518,6 +617,9 @@ declare type InfiniteTableColumnRenderBag = {
|
|
|
518
617
|
};
|
|
519
618
|
declare type InfiniteTableColumnRenderParamBase<DATA_TYPE, COL_TYPE = InfiniteTableComputedColumn<DATA_TYPE>> = {
|
|
520
619
|
domRef: InfiniteTableCellProps<DATA_TYPE>['domRef'];
|
|
620
|
+
htmlElementRef: React__default.MutableRefObject<HTMLElement | null>;
|
|
621
|
+
rowIndexInHorizontalLayoutPage: null | number;
|
|
622
|
+
horizontalLayoutPageIndex: null | number;
|
|
521
623
|
value: string | number | Renderable;
|
|
522
624
|
align: InfiniteTableColumnAlignValues;
|
|
523
625
|
verticalAlign: InfiniteTableColumnVerticalAlignValues;
|
|
@@ -586,6 +688,8 @@ declare type InfiniteTableColumnTypeNames = 'string' | 'number' | 'date' | strin
|
|
|
586
688
|
declare type InfiniteTableColumnStylingFnParams<T> = {
|
|
587
689
|
value: Renderable;
|
|
588
690
|
column: InfiniteTableComputedColumn<T>;
|
|
691
|
+
rowIndexInHorizontalLayoutPage: null | number;
|
|
692
|
+
horizontalLayoutPageIndex: null | number;
|
|
589
693
|
inEdit: boolean;
|
|
590
694
|
rowHasSelectedCells: boolean;
|
|
591
695
|
editError: InfiniteTableColumnRenderParamBase<T>['editError'];
|
|
@@ -1169,6 +1273,85 @@ declare class RowDetailState<KeyType = any> extends BooleanCollectionState<RowDe
|
|
|
1169
1273
|
toggleRowDetails(key: KeyType): void;
|
|
1170
1274
|
}
|
|
1171
1275
|
|
|
1276
|
+
declare type SubscriptionCallbackOnChangeFn<T> = (node: T | null) => void;
|
|
1277
|
+
interface SubscriptionCallback<T> {
|
|
1278
|
+
(node: T, callback?: () => void): void;
|
|
1279
|
+
get: () => T | null;
|
|
1280
|
+
destroy: VoidFn;
|
|
1281
|
+
onChange: (fn: SubscriptionCallbackOnChangeFn<T>) => VoidFn;
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
/**
|
|
1285
|
+
* This class abstracts the following behavior:
|
|
1286
|
+
*
|
|
1287
|
+
* in the DOM, we have a list (flat, so no nesting) of elements that represent table cells
|
|
1288
|
+
* At any one time, just a fraction of all table cells are rendered/present in the DOM
|
|
1289
|
+
* and we need to keep track and know for each element what cell represents and for each
|
|
1290
|
+
* rendered cell, to what element it is currently mapped (so we need a bi-directional mapping)
|
|
1291
|
+
*
|
|
1292
|
+
* This class has tests - see tests/mapped-cells.spec.ts
|
|
1293
|
+
*/
|
|
1294
|
+
declare class MappedCells<T_ADDITIONAL_CELL_INFO = any> extends Logger {
|
|
1295
|
+
/**
|
|
1296
|
+
* This is the mapping from element index to cell info.
|
|
1297
|
+
* The index in the array is the element index while the value at the position is an array where
|
|
1298
|
+
* the first number is the row index and the second number is the column index.
|
|
1299
|
+
*/
|
|
1300
|
+
private elementIndexToCell;
|
|
1301
|
+
/**
|
|
1302
|
+
* This is the mapping from cell address to element index.
|
|
1303
|
+
* The key in the map is the cell address (built like this: `${rowIndex}:${columnIndex}`)
|
|
1304
|
+
* while the value is the element index it is being rendered to.
|
|
1305
|
+
*/
|
|
1306
|
+
private cellToElementIndex;
|
|
1307
|
+
private cellAdditionalInfo;
|
|
1308
|
+
/**
|
|
1309
|
+
* Keeps the JSX of rendered elements in memory, so we can possibly reuse it later.
|
|
1310
|
+
*/
|
|
1311
|
+
private renderedElements;
|
|
1312
|
+
private withCellAdditionalInfo;
|
|
1313
|
+
constructor(opts?: {
|
|
1314
|
+
withCellAdditionalInfo: boolean;
|
|
1315
|
+
});
|
|
1316
|
+
getElementFromListForColumn: (elementsOutsideItemRange: number[], colIndex: number) => number | undefined;
|
|
1317
|
+
init(): void;
|
|
1318
|
+
reset(): void;
|
|
1319
|
+
destroy(): void;
|
|
1320
|
+
/**
|
|
1321
|
+
* Retrieves the elements that contain rendered cells that are outside
|
|
1322
|
+
* of the specified range
|
|
1323
|
+
*
|
|
1324
|
+
* @param start in [rowIndex, colIndex] format - represents the topmost-leftmost cell visible of the render range
|
|
1325
|
+
* @param end in [rowIndex, colIndex] format - represents the bottom-right corner of the visible range. The end is not inclusive,
|
|
1326
|
+
* so the last visible cell will be [rowIndex-1, colIndex-1]
|
|
1327
|
+
*
|
|
1328
|
+
* @returns an array of element indexes that are outside the specified range
|
|
1329
|
+
*/
|
|
1330
|
+
getElementsOutsideRenderRange: (range: TableRenderRange) => number[];
|
|
1331
|
+
isCellRendered: (rowIndex: number, columnIndex: number) => boolean;
|
|
1332
|
+
getCellAdditionalInfo: (rowIndex: number, columnIndex: number) => T_ADDITIONAL_CELL_INFO | undefined;
|
|
1333
|
+
isElementRendered: (elementIndex: number) => boolean;
|
|
1334
|
+
getElementsForRowIndex: (rowIndex: number) => number[];
|
|
1335
|
+
getAdditionalInfoForRowIndex: (rowIndex: number) => T_ADDITIONAL_CELL_INFO[];
|
|
1336
|
+
getRenderedNodeAtElement: (elementIndex: number) => Renderable | null;
|
|
1337
|
+
getRenderedCellAtElement: (elementIndex: number) => [
|
|
1338
|
+
number,
|
|
1339
|
+
number
|
|
1340
|
+
] | null;
|
|
1341
|
+
getRenderedNodeForCell: (rowIndex: number, columnIndex: number) => Renderable | null;
|
|
1342
|
+
getElementIndexForCell: (rowIndex: number, columnIndex: number) => number | null;
|
|
1343
|
+
renderCellAtElement: (rowIndex: number, colIndex: number, elementIndex: number, renderNode: Renderable | undefined, cellAdditionalInfo?: T_ADDITIONAL_CELL_INFO | undefined) => void;
|
|
1344
|
+
discardCell: (rowIndex: number, colIndex: number) => void;
|
|
1345
|
+
discardElement: (elementIndex: number) => [
|
|
1346
|
+
number,
|
|
1347
|
+
number
|
|
1348
|
+
] | null;
|
|
1349
|
+
discardElementsStartingWith: (elIndex: number, callback?: ((index: number, cell: [
|
|
1350
|
+
number,
|
|
1351
|
+
number
|
|
1352
|
+
] | null) => void) | undefined) => boolean;
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1172
1355
|
declare type TableRenderCellFnParam = {
|
|
1173
1356
|
domRef: RefCallback<HTMLElement>;
|
|
1174
1357
|
rowIndex: number;
|
|
@@ -1196,19 +1379,25 @@ declare type TableRenderDetailRowFnParam = {
|
|
|
1196
1379
|
};
|
|
1197
1380
|
declare type TableRenderCellFn = (param: TableRenderCellFnParam) => Renderable;
|
|
1198
1381
|
declare type TableRenderDetailRowFn = (param: TableRenderDetailRowFnParam) => Renderable;
|
|
1382
|
+
declare type HorizontalLayoutColVisibilityOptions = {
|
|
1383
|
+
horizontalLayoutPageIndex?: number;
|
|
1384
|
+
};
|
|
1199
1385
|
declare class ReactHeadlessTableRenderer extends Logger {
|
|
1200
|
-
|
|
1386
|
+
protected brain: MatrixBrain;
|
|
1201
1387
|
debugId: string;
|
|
1202
|
-
|
|
1388
|
+
protected destroyed: boolean;
|
|
1203
1389
|
private scrolling;
|
|
1204
1390
|
cellHoverClassNames: string[];
|
|
1205
1391
|
private itemDOMElements;
|
|
1206
|
-
|
|
1207
|
-
|
|
1392
|
+
protected itemDOMRefs: RefCallback<HTMLElement>[];
|
|
1393
|
+
protected updaters: SubscriptionCallback<Renderable>[];
|
|
1208
1394
|
private detailRowDOMElements;
|
|
1209
1395
|
private detailRowDOMRefs;
|
|
1210
1396
|
private detailRowUpdaters;
|
|
1211
|
-
|
|
1397
|
+
protected mappedCells: MappedCells<{
|
|
1398
|
+
renderRowIndex: number;
|
|
1399
|
+
renderColIndex: number;
|
|
1400
|
+
}>;
|
|
1212
1401
|
private mappedDetailRows;
|
|
1213
1402
|
private items;
|
|
1214
1403
|
private detailItems;
|
|
@@ -1228,7 +1417,7 @@ declare class ReactHeadlessTableRenderer extends Logger {
|
|
|
1228
1417
|
scrollLeft?: boolean | undefined;
|
|
1229
1418
|
scrollTop?: boolean | undefined;
|
|
1230
1419
|
}, zIndex: number | 'auto' | undefined | null) => void;
|
|
1231
|
-
constructor(brain: MatrixBrain);
|
|
1420
|
+
constructor(brain: MatrixBrain, debugId?: string);
|
|
1232
1421
|
getFullyVisibleRowsRange: () => {
|
|
1233
1422
|
start: number;
|
|
1234
1423
|
end: number;
|
|
@@ -1240,7 +1429,7 @@ declare class ReactHeadlessTableRenderer extends Logger {
|
|
|
1240
1429
|
getScrollPositionForScrollColumnIntoView: (colIndex: number, config?: {
|
|
1241
1430
|
scrollAdjustPosition?: ScrollAdjustPosition;
|
|
1242
1431
|
offset?: number;
|
|
1243
|
-
}) => ScrollPosition | null;
|
|
1432
|
+
} & HorizontalLayoutColVisibilityOptions) => ScrollPosition | null;
|
|
1244
1433
|
getScrollPositionForScrollCellIntoView: (rowIndex: number, colIndex: number, config?: {
|
|
1245
1434
|
rowScrollAdjustPosition?: ScrollAdjustPosition;
|
|
1246
1435
|
colScrollAdjustPosition?: ScrollAdjustPosition;
|
|
@@ -1252,31 +1441,46 @@ declare class ReactHeadlessTableRenderer extends Logger {
|
|
|
1252
1441
|
isRowVisible: (rowIndex: number, offsetMargin?: number) => boolean;
|
|
1253
1442
|
isRowRendered: (rowIndex: number) => boolean;
|
|
1254
1443
|
isCellVisible: (rowIndex: number, colIndex: number) => boolean;
|
|
1255
|
-
isCellFullyVisible: (rowIndex: number, colIndex: number) => boolean;
|
|
1256
|
-
isColumnFullyVisible: (colIndex: number, offsetMargin?: number) => boolean;
|
|
1257
|
-
isColumnVisible: (colIndex: number, offsetMargin?: number) => boolean;
|
|
1258
|
-
isCellRendered: (rowIndex: number, colIndex: number) => boolean;
|
|
1259
|
-
isColumnRendered: (colIndex: number) => boolean;
|
|
1444
|
+
isCellFullyVisible: (rowIndex: number, colIndex: number, opts?: HorizontalLayoutColVisibilityOptions | undefined) => boolean;
|
|
1445
|
+
isColumnFullyVisible: (colIndex: number, offsetMargin?: number, opts?: HorizontalLayoutColVisibilityOptions | undefined) => boolean;
|
|
1446
|
+
isColumnVisible: (colIndex: number, offsetMargin?: number, opts?: HorizontalLayoutColVisibilityOptions | undefined) => boolean;
|
|
1447
|
+
isCellRendered: (rowIndex: number, colIndex: number, opts?: HorizontalLayoutColVisibilityOptions | undefined) => boolean;
|
|
1448
|
+
isColumnRendered: (colIndex: number, opts?: HorizontalLayoutColVisibilityOptions | undefined) => boolean;
|
|
1260
1449
|
getExtraSpanCellsForRange: (range: TableRenderRange) => [number, number][];
|
|
1261
|
-
|
|
1262
|
-
|
|
1450
|
+
isCellRenderedAndMappedCorrectly(row: number, col: number): {
|
|
1451
|
+
rendered: boolean;
|
|
1452
|
+
mapped: boolean;
|
|
1453
|
+
};
|
|
1454
|
+
renderRange(range: TableRenderRange, { renderCell, renderDetailRow, force, onRender, }: {
|
|
1455
|
+
force?: boolean;
|
|
1263
1456
|
renderCell: TableRenderCellFn;
|
|
1264
|
-
renderDetailRow?: TableRenderDetailRowFn
|
|
1457
|
+
renderDetailRow?: TableRenderDetailRowFn;
|
|
1265
1458
|
onRender: (items: Renderable[]) => void;
|
|
1266
|
-
})
|
|
1459
|
+
}): Renderable[];
|
|
1267
1460
|
private renderElement;
|
|
1268
1461
|
private renderDetailElement;
|
|
1269
1462
|
getFixedRanges: (currentRenderRange: TableRenderRange) => TableRenderRange[];
|
|
1270
|
-
|
|
1271
|
-
|
|
1463
|
+
protected isCellFixed: (rowIndex: number, colIndex: number) => {
|
|
1464
|
+
row: FixedPosition;
|
|
1465
|
+
col: FixedPosition;
|
|
1466
|
+
};
|
|
1467
|
+
protected isCellCovered: (rowIndex: number, colIndex: number) => false | number[];
|
|
1272
1468
|
private renderDetailRowAtElement;
|
|
1273
|
-
|
|
1274
|
-
|
|
1469
|
+
protected getCellRealCoordinates(rowIndex: number, colIndex: number): {
|
|
1470
|
+
rowIndex: number;
|
|
1471
|
+
colIndex: number;
|
|
1472
|
+
};
|
|
1473
|
+
protected renderCellAtElement(rowIndex: number, colIndex: number, elementIndex: number, renderCell: TableRenderCellFn): void;
|
|
1474
|
+
protected onMouseEnter: (rowIndex: number) => void;
|
|
1275
1475
|
private addHoverClass;
|
|
1276
|
-
|
|
1476
|
+
protected onMouseLeave: (rowIndex: number) => void;
|
|
1277
1477
|
private removeHoverClass;
|
|
1278
|
-
|
|
1279
|
-
|
|
1478
|
+
protected updateHoverClassNamesForRow: (rowIndex: number) => void;
|
|
1479
|
+
protected updateElementPosition: (elementIndex: number, options?: {
|
|
1480
|
+
hidden: boolean;
|
|
1481
|
+
rowspan: number;
|
|
1482
|
+
colspan: number;
|
|
1483
|
+
} | undefined) => void;
|
|
1280
1484
|
private updateDetailElementPosition;
|
|
1281
1485
|
private onScrollStart;
|
|
1282
1486
|
private onScrollStop;
|
|
@@ -1285,14 +1489,6 @@ declare class ReactHeadlessTableRenderer extends Logger {
|
|
|
1285
1489
|
reset(): void;
|
|
1286
1490
|
}
|
|
1287
1491
|
|
|
1288
|
-
declare type SubscriptionCallbackOnChangeFn<T> = (node: T | null) => void;
|
|
1289
|
-
interface SubscriptionCallback<T> {
|
|
1290
|
-
(node: T, callback?: () => void): void;
|
|
1291
|
-
get: () => T | null;
|
|
1292
|
-
destroy: VoidFn;
|
|
1293
|
-
onChange: (fn: SubscriptionCallbackOnChangeFn<T>) => VoidFn;
|
|
1294
|
-
}
|
|
1295
|
-
|
|
1296
1492
|
declare class ScrollListener {
|
|
1297
1493
|
private scrollPosition;
|
|
1298
1494
|
private onScrollFns;
|
|
@@ -1318,11 +1514,13 @@ declare type ContextMenuLocationWithEvent = Partial<CellContextMenuLocation> & {
|
|
|
1318
1514
|
target: HTMLElement;
|
|
1319
1515
|
};
|
|
1320
1516
|
interface InfiniteTableSetupState<T> {
|
|
1517
|
+
brain: MatrixBrain;
|
|
1518
|
+
headerBrain: MatrixBrain;
|
|
1321
1519
|
renderer: ReactHeadlessTableRenderer;
|
|
1520
|
+
onRenderUpdater: SubscriptionCallback<Renderable>;
|
|
1322
1521
|
lastRowToExpandRef: MutableRefObject<any | null>;
|
|
1323
1522
|
lastRowToCollapseRef: MutableRefObject<any | null>;
|
|
1324
1523
|
getDOMNodeForCell: (cellPos: CellPositionByIndex) => HTMLElement | null;
|
|
1325
|
-
onRenderUpdater: SubscriptionCallback<Renderable>;
|
|
1326
1524
|
propsCache: Map<keyof InfiniteTableProps<T>, WeakMap<any, any>>;
|
|
1327
1525
|
columnsWhenInlineGroupRenderStrategy?: Record<string, InfiniteTableColumn<T>>;
|
|
1328
1526
|
domRef: MutableRefObject<HTMLDivElement | null>;
|
|
@@ -1361,8 +1559,6 @@ interface InfiniteTableSetupState<T> {
|
|
|
1361
1559
|
keyDown: SubscriptionCallback<KeyboardEvent>;
|
|
1362
1560
|
columnsWhenGrouping?: InfiniteTablePropColumns<T>;
|
|
1363
1561
|
bodySize: Size;
|
|
1364
|
-
brain: MatrixBrain;
|
|
1365
|
-
headerBrain: MatrixBrain;
|
|
1366
1562
|
focused: boolean;
|
|
1367
1563
|
ready: boolean;
|
|
1368
1564
|
columnReorderDragColumnId: false | string;
|
|
@@ -1406,6 +1602,7 @@ interface InfiniteTableMappedState<T> {
|
|
|
1406
1602
|
groupColumn: InfiniteTableProps<T>['groupColumn'];
|
|
1407
1603
|
onKeyDown: InfiniteTableProps<T>['onKeyDown'];
|
|
1408
1604
|
onCellClick: InfiniteTableProps<T>['onCellClick'];
|
|
1605
|
+
wrapRowsHorizontally: InfiniteTableProps<T>['wrapRowsHorizontally'];
|
|
1409
1606
|
rowDetailCache: RowDetailCache<RowDetailCacheKey, RowDetailCacheEntry>;
|
|
1410
1607
|
headerOptions: NonUndefined<InfiniteTableProps<T>['headerOptions']>;
|
|
1411
1608
|
draggableColumnsRestrictTo: NonUndefined<InfiniteTableProps<T>['draggableColumnsRestrictTo']>;
|
|
@@ -2255,6 +2452,7 @@ declare function useInfiniteHeaderCell<T>(): {
|
|
|
2255
2452
|
columnSortInfo: DataSourceSingleSortInfo<T> | null;
|
|
2256
2453
|
columnFilterValue: DataSourceFilterValueItem<T> | null;
|
|
2257
2454
|
selectionMode: DataSourcePropSelectionMode;
|
|
2455
|
+
horizontalLayoutPageIndex: number | null;
|
|
2258
2456
|
allRowsSelected: boolean;
|
|
2259
2457
|
someRowsSelected: boolean;
|
|
2260
2458
|
filtered: boolean;
|
|
@@ -5082,11 +5280,14 @@ declare type InfiniteTablePropColumnGroups = Record<string, InfiniteTableColumnG
|
|
|
5082
5280
|
declare type InfiniteTablePropCollapsedColumnGroups = Map<string[], string>;
|
|
5083
5281
|
declare type InfiniteTableColumnGroupHeaderRenderParams = {
|
|
5084
5282
|
columnGroup: InfiniteTableComputedColumnGroup;
|
|
5283
|
+
horizontalLayoutPageIndex: number | null;
|
|
5085
5284
|
};
|
|
5086
5285
|
declare type InfiniteTableColumnGroupHeaderRenderFunction = (params: InfiniteTableColumnGroupHeaderRenderParams) => Renderable;
|
|
5286
|
+
declare type InfiniteTableColumnGroupStyleFunction = (params: InfiniteTableColumnGroupHeaderRenderParams) => React$1.CSSProperties;
|
|
5087
5287
|
declare type InfiniteTableColumnGroup = {
|
|
5088
5288
|
columnGroup?: string;
|
|
5089
5289
|
header?: Renderable | InfiniteTableColumnGroupHeaderRenderFunction;
|
|
5290
|
+
style?: React$1.CSSProperties | InfiniteTableColumnGroupStyleFunction;
|
|
5090
5291
|
};
|
|
5091
5292
|
declare type InfiniteTableComputedColumnGroup = InfiniteTableColumnGroup & {
|
|
5092
5293
|
id: string;
|
|
@@ -5181,6 +5382,7 @@ interface InfiniteTableProps<T> {
|
|
|
5181
5382
|
children?: React$1.JSX.Element | React$1.JSX.Element[] | React$1.ReactNode;
|
|
5182
5383
|
loadingText?: Renderable;
|
|
5183
5384
|
components?: InfiniteTablePropComponents<T>;
|
|
5385
|
+
wrapRowsHorizontally?: boolean;
|
|
5184
5386
|
keyboardShortcuts?: InfiniteTablePropKeyboardShorcut[];
|
|
5185
5387
|
viewportReservedWidth?: number;
|
|
5186
5388
|
onViewportReservedWidthChange?: (viewportReservedWidth: number) => void;
|