@mui/x-data-grid-premium 8.11.3 → 8.12.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 (206) hide show
  1. package/CHANGELOG.md +151 -6
  2. package/DataGridPremium/DataGridPremium.js +29 -1
  3. package/DataGridPremium/useDataGridPremiumComponent.d.ts +1 -1
  4. package/DataGridPremium/useDataGridPremiumComponent.js +5 -2
  5. package/DataGridPremium/useDataGridPremiumProps.js +2 -1
  6. package/components/GridPremiumColumnMenu.d.ts +4 -4
  7. package/components/GridPremiumColumnMenu.js +6 -6
  8. package/components/GridPremiumToolbar.js +11 -0
  9. package/components/chartsIntegration/GridChartsIntegrationContext.d.ts +2 -0
  10. package/components/chartsIntegration/GridChartsIntegrationContext.js +11 -0
  11. package/components/chartsPanel/ChartsPanelTrigger.d.ts +33 -0
  12. package/components/chartsPanel/ChartsPanelTrigger.js +92 -0
  13. package/components/chartsPanel/GridChartsPanel.d.ts +21 -0
  14. package/components/chartsPanel/GridChartsPanel.js +243 -0
  15. package/components/chartsPanel/chart/GridChartsPanelChart.d.ts +12 -0
  16. package/components/chartsPanel/chart/GridChartsPanelChart.js +111 -0
  17. package/components/chartsPanel/customize/GridChartsPanelCustomize.d.ts +8 -0
  18. package/components/chartsPanel/customize/GridChartsPanelCustomize.js +147 -0
  19. package/components/chartsPanel/data/GridChartsPanelData.d.ts +4 -0
  20. package/components/chartsPanel/data/GridChartsPanelData.js +23 -0
  21. package/components/chartsPanel/data/GridChartsPanelDataBody.d.ts +12 -0
  22. package/components/chartsPanel/data/GridChartsPanelDataBody.js +380 -0
  23. package/components/chartsPanel/data/GridChartsPanelDataField.d.ts +25 -0
  24. package/components/chartsPanel/data/GridChartsPanelDataField.js +334 -0
  25. package/components/chartsPanel/data/GridChartsPanelDataFieldMenu.d.ts +11 -0
  26. package/components/chartsPanel/data/GridChartsPanelDataFieldMenu.js +179 -0
  27. package/components/chartsPanel/data/GridChartsPanelDataHeader.d.ts +7 -0
  28. package/components/chartsPanel/data/GridChartsPanelDataHeader.js +24 -0
  29. package/components/chartsPanel/data/GridChartsPanelDataSearch.d.ts +7 -0
  30. package/components/chartsPanel/data/GridChartsPanelDataSearch.js +80 -0
  31. package/components/chartsPanel/index.d.ts +2 -0
  32. package/components/chartsPanel/index.js +27 -0
  33. package/components/collapsible/Collapsible.d.ts +3 -1
  34. package/components/collapsible/Collapsible.js +4 -3
  35. package/components/{GridColumnMenuAggregationItem.js → columnMenu/menuItems/GridColumnMenuAggregationItem.js} +4 -4
  36. package/components/columnMenu/menuItems/GridColumnMenuChartsItem.d.ts +3 -0
  37. package/components/columnMenu/menuItems/GridColumnMenuChartsItem.js +36 -0
  38. package/components/columnMenu/menuItems/GridColumnMenuManagePanelItem.d.ts +4 -0
  39. package/components/columnMenu/menuItems/GridColumnMenuManagePanelItem.js +18 -0
  40. package/{esm/components → components/columnMenu/menuItems}/GridColumnMenuPivotItem.d.ts +1 -1
  41. package/components/{GridColumnMenuPivotItem.js → columnMenu/menuItems/GridColumnMenuPivotItem.js} +7 -4
  42. package/components/{GridColumnMenuRowGroupItem.js → columnMenu/menuItems/GridColumnMenuRowGroupItem.js} +4 -4
  43. package/components/{GridColumnMenuRowUngroupItem.js → columnMenu/menuItems/GridColumnMenuRowUngroupItem.js} +3 -3
  44. package/components/index.d.ts +3 -2
  45. package/components/index.js +13 -1
  46. package/components/pivotPanel/GridPivotPanelField.js +14 -2
  47. package/components/pivotPanel/GridPivotPanelHeader.js +1 -0
  48. package/components/pivotPanel/GridPivotPanelSearch.js +3 -0
  49. package/constants/columnGroups.d.ts +1 -0
  50. package/constants/columnGroups.js +7 -0
  51. package/constants/dataGridPremiumDefaultSlotsComponents.js +1 -0
  52. package/context/GridChartsIntegrationContextProvider.d.ts +7 -0
  53. package/context/GridChartsIntegrationContextProvider.js +35 -0
  54. package/context/GridChartsRendererProxy.d.ts +34 -0
  55. package/context/GridChartsRendererProxy.js +77 -0
  56. package/context/index.d.ts +2 -0
  57. package/context/index.js +27 -0
  58. package/esm/DataGridPremium/DataGridPremium.js +30 -2
  59. package/esm/DataGridPremium/useDataGridPremiumComponent.d.ts +1 -1
  60. package/esm/DataGridPremium/useDataGridPremiumComponent.js +5 -2
  61. package/esm/DataGridPremium/useDataGridPremiumProps.js +2 -1
  62. package/esm/components/GridPremiumColumnMenu.d.ts +4 -4
  63. package/esm/components/GridPremiumColumnMenu.js +6 -6
  64. package/esm/components/GridPremiumToolbar.js +11 -0
  65. package/esm/components/chartsIntegration/GridChartsIntegrationContext.d.ts +2 -0
  66. package/esm/components/chartsIntegration/GridChartsIntegrationContext.js +5 -0
  67. package/esm/components/chartsPanel/ChartsPanelTrigger.d.ts +33 -0
  68. package/esm/components/chartsPanel/ChartsPanelTrigger.js +85 -0
  69. package/esm/components/chartsPanel/GridChartsPanel.d.ts +21 -0
  70. package/esm/components/chartsPanel/GridChartsPanel.js +237 -0
  71. package/esm/components/chartsPanel/chart/GridChartsPanelChart.d.ts +12 -0
  72. package/esm/components/chartsPanel/chart/GridChartsPanelChart.js +104 -0
  73. package/esm/components/chartsPanel/customize/GridChartsPanelCustomize.d.ts +8 -0
  74. package/esm/components/chartsPanel/customize/GridChartsPanelCustomize.js +139 -0
  75. package/esm/components/chartsPanel/data/GridChartsPanelData.d.ts +4 -0
  76. package/esm/components/chartsPanel/data/GridChartsPanelData.js +18 -0
  77. package/esm/components/chartsPanel/data/GridChartsPanelDataBody.d.ts +12 -0
  78. package/esm/components/chartsPanel/data/GridChartsPanelDataBody.js +374 -0
  79. package/esm/components/chartsPanel/data/GridChartsPanelDataField.d.ts +25 -0
  80. package/esm/components/chartsPanel/data/GridChartsPanelDataField.js +327 -0
  81. package/esm/components/chartsPanel/data/GridChartsPanelDataFieldMenu.d.ts +11 -0
  82. package/esm/components/chartsPanel/data/GridChartsPanelDataFieldMenu.js +173 -0
  83. package/esm/components/chartsPanel/data/GridChartsPanelDataHeader.d.ts +7 -0
  84. package/esm/components/chartsPanel/data/GridChartsPanelDataHeader.js +18 -0
  85. package/esm/components/chartsPanel/data/GridChartsPanelDataSearch.d.ts +7 -0
  86. package/esm/components/chartsPanel/data/GridChartsPanelDataSearch.js +73 -0
  87. package/esm/components/chartsPanel/index.d.ts +2 -0
  88. package/esm/components/chartsPanel/index.js +2 -0
  89. package/esm/components/collapsible/Collapsible.d.ts +3 -1
  90. package/esm/components/collapsible/Collapsible.js +4 -3
  91. package/esm/components/{GridColumnMenuAggregationItem.js → columnMenu/menuItems/GridColumnMenuAggregationItem.js} +4 -4
  92. package/esm/components/columnMenu/menuItems/GridColumnMenuChartsItem.d.ts +3 -0
  93. package/esm/components/columnMenu/menuItems/GridColumnMenuChartsItem.js +29 -0
  94. package/esm/components/columnMenu/menuItems/GridColumnMenuManagePanelItem.d.ts +4 -0
  95. package/esm/components/columnMenu/menuItems/GridColumnMenuManagePanelItem.js +11 -0
  96. package/{components → esm/components/columnMenu/menuItems}/GridColumnMenuPivotItem.d.ts +1 -1
  97. package/esm/components/{GridColumnMenuPivotItem.js → columnMenu/menuItems/GridColumnMenuPivotItem.js} +7 -4
  98. package/esm/components/{GridColumnMenuRowGroupItem.js → columnMenu/menuItems/GridColumnMenuRowGroupItem.js} +4 -4
  99. package/esm/components/{GridColumnMenuRowUngroupItem.js → columnMenu/menuItems/GridColumnMenuRowUngroupItem.js} +3 -3
  100. package/esm/components/index.d.ts +3 -2
  101. package/esm/components/index.js +3 -2
  102. package/esm/components/pivotPanel/GridPivotPanelField.js +15 -3
  103. package/esm/components/pivotPanel/GridPivotPanelHeader.js +1 -0
  104. package/esm/components/pivotPanel/GridPivotPanelSearch.js +3 -0
  105. package/esm/constants/columnGroups.d.ts +1 -0
  106. package/esm/constants/columnGroups.js +1 -0
  107. package/esm/constants/dataGridPremiumDefaultSlotsComponents.js +1 -0
  108. package/esm/context/GridChartsIntegrationContextProvider.d.ts +7 -0
  109. package/esm/context/GridChartsIntegrationContextProvider.js +28 -0
  110. package/esm/context/GridChartsRendererProxy.d.ts +34 -0
  111. package/esm/context/GridChartsRendererProxy.js +71 -0
  112. package/esm/context/index.d.ts +2 -0
  113. package/esm/context/index.js +2 -0
  114. package/esm/hooks/features/aggregation/createAggregationLookup.js +5 -3
  115. package/esm/hooks/features/aggregation/gridAggregationInterfaces.d.ts +1 -0
  116. package/esm/hooks/features/aggregation/gridAggregationSelectors.d.ts +1 -0
  117. package/esm/hooks/features/aggregation/gridAggregationSelectors.js +3 -0
  118. package/esm/hooks/features/aggregation/useGridAggregation.js +13 -1
  119. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +2 -1
  120. package/esm/hooks/features/aggregation/wrapColumnWithAggregation.js +1 -45
  121. package/esm/hooks/features/chartsIntegration/gridChartsIntegrationInterfaces.d.ts +65 -0
  122. package/esm/hooks/features/chartsIntegration/gridChartsIntegrationInterfaces.js +1 -0
  123. package/esm/hooks/features/chartsIntegration/gridChartsIntegrationSelectors.d.ts +17 -0
  124. package/esm/hooks/features/chartsIntegration/gridChartsIntegrationSelectors.js +24 -0
  125. package/esm/hooks/features/chartsIntegration/useGridChartsIntegration.d.ts +8 -0
  126. package/esm/hooks/features/chartsIntegration/useGridChartsIntegration.js +525 -0
  127. package/esm/hooks/features/chartsIntegration/utils.d.ts +5 -0
  128. package/esm/hooks/features/chartsIntegration/utils.js +32 -0
  129. package/esm/hooks/features/pivoting/useGridPivoting.js +1 -1
  130. package/esm/hooks/features/pivoting/utils.js +9 -7
  131. package/esm/hooks/features/rowGrouping/createGroupingColDef.js +3 -1
  132. package/esm/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +1 -0
  133. package/esm/hooks/features/rowGrouping/gridRowGroupingUtils.js +3 -2
  134. package/esm/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +1 -0
  135. package/esm/hooks/features/sidebar/gridSidebarInterfaces.d.ts +1 -0
  136. package/esm/hooks/features/sidebar/gridSidebarInterfaces.js +1 -0
  137. package/esm/hooks/utils/index.d.ts +2 -1
  138. package/esm/hooks/utils/index.js +2 -1
  139. package/esm/hooks/utils/useGridChartIntegration.d.ts +2 -0
  140. package/esm/hooks/utils/useGridChartIntegration.js +9 -0
  141. package/esm/index.d.ts +1 -0
  142. package/esm/index.js +2 -1
  143. package/esm/material/icons.d.ts +4 -1
  144. package/esm/material/icons.js +16 -2
  145. package/esm/material/index.d.ts +11 -0
  146. package/esm/material/index.js +13 -2
  147. package/esm/models/dataGridPremiumProps.d.ts +22 -1
  148. package/esm/models/gridApiPremium.d.ts +3 -2
  149. package/esm/models/gridChartsIntegration.d.ts +17 -0
  150. package/esm/models/gridChartsIntegration.js +1 -0
  151. package/esm/models/gridPremiumIconSlotsComponent.d.ts +55 -0
  152. package/esm/models/gridPremiumSlotProps.d.ts +8 -0
  153. package/esm/models/gridPremiumSlotProps.js +1 -0
  154. package/esm/models/gridPremiumSlotsComponent.d.ts +6 -0
  155. package/esm/models/gridStatePremium.d.ts +5 -2
  156. package/esm/typeOverloads/modules.d.ts +20 -0
  157. package/hooks/features/aggregation/createAggregationLookup.js +5 -3
  158. package/hooks/features/aggregation/gridAggregationInterfaces.d.ts +1 -0
  159. package/hooks/features/aggregation/gridAggregationSelectors.d.ts +1 -0
  160. package/hooks/features/aggregation/gridAggregationSelectors.js +3 -0
  161. package/hooks/features/aggregation/useGridAggregation.js +12 -0
  162. package/hooks/features/aggregation/wrapColumnWithAggregation.d.ts +2 -1
  163. package/hooks/features/aggregation/wrapColumnWithAggregation.js +0 -44
  164. package/hooks/features/chartsIntegration/gridChartsIntegrationInterfaces.d.ts +65 -0
  165. package/hooks/features/chartsIntegration/gridChartsIntegrationInterfaces.js +5 -0
  166. package/hooks/features/chartsIntegration/gridChartsIntegrationSelectors.d.ts +17 -0
  167. package/hooks/features/chartsIntegration/gridChartsIntegrationSelectors.js +30 -0
  168. package/hooks/features/chartsIntegration/useGridChartsIntegration.d.ts +8 -0
  169. package/hooks/features/chartsIntegration/useGridChartsIntegration.js +534 -0
  170. package/hooks/features/chartsIntegration/utils.d.ts +5 -0
  171. package/hooks/features/chartsIntegration/utils.js +40 -0
  172. package/hooks/features/pivoting/useGridPivoting.js +1 -1
  173. package/hooks/features/pivoting/utils.js +9 -7
  174. package/hooks/features/rowGrouping/createGroupingColDef.js +3 -1
  175. package/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +1 -0
  176. package/hooks/features/rowGrouping/gridRowGroupingUtils.js +3 -2
  177. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +1 -0
  178. package/hooks/features/sidebar/gridSidebarInterfaces.d.ts +1 -0
  179. package/hooks/features/sidebar/gridSidebarInterfaces.js +1 -0
  180. package/hooks/utils/index.d.ts +2 -1
  181. package/hooks/utils/index.js +11 -0
  182. package/hooks/utils/useGridChartIntegration.d.ts +2 -0
  183. package/hooks/utils/useGridChartIntegration.js +17 -0
  184. package/index.d.ts +1 -0
  185. package/index.js +13 -1
  186. package/material/icons.d.ts +4 -1
  187. package/material/icons.js +16 -2
  188. package/material/index.d.ts +11 -0
  189. package/material/index.js +12 -1
  190. package/models/dataGridPremiumProps.d.ts +22 -1
  191. package/models/gridApiPremium.d.ts +3 -2
  192. package/models/gridChartsIntegration.d.ts +17 -0
  193. package/models/gridChartsIntegration.js +5 -0
  194. package/models/gridPremiumIconSlotsComponent.d.ts +55 -0
  195. package/models/gridPremiumSlotProps.d.ts +8 -0
  196. package/models/gridPremiumSlotProps.js +5 -0
  197. package/models/gridPremiumSlotsComponent.d.ts +6 -0
  198. package/models/gridStatePremium.d.ts +5 -2
  199. package/package.json +5 -5
  200. package/typeOverloads/modules.d.ts +20 -0
  201. /package/components/{GridColumnMenuAggregationItem.d.ts → columnMenu/menuItems/GridColumnMenuAggregationItem.d.ts} +0 -0
  202. /package/components/{GridColumnMenuRowGroupItem.d.ts → columnMenu/menuItems/GridColumnMenuRowGroupItem.d.ts} +0 -0
  203. /package/components/{GridColumnMenuRowUngroupItem.d.ts → columnMenu/menuItems/GridColumnMenuRowUngroupItem.d.ts} +0 -0
  204. /package/esm/components/{GridColumnMenuAggregationItem.d.ts → columnMenu/menuItems/GridColumnMenuAggregationItem.d.ts} +0 -0
  205. /package/esm/components/{GridColumnMenuRowGroupItem.d.ts → columnMenu/menuItems/GridColumnMenuRowGroupItem.d.ts} +0 -0
  206. /package/esm/components/{GridColumnMenuRowUngroupItem.d.ts → columnMenu/menuItems/GridColumnMenuRowUngroupItem.d.ts} +0 -0
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.GridChartsPanelDataBody = GridChartsPanelDataBody;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _system = require("@mui/system");
13
+ var _internals = require("@mui/x-data-grid-pro/internals");
14
+ var _xDataGridPro = require("@mui/x-data-grid-pro");
15
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
+ var _useGridRootProps = require("../../../hooks/utils/useGridRootProps");
17
+ var _collapsible = require("../../collapsible");
18
+ var _resizablePanel = require("../../resizablePanel");
19
+ var _GridChartsPanelDataField = require("./GridChartsPanelDataField");
20
+ var _gridChartsIntegrationSelectors = require("../../../hooks/features/chartsIntegration/gridChartsIntegrationSelectors");
21
+ var _useGridPrivateApiContext = require("../../../hooks/utils/useGridPrivateApiContext");
22
+ var _useGridChartIntegration = require("../../../hooks/utils/useGridChartIntegration");
23
+ var _utils = require("../../../hooks/features/chartsIntegration/utils");
24
+ var _gridRowGroupingSelector = require("../../../hooks/features/rowGrouping/gridRowGroupingSelector");
25
+ var _gridPivotingSelectors = require("../../../hooks/features/pivoting/gridPivotingSelectors");
26
+ var _jsxRuntime = require("react/jsx-runtime");
27
+ const useUtilityClasses = ownerState => {
28
+ const {
29
+ classes
30
+ } = ownerState;
31
+ const slots = {
32
+ root: ['chartsPanelDataBody'],
33
+ availableFields: ['chartsPanelDataAvailableFields'],
34
+ sections: ['chartsPanelDataSections'],
35
+ scrollArea: ['chartsPanelDataScrollArea'],
36
+ section: ['chartsPanelDataSection'],
37
+ sectionTitle: ['chartsPanelDataSectionTitle'],
38
+ fieldList: ['chartsPanelDataFieldList'],
39
+ placeholder: ['chartsPanelDataPlaceholder']
40
+ };
41
+ return (0, _composeClasses.default)(slots, _xDataGridPro.getDataGridUtilityClass, classes);
42
+ };
43
+ const GridChartsPanelDataBodyRoot = (0, _system.styled)('div', {
44
+ name: 'MuiDataGrid',
45
+ slot: 'ChartsPanelDataBody'
46
+ })({
47
+ flex: 1,
48
+ display: 'flex',
49
+ flexDirection: 'column',
50
+ overflow: 'hidden'
51
+ });
52
+ const GridChartsPanelDataAvailableFields = (0, _system.styled)(_xDataGridPro.GridShadowScrollArea, {
53
+ name: 'MuiDataGrid',
54
+ slot: 'ChartsPanelDataAvailableFields'
55
+ })({
56
+ flex: 1,
57
+ minHeight: 84,
58
+ transition: _internals.vars.transition(['background-color'], {
59
+ duration: _internals.vars.transitions.duration.short,
60
+ easing: _internals.vars.transitions.easing.easeInOut
61
+ }),
62
+ '&[data-drag-over="true"]': {
63
+ backgroundColor: _internals.vars.colors.interactive.hover
64
+ }
65
+ });
66
+ const GridChartsPanelDataSections = (0, _system.styled)(_resizablePanel.ResizablePanel, {
67
+ name: 'MuiDataGrid',
68
+ slot: 'ChartsPanelDataSections'
69
+ })({
70
+ position: 'relative',
71
+ minHeight: 158,
72
+ overflow: 'hidden',
73
+ display: 'flex',
74
+ flexDirection: 'column'
75
+ });
76
+ const GridChartsPanelDataScrollArea = (0, _system.styled)(_xDataGridPro.GridShadowScrollArea, {
77
+ name: 'MuiDataGrid',
78
+ slot: 'ChartsPanelDataScrollArea'
79
+ })({
80
+ height: '100%'
81
+ });
82
+ const GridChartsPanelDataSection = (0, _system.styled)(_collapsible.Collapsible, {
83
+ name: 'MuiDataGrid',
84
+ slot: 'ChartsPanelDataSection',
85
+ shouldForwardProp: prop => prop !== 'disabled'
86
+ })(({
87
+ disabled
88
+ }) => ({
89
+ opacity: disabled ? 0.5 : 1,
90
+ margin: _internals.vars.spacing(0.5, 1),
91
+ transition: _internals.vars.transition(['border-color', 'background-color'], {
92
+ duration: _internals.vars.transitions.duration.short,
93
+ easing: _internals.vars.transitions.easing.easeInOut
94
+ }),
95
+ '&[data-drag-over="true"]': {
96
+ backgroundColor: _internals.vars.colors.interactive.hover,
97
+ outline: `2px solid ${_internals.vars.colors.interactive.selected}`
98
+ }
99
+ }));
100
+ const GridChartsPanelDataSectionTitle = (0, _system.styled)('div', {
101
+ name: 'MuiDataGrid',
102
+ slot: 'ChartsPanelDataSectionTitle'
103
+ })({
104
+ flex: 1,
105
+ marginRight: _internals.vars.spacing(1.75),
106
+ display: 'flex',
107
+ justifyContent: 'space-between',
108
+ alignItems: 'center',
109
+ gap: _internals.vars.spacing(1),
110
+ font: _internals.vars.typography.font.body,
111
+ fontWeight: _internals.vars.typography.fontWeight.medium
112
+ });
113
+ const GridChartsPanelDataFieldList = (0, _system.styled)('div', {
114
+ name: 'MuiDataGrid',
115
+ slot: 'ChartsPanelDataFieldList'
116
+ })({
117
+ flex: 1,
118
+ display: 'flex',
119
+ flexDirection: 'column',
120
+ padding: _internals.vars.spacing(0.5, 0)
121
+ });
122
+ const GridChartsPanelDataPlaceholder = (0, _system.styled)('div', {
123
+ name: 'MuiDataGrid',
124
+ slot: 'ChartsPanelDataPlaceholder'
125
+ })({
126
+ flex: 1,
127
+ display: 'flex',
128
+ alignItems: 'center',
129
+ justifyContent: 'center',
130
+ textWrap: 'balance',
131
+ textAlign: 'center',
132
+ minHeight: 38,
133
+ height: '100%',
134
+ padding: _internals.vars.spacing(0, 1),
135
+ color: _internals.vars.colors.foreground.muted,
136
+ font: _internals.vars.typography.font.body
137
+ });
138
+ const INITIAL_DRAG_STATE = {
139
+ active: false,
140
+ field: null,
141
+ dropSection: null,
142
+ initialSection: null
143
+ };
144
+ // dimensions and values
145
+ const SECTION_COUNT = 2;
146
+ function GridChartsPanelDataBody(props) {
147
+ const {
148
+ searchValue
149
+ } = props;
150
+ const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
151
+ const rootProps = (0, _useGridRootProps.useGridRootProps)();
152
+ const rowGroupingModel = (0, _xDataGridPro.useGridSelector)(apiRef, _gridRowGroupingSelector.gridRowGroupingSanitizedModelSelector);
153
+ const pivotActive = (0, _xDataGridPro.useGridSelector)(apiRef, _internals.gridPivotActiveSelector);
154
+ const pivotModel = (0, _xDataGridPro.useGridSelector)(apiRef, _gridPivotingSelectors.gridPivotModelSelector);
155
+ const activeChartId = (0, _xDataGridPro.useGridSelector)(apiRef, _gridChartsIntegrationSelectors.gridChartsIntegrationActiveChartIdSelector);
156
+ const {
157
+ chartStateLookup
158
+ } = (0, _useGridChartIntegration.useGridChartsIntegrationContext)();
159
+ const dimensions = (0, _xDataGridPro.useGridSelector)(apiRef, _gridChartsIntegrationSelectors.gridChartsDimensionsSelector, activeChartId);
160
+ const values = (0, _xDataGridPro.useGridSelector)(apiRef, _gridChartsIntegrationSelectors.gridChartsValuesSelector, activeChartId);
161
+ const classes = useUtilityClasses(rootProps);
162
+ const chartableColumns = (0, _xDataGridPro.useGridSelector)(apiRef, _gridChartsIntegrationSelectors.gridChartableColumnsSelector);
163
+ const dimensionsLabel = React.useMemo(() => chartStateLookup[activeChartId]?.dimensionsLabel || apiRef.current.getLocaleText('chartsCategories'), [chartStateLookup, activeChartId, apiRef]);
164
+ const valuesLabel = React.useMemo(() => chartStateLookup[activeChartId]?.valuesLabel || apiRef.current.getLocaleText('chartsSeries'), [chartStateLookup, activeChartId, apiRef]);
165
+ const fullSections = React.useMemo(() => {
166
+ const sections = [];
167
+ if (chartStateLookup[activeChartId]?.maxDimensions && dimensions.length >= chartStateLookup[activeChartId]?.maxDimensions) {
168
+ sections.push('dimensions');
169
+ }
170
+ if (chartStateLookup[activeChartId]?.maxValues && values.length >= chartStateLookup[activeChartId]?.maxValues) {
171
+ sections.push('values');
172
+ }
173
+ return sections;
174
+ }, [dimensions, values, chartStateLookup, activeChartId]);
175
+ const blockedSectionsLookup = React.useMemo(() => new Map(Object.values(chartableColumns).map(column => [column.field, Array.from(new Set([...(0, _utils.getBlockedSections)(column, rowGroupingModel, pivotActive ? pivotModel : undefined), ...fullSections]))])), [rowGroupingModel, chartableColumns, pivotActive, pivotModel, fullSections]);
176
+ const availableFields = React.useMemo(() => {
177
+ const notUsedFields = Object.keys(chartableColumns).filter(field => !dimensions.some(dimension => dimension.field === field) && !values.some(value => value.field === field));
178
+ if (searchValue) {
179
+ return notUsedFields.filter(field => {
180
+ const fieldName = apiRef.current.chartsIntegration.getColumnName(field);
181
+ return fieldName.toLowerCase().includes(searchValue.toLowerCase());
182
+ });
183
+ }
184
+
185
+ // Fields with all sections blocked should be at the end
186
+ return notUsedFields.sort((a, b) => {
187
+ const aBlockedSections = blockedSectionsLookup.get(a).length;
188
+ const bBlockedSections = blockedSectionsLookup.get(b).length;
189
+ return (aBlockedSections >= SECTION_COUNT ? 1 : 0) - (bBlockedSections >= SECTION_COUNT ? 1 : 0);
190
+ });
191
+ }, [apiRef, searchValue, chartableColumns, dimensions, values, blockedSectionsLookup]);
192
+ const [drag, setDrag] = React.useState(INITIAL_DRAG_STATE);
193
+ const disabledSections = React.useMemo(() => {
194
+ if (!drag.field) {
195
+ return new Set();
196
+ }
197
+ return new Set(blockedSectionsLookup.get(drag.field));
198
+ }, [blockedSectionsLookup, drag.field]);
199
+ const handleDragStart = (field, section) => {
200
+ setDrag({
201
+ active: true,
202
+ field,
203
+ initialSection: section,
204
+ dropSection: null
205
+ });
206
+ };
207
+ const handleDragEnd = () => {
208
+ setDrag(INITIAL_DRAG_STATE);
209
+ };
210
+ const handleDrop = event => {
211
+ setDrag(INITIAL_DRAG_STATE);
212
+
213
+ // The drop event was already handled by a child
214
+ if (event.defaultPrevented) {
215
+ return;
216
+ }
217
+ event.preventDefault();
218
+ const {
219
+ field,
220
+ section: originSection
221
+ } = JSON.parse(event.dataTransfer.getData('text/plain'));
222
+ const targetSection = event.currentTarget.getAttribute('data-section');
223
+ if (originSection === targetSection) {
224
+ return;
225
+ }
226
+ apiRef.current.chartsIntegration.updateDataReference(field, originSection, targetSection);
227
+ };
228
+ const handleDragOver = React.useCallback(event => {
229
+ event.preventDefault();
230
+ event.dataTransfer.dropEffect = 'move';
231
+ }, []);
232
+ const handleDragEnter = React.useCallback(event => {
233
+ if (!event.currentTarget.contains(event.relatedTarget)) {
234
+ const dropSection = event.currentTarget.getAttribute('data-section');
235
+ setDrag(v => (0, _extends2.default)({}, v, {
236
+ active: true,
237
+ dropSection
238
+ }));
239
+ }
240
+ }, []);
241
+ const handleDragLeave = React.useCallback(event => {
242
+ if (!event.currentTarget.contains(event.relatedTarget)) {
243
+ setDrag(v => (0, _extends2.default)({}, v, {
244
+ active: true,
245
+ dropSection: v.initialSection
246
+ }));
247
+ }
248
+ }, []);
249
+ const handleChange = React.useCallback((field, section) => {
250
+ const apiMethod = section === 'dimensions' ? apiRef.current.updateChartDimensionsData : apiRef.current.updateChartValuesData;
251
+ apiMethod(activeChartId, currentItems => currentItems.map(item => item.field === field ? (0, _extends2.default)({}, item, {
252
+ hidden: item.hidden !== true
253
+ }) : item));
254
+ }, [apiRef, activeChartId]);
255
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataBodyRoot, {
256
+ ownerState: rootProps,
257
+ className: classes.root,
258
+ "data-dragging": drag.active,
259
+ onDragLeave: handleDragLeave,
260
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataAvailableFields, {
261
+ ownerState: rootProps,
262
+ className: classes.availableFields,
263
+ onDrop: handleDrop,
264
+ onDragEnter: handleDragEnter,
265
+ onDragOver: handleDragOver,
266
+ "data-section": null,
267
+ "data-drag-over": drag.active && drag.dropSection === null,
268
+ children: [availableFields.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(GridChartsPanelDataPlaceholder, {
269
+ ownerState: rootProps,
270
+ className: classes.placeholder,
271
+ children: apiRef.current.getLocaleText('chartsNoFields')
272
+ }), availableFields.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(GridChartsPanelDataFieldList, {
273
+ ownerState: rootProps,
274
+ className: classes.fieldList,
275
+ children: availableFields.map(field => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridChartsPanelDataField.GridChartsPanelDataField, {
276
+ field: field,
277
+ section: null,
278
+ disabled: blockedSectionsLookup.get(field).length >= SECTION_COUNT,
279
+ blockedSections: blockedSectionsLookup.get(field),
280
+ dimensionsLabel: dimensionsLabel,
281
+ valuesLabel: valuesLabel,
282
+ onDragStart: handleDragStart,
283
+ onDragEnd: handleDragEnd,
284
+ children: apiRef.current.chartsIntegration.getColumnName(field)
285
+ }, field))
286
+ })]
287
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataSections, {
288
+ ownerState: rootProps,
289
+ className: classes.sections,
290
+ direction: "vertical",
291
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_resizablePanel.ResizablePanelHandle, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataScrollArea, {
292
+ ownerState: rootProps,
293
+ className: classes.scrollArea,
294
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataSection, {
295
+ ownerState: rootProps,
296
+ className: classes.section,
297
+ onDrop: handleDrop,
298
+ onDragEnter: handleDragEnter,
299
+ onDragOver: handleDragOver,
300
+ disabled: disabledSections.has('dimensions'),
301
+ "data-section": "dimensions",
302
+ "data-drag-over": !disabledSections.has('dimensions') && drag.dropSection === 'dimensions',
303
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_collapsible.CollapsibleTrigger, {
304
+ "aria-label": dimensionsLabel,
305
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataSectionTitle, {
306
+ ownerState: rootProps,
307
+ className: classes.sectionTitle,
308
+ children: [dimensionsLabel, (chartStateLookup[activeChartId]?.maxDimensions || dimensions.length > 0) && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseBadge, {
309
+ badgeContent: chartStateLookup[activeChartId]?.maxDimensions ? `${dimensions.length}/${chartStateLookup[activeChartId]?.maxDimensions}` : dimensions.length
310
+ })]
311
+ })
312
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_collapsible.CollapsiblePanel, {
313
+ children: [dimensions.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(GridChartsPanelDataPlaceholder, {
314
+ ownerState: rootProps,
315
+ className: classes.placeholder,
316
+ children: apiRef.current.getLocaleText('chartsDragToDimensions')(dimensionsLabel)
317
+ }), dimensions.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(GridChartsPanelDataFieldList, {
318
+ ownerState: rootProps,
319
+ className: classes.fieldList,
320
+ children: dimensions.map(dimension => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridChartsPanelDataField.GridChartsPanelDataField, {
321
+ field: dimension.field,
322
+ selected: dimension.hidden !== true,
323
+ onChange: handleChange,
324
+ section: "dimensions",
325
+ blockedSections: blockedSectionsLookup.get(dimension.field),
326
+ dimensionsLabel: dimensionsLabel,
327
+ valuesLabel: valuesLabel,
328
+ disabled: disabledSections.has('dimensions'),
329
+ onDragStart: handleDragStart,
330
+ onDragEnd: handleDragEnd,
331
+ children: apiRef.current.chartsIntegration.getColumnName(dimension.field)
332
+ }, dimension.field))
333
+ })]
334
+ })]
335
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataSection, {
336
+ ownerState: rootProps,
337
+ className: classes.section,
338
+ onDrop: handleDrop,
339
+ onDragEnter: handleDragEnter,
340
+ onDragOver: handleDragOver,
341
+ disabled: disabledSections.has('values'),
342
+ "data-section": "values",
343
+ "data-drag-over": !disabledSections.has('values') && drag.dropSection === 'values',
344
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_collapsible.CollapsibleTrigger, {
345
+ "aria-label": valuesLabel,
346
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridChartsPanelDataSectionTitle, {
347
+ ownerState: rootProps,
348
+ className: classes.sectionTitle,
349
+ children: [valuesLabel, (chartStateLookup[activeChartId]?.maxValues || values.length > 0) && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseBadge, {
350
+ badgeContent: chartStateLookup[activeChartId]?.maxValues ? `${values.length}/${chartStateLookup[activeChartId]?.maxValues}` : values.length
351
+ })]
352
+ })
353
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_collapsible.CollapsiblePanel, {
354
+ children: [values.length === 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(GridChartsPanelDataPlaceholder, {
355
+ ownerState: rootProps,
356
+ className: classes.placeholder,
357
+ children: apiRef.current.getLocaleText('chartsDragToValues')(valuesLabel)
358
+ }), values.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(GridChartsPanelDataFieldList, {
359
+ ownerState: rootProps,
360
+ className: classes.fieldList,
361
+ children: values.map(value => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridChartsPanelDataField.GridChartsPanelDataField, {
362
+ field: value.field,
363
+ selected: value.hidden !== true,
364
+ onChange: handleChange,
365
+ section: "values",
366
+ blockedSections: blockedSectionsLookup.get(value.field),
367
+ dimensionsLabel: dimensionsLabel,
368
+ valuesLabel: valuesLabel,
369
+ disabled: disabledSections.has('values'),
370
+ onDragStart: handleDragStart,
371
+ onDragEnd: handleDragEnd,
372
+ children: apiRef.current.chartsIntegration.getColumnName(value.field)
373
+ }, value.field))
374
+ })]
375
+ })]
376
+ })]
377
+ })]
378
+ })]
379
+ });
380
+ }
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+ import type { FieldTransferObject } from "./GridChartsPanelDataBody.js";
3
+ import type { GridChartsIntegrationSection } from "../../../hooks/features/chartsIntegration/gridChartsIntegrationInterfaces.js";
4
+ type GridChartsPanelDataFieldProps = {
5
+ children: React.ReactNode;
6
+ field: string;
7
+ section: GridChartsIntegrationSection;
8
+ blockedSections?: string[];
9
+ dimensionsLabel: string;
10
+ valuesLabel: string;
11
+ disabled?: boolean;
12
+ selected?: boolean;
13
+ onChange?: (field: string, section: GridChartsIntegrationSection) => void;
14
+ onDragStart: (field: string, section: GridChartsIntegrationSection) => void;
15
+ onDragEnd: () => void;
16
+ };
17
+ export declare function AggregationSelect({
18
+ aggFunc,
19
+ field
20
+ }: {
21
+ aggFunc: string;
22
+ field: FieldTransferObject['field'];
23
+ }): React.JSX.Element | null;
24
+ declare function GridChartsPanelDataField(props: GridChartsPanelDataFieldProps): React.JSX.Element;
25
+ export { GridChartsPanelDataField };