@progress/kendo-vue-grid 8.1.0-develop.2 → 8.1.0-develop.3

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 (61) hide show
  1. package/Grid.d.ts +56 -5
  2. package/Grid.js +1 -1
  3. package/Grid.mjs +667 -649
  4. package/GridNav.d.ts +24 -4
  5. package/GridNav.js +1 -1
  6. package/GridNav.mjs +62 -22
  7. package/GridState.d.ts +4 -0
  8. package/RootGrid.d.ts +32 -11
  9. package/RootGrid.js +1 -1
  10. package/RootGrid.mjs +96 -57
  11. package/cells/GridCell.js +1 -1
  12. package/cells/GridCell.mjs +35 -26
  13. package/cells/GridGroupCell.d.ts +10 -0
  14. package/cells/GridGroupCell.js +1 -1
  15. package/cells/GridGroupCell.mjs +95 -53
  16. package/columnMenu/GridColumnMenuCheckboxFilter.d.ts +1 -1
  17. package/columnMenu/GridColumnMenuCheckboxFilter.js +1 -1
  18. package/columnMenu/GridColumnMenuCheckboxFilter.mjs +11 -11
  19. package/common.d.ts +2 -0
  20. package/common.js +1 -1
  21. package/common.mjs +2 -0
  22. package/components/StickyGroupTable.d.ts +85 -0
  23. package/components/StickyGroupTable.js +8 -0
  24. package/components/StickyGroupTable.mjs +113 -0
  25. package/dist/cdn/js/kendo-vue-grid.js +1 -1
  26. package/drag/ColumnResize.d.ts +10 -1
  27. package/drag/ColumnResize.js +1 -1
  28. package/drag/ColumnResize.mjs +129 -104
  29. package/drag/GroupingIndicator.d.ts +1 -0
  30. package/drag/GroupingIndicator.js +1 -1
  31. package/drag/GroupingIndicator.mjs +28 -18
  32. package/footer/FooterCell.d.ts +43 -0
  33. package/footer/FooterCell.js +8 -0
  34. package/footer/FooterCell.mjs +68 -0
  35. package/footer/FooterRow.d.ts +5 -6
  36. package/footer/FooterRow.js +1 -1
  37. package/footer/FooterRow.mjs +16 -39
  38. package/getRowContents.d.ts +85 -0
  39. package/getRowContents.js +8 -0
  40. package/getRowContents.mjs +172 -0
  41. package/header/GridHeaderGroupSpacerCell.d.ts +11 -0
  42. package/hooks/useStickyGroups.d.ts +72 -0
  43. package/hooks/useStickyGroups.js +8 -0
  44. package/hooks/useStickyGroups.mjs +350 -0
  45. package/index.d.mts +1 -0
  46. package/index.d.ts +1 -0
  47. package/index.js +1 -1
  48. package/index.mjs +74 -73
  49. package/interfaces/GridCellProps.d.ts +4 -0
  50. package/interfaces/GridCellsSettings.d.ts +320 -0
  51. package/interfaces/GridColumnProps.d.ts +11 -1
  52. package/interfaces/GridGroupableSettings.d.ts +23 -0
  53. package/interfaces/GridProps.d.ts +33 -0
  54. package/messages/main.d.ts +5 -0
  55. package/messages/main.js +2 -2
  56. package/messages/main.mjs +15 -13
  57. package/package-metadata.js +1 -1
  58. package/package-metadata.mjs +2 -2
  59. package/package.json +12 -12
  60. package/utils/main.js +1 -1
  61. package/utils/main.mjs +80 -76
@@ -23,6 +23,14 @@ export declare class ColumnResize {
23
23
  * The footer `colgroup` of the Grid (if any).
24
24
  */
25
25
  colGroupFooter: any | null;
26
+ /**
27
+ * The sticky header `colgroup` of the Grid (if any).
28
+ */
29
+ colGroupStickyHeader: any;
30
+ /**
31
+ * The sticky footer `colgroup` of the Grid (if any).
32
+ */
33
+ colGroupStickyFooter: any;
26
34
  columns: ExtendedColumnProps[];
27
35
  /**
28
36
  * The `columnsState` of the Grid (if any).
@@ -36,9 +44,10 @@ export declare class ColumnResize {
36
44
  private isRtl;
37
45
  constructor(triggerResize: (index: number, oldWidth: number, newWidth: number, originalEvent: any, end: boolean, columnsState: GridColumnState[], targetId?: string) => void);
38
46
  setIsRtl: (isRtl: boolean) => void;
47
+ private applyWidthConstraints;
39
48
  initWidths: () => void;
40
49
  dragHandler: (event: any, column: ExtendedColumnProps, dragCue: HTMLSpanElement, end: boolean) => void;
41
- dblClickHandler: (event: any, columnIds: string[]) => void;
50
+ dblClickHandler: (event: MouseEvent | null, columnIds: string[]) => void;
42
51
  private fixateInitialWidths;
43
52
  private setWidths;
44
53
  private updateColElements;
@@ -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("../utils/main.js"),G=1,w=20;class x{constructor(f){this.columns=[],this.columnsState=[],this.resizable=!1,this.isRtl=!1,this.setIsRtl=c=>{this.isRtl=c},this.initWidths=()=>{var d;const c=((d=this.colGroupMain)==null?void 0:d.children)||[],n=g.getFlatColumnsState(this.columnsState),l=this.columns.filter(h=>{var r;return!((r=h.children)!=null&&r.length)});for(let h=0;h<c.length;h++){const r=c[h];let t="";const e=n.find(o=>o.id===l[h].id);e&&(t=e.width||""),r.width=t,this.colGroupHeader&&(this.colGroupHeader.children[h].width=t),this.colGroupFooter&&(this.colGroupFooter.children[h].width=t)}},this.dragHandler=(c,n,l,d)=>{const h=c.originalEvent;d||(h.preventDefault(),h.stopPropagation(),h.stopImmediatePropagation());const r=l.closest("th");if(!r)return;const t=r.clientWidth;let e=t;if(this.isRtl?e+=l.getBoundingClientRect().right-l.offsetWidth/2-c.clientX:e+=c.clientX-l.getBoundingClientRect().left-l.offsetWidth/2,!d&&Math.abs(e-t)<1)return;this.fixateInitialWidths(r.parentElement.clientWidth),this.setWidths(n,Math.floor(e)/t);const o=this.columns.filter(i=>!i.children.length).findIndex(i=>i.id===n.id);this.onResize(o,t,e,h,d,this.columnsState,n.id)},this.dblClickHandler=(c,n)=>{const l=this.columns.filter(s=>n.indexOf(s.id)>-1),d=g.getFlatColumnsState(this.columnsState);if(!this.colGroupMain||!l.length)return;const h={},r=l;for(;r.length>0;){const s=r.pop();if(!s)break;s.children.length?r.push(...s.children):h[s.id]=s}const t=this.columns.filter(s=>!s.children.length),e=[];t.forEach((s,a)=>{h[s.id]&&e.push(a)});const o=[this.colGroupMain.parentElement],i=[this.colGroupMain];this.colGroupHeader&&(o.push(this.colGroupHeader.parentElement),i.push(this.colGroupHeader)),this.colGroupFooter&&(o.push(this.colGroupFooter.parentElement),i.push(this.colGroupFooter)),o.forEach(s=>s.classList.add("k-autofitting"));const u=[];i.forEach(s=>{e.forEach(a=>{s.children[a]&&(s.children[a].width="",u[a]=Math.max(u[a]||0,s.children[a].offsetWidth+G))})}),i.forEach(s=>{e.forEach(a=>{if(s.children[a]){s.children[a].width=u[a]+"px";const p=d.find(m=>m.id===t[a].id);p&&(p.width=u[a])}})}),o.forEach(s=>s.classList.remove("k-autofitting")),this.onResize(e[0],0,0,c,!0,this.columnsState,n[0])},this.updateColElements=c=>{var d,h,r;const n=this.columns.filter(t=>!t.hidden&&!t.children.length);let l=1e-10;for(let t=0;t<c.length;t++){const e=c[t],o=n.findIndex(p=>p.id===e.id),i=parseFloat((e.width||0).toString()),u=Math.floor(i);l+=i-u;const s=u+Math.floor(l);l-=Math.floor(l);const a=n.find(p=>p.id===e.id);if(!a)return;if((d=this.colGroupMain)!=null&&d.children[o]){const p=parseInt(this.colGroupMain.children[o].width,10);this.colGroupMain.children[o].width=s+"px",this.updateNextLockedCol(this.colGroupMain.parentElement,a,p-s)}if((h=this.colGroupHeader)!=null&&h.children[o]){const p=parseInt(this.colGroupHeader.children[o].width,10);this.colGroupHeader.children[o].width=s+"px",this.updateNextLockedCol(this.colGroupHeader.parentElement,a,p-s)}if((r=this.colGroupFooter)!=null&&r.children[o]){const p=parseInt(this.colGroupFooter.children[o].width,10);this.colGroupFooter.children[o].width=s+"px",this.updateNextLockedCol(this.colGroupFooter.parentElement,a,p-s)}}},this.onResize=f}fixateInitialWidths(f){var r;let c=0;const n=((r=this.colGroupMain)==null?void 0:r.children)||[];for(let t=0;t<n.length;t++)n[t].width?f-=n[t].clientWidth:c++;if(c===0)return;const l=Math.floor(f/c),d=g.getFlatColumnsState(this.columnsState),h=this.columns.filter(t=>!t.children.length);for(let t=0;t<n.length;t++){const e=n[t],o=e.width?e.clientWidth:l;e.width=o;const i=d.find(u=>u.id===h[t].id);i&&(i.width=o.toString()),this.colGroupHeader&&(this.colGroupHeader.children[t].width=o),this.colGroupFooter&&(this.colGroupFooter.children[t].width=o)}}setWidths(f,c){const n=g.getFlatColumnsState(this.columnsState),l=this.columns.findIndex(t=>t.id===f.id),d=[];let h=f.children.filter(t=>!t.hidden).length;for(let t=l+1;t<this.columns.length&&!(h<=0);t++){const e=this.columns[t];e.children.length?h+=e.children.filter(o=>!o.hidden).length:d.push(e),h--}d.length===0&&d.push(f);const r=[];d.forEach(t=>{const e=n.find(o=>o.id===t.id);if(e){let o=e.width?parseFloat(e.width.toString())*c:0;const i=t.minResizableWidth===void 0?10:t.minResizableWidth;o<i&&(o=i),e.width=o,r.push(e)}}),this.updateColElements(r)}updateNextLockedCol(f,c,n){const l=c.index,d=this.colGroupMain.parentElement.closest(".k-grid"),h=d==null?void 0:d.clientWidth,r=this.columns.filter(t=>t.locked).map(t=>parseInt(t.width+"",10)).reduce((t,e)=>t+e,0);!c.locked||h<=r+w||this.columns.forEach(t=>{if(t!=null&&t.locked&&n){const e=f==null?void 0:f.querySelectorAll('[aria-colindex="'+t.ariaColumnIndex+'"]');e==null||e.forEach(o=>{const i=o.style;this.isRtl?(t.index>l&&(i!=null&&i.right)&&(i.right=parseInt(i.right,10)-n+"px"),t.index<l&&(i!=null&&i.left)&&(i.left=parseInt(i.left,10)-n+"px")):(t.index>l&&(i!=null&&i.left)&&(i.left=parseInt(i.left,10)-n+"px"),t.index<l&&(i!=null&&i.right)&&(i.right=parseInt(i.right,10)-n+"px"))})}})}}exports.ColumnResize=x;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../utils/main.js"),w=1,F=20;class S{constructor(p){this.columns=[],this.columnsState=[],this.resizable=!1,this.isRtl=!1,this.setIsRtl=h=>{this.isRtl=h},this.initWidths=()=>{var d;const h=((d=this.colGroupMain)==null?void 0:d.children)||[],n=k.getFlatColumnsState(this.columnsState),r=this.columns.filter(o=>{var l;return!((l=o.children)!=null&&l.length)});for(let o=0;o<h.length;o++){const l=h[o],t=r[o];let e="";const s=n.find(i=>i.id===r[o].id);s&&(e=this.applyWidthConstraints(s,t)),l.width=e,this.colGroupHeader&&(this.colGroupHeader.children[o].width=e),this.colGroupFooter&&(this.colGroupFooter.children[o].width=e),this.colGroupStickyHeader&&(this.colGroupStickyHeader.children[o].width=e),this.colGroupStickyFooter&&(this.colGroupStickyFooter.children[o].width=e)}},this.dragHandler=(h,n,r,d)=>{const o=h.originalEvent;d||(o.preventDefault(),o.stopPropagation(),o.stopImmediatePropagation());const l=r.closest("th");if(!l)return;const t=l.clientWidth;let e=t;if(this.isRtl?e+=r.getBoundingClientRect().right-r.offsetWidth/2-h.clientX:e+=h.clientX-r.getBoundingClientRect().left-r.offsetWidth/2,!d&&Math.abs(e-t)<1)return;this.fixateInitialWidths(l.parentElement.clientWidth),this.setWidths(n,Math.floor(e)/t);const s=this.columns.filter(i=>!i.children.length).findIndex(i=>i.id===n.id);this.onResize(s,t,e,o,d,this.columnsState,n.id)},this.dblClickHandler=(h,n)=>{const r=this.columns.filter(c=>n.indexOf(c.id)>-1),d=k.getFlatColumnsState(this.columnsState);if(!this.colGroupMain||!r.length)return;const o={},l=r;for(;l.length>0;){const c=l.pop();if(!c)break;c.children.length?l.push(...c.children):o[c.id]=c}const t=this.columns.filter(c=>!c.children.length),e=[];t.forEach((c,f)=>{o[c.id]&&e.push(f)});const s=[this.colGroupMain.parentElement],i=[this.colGroupMain];this.colGroupHeader&&(s.push(this.colGroupHeader.parentElement),i.push(this.colGroupHeader)),this.colGroupFooter&&(s.push(this.colGroupFooter.parentElement),i.push(this.colGroupFooter)),this.colGroupStickyHeader&&(s.push(this.colGroupStickyHeader.parentElement),i.push(this.colGroupStickyHeader)),this.colGroupStickyFooter&&(s.push(this.colGroupStickyFooter.parentElement),i.push(this.colGroupStickyFooter)),s.forEach(c=>c.classList.add("k-autofitting"));const a=[];i.forEach(c=>{e.forEach(f=>{c.children[f]&&(c.children[f].width="",a[f]=Math.max(a[f]||0,c.children[f].offsetWidth+w))})}),i.forEach(c=>{e.forEach(f=>{if(c.children[f]){c.children[f].width=a[f]+"px";const u=d.find(g=>g.id===t[f].id);u&&(u.width=a[f])}})}),s.forEach(c=>c.classList.remove("k-autofitting")),this.onResize(e[0],0,0,h,!0,this.columnsState,n[0])},this.updateColElements=h=>{var d,o,l,t,e;const n=this.columns.filter(s=>!s.hidden&&!s.children.length);let r=1e-10;for(let s=0;s<h.length;s++){const i=h[s],a=n.findIndex(G=>G.id===i.id),c=parseFloat((i.width||0).toString()),f=Math.floor(c);r+=c-f;const u=f+Math.floor(r);r-=Math.floor(r);const g=n.find(G=>G.id===i.id);if(!g)return;if((d=this.colGroupMain)!=null&&d.children[a]){const G=parseInt(this.colGroupMain.children[a].width,10);this.colGroupMain.children[a].width=u+"px",this.updateNextLockedCol(this.colGroupMain.parentElement,g,G-u)}if((o=this.colGroupHeader)!=null&&o.children[a]){const G=parseInt(this.colGroupHeader.children[a].width,10);this.colGroupHeader.children[a].width=u+"px",this.updateNextLockedCol(this.colGroupHeader.parentElement,g,G-u)}if((l=this.colGroupFooter)!=null&&l.children[a]){const G=parseInt(this.colGroupFooter.children[a].width,10);this.colGroupFooter.children[a].width=u+"px",this.updateNextLockedCol(this.colGroupFooter.parentElement,g,G-u)}if((t=this.colGroupStickyHeader)!=null&&t.children[a]){const G=parseInt(this.colGroupStickyHeader.children[a].width,10);this.colGroupStickyHeader.children[a].width=u+"px",this.updateNextLockedCol(this.colGroupStickyHeader.parentElement,g,G-u)}if((e=this.colGroupStickyFooter)!=null&&e.children[a]){const G=parseInt(this.colGroupStickyFooter.children[a].width,10);this.colGroupStickyFooter.children[a].width=u+"px",this.updateNextLockedCol(this.colGroupStickyFooter.parentElement,g,G-u)}}},this.onResize=p}applyWidthConstraints(p,h,n=1){var i;if(!p.width)return p.width||"";const r=p.width.toString();if(r.includes("%")){const c=parseFloat(r)*n,f=Math.max(0,Math.min(100,c));return p.width=f+"%",p.width}let o=parseFloat(r)*n;const l=(i=h.minResizableWidth)!=null?i:10,t=h==null?void 0:h.minWidth,e=t!==void 0?Math.max(l,t):l,s=h==null?void 0:h.maxWidth;return o<e&&(o=e),s!==void 0&&o>s&&(o=s),p.width=o,o}fixateInitialWidths(p){var l;let h=0;const n=((l=this.colGroupMain)==null?void 0:l.children)||[];for(let t=0;t<n.length;t++)n[t].width?p-=n[t].clientWidth:h++;if(h===0)return;const r=Math.floor(p/h),d=k.getFlatColumnsState(this.columnsState),o=this.columns.filter(t=>!t.children.length);for(let t=0;t<n.length;t++){const e=n[t],s=e.width?e.clientWidth:r;e.width=s;const i=d.find(a=>a.id===o[t].id);i&&(i.width=s.toString()),this.colGroupHeader&&(this.colGroupHeader.children[t].width=s),this.colGroupFooter&&(this.colGroupFooter.children[t].width=s),this.colGroupStickyHeader&&(this.colGroupStickyHeader.children[t].width=s),this.colGroupStickyFooter&&(this.colGroupStickyFooter.children[t].width=s)}}setWidths(p,h){const n=k.getFlatColumnsState(this.columnsState),r=this.columns.findIndex(t=>t.id===p.id),d=[];let o=p.children.filter(t=>!t.hidden).length;for(let t=r+1;t<this.columns.length&&!(o<=0);t++){const e=this.columns[t];e.children.length?o+=e.children.filter(s=>!s.hidden).length:d.push(e),o--}d.length===0&&d.push(p);const l=[];d.forEach(t=>{const e=n.find(s=>s.id===t.id);e&&(this.applyWidthConstraints(e,t,h),l.push(e))}),this.updateColElements(l)}updateNextLockedCol(p,h,n){const r=h.index,d=this.colGroupMain.parentElement.closest(".k-grid"),o=d==null?void 0:d.clientWidth,l=this.columns.filter(t=>t.locked).map(t=>parseInt(t.width+"",10)).reduce((t,e)=>t+e,0);!h.locked||o<=l+F||this.columns.forEach(t=>{if(t!=null&&t.locked&&n){const e=p==null?void 0:p.querySelectorAll('[aria-colindex="'+t.ariaColumnIndex+'"]');e==null||e.forEach(s=>{const i=s.style;this.isRtl?(t.index>r&&(i!=null&&i.right)&&(i.right=parseInt(i.right,10)-n+"px"),t.index<r&&(i!=null&&i.left)&&(i.left=parseInt(i.left,10)-n+"px")):(t.index>r&&(i!=null&&i.left)&&(i.left=parseInt(i.left,10)-n+"px"),t.index<r&&(i!=null&&i.right)&&(i.right=parseInt(i.right,10)-n+"px"))})}})}}exports.ColumnResize=S;
@@ -5,145 +5,170 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { getFlatColumnsState as g } from "../utils/main.mjs";
9
- const G = 1, w = 20;
10
- class F {
11
- constructor(f) {
12
- this.columns = [], this.columnsState = [], this.resizable = !1, this.isRtl = !1, this.setIsRtl = (c) => {
13
- this.isRtl = c;
8
+ import { getFlatColumnsState as w } from "../utils/main.mjs";
9
+ const g = 1, F = 20;
10
+ class m {
11
+ constructor(p) {
12
+ this.columns = [], this.columnsState = [], this.resizable = !1, this.isRtl = !1, this.setIsRtl = (h) => {
13
+ this.isRtl = h;
14
14
  }, this.initWidths = () => {
15
15
  var d;
16
- const c = ((d = this.colGroupMain) == null ? void 0 : d.children) || [], n = g(this.columnsState), l = this.columns.filter((h) => {
17
- var r;
18
- return !((r = h.children) != null && r.length);
16
+ const h = ((d = this.colGroupMain) == null ? void 0 : d.children) || [], n = w(this.columnsState), r = this.columns.filter((o) => {
17
+ var l;
18
+ return !((l = o.children) != null && l.length);
19
19
  });
20
- for (let h = 0; h < c.length; h++) {
21
- const r = c[h];
22
- let t = "";
23
- const e = n.find((o) => o.id === l[h].id);
24
- e && (t = e.width || ""), r.width = t, this.colGroupHeader && (this.colGroupHeader.children[h].width = t), this.colGroupFooter && (this.colGroupFooter.children[h].width = t);
20
+ for (let o = 0; o < h.length; o++) {
21
+ const l = h[o], t = r[o];
22
+ let e = "";
23
+ const s = n.find((i) => i.id === r[o].id);
24
+ s && (e = this.applyWidthConstraints(s, t)), l.width = e, this.colGroupHeader && (this.colGroupHeader.children[o].width = e), this.colGroupFooter && (this.colGroupFooter.children[o].width = e), this.colGroupStickyHeader && (this.colGroupStickyHeader.children[o].width = e), this.colGroupStickyFooter && (this.colGroupStickyFooter.children[o].width = e);
25
25
  }
26
- }, this.dragHandler = (c, n, l, d) => {
27
- const h = c.originalEvent;
28
- d || (h.preventDefault(), h.stopPropagation(), h.stopImmediatePropagation());
29
- const r = l.closest("th");
30
- if (!r)
26
+ }, this.dragHandler = (h, n, r, d) => {
27
+ const o = h.originalEvent;
28
+ d || (o.preventDefault(), o.stopPropagation(), o.stopImmediatePropagation());
29
+ const l = r.closest("th");
30
+ if (!l)
31
31
  return;
32
- const t = r.clientWidth;
32
+ const t = l.clientWidth;
33
33
  let e = t;
34
- if (this.isRtl ? e += l.getBoundingClientRect().right - l.offsetWidth / 2 - c.clientX : e += c.clientX - l.getBoundingClientRect().left - l.offsetWidth / 2, !d && Math.abs(e - t) < 1)
34
+ if (this.isRtl ? e += r.getBoundingClientRect().right - r.offsetWidth / 2 - h.clientX : e += h.clientX - r.getBoundingClientRect().left - r.offsetWidth / 2, !d && Math.abs(e - t) < 1)
35
35
  return;
36
- this.fixateInitialWidths(r.parentElement.clientWidth), this.setWidths(n, Math.floor(e) / t);
37
- const o = this.columns.filter((i) => !i.children.length).findIndex((i) => i.id === n.id);
38
- this.onResize(o, t, e, h, d, this.columnsState, n.id);
39
- }, this.dblClickHandler = (c, n) => {
40
- const l = this.columns.filter((s) => n.indexOf(s.id) > -1), d = g(this.columnsState);
41
- if (!this.colGroupMain || !l.length)
36
+ this.fixateInitialWidths(l.parentElement.clientWidth), this.setWidths(n, Math.floor(e) / t);
37
+ const s = this.columns.filter((i) => !i.children.length).findIndex((i) => i.id === n.id);
38
+ this.onResize(s, t, e, o, d, this.columnsState, n.id);
39
+ }, this.dblClickHandler = (h, n) => {
40
+ const r = this.columns.filter((c) => n.indexOf(c.id) > -1), d = w(this.columnsState);
41
+ if (!this.colGroupMain || !r.length)
42
42
  return;
43
- const h = {}, r = l;
44
- for (; r.length > 0; ) {
45
- const s = r.pop();
46
- if (!s)
43
+ const o = {}, l = r;
44
+ for (; l.length > 0; ) {
45
+ const c = l.pop();
46
+ if (!c)
47
47
  break;
48
- s.children.length ? r.push(...s.children) : h[s.id] = s;
48
+ c.children.length ? l.push(...c.children) : o[c.id] = c;
49
49
  }
50
- const t = this.columns.filter((s) => !s.children.length), e = [];
51
- t.forEach((s, a) => {
52
- h[s.id] && e.push(a);
50
+ const t = this.columns.filter((c) => !c.children.length), e = [];
51
+ t.forEach((c, f) => {
52
+ o[c.id] && e.push(f);
53
53
  });
54
- const o = [this.colGroupMain.parentElement], i = [this.colGroupMain];
55
- this.colGroupHeader && (o.push(this.colGroupHeader.parentElement), i.push(this.colGroupHeader)), this.colGroupFooter && (o.push(this.colGroupFooter.parentElement), i.push(this.colGroupFooter)), o.forEach((s) => s.classList.add("k-autofitting"));
56
- const u = [];
57
- i.forEach((s) => {
58
- e.forEach((a) => {
59
- s.children[a] && (s.children[a].width = "", u[a] = Math.max(
60
- u[a] || 0,
61
- s.children[a].offsetWidth + G
54
+ const s = [this.colGroupMain.parentElement], i = [this.colGroupMain];
55
+ this.colGroupHeader && (s.push(this.colGroupHeader.parentElement), i.push(this.colGroupHeader)), this.colGroupFooter && (s.push(this.colGroupFooter.parentElement), i.push(this.colGroupFooter)), this.colGroupStickyHeader && (s.push(this.colGroupStickyHeader.parentElement), i.push(this.colGroupStickyHeader)), this.colGroupStickyFooter && (s.push(this.colGroupStickyFooter.parentElement), i.push(this.colGroupStickyFooter)), s.forEach((c) => c.classList.add("k-autofitting"));
56
+ const a = [];
57
+ i.forEach((c) => {
58
+ e.forEach((f) => {
59
+ c.children[f] && (c.children[f].width = "", a[f] = Math.max(
60
+ a[f] || 0,
61
+ c.children[f].offsetWidth + g
62
62
  ));
63
63
  });
64
- }), i.forEach((s) => {
65
- e.forEach((a) => {
66
- if (s.children[a]) {
67
- s.children[a].width = u[a] + "px";
68
- const p = d.find((m) => m.id === t[a].id);
69
- p && (p.width = u[a]);
64
+ }), i.forEach((c) => {
65
+ e.forEach((f) => {
66
+ if (c.children[f]) {
67
+ c.children[f].width = a[f] + "px";
68
+ const u = d.find((k) => k.id === t[f].id);
69
+ u && (u.width = a[f]);
70
70
  }
71
71
  });
72
- }), o.forEach((s) => s.classList.remove("k-autofitting")), this.onResize(e[0], 0, 0, c, !0, this.columnsState, n[0]);
73
- }, this.updateColElements = (c) => {
74
- var d, h, r;
75
- const n = this.columns.filter((t) => !t.hidden && !t.children.length);
76
- let l = 1e-10;
77
- for (let t = 0; t < c.length; t++) {
78
- const e = c[t], o = n.findIndex((p) => p.id === e.id), i = parseFloat((e.width || 0).toString()), u = Math.floor(i);
79
- l += i - u;
80
- const s = u + Math.floor(l);
81
- l -= Math.floor(l);
82
- const a = n.find((p) => p.id === e.id);
83
- if (!a)
72
+ }), s.forEach((c) => c.classList.remove("k-autofitting")), this.onResize(e[0], 0, 0, h, !0, this.columnsState, n[0]);
73
+ }, this.updateColElements = (h) => {
74
+ var d, o, l, t, e;
75
+ const n = this.columns.filter((s) => !s.hidden && !s.children.length);
76
+ let r = 1e-10;
77
+ for (let s = 0; s < h.length; s++) {
78
+ const i = h[s], a = n.findIndex((G) => G.id === i.id), c = parseFloat((i.width || 0).toString()), f = Math.floor(c);
79
+ r += c - f;
80
+ const u = f + Math.floor(r);
81
+ r -= Math.floor(r);
82
+ const k = n.find((G) => G.id === i.id);
83
+ if (!k)
84
84
  return;
85
- if ((d = this.colGroupMain) != null && d.children[o]) {
86
- const p = parseInt(this.colGroupMain.children[o].width, 10);
87
- this.colGroupMain.children[o].width = s + "px", this.updateNextLockedCol(this.colGroupMain.parentElement, a, p - s);
85
+ if ((d = this.colGroupMain) != null && d.children[a]) {
86
+ const G = parseInt(this.colGroupMain.children[a].width, 10);
87
+ this.colGroupMain.children[a].width = u + "px", this.updateNextLockedCol(this.colGroupMain.parentElement, k, G - u);
88
88
  }
89
- if ((h = this.colGroupHeader) != null && h.children[o]) {
90
- const p = parseInt(this.colGroupHeader.children[o].width, 10);
91
- this.colGroupHeader.children[o].width = s + "px", this.updateNextLockedCol(this.colGroupHeader.parentElement, a, p - s);
89
+ if ((o = this.colGroupHeader) != null && o.children[a]) {
90
+ const G = parseInt(this.colGroupHeader.children[a].width, 10);
91
+ this.colGroupHeader.children[a].width = u + "px", this.updateNextLockedCol(this.colGroupHeader.parentElement, k, G - u);
92
92
  }
93
- if ((r = this.colGroupFooter) != null && r.children[o]) {
94
- const p = parseInt(this.colGroupFooter.children[o].width, 10);
95
- this.colGroupFooter.children[o].width = s + "px", this.updateNextLockedCol(this.colGroupFooter.parentElement, a, p - s);
93
+ if ((l = this.colGroupFooter) != null && l.children[a]) {
94
+ const G = parseInt(this.colGroupFooter.children[a].width, 10);
95
+ this.colGroupFooter.children[a].width = u + "px", this.updateNextLockedCol(this.colGroupFooter.parentElement, k, G - u);
96
+ }
97
+ if ((t = this.colGroupStickyHeader) != null && t.children[a]) {
98
+ const G = parseInt(this.colGroupStickyHeader.children[a].width, 10);
99
+ this.colGroupStickyHeader.children[a].width = u + "px", this.updateNextLockedCol(
100
+ this.colGroupStickyHeader.parentElement,
101
+ k,
102
+ G - u
103
+ );
104
+ }
105
+ if ((e = this.colGroupStickyFooter) != null && e.children[a]) {
106
+ const G = parseInt(this.colGroupStickyFooter.children[a].width, 10);
107
+ this.colGroupStickyFooter.children[a].width = u + "px", this.updateNextLockedCol(
108
+ this.colGroupStickyFooter.parentElement,
109
+ k,
110
+ G - u
111
+ );
96
112
  }
97
113
  }
98
- }, this.onResize = f;
114
+ }, this.onResize = p;
99
115
  }
100
- fixateInitialWidths(f) {
101
- var r;
102
- let c = 0;
103
- const n = ((r = this.colGroupMain) == null ? void 0 : r.children) || [];
116
+ applyWidthConstraints(p, h, n = 1) {
117
+ var i;
118
+ if (!p.width)
119
+ return p.width || "";
120
+ const r = p.width.toString();
121
+ if (r.includes("%")) {
122
+ const c = parseFloat(r) * n, f = Math.max(0, Math.min(100, c));
123
+ return p.width = f + "%", p.width;
124
+ }
125
+ let o = parseFloat(r) * n;
126
+ const l = (i = h.minResizableWidth) != null ? i : 10, t = h == null ? void 0 : h.minWidth, e = t !== void 0 ? Math.max(l, t) : l, s = h == null ? void 0 : h.maxWidth;
127
+ return o < e && (o = e), s !== void 0 && o > s && (o = s), p.width = o, o;
128
+ }
129
+ fixateInitialWidths(p) {
130
+ var l;
131
+ let h = 0;
132
+ const n = ((l = this.colGroupMain) == null ? void 0 : l.children) || [];
104
133
  for (let t = 0; t < n.length; t++)
105
- n[t].width ? f -= n[t].clientWidth : c++;
106
- if (c === 0)
134
+ n[t].width ? p -= n[t].clientWidth : h++;
135
+ if (h === 0)
107
136
  return;
108
- const l = Math.floor(f / c), d = g(this.columnsState), h = this.columns.filter((t) => !t.children.length);
137
+ const r = Math.floor(p / h), d = w(this.columnsState), o = this.columns.filter((t) => !t.children.length);
109
138
  for (let t = 0; t < n.length; t++) {
110
- const e = n[t], o = e.width ? e.clientWidth : l;
111
- e.width = o;
112
- const i = d.find((u) => u.id === h[t].id);
113
- i && (i.width = o.toString()), this.colGroupHeader && (this.colGroupHeader.children[t].width = o), this.colGroupFooter && (this.colGroupFooter.children[t].width = o);
139
+ const e = n[t], s = e.width ? e.clientWidth : r;
140
+ e.width = s;
141
+ const i = d.find((a) => a.id === o[t].id);
142
+ i && (i.width = s.toString()), this.colGroupHeader && (this.colGroupHeader.children[t].width = s), this.colGroupFooter && (this.colGroupFooter.children[t].width = s), this.colGroupStickyHeader && (this.colGroupStickyHeader.children[t].width = s), this.colGroupStickyFooter && (this.colGroupStickyFooter.children[t].width = s);
114
143
  }
115
144
  }
116
- setWidths(f, c) {
117
- const n = g(this.columnsState), l = this.columns.findIndex((t) => t.id === f.id), d = [];
118
- let h = f.children.filter((t) => !t.hidden).length;
119
- for (let t = l + 1; t < this.columns.length && !(h <= 0); t++) {
145
+ setWidths(p, h) {
146
+ const n = w(this.columnsState), r = this.columns.findIndex((t) => t.id === p.id), d = [];
147
+ let o = p.children.filter((t) => !t.hidden).length;
148
+ for (let t = r + 1; t < this.columns.length && !(o <= 0); t++) {
120
149
  const e = this.columns[t];
121
- e.children.length ? h += e.children.filter((o) => !o.hidden).length : d.push(e), h--;
150
+ e.children.length ? o += e.children.filter((s) => !s.hidden).length : d.push(e), o--;
122
151
  }
123
- d.length === 0 && d.push(f);
124
- const r = [];
152
+ d.length === 0 && d.push(p);
153
+ const l = [];
125
154
  d.forEach((t) => {
126
- const e = n.find((o) => o.id === t.id);
127
- if (e) {
128
- let o = e.width ? parseFloat(e.width.toString()) * c : 0;
129
- const i = t.minResizableWidth === void 0 ? 10 : t.minResizableWidth;
130
- o < i && (o = i), e.width = o, r.push(e);
131
- }
132
- }), this.updateColElements(r);
155
+ const e = n.find((s) => s.id === t.id);
156
+ e && (this.applyWidthConstraints(e, t, h), l.push(e));
157
+ }), this.updateColElements(l);
133
158
  }
134
- updateNextLockedCol(f, c, n) {
135
- const l = c.index, d = this.colGroupMain.parentElement.closest(".k-grid"), h = d == null ? void 0 : d.clientWidth, r = this.columns.filter((t) => t.locked).map((t) => parseInt(t.width + "", 10)).reduce((t, e) => t + e, 0);
136
- !c.locked || h <= r + w || this.columns.forEach((t) => {
159
+ updateNextLockedCol(p, h, n) {
160
+ const r = h.index, d = this.colGroupMain.parentElement.closest(".k-grid"), o = d == null ? void 0 : d.clientWidth, l = this.columns.filter((t) => t.locked).map((t) => parseInt(t.width + "", 10)).reduce((t, e) => t + e, 0);
161
+ !h.locked || o <= l + F || this.columns.forEach((t) => {
137
162
  if (t != null && t.locked && n) {
138
- const e = f == null ? void 0 : f.querySelectorAll('[aria-colindex="' + t.ariaColumnIndex + '"]');
139
- e == null || e.forEach((o) => {
140
- const i = o.style;
141
- this.isRtl ? (t.index > l && (i != null && i.right) && (i.right = parseInt(i.right, 10) - n + "px"), t.index < l && (i != null && i.left) && (i.left = parseInt(i.left, 10) - n + "px")) : (t.index > l && (i != null && i.left) && (i.left = parseInt(i.left, 10) - n + "px"), t.index < l && (i != null && i.right) && (i.right = parseInt(i.right, 10) - n + "px"));
163
+ const e = p == null ? void 0 : p.querySelectorAll('[aria-colindex="' + t.ariaColumnIndex + '"]');
164
+ e == null || e.forEach((s) => {
165
+ const i = s.style;
166
+ this.isRtl ? (t.index > r && (i != null && i.right) && (i.right = parseInt(i.right, 10) - n + "px"), t.index < r && (i != null && i.left) && (i.left = parseInt(i.left, 10) - n + "px")) : (t.index > r && (i != null && i.left) && (i.left = parseInt(i.left, 10) - n + "px"), t.index < r && (i != null && i.right) && (i.right = parseInt(i.right, 10) - n + "px"));
142
167
  });
143
168
  }
144
169
  });
145
170
  }
146
171
  }
147
172
  export {
148
- F as ColumnResize
173
+ m as ColumnResize
149
174
  };
@@ -37,6 +37,7 @@ declare const GroupingIndicator: import('vue').DefineComponent<import('vue').Ext
37
37
  drag(event: any): void;
38
38
  release(event: any): void;
39
39
  sortChange(event: any): void;
40
+ handleKeyDown(event: any): void;
40
41
  groupRemove(event: any): void;
41
42
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
42
43
  title: PropType<string>;
@@ -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 t=require("vue"),i=require("@progress/kendo-vue-common"),n=require("@progress/kendo-svg-icons"),o=t.defineComponent({props:{title:String,dir:String,onRemove:Function,onSortChange:Function,onPress:Function,onDrag:Function,onRelease:Function},mounted(){this.element=i.getRef(this,"indicatorContainer"),this.element&&(this.draggable=this.$refs.draggable)},methods:{press(e){this.element&&this.$emit("press",e,this.element)},drag(e){this.element&&this.$emit("drag",e,this.element)},release(e){this.element&&this.$emit("release",e,this.element)},sortChange(e){e.preventDefault();const s=this.$props.dir==="asc"?"desc":"asc";this.$emit("sortChange",e,s)},groupRemove(e){e.preventDefault(),this.$emit("remove",e)}},setup(){return{indicatorContainerRef:t.ref(null)}},render(){return t.createVNode(i.Draggable,{onPress:this.press,onDrag:this.drag,onRelease:this.release,ref:"draggable"},{default:()=>[t.createVNode("div",{class:"k-chip k-chip-md k-chip-solid k-chip-solid-base k-rounded-md",ref:i.setRef(this,"indicatorContainer")},[t.createVNode(i.Icon,{name:"sort-"+this.$props.dir+"-small",class:"k-chip-icon",icon:this.$props.dir==="asc"?n.sortAscSmallIcon:n.sortDescSmallIcon},null),t.createVNode("span",{class:"k-chip-content",tabindex:-1,onClick:this.sortChange},[this.$props.title]),t.createVNode("span",{class:"k-chip-actions"},[t.createVNode("span",{class:"k-chip-action k-chip-remove-action",tabindex:-1,onClick:this.groupRemove},[t.createVNode(i.Icon,{name:"x-circle",icon:n.xCircleIcon},null)])])])]})}});exports.GroupingIndicator=o;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),n=require("@progress/kendo-vue-common"),o=require("@progress/kendo-svg-icons"),s=t.defineComponent({props:{title:String,dir:String,onRemove:Function,onSortChange:Function,onPress:Function,onDrag:Function,onRelease:Function},mounted(){this.element=n.getRef(this,"indicatorContainer"),this.element&&(this.draggable=this.$refs.draggable)},methods:{press(e){this.element&&this.$emit("press",e,this.element)},drag(e){this.element&&this.$emit("drag",e,this.element)},release(e){this.element&&this.$emit("release",e,this.element)},sortChange(e){e.preventDefault();const i=this.$props.dir==="asc"?"desc":"asc";this.$emit("sortChange",e,i)},handleKeyDown(e){(e.keyCode===n.Keys.delete||e.keyCode===n.Keys.backspace)&&(e.preventDefault(),e.stopPropagation(),this.$emit("remove",e))},groupRemove(e){e.preventDefault(),this.$emit("remove",e)}},setup(){return{indicatorContainerRef:t.ref(null)}},render(){return t.createVNode(n.Draggable,{onPress:this.press,onDrag:this.drag,onRelease:this.release,ref:"draggable"},{default:()=>[t.createVNode("div",{class:"k-chip",ref:n.setRef(this,"indicatorContainer"),tabindex:"0",role:"button",onClick:this.sortChange,onKeydown:this.handleKeyDown,style:{touchAction:"none"}},[t.createVNode(n.Icon,{name:"sort-"+this.$props.dir+"-small",class:"k-chip-icon",icon:this.$props.dir==="asc"?o.sortAscSmallIcon:o.sortDescSmallIcon},null),t.createVNode("span",{class:"k-chip-content"},[t.createVNode("span",{class:"k-chip-label"},[this.$props.title])]),t.createVNode("span",{class:"k-chip-actions"},[t.createVNode("span",{class:"k-chip-action k-chip-remove-action",tabindex:-1,onClick:this.groupRemove},[t.createVNode(n.Icon,{name:"x-circle",icon:o.xCircleIcon},null)])])])]})}});exports.GroupingIndicator=s;
@@ -5,10 +5,10 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { defineComponent as n, createVNode as t, ref as o } from "vue";
9
- import { Draggable as r, setRef as a, Icon as i, getRef as c } from "@progress/kendo-vue-common";
10
- import { sortAscSmallIcon as l, sortDescSmallIcon as h, xCircleIcon as p } from "@progress/kendo-svg-icons";
11
- const f = /* @__PURE__ */ n({
8
+ import { defineComponent as o, createVNode as t, ref as r } from "vue";
9
+ import { Draggable as a, setRef as c, Icon as i, Keys as s, getRef as l } from "@progress/kendo-vue-common";
10
+ import { sortAscSmallIcon as h, sortDescSmallIcon as p, xCircleIcon as m } from "@progress/kendo-svg-icons";
11
+ const u = /* @__PURE__ */ o({
12
12
  props: {
13
13
  title: String,
14
14
  dir: String,
@@ -19,7 +19,7 @@ const f = /* @__PURE__ */ n({
19
19
  onRelease: Function
20
20
  },
21
21
  mounted() {
22
- this.element = c(this, "indicatorContainer"), this.element && (this.draggable = this.$refs.draggable);
22
+ this.element = l(this, "indicatorContainer"), this.element && (this.draggable = this.$refs.draggable);
23
23
  },
24
24
  methods: {
25
25
  press(e) {
@@ -33,8 +33,11 @@ const f = /* @__PURE__ */ n({
33
33
  },
34
34
  sortChange(e) {
35
35
  e.preventDefault();
36
- const s = this.$props.dir === "asc" ? "desc" : "asc";
37
- this.$emit("sortChange", e, s);
36
+ const n = this.$props.dir === "asc" ? "desc" : "asc";
37
+ this.$emit("sortChange", e, n);
38
+ },
39
+ handleKeyDown(e) {
40
+ (e.keyCode === s.delete || e.keyCode === s.backspace) && (e.preventDefault(), e.stopPropagation(), this.$emit("remove", e));
38
41
  },
39
42
  groupRemove(e) {
40
43
  e.preventDefault(), this.$emit("remove", e);
@@ -42,28 +45,35 @@ const f = /* @__PURE__ */ n({
42
45
  },
43
46
  setup() {
44
47
  return {
45
- indicatorContainerRef: o(null)
48
+ indicatorContainerRef: r(null)
46
49
  };
47
50
  },
48
51
  render() {
49
- return t(r, {
52
+ return t(a, {
50
53
  onPress: this.press,
51
54
  onDrag: this.drag,
52
55
  onRelease: this.release,
53
56
  ref: "draggable"
54
57
  }, {
55
58
  default: () => [t("div", {
56
- class: "k-chip k-chip-md k-chip-solid k-chip-solid-base k-rounded-md",
57
- ref: a(this, "indicatorContainer")
59
+ class: "k-chip",
60
+ ref: c(this, "indicatorContainer"),
61
+ tabindex: "0",
62
+ role: "button",
63
+ onClick: this.sortChange,
64
+ onKeydown: this.handleKeyDown,
65
+ style: {
66
+ touchAction: "none"
67
+ }
58
68
  }, [t(i, {
59
69
  name: "sort-" + this.$props.dir + "-small",
60
70
  class: "k-chip-icon",
61
- icon: this.$props.dir === "asc" ? l : h
71
+ icon: this.$props.dir === "asc" ? h : p
62
72
  }, null), t("span", {
63
- class: "k-chip-content",
64
- tabindex: -1,
65
- onClick: this.sortChange
66
- }, [this.$props.title]), t("span", {
73
+ class: "k-chip-content"
74
+ }, [t("span", {
75
+ class: "k-chip-label"
76
+ }, [this.$props.title])]), t("span", {
67
77
  class: "k-chip-actions"
68
78
  }, [t("span", {
69
79
  class: "k-chip-action k-chip-remove-action",
@@ -71,11 +81,11 @@ const f = /* @__PURE__ */ n({
71
81
  onClick: this.groupRemove
72
82
  }, [t(i, {
73
83
  name: "x-circle",
74
- icon: p
84
+ icon: m
75
85
  }, null)])])])]
76
86
  });
77
87
  }
78
88
  });
79
89
  export {
80
- f as GroupingIndicator
90
+ u as GroupingIndicator
81
91
  };
@@ -0,0 +1,43 @@
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 '../interfaces/ExtendedColumnProps';
9
+ import { GridCellsSettings } from '../interfaces/GridCellsSettings';
10
+ import { PropType } from 'vue';
11
+ /**
12
+ * @hidden
13
+ */
14
+ export interface FooterCellProps {
15
+ column: ExtendedColumnProps;
16
+ columnIndex: number;
17
+ isRtl: boolean;
18
+ rowIndex: number;
19
+ cells?: GridCellsSettings;
20
+ }
21
+ /**
22
+ * @hidden
23
+ */
24
+ declare const FooterCell: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
25
+ column: PropType<ExtendedColumnProps>;
26
+ columnIndex: PropType<number>;
27
+ isRtl: PropType<boolean>;
28
+ rowIndex: PropType<number>;
29
+ cells: PropType<GridCellsSettings>;
30
+ }>, {}, {}, {
31
+ columnStyles(): {
32
+ left: string;
33
+ right: string;
34
+ };
35
+ tdClassName(): string;
36
+ }, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
37
+ column: PropType<ExtendedColumnProps>;
38
+ columnIndex: PropType<number>;
39
+ isRtl: PropType<boolean>;
40
+ rowIndex: PropType<number>;
41
+ cells: PropType<GridCellsSettings>;
42
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
43
+ export { FooterCell };
@@ -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 l=require("vue"),s=require("@progress/kendo-vue-common"),a=require("@progress/kendo-vue-data-tools"),d=l.defineComponent({name:"FooterCell",props:{column:Object,columnIndex:Number,isRtl:Boolean,rowIndex:Number,cells:Object},inject:{getKeyboardNavigationAttributes:{default:s.noop}},computed:{columnStyles(){const e=this.$props.column;if(e.locked&&e.left!==void 0)return this.$props.isRtl?{left:e.right+"px",right:e.left+"px"}:{left:e.left+"px",right:e.right+"px"}},tdClassName(){const e=this.$props.column,t=e.locked&&e.left!==void 0?"k-grid-footer-sticky":"";return e.footerClassName?`k-table-td ${e.footerClassName} ${t}`:"k-table-td "+t}},render(){var n,r;const e=this.$props.column,t=`footer-${this.$props.rowIndex}-${this.$props.columnIndex}`,o=this.getKeyboardNavigationAttributes(t,!0),i=s.getTemplate.call(this,{h:l.h,template:e.footerCell||((n=e.cells)==null?void 0:n.footerCell)||((r=this.$props.cells)==null?void 0:r.footerCell),defaultRendering:null,additionalProps:{field:e.field,colSpan:e.colSpan===1?void 0:e.colSpan,defaultStyle:this.columnStyles}});return l.createVNode("td",{key:this.$props.columnIndex,colspan:e.colSpan===1?void 0:e.colSpan,style:this.columnStyles,class:this.tdClassName,role:"gridcell",tabindex:o.tabIndex,"data-keyboardnavlevel":o[a.KEYBOARD_NAV_DATA_LEVEL],"data-keyboardnavid":o[a.KEYBOARD_NAV_DATA_ID]},[i])}});exports.FooterCell=d;
@@ -0,0 +1,68 @@
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 s, h as i, createVNode as a } from "vue";
9
+ import { noop as d, getTemplate as c } from "@progress/kendo-vue-common";
10
+ import { KEYBOARD_NAV_DATA_ID as p, KEYBOARD_NAV_DATA_LEVEL as u } from "@progress/kendo-vue-data-tools";
11
+ const b = /* @__PURE__ */ s({
12
+ name: "FooterCell",
13
+ props: {
14
+ column: Object,
15
+ columnIndex: Number,
16
+ isRtl: Boolean,
17
+ rowIndex: Number,
18
+ cells: Object
19
+ },
20
+ inject: {
21
+ getKeyboardNavigationAttributes: {
22
+ default: d
23
+ }
24
+ },
25
+ computed: {
26
+ columnStyles() {
27
+ const e = this.$props.column;
28
+ if (e.locked && e.left !== void 0)
29
+ return this.$props.isRtl ? {
30
+ left: e.right + "px",
31
+ right: e.left + "px"
32
+ } : {
33
+ left: e.left + "px",
34
+ right: e.right + "px"
35
+ };
36
+ },
37
+ tdClassName() {
38
+ const e = this.$props.column, t = e.locked && e.left !== void 0 ? "k-grid-footer-sticky" : "";
39
+ return e.footerClassName ? `k-table-td ${e.footerClassName} ${t}` : "k-table-td " + t;
40
+ }
41
+ },
42
+ render() {
43
+ var l, n;
44
+ const e = this.$props.column, t = `footer-${this.$props.rowIndex}-${this.$props.columnIndex}`, o = this.getKeyboardNavigationAttributes(t, !0), r = c.call(this, {
45
+ h: i,
46
+ template: e.footerCell || ((l = e.cells) == null ? void 0 : l.footerCell) || ((n = this.$props.cells) == null ? void 0 : n.footerCell),
47
+ defaultRendering: null,
48
+ additionalProps: {
49
+ field: e.field,
50
+ colSpan: e.colSpan === 1 ? void 0 : e.colSpan,
51
+ defaultStyle: this.columnStyles
52
+ }
53
+ });
54
+ return a("td", {
55
+ key: this.$props.columnIndex,
56
+ colspan: e.colSpan === 1 ? void 0 : e.colSpan,
57
+ style: this.columnStyles,
58
+ class: this.tdClassName,
59
+ role: "gridcell",
60
+ tabindex: o.tabIndex,
61
+ "data-keyboardnavlevel": o[u],
62
+ "data-keyboardnavid": o[p]
63
+ }, [r]);
64
+ }
65
+ });
66
+ export {
67
+ b as FooterCell
68
+ };
@@ -6,6 +6,7 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  import { ExtendedColumnProps } from '../interfaces/ExtendedColumnProps';
9
+ import { GridCellsSettings } from '../interfaces/GridCellsSettings';
9
10
  import { PropType } from 'vue';
10
11
  /**
11
12
  * @hidden
@@ -14,6 +15,7 @@ export interface FooterRowProps {
14
15
  columns: ExtendedColumnProps[];
15
16
  isRtl: boolean;
16
17
  rowIndex: number;
18
+ cells?: GridCellsSettings;
17
19
  }
18
20
  /**
19
21
  * @hidden
@@ -22,14 +24,11 @@ declare const FooterRow: import('vue').DefineComponent<import('vue').ExtractProp
22
24
  isRtl: PropType<boolean>;
23
25
  columns: PropType<ExtendedColumnProps[]>;
24
26
  rowIndex: PropType<number>;
25
- }>, {}, {}, {}, {
26
- columnStyles(column: ExtendedColumnProps): {
27
- left: string;
28
- right: string;
29
- };
30
- }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
27
+ cells: PropType<GridCellsSettings>;
28
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
31
29
  isRtl: PropType<boolean>;
32
30
  columns: PropType<ExtendedColumnProps[]>;
33
31
  rowIndex: PropType<number>;
32
+ cells: PropType<GridCellsSettings>;
34
33
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
35
34
  export { FooterRow };