@progress/kendo-vue-grid 8.1.0-develop.5 → 8.1.0-develop.7

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 (79) hide show
  1. package/Grid.d.ts +32 -17
  2. package/Grid.js +1 -1
  3. package/Grid.mjs +568 -449
  4. package/GridState.d.ts +17 -1
  5. package/GridState.js +1 -1
  6. package/GridState.mjs +84 -71
  7. package/RootGrid.d.ts +29 -0
  8. package/RootGrid.js +1 -1
  9. package/RootGrid.mjs +23 -8
  10. package/cells/GridCell.d.ts +2 -0
  11. package/cells/GridCell.js +1 -1
  12. package/cells/GridCell.mjs +35 -30
  13. package/cells/GridDetailCell.js +1 -1
  14. package/cells/GridDetailCell.mjs +20 -20
  15. package/cells/GridFilterCell.js +1 -1
  16. package/cells/GridFilterCell.mjs +42 -37
  17. package/cells/GridGroupCell.d.ts +2 -0
  18. package/cells/GridGroupCell.js +1 -1
  19. package/cells/GridGroupCell.mjs +69 -55
  20. package/cells/GridHierarchyCell.d.ts +2 -0
  21. package/cells/GridHierarchyCell.js +1 -1
  22. package/cells/GridHierarchyCell.mjs +51 -41
  23. package/cells/GridSelectionCell.d.ts +2 -0
  24. package/cells/GridSelectionCell.js +1 -1
  25. package/cells/GridSelectionCell.mjs +35 -24
  26. package/cells/pincell/GridPinCell.d.ts +72 -0
  27. package/cells/pincell/GridPinCell.js +8 -0
  28. package/cells/pincell/GridPinCell.mjs +111 -0
  29. package/cells/pincell/GridPinDropdownButton.d.ts +27 -0
  30. package/cells/pincell/GridPinDropdownButton.js +8 -0
  31. package/cells/pincell/GridPinDropdownButton.mjs +111 -0
  32. package/common.d.ts +6 -0
  33. package/common.js +1 -1
  34. package/common.mjs +8 -2
  35. package/components/PinnedRowsTable.d.ts +62 -0
  36. package/components/PinnedRowsTable.js +8 -0
  37. package/components/PinnedRowsTable.mjs +135 -0
  38. package/components/StickyGroupTable.d.ts +0 -1
  39. package/components/StickyGroupTable.js +1 -1
  40. package/components/StickyGroupTable.mjs +24 -30
  41. package/constants/main.d.ts +15 -0
  42. package/dist/cdn/js/kendo-vue-grid.js +1 -1
  43. package/drag/ColumnResize.d.ts +2 -0
  44. package/drag/ColumnResize.js +1 -1
  45. package/drag/ColumnResize.mjs +139 -123
  46. package/footer/FooterCell.js +1 -1
  47. package/footer/FooterCell.mjs +22 -20
  48. package/getRowContents.js +1 -1
  49. package/getRowContents.mjs +50 -48
  50. package/header/FilterRow.d.ts +4 -0
  51. package/header/FilterRow.js +1 -1
  52. package/header/FilterRow.mjs +52 -50
  53. package/header/HeaderRow.d.ts +4 -0
  54. package/header/HeaderRow.js +1 -1
  55. package/header/HeaderRow.mjs +114 -105
  56. package/index.js +1 -1
  57. package/index.mjs +15 -14
  58. package/interfaces/ColumnType.d.ts +1 -1
  59. package/interfaces/GridCellProps.d.ts +5 -0
  60. package/interfaces/GridCellsSettings.d.ts +23 -0
  61. package/interfaces/GridColumnProps.d.ts +2 -2
  62. package/interfaces/GridProps.d.ts +102 -31
  63. package/interfaces/GridRowProps.d.ts +13 -4
  64. package/interfaces/GridRowsSettings.d.ts +48 -0
  65. package/interfaces/events.d.ts +19 -2
  66. package/messages/main.d.ts +30 -0
  67. package/messages/main.js +2 -2
  68. package/messages/main.mjs +108 -96
  69. package/package-metadata.js +1 -1
  70. package/package-metadata.mjs +2 -2
  71. package/package.json +13 -12
  72. package/rows/GridRow.d.ts +6 -10
  73. package/rows/GridRow.js +1 -1
  74. package/rows/GridRow.mjs +31 -26
  75. package/utils/main.d.ts +5 -0
  76. package/utils/main.js +1 -1
  77. package/utils/main.mjs +199 -167
  78. package/utils/virtualColumns.js +1 -1
  79. package/utils/virtualColumns.mjs +121 -105
package/common.d.ts CHANGED
@@ -33,6 +33,7 @@ declare const gridProps: {
33
33
  default: () => any;
34
34
  };
35
35
  cells: PropType<import('.').GridCellsSettings>;
36
+ rows: PropType<import('./interfaces/GridRowsSettings').GridRowsSettings>;
36
37
  defaultColumnsState: {
37
38
  type: PropType<import('.').GridColumnState[]>;
38
39
  default: () => any;
@@ -52,6 +53,11 @@ declare const gridProps: {
52
53
  };
53
54
  loader: PropType<string | Object | Function>;
54
55
  lockGroups: PropType<boolean>;
56
+ pinnable: PropType<boolean>;
57
+ defaultPinnedTopRows: PropType<any[]>;
58
+ defaultPinnedBottomRows: PropType<any[]>;
59
+ pinnedTopRows: PropType<any[]>;
60
+ pinnedBottomRows: PropType<any[]>;
55
61
  defaultFilter: PropType<import('@progress/kendo-data-query').CompositeFilterDescriptor>;
56
62
  filter: PropType<import('@progress/kendo-data-query').CompositeFilterDescriptor>;
57
63
  defaultSearch: PropType<import('@progress/kendo-data-query').CompositeFilterDescriptor>;
package/common.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"});require("vue");const t=require("@progress/kendo-vue-common"),n={id:String,autoProcessData:[Boolean,Object],topCacheCount:{type:Number,default:0},collapsedGroups:{type:Array,default:function(){return[]}},uniqueField:String,totalGroupedHeight:Number,allGroupedItems:Object,alternatePerGroup:Boolean,columns:Array,columnsState:{type:Array,default:function(){}},cells:Object,defaultColumnsState:{type:Array,default:function(){}},columnVirtualization:Boolean,dataItems:[Array,Object],sortable:[Boolean,Object],defaultSort:Array,sort:Array,filterable:Boolean,filterOperators:Object,filterCellRender:[String,Function,Object],headerCellRender:[String,Function,Object],showLoader:{type:Boolean,default:void 0},loader:[String,Function,Object],lockGroups:Boolean,defaultFilter:Object,filter:Object,defaultSearch:Object,search:Object,searchFields:Array,highlight:Object,pageable:[Boolean,Object],pageSize:Number,total:Number,fixedScroll:Boolean,skip:Number,defaultSkip:Number,take:Number,defaultTake:Number,expandField:String,expandColumn:Object,selectedField:String,cellRender:[String,Function,Object],rowRender:[String,Function,Object],rowSpannable:[Boolean,Object],resizable:Boolean,reorderable:Boolean,group:Array,defaultGroup:Array,groupable:[Boolean,Object],groupExpand:Array,defaultGroupExpand:Array,detailExpand:Object,defaultDetailExpand:Object,editField:String,rowClass:Function,select:Object,defaultSelect:Object,selectable:[Boolean,Object],scrollable:{type:String,default:"scrollable"},size:{type:String,default:"medium",validator:function(e){return["small","medium"].includes(e)}},pager:[String,Function,Object],rowHeight:Number,detailRowHeight:Number,detail:[String,Function,Object],columnMenu:[Boolean,String,Function,Object],columnMenuAnimate:{type:[Boolean,Object],default:function(){return!0}},columnMenuIcon:t.SvgIcon,dataItemKey:String,navigatable:{type:Boolean,default:!1},onItemchange:Function,onExpandchange:Function,onDatastatechange:Function,onPagechange:Function,onSortchange:Function,onFilterchange:Function,onGroupchange:Function,onSearchchange:Function,onGroupexpandchange:Function,onDetailexpandchange:Function};exports.gridProps=n;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("vue");const t=require("@progress/kendo-vue-common"),n={id:String,autoProcessData:[Boolean,Object],topCacheCount:{type:Number,default:0},collapsedGroups:{type:Array,default:function(){return[]}},uniqueField:String,totalGroupedHeight:Number,allGroupedItems:Object,alternatePerGroup:Boolean,columns:Array,columnsState:{type:Array,default:function(){}},cells:Object,rows:Object,defaultColumnsState:{type:Array,default:function(){}},columnVirtualization:Boolean,dataItems:[Array,Object],sortable:[Boolean,Object],defaultSort:Array,sort:Array,filterable:Boolean,filterOperators:Object,filterCellRender:[String,Function,Object],headerCellRender:[String,Function,Object],showLoader:{type:Boolean,default:void 0},loader:[String,Function,Object],lockGroups:Boolean,pinnable:Boolean,defaultPinnedTopRows:Array,defaultPinnedBottomRows:Array,pinnedTopRows:Array,pinnedBottomRows:Array,defaultFilter:Object,filter:Object,defaultSearch:Object,search:Object,searchFields:Array,highlight:Object,pageable:[Boolean,Object],pageSize:Number,total:Number,fixedScroll:Boolean,skip:Number,defaultSkip:Number,take:Number,defaultTake:Number,expandField:String,expandColumn:Object,selectedField:String,cellRender:[String,Function,Object],rowRender:[String,Function,Object],rowSpannable:[Boolean,Object],resizable:Boolean,reorderable:Boolean,group:Array,defaultGroup:Array,groupable:[Boolean,Object],groupExpand:Array,defaultGroupExpand:Array,detailExpand:Object,defaultDetailExpand:Object,editField:String,rowClass:Function,select:Object,defaultSelect:Object,selectable:[Boolean,Object],scrollable:{type:String,default:"scrollable"},size:{type:String,default:"medium",validator:function(e){return["small","medium"].includes(e)}},pager:[String,Function,Object],rowHeight:Number,detailRowHeight:Number,detail:[String,Function,Object],columnMenu:[Boolean,String,Function,Object],columnMenuAnimate:{type:[Boolean,Object],default:function(){return!0}},columnMenuIcon:t.SvgIcon,dataItemKey:String,navigatable:{type:Boolean,default:!1},onItemchange:Function,onExpandchange:Function,onDatastatechange:Function,onPagechange:Function,onSortchange:Function,onFilterchange:Function,onGroupchange:Function,onSearchchange:Function,onGroupexpandchange:Function,onDetailexpandchange:Function};exports.gridProps=n;
package/common.mjs CHANGED
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import "vue";
9
9
  import { SvgIcon as t } from "@progress/kendo-vue-common";
10
- const o = {
10
+ const a = {
11
11
  id: String,
12
12
  autoProcessData: [Boolean, Object],
13
13
  topCacheCount: {
@@ -31,6 +31,7 @@ const o = {
31
31
  }
32
32
  },
33
33
  cells: Object,
34
+ rows: Object,
34
35
  defaultColumnsState: {
35
36
  type: Array,
36
37
  default: function() {
@@ -51,6 +52,11 @@ const o = {
51
52
  },
52
53
  loader: [String, Function, Object],
53
54
  lockGroups: Boolean,
55
+ pinnable: Boolean,
56
+ defaultPinnedTopRows: Array,
57
+ defaultPinnedBottomRows: Array,
58
+ pinnedTopRows: Array,
59
+ pinnedBottomRows: Array,
54
60
  defaultFilter: Object,
55
61
  filter: Object,
56
62
  defaultSearch: Object,
@@ -125,5 +131,5 @@ const o = {
125
131
  onDetailexpandchange: Function
126
132
  };
127
133
  export {
128
- o as gridProps
134
+ a as gridProps
129
135
  };
@@ -0,0 +1,62 @@
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 { PropType } from 'vue';
9
+ import { DataRowContext } from '../getRowContents';
10
+ import { GridRowProps } from '../interfaces/GridRowProps';
11
+ /**
12
+ * @hidden
13
+ */
14
+ export interface PinnedRowsTableProps {
15
+ size?: string;
16
+ cols?: any[];
17
+ dataRowContext: DataRowContext;
18
+ position: 'top' | 'bottom';
19
+ pinnedItems: any[];
20
+ rowHeight?: number;
21
+ rows?: GridRowProps['rows'];
22
+ selectable?: object;
23
+ }
24
+ /**
25
+ * @hidden
26
+ */
27
+ export declare const PinnedRowsTable: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
28
+ size: PropType<string>;
29
+ cols: PropType<any[]>;
30
+ dataRowContext: PropType<DataRowContext>;
31
+ position: PropType<"bottom" | "top">;
32
+ pinnedItems: PropType<any[]>;
33
+ rowHeight: NumberConstructor;
34
+ rows: PropType<import('../interfaces/GridRowsSettings').GridRowsSettings>;
35
+ selectable: PropType<object>;
36
+ }>, {
37
+ isTop: import('vue').ComputedRef<boolean>;
38
+ pinnedRef: import('vue').ComputedRef<any>;
39
+ handlePinnedScroll: (event: UIEvent) => void;
40
+ pinnedRows: import('vue').ComputedRef<import("vue/jsx-runtime").JSX.Element[]>;
41
+ containerClassName: import('vue').ComputedRef<string>;
42
+ tableClassName: import('vue').ComputedRef<string>;
43
+ handleSelectionRelease: (event: any) => void;
44
+ pinnedSelectable: import('vue').ComputedRef<object>;
45
+ pinnedBodyAttributes: import('vue').ComputedRef<{
46
+ "data-keyboardnavtoppinned": boolean;
47
+ } | {
48
+ "data-keyboardnavbottompinned": boolean;
49
+ }>;
50
+ }, {}, {}, {
51
+ setWidth(width: number): void;
52
+ setScrollLeft(scrollLeft: number): void;
53
+ }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
54
+ size: PropType<string>;
55
+ cols: PropType<any[]>;
56
+ dataRowContext: PropType<DataRowContext>;
57
+ position: PropType<"bottom" | "top">;
58
+ pinnedItems: PropType<any[]>;
59
+ rowHeight: NumberConstructor;
60
+ rows: PropType<import('../interfaces/GridRowsSettings').GridRowsSettings>;
61
+ selectable: PropType<object>;
62
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,8 @@
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 strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),n=require("@progress/kendo-vue-common"),c=require("@progress/kendo-vue-data-tools"),b=require("@progress/kendo-vue-intl"),v=require("../rows/GridRow.js"),L=require("../getRowContents.js"),l=require("../messages/main.js"),T=t.defineComponent({name:"PinnedRowsTable",props:{size:String,cols:Array,dataRowContext:Object,position:String,pinnedItems:Array,rowHeight:Number,rows:Object,selectable:Object},inject:{gridContext:{default:()=>({})},kendoLocalizationService:{default:null}},mounted(){this.tableRef=n.getRef(this,"table"),this.colGroupRefEl=n.getRef(this,"colGroup")},updated(){this.tableRef=n.getRef(this,"table"),this.colGroupRefEl=n.getRef(this,"colGroup")},methods:{setWidth(e){const s=n.getRef(this,"table");s&&(s.style.width=e?e+"px":"")},setScrollLeft(e){const s=n.getRef(this,"pinnedRef");s&&s.scrollLeft!==e&&(s.scrollLeft=e)}},setup(e){const s=t.inject("kendo",{}),d=t.computed(()=>e.position==="top"),R=t.computed(()=>d.value?s.pinnedTopRef:s.pinnedBottomRef),m=t.ref(!1),p=a=>{const o=s.containerElementRef;if(!o||m.value)return;const i=a.currentTarget.scrollLeft;o.scrollLeft!==i&&(o.scrollLeft=i)},g=t.computed(()=>!e.pinnedItems||!e.dataRowContext?[]:e.pinnedItems.map((a,o)=>{const i={dataItem:a,rowType:"data",level:0,expanded:!1,dataIndex:o},r=e.dataRowContext.dataItemKey,u="pinned_"+((r?n.getter(r)(a):void 0)||"ai"+o),f=L.getRowContents(e.dataRowContext,i,u,o);return t.createVNode(v.GridRow,{key:u,rowType:"data",item:i,dataIndex:o,ariaRowIndex:o+1,absoluteRowIndex:o,isAltRow:o%2!==0,isHidden:!1,rowHeight:e.rowHeight,isSelected:f.isSelected,rows:e.rows},{default:()=>[f.row]})})),h=t.computed(()=>n.classNames("k-grid-pinned-container",{"k-pos-bottom":!d.value})),w=t.computed(()=>n.classNames(n.uGrid.table({size:e.size}))),S=a=>{var i,r;const o=(i=e.pinnedItems)==null?void 0:i[a.startRowIndex];o&&((r=s.pinnedSelectionRelease)==null||r.call(s,a,o))},y=t.computed(()=>e.selectable?{...typeof e.selectable=="object"?e.selectable:{},enabled:!0,drag:!1}:e.selectable),N=t.computed(()=>d.value?c.tableKeyboardNavigationTopPinnedAttributes:c.tableKeyboardNavigationBottomPinnedAttributes);return{isTop:d,pinnedRef:R,handlePinnedScroll:p,pinnedRows:g,containerClassName:h,tableClassName:w,handleSelectionRelease:S,pinnedSelectable:y,pinnedBodyAttributes:N}},render(){return t.createVNode("div",{class:this.containerClassName,role:"presentation",style:{display:this.pinnedRows.length?"":"none"}},[t.createVNode("div",{class:"k-grid-pinned-wrap",ref:n.setRef(this,"pinnedRef"),onScroll:this.handlePinnedScroll},[t.createVNode(c.TableSelection,{selectable:this.pinnedSelectable,onRelease:this.handleSelectionRelease},{default:()=>[t.createVNode("table",{ref:n.setRef(this,"table"),class:this.tableClassName,"aria-label":this.isTop?b.provideLocalizationService(this).toLanguageString(l.pinnedTopRowsAriaLabel,l.messages[l.pinnedTopRowsAriaLabel]):b.provideLocalizationService(this).toLanguageString(l.pinnedBottomRowsAriaLabel,l.messages[l.pinnedBottomRowsAriaLabel])},[t.createVNode("colgroup",{ref:n.setRef(this,"colGroup")},[this.$props.cols]),t.createVNode("tbody",t.mergeProps({class:n.classNames(n.uGrid.tbody({}))},this.pinnedBodyAttributes),[this.pinnedRows])])]})])])}});exports.PinnedRowsTable=T;
@@ -0,0 +1,135 @@
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 { defineComponent as N, createVNode as s, mergeProps as k, inject as G, computed as a, ref as P } from "vue";
9
+ import { setRef as c, classNames as f, uGrid as p, getter as j, getRef as l } from "@progress/kendo-vue-common";
10
+ import { TableSelection as x, tableKeyboardNavigationTopPinnedAttributes as K, tableKeyboardNavigationBottomPinnedAttributes as z } from "@progress/kendo-vue-data-tools";
11
+ import { provideLocalizationService as u } from "@progress/kendo-vue-intl";
12
+ import { GridRow as B } from "../rows/GridRow.mjs";
13
+ import { getRowContents as E } from "../getRowContents.mjs";
14
+ import { pinnedTopRowsAriaLabel as R, messages as h, pinnedBottomRowsAriaLabel as w } from "../messages/main.mjs";
15
+ const D = /* @__PURE__ */ N({
16
+ name: "PinnedRowsTable",
17
+ props: {
18
+ size: String,
19
+ cols: Array,
20
+ dataRowContext: Object,
21
+ position: String,
22
+ pinnedItems: Array,
23
+ rowHeight: Number,
24
+ rows: Object,
25
+ selectable: Object
26
+ },
27
+ inject: {
28
+ gridContext: {
29
+ default: () => ({})
30
+ },
31
+ kendoLocalizationService: {
32
+ default: null
33
+ }
34
+ },
35
+ mounted() {
36
+ this.tableRef = l(this, "table"), this.colGroupRefEl = l(this, "colGroup");
37
+ },
38
+ updated() {
39
+ this.tableRef = l(this, "table"), this.colGroupRefEl = l(this, "colGroup");
40
+ },
41
+ methods: {
42
+ setWidth(e) {
43
+ const n = l(this, "table");
44
+ n && (n.style.width = e ? e + "px" : "");
45
+ },
46
+ setScrollLeft(e) {
47
+ const n = l(this, "pinnedRef");
48
+ n && n.scrollLeft !== e && (n.scrollLeft = e);
49
+ }
50
+ },
51
+ setup(e) {
52
+ const n = G("kendo", {}), d = a(() => e.position === "top"), g = a(() => d.value ? n.pinnedTopRef : n.pinnedBottomRef), y = P(!1), S = (o) => {
53
+ const t = n.containerElementRef;
54
+ if (!t || y.value)
55
+ return;
56
+ const i = o.currentTarget.scrollLeft;
57
+ t.scrollLeft !== i && (t.scrollLeft = i);
58
+ }, I = a(() => !e.pinnedItems || !e.dataRowContext ? [] : e.pinnedItems.map((o, t) => {
59
+ const i = {
60
+ dataItem: o,
61
+ rowType: "data",
62
+ level: 0,
63
+ expanded: !1,
64
+ dataIndex: t
65
+ }, r = e.dataRowContext.dataItemKey, b = "pinned_" + ((r ? j(r)(o) : void 0) || "ai" + t), m = E(e.dataRowContext, i, b, t);
66
+ return s(B, {
67
+ key: b,
68
+ rowType: "data",
69
+ item: i,
70
+ dataIndex: t,
71
+ ariaRowIndex: t + 1,
72
+ absoluteRowIndex: t,
73
+ isAltRow: t % 2 !== 0,
74
+ isHidden: !1,
75
+ rowHeight: e.rowHeight,
76
+ isSelected: m.isSelected,
77
+ rows: e.rows
78
+ }, {
79
+ default: () => [m.row]
80
+ });
81
+ })), L = a(() => f("k-grid-pinned-container", {
82
+ "k-pos-bottom": !d.value
83
+ })), v = a(() => f(p.table({
84
+ size: e.size
85
+ }))), T = (o) => {
86
+ var i, r;
87
+ const t = (i = e.pinnedItems) == null ? void 0 : i[o.startRowIndex];
88
+ t && ((r = n.pinnedSelectionRelease) == null || r.call(n, o, t));
89
+ }, C = a(() => e.selectable ? {
90
+ ...typeof e.selectable == "object" ? e.selectable : {},
91
+ enabled: !0,
92
+ drag: !1
93
+ } : e.selectable), A = a(() => d.value ? K : z);
94
+ return {
95
+ isTop: d,
96
+ pinnedRef: g,
97
+ handlePinnedScroll: S,
98
+ pinnedRows: I,
99
+ containerClassName: L,
100
+ tableClassName: v,
101
+ handleSelectionRelease: T,
102
+ pinnedSelectable: C,
103
+ pinnedBodyAttributes: A
104
+ };
105
+ },
106
+ render() {
107
+ return s("div", {
108
+ class: this.containerClassName,
109
+ role: "presentation",
110
+ style: {
111
+ display: this.pinnedRows.length ? "" : "none"
112
+ }
113
+ }, [s("div", {
114
+ class: "k-grid-pinned-wrap",
115
+ ref: c(this, "pinnedRef"),
116
+ onScroll: this.handlePinnedScroll
117
+ }, [s(x, {
118
+ selectable: this.pinnedSelectable,
119
+ onRelease: this.handleSelectionRelease
120
+ }, {
121
+ default: () => [s("table", {
122
+ ref: c(this, "table"),
123
+ class: this.tableClassName,
124
+ "aria-label": this.isTop ? u(this).toLanguageString(R, h[R]) : u(this).toLanguageString(w, h[w])
125
+ }, [s("colgroup", {
126
+ ref: c(this, "colGroup")
127
+ }, [this.$props.cols]), s("tbody", k({
128
+ class: f(p.tbody({}))
129
+ }, this.pinnedBodyAttributes), [this.pinnedRows])])]
130
+ })])]);
131
+ }
132
+ });
133
+ export {
134
+ D as PinnedRowsTable
135
+ };
@@ -64,7 +64,6 @@ export declare const StickyGroupTable: import('vue').DefineComponent<import('vue
64
64
  }, {
65
65
  setWidth(width: number): void;
66
66
  setScrollLeft(scrollLeft: number): void;
67
- renderRows(): any;
68
67
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
69
68
  size: StringConstructor;
70
69
  items: ArrayConstructor;
@@ -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 o=require("vue"),e=require("@progress/kendo-vue-common"),d=require("../rows/GridRow.js"),c=require("../getRowContents.js"),u=o.defineComponent({name:"StickyGroupTable",props:{size:String,items:Array,cols:Array,dataRowContext:{type:Object,required:!0},position:{type:String,required:!0},isStackedMode:Boolean,groupLevelCount:Number,rowHeight:Number},inject:{sticky:{default:null}},mounted(){this.tableRef=e.getRef(this,"table"),this.colGroupRef=e.getRef(this,"colGroup")},updated(){this.tableRef=e.getRef(this,"table"),this.colGroupRef=e.getRef(this,"colGroup")},computed:{isTop(){return this.position==="top"},stickyItems(){return this.isTop?this.sticky.headerItems||[]:this.sticky.footerItems||[]},hasContent(){return this.stickyItems.length>0},containerClassName(){return e.classNames(e.uGrid.stickyContainer({bottom:!this.isTop}))},tableClassName(){return e.classNames(e.uGrid.table({size:this.size}))}},methods:{setWidth(s){const t=e.getRef(this,"tableRef");t&&(t.style.width=s?s+"px":"")},setScrollLeft(s){const t=this.$el;t&&t.scrollLeft!==s&&(t.scrollLeft=s)},renderRows(){return this.stickyItems.map((s,t)=>{const{item:r,flatIndex:i}=s,a=this.dataRowContext.dataItemKey&&e.getter(this.dataRowContext.dataItemKey)(r.dataItem)||"ai"+i,n=c.getRowContents(this.dataRowContext,r,a,t),l=this.isTop?"groupHeader":"groupFooter";return o.createVNode(d.GridRow,{key:a,rowType:l,item:r,dataIndex:-1,ariaRowIndex:t,absoluteRowIndex:i,isAltRow:!1,isHidden:!1,rowHeight:this.$props.rowHeight,isSelected:!1,isInEdit:!1},{default:()=>[n.row]})})}},render(){return o.createVNode("div",{class:this.containerClassName,style:{display:this.hasContent?"":"none"}},[o.createVNode("table",{ref:e.setRef(this,"table"),class:this.tableClassName},[o.createVNode("colgroup",{ref:e.setRef(this,"colGroup")},[this.$props.cols]),o.createVNode("tbody",{class:e.classNames(e.uGrid.tbody({}))},[this.renderRows()])])])}});exports.StickyGroupTable=u;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),e=require("@progress/kendo-vue-common"),c=require("../rows/GridRow.js"),d=require("../getRowContents.js"),u=o.defineComponent({name:"StickyGroupTable",props:{size:String,items:Array,cols:Array,dataRowContext:{type:Object,required:!0},position:{type:String,required:!0},isStackedMode:Boolean,groupLevelCount:Number,rowHeight:Number},inject:{sticky:{default:null}},mounted(){this.tableRef=e.getRef(this,"table"),this.colGroupRef=e.getRef(this,"colGroup")},updated(){this.tableRef=e.getRef(this,"table"),this.colGroupRef=e.getRef(this,"colGroup")},computed:{isTop(){return this.position==="top"},stickyItems(){return this.isTop?this.sticky.headerItems||[]:this.sticky.footerItems||[]},hasContent(){return this.stickyItems.length>0},containerClassName(){return e.classNames(e.uGrid.stickyContainer({bottom:!this.isTop}))},tableClassName(){return e.classNames(e.uGrid.table({size:this.size}))}},methods:{setWidth(s){const t=e.getRef(this,"tableRef");t&&(t.style.width=s?s+"px":"")},setScrollLeft(s){const t=this.$el;t&&t.scrollLeft!==s&&(t.scrollLeft=s)}},render(){return o.createVNode("div",{class:this.containerClassName},[o.createVNode("table",{ref:e.setRef(this,"table"),class:this.tableClassName},[o.createVNode("colgroup",{ref:e.setRef(this,"colGroup")},[this.$props.cols]),o.createVNode("tbody",{class:e.classNames(e.uGrid.tbody({}))},[this.stickyItems.map((s,t)=>{const{item:i,flatIndex:r}=s,a=this.dataRowContext.dataItemKey&&e.getter(this.dataRowContext.dataItemKey)(i.dataItem)||"ai"+r,n=d.getRowContents(this.dataRowContext,i,a,t),l=this.isTop?"groupHeader":"groupFooter";return o.createVNode(c.GridRow,{key:a,rowType:l,item:i,dataIndex:-1,ariaRowIndex:t,absoluteRowIndex:r,isAltRow:!1,isHidden:!1,rowHeight:this.$props.rowHeight,isSelected:!1,isInEdit:!1},{default:()=>[n.row]})})])])])}});exports.StickyGroupTable=u;
@@ -5,11 +5,11 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { defineComponent as p, createVNode as s } from "vue";
8
+ import { defineComponent as h, createVNode as s } from "vue";
9
9
  import { setRef as d, classNames as r, uGrid as a, getter as m, getRef as o } from "@progress/kendo-vue-common";
10
10
  import { GridRow as u } from "../rows/GridRow.mjs";
11
11
  import { getRowContents as f } from "../getRowContents.mjs";
12
- const g = /* @__PURE__ */ p({
12
+ const g = /* @__PURE__ */ h({
13
13
  name: "StickyGroupTable",
14
14
  props: {
15
15
  size: String,
@@ -67,37 +67,11 @@ const g = /* @__PURE__ */ p({
67
67
  setScrollLeft(e) {
68
68
  const t = this.$el;
69
69
  t && t.scrollLeft !== e && (t.scrollLeft = e);
70
- },
71
- renderRows() {
72
- return this.stickyItems.map((e, t) => {
73
- const {
74
- item: i,
75
- flatIndex: n
76
- } = e, l = this.dataRowContext.dataItemKey && m(this.dataRowContext.dataItemKey)(i.dataItem) || "ai" + n, c = f(this.dataRowContext, i, l, t), h = this.isTop ? "groupHeader" : "groupFooter";
77
- return s(u, {
78
- key: l,
79
- rowType: h,
80
- item: i,
81
- dataIndex: -1,
82
- ariaRowIndex: t,
83
- absoluteRowIndex: n,
84
- isAltRow: !1,
85
- isHidden: !1,
86
- rowHeight: this.$props.rowHeight,
87
- isSelected: !1,
88
- isInEdit: !1
89
- }, {
90
- default: () => [c.row]
91
- });
92
- });
93
70
  }
94
71
  },
95
72
  render() {
96
73
  return s("div", {
97
- class: this.containerClassName,
98
- style: {
99
- display: this.hasContent ? "" : "none"
100
- }
74
+ class: this.containerClassName
101
75
  }, [s("table", {
102
76
  ref: d(this, "table"),
103
77
  class: this.tableClassName
@@ -105,7 +79,27 @@ const g = /* @__PURE__ */ p({
105
79
  ref: d(this, "colGroup")
106
80
  }, [this.$props.cols]), s("tbody", {
107
81
  class: r(a.tbody({}))
108
- }, [this.renderRows()])])]);
82
+ }, [this.stickyItems.map((e, t) => {
83
+ const {
84
+ item: i,
85
+ flatIndex: n
86
+ } = e, l = this.dataRowContext.dataItemKey && m(this.dataRowContext.dataItemKey)(i.dataItem) || "ai" + n, c = f(this.dataRowContext, i, l, t), p = this.isTop ? "groupHeader" : "groupFooter";
87
+ return s(u, {
88
+ key: l,
89
+ rowType: p,
90
+ item: i,
91
+ dataIndex: -1,
92
+ ariaRowIndex: t,
93
+ absoluteRowIndex: n,
94
+ isAltRow: !1,
95
+ isHidden: !1,
96
+ rowHeight: this.$props.rowHeight,
97
+ isSelected: !1,
98
+ isInEdit: !1
99
+ }, {
100
+ default: () => [c.row]
101
+ });
102
+ })])])]);
109
103
  }
110
104
  });
111
105
  export {
@@ -0,0 +1,15 @@
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
+ /** The attribute required by the Grid selection on Grid `tr` elements. */
9
+ export { TABLE_ROW_INDEX_ATTRIBUTE as GRID_ROW_INDEX_ATTRIBUTE } from '@progress/kendo-vue-data-tools';
10
+ /** The attribute required by the Grid selection on Grid `td` elements. */
11
+ export { TABLE_COL_INDEX_ATTRIBUTE as GRID_COL_INDEX_ATTRIBUTE } from '@progress/kendo-vue-data-tools';
12
+ /** Attribute which disable selection start from this element. */
13
+ export { TABLE_PREVENT_SELECTION_ELEMENT as GRID_PREVENT_SELECTION_ELEMENT } from '@progress/kendo-vue-data-tools';
14
+ /** @hidden */
15
+ export declare const SAFARI_REGEX: RegExp;