@mui/x-data-grid 7.5.0 → 7.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -5417
- package/DataGrid/DataGrid.js +1 -1
- package/components/GridColumnHeaders.js +1 -1
- package/components/GridFooter.js +1 -1
- package/components/GridLoadingOverlay.js +1 -1
- package/components/GridNoRowsOverlay.js +1 -1
- package/components/GridPagination.js +1 -1
- package/components/GridRow.js +1 -1
- package/components/GridRowCount.js +1 -1
- package/components/GridScrollArea.d.ts +2 -5
- package/components/GridScrollArea.js +1 -10
- package/components/GridSelectedRowCount.js +1 -1
- package/components/base/GridOverlays.js +1 -1
- package/components/cell/GridActionsCell.js +1 -1
- package/components/cell/GridActionsCellItem.js +1 -1
- package/components/cell/GridBooleanCell.js +1 -1
- package/components/cell/GridCell.js +1 -1
- package/components/cell/GridEditBooleanCell.js +1 -1
- package/components/cell/GridEditDateCell.js +1 -1
- package/components/cell/GridEditInputCell.js +1 -1
- package/components/cell/GridEditSingleSelectCell.js +1 -1
- package/components/cell/GridSkeletonCell.js +1 -1
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -1
- package/components/columnHeaders/GridColumnHeaderItem.js +1 -1
- package/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
- package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
- package/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
- package/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
- package/components/columnSelection/GridHeaderCheckbox.js +1 -1
- package/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/components/containers/GridFooterContainer.js +1 -1
- package/components/containers/GridOverlay.js +1 -1
- package/components/containers/GridRoot.js +1 -1
- package/components/containers/GridToolbarContainer.js +1 -1
- package/components/menu/GridMenu.js +1 -1
- package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/components/menu/columnMenu/GridColumnMenuContainer.js +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
- package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/components/panel/GridColumnsPanel.js +1 -1
- package/components/panel/GridPanel.js +1 -1
- package/components/panel/GridPanelContent.js +1 -1
- package/components/panel/GridPanelFooter.js +1 -1
- package/components/panel/GridPanelHeader.js +1 -1
- package/components/panel/GridPanelWrapper.js +1 -1
- package/components/panel/filterPanel/GridFilterForm.js +1 -1
- package/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
- package/components/panel/filterPanel/GridFilterInputDate.js +1 -1
- package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -1
- package/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
- package/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
- package/components/panel/filterPanel/GridFilterInputValue.js +1 -1
- package/components/panel/filterPanel/GridFilterPanel.js +1 -1
- package/components/toolbar/GridToolbar.js +1 -1
- package/components/toolbar/GridToolbarColumnsButton.js +1 -1
- package/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/components/toolbar/GridToolbarExport.js +1 -1
- package/components/toolbar/GridToolbarExportContainer.js +1 -1
- package/components/toolbar/GridToolbarFilterButton.js +1 -1
- package/components/toolbar/GridToolbarQuickFilter.js +1 -1
- package/hooks/features/clipboard/useGridClipboard.js +8 -5
- package/hooks/features/export/serializers/csvSerializer.d.ts +3 -6
- package/hooks/features/export/serializers/csvSerializer.js +28 -32
- package/hooks/features/export/useGridCsvExport.js +8 -5
- package/index.js +1 -1
- package/models/gridExport.d.ts +7 -0
- package/modern/DataGrid/DataGrid.js +1 -1
- package/modern/components/GridColumnHeaders.js +1 -1
- package/modern/components/GridFooter.js +1 -1
- package/modern/components/GridLoadingOverlay.js +1 -1
- package/modern/components/GridNoRowsOverlay.js +1 -1
- package/modern/components/GridPagination.js +1 -1
- package/modern/components/GridRow.js +1 -1
- package/modern/components/GridRowCount.js +1 -1
- package/modern/components/GridScrollArea.js +1 -10
- package/modern/components/GridSelectedRowCount.js +1 -1
- package/modern/components/base/GridOverlays.js +1 -1
- package/modern/components/cell/GridActionsCell.js +1 -1
- package/modern/components/cell/GridActionsCellItem.js +1 -1
- package/modern/components/cell/GridBooleanCell.js +1 -1
- package/modern/components/cell/GridCell.js +1 -1
- package/modern/components/cell/GridEditBooleanCell.js +1 -1
- package/modern/components/cell/GridEditDateCell.js +1 -1
- package/modern/components/cell/GridEditInputCell.js +1 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +1 -1
- package/modern/components/cell/GridSkeletonCell.js +1 -1
- package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -1
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +1 -1
- package/modern/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
- package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
- package/modern/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
- package/modern/components/columnSelection/GridHeaderCheckbox.js +1 -1
- package/modern/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/modern/components/containers/GridFooterContainer.js +1 -1
- package/modern/components/containers/GridOverlay.js +1 -1
- package/modern/components/containers/GridRoot.js +1 -1
- package/modern/components/containers/GridToolbarContainer.js +1 -1
- package/modern/components/menu/GridMenu.js +1 -1
- package/modern/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/modern/components/menu/columnMenu/GridColumnMenuContainer.js +1 -1
- package/modern/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +1 -1
- package/modern/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
- package/modern/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
- package/modern/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
- package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/modern/components/panel/GridColumnsPanel.js +1 -1
- package/modern/components/panel/GridPanel.js +1 -1
- package/modern/components/panel/GridPanelContent.js +1 -1
- package/modern/components/panel/GridPanelFooter.js +1 -1
- package/modern/components/panel/GridPanelHeader.js +1 -1
- package/modern/components/panel/GridPanelWrapper.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterForm.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
- package/modern/components/panel/filterPanel/GridFilterPanel.js +1 -1
- package/modern/components/toolbar/GridToolbar.js +1 -1
- package/modern/components/toolbar/GridToolbarColumnsButton.js +1 -1
- package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/modern/components/toolbar/GridToolbarExport.js +1 -1
- package/modern/components/toolbar/GridToolbarExportContainer.js +1 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +1 -1
- package/modern/components/toolbar/GridToolbarQuickFilter.js +1 -1
- package/modern/hooks/features/clipboard/useGridClipboard.js +8 -5
- package/modern/hooks/features/export/serializers/csvSerializer.js +28 -32
- package/modern/hooks/features/export/useGridCsvExport.js +8 -5
- package/modern/index.js +1 -1
- package/node/DataGrid/DataGrid.js +1 -1
- package/node/components/GridColumnHeaders.js +1 -1
- package/node/components/GridFooter.js +1 -1
- package/node/components/GridLoadingOverlay.js +1 -1
- package/node/components/GridNoRowsOverlay.js +1 -1
- package/node/components/GridPagination.js +1 -1
- package/node/components/GridRow.js +1 -1
- package/node/components/GridRowCount.js +1 -1
- package/node/components/GridScrollArea.js +0 -8
- package/node/components/GridSelectedRowCount.js +1 -1
- package/node/components/base/GridOverlays.js +1 -1
- package/node/components/cell/GridActionsCell.js +1 -1
- package/node/components/cell/GridActionsCellItem.js +1 -1
- package/node/components/cell/GridBooleanCell.js +1 -1
- package/node/components/cell/GridCell.js +1 -1
- package/node/components/cell/GridEditBooleanCell.js +1 -1
- package/node/components/cell/GridEditDateCell.js +1 -1
- package/node/components/cell/GridEditInputCell.js +1 -1
- package/node/components/cell/GridEditSingleSelectCell.js +1 -1
- package/node/components/cell/GridSkeletonCell.js +1 -1
- package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -1
- package/node/components/columnHeaders/GridColumnHeaderItem.js +1 -1
- package/node/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
- package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
- package/node/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
- package/node/components/columnSelection/GridHeaderCheckbox.js +1 -1
- package/node/components/columnsManagement/GridColumnsManagement.js +1 -1
- package/node/components/containers/GridFooterContainer.js +1 -1
- package/node/components/containers/GridOverlay.js +1 -1
- package/node/components/containers/GridRoot.js +1 -1
- package/node/components/containers/GridToolbarContainer.js +1 -1
- package/node/components/menu/GridMenu.js +1 -1
- package/node/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
- package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
- package/node/components/menu/columnMenu/GridColumnMenuContainer.js +1 -1
- package/node/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +1 -1
- package/node/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
- package/node/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
- package/node/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
- package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
- package/node/components/panel/GridColumnsPanel.js +1 -1
- package/node/components/panel/GridPanel.js +1 -1
- package/node/components/panel/GridPanelContent.js +1 -1
- package/node/components/panel/GridPanelFooter.js +1 -1
- package/node/components/panel/GridPanelHeader.js +1 -1
- package/node/components/panel/GridPanelWrapper.js +1 -1
- package/node/components/panel/filterPanel/GridFilterForm.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
- package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
- package/node/components/panel/filterPanel/GridFilterPanel.js +1 -1
- package/node/components/toolbar/GridToolbar.js +1 -1
- package/node/components/toolbar/GridToolbarColumnsButton.js +1 -1
- package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
- package/node/components/toolbar/GridToolbarExport.js +1 -1
- package/node/components/toolbar/GridToolbarExportContainer.js +1 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +1 -1
- package/node/components/toolbar/GridToolbarQuickFilter.js +1 -1
- package/node/hooks/features/clipboard/useGridClipboard.js +8 -5
- package/node/hooks/features/export/serializers/csvSerializer.js +28 -32
- package/node/hooks/features/export/useGridCsvExport.js +8 -5
- package/node/index.js +1 -1
- package/package.json +1 -1
|
@@ -136,7 +136,7 @@ function GridToolbarQuickFilter(props) {
|
|
|
136
136
|
process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
|
|
137
137
|
// ----------------------------- Warning --------------------------------
|
|
138
138
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
139
|
-
// | To update them edit the TypeScript types and run "
|
|
139
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
140
140
|
// ----------------------------------------------------------------------
|
|
141
141
|
/**
|
|
142
142
|
* The debounce time in milliseconds.
|
|
@@ -74,18 +74,21 @@ const useGridClipboard = (apiRef, props) => {
|
|
|
74
74
|
if (selectedRows.size > 0) {
|
|
75
75
|
textToCopy = apiRef.current.getDataAsCsv({
|
|
76
76
|
includeHeaders: false,
|
|
77
|
-
// TODO: make it configurable
|
|
78
77
|
delimiter: clipboardCopyCellDelimiter,
|
|
79
|
-
shouldAppendQuotes: false
|
|
78
|
+
shouldAppendQuotes: false,
|
|
79
|
+
escapeFormulas: false
|
|
80
80
|
});
|
|
81
81
|
} else {
|
|
82
82
|
const focusedCell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
|
|
83
83
|
if (focusedCell) {
|
|
84
84
|
const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);
|
|
85
85
|
textToCopy = (0, _csvSerializer.serializeCellValue)(cellParams, {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
csvOptions: {
|
|
87
|
+
delimiter: clipboardCopyCellDelimiter,
|
|
88
|
+
shouldAppendQuotes: false,
|
|
89
|
+
escapeFormulas: false
|
|
90
|
+
},
|
|
91
|
+
ignoreValueFormatter
|
|
89
92
|
});
|
|
90
93
|
}
|
|
91
94
|
}
|
|
@@ -7,14 +7,20 @@ exports.buildCSV = buildCSV;
|
|
|
7
7
|
exports.serializeCellValue = void 0;
|
|
8
8
|
var _colDef = require("../../../../colDef");
|
|
9
9
|
var _warning = require("../../../../utils/warning");
|
|
10
|
-
function sanitizeCellValue(value,
|
|
10
|
+
function sanitizeCellValue(value, csvOptions) {
|
|
11
11
|
if (typeof value === 'string') {
|
|
12
|
-
if (shouldAppendQuotes) {
|
|
12
|
+
if (csvOptions.shouldAppendQuotes || csvOptions.escapeFormulas) {
|
|
13
13
|
const escapedValue = value.replace(/"/g, '""');
|
|
14
|
-
// Make sure value containing delimiter or line break won't be split into multiple
|
|
15
|
-
if ([
|
|
14
|
+
// Make sure value containing delimiter or line break won't be split into multiple cells
|
|
15
|
+
if ([csvOptions.delimiter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
|
|
16
16
|
return `"${escapedValue}"`;
|
|
17
17
|
}
|
|
18
|
+
if (csvOptions.escapeFormulas) {
|
|
19
|
+
// See https://owasp.org/www-community/attacks/CSV_Injection
|
|
20
|
+
if (['=', '+', '-', '@', '\t', '\r'].includes(escapedValue[0])) {
|
|
21
|
+
return `'${escapedValue}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
18
24
|
return escapedValue;
|
|
19
25
|
}
|
|
20
26
|
return value;
|
|
@@ -23,9 +29,8 @@ function sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes) {
|
|
|
23
29
|
}
|
|
24
30
|
const serializeCellValue = (cellParams, options) => {
|
|
25
31
|
const {
|
|
26
|
-
|
|
27
|
-
ignoreValueFormatter
|
|
28
|
-
shouldAppendQuotes
|
|
32
|
+
csvOptions,
|
|
33
|
+
ignoreValueFormatter
|
|
29
34
|
} = options;
|
|
30
35
|
let value;
|
|
31
36
|
if (ignoreValueFormatter) {
|
|
@@ -42,7 +47,7 @@ const serializeCellValue = (cellParams, options) => {
|
|
|
42
47
|
} else {
|
|
43
48
|
value = cellParams.formattedValue;
|
|
44
49
|
}
|
|
45
|
-
return sanitizeCellValue(value,
|
|
50
|
+
return sanitizeCellValue(value, csvOptions);
|
|
46
51
|
};
|
|
47
52
|
exports.serializeCellValue = serializeCellValue;
|
|
48
53
|
const objectFormattedValueWarning = (0, _warning.buildWarning)(['MUI X: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
|
|
@@ -55,12 +60,12 @@ class CSVRow {
|
|
|
55
60
|
}
|
|
56
61
|
addValue(value) {
|
|
57
62
|
if (!this.isEmpty) {
|
|
58
|
-
this.rowString += this.options.
|
|
63
|
+
this.rowString += this.options.csvOptions.delimiter;
|
|
59
64
|
}
|
|
60
65
|
if (value === null || value === undefined) {
|
|
61
66
|
this.rowString += '';
|
|
62
67
|
} else if (typeof this.options.sanitizeCellValue === 'function') {
|
|
63
|
-
this.rowString += this.options.sanitizeCellValue(value, this.options.
|
|
68
|
+
this.rowString += this.options.sanitizeCellValue(value, this.options.csvOptions);
|
|
64
69
|
} else {
|
|
65
70
|
this.rowString += value;
|
|
66
71
|
}
|
|
@@ -74,13 +79,11 @@ const serializeRow = ({
|
|
|
74
79
|
id,
|
|
75
80
|
columns,
|
|
76
81
|
getCellParams,
|
|
77
|
-
|
|
78
|
-
ignoreValueFormatter
|
|
79
|
-
shouldAppendQuotes
|
|
82
|
+
csvOptions,
|
|
83
|
+
ignoreValueFormatter
|
|
80
84
|
}) => {
|
|
81
85
|
const row = new CSVRow({
|
|
82
|
-
|
|
83
|
-
shouldAppendQuotes
|
|
86
|
+
csvOptions
|
|
84
87
|
});
|
|
85
88
|
columns.forEach(column => {
|
|
86
89
|
const cellParams = getCellParams(id, column.field);
|
|
@@ -90,9 +93,8 @@ const serializeRow = ({
|
|
|
90
93
|
}
|
|
91
94
|
}
|
|
92
95
|
row.addValue(serializeCellValue(cellParams, {
|
|
93
|
-
delimiterCharacter,
|
|
94
96
|
ignoreValueFormatter,
|
|
95
|
-
|
|
97
|
+
csvOptions
|
|
96
98
|
}));
|
|
97
99
|
});
|
|
98
100
|
return row.getRowString();
|
|
@@ -101,27 +103,23 @@ function buildCSV(options) {
|
|
|
101
103
|
const {
|
|
102
104
|
columns,
|
|
103
105
|
rowIds,
|
|
104
|
-
|
|
105
|
-
includeHeaders,
|
|
106
|
-
includeColumnGroupsHeaders,
|
|
106
|
+
csvOptions,
|
|
107
107
|
ignoreValueFormatter,
|
|
108
|
-
apiRef
|
|
109
|
-
shouldAppendQuotes
|
|
108
|
+
apiRef
|
|
110
109
|
} = options;
|
|
111
110
|
const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({
|
|
112
111
|
id,
|
|
113
112
|
columns,
|
|
114
113
|
getCellParams: apiRef.current.getCellParams,
|
|
115
|
-
delimiterCharacter,
|
|
116
114
|
ignoreValueFormatter,
|
|
117
|
-
|
|
115
|
+
csvOptions
|
|
118
116
|
})}\r\n`, '').trim();
|
|
119
|
-
if (!includeHeaders) {
|
|
117
|
+
if (!csvOptions.includeHeaders) {
|
|
120
118
|
return CSVBody;
|
|
121
119
|
}
|
|
122
120
|
const filteredColumns = columns.filter(column => column.field !== _colDef.GRID_CHECKBOX_SELECTION_COL_DEF.field);
|
|
123
121
|
const headerRows = [];
|
|
124
|
-
if (includeColumnGroupsHeaders) {
|
|
122
|
+
if (csvOptions.includeColumnGroupsHeaders) {
|
|
125
123
|
const columnGroupLookup = apiRef.current.getAllGroupDetails();
|
|
126
124
|
let maxColumnGroupsDepth = 0;
|
|
127
125
|
const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {
|
|
@@ -132,9 +130,8 @@ function buildCSV(options) {
|
|
|
132
130
|
}, {});
|
|
133
131
|
for (let i = 0; i < maxColumnGroupsDepth; i += 1) {
|
|
134
132
|
const headerGroupRow = new CSVRow({
|
|
135
|
-
|
|
136
|
-
sanitizeCellValue
|
|
137
|
-
shouldAppendQuotes
|
|
133
|
+
csvOptions,
|
|
134
|
+
sanitizeCellValue
|
|
138
135
|
});
|
|
139
136
|
headerRows.push(headerGroupRow);
|
|
140
137
|
filteredColumns.forEach(column => {
|
|
@@ -145,9 +142,8 @@ function buildCSV(options) {
|
|
|
145
142
|
}
|
|
146
143
|
}
|
|
147
144
|
const mainHeaderRow = new CSVRow({
|
|
148
|
-
|
|
149
|
-
sanitizeCellValue
|
|
150
|
-
shouldAppendQuotes
|
|
145
|
+
csvOptions,
|
|
146
|
+
sanitizeCellValue
|
|
151
147
|
});
|
|
152
148
|
filteredColumns.forEach(column => {
|
|
153
149
|
mainHeaderRow.addValue(column.headerName || column.field);
|
|
@@ -39,12 +39,15 @@ const useGridCsvExport = (apiRef, props) => {
|
|
|
39
39
|
return (0, _csvSerializer.buildCSV)({
|
|
40
40
|
columns: exportedColumns,
|
|
41
41
|
rowIds: exportedRowIds,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
csvOptions: {
|
|
43
|
+
delimiter: options.delimiter || ',',
|
|
44
|
+
shouldAppendQuotes: options.shouldAppendQuotes ?? true,
|
|
45
|
+
includeHeaders: options.includeHeaders ?? true,
|
|
46
|
+
includeColumnGroupsHeaders: options.includeColumnGroupsHeaders ?? true,
|
|
47
|
+
escapeFormulas: options.escapeFormulas ?? true
|
|
48
|
+
},
|
|
45
49
|
ignoreValueFormatter,
|
|
46
|
-
apiRef
|
|
47
|
-
shouldAppendQuotes: options.shouldAppendQuotes ?? true
|
|
50
|
+
apiRef
|
|
48
51
|
});
|
|
49
52
|
}, [logger, apiRef, ignoreValueFormatter]);
|
|
50
53
|
const exportDataAsCsv = React.useCallback(options => {
|
package/node/index.js
CHANGED