@progress/kendo-react-grid 16.2.0-develop.6 → 16.2.0-develop.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,6 +25,7 @@ export declare class VirtualScroll implements VirtualScrollInterface {
25
25
  tableTransform: string;
26
26
  rowHeightService?: RowHeightService;
27
27
  scrollbarOverlaySpacerElement: HTMLDivElement | null;
28
+ overlaySyncingRef: React.RefObject<boolean> | null;
28
29
  private reactVersion;
29
30
  private scrollSyncing;
30
31
  private pendingTranslate;
@@ -44,6 +45,7 @@ export declare class VirtualScroll implements VirtualScrollInterface {
44
45
  private changePage;
45
46
  private adjustScroll;
46
47
  private setScrollHeightContainerHeight;
48
+ private applyOverlayBottomPin;
47
49
  private getItemHeights;
48
50
  private getTotalHeight;
49
51
  private getExpectedTotalHeight;
package/VirtualScroll.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 d=require("react"),f=require("./utils/index.js");function g(o){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(t,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return t.default=o,Object.freeze(t)}const u=g(d),S=.3;class p{constructor(){this.table=null,this.tableBody=null,this.container=null,this.scrollHeightContainer=null,this.total=0,this.scrollableVirtual=!1,this.pageSize=0,this.PageChange=null,this.fixedScroll=!1,this.tableTransform="",this.scrollbarOverlaySpacerElement=null,this.reactVersion=Number.parseFloat(u.version),this.scrollSyncing=!1,this.pendingTranslate=!1,this.deferredScrollTop=0,this.firstToLoad=0,this.lastScrollTop=0,this.firstLoaded=0,this.lastLoaded=0,this.scrollHandler=this.scrollHandler.bind(this)}reset(){if(this.firstToLoad=0,this.firstLoaded=0,this.lastLoaded=0,this.rowHeightService=void 0,this.fixedScroll){this.lastScrollTop=this.container?this.container.scrollTop:0;return}this.container&&this.container.scrollTop!==0&&(this.scrollSyncing=!0,this.container.scrollTop=0,this.lastScrollTop=0,this.translate(0,!0))}scrollToPosition(t,e,i=!1){var c;if(!this.scrollableVirtual||!this.rowHeightService)return;i&&(this.pendingTranslate=!0,this.deferredScrollTop=t);const s=this.lastScrollTop>=t,a=!s;this.lastScrollTop=t;const l=((c=this.container)==null?void 0:c.offsetHeight)||0;let r=this.rowHeightService.index(t);const h=this.rowHeightService.index(t+l),n=Math.max(r+this.pageSize-this.total,0);r=Math.max(r-n,0),a&&h>=this.lastLoaded&&this.lastLoaded<this.total-1?(this.firstToLoad=r,this.loadPage(e)):(s&&r<this.firstToLoad||r>this.lastLoaded||h<this.firstLoaded)&&this.loadPageWithBuffer(r,n,s,e)}scrollHandler(t){if(this.scrollSyncing){this.scrollSyncing=!1;return}!this.scrollableVirtual||!this.container||!this.table||!this.rowHeightService||this.scrollToPosition(this.container.scrollTop,t)}update(){var e;const t=this.getItemHeights();if(this.firstLoaded>this.firstToLoad){const i=Math.min(this.firstLoaded-this.firstToLoad,this.pageSize),s=this.getTotalHeight(i,t),a=this.getExpectedTotalHeight(i),l=s-a;l!==0&&this.adjustScroll(l)}(e=this.rowHeightService)==null||e.update(this.firstToLoad,t),this.setScrollHeightContainerHeight(),this.firstLoaded=this.firstToLoad,this.lastLoaded=this.firstLoaded+t.length-1,this.pendingTranslate&&this.rowHeightService&&(this.translate(this.rowHeightService.offset(this.firstLoaded),!0),this.container&&(this.scrollSyncing=!0,this.container.scrollTop=this.deferredScrollTop),this.pendingTranslate=!1)}loadPage(t){this.rowHeightService&&(this.pendingTranslate||this.translate(this.rowHeightService.offset(this.firstToLoad)),this.changePage(this.firstToLoad,t))}loadPageWithBuffer(t,e,i,s){const a=i?Math.max(Math.floor(this.pageSize*S)-e,0):0;this.firstToLoad=Math.max(t-a,0),this.loadPage(s)}translate(t,e){this.scrollableVirtual&&this.table&&((this.reactVersion<=17||e)&&(this.table.style.transform="translateY("+t+"px)"),this.reactVersion>17&&(this.tableTransform="translateY("+t+"px)"))}changePage(t,e){this.PageChange&&this.PageChange({skip:Math.max(0,t),take:this.pageSize},e)}adjustScroll(t){this.scrollSyncing=!0,this.container&&(this.container.scrollTop+=t)}setScrollHeightContainerHeight(){var t;if(this.scrollableVirtual&&this.scrollHeightContainer){let e=((t=this.rowHeightService)==null?void 0:t.totalHeight())||0;e=f.firefox?Math.min(f.firefoxMaxHeight,e):e,this.scrollHeightContainer.style.height=e+"px",this.scrollbarOverlaySpacerElement&&(this.scrollbarOverlaySpacerElement.style.height=e+"px")}}getItemHeights(){const t=[];return this.tableBody&&Array.from(this.tableBody.children).forEach(e=>{const i=e.offsetHeight;e.classList.contains("k-detail-row")?t[t.length-1]+=i:t.push(i)}),t}getTotalHeight(t,e){return e.slice(0,t).reduce((i,s)=>i+s,0)}getExpectedTotalHeight(t){const e=this.rowHeightService;if(!e)return 0;const i=this.firstToLoad+(t-1);return e.offset(i)+e.height(i)-e.offset(this.firstToLoad)}}exports.VirtualScroll=p;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),f=require("./utils/index.js"),d=require("./utils/proxiedScrollOverlay.js");function p(o){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(t,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return t.default=o,Object.freeze(t)}const S=p(g),u=.3;class T{constructor(){this.table=null,this.tableBody=null,this.container=null,this.scrollHeightContainer=null,this.total=0,this.scrollableVirtual=!1,this.pageSize=0,this.PageChange=null,this.fixedScroll=!1,this.tableTransform="",this.scrollbarOverlaySpacerElement=null,this.overlaySyncingRef=null,this.reactVersion=Number.parseFloat(S.version),this.scrollSyncing=!1,this.pendingTranslate=!1,this.deferredScrollTop=0,this.firstToLoad=0,this.lastScrollTop=0,this.firstLoaded=0,this.lastLoaded=0,this.scrollHandler=this.scrollHandler.bind(this)}reset(){if(this.firstToLoad=0,this.firstLoaded=0,this.lastLoaded=0,this.rowHeightService=void 0,this.fixedScroll){this.lastScrollTop=this.container?this.container.scrollTop:0;return}this.container&&this.container.scrollTop!==0&&(this.scrollSyncing=!0,this.container.scrollTop=0,this.lastScrollTop=0,this.translate(0,!0))}scrollToPosition(t,e,i=!1){var c;if(!this.scrollableVirtual||!this.rowHeightService)return;i&&(this.pendingTranslate=!0,this.deferredScrollTop=t);const s=this.lastScrollTop>=t,r=!s;this.lastScrollTop=t;const a=((c=this.container)==null?void 0:c.offsetHeight)||0;let l=this.rowHeightService.index(t);const h=this.rowHeightService.index(t+a),n=Math.max(l+this.pageSize-this.total,0);l=Math.max(l-n,0),r&&h>=this.lastLoaded&&this.lastLoaded<this.total-1?(this.firstToLoad=l,this.loadPage(e)):s&&l<this.firstToLoad||l>this.lastLoaded||h<this.firstLoaded?this.loadPageWithBuffer(l,n,s,e):i&&this.pendingTranslate&&this.container&&(this.scrollSyncing=!0,this.container.scrollTop=this.deferredScrollTop,this.pendingTranslate=!1)}scrollHandler(t){if(this.scrollSyncing){this.scrollSyncing=!1;return}!this.scrollableVirtual||!this.container||!this.table||!this.rowHeightService||this.scrollToPosition(this.container.scrollTop,t)}update(){var e;const t=this.getItemHeights();if(this.firstLoaded>this.firstToLoad){const i=Math.min(this.firstLoaded-this.firstToLoad,this.pageSize),s=this.getTotalHeight(i,t),r=this.getExpectedTotalHeight(i),a=s-r;a!==0&&this.adjustScroll(a)}(e=this.rowHeightService)==null||e.update(this.firstToLoad,t),this.setScrollHeightContainerHeight(),this.firstLoaded=this.firstToLoad,this.lastLoaded=this.firstLoaded+t.length-1,this.pendingTranslate&&this.rowHeightService&&(this.translate(this.rowHeightService.offset(this.firstLoaded),!0),this.container&&(this.scrollSyncing=!0,this.container.scrollTop=this.deferredScrollTop),this.pendingTranslate=!1)}loadPage(t){this.rowHeightService&&(this.pendingTranslate||this.translate(this.rowHeightService.offset(this.firstToLoad)),this.changePage(this.firstToLoad,t))}loadPageWithBuffer(t,e,i,s){const r=i?Math.max(Math.floor(this.pageSize*u)-e,0):0;this.firstToLoad=Math.max(t-r,0),this.loadPage(s)}translate(t,e){this.scrollableVirtual&&this.table&&((this.reactVersion<=17||e)&&(this.table.style.transform="translateY("+t+"px)"),this.reactVersion>17&&(this.tableTransform="translateY("+t+"px)"))}changePage(t,e){this.PageChange&&this.PageChange({skip:Math.max(0,t),take:this.pageSize},e)}adjustScroll(t){this.scrollSyncing=!0,this.container&&(this.container.scrollTop+=t)}setScrollHeightContainerHeight(){var t;if(this.scrollableVirtual&&this.scrollHeightContainer){let e=((t=this.rowHeightService)==null?void 0:t.totalHeight())||0;const i=this.firstToLoad+this.pageSize>=this.total,s=d.isOverlayAtBottom(this.scrollbarOverlaySpacerElement,i);e=f.firefox?Math.min(f.firefoxMaxHeight,e):e,this.scrollHeightContainer.style.height=e+"px",this.scrollbarOverlaySpacerElement&&(this.scrollbarOverlaySpacerElement.style.height=e+"px");const r=s?d.getOverlayBottomPin(this.scrollbarOverlaySpacerElement,this.container):null;r&&this.applyOverlayBottomPin(r)}}applyOverlayBottomPin(t){t.scrollbarOverlay.scrollTop!==t.overlayScrollTop&&(this.overlaySyncingRef&&(this.overlaySyncingRef.current=!0),t.scrollbarOverlay.scrollTop=t.overlayScrollTop),this.container&&this.container.scrollTop!==t.contentScrollTop&&(this.scrollSyncing=!0,this.container.scrollTop=t.contentScrollTop),this.deferredScrollTop=t.contentScrollTop,this.lastScrollTop=t.contentScrollTop}getItemHeights(){const t=[];return this.tableBody&&Array.from(this.tableBody.children).forEach(e=>{const i=e.offsetHeight;e.classList.contains("k-detail-row")?t[t.length-1]+=i:t.push(i)}),t}getTotalHeight(t,e){return e.slice(0,t).reduce((i,s)=>i+s,0)}getExpectedTotalHeight(t){const e=this.rowHeightService;if(!e)return 0;const i=this.firstToLoad+(t-1);return e.offset(i)+e.height(i)-e.offset(this.firstToLoad)}}exports.VirtualScroll=T;
package/VirtualScroll.mjs CHANGED
@@ -7,10 +7,11 @@
7
7
  */
8
8
  import * as c from "react";
9
9
  import { firefox as f, firefoxMaxHeight as d } from "./utils/index.mjs";
10
- const g = 0.3;
11
- class p {
10
+ import { isOverlayAtBottom as g, getOverlayBottomPin as p } from "./utils/proxiedScrollOverlay.mjs";
11
+ const S = 0.3;
12
+ class L {
12
13
  constructor() {
13
- this.table = null, this.tableBody = null, this.container = null, this.scrollHeightContainer = null, this.total = 0, this.scrollableVirtual = !1, this.pageSize = 0, this.PageChange = null, this.fixedScroll = !1, this.tableTransform = "", this.scrollbarOverlaySpacerElement = null, this.reactVersion = Number.parseFloat(c.version), this.scrollSyncing = !1, this.pendingTranslate = !1, this.deferredScrollTop = 0, this.firstToLoad = 0, this.lastScrollTop = 0, this.firstLoaded = 0, this.lastLoaded = 0, this.scrollHandler = this.scrollHandler.bind(this);
14
+ this.table = null, this.tableBody = null, this.container = null, this.scrollHeightContainer = null, this.total = 0, this.scrollableVirtual = !1, this.pageSize = 0, this.PageChange = null, this.fixedScroll = !1, this.tableTransform = "", this.scrollbarOverlaySpacerElement = null, this.overlaySyncingRef = null, this.reactVersion = Number.parseFloat(c.version), this.scrollSyncing = !1, this.pendingTranslate = !1, this.deferredScrollTop = 0, this.firstToLoad = 0, this.lastScrollTop = 0, this.firstLoaded = 0, this.lastLoaded = 0, this.scrollHandler = this.scrollHandler.bind(this);
14
15
  }
15
16
  reset() {
16
17
  if (this.firstToLoad = 0, this.firstLoaded = 0, this.lastLoaded = 0, this.rowHeightService = void 0, this.fixedScroll) {
@@ -24,12 +25,12 @@ class p {
24
25
  if (!this.scrollableVirtual || !this.rowHeightService)
25
26
  return;
26
27
  e && (this.pendingTranslate = !0, this.deferredScrollTop = t);
27
- const s = this.lastScrollTop >= t, o = !s;
28
+ const s = this.lastScrollTop >= t, r = !s;
28
29
  this.lastScrollTop = t;
29
- const a = ((n = this.container) == null ? void 0 : n.offsetHeight) || 0;
30
- let r = this.rowHeightService.index(t);
31
- const h = this.rowHeightService.index(t + a), l = Math.max(r + this.pageSize - this.total, 0);
32
- r = Math.max(r - l, 0), o && h >= this.lastLoaded && this.lastLoaded < this.total - 1 ? (this.firstToLoad = r, this.loadPage(i)) : (s && r < this.firstToLoad || r > this.lastLoaded || h < this.firstLoaded) && this.loadPageWithBuffer(r, l, s, i);
30
+ const l = ((n = this.container) == null ? void 0 : n.offsetHeight) || 0;
31
+ let o = this.rowHeightService.index(t);
32
+ const a = this.rowHeightService.index(t + l), h = Math.max(o + this.pageSize - this.total, 0);
33
+ o = Math.max(o - h, 0), r && a >= this.lastLoaded && this.lastLoaded < this.total - 1 ? (this.firstToLoad = o, this.loadPage(i)) : s && o < this.firstToLoad || o > this.lastLoaded || a < this.firstLoaded ? this.loadPageWithBuffer(o, h, s, i) : e && this.pendingTranslate && this.container && (this.scrollSyncing = !0, this.container.scrollTop = this.deferredScrollTop, this.pendingTranslate = !1);
33
34
  }
34
35
  scrollHandler(t) {
35
36
  if (this.scrollSyncing) {
@@ -42,8 +43,8 @@ class p {
42
43
  var i;
43
44
  const t = this.getItemHeights();
44
45
  if (this.firstLoaded > this.firstToLoad) {
45
- const e = Math.min(this.firstLoaded - this.firstToLoad, this.pageSize), s = this.getTotalHeight(e, t), o = this.getExpectedTotalHeight(e), a = s - o;
46
- a !== 0 && this.adjustScroll(a);
46
+ const e = Math.min(this.firstLoaded - this.firstToLoad, this.pageSize), s = this.getTotalHeight(e, t), r = this.getExpectedTotalHeight(e), l = s - r;
47
+ l !== 0 && this.adjustScroll(l);
47
48
  }
48
49
  (i = this.rowHeightService) == null || i.update(this.firstToLoad, t), this.setScrollHeightContainerHeight(), this.firstLoaded = this.firstToLoad, this.lastLoaded = this.firstLoaded + t.length - 1, this.pendingTranslate && this.rowHeightService && (this.translate(this.rowHeightService.offset(this.firstLoaded), !0), this.container && (this.scrollSyncing = !0, this.container.scrollTop = this.deferredScrollTop), this.pendingTranslate = !1);
49
50
  }
@@ -51,8 +52,8 @@ class p {
51
52
  this.rowHeightService && (this.pendingTranslate || this.translate(this.rowHeightService.offset(this.firstToLoad)), this.changePage(this.firstToLoad, t));
52
53
  }
53
54
  loadPageWithBuffer(t, i, e, s) {
54
- const o = e ? Math.max(Math.floor(this.pageSize * g) - i, 0) : 0;
55
- this.firstToLoad = Math.max(t - o, 0), this.loadPage(s);
55
+ const r = e ? Math.max(Math.floor(this.pageSize * S) - i, 0) : 0;
56
+ this.firstToLoad = Math.max(t - r, 0), this.loadPage(s);
56
57
  }
57
58
  translate(t, i) {
58
59
  this.scrollableVirtual && this.table && ((this.reactVersion <= 17 || i) && (this.table.style.transform = "translateY(" + t + "px)"), this.reactVersion > 17 && (this.tableTransform = "translateY(" + t + "px)"));
@@ -73,9 +74,15 @@ class p {
73
74
  var t;
74
75
  if (this.scrollableVirtual && this.scrollHeightContainer) {
75
76
  let i = ((t = this.rowHeightService) == null ? void 0 : t.totalHeight()) || 0;
77
+ const e = this.firstToLoad + this.pageSize >= this.total, s = g(this.scrollbarOverlaySpacerElement, e);
76
78
  i = f ? Math.min(d, i) : i, this.scrollHeightContainer.style.height = i + "px", this.scrollbarOverlaySpacerElement && (this.scrollbarOverlaySpacerElement.style.height = i + "px");
79
+ const r = s ? p(this.scrollbarOverlaySpacerElement, this.container) : null;
80
+ r && this.applyOverlayBottomPin(r);
77
81
  }
78
82
  }
83
+ applyOverlayBottomPin(t) {
84
+ t.scrollbarOverlay.scrollTop !== t.overlayScrollTop && (this.overlaySyncingRef && (this.overlaySyncingRef.current = !0), t.scrollbarOverlay.scrollTop = t.overlayScrollTop), this.container && this.container.scrollTop !== t.contentScrollTop && (this.scrollSyncing = !0, this.container.scrollTop = t.contentScrollTop), this.deferredScrollTop = t.contentScrollTop, this.lastScrollTop = t.contentScrollTop;
85
+ }
79
86
  getItemHeights() {
80
87
  const t = [];
81
88
  return this.tableBody && Array.from(this.tableBody.children).forEach((i) => {
@@ -95,5 +102,5 @@ class p {
95
102
  }
96
103
  }
97
104
  export {
98
- p as VirtualScroll
105
+ L as VirtualScroll
99
106
  };
@@ -6,11 +6,4 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  "use client";
9
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("react"),g=require("../utils/GridContext.js");function p(r){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const l in r)if(l!=="default"){const t=Object.getOwnPropertyDescriptor(r,l);Object.defineProperty(o,l,t.get?t:{enumerable:!0,get:()=>r[l]})}}return o.default=r,Object.freeze(o)}const e=p(f),v=`
10
- .k-grid-content--hide-scrollbar::-webkit-scrollbar { display: none; }
11
-
12
- .k-grid-scrollbar-overlay::-webkit-scrollbar { width: 17px; }
13
- .k-grid-scrollbar-overlay::-webkit-scrollbar-track { background: transparent; }
14
- .k-grid-scrollbar-overlay::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.25); border: 4px solid transparent; background-clip: content-box; border-radius: 8px; min-height: 40px; }
15
- .k-grid-scrollbar-overlay::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.4); border: 4px solid transparent; background-clip: content-box; border-radius: 8px; }
16
- `,k=()=>{const r=e.useContext(g.GridContext),[o,l]=e.useState(!1),t=e.useRef(null),a=e.useCallback(()=>{l(!0),t.current!==null&&clearTimeout(t.current),t.current=setTimeout(()=>l(!1),1e3)},[]);e.useEffect(()=>(r.scrollbarShowCallbackRef&&(r.scrollbarShowCallbackRef.current=a),()=>{r.scrollbarShowCallbackRef&&(r.scrollbarShowCallbackRef.current=null),t.current!==null&&clearTimeout(t.current)}),[r.scrollbarShowCallbackRef,a]),e.useEffect(()=>{const n=()=>{r.vScrollDraggingRef&&(r.vScrollDraggingRef.current=!1)};return document.addEventListener("pointerup",n),()=>document.removeEventListener("pointerup",n)},[r.vScrollDraggingRef]);const b=()=>{r.vScrollDraggingRef&&(r.vScrollDraggingRef.current=!0)},d=n=>{var i,s,u;const c=(i=r.scrollbarContainerRef)==null?void 0:i.current;c&&((u=(s=r.vsRef)==null?void 0:s.current)==null||u.scrollToPosition(c.scrollTop,n,!0))};return e.createElement(e.Fragment,null,e.createElement("style",null,v),e.createElement("div",{ref:r.scrollbarContainerRef,onScroll:d,onMouseEnter:a,onPointerDown:b,className:"k-grid-scrollbar-overlay",style:{position:"absolute",right:0,top:0,bottom:0,width:"17px",overflowY:"scroll",overflowX:"hidden",zIndex:1,opacity:o?1:0,transition:"opacity 0.3s",scrollbarWidth:"auto",scrollbarColor:"rgba(0,0,0,0.25) transparent"}},e.createElement("div",{ref:r.scrollbarSpacerRef})))};exports.VirtualScrollOverlay=k;
9
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react"),m=require("@progress/kendo-react-common"),y=require("../utils/GridContext.js");function S(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const l=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,l.get?l:{enumerable:!0,get:()=>e[t]})}}return o.default=e,Object.freeze(o)}const n=S(b),p=16,d=()=>{const e=m.getScrollbarWidth();return typeof e=="number"?e:0},R=()=>{const e=n.useContext(y.GridContext),o=e.dir==="rtl",[t,l]=n.useState(d),f=t||p;n.useEffect(()=>{const r=()=>l(d());return r(),window.addEventListener("resize",r),document.addEventListener("visibilitychange",r),()=>{window.removeEventListener("resize",r),document.removeEventListener("visibilitychange",r)}},[]),n.useEffect(()=>{const r=()=>{e.vScrollDraggingRef&&(e.vScrollDraggingRef.current=!1)};return document.addEventListener("pointerup",r),()=>document.removeEventListener("pointerup",r)},[e.vScrollDraggingRef]);const v=()=>{e.vScrollDraggingRef&&(e.vScrollDraggingRef.current=!0)},g=r=>{var i,a,s,u;const c=(i=e.scrollbarContainerRef)==null?void 0:i.current;if(c){if((a=e.overlaySyncingRef)!=null&&a.current){e.overlaySyncingRef.current=!1;return}(u=(s=e.vsRef)==null?void 0:s.current)==null||u.scrollToPosition(c.scrollTop,r,!0)}};return n.createElement("div",{ref:e.scrollbarContainerRef,onScroll:g,onPointerDown:v,className:"k-grid-scrollbar-overlay",tabIndex:-1,"aria-hidden":"true",style:{position:"absolute",...o?{left:0}:{right:0},top:0,bottom:0,width:f,zIndex:1,overflowY:"scroll",overflowX:"hidden",transform:"translateZ(0)"}},n.createElement("div",{ref:e.scrollbarSpacerRef,style:{width:1}}))};exports.VirtualScrollOverlay=R;
@@ -6,60 +6,62 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  "use client";
9
- import * as e from "react";
10
- import { GridContext as f } from "../utils/GridContext.mjs";
11
- const g = `
12
- .k-grid-content--hide-scrollbar::-webkit-scrollbar { display: none; }
13
-
14
- .k-grid-scrollbar-overlay::-webkit-scrollbar { width: 17px; }
15
- .k-grid-scrollbar-overlay::-webkit-scrollbar-track { background: transparent; }
16
- .k-grid-scrollbar-overlay::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.25); border: 4px solid transparent; background-clip: content-box; border-radius: 8px; min-height: 40px; }
17
- .k-grid-scrollbar-overlay::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.4); border: 4px solid transparent; background-clip: content-box; border-radius: 8px; }
18
- `, v = () => {
19
- const r = e.useContext(f), [b, a] = e.useState(!1), l = e.useRef(null), t = e.useCallback(() => {
20
- a(!0), l.current !== null && clearTimeout(l.current), l.current = setTimeout(() => a(!1), 1e3);
21
- }, []);
22
- e.useEffect(() => (r.scrollbarShowCallbackRef && (r.scrollbarShowCallbackRef.current = t), () => {
23
- r.scrollbarShowCallbackRef && (r.scrollbarShowCallbackRef.current = null), l.current !== null && clearTimeout(l.current);
24
- }), [r.scrollbarShowCallbackRef, t]), e.useEffect(() => {
25
- const o = () => {
26
- r.vScrollDraggingRef && (r.vScrollDraggingRef.current = !1);
9
+ import * as t from "react";
10
+ import { getScrollbarWidth as m } from "@progress/kendo-react-common";
11
+ import { GridContext as b } from "../utils/GridContext.mjs";
12
+ const S = 16, s = () => {
13
+ const e = m();
14
+ return typeof e == "number" ? e : 0;
15
+ }, h = () => {
16
+ const e = t.useContext(b), a = e.dir === "rtl", [d, f] = t.useState(s), u = d || S;
17
+ t.useEffect(() => {
18
+ const r = () => f(s());
19
+ return r(), window.addEventListener("resize", r), document.addEventListener("visibilitychange", r), () => {
20
+ window.removeEventListener("resize", r), document.removeEventListener("visibilitychange", r);
27
21
  };
28
- return document.addEventListener("pointerup", o), () => document.removeEventListener("pointerup", o);
29
- }, [r.vScrollDraggingRef]);
30
- const u = () => {
31
- r.vScrollDraggingRef && (r.vScrollDraggingRef.current = !0);
32
- }, d = (o) => {
33
- var c, i, s;
34
- const n = (c = r.scrollbarContainerRef) == null ? void 0 : c.current;
35
- n && ((s = (i = r.vsRef) == null ? void 0 : i.current) == null || s.scrollToPosition(n.scrollTop, o, !0));
22
+ }, []), t.useEffect(() => {
23
+ const r = () => {
24
+ e.vScrollDraggingRef && (e.vScrollDraggingRef.current = !1);
25
+ };
26
+ return document.addEventListener("pointerup", r), () => document.removeEventListener("pointerup", r);
27
+ }, [e.vScrollDraggingRef]);
28
+ const v = () => {
29
+ e.vScrollDraggingRef && (e.vScrollDraggingRef.current = !0);
30
+ }, g = (r) => {
31
+ var n, l, i, c;
32
+ const o = (n = e.scrollbarContainerRef) == null ? void 0 : n.current;
33
+ if (o) {
34
+ if ((l = e.overlaySyncingRef) != null && l.current) {
35
+ e.overlaySyncingRef.current = !1;
36
+ return;
37
+ }
38
+ (c = (i = e.vsRef) == null ? void 0 : i.current) == null || c.scrollToPosition(o.scrollTop, r, !0);
39
+ }
36
40
  };
37
- return /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement("style", null, g), /* @__PURE__ */ e.createElement(
41
+ return /* @__PURE__ */ t.createElement(
38
42
  "div",
39
43
  {
40
- ref: r.scrollbarContainerRef,
41
- onScroll: d,
42
- onMouseEnter: t,
43
- onPointerDown: u,
44
+ ref: e.scrollbarContainerRef,
45
+ onScroll: g,
46
+ onPointerDown: v,
44
47
  className: "k-grid-scrollbar-overlay",
48
+ tabIndex: -1,
49
+ "aria-hidden": "true",
45
50
  style: {
46
51
  position: "absolute",
47
- right: 0,
52
+ ...a ? { left: 0 } : { right: 0 },
48
53
  top: 0,
49
54
  bottom: 0,
50
- width: "17px",
55
+ width: u,
56
+ zIndex: 1,
51
57
  overflowY: "scroll",
52
58
  overflowX: "hidden",
53
- zIndex: 1,
54
- opacity: b ? 1 : 0,
55
- transition: "opacity 0.3s",
56
- scrollbarWidth: "auto",
57
- scrollbarColor: "rgba(0,0,0,0.25) transparent"
59
+ transform: "translateZ(0)"
58
60
  }
59
61
  },
60
- /* @__PURE__ */ e.createElement("div", { ref: r.scrollbarSpacerRef })
61
- ));
62
+ /* @__PURE__ */ t.createElement("div", { ref: e.scrollbarSpacerRef, style: { width: 1 } })
63
+ );
62
64
  };
63
65
  export {
64
- v as VirtualScrollOverlay
66
+ h as VirtualScrollOverlay
65
67
  };