@redsift/table 11.5.0-muiv5 → 11.6.0-muiv5-alpha.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/_virtual/_commonjsHelpers.js +6 -0
- package/_virtual/_commonjsHelpers.js.map +1 -0
- package/_virtual/_rollupPluginBabelHelpers.js +93 -0
- package/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/_virtual/index.js +4 -0
- package/_virtual/index.js.map +1 -0
- package/_virtual/index2.js +4 -0
- package/_virtual/index2.js.map +1 -0
- package/_virtual/index3.js +4 -0
- package/_virtual/index3.js.map +1 -0
- package/_virtual/jsx-runtime.js +4 -0
- package/_virtual/jsx-runtime.js.map +1 -0
- package/_virtual/react-is.development.js +4 -0
- package/_virtual/react-is.development.js.map +1 -0
- package/_virtual/react-is.development2.js +4 -0
- package/_virtual/react-is.development2.js.map +1 -0
- package/_virtual/react-is.production.min.js +4 -0
- package/_virtual/react-is.production.min.js.map +1 -0
- package/_virtual/react-is.production.min2.js +4 -0
- package/_virtual/react-is.production.min2.js.map +1 -0
- package/_virtual/react-jsx-runtime.development.js +4 -0
- package/_virtual/react-jsx-runtime.development.js.map +1 -0
- package/_virtual/react-jsx-runtime.production.min.js +4 -0
- package/_virtual/react-jsx-runtime.production.min.js.map +1 -0
- package/components/BaseComponents/BaseButton.d.ts +5 -0
- package/components/BaseComponents/BaseButton.js +41 -0
- package/components/BaseComponents/BaseButton.js.map +1 -0
- package/components/BaseComponents/BaseCheckbox.d.ts +5 -0
- package/components/BaseComponents/BaseCheckbox.js +24 -0
- package/components/BaseComponents/BaseCheckbox.js.map +1 -0
- package/components/BaseComponents/BaseIcon.d.ts +7 -0
- package/components/BaseComponents/BaseIcon.js +33 -0
- package/components/BaseComponents/BaseIcon.js.map +1 -0
- package/components/BaseComponents/BasePopper.d.ts +5 -0
- package/components/BaseComponents/BasePopper.js +13 -0
- package/components/BaseComponents/BasePopper.js.map +1 -0
- package/components/BaseComponents/BaseTextField.d.ts +5 -0
- package/components/BaseComponents/BaseTextField.js +26 -0
- package/components/BaseComponents/BaseTextField.js.map +1 -0
- package/components/DataGrid/DataGrid.d.ts +6 -0
- package/components/DataGrid/DataGrid.js +340 -0
- package/components/DataGrid/DataGrid.js.map +1 -0
- package/components/DataGrid/styles.js +74 -0
- package/components/DataGrid/styles.js.map +1 -0
- package/components/DataGrid/types.d.ts +36 -0
- package/components/GridToolbarFilterSemanticField/GridToolbarFilterSemanticField.d.ts +15 -0
- package/components/GridToolbarFilterSemanticField/GridToolbarFilterSemanticField.js +183 -0
- package/components/GridToolbarFilterSemanticField/GridToolbarFilterSemanticField.js.map +1 -0
- package/components/GridToolbarFilterSemanticField/styles.js +20 -0
- package/components/GridToolbarFilterSemanticField/styles.js.map +1 -0
- package/components/GridToolbarFilterSemanticField/types.d.ts +39 -0
- package/components/Pagination/ControlledPagination.d.ts +21 -0
- package/components/Pagination/ControlledPagination.js +74 -0
- package/components/Pagination/ControlledPagination.js.map +1 -0
- package/components/Pagination/ServerSideControlledPagination.d.ts +23 -0
- package/components/Pagination/ServerSideControlledPagination.js +102 -0
- package/components/Pagination/ServerSideControlledPagination.js.map +1 -0
- package/components/StatefulDataGrid/StatefulDataGrid.d.ts +6 -0
- package/components/StatefulDataGrid/StatefulDataGrid.js +373 -0
- package/components/StatefulDataGrid/StatefulDataGrid.js.map +1 -0
- package/components/StatefulDataGrid/types.d.ts +16 -0
- package/components/TextCell/TextCell.d.ts +9 -0
- package/components/TextCell/TextCell.js +48 -0
- package/components/TextCell/TextCell.js.map +1 -0
- package/components/TextCell/styles.js +22 -0
- package/components/TextCell/styles.js.map +1 -0
- package/components/TextCell/types.d.ts +25 -0
- package/components/Toolbar/Toolbar.d.ts +20 -0
- package/components/Toolbar/Toolbar.js +72 -0
- package/components/Toolbar/Toolbar.js.map +1 -0
- package/components/Toolbar/styles.js +17 -0
- package/components/Toolbar/styles.js.map +1 -0
- package/components/Toolbar/types.d.ts +40 -0
- package/components/ToolbarWrapper/ToolbarWrapper.d.ts +25 -0
- package/components/ToolbarWrapper/ToolbarWrapper.js +60 -0
- package/components/ToolbarWrapper/ToolbarWrapper.js.map +1 -0
- package/hooks/useControlledDatagridState.js +109 -0
- package/hooks/useControlledDatagridState.js.map +1 -0
- package/hooks/useFetchState.js +34 -0
- package/hooks/useFetchState.js.map +1 -0
- package/hooks/useStatefulTable.d.ts +12 -0
- package/hooks/useStatefulTable.js +182 -0
- package/hooks/useStatefulTable.js.map +1 -0
- package/hooks/useTableStates.js +52 -0
- package/hooks/useTableStates.js.map +1 -0
- package/index.d.ts +39 -628
- package/index.js +36 -28375
- package/index.js.map +1 -1
- package/package.json +4 -4
- package/packages/design-system/src/components/theme/context.js +7 -0
- package/packages/design-system/src/components/theme/context.js.map +1 -0
- package/packages/popovers/src/components/tooltip/Tooltip.js +60 -0
- package/packages/popovers/src/components/tooltip/Tooltip.js.map +1 -0
- package/packages/popovers/src/components/tooltip/context.js +6 -0
- package/packages/popovers/src/components/tooltip/context.js.map +1 -0
- package/packages/popovers/src/components/tooltip/types.js +28 -0
- package/packages/popovers/src/components/tooltip/types.js.map +1 -0
- package/packages/popovers/src/components/tooltip/useTooltip.js +78 -0
- package/packages/popovers/src/components/tooltip/useTooltip.js.map +1 -0
- package/packages/popovers/src/components/tooltip/useTooltipContext.js +13 -0
- package/packages/popovers/src/components/tooltip/useTooltipContext.js.map +1 -0
- package/packages/popovers/src/components/tooltip-content/TooltipContent.js +79 -0
- package/packages/popovers/src/components/tooltip-content/TooltipContent.js.map +1 -0
- package/packages/popovers/src/components/tooltip-content/styles.js +127 -0
- package/packages/popovers/src/components/tooltip-content/styles.js.map +1 -0
- package/packages/popovers/src/components/tooltip-trigger/TooltipTrigger.js +47 -0
- package/packages/popovers/src/components/tooltip-trigger/TooltipTrigger.js.map +1 -0
- package/utils/columnTypes/index.d.ts +78 -0
- package/utils/columnTypes/index.js +49 -0
- package/utils/columnTypes/index.js.map +1 -0
- package/utils/columns/detailPanelToggleColDef.d.ts +5 -0
- package/utils/columns/detailPanelToggleColDef.js +8 -0
- package/utils/columns/detailPanelToggleColDef.js.map +1 -0
- package/utils/fields/InputNumberInterval.js +85 -0
- package/utils/fields/InputNumberInterval.js.map +1 -0
- package/utils/gpt.d.ts +3 -0
- package/utils/gpt.js +33 -0
- package/utils/gpt.js.map +1 -0
- package/utils/localStorage.d.ts +17 -0
- package/utils/localStorage.js +59 -0
- package/utils/localStorage.js.map +1 -0
- package/utils/operators/index.d.ts +68 -0
- package/utils/operators/index.js +52 -0
- package/utils/operators/index.js.map +1 -0
- package/utils/operators/numeric/getGridNumericOperators.d.ts +5 -0
- package/utils/operators/numeric/getGridNumericOperators.js +7 -0
- package/utils/operators/numeric/getGridNumericOperators.js.map +1 -0
- package/utils/operators/numeric/isBetween.d.ts +10 -0
- package/utils/operators/numeric/isBetween.js +28 -0
- package/utils/operators/numeric/isBetween.js.map +1 -0
- package/utils/operators/string/doesNotContain.d.ts +10 -0
- package/utils/operators/string/doesNotContain.js +25 -0
- package/utils/operators/string/doesNotContain.js.map +1 -0
- package/utils/operators/string/doesNotEqual.d.ts +10 -0
- package/utils/operators/string/doesNotEqual.js +25 -0
- package/utils/operators/string/doesNotEqual.js.map +1 -0
- package/utils/operators/string/doesNotHave.d.ts +16 -0
- package/utils/operators/string/doesNotHave.js +24 -0
- package/utils/operators/string/doesNotHave.js.map +1 -0
- package/utils/operators/string/getGridStringOperators.d.ts +5 -0
- package/utils/operators/string/getGridStringOperators.js +9 -0
- package/utils/operators/string/getGridStringOperators.js.map +1 -0
- package/utils/operators/string/has.d.ts +16 -0
- package/utils/operators/string/has.js +24 -0
- package/utils/operators/string/has.js.map +1 -0
- package/utils/operators/string/hasOnly.d.ts +16 -0
- package/utils/operators/string/hasOnly.js +24 -0
- package/utils/operators/string/hasOnly.js.map +1 -0
- package/utils/operators/string/is.d.ts +16 -0
- package/utils/operators/string/is.js +26 -0
- package/utils/operators/string/is.js.map +1 -0
- package/utils/operators/string/isNot.d.ts +16 -0
- package/utils/operators/string/isNot.js +26 -0
- package/utils/operators/string/isNot.js.map +1 -0
- package/utils/operators/string-array/containsAnyOf.d.ts +16 -0
- package/utils/operators/string-array/containsAnyOf.js +56 -0
- package/utils/operators/string-array/containsAnyOf.js.map +1 -0
- package/utils/operators/string-array/doesNotHaveAnyOf.js +26 -0
- package/utils/operators/string-array/doesNotHaveAnyOf.js.map +1 -0
- package/utils/operators/string-array/endsWithAnyOf.d.ts +10 -0
- package/utils/operators/string-array/endsWithAnyOf.js +31 -0
- package/utils/operators/string-array/endsWithAnyOf.js.map +1 -0
- package/utils/operators/string-array/getGridStringArrayOperators.d.ts +7 -0
- package/utils/operators/string-array/getGridStringArrayOperators.js +19 -0
- package/utils/operators/string-array/getGridStringArrayOperators.js.map +1 -0
- package/utils/operators/string-array/hasAnyOf.d.ts +16 -0
- package/utils/operators/string-array/hasAnyOf.js +28 -0
- package/utils/operators/string-array/hasAnyOf.js.map +1 -0
- package/utils/operators/string-array/isAnyOf.d.ts +16 -0
- package/utils/operators/string-array/isAnyOf.js +32 -0
- package/utils/operators/string-array/isAnyOf.js.map +1 -0
- package/utils/operators/string-array/isNotAnyOf.d.ts +10 -0
- package/utils/operators/string-array/isNotAnyOf.js +28 -0
- package/utils/operators/string-array/isNotAnyOf.js.map +1 -0
- package/utils/operators/string-array/startsWithAnyOf.d.ts +10 -0
- package/utils/operators/string-array/startsWithAnyOf.js +31 -0
- package/utils/operators/string-array/startsWithAnyOf.js.map +1 -0
- package/utils/urlLocalStorageSync.d.ts +73 -0
- package/utils/urlLocalStorageSync.js +756 -0
- package/utils/urlLocalStorageSync.js.map +1 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends, objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default, { forwardRef, useRef, useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { useTheme, ThemeProvider, RedsiftColorBlueN, RedsiftColorNeutralXDarkGrey, RedsiftColorNeutralWhite } from '@redsift/design-system';
|
|
5
|
+
import { useGridApiRef, DataGridPro, gridPaginatedVisibleSortedGridRowEntriesSelector, gridPaginatedVisibleSortedGridRowIdsSelector, gridFilteredSortedRowEntriesSelector, gridFilteredSortedRowIdsSelector } from '@mui/x-data-grid-pro';
|
|
6
|
+
import { StyledDataGrid } from '../DataGrid/styles.js';
|
|
7
|
+
import { useStatefulTable } from '../../hooks/useStatefulTable.js';
|
|
8
|
+
import { customColumnTypes } from '../../utils/columnTypes/index.js';
|
|
9
|
+
import { useControlledDatagridState } from '../../hooks/useControlledDatagridState.js';
|
|
10
|
+
import createTheme from '../../node_modules/@mui/material/styles/createTheme.js';
|
|
11
|
+
import ThemeProvider$1 from '../../node_modules/@mui/material/styles/ThemeProvider.js';
|
|
12
|
+
import { Toolbar } from '../Toolbar/Toolbar.js';
|
|
13
|
+
import { LicenseInfo } from '../../node_modules/@mui/x-license-pro/utils/licenseInfo.js';
|
|
14
|
+
import { onServerSideSelectionStatusChange, ServerSideControlledPagination } from '../Pagination/ServerSideControlledPagination.js';
|
|
15
|
+
import { BaseButton } from '../BaseComponents/BaseButton.js';
|
|
16
|
+
import { BaseCheckbox } from '../BaseComponents/BaseCheckbox.js';
|
|
17
|
+
import { BasePopper } from '../BaseComponents/BasePopper.js';
|
|
18
|
+
import { BaseIcon } from '../BaseComponents/BaseIcon.js';
|
|
19
|
+
import { ToolbarWrapper } from '../ToolbarWrapper/ToolbarWrapper.js';
|
|
20
|
+
import { ControlledPagination } from '../Pagination/ControlledPagination.js';
|
|
21
|
+
|
|
22
|
+
const _excluded = ["apiRef", "autoHeight", "className", "columns", "columnTypes", "components", "componentsProps", "filterModel", "columnVisibilityModel", "pinnedColumns", "sortModel", "page", "pageSize", "height", "hideToolbar", "initialState", "isRowSelectable", "license", "localStorageVersion", "previousLocalStorageVersions", "onFilterModelChange", "selectionModel", "onColumnWidthChange", "onPageChange", "onPageSizeChange", "onSelectionModelChange", "onColumnVisibilityModelChange", "onPinnedColumnsChange", "onSortModelChange", "pagination", "paginationPlacement", "paginationProps", "rows", "rowsPerPageOptions", "sx", "theme", "useRouter", "paginationMode", "rowCount"];
|
|
23
|
+
const COMPONENT_NAME = 'DataGrid';
|
|
24
|
+
const CLASSNAME = 'redsift-datagrid';
|
|
25
|
+
const StatefulDataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
26
|
+
const datagridRef = ref || useRef();
|
|
27
|
+
const {
|
|
28
|
+
apiRef: propsApiRef,
|
|
29
|
+
autoHeight,
|
|
30
|
+
className,
|
|
31
|
+
columns,
|
|
32
|
+
columnTypes: propsColumnTypes,
|
|
33
|
+
components,
|
|
34
|
+
componentsProps,
|
|
35
|
+
filterModel: propsFilterModel,
|
|
36
|
+
columnVisibilityModel: propsColumnVisibilityModel,
|
|
37
|
+
pinnedColumns: propsPinnedColumns,
|
|
38
|
+
sortModel: propsSortModel,
|
|
39
|
+
page: propsPage,
|
|
40
|
+
pageSize: propsPageSize,
|
|
41
|
+
height: propsHeight,
|
|
42
|
+
hideToolbar,
|
|
43
|
+
initialState,
|
|
44
|
+
isRowSelectable,
|
|
45
|
+
license = process.env.MUI_LICENSE_KEY,
|
|
46
|
+
localStorageVersion,
|
|
47
|
+
previousLocalStorageVersions,
|
|
48
|
+
onFilterModelChange: propsOnFilterModelChange,
|
|
49
|
+
selectionModel: propsSelectionModel,
|
|
50
|
+
onColumnWidthChange: propsOnColumnWidthChange,
|
|
51
|
+
onPageChange: propsOnPageChange,
|
|
52
|
+
onPageSizeChange: propsOnPageSizeChange,
|
|
53
|
+
onSelectionModelChange: propsOnSelectionModelChange,
|
|
54
|
+
onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,
|
|
55
|
+
onPinnedColumnsChange: propsOnPinnedColumnsChange,
|
|
56
|
+
onSortModelChange: propsOnSortModelChange,
|
|
57
|
+
pagination,
|
|
58
|
+
paginationPlacement = 'both',
|
|
59
|
+
paginationProps,
|
|
60
|
+
rows,
|
|
61
|
+
rowsPerPageOptions,
|
|
62
|
+
sx,
|
|
63
|
+
theme: propsTheme,
|
|
64
|
+
useRouter,
|
|
65
|
+
paginationMode = 'client',
|
|
66
|
+
rowCount
|
|
67
|
+
} = props,
|
|
68
|
+
forwardedProps = _objectWithoutProperties(props, _excluded);
|
|
69
|
+
const theme = useTheme(propsTheme);
|
|
70
|
+
const _apiRef = useGridApiRef();
|
|
71
|
+
const apiRef = propsApiRef !== null && propsApiRef !== void 0 ? propsApiRef : _apiRef;
|
|
72
|
+
const RenderedToolbar = components !== null && components !== void 0 && components.Toolbar ? components.Toolbar : Toolbar;
|
|
73
|
+
LicenseInfo.setLicenseKey(license);
|
|
74
|
+
const height = propsHeight !== null && propsHeight !== void 0 ? propsHeight : autoHeight ? undefined : '500px';
|
|
75
|
+
const {
|
|
76
|
+
onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,
|
|
77
|
+
onFilterModelChange: controlledOnFilterModelChange,
|
|
78
|
+
onPageChange: controlledOnPageChange,
|
|
79
|
+
onPageSizeChange: controlledOnPageSizeChange,
|
|
80
|
+
onPinnedColumnsChange: controlledOnPinnedColumnsChange,
|
|
81
|
+
onSortModelChange: controlledOnSortModelChange
|
|
82
|
+
} = useControlledDatagridState({
|
|
83
|
+
initialState,
|
|
84
|
+
rowsPerPageOptions,
|
|
85
|
+
propsColumnVisibilityModel,
|
|
86
|
+
propsFilterModel,
|
|
87
|
+
propsOnColumnVisibilityModelChange,
|
|
88
|
+
propsOnFilterModelChange,
|
|
89
|
+
propsOnPinnedColumnsChange,
|
|
90
|
+
propsOnSortModelChange,
|
|
91
|
+
propsPage,
|
|
92
|
+
propsPageSize,
|
|
93
|
+
propsPinnedColumns,
|
|
94
|
+
propsSortModel,
|
|
95
|
+
propsOnPageChange,
|
|
96
|
+
propsOnPageSizeChange
|
|
97
|
+
});
|
|
98
|
+
const {
|
|
99
|
+
columnVisibilityModel,
|
|
100
|
+
filterModel,
|
|
101
|
+
onColumnVisibilityModelChange,
|
|
102
|
+
onFilterModelChange,
|
|
103
|
+
onPageChange,
|
|
104
|
+
onPageSizeChange,
|
|
105
|
+
onPinnedColumnsChange,
|
|
106
|
+
onSortModelChange,
|
|
107
|
+
page,
|
|
108
|
+
pageSize,
|
|
109
|
+
pinnedColumns,
|
|
110
|
+
sortModel,
|
|
111
|
+
onColumnWidthChange
|
|
112
|
+
} = useStatefulTable({
|
|
113
|
+
apiRef: apiRef,
|
|
114
|
+
initialState,
|
|
115
|
+
columns,
|
|
116
|
+
onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,
|
|
117
|
+
onColumnWidthChange: propsOnColumnWidthChange,
|
|
118
|
+
onFilterModelChange: controlledOnFilterModelChange,
|
|
119
|
+
onPageChange: controlledOnPageChange,
|
|
120
|
+
onPageSizeChange: controlledOnPageSizeChange,
|
|
121
|
+
onPinnedColumnsChange: controlledOnPinnedColumnsChange,
|
|
122
|
+
onSortModelChange: controlledOnSortModelChange,
|
|
123
|
+
useRouter: useRouter,
|
|
124
|
+
localStorageVersion,
|
|
125
|
+
previousLocalStorageVersions
|
|
126
|
+
});
|
|
127
|
+
const [selectionModel, setSelectionModel] = useState(propsSelectionModel !== null && propsSelectionModel !== void 0 ? propsSelectionModel : []);
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
setSelectionModel(propsSelectionModel !== null && propsSelectionModel !== void 0 ? propsSelectionModel : []);
|
|
130
|
+
}, [propsSelectionModel]);
|
|
131
|
+
const onSelectionModelChange = (selectionModel, details) => {
|
|
132
|
+
if (propsOnSelectionModelChange) {
|
|
133
|
+
propsOnSelectionModelChange(selectionModel, details);
|
|
134
|
+
} else {
|
|
135
|
+
setSelectionModel(selectionModel);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const selectionStatus = useRef({
|
|
139
|
+
type: 'none',
|
|
140
|
+
numberOfSelectedRows: 0,
|
|
141
|
+
numberOfSelectedRowsInPage: 0,
|
|
142
|
+
page,
|
|
143
|
+
pageSize: pageSize
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// in server-side pagination we want to update the selection status
|
|
147
|
+
// every time we navigate between pages, resize our page or select something
|
|
148
|
+
useEffect(() => {
|
|
149
|
+
if (paginationMode == 'server') {
|
|
150
|
+
onServerSideSelectionStatusChange(Array.isArray(selectionModel) ? selectionModel : [selectionModel], apiRef, selectionStatus, isRowSelectable, page, pageSize);
|
|
151
|
+
}
|
|
152
|
+
}, [selectionModel, page, pageSize]);
|
|
153
|
+
if (!Array.isArray(rows)) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const muiTheme = useMemo(() => createTheme({
|
|
157
|
+
palette: {
|
|
158
|
+
mode: theme,
|
|
159
|
+
primary: {
|
|
160
|
+
main: RedsiftColorBlueN
|
|
161
|
+
},
|
|
162
|
+
background: {
|
|
163
|
+
default: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,
|
|
164
|
+
paper: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}), [theme]);
|
|
168
|
+
return /*#__PURE__*/React__default.createElement(ThemeProvider, {
|
|
169
|
+
value: {
|
|
170
|
+
theme
|
|
171
|
+
}
|
|
172
|
+
}, /*#__PURE__*/React__default.createElement(ThemeProvider$1, {
|
|
173
|
+
theme: muiTheme
|
|
174
|
+
}, /*#__PURE__*/React__default.createElement(StyledDataGrid, {
|
|
175
|
+
ref: datagridRef,
|
|
176
|
+
className: classNames(StatefulDataGrid.className, className),
|
|
177
|
+
$height: height
|
|
178
|
+
}, /*#__PURE__*/React__default.createElement(DataGridPro, _extends({}, forwardedProps, {
|
|
179
|
+
apiRef: apiRef,
|
|
180
|
+
columns: columns,
|
|
181
|
+
columnVisibilityModel: columnVisibilityModel,
|
|
182
|
+
filterModel: filterModel,
|
|
183
|
+
onColumnVisibilityModelChange: onColumnVisibilityModelChange,
|
|
184
|
+
onFilterModelChange: onFilterModelChange,
|
|
185
|
+
onPageChange: onPageChange,
|
|
186
|
+
onPageSizeChange: onPageSizeChange,
|
|
187
|
+
onPinnedColumnsChange: onPinnedColumnsChange,
|
|
188
|
+
onSortModelChange: onSortModelChange,
|
|
189
|
+
page: page,
|
|
190
|
+
pageSize: pageSize,
|
|
191
|
+
pinnedColumns: pinnedColumns,
|
|
192
|
+
sortModel: sortModel,
|
|
193
|
+
rowsPerPageOptions: rowsPerPageOptions,
|
|
194
|
+
onColumnWidthChange: onColumnWidthChange,
|
|
195
|
+
initialState: initialState,
|
|
196
|
+
isRowSelectable: isRowSelectable,
|
|
197
|
+
pagination: pagination,
|
|
198
|
+
paginationMode: paginationMode,
|
|
199
|
+
keepNonExistentRowsSelected: paginationMode == 'server',
|
|
200
|
+
rows: rows,
|
|
201
|
+
rowCount: rowCount,
|
|
202
|
+
autoHeight: autoHeight,
|
|
203
|
+
checkboxSelectionVisibleOnly: Boolean(pagination),
|
|
204
|
+
columnTypes: _objectSpread2(_objectSpread2({}, customColumnTypes), propsColumnTypes),
|
|
205
|
+
components: _objectSpread2(_objectSpread2({
|
|
206
|
+
BaseButton,
|
|
207
|
+
BaseCheckbox,
|
|
208
|
+
// BaseTextField,
|
|
209
|
+
BasePopper,
|
|
210
|
+
ColumnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
211
|
+
displayName: "ColumnFilteredIcon"
|
|
212
|
+
})),
|
|
213
|
+
ColumnSelectorIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
214
|
+
displayName: "ColumnSelectorIcon"
|
|
215
|
+
})),
|
|
216
|
+
ColumnSortedAscendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
217
|
+
displayName: "ColumnSortedAscendingIcon"
|
|
218
|
+
})),
|
|
219
|
+
ColumnSortedDescendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
220
|
+
displayName: "ColumnSortedDescendingIcon"
|
|
221
|
+
})),
|
|
222
|
+
DensityCompactIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
223
|
+
displayName: "DensityCompactIcon"
|
|
224
|
+
})),
|
|
225
|
+
DensityStandardIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
226
|
+
displayName: "DensityStandardIcon"
|
|
227
|
+
})),
|
|
228
|
+
DensityComfortableIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
229
|
+
displayName: "DensityComfortableIcon"
|
|
230
|
+
})),
|
|
231
|
+
DetailPanelCollapseIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
232
|
+
displayName: "DetailPanelCollapseIcon"
|
|
233
|
+
})),
|
|
234
|
+
DetailPanelExpandIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
235
|
+
displayName: "DetailPanelExpandIcon"
|
|
236
|
+
})),
|
|
237
|
+
ExportIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
238
|
+
displayName: "ExportIcon"
|
|
239
|
+
})),
|
|
240
|
+
OpenFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({
|
|
241
|
+
displayName: "OpenFilterButtonIcon"
|
|
242
|
+
}, props))
|
|
243
|
+
}, components), {}, {
|
|
244
|
+
Toolbar: ToolbarWrapper,
|
|
245
|
+
Pagination: props => {
|
|
246
|
+
return pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, _extends({}, props, {
|
|
247
|
+
displaySelection: false,
|
|
248
|
+
displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
|
|
249
|
+
displayPagination: ['bottom', 'both'].includes(paginationPlacement),
|
|
250
|
+
selectionStatus: selectionStatus.current,
|
|
251
|
+
page: page,
|
|
252
|
+
pageSize: pageSize,
|
|
253
|
+
onPageChange: onPageChange,
|
|
254
|
+
onPageSizeChange: onPageSizeChange,
|
|
255
|
+
rowsPerPageOptions: rowsPerPageOptions,
|
|
256
|
+
paginationProps: paginationProps,
|
|
257
|
+
paginationMode: paginationMode,
|
|
258
|
+
rowCount: rowCount
|
|
259
|
+
})) : /*#__PURE__*/React__default.createElement(ControlledPagination, _extends({}, props, {
|
|
260
|
+
displaySelection: false,
|
|
261
|
+
displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
|
|
262
|
+
displayPagination: ['bottom', 'both'].includes(paginationPlacement),
|
|
263
|
+
selectionStatus: selectionStatus.current,
|
|
264
|
+
apiRef: apiRef,
|
|
265
|
+
isRowSelectable: isRowSelectable,
|
|
266
|
+
page: page,
|
|
267
|
+
pageSize: pageSize,
|
|
268
|
+
onPageChange: onPageChange,
|
|
269
|
+
onPageSizeChange: onPageSizeChange,
|
|
270
|
+
rowsPerPageOptions: rowsPerPageOptions,
|
|
271
|
+
paginationProps: paginationProps,
|
|
272
|
+
paginationMode: paginationMode
|
|
273
|
+
})) : null;
|
|
274
|
+
}
|
|
275
|
+
}),
|
|
276
|
+
componentsProps: _objectSpread2(_objectSpread2({}, componentsProps), {}, {
|
|
277
|
+
toolbar: _objectSpread2({
|
|
278
|
+
hideToolbar,
|
|
279
|
+
RenderedToolbar,
|
|
280
|
+
filterModel,
|
|
281
|
+
onFilterModelChange,
|
|
282
|
+
pagination,
|
|
283
|
+
paginationPlacement,
|
|
284
|
+
selectionStatus,
|
|
285
|
+
apiRef,
|
|
286
|
+
isRowSelectable,
|
|
287
|
+
page,
|
|
288
|
+
pageSize,
|
|
289
|
+
onPageChange,
|
|
290
|
+
onPageSizeChange,
|
|
291
|
+
rowsPerPageOptions,
|
|
292
|
+
paginationProps,
|
|
293
|
+
paginationMode,
|
|
294
|
+
rowCount
|
|
295
|
+
}, componentsProps === null || componentsProps === void 0 ? void 0 : componentsProps.toolbar)
|
|
296
|
+
}),
|
|
297
|
+
selectionModel: selectionModel,
|
|
298
|
+
onSelectionModelChange: (newSelectionModel, details) => {
|
|
299
|
+
if (pagination && paginationMode != 'server') {
|
|
300
|
+
const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref => {
|
|
301
|
+
let {
|
|
302
|
+
model
|
|
303
|
+
} = _ref;
|
|
304
|
+
return isRowSelectable({
|
|
305
|
+
row: model
|
|
306
|
+
});
|
|
307
|
+
}).map(_ref2 => {
|
|
308
|
+
let {
|
|
309
|
+
id
|
|
310
|
+
} = _ref2;
|
|
311
|
+
return id;
|
|
312
|
+
}) : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);
|
|
313
|
+
const numberOfSelectableRowsInPage = selectableRowsInPage.length;
|
|
314
|
+
const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref3 => {
|
|
315
|
+
let {
|
|
316
|
+
model
|
|
317
|
+
} = _ref3;
|
|
318
|
+
return isRowSelectable({
|
|
319
|
+
row: model
|
|
320
|
+
});
|
|
321
|
+
}).map(_ref4 => {
|
|
322
|
+
let {
|
|
323
|
+
id
|
|
324
|
+
} = _ref4;
|
|
325
|
+
return id;
|
|
326
|
+
}) : gridFilteredSortedRowIdsSelector(apiRef);
|
|
327
|
+
const numberOfSelectableRowsInTable = selectableRowsInTable.length;
|
|
328
|
+
const numberOfSelectedRows = newSelectionModel.length;
|
|
329
|
+
if (selectionStatus.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage || selectionStatus.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable || selectionStatus.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage) {
|
|
330
|
+
setTimeout(() => {
|
|
331
|
+
apiRef.current.selectRows([], true, true);
|
|
332
|
+
}, 0);
|
|
333
|
+
}
|
|
334
|
+
if (numberOfSelectedRows === numberOfSelectableRowsInPage && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
|
|
335
|
+
selectionStatus.current = {
|
|
336
|
+
type: 'page',
|
|
337
|
+
numberOfSelectedRows
|
|
338
|
+
};
|
|
339
|
+
} else if (numberOfSelectedRows === numberOfSelectableRowsInTable && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
|
|
340
|
+
selectionStatus.current = {
|
|
341
|
+
type: 'table',
|
|
342
|
+
numberOfSelectedRows
|
|
343
|
+
};
|
|
344
|
+
} else if (numberOfSelectedRows > 0) {
|
|
345
|
+
selectionStatus.current = {
|
|
346
|
+
type: 'other',
|
|
347
|
+
numberOfSelectedRows
|
|
348
|
+
};
|
|
349
|
+
} else {
|
|
350
|
+
selectionStatus.current = {
|
|
351
|
+
type: 'none',
|
|
352
|
+
numberOfSelectedRows
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange(newSelectionModel, details);
|
|
357
|
+
},
|
|
358
|
+
sx: _objectSpread2(_objectSpread2({}, sx), {}, {
|
|
359
|
+
'.MuiDataGrid-columnHeaders': {
|
|
360
|
+
flexDirection: 'column',
|
|
361
|
+
alignItems: 'normal'
|
|
362
|
+
},
|
|
363
|
+
'.MuiDataGrid-selectedRowCount': {
|
|
364
|
+
margin: 'none'
|
|
365
|
+
}
|
|
366
|
+
})
|
|
367
|
+
})))));
|
|
368
|
+
});
|
|
369
|
+
StatefulDataGrid.className = CLASSNAME;
|
|
370
|
+
StatefulDataGrid.displayName = COMPONENT_NAME;
|
|
371
|
+
|
|
372
|
+
export { StatefulDataGrid };
|
|
373
|
+
//# sourceMappingURL=StatefulDataGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatefulDataGrid.js","sources":["../../../src/components/StatefulDataGrid/StatefulDataGrid.tsx"],"sourcesContent":["import React, { forwardRef, RefObject, useEffect, useMemo, useRef, useState } from 'react';\nimport { ThemeProvider as MuiThemeProvider, createTheme } from '@mui/material/styles';\nimport classNames from 'classnames';\nimport { LicenseInfo } from '@mui/x-license-pro';\nimport {\n Comp,\n RedsiftColorBlueN,\n RedsiftColorNeutralWhite,\n RedsiftColorNeutralXDarkGrey,\n ThemeProvider,\n useTheme,\n} from '@redsift/design-system';\nimport {\n DataGridPro,\n GridCallbackDetails,\n gridFilteredSortedRowEntriesSelector,\n gridFilteredSortedRowIdsSelector,\n gridPaginatedVisibleSortedGridRowEntriesSelector,\n gridPaginatedVisibleSortedGridRowIdsSelector,\n GridRowParams,\n GridSelectionModel,\n useGridApiRef,\n} from '@mui/x-data-grid-pro';\n\nimport { StyledDataGrid } from '../DataGrid/styles';\nimport { SelectionStatus } from '../DataGrid/types';\nimport { Toolbar as DefaultToolbar } from '../Toolbar';\nimport { BaseIcon, BaseButton, BaseCheckbox, BasePopper } from '../BaseComponents';\nimport { ToolbarWrapper } from '../ToolbarWrapper';\nimport { onServerSideSelectionStatusChange, ServerSideControlledPagination, ControlledPagination } from '../Pagination';\n\nimport { useStatefulTable } from '../../hooks/useStatefulTable';\nimport { StatefulDataGridProps } from './types';\nimport { customColumnTypes } from '../../utils/columnTypes';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\n\nconst COMPONENT_NAME = 'DataGrid';\nconst CLASSNAME = 'redsift-datagrid';\n\nexport const StatefulDataGrid: Comp<StatefulDataGridProps, HTMLDivElement> = forwardRef((props, ref) => {\n const datagridRef = ref || useRef<HTMLDivElement>();\n\n const {\n apiRef: propsApiRef,\n autoHeight,\n className,\n columns,\n columnTypes: propsColumnTypes,\n components,\n componentsProps,\n filterModel: propsFilterModel,\n columnVisibilityModel: propsColumnVisibilityModel,\n pinnedColumns: propsPinnedColumns,\n sortModel: propsSortModel,\n page: propsPage,\n pageSize: propsPageSize,\n height: propsHeight,\n hideToolbar,\n initialState,\n isRowSelectable,\n license = process.env.MUI_LICENSE_KEY,\n localStorageVersion,\n previousLocalStorageVersions,\n onFilterModelChange: propsOnFilterModelChange,\n selectionModel: propsSelectionModel,\n onColumnWidthChange: propsOnColumnWidthChange,\n onPageChange: propsOnPageChange,\n onPageSizeChange: propsOnPageSizeChange,\n onSelectionModelChange: propsOnSelectionModelChange,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n pagination,\n paginationPlacement = 'both',\n paginationProps,\n rows,\n rowsPerPageOptions,\n sx,\n theme: propsTheme,\n useRouter,\n paginationMode = 'client',\n rowCount,\n ...forwardedProps\n } = props;\n\n const theme = useTheme(propsTheme);\n\n const _apiRef = useGridApiRef();\n const apiRef = propsApiRef ?? _apiRef;\n const RenderedToolbar = components?.Toolbar ? components.Toolbar : DefaultToolbar;\n\n LicenseInfo.setLicenseKey(license!);\n\n const height = propsHeight ?? (autoHeight ? undefined : '500px');\n\n const {\n onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,\n onFilterModelChange: controlledOnFilterModelChange,\n onPageChange: controlledOnPageChange,\n onPageSizeChange: controlledOnPageSizeChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n } = useControlledDatagridState({\n initialState,\n rowsPerPageOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPage,\n propsPageSize,\n propsPinnedColumns,\n propsSortModel,\n propsOnPageChange,\n propsOnPageSizeChange,\n });\n\n const {\n columnVisibilityModel,\n filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPageChange,\n onPageSizeChange,\n onPinnedColumnsChange,\n onSortModelChange,\n page,\n pageSize,\n pinnedColumns,\n sortModel,\n onColumnWidthChange,\n } = useStatefulTable({\n apiRef: apiRef!,\n initialState,\n columns,\n onColumnVisibilityModelChange: controlledOnColumnVisibilityModelChange,\n onColumnWidthChange: propsOnColumnWidthChange,\n onFilterModelChange: controlledOnFilterModelChange,\n onPageChange: controlledOnPageChange,\n onPageSizeChange: controlledOnPageSizeChange,\n onPinnedColumnsChange: controlledOnPinnedColumnsChange,\n onSortModelChange: controlledOnSortModelChange,\n useRouter: useRouter!,\n localStorageVersion,\n previousLocalStorageVersions,\n });\n\n const [selectionModel, setSelectionModel] = useState(propsSelectionModel ?? []);\n useEffect(() => {\n setSelectionModel(propsSelectionModel ?? []);\n }, [propsSelectionModel]);\n\n const onSelectionModelChange = (selectionModel: GridSelectionModel, details: GridCallbackDetails) => {\n if (propsOnSelectionModelChange) {\n propsOnSelectionModelChange(selectionModel, details);\n } else {\n setSelectionModel(selectionModel);\n }\n };\n\n const selectionStatus = useRef<SelectionStatus>({\n type: 'none',\n numberOfSelectedRows: 0,\n numberOfSelectedRowsInPage: 0,\n page,\n pageSize: pageSize,\n });\n\n // in server-side pagination we want to update the selection status\n // every time we navigate between pages, resize our page or select something\n useEffect(() => {\n if (paginationMode == 'server') {\n onServerSideSelectionStatusChange(\n Array.isArray(selectionModel) ? selectionModel : [selectionModel],\n apiRef,\n selectionStatus,\n isRowSelectable,\n page!,\n pageSize!\n );\n }\n }, [selectionModel, page, pageSize]);\n\n if (!Array.isArray(rows)) {\n return null;\n }\n\n const muiTheme = useMemo(\n () =>\n createTheme({\n palette: {\n mode: theme,\n primary: { main: RedsiftColorBlueN },\n background: {\n default: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n paper: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n },\n },\n }),\n [theme]\n );\n\n return (\n <ThemeProvider value={{ theme }}>\n <MuiThemeProvider theme={muiTheme}>\n {/* <pre>{JSON.stringify(selectionStatus, null, 2)}</pre> */}\n <StyledDataGrid\n ref={datagridRef as RefObject<HTMLDivElement>}\n className={classNames(StatefulDataGrid.className, className)}\n $height={height}\n >\n <DataGridPro\n {...forwardedProps}\n apiRef={apiRef}\n columns={columns}\n columnVisibilityModel={columnVisibilityModel}\n filterModel={filterModel}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onFilterModelChange={onFilterModelChange}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n onSortModelChange={onSortModelChange}\n page={page}\n pageSize={pageSize}\n pinnedColumns={pinnedColumns}\n sortModel={sortModel}\n rowsPerPageOptions={rowsPerPageOptions}\n onColumnWidthChange={onColumnWidthChange}\n initialState={initialState}\n isRowSelectable={isRowSelectable}\n pagination={pagination}\n paginationMode={paginationMode}\n keepNonExistentRowsSelected={paginationMode == 'server'}\n rows={rows}\n rowCount={rowCount!}\n autoHeight={autoHeight}\n checkboxSelectionVisibleOnly={Boolean(pagination)}\n columnTypes={{ ...customColumnTypes, ...propsColumnTypes }}\n components={{\n BaseButton,\n BaseCheckbox,\n // BaseTextField,\n BasePopper,\n ColumnFilteredIcon: (props) => <BaseIcon {...props} displayName=\"ColumnFilteredIcon\" />,\n ColumnSelectorIcon: (props) => <BaseIcon {...props} displayName=\"ColumnSelectorIcon\" />,\n ColumnSortedAscendingIcon: (props) => <BaseIcon {...props} displayName=\"ColumnSortedAscendingIcon\" />,\n ColumnSortedDescendingIcon: (props) => <BaseIcon {...props} displayName=\"ColumnSortedDescendingIcon\" />,\n DensityCompactIcon: (props) => <BaseIcon {...props} displayName=\"DensityCompactIcon\" />,\n DensityStandardIcon: (props) => <BaseIcon {...props} displayName=\"DensityStandardIcon\" />,\n DensityComfortableIcon: (props) => <BaseIcon {...props} displayName=\"DensityComfortableIcon\" />,\n DetailPanelCollapseIcon: (props) => <BaseIcon {...props} displayName=\"DetailPanelCollapseIcon\" />,\n DetailPanelExpandIcon: (props) => <BaseIcon {...props} displayName=\"DetailPanelExpandIcon\" />,\n ExportIcon: (props) => <BaseIcon {...props} displayName=\"ExportIcon\" />,\n OpenFilterButtonIcon: (props) => <BaseIcon displayName=\"OpenFilterButtonIcon\" {...props} />,\n ...components,\n Toolbar: ToolbarWrapper,\n Pagination: (props) => {\n return pagination ? (\n paginationMode == 'server' ? (\n <ServerSideControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\n page={page}\n pageSize={pageSize}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n rowsPerPageOptions={rowsPerPageOptions as any as number[]}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n page={page}\n pageSize={pageSize}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n rowsPerPageOptions={rowsPerPageOptions as any as number[]}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\n />\n )\n ) : null;\n },\n }}\n componentsProps={{\n ...componentsProps,\n toolbar: {\n hideToolbar,\n RenderedToolbar,\n filterModel,\n onFilterModelChange,\n pagination,\n paginationPlacement,\n selectionStatus,\n apiRef,\n isRowSelectable,\n page,\n pageSize,\n onPageChange,\n onPageSizeChange,\n rowsPerPageOptions,\n paginationProps,\n paginationMode,\n rowCount,\n ...componentsProps?.toolbar,\n },\n }}\n selectionModel={selectionModel}\n onSelectionModelChange={(newSelectionModel, details) => {\n if (pagination && paginationMode != 'server') {\n const selectableRowsInPage = isRowSelectable\n ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = newSelectionModel.length;\n\n if (\n (selectionStatus.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage) ||\n (selectionStatus.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable) ||\n (selectionStatus.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage)\n ) {\n setTimeout(() => {\n apiRef.current.selectRows([], true, true);\n }, 0);\n }\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus.current = {\n type: 'page',\n numberOfSelectedRows,\n };\n } else if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus.current = {\n type: 'table',\n numberOfSelectedRows,\n };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus.current = {\n type: 'other',\n numberOfSelectedRows,\n };\n } else {\n selectionStatus.current = {\n type: 'none',\n numberOfSelectedRows,\n };\n }\n }\n onSelectionModelChange?.(newSelectionModel, details);\n }}\n sx={{\n ...sx,\n '.MuiDataGrid-columnHeaders': {\n flexDirection: 'column',\n alignItems: 'normal',\n },\n '.MuiDataGrid-selectedRowCount': {\n margin: 'none',\n },\n }}\n />\n </StyledDataGrid>\n </MuiThemeProvider>\n </ThemeProvider>\n );\n});\nStatefulDataGrid.className = CLASSNAME;\nStatefulDataGrid.displayName = COMPONENT_NAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","StatefulDataGrid","forwardRef","props","ref","datagridRef","useRef","apiRef","propsApiRef","autoHeight","className","columns","columnTypes","propsColumnTypes","components","componentsProps","filterModel","propsFilterModel","columnVisibilityModel","propsColumnVisibilityModel","pinnedColumns","propsPinnedColumns","sortModel","propsSortModel","page","propsPage","pageSize","propsPageSize","height","propsHeight","hideToolbar","initialState","isRowSelectable","license","process","env","MUI_LICENSE_KEY","localStorageVersion","previousLocalStorageVersions","onFilterModelChange","propsOnFilterModelChange","selectionModel","propsSelectionModel","onColumnWidthChange","propsOnColumnWidthChange","onPageChange","propsOnPageChange","onPageSizeChange","propsOnPageSizeChange","onSelectionModelChange","propsOnSelectionModelChange","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","pagination","paginationPlacement","paginationProps","rows","rowsPerPageOptions","sx","theme","propsTheme","useRouter","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","RenderedToolbar","Toolbar","DefaultToolbar","LicenseInfo","setLicenseKey","undefined","controlledOnColumnVisibilityModelChange","controlledOnFilterModelChange","controlledOnPageChange","controlledOnPageSizeChange","controlledOnPinnedColumnsChange","controlledOnSortModelChange","useControlledDatagridState","useStatefulTable","setSelectionModel","useState","useEffect","details","selectionStatus","type","numberOfSelectedRows","numberOfSelectedRowsInPage","onServerSideSelectionStatusChange","Array","isArray","muiTheme","useMemo","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","React","createElement","ThemeProvider","value","MuiThemeProvider","StyledDataGrid","classNames","$height","DataGridPro","_extends","keepNonExistentRowsSelected","checkboxSelectionVisibleOnly","Boolean","_objectSpread","customColumnTypes","BaseButton","BaseCheckbox","BasePopper","ColumnFilteredIcon","BaseIcon","displayName","ColumnSelectorIcon","ColumnSortedAscendingIcon","ColumnSortedDescendingIcon","DensityCompactIcon","DensityStandardIcon","DensityComfortableIcon","DetailPanelCollapseIcon","DetailPanelExpandIcon","ExportIcon","OpenFilterButtonIcon","ToolbarWrapper","Pagination","ServerSideControlledPagination","displaySelection","displayRowsPerPage","includes","displayPagination","current","ControlledPagination","toolbar","newSelectionModel","selectableRowsInPage","gridPaginatedVisibleSortedGridRowEntriesSelector","filter","_ref","model","row","map","_ref2","id","gridPaginatedVisibleSortedGridRowIdsSelector","numberOfSelectableRowsInPage","length","selectableRowsInTable","gridFilteredSortedRowEntriesSelector","_ref3","_ref4","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","setTimeout","selectRows","flexDirection","alignItems","margin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAMA,cAAc,GAAG,UAAU,CAAA;AACjC,MAAMC,SAAS,GAAG,kBAAkB,CAAA;AAE7B,MAAMC,gBAA6D,gBAAGC,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;AACtG,EAAA,MAAMC,WAAW,GAAGD,GAAG,IAAIE,MAAM,EAAkB,CAAA;EAEnD,MAAM;AACJC,MAAAA,MAAM,EAAEC,WAAW;MACnBC,UAAU;MACVC,SAAS;MACTC,OAAO;AACPC,MAAAA,WAAW,EAAEC,gBAAgB;MAC7BC,UAAU;MACVC,eAAe;AACfC,MAAAA,WAAW,EAAEC,gBAAgB;AAC7BC,MAAAA,qBAAqB,EAAEC,0BAA0B;AACjDC,MAAAA,aAAa,EAAEC,kBAAkB;AACjCC,MAAAA,SAAS,EAAEC,cAAc;AACzBC,MAAAA,IAAI,EAAEC,SAAS;AACfC,MAAAA,QAAQ,EAAEC,aAAa;AACvBC,MAAAA,MAAM,EAAEC,WAAW;MACnBC,WAAW;MACXC,YAAY;MACZC,eAAe;AACfC,MAAAA,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,eAAe;MACrCC,mBAAmB;MACnBC,4BAA4B;AAC5BC,MAAAA,mBAAmB,EAAEC,wBAAwB;AAC7CC,MAAAA,cAAc,EAAEC,mBAAmB;AACnCC,MAAAA,mBAAmB,EAAEC,wBAAwB;AAC7CC,MAAAA,YAAY,EAAEC,iBAAiB;AAC/BC,MAAAA,gBAAgB,EAAEC,qBAAqB;AACvCC,MAAAA,sBAAsB,EAAEC,2BAA2B;AACnDC,MAAAA,6BAA6B,EAAEC,kCAAkC;AACjEC,MAAAA,qBAAqB,EAAEC,0BAA0B;AACjDC,MAAAA,iBAAiB,EAAEC,sBAAsB;MACzCC,UAAU;AACVC,MAAAA,mBAAmB,GAAG,MAAM;MAC5BC,eAAe;MACfC,IAAI;MACJC,kBAAkB;MAClBC,EAAE;AACFC,MAAAA,KAAK,EAAEC,UAAU;MACjBC,SAAS;AACTC,MAAAA,cAAc,GAAG,QAAQ;AACzBC,MAAAA,QAAAA;AAEF,KAAC,GAAGhE,KAAK;AADJiE,IAAAA,cAAc,GAAAC,wBAAA,CACflE,KAAK,EAAAmE,SAAA,CAAA,CAAA;AAET,EAAA,MAAMP,KAAK,GAAGQ,QAAQ,CAACP,UAAU,CAAC,CAAA;AAElC,EAAA,MAAMQ,OAAO,GAAGC,aAAa,EAAE,CAAA;EAC/B,MAAMlE,MAAM,GAAGC,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAXA,KAAAA,CAAAA,GAAAA,WAAW,GAAIgE,OAAO,CAAA;AACrC,EAAA,MAAME,eAAe,GAAG5D,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAVA,KAAAA,CAAAA,IAAAA,UAAU,CAAE6D,OAAO,GAAG7D,UAAU,CAAC6D,OAAO,GAAGC,OAAc,CAAA;AAEjFC,EAAAA,WAAW,CAACC,aAAa,CAAC7C,OAAQ,CAAC,CAAA;AAEnC,EAAA,MAAML,MAAM,GAAGC,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,KAAA,CAAA,GAAXA,WAAW,GAAKpB,UAAU,GAAGsE,SAAS,GAAG,OAAQ,CAAA;EAEhE,MAAM;AACJ5B,IAAAA,6BAA6B,EAAE6B,uCAAuC;AACtEzC,IAAAA,mBAAmB,EAAE0C,6BAA6B;AAClDpC,IAAAA,YAAY,EAAEqC,sBAAsB;AACpCnC,IAAAA,gBAAgB,EAAEoC,0BAA0B;AAC5C9B,IAAAA,qBAAqB,EAAE+B,+BAA+B;AACtD7B,IAAAA,iBAAiB,EAAE8B,2BAAAA;GACpB,GAAGC,0BAA0B,CAAC;IAC7BvD,YAAY;IACZ8B,kBAAkB;IAClB1C,0BAA0B;IAC1BF,gBAAgB;IAChBmC,kCAAkC;IAClCZ,wBAAwB;IACxBc,0BAA0B;IAC1BE,sBAAsB;IACtB/B,SAAS;IACTE,aAAa;IACbN,kBAAkB;IAClBE,cAAc;IACduB,iBAAiB;AACjBE,IAAAA,qBAAAA;AACF,GAAC,CAAC,CAAA;EAEF,MAAM;IACJ9B,qBAAqB;IACrBF,WAAW;IACXmC,6BAA6B;IAC7BZ,mBAAmB;IACnBM,YAAY;IACZE,gBAAgB;IAChBM,qBAAqB;IACrBE,iBAAiB;IACjB/B,IAAI;IACJE,QAAQ;IACRN,aAAa;IACbE,SAAS;AACTqB,IAAAA,mBAAAA;GACD,GAAG4C,gBAAgB,CAAC;AACnBhF,IAAAA,MAAM,EAAEA,MAAO;IACfwB,YAAY;IACZpB,OAAO;AACPwC,IAAAA,6BAA6B,EAAE6B,uCAAuC;AACtErC,IAAAA,mBAAmB,EAAEC,wBAAwB;AAC7CL,IAAAA,mBAAmB,EAAE0C,6BAA6B;AAClDpC,IAAAA,YAAY,EAAEqC,sBAAsB;AACpCnC,IAAAA,gBAAgB,EAAEoC,0BAA0B;AAC5C9B,IAAAA,qBAAqB,EAAE+B,+BAA+B;AACtD7B,IAAAA,iBAAiB,EAAE8B,2BAA2B;AAC9CpB,IAAAA,SAAS,EAAEA,SAAU;IACrB5B,mBAAmB;AACnBC,IAAAA,4BAAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,MAAM,CAACG,cAAc,EAAE+C,iBAAiB,CAAC,GAAGC,QAAQ,CAAC/C,mBAAmB,aAAnBA,mBAAmB,KAAA,KAAA,CAAA,GAAnBA,mBAAmB,GAAI,EAAE,CAAC,CAAA;AAC/EgD,EAAAA,SAAS,CAAC,MAAM;IACdF,iBAAiB,CAAC9C,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,cAAnBA,mBAAmB,GAAI,EAAE,CAAC,CAAA;AAC9C,GAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC,CAAA;AAEzB,EAAA,MAAMO,sBAAsB,GAAGA,CAACR,cAAkC,EAAEkD,OAA4B,KAAK;AACnG,IAAA,IAAIzC,2BAA2B,EAAE;AAC/BA,MAAAA,2BAA2B,CAACT,cAAc,EAAEkD,OAAO,CAAC,CAAA;AACtD,KAAC,MAAM;MACLH,iBAAiB,CAAC/C,cAAc,CAAC,CAAA;AACnC,KAAA;GACD,CAAA;EAED,MAAMmD,eAAe,GAAGtF,MAAM,CAAkB;AAC9CuF,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,oBAAoB,EAAE,CAAC;AACvBC,IAAAA,0BAA0B,EAAE,CAAC;IAC7BvE,IAAI;AACJE,IAAAA,QAAQ,EAAEA,QAAAA;AACZ,GAAC,CAAC,CAAA;;AAEF;AACA;AACAgE,EAAAA,SAAS,CAAC,MAAM;IACd,IAAIxB,cAAc,IAAI,QAAQ,EAAE;MAC9B8B,iCAAiC,CAC/BC,KAAK,CAACC,OAAO,CAACzD,cAAc,CAAC,GAAGA,cAAc,GAAG,CAACA,cAAc,CAAC,EACjElC,MAAM,EACNqF,eAAe,EACf5D,eAAe,EACfR,IAAI,EACJE,QACF,CAAC,CAAA;AACH,KAAA;GACD,EAAE,CAACe,cAAc,EAAEjB,IAAI,EAAEE,QAAQ,CAAC,CAAC,CAAA;AAEpC,EAAA,IAAI,CAACuE,KAAK,CAACC,OAAO,CAACtC,IAAI,CAAC,EAAE;AACxB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,MAAMuC,QAAQ,GAAGC,OAAO,CACtB,MACEC,WAAW,CAAC;AACVC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAExC,KAAK;AACXyC,MAAAA,OAAO,EAAE;AAAEC,QAAAA,IAAI,EAAEC,iBAAAA;OAAmB;AACpCC,MAAAA,UAAU,EAAE;AACVC,QAAAA,OAAO,EAAE7C,KAAK,KAAK,MAAM,GAAG8C,4BAA4B,GAAGC,wBAAwB;AACnFC,QAAAA,KAAK,EAAEhD,KAAK,KAAK,MAAM,GAAG8C,4BAA4B,GAAGC,wBAAAA;AAC3D,OAAA;AACF,KAAA;AACF,GAAC,CAAC,EACJ,CAAC/C,KAAK,CACR,CAAC,CAAA;AAED,EAAA,oBACEiD,cAAA,CAAAC,aAAA,CAACC,aAAa,EAAA;AAACC,IAAAA,KAAK,EAAE;AAAEpD,MAAAA,KAAAA;AAAM,KAAA;AAAE,GAAA,eAC9BiD,cAAA,CAAAC,aAAA,CAACG,eAAgB,EAAA;AAACrD,IAAAA,KAAK,EAAEoC,QAAAA;AAAS,GAAA,eAEhCa,cAAA,CAAAC,aAAA,CAACI,cAAc,EAAA;AACbjH,IAAAA,GAAG,EAAEC,WAAyC;IAC9CK,SAAS,EAAE4G,UAAU,CAACrH,gBAAgB,CAACS,SAAS,EAAEA,SAAS,CAAE;AAC7D6G,IAAAA,OAAO,EAAE3F,MAAAA;GAEToF,eAAAA,cAAA,CAAAC,aAAA,CAACO,WAAW,EAAAC,QAAA,KACNrD,cAAc,EAAA;AAClB7D,IAAAA,MAAM,EAAEA,MAAO;AACfI,IAAAA,OAAO,EAAEA,OAAQ;AACjBO,IAAAA,qBAAqB,EAAEA,qBAAsB;AAC7CF,IAAAA,WAAW,EAAEA,WAAY;AACzBmC,IAAAA,6BAA6B,EAAEA,6BAA8B;AAC7DZ,IAAAA,mBAAmB,EAAEA,mBAAoB;AACzCM,IAAAA,YAAY,EAAEA,YAAa;AAC3BE,IAAAA,gBAAgB,EAAEA,gBAAiB;AACnCM,IAAAA,qBAAqB,EAAEA,qBAAsB;AAC7CE,IAAAA,iBAAiB,EAAEA,iBAAkB;AACrC/B,IAAAA,IAAI,EAAEA,IAAK;AACXE,IAAAA,QAAQ,EAAEA,QAAS;AACnBN,IAAAA,aAAa,EAAEA,aAAc;AAC7BE,IAAAA,SAAS,EAAEA,SAAU;AACrBuC,IAAAA,kBAAkB,EAAEA,kBAAmB;AACvClB,IAAAA,mBAAmB,EAAEA,mBAAoB;AACzCZ,IAAAA,YAAY,EAAEA,YAAa;AAC3BC,IAAAA,eAAe,EAAEA,eAAgB;AACjCyB,IAAAA,UAAU,EAAEA,UAAW;AACvBS,IAAAA,cAAc,EAAEA,cAAe;IAC/BwD,2BAA2B,EAAExD,cAAc,IAAI,QAAS;AACxDN,IAAAA,IAAI,EAAEA,IAAK;AACXO,IAAAA,QAAQ,EAAEA,QAAU;AACpB1D,IAAAA,UAAU,EAAEA,UAAW;AACvBkH,IAAAA,4BAA4B,EAAEC,OAAO,CAACnE,UAAU,CAAE;IAClD7C,WAAW,EAAAiH,cAAA,CAAAA,cAAA,KAAOC,iBAAiB,CAAA,EAAKjH,gBAAgB,CAAG;IAC3DC,UAAU,EAAA+G,cAAA,CAAAA,cAAA,CAAA;MACRE,UAAU;MACVC,YAAY;AACZ;MACAC,UAAU;MACVC,kBAAkB,EAAG/H,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,oBAAA;AAAoB,OAAA,CAAE,CAAC;MACvFC,kBAAkB,EAAGlI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,oBAAA;AAAoB,OAAA,CAAE,CAAC;MACvFE,yBAAyB,EAAGnI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,2BAAA;AAA2B,OAAA,CAAE,CAAC;MACrGG,0BAA0B,EAAGpI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,4BAAA;AAA4B,OAAA,CAAE,CAAC;MACvGI,kBAAkB,EAAGrI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,oBAAA;AAAoB,OAAA,CAAE,CAAC;MACvFK,mBAAmB,EAAGtI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,qBAAA;AAAqB,OAAA,CAAE,CAAC;MACzFM,sBAAsB,EAAGvI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,wBAAA;AAAwB,OAAA,CAAE,CAAC;MAC/FO,uBAAuB,EAAGxI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,yBAAA;AAAyB,OAAA,CAAE,CAAC;MACjGQ,qBAAqB,EAAGzI,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,uBAAA;AAAuB,OAAA,CAAE,CAAC;MAC7FS,UAAU,EAAG1I,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA,EAAA,EAAKtH,KAAK,EAAA;AAAEiI,QAAAA,WAAW,EAAC,YAAA;AAAY,OAAA,CAAE,CAAC;MACvEU,oBAAoB,EAAG3I,KAAK,iBAAK6G,cAAA,CAAAC,aAAA,CAACkB,QAAQ,EAAAV,QAAA,CAAA;AAACW,QAAAA,WAAW,EAAC,sBAAA;AAAsB,OAAA,EAAKjI,KAAK,CAAG,CAAA;AAAC,KAAA,EACxFW,UAAU,CAAA,EAAA,EAAA,EAAA;AACb6D,MAAAA,OAAO,EAAEoE,cAAc;MACvBC,UAAU,EAAG7I,KAAK,IAAK;AACrB,QAAA,OAAOsD,UAAU,GACfS,cAAc,IAAI,QAAQ,gBACxB8C,cAAA,CAAAC,aAAA,CAACgC,8BAA8B,EAAAxB,QAAA,KACzBtH,KAAK,EAAA;AACT+I,UAAAA,gBAAgB,EAAE,KAAM;UACxBC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAACC,QAAQ,CAAC1F,mBAAoB,CAAE;UACtE2F,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAACD,QAAQ,CAAC1F,mBAAoB,CAAE;UACrEkC,eAAe,EAAEA,eAAe,CAAC0D,OAAQ;AACzC9H,UAAAA,IAAI,EAAEA,IAAK;AACXE,UAAAA,QAAQ,EAAEA,QAAS;AACnBmB,UAAAA,YAAY,EAAEA,YAAa;AAC3BE,UAAAA,gBAAgB,EAAEA,gBAAiB;AACnCc,UAAAA,kBAAkB,EAAEA,kBAAsC;AAC1DF,UAAAA,eAAe,EAAEA,eAAgB;AACjCO,UAAAA,cAAc,EAAEA,cAAe;AAC/BC,UAAAA,QAAQ,EAAEA,QAAAA;SACX,CAAA,CAAC,gBAEF6C,cAAA,CAAAC,aAAA,CAACsC,oBAAoB,EAAA9B,QAAA,CAAA,EAAA,EACftH,KAAK,EAAA;AACT+I,UAAAA,gBAAgB,EAAE,KAAM;UACxBC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAACC,QAAQ,CAAC1F,mBAAoB,CAAE;UACtE2F,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAACD,QAAQ,CAAC1F,mBAAoB,CAAE;UACrEkC,eAAe,EAAEA,eAAe,CAAC0D,OAAQ;AACzC/I,UAAAA,MAAM,EAAEA,MAAO;AACfyB,UAAAA,eAAe,EAAEA,eAAgB;AACjCR,UAAAA,IAAI,EAAEA,IAAK;AACXE,UAAAA,QAAQ,EAAEA,QAAS;AACnBmB,UAAAA,YAAY,EAAEA,YAAa;AAC3BE,UAAAA,gBAAgB,EAAEA,gBAAiB;AACnCc,UAAAA,kBAAkB,EAAEA,kBAAsC;AAC1DF,UAAAA,eAAe,EAAEA,eAAgB;AACjCO,UAAAA,cAAc,EAAEA,cAAAA;SACjB,CAAA,CACF,GACC,IAAI,CAAA;AACV,OAAA;KACA,CAAA;AACFnD,IAAAA,eAAe,EAAA8G,cAAA,CAAAA,cAAA,KACV9G,eAAe,CAAA,EAAA,EAAA,EAAA;AAClByI,MAAAA,OAAO,EAAA3B,cAAA,CAAA;QACL/F,WAAW;QACX4C,eAAe;QACf1D,WAAW;QACXuB,mBAAmB;QACnBkB,UAAU;QACVC,mBAAmB;QACnBkC,eAAe;QACfrF,MAAM;QACNyB,eAAe;QACfR,IAAI;QACJE,QAAQ;QACRmB,YAAY;QACZE,gBAAgB;QAChBc,kBAAkB;QAClBF,eAAe;QACfO,cAAc;AACdC,QAAAA,QAAAA;AAAQ,OAAA,EACLpD,eAAe,KAAfA,IAAAA,IAAAA,eAAe,KAAfA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAe,CAAEyI,OAAO,CAAA;KAE7B,CAAA;AACF/G,IAAAA,cAAc,EAAEA,cAAe;AAC/BQ,IAAAA,sBAAsB,EAAEA,CAACwG,iBAAiB,EAAE9D,OAAO,KAAK;AACtD,MAAA,IAAIlC,UAAU,IAAIS,cAAc,IAAI,QAAQ,EAAE;QAC5C,MAAMwF,oBAAoB,GAAG1H,eAAe,GACxC2H,gDAAgD,CAACpJ,MAAM,CAAC,CACrDqJ,MAAM,CAACC,IAAA,IAAA;UAAA,IAAC;AAAEC,YAAAA,KAAAA;AAAM,WAAC,GAAAD,IAAA,CAAA;AAAA,UAAA,OAAK7H,eAAe,CAAC;AAAE+H,YAAAA,GAAG,EAAED,KAAAA;AAAM,WAAkB,CAAC,CAAA;SAAC,CAAA,CACvEE,GAAG,CAACC,KAAA,IAAA;UAAA,IAAC;AAAEC,YAAAA,EAAAA;AAAG,WAAC,GAAAD,KAAA,CAAA;AAAA,UAAA,OAAKC,EAAE,CAAA;AAAA,SAAA,CAAC,GACtBC,4CAA4C,CAAC5J,MAAM,CAAC,CAAA;AACxD,QAAA,MAAM6J,4BAA4B,GAAGV,oBAAoB,CAACW,MAAM,CAAA;QAEhE,MAAMC,qBAAqB,GAAGtI,eAAe,GACzCuI,oCAAoC,CAAChK,MAAM,CAAC,CACzCqJ,MAAM,CAACY,KAAA,IAAA;UAAA,IAAC;AAAEV,YAAAA,KAAAA;AAAM,WAAC,GAAAU,KAAA,CAAA;AAAA,UAAA,OAAKxI,eAAe,CAAC;AAAE+H,YAAAA,GAAG,EAAED,KAAAA;AAAM,WAAkB,CAAC,CAAA;SAAC,CAAA,CACvEE,GAAG,CAACS,KAAA,IAAA;UAAA,IAAC;AAAEP,YAAAA,EAAAA;AAAG,WAAC,GAAAO,KAAA,CAAA;AAAA,UAAA,OAAKP,EAAE,CAAA;AAAA,SAAA,CAAC,GACtBQ,gCAAgC,CAACnK,MAAM,CAAC,CAAA;AAC5C,QAAA,MAAMoK,6BAA6B,GAAGL,qBAAqB,CAACD,MAAM,CAAA;AAElE,QAAA,MAAMvE,oBAAoB,GAAG2D,iBAAiB,CAACY,MAAM,CAAA;AAErD,QAAA,IACGzE,eAAe,CAAC0D,OAAO,CAACzD,IAAI,KAAK,OAAO,IACvCC,oBAAoB,KAAK6E,6BAA6B,GAAGP,4BAA4B,IACtFxE,eAAe,CAAC0D,OAAO,CAACzD,IAAI,KAAK,OAAO,IACvCC,oBAAoB,KAAK6E,6BAA8B,IACxD/E,eAAe,CAAC0D,OAAO,CAACzD,IAAI,KAAK,MAAM,IAAIC,oBAAoB,KAAKsE,4BAA6B,EAClG;AACAQ,UAAAA,UAAU,CAAC,MAAM;YACfrK,MAAM,CAAC+I,OAAO,CAACuB,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;WAC1C,EAAE,CAAC,CAAC,CAAA;AACP,SAAA;AAEA,QAAA,IACE/E,oBAAoB,KAAKsE,4BAA4B,IACrDA,4BAA4B,GAAGO,6BAA6B,EAC5D;UACA/E,eAAe,CAAC0D,OAAO,GAAG;AACxBzD,YAAAA,IAAI,EAAE,MAAM;AACZC,YAAAA,oBAAAA;WACD,CAAA;SACF,MAAM,IACLA,oBAAoB,KAAK6E,6BAA6B,IACtDP,4BAA4B,GAAGO,6BAA6B,EAC5D;UACA/E,eAAe,CAAC0D,OAAO,GAAG;AACxBzD,YAAAA,IAAI,EAAE,OAAO;AACbC,YAAAA,oBAAAA;WACD,CAAA;AACH,SAAC,MAAM,IAAIA,oBAAoB,GAAG,CAAC,EAAE;UACnCF,eAAe,CAAC0D,OAAO,GAAG;AACxBzD,YAAAA,IAAI,EAAE,OAAO;AACbC,YAAAA,oBAAAA;WACD,CAAA;AACH,SAAC,MAAM;UACLF,eAAe,CAAC0D,OAAO,GAAG;AACxBzD,YAAAA,IAAI,EAAE,MAAM;AACZC,YAAAA,oBAAAA;WACD,CAAA;AACH,SAAA;AACF,OAAA;MACA7C,sBAAsB,KAAA,IAAA,IAAtBA,sBAAsB,KAAtBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAsB,CAAGwG,iBAAiB,EAAE9D,OAAO,CAAC,CAAA;KACpD;AACF7B,IAAAA,EAAE,EAAA+D,cAAA,CAAAA,cAAA,KACG/D,EAAE,CAAA,EAAA,EAAA,EAAA;AACL,MAAA,4BAA4B,EAAE;AAC5BgH,QAAAA,aAAa,EAAE,QAAQ;AACvBC,QAAAA,UAAU,EAAE,QAAA;OACb;AACD,MAAA,+BAA+B,EAAE;AAC/BC,QAAAA,MAAM,EAAE,MAAA;AACV,OAAA;AAAC,KAAA,CAAA;GAEJ,CAAA,CACa,CACA,CACL,CAAC,CAAA;AAEpB,CAAC,EAAC;AACF/K,gBAAgB,CAACS,SAAS,GAAGV,SAAS,CAAA;AACtCC,gBAAgB,CAACmI,WAAW,GAAGrI,cAAc;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DataGridProps } from '../DataGrid/types.js';
|
|
2
|
+
|
|
3
|
+
interface StatefulDataGridProps extends DataGridProps {
|
|
4
|
+
/** Hook returning pathname, search params and a method to update query params. */
|
|
5
|
+
useRouter: () => {
|
|
6
|
+
pathname: string;
|
|
7
|
+
search: string;
|
|
8
|
+
historyReplace: (newSearch: string) => void;
|
|
9
|
+
};
|
|
10
|
+
/** Local Storage version, to upgrade when we want to force a clean out. */
|
|
11
|
+
localStorageVersion?: number;
|
|
12
|
+
/** Previous Local Storage versions to clean out when a new one is released. */
|
|
13
|
+
previousLocalStorageVersions?: number[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { StatefulDataGridProps };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default, { forwardRef, useRef } from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { Shield, Icon } from '@redsift/design-system';
|
|
5
|
+
import { StyledTextCell, StyledTextCellText } from './styles.js';
|
|
6
|
+
|
|
7
|
+
const _excluded = ["badge", "children", "className", "leftIcon", "leftIconColor", "rightIcon", "rightIconColor", "shieldVariant"];
|
|
8
|
+
const COMPONENT_NAME = 'DataGridCell';
|
|
9
|
+
const CLASSNAME = 'redsift-datagrid-cell';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The Cell component.
|
|
13
|
+
*/
|
|
14
|
+
const TextCell = /*#__PURE__*/forwardRef((props, ref) => {
|
|
15
|
+
const textCellRef = ref || useRef();
|
|
16
|
+
const {
|
|
17
|
+
badge,
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
leftIcon,
|
|
21
|
+
leftIconColor,
|
|
22
|
+
rightIcon,
|
|
23
|
+
rightIconColor,
|
|
24
|
+
shieldVariant
|
|
25
|
+
} = props,
|
|
26
|
+
forwardedProps = _objectWithoutProperties(props, _excluded);
|
|
27
|
+
return /*#__PURE__*/React__default.createElement(StyledTextCell, _extends({}, forwardedProps, {
|
|
28
|
+
className: classNames(TextCell.className, className),
|
|
29
|
+
ref: textCellRef
|
|
30
|
+
}), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, shieldVariant ? /*#__PURE__*/React__default.createElement(Shield, {
|
|
31
|
+
variant: shieldVariant
|
|
32
|
+
}) : null, leftIcon ? /*#__PURE__*/React__default.createElement(Icon, {
|
|
33
|
+
icon: leftIcon,
|
|
34
|
+
"aria-hidden": "true",
|
|
35
|
+
size: "small",
|
|
36
|
+
color: leftIconColor
|
|
37
|
+
}) : null, /*#__PURE__*/React__default.createElement(StyledTextCellText, null, children), badge ? badge : null, rightIcon ? /*#__PURE__*/React__default.createElement(Icon, {
|
|
38
|
+
icon: rightIcon,
|
|
39
|
+
"aria-hidden": "true",
|
|
40
|
+
size: "small",
|
|
41
|
+
color: rightIconColor
|
|
42
|
+
}) : null));
|
|
43
|
+
});
|
|
44
|
+
TextCell.className = CLASSNAME;
|
|
45
|
+
TextCell.displayName = COMPONENT_NAME;
|
|
46
|
+
|
|
47
|
+
export { TextCell };
|
|
48
|
+
//# sourceMappingURL=TextCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextCell.js","sources":["../../../src/components/TextCell/TextCell.tsx"],"sourcesContent":["import React, { forwardRef, RefObject, useRef } from 'react';\nimport classNames from 'classnames';\nimport { Comp } from '@redsift/design-system';\nimport { Icon, Shield } from '@redsift/design-system';\n\nimport { StyledTextCell, StyledTextCellText } from './styles';\nimport { TextCellProps } from './types';\n\nconst COMPONENT_NAME = 'DataGridCell';\nconst CLASSNAME = 'redsift-datagrid-cell';\n\n/**\n * The Cell component.\n */\nexport const TextCell: Comp<TextCellProps, HTMLDivElement> = forwardRef(\n (props, ref) => {\n const textCellRef = ref || useRef<HTMLDivElement>();\n const {\n badge,\n children,\n className,\n leftIcon,\n leftIconColor,\n rightIcon,\n rightIconColor,\n shieldVariant,\n ...forwardedProps\n } = props;\n\n return (\n <StyledTextCell\n {...forwardedProps}\n className={classNames(TextCell.className, className)}\n ref={textCellRef as RefObject<HTMLDivElement>}\n >\n <>\n {shieldVariant ? <Shield variant={shieldVariant} /> : null}\n {leftIcon ? (\n <Icon\n icon={leftIcon}\n aria-hidden=\"true\"\n size=\"small\"\n color={leftIconColor}\n />\n ) : null}\n <StyledTextCellText>{children}</StyledTextCellText>\n {badge ? badge : null}\n {rightIcon ? (\n <Icon\n icon={rightIcon}\n aria-hidden=\"true\"\n size=\"small\"\n color={rightIconColor}\n />\n ) : null}\n </>\n </StyledTextCell>\n );\n }\n);\n\nTextCell.className = CLASSNAME;\nTextCell.displayName = COMPONENT_NAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","TextCell","forwardRef","props","ref","textCellRef","useRef","badge","children","className","leftIcon","leftIconColor","rightIcon","rightIconColor","shieldVariant","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","StyledTextCell","_extends","classNames","Fragment","Shield","variant","Icon","icon","size","color","StyledTextCellText","displayName"],"mappings":";;;;;;;AAQA,MAAMA,cAAc,GAAG,cAAc,CAAA;AACrC,MAAMC,SAAS,GAAG,uBAAuB,CAAA;;AAEzC;AACA;AACA;AACO,MAAMC,QAA6C,gBAAGC,UAAU,CACrE,CAACC,KAAK,EAAEC,GAAG,KAAK;AACd,EAAA,MAAMC,WAAW,GAAGD,GAAG,IAAIE,MAAM,EAAkB,CAAA;EACnD,MAAM;MACJC,KAAK;MACLC,QAAQ;MACRC,SAAS;MACTC,QAAQ;MACRC,aAAa;MACbC,SAAS;MACTC,cAAc;AACdC,MAAAA,aAAAA;AAEF,KAAC,GAAGX,KAAK;AADJY,IAAAA,cAAc,GAAAC,wBAAA,CACfb,KAAK,EAAAc,SAAA,CAAA,CAAA;EAET,oBACEC,cAAA,CAAAC,aAAA,CAACC,cAAc,EAAAC,QAAA,KACTN,cAAc,EAAA;IAClBN,SAAS,EAAEa,UAAU,CAACrB,QAAQ,CAACQ,SAAS,EAAEA,SAAS,CAAE;AACrDL,IAAAA,GAAG,EAAEC,WAAAA;AAAyC,GAAA,CAAA,eAE9Ca,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAK,QAAA,EACGT,IAAAA,EAAAA,aAAa,gBAAGI,cAAA,CAAAC,aAAA,CAACK,MAAM,EAAA;AAACC,IAAAA,OAAO,EAAEX,aAAAA;GAAgB,CAAC,GAAG,IAAI,EACzDJ,QAAQ,gBACPQ,cAAA,CAAAC,aAAA,CAACO,IAAI,EAAA;AACHC,IAAAA,IAAI,EAAEjB,QAAS;AACf,IAAA,aAAA,EAAY,MAAM;AAClBkB,IAAAA,IAAI,EAAC,OAAO;AACZC,IAAAA,KAAK,EAAElB,aAAAA;GACR,CAAC,GACA,IAAI,eACRO,cAAA,CAAAC,aAAA,CAACW,kBAAkB,EAAA,IAAA,EAAEtB,QAA6B,CAAC,EAClDD,KAAK,GAAGA,KAAK,GAAG,IAAI,EACpBK,SAAS,gBACRM,cAAA,CAAAC,aAAA,CAACO,IAAI,EAAA;AACHC,IAAAA,IAAI,EAAEf,SAAU;AAChB,IAAA,aAAA,EAAY,MAAM;AAClBgB,IAAAA,IAAI,EAAC,OAAO;AACZC,IAAAA,KAAK,EAAEhB,cAAAA;AAAe,GACvB,CAAC,GACA,IACJ,CACY,CAAC,CAAA;AAErB,CACF,EAAC;AAEDZ,QAAQ,CAACQ,SAAS,GAAGT,SAAS,CAAA;AAC9BC,QAAQ,CAAC8B,WAAW,GAAGhC,cAAc;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
|
|
3
|
+
const StyledTextCell = styled.div`
|
|
4
|
+
align-items: center;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
display: flex;
|
|
7
|
+
gap: 8px;
|
|
8
|
+
justify-content: flex-start;
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
text-overflow: ellipsis;
|
|
11
|
+
white-space: nowrap;
|
|
12
|
+
`;
|
|
13
|
+
const StyledTextCellText = styled.div`
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
line-height: normal;
|
|
16
|
+
overflow: hidden;
|
|
17
|
+
text-overflow: ellipsis;
|
|
18
|
+
white-space: nowrap;
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
export { StyledTextCell, StyledTextCellText };
|
|
22
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../src/components/TextCell/styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledTextCell = styled.div`\n align-items: center;\n box-sizing: border-box;\n display: flex;\n gap: 8px;\n justify-content: flex-start;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const StyledTextCellText = styled.div`\n box-sizing: border-box;\n line-height: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n"],"names":["StyledTextCell","styled","div","StyledTextCellText"],"mappings":";;AAEaA,MAAAA,cAAc,GAAGC,MAAM,CAACC,GAAI,CAAA;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AAEYC,MAAAA,kBAAkB,GAAGF,MAAM,CAACC,GAAI,CAAA;AAC7C;AACA;AACA;AACA;AACA;AACA;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
import { IconProps, NotificationsColorPalette, ProductColorPalette, ShieldVariant } from '@redsift/design-system';
|
|
3
|
+
|
|
4
|
+
interface TextCellProps extends ComponentProps<'div'> {
|
|
5
|
+
/** Including Badge Component. */
|
|
6
|
+
badge?: ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Can be a string or an array of strings containing `d` property of the `path` SVG element.<br />
|
|
9
|
+
* Can also be a ReactElement.
|
|
10
|
+
*/
|
|
11
|
+
leftIcon?: IconProps['icon'];
|
|
12
|
+
/** Left Icon Color variant. */
|
|
13
|
+
leftIconColor?: NotificationsColorPalette | ProductColorPalette | (string & {});
|
|
14
|
+
/**
|
|
15
|
+
* Can be a string or an array of strings containing `d` property of the `path` SVG element.<br />
|
|
16
|
+
* Can also be a ReactElement.
|
|
17
|
+
*/
|
|
18
|
+
rightIcon?: IconProps['icon'];
|
|
19
|
+
/** Right Icon Color variant. */
|
|
20
|
+
rightIconColor?: NotificationsColorPalette | ProductColorPalette | (string & {});
|
|
21
|
+
/** Shield variant. */
|
|
22
|
+
shieldVariant?: ShieldVariant;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { TextCellProps };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ToolbarProps } from './types.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Temporary workaround for a type mismatch between react 17 and 18
|
|
6
|
+
* https://github.com/mui/material-ui/issues/35287#issuecomment-1337250566
|
|
7
|
+
*/
|
|
8
|
+
declare global {
|
|
9
|
+
namespace React {
|
|
10
|
+
interface DOMAttributes<T> {
|
|
11
|
+
onResize?: React.ReactEventHandler<T> | undefined;
|
|
12
|
+
onResizeCapture?: React.ReactEventHandler<T> | undefined;
|
|
13
|
+
nonce?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** ------ */
|
|
18
|
+
declare const Toolbar: React.FC<ToolbarProps>;
|
|
19
|
+
|
|
20
|
+
export { Toolbar };
|