@progress/kendo-react-grid 14.2.2-develop.1 → 14.3.0-develop.10

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 (101) hide show
  1. package/GridClientContextReader.js +1 -1
  2. package/GridClientContextReader.mjs +10 -9
  3. package/GridClientWrapper.js +1 -1
  4. package/GridClientWrapper.mjs +651 -494
  5. package/GridComponent.js +1 -1
  6. package/GridComponent.mjs +418 -379
  7. package/GridState.d.ts +2 -0
  8. package/GridState.js +1 -1
  9. package/GridState.mjs +98 -90
  10. package/{toolbar-tools/smartbox/SegmentedControl.d.ts → cells/pincell/GridPinCell.d.ts} +4 -2
  11. package/cells/pincell/GridPinCell.js +9 -0
  12. package/cells/pincell/GridPinCell.mjs +19 -0
  13. package/cells/pincell/GridPinCellServer.d.ts +15 -0
  14. package/cells/pincell/GridPinCellServer.js +8 -0
  15. package/cells/pincell/GridPinCellServer.mjs +32 -0
  16. package/cells/pincell/GridPinCellServerContainer.d.ts +11 -0
  17. package/cells/pincell/GridPinCellServerContainer.js +9 -0
  18. package/cells/pincell/GridPinCellServerContainer.mjs +26 -0
  19. package/cells/pincell/GridPinDropdownButton.d.ts +21 -0
  20. package/cells/pincell/GridPinDropdownButton.js +9 -0
  21. package/cells/pincell/GridPinDropdownButton.mjs +58 -0
  22. package/cells/pincell/useGridPinCellClientTdProps.d.ts +24 -0
  23. package/cells/pincell/useGridPinCellClientTdProps.js +9 -0
  24. package/cells/pincell/useGridPinCellClientTdProps.mjs +21 -0
  25. package/cells/pincell/utils.d.ts +20 -0
  26. package/cells/pincell/utils.js +8 -0
  27. package/cells/pincell/utils.mjs +47 -0
  28. package/components/PinnedRowsTable.d.ts +48 -0
  29. package/components/PinnedRowsTable.js +9 -0
  30. package/components/PinnedRowsTable.mjs +133 -0
  31. package/components/StickyGroupTable.d.ts +42 -0
  32. package/components/StickyGroupTable.js +9 -0
  33. package/components/StickyGroupTable.mjs +82 -0
  34. package/components/colGroup/GridColGroup.js +1 -1
  35. package/components/colGroup/GridColGroup.mjs +9 -9
  36. package/contextMenu/GridContextMenu.d.ts +42 -0
  37. package/contextMenu/GridContextMenu.js +1 -1
  38. package/contextMenu/GridContextMenu.mjs +101 -51
  39. package/contextMenu/enums.d.ts +5 -1
  40. package/contextMenu/enums.js +1 -1
  41. package/contextMenu/enums.mjs +2 -2
  42. package/dist/cdn/js/kendo-react-grid.js +1 -1
  43. package/drag/ColumnResize.d.ts +17 -0
  44. package/drag/ColumnResize.js +1 -1
  45. package/drag/ColumnResize.mjs +107 -100
  46. package/getRowContents.d.ts +58 -0
  47. package/getRowContents.js +8 -0
  48. package/getRowContents.mjs +99 -0
  49. package/header/GridHeaderGroupSpacerCell.d.ts +13 -0
  50. package/header/GridHeaderGroupSpacerCell.js +9 -0
  51. package/header/GridHeaderGroupSpacerCell.mjs +23 -0
  52. package/header/client/GridHeaderPinCell.d.ts +12 -0
  53. package/header/client/GridHeaderPinCell.js +9 -0
  54. package/header/client/GridHeaderPinCell.mjs +14 -0
  55. package/hooks/useStickyGroups.d.ts +71 -0
  56. package/hooks/useStickyGroups.js +9 -0
  57. package/hooks/useStickyGroups.mjs +350 -0
  58. package/index.d.mts +5 -2
  59. package/index.d.ts +5 -2
  60. package/index.js +1 -1
  61. package/index.mjs +97 -95
  62. package/interfaces/ColumnType.d.ts +1 -1
  63. package/interfaces/GridCellsSettings.d.ts +23 -0
  64. package/interfaces/GridGroupableSettings.d.ts +23 -0
  65. package/interfaces/GridProps.d.ts +70 -1
  66. package/interfaces/GridRowProps.d.ts +4 -0
  67. package/interfaces/GridRowsSettings.d.ts +11 -0
  68. package/interfaces/events.d.ts +17 -0
  69. package/messages/index.d.ts +25 -0
  70. package/messages/index.js +2 -2
  71. package/messages/index.mjs +122 -112
  72. package/package-metadata.js +1 -1
  73. package/package-metadata.mjs +2 -2
  74. package/package.json +17 -17
  75. package/rows/GridRow.js +1 -1
  76. package/rows/GridRow.mjs +25 -24
  77. package/rows/GridRowRenderer.d.ts +1 -0
  78. package/rows/GridRowRenderer.js +1 -1
  79. package/rows/GridRowRenderer.mjs +39 -36
  80. package/stacked/GridStackedRow.d.ts +5 -0
  81. package/stacked/GridStackedRow.js +1 -1
  82. package/stacked/GridStackedRow.mjs +118 -116
  83. package/stacked/StackedModeComponents.d.ts +1 -0
  84. package/stacked/StackedModeComponents.js +1 -1
  85. package/stacked/StackedModeComponents.mjs +14 -14
  86. package/stacked/StackedModeRow.d.ts +1 -0
  87. package/stacked/StackedModeRow.js +1 -1
  88. package/stacked/StackedModeRow.mjs +13 -11
  89. package/toolbar-tools/smartbox/SmartBox.js +1 -1
  90. package/toolbar-tools/smartbox/SmartBox.mjs +102 -94
  91. package/toolbar-tools/smartbox/hooks/useSmartBoxSegmentedControl.d.ts +12 -3
  92. package/toolbar-tools/smartbox/hooks/useSmartBoxSegmentedControl.js +1 -1
  93. package/toolbar-tools/smartbox/hooks/useSmartBoxSegmentedControl.mjs +42 -41
  94. package/toolbar-tools/smartbox/index.d.ts +0 -1
  95. package/toolbar-tools/smartbox/interfaces/index.d.ts +0 -1
  96. package/utils/index.d.ts +1 -0
  97. package/utils/index.js +1 -1
  98. package/utils/index.mjs +44 -44
  99. package/toolbar-tools/smartbox/SegmentedControl.js +0 -8
  100. package/toolbar-tools/smartbox/SegmentedControl.mjs +0 -109
  101. package/toolbar-tools/smartbox/interfaces/SegmentedControlTypes.d.ts +0 -66
@@ -0,0 +1,47 @@
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 * as c from "react";
9
+ import { GRID_COL_INDEX_ATTRIBUTE as s } from "../../constants/index.mjs";
10
+ import { uGrid as o, classNames as r } from "@progress/kendo-react-common";
11
+ import { GridPinDropdownButton as m } from "./GridPinDropdownButton.mjs";
12
+ const I = (e) => {
13
+ var i;
14
+ let t = null, l = null;
15
+ if (e.rowType === "groupFooter")
16
+ t = {
17
+ className: e.className
18
+ };
19
+ else if (e.rowType !== "groupHeader") {
20
+ const a = e.unstyled, n = (i = a == null ? void 0 : a.uGrid) != null ? i : o, d = r(
21
+ n.td({
22
+ selected: e.isSelected,
23
+ highlighted: e.isHighlighted,
24
+ sorted: e.isSorted,
25
+ alt: e.isAlt
26
+ }),
27
+ e.className
28
+ );
29
+ t = {
30
+ colSpan: e.colSpan,
31
+ style: e.style,
32
+ className: d,
33
+ role: "gridcell",
34
+ "aria-colindex": e.ariaColumnIndex,
35
+ "aria-selected": e.isSelected,
36
+ [s]: e.columnIndex
37
+ }, l = /* @__PURE__ */ c.createElement(m, { dataItem: e.dataItem });
38
+ }
39
+ return { tdProps: t, content: l };
40
+ }, T = (e) => {
41
+ var t, l;
42
+ return (l = (t = e.cells) == null ? void 0 : t.pin) == null ? void 0 : l[e.rowType || "data"];
43
+ };
44
+ export {
45
+ T as getCustomCell,
46
+ I as getPinCellTdProps
47
+ };
@@ -0,0 +1,48 @@
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 { EditDescriptor } from '@progress/kendo-react-data-tools';
9
+ import { DataRowContext } from '../getRowContents.js';
10
+ import { GridStackedLayoutSettings } from '../interfaces/GridStackedLayoutSettings.js';
11
+ import { GridRowProps } from '../interfaces/GridRowProps.js';
12
+ import * as React from 'react';
13
+ /**
14
+ * Represents the PinnedRowsTable handle.
15
+ *
16
+ * @hidden
17
+ */
18
+ export interface PinnedRowsTableHandle {
19
+ /**
20
+ * Sets the width of the pinned rows table element.
21
+ */
22
+ setWidth: (width: number) => void;
23
+ /**
24
+ * Sets the horizontal scroll position of the pinned rows container.
25
+ */
26
+ setScrollLeft: (scrollLeft: number) => void;
27
+ }
28
+ /**
29
+ * @hidden
30
+ */
31
+ export interface PinnedRowsTableProps {
32
+ size?: string;
33
+ colGroups?: React.ReactElement;
34
+ dataRowContext: DataRowContext;
35
+ position: 'top' | 'bottom';
36
+ pinnedItems: any[];
37
+ isStackedMode?: boolean;
38
+ groupLevelCount?: number;
39
+ stackedLayoutSettings?: GridStackedLayoutSettings;
40
+ rowHeight?: number;
41
+ rows?: GridRowProps['rows'];
42
+ selectable?: any;
43
+ edit?: EditDescriptor;
44
+ }
45
+ /**
46
+ * @hidden
47
+ */
48
+ export declare const PinnedRowsTable: React.FC<PinnedRowsTableProps>;
@@ -0,0 +1,9 @@
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
+ "use client";
9
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("react"),d=require("@progress/kendo-react-common"),E=require("@progress/kendo-react-data-tools"),H=require("../utils/GridContext.js"),_=require("../rows/GridRowRenderer.js"),F=require("../getRowContents.js");function U(s){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const r in s)if(r!=="default"){const p=Object.getOwnPropertyDescriptor(s,r);Object.defineProperty(c,r,p.get?p:{enumerable:!0,get:()=>s[r]})}}return c.default=s,Object.freeze(c)}const n=U(A),W=({size:s,colGroups:c,dataRowContext:r,position:p,pinnedItems:y,isStackedMode:P,groupLevelCount:h,stackedLayoutSettings:C,rowHeight:G,rows:i,selectable:u,edit:I})=>{const m=d.useUnstyled(),k=m!=null&&m.uGrid?m.uGrid:d.uGrid,o=n.useContext(H.GridContext),a=p==="top",R=a?o.pinnedTopRef:o.pinnedBottomRef,v=a?o.pinnedTopTableRef:o.pinnedBottomTableRef,b=n.useRef(null),S=n.useRef(!1);n.useImperativeHandle(v,()=>({setWidth:e=>{b.current&&(b.current.style.width=e?e+"px":"")},setScrollLeft:e=>{R.current&&R.current.scrollLeft!==e&&(S.current=!0,R.current.scrollLeft=e,S.current=!1)}}));const D=n.useCallback(e=>{var f;const t=(f=o.containerElementRef)==null?void 0:f.current;if(!t||S.current)return;const l=e.currentTarget.scrollLeft;t.scrollLeft!==l&&(t.scrollLeft=l)},[o.containerElementRef]),L=n.useCallback(e=>{var t;(t=o.columnResizeRef)!=null&&t.current&&(a?o.columnResizeRef.current.colGroupPinnedTop=e:o.columnResizeRef.current.colGroupPinnedBottom=e)},[o.columnResizeRef,a]),j=i!=null&&i.pinnedData?{...i,data:i.pinnedData}:i,w=y.map((e,t)=>{var N;const l={dataItem:e,rowType:"data",level:0,expanded:!1,dataIndex:t},f=r.dataItemKey,T="pinned_"+((f?d.getter(f)(e):void 0)||"ai"+t),g=F.getRowContents(r,I,l,T,t,!1);return n.createElement(_.GridRowRenderer,{key:T,isStackedMode:!!P,item:l,rowId:T,dataIndex:t,ariaRowIndex:t+1,absoluteRowIndex:t,isAltRow:t%2!==0,isHidden:!1,isRowReorderable:!1,rowHeight:G,rows:j,leafColumns:r.leafColumns,groupLevelCount:h||0,stackedLayoutSettings:C,cells:r.cells,editMode:(N=r.editable)==null?void 0:N.mode,isSelected:g.isSelected,isHighlighted:g.isHighlighted,isInEdit:g.isInEdit&&!r.isEditDialog,preparedCells:g.row,showDetailToggle:!1,isDetailExpanded:!1})}),q=d.classNames("k-grid-pinned-container",{"k-pos-bottom":!a}),K=d.classNames(k.table({size:s})),O=c?n.cloneElement(c,{colGroupRef:L}):null,z=n.useCallback(e=>{var l;const t=y[e.startRowIndex];t&&((l=o.pinnedSelectionRelease)==null||l.call(o,e,t))},[o,y]),B=n.useMemo(()=>u&&{...typeof u=="object"?u:{},enabled:!0,drag:!1},[u]),M=a?E.tableKeyboardNavigationTopPinnedAttributes:E.tableKeyboardNavigationBottomPinnedAttributes;return n.createElement("div",{className:q,style:{display:w.length?"":"none"}},n.createElement("div",{className:"k-grid-pinned-wrap",ref:R,onScroll:D},n.createElement(E.TableSelection,{selectable:B,onRelease:z,childRef:e=>{b.current=e}},n.createElement("table",{ref:b,className:K,"aria-label":a?"Pinned top rows":"Pinned bottom rows"},O,n.createElement("tbody",{className:d.classNames(k.tbody({})),...M},w)))))};exports.PinnedRowsTable=W;
@@ -0,0 +1,133 @@
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
+ "use client";
9
+ import * as n from "react";
10
+ import { useUnstyled as j, uGrid as F, getter as U, classNames as g } from "@progress/kendo-react-common";
11
+ import { TableSelection as W, tableKeyboardNavigationTopPinnedAttributes as _, tableKeyboardNavigationBottomPinnedAttributes as q } from "@progress/kendo-react-data-tools";
12
+ import { GridContext as J } from "../utils/GridContext.mjs";
13
+ import { GridRowRenderer as O } from "../rows/GridRowRenderer.mjs";
14
+ import { getRowContents as Q } from "../getRowContents.mjs";
15
+ const ee = ({
16
+ size: h,
17
+ colGroups: y,
18
+ dataRowContext: s,
19
+ position: I,
20
+ pinnedItems: p,
21
+ isStackedMode: k,
22
+ groupLevelCount: N,
23
+ stackedLayoutSettings: w,
24
+ rowHeight: C,
25
+ rows: a,
26
+ selectable: i,
27
+ edit: G
28
+ }) => {
29
+ const d = j(), E = d != null && d.uGrid ? d.uGrid : F, o = n.useContext(J), r = I === "top", f = r ? o.pinnedTopRef : o.pinnedBottomRef, P = r ? o.pinnedTopTableRef : o.pinnedBottomTableRef, u = n.useRef(null), R = n.useRef(!1);
30
+ n.useImperativeHandle(P, () => ({
31
+ setWidth: (e) => {
32
+ u.current && (u.current.style.width = e ? e + "px" : "");
33
+ },
34
+ setScrollLeft: (e) => {
35
+ f.current && f.current.scrollLeft !== e && (R.current = !0, f.current.scrollLeft = e, R.current = !1);
36
+ }
37
+ }));
38
+ const v = n.useCallback(
39
+ (e) => {
40
+ var c;
41
+ const t = (c = o.containerElementRef) == null ? void 0 : c.current;
42
+ if (!t || R.current)
43
+ return;
44
+ const l = e.currentTarget.scrollLeft;
45
+ t.scrollLeft !== l && (t.scrollLeft = l);
46
+ },
47
+ [o.containerElementRef]
48
+ ), L = n.useCallback(
49
+ (e) => {
50
+ var t;
51
+ (t = o.columnResizeRef) != null && t.current && (r ? o.columnResizeRef.current.colGroupPinnedTop = e : o.columnResizeRef.current.colGroupPinnedBottom = e);
52
+ },
53
+ [o.columnResizeRef, r]
54
+ ), K = a != null && a.pinnedData ? { ...a, data: a.pinnedData } : a, S = p.map((e, t) => {
55
+ var T;
56
+ const l = {
57
+ dataItem: e,
58
+ rowType: "data",
59
+ level: 0,
60
+ expanded: !1,
61
+ dataIndex: t
62
+ }, c = s.dataItemKey, b = "pinned_" + ((c ? U(c)(e) : void 0) || "ai" + t), m = Q(s, G, l, b, t, !1);
63
+ return /* @__PURE__ */ n.createElement(
64
+ O,
65
+ {
66
+ key: b,
67
+ isStackedMode: !!k,
68
+ item: l,
69
+ rowId: b,
70
+ dataIndex: t,
71
+ ariaRowIndex: t + 1,
72
+ absoluteRowIndex: t,
73
+ isAltRow: t % 2 !== 0,
74
+ isHidden: !1,
75
+ isRowReorderable: !1,
76
+ rowHeight: C,
77
+ rows: K,
78
+ leafColumns: s.leafColumns,
79
+ groupLevelCount: N || 0,
80
+ stackedLayoutSettings: w,
81
+ cells: s.cells,
82
+ editMode: (T = s.editable) == null ? void 0 : T.mode,
83
+ isSelected: m.isSelected,
84
+ isHighlighted: m.isHighlighted,
85
+ isInEdit: m.isInEdit && !s.isEditDialog,
86
+ preparedCells: m.row,
87
+ showDetailToggle: !1,
88
+ isDetailExpanded: !1
89
+ }
90
+ );
91
+ }), B = g("k-grid-pinned-container", {
92
+ "k-pos-bottom": !r
93
+ }), D = g(E.table({ size: h })), z = y ? n.cloneElement(y, { colGroupRef: L }) : null, A = n.useCallback(
94
+ (e) => {
95
+ var l;
96
+ const t = p[e.startRowIndex];
97
+ t && ((l = o.pinnedSelectionRelease) == null || l.call(o, e, t));
98
+ },
99
+ [o, p]
100
+ ), H = n.useMemo(() => i && { ...typeof i == "object" ? i : {}, enabled: !0, drag: !1 }, [i]), M = r ? _ : q;
101
+ return /* @__PURE__ */ n.createElement(
102
+ "div",
103
+ {
104
+ className: B,
105
+ style: {
106
+ display: S.length ? "" : "none"
107
+ }
108
+ },
109
+ /* @__PURE__ */ n.createElement("div", { className: "k-grid-pinned-wrap", ref: f, onScroll: v }, /* @__PURE__ */ n.createElement(
110
+ W,
111
+ {
112
+ selectable: H,
113
+ onRelease: A,
114
+ childRef: (e) => {
115
+ u.current = e;
116
+ }
117
+ },
118
+ /* @__PURE__ */ n.createElement(
119
+ "table",
120
+ {
121
+ ref: u,
122
+ className: D,
123
+ "aria-label": r ? "Pinned top rows" : "Pinned bottom rows"
124
+ },
125
+ z,
126
+ /* @__PURE__ */ n.createElement("tbody", { className: g(E.tbody({})), ...M }, S)
127
+ )
128
+ ))
129
+ );
130
+ };
131
+ export {
132
+ ee as PinnedRowsTable
133
+ };
@@ -0,0 +1,42 @@
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 { DataRowContext } from '../getRowContents.js';
9
+ import { GridStackedLayoutSettings } from '../interfaces/GridStackedLayoutSettings.js';
10
+ import * as React from 'react';
11
+ /**
12
+ * Represents the StickyGroupTable handle.
13
+ *
14
+ * @hidden
15
+ */
16
+ export interface StickyTableHandle {
17
+ /**
18
+ * Sets the width of the sticky table element.
19
+ */
20
+ setWidth: (width: number) => void;
21
+ /**
22
+ * Sets the horizontal scroll position of the sticky container.
23
+ */
24
+ setScrollLeft: (scrollLeft: number) => void;
25
+ }
26
+ /**
27
+ * @hidden
28
+ */
29
+ export interface StickyGroupTableProps {
30
+ size?: string;
31
+ colGroups?: React.ReactElement;
32
+ dataRowContext: DataRowContext;
33
+ position: 'top' | 'bottom';
34
+ isStackedMode?: boolean;
35
+ groupLevelCount?: number;
36
+ stackedLayoutSettings?: GridStackedLayoutSettings;
37
+ rowHeight?: number;
38
+ }
39
+ /**
40
+ * @hidden
41
+ */
42
+ export declare const StickyGroupTable: React.FC<StickyGroupTableProps>;
@@ -0,0 +1,9 @@
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
+ "use client";
9
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("react"),l=require("@progress/kendo-react-common"),h=require("../utils/GridContext.js"),j=require("../rows/GridRowRenderer.js"),q=require("../getRowContents.js");function x(o){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(n,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return n.default=o,Object.freeze(n)}const r=x(O),z=({size:o,colGroups:n,dataRowContext:e,position:i,isStackedMode:k,groupLevelCount:g,stackedLayoutSettings:I,rowHeight:C})=>{const u=l.useUnstyled(),f=u!=null&&u.uGrid?u.uGrid:l.uGrid,t=r.useContext(h.GridContext),c=i==="top",d=c?t.stickyHeaderRef:t.stickyFooterRef,b=(c?t.stickyHeaderItems:t.stickyFooterItems)||[],G=b.length>0,w=l.classNames(f.stickyContainer({bottom:!c})),S=l.classNames(f.table({size:o})),m=r.useRef(null),N=c?t.stickyHeaderTableRef:t.stickyFooterTableRef;r.useImperativeHandle(N,()=>({setWidth:s=>{m.current&&(m.current.style.width=s?s+"px":"")},setScrollLeft:s=>{d.current&&d.current.scrollLeft!==s&&(d.current.scrollLeft=s)}}));const T=r.useCallback(s=>{var a;(a=t.columnResizeRef)!=null&&a.current&&(c?t.columnResizeRef.current.colGroupStickyHeader=s:t.columnResizeRef.current.colGroupStickyFooter=s)},[t.columnResizeRef,c]),E=n?r.cloneElement(n,{colGroupRef:T}):null,v=()=>b.map((s,a)=>{const{item:y,flatIndex:p}=s,R=e.dataItemKey&&l.getter(e.dataItemKey)(y.dataItem)||"ai"+p,H=q.getRowContents(e,{},y,R,a,!1);return r.createElement(j.GridRowRenderer,{key:R,isStackedMode:!!k,item:y,rowId:R,dataIndex:-1,ariaRowIndex:a,absoluteRowIndex:p,isAltRow:!1,isHidden:!1,isRowReorderable:!1,rowHeight:C,rows:void 0,leafColumns:e.leafColumns,groupLevelCount:g||0,stackedLayoutSettings:I,cells:e.cells,isSelected:!1,isInEdit:!1,preparedCells:H.row,showDetailToggle:!1,isDetailExpanded:!1})});return r.createElement("div",{ref:d,className:w,style:{display:G?"":"none"}},r.createElement("table",{ref:m,className:S},E,r.createElement("tbody",{className:l.classNames(f.tbody({}))},v())))};exports.StickyGroupTable=z;
@@ -0,0 +1,82 @@
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
+ "use client";
9
+ import * as s from "react";
10
+ import { useUnstyled as T, uGrid as v, classNames as f, getter as z } from "@progress/kendo-react-common";
11
+ import { GridContext as F } from "../utils/GridContext.mjs";
12
+ import { GridRowRenderer as K } from "../rows/GridRowRenderer.mjs";
13
+ import { getRowContents as L } from "../getRowContents.mjs";
14
+ const j = ({
15
+ size: p,
16
+ colGroups: u,
17
+ dataRowContext: o,
18
+ position: k,
19
+ isStackedMode: I,
20
+ groupLevelCount: b,
21
+ stackedLayoutSettings: C,
22
+ rowHeight: g
23
+ }) => {
24
+ const n = T(), c = n != null && n.uGrid ? n.uGrid : v, e = s.useContext(F), r = k === "top", a = r ? e.stickyHeaderRef : e.stickyFooterRef, R = (r ? e.stickyHeaderItems : e.stickyFooterItems) || [], G = R.length > 0, w = f(c.stickyContainer({ bottom: !r })), E = f(c.table({ size: p })), i = s.useRef(null), H = r ? e.stickyHeaderTableRef : e.stickyFooterTableRef;
25
+ s.useImperativeHandle(H, () => ({
26
+ setWidth: (t) => {
27
+ i.current && (i.current.style.width = t ? t + "px" : "");
28
+ },
29
+ setScrollLeft: (t) => {
30
+ a.current && a.current.scrollLeft !== t && (a.current.scrollLeft = t);
31
+ }
32
+ }));
33
+ const N = s.useCallback(
34
+ (t) => {
35
+ var l;
36
+ (l = e.columnResizeRef) != null && l.current && (r ? e.columnResizeRef.current.colGroupStickyHeader = t : e.columnResizeRef.current.colGroupStickyFooter = t);
37
+ },
38
+ [e.columnResizeRef, r]
39
+ ), S = u ? s.cloneElement(u, { colGroupRef: N }) : null, h = () => R.map((t, l) => {
40
+ const { item: d, flatIndex: y } = t, m = o.dataItemKey && z(o.dataItemKey)(d.dataItem) || "ai" + y, x = L(o, {}, d, m, l, !1);
41
+ return /* @__PURE__ */ s.createElement(
42
+ K,
43
+ {
44
+ key: m,
45
+ isStackedMode: !!I,
46
+ item: d,
47
+ rowId: m,
48
+ dataIndex: -1,
49
+ ariaRowIndex: l,
50
+ absoluteRowIndex: y,
51
+ isAltRow: !1,
52
+ isHidden: !1,
53
+ isRowReorderable: !1,
54
+ rowHeight: g,
55
+ rows: void 0,
56
+ leafColumns: o.leafColumns,
57
+ groupLevelCount: b || 0,
58
+ stackedLayoutSettings: C,
59
+ cells: o.cells,
60
+ isSelected: !1,
61
+ isInEdit: !1,
62
+ preparedCells: x.row,
63
+ showDetailToggle: !1,
64
+ isDetailExpanded: !1
65
+ }
66
+ );
67
+ });
68
+ return /* @__PURE__ */ s.createElement(
69
+ "div",
70
+ {
71
+ ref: a,
72
+ className: w,
73
+ style: {
74
+ display: G ? "" : "none"
75
+ }
76
+ },
77
+ /* @__PURE__ */ s.createElement("table", { ref: i, className: E }, S, /* @__PURE__ */ s.createElement("tbody", { className: f(c.tbody({})) }, h()))
78
+ );
79
+ };
80
+ export {
81
+ j as StickyGroupTable
82
+ };
@@ -6,4 +6,4 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  "use client";
9
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),i=require("../../utils/GridContext.js");function u(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const o=u(c),l=e=>{const t=o.useContext(i.GridContext);return o.createElement("colgroup",{ref:r=>{t.columnResizeRef.current.colGroupMain=r,t.columnResizeRef.current.initWidths()}},e.children)};exports.GridColGroup=l;
9
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),i=require("../../utils/GridContext.js");function u(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,n.get?n:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const o=u(c),l=t=>{const r=o.useContext(i.GridContext),e=t.colGroupRef;return o.createElement("colgroup",{ref:n=>{e?typeof e=="function"?e(n):e.current=n:(r.columnResizeRef.current.colGroupMain=n,r.columnResizeRef.current.initWidths())}},t.children)};exports.GridColGroup=l;
@@ -6,20 +6,20 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  "use client";
9
- import * as r from "react";
10
- import { GridContext as n } from "../../utils/GridContext.mjs";
11
- const c = (t) => {
12
- const e = r.useContext(n);
13
- return /* @__PURE__ */ r.createElement(
9
+ import * as n from "react";
10
+ import { GridContext as i } from "../../utils/GridContext.mjs";
11
+ const u = (r) => {
12
+ const o = n.useContext(i), e = r.colGroupRef;
13
+ return /* @__PURE__ */ n.createElement(
14
14
  "colgroup",
15
15
  {
16
- ref: (o) => {
17
- e.columnResizeRef.current.colGroupMain = o, e.columnResizeRef.current.initWidths();
16
+ ref: (t) => {
17
+ e ? typeof e == "function" ? e(t) : e.current = t : (o.columnResizeRef.current.colGroupMain = t, o.columnResizeRef.current.initWidths());
18
18
  }
19
19
  },
20
- t.children
20
+ r.children
21
21
  );
22
22
  };
23
23
  export {
24
- c as GridColGroup
24
+ u as GridColGroup
25
25
  };
@@ -103,6 +103,48 @@ export declare const contextMenuItemsMap: {
103
103
  };
104
104
  }[];
105
105
  };
106
+ pinRow: {
107
+ name: string;
108
+ text: string;
109
+ icon: string;
110
+ svgIcon: import('@progress/kendo-svg-icons').SVGIcon;
111
+ items: {
112
+ name: string;
113
+ text: string;
114
+ icon: string;
115
+ svgIcon: import('@progress/kendo-svg-icons').SVGIcon;
116
+ data: {
117
+ action: string;
118
+ };
119
+ }[];
120
+ };
121
+ pinTop: {
122
+ name: string;
123
+ text: string;
124
+ icon: string;
125
+ svgIcon: import('@progress/kendo-svg-icons').SVGIcon;
126
+ data: {
127
+ action: string;
128
+ };
129
+ };
130
+ pinBottom: {
131
+ name: string;
132
+ text: string;
133
+ icon: string;
134
+ svgIcon: import('@progress/kendo-svg-icons').SVGIcon;
135
+ data: {
136
+ action: string;
137
+ };
138
+ };
139
+ unpin: {
140
+ name: string;
141
+ text: string;
142
+ icon: string;
143
+ svgIcon: import('@progress/kendo-svg-icons').SVGIcon;
144
+ data: {
145
+ action: string;
146
+ };
147
+ };
106
148
  copySelection: {
107
149
  name: string;
108
150
  text: string;
@@ -6,4 +6,4 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  "use client";
9
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("react"),e=require("@progress/kendo-svg-icons"),R=require("@progress/kendo-react-intl"),f=require("@progress/kendo-react-layout"),t=require("./enums.js");function M(n){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const c in n)if(c!=="default"){const s=Object.getOwnPropertyDescriptor(n,c);Object.defineProperty(r,c,s.get?s:{enumerable:!0,get:()=>n[c]})}}return r.default=n,Object.freeze(r)}const m=M(w),I={[t.GridContextMenuItemNames.create]:{name:"create",text:"Add",icon:"plus",svgIcon:e.plusIcon,data:{action:"AddCommand"}},[t.GridContextMenuItemNames.edit]:{name:"edit",text:"Edit",icon:"pencil",svgIcon:e.pencilIcon,data:{action:"EditCommand"}},[t.GridContextMenuItemNames.delete]:{name:"delete",text:"Delete",icon:"trash",svgIcon:e.trashIcon,data:{action:"DeleteCommand"}},[t.GridContextMenuItemNames.select]:{name:"select",text:"Select",icon:"table-body",svgIcon:e.tableBodyIcon,items:[{name:"selectRow",text:"Row",icon:"table-row-groups",svgIcon:e.tableRowGroupsIcon,data:{action:"SelectRowCommand"}},{name:"selectAllRows",text:"All rows",icon:"grid",svgIcon:e.gridIcon,data:{action:"SelectAllRowsCommand"}},{name:"clearSelection",text:"Clear selection",icon:"table-unmerge",svgIcon:e.tableUnmergeIcon,data:{action:"ClearSelectionCommand"}}]},[t.GridContextMenuItemNames.copySelection]:{name:"copySelection",text:"Copy selection",icon:"page-header-section",svgIcon:e.pageHeaderSectionIcon,data:{action:"CopySelectionCommand"},options:"withHeaders"},[t.GridContextMenuItemNames.copySelectionNoHeaders]:{name:"copySelectionNoHeaders",text:"Copy selection (No Headers)",icon:"file-txt",svgIcon:e.fileTxtIcon,data:{action:"CopySelectionCommand"}},[t.GridContextMenuItemNames.paste]:{name:"paste",text:"Paste (use CTRL/⌘ + V)",icon:"clipboard",svgIcon:e.clipboardIcon,data:{action:"PasteCommand"}},[t.GridContextMenuItemNames.reorderRow]:{name:"reorderRow",text:"Reorder row",icon:"caret-alt-expand",svgIcon:e.caretAltExpandIcon,items:[{name:"reorderRowUp",text:"Up",icon:"caret-alt-up",svgIcon:e.caretAltUpIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowDown",text:"Down",icon:"caret-alt-down",svgIcon:e.caretAltDownIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowTop",text:"Top",icon:"caret-alt-to-top",svgIcon:e.caretAltToTopIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowBottom",text:"Bottom",icon:"caret-alt-to-bottom",svgIcon:e.caretAltToBottomIcon,data:{action:"ReorderRowCommand"}}]},[t.GridContextMenuItemNames.exportPDF]:{name:"exportPDF",text:"Export to PDF",icon:"file-pdf",svgIcon:e.filePdfIcon,data:{action:"ExportPDFCommand"}},[t.GridContextMenuItemNames.exportExcel]:{name:"exportExcel",text:"Export to Excel",icon:"file-excel",svgIcon:e.fileExcelIcon,items:[{name:"exportToExcelAll",text:"All",data:{action:"ExportExcelCommand"}},{name:"exportToExcelSelection",text:"Selection",data:{action:"ExportExcelCommand"},options:"selection,withHeaders"},{name:"exportToExcelSelectionNoHeaders",text:"Selection (No Headers)",data:{action:"ExportExcelCommand"},options:"selection"}]},[t.GridContextMenuItemNames.separator]:{name:"separator",separator:!0},[t.GridContextMenuItemNames.sortAsc]:{name:"sortAsc",text:"Sort Ascending",icon:"sort-asc-small",svgIcon:e.sortAscSmallIcon,data:{action:"SortCommand"}},[t.GridContextMenuItemNames.sortDesc]:{name:"sortDesc",text:"Sort Descending",icon:"sort-desc-small",svgIcon:e.sortDescSmallIcon,data:{action:"SortCommand"}}},v=n=>{const{show:r,offset:c,dataItem:s,field:d,items:i,onClose:u,onSelect:x}=n,p=R.useLocalization(),C=m.useCallback(a=>{x.call(void 0,{event:a,dataItem:s,field:d})},[x,s,d]),l=m.useCallback(a=>{const o=a;return o.text&&o.name&&(o.text=p.toLanguageString(`contextMenu.${o.name}`,o.text||"")),o.items&&Array.isArray(o.items)&&(o.items=o.items.map(S=>l(S))),o},[p]),g=m.useMemo(()=>i&&i.map(a=>{const o=typeof a=="string"?I[a]:a;return l(o)}),[i,l]);return m.createElement(f.ContextMenu,{show:r,offset:c,items:g,onClose:u,onSelect:C})};exports.GridContextMenu=v;exports.contextMenuItemsMap=I;
9
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react"),e=require("@progress/kendo-svg-icons"),v=require("@progress/kendo-react-intl"),M=require("@progress/kendo-react-layout"),t=require("./enums.js");function R(n){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const c in n)if(c!=="default"){const r=Object.getOwnPropertyDescriptor(n,c);Object.defineProperty(i,c,r.get?r:{enumerable:!0,get:()=>n[c]})}}return i.default=n,Object.freeze(i)}const s=R(S),x={[t.GridContextMenuItemNames.create]:{name:"create",text:"Add",icon:"plus",svgIcon:e.plusIcon,data:{action:"AddCommand"}},[t.GridContextMenuItemNames.edit]:{name:"edit",text:"Edit",icon:"pencil",svgIcon:e.pencilIcon,data:{action:"EditCommand"}},[t.GridContextMenuItemNames.delete]:{name:"delete",text:"Delete",icon:"trash",svgIcon:e.trashIcon,data:{action:"DeleteCommand"}},[t.GridContextMenuItemNames.select]:{name:"select",text:"Select",icon:"table-body",svgIcon:e.tableBodyIcon,items:[{name:"selectRow",text:"Row",icon:"table-row-groups",svgIcon:e.tableRowGroupsIcon,data:{action:"SelectRowCommand"}},{name:"selectAllRows",text:"All rows",icon:"grid",svgIcon:e.gridIcon,data:{action:"SelectAllRowsCommand"}},{name:"clearSelection",text:"Clear selection",icon:"table-unmerge",svgIcon:e.tableUnmergeIcon,data:{action:"ClearSelectionCommand"}}]},[t.GridContextMenuItemNames.pinRow]:{name:"pinRow",text:"Pin row",icon:"pin-outline",svgIcon:e.pinOutlineIcon,items:[{name:"pinTop",text:"Pin to Top",icon:"pin-outline-top",svgIcon:e.pinOutlineTopIcon,data:{action:"PinTopCommand"}},{name:"pinBottom",text:"Pin to Bottom",icon:"pin-outline-bottom",svgIcon:e.pinOutlineBottomIcon,data:{action:"PinBottomCommand"}},{name:"unpin",text:"Unpin",icon:"unpin-outline",svgIcon:e.unpinOutlineIcon,data:{action:"UnpinCommand"}}]},[t.GridContextMenuItemNames.pinTop]:{name:"pinTop",text:"Pin to Top",icon:"pin-outline-top",svgIcon:e.pinOutlineTopIcon,data:{action:"PinTopCommand"}},[t.GridContextMenuItemNames.pinBottom]:{name:"pinBottom",text:"Pin to Bottom",icon:"pin-outline-bottom",svgIcon:e.pinOutlineBottomIcon,data:{action:"PinBottomCommand"}},[t.GridContextMenuItemNames.unpin]:{name:"unpin",text:"Unpin",icon:"unpin-outline",svgIcon:e.unpinOutlineIcon,data:{action:"UnpinCommand"}},[t.GridContextMenuItemNames.copySelection]:{name:"copySelection",text:"Copy selection",icon:"page-header-section",svgIcon:e.pageHeaderSectionIcon,data:{action:"CopySelectionCommand"},options:"withHeaders"},[t.GridContextMenuItemNames.copySelectionNoHeaders]:{name:"copySelectionNoHeaders",text:"Copy selection (No Headers)",icon:"file-txt",svgIcon:e.fileTxtIcon,data:{action:"CopySelectionCommand"}},[t.GridContextMenuItemNames.paste]:{name:"paste",text:"Paste (use CTRL/⌘ + V)",icon:"clipboard",svgIcon:e.clipboardIcon,data:{action:"PasteCommand"}},[t.GridContextMenuItemNames.reorderRow]:{name:"reorderRow",text:"Reorder row",icon:"caret-alt-expand",svgIcon:e.caretAltExpandIcon,items:[{name:"reorderRowUp",text:"Up",icon:"caret-alt-up",svgIcon:e.caretAltUpIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowDown",text:"Down",icon:"caret-alt-down",svgIcon:e.caretAltDownIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowTop",text:"Top",icon:"caret-alt-to-top",svgIcon:e.caretAltToTopIcon,data:{action:"ReorderRowCommand"}},{name:"reorderRowBottom",text:"Bottom",icon:"caret-alt-to-bottom",svgIcon:e.caretAltToBottomIcon,data:{action:"ReorderRowCommand"}}]},[t.GridContextMenuItemNames.exportPDF]:{name:"exportPDF",text:"Export to PDF",icon:"file-pdf",svgIcon:e.filePdfIcon,data:{action:"ExportPDFCommand"}},[t.GridContextMenuItemNames.exportExcel]:{name:"exportExcel",text:"Export to Excel",icon:"file-excel",svgIcon:e.fileExcelIcon,items:[{name:"exportToExcelAll",text:"All",data:{action:"ExportExcelCommand"}},{name:"exportToExcelSelection",text:"Selection",data:{action:"ExportExcelCommand"},options:"selection,withHeaders"},{name:"exportToExcelSelectionNoHeaders",text:"Selection (No Headers)",data:{action:"ExportExcelCommand"},options:"selection"}]},[t.GridContextMenuItemNames.separator]:{name:"separator",separator:!0},[t.GridContextMenuItemNames.sortAsc]:{name:"sortAsc",text:"Sort Ascending",icon:"sort-asc-small",svgIcon:e.sortAscSmallIcon,data:{action:"SortCommand"}},[t.GridContextMenuItemNames.sortDesc]:{name:"sortDesc",text:"Sort Descending",icon:"sort-desc-small",svgIcon:e.sortDescSmallIcon,data:{action:"SortCommand"}}},f=n=>{const{show:i,offset:c,dataItem:r,field:d,items:m,onClose:I,onSelect:p}=n,u=v.useLocalization(),C=s.useCallback(a=>{p.call(void 0,{event:a,dataItem:r,field:d})},[p,r,d]),l=s.useCallback(a=>{const o=a;return o.text&&o.name&&(o.text=u.toLanguageString(`contextMenu.${o.name}`,o.text||"")),o.items&&Array.isArray(o.items)&&(o.items=o.items.map(w=>l(w))),o},[u]),g=s.useMemo(()=>m&&m.map(a=>{const o=typeof a=="string"?x[a]:a;return l(o)}),[m,l]);return s.createElement(M.ContextMenu,{show:i,offset:c,items:g,onClose:I,onSelect:C})};exports.GridContextMenu=f;exports.contextMenuItemsMap=x;