@progress/kendo-react-dropdowns 7.5.0-develop.9 → 8.0.0-develop.2
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.
- package/ComboBox/ComboBox.js +1 -1
- package/ComboBox/ComboBox.mjs +6 -6
- package/DropDownList/DropDownList.js +1 -1
- package/DropDownList/DropDownList.mjs +2 -2
- package/MultiSelect/MultiSelect.js +1 -1
- package/MultiSelect/MultiSelect.mjs +4 -5
- package/common/DropDownBase.js +1 -1
- package/common/DropDownBase.mjs +109 -105
- package/common/VirtualScrollStatic.js +8 -0
- package/common/VirtualScrollStatic.mjs +77 -0
- package/dist/cdn/js/kendo-react-dropdowns.js +1 -1
- package/index.d.mts +23 -18
- package/index.d.ts +23 -18
- package/package-metadata.mjs +1 -1
- package/package.json +10 -10
- package/common/VirtualScroll.js +0 -8
- package/common/VirtualScroll.mjs +0 -75
package/common/DropDownBase.mjs
CHANGED
|
@@ -7,69 +7,69 @@
|
|
|
7
7
|
*/
|
|
8
8
|
"use client";
|
|
9
9
|
import * as m from "react";
|
|
10
|
-
import
|
|
11
|
-
import v from "./
|
|
10
|
+
import s from "prop-types";
|
|
11
|
+
import { VirtualScroll as v } from "./VirtualScrollStatic.mjs";
|
|
12
12
|
import { Navigation as y } from "./Navigation.mjs";
|
|
13
13
|
import { scrollToItem as S, areSame as g } from "./utils.mjs";
|
|
14
14
|
const a = class a {
|
|
15
15
|
constructor(n) {
|
|
16
|
-
this.wrapper = null, this.list = null, this.vs = new v(), this.navigation = new y(), this.handleItemClick = (
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
}, this.handleFocus = (
|
|
16
|
+
this.wrapper = null, this.list = null, this.vs = new v(), this.navigation = new y(), this.handleItemClick = (i, t) => {
|
|
17
|
+
const e = this.initState();
|
|
18
|
+
e.syntheticEvent = t, t.stopPropagation(), this.component.handleItemSelect(i, e), this.togglePopup(e), this.applyState(e);
|
|
19
|
+
}, this.handleFocus = (i) => {
|
|
20
20
|
if (!this.component.state.focused) {
|
|
21
|
-
const
|
|
22
|
-
|
|
21
|
+
const t = this.initState();
|
|
22
|
+
t.data.focused = !0, t.events.push({ type: "onFocus" }), t.syntheticEvent = i, this.applyState(t);
|
|
23
23
|
}
|
|
24
|
-
}, this.filterChanged = (
|
|
25
|
-
const { textField:
|
|
26
|
-
o &&
|
|
24
|
+
}, this.filterChanged = (i, t) => {
|
|
25
|
+
const { textField: e, filterable: o } = this.component.props;
|
|
26
|
+
o && t.events.push({
|
|
27
27
|
type: "onFilterChange",
|
|
28
28
|
filter: {
|
|
29
|
-
field:
|
|
29
|
+
field: e,
|
|
30
30
|
operator: "contains",
|
|
31
31
|
ignoreCase: !0,
|
|
32
|
-
value:
|
|
32
|
+
value: i
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
|
-
}, this.togglePopup = (
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
}, this.pageChange = (
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
}, this.scrollToVirtualItem = (
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
else if (s.skip + s.pageSize === s.total)
|
|
46
|
-
t.scrollToEnd();
|
|
35
|
+
}, this.togglePopup = (i) => {
|
|
36
|
+
const t = this.component.props, e = t.opened !== void 0 ? t.opened : this.component.state.opened;
|
|
37
|
+
t.opened === void 0 && (i.data.opened = !e), e ? i.events.push({ type: "onClose" }) : (i.events.push({ type: "onOpen" }), this.calculatePopupWidth());
|
|
38
|
+
}, this.pageChange = (i, t) => {
|
|
39
|
+
const e = this.initState();
|
|
40
|
+
e.syntheticEvent = t, this.triggerOnPageChange(e, i.skip, i.take), this.applyState(e);
|
|
41
|
+
}, this.scrollToVirtualItem = (i, t) => {
|
|
42
|
+
const e = this.vs;
|
|
43
|
+
if (i.skip === 0)
|
|
44
|
+
e.reset();
|
|
47
45
|
else {
|
|
48
|
-
let o =
|
|
49
|
-
o === 0 && (
|
|
46
|
+
let o = e.translate;
|
|
47
|
+
o === 0 && (e.calcScrollElementHeight(), o = e.itemHeight * i.skip, e.translateTo(o, !0)), t < 0 && o > 0 && (o += e.itemHeight * (i.pageSize / 4)), e.container && (e.container.scrollTop = o), this.scrollToItem(t, !0);
|
|
50
48
|
}
|
|
51
|
-
|
|
52
|
-
}, this.scrollPopupByPageSize = (s) => {
|
|
49
|
+
}, this.scrollPopupByPageSize = (i) => {
|
|
53
50
|
var r, l, h, c, u, d;
|
|
54
|
-
const
|
|
55
|
-
|
|
51
|
+
const t = this.vs, e = (l = (r = this.list) == null ? void 0 : r.parentElement) == null ? void 0 : l.scrollTop, o = t.enabled && t.itemHeight ? t.itemHeight : this.list ? this.list.children[0].offsetHeight : 0, p = (c = (h = this.list) == null ? void 0 : h.parentElement) == null ? void 0 : c.offsetHeight;
|
|
52
|
+
e !== void 0 && p !== void 0 && ((d = (u = this.list) == null ? void 0 : u.parentElement) == null || d.scroll({ top: e + i * Math.floor(p / o) * o }));
|
|
56
53
|
}, this.renderScrollElement = () => {
|
|
57
|
-
const
|
|
58
|
-
return
|
|
54
|
+
const i = this.vs;
|
|
55
|
+
return i.enabled && /* @__PURE__ */ m.createElement(
|
|
59
56
|
"div",
|
|
60
57
|
{
|
|
61
|
-
ref: (
|
|
58
|
+
ref: (t) => i.scrollElement = t,
|
|
62
59
|
key: "scrollElementKey"
|
|
63
60
|
}
|
|
64
61
|
);
|
|
65
|
-
}, this.resetGroupStickyHeader = (
|
|
66
|
-
|
|
62
|
+
}, this.resetGroupStickyHeader = (i, t) => {
|
|
63
|
+
i !== t.state.group && t.setState({ ...t.state, group: i });
|
|
67
64
|
}, this.listBoxId = n.props.id + "list", this.guid = n.props.id, this.component = n, this.vs.PageChange = this.pageChange;
|
|
68
65
|
}
|
|
66
|
+
didUpdate() {
|
|
67
|
+
this.vs.listTransform && this.vs.list && (this.vs.list.style.transform = this.vs.listTransform, this.vs.listTransform = "");
|
|
68
|
+
}
|
|
69
69
|
didMount() {
|
|
70
|
-
const n = this.component.props,
|
|
70
|
+
const n = this.component.props, i = n.popupSettings || {}, t = n.style || {}, e = i.width;
|
|
71
71
|
let o = n.opened === !0;
|
|
72
|
-
|
|
72
|
+
e === void 0 && this.calculatePopupWidth(), n.dir === void 0 && t.direction === void 0 && (this.calculateDir(), o = !0), o && this.component.forceUpdate();
|
|
73
73
|
}
|
|
74
74
|
calculateDir() {
|
|
75
75
|
const n = this.component.element;
|
|
@@ -78,13 +78,17 @@ const a = class a {
|
|
|
78
78
|
calculatePopupWidth() {
|
|
79
79
|
this.wrapper && (this.popupWidth = this.wrapper.offsetWidth + "px");
|
|
80
80
|
}
|
|
81
|
-
scrollToItem(n,
|
|
82
|
-
const
|
|
83
|
-
if (!
|
|
84
|
-
this.scrollToItem(n,
|
|
85
|
-
}, 10),
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
scrollToItem(n, i, t) {
|
|
82
|
+
const e = this.list || this.vs.list;
|
|
83
|
+
if (!e && !t && setTimeout(() => {
|
|
84
|
+
this.scrollToItem(n, i, !0);
|
|
85
|
+
}, 10), n === 0 && i && this.vs.skip === 0) {
|
|
86
|
+
this.vs.reset();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (e && n >= 0) {
|
|
90
|
+
const o = this.vs, p = o.container || e.parentNode, r = i !== void 0 ? i : o.enabled;
|
|
91
|
+
S(p, e, n, o.translate, r);
|
|
88
92
|
}
|
|
89
93
|
}
|
|
90
94
|
initState() {
|
|
@@ -96,35 +100,35 @@ const a = class a {
|
|
|
96
100
|
}
|
|
97
101
|
applyState(n) {
|
|
98
102
|
Object.keys(n.data).length > 0 && this.component.setState(n.data);
|
|
99
|
-
const
|
|
103
|
+
const i = {
|
|
100
104
|
syntheticEvent: n.syntheticEvent,
|
|
101
105
|
nativeEvent: n.syntheticEvent ? n.syntheticEvent.nativeEvent : void 0,
|
|
102
106
|
target: this.component,
|
|
103
107
|
value: this.component.value
|
|
104
108
|
};
|
|
105
|
-
n.events.forEach((
|
|
106
|
-
const
|
|
107
|
-
delete
|
|
108
|
-
const o =
|
|
109
|
+
n.events.forEach((t) => {
|
|
110
|
+
const e = t.type;
|
|
111
|
+
delete t.type;
|
|
112
|
+
const o = e && this.component.props[e];
|
|
109
113
|
o && o.call(void 0, {
|
|
110
|
-
...
|
|
111
|
-
...
|
|
114
|
+
...i,
|
|
115
|
+
...t
|
|
112
116
|
});
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
|
-
triggerOnPageChange(n,
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
const o = Math.min(Math.max(0,
|
|
119
|
-
o !==
|
|
119
|
+
triggerOnPageChange(n, i, t) {
|
|
120
|
+
const e = this.component.props.virtual;
|
|
121
|
+
if (e) {
|
|
122
|
+
const o = Math.min(Math.max(0, i), Math.max(0, e.total - t));
|
|
123
|
+
o !== e.skip && n.events.push({
|
|
120
124
|
type: "onPageChange",
|
|
121
|
-
page: { skip: o, take:
|
|
125
|
+
page: { skip: o, take: t }
|
|
122
126
|
});
|
|
123
127
|
}
|
|
124
128
|
}
|
|
125
|
-
triggerPageChangeCornerItems(n,
|
|
126
|
-
const
|
|
127
|
-
n && p && this.vs.enabled && (p.skip > 0 && g(n,
|
|
129
|
+
triggerPageChangeCornerItems(n, i) {
|
|
130
|
+
const t = this.component.props, { data: e = [], dataItemKey: o, virtual: p } = t, r = t.opened !== void 0 ? t.opened : this.component.state.opened;
|
|
131
|
+
n && p && this.vs.enabled && (p.skip > 0 && g(n, e[0], o) ? this.triggerOnPageChange(i, p.skip - 1, p.pageSize) : !r && p.skip + p.pageSize < p.total && g(n, e[e.length - 1], o) && this.triggerOnPageChange(i, p.skip + 1, p.pageSize));
|
|
128
132
|
}
|
|
129
133
|
getPopupSettings() {
|
|
130
134
|
return Object.assign({}, a.defaultProps.popupSettings, this.component.props.popupSettings);
|
|
@@ -133,58 +137,58 @@ const a = class a {
|
|
|
133
137
|
const n = this.getPopupSettings();
|
|
134
138
|
return n.animate !== void 0 ? n.animate : !0;
|
|
135
139
|
}
|
|
136
|
-
getGroupedDataModernMode(n,
|
|
137
|
-
|
|
138
|
-
return n.forEach((
|
|
139
|
-
n[o - 1] &&
|
|
140
|
-
}),
|
|
140
|
+
getGroupedDataModernMode(n, i) {
|
|
141
|
+
const t = [];
|
|
142
|
+
return n.forEach((e, o) => {
|
|
143
|
+
n[o - 1] && e[i] !== n[o - 1][i] && t.push({ [i]: e[i] }), t.push(n[o]);
|
|
144
|
+
}), t;
|
|
141
145
|
}
|
|
142
146
|
};
|
|
143
147
|
a.basicPropTypes = {
|
|
144
|
-
opened:
|
|
145
|
-
disabled:
|
|
146
|
-
dir:
|
|
147
|
-
tabIndex:
|
|
148
|
-
accessKey:
|
|
149
|
-
data:
|
|
150
|
-
textField:
|
|
151
|
-
className:
|
|
152
|
-
label:
|
|
153
|
-
loading:
|
|
154
|
-
popupSettings:
|
|
155
|
-
animate:
|
|
156
|
-
openDuration:
|
|
157
|
-
closeDuration:
|
|
148
|
+
opened: s.bool,
|
|
149
|
+
disabled: s.bool,
|
|
150
|
+
dir: s.string,
|
|
151
|
+
tabIndex: s.number,
|
|
152
|
+
accessKey: s.string,
|
|
153
|
+
data: s.array,
|
|
154
|
+
textField: s.string,
|
|
155
|
+
className: s.string,
|
|
156
|
+
label: s.string,
|
|
157
|
+
loading: s.bool,
|
|
158
|
+
popupSettings: s.shape({
|
|
159
|
+
animate: s.oneOfType([s.bool, s.shape({
|
|
160
|
+
openDuration: s.number,
|
|
161
|
+
closeDuration: s.number
|
|
158
162
|
})]),
|
|
159
|
-
popupClass:
|
|
160
|
-
className:
|
|
161
|
-
appendTo:
|
|
162
|
-
width:
|
|
163
|
-
height:
|
|
163
|
+
popupClass: s.string,
|
|
164
|
+
className: s.string,
|
|
165
|
+
appendTo: s.any,
|
|
166
|
+
width: s.oneOfType([s.string, s.number]),
|
|
167
|
+
height: s.oneOfType([s.string, s.number])
|
|
164
168
|
}),
|
|
165
|
-
onOpen:
|
|
166
|
-
onClose:
|
|
167
|
-
onFocus:
|
|
168
|
-
onBlur:
|
|
169
|
-
onChange:
|
|
170
|
-
itemRender:
|
|
171
|
-
listNoDataRender:
|
|
172
|
-
focusedItemIndex:
|
|
173
|
-
header:
|
|
174
|
-
footer:
|
|
169
|
+
onOpen: s.func,
|
|
170
|
+
onClose: s.func,
|
|
171
|
+
onFocus: s.func,
|
|
172
|
+
onBlur: s.func,
|
|
173
|
+
onChange: s.func,
|
|
174
|
+
itemRender: s.func,
|
|
175
|
+
listNoDataRender: s.func,
|
|
176
|
+
focusedItemIndex: s.func,
|
|
177
|
+
header: s.node,
|
|
178
|
+
footer: s.node
|
|
175
179
|
}, a.propTypes = {
|
|
176
180
|
...a.basicPropTypes,
|
|
177
|
-
value:
|
|
178
|
-
defaultValue:
|
|
179
|
-
filterable:
|
|
180
|
-
filter:
|
|
181
|
-
virtual:
|
|
182
|
-
pageSize:
|
|
183
|
-
skip:
|
|
184
|
-
total:
|
|
181
|
+
value: s.any,
|
|
182
|
+
defaultValue: s.any,
|
|
183
|
+
filterable: s.bool,
|
|
184
|
+
filter: s.string,
|
|
185
|
+
virtual: s.shape({
|
|
186
|
+
pageSize: s.number.isRequired,
|
|
187
|
+
skip: s.number.isRequired,
|
|
188
|
+
total: s.number.isRequired
|
|
185
189
|
}),
|
|
186
|
-
onFilterChange:
|
|
187
|
-
onPageChange:
|
|
190
|
+
onFilterChange: s.func,
|
|
191
|
+
onPageChange: s.func
|
|
188
192
|
}, a.defaultProps = {
|
|
189
193
|
popupSettings: {
|
|
190
194
|
height: "200px"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@progress/kendo-react-common"),u=require("react");function p(l){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const i in l)if(i!=="default"){const e=Object.getOwnPropertyDescriptor(l,i);Object.defineProperty(t,i,e.get?e:{enumerable:!0,get:()=>l[i]})}}return t.default=l,Object.freeze(t)}const S=p(u),m=17895697,c=typeof window!="undefined"&&/Firefox/.test(window.navigator.userAgent);class H{constructor(){this.table=null,this.total=0,this.enabled=!1,this.skip=0,this.pageSize=0,this.PageChange=null,this.scrollElement=null,this.listTransform="",this.itemHeight=0,this.containerHeight=0,this.reactVersion=Number.parseFloat(S.version),this.scrollSyncing=!1,this.lastLoaded=0,this.firstLoaded=0,this.lastScrollTop=0,this.listTranslate=0,this.list=null,this.container=null,this.calcScrollElementHeight=()=>{var h;this.scrollSyncing=!0;let t=!1;this.itemHeight=this.list?this.list.children[0].offsetHeight:this.itemHeight;const i=this.itemHeight*this.total-(((h=this.list)==null?void 0:h.offsetHeight)||0);this.containerHeight=c?Math.min(m,i):i;const e=this.containerHeight;return this.scrollElement&&(t=this.scrollElement.style.height!==e+"px",t&&(this.scrollElement.style.height=e+"px")),this.scrollSyncing=!1,t},this.scrollerRef=t=>{this.container=t,t&&(t.setAttribute("unselectable","on"),window.setTimeout(this.calcScrollElementHeight.bind(this),0))},this.getRowHeightService=n.memoizeOne((t,i)=>new n.RowHeightService(i,t,0)),this.firstLoaded=this.pageSize,this.lastLoaded=this.skip+this.pageSize,this.scrollHandler=this.scrollHandler.bind(this)}get translate(){return this.listTranslate}translateTo(t,i){this.listTranslate=t,this.enabled&&this.list&&(c||this.reactVersion<=17||i?this.list.style.transform="translateY("+t+"px)":this.listTransform="translateY("+t+"px)")}changePage(t,i){const e=Math.min(Math.max(0,t),this.total-this.pageSize);e!==this.skip&&this.PageChange&&this.PageChange({skip:e,take:this.pageSize},i)}reset(){this.container&&(this.calcScrollElementHeight(),this.container.scrollTop=0,this.translateTo(0,!0))}scrollToEnd(){if(this.container&&this.list){this.calcScrollElementHeight();const{scrollHeight:t,offsetHeight:i}=this.container;this.container.scrollTop=t,this.translateTo(t-i,!0)}}scrollHandler(t){if(!this.enabled||!this.container||!this.list)return;if(this.scrollSyncing){this.scrollSyncing=!1;return}this.rowHeightService=this.getRowHeightService(this.itemHeight,this.total);const i=this.container.scrollTop,e=this.lastScrollTop>=i,h=!e,f=Math.abs(i-this.lastScrollTop);this.lastScrollTop=i;let s=this.rowHeightService.index(i),r=this.rowHeightService.offset(s);const{offsetHeight:g}=this.container,d=this.rowHeightService.index(i+g);if(h&&d>=this.lastLoaded&&this.lastLoaded<this.total){const o=s+this.pageSize-this.total;o>0&&(s=s-o,r=this.rowHeightService.offset(s)),this.firstLoaded=s,this.translateTo(r);const a=this.firstLoaded+this.pageSize;this.lastLoaded=Math.min(a,this.total),this.changePage(this.firstLoaded,t)}else if(e&&s-1<=this.firstLoaded){const o=f===this.itemHeight;if(this.skip===0&&o)this.lastScrollTop=0,this.firstLoaded=0,this.lastLoaded=this.pageSize,this.container.scrollTop=0,this.translateTo(0,!0);else{const a=Math.floor(this.pageSize*.3);this.firstLoaded=Math.max(s-a,0),this.translateTo(this.rowHeightService.offset(this.firstLoaded)),this.lastLoaded=Math.min(this.firstLoaded+this.pageSize,this.total),this.changePage(this.firstLoaded,t)}}}}exports.VirtualScroll=H;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";
|
|
9
|
+
import { memoizeOne as f, RowHeightService as d } from "@progress/kendo-react-common";
|
|
10
|
+
import * as p from "react";
|
|
11
|
+
const S = 17895697, r = typeof window != "undefined" && /Firefox/.test(window.navigator.userAgent);
|
|
12
|
+
class u {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.table = null, this.total = 0, this.enabled = !1, this.skip = 0, this.pageSize = 0, this.PageChange = null, this.scrollElement = null, this.listTransform = "", this.itemHeight = 0, this.containerHeight = 0, this.reactVersion = Number.parseFloat(p.version), this.scrollSyncing = !1, this.lastLoaded = 0, this.firstLoaded = 0, this.lastScrollTop = 0, this.listTranslate = 0, this.list = null, this.container = null, this.calcScrollElementHeight = () => {
|
|
15
|
+
var h;
|
|
16
|
+
this.scrollSyncing = !0;
|
|
17
|
+
let t = !1;
|
|
18
|
+
this.itemHeight = this.list ? this.list.children[0].offsetHeight : this.itemHeight;
|
|
19
|
+
const i = this.itemHeight * this.total - (((h = this.list) == null ? void 0 : h.offsetHeight) || 0);
|
|
20
|
+
this.containerHeight = r ? Math.min(S, i) : i;
|
|
21
|
+
const s = this.containerHeight;
|
|
22
|
+
return this.scrollElement && (t = this.scrollElement.style.height !== s + "px", t && (this.scrollElement.style.height = s + "px")), this.scrollSyncing = !1, t;
|
|
23
|
+
}, this.scrollerRef = (t) => {
|
|
24
|
+
this.container = t, t && (t.setAttribute("unselectable", "on"), window.setTimeout(this.calcScrollElementHeight.bind(this), 0));
|
|
25
|
+
}, this.getRowHeightService = f((t, i) => new d(i, t, 0)), this.firstLoaded = this.pageSize, this.lastLoaded = this.skip + this.pageSize, this.scrollHandler = this.scrollHandler.bind(this);
|
|
26
|
+
}
|
|
27
|
+
get translate() {
|
|
28
|
+
return this.listTranslate;
|
|
29
|
+
}
|
|
30
|
+
translateTo(t, i) {
|
|
31
|
+
this.listTranslate = t, this.enabled && this.list && (r || this.reactVersion <= 17 || i ? this.list.style.transform = "translateY(" + t + "px)" : this.listTransform = "translateY(" + t + "px)");
|
|
32
|
+
}
|
|
33
|
+
changePage(t, i) {
|
|
34
|
+
const s = Math.min(Math.max(0, t), this.total - this.pageSize);
|
|
35
|
+
s !== this.skip && this.PageChange && this.PageChange({ skip: s, take: this.pageSize }, i);
|
|
36
|
+
}
|
|
37
|
+
reset() {
|
|
38
|
+
this.container && (this.calcScrollElementHeight(), this.container.scrollTop = 0, this.translateTo(0, !0));
|
|
39
|
+
}
|
|
40
|
+
scrollToEnd() {
|
|
41
|
+
if (this.container && this.list) {
|
|
42
|
+
this.calcScrollElementHeight();
|
|
43
|
+
const { scrollHeight: t, offsetHeight: i } = this.container;
|
|
44
|
+
this.container.scrollTop = t, this.translateTo(t - i, !0);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
scrollHandler(t) {
|
|
48
|
+
if (!this.enabled || !this.container || !this.list)
|
|
49
|
+
return;
|
|
50
|
+
if (this.scrollSyncing) {
|
|
51
|
+
this.scrollSyncing = !1;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.rowHeightService = this.getRowHeightService(this.itemHeight, this.total);
|
|
55
|
+
const i = this.container.scrollTop, s = this.lastScrollTop >= i, h = !s, n = Math.abs(i - this.lastScrollTop);
|
|
56
|
+
this.lastScrollTop = i;
|
|
57
|
+
let e = this.rowHeightService.index(i), a = this.rowHeightService.offset(e);
|
|
58
|
+
const { offsetHeight: c } = this.container, g = this.rowHeightService.index(i + c);
|
|
59
|
+
if (h && g >= this.lastLoaded && this.lastLoaded < this.total) {
|
|
60
|
+
const l = e + this.pageSize - this.total;
|
|
61
|
+
l > 0 && (e = e - l, a = this.rowHeightService.offset(e)), this.firstLoaded = e, this.translateTo(a);
|
|
62
|
+
const o = this.firstLoaded + this.pageSize;
|
|
63
|
+
this.lastLoaded = Math.min(o, this.total), this.changePage(this.firstLoaded, t);
|
|
64
|
+
} else if (s && e - 1 <= this.firstLoaded) {
|
|
65
|
+
const l = n === this.itemHeight;
|
|
66
|
+
if (this.skip === 0 && l)
|
|
67
|
+
this.lastScrollTop = 0, this.firstLoaded = 0, this.lastLoaded = this.pageSize, this.container.scrollTop = 0, this.translateTo(0, !0);
|
|
68
|
+
else {
|
|
69
|
+
const o = Math.floor(this.pageSize * 0.3);
|
|
70
|
+
this.firstLoaded = Math.max(e - o, 0), this.translateTo(this.rowHeightService.offset(this.firstLoaded)), this.lastLoaded = Math.min(this.firstLoaded + this.pageSize, this.total), this.changePage(this.firstLoaded, t);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
u as VirtualScroll
|
|
77
|
+
};
|