@mui/x-data-grid 7.0.0-beta.6 → 7.0.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 (329) hide show
  1. package/CHANGELOG.md +311 -12
  2. package/DataGrid/DataGrid.js +57 -17
  3. package/DataGrid/useDataGridComponent.js +3 -0
  4. package/DataGrid/useDataGridProps.js +6 -7
  5. package/README.md +1 -1
  6. package/components/GridColumnHeaders.d.ts +1 -2
  7. package/components/GridColumnHeaders.js +6 -17
  8. package/components/GridFooter.js +2 -3
  9. package/components/GridHeader.js +1 -2
  10. package/components/GridHeaders.js +1 -4
  11. package/components/GridPagination.d.ts +6 -5
  12. package/components/GridPagination.js +14 -11
  13. package/components/GridRow.d.ts +1 -1
  14. package/components/GridRow.js +17 -36
  15. package/components/GridScrollArea.d.ts +10 -0
  16. package/components/GridScrollArea.js +150 -0
  17. package/components/base/GridFooterPlaceholder.js +1 -2
  18. package/components/base/GridOverlays.js +3 -6
  19. package/components/cell/GridActionsCell.js +4 -6
  20. package/components/cell/GridActionsCellItem.d.ts +8 -25
  21. package/components/cell/GridActionsCellItem.js +8 -5
  22. package/components/cell/GridBooleanCell.d.ts +1 -0
  23. package/components/cell/GridBooleanCell.js +3 -2
  24. package/components/cell/GridCell.d.ts +7 -0
  25. package/components/cell/GridCell.js +18 -11
  26. package/components/cell/GridEditBooleanCell.js +1 -2
  27. package/components/cell/GridEditDateCell.js +2 -3
  28. package/components/cell/GridEditInputCell.js +2 -2
  29. package/components/cell/GridEditSingleSelectCell.js +5 -8
  30. package/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -3
  31. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  32. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
  33. package/components/columnHeaders/GridColumnGroupHeader.js +22 -13
  34. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +2 -3
  35. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
  36. package/components/columnHeaders/GridColumnHeaderItem.js +26 -12
  37. package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -2
  38. package/components/columnHeaders/GridColumnHeaderTitle.js +2 -3
  39. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
  40. package/components/columnHeaders/GridGenericColumnHeaderItem.js +7 -6
  41. package/components/columnSelection/GridCellCheckboxRenderer.js +3 -5
  42. package/components/columnSelection/GridHeaderCheckbox.js +1 -2
  43. package/components/columnsManagement/GridColumnsManagement.js +17 -21
  44. package/components/containers/GridRoot.js +3 -3
  45. package/components/containers/GridRootStyles.js +12 -20
  46. package/components/menu/GridMenu.js +4 -6
  47. package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  48. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -3
  49. package/components/panel/GridColumnsPanel.js +1 -2
  50. package/components/panel/GridPanel.d.ts +1 -10
  51. package/components/panel/GridPanel.js +1 -2
  52. package/components/panel/GridPreferencesPanel.js +2 -3
  53. package/components/panel/filterPanel/GridFilterForm.js +24 -27
  54. package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +1 -1
  55. package/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
  56. package/components/panel/filterPanel/GridFilterInputDate.d.ts +1 -1
  57. package/components/panel/filterPanel/GridFilterInputDate.js +3 -4
  58. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +11 -15
  59. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +10 -14
  60. package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +1 -1
  61. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +10 -11
  62. package/components/panel/filterPanel/GridFilterInputValue.d.ts +1 -1
  63. package/components/panel/filterPanel/GridFilterInputValue.js +5 -7
  64. package/components/panel/filterPanel/GridFilterPanel.js +5 -9
  65. package/components/panel/filterPanel/filterPanelUtils.js +1 -1
  66. package/components/toolbar/GridToolbarColumnsButton.js +3 -5
  67. package/components/toolbar/GridToolbarDensitySelector.js +8 -10
  68. package/components/toolbar/GridToolbarExport.js +2 -2
  69. package/components/toolbar/GridToolbarExportContainer.js +3 -5
  70. package/components/toolbar/GridToolbarFilterButton.js +3 -5
  71. package/components/toolbar/GridToolbarQuickFilter.js +4 -5
  72. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  73. package/components/virtualization/GridVirtualScroller.js +6 -1
  74. package/components/virtualization/GridVirtualScrollerContent.js +1 -2
  75. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  76. package/components/virtualization/GridVirtualScrollerRenderZone.js +1 -2
  77. package/constants/gridClasses.d.ts +6 -32
  78. package/constants/gridClasses.js +1 -1
  79. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  80. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +1 -2
  81. package/hooks/core/useGridApiInitialization.js +4 -6
  82. package/hooks/features/clipboard/useGridClipboard.js +6 -5
  83. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -16
  84. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +4 -8
  85. package/hooks/features/columnGrouping/useGridColumnGrouping.js +12 -23
  86. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
  87. package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -101
  88. package/hooks/features/columnMenu/useGridColumnMenuSlots.js +2 -2
  89. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  90. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  91. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  92. package/hooks/features/columnResize/columnResizeState.js +1 -0
  93. package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
  94. package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  95. package/hooks/features/columnResize/index.d.ts +3 -0
  96. package/hooks/features/columnResize/index.js +3 -0
  97. package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
  98. package/hooks/features/columnResize/useGridColumnResize.js +553 -0
  99. package/hooks/features/columns/gridColumnsSelector.js +1 -2
  100. package/hooks/features/columns/gridColumnsUtils.d.ts +0 -9
  101. package/hooks/features/columns/gridColumnsUtils.js +5 -22
  102. package/hooks/features/columns/useGridColumnSpanning.js +1 -2
  103. package/hooks/features/columns/useGridColumns.js +11 -19
  104. package/hooks/features/density/densitySelector.d.ts +4 -2
  105. package/hooks/features/density/densitySelector.js +8 -2
  106. package/hooks/features/density/densityState.d.ts +1 -4
  107. package/hooks/features/density/useGridDensity.d.ts +2 -4
  108. package/hooks/features/density/useGridDensity.js +21 -29
  109. package/hooks/features/dimensions/useGridDimensions.js +7 -10
  110. package/hooks/features/editing/useGridCellEditing.js +25 -8
  111. package/hooks/features/editing/useGridEditing.js +1 -2
  112. package/hooks/features/editing/useGridRowEditing.js +4 -6
  113. package/hooks/features/export/serializers/csvSerializer.d.ts +2 -0
  114. package/hooks/features/export/serializers/csvSerializer.js +25 -16
  115. package/hooks/features/export/useGridCsvExport.js +9 -10
  116. package/hooks/features/export/useGridPrintExport.js +17 -22
  117. package/hooks/features/export/utils.js +2 -3
  118. package/hooks/features/filter/gridFilterSelector.js +15 -22
  119. package/hooks/features/filter/gridFilterUtils.js +10 -16
  120. package/hooks/features/filter/useGridFilter.js +9 -15
  121. package/hooks/features/focus/useGridFocus.js +5 -6
  122. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
  123. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  124. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +23 -5
  125. package/hooks/features/index.d.ts +1 -0
  126. package/hooks/features/index.js +1 -0
  127. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +1 -2
  128. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
  129. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  130. package/hooks/features/pagination/gridPaginationSelector.js +9 -4
  131. package/hooks/features/pagination/useGridPagination.d.ts +1 -6
  132. package/hooks/features/pagination/useGridPagination.js +9 -158
  133. package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
  134. package/hooks/features/pagination/useGridPaginationModel.js +165 -0
  135. package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
  136. package/hooks/features/pagination/useGridRowCount.js +94 -0
  137. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +7 -12
  138. package/hooks/features/rowSelection/useGridRowSelection.js +11 -16
  139. package/hooks/features/rows/gridRowsSelector.js +11 -19
  140. package/hooks/features/rows/gridRowsUtils.js +7 -9
  141. package/hooks/features/rows/useGridParamsApi.js +1 -1
  142. package/hooks/features/rows/useGridRows.js +4 -13
  143. package/hooks/features/rows/useGridRowsMeta.js +7 -13
  144. package/hooks/features/scroll/useGridScroll.js +3 -4
  145. package/hooks/features/sorting/gridSortingSelector.js +4 -7
  146. package/hooks/features/sorting/useGridSorting.js +8 -14
  147. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
  148. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  149. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +3 -3
  150. package/hooks/features/virtualization/useGridVirtualScroller.js +220 -71
  151. package/hooks/utils/useGridApiEventHandler.js +5 -10
  152. package/hooks/utils/useGridNativeEventListener.js +1 -2
  153. package/hooks/utils/useLazyRef.d.ts +1 -2
  154. package/hooks/utils/useLazyRef.js +1 -11
  155. package/hooks/utils/useOnMount.d.ts +1 -2
  156. package/hooks/utils/useOnMount.js +1 -7
  157. package/hooks/utils/useTimeout.d.ts +1 -11
  158. package/hooks/utils/useTimeout.js +1 -36
  159. package/index.js +1 -1
  160. package/internals/index.d.ts +3 -1
  161. package/internals/index.js +2 -1
  162. package/internals/utils/getPinnedCellOffset.d.ts +3 -0
  163. package/internals/utils/getPinnedCellOffset.js +17 -0
  164. package/internals/utils/useProps.js +1 -2
  165. package/joy/joySlots.js +18 -63
  166. package/locales/jaJP.js +3 -4
  167. package/material/index.js +0 -2
  168. package/models/api/gridApiCommon.d.ts +3 -3
  169. package/models/api/gridCoreApi.d.ts +1 -5
  170. package/models/api/gridRowsMetaApi.d.ts +1 -1
  171. package/models/api/index.d.ts +1 -1
  172. package/models/api/index.js +0 -1
  173. package/models/events/gridEventLookup.d.ts +13 -0
  174. package/models/gridExport.d.ts +6 -0
  175. package/models/gridHeaderFilteringModel.d.ts +1 -0
  176. package/models/gridSlotsComponent.d.ts +0 -5
  177. package/models/gridStateCommunity.d.ts +3 -0
  178. package/models/params/gridScrollParams.d.ts +5 -3
  179. package/models/props/DataGridProps.d.ts +58 -28
  180. package/modern/DataGrid/DataGrid.js +57 -17
  181. package/modern/DataGrid/useDataGridComponent.js +3 -0
  182. package/modern/DataGrid/useDataGridProps.js +6 -7
  183. package/modern/components/GridColumnHeaders.js +6 -17
  184. package/modern/components/GridHeaders.js +1 -4
  185. package/modern/components/GridPagination.js +13 -6
  186. package/modern/components/GridRow.js +4 -19
  187. package/modern/components/GridScrollArea.js +150 -0
  188. package/modern/components/cell/GridActionsCell.js +1 -1
  189. package/modern/components/cell/GridActionsCellItem.js +4 -0
  190. package/modern/components/cell/GridBooleanCell.js +3 -2
  191. package/modern/components/cell/GridCell.js +11 -3
  192. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  193. package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  194. package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  195. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  196. package/modern/components/containers/GridRoot.js +3 -3
  197. package/modern/components/containers/GridRootStyles.js +12 -20
  198. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  199. package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  200. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  201. package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  202. package/modern/components/toolbar/GridToolbarDensitySelector.js +5 -5
  203. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  204. package/modern/components/virtualization/GridVirtualScroller.js +6 -1
  205. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  206. package/modern/constants/gridClasses.js +1 -1
  207. package/modern/hooks/features/clipboard/useGridClipboard.js +4 -2
  208. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
  209. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  210. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  211. package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  212. package/modern/hooks/features/columnResize/index.js +3 -0
  213. package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
  214. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -20
  215. package/modern/hooks/features/density/densitySelector.js +8 -2
  216. package/modern/hooks/features/density/useGridDensity.js +21 -29
  217. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -5
  218. package/modern/hooks/features/editing/useGridCellEditing.js +22 -3
  219. package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
  220. package/modern/hooks/features/export/serializers/csvSerializer.js +23 -12
  221. package/modern/hooks/features/export/useGridCsvExport.js +2 -1
  222. package/modern/hooks/features/export/useGridPrintExport.js +8 -7
  223. package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
  224. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  225. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  226. package/modern/hooks/features/index.js +1 -0
  227. package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
  228. package/modern/hooks/features/pagination/useGridPagination.js +8 -149
  229. package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
  230. package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
  231. package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -2
  232. package/modern/hooks/features/scroll/useGridScroll.js +1 -1
  233. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  234. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
  235. package/modern/hooks/utils/useLazyRef.js +1 -11
  236. package/modern/hooks/utils/useOnMount.js +1 -7
  237. package/modern/hooks/utils/useTimeout.js +1 -36
  238. package/modern/index.js +1 -1
  239. package/modern/internals/index.js +2 -1
  240. package/modern/internals/utils/getPinnedCellOffset.js +17 -0
  241. package/modern/joy/joySlots.js +11 -50
  242. package/modern/locales/jaJP.js +3 -4
  243. package/modern/material/index.js +0 -2
  244. package/modern/models/api/index.js +0 -1
  245. package/modern/utils/cellBorderUtils.js +8 -0
  246. package/modern/utils/createSelector.js +1 -1
  247. package/modern/utils/domUtils.js +144 -0
  248. package/modern/utils/keyboardUtils.js +1 -1
  249. package/node/DataGrid/DataGrid.js +57 -17
  250. package/node/DataGrid/useDataGridComponent.js +3 -0
  251. package/node/DataGrid/useDataGridProps.js +6 -7
  252. package/node/components/GridColumnHeaders.js +6 -16
  253. package/node/components/GridHeaders.js +1 -4
  254. package/node/components/GridPagination.js +10 -4
  255. package/node/components/GridRow.js +3 -18
  256. package/node/components/GridScrollArea.js +158 -0
  257. package/node/components/cell/GridActionsCell.js +1 -1
  258. package/node/components/cell/GridActionsCellItem.js +4 -0
  259. package/node/components/cell/GridBooleanCell.js +3 -2
  260. package/node/components/cell/GridCell.js +12 -4
  261. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  262. package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  263. package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  264. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  265. package/node/components/containers/GridRoot.js +2 -2
  266. package/node/components/containers/GridRootStyles.js +12 -20
  267. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  268. package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  269. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  270. package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  271. package/node/components/toolbar/GridToolbarDensitySelector.js +4 -4
  272. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  273. package/node/components/virtualization/GridVirtualScroller.js +6 -1
  274. package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  275. package/node/constants/gridClasses.js +1 -1
  276. package/node/hooks/features/clipboard/useGridClipboard.js +4 -2
  277. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
  278. package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
  279. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  280. package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
  281. package/node/hooks/features/columnResize/index.js +38 -0
  282. package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
  283. package/node/hooks/features/columns/gridColumnsUtils.js +4 -21
  284. package/node/hooks/features/density/densitySelector.js +9 -3
  285. package/node/hooks/features/density/useGridDensity.js +22 -30
  286. package/node/hooks/features/dimensions/useGridDimensions.js +4 -5
  287. package/node/hooks/features/editing/useGridCellEditing.js +22 -3
  288. package/node/hooks/features/editing/useGridRowEditing.js +1 -1
  289. package/node/hooks/features/export/serializers/csvSerializer.js +23 -12
  290. package/node/hooks/features/export/useGridCsvExport.js +2 -1
  291. package/node/hooks/features/export/useGridPrintExport.js +8 -7
  292. package/node/hooks/features/filter/gridFilterUtils.js +1 -1
  293. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
  294. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  295. package/node/hooks/features/index.js +11 -0
  296. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  297. package/node/hooks/features/pagination/useGridPagination.js +9 -153
  298. package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
  299. package/node/hooks/features/pagination/useGridRowCount.js +103 -0
  300. package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  301. package/node/hooks/features/scroll/useGridScroll.js +1 -1
  302. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  303. package/node/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
  304. package/node/hooks/utils/useLazyRef.js +7 -13
  305. package/node/hooks/utils/useOnMount.js +8 -10
  306. package/node/hooks/utils/useTimeout.js +7 -37
  307. package/node/index.js +1 -1
  308. package/node/internals/index.js +27 -8
  309. package/node/internals/utils/getPinnedCellOffset.js +24 -0
  310. package/node/joy/joySlots.js +11 -50
  311. package/node/locales/jaJP.js +3 -4
  312. package/node/material/index.js +0 -2
  313. package/node/models/api/index.js +0 -11
  314. package/node/utils/cellBorderUtils.js +16 -0
  315. package/node/utils/createSelector.js +1 -1
  316. package/node/utils/domUtils.js +155 -0
  317. package/node/utils/keyboardUtils.js +1 -1
  318. package/package.json +4 -4
  319. package/utils/cellBorderUtils.d.ts +3 -0
  320. package/utils/cellBorderUtils.js +8 -0
  321. package/utils/createSelector.js +9 -9
  322. package/utils/domUtils.d.ts +14 -1
  323. package/utils/domUtils.js +144 -0
  324. package/utils/getGridLocalization.js +9 -12
  325. package/utils/keyboardUtils.js +1 -1
  326. package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
  327. package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  328. package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  329. package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
@@ -4,50 +4,42 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useGridDensity = exports.densityStateInitializer = exports.COMPACT_DENSITY_FACTOR = exports.COMFORTABLE_DENSITY_FACTOR = void 0;
7
+ exports.useGridDensity = exports.densityStateInitializer = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
+ var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
10
11
  var _useGridLogger = require("../../utils/useGridLogger");
11
12
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
12
13
  var _densitySelector = require("./densitySelector");
13
- var _utils = require("../../../utils/utils");
14
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
15
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
- const COMPACT_DENSITY_FACTOR = exports.COMPACT_DENSITY_FACTOR = 0.7;
17
- const COMFORTABLE_DENSITY_FACTOR = exports.COMFORTABLE_DENSITY_FACTOR = 1.3;
18
- const DENSITY_FACTORS = {
19
- compact: COMPACT_DENSITY_FACTOR,
20
- comfortable: COMFORTABLE_DENSITY_FACTOR,
21
- standard: 1
22
- };
23
16
  const densityStateInitializer = (state, props) => (0, _extends2.default)({}, state, {
24
- density: {
25
- value: props.density,
26
- factor: DENSITY_FACTORS[props.density]
27
- }
17
+ density: props.initialState?.density ?? props.density ?? 'standard'
28
18
  });
29
19
  exports.densityStateInitializer = densityStateInitializer;
30
20
  const useGridDensity = (apiRef, props) => {
31
21
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useDensity');
32
- const setDensity = React.useCallback(newDensity => {
22
+ apiRef.current.registerControlState({
23
+ stateId: 'density',
24
+ propModel: props.density,
25
+ propOnChange: props.onDensityChange,
26
+ stateSelector: _densitySelector.gridDensitySelector,
27
+ changeEvent: 'densityChange'
28
+ });
29
+ const setDensity = (0, _useEventCallback.default)(newDensity => {
30
+ const currentDensity = (0, _densitySelector.gridDensitySelector)(apiRef.current.state);
31
+ if (currentDensity === newDensity) {
32
+ return;
33
+ }
33
34
  logger.debug(`Set grid density to ${newDensity}`);
34
- apiRef.current.setState(state => {
35
- const currentDensityState = (0, _densitySelector.gridDensitySelector)(state);
36
- const newDensityState = {
37
- value: newDensity,
38
- factor: DENSITY_FACTORS[newDensity]
39
- };
40
- if ((0, _utils.isDeepEqual)(currentDensityState, newDensityState)) {
41
- return state;
42
- }
43
- return (0, _extends2.default)({}, state, {
44
- density: newDensityState
45
- });
46
- });
47
- apiRef.current.forceUpdate();
48
- }, [logger, apiRef]);
35
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
36
+ density: newDensity
37
+ }));
38
+ });
49
39
  React.useEffect(() => {
50
- apiRef.current.setDensity(props.density);
40
+ if (props.density) {
41
+ apiRef.current.setDensity(props.density);
42
+ }
51
43
  }, [apiRef, props.density]);
52
44
  const densityApi = {
53
45
  setDensity
@@ -64,9 +64,7 @@ function useGridDimensions(apiRef, props) {
64
64
  const rowHeight = Math.floor(props.rowHeight * densityFactor);
65
65
  const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
66
66
  const columnsTotalWidth = roundToDecimalPlaces((0, _columns.gridColumnsTotalWidthSelector)(apiRef), 6);
67
- // XXX: The `props as any` below is not resilient to change.
68
- const hasHeaderFilters = Boolean(props.headerFilters);
69
- const headersTotalHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
67
+ const headersTotalHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, props.columnHeaderHeight);
70
68
  const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
71
69
  const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
72
70
  const [savedSize, setSavedSize] = React.useState();
@@ -123,8 +121,9 @@ function useGridDimensions(apiRef, props) {
123
121
  const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
124
122
  const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
125
123
  const bottomContainerHeight = pinnedRowsHeight.bottom;
124
+ const nonPinnedColumnsTotalWidth = columnsTotalWidth - leftPinnedWidth - rightPinnedWidth;
126
125
  const contentSize = {
127
- width: columnsTotalWidth,
126
+ width: nonPinnedColumnsTotalWidth,
128
127
  height: rowsMeta.currentPageTotalHeight
129
128
  };
130
129
  let viewportOuterSize;
@@ -173,7 +172,7 @@ function useGridDimensions(apiRef, props) {
173
172
  }
174
173
  const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
175
174
  const minimumSize = {
176
- width: contentSize.width,
175
+ width: columnsTotalWidth,
177
176
  height: topContainerHeight + contentSize.height + bottomContainerHeight
178
177
  };
179
178
  const newDimensions = {
@@ -23,7 +23,7 @@ const _excluded = ["id", "field"],
23
23
  _excluded2 = ["id", "field"];
24
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
25
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
- const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
26
+ const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, for example `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
27
27
  const useGridCellEditing = (apiRef, props) => {
28
28
  const [cellModesModel, setCellModesModel] = React.useState({});
29
29
  const cellModesModelRef = React.useRef(cellModesModel);
@@ -243,8 +243,27 @@ const useGridCellEditing = (apiRef, props) => {
243
243
  initialValue
244
244
  } = params;
245
245
  let newValue = apiRef.current.getCellValue(id, field);
246
- if (deleteValue || initialValue) {
247
- newValue = deleteValue ? '' : initialValue;
246
+ if (deleteValue) {
247
+ const fieldType = apiRef.current.getColumn(field).type;
248
+ switch (fieldType) {
249
+ case 'boolean':
250
+ newValue = false;
251
+ break;
252
+ case 'date':
253
+ case 'dateTime':
254
+ case 'number':
255
+ newValue = undefined;
256
+ break;
257
+ case 'singleSelect':
258
+ newValue = null;
259
+ break;
260
+ case 'string':
261
+ default:
262
+ newValue = '';
263
+ break;
264
+ }
265
+ } else if (initialValue) {
266
+ newValue = initialValue;
248
267
  }
249
268
  const newProps = {
250
269
  value: newValue,
@@ -25,7 +25,7 @@ const _excluded = ["id"],
25
25
  _excluded2 = ["id"];
26
26
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
27
27
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
- const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
28
+ const missingOnProcessRowUpdateErrorWarning = (0, _warning.buildWarning)(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, for example `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
29
29
  const useGridRowEditing = (apiRef, props) => {
30
30
  const [rowModesModel, setRowModesModel] = React.useState({});
31
31
  const rowModesModelRef = React.useRef(rowModesModel);
@@ -7,11 +7,14 @@ 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, delimiterCharacter) {
10
+ function sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes) {
11
11
  if (typeof value === 'string') {
12
12
  // Make sure value containing delimiter or line break won't be split into multiple rows
13
13
  if ([delimiterCharacter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
14
- return `"${value.replace(/"/g, '""')}"`;
14
+ if (shouldAppendQuotes) {
15
+ return `"${value.replace(/"/g, '""')}"`;
16
+ }
17
+ return `${value.replace(/"/g, '""')}`;
15
18
  }
16
19
  return value;
17
20
  }
@@ -20,7 +23,8 @@ function sanitizeCellValue(value, delimiterCharacter) {
20
23
  const serializeCellValue = (cellParams, options) => {
21
24
  const {
22
25
  delimiterCharacter,
23
- ignoreValueFormatter
26
+ ignoreValueFormatter,
27
+ shouldAppendQuotes
24
28
  } = options;
25
29
  let value;
26
30
  if (ignoreValueFormatter) {
@@ -37,7 +41,7 @@ const serializeCellValue = (cellParams, options) => {
37
41
  } else {
38
42
  value = cellParams.formattedValue;
39
43
  }
40
- return sanitizeCellValue(value, delimiterCharacter);
44
+ return sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes);
41
45
  };
42
46
  exports.serializeCellValue = serializeCellValue;
43
47
  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,7 +59,7 @@ class CSVRow {
55
59
  if (value === null || value === undefined) {
56
60
  this.rowString += '';
57
61
  } else if (typeof this.options.sanitizeCellValue === 'function') {
58
- this.rowString += this.options.sanitizeCellValue(value, this.options.delimiterCharacter);
62
+ this.rowString += this.options.sanitizeCellValue(value, this.options.delimiterCharacter, this.options.shouldAppendQuotes);
59
63
  } else {
60
64
  this.rowString += value;
61
65
  }
@@ -70,10 +74,12 @@ const serializeRow = ({
70
74
  columns,
71
75
  getCellParams,
72
76
  delimiterCharacter,
73
- ignoreValueFormatter
77
+ ignoreValueFormatter,
78
+ shouldAppendQuotes
74
79
  }) => {
75
80
  const row = new CSVRow({
76
- delimiterCharacter
81
+ delimiterCharacter,
82
+ shouldAppendQuotes
77
83
  });
78
84
  columns.forEach(column => {
79
85
  const cellParams = getCellParams(id, column.field);
@@ -84,7 +90,8 @@ const serializeRow = ({
84
90
  }
85
91
  row.addValue(serializeCellValue(cellParams, {
86
92
  delimiterCharacter,
87
- ignoreValueFormatter
93
+ ignoreValueFormatter,
94
+ shouldAppendQuotes
88
95
  }));
89
96
  });
90
97
  return row.getRowString();
@@ -97,14 +104,16 @@ function buildCSV(options) {
97
104
  includeHeaders,
98
105
  includeColumnGroupsHeaders,
99
106
  ignoreValueFormatter,
100
- apiRef
107
+ apiRef,
108
+ shouldAppendQuotes
101
109
  } = options;
102
110
  const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({
103
111
  id,
104
112
  columns,
105
113
  getCellParams: apiRef.current.getCellParams,
106
114
  delimiterCharacter,
107
- ignoreValueFormatter
115
+ ignoreValueFormatter,
116
+ shouldAppendQuotes
108
117
  })}\r\n`, '').trim();
109
118
  if (!includeHeaders) {
110
119
  return CSVBody;
@@ -123,7 +132,8 @@ function buildCSV(options) {
123
132
  for (let i = 0; i < maxColumnGroupsDepth; i += 1) {
124
133
  const headerGroupRow = new CSVRow({
125
134
  delimiterCharacter,
126
- sanitizeCellValue
135
+ sanitizeCellValue,
136
+ shouldAppendQuotes
127
137
  });
128
138
  headerRows.push(headerGroupRow);
129
139
  filteredColumns.forEach(column => {
@@ -135,7 +145,8 @@ function buildCSV(options) {
135
145
  }
136
146
  const mainHeaderRow = new CSVRow({
137
147
  delimiterCharacter,
138
- sanitizeCellValue
148
+ sanitizeCellValue,
149
+ shouldAppendQuotes
139
150
  });
140
151
  filteredColumns.forEach(column => {
141
152
  mainHeaderRow.addValue(column.headerName || column.field);
@@ -43,7 +43,8 @@ const useGridCsvExport = (apiRef, props) => {
43
43
  includeHeaders: options.includeHeaders ?? true,
44
44
  includeColumnGroupsHeaders: options.includeColumnGroupsHeaders ?? true,
45
45
  ignoreValueFormatter,
46
- apiRef
46
+ apiRef,
47
+ shouldAppendQuotes: options.shouldAppendQuotes ?? true
47
48
  });
48
49
  }, [logger, apiRef, ignoreValueFormatter]);
49
50
  const exportDataAsCsv = React.useCallback(options => {
@@ -15,7 +15,7 @@ var _gridClasses = require("../../../constants/gridClasses");
15
15
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
16
16
  var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
17
17
  var _utils2 = require("./utils");
18
- var _useGridPagination = require("../pagination/useGridPagination");
18
+ var _useGridPaginationModel = require("../pagination/useGridPaginationModel");
19
19
  var _pipeProcessing = require("../../core/pipeProcessing");
20
20
  var _GridToolbarExport = require("../../../components/toolbar/GridToolbarExport");
21
21
  var _gridColumnsUtils = require("../columns/gridColumnsUtils");
@@ -104,9 +104,6 @@ const useGridPrintExport = (apiRef, props) => {
104
104
 
105
105
  // See https://support.google.com/chrome/thread/191619088?hl=en&msgid=193009642
106
106
  gridClone.style.contain = 'size';
107
- const columnHeaders = gridClone.querySelector(`.${_gridClasses.gridClasses.columnHeaders}`);
108
- const columnHeadersInner = columnHeaders.querySelector(`.${_gridClasses.gridClasses.columnHeadersInner}`);
109
- columnHeadersInner.style.width = '100%';
110
107
  let gridToolbarElementHeight = gridRootElement.querySelector(`.${_gridClasses.gridClasses.toolbarContainer}`)?.offsetHeight || 0;
111
108
  let gridFooterElementHeight = gridRootElement.querySelector(`.${_gridClasses.gridClasses.footerContainer}`)?.offsetHeight || 0;
112
109
  if (normalizeOptions.hideToolbar) {
@@ -227,9 +224,13 @@ const useGridPrintExport = (apiRef, props) => {
227
224
  page: 0,
228
225
  pageSize: visibleRowCount
229
226
  };
230
- apiRef.current.updateControlState('pagination',
231
- // Using signature `DataGridPro` to allow more than 100 rows in the print export
232
- (0, _useGridPagination.mergeStateWithPaginationModel)(visibleRowCount, 'DataGridPro', paginationModel));
227
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
228
+ pagination: (0, _extends2.default)({}, state.pagination, {
229
+ paginationModel: (0, _useGridPaginationModel.getDerivedPaginationModel)(state.pagination,
230
+ // Using signature `DataGridPro` to allow more than 100 rows in the print export
231
+ 'DataGridPro', paginationModel)
232
+ })
233
+ }));
233
234
  apiRef.current.forceUpdate();
234
235
  }
235
236
  await updateGridColumnsForPrint(options?.fields, options?.allColumns, options?.includeCheckboxes);
@@ -167,7 +167,7 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
167
167
  }
168
168
 
169
169
  // We generate a new function with `new Function()` to avoid expensive patterns for JS engines
170
- // such as a dynamic object assignment, e.g. `{ [dynamicKey]: value }`.
170
+ // such as a dynamic object assignment, for example `{ [dynamicKey]: value }`.
171
171
  const filterItemCore = new Function('appliers', 'row', 'shouldApplyFilter', `"use strict";
172
172
  ${appliers.map((applier, i) => `const shouldApply${i} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(applier.item.field)});`).join('\n')}
173
173
 
@@ -3,9 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridHeaderFilteringStateSelector = exports.gridHeaderFilteringMenuSelector = exports.gridHeaderFilteringEditFieldSelector = void 0;
6
+ exports.gridHeaderFilteringStateSelector = exports.gridHeaderFilteringMenuSelector = exports.gridHeaderFilteringEnabledSelector = exports.gridHeaderFilteringEditFieldSelector = void 0;
7
7
  var _createSelector = require("../../../utils/createSelector");
8
8
  const gridHeaderFilteringStateSelector = state => state.headerFiltering;
9
9
  exports.gridHeaderFilteringStateSelector = gridHeaderFilteringStateSelector;
10
+ const gridHeaderFilteringEnabledSelector = exports.gridHeaderFilteringEnabledSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector,
11
+ // No initialization in MIT, so we need to default to false to be used by `getTotalHeaderHeight`
12
+ headerFilteringState => headerFilteringState?.enabled ?? false);
10
13
  const gridHeaderFilteringEditFieldSelector = exports.gridHeaderFilteringEditFieldSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);
11
14
  const gridHeaderFilteringMenuSelector = exports.gridHeaderFilteringMenuSelector = (0, _createSelector.createSelector)(gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);
@@ -12,8 +12,10 @@ var _utils = require("../../utils");
12
12
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
13
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
- const headerFilteringStateInitializer = state => (0, _extends2.default)({}, state, {
15
+ const headerFilteringStateInitializer = (state, props) => (0, _extends2.default)({}, state, {
16
+ // @ts-expect-error Access `Pro` prop in MIT
16
17
  headerFiltering: {
18
+ enabled: props.headerFilters ?? false,
17
19
  editing: null,
18
20
  menuOpen: null
19
21
  }
@@ -21,6 +23,8 @@ const headerFilteringStateInitializer = state => (0, _extends2.default)({}, stat
21
23
  exports.headerFilteringStateInitializer = headerFilteringStateInitializer;
22
24
  const useGridHeaderFiltering = (apiRef, props) => {
23
25
  const logger = (0, _utils.useGridLogger)(apiRef, 'useGridHeaderFiltering');
26
+ // @ts-expect-error Access `Pro` prop in MIT
27
+ const isHeaderFilteringEnabled = props.headerFilters ?? false;
24
28
  const setHeaderFilterState = React.useCallback(headerFilterState => {
25
29
  apiRef.current.setState(state => {
26
30
  // Safety check to avoid MIT users from using it
@@ -30,13 +34,14 @@ const useGridHeaderFiltering = (apiRef, props) => {
30
34
  }
31
35
  return (0, _extends2.default)({}, state, {
32
36
  headerFiltering: {
37
+ enabled: isHeaderFilteringEnabled ?? false,
33
38
  editing: headerFilterState.editing ?? null,
34
39
  menuOpen: headerFilterState.menuOpen ?? null
35
40
  }
36
41
  });
37
42
  });
38
43
  apiRef.current.forceUpdate();
39
- }, [apiRef, props.signature]);
44
+ }, [apiRef, props.signature, isHeaderFilteringEnabled]);
40
45
  const startHeaderFilterEditMode = React.useCallback(field => {
41
46
  logger.debug(`Starting edit mode on header filter for field: ${field}`);
42
47
  apiRef.current.setHeaderFilterState({
@@ -97,5 +102,19 @@ const useGridHeaderFiltering = (apiRef, props) => {
97
102
  };
98
103
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, headerFilterApi, 'public');
99
104
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, headerFilterPrivateApi, 'private');
105
+
106
+ /*
107
+ * EFFECTS
108
+ */
109
+ const isFirstRender = React.useRef(true);
110
+ React.useEffect(() => {
111
+ if (isFirstRender.current) {
112
+ isFirstRender.current = false;
113
+ } else {
114
+ apiRef.current.setHeaderFilterState({
115
+ enabled: isHeaderFilteringEnabled
116
+ });
117
+ }
118
+ }, [apiRef, isHeaderFilteringEnabled]);
100
119
  };
101
120
  exports.useGridHeaderFiltering = useGridHeaderFiltering;
@@ -36,6 +36,17 @@ Object.keys(_columnGrouping).forEach(function (key) {
36
36
  }
37
37
  });
38
38
  });
39
+ var _columnResize = require("./columnResize");
40
+ Object.keys(_columnResize).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _columnResize[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _columnResize[key];
47
+ }
48
+ });
49
+ });
39
50
  var _density = require("./density");
40
51
  Object.keys(_density).forEach(function (key) {
41
52
  if (key === "default" || key === "__esModule") return;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridPaginationSelector = exports.gridPaginationRowRangeSelector = exports.gridPaginationModelSelector = exports.gridPaginatedVisibleSortedGridRowIdsSelector = exports.gridPaginatedVisibleSortedGridRowEntriesSelector = exports.gridPageSizeSelector = exports.gridPageSelector = exports.gridPageCountSelector = void 0;
6
+ exports.gridPaginationSelector = exports.gridPaginationRowRangeSelector = exports.gridPaginationRowCountSelector = exports.gridPaginationModelSelector = exports.gridPaginatedVisibleSortedGridRowIdsSelector = exports.gridPaginatedVisibleSortedGridRowEntriesSelector = exports.gridPageSizeSelector = exports.gridPageSelector = exports.gridPageCountSelector = void 0;
7
7
  var _createSelector = require("../../../utils/createSelector");
8
8
  var _gridFilterSelector = require("../filter/gridFilterSelector");
9
9
  var _gridRowsSelector = require("../rows/gridRowsSelector");
@@ -21,6 +21,12 @@ const gridPaginationSelector = state => state.pagination;
21
21
  exports.gridPaginationSelector = gridPaginationSelector;
22
22
  const gridPaginationModelSelector = exports.gridPaginationModelSelector = (0, _createSelector.createSelector)(gridPaginationSelector, pagination => pagination.paginationModel);
23
23
 
24
+ /**
25
+ * Get the row count
26
+ * @category Pagination
27
+ */
28
+ const gridPaginationRowCountSelector = exports.gridPaginationRowCountSelector = (0, _createSelector.createSelector)(gridPaginationSelector, pagination => pagination.rowCount);
29
+
24
30
  /**
25
31
  * Get the index of the page to render if the pagination is enabled
26
32
  * @category Pagination
@@ -37,7 +43,7 @@ const gridPageSizeSelector = exports.gridPageSizeSelector = (0, _createSelector.
37
43
  * Get the amount of pages needed to display all the rows if the pagination is enabled
38
44
  * @category Pagination
39
45
  */
40
- const gridPageCountSelector = exports.gridPageCountSelector = (0, _createSelector.createSelector)(gridPaginationModelSelector, _gridFilterSelector.gridFilteredTopLevelRowCountSelector, (paginationModel, visibleTopLevelRowCount) => (0, _gridPaginationUtils.getPageCount)(visibleTopLevelRowCount, paginationModel.pageSize));
46
+ const gridPageCountSelector = exports.gridPageCountSelector = (0, _createSelector.createSelector)(gridPageSizeSelector, gridPaginationRowCountSelector, (pageSize, rowCount) => (0, _gridPaginationUtils.getPageCount)(rowCount, pageSize));
41
47
 
42
48
  /**
43
49
  * Get the index of the first and the last row to include in the current page if the pagination is enabled.
@@ -4,174 +4,30 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useGridPagination = exports.paginationStateInitializer = exports.mergeStateWithPaginationModel = void 0;
7
+ exports.useGridPagination = exports.paginationStateInitializer = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var React = _interopRequireWildcard(require("react"));
10
- var _filter = require("../filter");
11
- var _density = require("../density");
12
- var _utils = require("../../utils");
13
- var _pipeProcessing = require("../../core/pipeProcessing");
14
- var _gridPaginationSelector = require("./gridPaginationSelector");
15
9
  var _gridPaginationUtils = require("./gridPaginationUtils");
16
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ var _useGridPaginationModel = require("./useGridPaginationModel");
11
+ var _useGridRowCount = require("./useGridRowCount");
18
12
  const paginationStateInitializer = (state, props) => {
19
13
  const paginationModel = (0, _extends2.default)({}, (0, _gridPaginationUtils.getDefaultGridPaginationModel)(props.autoPageSize), props.paginationModel ?? props.initialState?.pagination?.paginationModel);
20
14
  (0, _gridPaginationUtils.throwIfPageSizeExceedsTheLimit)(paginationModel.pageSize, props.signature);
15
+ const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount;
21
16
  return (0, _extends2.default)({}, state, {
22
17
  pagination: {
23
- paginationModel
18
+ paginationModel,
19
+ rowCount
24
20
  }
25
21
  });
26
22
  };
27
- exports.paginationStateInitializer = paginationStateInitializer;
28
- const mergeStateWithPaginationModel = (rowCount, signature, paginationModelProp) => paginationState => {
29
- let paginationModel = paginationState.paginationModel;
30
- const pageSize = paginationModelProp?.pageSize ?? paginationModel.pageSize;
31
- const pageCount = (0, _gridPaginationUtils.getPageCount)(rowCount, pageSize);
32
- if (paginationModelProp && (paginationModelProp?.page !== paginationModel.page || paginationModelProp?.pageSize !== paginationModel.pageSize)) {
33
- paginationModel = paginationModelProp;
34
- }
35
- const validPage = (0, _gridPaginationUtils.getValidPage)(paginationModel.page, pageCount);
36
- if (validPage !== paginationModel.page) {
37
- paginationModel = (0, _extends2.default)({}, paginationModel, {
38
- page: validPage
39
- });
40
- }
41
- (0, _gridPaginationUtils.throwIfPageSizeExceedsTheLimit)(paginationModel.pageSize, signature);
42
- return {
43
- paginationModel
44
- };
45
- };
46
23
 
47
24
  /**
48
25
  * @requires useGridFilter (state)
49
26
  * @requires useGridDimensions (event) - can be after
50
27
  */
51
- exports.mergeStateWithPaginationModel = mergeStateWithPaginationModel;
28
+ exports.paginationStateInitializer = paginationStateInitializer;
52
29
  const useGridPagination = (apiRef, props) => {
53
- const logger = (0, _utils.useGridLogger)(apiRef, 'useGridPagination');
54
- const visibleTopLevelRowCount = (0, _utils.useGridSelector)(apiRef, _filter.gridFilteredTopLevelRowCountSelector);
55
- const densityFactor = (0, _utils.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
56
- const rowHeight = Math.floor(props.rowHeight * densityFactor);
57
- apiRef.current.registerControlState({
58
- stateId: 'pagination',
59
- propModel: props.paginationModel,
60
- propOnChange: props.onPaginationModelChange,
61
- stateSelector: _gridPaginationSelector.gridPaginationModelSelector,
62
- changeEvent: 'paginationModelChange'
63
- });
64
-
65
- /**
66
- * API METHODS
67
- */
68
- const setPage = React.useCallback(page => {
69
- const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
70
- if (page === currentModel.page) {
71
- return;
72
- }
73
- logger.debug(`Setting page to ${page}`);
74
- apiRef.current.setPaginationModel({
75
- page,
76
- pageSize: currentModel.pageSize
77
- });
78
- }, [apiRef, logger]);
79
- const setPageSize = React.useCallback(pageSize => {
80
- const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
81
- if (pageSize === currentModel.pageSize) {
82
- return;
83
- }
84
- logger.debug(`Setting page size to ${pageSize}`);
85
- apiRef.current.setPaginationModel({
86
- pageSize,
87
- page: currentModel.page
88
- });
89
- }, [apiRef, logger]);
90
- const setPaginationModel = React.useCallback(paginationModel => {
91
- const currentModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
92
- if (paginationModel === currentModel) {
93
- return;
94
- }
95
- logger.debug("Setting 'paginationModel' to", paginationModel);
96
- apiRef.current.updateControlState('pagination', mergeStateWithPaginationModel(props.rowCount ?? visibleTopLevelRowCount, props.signature, paginationModel), 'setPaginationModel');
97
- apiRef.current.forceUpdate();
98
- }, [apiRef, logger, props.rowCount, props.signature, visibleTopLevelRowCount]);
99
- const pageApi = {
100
- setPage,
101
- setPageSize,
102
- setPaginationModel
103
- };
104
- (0, _utils.useGridApiMethod)(apiRef, pageApi, 'public');
105
-
106
- /**
107
- * PRE-PROCESSING
108
- */
109
- const stateExportPreProcessing = React.useCallback((prevState, context) => {
110
- const paginationModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
111
- const shouldExportPaginationModel =
112
- // Always export if the `exportOnlyDirtyModels` property is not activated
113
- !context.exportOnlyDirtyModels ||
114
- // Always export if the `paginationModel` is controlled
115
- props.paginationModel != null ||
116
- // Always export if the `paginationModel` has been initialized
117
- props.initialState?.pagination?.paginationModel != null ||
118
- // Export if `page` or `pageSize` is not equal to the default value
119
- paginationModel.page !== 0 && paginationModel.pageSize !== (0, _gridPaginationUtils.defaultPageSize)(props.autoPageSize);
120
- if (!shouldExportPaginationModel) {
121
- return prevState;
122
- }
123
- return (0, _extends2.default)({}, prevState, {
124
- pagination: (0, _extends2.default)({}, prevState.pagination, {
125
- paginationModel
126
- })
127
- });
128
- }, [apiRef, props.paginationModel, props.initialState?.pagination?.paginationModel, props.autoPageSize]);
129
- const stateRestorePreProcessing = React.useCallback((params, context) => {
130
- const paginationModel = context.stateToRestore.pagination?.paginationModel ? (0, _extends2.default)({}, (0, _gridPaginationUtils.getDefaultGridPaginationModel)(props.autoPageSize), context.stateToRestore.pagination?.paginationModel) : (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
131
- apiRef.current.updateControlState('pagination', mergeStateWithPaginationModel(props.rowCount ?? visibleTopLevelRowCount, props.signature, paginationModel), 'stateRestorePreProcessing');
132
- return params;
133
- }, [apiRef, props.autoPageSize, props.rowCount, props.signature, visibleTopLevelRowCount]);
134
- (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
135
- (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
136
-
137
- /**
138
- * EVENTS
139
- */
140
- const handlePaginationModelChange = () => {
141
- const paginationModel = (0, _gridPaginationSelector.gridPaginationModelSelector)(apiRef);
142
- if (apiRef.current.virtualScrollerRef?.current) {
143
- apiRef.current.scrollToIndexes({
144
- rowIndex: paginationModel.page * paginationModel.pageSize
145
- });
146
- }
147
- apiRef.current.forceUpdate();
148
- };
149
- const handleUpdateAutoPageSize = React.useCallback(() => {
150
- if (!props.autoPageSize) {
151
- return;
152
- }
153
- const dimensions = apiRef.current.getRootDimensions();
154
- const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
155
- apiRef.current.setPageSize(maximumPageSizeWithoutScrollBar);
156
- }, [apiRef, props.autoPageSize, rowHeight]);
157
- (0, _utils.useGridApiEventHandler)(apiRef, 'viewportInnerSizeChange', handleUpdateAutoPageSize);
158
- (0, _utils.useGridApiEventHandler)(apiRef, 'paginationModelChange', handlePaginationModelChange);
159
-
160
- /**
161
- * EFFECTS
162
- */
163
- React.useEffect(() => {
164
- if (process.env.NODE_ENV !== 'production') {
165
- if (props.paginationMode === 'server' && props.rowCount == null) {
166
- (0, _gridPaginationUtils.noRowCountInServerMode)();
167
- }
168
- }
169
- }, [props.rowCount, props.paginationMode]);
170
- React.useEffect(() => {
171
- apiRef.current.updateControlState('pagination', mergeStateWithPaginationModel(props.rowCount ?? visibleTopLevelRowCount, props.signature, props.paginationModel));
172
- }, [apiRef, props.paginationModel, props.rowCount, props.paginationMode, visibleTopLevelRowCount, props.signature]);
173
- React.useEffect(() => {
174
- handleUpdateAutoPageSize();
175
- }, [handleUpdateAutoPageSize]);
30
+ (0, _useGridPaginationModel.useGridPaginationModel)(apiRef, props);
31
+ (0, _useGridRowCount.useGridRowCount)(apiRef, props);
176
32
  };
177
33
  exports.useGridPagination = useGridPagination;