@mui/x-data-grid-pro 8.0.0-beta.3 → 8.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 (259) hide show
  1. package/CHANGELOG.md +282 -96
  2. package/DataGridPro/DataGridPro.js +8 -7
  3. package/DataGridPro/useDataGridProComponent.d.ts +2 -2
  4. package/DataGridPro/useDataGridProComponent.js +2 -3
  5. package/esm/DataGridPro/DataGridPro.js +9 -8
  6. package/esm/DataGridPro/useDataGridProComponent.d.ts +2 -2
  7. package/esm/DataGridPro/useDataGridProComponent.js +2 -3
  8. package/esm/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
  9. package/esm/hooks/features/dataSource/useGridDataSourceBasePro.js +36 -8
  10. package/esm/hooks/features/dataSource/utils.d.ts +3 -2
  11. package/esm/hooks/features/dataSource/utils.js +13 -1
  12. package/esm/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  13. package/esm/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  14. package/esm/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  15. package/esm/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +38 -1
  16. package/esm/index.js +1 -1
  17. package/esm/internals/index.d.ts +1 -0
  18. package/esm/internals/index.js +1 -0
  19. package/esm/material/icons.d.ts +3 -6
  20. package/esm/material/icons.js +1 -1
  21. package/esm/material/index.d.ts +2 -2
  22. package/esm/models/dataGridProProps.d.ts +3 -3
  23. package/esm/models/gridProIconSlotsComponent.d.ts +6 -3
  24. package/esm/package.json +1 -1
  25. package/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +3 -6
  26. package/hooks/features/dataSource/useGridDataSourceBasePro.js +34 -6
  27. package/hooks/features/dataSource/utils.d.ts +3 -2
  28. package/hooks/features/dataSource/utils.js +15 -2
  29. package/hooks/features/lazyLoader/useGridLazyLoader.d.ts +1 -1
  30. package/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +1 -1
  31. package/hooks/features/rowPinning/useGridRowPinning.d.ts +1 -1
  32. package/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +37 -0
  33. package/index.js +1 -1
  34. package/internals/index.d.ts +1 -0
  35. package/internals/index.js +15 -7
  36. package/material/icons.d.ts +3 -6
  37. package/material/icons.js +3 -3
  38. package/material/index.d.ts +2 -2
  39. package/models/dataGridProProps.d.ts +3 -3
  40. package/models/gridProIconSlotsComponent.d.ts +6 -3
  41. package/package.json +8 -14
  42. package/esm/utils/releaseInfo.d.ts +0 -1
  43. package/esm/utils/releaseInfo.js +0 -13
  44. package/modern/DataGridPro/DataGrid.d.ts +0 -8
  45. package/modern/DataGridPro/DataGrid.js +0 -19
  46. package/modern/DataGridPro/DataGridPro.d.ts +0 -16
  47. package/modern/DataGridPro/DataGridPro.js +0 -1020
  48. package/modern/DataGridPro/index.d.ts +0 -3
  49. package/modern/DataGridPro/index.js +0 -3
  50. package/modern/DataGridPro/useDataGridProComponent.d.ts +0 -4
  51. package/modern/DataGridPro/useDataGridProComponent.js +0 -105
  52. package/modern/DataGridPro/useDataGridProProps.d.ts +0 -7
  53. package/modern/DataGridPro/useDataGridProProps.js +0 -54
  54. package/modern/components/GridColumnHeaders.d.ts +0 -5
  55. package/modern/components/GridColumnHeaders.js +0 -92
  56. package/modern/components/GridColumnMenuPinningItem.d.ts +0 -7
  57. package/modern/components/GridColumnMenuPinningItem.js +0 -77
  58. package/modern/components/GridDataSourceTreeDataGroupingCell.d.ts +0 -12
  59. package/modern/components/GridDataSourceTreeDataGroupingCell.js +0 -107
  60. package/modern/components/GridDetailPanel.d.ts +0 -14
  61. package/modern/components/GridDetailPanel.js +0 -53
  62. package/modern/components/GridDetailPanelToggleCell.d.ts +0 -7
  63. package/modern/components/GridDetailPanelToggleCell.js +0 -121
  64. package/modern/components/GridDetailPanels.d.ts +0 -3
  65. package/modern/components/GridDetailPanels.js +0 -67
  66. package/modern/components/GridPinnedRows.d.ts +0 -6
  67. package/modern/components/GridPinnedRows.js +0 -40
  68. package/modern/components/GridProColumnMenu.d.ts +0 -24
  69. package/modern/components/GridProColumnMenu.js +0 -21
  70. package/modern/components/GridRowReorderCell.d.ts +0 -8
  71. package/modern/components/GridRowReorderCell.js +0 -140
  72. package/modern/components/GridTreeDataGroupingCell.d.ts +0 -15
  73. package/modern/components/GridTreeDataGroupingCell.js +0 -133
  74. package/modern/components/headerFiltering/GridHeaderFilterCell.d.ts +0 -26
  75. package/modern/components/headerFiltering/GridHeaderFilterCell.js +0 -362
  76. package/modern/components/headerFiltering/GridHeaderFilterClearButton.d.ts +0 -6
  77. package/modern/components/headerFiltering/GridHeaderFilterClearButton.js +0 -17
  78. package/modern/components/headerFiltering/GridHeaderFilterMenu.d.ts +0 -30
  79. package/modern/components/headerFiltering/GridHeaderFilterMenu.js +0 -137
  80. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.d.ts +0 -17
  81. package/modern/components/headerFiltering/GridHeaderFilterMenuContainer.js +0 -138
  82. package/modern/components/headerFiltering/index.d.ts +0 -3
  83. package/modern/components/headerFiltering/index.js +0 -3
  84. package/modern/components/index.d.ts +0 -6
  85. package/modern/components/index.js +0 -7
  86. package/modern/components/reexports.d.ts +0 -1
  87. package/modern/components/reexports.js +0 -1
  88. package/modern/constants/dataGridProDefaultSlotsComponents.d.ts +0 -2
  89. package/modern/constants/dataGridProDefaultSlotsComponents.js +0 -17
  90. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -12
  91. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -143
  92. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.d.ts +0 -40
  93. package/modern/hooks/features/columnPinning/gridColumnPinningInterface.js +0 -1
  94. package/modern/hooks/features/columnPinning/index.d.ts +0 -1
  95. package/modern/hooks/features/columnPinning/index.js +0 -1
  96. package/modern/hooks/features/columnPinning/useGridColumnPinning.d.ts +0 -6
  97. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +0 -228
  98. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.d.ts +0 -4
  99. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +0 -105
  100. package/modern/hooks/features/columnReorder/columnReorderInterfaces.d.ts +0 -6
  101. package/modern/hooks/features/columnReorder/columnReorderInterfaces.js +0 -1
  102. package/modern/hooks/features/columnReorder/columnReorderSelector.d.ts +0 -3
  103. package/modern/hooks/features/columnReorder/columnReorderSelector.js +0 -3
  104. package/modern/hooks/features/columnReorder/index.d.ts +0 -2
  105. package/modern/hooks/features/columnReorder/index.js +0 -2
  106. package/modern/hooks/features/columnReorder/useGridColumnReorder.d.ts +0 -9
  107. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +0 -242
  108. package/modern/hooks/features/dataSource/gridDataSourceSelector.d.ts +0 -7
  109. package/modern/hooks/features/dataSource/gridDataSourceSelector.js +0 -6
  110. package/modern/hooks/features/dataSource/models.d.ts +0 -75
  111. package/modern/hooks/features/dataSource/models.js +0 -1
  112. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.d.ts +0 -33
  113. package/modern/hooks/features/dataSource/useGridDataSourceBasePro.js +0 -179
  114. package/modern/hooks/features/dataSource/useGridDataSourcePro.d.ts +0 -6
  115. package/modern/hooks/features/dataSource/useGridDataSourcePro.js +0 -35
  116. package/modern/hooks/features/dataSource/utils.d.ts +0 -29
  117. package/modern/hooks/features/dataSource/utils.js +0 -82
  118. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.d.ts +0 -41
  119. package/modern/hooks/features/detailPanel/gridDetailPanelInterface.js +0 -1
  120. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.d.ts +0 -14
  121. package/modern/hooks/features/detailPanel/gridDetailPanelSelector.js +0 -5
  122. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.d.ts +0 -4
  123. package/modern/hooks/features/detailPanel/gridDetailPanelToggleColDef.js +0 -34
  124. package/modern/hooks/features/detailPanel/index.d.ts +0 -3
  125. package/modern/hooks/features/detailPanel/index.js +0 -3
  126. package/modern/hooks/features/detailPanel/useGridDetailPanel.d.ts +0 -6
  127. package/modern/hooks/features/detailPanel/useGridDetailPanel.js +0 -191
  128. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.d.ts +0 -4
  129. package/modern/hooks/features/detailPanel/useGridDetailPanelPreProcessors.js +0 -43
  130. package/modern/hooks/features/index.d.ts +0 -7
  131. package/modern/hooks/features/index.js +0 -8
  132. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.d.ts +0 -9
  133. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +0 -104
  134. package/modern/hooks/features/lazyLoader/useGridLazyLoader.d.ts +0 -10
  135. package/modern/hooks/features/lazyLoader/useGridLazyLoader.js +0 -90
  136. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.d.ts +0 -5
  137. package/modern/hooks/features/lazyLoader/useGridLazyLoaderPreProcessors.js +0 -34
  138. package/modern/hooks/features/lazyLoader/utils.d.ts +0 -18
  139. package/modern/hooks/features/lazyLoader/utils.js +0 -34
  140. package/modern/hooks/features/rowPinning/gridRowPinningInterface.d.ts +0 -17
  141. package/modern/hooks/features/rowPinning/gridRowPinningInterface.js +0 -1
  142. package/modern/hooks/features/rowPinning/gridRowPinningSelector.d.ts +0 -1
  143. package/modern/hooks/features/rowPinning/gridRowPinningSelector.js +0 -1
  144. package/modern/hooks/features/rowPinning/index.d.ts +0 -1
  145. package/modern/hooks/features/rowPinning/index.js +0 -1
  146. package/modern/hooks/features/rowPinning/useGridRowPinning.d.ts +0 -6
  147. package/modern/hooks/features/rowPinning/useGridRowPinning.js +0 -52
  148. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.d.ts +0 -38
  149. package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +0 -119
  150. package/modern/hooks/features/rowReorder/gridRowReorderColDef.d.ts +0 -2
  151. package/modern/hooks/features/rowReorder/gridRowReorderColDef.js +0 -20
  152. package/modern/hooks/features/rowReorder/index.d.ts +0 -1
  153. package/modern/hooks/features/rowReorder/index.js +0 -1
  154. package/modern/hooks/features/rowReorder/useGridRowReorder.d.ts +0 -8
  155. package/modern/hooks/features/rowReorder/useGridRowReorder.js +0 -141
  156. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.d.ts +0 -4
  157. package/modern/hooks/features/rowReorder/useGridRowReorderPreProcessors.js +0 -46
  158. package/modern/hooks/features/rows/index.d.ts +0 -1
  159. package/modern/hooks/features/rows/index.js +0 -1
  160. package/modern/hooks/features/rows/useGridRowAriaAttributes.d.ts +0 -3
  161. package/modern/hooks/features/rows/useGridRowAriaAttributes.js +0 -37
  162. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.d.ts +0 -10
  163. package/modern/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +0 -325
  164. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.d.ts +0 -4
  165. package/modern/hooks/features/serverSideTreeData/useGridDataSourceTreeDataPreProcessors.js +0 -148
  166. package/modern/hooks/features/serverSideTreeData/utils.d.ts +0 -7
  167. package/modern/hooks/features/serverSideTreeData/utils.js +0 -18
  168. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.d.ts +0 -8
  169. package/modern/hooks/features/treeData/gridTreeDataGroupColDef.js +0 -27
  170. package/modern/hooks/features/treeData/gridTreeDataUtils.d.ts +0 -22
  171. package/modern/hooks/features/treeData/gridTreeDataUtils.js +0 -95
  172. package/modern/hooks/features/treeData/index.d.ts +0 -1
  173. package/modern/hooks/features/treeData/index.js +0 -1
  174. package/modern/hooks/features/treeData/useGridTreeData.d.ts +0 -4
  175. package/modern/hooks/features/treeData/useGridTreeData.js +0 -22
  176. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.d.ts +0 -4
  177. package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +0 -148
  178. package/modern/hooks/index.d.ts +0 -1
  179. package/modern/hooks/index.js +0 -1
  180. package/modern/hooks/utils/useGridApiContext.d.ts +0 -4
  181. package/modern/hooks/utils/useGridApiContext.js +0 -2
  182. package/modern/hooks/utils/useGridApiRef.d.ts +0 -4
  183. package/modern/hooks/utils/useGridApiRef.js +0 -2
  184. package/modern/hooks/utils/useGridAriaAttributes.d.ts +0 -2
  185. package/modern/hooks/utils/useGridAriaAttributes.js +0 -11
  186. package/modern/hooks/utils/useGridPrivateApiContext.d.ts +0 -2
  187. package/modern/hooks/utils/useGridPrivateApiContext.js +0 -2
  188. package/modern/hooks/utils/useGridRootProps.d.ts +0 -2
  189. package/modern/hooks/utils/useGridRootProps.js +0 -2
  190. package/modern/index.d.ts +0 -22
  191. package/modern/index.js +0 -25
  192. package/modern/internals/index.d.ts +0 -33
  193. package/modern/internals/index.js +0 -38
  194. package/modern/internals/propValidation.d.ts +0 -3
  195. package/modern/internals/propValidation.js +0 -2
  196. package/modern/locales.d.ts +0 -1
  197. package/modern/locales.js +0 -1
  198. package/modern/material/icons.d.ts +0 -6
  199. package/modern/material/icons.js +0 -17
  200. package/modern/material/index.d.ts +0 -5
  201. package/modern/material/index.js +0 -8
  202. package/modern/models/dataGridProProps.d.ts +0 -222
  203. package/modern/models/dataGridProProps.js +0 -1
  204. package/modern/models/gridApiPro.d.ts +0 -11
  205. package/modern/models/gridApiPro.js +0 -1
  206. package/modern/models/gridFetchRowsParams.d.ts +0 -22
  207. package/modern/models/gridFetchRowsParams.js +0 -1
  208. package/modern/models/gridGroupingColDefOverride.d.ts +0 -30
  209. package/modern/models/gridGroupingColDefOverride.js +0 -1
  210. package/modern/models/gridProIconSlotsComponent.d.ts +0 -13
  211. package/modern/models/gridProIconSlotsComponent.js +0 -1
  212. package/modern/models/gridProSlotProps.d.ts +0 -8
  213. package/modern/models/gridProSlotProps.js +0 -1
  214. package/modern/models/gridProSlotsComponent.d.ts +0 -18
  215. package/modern/models/gridProSlotsComponent.js +0 -1
  216. package/modern/models/gridRowOrderChangeParams.d.ts +0 -18
  217. package/modern/models/gridRowOrderChangeParams.js +0 -1
  218. package/modern/models/gridRowScrollEndParams.d.ts +0 -18
  219. package/modern/models/gridRowScrollEndParams.js +0 -1
  220. package/modern/models/gridStatePro.d.ts +0 -19
  221. package/modern/models/gridStatePro.js +0 -1
  222. package/modern/models/index.d.ts +0 -7
  223. package/modern/models/index.js +0 -7
  224. package/modern/package.json +0 -1
  225. package/modern/themeAugmentation/index.d.ts +0 -2
  226. package/modern/themeAugmentation/index.js +0 -4
  227. package/modern/themeAugmentation/overrides.d.ts +0 -7
  228. package/modern/themeAugmentation/overrides.js +0 -1
  229. package/modern/themeAugmentation/props.d.ts +0 -15
  230. package/modern/themeAugmentation/props.js +0 -1
  231. package/modern/typeOverloads/index.d.ts +0 -1
  232. package/modern/typeOverloads/index.js +0 -1
  233. package/modern/typeOverloads/modules.d.ts +0 -70
  234. package/modern/typeOverloads/modules.js +0 -1
  235. package/modern/typeOverloads/reexports.d.ts +0 -17
  236. package/modern/typeOverloads/reexports.js +0 -15
  237. package/modern/utils/index.d.ts +0 -1
  238. package/modern/utils/index.js +0 -1
  239. package/modern/utils/releaseInfo.d.ts +0 -1
  240. package/modern/utils/releaseInfo.js +0 -13
  241. package/modern/utils/tree/createRowTree.d.ts +0 -17
  242. package/modern/utils/tree/createRowTree.js +0 -37
  243. package/modern/utils/tree/index.d.ts +0 -1
  244. package/modern/utils/tree/index.js +0 -1
  245. package/modern/utils/tree/insertDataRowInTree.d.ts +0 -69
  246. package/modern/utils/tree/insertDataRowInTree.js +0 -141
  247. package/modern/utils/tree/models.d.ts +0 -14
  248. package/modern/utils/tree/models.js +0 -1
  249. package/modern/utils/tree/removeDataRowFromTree.d.ts +0 -45
  250. package/modern/utils/tree/removeDataRowFromTree.js +0 -94
  251. package/modern/utils/tree/sortRowTree.d.ts +0 -15
  252. package/modern/utils/tree/sortRowTree.js +0 -114
  253. package/modern/utils/tree/updateRowTree.d.ts +0 -20
  254. package/modern/utils/tree/updateRowTree.js +0 -88
  255. package/modern/utils/tree/utils.d.ts +0 -54
  256. package/modern/utils/tree/utils.js +0 -197
  257. package/tsconfig.build.tsbuildinfo +0 -1
  258. package/utils/releaseInfo.d.ts +0 -1
  259. package/utils/releaseInfo.js +0 -20
@@ -1,362 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["colIndex", "height", "hasFocus", "width", "headerClassName", "colDef", "item", "headerFilterMenuRef", "InputComponentProps", "showClearIcon", "pinnedPosition", "pinnedOffset", "style", "showLeftBorder", "showRightBorder"];
4
- import * as React from 'react';
5
- import PropTypes from 'prop-types';
6
- import clsx from 'clsx';
7
- import { styled } from '@mui/material/styles';
8
- import { unstable_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';
9
- import { fastMemo } from '@mui/x-internals/fastMemo';
10
- import { gridVisibleColumnFieldsSelector, getDataGridUtilityClass, useGridSelector, GridFilterInputValue, GridFilterInputDate, GridFilterInputBoolean, GridFilterInputSingleSelect, gridFilterModelSelector, gridFilterableColumnLookupSelector, gridClasses } from '@mui/x-data-grid';
11
- import { PinnedColumnPosition, useGridPrivateApiContext, gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector, isNavigationKey, attachPinnedStyle, vars } from '@mui/x-data-grid/internals';
12
- import { useRtl } from '@mui/system/RtlProvider';
13
- import { forwardRef } from '@mui/x-internals/forwardRef';
14
- import { inputBaseClasses } from '@mui/material/InputBase';
15
- import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
16
- import { GridHeaderFilterMenuContainer } from "./GridHeaderFilterMenuContainer.js";
17
- import { GridHeaderFilterClearButton } from "./GridHeaderFilterClearButton.js";
18
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
- const StyledInputComponent = styled(GridFilterInputValue, {
20
- name: 'MuiDataGrid',
21
- slot: 'ColumnHeaderFilterInput'
22
- })({
23
- flex: 1,
24
- marginRight: vars.spacing(0.5),
25
- marginBottom: vars.spacing(-0.25),
26
- '& input[type="number"], & input[type="date"], & input[type="datetime-local"]': {
27
- '&[value=""]:not(:focus)': {
28
- color: 'transparent'
29
- }
30
- },
31
- [`& .${inputBaseClasses.input}`]: {
32
- fontSize: '14px'
33
- },
34
- [`.${gridClasses['root--densityCompact']} & .${inputBaseClasses.input}`]: {
35
- paddingTop: vars.spacing(0.5),
36
- paddingBottom: vars.spacing(0.5),
37
- height: 23
38
- }
39
- });
40
- const OperatorLabel = styled('span', {
41
- name: 'MuiDataGrid',
42
- slot: 'ColumnHeaderFilterOperatorLabel'
43
- })({
44
- flex: 1,
45
- marginRight: vars.spacing(0.5),
46
- color: vars.colors.foreground.muted,
47
- whiteSpace: 'nowrap',
48
- textOverflow: 'ellipsis',
49
- overflow: 'hidden'
50
- });
51
- const useUtilityClasses = ownerState => {
52
- const {
53
- colDef,
54
- classes,
55
- showRightBorder,
56
- showLeftBorder,
57
- pinnedPosition
58
- } = ownerState;
59
- const slots = {
60
- root: ['columnHeader', 'columnHeader--filter', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', pinnedPosition === PinnedColumnPosition.LEFT && 'columnHeader--pinnedLeft', pinnedPosition === PinnedColumnPosition.RIGHT && 'columnHeader--pinnedRight'],
61
- input: ['columnHeaderFilterInput'],
62
- operatorLabel: ['columnHeaderFilterOperatorLabel']
63
- };
64
- return composeClasses(slots, getDataGridUtilityClass, classes);
65
- };
66
- const DEFAULT_INPUT_COMPONENTS = {
67
- string: GridFilterInputValue,
68
- number: GridFilterInputValue,
69
- date: GridFilterInputDate,
70
- dateTime: GridFilterInputDate,
71
- boolean: GridFilterInputBoolean,
72
- singleSelect: GridFilterInputSingleSelect,
73
- actions: null,
74
- custom: null
75
- };
76
- const GridHeaderFilterCell = forwardRef((props, ref) => {
77
- const {
78
- colIndex,
79
- height,
80
- hasFocus,
81
- width,
82
- headerClassName,
83
- colDef,
84
- item,
85
- headerFilterMenuRef,
86
- InputComponentProps,
87
- showClearIcon = false,
88
- pinnedPosition,
89
- pinnedOffset,
90
- style: styleProp,
91
- showLeftBorder,
92
- showRightBorder
93
- } = props,
94
- other = _objectWithoutPropertiesLoose(props, _excluded);
95
- const apiRef = useGridPrivateApiContext();
96
- const isRtl = useRtl();
97
- const columnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
98
- const rootProps = useGridRootProps();
99
- const cellRef = React.useRef(null);
100
- const handleRef = useForkRef(ref, cellRef);
101
- const inputRef = React.useRef(null);
102
- const buttonRef = React.useRef(null);
103
- const editingField = useGridSelector(apiRef, gridHeaderFilteringEditFieldSelector);
104
- const isEditing = editingField === colDef.field;
105
- const menuOpenField = useGridSelector(apiRef, gridHeaderFilteringMenuSelector);
106
- const isMenuOpen = menuOpenField === colDef.field;
107
-
108
- // TODO: Support for `isAnyOf` operator
109
- const filterOperators = React.useMemo(() => {
110
- if (!colDef.filterOperators) {
111
- return [];
112
- }
113
- return colDef.filterOperators.filter(operator => operator.value !== 'isAnyOf');
114
- }, [colDef.filterOperators]);
115
- const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
116
- const filterableColumnsLookup = useGridSelector(apiRef, gridFilterableColumnLookupSelector);
117
- const isFilterReadOnly = React.useMemo(() => {
118
- if (!filterModel?.items.length) {
119
- return false;
120
- }
121
- const filterModelItem = filterModel.items.find(it => it.field === colDef.field);
122
- return filterModelItem ? !filterableColumnsLookup[filterModelItem.field] : false;
123
- }, [colDef.field, filterModel, filterableColumnsLookup]);
124
- const currentOperator = React.useMemo(() => filterOperators.find(operator => operator.value === item.operator) ?? filterOperators[0], [item.operator, filterOperators]);
125
- const InputComponent = colDef.filterable || isFilterReadOnly ? currentOperator.InputComponent ?? DEFAULT_INPUT_COMPONENTS[colDef.type] : null;
126
- const clearFilterItem = React.useCallback(() => {
127
- apiRef.current.deleteFilterItem(item);
128
- }, [apiRef, item]);
129
- let headerFilterComponent;
130
- if (colDef.renderHeaderFilter) {
131
- headerFilterComponent = colDef.renderHeaderFilter(_extends({}, props, {
132
- inputRef
133
- }));
134
- }
135
- React.useLayoutEffect(() => {
136
- if (hasFocus && !isMenuOpen) {
137
- let focusableElement = cellRef.current.querySelector('[tabindex="0"]');
138
- if (isEditing && InputComponent) {
139
- focusableElement = inputRef.current;
140
- }
141
- const elementToFocus = focusableElement || cellRef.current;
142
- elementToFocus?.focus();
143
- if (apiRef.current.columnHeadersContainerRef.current) {
144
- apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
145
- }
146
- }
147
- }, [InputComponent, apiRef, hasFocus, isEditing, isMenuOpen]);
148
- const onKeyDown = React.useCallback(event => {
149
- if (isMenuOpen || isNavigationKey(event.key) || isFilterReadOnly) {
150
- return;
151
- }
152
- switch (event.key) {
153
- case 'Escape':
154
- if (isEditing) {
155
- apiRef.current.stopHeaderFilterEditMode();
156
- }
157
- break;
158
- case 'Enter':
159
- if (isEditing) {
160
- if (!event.defaultPrevented) {
161
- apiRef.current.stopHeaderFilterEditMode();
162
- break;
163
- }
164
- }
165
- if (event.metaKey || event.ctrlKey) {
166
- headerFilterMenuRef.current = buttonRef.current;
167
- apiRef.current.showHeaderFilterMenu(colDef.field);
168
- break;
169
- }
170
- apiRef.current.startHeaderFilterEditMode(colDef.field);
171
- break;
172
- case 'Tab':
173
- {
174
- if (isEditing) {
175
- const fieldToFocus = columnFields[colIndex + (event.shiftKey ? -1 : 1)] ?? null;
176
- if (fieldToFocus) {
177
- apiRef.current.startHeaderFilterEditMode(fieldToFocus);
178
- apiRef.current.setColumnHeaderFilterFocus(fieldToFocus, event);
179
- }
180
- }
181
- break;
182
- }
183
- default:
184
- if (isEditing || event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) {
185
- break;
186
- }
187
- apiRef.current.startHeaderFilterEditMode(colDef.field);
188
- break;
189
- }
190
- }, [apiRef, colDef.field, colIndex, columnFields, headerFilterMenuRef, isEditing, isFilterReadOnly, isMenuOpen]);
191
- const publish = React.useCallback((eventName, propHandler) => event => {
192
- apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(colDef.field), event);
193
- if (propHandler) {
194
- propHandler(event);
195
- }
196
- }, [apiRef, colDef.field]);
197
- const onMouseDown = React.useCallback(event => {
198
- if (!hasFocus) {
199
- if (inputRef.current?.contains?.(event.target)) {
200
- inputRef.current.focus();
201
- }
202
- apiRef.current.setColumnHeaderFilterFocus(colDef.field, event);
203
- }
204
- }, [apiRef, colDef.field, hasFocus]);
205
- const mouseEventsHandlers = React.useMemo(() => ({
206
- onKeyDown: publish('headerFilterKeyDown', onKeyDown),
207
- onClick: publish('headerFilterClick'),
208
- onMouseDown: publish('headerFilterMouseDown', onMouseDown),
209
- onBlur: publish('headerFilterBlur')
210
- }), [onMouseDown, onKeyDown, publish]);
211
- const ownerState = _extends({}, rootProps, {
212
- pinnedPosition,
213
- colDef,
214
- showLeftBorder,
215
- showRightBorder
216
- });
217
- const classes = useUtilityClasses(ownerState);
218
- const label = currentOperator.headerLabel ?? apiRef.current.getLocaleText(`headerFilterOperator${capitalize(item.operator)}`);
219
- const isNoInputOperator = currentOperator.requiresFilterValue === false;
220
- const isApplied = item?.value !== undefined || isNoInputOperator;
221
- const isFilterActive = isApplied || hasFocus;
222
- const headerFilterMenu = /*#__PURE__*/_jsx(GridHeaderFilterMenuContainer, {
223
- operators: filterOperators,
224
- item: item,
225
- field: colDef.field,
226
- disabled: isFilterReadOnly,
227
- applyFilterChanges: apiRef.current.upsertFilterItem,
228
- headerFilterMenuRef: headerFilterMenuRef,
229
- buttonRef: buttonRef,
230
- showClearItem: !showClearIcon && isApplied,
231
- clearFilterItem: clearFilterItem
232
- });
233
- const clearButton = showClearIcon && isApplied ? /*#__PURE__*/_jsx(GridHeaderFilterClearButton, {
234
- onClick: clearFilterItem,
235
- disabled: isFilterReadOnly
236
- }) : null;
237
- return /*#__PURE__*/_jsxs("div", _extends({
238
- className: clsx(classes.root, headerClassName),
239
- style: attachPinnedStyle(_extends({
240
- height,
241
- width
242
- }, styleProp), isRtl, pinnedPosition, pinnedOffset),
243
- role: "columnheader",
244
- "aria-colindex": colIndex + 1,
245
- "aria-label": headerFilterComponent == null ? colDef.headerName ?? colDef.field : undefined
246
- }, other, mouseEventsHandlers, {
247
- ref: handleRef,
248
- children: [headerFilterComponent, headerFilterComponent === undefined ? /*#__PURE__*/_jsxs(React.Fragment, {
249
- children: [isNoInputOperator ? /*#__PURE__*/_jsxs(React.Fragment, {
250
- children: [/*#__PURE__*/_jsx(OperatorLabel, {
251
- className: classes.operatorLabel,
252
- children: label
253
- }), clearButton, headerFilterMenu]
254
- }) : null, InputComponent && !isNoInputOperator ? /*#__PURE__*/_jsx(StyledInputComponent, _extends({
255
- as: InputComponent,
256
- className: classes.input,
257
- apiRef: apiRef,
258
- item: item,
259
- inputRef: inputRef,
260
- applyValue: apiRef.current.upsertFilterItem,
261
- onFocus: () => apiRef.current.startHeaderFilterEditMode(colDef.field),
262
- onBlur: event => {
263
- apiRef.current.stopHeaderFilterEditMode();
264
- // Blurring an input element should reset focus state only if `relatedTarget` is not the header filter cell
265
- if (!event.relatedTarget?.className.includes('columnHeader')) {
266
- apiRef.current.setState(state => _extends({}, state, {
267
- focus: {
268
- cell: null,
269
- columnHeader: null,
270
- columnHeaderFilter: null,
271
- columnGroupHeader: null
272
- }
273
- }));
274
- }
275
- },
276
- isFilterActive: isFilterActive,
277
- headerFilterMenu: headerFilterMenu,
278
- clearButton: clearButton,
279
- disabled: isFilterReadOnly || isNoInputOperator,
280
- tabIndex: -1,
281
- slotProps: {
282
- root: {
283
- size: 'small',
284
- label: capitalize(label),
285
- placeholder: ''
286
- }
287
- }
288
- }, isNoInputOperator ? {
289
- value: ''
290
- } : {}, currentOperator?.InputComponentProps, InputComponentProps)) : null]
291
- }) : null]
292
- }));
293
- });
294
- process.env.NODE_ENV !== "production" ? GridHeaderFilterCell.propTypes = {
295
- // ----------------------------- Warning --------------------------------
296
- // | These PropTypes are generated from the TypeScript type definitions |
297
- // | To update them edit the TypeScript types and run "pnpm proptypes" |
298
- // ----------------------------------------------------------------------
299
- colDef: PropTypes.object.isRequired,
300
- colIndex: PropTypes.number.isRequired,
301
- hasFocus: PropTypes.bool,
302
- /**
303
- * Class name added to the column header cell.
304
- */
305
- headerClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
306
- headerFilterMenuRef: PropTypes.shape({
307
- current: PropTypes.object
308
- }).isRequired,
309
- height: PropTypes.number.isRequired,
310
- InputComponentProps: PropTypes.shape({
311
- apiRef: PropTypes.shape({
312
- current: PropTypes.object.isRequired
313
- }),
314
- applyValue: PropTypes.func,
315
- className: PropTypes.string,
316
- clearButton: PropTypes.node,
317
- disabled: PropTypes.bool,
318
- focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
319
- current: PropTypes.any.isRequired
320
- })]),
321
- headerFilterMenu: PropTypes.node,
322
- inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
323
- current: (props, propName) => {
324
- if (props[propName] == null) {
325
- return null;
326
- }
327
- if (typeof props[propName] !== 'object' || props[propName].nodeType !== 1) {
328
- return new Error(`Expected prop '${propName}' to be of type Element`);
329
- }
330
- return null;
331
- }
332
- })]),
333
- isFilterActive: PropTypes.bool,
334
- item: PropTypes.shape({
335
- field: PropTypes.string.isRequired,
336
- id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
337
- operator: PropTypes.string.isRequired,
338
- value: PropTypes.any
339
- }),
340
- onBlur: PropTypes.func,
341
- onFocus: PropTypes.func,
342
- slotProps: PropTypes.object,
343
- tabIndex: PropTypes.number
344
- }),
345
- item: PropTypes.shape({
346
- field: PropTypes.string.isRequired,
347
- id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
348
- operator: PropTypes.string.isRequired,
349
- value: PropTypes.any
350
- }).isRequired,
351
- pinnedOffset: PropTypes.number,
352
- pinnedPosition: PropTypes.oneOf([0, 1, 2, 3]),
353
- showClearIcon: PropTypes.bool,
354
- showLeftBorder: PropTypes.bool.isRequired,
355
- showRightBorder: PropTypes.bool.isRequired,
356
- sortIndex: PropTypes.number,
357
- style: PropTypes.object,
358
- tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
359
- width: PropTypes.number.isRequired
360
- } : void 0;
361
- const Memoized = fastMemo(GridHeaderFilterCell);
362
- export { Memoized as GridHeaderFilterCell };
@@ -1,6 +0,0 @@
1
- import * as React from 'react';
2
- import { GridSlotProps } from '@mui/x-data-grid';
3
- type BaseIconButtonProps = GridSlotProps['baseIconButton'];
4
- interface GridHeaderFilterClearIconProps extends BaseIconButtonProps {}
5
- declare function GridHeaderFilterClearButton(props: GridHeaderFilterClearIconProps): React.JSX.Element;
6
- export { GridHeaderFilterClearButton };
@@ -1,17 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- function GridHeaderFilterClearButton(props) {
6
- const rootProps = useGridRootProps();
7
- return /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({
8
- tabIndex: -1,
9
- "aria-label": "Clear filter",
10
- size: "small"
11
- }, rootProps.slotProps?.baseIconButton, props, {
12
- children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuClearIcon, {
13
- fontSize: "inherit"
14
- })
15
- }));
16
- }
17
- export { GridHeaderFilterClearButton };
@@ -1,30 +0,0 @@
1
- import * as React from 'react';
2
- import { GridFilterOperator, GridFilterItem, GridColDef } from '@mui/x-data-grid';
3
- interface GridHeaderFilterMenuProps {
4
- field: GridColDef['field'];
5
- applyFilterChanges: (item: GridFilterItem) => void;
6
- operators: GridFilterOperator<any, any, any>[];
7
- item: GridFilterItem;
8
- open: boolean;
9
- id: string;
10
- labelledBy: string;
11
- target: HTMLElement | null;
12
- showClearItem: boolean;
13
- clearFilterItem: () => void;
14
- }
15
- declare function GridHeaderFilterMenu({
16
- open,
17
- field,
18
- target,
19
- applyFilterChanges,
20
- operators,
21
- item,
22
- id,
23
- labelledBy,
24
- showClearItem,
25
- clearFilterItem
26
- }: GridHeaderFilterMenuProps): React.JSX.Element | null;
27
- declare namespace GridHeaderFilterMenu {
28
- var propTypes: any;
29
- }
30
- export { GridHeaderFilterMenu };
@@ -1,137 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import PropTypes from 'prop-types';
4
- import { unstable_capitalize as capitalize, HTMLElementType } from '@mui/utils';
5
- import { useGridRootProps, useGridApiContext, GridMenu } from '@mui/x-data-grid';
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
- function GridHeaderFilterMenu({
8
- open,
9
- field,
10
- target,
11
- applyFilterChanges,
12
- operators,
13
- item,
14
- id,
15
- labelledBy,
16
- showClearItem,
17
- clearFilterItem
18
- }) {
19
- const apiRef = useGridApiContext();
20
- const rootProps = useGridRootProps();
21
- const hideMenu = React.useCallback(() => {
22
- apiRef.current.hideHeaderFilterMenu();
23
- }, [apiRef]);
24
- const handleListKeyDown = React.useCallback(event => {
25
- if (event.key === 'Tab') {
26
- event.preventDefault();
27
- }
28
- if (event.key === 'Escape' || event.key === 'Tab') {
29
- hideMenu();
30
- }
31
- }, [hideMenu]);
32
- if (!target) {
33
- return null;
34
- }
35
- return /*#__PURE__*/_jsx(GridMenu, {
36
- position: "bottom-end",
37
- open: open,
38
- target: target,
39
- onClose: hideMenu,
40
- children: /*#__PURE__*/_jsxs(rootProps.slots.baseMenuList, {
41
- "aria-labelledby": labelledBy,
42
- id: id,
43
- onKeyDown: handleListKeyDown,
44
- children: [showClearItem && [/*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, {
45
- iconStart: /*#__PURE__*/_jsx(rootProps.slots.columnMenuClearIcon, {
46
- fontSize: "small"
47
- }),
48
- onClick: () => {
49
- clearFilterItem();
50
- hideMenu();
51
- },
52
- children: apiRef.current.getLocaleText('headerFilterClear')
53
- }, "filter-menu-clear-filter"), /*#__PURE__*/_jsx(rootProps.slots.baseDivider, {}, "filter-menu-divider")], operators.map(op => {
54
- const selected = op.value === item.operator;
55
- const label = op?.headerLabel ?? apiRef.current.getLocaleText(`headerFilterOperator${capitalize(op.value)}`);
56
- return /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, {
57
- iconStart: selected ? /*#__PURE__*/_jsx(rootProps.slots.menuItemCheckIcon, {
58
- fontSize: "small"
59
- }) : /*#__PURE__*/_jsx("span", {}),
60
- onClick: () => {
61
- applyFilterChanges(_extends({}, item, {
62
- operator: op.value
63
- }));
64
- hideMenu();
65
- },
66
- autoFocus: selected ? open : false,
67
- children: label
68
- }, `${field}-${op.value}`);
69
- })]
70
- })
71
- });
72
- }
73
- process.env.NODE_ENV !== "production" ? GridHeaderFilterMenu.propTypes = {
74
- // ----------------------------- Warning --------------------------------
75
- // | These PropTypes are generated from the TypeScript type definitions |
76
- // | To update them edit the TypeScript types and run "pnpm proptypes" |
77
- // ----------------------------------------------------------------------
78
- applyFilterChanges: PropTypes.func.isRequired,
79
- clearFilterItem: PropTypes.func.isRequired,
80
- field: PropTypes.string.isRequired,
81
- id: PropTypes.string.isRequired,
82
- item: PropTypes.shape({
83
- field: PropTypes.string.isRequired,
84
- id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
85
- operator: PropTypes.string.isRequired,
86
- value: PropTypes.any
87
- }).isRequired,
88
- labelledBy: PropTypes.string.isRequired,
89
- open: PropTypes.bool.isRequired,
90
- operators: PropTypes.arrayOf(PropTypes.shape({
91
- getApplyFilterFn: PropTypes.func.isRequired,
92
- getValueAsString: PropTypes.func,
93
- headerLabel: PropTypes.string,
94
- InputComponent: PropTypes.elementType,
95
- InputComponentProps: PropTypes.shape({
96
- apiRef: PropTypes.shape({
97
- current: PropTypes.object.isRequired
98
- }),
99
- applyValue: PropTypes.func,
100
- className: PropTypes.string,
101
- clearButton: PropTypes.node,
102
- disabled: PropTypes.bool,
103
- focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
104
- current: PropTypes.any.isRequired
105
- })]),
106
- headerFilterMenu: PropTypes.node,
107
- inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
108
- current: (props, propName) => {
109
- if (props[propName] == null) {
110
- return null;
111
- }
112
- if (typeof props[propName] !== 'object' || props[propName].nodeType !== 1) {
113
- return new Error(`Expected prop '${propName}' to be of type Element`);
114
- }
115
- return null;
116
- }
117
- })]),
118
- isFilterActive: PropTypes.bool,
119
- item: PropTypes.shape({
120
- field: PropTypes.string.isRequired,
121
- id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
122
- operator: PropTypes.string.isRequired,
123
- value: PropTypes.any
124
- }),
125
- onBlur: PropTypes.func,
126
- onFocus: PropTypes.func,
127
- slotProps: PropTypes.object,
128
- tabIndex: PropTypes.number
129
- }),
130
- label: PropTypes.string,
131
- requiresFilterValue: PropTypes.bool,
132
- value: PropTypes.string.isRequired
133
- })).isRequired,
134
- showClearItem: PropTypes.bool.isRequired,
135
- target: HTMLElementType
136
- } : void 0;
137
- export { GridHeaderFilterMenu };
@@ -1,17 +0,0 @@
1
- import * as React from 'react';
2
- import { GridFilterItem, GridFilterOperator, GridColDef } from '@mui/x-data-grid';
3
- declare function GridHeaderFilterMenuContainer(props: {
4
- operators: GridFilterOperator<any, any, any>[];
5
- field: GridColDef['field'];
6
- item: GridFilterItem;
7
- applyFilterChanges: (item: GridFilterItem) => void;
8
- headerFilterMenuRef: React.RefObject<HTMLButtonElement | null>;
9
- buttonRef: React.Ref<HTMLButtonElement>;
10
- disabled?: boolean;
11
- showClearItem?: boolean;
12
- clearFilterItem?: () => void;
13
- }): React.JSX.Element | null;
14
- declare namespace GridHeaderFilterMenuContainer {
15
- var propTypes: any;
16
- }
17
- export { GridHeaderFilterMenuContainer };