@progress/kendo-react-grid 13.3.0 → 13.4.0-develop.2

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 (256) hide show
  1. package/BasePDFExport.d.ts +31 -0
  2. package/Grid.d.ts +129 -0
  3. package/GridClientContextReader.d.ts +17 -0
  4. package/GridClientWrapper.d.ts +32 -0
  5. package/GridClientWrapper.js +1 -1
  6. package/GridClientWrapper.mjs +21 -25
  7. package/GridColumn.d.ts +51 -0
  8. package/GridComponent.d.ts +14 -0
  9. package/GridComponent.js +1 -1
  10. package/GridComponent.mjs +6 -6
  11. package/GridPdfExportButton.d.ts +18 -0
  12. package/GridSearchBox.d.ts +27 -0
  13. package/GridState.d.ts +30 -0
  14. package/GridToolbar.d.ts +48 -0
  15. package/ScrollMode.d.ts +8 -0
  16. package/StatusBar.d.ts +59 -0
  17. package/VirtualScroll.d.ts +45 -0
  18. package/cells/GridDetailHierarchyCell.d.ts +16 -0
  19. package/cells/GridFilterCell.d.ts +10 -0
  20. package/cells/GridFilterCell.mjs +4 -4
  21. package/cells/datacell/GridCell.d.ts +15 -0
  22. package/cells/datacell/GridCellServer.d.ts +15 -0
  23. package/cells/datacell/GridCellServerContainer.d.ts +11 -0
  24. package/cells/datacell/useCellClientTdProps.d.ts +69 -0
  25. package/cells/datacell/utils.d.ts +20 -0
  26. package/cells/detailcell/GridDetailCell.d.ts +23 -0
  27. package/cells/detailcell/GridDetailCellServer.d.ts +11 -0
  28. package/cells/detailcell/GridDetailCellServerContainer.d.ts +12 -0
  29. package/cells/detailcell/useDetailCellClientTdProps.d.ts +23 -0
  30. package/cells/detailcell/utils.d.ts +19 -0
  31. package/cells/editcell/GridEditCell.d.ts +15 -0
  32. package/cells/editcell/GridEditCellEditor.d.ts +11 -0
  33. package/cells/editcell/GridEditCellServer.d.ts +15 -0
  34. package/cells/editcell/GridEditCellServerContainer.d.ts +11 -0
  35. package/cells/editcell/useEditCellClientTdProps.d.ts +25 -0
  36. package/cells/editcell/utils.d.ts +19 -0
  37. package/cells/groupcell/GridGroupCell.d.ts +15 -0
  38. package/cells/groupcell/GridGroupCellServer.d.ts +15 -0
  39. package/cells/groupcell/GridGroupCellServerContainer.d.ts +12 -0
  40. package/cells/groupcell/GridGroupCellToggle.d.ts +13 -0
  41. package/cells/groupcell/useGroupCellClientTdProps.d.ts +41 -0
  42. package/cells/groupcell/utils.d.ts +22 -0
  43. package/cells/hierarchycell/GridHierarchyCell.d.ts +15 -0
  44. package/cells/hierarchycell/GridHierarchyCellServer.d.ts +15 -0
  45. package/cells/hierarchycell/GridHierarchyCellServerContainer.d.ts +11 -0
  46. package/cells/hierarchycell/GridHierarchyCellToggle.d.ts +13 -0
  47. package/cells/hierarchycell/GridHierarchyCellToggle.mjs +2 -2
  48. package/cells/hierarchycell/useHierarchyCellClientTdProps.d.ts +32 -0
  49. package/cells/hierarchycell/utils.d.ts +20 -0
  50. package/cells/hooks.d.ts +25 -0
  51. package/cells/rowreordercell/GridRowReorderCell.d.ts +15 -0
  52. package/cells/rowreordercell/GridRowReorderCellServer.d.ts +15 -0
  53. package/cells/rowreordercell/GridRowReorderCellServerContainer.d.ts +11 -0
  54. package/cells/rowreordercell/useRowReorderCellClientTdProps.d.ts +27 -0
  55. package/cells/rowreordercell/utils.d.ts +15 -0
  56. package/cells/selectioncell/GridSelectionCell.d.ts +15 -0
  57. package/cells/selectioncell/GridSelectionCellInput.d.ts +13 -0
  58. package/cells/selectioncell/GridSelectionCellServer.d.ts +15 -0
  59. package/cells/selectioncell/GridSelectionCellServerContainer.d.ts +11 -0
  60. package/cells/selectioncell/useSelectionCellClientTdProps.d.ts +25 -0
  61. package/cells/selectioncell/utils.d.ts +25 -0
  62. package/codemods/v11/cell-render.js +2 -9
  63. package/codemods/v11/column-cell.js +2 -9
  64. package/codemods/v11/column-filter-cell.js +2 -9
  65. package/codemods/v11/column-footer-cell.js +2 -9
  66. package/codemods/v11/column-header-cell.js +2 -9
  67. package/codemods/v11/detail-expand-state.js +2 -9
  68. package/codemods/v11/edit-state.js +2 -9
  69. package/codemods/v11/filter-cell-render.js +2 -9
  70. package/codemods/v11/group-expand-state.js +2 -9
  71. package/codemods/v11/header-cell-render.js +2 -9
  72. package/codemods/v11/index.js +0 -7
  73. package/codemods/v11/row-render.js +2 -9
  74. package/codemods/v11/selection-state.js +2 -9
  75. package/codemods/v11/utils.js +2 -9
  76. package/columnMenu/GridColumnMenuCheckboxFilter.d.ts +58 -0
  77. package/columnMenu/GridColumnMenuCheckboxFilter.js +1 -1
  78. package/columnMenu/GridColumnMenuCheckboxFilter.mjs +0 -1
  79. package/columnMenu/GridColumnMenuColumnsChooser.d.ts +30 -0
  80. package/columnMenu/GridColumnMenuColumnsList.d.ts +34 -0
  81. package/columnMenu/GridColumnMenuFilter.d.ts +101 -0
  82. package/columnMenu/GridColumnMenuFilterCell.d.ts +29 -0
  83. package/columnMenu/GridColumnMenuFilterUI.d.ts +13 -0
  84. package/columnMenu/GridColumnMenuGroup.d.ts +61 -0
  85. package/columnMenu/GridColumnMenuGroup.mjs +3 -3
  86. package/columnMenu/GridColumnMenuItem.d.ts +48 -0
  87. package/columnMenu/GridColumnMenuItemContent.d.ts +22 -0
  88. package/columnMenu/GridColumnMenuItemGroup.d.ts +18 -0
  89. package/columnMenu/GridColumnMenuSort.d.ts +67 -0
  90. package/columnMenu/GridColumnMenuWrapper.d.ts +33 -0
  91. package/columnMenu/GridColumnMenuWrapper.mjs +5 -5
  92. package/columnMenu/adaptiveContent/GridActionSheetFooter.d.ts +26 -0
  93. package/columnMenu/adaptiveContent/GridAdaptiveCheckboxFilter.d.ts +27 -0
  94. package/columnMenu/adaptiveContent/GridAdaptiveCheckboxFilter.mjs +4 -4
  95. package/columnMenu/adaptiveContent/GridAdaptiveColumnChooser.d.ts +32 -0
  96. package/columnMenu/adaptiveContent/GridAdaptiveColumnChooser.mjs +3 -3
  97. package/columnMenu/adaptiveContent/GridAdaptiveColumnMenu.d.ts +12 -0
  98. package/columnMenu/adaptiveContent/GridAdaptiveColumnMenu.js +1 -1
  99. package/columnMenu/adaptiveContent/GridAdaptiveColumnMenu.mjs +4 -4
  100. package/columnMenu/adaptiveContent/GridAdaptiveFilterMenu.d.ts +27 -0
  101. package/columnMenu/adaptiveContent/GridAdaptiveFilterMenu.mjs +8 -8
  102. package/columnMenu/adaptiveContext/GridColumnMenuAdaptiveContext.d.ts +23 -0
  103. package/components/GridContainerElementContainer.d.ts +12 -0
  104. package/components/GridDragClue.d.ts +12 -0
  105. package/components/GridDraggableRowsContainer.d.ts +20 -0
  106. package/components/GridDropClue.d.ts +12 -0
  107. package/components/GridEditDialog.d.ts +22 -0
  108. package/components/GridEditDialog.mjs +1 -1
  109. package/components/GridElementContainer.d.ts +14 -0
  110. package/components/GridLoader.d.ts +17 -0
  111. package/components/PagerContainer.d.ts +12 -0
  112. package/components/VirtualScrollHeightContainer.d.ts +12 -0
  113. package/components/colGroup/GridColGroup.d.ts +12 -0
  114. package/components/icons/reorder-row-svg.d.ts +12 -0
  115. package/components/noRecords/GridNoRecords.d.ts +31 -0
  116. package/components/noRecords/GridNoRecordsContainer.d.ts +15 -0
  117. package/components/noRecords/GridNoRecordsContainer.mjs +1 -1
  118. package/components/table/GridTable.d.ts +12 -0
  119. package/components/table/GridTableBody.d.ts +12 -0
  120. package/components/table/GridTableScrollable.d.ts +12 -0
  121. package/components/utils.d.ts +21 -0
  122. package/constants/index.d.ts +15 -0
  123. package/constants/index.mjs +2 -2
  124. package/contextMenu/GridContextMenu.d.ts +205 -0
  125. package/contextMenu/GridContextMenu.mjs +19 -19
  126. package/contextMenu/enums.d.ts +36 -0
  127. package/dist/cdn/js/kendo-react-grid.js +1 -1
  128. package/drag/ColumnDraggable.d.ts +26 -0
  129. package/drag/ColumnResize.d.ts +47 -0
  130. package/drag/CommonDragLogic.d.ts +50 -0
  131. package/drag/GroupingIndicator.d.ts +26 -0
  132. package/drag/GroupingIndicator.js +1 -1
  133. package/drag/GroupingIndicator.mjs +20 -20
  134. package/filterCommon.d.ts +86 -0
  135. package/footer/Footer.d.ts +38 -0
  136. package/footer/Footer.js +1 -1
  137. package/footer/Footer.mjs +9 -9
  138. package/footer/FooterCell.d.ts +19 -0
  139. package/footer/FooterRow.d.ts +23 -0
  140. package/footer/client/FooterCellContainer.d.ts +12 -0
  141. package/header/FilterRow.d.ts +35 -0
  142. package/header/GridHeaderCell.d.ts +48 -0
  143. package/header/GridHeaderSelectionCell.d.ts +13 -0
  144. package/header/GroupPanel.d.ts +23 -0
  145. package/header/GroupPanel.js +1 -1
  146. package/header/GroupPanel.mjs +11 -11
  147. package/header/Header.d.ts +44 -0
  148. package/header/Header.js +1 -1
  149. package/header/Header.mjs +1 -1
  150. package/header/HeaderRow.d.ts +45 -0
  151. package/header/client/GridFilterCellContainer.d.ts +12 -0
  152. package/header/client/GridFilterCellElementContainer.d.ts +12 -0
  153. package/header/client/GridHeaderCellContainer.d.ts +12 -0
  154. package/header/client/GridHeaderCellElementContainer.d.ts +12 -0
  155. package/header/client/GridHeaderRowContainer.d.ts +16 -0
  156. package/header/client/GridHeaderRowReorderCell.d.ts +12 -0
  157. package/header/client/HeaderCellResizer.d.ts +11 -0
  158. package/header/client/HeaderRowDraggable.d.ts +11 -0
  159. package/index.d.mts +84 -5356
  160. package/index.d.ts +84 -5356
  161. package/interfaces/ColumnType.d.ts +13 -0
  162. package/interfaces/CompositeHighlightDescriptor.d.ts +29 -0
  163. package/interfaces/GridAIAssistantCommand.d.ts +110 -0
  164. package/interfaces/GridAICommands.d.ts +60 -0
  165. package/interfaces/GridCellProps.d.ts +112 -0
  166. package/interfaces/GridCellRenderModel.d.ts +15 -0
  167. package/interfaces/GridCellsSettings.d.ts +366 -0
  168. package/interfaces/GridColSpanProps.d.ts +21 -0
  169. package/interfaces/GridColumnChildrenProps.d.ts +18 -0
  170. package/interfaces/GridColumnMenuBaseProps.d.ts +21 -0
  171. package/interfaces/GridColumnMenuColumnProps.d.ts +32 -0
  172. package/interfaces/GridColumnMenuColumnsChooserBaseProps.d.ts +22 -0
  173. package/interfaces/GridColumnMenuFilterBaseProps.d.ts +31 -0
  174. package/interfaces/GridColumnMenuFilterUIProps.d.ts +38 -0
  175. package/interfaces/GridColumnMenuGroupBaseProps.d.ts +26 -0
  176. package/interfaces/GridColumnMenuProps.d.ts +24 -0
  177. package/interfaces/GridColumnMenuSortBaseProps.d.ts +27 -0
  178. package/interfaces/GridColumnProps.d.ts +230 -0
  179. package/interfaces/GridColumnState.d.ts +52 -0
  180. package/interfaces/GridDataType.d.ts +12 -0
  181. package/interfaces/GridDetailExpandableSettings.d.ts +11 -0
  182. package/interfaces/GridDetailRowProps.d.ts +20 -0
  183. package/interfaces/GridEditDialogProps.d.ts +30 -0
  184. package/interfaces/GridEditableSettings.d.ts +16 -0
  185. package/interfaces/GridFilterCellProps.d.ts +67 -0
  186. package/interfaces/GridFilterOperator.d.ts +13 -0
  187. package/interfaces/GridFilterOperators.d.ts +56 -0
  188. package/interfaces/GridFooterCellProps.d.ts +29 -0
  189. package/interfaces/GridGroupExpandableSettings.d.ts +22 -0
  190. package/interfaces/GridGroupableSettings.d.ts +25 -0
  191. package/interfaces/GridHeaderCellProps.d.ts +23 -0
  192. package/interfaces/GridHighlightDescriptor.d.ts +16 -0
  193. package/interfaces/GridNoRecordsProps.d.ts +16 -0
  194. package/interfaces/GridProps.d.ts +1083 -0
  195. package/interfaces/GridReorderDropDir.d.ts +11 -0
  196. package/interfaces/GridRowProps.d.ts +75 -0
  197. package/interfaces/GridRowReorderSettings.d.ts +25 -0
  198. package/interfaces/GridRowSpannableSettings.d.ts +21 -0
  199. package/interfaces/GridRowType.d.ts +16 -0
  200. package/interfaces/GridRowsSettings.d.ts +57 -0
  201. package/interfaces/GridSelectableSettings.d.ts +25 -0
  202. package/interfaces/GridSortSettings.d.ts +26 -0
  203. package/interfaces/GridStackedLayoutSettings.d.ts +60 -0
  204. package/interfaces/GridToolbarProps.d.ts +17 -0
  205. package/interfaces/VirtualScrollInterface.d.ts +29 -0
  206. package/interfaces/events.d.ts +357 -0
  207. package/interfaces/index.d.ts +15 -0
  208. package/messages/index.d.ts +365 -0
  209. package/messages/messagesMap.d.ts +14 -0
  210. package/package-metadata.d.ts +12 -0
  211. package/package-metadata.js +1 -1
  212. package/package-metadata.mjs +10 -16
  213. package/package.json +17 -17
  214. package/paging/GridPagerSettings.d.ts +89 -0
  215. package/paging/Page.d.ts +20 -0
  216. package/rows/GridDetailRow.d.ts +41 -0
  217. package/rows/GridDetailRowRenderer.d.ts +48 -0
  218. package/rows/GridRow.d.ts +13 -0
  219. package/rows/GridRowRenderer.d.ts +47 -0
  220. package/sortCommon.d.ts +20 -0
  221. package/stacked/GridStackedCell.d.ts +67 -0
  222. package/stacked/GridStackedDetailToggle.d.ts +20 -0
  223. package/stacked/GridStackedDetailToggle.mjs +2 -2
  224. package/stacked/GridStackedRow.d.ts +214 -0
  225. package/stacked/StackedModeComponents.d.ts +45 -0
  226. package/stacked/StackedModeRow.d.ts +46 -0
  227. package/toolbar-tools/GridToolbarAIAssistant.d.ts +246 -0
  228. package/toolbar-tools/GridToolbarCheckboxFilter.d.ts +89 -0
  229. package/toolbar-tools/GridToolbarCheckboxFilter.js +1 -1
  230. package/toolbar-tools/GridToolbarCheckboxFilter.mjs +0 -1
  231. package/toolbar-tools/GridToolbarColumnsChooser.d.ts +55 -0
  232. package/toolbar-tools/GridToolbarFilter.d.ts +72 -0
  233. package/toolbar-tools/GridToolbarFilter.mjs +5 -5
  234. package/toolbar-tools/GridToolbarGroup.d.ts +55 -0
  235. package/toolbar-tools/GridToolbarSeparator.d.ts +21 -0
  236. package/toolbar-tools/GridToolbarSort.d.ts +55 -0
  237. package/toolbar-tools/GridToolbarSpacer.d.ts +21 -0
  238. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarCheckboxFilter.d.ts +35 -0
  239. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarCheckboxFilter.mjs +3 -3
  240. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarColumnChooser.d.ts +33 -0
  241. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarColumnChooser.mjs +3 -3
  242. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarFilter.d.ts +34 -0
  243. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarFilter.mjs +3 -3
  244. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarGroup.d.ts +26 -0
  245. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarSort.d.ts +27 -0
  246. package/toolbar-tools/adaptiveContext/GridToolbarAdaptiveContext.d.ts +23 -0
  247. package/toolbar-tools/ai-tool/GridAIPrompt.d.ts +160 -0
  248. package/utils/GridContext.d.ts +12 -0
  249. package/utils/_clientModule.d.ts +11 -0
  250. package/utils/_serverModule.d.ts +12 -0
  251. package/utils/handleAIResponse.d.ts +221 -0
  252. package/utils/index.d.ts +185 -0
  253. package/utils/index.js +1 -1
  254. package/utils/index.mjs +2 -2
  255. package/utils/premium.d.ts +31 -0
  256. package/utils/virtualColumns.d.ts +18 -0
@@ -0,0 +1,221 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { AxiosResponse } from 'axios';
9
+ import { CompositeFilterDescriptor, GroupDescriptor, SortDescriptor } from '@progress/kendo-data-query';
10
+ import { GridColumnState, GridHandle } from '../interfaces/index.js';
11
+ /**
12
+ * Represents the grid state that can be controlled externally.
13
+ * This interface contains all the stateful properties that can be modified through AI commands.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const [gridState, setGridState] = useState<GridAIState>({
18
+ * sort: [],
19
+ * filter: undefined,
20
+ * group: [],
21
+ * columnsState: initialColumns,
22
+ * skip: 0,
23
+ * take: 20
24
+ * });
25
+ * ```
26
+ */
27
+ export interface GridAIState {
28
+ /**
29
+ * The current sort descriptors applied to the grid.
30
+ * Array of sort objects defining field and direction.
31
+ */
32
+ sort?: SortDescriptor[];
33
+ /**
34
+ * The current filter descriptor applied to the grid.
35
+ * Composite filter defining logic and filter array.
36
+ */
37
+ filter?: CompositeFilterDescriptor;
38
+ /**
39
+ * The current group descriptors applied to the grid.
40
+ * Array of group objects defining field and aggregates.
41
+ */
42
+ group?: GroupDescriptor[];
43
+ /**
44
+ * The current column state including visibility, width, order, and lock status.
45
+ * Array of column state objects.
46
+ */
47
+ columnsState?: GridColumnState[];
48
+ /**
49
+ * The number of items to skip for pagination.
50
+ * Zero-based index for the first item to display.
51
+ */
52
+ skip?: number;
53
+ /**
54
+ * The number of items to take (page size) for pagination.
55
+ * Number of items to display per page.
56
+ */
57
+ take?: number;
58
+ /**
59
+ * The highlight descriptor for highlighting cells/rows in the grid.
60
+ * Object with dataItemKey as keys, values can be boolean (whole row) or number array (specific cells).
61
+ *
62
+ * @example
63
+ * ```tsx
64
+ * highlight: {
65
+ * '1': true, // Highlight entire row with dataItemKey = 1
66
+ * '2': [0, 1, 2] // Highlight cells at column indices 0, 1, 2 in row with dataItemKey = 2
67
+ * }
68
+ * ```
69
+ */
70
+ highlight?: any;
71
+ /**
72
+ * The select descriptor for selecting cells/rows in the grid.
73
+ * Object with dataItemKey as keys, values can be boolean (whole row) or number array (specific cells).
74
+ *
75
+ * @example
76
+ * ```tsx
77
+ * select: {
78
+ * '1': true, // Select entire row with dataItemKey = 1
79
+ * '2': [0, 1] // Select cells at column indices 0 and 1 in row with dataItemKey = 2
80
+ * }
81
+ * ```
82
+ */
83
+ select?: any;
84
+ }
85
+ /**
86
+ * Represents the result of processing an AI response.
87
+ * Contains the updated grid state and any messages to display.
88
+ */
89
+ export interface GridAIResponseResult {
90
+ /**
91
+ * The updated grid state after processing AI commands.
92
+ * Spread this into your Grid component props.
93
+ */
94
+ state: GridAIState;
95
+ /**
96
+ * Array of user-friendly messages describing what changes were made.
97
+ * Can be displayed to users as feedback.
98
+ */
99
+ messages: string[];
100
+ /**
101
+ * Indicates whether the AI triggered a PDF export.
102
+ * Handle this separately as it's an action, not state.
103
+ */
104
+ shouldExportPdf: boolean;
105
+ }
106
+ /**
107
+ * Processes an AI response and returns the updated grid state.
108
+ * This is a pure function that takes the current state and AI response,
109
+ * and returns a new state object with all the changes applied.
110
+ *
111
+ * @param response - The axios response from the AI service containing commands
112
+ * @param currentState - The current grid state
113
+ * @param gridRef - Reference to grid methods (getTotal, getLeafDataItems, exportAsPdf)
114
+ * @returns Object containing the new state, messages, and export flag
115
+ *
116
+ * @example
117
+ * ```tsx
118
+ * const App = () => {
119
+ * const [gridState, setGridState] = useState<GridAIState>({
120
+ * sort: [],
121
+ * filter: undefined,
122
+ * group: [],
123
+ * columnsState: initialColumns,
124
+ * skip: 0,
125
+ * take: 20
126
+ * });
127
+ * const gridRef = useRef<GridHandle>(null);
128
+ *
129
+ * const handleAIRequest = async (prompt: string) => {
130
+ * const response = await axios.post('/api/ai/grid', { prompt, columns: gridState.columnsState });
131
+ * const result = handleAIResponse(response, gridState, gridRef.current);
132
+ *
133
+ * // Update state with AI changes
134
+ * setGridState(result.state);
135
+ *
136
+ * // Handle PDF export if requested
137
+ * if (result.shouldExportPdf && gridRef.current) {
138
+ * gridRef.current.exportAsPdf();
139
+ * }
140
+ *
141
+ * // Show messages to user
142
+ * console.log(result.messages);
143
+ * };
144
+ *
145
+ * return (
146
+ * <Grid
147
+ * ref={gridRef}
148
+ * data={data}
149
+ * {...gridState}
150
+ * onSortChange={(e) => setGridState(prev => ({ ...prev, sort: e.sort }))}
151
+ * onFilterChange={(e) => setGridState(prev => ({ ...prev, filter: e.filter }))}
152
+ * onGroupChange={(e) => setGridState(prev => ({ ...prev, group: e.group }))}
153
+ * onColumnsStateChange={(e) => setGridState(prev => ({ ...prev, columnsState: e.columnsState }))}
154
+ * onPageChange={(e) => setGridState(prev => ({ ...prev, skip: e.page.skip, take: e.page.take }))}
155
+ * />
156
+ * );
157
+ * };
158
+ * ```
159
+ */
160
+ export declare function handleAIResponse(response: AxiosResponse<any>, currentState: GridAIState, gridRef: Pick<GridHandle, 'getLeafDataItems' | 'getTotal' | 'exportAsPdf' | 'props'> | null): GridAIResponseResult;
161
+ /**
162
+ * Handles sort command by merging new sort with existing sorts.
163
+ *
164
+ * @hidden
165
+ */
166
+ declare const handleSortCommand: (commandSort: SortDescriptor | SortDescriptor[], currentSort?: SortDescriptor[]) => SortDescriptor[];
167
+ /**
168
+ * Handles filter command by combining new filter with existing filters.
169
+ *
170
+ * @hidden
171
+ */
172
+ declare const handleFilterCommand: (commandFilter: CompositeFilterDescriptor, currentFilter?: CompositeFilterDescriptor) => CompositeFilterDescriptor | undefined;
173
+ /**
174
+ * Handles group command by merging new group with existing groups.
175
+ *
176
+ * @hidden
177
+ */
178
+ declare const handleGroupCommand: (commandGroup: GroupDescriptor | GroupDescriptor[], currentGroup?: GroupDescriptor[]) => GroupDescriptor[];
179
+ /**
180
+ * Handles column visibility change.
181
+ *
182
+ * @hidden
183
+ */
184
+ declare const handleColumnVisibility: (columnId: string, hidden: boolean, columnsState: GridColumnState[]) => GridColumnState[];
185
+ /**
186
+ * Handles column resize.
187
+ *
188
+ * @hidden
189
+ */
190
+ declare const handleColumnResize: (columnId: string, newWidth: string, columnsState: GridColumnState[]) => GridColumnState[];
191
+ /**
192
+ * Handles column reorder.
193
+ *
194
+ * @hidden
195
+ */
196
+ declare const handleColumnReorder: (columnId: string, position: number, columnsState: GridColumnState[]) => GridColumnState[];
197
+ /**
198
+ * Handles column lock/unlock.
199
+ *
200
+ * @hidden
201
+ */
202
+ declare const handleColumnLock: (columnId: string, locked: boolean, columnsState: GridColumnState[]) => GridColumnState[];
203
+ /**
204
+ * Handles page change by calculating new skip/take values.
205
+ *
206
+ * @hidden
207
+ */
208
+ declare const handlePageChange: (gridRef: Pick<GridHandle, 'getLeafDataItems' | 'getTotal' | 'exportAsPdf' | 'props'>, targetPage: number, currentSkip?: number, currentTake?: number) => {
209
+ skip: number;
210
+ take: number;
211
+ };
212
+ /**
213
+ * Handles page size change by recalculating skip/take values.
214
+ *
215
+ * @hidden
216
+ */
217
+ declare const handlePageSizeChange: (pageSize: number, currentSkip?: number, currentTake?: number) => {
218
+ skip: number;
219
+ take: number;
220
+ };
221
+ export { handleSortCommand, handleFilterCommand, handleGroupCommand, handleColumnVisibility, handleColumnResize, handleColumnReorder, handleColumnLock, handlePageChange, handlePageSizeChange };
@@ -0,0 +1,185 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { GridProps } from '../interfaces/GridProps.js';
9
+ import { ExtendedColumnProps } from '../GridColumn.js';
10
+ import { DataResult, GroupDescriptor, SortDescriptor } from '@progress/kendo-data-query';
11
+ import { GridRowType } from '../interfaces/GridRowType.js';
12
+ import { GridColumnProps } from '../interfaces/GridColumnProps.js';
13
+ import { DetailExpandDescriptor, GroupExpandDescriptor, GroupState } from '@progress/kendo-react-data-tools';
14
+ import { GridCellsSettings } from '../interfaces/GridCellsSettings.js';
15
+ import { GridContextMenuItemNames } from '../contextMenu/enums.js';
16
+ import { GridDetailExpandableSettings } from '../interfaces/GridDetailExpandableSettings.js';
17
+ import { GridCellProps } from '../interfaces/GridCellProps.js';
18
+ import { GridRowSpannableSettings } from '../interfaces/GridRowSpannableSettings.js';
19
+ import { GridRowReorderSettings } from '../interfaces/GridRowReorderSettings.js';
20
+ import { GridColumnState } from '../interfaces/GridColumnState.js';
21
+ import * as React from 'react';
22
+ /**
23
+ * @hidden
24
+ */
25
+ export declare function getNestedValue(fieldName: string | undefined, dataItem: any): any;
26
+ /**
27
+ * @hidden
28
+ */
29
+ export interface DataItemWrapper {
30
+ dataItem: any;
31
+ rowType: GridRowType;
32
+ level: number;
33
+ expanded: boolean;
34
+ dataIndex: number;
35
+ group?: GroupState;
36
+ }
37
+ /**
38
+ * @hidden
39
+ */
40
+ export declare function flatData(output: Array<DataItemWrapper>, input: Array<any>, footer: 'always' | 'visible' | 'none', dataIndex: {
41
+ index: number;
42
+ }, groupDefined: boolean, expand?: DetailExpandDescriptor, groupExpand?: GroupExpandDescriptor[], defaultGroupExpand?: boolean, dataItemKey?: string, level?: number, parentGroup?: GroupState | undefined): number;
43
+ /**
44
+ * @hidden
45
+ */
46
+ export declare function syncLockedColumns(columns: Array<{
47
+ locked?: boolean;
48
+ index: number;
49
+ }>, columnsState: GridColumnState[]): void;
50
+ /**
51
+ * @hidden
52
+ */
53
+ export declare const getColSpan: (column: GridColumnProps, dataItem: any) => number;
54
+ /**
55
+ * @hidden
56
+ */
57
+ export declare function checkPropCompatibility(props: GridProps): void;
58
+ /**
59
+ * @hidden
60
+ */
61
+ export declare function mapColumns(columns: Array<{
62
+ parentIndex: number;
63
+ rowSpan: number;
64
+ depth: number;
65
+ kFirst?: boolean;
66
+ children: any[];
67
+ headerColSpan: number;
68
+ width?: string | number;
69
+ locked?: boolean;
70
+ index: number;
71
+ left: number;
72
+ right: number;
73
+ rightBorder: boolean;
74
+ ariaColumnIndex: number;
75
+ }>, columnsState: GridColumnState[], changedColumnLength?: boolean): number[][];
76
+ /**
77
+ * @hidden
78
+ */
79
+ export declare function readColumns(elements: (React.ReactNode | React.ReactElement | GridColumnProps)[], columnsState: GridColumnState[], idInfo: {
80
+ prevId: number;
81
+ idPrefix: string;
82
+ }, depth?: number, parentHidden?: boolean): ExtendedColumnProps[];
83
+ /**
84
+ * @hidden
85
+ */
86
+ export declare const getDataAsArray: (data: any[] | DataResult | null | undefined) => any[];
87
+ /**
88
+ * @hidden
89
+ */
90
+ export declare function autoGenerateColumns(data: any[] | DataResult | null | undefined, group: GroupDescriptor[] | undefined, expandable: GridDetailExpandableSettings, idInfo: {
91
+ prevId: number;
92
+ idPrefix: string;
93
+ }): ExtendedColumnProps[];
94
+ /**
95
+ * @hidden
96
+ */
97
+ export declare const footerColumns: (columns: ExtendedColumnProps[]) => ExtendedColumnProps[];
98
+ /**
99
+ * @hidden
100
+ */
101
+ export declare const getColumnWidth: (column: ExtendedColumnProps) => string | undefined;
102
+ /**
103
+ * @hidden
104
+ */
105
+ export declare const isSorted: (field: string | undefined, sort?: SortDescriptor[]) => boolean | undefined;
106
+ /**
107
+ * @hidden
108
+ */
109
+ export declare const sanitizeColumns: (columns: ExtendedColumnProps[]) => GridColumnProps[];
110
+ /**
111
+ * @hidden
112
+ */
113
+ export declare const clientColumn: (column: ExtendedColumnProps) => ExtendedColumnProps;
114
+ /**
115
+ * @hidden
116
+ */
117
+ export declare const getColumnState: (column: ExtendedColumnProps) => GridColumnState;
118
+ /**
119
+ * @hidden
120
+ */
121
+ export declare const getColumnsState: (columns: ExtendedColumnProps[]) => GridColumnState[];
122
+ /**
123
+ * @hidden
124
+ */
125
+ export declare const getFlatColumnsState: (state: GridColumnState[]) => GridColumnState[];
126
+ /**
127
+ * @hidden
128
+ */
129
+ export declare const firefox: boolean;
130
+ /**
131
+ * @hidden
132
+ */
133
+ export declare const firefoxMaxHeight = 17895697;
134
+ /**
135
+ * @hidden
136
+ */
137
+ export declare const getDefaultHeadContextMenuItems: (options: {
138
+ pdf?: boolean;
139
+ sortable?: boolean;
140
+ selectable?: boolean;
141
+ editable?: boolean;
142
+ reorderable?: boolean;
143
+ clipboard?: boolean;
144
+ }) => GridContextMenuItemNames[];
145
+ /**
146
+ * @hidden
147
+ */
148
+ export declare const getDefaultBodyContextMenuItems: (options: {
149
+ pdf?: boolean;
150
+ sortable?: boolean;
151
+ selectable?: boolean;
152
+ editable?: boolean;
153
+ rowReorderable?: boolean;
154
+ clipboard?: boolean;
155
+ }) => GridContextMenuItemNames[];
156
+ /**
157
+ * @hidden
158
+ */
159
+ export declare const resolveCells: (gridCells?: GridCellsSettings, columnCells?: GridCellsSettings) => GridCellsSettings | undefined;
160
+ /**
161
+ * @hidden
162
+ */
163
+ export declare const isRowReorderEnabled: (rowReorderable?: GridRowReorderSettings | boolean) => boolean;
164
+ /**
165
+ * @hidden
166
+ */
167
+ export declare const isClient: () => boolean;
168
+ /**
169
+ * @hidden
170
+ */
171
+ export declare const isClientReference: (component: any) => boolean;
172
+ /**
173
+ * @hidden
174
+ */
175
+ export declare const getClientCellProps: (props: GridCellProps) => GridCellProps;
176
+ /**
177
+ * @hidden
178
+ */
179
+ export declare const getRowSpanOptions: (rowSpannable?: boolean | GridRowSpannableSettings) => Required<GridRowSpannableSettings>;
180
+ /** @hidden */
181
+ export declare const getReactElement: (children: React.ReactElement<any> | undefined) => React.ReactElement<any>;
182
+ /** @hidden */
183
+ export declare const cloneReactElement: (children: React.ReactElement<any>, props: any) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
184
+ /** @hidden */
185
+ export declare const calcRowHeight: (tableBody: HTMLTableSectionElement | null) => number;
package/utils/index.js CHANGED
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const G=require("react"),v=require("../GridColumn.js"),w=require("@progress/kendo-data-query"),y=require("@progress/kendo-react-data-tools"),O=require("./_serverModule.js"),T=require("./_clientModule.js"),l=require("../contextMenu/enums.js"),H=require("@progress/kendo-react-common");function j(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:()=>e[a]})}}return t.default=e,Object.freeze(t)}const M=j(G);function q(e,t){const a=(e!=null?e:"").split(".");let r=t;return a.forEach(n=>{r=r?r[n]:void 0}),r}function N(e,t,a,r,n,d,h,i,s,f=0,o){var c;let x=f;for(let g=0;g<t.length;g++){let C;if(!n||t[g].value===void 0||t[g].items===void 0){e[e.length]={dataIndex:r.index,dataItem:t[g],rowType:"data",level:f,group:o,expanded:(c=s?!!(d!=null&&d[w.getter(s)(t[g])]):!1)!=null?c:!1},r.index++;continue}else{let S;o!=null&&o.parents?S=[{field:o.field,value:o.value},...o.parents]:o?S=[o]:S=[],C={field:t[g].field,value:t[g].value,parents:S}}x=Math.max(x,f+1);let I=!1;const b=y.findGroupExpand(h||[],C);b?I=b.expanded!==!1:I=i!==!1,e[e.length]={dataIndex:-1,dataItem:t[g],level:f,group:C,rowType:"groupHeader",expanded:I},I&&(C.expanded=I,x=Math.max(N(e,t[g].items,a,r,n,d,h,i,s,f+1,C),x)),(a==="always"||I&&a==="visible")&&(e[e.length]={dataIndex:-1,dataItem:t[g],rowType:"groupFooter",level:f,expanded:I})}return x}function R(e,t){for(let a=0;a<e.length;a++){const r=e[a];if(!r.locked){const n=t[r.index];n&&(r.locked=n.locked)}}}const u=(e,t)=>typeof e.colSpan=="function"?e.colSpan({dataItem:t,column:e}):e.colSpan||1;function B(e,t,a){const r=[[]];let n=0;for(let i=e.length-1;i>=0;i--)n=Math.max(n,e[i].depth),e[i].headerColSpan=e[i].headerColSpan||1,e[i].children.length>0&&(e[i].headerColSpan=e[i].children.reduce((s,f)=>f.hidden?s:s+f.headerColSpan,0));const d=[];let h=1;return e.forEach((i,s)=>{r[i.depth]=r[i.depth]||[];let f=!1;r[i.depth].length===0&&(h<=1?h=1+(i.children.length>0?0:n-i.depth):(h--,f=!0)),i.rowSpan=1+(i.children.length>0?0:n-i.depth),i.kFirst=f,i.index=r[i.depth].length,r[i.depth].push(s),i.ariaColumnIndex=d[i.depth]?d[i.depth]+1:1;for(let o=i.depth;o<i.depth+i.rowSpan;o++)d[o]=(d[o]||0)+i.headerColSpan}),R(e,t),y.updateLeft(r,e,a),y.updateRight(r,e,a),r}function p(e,t,a,r=0,n=!1){const d=[];if(!e)return[];e&&e.length===void 0&&(e=[e]),e.forEach((i,s)=>{i=i.props?i.props:i;const f=i.id?i.id:y.tableKeyboardNavigationTools.generateNavigatableId(`${a.prevId++}`,a.idPrefix,"column"),o=H.canUseDOM&&i.media&&window.matchMedia?!window.matchMedia(i.media).matches:!1,x=n||o||i.hidden,c=t==null?void 0:t.find(C=>C.id===f),g=p(i.children,(c==null?void 0:c.children)||[],a,r+1,x);d.push(Object.assign({depth:r},v.gridDefaultProps,g.length?{cell:()=>null,filterCell:()=>null}:{},i,{id:f,declarationIndex:d.length,children:g,headerColSpan:0,rowSpan:0,columnType:i.columnType||"data",colSpan:i.colSpan||1,isAccessible:!0,hidden:x,left:null,right:null,rowSpannable:i.rowSpannable},c?{width:c.width,orderIndex:c.orderIndex}:{}))});const h=(i,s)=>i.orderIndex===s.orderIndex?i.declarationIndex-s.declarationIndex:(i.orderIndex||0)-(s.orderIndex||0);if(d.sort(h),r===0){const i=[],s=(f,o)=>f.forEach(x=>{x.parentIndex=o,s(x.children,i.push(x)-1)});return s(d,-1),i}return d}const D=e=>Array.isArray(e)?e:e?e.data:[];function z(e,t,a,r){const n=D(e),d=[];if(n.length>0){let h=n[0];if(t)for(let s=0;s<t.length;s++)h=h.items&&h.items[0];Object.getOwnPropertyNames(h).forEach(s=>{s!==a.column&&d.push(Object.assign({id:y.tableKeyboardNavigationTools.generateNavigatableId(`${r.prevId++}`,r.idPrefix,"column"),declarationIndex:-1,parentIndex:-1,depth:0,colSpan:0,headerColSpan:0,rowSpan:0,index:0,columnType:"data",left:0,right:0,rightBorder:!1,children:[],ariaColumnIndex:0,isAccessible:!0},v.gridDefaultProps,{field:s}))})}return d}const _=(e,t)=>{var r;let a=e[t.parentIndex];for(;a;){if((r=a.cells)!=null&&r.footerCell)return!0;a=e[a.parentIndex]}return!1},L=e=>e.filter(t=>{var a;return _(e,t)?!1:!!((a=t.cells)!=null&&a.footerCell)||!(t.children&&t.children.length>0)}),$=e=>{let t=e.width;return typeof(e==null?void 0:e.width)=="number"&&(e!=null&&e.minResizableWidth)&&(e==null?void 0:e.width)<(e==null?void 0:e.minResizableWidth)&&(t=e==null?void 0:e.minResizableWidth),typeof(e==null?void 0:e.width)=="number"&&(e!=null&&e.minWidth)&&(e==null?void 0:e.width)<(e==null?void 0:e.minWidth)?t=e==null?void 0:e.minWidth:typeof(e==null?void 0:e.width)=="number"&&(e!=null&&e.maxWidth)&&(e==null?void 0:e.width)>(e==null?void 0:e.maxWidth)&&(t=e==null?void 0:e.maxWidth),t!==void 0?Math.floor(parseFloat(t.toString()))+"px":void 0},V=(e,t)=>t&&t.filter(a=>a.field===e).length>0,E=e=>(e.sort((t,a)=>t.declarationIndex-a.declarationIndex),e.map(t=>{const{declarationIndex:a,parentIndex:r,depth:n,headerColSpan:d,rowSpan:h,index:i,kFirst:s,children:f,...o}=t;return f.length?{children:E(f),...o}:o})),W=e=>{const{cells:t,rowSpannable:a,defaultCell:r,...n}=e;return e.children.length?{...n,children:e.children.map(W)}:n},F=e=>({id:e.id,field:e.field,title:e.title,width:e.width,orderIndex:e.orderIndex,hidden:!1,minWidth:e.minWidth,maxWidth:e.maxWidth,children:e.children?k(e.children):null}),k=e=>e.map(F),P=e=>{const t=[],a=r=>r==null?void 0:r.forEach(n=>{t.push(n),a(n.children)});return a(e),t},K=typeof window!="undefined"&&/Firefox/.test(window.navigator.userAgent),Q=17895697,U=e=>{let t=[];return e.sortable&&(t=t.concat([l.GridContextMenuItemNames.sortAsc,l.GridContextMenuItemNames.sortDesc])),e.pdf&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.exportPDF])),t},J=e=>{let t=[];return e.clipboard&&(t=t.concat([l.GridContextMenuItemNames.copySelection,l.GridContextMenuItemNames.copySelectionNoHeaders,l.GridContextMenuItemNames.paste])),e.editable&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.create,l.GridContextMenuItemNames.edit,l.GridContextMenuItemNames.delete])),e.selectable&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.select])),e.rowReorderable&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.reorderRow])),e.pdf&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.exportPDF])),t},X=(e,t)=>{if(!(!e&&!t))return t?e?{...e,...t,select:{...e.select||{},...t.select||{}},hierarchy:{...e.hierarchy||{},...t.hierarchy||{}},group:{...e.group||{},...t.group||{}},edit:{...e.edit||{},...t.edit||{}}}:t:e},Y=e=>{var a;return typeof e=="object"?(a=e.enabled)!=null?a:!0:e!=null?e:!1},Z=()=>O.ServerFragment===T.ClientFragment,m=e=>!!(e&&e.$$typeof===Symbol.for("react.client.reference")),ee=e=>({id:e.id,ariaColumnIndex:e.ariaColumnIndex,isSelected:e.isSelected,isHighlighted:e.isHighlighted,isInEdit:e.isInEdit,isSorted:e.isSorted,isAlt:e.isAlt,expanded:e.expanded,className:e.className,style:e.style,field:e.field,dataItem:e.dataItem,format:e.format,colSpan:e.colSpan,dataIndex:e.dataIndex,columnIndex:e.columnIndex,columnsCount:e.columnsCount,rowType:e.rowType,level:e.level,editor:e.editor,locked:e.locked,isRtl:e.isRtl,rowDataIndex:e.rowDataIndex,columnPosition:e.columnPosition,group:e.group}),te=e=>{var r,n;const t=typeof e=="object"?(r=e.enabled)!=null?r:!0:e!=null?e:!1,a=typeof e=="object"?(n=e.valueGetter)!=null?n:(d,h)=>w.getter(h)(d):(d,h)=>w.getter(h)(d);return{enabled:t,valueGetter:a}},A=e=>{var t;return M.isValidElement(e)?e:(t=M.Children.toArray(e))==null?void 0:t[0]},ie=(e,t)=>{const a=A(e);return a?M.cloneElement(a,t):null},ae=e=>{let t=0;if(e){const a=e.insertRow(0),r=a.insertCell(0);r.textContent="&nbsp;",t=a.getBoundingClientRect().height,e.deleteRow(0)}return t};exports.autoGenerateColumns=z;exports.calcRowHeight=ae;exports.clientColumn=W;exports.cloneReactElement=ie;exports.firefox=K;exports.firefoxMaxHeight=Q;exports.flatData=N;exports.footerColumns=L;exports.getClientCellProps=ee;exports.getColSpan=u;exports.getColumnState=F;exports.getColumnWidth=$;exports.getColumnsState=k;exports.getDataAsArray=D;exports.getDefaultBodyContextMenuItems=J;exports.getDefaultHeadContextMenuItems=U;exports.getFlatColumnsState=P;exports.getNestedValue=q;exports.getReactElement=A;exports.getRowSpanOptions=te;exports.isClient=Z;exports.isClientReference=m;exports.isRowReorderEnabled=Y;exports.isSorted=V;exports.mapColumns=B;exports.readColumns=p;exports.resolveCells=X;exports.sanitizeColumns=E;exports.syncLockedColumns=R;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const G=require("react"),v=require("../GridColumn.js"),w=require("@progress/kendo-data-query"),y=require("@progress/kendo-react-data-tools"),O=require("./_serverModule.js"),T=require("./_clientModule.js"),l=require("../contextMenu/enums.js"),H=require("@progress/kendo-react-common");function j(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:()=>e[a]})}}return t.default=e,Object.freeze(t)}const M=j(G);function q(e,t){const a=(e!=null?e:"").split(".");let r=t;return a.forEach(n=>{r=r?r[n]:void 0}),r}function N(e,t,a,r,n,d,h,i,s,f=0,o){var c;let x=f;for(let g=0;g<t.length;g++){let C;if(!n||t[g].value===void 0||t[g].items===void 0){e[e.length]={dataIndex:r.index,dataItem:t[g],rowType:"data",level:f,group:o,expanded:(c=s?!!(d!=null&&d[w.getter(s)(t[g])]):!1)!=null?c:!1},r.index++;continue}else{let S;o!=null&&o.parents?S=[{field:o.field,value:o.value},...o.parents]:o?S=[o]:S=[],C={field:t[g].field,value:t[g].value,parents:S}}x=Math.max(x,f+1);let I=!1;const b=y.findGroupExpand(h||[],C);b?I=b.expanded!==!1:I=i!==!1,e[e.length]={dataIndex:-1,dataItem:t[g],level:f,group:C,rowType:"groupHeader",expanded:I},I&&(C.expanded=I,x=Math.max(N(e,t[g].items,a,r,n,d,h,i,s,f+1,C),x)),(a==="always"||I&&a==="visible")&&(e[e.length]={dataIndex:-1,dataItem:t[g],rowType:"groupFooter",level:f,expanded:I})}return x}function R(e,t){for(let a=0;a<e.length;a++){const r=e[a];if(!r.locked){const n=t[r.index];n&&(r.locked=n.locked)}}}const u=(e,t)=>typeof e.colSpan=="function"?e.colSpan({dataItem:t,column:e}):e.colSpan||1;function B(e,t,a){const r=[[]];let n=0;for(let i=e.length-1;i>=0;i--)n=Math.max(n,e[i].depth),e[i].headerColSpan=e[i].headerColSpan||1,e[i].children.length>0&&(e[i].headerColSpan=e[i].children.reduce((s,f)=>f.hidden?s:s+f.headerColSpan,0));const d=[];let h=1;return e.forEach((i,s)=>{r[i.depth]=r[i.depth]||[];let f=!1;r[i.depth].length===0&&(h<=1?h=1+(i.children.length>0?0:n-i.depth):(h--,f=!0)),i.rowSpan=1+(i.children.length>0?0:n-i.depth),i.kFirst=f,i.index=r[i.depth].length,r[i.depth].push(s),i.ariaColumnIndex=d[i.depth]?d[i.depth]+1:1;for(let o=i.depth;o<i.depth+i.rowSpan;o++)d[o]=(d[o]||0)+i.headerColSpan}),R(e,t),y.updateLeft(r,e,a),y.updateRight(r,e,a),r}function p(e,t,a,r=0,n=!1){const d=[];if(!e)return[];e&&e.length===void 0&&(e=[e]),e.forEach((i,s)=>{i=i.props?i.props:i;const f=i.id?i.id:y.tableKeyboardNavigationTools.generateNavigatableId(`${a.prevId++}`,a.idPrefix,"column"),o=H.canUseDOM&&i.media&&window.matchMedia?!window.matchMedia(i.media).matches:!1,x=n||o||i.hidden,c=t==null?void 0:t.find(C=>C.id===f),g=p(i.children,(c==null?void 0:c.children)||[],a,r+1,x);d.push(Object.assign({depth:r},v.gridDefaultProps,g.length?{cell:()=>null,filterCell:()=>null}:{},i,{id:f,declarationIndex:d.length,children:g,headerColSpan:0,rowSpan:0,columnType:i.columnType||"data",colSpan:i.colSpan||1,isAccessible:!0,hidden:x,left:null,right:null,rowSpannable:i.rowSpannable},c?{width:c.width,orderIndex:c.orderIndex}:{}))});const h=(i,s)=>i.orderIndex===s.orderIndex?i.declarationIndex-s.declarationIndex:(i.orderIndex||0)-(s.orderIndex||0);if(d.sort(h),r===0){const i=[],s=(f,o)=>f.forEach(x=>{x.parentIndex=o,s(x.children,i.push(x)-1)});return s(d,-1),i}return d}const D=e=>Array.isArray(e)?e:e?e.data:[];function z(e,t,a,r){const n=D(e),d=[];if(n.length>0){let h=n[0];if(t)for(let s=0;s<t.length;s++)h=h.items&&h.items[0];Object.getOwnPropertyNames(h).forEach(s=>{s!==a.column&&d.push(Object.assign({id:y.tableKeyboardNavigationTools.generateNavigatableId(`${r.prevId++}`,r.idPrefix,"column"),declarationIndex:-1,parentIndex:-1,depth:0,colSpan:0,headerColSpan:0,rowSpan:0,index:0,columnType:"data",left:0,right:0,rightBorder:!1,children:[],ariaColumnIndex:0,isAccessible:!0},v.gridDefaultProps,{field:s}))})}return d}const _=(e,t)=>{var r;let a=e[t.parentIndex];for(;a;){if((r=a.cells)!=null&&r.footerCell)return!0;a=e[a.parentIndex]}return!1},L=e=>e.filter(t=>{var a;return _(e,t)?!1:!!((a=t.cells)!=null&&a.footerCell)||!(t.children&&t.children.length>0)}),$=e=>{let t=e.width;return typeof(e==null?void 0:e.width)=="number"&&(e!=null&&e.minResizableWidth)&&(e==null?void 0:e.width)<(e==null?void 0:e.minResizableWidth)&&(t=e==null?void 0:e.minResizableWidth),typeof(e==null?void 0:e.width)=="number"&&(e!=null&&e.minWidth)&&(e==null?void 0:e.width)<(e==null?void 0:e.minWidth)?t=e==null?void 0:e.minWidth:typeof(e==null?void 0:e.width)=="number"&&(e!=null&&e.maxWidth)&&(e==null?void 0:e.width)>(e==null?void 0:e.maxWidth)&&(t=e==null?void 0:e.maxWidth),t!==void 0?Math.floor(parseFloat(t.toString()))+"px":void 0},V=(e,t)=>t&&t.filter(a=>a.field===e).length>0,E=e=>(e.sort((t,a)=>t.declarationIndex-a.declarationIndex),e.map(t=>{const{declarationIndex:a,parentIndex:r,depth:n,headerColSpan:d,rowSpan:h,index:i,kFirst:s,children:f,...o}=t;return f.length?{children:E(f),...o}:o})),W=e=>{const{cells:t,rowSpannable:a,defaultCell:r,...n}=e;return e.children.length?{...n,children:e.children.map(W)}:n},F=e=>({id:e.id,field:e.field,title:e.title,width:e.width,orderIndex:e.orderIndex,hidden:!1,minWidth:e.minWidth,maxWidth:e.maxWidth,children:e.children?k(e.children):null}),k=e=>e.map(F),P=e=>{const t=[],a=r=>r==null?void 0:r.forEach(n=>{t.push(n),a(n.children)});return a(e),t},K=typeof window!="undefined"&&/Firefox/.test(window.navigator.userAgent),Q=17895697,U=e=>{let t=[];return e.sortable&&(t=t.concat([l.GridContextMenuItemNames.sortAsc,l.GridContextMenuItemNames.sortDesc])),e.pdf&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.exportPDF])),t},J=e=>{let t=[];return e.clipboard&&(t=t.concat([l.GridContextMenuItemNames.copySelection,l.GridContextMenuItemNames.copySelectionNoHeaders,l.GridContextMenuItemNames.paste])),e.editable&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.create,l.GridContextMenuItemNames.edit,l.GridContextMenuItemNames.delete])),e.selectable&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.select])),e.rowReorderable&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.reorderRow])),e.pdf&&(t.length&&(t=t.concat([l.GridContextMenuItemNames.separator])),t=t.concat([l.GridContextMenuItemNames.exportPDF])),t},X=(e,t)=>{if(!(!e&&!t))return t?e?{...e,...t,select:{...e.select||{},...t.select||{}},hierarchy:{...e.hierarchy||{},...t.hierarchy||{}},group:{...e.group||{},...t.group||{}},edit:{...e.edit||{},...t.edit||{}}}:t:e},Y=e=>{var a;return typeof e=="object"?(a=e.enabled)!=null?a:!0:e!=null?e:!1},Z=()=>O.ServerFragment===T.ClientFragment,m=e=>!!(e&&e.$$typeof===Symbol.for("react.client.reference")),ee=e=>({id:e.id,ariaColumnIndex:e.ariaColumnIndex,isSelected:e.isSelected,isHighlighted:e.isHighlighted,isInEdit:e.isInEdit,isSorted:e.isSorted,isAlt:e.isAlt,expanded:e.expanded,className:e.className,style:e.style,field:e.field,dataItem:e.dataItem,format:e.format,colSpan:e.colSpan,dataIndex:e.dataIndex,columnIndex:e.columnIndex,columnsCount:e.columnsCount,rowType:e.rowType,level:e.level,editor:e.editor,locked:e.locked,isRtl:e.isRtl,rowDataIndex:e.rowDataIndex,columnPosition:e.columnPosition,group:e.group}),te=e=>{var r,n;const t=typeof e=="object"?(r=e.enabled)!=null?r:!0:e!=null?e:!1,a=typeof e=="object"?(n=e.valueGetter)!=null?n:((d,h)=>w.getter(h)(d)):(d,h)=>w.getter(h)(d);return{enabled:t,valueGetter:a}},A=e=>{var t;return M.isValidElement(e)?e:(t=M.Children.toArray(e))==null?void 0:t[0]},ie=(e,t)=>{const a=A(e);return a?M.cloneElement(a,t):null},ae=e=>{let t=0;if(e){const a=e.insertRow(0),r=a.insertCell(0);r.textContent="&nbsp;",t=a.getBoundingClientRect().height,e.deleteRow(0)}return t};exports.autoGenerateColumns=z;exports.calcRowHeight=ae;exports.clientColumn=W;exports.cloneReactElement=ie;exports.firefox=K;exports.firefoxMaxHeight=Q;exports.flatData=N;exports.footerColumns=L;exports.getClientCellProps=ee;exports.getColSpan=u;exports.getColumnState=F;exports.getColumnWidth=$;exports.getColumnsState=k;exports.getDataAsArray=D;exports.getDefaultBodyContextMenuItems=J;exports.getDefaultHeadContextMenuItems=U;exports.getFlatColumnsState=P;exports.getNestedValue=q;exports.getReactElement=A;exports.getRowSpanOptions=te;exports.isClient=Z;exports.isClientReference=m;exports.isRowReorderEnabled=Y;exports.isSorted=V;exports.mapColumns=B;exports.readColumns=p;exports.resolveCells=X;exports.sanitizeColumns=E;exports.syncLockedColumns=R;
package/utils/index.mjs CHANGED
@@ -8,7 +8,7 @@
8
8
  import * as C from "react";
9
9
  import { gridDefaultProps as p } from "../GridColumn.mjs";
10
10
  import { getter as S } from "@progress/kendo-data-query";
11
- import { findGroupExpand as W, updateLeft as F, updateRight as R, tableKeyboardNavigationTools as b } from "@progress/kendo-react-data-tools";
11
+ import { findGroupExpand as W, tableKeyboardNavigationTools as b, updateLeft as F, updateRight as R } from "@progress/kendo-react-data-tools";
12
12
  import { ServerFragment as D } from "./_serverModule.mjs";
13
13
  import { ClientFragment as E } from "./_clientModule.mjs";
14
14
  import { GridContextMenuItemNames as o } from "../contextMenu/enums.mjs";
@@ -292,7 +292,7 @@ const j = (e, t) => {
292
292
  group: e.group
293
293
  }), se = (e) => {
294
294
  var a, d;
295
- const t = typeof e == "object" ? (a = e.enabled) != null ? a : !0 : e != null ? e : !1, r = typeof e == "object" ? (d = e.valueGetter) != null ? d : (n, l) => S(l)(n) : (n, l) => S(l)(n);
295
+ const t = typeof e == "object" ? (a = e.enabled) != null ? a : !0 : e != null ? e : !1, r = typeof e == "object" ? (d = e.valueGetter) != null ? d : ((n, l) => S(l)(n)) : (n, l) => S(l)(n);
296
296
  return { enabled: t, valueGetter: r };
297
297
  }, $ = (e) => {
298
298
  var t;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { GridColumnProps } from '../interfaces/GridColumnProps.js';
9
+ import { GridComponentProps } from '../interfaces/GridProps.js';
10
+ /**
11
+ * @hidden
12
+ */
13
+ export declare const isPremiumGridByProps: (props: GridComponentProps) => {
14
+ [key: string]: boolean;
15
+ };
16
+ /**
17
+ * @hidden
18
+ */
19
+ export declare const isPremiumGridByColumns: (columns: GridColumnProps[]) => {
20
+ [key: string]: boolean;
21
+ };
22
+ /**
23
+ * @hidden
24
+ */
25
+ export declare const isPremiumGridByComponents: (props: GridComponentProps) => {
26
+ [key: string]: boolean;
27
+ };
28
+ /**
29
+ * @hidden
30
+ */
31
+ export declare const gridPremiumFeatures: (props: GridComponentProps, columns: GridColumnProps[]) => string[];
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { ExtendedColumnProps } from '../GridColumn.js';
9
+ import { GridCellRenderModel } from '../interfaces/GridCellRenderModel.js';
10
+ /**
11
+ * @hidden
12
+ */
13
+ export declare function getVirtualCellsToRender(args: {
14
+ cellModels: GridCellRenderModel[];
15
+ columns: ExtendedColumnProps[];
16
+ tableViewPortWidth: number;
17
+ scrollLeft: number;
18
+ }): GridCellRenderModel[];