@gridsuite/commons-ui 0.46.0 → 0.47.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/README.md +0 -17
- package/dist/components/AuthenticationRouter/AuthenticationRouter.js +147 -0
- package/dist/components/CardErrorBoundary/card-error-boundary.js +110 -0
- package/dist/components/ElementSearchDialog/element-search-dialog.js +139 -0
- package/dist/components/ElementSearchDialog/equipment-item.js +77 -0
- package/dist/components/ElementSearchDialog/tag-renderer.js +34 -0
- package/dist/components/FlatParameters/FlatParameters.js +411 -0
- package/dist/components/Login/Login.js +78 -0
- package/dist/components/Login/Logout.js +69 -0
- package/dist/components/MuiVirtualizedTable/ColumnHeader.js +127 -0
- package/dist/components/MuiVirtualizedTable/KeyedColumnsRowIndexer.js +548 -0
- package/dist/components/MuiVirtualizedTable/MuiVirtualizedTable.js +790 -0
- package/dist/components/MultipleSelectionDialog/MultipleSelectionDialog.js +87 -0
- package/dist/components/OverflowableText/overflowable-text.js +87 -0
- package/dist/components/ReportViewer/filter-button.js +64 -0
- package/dist/components/ReportViewer/log-report-item.js +95 -0
- package/dist/components/ReportViewer/log-report.js +49 -0
- package/dist/components/ReportViewer/log-table.js +131 -0
- package/dist/components/ReportViewer/multi-select-list.js +40 -0
- package/dist/components/ReportViewer/report-item.js +112 -0
- package/dist/components/ReportViewer/report-tree-view-context.js +8 -0
- package/dist/components/ReportViewer/report-viewer.js +158 -0
- package/dist/components/ReportViewerDialog/report-viewer-dialog.js +61 -0
- package/dist/components/SignInCallbackHandler/SignInCallbackHandler.js +13 -0
- package/dist/components/SilentRenewCallbackHandler/SilentRenewCallbackHandler.js +16 -0
- package/dist/components/SnackbarProvider/SnackbarProvider.js +28 -0
- package/dist/components/TopBar/AboutDialog.js +467 -0
- package/dist/components/TopBar/GridLogo.js +71 -0
- package/dist/components/TopBar/TopBar.js +679 -0
- package/dist/components/TreeViewFinder/TreeViewFinder.js +288 -0
- package/dist/components/react-hook-form/autocomplete-input.js +96 -0
- package/dist/components/react-hook-form/booleans/boolean-input.js +49 -0
- package/dist/components/react-hook-form/booleans/checkbox-input.js +24 -0
- package/dist/components/react-hook-form/booleans/switch-input.js +24 -0
- package/dist/components/react-hook-form/error-management/error-input.js +42 -0
- package/dist/components/react-hook-form/error-management/field-error-alert.js +9 -0
- package/dist/components/react-hook-form/error-management/mid-form-error.js +20 -0
- package/dist/components/react-hook-form/numbers/float-input.js +51 -0
- package/dist/components/react-hook-form/numbers/integer-input.js +36 -0
- package/dist/components/react-hook-form/numbers/utils.js +10 -0
- package/dist/components/react-hook-form/radio-input.js +44 -0
- package/dist/components/react-hook-form/select-input.js +31 -0
- package/dist/components/react-hook-form/slider-input.js +43 -0
- package/dist/components/react-hook-form/text-input.js +94 -0
- package/dist/components/react-hook-form/utils/cancel-button.js +16 -0
- package/dist/components/react-hook-form/utils/field-label.js +12 -0
- package/dist/components/react-hook-form/utils/functions.js +36 -0
- package/dist/components/react-hook-form/utils/submit-button.js +23 -0
- package/dist/components/react-hook-form/utils/text-field-with-adornment.js +96 -0
- package/dist/components/translations/card-error-boundary-en.js +8 -0
- package/dist/components/translations/card-error-boundary-fr.js +8 -0
- package/dist/components/translations/common-button-en.js +7 -0
- package/dist/components/translations/common-button-fr.js +7 -0
- package/dist/components/translations/element-search-en.js +7 -0
- package/dist/components/translations/element-search-fr.js +7 -0
- package/dist/components/translations/equipment-search-en.js +21 -0
- package/dist/components/translations/equipment-search-fr.js +21 -0
- package/dist/components/translations/flat-parameters-en.js +8 -0
- package/dist/components/translations/flat-parameters-fr.js +8 -0
- package/dist/components/translations/login-en.js +14 -0
- package/dist/components/translations/login-fr.js +14 -0
- package/dist/components/translations/multiple-selection-dialog-en.js +8 -0
- package/dist/components/translations/multiple-selection-dialog-fr.js +8 -0
- package/dist/components/translations/report-viewer-en.js +8 -0
- package/dist/components/translations/report-viewer-fr.js +8 -0
- package/dist/components/translations/table-en.js +6 -0
- package/dist/components/translations/table-fr.js +6 -0
- package/dist/components/translations/top-bar-en.js +27 -0
- package/dist/components/translations/top-bar-fr.js +27 -0
- package/dist/components/translations/treeview-finder-en.js +12 -0
- package/dist/components/translations/treeview-finder-fr.js +12 -0
- package/dist/hooks/useDebounce.js +17 -0
- package/{es/components/ElementSearchDialog/index.js → dist/hooks/useIntlRef.d.ts} +2 -2
- package/dist/hooks/useIntlRef.js +13 -0
- package/dist/hooks/useSnackMessage.js +81 -0
- package/dist/index.d.ts +225 -0
- package/dist/index.js +154 -0
- package/dist/utils/AuthService.js +336 -0
- package/dist/utils/ElementType.js +38 -0
- package/dist/utils/EquipmentType.js +132 -0
- package/dist/utils/UserManagerMock.js +85 -0
- package/dist/utils/actions.js +71 -0
- package/dist/utils/algos.js +24 -0
- package/dist/utils/styles.js +13 -0
- package/package.json +36 -21
- package/es/components/AuthenticationRouter/AuthenticationRouter.js +0 -102
- package/es/components/AuthenticationRouter/index.js +0 -7
- package/es/components/CardErrorBoundary/card-error-boundary.js +0 -138
- package/es/components/CardErrorBoundary/index.js +0 -7
- package/es/components/ElementSearchDialog/element-search-dialog.js +0 -153
- package/es/components/ElementSearchDialog/equipment-item.js +0 -63
- package/es/components/ElementSearchDialog/tag-renderer.js +0 -29
- package/es/components/FlatParameters/FlatParameters.js +0 -448
- package/es/components/FlatParameters/index.js +0 -8
- package/es/components/Login/Login.js +0 -79
- package/es/components/Login/Logout.js +0 -78
- package/es/components/Login/index.js +0 -7
- package/es/components/MuiVirtualizedTable/ColumnHeader.js +0 -125
- package/es/components/MuiVirtualizedTable/KeyedColumnsRowIndexer.js +0 -619
- package/es/components/MuiVirtualizedTable/MuiVirtualizedTable.js +0 -780
- package/es/components/MuiVirtualizedTable/index.js +0 -9
- package/es/components/MultipleSelectionDialog/MultipleSelectionDialog.js +0 -95
- package/es/components/MultipleSelectionDialog/index.js +0 -8
- package/es/components/OverflowableText/index.js +0 -7
- package/es/components/OverflowableText/overflowable-text.js +0 -81
- package/es/components/ReportViewer/filter-button.js +0 -77
- package/es/components/ReportViewer/index.js +0 -7
- package/es/components/ReportViewer/log-report-item.js +0 -97
- package/es/components/ReportViewer/log-report.js +0 -63
- package/es/components/ReportViewer/log-table.js +0 -130
- package/es/components/ReportViewer/multi-select-list.js +0 -56
- package/es/components/ReportViewer/report-item.js +0 -131
- package/es/components/ReportViewer/report-tree-view-context.js +0 -13
- package/es/components/ReportViewer/report-viewer.js +0 -167
- package/es/components/ReportViewerDialog/index.js +0 -7
- package/es/components/ReportViewerDialog/report-viewer-dialog.js +0 -67
- package/es/components/SignInCallbackHandler/SignInCallbackHandler.js +0 -19
- package/es/components/SignInCallbackHandler/index.js +0 -7
- package/es/components/SilentRenewCallbackHandler/SilentRenewCallbackHandler.js +0 -19
- package/es/components/SilentRenewCallbackHandler/index.js +0 -7
- package/es/components/SnackbarProvider/SnackbarProvider.js +0 -39
- package/es/components/SnackbarProvider/index.js +0 -7
- package/es/components/TopBar/AboutDialog.js +0 -456
- package/es/components/TopBar/GridLogo.js +0 -73
- package/es/components/TopBar/TopBar.js +0 -487
- package/es/components/TopBar/index.js +0 -9
- package/es/components/TreeViewFinder/TreeViewFinder.js +0 -341
- package/es/components/TreeViewFinder/index.js +0 -7
- package/es/components/images/powsybl_logo.svg +0 -35
- package/es/components/react-hook-form/autocomplete-input.js +0 -110
- package/es/components/react-hook-form/booleans/boolean-input.js +0 -56
- package/es/components/react-hook-form/booleans/checkbox-input.js +0 -28
- package/es/components/react-hook-form/booleans/switch-input.js +0 -28
- package/es/components/react-hook-form/error-management/error-input.js +0 -50
- package/es/components/react-hook-form/error-management/field-error-alert.js +0 -22
- package/es/components/react-hook-form/error-management/mid-form-error.js +0 -25
- package/es/components/react-hook-form/numbers/float-input.js +0 -105
- package/es/components/react-hook-form/numbers/integer-input.js +0 -35
- package/es/components/react-hook-form/numbers/utils.js +0 -6
- package/es/components/react-hook-form/radio-input.js +0 -55
- package/es/components/react-hook-form/select-input.js +0 -40
- package/es/components/react-hook-form/slider-input.js +0 -48
- package/es/components/react-hook-form/text-input.js +0 -100
- package/es/components/react-hook-form/utils/cancel-button.js +0 -28
- package/es/components/react-hook-form/utils/field-label.js +0 -15
- package/es/components/react-hook-form/utils/functions.js +0 -42
- package/es/components/react-hook-form/utils/submit-button.js +0 -29
- package/es/components/react-hook-form/utils/text-field-with-adornment.js +0 -92
- package/es/components/translations/card-error-boundary-en.js +0 -13
- package/es/components/translations/card-error-boundary-fr.js +0 -13
- package/es/components/translations/common-button-en.js +0 -12
- package/es/components/translations/common-button-fr.js +0 -12
- package/es/components/translations/element-search-en.js +0 -12
- package/es/components/translations/element-search-fr.js +0 -12
- package/es/components/translations/equipment-search-en.js +0 -26
- package/es/components/translations/equipment-search-fr.js +0 -26
- package/es/components/translations/flat-parameters-en.js +0 -13
- package/es/components/translations/flat-parameters-fr.js +0 -13
- package/es/components/translations/inputs-en.js +0 -25
- package/es/components/translations/inputs-fr.js +0 -25
- package/es/components/translations/login-en.js +0 -19
- package/es/components/translations/login-fr.js +0 -19
- package/es/components/translations/multiple-selection-dialog-en.js +0 -13
- package/es/components/translations/multiple-selection-dialog-fr.js +0 -13
- package/es/components/translations/report-viewer-en.js +0 -13
- package/es/components/translations/report-viewer-fr.js +0 -13
- package/es/components/translations/table-en.js +0 -11
- package/es/components/translations/table-fr.js +0 -11
- package/es/components/translations/top-bar-en.js +0 -32
- package/es/components/translations/top-bar-fr.js +0 -32
- package/es/components/translations/treeview-finder-en.js +0 -17
- package/es/components/translations/treeview-finder-fr.js +0 -17
- package/es/hooks/useDebounce.js +0 -26
- package/es/hooks/useIntlRef.js +0 -22
- package/es/hooks/useSnackMessage.js +0 -81
- package/es/index.js +0 -71
- package/es/utils/AuthService.js +0 -312
- package/es/utils/ElementType.js +0 -53
- package/es/utils/EquipmentType.js +0 -133
- package/es/utils/UserManagerMock.js +0 -81
- package/es/utils/actions.js +0 -65
- package/es/utils/algos.js +0 -29
- package/es/utils/styles.js +0 -35
|
@@ -1,780 +0,0 @@
|
|
|
1
|
-
var _excluded = ["sort"],
|
|
2
|
-
_excluded2 = ["dataKey"];
|
|
3
|
-
var _defaultStyles;
|
|
4
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
5
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
7
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
8
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
9
|
-
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
10
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
11
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
13
|
-
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
15
|
-
/**
|
|
16
|
-
* Copyright (c) 2022, RTE (http://www.rte-france.com)
|
|
17
|
-
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
18
|
-
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
19
|
-
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* This class has been taken from 'Virtualized Table' example at https://material-ui.com/components/tables/
|
|
24
|
-
*/
|
|
25
|
-
import React, { createRef } from 'react';
|
|
26
|
-
import { FormattedMessage } from 'react-intl';
|
|
27
|
-
import PropTypes from 'prop-types';
|
|
28
|
-
import clsx from 'clsx';
|
|
29
|
-
import memoize from 'memoize-one';
|
|
30
|
-
import { Autocomplete, Chip, IconButton, Popover, TableCell, TextField } from '@mui/material';
|
|
31
|
-
import { styled } from '@mui/system';
|
|
32
|
-
import GetAppIcon from '@mui/icons-material/GetApp';
|
|
33
|
-
import { AutoSizer, Column, Table } from 'react-virtualized';
|
|
34
|
-
import CsvDownloader from 'react-csv-downloader';
|
|
35
|
-
import OverflowableText from '../OverflowableText/overflowable-text';
|
|
36
|
-
import { toNestedGlobalSelectors, makeComposeClasses } from '../../utils/styles';
|
|
37
|
-
import { CHANGE_WAYS, collectibleHelper, getHelper, KeyedColumnsRowIndexer } from './KeyedColumnsRowIndexer';
|
|
38
|
-
import ColumnHeader from './ColumnHeader';
|
|
39
|
-
function getTextWidth(text) {
|
|
40
|
-
// re-use canvas object for better performance
|
|
41
|
-
var canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement('canvas'));
|
|
42
|
-
var context = canvas.getContext('2d');
|
|
43
|
-
// TODO find a better way to find Material UI style
|
|
44
|
-
context.font = '14px "Roboto", "Helvetica", "Arial", sans-serif';
|
|
45
|
-
var metrics = context.measureText(text);
|
|
46
|
-
return metrics.width;
|
|
47
|
-
}
|
|
48
|
-
export var DEFAULT_CELL_PADDING = 16;
|
|
49
|
-
export var DEFAULT_HEADER_HEIGHT = 48;
|
|
50
|
-
export var DEFAULT_ROW_HEIGHT = 48;
|
|
51
|
-
|
|
52
|
-
// As a bunch of individual variables to try to make it easier
|
|
53
|
-
// to track that they are all used. Not sure, maybe group them in an object ?
|
|
54
|
-
var cssFlexContainer = 'flexContainer';
|
|
55
|
-
var cssTable = 'table';
|
|
56
|
-
var cssTableRow = 'tableRow';
|
|
57
|
-
var cssTableRowHover = 'tableRowHover';
|
|
58
|
-
var cssTableCell = 'tableCell';
|
|
59
|
-
var cssTableCellColor = 'tableCellColor';
|
|
60
|
-
var cssNoClick = 'noClick';
|
|
61
|
-
var cssHeader = 'header';
|
|
62
|
-
var cssRowBackgroundDark = 'rowBackgroundDark';
|
|
63
|
-
var cssRowBackgroundLight = 'rowBackgroundLight';
|
|
64
|
-
|
|
65
|
-
// converted to nested rules
|
|
66
|
-
var defaultStyles = (_defaultStyles = {}, _defaultStyles[cssFlexContainer] = {
|
|
67
|
-
display: 'flex',
|
|
68
|
-
alignItems: 'center',
|
|
69
|
-
boxSizing: 'border-box'
|
|
70
|
-
}, _defaultStyles[cssTable] = {
|
|
71
|
-
// temporary right-to-left patch, waiting for
|
|
72
|
-
// https://github.com/bvaughn/react-virtualized/issues/454
|
|
73
|
-
'& .ReactVirtualized__Table__headerRow': {
|
|
74
|
-
flip: false
|
|
75
|
-
}
|
|
76
|
-
}, _defaultStyles[cssTableRow] = {
|
|
77
|
-
cursor: 'pointer'
|
|
78
|
-
}, _defaultStyles[cssTableRowHover] = {}, _defaultStyles[cssTableCell] = {
|
|
79
|
-
flex: 1,
|
|
80
|
-
padding: DEFAULT_CELL_PADDING + 'px'
|
|
81
|
-
}, _defaultStyles[cssTableCellColor] = {}, _defaultStyles[cssNoClick] = {
|
|
82
|
-
cursor: 'initial'
|
|
83
|
-
}, _defaultStyles[cssHeader] = {
|
|
84
|
-
fontWeight: 'bold'
|
|
85
|
-
}, _defaultStyles[cssRowBackgroundDark] = {}, _defaultStyles[cssRowBackgroundLight] = {}, _defaultStyles);
|
|
86
|
-
|
|
87
|
-
// TODO find a better system, maybe MUI will fix/improve this ?
|
|
88
|
-
// Different from all others because of the poor nested sx support for portals
|
|
89
|
-
// requiring classname sharing/forwarding between the content and the tooltip
|
|
90
|
-
var defaultTooltipSx = {
|
|
91
|
-
maxWidth: '1260px',
|
|
92
|
-
fontSize: '0.9rem'
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
//TODO do we need to export this to clients (index.js) ?
|
|
96
|
-
export var generateMuiVirtualizedTableClass = function generateMuiVirtualizedTableClass(className) {
|
|
97
|
-
return "MuiVirtualizedTable-" + className;
|
|
98
|
-
};
|
|
99
|
-
var composeClasses = makeComposeClasses(generateMuiVirtualizedTableClass);
|
|
100
|
-
var AmongChooser = function AmongChooser(props) {
|
|
101
|
-
var options = props.options,
|
|
102
|
-
value = props.value,
|
|
103
|
-
setValue = props.setValue,
|
|
104
|
-
id = props.id,
|
|
105
|
-
onDropDownVisibility = props.onDropDownVisibility;
|
|
106
|
-
return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Autocomplete, {
|
|
107
|
-
id: id,
|
|
108
|
-
value: value !== null && value !== void 0 ? value : [],
|
|
109
|
-
multiple: true,
|
|
110
|
-
onChange: function onChange(evt, newVal) {
|
|
111
|
-
setValue(newVal);
|
|
112
|
-
},
|
|
113
|
-
onClose: function onClose() {
|
|
114
|
-
return onDropDownVisibility(false);
|
|
115
|
-
},
|
|
116
|
-
onOpen: function onOpen() {
|
|
117
|
-
return onDropDownVisibility(true);
|
|
118
|
-
},
|
|
119
|
-
options: options,
|
|
120
|
-
renderInput: function renderInput(props) {
|
|
121
|
-
return /*#__PURE__*/React.createElement(TextField, _extends({
|
|
122
|
-
autoFocus: true
|
|
123
|
-
}, props));
|
|
124
|
-
},
|
|
125
|
-
renderTags: function renderTags(val, getTagsProps) {
|
|
126
|
-
return val.map(function (code, index) {
|
|
127
|
-
return /*#__PURE__*/React.createElement(Chip, _extends({
|
|
128
|
-
id: 'chip_' + code,
|
|
129
|
-
size: 'small',
|
|
130
|
-
label: code
|
|
131
|
-
}, getTagsProps({
|
|
132
|
-
index: index
|
|
133
|
-
})));
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
}));
|
|
137
|
-
};
|
|
138
|
-
function makeIndexRecord(viewIndexToModel, rows) {
|
|
139
|
-
return {
|
|
140
|
-
viewIndexToModel: viewIndexToModel,
|
|
141
|
-
rowGetter: !viewIndexToModel ? function (viewIndex) {
|
|
142
|
-
return rows[viewIndex];
|
|
143
|
-
} : function (viewIndex) {
|
|
144
|
-
if (viewIndex >= viewIndexToModel.length || viewIndex < 0) {
|
|
145
|
-
return {};
|
|
146
|
-
}
|
|
147
|
-
var modelIndex = viewIndexToModel[viewIndex];
|
|
148
|
-
return rows[modelIndex];
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
var initIndexer = function initIndexer(props, oldProps, versionSetter) {
|
|
153
|
-
if (!props.sortable) {
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
if (props.indexer) {
|
|
157
|
-
return props.indexer;
|
|
158
|
-
}
|
|
159
|
-
return new KeyedColumnsRowIndexer(true, true, null, versionSetter);
|
|
160
|
-
};
|
|
161
|
-
var preFilterData = memoize(function (columns, rows, filterFromProps, indexer, filterVersion // filterVersion is unused directly, used only as a workaround just to reset the memoization
|
|
162
|
-
) {
|
|
163
|
-
return indexer.preFilterRowMapping(columns, rows, filterFromProps);
|
|
164
|
-
});
|
|
165
|
-
var reorderIndex = memoize(function (indexer, indirectionVersion, rows, columns, filterFromProps, sortFromProps) {
|
|
166
|
-
if (!rows) {
|
|
167
|
-
return {
|
|
168
|
-
viewIndexToModel: [],
|
|
169
|
-
rowGetter: function rowGetter(viewIndex) {
|
|
170
|
-
return viewIndex;
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
var highestCodedColumn = !indexer ? 0 : indexer.highestCodedColumn(columns);
|
|
175
|
-
if (sortFromProps && highestCodedColumn) {
|
|
176
|
-
var colIdx = Math.abs(highestCodedColumn) - 1;
|
|
177
|
-
var reorderedIndex = sortFromProps(columns[colIdx].dataKey, highestCodedColumn > 0, !!columns[colIdx].numeric);
|
|
178
|
-
return makeIndexRecord(reorderedIndex, rows);
|
|
179
|
-
}
|
|
180
|
-
if (sortFromProps) {
|
|
181
|
-
try {
|
|
182
|
-
var viewIndexToModel = sortFromProps(null, false, false);
|
|
183
|
-
return makeIndexRecord(viewIndexToModel, rows);
|
|
184
|
-
} catch (e) {
|
|
185
|
-
//some external sort functions may expect to only be called
|
|
186
|
-
//when the user has select a column. Catch their errors and ignore
|
|
187
|
-
console.warn('error in external sort. consider adding support for datakey=null in your external sort function');
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
if (indexer) {
|
|
191
|
-
var prefiltered = preFilterData(columns, rows, filterFromProps, indexer, indirectionVersion);
|
|
192
|
-
var _reorderedIndex = indexer.makeGroupAndSortIndirector(prefiltered, columns);
|
|
193
|
-
return makeIndexRecord(_reorderedIndex, rows);
|
|
194
|
-
}
|
|
195
|
-
if (filterFromProps) {
|
|
196
|
-
var _viewIndexToModel = rows.map(function (r, i) {
|
|
197
|
-
return [r, i];
|
|
198
|
-
}).filter(function (_ref) {
|
|
199
|
-
var r = _ref[0],
|
|
200
|
-
idx = _ref[1];
|
|
201
|
-
return filterFromProps(r);
|
|
202
|
-
}).map(function (_ref2) {
|
|
203
|
-
var r = _ref2[0],
|
|
204
|
-
j = _ref2[1];
|
|
205
|
-
return j;
|
|
206
|
-
});
|
|
207
|
-
return makeIndexRecord(_viewIndexToModel, rows);
|
|
208
|
-
}
|
|
209
|
-
return makeIndexRecord(null, rows);
|
|
210
|
-
});
|
|
211
|
-
var MuiVirtualizedTable = /*#__PURE__*/function (_React$PureComponent) {
|
|
212
|
-
_inheritsLoose(MuiVirtualizedTable, _React$PureComponent);
|
|
213
|
-
function MuiVirtualizedTable(props, context) {
|
|
214
|
-
var _this;
|
|
215
|
-
_this = _React$PureComponent.call(this, props, context) || this;
|
|
216
|
-
_defineProperty(_assertThisInitialized(_this), "setVersion", function (v) {
|
|
217
|
-
_this.setState({
|
|
218
|
-
indirectionVersion: v
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
_defineProperty(_assertThisInitialized(_this), "computeDataWidth", function (text) {
|
|
222
|
-
return getTextWidth(text || '') + 2 * DEFAULT_CELL_PADDING;
|
|
223
|
-
});
|
|
224
|
-
_defineProperty(_assertThisInitialized(_this), "sizes", memoize(function (columns, rows, rowGetter) {
|
|
225
|
-
var sizes = {};
|
|
226
|
-
columns.forEach(function (col) {
|
|
227
|
-
if (col.width) {
|
|
228
|
-
sizes[col.dataKey] = col.width;
|
|
229
|
-
} else {
|
|
230
|
-
/* calculate the header (and min size if exists)
|
|
231
|
-
* NB : ignores the possible icons
|
|
232
|
-
*/
|
|
233
|
-
var size = Math.max(col.minWidth || 0, _this.computeDataWidth(col.label));
|
|
234
|
-
/* calculate for each row the width, and keep the max */
|
|
235
|
-
for (var i = 0; i < rows.length; ++i) {
|
|
236
|
-
var gotRow = rowGetter(i);
|
|
237
|
-
var text = _this.getDisplayValue(col, gotRow[col.dataKey]);
|
|
238
|
-
size = Math.max(size, _this.computeDataWidth(text));
|
|
239
|
-
}
|
|
240
|
-
if (col.maxWidth) {
|
|
241
|
-
size = Math.min(col.maxWidth, size);
|
|
242
|
-
}
|
|
243
|
-
sizes[col.dataKey] = Math.ceil(size);
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
return sizes;
|
|
247
|
-
}));
|
|
248
|
-
_defineProperty(_assertThisInitialized(_this), "openPopover", function (popoverTarget, colKey) {
|
|
249
|
-
var col = _this.props.columns.find(function (c) {
|
|
250
|
-
return c.dataKey === colKey;
|
|
251
|
-
});
|
|
252
|
-
if (getHelper(col) !== collectibleHelper) {
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
_this.dropDownVisible = false;
|
|
256
|
-
_this.setState({
|
|
257
|
-
popoverAnchorEl: popoverTarget,
|
|
258
|
-
popoverColKey: colKey
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
_defineProperty(_assertThisInitialized(_this), "handleKeyDownOnPopover", function (evt) {
|
|
262
|
-
if (evt.key === 'Enter' && !_this.dropDownVisible) {
|
|
263
|
-
_this.closePopover(evt, 'enterKeyDown');
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
_defineProperty(_assertThisInitialized(_this), "closePopover", function (evt, reason) {
|
|
267
|
-
var bumpsVersion = false;
|
|
268
|
-
if (reason === 'backdropClick' || reason === 'enterKeyDown') {
|
|
269
|
-
bumpsVersion = _this._commitFilterChange();
|
|
270
|
-
}
|
|
271
|
-
_this.setState(function (state, props) {
|
|
272
|
-
return {
|
|
273
|
-
popoverAnchorEl: null,
|
|
274
|
-
popoverColKey: null,
|
|
275
|
-
deferredFilterChange: null,
|
|
276
|
-
indirectionVersion: state.indirectionVersion + (bumpsVersion ? 1 : 0)
|
|
277
|
-
};
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
_defineProperty(_assertThisInitialized(_this), "makeColumnFilterEditor", function () {
|
|
281
|
-
var _prefiltered$colsStat, _col$label;
|
|
282
|
-
var colKey = _this.state.popoverColKey;
|
|
283
|
-
var outerParams = _this.state.indexer.getColFilterOuterParams(colKey);
|
|
284
|
-
var userParams = !_this.props.defersFilterChanges || !_this.state.deferredFilterChange ? _this.state.indexer.getColFilterUserParams(colKey) : _this.state.deferredFilterChange.newVal;
|
|
285
|
-
var prefiltered = preFilterData(_this.props.columns, _this.props.rows, _this.props.filter, _this.state.indexer, _this.state.indirectionVersion);
|
|
286
|
-
var options = [];
|
|
287
|
-
if (outerParams) {
|
|
288
|
-
options.push.apply(options, outerParams);
|
|
289
|
-
}
|
|
290
|
-
var colStat = prefiltered === null || prefiltered === void 0 ? void 0 : (_prefiltered$colsStat = prefiltered.colsStats) === null || _prefiltered$colsStat === void 0 ? void 0 : _prefiltered$colsStat[colKey];
|
|
291
|
-
if (colStat === null || colStat === void 0 ? void 0 : colStat.seen) {
|
|
292
|
-
var _loop = function _loop() {
|
|
293
|
-
var key = _step.value;
|
|
294
|
-
if (options.findIndex(function (o) {
|
|
295
|
-
return o === key;
|
|
296
|
-
}) < 0) {
|
|
297
|
-
options.push(key);
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
for (var _iterator = _createForOfIteratorHelperLoose(Object.getOwnPropertyNames(colStat.seen)), _step; !(_step = _iterator()).done;) {
|
|
301
|
-
_loop();
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
options.sort();
|
|
305
|
-
var col = _this.props.columns.find(function (c) {
|
|
306
|
-
return c.dataKey === colKey;
|
|
307
|
-
});
|
|
308
|
-
return /*#__PURE__*/React.createElement(AmongChooser, {
|
|
309
|
-
options: options,
|
|
310
|
-
value: userParams,
|
|
311
|
-
id: 'fielt' + colKey,
|
|
312
|
-
label: (_col$label = col === null || col === void 0 ? void 0 : col.label) !== null && _col$label !== void 0 ? _col$label : "\u2208" // "contained in" math symbol
|
|
313
|
-
,
|
|
314
|
-
setValue: function setValue(newVal) {
|
|
315
|
-
_this.onFilterParamsChange(newVal, colKey);
|
|
316
|
-
},
|
|
317
|
-
onDropDownVisibility: function onDropDownVisibility(visible) {
|
|
318
|
-
return _this.dropDownVisible = visible;
|
|
319
|
-
}
|
|
320
|
-
});
|
|
321
|
-
});
|
|
322
|
-
_defineProperty(_assertThisInitialized(_this), "_commitFilterChange", function () {
|
|
323
|
-
if (_this.state.deferredFilterChange) {
|
|
324
|
-
var _newVal;
|
|
325
|
-
var colKey = _this.state.deferredFilterChange.colKey;
|
|
326
|
-
var newVal = _this.state.deferredFilterChange.newVal;
|
|
327
|
-
if (((_newVal = newVal) === null || _newVal === void 0 ? void 0 : _newVal.length) === 0) {
|
|
328
|
-
newVal = null;
|
|
329
|
-
}
|
|
330
|
-
if (_this.state.indexer.setColFilterUserParams(colKey, newVal)) {
|
|
331
|
-
return true;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
return false;
|
|
335
|
-
});
|
|
336
|
-
_defineProperty(_assertThisInitialized(_this), "sortClickHandler", function (evt, name, columnIndex) {
|
|
337
|
-
var colKey = _this.props.columns[columnIndex].dataKey;
|
|
338
|
-
if (evt.altKey) {
|
|
339
|
-
_this.openPopover(evt.target, colKey);
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
var way = CHANGE_WAYS.SIMPLE;
|
|
343
|
-
if (evt.ctrlKey && evt.shiftKey) {
|
|
344
|
-
way = CHANGE_WAYS.AMEND;
|
|
345
|
-
} else if (evt.ctrlKey) {
|
|
346
|
-
way = CHANGE_WAYS.REMOVE;
|
|
347
|
-
} else if (evt.shiftKey) {
|
|
348
|
-
way = CHANGE_WAYS.TAIL;
|
|
349
|
-
}
|
|
350
|
-
if (_this.state.indexer.updateSortingFromUser(colKey, way)) {
|
|
351
|
-
_this.setState({
|
|
352
|
-
indirectionVersion: _this.state.indirectionVersion + 1
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
});
|
|
356
|
-
_defineProperty(_assertThisInitialized(_this), "filterClickHandler", function (evt, target, columnIndex) {
|
|
357
|
-
var _target$parentNode;
|
|
358
|
-
// ColumnHeader to (header) TableCell
|
|
359
|
-
var retargeted = (_target$parentNode = target.parentNode) !== null && _target$parentNode !== void 0 ? _target$parentNode : target;
|
|
360
|
-
var colKey = _this.props.columns[columnIndex].dataKey;
|
|
361
|
-
_this.openPopover(retargeted, colKey);
|
|
362
|
-
});
|
|
363
|
-
_defineProperty(_assertThisInitialized(_this), "sortableHeader", function (_ref3) {
|
|
364
|
-
var _prefiltered$colsStat2;
|
|
365
|
-
var label = _ref3.label,
|
|
366
|
-
columnIndex = _ref3.columnIndex;
|
|
367
|
-
var columns = _this.props.columns;
|
|
368
|
-
var indexer = _this.state.indexer;
|
|
369
|
-
var colKey = columns[columnIndex].dataKey;
|
|
370
|
-
var signedRank = indexer.columnSortingSignedRank(colKey);
|
|
371
|
-
var userParams = indexer.getColFilterUserParams(colKey);
|
|
372
|
-
var numeric = columns[columnIndex].numeric;
|
|
373
|
-
var prefiltered = preFilterData(columns, _this.props.rows, _this.props.filter, indexer, indexer.filterVersion);
|
|
374
|
-
var colStat = prefiltered === null || prefiltered === void 0 ? void 0 : (_prefiltered$colsStat2 = prefiltered.colsStats) === null || _prefiltered$colsStat2 === void 0 ? void 0 : _prefiltered$colsStat2[colKey];
|
|
375
|
-
var filterLevel = 0;
|
|
376
|
-
if (userParams === null || userParams === void 0 ? void 0 : userParams.length) {
|
|
377
|
-
filterLevel += 1;
|
|
378
|
-
if (!(colStat === null || colStat === void 0 ? void 0 : colStat.seen)) {
|
|
379
|
-
filterLevel += 2;
|
|
380
|
-
} else if (userParams.filter(function (v) {
|
|
381
|
-
return !colStat.seen[v];
|
|
382
|
-
}).length) {
|
|
383
|
-
filterLevel += 2;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
// disable filtering when either:
|
|
388
|
-
// - the column is numeric, we only handle tags for string values
|
|
389
|
-
// - a cellRenderer is defined, as we have no simple way to match for chosen value(s)
|
|
390
|
-
// - using an external sort, because it would hardly know about the indexer filtering
|
|
391
|
-
var onFilterClick = numeric || _this.props.sort || columns[columnIndex].cellRenderer ? undefined : function (ev, retargeted) {
|
|
392
|
-
_this.filterClickHandler(ev, retargeted, columnIndex);
|
|
393
|
-
};
|
|
394
|
-
return /*#__PURE__*/React.createElement(ColumnHeader, {
|
|
395
|
-
label: label,
|
|
396
|
-
ref: function ref(e) {
|
|
397
|
-
return _this._registerHeader(label, e);
|
|
398
|
-
},
|
|
399
|
-
sortSignedRank: signedRank,
|
|
400
|
-
filterLevel: filterLevel,
|
|
401
|
-
numeric: numeric,
|
|
402
|
-
onSortClick: function onSortClick(ev, name) {
|
|
403
|
-
_this.sortClickHandler(ev, name, columnIndex);
|
|
404
|
-
},
|
|
405
|
-
onFilterClick: onFilterClick
|
|
406
|
-
});
|
|
407
|
-
});
|
|
408
|
-
_defineProperty(_assertThisInitialized(_this), "simpleHeaderRenderer", function (_ref4) {
|
|
409
|
-
var label = _ref4.label;
|
|
410
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
411
|
-
ref: function ref(element) {
|
|
412
|
-
_this._registerHeader(label, element);
|
|
413
|
-
}
|
|
414
|
-
}, label);
|
|
415
|
-
});
|
|
416
|
-
_defineProperty(_assertThisInitialized(_this), "getRowClassName", function (_ref5) {
|
|
417
|
-
var _rowGetter, _clsx;
|
|
418
|
-
var index = _ref5.index,
|
|
419
|
-
rowGetter = _ref5.rowGetter;
|
|
420
|
-
var _this$props = _this.props,
|
|
421
|
-
classes = _this$props.classes,
|
|
422
|
-
onRowClick = _this$props.onRowClick;
|
|
423
|
-
return clsx(composeClasses(classes, cssTableRow), composeClasses(classes, cssFlexContainer), index % 2 === 0 && composeClasses(classes, cssRowBackgroundDark), index % 2 !== 0 && composeClasses(classes, cssRowBackgroundLight), ((_rowGetter = rowGetter(index)) === null || _rowGetter === void 0 ? void 0 : _rowGetter.notClickable) === true && composeClasses(classes, cssNoClick), (_clsx = {}, _clsx[composeClasses(classes, cssTableRowHover)] = index !== -1 && onRowClick != null, _clsx));
|
|
424
|
-
});
|
|
425
|
-
_defineProperty(_assertThisInitialized(_this), "onClickableRowClick", function (event) {
|
|
426
|
-
var _event$rowData;
|
|
427
|
-
if (!(((_event$rowData = event.rowData) === null || _event$rowData === void 0 ? void 0 : _event$rowData.notClickable) === true)) {
|
|
428
|
-
_this.props.onRowClick(event);
|
|
429
|
-
}
|
|
430
|
-
});
|
|
431
|
-
_defineProperty(_assertThisInitialized(_this), "cellRenderer", function (_ref6) {
|
|
432
|
-
var _rows$rowIndex, _rows$rowIndex2, _clsx2;
|
|
433
|
-
var cellData = _ref6.cellData,
|
|
434
|
-
columnIndex = _ref6.columnIndex,
|
|
435
|
-
rowIndex = _ref6.rowIndex;
|
|
436
|
-
var _this$props2 = _this.props,
|
|
437
|
-
columns = _this$props2.columns,
|
|
438
|
-
classes = _this$props2.classes,
|
|
439
|
-
rowHeight = _this$props2.rowHeight,
|
|
440
|
-
onCellClick = _this$props2.onCellClick,
|
|
441
|
-
rows = _this$props2.rows,
|
|
442
|
-
tooltipSx = _this$props2.tooltipSx;
|
|
443
|
-
var displayedValue = _this.getDisplayValue(columns[columnIndex], cellData);
|
|
444
|
-
return /*#__PURE__*/React.createElement(TableCell, {
|
|
445
|
-
component: "div",
|
|
446
|
-
className: clsx(composeClasses(classes, cssTableCell), composeClasses(classes, cssFlexContainer), (_clsx2 = {}, _clsx2[composeClasses(classes, cssNoClick)] = displayedValue === undefined || ((_rows$rowIndex = rows[rowIndex]) === null || _rows$rowIndex === void 0 ? void 0 : _rows$rowIndex.notClickable) === true || onCellClick == null || columns[columnIndex].clickable === undefined || !columns[columnIndex].clickable, _clsx2[composeClasses(classes, cssTableCellColor)] = displayedValue === undefined || onCellClick !== null && !((_rows$rowIndex2 = rows[rowIndex]) === null || _rows$rowIndex2 === void 0 ? void 0 : _rows$rowIndex2.notClickable) === true && columns[columnIndex].clickable !== undefined && columns[columnIndex].clickable, _clsx2)),
|
|
447
|
-
variant: "body",
|
|
448
|
-
style: {
|
|
449
|
-
height: rowHeight,
|
|
450
|
-
width: '100%'
|
|
451
|
-
},
|
|
452
|
-
align: columnIndex != null && columns[columnIndex].numeric || false ? 'right' : 'left',
|
|
453
|
-
onClick: function onClick() {
|
|
454
|
-
var _rows$rowIndex3;
|
|
455
|
-
if (onCellClick && columns[columnIndex].clickable !== undefined && !((_rows$rowIndex3 = rows[rowIndex]) === null || _rows$rowIndex3 === void 0 ? void 0 : _rows$rowIndex3.notClickable) === true && columns[columnIndex].clickable) {
|
|
456
|
-
onCellClick(rows[rowIndex], columns[columnIndex]);
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
}, /*#__PURE__*/React.createElement(OverflowableText, {
|
|
460
|
-
text: displayedValue,
|
|
461
|
-
tooltipStyle: classes.cellTooltip,
|
|
462
|
-
tooltipSx: _extends({}, defaultTooltipSx, tooltipSx)
|
|
463
|
-
}));
|
|
464
|
-
});
|
|
465
|
-
_defineProperty(_assertThisInitialized(_this), "makeSizedTable", function (height, width, sizes, reorderedIndex, _rowGetter2) {
|
|
466
|
-
var _reorderedIndex$lengt;
|
|
467
|
-
var _this$props3 = _this.props,
|
|
468
|
-
sort = _this$props3.sort,
|
|
469
|
-
otherProps = _objectWithoutPropertiesLoose(_this$props3, _excluded);
|
|
470
|
-
return /*#__PURE__*/React.createElement(Table, _extends({}, otherProps, {
|
|
471
|
-
height: height,
|
|
472
|
-
width: width,
|
|
473
|
-
rowHeight: otherProps.rowHeight,
|
|
474
|
-
gridStyle: {
|
|
475
|
-
direction: 'inherit'
|
|
476
|
-
},
|
|
477
|
-
headerHeight: _this.state.headerHeight,
|
|
478
|
-
className: composeClasses(otherProps.classes, cssTable),
|
|
479
|
-
onRowClick: _this.props.onRowClick && /* The {...otherProps} just above would hold the slot onRowClick */
|
|
480
|
-
_this.onClickableRowClick,
|
|
481
|
-
rowCount: (_reorderedIndex$lengt = reorderedIndex === null || reorderedIndex === void 0 ? void 0 : reorderedIndex.length) !== null && _reorderedIndex$lengt !== void 0 ? _reorderedIndex$lengt : otherProps.rows.length,
|
|
482
|
-
rowClassName: function rowClassName(_ref7) {
|
|
483
|
-
var index = _ref7.index;
|
|
484
|
-
return _this.getRowClassName({
|
|
485
|
-
index: index,
|
|
486
|
-
rowGetter: _rowGetter2
|
|
487
|
-
});
|
|
488
|
-
},
|
|
489
|
-
rowGetter: function rowGetter(_ref8) {
|
|
490
|
-
var index = _ref8.index;
|
|
491
|
-
return _rowGetter2(index);
|
|
492
|
-
}
|
|
493
|
-
}), otherProps.columns.map(function (_ref9, index) {
|
|
494
|
-
var dataKey = _ref9.dataKey,
|
|
495
|
-
other = _objectWithoutPropertiesLoose(_ref9, _excluded2);
|
|
496
|
-
return /*#__PURE__*/React.createElement(Column, _extends({
|
|
497
|
-
key: dataKey,
|
|
498
|
-
headerRenderer: _this.makeHeaderRenderer(dataKey, index),
|
|
499
|
-
className: composeClasses(otherProps.classes, cssFlexContainer),
|
|
500
|
-
cellRenderer: _this.cellRenderer,
|
|
501
|
-
dataKey: dataKey,
|
|
502
|
-
flexGrow: 1,
|
|
503
|
-
width: sizes[dataKey]
|
|
504
|
-
}, other));
|
|
505
|
-
}));
|
|
506
|
-
});
|
|
507
|
-
_defineProperty(_assertThisInitialized(_this), "getCSVFilename", function () {
|
|
508
|
-
var _this$props$name;
|
|
509
|
-
if (((_this$props$name = _this.props.name) === null || _this$props$name === void 0 ? void 0 : _this$props$name.length) > 0) {
|
|
510
|
-
return _this.props.name.replace(/\s/g, '_');
|
|
511
|
-
} else {
|
|
512
|
-
var filename = Object.entries(_this.props.columns).map(function (p) {
|
|
513
|
-
return p[1].label;
|
|
514
|
-
}).join('_');
|
|
515
|
-
return filename;
|
|
516
|
-
}
|
|
517
|
-
});
|
|
518
|
-
_defineProperty(_assertThisInitialized(_this), "getCSVData", function () {
|
|
519
|
-
var _reorderedIndex$viewI, _reorderedIndex$viewI2;
|
|
520
|
-
var reorderedIndex = reorderIndex(_this.state.indexer, _this.state.indirectionVersion, _this.props.rows, _this.props.columns, _this.props.filter, _this.props.sort);
|
|
521
|
-
var rowsCount = (_reorderedIndex$viewI = (_reorderedIndex$viewI2 = reorderedIndex.viewIndexToModel) === null || _reorderedIndex$viewI2 === void 0 ? void 0 : _reorderedIndex$viewI2.length) !== null && _reorderedIndex$viewI !== void 0 ? _reorderedIndex$viewI : _this.props.rows.length;
|
|
522
|
-
var csvData = [];
|
|
523
|
-
var _loop2 = function _loop2() {
|
|
524
|
-
var myobj = {};
|
|
525
|
-
var sortedRow = reorderedIndex.rowGetter(index);
|
|
526
|
-
var exportedKeys = _this.props.exportCSVDataKeys;
|
|
527
|
-
_this.props.columns.forEach(function (col) {
|
|
528
|
-
if (exportedKeys === null || exportedKeys === void 0 ? void 0 : exportedKeys.find(function (el) {
|
|
529
|
-
return el === col.dataKey;
|
|
530
|
-
})) {
|
|
531
|
-
myobj[col.dataKey] = sortedRow[col.dataKey];
|
|
532
|
-
}
|
|
533
|
-
});
|
|
534
|
-
csvData.push(myobj);
|
|
535
|
-
};
|
|
536
|
-
for (var index = 0; index < rowsCount; ++index) {
|
|
537
|
-
_loop2();
|
|
538
|
-
}
|
|
539
|
-
return Promise.resolve(csvData);
|
|
540
|
-
});
|
|
541
|
-
_defineProperty(_assertThisInitialized(_this), "csvHeaders", memoize(function (columns, exportCSVDataKeys) {
|
|
542
|
-
var tempHeaders = [];
|
|
543
|
-
columns.forEach(function (col) {
|
|
544
|
-
if (exportCSVDataKeys !== undefined && exportCSVDataKeys.find(function (el) {
|
|
545
|
-
return el === col.dataKey;
|
|
546
|
-
})) {
|
|
547
|
-
tempHeaders.push({
|
|
548
|
-
displayName: col.label,
|
|
549
|
-
id: col.dataKey
|
|
550
|
-
});
|
|
551
|
-
}
|
|
552
|
-
});
|
|
553
|
-
return tempHeaders;
|
|
554
|
-
}));
|
|
555
|
-
_this._computeHeaderSize = _this._computeHeaderSize.bind(_assertThisInitialized(_this));
|
|
556
|
-
_this._registerHeader = _this._registerHeader.bind(_assertThisInitialized(_this));
|
|
557
|
-
_this._registerObserver = _this._registerObserver.bind(_assertThisInitialized(_this));
|
|
558
|
-
_this.headers = createRef();
|
|
559
|
-
_this.headers.current = {};
|
|
560
|
-
var _options = {
|
|
561
|
-
root: null,
|
|
562
|
-
rootMargin: '0px',
|
|
563
|
-
threshold: 0.1
|
|
564
|
-
};
|
|
565
|
-
_this.observer = new IntersectionObserver(_this._computeHeaderSize, _options);
|
|
566
|
-
_this.state = {
|
|
567
|
-
headerHeight: _this.props.headerHeight,
|
|
568
|
-
indexer: initIndexer(props, null, _this.setVersion),
|
|
569
|
-
indirectionVersion: 0,
|
|
570
|
-
popoverAnchorEl: null,
|
|
571
|
-
popoverColKey: null,
|
|
572
|
-
deferredFilterChange: null
|
|
573
|
-
};
|
|
574
|
-
return _this;
|
|
575
|
-
}
|
|
576
|
-
var _proto = MuiVirtualizedTable.prototype;
|
|
577
|
-
_proto.componentDidUpdate = function componentDidUpdate(oldProps) {
|
|
578
|
-
var _this2 = this;
|
|
579
|
-
if (oldProps.indexer !== this.props.indexer || oldProps.sortable !== this.props.sortable) {
|
|
580
|
-
this.setState(function (state) {
|
|
581
|
-
var _state$indirectionVer;
|
|
582
|
-
return {
|
|
583
|
-
indexer: initIndexer(_this2.props, oldProps, _this2.setVersion),
|
|
584
|
-
indirectionVersion: ((_state$indirectionVer = state === null || state === void 0 ? void 0 : state.indirectionVersion) !== null && _state$indirectionVer !== void 0 ? _state$indirectionVer : 0) + 1
|
|
585
|
-
};
|
|
586
|
-
});
|
|
587
|
-
}
|
|
588
|
-
if (oldProps.headerHeight !== this.props.headerHeight) {
|
|
589
|
-
this._computeHeaderSize();
|
|
590
|
-
}
|
|
591
|
-
};
|
|
592
|
-
_proto.componentDidMount = function componentDidMount() {
|
|
593
|
-
window.addEventListener('resize', this._computeHeaderSize);
|
|
594
|
-
};
|
|
595
|
-
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
596
|
-
window.removeEventListener('resize', this._computeHeaderSize);
|
|
597
|
-
this.observer.disconnect();
|
|
598
|
-
};
|
|
599
|
-
_proto._registerHeader = function _registerHeader(label, header) {
|
|
600
|
-
if (header !== null) {
|
|
601
|
-
this.headers.current[label] = header;
|
|
602
|
-
}
|
|
603
|
-
};
|
|
604
|
-
_proto._registerObserver = function _registerObserver(element) {
|
|
605
|
-
if (element !== null) {
|
|
606
|
-
this.observer.observe(element);
|
|
607
|
-
}
|
|
608
|
-
};
|
|
609
|
-
_proto.onFilterParamsChange = function onFilterParamsChange(newVal, colKey) {
|
|
610
|
-
var nonEmpty = newVal.length === 0 ? null : newVal;
|
|
611
|
-
if (this.props.defersFilterChanges) {
|
|
612
|
-
this.setState({
|
|
613
|
-
deferredFilterChange: {
|
|
614
|
-
newVal: newVal,
|
|
615
|
-
colKey: colKey
|
|
616
|
-
}
|
|
617
|
-
});
|
|
618
|
-
} else if (this.state.indexer.setColFilterUserParams(colKey, nonEmpty)) {
|
|
619
|
-
this.setState({
|
|
620
|
-
indirectionVersion: this.state.indirectionVersion + 1
|
|
621
|
-
});
|
|
622
|
-
}
|
|
623
|
-
};
|
|
624
|
-
_proto.getDisplayValue = function getDisplayValue(column, cellData) {
|
|
625
|
-
var displayedValue;
|
|
626
|
-
if (!column.numeric) {
|
|
627
|
-
displayedValue = cellData;
|
|
628
|
-
} else if (isNaN(cellData)) {
|
|
629
|
-
displayedValue = '';
|
|
630
|
-
} else if (column.fractionDigits === undefined || column.fractionDigits === 0) {
|
|
631
|
-
displayedValue = Math.round(cellData);
|
|
632
|
-
} else {
|
|
633
|
-
displayedValue = Number(cellData).toFixed(column.fractionDigits);
|
|
634
|
-
}
|
|
635
|
-
if (column.unit !== undefined) {
|
|
636
|
-
displayedValue += ' ';
|
|
637
|
-
displayedValue += column.unit;
|
|
638
|
-
}
|
|
639
|
-
return displayedValue;
|
|
640
|
-
};
|
|
641
|
-
_proto._computeHeaderSize = function _computeHeaderSize() {
|
|
642
|
-
var headers = Object.values(this.headers.current);
|
|
643
|
-
if (headers.length === 0) {
|
|
644
|
-
return;
|
|
645
|
-
}
|
|
646
|
-
// for now keep 'historical' use of scrollHeight,
|
|
647
|
-
// though it can not make a difference from clientHeight,
|
|
648
|
-
// as overflow-y as no scroll value
|
|
649
|
-
var scrollHeights = headers.map(function (header) {
|
|
650
|
-
return header.scrollHeight;
|
|
651
|
-
});
|
|
652
|
-
var headerHeight = Math.max(Math.max.apply(Math, scrollHeights) + DEFAULT_CELL_PADDING, this.props.headerHeight
|
|
653
|
-
// hides (most often) padding override by forcing height
|
|
654
|
-
);
|
|
655
|
-
|
|
656
|
-
if (headerHeight !== this.state.headerHeight) {
|
|
657
|
-
this.setState({
|
|
658
|
-
headerHeight: headerHeight
|
|
659
|
-
});
|
|
660
|
-
}
|
|
661
|
-
};
|
|
662
|
-
_proto.makeHeaderRenderer = function makeHeaderRenderer(dataKey, columnIndex) {
|
|
663
|
-
var _this3 = this;
|
|
664
|
-
var _this$props4 = this.props,
|
|
665
|
-
columns = _this$props4.columns,
|
|
666
|
-
classes = _this$props4.classes;
|
|
667
|
-
return function (headerProps) {
|
|
668
|
-
return /*#__PURE__*/React.createElement(TableCell, {
|
|
669
|
-
component: "div",
|
|
670
|
-
className: clsx(composeClasses(classes, cssTableCell), composeClasses(classes, cssFlexContainer), composeClasses(classes, cssNoClick), composeClasses(classes, cssHeader)),
|
|
671
|
-
variant: "head",
|
|
672
|
-
style: {
|
|
673
|
-
height: _this3.state.headerHeight
|
|
674
|
-
},
|
|
675
|
-
align: columns[columnIndex].numeric || false ? 'right' : 'left',
|
|
676
|
-
ref: function ref(e) {
|
|
677
|
-
return _this3._registerObserver(e);
|
|
678
|
-
}
|
|
679
|
-
}, _this3.props.sortable && _this3.state.indexer ? _this3.sortableHeader(_extends({}, headerProps, {
|
|
680
|
-
columnIndex: columnIndex,
|
|
681
|
-
key: {
|
|
682
|
-
dataKey: dataKey
|
|
683
|
-
}
|
|
684
|
-
})) : _this3.simpleHeaderRenderer(_extends({}, headerProps)), columns[columnIndex].extra && columns[columnIndex].extra);
|
|
685
|
-
};
|
|
686
|
-
};
|
|
687
|
-
_proto.render = function render() {
|
|
688
|
-
var _this4 = this;
|
|
689
|
-
var _reorderIndex = reorderIndex(this.state.indexer, this.state.indirectionVersion, this.props.rows, this.props.columns, this.props.filter, this.props.sort),
|
|
690
|
-
viewIndexToModel = _reorderIndex.viewIndexToModel,
|
|
691
|
-
rowGetter = _reorderIndex.rowGetter;
|
|
692
|
-
var sizes = this.sizes(this.props.columns, this.props.rows, rowGetter);
|
|
693
|
-
var csvHeaders = this.csvHeaders(this.props.columns, this.props.exportCSVDataKeys);
|
|
694
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
695
|
-
style: {
|
|
696
|
-
display: 'flex',
|
|
697
|
-
flexDirection: 'column',
|
|
698
|
-
height: '100%'
|
|
699
|
-
},
|
|
700
|
-
className: this.props.className
|
|
701
|
-
}, this.props.enableExportCSV && /*#__PURE__*/React.createElement("div", {
|
|
702
|
-
style: {
|
|
703
|
-
display: 'flex',
|
|
704
|
-
justifyContent: 'flex-end',
|
|
705
|
-
alignItems: 'center'
|
|
706
|
-
}
|
|
707
|
-
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
708
|
-
id: "MuiVirtualizedTable/exportCSV"
|
|
709
|
-
}), /*#__PURE__*/React.createElement(CsvDownloader, {
|
|
710
|
-
datas: this.getCSVData,
|
|
711
|
-
columns: csvHeaders,
|
|
712
|
-
filename: this.getCSVFilename()
|
|
713
|
-
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
714
|
-
"aria-label": "exportCSVButton",
|
|
715
|
-
size: "large"
|
|
716
|
-
}, /*#__PURE__*/React.createElement(GetAppIcon, null)))), /*#__PURE__*/React.createElement("div", {
|
|
717
|
-
style: {
|
|
718
|
-
flexGrow: 1
|
|
719
|
-
}
|
|
720
|
-
}, /*#__PURE__*/React.createElement(AutoSizer, null, function (_ref10) {
|
|
721
|
-
var height = _ref10.height,
|
|
722
|
-
width = _ref10.width;
|
|
723
|
-
return _this4.makeSizedTable(height, width, sizes, viewIndexToModel, rowGetter);
|
|
724
|
-
})), this.state.popoverAnchorEl && /*#__PURE__*/React.createElement(Popover, {
|
|
725
|
-
anchorEl: this.state.popoverAnchorEl,
|
|
726
|
-
anchorOrigin: {
|
|
727
|
-
vertical: 'bottom',
|
|
728
|
-
horizontal: 'left'
|
|
729
|
-
},
|
|
730
|
-
transformOrigin: {
|
|
731
|
-
vertical: 'top',
|
|
732
|
-
horizontal: 'left'
|
|
733
|
-
},
|
|
734
|
-
onKeyDownCapture: this.handleKeyDownOnPopover,
|
|
735
|
-
onClose: this.closePopover,
|
|
736
|
-
open: !!this.state.popoverAnchorEl,
|
|
737
|
-
PaperProps: {
|
|
738
|
-
style: {
|
|
739
|
-
minWidth: '20ex'
|
|
740
|
-
}
|
|
741
|
-
}
|
|
742
|
-
}, this.makeColumnFilterEditor()));
|
|
743
|
-
};
|
|
744
|
-
return MuiVirtualizedTable;
|
|
745
|
-
}(React.PureComponent);
|
|
746
|
-
_defineProperty(MuiVirtualizedTable, "defaultProps", {
|
|
747
|
-
headerHeight: DEFAULT_HEADER_HEIGHT,
|
|
748
|
-
rowHeight: DEFAULT_ROW_HEIGHT,
|
|
749
|
-
enableExportCSV: false,
|
|
750
|
-
classes: {}
|
|
751
|
-
});
|
|
752
|
-
MuiVirtualizedTable.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
753
|
-
name: PropTypes.string,
|
|
754
|
-
classes: PropTypes.object,
|
|
755
|
-
rows: PropTypes.array,
|
|
756
|
-
columns: PropTypes.arrayOf(PropTypes.shape({
|
|
757
|
-
dataKey: PropTypes.string.isRequired,
|
|
758
|
-
label: PropTypes.string.isRequired,
|
|
759
|
-
numeric: PropTypes.bool,
|
|
760
|
-
width: PropTypes.number,
|
|
761
|
-
minWidth: PropTypes.number,
|
|
762
|
-
maxWidth: PropTypes.number,
|
|
763
|
-
unit: PropTypes.string,
|
|
764
|
-
fractionDigits: PropTypes.number,
|
|
765
|
-
extra: PropTypes.element
|
|
766
|
-
})).isRequired,
|
|
767
|
-
enableExportCSV: PropTypes.bool,
|
|
768
|
-
exportCSVDataKeys: PropTypes.array,
|
|
769
|
-
sort: PropTypes.func,
|
|
770
|
-
sortable: PropTypes.bool,
|
|
771
|
-
indexer: PropTypes.object,
|
|
772
|
-
headerHeight: PropTypes.number,
|
|
773
|
-
onRowClick: PropTypes.func,
|
|
774
|
-
onCellClick: PropTypes.func,
|
|
775
|
-
rowHeight: PropTypes.number,
|
|
776
|
-
filter: PropTypes.func,
|
|
777
|
-
tooltipSx: PropTypes.object
|
|
778
|
-
} : {};
|
|
779
|
-
var nestedGlobalSelectorsStyles = toNestedGlobalSelectors(defaultStyles, generateMuiVirtualizedTableClass);
|
|
780
|
-
export default styled(MuiVirtualizedTable)(nestedGlobalSelectorsStyles);
|