@redsift/table 11.5.0 → 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 +40 -629
- package/index.js +36 -28267
- package/index.js.map +1 -1
- package/package.json +6 -6
- 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,72 @@
|
|
|
1
|
+
import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { GridToolbarContainer, GridToolbarFilterButton, GridToolbarColumnsButton, GridToolbarDensitySelector, GridToolbarExport, gridVisibleSortedRowIdsSelector, GridToolbarQuickFilter } from '@mui/x-data-grid-pro';
|
|
4
|
+
import { GridToolbarWrapper } from './styles.js';
|
|
5
|
+
import { Flexbox } from '@redsift/design-system';
|
|
6
|
+
import { GridToolbarFilterSemanticField } from '../GridToolbarFilterSemanticField/GridToolbarFilterSemanticField.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Temporary workaround for a type mismatch between react 17 and 18
|
|
10
|
+
* https://github.com/mui/material-ui/issues/35287#issuecomment-1337250566
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** ------ */
|
|
14
|
+
|
|
15
|
+
const Toolbar = props => {
|
|
16
|
+
const {
|
|
17
|
+
hasExportButton = true,
|
|
18
|
+
exportButtonProps,
|
|
19
|
+
exportButtonRef,
|
|
20
|
+
hasFilterButton = true,
|
|
21
|
+
filterButtonProps,
|
|
22
|
+
filterButtonRef,
|
|
23
|
+
hasColumnsButton = true,
|
|
24
|
+
columnsButtonProps,
|
|
25
|
+
columnsButtonRef,
|
|
26
|
+
hasDensityButton = true,
|
|
27
|
+
densityButtonProps,
|
|
28
|
+
densityButtonRef,
|
|
29
|
+
onFilterModelChange,
|
|
30
|
+
semanticFilterProps = undefined,
|
|
31
|
+
showQuickFilter
|
|
32
|
+
} = props;
|
|
33
|
+
if (semanticFilterProps && onFilterModelChange) {
|
|
34
|
+
semanticFilterProps.onFilterModelChange = onFilterModelChange;
|
|
35
|
+
}
|
|
36
|
+
return /*#__PURE__*/React__default.createElement(GridToolbarWrapper, null, /*#__PURE__*/React__default.createElement(GridToolbarContainer, null, /*#__PURE__*/React__default.createElement(Flexbox, {
|
|
37
|
+
gap: "0"
|
|
38
|
+
}, hasFilterButton ? /*#__PURE__*/React__default.createElement(GridToolbarFilterButton, _extends({}, filterButtonProps, {
|
|
39
|
+
ref: filterButtonRef,
|
|
40
|
+
className: filterButtonProps !== null && filterButtonProps !== void 0 && filterButtonProps.className ? `${filterButtonProps === null || filterButtonProps === void 0 ? void 0 : filterButtonProps.className} redsift-condensed` : 'redsift-condensed'
|
|
41
|
+
})) : null, hasColumnsButton ? /*#__PURE__*/React__default.createElement(GridToolbarColumnsButton, _extends({}, columnsButtonProps, {
|
|
42
|
+
ref: columnsButtonRef,
|
|
43
|
+
className: filterButtonProps !== null && filterButtonProps !== void 0 && filterButtonProps.className ? `${filterButtonProps === null || filterButtonProps === void 0 ? void 0 : filterButtonProps.className} redsift-condensed` : 'redsift-condensed'
|
|
44
|
+
})) : null, hasDensityButton ? /*#__PURE__*/React__default.createElement(GridToolbarDensitySelector, _extends({}, densityButtonProps, {
|
|
45
|
+
ref: densityButtonRef,
|
|
46
|
+
className: filterButtonProps !== null && filterButtonProps !== void 0 && filterButtonProps.className ? `${filterButtonProps === null || filterButtonProps === void 0 ? void 0 : filterButtonProps.className} redsift-condensed` : 'redsift-condensed'
|
|
47
|
+
})) : null, hasExportButton ? /*#__PURE__*/React__default.createElement(GridToolbarExport, _extends({
|
|
48
|
+
csvOptions: {
|
|
49
|
+
allColumns: true,
|
|
50
|
+
fileName: 'csv',
|
|
51
|
+
getRowsToExport: _ref => {
|
|
52
|
+
let {
|
|
53
|
+
apiRef
|
|
54
|
+
} = _ref;
|
|
55
|
+
return gridVisibleSortedRowIdsSelector(apiRef);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
printOptions: {
|
|
59
|
+
disableToolbarButton: true
|
|
60
|
+
}
|
|
61
|
+
}, exportButtonProps, {
|
|
62
|
+
ref: exportButtonRef,
|
|
63
|
+
className: filterButtonProps !== null && filterButtonProps !== void 0 && filterButtonProps.className ? `${filterButtonProps === null || filterButtonProps === void 0 ? void 0 : filterButtonProps.className} redsift-condensed` : 'redsift-condensed'
|
|
64
|
+
})) : null, /*#__PURE__*/React__default.createElement(Flexbox, {
|
|
65
|
+
marginLeft: "8px"
|
|
66
|
+
}, showQuickFilter ? /*#__PURE__*/React__default.createElement(GridToolbarQuickFilter, null) : null)), /*#__PURE__*/React__default.createElement(Flexbox, {
|
|
67
|
+
flexGrow: 3
|
|
68
|
+
}, semanticFilterProps ? /*#__PURE__*/React__default.createElement(GridToolbarFilterSemanticField, semanticFilterProps) : null)));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export { Toolbar };
|
|
72
|
+
//# sourceMappingURL=Toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbar.js","sources":["../../../src/components/Toolbar/Toolbar.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n GridToolbarContainer,\n GridToolbarColumnsButton,\n GridToolbarDensitySelector,\n GridToolbarFilterButton,\n GridToolbarExport,\n gridVisibleSortedRowIdsSelector,\n GridCsvGetRowsToExportParams,\n GridToolbarQuickFilter,\n} from '@mui/x-data-grid-pro';\n\nimport { GridToolbarWrapper } from './styles';\nimport { ToolbarProps } from './types';\nimport { Flexbox } from '@redsift/design-system';\nimport { GridToolbarFilterSemanticField } from '../GridToolbarFilterSemanticField';\n\n/**\n * Temporary workaround for a type mismatch between react 17 and 18\n * https://github.com/mui/material-ui/issues/35287#issuecomment-1337250566\n */\ndeclare global {\n namespace React {\n interface DOMAttributes<T> {\n onResize?: React.ReactEventHandler<T> | undefined;\n onResizeCapture?: React.ReactEventHandler<T> | undefined;\n nonce?: string | undefined;\n }\n }\n}\n/** ------ */\n\nexport const Toolbar: React.FC<ToolbarProps> = (props) => {\n const {\n hasExportButton = true,\n exportButtonProps,\n exportButtonRef,\n hasFilterButton = true,\n filterButtonProps,\n filterButtonRef,\n hasColumnsButton = true,\n columnsButtonProps,\n columnsButtonRef,\n hasDensityButton = true,\n densityButtonProps,\n densityButtonRef,\n onFilterModelChange,\n semanticFilterProps = undefined,\n showQuickFilter,\n } = props;\n\n if (semanticFilterProps && onFilterModelChange) {\n semanticFilterProps.onFilterModelChange = onFilterModelChange;\n }\n\n return (\n <GridToolbarWrapper>\n <GridToolbarContainer>\n <Flexbox gap=\"0\">\n {hasFilterButton ? (\n <GridToolbarFilterButton\n {...filterButtonProps}\n ref={filterButtonRef}\n className={\n filterButtonProps?.className ? `${filterButtonProps?.className} redsift-condensed` : 'redsift-condensed'\n }\n />\n ) : null}\n {hasColumnsButton ? (\n <GridToolbarColumnsButton\n {...columnsButtonProps}\n ref={columnsButtonRef}\n className={\n filterButtonProps?.className ? `${filterButtonProps?.className} redsift-condensed` : 'redsift-condensed'\n }\n />\n ) : null}\n {hasDensityButton ? (\n <GridToolbarDensitySelector\n {...densityButtonProps}\n ref={densityButtonRef}\n className={\n filterButtonProps?.className ? `${filterButtonProps?.className} redsift-condensed` : 'redsift-condensed'\n }\n />\n ) : null}\n {hasExportButton ? (\n <GridToolbarExport\n csvOptions={{\n allColumns: true,\n fileName: 'csv',\n getRowsToExport: ({ apiRef }: GridCsvGetRowsToExportParams) => gridVisibleSortedRowIdsSelector(apiRef),\n }}\n printOptions={{\n disableToolbarButton: true,\n }}\n {...exportButtonProps}\n ref={exportButtonRef}\n className={\n filterButtonProps?.className ? `${filterButtonProps?.className} redsift-condensed` : 'redsift-condensed'\n }\n />\n ) : null}\n <Flexbox marginLeft=\"8px\">{showQuickFilter ? <GridToolbarQuickFilter /> : null}</Flexbox>\n </Flexbox>\n <Flexbox flexGrow={3}>\n {semanticFilterProps ? <GridToolbarFilterSemanticField {...semanticFilterProps} /> : null}\n </Flexbox>\n </GridToolbarContainer>\n </GridToolbarWrapper>\n );\n};\n"],"names":["Toolbar","props","hasExportButton","exportButtonProps","exportButtonRef","hasFilterButton","filterButtonProps","filterButtonRef","hasColumnsButton","columnsButtonProps","columnsButtonRef","hasDensityButton","densityButtonProps","densityButtonRef","onFilterModelChange","semanticFilterProps","undefined","showQuickFilter","React","createElement","GridToolbarWrapper","GridToolbarContainer","Flexbox","gap","GridToolbarFilterButton","_extends","ref","className","GridToolbarColumnsButton","GridToolbarDensitySelector","GridToolbarExport","csvOptions","allColumns","fileName","getRowsToExport","_ref","apiRef","gridVisibleSortedRowIdsSelector","printOptions","disableToolbarButton","marginLeft","GridToolbarQuickFilter","flexGrow","GridToolbarFilterSemanticField"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Component style.
|
|
5
|
+
*/
|
|
6
|
+
const GridToolbarWrapper = styled.div`
|
|
7
|
+
.MuiButtonBase-root-JobBs.MuiButton-root {
|
|
8
|
+
svg {
|
|
9
|
+
path {
|
|
10
|
+
fill: var(--redsift-color-primary-n);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
export { GridToolbarWrapper };
|
|
17
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../src/components/Toolbar/styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\n/**\n * Component style.\n */\nexport const GridToolbarWrapper = styled.div`\n .MuiButtonBase-root-JobBs.MuiButton-root {\n svg {\n path {\n fill: var(--redsift-color-primary-n);\n }\n }\n }\n`;\n"],"names":["GridToolbarWrapper","styled","div"],"mappings":";;AAEA;AACA;AACA;AACaA,MAAAA,kBAAkB,GAAGC,MAAM,CAACC,GAAI,CAAA;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { GridToolbarExportProps, GridToolbarFilterButtonProps, GridFilterModel, GridToolbarColumnsButton, GridToolbarDensitySelector } from '@mui/x-data-grid-pro';
|
|
3
|
+
import { GridToolbarFilterSemanticFieldProps } from '../GridToolbarFilterSemanticField/types.js';
|
|
4
|
+
|
|
5
|
+
type GridToolbarColumnsProps = Omit<typeof GridToolbarColumnsButton, 'ref'>;
|
|
6
|
+
type GridToolbarDensityProps = Omit<typeof GridToolbarDensitySelector, 'ref'>;
|
|
7
|
+
type GridToolbarFilterSemanticProps = Omit<GridToolbarFilterSemanticFieldProps, 'ref'>;
|
|
8
|
+
interface ToolbarProps {
|
|
9
|
+
/** Props to forward to the column button. */
|
|
10
|
+
columnsButtonProps?: GridToolbarColumnsProps;
|
|
11
|
+
/** Column button ref. */
|
|
12
|
+
columnsButtonRef?: RefObject<HTMLButtonElement>;
|
|
13
|
+
/** Props to forward to the density button. */
|
|
14
|
+
densityButtonProps?: GridToolbarDensityProps;
|
|
15
|
+
/** Density button ref. */
|
|
16
|
+
densityButtonRef?: RefObject<HTMLButtonElement>;
|
|
17
|
+
/** Props to forward to the export button. */
|
|
18
|
+
exportButtonProps?: GridToolbarExportProps;
|
|
19
|
+
/** Export button ref. */
|
|
20
|
+
exportButtonRef?: RefObject<HTMLButtonElement>;
|
|
21
|
+
/** Props to forward to the filter button. */
|
|
22
|
+
filterButtonProps?: GridToolbarFilterButtonProps;
|
|
23
|
+
/** Filter button ref. */
|
|
24
|
+
filterButtonRef?: RefObject<HTMLButtonElement>;
|
|
25
|
+
/** Whether the columns button is displayed or not. */
|
|
26
|
+
hasColumnsButton?: boolean;
|
|
27
|
+
/** Whether the density button is displayed or not. */
|
|
28
|
+
hasDensityButton?: boolean;
|
|
29
|
+
/** Whether the export button is displayed or not. */
|
|
30
|
+
hasExportButton?: boolean;
|
|
31
|
+
/** Whether the filter button is displayed or not. */
|
|
32
|
+
hasFilterButton?: boolean;
|
|
33
|
+
/** Configuration object for NLP filter. undefined if disabled. */
|
|
34
|
+
onFilterModelChange?: (filterModel: GridFilterModel) => void;
|
|
35
|
+
semanticFilterProps?: GridToolbarFilterSemanticProps;
|
|
36
|
+
/** Whether you want to show the quick filter or not. */
|
|
37
|
+
showQuickFilter?: boolean;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { ToolbarProps };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DataGridProps, SelectionStatus } from '../DataGrid/types.js';
|
|
3
|
+
|
|
4
|
+
type ToolbarWrapperProps = {
|
|
5
|
+
hideToolbar: DataGridProps['hideToolbar'];
|
|
6
|
+
RenderedToolbar: React.JSXElementConstructor<any>;
|
|
7
|
+
filterModel: DataGridProps['filterModel'];
|
|
8
|
+
onFilterModelChange: DataGridProps['onFilterModelChange'];
|
|
9
|
+
pagination: DataGridProps['pagination'];
|
|
10
|
+
paginationPlacement: DataGridProps['paginationPlacement'];
|
|
11
|
+
selectionStatus: React.MutableRefObject<SelectionStatus>;
|
|
12
|
+
apiRef: DataGridProps['apiRef'];
|
|
13
|
+
isRowSelectable: DataGridProps['isRowSelectable'];
|
|
14
|
+
page: DataGridProps['page'];
|
|
15
|
+
onPageChange: DataGridProps['onPageChange'];
|
|
16
|
+
pageSize: DataGridProps['pageSize'];
|
|
17
|
+
onPageSizeChange: DataGridProps['onPageSizeChange'];
|
|
18
|
+
rowsPerPageOptions: DataGridProps['rowsPerPageOptions'];
|
|
19
|
+
paginationProps: DataGridProps['paginationProps'];
|
|
20
|
+
paginationMode?: DataGridProps['paginationMode'];
|
|
21
|
+
rowCount?: DataGridProps['rowCount'];
|
|
22
|
+
};
|
|
23
|
+
declare const ToolbarWrapper: React.FC<ToolbarWrapperProps>;
|
|
24
|
+
|
|
25
|
+
export { ToolbarWrapper, ToolbarWrapperProps };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { ServerSideControlledPagination } from '../Pagination/ServerSideControlledPagination.js';
|
|
4
|
+
import { ControlledPagination } from '../Pagination/ControlledPagination.js';
|
|
5
|
+
|
|
6
|
+
const _excluded = ["hideToolbar", "RenderedToolbar", "filterModel", "onFilterModelChange", "pagination", "paginationPlacement", "selectionStatus", "apiRef", "isRowSelectable", "page", "onPageChange", "pageSize", "onPageSizeChange", "rowsPerPageOptions", "paginationProps", "paginationMode", "rowCount"];
|
|
7
|
+
const ToolbarWrapper = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
hideToolbar,
|
|
10
|
+
RenderedToolbar,
|
|
11
|
+
filterModel,
|
|
12
|
+
onFilterModelChange,
|
|
13
|
+
pagination,
|
|
14
|
+
paginationPlacement,
|
|
15
|
+
selectionStatus,
|
|
16
|
+
apiRef,
|
|
17
|
+
isRowSelectable,
|
|
18
|
+
page,
|
|
19
|
+
onPageChange,
|
|
20
|
+
pageSize,
|
|
21
|
+
onPageSizeChange,
|
|
22
|
+
rowsPerPageOptions,
|
|
23
|
+
paginationProps,
|
|
24
|
+
paginationMode = 'client',
|
|
25
|
+
rowCount
|
|
26
|
+
} = _ref,
|
|
27
|
+
forwardedProps = _objectWithoutProperties(_ref, _excluded);
|
|
28
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, !hideToolbar ? /*#__PURE__*/React__default.createElement(RenderedToolbar, _extends({}, forwardedProps, {
|
|
29
|
+
filterModel: filterModel,
|
|
30
|
+
onFilterModelChange: onFilterModelChange
|
|
31
|
+
})) : null, pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, {
|
|
32
|
+
displaySelection: true,
|
|
33
|
+
displayRowsPerPage: false,
|
|
34
|
+
displayPagination: ['top', 'both'].includes(paginationPlacement),
|
|
35
|
+
selectionStatus: selectionStatus.current,
|
|
36
|
+
page: page,
|
|
37
|
+
onPageChange: onPageChange,
|
|
38
|
+
pageSize: pageSize,
|
|
39
|
+
onPageSizeChange: onPageSizeChange,
|
|
40
|
+
rowsPerPageOptions: rowsPerPageOptions,
|
|
41
|
+
paginationProps: paginationProps,
|
|
42
|
+
rowCount: rowCount
|
|
43
|
+
}) : /*#__PURE__*/React__default.createElement(ControlledPagination, {
|
|
44
|
+
displaySelection: true,
|
|
45
|
+
displayRowsPerPage: false,
|
|
46
|
+
displayPagination: ['top', 'both'].includes(paginationPlacement),
|
|
47
|
+
selectionStatus: selectionStatus.current,
|
|
48
|
+
apiRef: apiRef,
|
|
49
|
+
isRowSelectable: isRowSelectable,
|
|
50
|
+
page: page,
|
|
51
|
+
onPageChange: onPageChange,
|
|
52
|
+
pageSize: pageSize,
|
|
53
|
+
onPageSizeChange: onPageSizeChange,
|
|
54
|
+
rowsPerPageOptions: rowsPerPageOptions,
|
|
55
|
+
paginationProps: paginationProps
|
|
56
|
+
}) : null);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { ToolbarWrapper };
|
|
60
|
+
//# sourceMappingURL=ToolbarWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolbarWrapper.js","sources":["../../../src/components/ToolbarWrapper/ToolbarWrapper.tsx"],"sourcesContent":["import React from 'react';\n\nimport { DataGridProps, SelectionStatus } from '../DataGrid/types';\nimport { ServerSideControlledPagination } from '../Pagination/ServerSideControlledPagination';\nimport { ControlledPagination } from '../Pagination/ControlledPagination';\n\nexport type ToolbarWrapperProps = {\n hideToolbar: DataGridProps['hideToolbar'];\n RenderedToolbar: React.JSXElementConstructor<any>;\n filterModel: DataGridProps['filterModel'];\n onFilterModelChange: DataGridProps['onFilterModelChange'];\n pagination: DataGridProps['pagination'];\n paginationPlacement: DataGridProps['paginationPlacement'];\n selectionStatus: React.MutableRefObject<SelectionStatus>;\n apiRef: DataGridProps['apiRef'];\n isRowSelectable: DataGridProps['isRowSelectable'];\n page: DataGridProps['page'];\n onPageChange: DataGridProps['onPageChange'];\n pageSize: DataGridProps['pageSize'];\n onPageSizeChange: DataGridProps['onPageSizeChange'];\n rowsPerPageOptions: DataGridProps['rowsPerPageOptions'];\n paginationProps: DataGridProps['paginationProps'];\n paginationMode?: DataGridProps['paginationMode'];\n rowCount?: DataGridProps['rowCount'];\n};\n\nexport const ToolbarWrapper: React.FC<ToolbarWrapperProps> = ({\n hideToolbar,\n RenderedToolbar,\n filterModel,\n onFilterModelChange,\n pagination,\n paginationPlacement,\n selectionStatus,\n apiRef,\n isRowSelectable,\n page,\n onPageChange,\n pageSize,\n onPageSizeChange,\n rowsPerPageOptions,\n paginationProps,\n paginationMode = 'client',\n rowCount,\n ...forwardedProps\n}) => {\n return (\n <>\n {!hideToolbar ? (\n <RenderedToolbar {...forwardedProps} filterModel={filterModel} onFilterModelChange={onFilterModelChange} />\n ) : null}\n {pagination ? (\n paginationMode == 'server' ? (\n <ServerSideControlledPagination\n displaySelection={true}\n displayRowsPerPage={false}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\n page={page!}\n onPageChange={onPageChange as any}\n pageSize={pageSize!}\n onPageSizeChange={onPageSizeChange as any}\n rowsPerPageOptions={rowsPerPageOptions}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n displaySelection={true}\n displayRowsPerPage={false}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\n apiRef={apiRef!}\n isRowSelectable={isRowSelectable}\n page={page!}\n onPageChange={onPageChange as any}\n pageSize={pageSize!}\n onPageSizeChange={onPageSizeChange as any}\n rowsPerPageOptions={rowsPerPageOptions}\n paginationProps={paginationProps}\n />\n )\n ) : null}\n </>\n );\n};\n"],"names":["ToolbarWrapper","_ref","hideToolbar","RenderedToolbar","filterModel","onFilterModelChange","pagination","paginationPlacement","selectionStatus","apiRef","isRowSelectable","page","onPageChange","pageSize","onPageSizeChange","rowsPerPageOptions","paginationProps","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","Fragment","_extends","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","includes","current","ControlledPagination"],"mappings":";;;;;;AA0BaA,MAAAA,cAA6C,GAAGC,IAAA,IAmBvD;EAAA,IAnBwD;MAC5DC,WAAW;MACXC,eAAe;MACfC,WAAW;MACXC,mBAAmB;MACnBC,UAAU;MACVC,mBAAmB;MACnBC,eAAe;MACfC,MAAM;MACNC,eAAe;MACfC,IAAI;MACJC,YAAY;MACZC,QAAQ;MACRC,gBAAgB;MAChBC,kBAAkB;MAClBC,eAAe;AACfC,MAAAA,cAAc,GAAG,QAAQ;AACzBC,MAAAA,QAAAA;AAEF,KAAC,GAAAjB,IAAA;AADIkB,IAAAA,cAAc,GAAAC,wBAAA,CAAAnB,IAAA,EAAAoB,SAAA,CAAA,CAAA;AAEjB,EAAA,oBACEC,cAAA,CAAAC,aAAA,CAAAD,cAAA,CAAAE,QAAA,EACG,IAAA,EAAA,CAACtB,WAAW,gBACXoB,cAAA,CAAAC,aAAA,CAACpB,eAAe,EAAAsB,QAAA,KAAKN,cAAc,EAAA;AAAEf,IAAAA,WAAW,EAAEA,WAAY;AAACC,IAAAA,mBAAmB,EAAEA,mBAAAA;AAAoB,GAAA,CAAE,CAAC,GACzG,IAAI,EACPC,UAAU,GACTW,cAAc,IAAI,QAAQ,gBACxBK,cAAA,CAAAC,aAAA,CAACG,8BAA8B,EAAA;AAC7BC,IAAAA,gBAAgB,EAAE,IAAK;AACvBC,IAAAA,kBAAkB,EAAE,KAAM;IAC1BC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAACC,QAAQ,CAACvB,mBAAoB,CAAE;IAClEC,eAAe,EAAEA,eAAe,CAACuB,OAAQ;AACzCpB,IAAAA,IAAI,EAAEA,IAAM;AACZC,IAAAA,YAAY,EAAEA,YAAoB;AAClCC,IAAAA,QAAQ,EAAEA,QAAU;AACpBC,IAAAA,gBAAgB,EAAEA,gBAAwB;AAC1CC,IAAAA,kBAAkB,EAAEA,kBAAmB;AACvCC,IAAAA,eAAe,EAAEA,eAAgB;AACjCE,IAAAA,QAAQ,EAAEA,QAAAA;AAAU,GACrB,CAAC,gBAEFI,cAAA,CAAAC,aAAA,CAACS,oBAAoB,EAAA;AACnBL,IAAAA,gBAAgB,EAAE,IAAK;AACvBC,IAAAA,kBAAkB,EAAE,KAAM;IAC1BC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAACC,QAAQ,CAACvB,mBAAoB,CAAE;IAClEC,eAAe,EAAEA,eAAe,CAACuB,OAAQ;AACzCtB,IAAAA,MAAM,EAAEA,MAAQ;AAChBC,IAAAA,eAAe,EAAEA,eAAgB;AACjCC,IAAAA,IAAI,EAAEA,IAAM;AACZC,IAAAA,YAAY,EAAEA,YAAoB;AAClCC,IAAAA,QAAQ,EAAEA,QAAU;AACpBC,IAAAA,gBAAgB,EAAEA,gBAAwB;AAC1CC,IAAAA,kBAAkB,EAAEA,kBAAmB;AACvCC,IAAAA,eAAe,EAAEA,eAAAA;GAClB,CACF,GACC,IACJ,CAAC,CAAA;AAEP;;;;"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useControlledDatagridState = _ref => {
|
|
4
|
+
var _initialState$paginat, _initialState$paginat2;
|
|
5
|
+
let {
|
|
6
|
+
initialState,
|
|
7
|
+
rowsPerPageOptions,
|
|
8
|
+
propsColumnVisibilityModel,
|
|
9
|
+
propsFilterModel,
|
|
10
|
+
propsOnColumnVisibilityModelChange,
|
|
11
|
+
propsOnFilterModelChange,
|
|
12
|
+
propsOnPageChange,
|
|
13
|
+
propsOnPageSizeChange,
|
|
14
|
+
propsOnPinnedColumnsChange,
|
|
15
|
+
propsOnSortModelChange,
|
|
16
|
+
propsPage,
|
|
17
|
+
propsPageSize,
|
|
18
|
+
propsPinnedColumns,
|
|
19
|
+
propsSortModel
|
|
20
|
+
} = _ref;
|
|
21
|
+
const [filterModel, setFilterModel] = useState(propsFilterModel);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
setFilterModel(propsFilterModel);
|
|
24
|
+
}, [propsFilterModel]);
|
|
25
|
+
const onFilterModelChange = (model, details) => {
|
|
26
|
+
if (propsOnFilterModelChange) {
|
|
27
|
+
propsOnFilterModelChange(model, details);
|
|
28
|
+
} else {
|
|
29
|
+
setFilterModel(model);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const [columnVisibilityModel, setColumnVisibilityModel] = useState(propsColumnVisibilityModel);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
setColumnVisibilityModel(propsColumnVisibilityModel);
|
|
35
|
+
}, [propsColumnVisibilityModel]);
|
|
36
|
+
const onColumnVisibilityModelChange = (model, details) => {
|
|
37
|
+
if (propsOnColumnVisibilityModelChange) {
|
|
38
|
+
propsOnColumnVisibilityModelChange(model, details);
|
|
39
|
+
} else {
|
|
40
|
+
setColumnVisibilityModel(model);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const [pinnedColumns, setPinnedColumns] = useState(propsPinnedColumns);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
setPinnedColumns(propsPinnedColumns);
|
|
46
|
+
}, [propsPinnedColumns]);
|
|
47
|
+
const onPinnedColumnsChange = (model, details) => {
|
|
48
|
+
if (propsOnPinnedColumnsChange) {
|
|
49
|
+
propsOnPinnedColumnsChange(model, details);
|
|
50
|
+
} else {
|
|
51
|
+
setPinnedColumns(model);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const [sortModel, setSortModel] = useState(propsSortModel);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
setSortModel(propsSortModel);
|
|
57
|
+
}, [propsSortModel]);
|
|
58
|
+
const onSortModelChange = (model, details) => {
|
|
59
|
+
if (propsOnSortModelChange) {
|
|
60
|
+
propsOnSortModelChange(model, details);
|
|
61
|
+
} else {
|
|
62
|
+
setSortModel(model);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const [page, setPage] = useState((initialState === null || initialState === void 0 ? void 0 : (_initialState$paginat = initialState.pagination) === null || _initialState$paginat === void 0 ? void 0 : _initialState$paginat.page) || propsPage || 0);
|
|
66
|
+
const [pageSize, setPageSize] = useState((initialState === null || initialState === void 0 ? void 0 : (_initialState$paginat2 = initialState.pagination) === null || _initialState$paginat2 === void 0 ? void 0 : _initialState$paginat2.pageSize) || propsPageSize || (rowsPerPageOptions === null || rowsPerPageOptions === void 0 ? void 0 : rowsPerPageOptions[0]) || 25);
|
|
67
|
+
const onPageChange = page => {
|
|
68
|
+
if (propsOnPageChange) {
|
|
69
|
+
propsOnPageChange(page, undefined);
|
|
70
|
+
} else {
|
|
71
|
+
setPage(page);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
if (propsPage || propsPage === 0) {
|
|
76
|
+
setPage(propsPage);
|
|
77
|
+
}
|
|
78
|
+
}, [propsPage]);
|
|
79
|
+
const onPageSizeChange = pageSize => {
|
|
80
|
+
onPageChange(0);
|
|
81
|
+
if (propsOnPageSizeChange) {
|
|
82
|
+
propsOnPageSizeChange(pageSize, undefined);
|
|
83
|
+
} else {
|
|
84
|
+
setPageSize(pageSize);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
if (propsPageSize) {
|
|
89
|
+
setPageSize(propsPageSize);
|
|
90
|
+
}
|
|
91
|
+
}, [propsPageSize]);
|
|
92
|
+
return {
|
|
93
|
+
filterModel,
|
|
94
|
+
onFilterModelChange,
|
|
95
|
+
columnVisibilityModel,
|
|
96
|
+
onColumnVisibilityModelChange,
|
|
97
|
+
pinnedColumns,
|
|
98
|
+
onPinnedColumnsChange,
|
|
99
|
+
sortModel,
|
|
100
|
+
onSortModelChange,
|
|
101
|
+
page,
|
|
102
|
+
pageSize,
|
|
103
|
+
onPageChange,
|
|
104
|
+
onPageSizeChange
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export { useControlledDatagridState };
|
|
109
|
+
//# sourceMappingURL=useControlledDatagridState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControlledDatagridState.js","sources":["../../src/hooks/useControlledDatagridState.tsx"],"sourcesContent":["import {\n GridCallbackDetails,\n GridColumnVisibilityModel,\n GridFilterModel,\n GridPinnedColumns,\n GridSortModel,\n} from '@mui/x-data-grid-pro';\nimport { useEffect, useState } from 'react';\nimport { DataGridProps } from '../components/DataGrid';\n\nexport interface UseControlledDatagridStateProps {\n initialState: DataGridProps['initialState'];\n rowsPerPageOptions: DataGridProps['rowsPerPageOptions'];\n propsColumnVisibilityModel: DataGridProps['columnVisibilityModel'];\n propsFilterModel: DataGridProps['filterModel'];\n propsOnColumnVisibilityModelChange: DataGridProps['onColumnVisibilityModelChange'];\n propsOnFilterModelChange: DataGridProps['onFilterModelChange'];\n propsOnPageChange: DataGridProps['onPageChange'];\n propsOnPageSizeChange: DataGridProps['onPageSizeChange'];\n propsOnPinnedColumnsChange: DataGridProps['onPinnedColumnsChange'];\n propsOnSortModelChange: DataGridProps['onSortModelChange'];\n propsPage: DataGridProps['page'];\n propsPageSize: DataGridProps['pageSize'];\n propsPinnedColumns: DataGridProps['pinnedColumns'];\n propsSortModel: DataGridProps['sortModel'];\n}\n\nexport const useControlledDatagridState = ({\n initialState,\n rowsPerPageOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPageChange,\n propsOnPageSizeChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPage,\n propsPageSize,\n propsPinnedColumns,\n propsSortModel,\n}: UseControlledDatagridStateProps) => {\n const [filterModel, setFilterModel] = useState(propsFilterModel);\n useEffect(() => {\n setFilterModel(propsFilterModel);\n }, [propsFilterModel]);\n\n const onFilterModelChange = (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\n if (propsOnFilterModelChange) {\n propsOnFilterModelChange(model, details);\n } else {\n setFilterModel(model);\n }\n };\n\n const [columnVisibilityModel, setColumnVisibilityModel] = useState(propsColumnVisibilityModel);\n useEffect(() => {\n setColumnVisibilityModel(propsColumnVisibilityModel);\n }, [propsColumnVisibilityModel]);\n\n const onColumnVisibilityModelChange = (model: GridColumnVisibilityModel, details: GridCallbackDetails<'filter'>) => {\n if (propsOnColumnVisibilityModelChange) {\n propsOnColumnVisibilityModelChange(model, details);\n } else {\n setColumnVisibilityModel(model);\n }\n };\n\n const [pinnedColumns, setPinnedColumns] = useState(propsPinnedColumns);\n useEffect(() => {\n setPinnedColumns(propsPinnedColumns);\n }, [propsPinnedColumns]);\n\n const onPinnedColumnsChange = (model: GridPinnedColumns, details: GridCallbackDetails<'filter'>) => {\n if (propsOnPinnedColumnsChange) {\n propsOnPinnedColumnsChange(model, details);\n } else {\n setPinnedColumns(model);\n }\n };\n\n const [sortModel, setSortModel] = useState(propsSortModel);\n useEffect(() => {\n setSortModel(propsSortModel);\n }, [propsSortModel]);\n\n const onSortModelChange = (model: GridSortModel, details: GridCallbackDetails<'filter'>) => {\n if (propsOnSortModelChange) {\n propsOnSortModelChange(model, details);\n } else {\n setSortModel(model);\n }\n };\n\n const [page, setPage] = useState(initialState?.pagination?.page || propsPage || 0);\n const [pageSize, setPageSize] = useState(\n initialState?.pagination?.pageSize || propsPageSize || rowsPerPageOptions?.[0] || 25\n );\n\n const onPageChange = (page: number) => {\n if (propsOnPageChange) {\n propsOnPageChange(page, undefined!);\n } else {\n setPage(page);\n }\n };\n\n useEffect(() => {\n if (propsPage || propsPage === 0) {\n setPage(propsPage);\n }\n }, [propsPage]);\n\n const onPageSizeChange = (pageSize: number) => {\n onPageChange(0);\n if (propsOnPageSizeChange) {\n propsOnPageSizeChange(pageSize, undefined!);\n } else {\n setPageSize(pageSize);\n }\n };\n\n useEffect(() => {\n if (propsPageSize) {\n setPageSize(propsPageSize);\n }\n }, [propsPageSize]);\n\n return {\n filterModel,\n onFilterModelChange,\n columnVisibilityModel,\n onColumnVisibilityModelChange,\n pinnedColumns,\n onPinnedColumnsChange,\n sortModel,\n onSortModelChange,\n page,\n pageSize,\n onPageChange,\n onPageSizeChange,\n };\n};\n"],"names":["useControlledDatagridState","_ref","_initialState$paginat","_initialState$paginat2","initialState","rowsPerPageOptions","propsColumnVisibilityModel","propsFilterModel","propsOnColumnVisibilityModelChange","propsOnFilterModelChange","propsOnPageChange","propsOnPageSizeChange","propsOnPinnedColumnsChange","propsOnSortModelChange","propsPage","propsPageSize","propsPinnedColumns","propsSortModel","filterModel","setFilterModel","useState","useEffect","onFilterModelChange","model","details","columnVisibilityModel","setColumnVisibilityModel","onColumnVisibilityModelChange","pinnedColumns","setPinnedColumns","onPinnedColumnsChange","sortModel","setSortModel","onSortModelChange","page","setPage","pagination","pageSize","setPageSize","onPageChange","undefined","onPageSizeChange"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
// Get and Set data from LocalStorage WITHOUT useState
|
|
4
|
+
|
|
5
|
+
// triggering a state update and consecutive re-render
|
|
6
|
+
const useFetchState = (defaultValue, key) => {
|
|
7
|
+
let stickyValue = null;
|
|
8
|
+
try {
|
|
9
|
+
stickyValue = window.localStorage.getItem(key);
|
|
10
|
+
} catch (e) {
|
|
11
|
+
console.error('StatefulDataGrid: error getting item from local storage: ', e);
|
|
12
|
+
}
|
|
13
|
+
let parsedValue = stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined' ? JSON.parse(stickyValue) : defaultValue;
|
|
14
|
+
|
|
15
|
+
// TODO: temporary workaround to avoid clashes when someone had sorting on the now-removed screenshot field (renamed to num_annotations)
|
|
16
|
+
// Consider upgrading the Datagrid component library as the exception handling was added in this PR: https://github.com/mui-org/material-ui-x/pull/3224
|
|
17
|
+
if (parsedValue instanceof Array) {
|
|
18
|
+
const fields = (parsedValue || []).map(item => item.field);
|
|
19
|
+
if (fields.includes('screenshot') || fields.includes('diffs')) {
|
|
20
|
+
parsedValue = defaultValue;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const updateValue = useCallback(value => {
|
|
24
|
+
try {
|
|
25
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
26
|
+
} catch (e) {
|
|
27
|
+
console.error('StatefulDataGrid: error setting item into local storage: ', e);
|
|
28
|
+
}
|
|
29
|
+
}, [key]);
|
|
30
|
+
return [parsedValue, updateValue];
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { useFetchState };
|
|
34
|
+
//# sourceMappingURL=useFetchState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFetchState.js","sources":["../../src/hooks/useFetchState.tsx"],"sourcesContent":["// Get and Set data from LocalStorage WITHOUT useState\n// Useful for when you want to get and set data without\n\nimport { useCallback } from 'react';\n\n// triggering a state update and consecutive re-render\nexport const useFetchState = (defaultValue: unknown, key: string) => {\n let stickyValue = null;\n try {\n stickyValue = window.localStorage.getItem(key);\n } catch (e) {\n console.error('StatefulDataGrid: error getting item from local storage: ', e);\n }\n let parsedValue =\n stickyValue !== null && stickyValue !== undefined && stickyValue !== 'undefined'\n ? JSON.parse(stickyValue)\n : defaultValue;\n\n // TODO: temporary workaround to avoid clashes when someone had sorting on the now-removed screenshot field (renamed to num_annotations)\n // Consider upgrading the Datagrid component library as the exception handling was added in this PR: https://github.com/mui-org/material-ui-x/pull/3224\n if (parsedValue instanceof Array) {\n const fields = (parsedValue || []).map((item) => item.field);\n if (fields.includes('screenshot') || fields.includes('diffs')) {\n parsedValue = defaultValue;\n }\n }\n\n const updateValue = useCallback(\n (value: unknown) => {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (e) {\n console.error('StatefulDataGrid: error setting item into local storage: ', e);\n }\n },\n [key]\n );\n\n return [parsedValue, updateValue];\n};\n"],"names":["useFetchState","defaultValue","key","stickyValue","window","localStorage","getItem","e","console","error","parsedValue","undefined","JSON","parse","Array","fields","map","item","field","includes","updateValue","useCallback","value","setItem","stringify"],"mappings":";;AAAA;;AAKA;MACaA,aAAa,GAAGA,CAACC,YAAqB,EAAEC,GAAW,KAAK;EACnE,IAAIC,WAAW,GAAG,IAAI,CAAA;EACtB,IAAI;IACFA,WAAW,GAAGC,MAAM,CAACC,YAAY,CAACC,OAAO,CAACJ,GAAG,CAAC,CAAA;GAC/C,CAAC,OAAOK,CAAC,EAAE;AACVC,IAAAA,OAAO,CAACC,KAAK,CAAC,2DAA2D,EAAEF,CAAC,CAAC,CAAA;AAC/E,GAAA;EACA,IAAIG,WAAW,GACbP,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKQ,SAAS,IAAIR,WAAW,KAAK,WAAW,GAC5ES,IAAI,CAACC,KAAK,CAACV,WAAW,CAAC,GACvBF,YAAY,CAAA;;AAElB;AACA;EACA,IAAIS,WAAW,YAAYI,KAAK,EAAE;AAChC,IAAA,MAAMC,MAAM,GAAG,CAACL,WAAW,IAAI,EAAE,EAAEM,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,KAAK,CAAC,CAAA;AAC5D,IAAA,IAAIH,MAAM,CAACI,QAAQ,CAAC,YAAY,CAAC,IAAIJ,MAAM,CAACI,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC7DT,MAAAA,WAAW,GAAGT,YAAY,CAAA;AAC5B,KAAA;AACF,GAAA;AAEA,EAAA,MAAMmB,WAAW,GAAGC,WAAW,CAC5BC,KAAc,IAAK;IAClB,IAAI;AACFlB,MAAAA,MAAM,CAACC,YAAY,CAACkB,OAAO,CAACrB,GAAG,EAAEU,IAAI,CAACY,SAAS,CAACF,KAAK,CAAC,CAAC,CAAA;KACxD,CAAC,OAAOf,CAAC,EAAE;AACVC,MAAAA,OAAO,CAACC,KAAK,CAAC,2DAA2D,EAAEF,CAAC,CAAC,CAAA;AAC/E,KAAA;AACF,GAAC,EACD,CAACL,GAAG,CACN,CAAC,CAAA;AAED,EAAA,OAAO,CAACQ,WAAW,EAAEU,WAAW,CAAC,CAAA;AACnC;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GridFilterModel } from '@mui/x-data-grid-pro';
|
|
2
|
+
|
|
3
|
+
interface ExtendedGridFilterModel extends GridFilterModel {
|
|
4
|
+
quickFilterValues?: string[];
|
|
5
|
+
}
|
|
6
|
+
interface ExtendedGridPaginationModel {
|
|
7
|
+
page: number;
|
|
8
|
+
pageSize: number;
|
|
9
|
+
direction?: 'next' | 'back';
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { ExtendedGridFilterModel, ExtendedGridPaginationModel };
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { useEffect, useCallback, useMemo } from 'react';
|
|
3
|
+
import { useTableStates } from './useTableStates.js';
|
|
4
|
+
import { clearPreviousVersionStorage } from '../utils/localStorage.js';
|
|
5
|
+
import { getModelsParsedOrUpdateLocalStorage, updateUrl } from '../utils/urlLocalStorageSync.js';
|
|
6
|
+
|
|
7
|
+
const useStatefulTable = props => {
|
|
8
|
+
const {
|
|
9
|
+
// density = 'standard',
|
|
10
|
+
apiRef,
|
|
11
|
+
initialState,
|
|
12
|
+
columns: propsColumns,
|
|
13
|
+
onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,
|
|
14
|
+
onColumnWidthChange: propsOnColumnWidthChange,
|
|
15
|
+
onFilterModelChange: propsOnFilterModelChange,
|
|
16
|
+
onPageChange: propsOnPageChange,
|
|
17
|
+
onPageSizeChange: propsOnPageSizeChange,
|
|
18
|
+
onPinnedColumnsChange: propsOnPinnedColumnsChange,
|
|
19
|
+
onSortModelChange: propsOnSortModelChange,
|
|
20
|
+
useRouter,
|
|
21
|
+
localStorageVersion = 1,
|
|
22
|
+
previousLocalStorageVersions = []
|
|
23
|
+
} = props;
|
|
24
|
+
const {
|
|
25
|
+
search,
|
|
26
|
+
pathname,
|
|
27
|
+
historyReplace
|
|
28
|
+
} = useRouter();
|
|
29
|
+
const id = pathname;
|
|
30
|
+
|
|
31
|
+
// States and setters persisted in the local storage for this table
|
|
32
|
+
const {
|
|
33
|
+
paginationModel,
|
|
34
|
+
setPaginationModel,
|
|
35
|
+
sortModel,
|
|
36
|
+
setSortModel,
|
|
37
|
+
localStorageFilters,
|
|
38
|
+
setLocalStorageFilters,
|
|
39
|
+
visibilityModelLocalStorage,
|
|
40
|
+
setVisibilityModelLocalStorage,
|
|
41
|
+
pinnedColumns,
|
|
42
|
+
setPinnedColumns,
|
|
43
|
+
dimensionModel,
|
|
44
|
+
setDimensionModel
|
|
45
|
+
} = useTableStates(id, localStorageVersion);
|
|
46
|
+
|
|
47
|
+
// clearing up old version keys
|
|
48
|
+
useEffect(() => clearPreviousVersionStorage(id, previousLocalStorageVersions), [id, previousLocalStorageVersions]);
|
|
49
|
+
const onColumnDimensionChange = useCallback(_ref => {
|
|
50
|
+
let {
|
|
51
|
+
newWidth,
|
|
52
|
+
field
|
|
53
|
+
} = _ref;
|
|
54
|
+
setDimensionModel(_objectSpread2(_objectSpread2({}, dimensionModel), {}, {
|
|
55
|
+
[field]: newWidth
|
|
56
|
+
}));
|
|
57
|
+
}, [dimensionModel, setDimensionModel]);
|
|
58
|
+
const {
|
|
59
|
+
filterModel: filterParsed,
|
|
60
|
+
sortModel: sortModelParsed,
|
|
61
|
+
paginationModel: paginationModelParsed,
|
|
62
|
+
columnVisibilityModel: visibilityModel,
|
|
63
|
+
pinnedColumnsModel
|
|
64
|
+
} = getModelsParsedOrUpdateLocalStorage(search || '', localStorageVersion, propsColumns, historyReplace, initialState, {
|
|
65
|
+
localStorageFilters,
|
|
66
|
+
setLocalStorageFilters,
|
|
67
|
+
localStorageSorting: sortModel,
|
|
68
|
+
setLocalStorageSorting: setSortModel,
|
|
69
|
+
localStoragePagination: paginationModel,
|
|
70
|
+
setLocalStoragePagination: setPaginationModel,
|
|
71
|
+
localStorageColumnsVisibility: visibilityModelLocalStorage,
|
|
72
|
+
setLocalStorageColumnsVisibility: setVisibilityModelLocalStorage,
|
|
73
|
+
localStoragePinnedColumns: pinnedColumns,
|
|
74
|
+
setLocalStoragePinnedColumns: setPinnedColumns
|
|
75
|
+
});
|
|
76
|
+
const columns = useMemo(() => propsColumns.map(column => {
|
|
77
|
+
column.width = dimensionModel[column.field] || column.width || 100;
|
|
78
|
+
return column;
|
|
79
|
+
}), [propsColumns, dimensionModel]);
|
|
80
|
+
|
|
81
|
+
/** Add resetPage method to apiRef. */
|
|
82
|
+
apiRef.current.resetPage = () => {
|
|
83
|
+
apiRef.current.setPage(0);
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
apiRef,
|
|
87
|
+
columns,
|
|
88
|
+
onFilterModelChange: (model, details) => {
|
|
89
|
+
const filterModel = _objectSpread2(_objectSpread2({}, model), {}, {
|
|
90
|
+
items: model.items.map(item => {
|
|
91
|
+
const column = apiRef.current.getColumn(item.columnField);
|
|
92
|
+
item.type = column.type || 'string';
|
|
93
|
+
return item;
|
|
94
|
+
}),
|
|
95
|
+
quickFilterValues: model.quickFilterValues || []
|
|
96
|
+
});
|
|
97
|
+
propsOnFilterModelChange === null || propsOnFilterModelChange === void 0 ? void 0 : propsOnFilterModelChange(filterModel, details);
|
|
98
|
+
updateUrl({
|
|
99
|
+
filterModel: filterModel,
|
|
100
|
+
sortModel: sortModelParsed,
|
|
101
|
+
paginationModel: paginationModelParsed,
|
|
102
|
+
columnsModel: apiRef.current.state.columns.columnVisibilityModel,
|
|
103
|
+
pinnedColumnsModel: pinnedColumnsModel
|
|
104
|
+
}, search, localStorageVersion, historyReplace, columns);
|
|
105
|
+
},
|
|
106
|
+
filterModel: filterParsed,
|
|
107
|
+
onSortModelChange: (model, details) => {
|
|
108
|
+
propsOnSortModelChange === null || propsOnSortModelChange === void 0 ? void 0 : propsOnSortModelChange(model, details);
|
|
109
|
+
updateUrl({
|
|
110
|
+
filterModel: filterParsed,
|
|
111
|
+
sortModel: model,
|
|
112
|
+
paginationModel: paginationModelParsed,
|
|
113
|
+
columnsModel: apiRef.current.state.columns.columnVisibilityModel,
|
|
114
|
+
pinnedColumnsModel: pinnedColumnsModel
|
|
115
|
+
}, search, localStorageVersion, historyReplace, columns);
|
|
116
|
+
},
|
|
117
|
+
sortModel: sortModelParsed,
|
|
118
|
+
onPinnedColumnsChange: (pinnedColumns, details) => {
|
|
119
|
+
propsOnPinnedColumnsChange === null || propsOnPinnedColumnsChange === void 0 ? void 0 : propsOnPinnedColumnsChange(pinnedColumns, details);
|
|
120
|
+
updateUrl({
|
|
121
|
+
filterModel: filterParsed,
|
|
122
|
+
sortModel: sortModelParsed,
|
|
123
|
+
paginationModel: paginationModelParsed,
|
|
124
|
+
columnsModel: apiRef.current.state.columns.columnVisibilityModel,
|
|
125
|
+
pinnedColumnsModel: pinnedColumns
|
|
126
|
+
}, search, localStorageVersion, historyReplace, columns);
|
|
127
|
+
},
|
|
128
|
+
pinnedColumns: pinnedColumnsModel,
|
|
129
|
+
page: paginationModelParsed.page,
|
|
130
|
+
pageSize: paginationModelParsed.pageSize,
|
|
131
|
+
onPageChange: (page, details) => {
|
|
132
|
+
const direction = paginationModelParsed.page < page ? 'next' : 'back';
|
|
133
|
+
propsOnPageChange === null || propsOnPageChange === void 0 ? void 0 : propsOnPageChange(page, details);
|
|
134
|
+
updateUrl({
|
|
135
|
+
filterModel: filterParsed,
|
|
136
|
+
sortModel: sortModelParsed,
|
|
137
|
+
paginationModel: {
|
|
138
|
+
page,
|
|
139
|
+
pageSize: paginationModelParsed.pageSize,
|
|
140
|
+
direction
|
|
141
|
+
},
|
|
142
|
+
columnsModel: apiRef.current.state.columns.columnVisibilityModel,
|
|
143
|
+
pinnedColumnsModel: pinnedColumnsModel
|
|
144
|
+
}, search, localStorageVersion, historyReplace, columns);
|
|
145
|
+
},
|
|
146
|
+
onPageSizeChange: (pageSize, details) => {
|
|
147
|
+
propsOnPageSizeChange === null || propsOnPageSizeChange === void 0 ? void 0 : propsOnPageSizeChange(pageSize, details);
|
|
148
|
+
updateUrl({
|
|
149
|
+
filterModel: filterParsed,
|
|
150
|
+
sortModel: sortModelParsed,
|
|
151
|
+
paginationModel: {
|
|
152
|
+
page: paginationModelParsed.page,
|
|
153
|
+
pageSize,
|
|
154
|
+
direction: paginationModelParsed.direction
|
|
155
|
+
},
|
|
156
|
+
columnsModel: apiRef.current.state.columns.columnVisibilityModel,
|
|
157
|
+
pinnedColumnsModel: pinnedColumnsModel
|
|
158
|
+
}, search, localStorageVersion, historyReplace, columns);
|
|
159
|
+
},
|
|
160
|
+
columnVisibilityModel: visibilityModel,
|
|
161
|
+
onColumnVisibilityModelChange: (columnsVisibilityModel, details) => {
|
|
162
|
+
propsOnColumnVisibilityModelChange === null || propsOnColumnVisibilityModelChange === void 0 ? void 0 : propsOnColumnVisibilityModelChange(columnsVisibilityModel, details);
|
|
163
|
+
updateUrl({
|
|
164
|
+
filterModel: filterParsed,
|
|
165
|
+
sortModel: sortModelParsed,
|
|
166
|
+
paginationModel: paginationModelParsed,
|
|
167
|
+
columnsModel: columnsVisibilityModel,
|
|
168
|
+
pinnedColumnsModel: pinnedColumnsModel
|
|
169
|
+
}, search, localStorageVersion, historyReplace, columns);
|
|
170
|
+
},
|
|
171
|
+
onColumnWidthChange: (params, event, details) => {
|
|
172
|
+
propsOnColumnWidthChange === null || propsOnColumnWidthChange === void 0 ? void 0 : propsOnColumnWidthChange(params, event, details);
|
|
173
|
+
onColumnDimensionChange({
|
|
174
|
+
newWidth: params.width,
|
|
175
|
+
field: params.colDef.field
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
export { useStatefulTable };
|
|
182
|
+
//# sourceMappingURL=useStatefulTable.js.map
|