@redsift/table-pro 12.5.6-muiv8-alpha.6 → 12.5.6
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/_internal/DataGrid2.js +52 -87
- package/_internal/DataGrid2.js.map +1 -1
- package/_internal/StatefulDataGrid.js +1 -1
- package/_internal/StatefulDataGrid2.js +142 -110
- package/_internal/StatefulDataGrid2.js.map +1 -1
- package/_internal/useControlledDatagridState.js +96 -2
- package/_internal/useControlledDatagridState.js.map +1 -1
- package/index.d.ts +20 -1
- package/index.js +1 -1
- package/package.json +2 -2
|
@@ -6,14 +6,12 @@ import classNames from 'classnames';
|
|
|
6
6
|
import { LicenseInfo } from '@mui/x-license';
|
|
7
7
|
import { Icon, useTheme, RedsiftColorBlueN, RedsiftColorNeutralXDarkGrey, RedsiftColorNeutralWhite, ThemeProvider } from '@redsift/design-system';
|
|
8
8
|
import { getGridNumericOperators as getGridNumericOperators$1, GridFilterInputValue, GridFilterInputSingleSelect, GridFilterInputMultipleValue, GridFilterInputMultipleSingleSelect, getGridStringOperators as getGridStringOperators$1, getGridBooleanOperators, getGridDateOperators, getGridSingleSelectOperators, GridLogicOperator, useGridApiRef, gridFilteredSortedRowEntriesSelector, gridFilteredSortedRowIdsSelector, DataGridPro } from '@mui/x-data-grid-pro';
|
|
9
|
-
import { u as useControlledDatagridState, S as StyledDataGrid } from './useControlledDatagridState.js';
|
|
9
|
+
import { u as useControlledDatagridState, S as StyledDataGrid, B as BottomPagination, b as baseGridSlots, a as BelowToolbar } from './useControlledDatagridState.js';
|
|
10
10
|
import Box from '@mui/material/Box';
|
|
11
11
|
import TextField from '@mui/material/TextField';
|
|
12
12
|
import { mdiSync } from '@redsift/icons';
|
|
13
13
|
import { decompressFromEncodedURIComponent, compressToEncodedURIComponent } from 'lz-string';
|
|
14
14
|
import { n as normalizeRowSelectionModel, o as onServerSideSelectionStatusChange, g as getSelectionCount, i as isRowSelected, S as ServerSideControlledPagination, C as ControlledPagination } from './ServerSideControlledPagination.js';
|
|
15
|
-
import { B as BaseButton, a as BaseCheckbox, c as BaseIconButton, b as BaseIcon } from './BaseIconButton.js';
|
|
16
|
-
import { T as ToolbarWrapper } from './ToolbarWrapper2.js';
|
|
17
15
|
import { T as Toolbar } from './Toolbar2.js';
|
|
18
16
|
|
|
19
17
|
const SUBMIT_FILTER_STROKE_TIME = 500;
|
|
@@ -1481,8 +1479,9 @@ const isValueValid = (value, field, columns, operator) => {
|
|
|
1481
1479
|
}
|
|
1482
1480
|
const type = (_column$type = column['type']) !== null && _column$type !== void 0 ? _column$type : 'string';
|
|
1483
1481
|
|
|
1484
|
-
// Only date and rating
|
|
1485
|
-
|
|
1482
|
+
// Only date, dateTime and rating need value validation; other types either
|
|
1483
|
+
// accept any string or reset themselves to undefined.
|
|
1484
|
+
if (type !== 'date' && type !== 'dateTime' && type !== 'rating') {
|
|
1486
1485
|
return true;
|
|
1487
1486
|
}
|
|
1488
1487
|
|
|
@@ -1491,16 +1490,18 @@ const isValueValid = (value, field, columns, operator) => {
|
|
|
1491
1490
|
return !isNaN(Number(value));
|
|
1492
1491
|
}
|
|
1493
1492
|
|
|
1494
|
-
// format: YYYY-MM-DD
|
|
1495
|
-
//
|
|
1496
|
-
//
|
|
1493
|
+
// format: YYYY-MM-DD — strict, so corrupt/locale/ISO strings (e.g. a
|
|
1494
|
+
// stringified Date, or an ISO value with a `T` suffix) are rejected rather
|
|
1495
|
+
// than reaching a server consumer. Canonical values come from
|
|
1496
|
+
// `normalizeDateValue`.
|
|
1497
1497
|
if (type === 'date') {
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1498
|
+
return /^\d{4}-\d{2}-\d{2}$/.test(value);
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
// format: YYYY-MM-DDTHH:mm:ss — local wall-clock, matching the datetime-local
|
|
1502
|
+
// input (see `normalizeDateValue`).
|
|
1503
|
+
if (type === 'dateTime') {
|
|
1504
|
+
return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(value);
|
|
1504
1505
|
}
|
|
1505
1506
|
return false;
|
|
1506
1507
|
};
|
|
@@ -1515,15 +1516,22 @@ const getFilterModelFromString = (searchString, columns) => {
|
|
|
1515
1516
|
}
|
|
1516
1517
|
let logicOperator = GridLogicOperator.And;
|
|
1517
1518
|
let quickFilterValues = [];
|
|
1519
|
+
// Whether the URL carries explicit filter metadata (`_logicOperator` /
|
|
1520
|
+
// `_quickFilterValues`). Distinguishes an explicit empty filter (which the
|
|
1521
|
+
// grid serialises with `_logicOperator`) from a URL that has no filter params
|
|
1522
|
+
// at all, so the latter can fall through to localStorage. (ODM-3149)
|
|
1523
|
+
let hasFilterMeta = false;
|
|
1518
1524
|
const searchParams = new URLSearchParams();
|
|
1519
1525
|
for (const [key, value] of new URLSearchParams(searchString)) {
|
|
1520
1526
|
if (key.startsWith('_') && !['_logicOperator', '_sortColumn', '_pinnedColumnsLeft', '_pinnedColumnsRight', '_columnVisibility', '_pagination', '_quickFilterValues', '_columnOrder', '_rowGrouping', '_aggregation', '_pivot', '_density', '_filters'].includes(key)) {
|
|
1521
1527
|
searchParams.set(key, value);
|
|
1522
1528
|
}
|
|
1523
1529
|
if (key === '_logicOperator') {
|
|
1530
|
+
hasFilterMeta = true;
|
|
1524
1531
|
logicOperator = value === GridLogicOperator.And || value === GridLogicOperator.Or ? value : GridLogicOperator.And;
|
|
1525
1532
|
}
|
|
1526
1533
|
if (key === '_quickFilterValues') {
|
|
1534
|
+
hasFilterMeta = true;
|
|
1527
1535
|
try {
|
|
1528
1536
|
quickFilterValues = JSON.parse(decodeURIComponent(value));
|
|
1529
1537
|
} catch {
|
|
@@ -1578,12 +1586,64 @@ const getFilterModelFromString = (searchString, columns) => {
|
|
|
1578
1586
|
if (isInvalid) {
|
|
1579
1587
|
return 'invalid';
|
|
1580
1588
|
}
|
|
1589
|
+
|
|
1590
|
+
// The URL carries no filter signal at all — no logic operator, no quick filter,
|
|
1591
|
+
// and no valid filter items (e.g. a bare `?period=30` written by another URL
|
|
1592
|
+
// owner before the grid mounts). This is NOT an explicit empty filter, so
|
|
1593
|
+
// return 'invalid' to let the caller fall through to localStorage instead of
|
|
1594
|
+
// returning an empty model that would overwrite the user's persisted filters
|
|
1595
|
+
// (and clobber localStorage on the way out). (ODM-3149)
|
|
1596
|
+
if (items.length === 0 && !hasFilterMeta) {
|
|
1597
|
+
return 'invalid';
|
|
1598
|
+
}
|
|
1581
1599
|
return {
|
|
1582
1600
|
items,
|
|
1583
1601
|
logicOperator,
|
|
1584
1602
|
quickFilterValues
|
|
1585
1603
|
};
|
|
1586
1604
|
};
|
|
1605
|
+
|
|
1606
|
+
/**
|
|
1607
|
+
* Normalises a `date` / `dateTime` filter value to a canonical, URL-safe string
|
|
1608
|
+
* before it is serialised into the URL.
|
|
1609
|
+
*
|
|
1610
|
+
* MUI's `GridFilterInputDate` commits filter values as JS `Date` objects. The
|
|
1611
|
+
* generic `encodeValue` would stringify those via `String(value)`, producing a
|
|
1612
|
+
* locale string (e.g. `"Thu Jun 25 2026 02:00:00 GMT+0200 (…)"`) that cannot
|
|
1613
|
+
* survive the URL round-trip and is rejected by `isValueValid`, silently erasing
|
|
1614
|
+
* the filter value (DS-90). We instead mirror MUI's own
|
|
1615
|
+
* `convertFilterItemValueToInputValue` so the canonical string matches what the
|
|
1616
|
+
* date input renders and round-trips losslessly:
|
|
1617
|
+
* - `date` → `YYYY-MM-DD` (UTC, timezone-stable)
|
|
1618
|
+
* - `dateTime` → `YYYY-MM-DDTHH:mm:ss` (local wall-clock, matching the
|
|
1619
|
+
* datetime-local input)
|
|
1620
|
+
* Non-date types, empty values, arrays of dates (e.g. `isBetween`) and
|
|
1621
|
+
* unparseable values are handled so the existing string / number / list / rating
|
|
1622
|
+
* paths are untouched and invalid values still fall through to `isValueValid`.
|
|
1623
|
+
*/
|
|
1624
|
+
const normalizeDateValue = (value, type) => {
|
|
1625
|
+
if (type !== 'date' && type !== 'dateTime') {
|
|
1626
|
+
return value;
|
|
1627
|
+
}
|
|
1628
|
+
if (value === undefined || value === null || value === '') {
|
|
1629
|
+
return value;
|
|
1630
|
+
}
|
|
1631
|
+
if (Array.isArray(value)) {
|
|
1632
|
+
return value.map(entry => normalizeDateValue(entry, type));
|
|
1633
|
+
}
|
|
1634
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
1635
|
+
if (isNaN(date.getTime())) {
|
|
1636
|
+
return value;
|
|
1637
|
+
}
|
|
1638
|
+
if (type === 'date') {
|
|
1639
|
+
return date.toISOString().substring(0, 10);
|
|
1640
|
+
}
|
|
1641
|
+
// dateTime: mirror MUI's datetime-local conversion (subtract the timezone
|
|
1642
|
+
// offset so the serialised wall-clock time matches the rendered input value).
|
|
1643
|
+
const local = new Date(date.getTime());
|
|
1644
|
+
local.setMinutes(local.getMinutes() - local.getTimezoneOffset());
|
|
1645
|
+
return local.toISOString().substring(0, 19);
|
|
1646
|
+
};
|
|
1587
1647
|
const getSearchParamsFromFilterModel = filterModel => {
|
|
1588
1648
|
var _filterModel$quickFil;
|
|
1589
1649
|
const searchParams = new URLSearchParams();
|
|
@@ -1595,10 +1655,11 @@ const getSearchParamsFromFilterModel = filterModel => {
|
|
|
1595
1655
|
value,
|
|
1596
1656
|
type
|
|
1597
1657
|
} = item;
|
|
1658
|
+
const normalizedValue = normalizeDateValue(value, type);
|
|
1598
1659
|
if (Object.keys(numberOperatorEncoder).includes(operator)) {
|
|
1599
|
-
searchParams.set(`_${field}[${numberOperatorEncoder[operator]},${encodeValue(type)}]`, encodeValue(
|
|
1660
|
+
searchParams.set(`_${field}[${numberOperatorEncoder[operator]},${encodeValue(type)}]`, encodeValue(normalizedValue));
|
|
1600
1661
|
} else {
|
|
1601
|
-
searchParams.set(`_${field}[${encodeValue(operator)},${encodeValue(type)}]`, encodeValue(
|
|
1662
|
+
searchParams.set(`_${field}[${encodeValue(operator)},${encodeValue(type)}]`, encodeValue(normalizedValue));
|
|
1602
1663
|
}
|
|
1603
1664
|
});
|
|
1604
1665
|
if ((_filterModel$quickFil = filterModel.quickFilterValues) !== null && _filterModel$quickFil !== void 0 && _filterModel$quickFil.length) {
|
|
@@ -1654,7 +1715,19 @@ const getSortingFromString = (searchString, columns) => {
|
|
|
1654
1715
|
}
|
|
1655
1716
|
const searchParams = new URLSearchParams(searchString);
|
|
1656
1717
|
const value = searchParams.get('_sortColumn');
|
|
1657
|
-
|
|
1718
|
+
|
|
1719
|
+
// `_sortColumn` absent entirely → the URL is not expressing sort state (e.g. it
|
|
1720
|
+
// only carries a foreign param such as `?period=30` written by another URL
|
|
1721
|
+
// owner before the grid mounts). Return 'invalid' so the caller falls through
|
|
1722
|
+
// to localStorage instead of returning an empty model that would clobber the
|
|
1723
|
+
// user's persisted sort. (ODM-3149)
|
|
1724
|
+
if (value === null) {
|
|
1725
|
+
return 'invalid';
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1728
|
+
// Explicit empty sort (`_sortColumn=` / `_sortColumn=[]`, written when the user
|
|
1729
|
+
// clears sorting) → respect it.
|
|
1730
|
+
if (value === '' || value === '[]') {
|
|
1658
1731
|
return [];
|
|
1659
1732
|
}
|
|
1660
1733
|
const fields = columns.map(column => column.field);
|
|
@@ -2861,6 +2934,7 @@ const CLASSNAME = 'redsift-datagrid';
|
|
|
2861
2934
|
*/
|
|
2862
2935
|
|
|
2863
2936
|
const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
2937
|
+
var _ref7;
|
|
2864
2938
|
const datagridRef = ref || useRef();
|
|
2865
2939
|
const {
|
|
2866
2940
|
apiRef: propsApiRef,
|
|
@@ -3203,6 +3277,48 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
3203
3277
|
}
|
|
3204
3278
|
}
|
|
3205
3279
|
}), [theme]);
|
|
3280
|
+
|
|
3281
|
+
// Per-render data for the stable `BelowToolbar`/`BottomPagination` slots, injected via
|
|
3282
|
+
// `slotProps` so the slot identities stay constant and their subtrees are re-rendered, not
|
|
3283
|
+
// remounted (remounting the toolbar dropped quick-search focus on every keystroke). Typed as
|
|
3284
|
+
// ToolbarWrapper props so mistakes are caught here; cast to MUI's slot types at the injection
|
|
3285
|
+
// sites below. See ../DataGrid/defaultSlots.
|
|
3286
|
+
const belowToolbarSlotProps = {
|
|
3287
|
+
RenderedToolbar: (_ref7 = slots === null || slots === void 0 ? void 0 : slots.toolbar) !== null && _ref7 !== void 0 ? _ref7 : Toolbar,
|
|
3288
|
+
hideToolbar,
|
|
3289
|
+
filterModel,
|
|
3290
|
+
onFilterModelChange,
|
|
3291
|
+
pagination,
|
|
3292
|
+
paginationMode: effectivePaginationMode,
|
|
3293
|
+
displaySelection: bannerBelowToolbar,
|
|
3294
|
+
displayPagination: pagerBelowToolbar,
|
|
3295
|
+
displayRowsPerPage: pagerBelowToolbar,
|
|
3296
|
+
selectionStatus,
|
|
3297
|
+
apiRef,
|
|
3298
|
+
isRowSelectable,
|
|
3299
|
+
paginationModel: activePaginationModel,
|
|
3300
|
+
onPaginationModelChange: isDataSourceMode ? dataSourcePaginationChange : onPaginationModelChange,
|
|
3301
|
+
pageSizeOptions: pageSizeOptions,
|
|
3302
|
+
paginationProps,
|
|
3303
|
+
rowCount
|
|
3304
|
+
};
|
|
3305
|
+
const bottomPaginationSlotProps = {
|
|
3306
|
+
pagination,
|
|
3307
|
+
paginationMode: effectivePaginationMode,
|
|
3308
|
+
displaySelection: bannerAtBottom,
|
|
3309
|
+
displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
|
|
3310
|
+
displayPagination: ['bottom', 'both'].includes(paginationPlacement),
|
|
3311
|
+
selectionStatus,
|
|
3312
|
+
paginationModel: activePaginationModel,
|
|
3313
|
+
// Bottom pager routes non-dataSource changes through the wrapped handler (the
|
|
3314
|
+
// belowToolbar/top pagers use the unwrapped one) — preserved from the previous inline slot.
|
|
3315
|
+
onPaginationModelChange: isDataSourceMode ? dataSourcePaginationChange : wrappedOnPaginationModelChange,
|
|
3316
|
+
apiRef,
|
|
3317
|
+
isRowSelectable,
|
|
3318
|
+
pageSizeOptions: pageSizeOptions,
|
|
3319
|
+
paginationProps,
|
|
3320
|
+
rowCount
|
|
3321
|
+
};
|
|
3206
3322
|
return /*#__PURE__*/React__default.createElement(ThemeProvider, {
|
|
3207
3323
|
value: {
|
|
3208
3324
|
theme
|
|
@@ -3300,100 +3416,16 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
3300
3416
|
checkboxSelectionVisibleOnly: checkboxSelectionVisibleOnly,
|
|
3301
3417
|
disableRowSelectionExcludeModel: true,
|
|
3302
3418
|
showToolbar: !hideToolbar || belowToolbarActive,
|
|
3303
|
-
slots: _objectSpread2(_objectSpread2(_objectSpread2({
|
|
3304
|
-
|
|
3305
|
-
baseCheckbox: BaseCheckbox,
|
|
3306
|
-
baseIconButton: BaseIconButton,
|
|
3307
|
-
columnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3308
|
-
displayName: "columnFilteredIcon"
|
|
3309
|
-
})),
|
|
3310
|
-
columnSelectorIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3311
|
-
displayName: "columnSelectorIcon"
|
|
3312
|
-
})),
|
|
3313
|
-
columnSortedAscendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3314
|
-
displayName: "columnSortedAscendingIcon"
|
|
3315
|
-
})),
|
|
3316
|
-
columnSortedDescendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3317
|
-
displayName: "columnSortedDescendingIcon"
|
|
3318
|
-
})),
|
|
3319
|
-
densityCompactIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3320
|
-
displayName: "densityCompactIcon"
|
|
3321
|
-
})),
|
|
3322
|
-
densityStandardIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3323
|
-
displayName: "densityStandardIcon"
|
|
3324
|
-
})),
|
|
3325
|
-
densityComfortableIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3326
|
-
displayName: "densityComfortableIcon"
|
|
3327
|
-
})),
|
|
3328
|
-
detailPanelCollapseIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3329
|
-
displayName: "detailPanelCollapseIcon"
|
|
3330
|
-
})),
|
|
3331
|
-
detailPanelExpandIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3332
|
-
displayName: "detailPanelExpandIcon"
|
|
3333
|
-
})),
|
|
3334
|
-
exportIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3335
|
-
displayName: "exportIcon"
|
|
3336
|
-
})),
|
|
3337
|
-
openFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
3338
|
-
displayName: "openFilterButtonIcon"
|
|
3339
|
-
}))
|
|
3340
|
-
}, slots), belowToolbarActive ? {
|
|
3341
|
-
toolbar: toolbarProps => {
|
|
3342
|
-
var _ref7;
|
|
3343
|
-
return /*#__PURE__*/React__default.createElement(ToolbarWrapper, _extends({}, toolbarProps, {
|
|
3344
|
-
RenderedToolbar: (_ref7 = slots === null || slots === void 0 ? void 0 : slots.toolbar) !== null && _ref7 !== void 0 ? _ref7 : Toolbar,
|
|
3345
|
-
hideToolbar: hideToolbar,
|
|
3346
|
-
filterModel: filterModel,
|
|
3347
|
-
onFilterModelChange: onFilterModelChange,
|
|
3348
|
-
pagination: pagination,
|
|
3349
|
-
paginationMode: effectivePaginationMode,
|
|
3350
|
-
displaySelection: bannerBelowToolbar,
|
|
3351
|
-
displayPagination: pagerBelowToolbar,
|
|
3352
|
-
displayRowsPerPage: pagerBelowToolbar,
|
|
3353
|
-
selectionStatus: selectionStatus,
|
|
3354
|
-
apiRef: apiRef,
|
|
3355
|
-
isRowSelectable: isRowSelectable,
|
|
3356
|
-
paginationModel: activePaginationModel,
|
|
3357
|
-
onPaginationModelChange: isDataSourceMode ? dataSourcePaginationChange : onPaginationModelChange,
|
|
3358
|
-
pageSizeOptions: pageSizeOptions,
|
|
3359
|
-
paginationProps: paginationProps,
|
|
3360
|
-
rowCount: rowCount
|
|
3361
|
-
}));
|
|
3362
|
-
}
|
|
3419
|
+
slots: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, baseGridSlots), slots), belowToolbarActive ? {
|
|
3420
|
+
toolbar: BelowToolbar
|
|
3363
3421
|
} : {}), {}, {
|
|
3364
|
-
pagination:
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
paginationModel: activePaginationModel
|
|
3371
|
-
// In dataSource mode route through apiRef so MUI's internal pagination
|
|
3372
|
-
// state stays in sync with the displayed model and dataSource.getRows()
|
|
3373
|
-
// re-fetches with the new params. MUI then fires onPaginationModelChange
|
|
3374
|
-
// via the prop, which updates URL/localStorage via useStatefulTable.
|
|
3375
|
-
// Without this the bottom slot only updated local React state + URL,
|
|
3376
|
-
// leaving MUI on its previous internal page (no refetch, stale display).
|
|
3377
|
-
,
|
|
3378
|
-
onPaginationModelChange: isDataSourceMode ? dataSourcePaginationChange : wrappedOnPaginationModelChange,
|
|
3379
|
-
pageSizeOptions: pageSizeOptions,
|
|
3380
|
-
paginationProps: paginationProps,
|
|
3381
|
-
rowCount: rowCount
|
|
3382
|
-
})) : /*#__PURE__*/React__default.createElement(ControlledPagination, _extends({}, props, {
|
|
3383
|
-
displaySelection: bannerAtBottom,
|
|
3384
|
-
displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
|
|
3385
|
-
displayPagination: ['bottom', 'both'].includes(paginationPlacement),
|
|
3386
|
-
selectionStatus: selectionStatus,
|
|
3387
|
-
apiRef: apiRef,
|
|
3388
|
-
isRowSelectable: isRowSelectable,
|
|
3389
|
-
paginationModel: activePaginationModel,
|
|
3390
|
-
onPaginationModelChange: wrappedOnPaginationModelChange,
|
|
3391
|
-
pageSizeOptions: pageSizeOptions,
|
|
3392
|
-
paginationProps: paginationProps
|
|
3393
|
-
})) : null;
|
|
3394
|
-
}
|
|
3422
|
+
pagination: BottomPagination
|
|
3423
|
+
}),
|
|
3424
|
+
slotProps: _objectSpread2(_objectSpread2(_objectSpread2({}, slotProps), belowToolbarActive ? {
|
|
3425
|
+
toolbar: _objectSpread2(_objectSpread2({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.toolbar), belowToolbarSlotProps)
|
|
3426
|
+
} : {}), {}, {
|
|
3427
|
+
pagination: _objectSpread2(_objectSpread2({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.pagination), bottomPaginationSlotProps)
|
|
3395
3428
|
}),
|
|
3396
|
-
slotProps: _objectSpread2({}, slotProps),
|
|
3397
3429
|
rowSelectionModel: rowSelectionModel,
|
|
3398
3430
|
onRowSelectionModelChange: (newSelectionModel, details) => {
|
|
3399
3431
|
if (pagination && effectivePaginationMode != 'server') {
|
|
@@ -3481,5 +3513,5 @@ const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
3481
3513
|
StatefulDataGrid.className = CLASSNAME;
|
|
3482
3514
|
StatefulDataGrid.displayName = COMPONENT_NAME;
|
|
3483
3515
|
|
|
3484
|
-
export { resetColumnVisibility as $, ARRAY_IS_EMPTY as A, IS as B, CONTAINS_ANY_OF as C, DOES_NOT_CONTAIN as D, ENDS_WITH_ANY_OF as E, IS_NOT as F, getGridStringOperators as G, HAS_WITH_SELECT as H, IS_ANY_OF as I, getGridStringArrayOperators as J, getGridStringArrayOperatorsWithSelect as K, getGridStringArrayOperatorsWithSelectOnStringArrayColumns as L, FILTER_MODEL_KEY as M, SORT_MODEL_KEY as N, PINNED_COLUMNS as O, PAGINATION_MODEL_KEY as P, DIMENSION_MODEL_KEY as Q, FILTER_SEARCH_KEY as R, STARTS_WITH_ANY_OF as S, DENSITY_MODEL_KEY as T, COLUMN_ORDER_MODEL_KEY as U, VISIBILITY_MODEL_KEY as V, CATEGORIES as W, buildStorageKey as X, clearPreviousVersionStorage as Y, clearAllVersionStorage as Z, resetStatefulDataGridState as _, DOES_NOT_EQUAL as a, convertToDisplayFormat as a0, convertFromDisplayFormat as a1, getDecodedSearchFromUrl as a2, buildQueryParamsString as a3, areSearchStringsEqual as a4, decodeValue as a5, encodeValue as a6, urlSearchParamsToString as a7, numberOperatorEncoder as a8, numberOperatorDecoder as a9, isOperatorValueValid as aa, isValueValid as ab, getFilterModelFromString as ac,
|
|
3516
|
+
export { resetColumnVisibility as $, ARRAY_IS_EMPTY as A, IS as B, CONTAINS_ANY_OF as C, DOES_NOT_CONTAIN as D, ENDS_WITH_ANY_OF as E, IS_NOT as F, getGridStringOperators as G, HAS_WITH_SELECT as H, IS_ANY_OF as I, getGridStringArrayOperators as J, getGridStringArrayOperatorsWithSelect as K, getGridStringArrayOperatorsWithSelectOnStringArrayColumns as L, FILTER_MODEL_KEY as M, SORT_MODEL_KEY as N, PINNED_COLUMNS as O, PAGINATION_MODEL_KEY as P, DIMENSION_MODEL_KEY as Q, FILTER_SEARCH_KEY as R, STARTS_WITH_ANY_OF as S, DENSITY_MODEL_KEY as T, COLUMN_ORDER_MODEL_KEY as U, VISIBILITY_MODEL_KEY as V, CATEGORIES as W, buildStorageKey as X, clearPreviousVersionStorage as Y, clearAllVersionStorage as Z, resetStatefulDataGridState as _, DOES_NOT_EQUAL as a, convertToDisplayFormat as a0, convertFromDisplayFormat as a1, getDecodedSearchFromUrl as a2, buildQueryParamsString as a3, areSearchStringsEqual as a4, decodeValue as a5, encodeValue as a6, urlSearchParamsToString as a7, numberOperatorEncoder as a8, numberOperatorDecoder as a9, isOperatorValueValid as aa, isValueValid as ab, getFilterModelFromString as ac, normalizeDateValue as ad, getSearchParamsFromFilterModel as ae, getSortingFromString as af, getSearchParamsFromSorting as ag, getPaginationFromString as ah, getSearchParamsFromPagination as ai, getColumnVisibilityFromString as aj, getSearchParamsFromColumnVisibility as ak, getPinnedColumnsFromString as al, getSearchParamsFromPinnedColumns as am, getSearchParamsFromTab as an, getDensityFromString as ao, getSearchParamsFromDensity as ap, getDensityModel as aq, getColumnOrderFromString as ar, getSearchParamsFromColumnOrder as as, getSearchParamsFromVersion as at, getFinalSearch as au, getModelsParsedOrUpdateLocalStorage as av, updateUrl as aw, areFilterModelsEquivalent as ax, StatefulDataGrid as ay, DOES_NOT_START_WITH as b, DOES_NOT_END_WITH as c, IS_NOT_ANY_OF as d, DOES_NOT_CONTAIN_ANY_OF as e, DOES_NOT_START_WITH_ANY_OF as f, DOES_NOT_END_WITH_ANY_OF as g, IS_BETWEEN as h, IS_WITH_SELECT as i, IS_NOT_WITH_SELECT as j, IS_ANY_OF_WITH_SELECT as k, IS_NOT_ANY_OF_WITH_SELECT as l, ARRAY_IS_NOT_EMPTY as m, DOES_NOT_HAVE_WITH_SELECT as n, operatorList as o, HAS_ANY_OF_WITH_SELECT as p, HAS_ALL_OF_WITH_SELECT as q, DOES_NOT_HAVE_ANY_OF_WITH_SELECT as r, HAS_ONLY_WITH_SELECT as s, HAS as t, DOES_NOT_HAVE as u, HAS_ANY_OF as v, HAS_ALL_OF as w, DOES_NOT_HAVE_ANY_OF as x, HAS_ONLY as y, getGridNumericOperators as z };
|
|
3485
3517
|
//# sourceMappingURL=StatefulDataGrid2.js.map
|