@mui/x-data-grid 6.3.1 → 6.5.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.
Files changed (349) hide show
  1. package/CHANGELOG.md +113 -0
  2. package/DataGrid/DataGrid.js +20 -1
  3. package/DataGrid/useDataGridComponent.js +2 -2
  4. package/DataGrid/useDataGridProps.js +8 -13
  5. package/colDef/gridBooleanColDef.js +19 -1
  6. package/colDef/gridDateColDef.js +6 -2
  7. package/colDef/gridNumericOperators.js +0 -6
  8. package/colDef/gridSingleSelectColDef.js +21 -1
  9. package/components/base/GridBody.js +2 -1
  10. package/components/cell/GridEditInputCell.js +4 -1
  11. package/components/containers/GridRootStyles.js +1 -0
  12. package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +15 -2
  13. package/components/panel/filterPanel/GridFilterInputBoolean.js +80 -36
  14. package/components/panel/filterPanel/GridFilterInputDate.d.ts +8 -1
  15. package/components/panel/filterPanel/GridFilterInputDate.js +27 -6
  16. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  17. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  18. package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +8 -1
  19. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +55 -32
  20. package/components/panel/filterPanel/GridFilterInputValue.d.ts +11 -4
  21. package/components/panel/filterPanel/GridFilterInputValue.js +29 -6
  22. package/components/panel/filterPanel/GridFilterPanel.d.ts +2 -1
  23. package/components/panel/filterPanel/GridFilterPanel.js +1 -1
  24. package/components/panel/filterPanel/index.d.ts +3 -1
  25. package/components/panel/filterPanel/index.js +2 -1
  26. package/constants/localeTextConstants.js +26 -0
  27. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +12 -1
  28. package/hooks/features/clipboard/useGridClipboard.d.ts +2 -1
  29. package/hooks/features/clipboard/useGridClipboard.js +43 -26
  30. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +9 -2
  31. package/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
  32. package/hooks/features/dimensions/useGridDimensions.js +4 -6
  33. package/hooks/features/editing/useGridCellEditing.js +7 -3
  34. package/hooks/features/editing/useGridEditing.js +0 -3
  35. package/hooks/features/editing/useGridRowEditing.js +7 -3
  36. package/hooks/features/export/serializers/csvSerializer.d.ts +5 -0
  37. package/hooks/features/export/serializers/csvSerializer.js +46 -6
  38. package/hooks/features/export/useGridCsvExport.d.ts +2 -1
  39. package/hooks/features/export/useGridCsvExport.js +7 -5
  40. package/hooks/features/focus/gridFocusState.d.ts +2 -0
  41. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
  42. package/hooks/features/focus/gridFocusStateSelector.js +6 -0
  43. package/hooks/features/focus/useGridFocus.js +55 -9
  44. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +4 -0
  45. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +5 -0
  46. package/hooks/features/headerFiltering/index.d.ts +1 -0
  47. package/hooks/features/headerFiltering/index.js +1 -0
  48. package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +6 -0
  49. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +91 -0
  50. package/hooks/features/index.d.ts +1 -0
  51. package/hooks/features/index.js +2 -1
  52. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  53. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +124 -4
  54. package/hooks/features/rows/useGridRows.js +16 -1
  55. package/index.js +1 -1
  56. package/internals/index.d.ts +9 -3
  57. package/internals/index.js +7 -2
  58. package/internals/utils/index.d.ts +1 -0
  59. package/internals/utils/index.js +2 -1
  60. package/internals/utils/useProps.d.ts +8 -0
  61. package/internals/utils/useProps.js +13 -0
  62. package/joy/icons.d.ts +33 -0
  63. package/joy/icons.js +433 -0
  64. package/joy/joySlots.js +114 -4
  65. package/legacy/DataGrid/DataGrid.js +20 -1
  66. package/legacy/DataGrid/useDataGridComponent.js +2 -2
  67. package/legacy/DataGrid/useDataGridProps.js +11 -9
  68. package/legacy/colDef/gridBooleanColDef.js +21 -1
  69. package/legacy/colDef/gridDateColDef.js +10 -2
  70. package/legacy/colDef/gridNumericOperators.js +0 -6
  71. package/legacy/colDef/gridSingleSelectColDef.js +21 -1
  72. package/legacy/components/base/GridBody.js +2 -1
  73. package/legacy/components/cell/GridEditInputCell.js +4 -1
  74. package/legacy/components/containers/GridRootStyles.js +1 -0
  75. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +79 -35
  76. package/legacy/components/panel/filterPanel/GridFilterInputDate.js +26 -5
  77. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  78. package/legacy/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  79. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +54 -31
  80. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +28 -5
  81. package/legacy/components/panel/filterPanel/GridFilterPanel.js +1 -1
  82. package/legacy/components/panel/filterPanel/index.js +2 -1
  83. package/legacy/constants/localeTextConstants.js +26 -0
  84. package/legacy/hooks/features/clipboard/useGridClipboard.js +44 -26
  85. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -5
  86. package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -6
  87. package/legacy/hooks/features/editing/useGridCellEditing.js +7 -3
  88. package/legacy/hooks/features/editing/useGridEditing.js +0 -3
  89. package/legacy/hooks/features/editing/useGridRowEditing.js +7 -3
  90. package/legacy/hooks/features/export/serializers/csvSerializer.js +43 -6
  91. package/legacy/hooks/features/export/useGridCsvExport.js +8 -5
  92. package/legacy/hooks/features/focus/gridFocusStateSelector.js +10 -0
  93. package/legacy/hooks/features/focus/useGridFocus.js +58 -9
  94. package/legacy/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +11 -0
  95. package/legacy/hooks/features/headerFiltering/index.js +1 -0
  96. package/legacy/hooks/features/headerFiltering/useGridHeaderFiltering.js +93 -0
  97. package/legacy/hooks/features/index.js +2 -1
  98. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +123 -4
  99. package/legacy/hooks/features/rows/useGridRows.js +16 -1
  100. package/legacy/index.js +1 -1
  101. package/legacy/internals/index.js +7 -2
  102. package/legacy/internals/utils/index.js +2 -1
  103. package/legacy/internals/utils/useProps.js +11 -0
  104. package/legacy/joy/icons.js +432 -0
  105. package/legacy/joy/joySlots.js +118 -4
  106. package/legacy/locales/arSD.js +28 -0
  107. package/legacy/locales/beBY.js +28 -0
  108. package/legacy/locales/bgBG.js +28 -0
  109. package/legacy/locales/csCZ.js +36 -8
  110. package/legacy/locales/daDK.js +28 -0
  111. package/legacy/locales/deDE.js +30 -2
  112. package/legacy/locales/elGR.js +27 -0
  113. package/legacy/locales/esES.js +28 -0
  114. package/legacy/locales/faIR.js +28 -0
  115. package/legacy/locales/fiFI.js +28 -0
  116. package/legacy/locales/frFR.js +34 -6
  117. package/legacy/locales/heIL.js +30 -2
  118. package/legacy/locales/huHU.js +28 -0
  119. package/legacy/locales/itIT.js +28 -0
  120. package/legacy/locales/jaJP.js +28 -0
  121. package/legacy/locales/koKR.js +28 -0
  122. package/legacy/locales/nbNO.js +28 -0
  123. package/legacy/locales/nlNL.js +28 -0
  124. package/legacy/locales/plPL.js +28 -0
  125. package/legacy/locales/ptBR.js +29 -1
  126. package/legacy/locales/roRO.js +28 -0
  127. package/legacy/locales/ruRU.js +28 -0
  128. package/legacy/locales/skSK.js +28 -0
  129. package/legacy/locales/svSE.js +28 -0
  130. package/legacy/locales/trTR.js +28 -0
  131. package/legacy/locales/ukUA.js +36 -9
  132. package/legacy/locales/urPK.js +28 -0
  133. package/legacy/locales/viVN.js +27 -0
  134. package/legacy/locales/zhCN.js +28 -0
  135. package/legacy/locales/zhTW.js +28 -0
  136. package/legacy/material/index.js +5 -1
  137. package/legacy/models/api/index.js +0 -1
  138. package/legacy/models/index.js +0 -1
  139. package/legacy/utils/domUtils.js +14 -1
  140. package/locales/arSD.js +28 -0
  141. package/locales/beBY.js +28 -0
  142. package/locales/bgBG.js +28 -0
  143. package/locales/csCZ.js +36 -8
  144. package/locales/daDK.js +28 -0
  145. package/locales/deDE.js +30 -2
  146. package/locales/elGR.js +27 -0
  147. package/locales/esES.js +28 -0
  148. package/locales/faIR.js +28 -0
  149. package/locales/fiFI.js +28 -0
  150. package/locales/frFR.js +34 -6
  151. package/locales/heIL.js +30 -2
  152. package/locales/huHU.js +28 -0
  153. package/locales/itIT.js +28 -0
  154. package/locales/jaJP.js +28 -0
  155. package/locales/koKR.js +28 -0
  156. package/locales/nbNO.js +28 -0
  157. package/locales/nlNL.js +28 -0
  158. package/locales/plPL.js +28 -0
  159. package/locales/ptBR.js +29 -1
  160. package/locales/roRO.js +28 -0
  161. package/locales/ruRU.js +28 -0
  162. package/locales/skSK.js +28 -0
  163. package/locales/svSE.js +28 -0
  164. package/locales/trTR.js +28 -0
  165. package/locales/ukUA.js +36 -9
  166. package/locales/urPK.js +28 -0
  167. package/locales/viVN.js +27 -0
  168. package/locales/zhCN.js +28 -0
  169. package/locales/zhTW.js +28 -0
  170. package/material/index.d.ts +3 -65
  171. package/material/index.js +5 -1
  172. package/models/api/gridApiCommon.d.ts +3 -3
  173. package/models/api/gridCoreApi.d.ts +8 -0
  174. package/models/api/gridFocusApi.d.ts +6 -0
  175. package/models/api/gridHeaderFilteringApi.d.ts +30 -0
  176. package/models/api/gridLocaleTextApi.d.ts +25 -0
  177. package/models/api/index.d.ts +0 -1
  178. package/models/api/index.js +0 -1
  179. package/models/events/gridEventLookup.d.ts +33 -1
  180. package/models/gridFilterOperator.d.ts +4 -0
  181. package/models/gridHeaderFilteringModel.d.ts +5 -0
  182. package/models/gridHeaderFilteringModel.js +1 -0
  183. package/models/gridSlotsComponent.d.ts +21 -4
  184. package/models/gridSlotsComponentsProps.d.ts +4 -0
  185. package/models/gridStateCommunity.d.ts +2 -0
  186. package/models/index.d.ts +1 -1
  187. package/models/index.js +0 -1
  188. package/models/props/DataGridProps.d.ts +19 -0
  189. package/modern/DataGrid/DataGrid.js +20 -1
  190. package/modern/DataGrid/useDataGridComponent.js +2 -2
  191. package/modern/DataGrid/useDataGridProps.js +8 -13
  192. package/modern/colDef/gridBooleanColDef.js +19 -1
  193. package/modern/colDef/gridDateColDef.js +6 -2
  194. package/modern/colDef/gridNumericOperators.js +0 -6
  195. package/modern/colDef/gridSingleSelectColDef.js +21 -1
  196. package/modern/components/base/GridBody.js +2 -1
  197. package/modern/components/cell/GridEditInputCell.js +4 -1
  198. package/modern/components/containers/GridRootStyles.js +1 -0
  199. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +80 -36
  200. package/modern/components/panel/filterPanel/GridFilterInputDate.js +27 -6
  201. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  202. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  203. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +55 -32
  204. package/modern/components/panel/filterPanel/GridFilterInputValue.js +29 -6
  205. package/modern/components/panel/filterPanel/GridFilterPanel.js +1 -1
  206. package/modern/components/panel/filterPanel/index.js +2 -1
  207. package/modern/constants/localeTextConstants.js +26 -0
  208. package/modern/hooks/features/clipboard/useGridClipboard.js +43 -26
  209. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
  210. package/modern/hooks/features/dimensions/useGridDimensions.js +3 -5
  211. package/modern/hooks/features/editing/useGridCellEditing.js +7 -3
  212. package/modern/hooks/features/editing/useGridEditing.js +0 -3
  213. package/modern/hooks/features/editing/useGridRowEditing.js +7 -3
  214. package/modern/hooks/features/export/serializers/csvSerializer.js +44 -6
  215. package/modern/hooks/features/export/useGridCsvExport.js +7 -5
  216. package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -0
  217. package/modern/hooks/features/focus/useGridFocus.js +55 -9
  218. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +5 -0
  219. package/modern/hooks/features/headerFiltering/index.js +1 -0
  220. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +90 -0
  221. package/modern/hooks/features/index.js +2 -1
  222. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +124 -4
  223. package/modern/hooks/features/rows/useGridRows.js +16 -1
  224. package/modern/index.js +1 -1
  225. package/modern/internals/index.js +7 -2
  226. package/modern/internals/utils/index.js +2 -1
  227. package/modern/internals/utils/useProps.js +13 -0
  228. package/modern/joy/icons.js +433 -0
  229. package/modern/joy/joySlots.js +110 -4
  230. package/modern/locales/arSD.js +28 -0
  231. package/modern/locales/beBY.js +28 -0
  232. package/modern/locales/bgBG.js +28 -0
  233. package/modern/locales/csCZ.js +36 -8
  234. package/modern/locales/daDK.js +28 -0
  235. package/modern/locales/deDE.js +30 -2
  236. package/modern/locales/elGR.js +27 -0
  237. package/modern/locales/esES.js +28 -0
  238. package/modern/locales/faIR.js +28 -0
  239. package/modern/locales/fiFI.js +28 -0
  240. package/modern/locales/frFR.js +34 -6
  241. package/modern/locales/heIL.js +30 -2
  242. package/modern/locales/huHU.js +28 -0
  243. package/modern/locales/itIT.js +28 -0
  244. package/modern/locales/jaJP.js +28 -0
  245. package/modern/locales/koKR.js +28 -0
  246. package/modern/locales/nbNO.js +28 -0
  247. package/modern/locales/nlNL.js +28 -0
  248. package/modern/locales/plPL.js +28 -0
  249. package/modern/locales/ptBR.js +29 -1
  250. package/modern/locales/roRO.js +28 -0
  251. package/modern/locales/ruRU.js +28 -0
  252. package/modern/locales/skSK.js +28 -0
  253. package/modern/locales/svSE.js +28 -0
  254. package/modern/locales/trTR.js +28 -0
  255. package/modern/locales/ukUA.js +36 -9
  256. package/modern/locales/urPK.js +28 -0
  257. package/modern/locales/viVN.js +27 -0
  258. package/modern/locales/zhCN.js +28 -0
  259. package/modern/locales/zhTW.js +28 -0
  260. package/modern/material/index.js +5 -1
  261. package/modern/models/api/gridHeaderFilteringApi.js +1 -0
  262. package/modern/models/api/index.js +0 -1
  263. package/modern/models/gridHeaderFilteringModel.js +1 -0
  264. package/modern/models/index.js +0 -1
  265. package/modern/utils/domUtils.js +13 -1
  266. package/node/DataGrid/DataGrid.js +20 -1
  267. package/node/DataGrid/useDataGridComponent.js +2 -2
  268. package/node/DataGrid/useDataGridProps.js +7 -12
  269. package/node/colDef/gridBooleanColDef.js +19 -1
  270. package/node/colDef/gridDateColDef.js +6 -2
  271. package/node/colDef/gridNumericOperators.js +0 -6
  272. package/node/colDef/gridSingleSelectColDef.js +21 -1
  273. package/node/components/base/GridBody.js +2 -1
  274. package/node/components/cell/GridEditInputCell.js +4 -1
  275. package/node/components/containers/GridRootStyles.js +1 -0
  276. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +78 -35
  277. package/node/components/panel/filterPanel/GridFilterInputDate.js +27 -6
  278. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  279. package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  280. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +55 -32
  281. package/node/components/panel/filterPanel/GridFilterInputValue.js +29 -6
  282. package/node/components/panel/filterPanel/GridFilterPanel.js +2 -1
  283. package/node/components/panel/filterPanel/index.js +26 -8
  284. package/node/constants/localeTextConstants.js +26 -0
  285. package/node/hooks/features/clipboard/useGridClipboard.js +42 -25
  286. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
  287. package/node/hooks/features/dimensions/useGridDimensions.js +3 -5
  288. package/node/hooks/features/editing/useGridCellEditing.js +7 -3
  289. package/node/hooks/features/editing/useGridEditing.js +0 -3
  290. package/node/hooks/features/editing/useGridRowEditing.js +7 -3
  291. package/node/hooks/features/export/serializers/csvSerializer.js +46 -6
  292. package/node/hooks/features/export/useGridCsvExport.js +6 -3
  293. package/node/hooks/features/focus/gridFocusStateSelector.js +9 -1
  294. package/node/hooks/features/focus/useGridFocus.js +55 -9
  295. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +15 -0
  296. package/node/hooks/features/headerFiltering/index.js +16 -0
  297. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +101 -0
  298. package/node/hooks/features/index.js +11 -0
  299. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +124 -4
  300. package/node/hooks/features/rows/useGridRows.js +16 -1
  301. package/node/index.js +1 -1
  302. package/node/internals/index.js +69 -1
  303. package/node/internals/utils/index.js +11 -0
  304. package/node/internals/utils/useProps.js +22 -0
  305. package/node/joy/icons.js +471 -0
  306. package/node/joy/joySlots.js +110 -3
  307. package/node/locales/arSD.js +28 -0
  308. package/node/locales/beBY.js +28 -0
  309. package/node/locales/bgBG.js +28 -0
  310. package/node/locales/csCZ.js +36 -8
  311. package/node/locales/daDK.js +28 -0
  312. package/node/locales/deDE.js +30 -2
  313. package/node/locales/elGR.js +27 -0
  314. package/node/locales/esES.js +28 -0
  315. package/node/locales/faIR.js +28 -0
  316. package/node/locales/fiFI.js +28 -0
  317. package/node/locales/frFR.js +34 -6
  318. package/node/locales/heIL.js +30 -2
  319. package/node/locales/huHU.js +28 -0
  320. package/node/locales/itIT.js +28 -0
  321. package/node/locales/jaJP.js +28 -0
  322. package/node/locales/koKR.js +28 -0
  323. package/node/locales/nbNO.js +28 -0
  324. package/node/locales/nlNL.js +28 -0
  325. package/node/locales/plPL.js +28 -0
  326. package/node/locales/ptBR.js +29 -1
  327. package/node/locales/roRO.js +28 -0
  328. package/node/locales/ruRU.js +28 -0
  329. package/node/locales/skSK.js +28 -0
  330. package/node/locales/svSE.js +28 -0
  331. package/node/locales/trTR.js +28 -0
  332. package/node/locales/ukUA.js +36 -9
  333. package/node/locales/urPK.js +28 -0
  334. package/node/locales/viVN.js +27 -0
  335. package/node/locales/zhCN.js +28 -0
  336. package/node/locales/zhTW.js +28 -0
  337. package/node/material/index.js +5 -1
  338. package/node/models/api/index.js +0 -11
  339. package/node/models/gridHeaderFilteringModel.js +5 -0
  340. package/node/models/index.js +0 -11
  341. package/node/utils/domUtils.js +15 -1
  342. package/package.json +1 -1
  343. package/utils/domUtils.d.ts +1 -0
  344. package/utils/domUtils.js +13 -1
  345. package/models/api/gridClipboardApi.d.ts +0 -11
  346. /package/legacy/models/api/{gridClipboardApi.js → gridHeaderFilteringApi.js} +0 -0
  347. /package/{models/api/gridClipboardApi.js → legacy/models/gridHeaderFilteringModel.js} +0 -0
  348. /package/{modern/models/api/gridClipboardApi.js → models/api/gridHeaderFilteringApi.js} +0 -0
  349. /package/node/models/api/{gridClipboardApi.js → gridHeaderFilteringApi.js} +0 -0
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _utils = require("@mui/utils");
14
14
  var _useGridRootProps = require("../../../hooks/utils/useGridRootProps");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
- const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef"];
16
+ const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "tabIndex", "disabled", "headerFilterMenu", "isFilterActive", "clearButton", "InputProps"];
17
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
  const SUBMIT_FILTER_STROKE_TIME = 500;
@@ -24,7 +24,13 @@ function GridFilterInputValue(props) {
24
24
  applyValue,
25
25
  type,
26
26
  apiRef,
27
- focusElementRef
27
+ focusElementRef,
28
+ tabIndex,
29
+ disabled,
30
+ headerFilterMenu,
31
+ isFilterActive,
32
+ clearButton,
33
+ InputProps
28
34
  } = props,
29
35
  others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
30
36
  const filterTimeout = React.useRef();
@@ -55,9 +61,6 @@ function GridFilterInputValue(props) {
55
61
  const itemValue = item.value ?? '';
56
62
  setFilterValueState(String(itemValue));
57
63
  }, [item.value]);
58
- const InputProps = applying ? {
59
- endAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.loadIcon, {})
60
- } : others.InputProps;
61
64
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseTextField, (0, _extends2.default)({
62
65
  id: id,
63
66
  label: apiRef.current.getLocaleText('filterPanelInputLabel'),
@@ -66,7 +69,20 @@ function GridFilterInputValue(props) {
66
69
  onChange: onFilterChange,
67
70
  variant: "standard",
68
71
  type: type || 'text',
69
- InputProps: InputProps,
72
+ InputProps: (0, _extends2.default)({}, applying || clearButton ? {
73
+ endAdornment: applying ? /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.loadIcon, {
74
+ fontSize: "small",
75
+ color: "action"
76
+ }) : clearButton
77
+ } : {}, headerFilterMenu && isFilterActive ? {
78
+ startAdornment: headerFilterMenu
79
+ } : {}, {
80
+ disabled
81
+ }, InputProps, {
82
+ inputProps: (0, _extends2.default)({
83
+ tabIndex
84
+ }, InputProps?.inputProps)
85
+ }),
70
86
  InputLabelProps: {
71
87
  shrink: true
72
88
  },
@@ -82,7 +98,14 @@ process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
82
98
  current: _propTypes.default.object.isRequired
83
99
  }).isRequired,
84
100
  applyValue: _propTypes.default.func.isRequired,
101
+ clearButton: _propTypes.default.node,
85
102
  focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
103
+ headerFilterMenu: _propTypes.default.node,
104
+ /**
105
+ * It is `true` if the filter either has a value or an operator with no value
106
+ * required is selected (e.g. `isEmpty`)
107
+ */
108
+ isFilterActive: _propTypes.default.bool,
86
109
  item: _propTypes.default.shape({
87
110
  field: _propTypes.default.string.isRequired,
88
111
  id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.GridFilterPanel = void 0;
7
+ exports.getGridFilter = exports.GridFilterPanel = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
@@ -28,6 +28,7 @@ const getGridFilter = col => ({
28
28
  operator: col.filterOperators[0].value,
29
29
  id: Math.round(Math.random() * 1e5)
30
30
  });
31
+ exports.getGridFilter = getGridFilter;
31
32
  const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(props, ref) {
32
33
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
33
34
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
@@ -3,9 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ GridFilterPanel: true
8
+ };
9
+ Object.defineProperty(exports, "GridFilterPanel", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _GridFilterPanel.GridFilterPanel;
13
+ }
14
+ });
6
15
  var _GridFilterForm = require("./GridFilterForm");
7
16
  Object.keys(_GridFilterForm).forEach(function (key) {
8
17
  if (key === "default" || key === "__esModule") return;
18
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
9
19
  if (key in exports && exports[key] === _GridFilterForm[key]) return;
10
20
  Object.defineProperty(exports, key, {
11
21
  enumerable: true,
@@ -17,6 +27,7 @@ Object.keys(_GridFilterForm).forEach(function (key) {
17
27
  var _GridFilterInputValue = require("./GridFilterInputValue");
18
28
  Object.keys(_GridFilterInputValue).forEach(function (key) {
19
29
  if (key === "default" || key === "__esModule") return;
30
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
31
  if (key in exports && exports[key] === _GridFilterInputValue[key]) return;
21
32
  Object.defineProperty(exports, key, {
22
33
  enumerable: true,
@@ -28,6 +39,7 @@ Object.keys(_GridFilterInputValue).forEach(function (key) {
28
39
  var _GridFilterInputDate = require("./GridFilterInputDate");
29
40
  Object.keys(_GridFilterInputDate).forEach(function (key) {
30
41
  if (key === "default" || key === "__esModule") return;
42
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
43
  if (key in exports && exports[key] === _GridFilterInputDate[key]) return;
32
44
  Object.defineProperty(exports, key, {
33
45
  enumerable: true,
@@ -39,6 +51,7 @@ Object.keys(_GridFilterInputDate).forEach(function (key) {
39
51
  var _GridFilterInputSingleSelect = require("./GridFilterInputSingleSelect");
40
52
  Object.keys(_GridFilterInputSingleSelect).forEach(function (key) {
41
53
  if (key === "default" || key === "__esModule") return;
54
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
42
55
  if (key in exports && exports[key] === _GridFilterInputSingleSelect[key]) return;
43
56
  Object.defineProperty(exports, key, {
44
57
  enumerable: true,
@@ -47,31 +60,35 @@ Object.keys(_GridFilterInputSingleSelect).forEach(function (key) {
47
60
  }
48
61
  });
49
62
  });
50
- var _GridFilterInputValueProps = require("./GridFilterInputValueProps");
51
- Object.keys(_GridFilterInputValueProps).forEach(function (key) {
63
+ var _GridFilterInputBoolean = require("./GridFilterInputBoolean");
64
+ Object.keys(_GridFilterInputBoolean).forEach(function (key) {
52
65
  if (key === "default" || key === "__esModule") return;
53
- if (key in exports && exports[key] === _GridFilterInputValueProps[key]) return;
66
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
67
+ if (key in exports && exports[key] === _GridFilterInputBoolean[key]) return;
54
68
  Object.defineProperty(exports, key, {
55
69
  enumerable: true,
56
70
  get: function () {
57
- return _GridFilterInputValueProps[key];
71
+ return _GridFilterInputBoolean[key];
58
72
  }
59
73
  });
60
74
  });
61
- var _GridFilterPanel = require("./GridFilterPanel");
62
- Object.keys(_GridFilterPanel).forEach(function (key) {
75
+ var _GridFilterInputValueProps = require("./GridFilterInputValueProps");
76
+ Object.keys(_GridFilterInputValueProps).forEach(function (key) {
63
77
  if (key === "default" || key === "__esModule") return;
64
- if (key in exports && exports[key] === _GridFilterPanel[key]) return;
78
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
79
+ if (key in exports && exports[key] === _GridFilterInputValueProps[key]) return;
65
80
  Object.defineProperty(exports, key, {
66
81
  enumerable: true,
67
82
  get: function () {
68
- return _GridFilterPanel[key];
83
+ return _GridFilterInputValueProps[key];
69
84
  }
70
85
  });
71
86
  });
87
+ var _GridFilterPanel = require("./GridFilterPanel");
72
88
  var _GridFilterInputMultipleValue = require("./GridFilterInputMultipleValue");
73
89
  Object.keys(_GridFilterInputMultipleValue).forEach(function (key) {
74
90
  if (key === "default" || key === "__esModule") return;
91
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
75
92
  if (key in exports && exports[key] === _GridFilterInputMultipleValue[key]) return;
76
93
  Object.defineProperty(exports, key, {
77
94
  enumerable: true,
@@ -83,6 +100,7 @@ Object.keys(_GridFilterInputMultipleValue).forEach(function (key) {
83
100
  var _GridFilterInputMultipleSingleSelect = require("./GridFilterInputMultipleSingleSelect");
84
101
  Object.keys(_GridFilterInputMultipleSingleSelect).forEach(function (key) {
85
102
  if (key === "default" || key === "__esModule") return;
103
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
86
104
  if (key in exports && exports[key] === _GridFilterInputMultipleSingleSelect[key]) return;
87
105
  Object.defineProperty(exports, key, {
88
106
  enumerable: true,
@@ -64,6 +64,32 @@ const GRID_DEFAULT_LOCALE_TEXT = {
64
64
  filterOperatorIsEmpty: 'is empty',
65
65
  filterOperatorIsNotEmpty: 'is not empty',
66
66
  filterOperatorIsAnyOf: 'is any of',
67
+ 'filterOperator=': '=',
68
+ 'filterOperator!=': '!=',
69
+ 'filterOperator>': '>',
70
+ 'filterOperator>=': '>=',
71
+ 'filterOperator<': '<',
72
+ 'filterOperator<=': '<=',
73
+ // Header filter operators text
74
+ headerFilterOperatorContains: 'Contains',
75
+ headerFilterOperatorEquals: 'Equals',
76
+ headerFilterOperatorStartsWith: 'Starts with',
77
+ headerFilterOperatorEndsWith: 'Ends with',
78
+ headerFilterOperatorIs: 'Is',
79
+ headerFilterOperatorNot: 'Is not',
80
+ headerFilterOperatorAfter: 'Is after',
81
+ headerFilterOperatorOnOrAfter: 'Is on or after',
82
+ headerFilterOperatorBefore: 'Is before',
83
+ headerFilterOperatorOnOrBefore: 'Is on or before',
84
+ headerFilterOperatorIsEmpty: 'Is empty',
85
+ headerFilterOperatorIsNotEmpty: 'Is not empty',
86
+ headerFilterOperatorIsAnyOf: 'Is any of',
87
+ 'headerFilterOperator=': 'Equals',
88
+ 'headerFilterOperator!=': 'Not equals',
89
+ 'headerFilterOperator>': 'Is greater than',
90
+ 'headerFilterOperator>=': 'Is greater than or equal to',
91
+ 'headerFilterOperator<': 'Is less than',
92
+ 'headerFilterOperator<=': 'Is less than or equal to',
67
93
  // Filter values text
68
94
  filterValueAny: 'any',
69
95
  filterValueTrue: 'true',
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useGridClipboard = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _utils = require("../../utils");
9
+ var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
10
+ var _csvSerializer = require("../export/serializers/csvSerializer");
9
11
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
12
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
13
  function writeToClipboardPolyfill(data) {
@@ -26,6 +28,15 @@ function writeToClipboardPolyfill(data) {
26
28
  document.body.removeChild(span);
27
29
  }
28
30
  }
31
+ function copyToClipboard(data) {
32
+ if (navigator.clipboard) {
33
+ navigator.clipboard.writeText(data).catch(() => {
34
+ writeToClipboardPolyfill(data);
35
+ });
36
+ } else {
37
+ writeToClipboardPolyfill(data);
38
+ }
39
+ }
29
40
  function hasNativeSelection(element) {
30
41
  // When getSelection is called on an <iframe> that is not displayed Firefox will return null.
31
42
  if (window.getSelection()?.toString()) {
@@ -45,24 +56,11 @@ function hasNativeSelection(element) {
45
56
  * @requires useGridCsvExport (method)
46
57
  * @requires useGridSelection (method)
47
58
  */
48
- const useGridClipboard = apiRef => {
49
- const copySelectedRowsToClipboard = React.useCallback(() => {
50
- if (apiRef.current.getSelectedRows().size === 0) {
51
- return;
52
- }
53
- const data = apiRef.current.getDataAsCsv({
54
- includeHeaders: false,
55
- delimiter: '\t'
56
- });
57
- if (navigator.clipboard) {
58
- navigator.clipboard.writeText(data).catch(() => {
59
- writeToClipboardPolyfill(data);
60
- });
61
- } else {
62
- writeToClipboardPolyfill(data);
63
- }
64
- }, [apiRef]);
65
- const handleKeydown = React.useCallback(event => {
59
+ const useGridClipboard = (apiRef, props) => {
60
+ const ignoreValueFormatterProp = props.unstable_ignoreValueFormatterDuringExport;
61
+ const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.clipboardExport : ignoreValueFormatterProp) || false;
62
+ const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
63
+ const handleCopy = React.useCallback(event => {
66
64
  const isModifierKeyPressed = event.ctrlKey || event.metaKey;
67
65
  // event.code === 'KeyC' is not enough as event.code assume a QWERTY keyboard layout which would
68
66
  // be wrong with a Dvorak keyboard (as if pressing J).
@@ -74,12 +72,31 @@ const useGridClipboard = apiRef => {
74
72
  if (hasNativeSelection(event.target)) {
75
73
  return;
76
74
  }
77
- apiRef.current.unstable_copySelectedRowsToClipboard();
78
- }, [apiRef]);
79
- (0, _utils.useGridNativeEventListener)(apiRef, apiRef.current.rootElementRef, 'keydown', handleKeydown);
80
- const clipboardApi = {
81
- unstable_copySelectedRowsToClipboard: copySelectedRowsToClipboard
82
- };
83
- (0, _utils.useGridApiMethod)(apiRef, clipboardApi, 'public');
75
+ let textToCopy = '';
76
+ const selectedRows = apiRef.current.getSelectedRows();
77
+ if (selectedRows.size > 0) {
78
+ textToCopy = apiRef.current.getDataAsCsv({
79
+ includeHeaders: false,
80
+ // TODO: make it configurable
81
+ delimiter: clipboardCopyCellDelimiter
82
+ });
83
+ } else {
84
+ const focusedCell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
85
+ if (focusedCell) {
86
+ const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);
87
+ textToCopy = (0, _csvSerializer.serializeCellValue)(cellParams, {
88
+ delimiterCharacter: clipboardCopyCellDelimiter,
89
+ ignoreValueFormatter
90
+ });
91
+ }
92
+ }
93
+ textToCopy = apiRef.current.unstable_applyPipeProcessors('clipboardCopy', textToCopy);
94
+ if (textToCopy) {
95
+ copyToClipboard(textToCopy);
96
+ apiRef.current.publishEvent('clipboardCopy', textToCopy);
97
+ }
98
+ }, [apiRef, ignoreValueFormatter, clipboardCopyCellDelimiter]);
99
+ (0, _utils.useGridNativeEventListener)(apiRef, apiRef.current.rootElementRef, 'keydown', handleCopy);
100
+ (0, _utils.useGridApiOptionHandler)(apiRef, 'clipboardCopy', props.onClipboardCopy);
84
101
  };
85
102
  exports.useGridClipboard = useGridClipboard;
@@ -269,7 +269,7 @@ const useGridColumnHeaders = props => {
269
269
  const tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;
270
270
  const headerInfo = {
271
271
  groupId,
272
- width: columnFields.map(field => apiRef.current.getColumn(field).computedWidth).reduce((acc, val) => acc + val, 0),
272
+ width: columnFields.reduce((acc, field) => acc + apiRef.current.getColumn(field).computedWidth, 0),
273
273
  fields: columnFields,
274
274
  colIndex: columnIndex,
275
275
  hasFocus,
@@ -325,6 +325,7 @@ const useGridColumnHeaders = props => {
325
325
  return {
326
326
  renderContext,
327
327
  getColumnHeaders,
328
+ getColumnsToRender,
328
329
  getColumnGroupHeaders,
329
330
  isDragging: !!dragCol,
330
331
  getRootProps: (other = {}) => (0, _extends2.default)({
@@ -333,7 +334,8 @@ const useGridColumnHeaders = props => {
333
334
  getInnerProps: () => ({
334
335
  ref: handleInnerRef,
335
336
  role: 'rowgroup'
336
- })
337
+ }),
338
+ headerHeight
337
339
  };
338
340
  };
339
341
  exports.useGridColumnHeaders = useGridColumnHeaders;
@@ -16,7 +16,6 @@ var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
16
16
  var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
17
17
  var _gridRowsUtils = require("../rows/gridRowsUtils");
18
18
  var _gridColumnsUtils = require("../columns/gridColumnsUtils");
19
- var _gridClasses = require("../../../constants/gridClasses");
20
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
21
  const isTestEnvironment = process.env.NODE_ENV === 'test';
@@ -158,13 +157,12 @@ function useGridDimensions(apiRef, props) {
158
157
  return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
159
158
  }, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
160
159
  const computeSizeAndPublishResizeEvent = React.useCallback(() => {
161
- const rootEl = apiRef.current.rootElementRef?.current;
162
- const mainEl = rootEl?.querySelector(`.${_gridClasses.gridClasses.main}`);
160
+ const mainEl = apiRef.current.mainElementRef?.current;
163
161
  if (!mainEl) {
164
162
  return;
165
163
  }
166
- const height = mainEl.offsetHeight || 0;
167
- const width = mainEl.offsetWidth || 0;
164
+ const height = mainEl.clientHeight || 0;
165
+ const width = mainEl.clientWidth || 0;
168
166
  const win = (0, _utils.unstable_ownerWindow)(mainEl);
169
167
  const computedStyle = win.getComputedStyle(mainEl);
170
168
  const paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
@@ -99,10 +99,14 @@ const useGridCellEditing = (apiRef, props) => {
99
99
  }
100
100
  } else if (params.isEditable) {
101
101
  let reason;
102
- if (event.key === ' ') {
103
- return; // Space scrolls to the last row
102
+ const canStartEditing = apiRef.current.unstable_applyPipeProcessors('canStartEditing', true, {
103
+ event,
104
+ cellParams: params,
105
+ editMode: 'cell'
106
+ });
107
+ if (!canStartEditing) {
108
+ return;
104
109
  }
105
-
106
110
  if ((0, _keyboardUtils.isPrintableKey)(event)) {
107
111
  reason = _gridEditCellParams.GridCellEditStartReasons.printableKeyDown;
108
112
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
@@ -39,9 +39,6 @@ const useGridEditing = (apiRef, props) => {
39
39
  if (isCellEditableProp) {
40
40
  return isCellEditableProp(params);
41
41
  }
42
- if (params.rowNode.type === 'pinnedRow') {
43
- return false;
44
- }
45
42
  return true;
46
43
  }, [isCellEditableProp]);
47
44
  const maybeDebounce = (id, field, debounceMs, callback) => {
@@ -152,10 +152,14 @@ const useGridRowEditing = (apiRef, props) => {
152
152
  }
153
153
  } else if (params.isEditable) {
154
154
  let reason;
155
- if (event.key === ' ') {
156
- return; // Space scrolls to the last row
155
+ const canStartEditing = apiRef.current.unstable_applyPipeProcessors('canStartEditing', true, {
156
+ event,
157
+ cellParams: params,
158
+ editMode: 'row'
159
+ });
160
+ if (!canStartEditing) {
161
+ return;
157
162
  }
158
-
159
163
  if ((0, _keyboardUtils.isPrintableKey)(event)) {
160
164
  reason = _gridRowParams.GridRowEditStartReasons.printableKeyDown;
161
165
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
@@ -4,9 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.buildCSV = buildCSV;
7
+ exports.serializeCellValue = void 0;
7
8
  var _colDef = require("../../../../colDef");
8
9
  var _warning = require("../../../../utils/warning");
9
- const serializeCellValue = (value, delimiterCharacter) => {
10
+ function sanitizeCellValue(value, delimiterCharacter) {
10
11
  if (typeof value === 'string') {
11
12
  const formattedValue = value.replace(/"/g, '""');
12
13
 
@@ -17,16 +18,48 @@ const serializeCellValue = (value, delimiterCharacter) => {
17
18
  return formattedValue;
18
19
  }
19
20
  return value;
21
+ }
22
+ const serializeCellValue = (cellParams, options) => {
23
+ const {
24
+ delimiterCharacter,
25
+ ignoreValueFormatter
26
+ } = options;
27
+ let value;
28
+ if (ignoreValueFormatter) {
29
+ const columnType = cellParams.colDef.type;
30
+ if (columnType === 'number') {
31
+ value = String(cellParams.value);
32
+ } else if (columnType === 'date' || columnType === 'dateTime') {
33
+ value = cellParams.value?.toISOString();
34
+ } else if (typeof cellParams.value?.toString === 'function') {
35
+ value = cellParams.value.toString();
36
+ } else {
37
+ value = cellParams.value;
38
+ }
39
+ } else {
40
+ value = cellParams.formattedValue;
41
+ }
42
+ return sanitizeCellValue(value, delimiterCharacter);
20
43
  };
44
+ exports.serializeCellValue = serializeCellValue;
21
45
  const objectFormattedValueWarning = (0, _warning.buildWarning)(['MUI: 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.']);
22
- const serializeRow = (id, columns, getCellParams, delimiterCharacter) => columns.map(column => {
46
+ const serializeRow = ({
47
+ id,
48
+ columns,
49
+ getCellParams,
50
+ delimiterCharacter,
51
+ ignoreValueFormatter
52
+ }) => columns.map(column => {
23
53
  const cellParams = getCellParams(id, column.field);
24
54
  if (process.env.NODE_ENV !== 'production') {
25
55
  if (String(cellParams.formattedValue) === '[object Object]') {
26
56
  objectFormattedValueWarning();
27
57
  }
28
58
  }
29
- return serializeCellValue(cellParams.formattedValue, delimiterCharacter);
59
+ return serializeCellValue(cellParams, {
60
+ delimiterCharacter,
61
+ ignoreValueFormatter
62
+ });
30
63
  });
31
64
  function buildCSV(options) {
32
65
  const {
@@ -34,12 +67,19 @@ function buildCSV(options) {
34
67
  rowIds,
35
68
  getCellParams,
36
69
  delimiterCharacter,
37
- includeHeaders
70
+ includeHeaders,
71
+ ignoreValueFormatter
38
72
  } = options;
39
- const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow(id, columns, getCellParams, delimiterCharacter).join(delimiterCharacter)}\r\n`, '').trim();
73
+ const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({
74
+ id,
75
+ columns,
76
+ getCellParams,
77
+ delimiterCharacter,
78
+ ignoreValueFormatter
79
+ }).join(delimiterCharacter)}\r\n`, '').trim();
40
80
  if (!includeHeaders) {
41
81
  return CSVBody;
42
82
  }
43
- const CSVHead = `${columns.filter(column => column.field !== _colDef.GRID_CHECKBOX_SELECTION_COL_DEF.field).map(column => serializeCellValue(column.headerName || column.field, delimiterCharacter)).join(delimiterCharacter)}\r\n`;
83
+ const CSVHead = `${columns.filter(column => column.field !== _colDef.GRID_CHECKBOX_SELECTION_COL_DEF.field).map(column => sanitizeCellValue(column.headerName || column.field, delimiterCharacter)).join(delimiterCharacter)}\r\n`;
44
84
  return `${CSVHead}${CSVBody}`.trim();
45
85
  }
@@ -22,8 +22,10 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
22
22
  * @requires useGridSelection (state)
23
23
  * @requires useGridParamsApi (method)
24
24
  */
25
- const useGridCsvExport = apiRef => {
25
+ const useGridCsvExport = (apiRef, props) => {
26
26
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridCsvExport');
27
+ const ignoreValueFormatterProp = props.unstable_ignoreValueFormatterDuringExport;
28
+ const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.csvExport : ignoreValueFormatterProp) || false;
27
29
  const getDataAsCsv = React.useCallback((options = {}) => {
28
30
  logger.debug(`Get data as CSV`);
29
31
  const exportedColumns = (0, _utils.getColumnsToExport)({
@@ -39,9 +41,10 @@ const useGridCsvExport = apiRef => {
39
41
  rowIds: exportedRowIds,
40
42
  getCellParams: apiRef.current.getCellParams,
41
43
  delimiterCharacter: options.delimiter || ',',
42
- includeHeaders: options.includeHeaders ?? true
44
+ includeHeaders: options.includeHeaders ?? true,
45
+ ignoreValueFormatter
43
46
  });
44
- }, [logger, apiRef]);
47
+ }, [logger, apiRef, ignoreValueFormatter]);
45
48
  const exportDataAsCsv = React.useCallback(options => {
46
49
  logger.debug(`Export data as CSV`);
47
50
  const csv = getDataAsCsv(options);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.unstable_gridTabIndexColumnGroupHeaderSelector = exports.unstable_gridFocusColumnGroupHeaderSelector = exports.gridTabIndexStateSelector = exports.gridTabIndexColumnHeaderSelector = exports.gridTabIndexCellSelector = exports.gridFocusStateSelector = exports.gridFocusColumnHeaderSelector = exports.gridFocusCellSelector = void 0;
6
+ exports.unstable_gridTabIndexColumnHeaderFilterSelector = exports.unstable_gridTabIndexColumnGroupHeaderSelector = exports.unstable_gridFocusColumnHeaderFilterSelector = exports.unstable_gridFocusColumnGroupHeaderSelector = exports.gridTabIndexStateSelector = exports.gridTabIndexColumnHeaderSelector = exports.gridTabIndexCellSelector = exports.gridFocusStateSelector = exports.gridFocusColumnHeaderSelector = exports.gridFocusCellSelector = void 0;
7
7
  var _createSelector = require("../../../utils/createSelector");
8
8
  const gridFocusStateSelector = state => state.focus;
9
9
  exports.gridFocusStateSelector = gridFocusStateSelector;
@@ -13,6 +13,10 @@ const gridFocusColumnHeaderSelector = (0, _createSelector.createSelector)(gridFo
13
13
 
14
14
  // eslint-disable-next-line @typescript-eslint/naming-convention
15
15
  exports.gridFocusColumnHeaderSelector = gridFocusColumnHeaderSelector;
16
+ const unstable_gridFocusColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);
17
+
18
+ // eslint-disable-next-line @typescript-eslint/naming-convention
19
+ exports.unstable_gridFocusColumnHeaderFilterSelector = unstable_gridFocusColumnHeaderFilterSelector;
16
20
  const unstable_gridFocusColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
17
21
  exports.unstable_gridFocusColumnGroupHeaderSelector = unstable_gridFocusColumnGroupHeaderSelector;
18
22
  const gridTabIndexStateSelector = state => state.tabIndex;
@@ -23,5 +27,9 @@ const gridTabIndexColumnHeaderSelector = (0, _createSelector.createSelector)(gri
23
27
 
24
28
  // eslint-disable-next-line @typescript-eslint/naming-convention
25
29
  exports.gridTabIndexColumnHeaderSelector = gridTabIndexColumnHeaderSelector;
30
+ const unstable_gridTabIndexColumnHeaderFilterSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnHeaderFilter);
31
+
32
+ // eslint-disable-next-line @typescript-eslint/naming-convention
33
+ exports.unstable_gridTabIndexColumnHeaderFilterSelector = unstable_gridTabIndexColumnHeaderFilterSelector;
26
34
  const unstable_gridTabIndexColumnGroupHeaderSelector = (0, _createSelector.createSelector)(gridTabIndexStateSelector, state => state.columnGroupHeader);
27
35
  exports.unstable_gridTabIndexColumnGroupHeaderSelector = unstable_gridTabIndexColumnGroupHeaderSelector;