@progress/kendo-react-grid 15.1.0-develop.1 → 15.1.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 (46) hide show
  1. package/GridClientWrapper.js +1 -1
  2. package/GridClientWrapper.mjs +411 -407
  3. package/GridComponent.js +1 -1
  4. package/GridComponent.mjs +305 -290
  5. package/VirtualScroll.d.ts +4 -0
  6. package/VirtualScroll.js +1 -1
  7. package/VirtualScroll.mjs +32 -27
  8. package/cells/groupcell/useGroupCellClientTdProps.js +1 -1
  9. package/cells/groupcell/useGroupCellClientTdProps.mjs +7 -7
  10. package/cells/hierarchycell/GridHierarchyCellToggle.js +1 -1
  11. package/cells/hierarchycell/GridHierarchyCellToggle.mjs +15 -15
  12. package/columnMenu/GridColumnMenuWrapper.js +1 -1
  13. package/columnMenu/GridColumnMenuWrapper.mjs +118 -82
  14. package/components/GridEditDialog.js +1 -1
  15. package/components/GridEditDialog.mjs +19 -19
  16. package/components/VirtualScrollOverlay.d.ts +12 -0
  17. package/components/VirtualScrollOverlay.js +16 -0
  18. package/components/VirtualScrollOverlay.mjs +65 -0
  19. package/components/noRecords/GridNoRecordsContainer.js +1 -1
  20. package/components/noRecords/GridNoRecordsContainer.mjs +10 -9
  21. package/dist/cdn/js/kendo-react-grid.js +1 -1
  22. package/drag/ColumnResize.js +1 -1
  23. package/drag/ColumnResize.mjs +84 -84
  24. package/getRowContents.js +1 -1
  25. package/getRowContents.mjs +12 -12
  26. package/index.d.mts +2 -1
  27. package/index.d.ts +2 -1
  28. package/interfaces/GridProps.d.ts +2 -1
  29. package/interfaces/GridScrollableSettings.d.ts +33 -0
  30. package/interfaces/VirtualScrollInterface.d.ts +2 -0
  31. package/package-metadata.js +1 -1
  32. package/package-metadata.mjs +2 -2
  33. package/package.json +17 -17
  34. package/toolbar-tools/GridToolbarColumnsChooser.js +1 -1
  35. package/toolbar-tools/GridToolbarColumnsChooser.mjs +33 -33
  36. package/toolbar-tools/GridToolbarFilter.js +1 -1
  37. package/toolbar-tools/GridToolbarFilter.mjs +207 -194
  38. package/toolbar-tools/GridToolbarSort.js +1 -1
  39. package/toolbar-tools/GridToolbarSort.mjs +84 -101
  40. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarFilter.js +1 -1
  41. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarFilter.mjs +50 -46
  42. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarSort.d.ts +0 -1
  43. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarSort.js +1 -1
  44. package/toolbar-tools/adaptiveContent/GridAdaptiveToolbarSort.mjs +10 -19
  45. package/utils/index.js +1 -1
  46. package/utils/index.mjs +161 -161
@@ -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 p=require("../utils/index.js"),m=1,x=20;class S{constructor(a){this.columns=[],this.columnsState=[],this.resizable=!1,this.isRtl=!1,this.setIsRtl=s=>{this.isRtl=s},this.initWidths=()=>{var c;const s=((c=this.colGroupMain)==null?void 0:c.children)||[],h=p.getFlatColumnsState(this.columnsState),o=this.columns.filter(e=>{var l;return!((l=e.children)!=null&&l.length)});for(let e=0;e<s.length;e++){const l=o[e];let t="";const i=h.find(d=>d.id===o[e].id);i&&(t=this.applyWidthConstraints(i,l)),this.colGroups.forEach(d=>{d.children[e].width=t})}},this.dragHandler=(s,h,o,c)=>{const e=s.originalEvent;c||(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation());const l=o.closest("th");if(!l||!l)return;const t=l.clientWidth;let i=t;if(this.isRtl?i+=o.getBoundingClientRect().right-o.offsetWidth/2-s.clientX:i+=s.clientX-o.getBoundingClientRect().left-o.offsetWidth/2,!c&&Math.abs(i-t)<1)return;this.fixateInitialWidths(l.parentElement.clientWidth),this.setWidths(h,Math.floor(i)/t);const d=this.columns.filter(n=>!n.children.length).findIndex(n=>n.id===h.id);this.onResize(d,t,i,e,c,this.columnsState,h.id)},this.dblClickHandler=(s,h)=>{const o=this.columns.filter(r=>h.indexOf(r.id)>-1),c=p.getFlatColumnsState(this.columnsState);if(!this.colGroupMain||!o.length)return;const e={},l=o;for(;l.length>0;){const r=l.pop();if(!r)break;r.children.length?l.push(...r.children):e[r.id]=r}const t=this.columns.filter(r=>!r.children.length),i=[];t.forEach((r,u)=>{e[r.id]&&i.push(u)});const d=this.colGroups,n=d.map(r=>r.parentElement);n.forEach(r=>r.classList.add("k-autofitting"));const f=[];d.forEach(r=>{i.forEach(u=>{r.children[u]&&(r.children[u].width="",f[u]=Math.max(f[u]||0,r.children[u].offsetWidth+m))})}),d.forEach(r=>{i.forEach(u=>{if(r.children[u]){r.children[u].width=f[u]+"px";const g=c.find(W=>W.id===t[u].id);g&&(g.width=f[u])}})}),n.forEach(r=>r.classList.remove("k-autofitting")),this.onResize(i[0],0,0,s,!0,this.columnsState,h[0])},this.updateColElements=s=>{const h=this.columns.filter(c=>!c.hidden&&!c.children.length);let o=1e-10;for(let c=0;c<s.length;c++){const e=s[c],l=h.findIndex(f=>f.id===e.id),t=parseFloat((e.width||0).toString()),i=Math.floor(t);o+=t-i;const d=i+Math.floor(o);o-=Math.floor(o);const n=h.find(f=>f.id===e.id);if(!n)return;this.colGroups.forEach(f=>{if(f.children[l]){const r=parseInt(f.children[l].width,10);f.children[l].width=d+"px",this.updateNextLockedCol(f.parentElement,n,r-d)}})}},this.onResize=a}get colGroups(){return[this.colGroupMain,this.colGroupHeader,this.colGroupFooter,this.colGroupStickyHeader,this.colGroupStickyFooter,this.colGroupPinnedTop,this.colGroupPinnedBottom].filter(Boolean)}applyWidthConstraints(a,s,h=1){if(!a.width)return a.width||"";const o=a.width.toString();if(o.includes("%")){const f=parseFloat(o)*h,r=Math.max(0,Math.min(100,f));return a.width=r+"%",a.width}let e=parseFloat(o)*h;const l=s.minResizableWidth===void 0?10:s.minResizableWidth,t=s==null?void 0:s.minWidth,i=t!==void 0?Math.max(l,t):l,d=s==null?void 0:s.maxWidth;return e<i&&(e=i),d!==void 0&&e>d&&(e=d),a.width=e,e}fixateInitialWidths(a){var l;let s=0;const h=((l=this.colGroupMain)==null?void 0:l.children)||[];for(let t=0;t<h.length;t++)h[t].width?a-=h[t].clientWidth:s++;if(s===0)return;const o=Math.floor(a/s),c=p.getFlatColumnsState(this.columnsState),e=this.columns.filter(t=>!t.children.length);for(let t=0;t<h.length;t++){const i=h[t],d=i.width?i.clientWidth:o,n=c.find(f=>f.id===e[t].id);n&&(n.width=d.toString()),this.colGroups.forEach(f=>{f.children[t].width=d})}}setWidths(a,s){const h=p.getFlatColumnsState(this.columnsState),o=this.columns.findIndex(t=>t.id===a.id),c=[];let e=a.children.filter(t=>!t.hidden).length;for(let t=o+1;t<this.columns.length&&!(e<=0);t++){const i=this.columns[t];i.children.length?e+=i.children.filter(d=>!d.hidden).length:c.push(i),e--}c.length===0&&c.push(a);const l=[];c.forEach(t=>{const i=h.find(d=>d.id===t.id);i&&(this.applyWidthConstraints(i,t,s),l.push(i))}),this.updateColElements(l)}updateNextLockedCol(a,s,h){const o=s.index,c=this.colGroupMain.parentElement.closest(".k-grid"),e=c==null?void 0:c.clientWidth,l=this.columns.filter(t=>t.locked).map(t=>parseInt(t.width+"",10)).reduce((t,i)=>t+i,0);!s.locked||e<=l+x||this.columns.forEach(t=>{if(t!=null&&t.locked&&h){const i=a==null?void 0:a.querySelectorAll('[aria-colindex="'+t.ariaColumnIndex+'"]');i==null||i.forEach(d=>{const n=d.style;this.isRtl?(t.index>o&&n&&n.right&&(n.right=parseInt(n.right,10)-h+"px"),t.index<o&&n&&n.left&&(n.left=parseInt(n.left,10)-h+"px")):(t.index>o&&n&&n.left&&(n.left=parseInt(n.left,10)-h+"px"),t.index<o&&n&&n.right&&(n.right=parseInt(n.right,10)-h+"px"))})}})}}exports.ColumnResize=S;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("../utils/index.js"),W=1,x=20;class S{constructor(a){this.columns=[],this.columnsState=[],this.resizable=!1,this.isRtl=!1,this.setIsRtl=c=>{this.isRtl=c},this.initWidths=()=>{var l;const c=((l=this.colGroupMain)==null?void 0:l.children)||[],o=p.getFlatColumnsState(this.columnsState),n=this.columns.filter(e=>{var r;return!((r=e.children)!=null&&r.length)});for(let e=0;e<c.length;e++){const r=n[e];let t="";const i=o.find(d=>d.id===n[e].id);i&&(t=this.applyWidthConstraints(i,r)),this.colGroups.forEach(d=>{d.children[e].width=t})}},this.dragHandler=(c,o,n,l)=>{const e=c.originalEvent;l||(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation());const r=n.closest("th");if(!r)return;const t=r.clientWidth;let i=t;if(this.isRtl?i+=n.getBoundingClientRect().right-n.offsetWidth/2-c.clientX:i+=c.clientX-n.getBoundingClientRect().left-n.offsetWidth/2,!l&&Math.abs(i-t)<1)return;this.fixateInitialWidths(r.parentElement.clientWidth),this.setWidths(o,Math.floor(i)/t);const d=this.columns.filter(s=>!s.children.length).findIndex(s=>s.id===o.id);this.onResize(d,t,i,e,l,this.columnsState,o.id)},this.dblClickHandler=(c,o)=>{const n=this.columns.filter(h=>o.indexOf(h.id)>-1),l=p.getFlatColumnsState(this.columnsState);if(!this.colGroupMain||!n.length)return;const e={},r=n;for(;r.length>0;){const h=r.pop();if(!h)break;h.children.length?r.push(...h.children):e[h.id]=h}const t=this.columns.filter(h=>!h.children.length),i=[];t.forEach((h,u)=>{e[h.id]&&i.push(u)});const d=this.colGroups,s=d.map(h=>h.parentElement);s.forEach(h=>h.classList.add("k-autofitting"));const f=[];d.forEach(h=>{i.forEach(u=>{h.children[u]&&(h.children[u].width="",f[u]=Math.max(f[u]||0,h.children[u].offsetWidth+W))})}),d.forEach(h=>{i.forEach(u=>{if(h.children[u]){h.children[u].width=f[u]+"px";const g=l.find(m=>m.id===t[u].id);g&&(g.width=f[u])}})}),s.forEach(h=>h.classList.remove("k-autofitting")),this.onResize(i[0],0,0,c,!0,this.columnsState,o[0])},this.updateColElements=c=>{const o=this.columns.filter(l=>!l.hidden&&!l.children.length);let n=1e-10;for(let l=0;l<c.length;l++){const e=c[l],r=o.findIndex(f=>f.id===e.id),t=parseFloat((e.width||0).toString()),i=Math.floor(t);n+=t-i;const d=i+Math.floor(n);n-=Math.floor(n);const s=o.find(f=>f.id===e.id);if(!s)return;this.colGroups.forEach(f=>{if(f.children[r]){const h=parseInt(f.children[r].width,10);f.children[r].width=d+"px",this.updateNextLockedCol(f.parentElement,s,h-d)}})}},this.onResize=a}get colGroups(){return[this.colGroupMain,this.colGroupHeader,this.colGroupFooter,this.colGroupStickyHeader,this.colGroupStickyFooter,this.colGroupPinnedTop,this.colGroupPinnedBottom].filter(Boolean)}applyWidthConstraints(a,c,o=1){if(!a.width)return a.width||"";const n=a.width.toString();if(n.includes("%")){const f=parseFloat(n)*o,h=Math.max(0,Math.min(100,f));return a.width=h+"%",a.width}let e=parseFloat(n)*o;const r=c.minResizableWidth===void 0?10:c.minResizableWidth,t=c.minWidth,i=t!==void 0?Math.max(r,t):r,d=c.maxWidth;return e<i&&(e=i),d!==void 0&&e>d&&(e=d),a.width=e,e}fixateInitialWidths(a){var r;let c=0;const o=((r=this.colGroupMain)==null?void 0:r.children)||[];for(let t=0;t<o.length;t++)o[t].width?a-=o[t].clientWidth:c++;if(c===0)return;const n=Math.floor(a/c),l=p.getFlatColumnsState(this.columnsState),e=this.columns.filter(t=>!t.children.length);for(let t=0;t<o.length;t++){const i=o[t],d=i.width?i.clientWidth:n,s=l.find(f=>f.id===e[t].id);s&&(s.width=d.toString()),this.colGroups.forEach(f=>{f.children[t].width=d})}}setWidths(a,c){const o=p.getFlatColumnsState(this.columnsState),n=this.columns.findIndex(t=>t.id===a.id),l=[];let e=a.children.filter(t=>!t.hidden).length;for(let t=n+1;t<this.columns.length&&!(e<=0);t++){const i=this.columns[t];i.children.length?e+=i.children.filter(d=>!d.hidden).length:l.push(i),e--}l.length===0&&l.push(a);const r=[];l.forEach(t=>{const i=o.find(d=>d.id===t.id);i&&(this.applyWidthConstraints(i,t,c),r.push(i))}),this.updateColElements(r)}updateNextLockedCol(a,c,o){const n=c.index,l=this.colGroupMain.parentElement.closest(".k-grid"),e=l==null?void 0:l.clientWidth,r=this.columns.filter(t=>t.locked).map(t=>parseInt(t.width+"",10)).reduce((t,i)=>t+i,0);!c.locked||e<=r+x||this.columns.forEach(t=>{if(t!=null&&t.locked&&o){const i=a==null?void 0:a.querySelectorAll('[aria-colindex="'+t.ariaColumnIndex+'"]');i==null||i.forEach(d=>{const s=d.style;this.isRtl?(t.index>n&&s&&s.right&&(s.right=parseInt(s.right,10)-o+"px"),t.index<n&&s&&s.left&&(s.left=parseInt(s.left,10)-o+"px")):(t.index>n&&s&&s.left&&(s.left=parseInt(s.left,10)-o+"px"),t.index<n&&s&&s.right&&(s.right=parseInt(s.right,10)-o+"px"))})}})}}exports.ColumnResize=S;
@@ -5,88 +5,88 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import { getFlatColumnsState as u } from "../utils/index.mjs";
9
- const x = 1, m = 20;
8
+ import { getFlatColumnsState as p } from "../utils/index.mjs";
9
+ const W = 1, x = 20;
10
10
  class S {
11
11
  constructor(a) {
12
- this.columns = [], this.columnsState = [], this.resizable = !1, this.isRtl = !1, this.setIsRtl = (s) => {
13
- this.isRtl = s;
12
+ this.columns = [], this.columnsState = [], this.resizable = !1, this.isRtl = !1, this.setIsRtl = (c) => {
13
+ this.isRtl = c;
14
14
  }, this.initWidths = () => {
15
- var c;
16
- const s = ((c = this.colGroupMain) == null ? void 0 : c.children) || [], h = u(this.columnsState), o = this.columns.filter((e) => {
15
+ var l;
16
+ const c = ((l = this.colGroupMain) == null ? void 0 : l.children) || [], o = p(this.columnsState), n = this.columns.filter((e) => {
17
17
  var r;
18
18
  return !((r = e.children) != null && r.length);
19
19
  });
20
- for (let e = 0; e < s.length; e++) {
21
- const r = o[e];
20
+ for (let e = 0; e < c.length; e++) {
21
+ const r = n[e];
22
22
  let t = "";
23
- const i = h.find((d) => d.id === o[e].id);
23
+ const i = o.find((d) => d.id === n[e].id);
24
24
  i && (t = this.applyWidthConstraints(i, r)), this.colGroups.forEach((d) => {
25
25
  d.children[e].width = t;
26
26
  });
27
27
  }
28
- }, this.dragHandler = (s, h, o, c) => {
29
- const e = s.originalEvent;
30
- c || (e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation());
31
- const r = o.closest("th");
32
- if (!r || !r)
28
+ }, this.dragHandler = (c, o, n, l) => {
29
+ const e = c.originalEvent;
30
+ l || (e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation());
31
+ const r = n.closest("th");
32
+ if (!r)
33
33
  return;
34
34
  const t = r.clientWidth;
35
35
  let i = t;
36
- if (this.isRtl ? i += o.getBoundingClientRect().right - o.offsetWidth / 2 - s.clientX : i += s.clientX - o.getBoundingClientRect().left - o.offsetWidth / 2, !c && Math.abs(i - t) < 1)
36
+ if (this.isRtl ? i += n.getBoundingClientRect().right - n.offsetWidth / 2 - c.clientX : i += c.clientX - n.getBoundingClientRect().left - n.offsetWidth / 2, !l && Math.abs(i - t) < 1)
37
37
  return;
38
- this.fixateInitialWidths(r.parentElement.clientWidth), this.setWidths(h, Math.floor(i) / t);
39
- const d = this.columns.filter((n) => !n.children.length).findIndex((n) => n.id === h.id);
40
- this.onResize(d, t, i, e, c, this.columnsState, h.id);
41
- }, this.dblClickHandler = (s, h) => {
42
- const o = this.columns.filter((l) => h.indexOf(l.id) > -1), c = u(this.columnsState);
43
- if (!this.colGroupMain || !o.length)
38
+ this.fixateInitialWidths(r.parentElement.clientWidth), this.setWidths(o, Math.floor(i) / t);
39
+ const d = this.columns.filter((s) => !s.children.length).findIndex((s) => s.id === o.id);
40
+ this.onResize(d, t, i, e, l, this.columnsState, o.id);
41
+ }, this.dblClickHandler = (c, o) => {
42
+ const n = this.columns.filter((h) => o.indexOf(h.id) > -1), l = p(this.columnsState);
43
+ if (!this.colGroupMain || !n.length)
44
44
  return;
45
- const e = {}, r = o;
45
+ const e = {}, r = n;
46
46
  for (; r.length > 0; ) {
47
- const l = r.pop();
48
- if (!l)
47
+ const h = r.pop();
48
+ if (!h)
49
49
  break;
50
- l.children.length ? r.push(...l.children) : e[l.id] = l;
50
+ h.children.length ? r.push(...h.children) : e[h.id] = h;
51
51
  }
52
- const t = this.columns.filter((l) => !l.children.length), i = [];
53
- t.forEach((l, p) => {
54
- e[l.id] && i.push(p);
52
+ const t = this.columns.filter((h) => !h.children.length), i = [];
53
+ t.forEach((h, u) => {
54
+ e[h.id] && i.push(u);
55
55
  });
56
- const d = this.colGroups, n = d.map((l) => l.parentElement);
57
- n.forEach((l) => l.classList.add("k-autofitting"));
56
+ const d = this.colGroups, s = d.map((h) => h.parentElement);
57
+ s.forEach((h) => h.classList.add("k-autofitting"));
58
58
  const f = [];
59
- d.forEach((l) => {
60
- i.forEach((p) => {
61
- l.children[p] && (l.children[p].width = "", f[p] = Math.max(
62
- f[p] || 0,
63
- l.children[p].offsetWidth + x
59
+ d.forEach((h) => {
60
+ i.forEach((u) => {
61
+ h.children[u] && (h.children[u].width = "", f[u] = Math.max(
62
+ f[u] || 0,
63
+ h.children[u].offsetWidth + W
64
64
  ));
65
65
  });
66
- }), d.forEach((l) => {
67
- i.forEach((p) => {
68
- if (l.children[p]) {
69
- l.children[p].width = f[p] + "px";
70
- const g = c.find((W) => W.id === t[p].id);
71
- g && (g.width = f[p]);
66
+ }), d.forEach((h) => {
67
+ i.forEach((u) => {
68
+ if (h.children[u]) {
69
+ h.children[u].width = f[u] + "px";
70
+ const g = l.find((m) => m.id === t[u].id);
71
+ g && (g.width = f[u]);
72
72
  }
73
73
  });
74
- }), n.forEach((l) => l.classList.remove("k-autofitting")), this.onResize(i[0], 0, 0, s, !0, this.columnsState, h[0]);
75
- }, this.updateColElements = (s) => {
76
- const h = this.columns.filter((c) => !c.hidden && !c.children.length);
77
- let o = 1e-10;
78
- for (let c = 0; c < s.length; c++) {
79
- const e = s[c], r = h.findIndex((f) => f.id === e.id), t = parseFloat((e.width || 0).toString()), i = Math.floor(t);
80
- o += t - i;
81
- const d = i + Math.floor(o);
82
- o -= Math.floor(o);
83
- const n = h.find((f) => f.id === e.id);
84
- if (!n)
74
+ }), s.forEach((h) => h.classList.remove("k-autofitting")), this.onResize(i[0], 0, 0, c, !0, this.columnsState, o[0]);
75
+ }, this.updateColElements = (c) => {
76
+ const o = this.columns.filter((l) => !l.hidden && !l.children.length);
77
+ let n = 1e-10;
78
+ for (let l = 0; l < c.length; l++) {
79
+ const e = c[l], r = o.findIndex((f) => f.id === e.id), t = parseFloat((e.width || 0).toString()), i = Math.floor(t);
80
+ n += t - i;
81
+ const d = i + Math.floor(n);
82
+ n -= Math.floor(n);
83
+ const s = o.find((f) => f.id === e.id);
84
+ if (!s)
85
85
  return;
86
86
  this.colGroups.forEach((f) => {
87
87
  if (f.children[r]) {
88
- const l = parseInt(f.children[r].width, 10);
89
- f.children[r].width = d + "px", this.updateNextLockedCol(f.parentElement, n, l - d);
88
+ const h = parseInt(f.children[r].width, 10);
89
+ f.children[r].width = d + "px", this.updateNextLockedCol(f.parentElement, s, h - d);
90
90
  }
91
91
  });
92
92
  }
@@ -103,56 +103,56 @@ class S {
103
103
  this.colGroupPinnedBottom
104
104
  ].filter(Boolean);
105
105
  }
106
- applyWidthConstraints(a, s, h = 1) {
106
+ applyWidthConstraints(a, c, o = 1) {
107
107
  if (!a.width)
108
108
  return a.width || "";
109
- const o = a.width.toString();
110
- if (o.includes("%")) {
111
- const f = parseFloat(o) * h, l = Math.max(0, Math.min(100, f));
112
- return a.width = l + "%", a.width;
109
+ const n = a.width.toString();
110
+ if (n.includes("%")) {
111
+ const f = parseFloat(n) * o, h = Math.max(0, Math.min(100, f));
112
+ return a.width = h + "%", a.width;
113
113
  }
114
- let e = parseFloat(o) * h;
115
- const r = s.minResizableWidth === void 0 ? 10 : s.minResizableWidth, t = s == null ? void 0 : s.minWidth, i = t !== void 0 ? Math.max(r, t) : r, d = s == null ? void 0 : s.maxWidth;
114
+ let e = parseFloat(n) * o;
115
+ const r = c.minResizableWidth === void 0 ? 10 : c.minResizableWidth, t = c.minWidth, i = t !== void 0 ? Math.max(r, t) : r, d = c.maxWidth;
116
116
  return e < i && (e = i), d !== void 0 && e > d && (e = d), a.width = e, e;
117
117
  }
118
118
  fixateInitialWidths(a) {
119
119
  var r;
120
- let s = 0;
121
- const h = ((r = this.colGroupMain) == null ? void 0 : r.children) || [];
122
- for (let t = 0; t < h.length; t++)
123
- h[t].width ? a -= h[t].clientWidth : s++;
124
- if (s === 0)
120
+ let c = 0;
121
+ const o = ((r = this.colGroupMain) == null ? void 0 : r.children) || [];
122
+ for (let t = 0; t < o.length; t++)
123
+ o[t].width ? a -= o[t].clientWidth : c++;
124
+ if (c === 0)
125
125
  return;
126
- const o = Math.floor(a / s), c = u(this.columnsState), e = this.columns.filter((t) => !t.children.length);
127
- for (let t = 0; t < h.length; t++) {
128
- const i = h[t], d = i.width ? i.clientWidth : o, n = c.find((f) => f.id === e[t].id);
129
- n && (n.width = d.toString()), this.colGroups.forEach((f) => {
126
+ const n = Math.floor(a / c), l = p(this.columnsState), e = this.columns.filter((t) => !t.children.length);
127
+ for (let t = 0; t < o.length; t++) {
128
+ const i = o[t], d = i.width ? i.clientWidth : n, s = l.find((f) => f.id === e[t].id);
129
+ s && (s.width = d.toString()), this.colGroups.forEach((f) => {
130
130
  f.children[t].width = d;
131
131
  });
132
132
  }
133
133
  }
134
- setWidths(a, s) {
135
- const h = u(this.columnsState), o = this.columns.findIndex((t) => t.id === a.id), c = [];
134
+ setWidths(a, c) {
135
+ const o = p(this.columnsState), n = this.columns.findIndex((t) => t.id === a.id), l = [];
136
136
  let e = a.children.filter((t) => !t.hidden).length;
137
- for (let t = o + 1; t < this.columns.length && !(e <= 0); t++) {
137
+ for (let t = n + 1; t < this.columns.length && !(e <= 0); t++) {
138
138
  const i = this.columns[t];
139
- i.children.length ? e += i.children.filter((d) => !d.hidden).length : c.push(i), e--;
139
+ i.children.length ? e += i.children.filter((d) => !d.hidden).length : l.push(i), e--;
140
140
  }
141
- c.length === 0 && c.push(a);
141
+ l.length === 0 && l.push(a);
142
142
  const r = [];
143
- c.forEach((t) => {
144
- const i = h.find((d) => d.id === t.id);
145
- i && (this.applyWidthConstraints(i, t, s), r.push(i));
143
+ l.forEach((t) => {
144
+ const i = o.find((d) => d.id === t.id);
145
+ i && (this.applyWidthConstraints(i, t, c), r.push(i));
146
146
  }), this.updateColElements(r);
147
147
  }
148
- updateNextLockedCol(a, s, h) {
149
- const o = s.index, c = this.colGroupMain.parentElement.closest(".k-grid"), e = c == null ? void 0 : c.clientWidth, r = this.columns.filter((t) => t.locked).map((t) => parseInt(t.width + "", 10)).reduce((t, i) => t + i, 0);
150
- !s.locked || e <= r + m || this.columns.forEach((t) => {
151
- if (t != null && t.locked && h) {
148
+ updateNextLockedCol(a, c, o) {
149
+ const n = c.index, l = this.colGroupMain.parentElement.closest(".k-grid"), e = l == null ? void 0 : l.clientWidth, r = this.columns.filter((t) => t.locked).map((t) => parseInt(t.width + "", 10)).reduce((t, i) => t + i, 0);
150
+ !c.locked || e <= r + x || this.columns.forEach((t) => {
151
+ if (t != null && t.locked && o) {
152
152
  const i = a == null ? void 0 : a.querySelectorAll('[aria-colindex="' + t.ariaColumnIndex + '"]');
153
153
  i == null || i.forEach((d) => {
154
- const n = d.style;
155
- this.isRtl ? (t.index > o && n && n.right && (n.right = parseInt(n.right, 10) - h + "px"), t.index < o && n && n.left && (n.left = parseInt(n.left, 10) - h + "px")) : (t.index > o && n && n.left && (n.left = parseInt(n.left, 10) - h + "px"), t.index < o && n && n.right && (n.right = parseInt(n.right, 10) - h + "px"));
154
+ const s = d.style;
155
+ this.isRtl ? (t.index > n && s && s.right && (s.right = parseInt(s.right, 10) - o + "px"), t.index < n && s && s.left && (s.left = parseInt(s.left, 10) - o + "px")) : (t.index > n && s && s.left && (s.left = parseInt(s.left, 10) - o + "px"), t.index < n && s && s.right && (s.right = parseInt(s.right, 10) - o + "px"));
156
156
  });
157
157
  }
158
158
  });
package/getRowContents.js CHANGED
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("react"),s=require("@progress/kendo-react-common"),W=require("@progress/kendo-react-data-tools"),G=require("./utils/index.js"),X=require("./cells/datacell/GridCell.js"),Y=require("./cells/datacell/GridCellServer.js"),Z=require("./cells/editcell/GridEditCell.js"),ee=require("./cells/editcell/GridEditCellServer.js");function te(l){const d=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const t in l)if(t!=="default"){const g=Object.getOwnPropertyDescriptor(l,t);Object.defineProperty(d,t,g.get?g:{enumerable:!0,get:()=>l[t]})}}return d.default=l,Object.freeze(d)}const le=te(U);function oe(l,d,t,g,O,q,i){const{leafColumns:C,columnsState:R,idPrefix:_,gridClasses:A,unstyled:D,localization:N,intl:P,cells:j,isRowReorderable:x,sort:H,editable:K,isClient:v,isEditDialog:V,dataItemKey:o,select:b,highlight:S}=l;let T=!1;const c=b&&o&&s.getter(o)(t.dataItem)!==void 0?b[s.getter(o)(t.dataItem)]:void 0,f=S&&o&&s.getter(o)(t.dataItem)!==void 0?S[s.getter(o)(t.dataItem)]:void 0;return{row:(l.hasDynamicColSpan?l.getCellsToRender(t.dataItem):l.cellsToRender).map(({columnIndex:a,colSpan:z})=>{var h,I,k,m,E,w;const e=C[a],y=R[a],B=(I=(h=e.locked)!=null?h:y==null?void 0:y.locked)!=null?I:!1;let u;if((k=e.rowSpannable)!=null&&k.enabled&&t.rowType==="data"&&e.field&&i){const r=e.field?(E=(m=e.rowSpannable).valueGetter)==null?void 0:E.call(m,t.dataItem,e.field):null;u={value:r,count:1},i[e.field]&&((w=i[e.field])==null?void 0:w.value)===r&&i[e.field]!==null?(i[e.field].count++,u.count=null):i[e.field]=u}const M=e.id?e.id:a,$=s.classNames(A.contentSticky({locked:B}),e.className),F=e.left!==void 0?{left:e.left,right:e.right}:{};let p=!1;if(e.editable&&K){const r=d&&o?d[s.getter(o)(t.dataItem)]:void 0;let n;typeof r=="boolean"?n=r:Array.isArray(r)?n=e.field?r.indexOf(e.field)>-1:!1:n=e.field!==void 0&&r===e.field,n&&e.columnType==="data"&&(n===!0||n===e.field)&&(T=!0,V||(p=!0))}const L=e._type==="expand",J={locked:e.locked,id:W.tableKeyboardNavigationTools.generateNavigatableId(`${g}-${String(a)}`,_,L||t.rowType==="groupHeader"||t.rowType==="groupFooter"||e.field==="value"?"nodata":"cell"),colSpan:z,dataItem:t.dataItem,field:e.field,editor:e.editor,format:e.format,columnType:e.columnType,rowReorderable:x,className:$,cells:G.resolveCells(j,e.cells),columnIndex:a,columnsCount:C.length,rowType:t.rowType,level:t.level,expanded:t.expanded,dataIndex:t.dataIndex,rowDataIndex:O,columnPosition:F,style:{},ariaColumnIndex:e.ariaColumnIndex,isSelected:!!((e==null?void 0:e._type)==="edit"?c:Array.isArray(c)&&c.indexOf(a)>-1),isHighlighted:!!((e==null?void 0:e._type)==="edit"?f:Array.isArray(f)&&f.indexOf(a)>-1),isSorted:!!G.isSorted(e.field,H),isInEdit:p,isAlt:q,unstyled:D,group:t.group,localization:N,intl:P,_rowSpan:u},Q=e.defaultCell||p&&(v?Z.GridEditCell:ee.GridEditCellServer)||(v?X.GridCell:Y.GridCellServer);return le.createElement(Q,{key:M,cellProps:J})}),isInEdit:T,isSelected:typeof c=="boolean"&&c,isHighlighted:typeof f=="boolean"&&f}}exports.getRowContents=oe;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("react"),s=require("@progress/kendo-react-common"),W=require("@progress/kendo-react-data-tools"),G=require("./utils/index.js"),X=require("./cells/datacell/GridCell.js"),Y=require("./cells/datacell/GridCellServer.js"),Z=require("./cells/editcell/GridEditCell.js"),ee=require("./cells/editcell/GridEditCellServer.js");function te(l){const d=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const t in l)if(t!=="default"){const g=Object.getOwnPropertyDescriptor(l,t);Object.defineProperty(d,t,g.get?g:{enumerable:!0,get:()=>l[t]})}}return d.default=l,Object.freeze(d)}const le=te(U);function oe(l,d,t,g,O,q,i){const{leafColumns:C,columnsState:R,idPrefix:_,gridClasses:A,unstyled:D,localization:N,intl:P,cells:j,isRowReorderable:x,sort:H,editable:K,isClient:v,isEditDialog:V,dataItemKey:o,select:b,highlight:S}=l;let T=!1;const c=b&&o&&s.getter(o)(t.dataItem)!==void 0?b[s.getter(o)(t.dataItem)]:void 0,f=S&&o&&s.getter(o)(t.dataItem)!==void 0?S[s.getter(o)(t.dataItem)]:void 0;return{row:(l.hasDynamicColSpan?l.getCellsToRender(t.dataItem):l.cellsToRender).map(({columnIndex:a,colSpan:z})=>{var m,h,I,k,E,w;const e=C[a],y=R[a],B=(h=(m=e.locked)!=null?m:y==null?void 0:y.locked)!=null?h:!1;let u;if((I=e.rowSpannable)!=null&&I.enabled&&t.rowType==="data"&&e.field&&i){const r=e.field?(E=(k=e.rowSpannable).valueGetter)==null?void 0:E.call(k,t.dataItem,e.field):null;u={value:r,count:1},i[e.field]&&((w=i[e.field])==null?void 0:w.value)===r&&i[e.field]!==null?(i[e.field].count++,u.count=null):i[e.field]=u}const M=e.id?e.id:a,$=s.classNames(A.contentSticky({locked:B}),e.className),F=e.left!==void 0?{left:e.left,right:e.right}:{};let p=!1;if(e.editable&&K){const r=d&&o?d[s.getter(o)(t.dataItem)]:void 0;let n;typeof r=="boolean"?n=r:Array.isArray(r)?n=e.field?r.indexOf(e.field)>-1:!1:n=e.field!==void 0&&r===e.field,n&&e.columnType==="data"&&(n===!0||n===e.field)&&(T=!0,V||(p=!0))}const L=e._type==="expand",J={locked:e.locked,id:W.tableKeyboardNavigationTools.generateNavigatableId(`${g}-${String(a)}`,_,L||t.rowType==="groupHeader"||t.rowType==="groupFooter"||e.field==="value"?"nodata":"cell"),colSpan:z,dataItem:t.dataItem,field:e.field,editor:e.editor,format:e.format,columnType:e.columnType,rowReorderable:x,className:$,cells:G.resolveCells(j,e.cells),columnIndex:a,columnsCount:C.length,rowType:t.rowType,level:t.level,expanded:t.expanded,dataIndex:t.dataIndex,rowDataIndex:O,columnPosition:F,style:{},ariaColumnIndex:e.ariaColumnIndex,isSelected:!!(e._type==="edit"?c:Array.isArray(c)&&c.indexOf(a)>-1),isHighlighted:!!(e._type==="edit"?f:Array.isArray(f)&&f.indexOf(a)>-1),isSorted:!!G.isSorted(e.field,H),isInEdit:p,isAlt:q,unstyled:D,group:t.group,localization:N,intl:P,_rowSpan:u},Q=e.defaultCell||p&&(v?Z.GridEditCell:ee.GridEditCellServer)||(v?X.GridCell:Y.GridCellServer);return le.createElement(Q,{key:M,cellProps:J})}),isInEdit:T,isSelected:typeof c=="boolean"&&c,isHighlighted:typeof f=="boolean"&&f}}exports.getRowContents=oe;
@@ -33,22 +33,22 @@ function ce(c, y, l, w, A, G, a) {
33
33
  highlight: C
34
34
  } = c;
35
35
  let h = !1;
36
- const d = v && t && f(t)(l.dataItem) !== void 0 ? v[f(t)(l.dataItem)] : void 0, s = C && t && f(t)(l.dataItem) !== void 0 ? C[f(t)(l.dataItem)] : void 0;
36
+ const d = v && t && f(t)(l.dataItem) !== void 0 ? v[f(t)(l.dataItem)] : void 0, n = C && t && f(t)(l.dataItem) !== void 0 ? C[f(t)(l.dataItem)] : void 0;
37
37
  return {
38
38
  row: (c.hasDynamicColSpan ? c.getCellsToRender(l.dataItem) : c.cellsToRender).map(({ columnIndex: i, colSpan: $ }) => {
39
39
  var b, I, S, T, k, E;
40
- const e = g[i], p = N[i], z = (I = (b = e.locked) != null ? b : p == null ? void 0 : p.locked) != null ? I : !1;
41
- let n;
40
+ const e = g[i], u = N[i], z = (I = (b = e.locked) != null ? b : u == null ? void 0 : u.locked) != null ? I : !1;
41
+ let s;
42
42
  if ((S = e.rowSpannable) != null && S.enabled && l.rowType === "data" && e.field && a) {
43
43
  const o = e.field ? (k = (T = e.rowSpannable).valueGetter) == null ? void 0 : k.call(T, l.dataItem, e.field) : null;
44
- n = { value: o, count: 1 }, a[e.field] && ((E = a[e.field]) == null ? void 0 : E.value) === o && a[e.field] !== null ? (a[e.field].count++, n.count = null) : a[e.field] = n;
44
+ s = { value: o, count: 1 }, a[e.field] && ((E = a[e.field]) == null ? void 0 : E.value) === o && a[e.field] !== null ? (a[e.field].count++, s.count = null) : a[e.field] = s;
45
45
  }
46
46
  const F = e.id ? e.id : i, L = U(_.contentSticky({ locked: z }), e.className), j = e.left !== void 0 ? { left: e.left, right: e.right } : {};
47
- let u = !1;
47
+ let p = !1;
48
48
  if (e.editable && V) {
49
49
  const o = y && t ? y[f(t)(l.dataItem)] : void 0;
50
50
  let r;
51
- typeof o == "boolean" ? r = o : Array.isArray(o) ? r = e.field ? o.indexOf(e.field) > -1 : !1 : r = e.field !== void 0 && o === e.field, r && e.columnType === "data" && (r === !0 || r === e.field) && (h = !0, B || (u = !0));
51
+ typeof o == "boolean" ? r = o : Array.isArray(o) ? r = e.field ? o.indexOf(e.field) > -1 : !1 : r = e.field !== void 0 && o === e.field, r && e.columnType === "data" && (r === !0 || r === e.field) && (h = !0, B || (p = !0));
52
52
  }
53
53
  const q = e._type === "expand", J = {
54
54
  locked: e.locked,
@@ -76,22 +76,22 @@ function ce(c, y, l, w, A, G, a) {
76
76
  columnPosition: j,
77
77
  style: {},
78
78
  ariaColumnIndex: e.ariaColumnIndex,
79
- isSelected: !!((e == null ? void 0 : e._type) === "edit" ? d : Array.isArray(d) && d.indexOf(i) > -1),
80
- isHighlighted: !!((e == null ? void 0 : e._type) === "edit" ? s : Array.isArray(s) && s.indexOf(i) > -1),
79
+ isSelected: !!(e._type === "edit" ? d : Array.isArray(d) && d.indexOf(i) > -1),
80
+ isHighlighted: !!(e._type === "edit" ? n : Array.isArray(n) && n.indexOf(i) > -1),
81
81
  isSorted: !!X(e.field, R),
82
- isInEdit: u,
82
+ isInEdit: p,
83
83
  isAlt: G,
84
84
  unstyled: D,
85
85
  group: l.group,
86
86
  localization: H,
87
87
  intl: K,
88
- _rowSpan: n
89
- }, M = e.defaultCell || u && (m ? le : te) || (m ? Z : ee);
88
+ _rowSpan: s
89
+ }, M = e.defaultCell || p && (m ? le : te) || (m ? Z : ee);
90
90
  return /* @__PURE__ */ Q.createElement(M, { key: F, cellProps: J });
91
91
  }),
92
92
  isInEdit: h,
93
93
  isSelected: typeof d == "boolean" && d,
94
- isHighlighted: typeof s == "boolean" && s
94
+ isHighlighted: typeof n == "boolean" && n
95
95
  };
96
96
  }
97
97
  export {
package/index.d.mts CHANGED
@@ -63,6 +63,7 @@ import { GridAIPrompt, GridAIPromptProps } from './toolbar-tools/ai-tool/GridAIP
63
63
  import { GridNoRecords } from './components/noRecords/GridNoRecords.js';
64
64
  import { GridNoRecordsProps } from './interfaces/GridNoRecordsProps';
65
65
  import { GridSortSettings } from './interfaces/GridSortSettings';
66
+ import { GridScrollableSettings } from './interfaces/GridScrollableSettings';
66
67
  import { GridPagerSettings } from './paging/GridPagerSettings.js';
67
68
  import { GridGroupableSettings } from './interfaces/GridGroupableSettings';
68
69
  import { GridColumnMenuItem } from './columnMenu/GridColumnMenuItem.js';
@@ -94,6 +95,6 @@ export * from './GridSearchBox.js';
94
95
  export * from './GridPdfExportButton.js';
95
96
  export * from './GridCsvExportButton.js';
96
97
  export * from './toolbar-tools/smartbox/index.js';
97
- export { CompositeHighlightDescriptor, Grid, GridHandle, GridHighlightDescriptor, GridProps, GridColumn, GridColumnProps, GridColSpanProps, GridEditDialogProps, GridColumnChildrenProps, GridCellProps, GridColumnType, GridRowReorderEvent, GridDataType, GridRowReorderSettings, GridCell, GridEditCell, GridGroupCell, GridHierarchyCell, GridDetailRow, GridDetailRowProps, GridRow, GridRowProps, GridFilterCell, GridFilterCellProps, GridHeaderCell, GridHeaderCellProps, GridSelectionCell, GridColumnMenuProps, GridReorderDropPosition, GridColumnMenuSort, GridColumnMenuFilter, GridColumnMenuGroup, GridColumnMenuItem, GridColumnMenuItemContent, GridColumnMenuItemGroup, GridColumnMenuFilterUI, GridColumnMenuFilterUIProps, GridColumnMenuFilterCell, GridColumnMenuFilterCellProps, GridColumnMenuCheckboxFilter, GridColumnMenuCheckboxFilterProps, GridColumnMenuColumnsList, GridColumnMenuColumnsListProps, GridColumnMenuColumnsChooser, GridColumnMenuColumnsChooserProps, GridColumnMenuColumnProps, GridColumnState, GridRowType, GridToolbar, GridToolbarProps, GridToolbarAIAssistant, GridToolbarAIAssistantHandle, GridToolbarAIAssistantProps, GridToolbarAIAssistantRequestData, GridAIAssistantCommand, GridAICommands, GridAIPrompt, GridAIPromptProps, GridToolbarSpacer, GridToolbarSpacerProps, GridToolbarSeparator, GridToolbarSeparatorProps, GridToolbarCheckboxFilter, GridToolbarCheckboxFilterProps, GridToolbarColumnsChooser, GridToolbarColumnsChooserProps, GridToolbarFilter, GridToolbarFilterProps, GridToolbarSort, GridToolbarSortProps, GridToolbarGroup, GridToolbarGroupProps, GridNoRecords, GridNoRecordsProps, GridSortSettings, GridPagerSettings, GridGroupableSettings, GridFooterCellProps, GridSelectableMode, GridSelectableSettings, GridFilterOperators, GridFilterOperator, GridColumnMenuWrapper, GridColumnMenuWrapperProps, getSelectedState, setSelectedState, getSelectedStateFromKeyDown, GRID_COL_INDEX_ATTRIBUTE, GRID_ROW_INDEX_ATTRIBUTE, GRID_PREVENT_SELECTION_ELEMENT, GridCommonDragLogic, rootFilterOrDefault, filterGroupByField, isColumnMenuSortActive, isColumnMenuFilterActive, GridColumnMenuFilterProps, cellBoolDropdownChange, cellInputChange, cellOperatorChange, booleanFilterValues, operators, combineSmartFilters, parseFilterDates, GridRowSpannableSettings, handleAIResponse, GridAIState, GridAIResponseResult, GridCSVExportOptions, useGridAIRequest, GridAIRequestData, UseGridAIRequestOptions, UseGridAIRequestReturn, GridRowPinChangeEvent, GridWebMcpProps, GridWebMcpToolsCallback, GridWebMcpToolsHelpers, McpToolOption, GridAIRequestConfig, GridAIResponse, GridAIHttpClient, createAxiosAIClient };
98
+ export { CompositeHighlightDescriptor, Grid, GridHandle, GridHighlightDescriptor, GridProps, GridColumn, GridColumnProps, GridColSpanProps, GridEditDialogProps, GridColumnChildrenProps, GridCellProps, GridColumnType, GridRowReorderEvent, GridDataType, GridRowReorderSettings, GridCell, GridEditCell, GridGroupCell, GridHierarchyCell, GridDetailRow, GridDetailRowProps, GridRow, GridRowProps, GridFilterCell, GridFilterCellProps, GridHeaderCell, GridHeaderCellProps, GridSelectionCell, GridColumnMenuProps, GridReorderDropPosition, GridColumnMenuSort, GridColumnMenuFilter, GridColumnMenuGroup, GridColumnMenuItem, GridColumnMenuItemContent, GridColumnMenuItemGroup, GridColumnMenuFilterUI, GridColumnMenuFilterUIProps, GridColumnMenuFilterCell, GridColumnMenuFilterCellProps, GridColumnMenuCheckboxFilter, GridColumnMenuCheckboxFilterProps, GridColumnMenuColumnsList, GridColumnMenuColumnsListProps, GridColumnMenuColumnsChooser, GridColumnMenuColumnsChooserProps, GridColumnMenuColumnProps, GridColumnState, GridRowType, GridToolbar, GridToolbarProps, GridToolbarAIAssistant, GridToolbarAIAssistantHandle, GridToolbarAIAssistantProps, GridToolbarAIAssistantRequestData, GridAIAssistantCommand, GridAICommands, GridAIPrompt, GridAIPromptProps, GridToolbarSpacer, GridToolbarSpacerProps, GridToolbarSeparator, GridToolbarSeparatorProps, GridToolbarCheckboxFilter, GridToolbarCheckboxFilterProps, GridToolbarColumnsChooser, GridToolbarColumnsChooserProps, GridToolbarFilter, GridToolbarFilterProps, GridToolbarSort, GridToolbarSortProps, GridToolbarGroup, GridToolbarGroupProps, GridNoRecords, GridNoRecordsProps, GridSortSettings, GridScrollableSettings, GridPagerSettings, GridGroupableSettings, GridFooterCellProps, GridSelectableMode, GridSelectableSettings, GridFilterOperators, GridFilterOperator, GridColumnMenuWrapper, GridColumnMenuWrapperProps, getSelectedState, setSelectedState, getSelectedStateFromKeyDown, GRID_COL_INDEX_ATTRIBUTE, GRID_ROW_INDEX_ATTRIBUTE, GRID_PREVENT_SELECTION_ELEMENT, GridCommonDragLogic, rootFilterOrDefault, filterGroupByField, isColumnMenuSortActive, isColumnMenuFilterActive, GridColumnMenuFilterProps, cellBoolDropdownChange, cellInputChange, cellOperatorChange, booleanFilterValues, operators, combineSmartFilters, parseFilterDates, GridRowSpannableSettings, handleAIResponse, GridAIState, GridAIResponseResult, GridCSVExportOptions, useGridAIRequest, GridAIRequestData, UseGridAIRequestOptions, UseGridAIRequestReturn, GridRowPinChangeEvent, GridWebMcpProps, GridWebMcpToolsCallback, GridWebMcpToolsHelpers, McpToolOption, GridAIRequestConfig, GridAIResponse, GridAIHttpClient, createAxiosAIClient };
98
99
  export { GridPinCell, GridHeaderPinCell };
99
100
  export * from './interfaces/GridStackedLayoutSettings';
package/index.d.ts CHANGED
@@ -63,6 +63,7 @@ import { GridAIPrompt, GridAIPromptProps } from './toolbar-tools/ai-tool/GridAIP
63
63
  import { GridNoRecords } from './components/noRecords/GridNoRecords.js';
64
64
  import { GridNoRecordsProps } from './interfaces/GridNoRecordsProps';
65
65
  import { GridSortSettings } from './interfaces/GridSortSettings';
66
+ import { GridScrollableSettings } from './interfaces/GridScrollableSettings';
66
67
  import { GridPagerSettings } from './paging/GridPagerSettings.js';
67
68
  import { GridGroupableSettings } from './interfaces/GridGroupableSettings';
68
69
  import { GridColumnMenuItem } from './columnMenu/GridColumnMenuItem.js';
@@ -94,6 +95,6 @@ export * from './GridSearchBox.js';
94
95
  export * from './GridPdfExportButton.js';
95
96
  export * from './GridCsvExportButton.js';
96
97
  export * from './toolbar-tools/smartbox/index.js';
97
- export { CompositeHighlightDescriptor, Grid, GridHandle, GridHighlightDescriptor, GridProps, GridColumn, GridColumnProps, GridColSpanProps, GridEditDialogProps, GridColumnChildrenProps, GridCellProps, GridColumnType, GridRowReorderEvent, GridDataType, GridRowReorderSettings, GridCell, GridEditCell, GridGroupCell, GridHierarchyCell, GridDetailRow, GridDetailRowProps, GridRow, GridRowProps, GridFilterCell, GridFilterCellProps, GridHeaderCell, GridHeaderCellProps, GridSelectionCell, GridColumnMenuProps, GridReorderDropPosition, GridColumnMenuSort, GridColumnMenuFilter, GridColumnMenuGroup, GridColumnMenuItem, GridColumnMenuItemContent, GridColumnMenuItemGroup, GridColumnMenuFilterUI, GridColumnMenuFilterUIProps, GridColumnMenuFilterCell, GridColumnMenuFilterCellProps, GridColumnMenuCheckboxFilter, GridColumnMenuCheckboxFilterProps, GridColumnMenuColumnsList, GridColumnMenuColumnsListProps, GridColumnMenuColumnsChooser, GridColumnMenuColumnsChooserProps, GridColumnMenuColumnProps, GridColumnState, GridRowType, GridToolbar, GridToolbarProps, GridToolbarAIAssistant, GridToolbarAIAssistantHandle, GridToolbarAIAssistantProps, GridToolbarAIAssistantRequestData, GridAIAssistantCommand, GridAICommands, GridAIPrompt, GridAIPromptProps, GridToolbarSpacer, GridToolbarSpacerProps, GridToolbarSeparator, GridToolbarSeparatorProps, GridToolbarCheckboxFilter, GridToolbarCheckboxFilterProps, GridToolbarColumnsChooser, GridToolbarColumnsChooserProps, GridToolbarFilter, GridToolbarFilterProps, GridToolbarSort, GridToolbarSortProps, GridToolbarGroup, GridToolbarGroupProps, GridNoRecords, GridNoRecordsProps, GridSortSettings, GridPagerSettings, GridGroupableSettings, GridFooterCellProps, GridSelectableMode, GridSelectableSettings, GridFilterOperators, GridFilterOperator, GridColumnMenuWrapper, GridColumnMenuWrapperProps, getSelectedState, setSelectedState, getSelectedStateFromKeyDown, GRID_COL_INDEX_ATTRIBUTE, GRID_ROW_INDEX_ATTRIBUTE, GRID_PREVENT_SELECTION_ELEMENT, GridCommonDragLogic, rootFilterOrDefault, filterGroupByField, isColumnMenuSortActive, isColumnMenuFilterActive, GridColumnMenuFilterProps, cellBoolDropdownChange, cellInputChange, cellOperatorChange, booleanFilterValues, operators, combineSmartFilters, parseFilterDates, GridRowSpannableSettings, handleAIResponse, GridAIState, GridAIResponseResult, GridCSVExportOptions, useGridAIRequest, GridAIRequestData, UseGridAIRequestOptions, UseGridAIRequestReturn, GridRowPinChangeEvent, GridWebMcpProps, GridWebMcpToolsCallback, GridWebMcpToolsHelpers, McpToolOption, GridAIRequestConfig, GridAIResponse, GridAIHttpClient, createAxiosAIClient };
98
+ export { CompositeHighlightDescriptor, Grid, GridHandle, GridHighlightDescriptor, GridProps, GridColumn, GridColumnProps, GridColSpanProps, GridEditDialogProps, GridColumnChildrenProps, GridCellProps, GridColumnType, GridRowReorderEvent, GridDataType, GridRowReorderSettings, GridCell, GridEditCell, GridGroupCell, GridHierarchyCell, GridDetailRow, GridDetailRowProps, GridRow, GridRowProps, GridFilterCell, GridFilterCellProps, GridHeaderCell, GridHeaderCellProps, GridSelectionCell, GridColumnMenuProps, GridReorderDropPosition, GridColumnMenuSort, GridColumnMenuFilter, GridColumnMenuGroup, GridColumnMenuItem, GridColumnMenuItemContent, GridColumnMenuItemGroup, GridColumnMenuFilterUI, GridColumnMenuFilterUIProps, GridColumnMenuFilterCell, GridColumnMenuFilterCellProps, GridColumnMenuCheckboxFilter, GridColumnMenuCheckboxFilterProps, GridColumnMenuColumnsList, GridColumnMenuColumnsListProps, GridColumnMenuColumnsChooser, GridColumnMenuColumnsChooserProps, GridColumnMenuColumnProps, GridColumnState, GridRowType, GridToolbar, GridToolbarProps, GridToolbarAIAssistant, GridToolbarAIAssistantHandle, GridToolbarAIAssistantProps, GridToolbarAIAssistantRequestData, GridAIAssistantCommand, GridAICommands, GridAIPrompt, GridAIPromptProps, GridToolbarSpacer, GridToolbarSpacerProps, GridToolbarSeparator, GridToolbarSeparatorProps, GridToolbarCheckboxFilter, GridToolbarCheckboxFilterProps, GridToolbarColumnsChooser, GridToolbarColumnsChooserProps, GridToolbarFilter, GridToolbarFilterProps, GridToolbarSort, GridToolbarSortProps, GridToolbarGroup, GridToolbarGroupProps, GridNoRecords, GridNoRecordsProps, GridSortSettings, GridScrollableSettings, GridPagerSettings, GridGroupableSettings, GridFooterCellProps, GridSelectableMode, GridSelectableSettings, GridFilterOperators, GridFilterOperator, GridColumnMenuWrapper, GridColumnMenuWrapperProps, getSelectedState, setSelectedState, getSelectedStateFromKeyDown, GRID_COL_INDEX_ATTRIBUTE, GRID_ROW_INDEX_ATTRIBUTE, GRID_PREVENT_SELECTION_ELEMENT, GridCommonDragLogic, rootFilterOrDefault, filterGroupByField, isColumnMenuSortActive, isColumnMenuFilterActive, GridColumnMenuFilterProps, cellBoolDropdownChange, cellInputChange, cellOperatorChange, booleanFilterValues, operators, combineSmartFilters, parseFilterDates, GridRowSpannableSettings, handleAIResponse, GridAIState, GridAIResponseResult, GridCSVExportOptions, useGridAIRequest, GridAIRequestData, UseGridAIRequestOptions, UseGridAIRequestReturn, GridRowPinChangeEvent, GridWebMcpProps, GridWebMcpToolsCallback, GridWebMcpToolsHelpers, McpToolOption, GridAIRequestConfig, GridAIResponse, GridAIHttpClient, createAxiosAIClient };
98
99
  export { GridPinCell, GridHeaderPinCell };
99
100
  export * from './interfaces/GridStackedLayoutSettings';
@@ -12,6 +12,7 @@ import { GridGroupableSettings } from './GridGroupableSettings';
12
12
  import { GridWebMcpProps } from '../GridWebMcpProps';
13
13
  import { GridSortChangeEvent, GridFilterChangeEvent, GridPageChangeEvent, GridSelectionChangeEvent, GridHeaderSelectionChangeEvent, GridRowClickEvent, GridItemChangeEvent, GridDataStateChangeEvent, GridColumnResizeEvent, GridColumnReorderEvent, GridGroupChangeEvent, GridEvent, GridRowDoubleClickEvent, GridNavigationActionEvent, GridKeyDownEvent, GridContextMenuEvent, GridContextMenuItemClickEvent, GridEditChangeEvent, GridDetailExpandChangeEvent, GridGroupExpandChangeEvent, GridRowReorderEvent, GridSearchChangeEvent, GridColumnsStateChangeEvent, GridHighlightChangeEvent, GridRowPinChangeEvent } from './events';
14
14
  import { ScrollMode } from '../ScrollMode';
15
+ import { GridScrollableSettings } from './GridScrollableSettings';
15
16
  import { GridSortSettings } from './GridSortSettings';
16
17
  import { GridPagerSettings } from '../paging/GridPagerSettings.js';
17
18
  import { GridDetailRowProps } from '../interfaces/GridDetailRowProps';
@@ -807,7 +808,7 @@ export interface GridProps extends KendoReactComponentBaseProps {
807
808
  * <Grid scrollable="virtual" />
808
809
  * ```
809
810
  */
810
- scrollable?: ScrollMode;
811
+ scrollable?: ScrollMode | GridScrollableSettings;
811
812
  /**
812
813
  * Defines the row height and forces an equal height to all rows ([see example](https://www.telerik.com/kendo-react-ui/components/grid/scroll-modes)).
813
814
  *
@@ -0,0 +1,33 @@
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 { ScrollMode } from '../ScrollMode';
9
+ /**
10
+ * Defines the scrollable settings for the Grid.
11
+ */
12
+ export interface GridScrollableSettings {
13
+ /**
14
+ * Specifies the scroll mode.
15
+ *
16
+ * The available options are:
17
+ * - `none`&mdash;Renders no scrollbar.
18
+ * - `scrollable`&mdash;Default scroll mode. Requires the `height` option.
19
+ * - `virtual`&mdash;Renders a portion of the data while the user scrolls.
20
+ */
21
+ mode?: ScrollMode;
22
+ /**
23
+ * Controls the scrollbar rendering style.
24
+ *
25
+ * - `default`&mdash;Uses the native browser scrollbar (default).
26
+ * - `proxied`&mdash;Renders a custom overlay scrollbar on top of the content area.
27
+ * The overlay appears on hover or scroll and hides when idle,
28
+ * eliminating the white-space flash during virtual scrolling jumps.
29
+ *
30
+ * @default 'default'
31
+ */
32
+ scrollbar?: 'default' | 'proxied';
33
+ }
@@ -23,7 +23,9 @@ export interface VirtualScrollInterface {
23
23
  fixedScroll: boolean;
24
24
  tableTransform: string;
25
25
  rowHeightService?: RowHeightService;
26
+ scrollbarOverlaySpacerElement: HTMLDivElement | null;
26
27
  reset: () => void;
27
28
  scrollHandler(e: SyntheticEvent<HTMLDivElement>): void;
29
+ scrollToPosition(scrollTop: number, e: SyntheticEvent<HTMLDivElement>, deferTranslate?: boolean): void;
28
30
  update(): void;
29
31
  }
@@ -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 e=Object.freeze({name:"@progress/kendo-react-grid",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1782141011,version:"15.1.0-develop.1",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"});exports.packageMetadata=e;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=Object.freeze({name:"@progress/kendo-react-grid",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1783504177,version:"15.1.0-develop.10",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"});exports.packageMetadata=e;
@@ -7,7 +7,7 @@ export const packageMetadata = Object.freeze({
7
7
  productName: 'KendoReact',
8
8
  productCode: 'KENDOUIREACT',
9
9
  productCodes: ['KENDOUIREACT'],
10
- publishDate: 1782141011,
11
- version: '15.1.0-develop.1',
10
+ publishDate: 1783504177,
11
+ version: '15.1.0-develop.10',
12
12
  licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/components/my-license/'
13
13
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-react-grid",
3
- "version": "15.1.0-develop.1",
3
+ "version": "15.1.0-develop.10",
4
4
  "description": "React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package",
5
5
  "author": "Progress",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -30,21 +30,21 @@
30
30
  "@progress/kendo-drawing": "^1.21.2",
31
31
  "@progress/kendo-file-saver": "^1.1.1",
32
32
  "@progress/kendo-licensing": "^1.7.2",
33
- "@progress/kendo-react-animation": "15.1.0-develop.1",
34
- "@progress/kendo-react-buttons": "15.1.0-develop.1",
35
- "@progress/kendo-react-common": "15.1.0-develop.1",
36
- "@progress/kendo-react-data-tools": "15.1.0-develop.1",
37
- "@progress/kendo-react-dateinputs": "15.1.0-develop.1",
38
- "@progress/kendo-react-indicators": "15.1.0-develop.1",
39
- "@progress/kendo-react-form": "15.1.0-develop.1",
40
- "@progress/kendo-react-labels": "15.1.0-develop.1",
41
- "@progress/kendo-react-dialogs": "15.1.0-develop.1",
42
- "@progress/kendo-react-dropdowns": "15.1.0-develop.1",
43
- "@progress/kendo-react-inputs": "15.1.0-develop.1",
44
- "@progress/kendo-react-intl": "15.1.0-develop.1",
45
- "@progress/kendo-react-popup": "15.1.0-develop.1",
46
- "@progress/kendo-react-layout": "15.1.0-develop.1",
47
- "@progress/kendo-react-conversational-ui": "15.1.0-develop.1",
33
+ "@progress/kendo-react-animation": "15.1.0-develop.10",
34
+ "@progress/kendo-react-buttons": "15.1.0-develop.10",
35
+ "@progress/kendo-react-common": "15.1.0-develop.10",
36
+ "@progress/kendo-react-data-tools": "15.1.0-develop.10",
37
+ "@progress/kendo-react-dateinputs": "15.1.0-develop.10",
38
+ "@progress/kendo-react-indicators": "15.1.0-develop.10",
39
+ "@progress/kendo-react-form": "15.1.0-develop.10",
40
+ "@progress/kendo-react-labels": "15.1.0-develop.10",
41
+ "@progress/kendo-react-dialogs": "15.1.0-develop.10",
42
+ "@progress/kendo-react-dropdowns": "15.1.0-develop.10",
43
+ "@progress/kendo-react-inputs": "15.1.0-develop.10",
44
+ "@progress/kendo-react-intl": "15.1.0-develop.10",
45
+ "@progress/kendo-react-popup": "15.1.0-develop.10",
46
+ "@progress/kendo-react-layout": "15.1.0-develop.10",
47
+ "@progress/kendo-react-conversational-ui": "15.1.0-develop.10",
48
48
  "@progress/kendo-svg-icons": "^4.9.0 || ^5.0.0",
49
49
  "react": "^18.0.0 || ^19.0.0",
50
50
  "react-dom": "^18.0.0 || ^19.0.0"
@@ -148,7 +148,7 @@
148
148
  "package": {
149
149
  "productName": "KendoReact",
150
150
  "productCode": "KENDOUIREACT",
151
- "publishDate": 1782141011,
151
+ "publishDate": 1783504177,
152
152
  "licensingDocsUrl": "https://www.telerik.com/kendo-react-ui/components/my-license/"
153
153
  }
154
154
  },
@@ -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 le=require("react"),re=require("react-dom"),T=require("@progress/kendo-react-buttons"),f=require("@progress/kendo-react-common"),E=require("@progress/kendo-react-inputs"),_=require("@progress/kendo-svg-icons"),se=require("../columnMenu/GridColumnMenuItemContent.js"),l=require("../messages/index.js"),ce=require("../utils/GridContext.js"),ae=require("@progress/kendo-react-intl"),ue=require("./adaptiveContent/GridAdaptiveToolbarColumnChooser.js"),ie=require("@progress/kendo-react-popup"),H=require("@progress/kendo-react-indicators"),me=require("./adaptiveContext/GridToolbarAdaptiveContext.js");function de(r){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(c,n,s.get?s:{enumerable:!0,get:()=>r[n]})}}return c.default=r,Object.freeze(c)}const e=de(le),V=r=>{const c={};for(const n of r)c[n.id||""]=!n.hidden;return c},$=r=>{var F,K;const{onCloseMenu:c}=r,n=e.useContext(ce.GridContext),s=n.columnsState,M=n.onColumnsStateChange,b=s||[],[y,k]=e.useState(!1),[d,W]=e.useState(""),[w,p]=e.useState(!1),[a,S]=e.useState(()=>V(b)),J=e.useMemo(()=>b.map(t=>`${t.id}:${!!t.hidden}`).join(","),[b]),B=e.useMemo(()=>V(b),[J]);e.useEffect(()=>{w||S(B)},[w,B]);const i=e.useRef(null),R=e.useRef(null),q=e.useRef(null),A=e.useRef(0),m=ae.useLocalization(),Q=f.useDocument(i),x=e.useMemo(()=>(s==null?void 0:s.filter(t=>{var o;return(o=t.title||t.field)==null?void 0:o.toLowerCase().includes(d.toLowerCase())}))||[],[s,d]),g=e.useMemo(()=>Object.values(a).filter(t=>t).length,[a]),C=e.useMemo(()=>g===(s==null?void 0:s.length),[s,g]),D=e.useCallback(t=>{t.preventDefault();const u=(h=>(h==null?void 0:h.map(v=>({...v,hidden:!a[v.id||""]})))||[])(s);M&&M(u),c==null||c(),k(!1),p(!1)},[s,M,c,a]),N=t=>{t.preventDefault(),S(B),p(!1)},G=e.useCallback(()=>{S(t=>{const o={...t};return Object.keys(o).forEach((h,v)=>o[h]=C&&v===0?!0:!C),o}),p(!0)},[C]),O=e.useCallback((t,o)=>{S(u=>({...u,[o||""]:t})),p(!0)},[]),L=t=>{W(String(t.target.value))},U=t=>{t.preventDefault(),k(!y)},I=e.useMemo(()=>r.show!==void 0?r.show:y,[r.show,y]),P=()=>{var t;c&&c(),k(!1),i.current&&((t=i.current.element)==null||t.focus())},X=t=>{const o=f.getActiveElement(document);clearTimeout(A.current),A.current=window.setTimeout(()=>{!n.mobileMode&&o&&t.relatedTarget!==i.current&&R.current&&!R.current.contains(o)&&P()})},Y=()=>{clearTimeout(A.current)},{onFocus:Z,onBlur:ee}=f.useAsyncFocusBlur({onFocus:t=>Y(),onBlur:t=>X(t)}),te=t=>{var o;(o=q.current)==null||o.triggerMouseEvent(t)},oe=t=>{var o;(o=q.current)==null||o.triggerKeyboardEvent(t)},ne=t=>{!t.isAnchorClicked&&k(!1)},j=e.createElement(se.GridColumnMenuItemContent,{show:!0},e.createElement("form",{onSubmit:D,onReset:N,className:"k-filter-menu"},e.createElement("div",{className:"k-filter-menu-container"},e.createElement(E.TextBox,{className:"k-searchbox",value:d,onChange:L,size:n.mobileMode?"large":"medium",prefix:()=>e.createElement(E.InputPrefix,null,e.createElement(f.IconWrap,{name:"search",icon:_.searchIcon}))}),e.createElement("ul",{className:"k-reset k-multicheck-wrap"},!d&&e.createElement("li",{className:"k-item k-check-all-wrap"},e.createElement(E.Checkbox,{checked:C,onChange:G,label:m.toLanguageString(l.filterSelectAll,l.messages[l.filterSelectAll]),size:n.mobileMode?"large":"medium"})),x.map(t=>e.createElement("li",{key:t.id,className:"k-item"},e.createElement(E.Checkbox,{disabled:a[t.id||""]&&g===1,checked:a[t.id||""],onChange:o=>{var u;return O(!!((u=o.target.element)!=null&&u.checked),t.id)},label:t.title||t.field,size:n.mobileMode?"large":"medium"})))),e.createElement("div",{className:"k-filter-selected-items"},g," ",m.toLanguageString(l.columnMenuColumnChooserSelectedItems,l.messages[l.columnMenuColumnChooserSelectedItems])),e.createElement("div",{className:"k-actions k-actions-start k-actions-horizontal"},e.createElement(T.Button,{type:"submit",themeColor:"primary"},m.toLanguageString(l.filterApplyButton,l.messages[l.filterApplyButton])),e.createElement(T.Button,{type:"reset"},m.toLanguageString(l.filterResetButton,l.messages[l.filterResetButton])))))),z=e.createElement(T.Button,{ref:i,togglable:!0,selected:I,svgIcon:r.svgIcon?r.svgIcon:r.icon?void 0:_.columnsIcon,icon:r.icon,size:n.mobileMode?"large":"medium",className:f.classNames("k-toolbar-button",{"k-icon-button":n.mobileMode}),title:m.toLanguageString(l.toolbarColumnsChooser,l.messages[l.toolbarColumnsChooser]),onClick:U},!n.mobileMode&&m.toLanguageString(l.toolbarColumnsChooser,l.messages[l.toolbarColumnsChooser]));return e.createElement(e.Fragment,null,w?e.createElement(H.BadgeContainer,null,z,e.createElement(H.Badge,{themeColor:"primary"})):z,n.mobileMode?e.createElement(me.GridToolbarAdaptiveProvider,null,re.createPortal(e.createElement(ue.GridAdaptiveToolbarColumnChooser,{computedShow:I,filter:d,filtered:x,selectedColumns:a,allSelected:C,checkedCount:g,onClose:P,onApply:D,onReset:N,onFilter:L,onCheckChange:O,onSelectAll:G},j),(F=Q())==null?void 0:F.body)):e.createElement(ie.Popup,{anchor:(K=i.current)==null?void 0:K.element,show:I,popupClass:"k-grid-columnmenu-popup",onMouseDownOutside:ne},e.createElement("div",{ref:R,onBlur:ee,onFocus:Z,onMouseDown:te,onKeyDown:oe,className:"k-column-menu k-column-menu-md"},j)))};$.displayName="KendoReactGridToolbarColumnsChooser";exports.GridToolbarColumnsChooser=$;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const le=require("react"),re=require("react-dom"),T=require("@progress/kendo-react-buttons"),f=require("@progress/kendo-react-common"),E=require("@progress/kendo-react-inputs"),K=require("@progress/kendo-svg-icons"),se=require("../columnMenu/GridColumnMenuItemContent.js"),l=require("../messages/index.js"),ce=require("../utils/GridContext.js"),ae=require("@progress/kendo-react-intl"),ue=require("./adaptiveContent/GridAdaptiveToolbarColumnChooser.js"),ie=require("@progress/kendo-react-popup"),_=require("@progress/kendo-react-indicators"),me=require("./adaptiveContext/GridToolbarAdaptiveContext.js");function de(r){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(c,n,s.get?s:{enumerable:!0,get:()=>r[n]})}}return c.default=r,Object.freeze(c)}const e=de(le),H=r=>{const c={};for(const n of r)c[n.id||""]=!n.hidden;return c},V=r=>{var z,F;const{onCloseMenu:c}=r,n=e.useContext(ce.GridContext),s=n.columnsState,M=n.onColumnsStateChange,b=s||[],[y,k]=e.useState(!1),[d,$]=e.useState(""),[w,p]=e.useState(!1),[a,S]=e.useState(()=>H(b)),W=e.useMemo(()=>b.map(t=>`${t.id}:${!!t.hidden}`).join(","),[b]),B=e.useMemo(()=>H(b),[W]);e.useEffect(()=>{w||S(B)},[w,B]);const i=e.useRef(null),R=e.useRef(null),q=e.useRef(null),A=e.useRef(0),m=ae.useLocalization(),J=f.useDocument(i),x=e.useMemo(()=>(s==null?void 0:s.filter(t=>{var o;return(o=t.title||t.field)==null?void 0:o.toLowerCase().includes(d.toLowerCase())}))||[],[s,d]),g=e.useMemo(()=>Object.values(a).filter(t=>t).length,[a]),C=e.useMemo(()=>g===(s==null?void 0:s.length),[s,g]),D=e.useCallback(t=>{t.preventDefault();const u=(h=>(h==null?void 0:h.map(v=>({...v,hidden:!a[v.id||""]})))||[])(s);M&&M(u),c==null||c(),k(!1),p(!1)},[s,M,c,a]),N=t=>{t.preventDefault(),S(B),p(!1)},G=e.useCallback(()=>{S(t=>{const o={...t};return Object.keys(o).forEach((h,v)=>o[h]=C&&v===0?!0:!C),o}),p(!0)},[C]),O=e.useCallback((t,o)=>{S(u=>({...u,[o||""]:t})),p(!0)},[]),L=t=>{$(String(t.target.value))},Q=t=>{t.preventDefault(),k(!y)},I=e.useMemo(()=>r.show!==void 0?r.show:y,[r.show,y]),P=()=>{var t;c&&c(),k(!1),i.current&&((t=i.current.element)==null||t.focus())},U=t=>{const o=f.getActiveElement(document);clearTimeout(A.current),A.current=window.setTimeout(()=>{!n.mobileMode&&o&&t.relatedTarget!==i.current&&R.current&&!R.current.contains(o)&&P()})},X=()=>{clearTimeout(A.current)},{onFocus:Y,onBlur:Z}=f.useAsyncFocusBlur({onFocus:t=>X(),onBlur:t=>U(t)}),ee=t=>{var o;(o=q.current)==null||o.triggerMouseEvent(t)},te=t=>{var o;(o=q.current)==null||o.triggerKeyboardEvent(t)},oe=t=>{!t.isAnchorClicked&&k(!1)},j=e.createElement(se.GridColumnMenuItemContent,{show:!0},e.createElement("form",{onSubmit:D,onReset:N,className:"k-filter-menu"},e.createElement("div",{className:"k-filter-menu-container"},e.createElement(E.TextBox,{className:"k-searchbox",value:d,onChange:L,size:n.mobileMode?"large":"medium",prefix:()=>e.createElement(E.InputPrefix,null,e.createElement(f.IconWrap,{name:"search",icon:K.searchIcon}))}),e.createElement("ul",{className:"k-reset k-multicheck-wrap"},!d&&e.createElement("li",{className:"k-item k-check-all-wrap"},e.createElement(E.Checkbox,{checked:C,onChange:G,label:m.toLanguageString(l.filterSelectAll,l.messages[l.filterSelectAll]),size:n.mobileMode?"large":"medium"})),x.map(t=>e.createElement("li",{key:t.id,className:"k-item"},e.createElement(E.Checkbox,{disabled:a[t.id||""]&&g===1,checked:a[t.id||""],onChange:o=>{var u;return O(!!((u=o.target.element)!=null&&u.checked),t.id)},label:t.title||t.field,size:n.mobileMode?"large":"medium"})))),e.createElement("div",{className:"k-filter-selected-items"},g," ",m.toLanguageString(l.columnMenuColumnChooserSelectedItems,l.messages[l.columnMenuColumnChooserSelectedItems])),e.createElement("div",{className:"k-actions k-actions-start k-actions-horizontal"},e.createElement(T.Button,{type:"submit",themeColor:"primary"},m.toLanguageString(l.filterApplyButton,l.messages[l.filterApplyButton])),e.createElement(T.Button,{type:"reset"},m.toLanguageString(l.filterResetButton,l.messages[l.filterResetButton])))))),ne=e.createElement(T.Button,{ref:i,togglable:!0,selected:I,svgIcon:r.svgIcon?r.svgIcon:r.icon?void 0:K.columnsIcon,icon:r.icon,size:n.mobileMode?"large":"medium",className:f.classNames("k-toolbar-button",{"k-icon-button":n.mobileMode}),title:m.toLanguageString(l.toolbarColumnsChooser,l.messages[l.toolbarColumnsChooser]),onClick:Q},!n.mobileMode&&m.toLanguageString(l.toolbarColumnsChooser,l.messages[l.toolbarColumnsChooser]));return e.createElement(e.Fragment,null,e.createElement(_.BadgeContainer,null,ne,w&&e.createElement(_.Badge,{themeColor:"primary"})),n.mobileMode?e.createElement(me.GridToolbarAdaptiveProvider,null,re.createPortal(e.createElement(ue.GridAdaptiveToolbarColumnChooser,{computedShow:I,filter:d,filtered:x,selectedColumns:a,allSelected:C,checkedCount:g,onClose:P,onApply:D,onReset:N,onFilter:L,onCheckChange:O,onSelectAll:G},j),(z=J())==null?void 0:z.body)):e.createElement(ie.Popup,{anchor:(F=i.current)==null?void 0:F.element,show:I,popupClass:"k-grid-columnmenu-popup",onMouseDownOutside:oe},e.createElement("div",{ref:R,onBlur:Z,onFocus:Y,onMouseDown:ee,onKeyDown:te,className:"k-column-menu k-column-menu-md"},j)))};V.displayName="KendoReactGridToolbarColumnsChooser";exports.GridToolbarColumnsChooser=V;