material-react-table 1.4.0-beta.4 → 1.4.1
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/LICENSE +21 -0
- package/README.md +4 -2
- package/dist/cjs/index.js +30 -598
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/MaterialReactTable.d.ts +6 -2
- package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +4 -1
- package/dist/cjs/types/index.d.ts +3 -1
- package/dist/cjs/types/table/MRT_TableRoot.d.ts +3 -2
- package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +4 -4
- package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +4 -4
- package/dist/esm/material-react-table.esm.js +333 -885
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/MaterialReactTable.d.ts +6 -2
- package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +4 -1
- package/dist/esm/types/index.d.ts +3 -1
- package/dist/esm/types/table/MRT_TableRoot.d.ts +3 -2
- package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +4 -4
- package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +4 -4
- package/dist/index.d.ts +33 -18
- package/locales/nl.esm.js +1 -1
- package/locales/nl.esm.js.map +1 -1
- package/locales/nl.js +1 -1
- package/locales/nl.js.map +1 -1
- package/locales/ru.esm.js +3 -3
- package/locales/ru.esm.js.map +1 -1
- package/locales/ru.js +3 -3
- package/locales/ru.js.map +1 -1
- package/package.json +10 -10
- package/src/MaterialReactTable.tsx +11 -3
- package/src/_locales/nl.ts +1 -1
- package/src/_locales/ru.ts +3 -3
- package/src/body/MRT_TableBody.tsx +1 -1
- package/src/body/MRT_TableBodyRow.tsx +6 -1
- package/src/body/MRT_TableDetailPanel.tsx +32 -5
- package/src/head/MRT_TableHead.tsx +2 -8
- package/src/index.tsx +4 -0
- package/src/table/MRT_Table.tsx +2 -6
- package/src/table/MRT_TableContainer.tsx +4 -9
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +5 -5
- package/src/toolbar/MRT_ToolbarDropZone.tsx +6 -4
package/dist/cjs/index.js
CHANGED
@@ -71,6 +71,7 @@ var TableHead = require('@mui/material/TableHead');
|
|
71
71
|
var TableRow = require('@mui/material/TableRow');
|
72
72
|
var TableCell = require('@mui/material/TableCell');
|
73
73
|
var TableSortLabel = require('@mui/material/TableSortLabel');
|
74
|
+
var reactVirtual = require('@tanstack/react-virtual');
|
74
75
|
var TableBody = require('@mui/material/TableBody');
|
75
76
|
var Skeleton = require('@mui/material/Skeleton');
|
76
77
|
var TableFooter = require('@mui/material/TableFooter');
|
@@ -81,26 +82,7 @@ var Stack = require('@mui/material/Stack');
|
|
81
82
|
|
82
83
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
83
84
|
|
84
|
-
function _interopNamespace(e) {
|
85
|
-
if (e && e.__esModule) return e;
|
86
|
-
var n = Object.create(null);
|
87
|
-
if (e) {
|
88
|
-
Object.keys(e).forEach(function (k) {
|
89
|
-
if (k !== 'default') {
|
90
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
91
|
-
Object.defineProperty(n, k, d.get ? d : {
|
92
|
-
enumerable: true,
|
93
|
-
get: function () { return e[k]; }
|
94
|
-
});
|
95
|
-
}
|
96
|
-
});
|
97
|
-
}
|
98
|
-
n["default"] = e;
|
99
|
-
return Object.freeze(n);
|
100
|
-
}
|
101
|
-
|
102
85
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
103
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
104
86
|
var ArrowDownwardIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowDownwardIcon);
|
105
87
|
var ArrowRightIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowRightIcon);
|
106
88
|
var CancelIcon__default = /*#__PURE__*/_interopDefaultLegacy(CancelIcon);
|
@@ -1392,7 +1374,7 @@ const MRT_ToolbarInternalButtons = ({ table, }) => {
|
|
1392
1374
|
enableFullScreenToggle && (React__default["default"].createElement(MRT_FullScreenToggleButton, { table: table }))))));
|
1393
1375
|
};
|
1394
1376
|
|
1395
|
-
const MRT_ToolbarDropZone = ({ table }) => {
|
1377
|
+
const MRT_ToolbarDropZone = ({ table, }) => {
|
1396
1378
|
var _a, _b;
|
1397
1379
|
const { getState, options: { enableGrouping, localization }, setHoveredColumn, } = table;
|
1398
1380
|
const { draggingColumn, hoveredColumn, grouping } = getState();
|
@@ -2071,580 +2053,17 @@ const MRT_TableHeadRow = ({ headerGroup, table }) => {
|
|
2071
2053
|
};
|
2072
2054
|
|
2073
2055
|
const MRT_TableHead = ({ table }) => {
|
2074
|
-
const { getHeaderGroups, getState, options: {
|
2056
|
+
const { getHeaderGroups, getState, options: { enableStickyHeader, layoutMode, muiTableHeadProps }, } = table;
|
2075
2057
|
const { isFullScreen } = getState();
|
2076
2058
|
const tableHeadProps = muiTableHeadProps instanceof Function
|
2077
2059
|
? muiTableHeadProps({ table })
|
2078
2060
|
: muiTableHeadProps;
|
2079
|
-
const stickyHeader = enableStickyHeader ||
|
2061
|
+
const stickyHeader = enableStickyHeader || isFullScreen;
|
2080
2062
|
return (React__default["default"].createElement(TableHead__default["default"], Object.assign({}, tableHeadProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'grid' : 'table-row-group', opacity: 0.97, position: stickyHeader ? 'sticky' : 'relative', top: stickyHeader && layoutMode === 'grid' ? 0 : undefined, zIndex: stickyHeader ? 2 : undefined }, ((tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx) instanceof Function
|
2081
2063
|
? tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx(theme)
|
2082
2064
|
: tableHeadProps === null || tableHeadProps === void 0 ? void 0 : tableHeadProps.sx))) }), getHeaderGroups().map((headerGroup) => (React__default["default"].createElement(MRT_TableHeadRow, { headerGroup: headerGroup, key: headerGroup.id, table: table })))));
|
2083
2065
|
};
|
2084
2066
|
|
2085
|
-
/**
|
2086
|
-
* virtual-core
|
2087
|
-
*
|
2088
|
-
* Copyright (c) TanStack
|
2089
|
-
*
|
2090
|
-
* This source code is licensed under the MIT license found in the
|
2091
|
-
* LICENSE.md file in the root directory of this source tree.
|
2092
|
-
*
|
2093
|
-
* @license MIT
|
2094
|
-
*/
|
2095
|
-
function memo(getDeps, fn, opts) {
|
2096
|
-
let deps = [];
|
2097
|
-
let result;
|
2098
|
-
return () => {
|
2099
|
-
let depTime;
|
2100
|
-
if (opts.key && opts.debug != null && opts.debug()) depTime = Date.now();
|
2101
|
-
const newDeps = getDeps();
|
2102
|
-
const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);
|
2103
|
-
if (!depsChanged) {
|
2104
|
-
return result;
|
2105
|
-
}
|
2106
|
-
deps = newDeps;
|
2107
|
-
let resultTime;
|
2108
|
-
if (opts.key && opts.debug != null && opts.debug()) resultTime = Date.now();
|
2109
|
-
result = fn(...newDeps);
|
2110
|
-
opts == null ? void 0 : opts.onChange == null ? void 0 : opts.onChange(result);
|
2111
|
-
if (opts.key && opts.debug != null && opts.debug()) {
|
2112
|
-
const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
|
2113
|
-
const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;
|
2114
|
-
const resultFpsPercentage = resultEndTime / 16;
|
2115
|
-
const pad = (str, num) => {
|
2116
|
-
str = String(str);
|
2117
|
-
while (str.length < num) {
|
2118
|
-
str = ' ' + str;
|
2119
|
-
}
|
2120
|
-
return str;
|
2121
|
-
};
|
2122
|
-
console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `
|
2123
|
-
font-size: .6rem;
|
2124
|
-
font-weight: bold;
|
2125
|
-
color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);
|
2126
|
-
}
|
2127
|
-
return result;
|
2128
|
-
};
|
2129
|
-
}
|
2130
|
-
|
2131
|
-
/**
|
2132
|
-
* virtual-core
|
2133
|
-
*
|
2134
|
-
* Copyright (c) TanStack
|
2135
|
-
*
|
2136
|
-
* This source code is licensed under the MIT license found in the
|
2137
|
-
* LICENSE.md file in the root directory of this source tree.
|
2138
|
-
*
|
2139
|
-
* @license MIT
|
2140
|
-
*/
|
2141
|
-
|
2142
|
-
//
|
2143
|
-
|
2144
|
-
//
|
2145
|
-
|
2146
|
-
const defaultKeyExtractor = index => index;
|
2147
|
-
const defaultRangeExtractor = range => {
|
2148
|
-
const start = Math.max(range.startIndex - range.overscan, 0);
|
2149
|
-
const end = Math.min(range.endIndex + range.overscan, range.count - 1);
|
2150
|
-
const arr = [];
|
2151
|
-
for (let i = start; i <= end; i++) {
|
2152
|
-
arr.push(i);
|
2153
|
-
}
|
2154
|
-
return arr;
|
2155
|
-
};
|
2156
|
-
const observeElementRect = (instance, cb) => {
|
2157
|
-
const observer = new ResizeObserver(entries => {
|
2158
|
-
var _entries$, _entries$2;
|
2159
|
-
cb({
|
2160
|
-
width: (_entries$ = entries[0]) == null ? void 0 : _entries$.contentRect.width,
|
2161
|
-
height: (_entries$2 = entries[0]) == null ? void 0 : _entries$2.contentRect.height
|
2162
|
-
});
|
2163
|
-
});
|
2164
|
-
if (!instance.scrollElement) {
|
2165
|
-
return;
|
2166
|
-
}
|
2167
|
-
cb(instance.scrollElement.getBoundingClientRect());
|
2168
|
-
observer.observe(instance.scrollElement);
|
2169
|
-
return () => {
|
2170
|
-
observer.unobserve(instance.scrollElement);
|
2171
|
-
};
|
2172
|
-
};
|
2173
|
-
const scrollProps = {
|
2174
|
-
element: ['scrollLeft', 'scrollTop'],
|
2175
|
-
window: ['scrollX', 'scrollY']
|
2176
|
-
};
|
2177
|
-
const createOffsetObserver = mode => {
|
2178
|
-
return (instance, cb) => {
|
2179
|
-
if (!instance.scrollElement) {
|
2180
|
-
return;
|
2181
|
-
}
|
2182
|
-
const propX = scrollProps[mode][0];
|
2183
|
-
const propY = scrollProps[mode][1];
|
2184
|
-
let prevX = instance.scrollElement[propX];
|
2185
|
-
let prevY = instance.scrollElement[propY];
|
2186
|
-
const scroll = () => {
|
2187
|
-
const offset = instance.scrollElement[instance.options.horizontal ? propX : propY];
|
2188
|
-
cb(Math.max(0, offset - instance.options.scrollMargin));
|
2189
|
-
};
|
2190
|
-
scroll();
|
2191
|
-
const onScroll = e => {
|
2192
|
-
const target = e.currentTarget;
|
2193
|
-
const scrollX = target[propX];
|
2194
|
-
const scrollY = target[propY];
|
2195
|
-
if (instance.options.horizontal ? prevX - scrollX : prevY - scrollY) {
|
2196
|
-
scroll();
|
2197
|
-
}
|
2198
|
-
prevX = scrollX;
|
2199
|
-
prevY = scrollY;
|
2200
|
-
};
|
2201
|
-
instance.scrollElement.addEventListener('scroll', onScroll, {
|
2202
|
-
capture: false,
|
2203
|
-
passive: true
|
2204
|
-
});
|
2205
|
-
return () => {
|
2206
|
-
instance.scrollElement.removeEventListener('scroll', onScroll);
|
2207
|
-
};
|
2208
|
-
};
|
2209
|
-
};
|
2210
|
-
const observeElementOffset = createOffsetObserver('element');
|
2211
|
-
const measureElement = (element, instance) => {
|
2212
|
-
return Math.round(element.getBoundingClientRect()[instance.options.horizontal ? 'width' : 'height']);
|
2213
|
-
};
|
2214
|
-
const elementScroll = (offset, _ref2, instance) => {
|
2215
|
-
var _instance$scrollEleme2;
|
2216
|
-
let {
|
2217
|
-
adjustments,
|
2218
|
-
behavior,
|
2219
|
-
sync
|
2220
|
-
} = _ref2;
|
2221
|
-
const toOffset = (sync ? offset : offset + instance.options.scrollMargin) + (adjustments ?? 0);
|
2222
|
-
(_instance$scrollEleme2 = instance.scrollElement) == null ? void 0 : _instance$scrollEleme2.scrollTo == null ? void 0 : _instance$scrollEleme2.scrollTo({
|
2223
|
-
[instance.options.horizontal ? 'left' : 'top']: toOffset,
|
2224
|
-
behavior
|
2225
|
-
});
|
2226
|
-
};
|
2227
|
-
class Virtualizer {
|
2228
|
-
constructor(_opts) {
|
2229
|
-
var _this = this;
|
2230
|
-
this.unsubs = [];
|
2231
|
-
this.scrollElement = null;
|
2232
|
-
this.isScrolling = false;
|
2233
|
-
this.isScrollingTimeoutId = null;
|
2234
|
-
this.measurementsCache = [];
|
2235
|
-
this.itemMeasurementsCache = {};
|
2236
|
-
this.pendingMeasuredCacheIndexes = [];
|
2237
|
-
this.scrollAdjustments = 0;
|
2238
|
-
this.measureElementCache = {};
|
2239
|
-
this.pendingScrollToIndexCallback = null;
|
2240
|
-
this.getResizeObserver = (() => {
|
2241
|
-
let _ro = null;
|
2242
|
-
return () => {
|
2243
|
-
if (_ro) {
|
2244
|
-
return _ro;
|
2245
|
-
} else if (typeof ResizeObserver !== 'undefined') {
|
2246
|
-
return _ro = new ResizeObserver(entries => {
|
2247
|
-
entries.forEach(entry => {
|
2248
|
-
this._measureElement(entry.target, false);
|
2249
|
-
});
|
2250
|
-
});
|
2251
|
-
} else {
|
2252
|
-
return null;
|
2253
|
-
}
|
2254
|
-
};
|
2255
|
-
})();
|
2256
|
-
this.range = {
|
2257
|
-
startIndex: 0,
|
2258
|
-
endIndex: 0
|
2259
|
-
};
|
2260
|
-
this.setOptions = opts => {
|
2261
|
-
Object.entries(opts).forEach(_ref3 => {
|
2262
|
-
let [key, value] = _ref3;
|
2263
|
-
if (typeof value === 'undefined') delete opts[key];
|
2264
|
-
});
|
2265
|
-
this.options = {
|
2266
|
-
debug: false,
|
2267
|
-
initialOffset: 0,
|
2268
|
-
overscan: 1,
|
2269
|
-
paddingStart: 0,
|
2270
|
-
paddingEnd: 0,
|
2271
|
-
scrollPaddingStart: 0,
|
2272
|
-
scrollPaddingEnd: 0,
|
2273
|
-
horizontal: false,
|
2274
|
-
getItemKey: defaultKeyExtractor,
|
2275
|
-
rangeExtractor: defaultRangeExtractor,
|
2276
|
-
onChange: () => {},
|
2277
|
-
measureElement,
|
2278
|
-
initialRect: {
|
2279
|
-
width: 0,
|
2280
|
-
height: 0
|
2281
|
-
},
|
2282
|
-
scrollMargin: 0,
|
2283
|
-
scrollingDelay: 150,
|
2284
|
-
indexAttribute: 'data-index',
|
2285
|
-
...opts
|
2286
|
-
};
|
2287
|
-
};
|
2288
|
-
this.notify = () => {
|
2289
|
-
var _this$options$onChang, _this$options;
|
2290
|
-
(_this$options$onChang = (_this$options = this.options).onChange) == null ? void 0 : _this$options$onChang.call(_this$options, this);
|
2291
|
-
};
|
2292
|
-
this.cleanup = () => {
|
2293
|
-
this.unsubs.filter(Boolean).forEach(d => d());
|
2294
|
-
this.unsubs = [];
|
2295
|
-
this.scrollElement = null;
|
2296
|
-
};
|
2297
|
-
this._didMount = () => {
|
2298
|
-
const ro = this.getResizeObserver();
|
2299
|
-
Object.values(this.measureElementCache).forEach(node => ro == null ? void 0 : ro.observe(node));
|
2300
|
-
return () => {
|
2301
|
-
ro == null ? void 0 : ro.disconnect();
|
2302
|
-
this.cleanup();
|
2303
|
-
};
|
2304
|
-
};
|
2305
|
-
this._willUpdate = () => {
|
2306
|
-
var _this$pendingScrollTo;
|
2307
|
-
(_this$pendingScrollTo = this.pendingScrollToIndexCallback) == null ? void 0 : _this$pendingScrollTo.call(this);
|
2308
|
-
const scrollElement = this.options.getScrollElement();
|
2309
|
-
if (this.scrollElement !== scrollElement) {
|
2310
|
-
this.cleanup();
|
2311
|
-
this.scrollElement = scrollElement;
|
2312
|
-
this._scrollToOffset(this.scrollOffset, {
|
2313
|
-
adjustments: undefined,
|
2314
|
-
behavior: undefined,
|
2315
|
-
sync: true
|
2316
|
-
});
|
2317
|
-
this.unsubs.push(this.options.observeElementRect(this, rect => {
|
2318
|
-
this.scrollRect = rect;
|
2319
|
-
this.calculateRange();
|
2320
|
-
}));
|
2321
|
-
this.unsubs.push(this.options.observeElementOffset(this, offset => {
|
2322
|
-
if (this.isScrollingTimeoutId !== null) {
|
2323
|
-
clearTimeout(this.isScrollingTimeoutId);
|
2324
|
-
this.isScrollingTimeoutId = null;
|
2325
|
-
}
|
2326
|
-
if (this.scrollOffset !== offset) {
|
2327
|
-
this.scrollOffset = offset;
|
2328
|
-
this.isScrolling = true;
|
2329
|
-
this.scrollAdjustments = 0;
|
2330
|
-
this.isScrollingTimeoutId = setTimeout(() => {
|
2331
|
-
this.isScrollingTimeoutId = null;
|
2332
|
-
this.isScrolling = false;
|
2333
|
-
this.notify();
|
2334
|
-
}, this.options.scrollingDelay);
|
2335
|
-
} else {
|
2336
|
-
this.isScrolling = false;
|
2337
|
-
this.scrollAdjustments = 0;
|
2338
|
-
}
|
2339
|
-
this.calculateRange();
|
2340
|
-
}));
|
2341
|
-
} else if (!this.isScrolling) {
|
2342
|
-
this.calculateRange();
|
2343
|
-
}
|
2344
|
-
};
|
2345
|
-
this.getSize = () => {
|
2346
|
-
return this.scrollRect[this.options.horizontal ? 'width' : 'height'];
|
2347
|
-
};
|
2348
|
-
this.getMeasurements = memo(() => [this.options.count, this.options.paddingStart, this.options.getItemKey, this.itemMeasurementsCache], (count, paddingStart, getItemKey, measurementsCache) => {
|
2349
|
-
const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
|
2350
|
-
this.pendingMeasuredCacheIndexes = [];
|
2351
|
-
const measurements = this.measurementsCache.slice(0, min);
|
2352
|
-
for (let i = min; i < count; i++) {
|
2353
|
-
const key = getItemKey(i);
|
2354
|
-
const measuredSize = measurementsCache[key];
|
2355
|
-
const start = measurements[i - 1] ? measurements[i - 1].end : paddingStart;
|
2356
|
-
const size = typeof measuredSize === 'number' ? measuredSize : this.options.estimateSize(i);
|
2357
|
-
const end = start + size;
|
2358
|
-
measurements[i] = {
|
2359
|
-
index: i,
|
2360
|
-
start,
|
2361
|
-
size,
|
2362
|
-
end,
|
2363
|
-
key
|
2364
|
-
};
|
2365
|
-
}
|
2366
|
-
this.measurementsCache = measurements;
|
2367
|
-
return measurements;
|
2368
|
-
}, {
|
2369
|
-
key: process.env.NODE_ENV !== 'production' && 'getMeasurements',
|
2370
|
-
debug: () => this.options.debug
|
2371
|
-
});
|
2372
|
-
this.calculateRange = memo(() => [this.getMeasurements(), this.getSize(), this.scrollOffset], (measurements, outerSize, scrollOffset) => {
|
2373
|
-
const range = calculateRange({
|
2374
|
-
measurements,
|
2375
|
-
outerSize,
|
2376
|
-
scrollOffset
|
2377
|
-
});
|
2378
|
-
if (range.startIndex !== this.range.startIndex || range.endIndex !== this.range.endIndex) {
|
2379
|
-
this.range = range;
|
2380
|
-
this.notify();
|
2381
|
-
}
|
2382
|
-
return this.range;
|
2383
|
-
}, {
|
2384
|
-
key: process.env.NODE_ENV !== 'production' && 'calculateRange',
|
2385
|
-
debug: () => this.options.debug
|
2386
|
-
});
|
2387
|
-
this.getIndexes = memo(() => [this.options.rangeExtractor, this.range, this.options.overscan, this.options.count], (rangeExtractor, range, overscan, count) => {
|
2388
|
-
return rangeExtractor({
|
2389
|
-
...range,
|
2390
|
-
overscan,
|
2391
|
-
count: count
|
2392
|
-
});
|
2393
|
-
}, {
|
2394
|
-
key: process.env.NODE_ENV !== 'production' && 'getIndexes',
|
2395
|
-
debug: () => this.options.debug
|
2396
|
-
});
|
2397
|
-
this.indexFromElement = node => {
|
2398
|
-
const attributeName = this.options.indexAttribute;
|
2399
|
-
const indexStr = node.getAttribute(attributeName);
|
2400
|
-
if (!indexStr) {
|
2401
|
-
console.warn(`Missing attribute name '${attributeName}={index}' on measured element.`);
|
2402
|
-
return -1;
|
2403
|
-
}
|
2404
|
-
return parseInt(indexStr, 10);
|
2405
|
-
};
|
2406
|
-
this._measureElement = (node, _sync) => {
|
2407
|
-
const index = this.indexFromElement(node);
|
2408
|
-
const item = this.measurementsCache[index];
|
2409
|
-
if (!item) {
|
2410
|
-
return;
|
2411
|
-
}
|
2412
|
-
const prevNode = this.measureElementCache[item.key];
|
2413
|
-
const ro = this.getResizeObserver();
|
2414
|
-
if (!node.isConnected) {
|
2415
|
-
if (prevNode) {
|
2416
|
-
ro == null ? void 0 : ro.unobserve(prevNode);
|
2417
|
-
delete this.measureElementCache[item.key];
|
2418
|
-
}
|
2419
|
-
return;
|
2420
|
-
}
|
2421
|
-
if (!prevNode || prevNode !== node) {
|
2422
|
-
if (prevNode) {
|
2423
|
-
ro == null ? void 0 : ro.unobserve(prevNode);
|
2424
|
-
}
|
2425
|
-
this.measureElementCache[item.key] = node;
|
2426
|
-
ro == null ? void 0 : ro.observe(node);
|
2427
|
-
}
|
2428
|
-
const measuredItemSize = this.options.measureElement(node, this);
|
2429
|
-
const itemSize = this.itemMeasurementsCache[item.key] ?? item.size;
|
2430
|
-
const delta = measuredItemSize - itemSize;
|
2431
|
-
if (delta !== 0) {
|
2432
|
-
if (item.start < this.scrollOffset && this.isScrolling) {
|
2433
|
-
if (process.env.NODE_ENV !== 'production' && this.options.debug) {
|
2434
|
-
console.info('correction', delta);
|
2435
|
-
}
|
2436
|
-
this._scrollToOffset(this.scrollOffset, {
|
2437
|
-
adjustments: this.scrollAdjustments += delta,
|
2438
|
-
behavior: undefined,
|
2439
|
-
sync: false
|
2440
|
-
});
|
2441
|
-
}
|
2442
|
-
this.pendingMeasuredCacheIndexes.push(index);
|
2443
|
-
this.itemMeasurementsCache = {
|
2444
|
-
...this.itemMeasurementsCache,
|
2445
|
-
[item.key]: measuredItemSize
|
2446
|
-
};
|
2447
|
-
this.notify();
|
2448
|
-
}
|
2449
|
-
};
|
2450
|
-
this.measureElement = node => {
|
2451
|
-
if (!node) {
|
2452
|
-
return;
|
2453
|
-
}
|
2454
|
-
this._measureElement(node, true);
|
2455
|
-
};
|
2456
|
-
this.getVirtualItems = memo(() => [this.getIndexes(), this.getMeasurements()], (indexes, measurements) => {
|
2457
|
-
const virtualItems = [];
|
2458
|
-
for (let k = 0, len = indexes.length; k < len; k++) {
|
2459
|
-
const i = indexes[k];
|
2460
|
-
const measurement = measurements[i];
|
2461
|
-
virtualItems.push(measurement);
|
2462
|
-
}
|
2463
|
-
return virtualItems;
|
2464
|
-
}, {
|
2465
|
-
key: process.env.NODE_ENV !== 'production' && 'getIndexes',
|
2466
|
-
debug: () => this.options.debug
|
2467
|
-
});
|
2468
|
-
this.scrollToOffset = function (toOffset, _temp) {
|
2469
|
-
let {
|
2470
|
-
align = 'start',
|
2471
|
-
behavior
|
2472
|
-
} = _temp === void 0 ? {} : _temp;
|
2473
|
-
const offset = _this.scrollOffset;
|
2474
|
-
const size = _this.getSize();
|
2475
|
-
if (align === 'auto') {
|
2476
|
-
if (toOffset <= offset) {
|
2477
|
-
align = 'start';
|
2478
|
-
} else if (toOffset >= offset + size) {
|
2479
|
-
align = 'end';
|
2480
|
-
} else {
|
2481
|
-
align = 'start';
|
2482
|
-
}
|
2483
|
-
}
|
2484
|
-
const options = {
|
2485
|
-
adjustments: undefined,
|
2486
|
-
behavior,
|
2487
|
-
sync: false
|
2488
|
-
};
|
2489
|
-
if (align === 'start') {
|
2490
|
-
_this._scrollToOffset(toOffset, options);
|
2491
|
-
} else if (align === 'end') {
|
2492
|
-
_this._scrollToOffset(toOffset - size, options);
|
2493
|
-
} else if (align === 'center') {
|
2494
|
-
_this._scrollToOffset(toOffset - size / 2, options);
|
2495
|
-
}
|
2496
|
-
};
|
2497
|
-
this.scrollToIndex = function (index, _temp2) {
|
2498
|
-
let {
|
2499
|
-
align = 'auto',
|
2500
|
-
...rest
|
2501
|
-
} = _temp2 === void 0 ? {} : _temp2;
|
2502
|
-
_this.pendingScrollToIndexCallback = null;
|
2503
|
-
const measurements = _this.getMeasurements();
|
2504
|
-
const offset = _this.scrollOffset;
|
2505
|
-
const size = _this.getSize();
|
2506
|
-
const {
|
2507
|
-
count
|
2508
|
-
} = _this.options;
|
2509
|
-
const measurement = measurements[Math.max(0, Math.min(index, count - 1))];
|
2510
|
-
if (!measurement) {
|
2511
|
-
return;
|
2512
|
-
}
|
2513
|
-
if (align === 'auto') {
|
2514
|
-
if (measurement.end >= offset + size - _this.options.scrollPaddingEnd) {
|
2515
|
-
align = 'end';
|
2516
|
-
} else if (measurement.start <= offset + _this.options.scrollPaddingStart) {
|
2517
|
-
align = 'start';
|
2518
|
-
} else {
|
2519
|
-
return;
|
2520
|
-
}
|
2521
|
-
}
|
2522
|
-
const toOffset = align === 'end' ? measurement.end + _this.options.scrollPaddingEnd : measurement.start - _this.options.scrollPaddingStart;
|
2523
|
-
_this.scrollToOffset(toOffset, {
|
2524
|
-
align,
|
2525
|
-
...rest
|
2526
|
-
});
|
2527
|
-
const isDynamic = Object.keys(_this.measureElementCache).length > 0;
|
2528
|
-
if (isDynamic) {
|
2529
|
-
const didSeen = () => typeof _this.itemMeasurementsCache[_this.options.getItemKey(index)] === 'number';
|
2530
|
-
if (!didSeen()) {
|
2531
|
-
_this.pendingScrollToIndexCallback = () => {
|
2532
|
-
if (didSeen()) {
|
2533
|
-
_this.pendingScrollToIndexCallback = null;
|
2534
|
-
_this.scrollToIndex(index, {
|
2535
|
-
align,
|
2536
|
-
...rest
|
2537
|
-
});
|
2538
|
-
}
|
2539
|
-
};
|
2540
|
-
}
|
2541
|
-
}
|
2542
|
-
};
|
2543
|
-
this.getTotalSize = () => {
|
2544
|
-
var _this$getMeasurements;
|
2545
|
-
return (((_this$getMeasurements = this.getMeasurements()[this.options.count - 1]) == null ? void 0 : _this$getMeasurements.end) || this.options.paddingStart) + this.options.paddingEnd;
|
2546
|
-
};
|
2547
|
-
this._scrollToOffset = (offset, _ref4) => {
|
2548
|
-
let {
|
2549
|
-
adjustments,
|
2550
|
-
behavior,
|
2551
|
-
sync
|
2552
|
-
} = _ref4;
|
2553
|
-
this.options.scrollToFn(offset, {
|
2554
|
-
behavior,
|
2555
|
-
sync,
|
2556
|
-
adjustments
|
2557
|
-
}, this);
|
2558
|
-
};
|
2559
|
-
this.measure = () => {
|
2560
|
-
this.itemMeasurementsCache = {};
|
2561
|
-
this.notify();
|
2562
|
-
};
|
2563
|
-
this.setOptions(_opts);
|
2564
|
-
this.scrollRect = this.options.initialRect;
|
2565
|
-
this.scrollOffset = this.options.initialOffset;
|
2566
|
-
this.calculateRange();
|
2567
|
-
}
|
2568
|
-
}
|
2569
|
-
const findNearestBinarySearch = (low, high, getCurrentValue, value) => {
|
2570
|
-
while (low <= high) {
|
2571
|
-
const middle = (low + high) / 2 | 0;
|
2572
|
-
const currentValue = getCurrentValue(middle);
|
2573
|
-
if (currentValue < value) {
|
2574
|
-
low = middle + 1;
|
2575
|
-
} else if (currentValue > value) {
|
2576
|
-
high = middle - 1;
|
2577
|
-
} else {
|
2578
|
-
return middle;
|
2579
|
-
}
|
2580
|
-
}
|
2581
|
-
if (low > 0) {
|
2582
|
-
return low - 1;
|
2583
|
-
} else {
|
2584
|
-
return 0;
|
2585
|
-
}
|
2586
|
-
};
|
2587
|
-
function calculateRange(_ref5) {
|
2588
|
-
let {
|
2589
|
-
measurements,
|
2590
|
-
outerSize,
|
2591
|
-
scrollOffset
|
2592
|
-
} = _ref5;
|
2593
|
-
const count = measurements.length - 1;
|
2594
|
-
const getOffset = index => measurements[index].start;
|
2595
|
-
const startIndex = findNearestBinarySearch(0, count, getOffset, scrollOffset);
|
2596
|
-
let endIndex = startIndex;
|
2597
|
-
while (endIndex < count && measurements[endIndex].end < scrollOffset + outerSize) {
|
2598
|
-
endIndex++;
|
2599
|
-
}
|
2600
|
-
return {
|
2601
|
-
startIndex,
|
2602
|
-
endIndex
|
2603
|
-
};
|
2604
|
-
}
|
2605
|
-
|
2606
|
-
/**
|
2607
|
-
* react-virtual
|
2608
|
-
*
|
2609
|
-
* Copyright (c) TanStack
|
2610
|
-
*
|
2611
|
-
* This source code is licensed under the MIT license found in the
|
2612
|
-
* LICENSE.md file in the root directory of this source tree.
|
2613
|
-
*
|
2614
|
-
* @license MIT
|
2615
|
-
*/
|
2616
|
-
|
2617
|
-
//
|
2618
|
-
|
2619
|
-
const useIsomorphicLayoutEffect$1 = typeof window !== 'undefined' ? React__namespace.useLayoutEffect : React__namespace.useEffect;
|
2620
|
-
function useVirtualizerBase(options) {
|
2621
|
-
const rerender = React__namespace.useReducer(() => ({}), {})[1];
|
2622
|
-
const resolvedOptions = {
|
2623
|
-
...options,
|
2624
|
-
onChange: instance => {
|
2625
|
-
rerender();
|
2626
|
-
options.onChange == null ? void 0 : options.onChange(instance);
|
2627
|
-
}
|
2628
|
-
};
|
2629
|
-
const [instance] = React__namespace.useState(() => new Virtualizer(resolvedOptions));
|
2630
|
-
instance.setOptions(resolvedOptions);
|
2631
|
-
React__namespace.useEffect(() => {
|
2632
|
-
return instance._didMount();
|
2633
|
-
}, []);
|
2634
|
-
useIsomorphicLayoutEffect$1(() => {
|
2635
|
-
return instance._willUpdate();
|
2636
|
-
});
|
2637
|
-
return instance;
|
2638
|
-
}
|
2639
|
-
function useVirtualizer(options) {
|
2640
|
-
return useVirtualizerBase({
|
2641
|
-
observeElementRect: observeElementRect,
|
2642
|
-
observeElementOffset: observeElementOffset,
|
2643
|
-
scrollToFn: elementScroll,
|
2644
|
-
...options
|
2645
|
-
});
|
2646
|
-
}
|
2647
|
-
|
2648
2067
|
const MRT_EditCellTextField = ({ cell, showLabel, table, }) => {
|
2649
2068
|
var _a;
|
2650
2069
|
const { getState, options: { muiTableBodyCellEditTextFieldProps }, refs: { editInputRefs }, setEditingCell, setEditingRow, } = table;
|
@@ -2895,19 +2314,28 @@ const MRT_TableBodyCell = ({ cell, enableHover, numRows, rowIndex, rowRef, table
|
|
2895
2314
|
};
|
2896
2315
|
const Memo_MRT_TableBodyCell = React.memo(MRT_TableBodyCell, (prev, next) => next.cell === prev.cell);
|
2897
2316
|
|
2898
|
-
const MRT_TableDetailPanel = ({ row, table }) => {
|
2317
|
+
const MRT_TableDetailPanel = ({ parentRowRef, row, table, virtualRow, }) => {
|
2899
2318
|
const { getVisibleLeafColumns, getState, options: { layoutMode, muiTableBodyRowProps, muiTableDetailPanelProps, renderDetailPanel, }, } = table;
|
2900
2319
|
const { isLoading } = getState();
|
2901
2320
|
const tableRowProps = muiTableBodyRowProps instanceof Function
|
2902
|
-
? muiTableBodyRowProps({ row, table })
|
2321
|
+
? muiTableBodyRowProps({ isDetailPanel: true, row, table })
|
2903
2322
|
: muiTableBodyRowProps;
|
2904
2323
|
const tableCellProps = muiTableDetailPanelProps instanceof Function
|
2905
2324
|
? muiTableDetailPanelProps({ row, table })
|
2906
2325
|
: muiTableDetailPanelProps;
|
2907
|
-
return (React__default["default"].createElement(TableRow__default["default"], Object.assign({ sx: {
|
2908
|
-
|
2909
|
-
|
2910
|
-
|
2326
|
+
return (React__default["default"].createElement(TableRow__default["default"], Object.assign({ className: "Mui-TableBodyCell-DetailPanel" }, tableRowProps, { sx: (theme) => {
|
2327
|
+
var _a, _b;
|
2328
|
+
return (Object.assign({ display: layoutMode === 'grid' ? 'flex' : 'table-row', position: virtualRow ? 'absolute' : undefined, top: virtualRow
|
2329
|
+
? `${(_b = (_a = parentRowRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.height}px`
|
2330
|
+
: undefined, transform: virtualRow
|
2331
|
+
? `translateY(${virtualRow === null || virtualRow === void 0 ? void 0 : virtualRow.start}px)`
|
2332
|
+
: undefined, width: '100%', zIndex: virtualRow ? 2 : undefined }, ((tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx) instanceof Function
|
2333
|
+
? tableRowProps.sx(theme)
|
2334
|
+
: tableRowProps === null || tableRowProps === void 0 ? void 0 : tableRowProps.sx)));
|
2335
|
+
} }),
|
2336
|
+
React__default["default"].createElement(TableCell__default["default"], Object.assign({ className: "Mui-TableBodyCell-DetailPanel", colSpan: getVisibleLeafColumns().length }, tableCellProps, { sx: (theme) => (Object.assign({ backgroundColor: virtualRow
|
2337
|
+
? styles.lighten(theme.palette.background.default, 0.06)
|
2338
|
+
: undefined, borderBottom: !row.getIsExpanded() ? 'none' : undefined, display: layoutMode === 'grid' ? 'flex' : 'table-cell', pb: row.getIsExpanded() ? '1rem' : 0, pt: row.getIsExpanded() ? '1rem' : 0, transition: 'all 150ms ease-in-out', width: `${table.getTotalSize()}px` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
|
2911
2339
|
? tableCellProps.sx(theme)
|
2912
2340
|
: tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx))) }), renderDetailPanel && (React__default["default"].createElement(Collapse__default["default"], { in: row.getIsExpanded(), mountOnEnter: true, unmountOnExit: true }, !isLoading && renderDetailPanel({ row, table }))))));
|
2913
2341
|
};
|
@@ -2968,7 +2396,7 @@ const MRT_TableBodyRow = ({ measureElement, numRows, row, rowIndex, table, virtu
|
|
2968
2396
|
(editingCell === null || editingCell === void 0 ? void 0 : editingCell.id) !== cell.id &&
|
2969
2397
|
(editingRow === null || editingRow === void 0 ? void 0 : editingRow.id) !== row.id ? (React__default["default"].createElement(Memo_MRT_TableBodyCell, Object.assign({}, props))) : (React__default["default"].createElement(MRT_TableBodyCell, Object.assign({}, props)));
|
2970
2398
|
})),
|
2971
|
-
renderDetailPanel && !row.getIsGrouped() && (React__default["default"].createElement(MRT_TableDetailPanel, { row: row, table: table }))));
|
2399
|
+
renderDetailPanel && !row.getIsGrouped() && (React__default["default"].createElement(MRT_TableDetailPanel, { parentRowRef: rowRef, row: row, table: table, virtualRow: virtualRow }))));
|
2972
2400
|
};
|
2973
2401
|
const Memo_MRT_TableBodyRow = React.memo(MRT_TableBodyRow, (prev, next) => prev.row === next.row);
|
2974
2402
|
|
@@ -3008,7 +2436,7 @@ const MRT_TableBody = ({ table }) => {
|
|
3008
2436
|
pagination.pageSize,
|
3009
2437
|
]);
|
3010
2438
|
const virtualizer = enableRowVirtualization
|
3011
|
-
? useVirtualizer(Object.assign({ count: rows.length, estimateSize: () => density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73, getScrollElement: () => tableContainerRef.current, measureElement: (element) => element === null || element === void 0 ? void 0 : element.getBoundingClientRect().height, overscan:
|
2439
|
+
? reactVirtual.useVirtualizer(Object.assign({ count: rows.length, estimateSize: () => density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73, getScrollElement: () => tableContainerRef.current, measureElement: (element) => element === null || element === void 0 ? void 0 : element.getBoundingClientRect().height, overscan: 4 }, vProps))
|
3012
2440
|
: undefined;
|
3013
2441
|
if (virtualizerInstanceRef && virtualizer) {
|
3014
2442
|
virtualizerInstanceRef.current = virtualizer;
|
@@ -3112,12 +2540,12 @@ const MRT_TableFooter = ({ table }) => {
|
|
3112
2540
|
};
|
3113
2541
|
|
3114
2542
|
const MRT_Table = ({ table }) => {
|
3115
|
-
const { getState, options: { enableColumnResizing,
|
2543
|
+
const { getState, options: { enableColumnResizing, enableStickyHeader, enableTableFooter, enableTableHead, layoutMode, memoMode, muiTableProps, }, } = table;
|
3116
2544
|
const { isFullScreen } = getState();
|
3117
2545
|
const tableProps = muiTableProps instanceof Function
|
3118
2546
|
? muiTableProps({ table })
|
3119
2547
|
: muiTableProps;
|
3120
|
-
return (React__default["default"].createElement(Table__default["default"], Object.assign({ stickyHeader: enableStickyHeader ||
|
2548
|
+
return (React__default["default"].createElement(Table__default["default"], Object.assign({ stickyHeader: enableStickyHeader || isFullScreen }, tableProps, { sx: (theme) => (Object.assign({ display: layoutMode === 'grid' ? 'grid' : 'table', tableLayout: enableColumnResizing ? 'fixed' : 'auto' }, ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx) instanceof Function
|
3121
2549
|
? tableProps.sx(theme)
|
3122
2550
|
: tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))) }),
|
3123
2551
|
enableTableHead && React__default["default"].createElement(MRT_TableHead, { table: table }),
|
@@ -3127,7 +2555,7 @@ const MRT_Table = ({ table }) => {
|
|
3127
2555
|
|
3128
2556
|
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
|
3129
2557
|
const MRT_TableContainer = ({ table }) => {
|
3130
|
-
const { getState, options: { enableStickyHeader,
|
2558
|
+
const { getState, options: { enableStickyHeader, muiTableContainerProps }, refs: { tableContainerRef, bottomToolbarRef, topToolbarRef }, } = table;
|
3131
2559
|
const { isFullScreen } = getState();
|
3132
2560
|
const [totalToolbarHeight, setTotalToolbarHeight] = React.useState(0);
|
3133
2561
|
const tableContainerProps = muiTableContainerProps instanceof Function
|
@@ -3151,7 +2579,7 @@ const MRT_TableContainer = ({ table }) => {
|
|
3151
2579
|
tableContainerProps.ref.current = node;
|
3152
2580
|
}
|
3153
2581
|
}
|
3154
|
-
}, sx: (theme) => (Object.assign({ maxWidth: '100%', maxHeight: enableStickyHeader
|
2582
|
+
}, sx: (theme) => (Object.assign({ maxWidth: '100%', maxHeight: enableStickyHeader
|
3155
2583
|
? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`
|
3156
2584
|
: undefined, overflow: 'auto' }, ((tableContainerProps === null || tableContainerProps === void 0 ? void 0 : tableContainerProps.sx) instanceof Function
|
3157
2585
|
? tableContainerProps.sx(theme)
|
@@ -3477,8 +2905,10 @@ const MaterialReactTable = (_a) => {
|
|
3477
2905
|
const _sortingFns = React.useMemo(() => (Object.assign(Object.assign({}, MRT_SortingFns), sortingFns)), []);
|
3478
2906
|
const _defaultColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultColumn), defaultColumn)), []);
|
3479
2907
|
const _defaultDisplayColumn = React.useMemo(() => (Object.assign(Object.assign({}, MRT_DefaultDisplayColumn), defaultDisplayColumn)), []);
|
3480
|
-
if (rest.enableRowVirtualization)
|
2908
|
+
if (rest.enableRowVirtualization) {
|
3481
2909
|
layoutMode = 'grid';
|
2910
|
+
enableStickyHeader = true;
|
2911
|
+
}
|
3482
2912
|
return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: _aggregationFns, autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: _defaultColumn, defaultDisplayColumn: _defaultDisplayColumn, editingMode: editingMode, enableBottomToolbar: enableBottomToolbar, enableColumnActions: enableColumnActions, enableColumnFilters: enableColumnFilters, enableColumnOrdering: enableColumnOrdering, enableColumnResizing: enableColumnResizing, enableDensityToggle: enableDensityToggle, enableExpandAll: enableExpandAll, enableFilters: enableFilters, enableFullScreenToggle: enableFullScreenToggle, enableGlobalFilter: enableGlobalFilter, enableGlobalFilterRankedResults: enableGlobalFilterRankedResults, enableGrouping: enableGrouping, enableHiding: enableHiding, enableMultiRowSelection: enableMultiRowSelection, enableMultiSort: enableMultiSort, enablePagination: enablePagination, enablePinning: enablePinning, enableRowSelection: enableRowSelection, enableSelectAll: enableSelectAll, enableSorting: enableSorting, enableStickyHeader: enableStickyHeader, enableTableFooter: enableTableFooter, enableTableHead: enableTableHead, enableToolbarInternalActions: enableToolbarInternalActions, enableTopToolbar: enableTopToolbar, filterFns: _filterFns, icons: _icons, layoutMode: layoutMode, localization: _localization, positionActionsColumn: positionActionsColumn, positionExpandColumn: positionExpandColumn, positionGlobalFilter: positionGlobalFilter, positionPagination: positionPagination, positionToolbarAlertBanner: positionToolbarAlertBanner, positionToolbarDropZone: positionToolbarDropZone, rowNumberMode: rowNumberMode, selectAllMode: selectAllMode, sortingFns: _sortingFns }, rest)));
|
3483
2913
|
};
|
3484
2914
|
|
@@ -3491,6 +2921,8 @@ exports.MRT_TablePagination = MRT_TablePagination;
|
|
3491
2921
|
exports.MRT_ToggleDensePaddingButton = MRT_ToggleDensePaddingButton;
|
3492
2922
|
exports.MRT_ToggleFiltersButton = MRT_ToggleFiltersButton;
|
3493
2923
|
exports.MRT_ToggleGlobalFilterButton = MRT_ToggleGlobalFilterButton;
|
2924
|
+
exports.MRT_ToolbarAlertBanner = MRT_ToolbarAlertBanner;
|
2925
|
+
exports.MRT_ToolbarDropZone = MRT_ToolbarDropZone;
|
3494
2926
|
exports.MRT_ToolbarInternalButtons = MRT_ToolbarInternalButtons;
|
3495
2927
|
exports["default"] = MaterialReactTable;
|
3496
2928
|
//# sourceMappingURL=index.js.map
|