vxe-pc-ui 3.18.21 → 3.18.22

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 (68) hide show
  1. package/es/components.js +3 -0
  2. package/es/icon/style.css +1 -1
  3. package/es/scrollbar/index.js +12 -0
  4. package/es/scrollbar/src/scrollbar.js +540 -0
  5. package/es/scrollbar/src/util.js +54 -0
  6. package/es/scrollbar/style.css +102 -0
  7. package/es/scrollbar/style.min.css +1 -0
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/ui/index.js +10 -1
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-scrollbar/index.js +3 -0
  13. package/es/vxe-scrollbar/style.css +102 -0
  14. package/es/vxe-scrollbar/style.min.css +1 -0
  15. package/lib/components.js +13 -1
  16. package/lib/components.min.js +1 -1
  17. package/lib/icon/style/style.css +1 -1
  18. package/lib/icon/style/style.min.css +1 -1
  19. package/lib/index.umd.js +694 -7
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/scrollbar/index.js +19 -0
  22. package/lib/scrollbar/index.min.js +1 -0
  23. package/lib/scrollbar/src/scrollbar.js +551 -0
  24. package/lib/scrollbar/src/scrollbar.min.js +1 -0
  25. package/lib/scrollbar/src/util.js +63 -0
  26. package/lib/scrollbar/src/util.min.js +1 -0
  27. package/lib/scrollbar/style/index.js +1 -0
  28. package/lib/scrollbar/style/style.css +102 -0
  29. package/lib/scrollbar/style/style.min.css +1 -0
  30. package/lib/style.css +1 -1
  31. package/lib/style.min.css +1 -1
  32. package/lib/ui/index.js +10 -1
  33. package/lib/ui/index.min.js +1 -1
  34. package/lib/ui/src/log.js +1 -1
  35. package/lib/ui/src/log.min.js +1 -1
  36. package/lib/vxe-scrollbar/index.js +22 -0
  37. package/lib/vxe-scrollbar/index.min.js +1 -0
  38. package/lib/vxe-scrollbar/style/index.js +1 -0
  39. package/lib/vxe-scrollbar/style/style.css +102 -0
  40. package/lib/vxe-scrollbar/style/style.min.css +1 -0
  41. package/package.json +2 -2
  42. package/packages/components.ts +3 -0
  43. package/packages/scrollbar/index.ts +16 -0
  44. package/packages/scrollbar/src/scrollbar.ts +583 -0
  45. package/packages/scrollbar/src/util.ts +57 -0
  46. package/packages/ui/index.ts +9 -0
  47. package/styles/all.scss +1 -0
  48. package/styles/components/scrollbar.scss +114 -0
  49. package/styles/theme/base.scss +5 -0
  50. package/styles/theme/dark.scss +5 -0
  51. package/styles/theme/light.scss +5 -0
  52. package/styles/variable.scss +5 -0
  53. package/types/all.d.ts +3 -0
  54. package/types/components/gantt.d.ts +3 -3
  55. package/types/components/scrollbar.d.ts +209 -0
  56. package/types/ui/global-config.d.ts +2 -0
  57. /package/es/icon/{iconfont.1790757609697.ttf → iconfont.1791471260167.ttf} +0 -0
  58. /package/es/icon/{iconfont.1790757609697.woff → iconfont.1791471260167.woff} +0 -0
  59. /package/es/icon/{iconfont.1790757609697.woff2 → iconfont.1791471260167.woff2} +0 -0
  60. /package/es/{iconfont.1790757609697.ttf → iconfont.1791471260167.ttf} +0 -0
  61. /package/es/{iconfont.1790757609697.woff → iconfont.1791471260167.woff} +0 -0
  62. /package/es/{iconfont.1790757609697.woff2 → iconfont.1791471260167.woff2} +0 -0
  63. /package/lib/icon/style/{iconfont.1790757609697.ttf → iconfont.1791471260167.ttf} +0 -0
  64. /package/lib/icon/style/{iconfont.1790757609697.woff → iconfont.1791471260167.woff} +0 -0
  65. /package/lib/icon/style/{iconfont.1790757609697.woff2 → iconfont.1791471260167.woff2} +0 -0
  66. /package/lib/{iconfont.1790757609697.ttf → iconfont.1791471260167.ttf} +0 -0
  67. /package/lib/{iconfont.1790757609697.woff → iconfont.1791471260167.woff} +0 -0
  68. /package/lib/{iconfont.1790757609697.woff2 → iconfont.1791471260167.woff2} +0 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.VxeScrollbar = exports.Scrollbar = void 0;
7
+ var _core = require("@vxe-ui/core");
8
+ var _scrollbar = _interopRequireDefault(require("./src/scrollbar"));
9
+ var _dynamics = require("../dynamics");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ var VxeScrollbar = exports.VxeScrollbar = Object.assign({}, _scrollbar.default, {
12
+ install: function install(app) {
13
+ app.component(_scrollbar.default.name, _scrollbar.default);
14
+ }
15
+ });
16
+ _dynamics.dynamicApp.use(VxeScrollbar);
17
+ _core.VxeUI.component(_scrollbar.default);
18
+ var Scrollbar = exports.Scrollbar = VxeScrollbar;
19
+ var _default = exports.default = VxeScrollbar;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.VxeScrollbar=exports.Scrollbar=void 0;var _core=require("@vxe-ui/core"),_scrollbar=_interopRequireDefault(require("./src/scrollbar")),_dynamics=require("../dynamics");function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}var VxeScrollbar=exports.VxeScrollbar=Object.assign({},_scrollbar.default,{install:function(r){r.component(_scrollbar.default.name,_scrollbar.default)}}),Scrollbar=(_dynamics.dynamicApp.use(VxeScrollbar),_core.VxeUI.component(_scrollbar.default),exports.Scrollbar=VxeScrollbar),_default=exports.default=VxeScrollbar;
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _comp = require("../../ui/src/comp");
8
+ var _xeUtils = _interopRequireDefault(require("xe-utils"));
9
+ var _ui = require("../../ui");
10
+ var _dom = require("../../ui/src/dom");
11
+ var _util = require("./util");
12
+ var _loading = _interopRequireDefault(require("../../loading"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ var getConfig = _ui.VxeUI.getConfig,
15
+ createEvent = _ui.VxeUI.createEvent,
16
+ domUtils = _ui.VxeUI.domUtils,
17
+ globalResize = _ui.VxeUI.globalResize,
18
+ renderEmptyElement = _ui.VxeUI.renderEmptyElement;
19
+ function createReactData() {
20
+ return {
21
+ yThumbHeight: 0,
22
+ xThumbWidth: 0
23
+ };
24
+ }
25
+ function createInternalData() {
26
+ return {
27
+ // resizeObserver: undefined,
28
+ // isThumbDrag: false,
29
+ thumbDragOffset: 0,
30
+ yThumbTop: 0,
31
+ xThumbLeft: 0,
32
+ lastScrollTop: 0,
33
+ lastScrollLeft: 0
34
+ };
35
+ }
36
+ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defineVxeComponent)({
37
+ name: 'VxeScrollbar',
38
+ props: {
39
+ width: [String, Number],
40
+ height: [String, Number],
41
+ minWidth: [String, Number],
42
+ minHeight: [String, Number],
43
+ maxWidth: [String, Number],
44
+ maxHeight: [String, Number],
45
+ loading: Boolean,
46
+ native: {
47
+ type: Boolean,
48
+ default: function _default() {
49
+ return getConfig().scrollbar.native;
50
+ }
51
+ },
52
+ xConfig: Object,
53
+ yConfig: Object,
54
+ className: String,
55
+ viewClassName: String,
56
+ autoResize: {
57
+ type: Boolean,
58
+ default: function _default() {
59
+ return getConfig().scrollbar.autoResize;
60
+ }
61
+ },
62
+ syncResize: [Boolean, String, Number]
63
+ },
64
+ data: function data() {
65
+ var xID = _xeUtils.default.uniqueId();
66
+ var reactData = createReactData();
67
+ return Object.assign(Object.assign({}, {}), {
68
+ xID: xID,
69
+ reactData: reactData,
70
+ reFlag: 0
71
+ });
72
+ },
73
+ computed: {
74
+ computeWrapperStyle: function computeWrapperStyle() {
75
+ var $xeScrollbar = this;
76
+ var props = $xeScrollbar;
77
+ var width = props.width,
78
+ height = props.height,
79
+ minWidth = props.minWidth,
80
+ minHeight = props.minHeight,
81
+ maxWidth = props.maxWidth,
82
+ maxHeight = props.maxHeight;
83
+ var xOpts = $xeScrollbar.computeXOpts;
84
+ var yOpts = $xeScrollbar.computeYOpts;
85
+ var stys = {};
86
+ if (width) {
87
+ stys.width = (0, _dom.toCssUnit)(width);
88
+ }
89
+ if (height) {
90
+ stys.height = (0, _dom.toCssUnit)(height);
91
+ }
92
+ if (minWidth) {
93
+ stys.minWidth = (0, _dom.toCssUnit)(minWidth);
94
+ }
95
+ if (minHeight) {
96
+ stys.minHeight = (0, _dom.toCssUnit)(minHeight);
97
+ }
98
+ if (maxWidth) {
99
+ stys.maxWidth = (0, _dom.toCssUnit)(maxWidth);
100
+ }
101
+ if (maxHeight) {
102
+ stys.maxHeight = (0, _dom.toCssUnit)(maxHeight);
103
+ }
104
+ if (yOpts.width) {
105
+ stys['--vxe-ui-scrollbar-y-width'] = (0, _dom.toCssUnit)(yOpts.width);
106
+ }
107
+ if (xOpts.height) {
108
+ stys['--vxe-ui-scrollbar-x-height'] = (0, _dom.toCssUnit)(xOpts.height);
109
+ }
110
+ return stys;
111
+ },
112
+ computeWrapperClss: function computeWrapperClss() {
113
+ var $xeScrollbar = this;
114
+ var props = $xeScrollbar;
115
+ var native = props.native,
116
+ className = props.className;
117
+ var xOpts = $xeScrollbar.computeXOpts;
118
+ var yOpts = $xeScrollbar.computeYOpts;
119
+ return domUtils.buildClass(['vxe-scrollbar', "ov-x--".concat(xOpts.visible || 'visible'), "ov-y--".concat(yOpts.visible || 'visible'), native ? 'is--native' : 'is--virtual', className], {
120
+ 'ov-x--auto-hide': xOpts.autoHide,
121
+ 'ov-y--auto-hide': yOpts.autoHide
122
+ });
123
+ },
124
+ computeViewClss: function computeViewClss() {
125
+ var $xeScrollbar = this;
126
+ var props = $xeScrollbar;
127
+ var viewClassName = props.viewClassName;
128
+ return domUtils.buildClass(['vxe-scrollbar--view', viewClassName]);
129
+ },
130
+ computeXOpts: function computeXOpts() {
131
+ var $xeScrollbar = this;
132
+ var props = $xeScrollbar;
133
+ return Object.assign({}, getConfig().scrollbar.xConfig, props.xConfig);
134
+ },
135
+ computeYOpts: function computeYOpts() {
136
+ var $xeScrollbar = this;
137
+ var props = $xeScrollbar;
138
+ return Object.assign({}, getConfig().scrollbar.yConfig, props.yConfig);
139
+ }
140
+ },
141
+ methods: {
142
+ //
143
+ // Method
144
+ //
145
+ dispatchEvent: function dispatchEvent(type, params, evnt) {
146
+ var $xeScrollbar = this;
147
+ $xeScrollbar.$emit(type, createEvent(evnt, {
148
+ $scrollbar: $xeScrollbar
149
+ }, params));
150
+ },
151
+ scrollTo: function scrollTo(left, top) {
152
+ var $xeScrollbar = this;
153
+ var viewEl = $xeScrollbar.$refs.refViewElem;
154
+ if (viewEl) {
155
+ if (_xeUtils.default.isNumber(left)) {
156
+ viewEl.scrollTo(left, top || 0);
157
+ } else {
158
+ viewEl.scrollTo(left);
159
+ }
160
+ }
161
+ },
162
+ scrollIntoView: function scrollIntoView() {
163
+ var $xeScrollbar = this;
164
+ var viewEl = $xeScrollbar.$refs.refViewElem;
165
+ if (viewEl) {
166
+ viewEl.scrollIntoView();
167
+ }
168
+ },
169
+ recalculate: function recalculate() {
170
+ var $xeScrollbar = this;
171
+ $xeScrollbar.updateThumbSize();
172
+ $xeScrollbar.updateThumbOffset();
173
+ return $xeScrollbar.$nextTick();
174
+ },
175
+ updateThumbSize: function updateThumbSize() {
176
+ var $xeScrollbar = this;
177
+ var reactData = $xeScrollbar.reactData;
178
+ var viewEl = $xeScrollbar.$refs.refViewElem;
179
+ if (!viewEl) {
180
+ return;
181
+ }
182
+ var trackXEl = $xeScrollbar.$refs.refTrackXElem;
183
+ var xThumbWidth = trackXEl ? (0, _util.getThumbSize)(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
184
+ var thumbXElem = $xeScrollbar.$refs.refThumbXElem;
185
+ if (thumbXElem) {
186
+ thumbXElem.style.width = xThumbWidth + 'px';
187
+ }
188
+ reactData.xThumbWidth = xThumbWidth;
189
+ var trackYEl = $xeScrollbar.$refs.refTrackYElem;
190
+ var yThumbHeight = trackYEl ? (0, _util.getThumbSize)(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
191
+ var thumbYElem = $xeScrollbar.$refs.refThumbYElem;
192
+ if (thumbYElem) {
193
+ thumbYElem.style.height = yThumbHeight + 'px';
194
+ }
195
+ reactData.yThumbHeight = yThumbHeight;
196
+ },
197
+ updateThumbOffset: function updateThumbOffset() {
198
+ var $xeScrollbar = this;
199
+ var reactData = $xeScrollbar.reactData;
200
+ var internalData = $xeScrollbar.internalData;
201
+ var viewEl = $xeScrollbar.$refs.refViewElem;
202
+ if (!viewEl) {
203
+ return;
204
+ }
205
+ var xThumbWidth = reactData.xThumbWidth,
206
+ yThumbHeight = reactData.yThumbHeight;
207
+ var trackXEl = $xeScrollbar.$refs.refTrackXElem;
208
+ var thumbXElem = $xeScrollbar.$refs.refThumbXElem;
209
+ var xThumbLeft = trackXEl && xThumbWidth ? (0, _util.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
210
+ internalData.xThumbLeft = xThumbLeft;
211
+ if (thumbXElem && xThumbWidth) {
212
+ thumbXElem.style.width = xThumbWidth + 'px';
213
+ thumbXElem.style.transform = "translateX(".concat(xThumbLeft, "px)");
214
+ }
215
+ var trackYEl = $xeScrollbar.$refs.refTrackYElem;
216
+ var thumbYElem = $xeScrollbar.$refs.refThumbYElem;
217
+ var yThumbTop = trackYEl && yThumbHeight ? (0, _util.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
218
+ internalData.yThumbTop = yThumbTop;
219
+ if (thumbYElem && yThumbHeight) {
220
+ thumbYElem.style.height = yThumbHeight + 'px';
221
+ thumbYElem.style.transform = "translateY(".concat(yThumbTop, "px)");
222
+ }
223
+ },
224
+ scrollEvent: function scrollEvent(evnt) {
225
+ var $xeScrollbar = this;
226
+ var reactData = $xeScrollbar.reactData;
227
+ var internalData = $xeScrollbar.internalData;
228
+ var xThumbWidth = reactData.xThumbWidth,
229
+ yThumbHeight = reactData.yThumbHeight;
230
+ var lastScrollTop = internalData.lastScrollTop,
231
+ lastScrollLeft = internalData.lastScrollLeft;
232
+ var xOpts = $xeScrollbar.computeXOpts;
233
+ var yOpts = $xeScrollbar.computeYOpts;
234
+ var viewEl = evnt.currentTarget;
235
+ var scrollTop = viewEl.scrollTop,
236
+ scrollLeft = viewEl.scrollLeft,
237
+ clientWidth = viewEl.clientWidth,
238
+ clientHeight = viewEl.clientHeight,
239
+ scrollHeight = viewEl.scrollHeight,
240
+ scrollWidth = viewEl.scrollWidth;
241
+ var direction = '';
242
+ var isTopBoundary = false;
243
+ var isBottomBoundary = false;
244
+ var isLeftBoundary = false;
245
+ var isRightBoundary = false;
246
+ if (lastScrollTop !== scrollTop) {
247
+ var yThreshold = _xeUtils.default.toNumber(yOpts.threshold) || 1;
248
+ if (lastScrollTop < scrollTop) {
249
+ direction = 'bottom';
250
+ if (yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight - yThreshold) {
251
+ isBottomBoundary = true;
252
+ }
253
+ } else {
254
+ direction = 'top';
255
+ if (yThumbHeight > 0 && scrollTop <= yThreshold) {
256
+ isTopBoundary = true;
257
+ }
258
+ }
259
+ }
260
+ if (lastScrollLeft !== scrollLeft) {
261
+ var xThreshold = _xeUtils.default.toNumber(xOpts.threshold) || 1;
262
+ if (lastScrollLeft < scrollLeft) {
263
+ direction = 'right';
264
+ if (xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth - xThreshold) {
265
+ isRightBoundary = true;
266
+ }
267
+ } else {
268
+ direction = 'left';
269
+ if (xThumbWidth > 0 && scrollLeft <= xThreshold) {
270
+ isLeftBoundary = true;
271
+ }
272
+ }
273
+ }
274
+ $xeScrollbar.updateThumbOffset();
275
+ internalData.lastScrollTop = scrollTop;
276
+ internalData.lastScrollLeft = scrollLeft;
277
+ if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
278
+ $xeScrollbar.dispatchEvent('scroll-boundary', {
279
+ direction: direction,
280
+ isTop: isTopBoundary,
281
+ isBottom: isBottomBoundary,
282
+ isLeft: isLeftBoundary,
283
+ isRight: isRightBoundary,
284
+ scrollTop: scrollTop,
285
+ scrollLeft: scrollLeft,
286
+ clientWidth: clientWidth,
287
+ clientHeight: clientHeight,
288
+ scrollHeight: scrollHeight,
289
+ scrollWidth: scrollWidth
290
+ }, evnt);
291
+ }
292
+ $xeScrollbar.dispatchEvent('scroll', {
293
+ direction: direction,
294
+ isTop: yThumbHeight > 0 && scrollTop <= 0,
295
+ isBottom: yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight,
296
+ isLeft: xThumbWidth > 0 && scrollLeft <= 0,
297
+ isRight: xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth,
298
+ scrollTop: scrollTop,
299
+ scrollLeft: scrollLeft,
300
+ clientWidth: clientWidth,
301
+ clientHeight: clientHeight,
302
+ scrollHeight: scrollHeight,
303
+ scrollWidth: scrollWidth
304
+ }, evnt);
305
+ },
306
+ clickTrackXEvent: function clickTrackXEvent(evnt) {
307
+ var $xeScrollbar = this;
308
+ var reactData = $xeScrollbar.reactData;
309
+ var trackEl = evnt.currentTarget;
310
+ if (trackEl !== evnt.target) {
311
+ return;
312
+ }
313
+ var viewEl = $xeScrollbar.$refs.refViewElem;
314
+ if (!viewEl) {
315
+ return;
316
+ }
317
+ var xThumbWidth = reactData.xThumbWidth;
318
+ var trackRect = trackEl.getBoundingClientRect();
319
+ viewEl.scrollTo({
320
+ left: (0, _util.getScrollFromClick)(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
321
+ behavior: 'auto'
322
+ });
323
+ },
324
+ clickTrackYEvent: function clickTrackYEvent(evnt) {
325
+ var $xeScrollbar = this;
326
+ var reactData = $xeScrollbar.reactData;
327
+ var trackEl = evnt.currentTarget;
328
+ if (trackEl !== evnt.target) {
329
+ return;
330
+ }
331
+ var viewEl = $xeScrollbar.$refs.refViewElem;
332
+ if (!viewEl) {
333
+ return;
334
+ }
335
+ var yThumbHeight = reactData.yThumbHeight;
336
+ var trackRect = trackEl.getBoundingClientRect();
337
+ viewEl.scrollTo({
338
+ top: (0, _util.getScrollFromClick)(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
339
+ behavior: 'auto'
340
+ });
341
+ },
342
+ pointerdownThumbXEvent: function pointerdownThumbXEvent(evnt) {
343
+ var $xeScrollbar = this;
344
+ var reactData = $xeScrollbar.reactData;
345
+ var internalData = $xeScrollbar.internalData;
346
+ var thumbEl = evnt.currentTarget;
347
+ internalData.isThumbDrag = true;
348
+ thumbEl.setPointerCapture(evnt.pointerId);
349
+ var viewEl = $xeScrollbar.$refs.refViewElem;
350
+ if (!viewEl) {
351
+ return;
352
+ }
353
+ var xThumbWidth = reactData.xThumbWidth;
354
+ var trackEl = thumbEl.parentElement;
355
+ var trackRect = trackEl.getBoundingClientRect();
356
+ var pointerPosition = evnt.clientX - trackRect.left;
357
+ // 记录 thumb 的偏移
358
+ var thumbOffset = (0, _util.getThumbOffsetSize)(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
359
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
360
+ },
361
+ pointermoveThumbXEvent: function pointermoveThumbXEvent(evnt) {
362
+ var $xeScrollbar = this;
363
+ var reactData = $xeScrollbar.reactData;
364
+ var internalData = $xeScrollbar.internalData;
365
+ var isThumbDrag = internalData.isThumbDrag,
366
+ thumbDragOffset = internalData.thumbDragOffset;
367
+ if (isThumbDrag) {
368
+ var viewEl = $xeScrollbar.$refs.refViewElem;
369
+ if (!viewEl) {
370
+ return;
371
+ }
372
+ var xThumbWidth = reactData.xThumbWidth;
373
+ var thumbEl = evnt.currentTarget;
374
+ var trackEl = thumbEl.parentElement;
375
+ var trackRect = trackEl.getBoundingClientRect();
376
+ // 更新偏移
377
+ viewEl.scrollLeft = (0, _util.getScrollFromDrag)(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
378
+ }
379
+ },
380
+ cleatPointerThumbEvent: function cleatPointerThumbEvent(evnt) {
381
+ var $xeScrollbar = this;
382
+ var internalData = $xeScrollbar.internalData;
383
+ var thumbEl = evnt.currentTarget;
384
+ thumbEl.releasePointerCapture(evnt.pointerId);
385
+ internalData.isThumbDrag = false;
386
+ },
387
+ pointerdownThumbYEvent: function pointerdownThumbYEvent(evnt) {
388
+ var $xeScrollbar = this;
389
+ var reactData = $xeScrollbar.reactData;
390
+ var internalData = $xeScrollbar.internalData;
391
+ var thumbEl = evnt.currentTarget;
392
+ internalData.isThumbDrag = true;
393
+ thumbEl.setPointerCapture(evnt.pointerId);
394
+ var viewEl = $xeScrollbar.$refs.refViewElem;
395
+ if (!viewEl) {
396
+ return;
397
+ }
398
+ var yThumbHeight = reactData.yThumbHeight;
399
+ var trackEl = thumbEl.parentElement;
400
+ var trackRect = trackEl.getBoundingClientRect();
401
+ var pointerPosition = evnt.clientY - trackRect.top;
402
+ // 记录 thumb 的偏移
403
+ var thumbOffset = (0, _util.getThumbOffsetSize)(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
404
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
405
+ },
406
+ pointermoveThumbYEvent: function pointermoveThumbYEvent(evnt) {
407
+ var $xeScrollbar = this;
408
+ var reactData = $xeScrollbar.reactData;
409
+ var internalData = $xeScrollbar.internalData;
410
+ var isThumbDrag = internalData.isThumbDrag,
411
+ thumbDragOffset = internalData.thumbDragOffset;
412
+ if (isThumbDrag) {
413
+ var viewEl = $xeScrollbar.$refs.refViewElem;
414
+ if (!viewEl) {
415
+ return;
416
+ }
417
+ var yThumbHeight = reactData.yThumbHeight;
418
+ var thumbEl = evnt.currentTarget;
419
+ var trackEl = thumbEl.parentElement;
420
+ var trackRect = trackEl.getBoundingClientRect();
421
+ // 更新偏移
422
+ viewEl.scrollTop = (0, _util.getScrollFromDrag)(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
423
+ }
424
+ },
425
+ //
426
+ // Render
427
+ //
428
+ renderVN: function renderVN(h) {
429
+ var $xeScrollbar = this;
430
+ var props = $xeScrollbar;
431
+ var slots = $xeScrollbar.$scopedSlots;
432
+ var native = props.native,
433
+ loading = props.loading;
434
+ var wrapperStyle = $xeScrollbar.computeWrapperStyle;
435
+ var wrapperClss = $xeScrollbar.computeWrapperClss;
436
+ var viewClss = $xeScrollbar.computeViewClss;
437
+ var xOpts = $xeScrollbar.computeXOpts;
438
+ var yOpts = $xeScrollbar.computeYOpts;
439
+ var defaultSlot = slots.default;
440
+ return h('div', {
441
+ ref: 'refElem',
442
+ class: wrapperClss,
443
+ style: wrapperStyle
444
+ }, [h('div', {
445
+ ref: 'refViewElem',
446
+ class: viewClss,
447
+ on: {
448
+ scroll: $xeScrollbar.scrollEvent
449
+ }
450
+ }, [h('div', {
451
+ ref: 'refViewInnerElem',
452
+ class: 'vxe-scrollbar--view-inner'
453
+ }, defaultSlot ? defaultSlot({}) : [])]), native || xOpts.visible === 'hidden' ? renderEmptyElement($xeScrollbar) : h('div', {
454
+ ref: 'refTrackXElem',
455
+ class: 'vxe-scrollbar--track-x',
456
+ on: {
457
+ click: $xeScrollbar.clickTrackXEvent
458
+ }
459
+ }, [h('div', {
460
+ ref: 'refThumbXElem',
461
+ class: 'vxe-scrollbar--thumb-x',
462
+ on: {
463
+ pointerdown: $xeScrollbar.pointerdownThumbXEvent,
464
+ pointermove: $xeScrollbar.pointermoveThumbXEvent,
465
+ pointerup: $xeScrollbar.cleatPointerThumbEvent,
466
+ pointercancel: $xeScrollbar.cleatPointerThumbEvent,
467
+ lostpointercapture: $xeScrollbar.cleatPointerThumbEvent
468
+ }
469
+ })]), native || yOpts.visible === 'hidden' ? renderEmptyElement($xeScrollbar) : h('div', {
470
+ ref: 'refTrackYElem',
471
+ class: 'vxe-scrollbar--track-y',
472
+ on: {
473
+ click: $xeScrollbar.clickTrackYEvent
474
+ }
475
+ }, [h('div', {
476
+ ref: 'refThumbYElem',
477
+ class: 'vxe-scrollbar--thumb-y',
478
+ on: {
479
+ pointerdown: $xeScrollbar.pointerdownThumbYEvent,
480
+ pointermove: $xeScrollbar.pointermoveThumbYEvent,
481
+ pointerup: $xeScrollbar.cleatPointerThumbEvent,
482
+ pointercancel: $xeScrollbar.cleatPointerThumbEvent,
483
+ lostpointercapture: $xeScrollbar.cleatPointerThumbEvent
484
+ }
485
+ })]), h(_loading.default, {
486
+ class: 'vxe-scrollbar--loading',
487
+ props: {
488
+ value: loading
489
+ }
490
+ })]);
491
+ }
492
+ },
493
+ watch: {
494
+ native: function native() {
495
+ var $xeScrollbar = this;
496
+ $xeScrollbar.reFlag++;
497
+ },
498
+ syncResize: function syncResize() {
499
+ var $xeScrollbar = this;
500
+ $xeScrollbar.reFlag++;
501
+ },
502
+ reFlag: function reFlag() {
503
+ var $xeScrollbar = this;
504
+ $xeScrollbar.recalculate().then(function () {
505
+ $xeScrollbar.recalculate();
506
+ });
507
+ }
508
+ },
509
+ created: function created() {
510
+ var $xeScrollbar = this;
511
+ $xeScrollbar.internalData = createInternalData();
512
+ },
513
+ mounted: function mounted() {
514
+ var $xeScrollbar = this;
515
+ var props = $xeScrollbar;
516
+ var internalData = $xeScrollbar.internalData;
517
+ var autoResize = props.autoResize;
518
+ var viewInnerEl = $xeScrollbar.$refs.refViewInnerElem;
519
+ if (autoResize && viewInnerEl) {
520
+ var resizeObserver = globalResize.create(function () {
521
+ if (props.autoResize) {
522
+ $xeScrollbar.reFlag++;
523
+ }
524
+ });
525
+ resizeObserver.observe(viewInnerEl);
526
+ internalData.resizeObserver = resizeObserver;
527
+ }
528
+ $xeScrollbar.$nextTick(function () {
529
+ $xeScrollbar.recalculate();
530
+ });
531
+ },
532
+ beforeDestroy: function beforeDestroy() {
533
+ var $xeScrollbar = this;
534
+ var internalData = $xeScrollbar.internalData;
535
+ var resizeObserver = internalData.resizeObserver;
536
+ if (resizeObserver) {
537
+ resizeObserver.disconnect();
538
+ }
539
+ },
540
+ destroyed: function destroyed() {
541
+ var $xeScrollbar = this;
542
+ var reactData = $xeScrollbar.reactData;
543
+ var internalData = $xeScrollbar.internalData;
544
+ _xeUtils.default.assign(reactData, createReactData());
545
+ _xeUtils.default.assign(internalData, createInternalData());
546
+ },
547
+ render: function render(h) {
548
+ return this.renderVN(h);
549
+ }
550
+ });
551
+ /* define-vxe-component end */
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_util=require("./util"),_loading=_interopRequireDefault(require("../../loading"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var getConfig=_ui.VxeUI.getConfig,createEvent=_ui.VxeUI.createEvent,domUtils=_ui.VxeUI.domUtils,globalResize=_ui.VxeUI.globalResize,renderEmptyElement=_ui.VxeUI.renderEmptyElement;function createReactData(){return{yThumbHeight:0,xThumbWidth:0}}function createInternalData(){return{thumbDragOffset:0,yThumbTop:0,xThumbLeft:0,lastScrollTop:0,lastScrollLeft:0}}var _default2=exports.default=(0,_comp.defineVxeComponent)({name:"VxeScrollbar",props:{width:[String,Number],height:[String,Number],minWidth:[String,Number],minHeight:[String,Number],maxWidth:[String,Number],maxHeight:[String,Number],loading:Boolean,native:{type:Boolean,default:function(){return getConfig().scrollbar.native}},xConfig:Object,yConfig:Object,className:String,viewClassName:String,autoResize:{type:Boolean,default:function(){return getConfig().scrollbar.autoResize}},syncResize:[Boolean,String,Number]},data:function(){var e=_xeUtils.default.uniqueId(),t=createReactData();return Object.assign(Object.assign({},{}),{xID:e,reactData:t,reFlag:0})},computed:{computeWrapperStyle:function(){var e=this,t=e.width,i=e.height,r=e.minWidth,l=e.minHeight,n=e.maxWidth,o=e.maxHeight,a=e.computeXOpts,e=e.computeYOpts,s={};return t&&(s.width=(0,_dom.toCssUnit)(t)),i&&(s.height=(0,_dom.toCssUnit)(i)),r&&(s.minWidth=(0,_dom.toCssUnit)(r)),l&&(s.minHeight=(0,_dom.toCssUnit)(l)),n&&(s.maxWidth=(0,_dom.toCssUnit)(n)),o&&(s.maxHeight=(0,_dom.toCssUnit)(o)),e.width&&(s["--vxe-ui-scrollbar-y-width"]=(0,_dom.toCssUnit)(e.width)),a.height&&(s["--vxe-ui-scrollbar-x-height"]=(0,_dom.toCssUnit)(a.height)),s},computeWrapperClss:function(){var e=this,t=e.native,i=e.className,r=e.computeXOpts,e=e.computeYOpts;return domUtils.buildClass(["vxe-scrollbar","ov-x--".concat(r.visible||"visible"),"ov-y--".concat(e.visible||"visible"),t?"is--native":"is--virtual",i],{"ov-x--auto-hide":r.autoHide,"ov-y--auto-hide":e.autoHide})},computeViewClss:function(){var e=this.viewClassName;return domUtils.buildClass(["vxe-scrollbar--view",e])},computeXOpts:function(){return Object.assign({},getConfig().scrollbar.xConfig,this.xConfig)},computeYOpts:function(){return Object.assign({},getConfig().scrollbar.yConfig,this.yConfig)}},methods:{dispatchEvent:function(e,t,i){this.$emit(e,createEvent(i,{$scrollbar:this},t))},scrollTo:function(e,t){var i=this.$refs.refViewElem;i&&(_xeUtils.default.isNumber(e)?i.scrollTo(e,t||0):i.scrollTo(e))},scrollIntoView:function(){var e=this.$refs.refViewElem;e&&e.scrollIntoView()},recalculate:function(){var e=this;return e.updateThumbSize(),e.updateThumbOffset(),e.$nextTick()},updateThumbSize:function(){var e,t,i=this,r=i.reactData,l=i.$refs.refViewElem;l&&(t=(t=i.$refs.refTrackXElem)?(0,_util.getThumbSize)(l.clientWidth,l.scrollWidth,t.clientWidth):0,(e=i.$refs.refThumbXElem)&&(e.style.width=t+"px"),r.xThumbWidth=t,t=(e=i.$refs.refTrackYElem)?(0,_util.getThumbSize)(l.clientHeight,l.scrollHeight,e.clientHeight):0,(l=i.$refs.refThumbYElem)&&(l.style.height=t+"px"),r.yThumbHeight=t)},updateThumbOffset:function(){var e,t,i,r=this,l=r.reactData,n=r.internalData,o=r.$refs.refViewElem;o&&(e=l.xThumbWidth,l=l.yThumbHeight,i=r.$refs.refTrackXElem,t=r.$refs.refThumbXElem,i=i&&e?(0,_util.getThumbOffsetSize)(o.scrollLeft,o.clientWidth,o.scrollWidth,i.clientWidth,e):0,n.xThumbLeft=i,t&&e&&(t.style.width=e+"px",t.style.transform="translateX(".concat(i,"px)")),e=r.$refs.refTrackYElem,t=r.$refs.refThumbYElem,i=e&&l?(0,_util.getThumbOffsetSize)(o.scrollTop,o.clientHeight,o.scrollHeight,e.clientHeight,l):0,n.yThumbTop=i,t)&&l&&(t.style.height=l+"px",t.style.transform="translateY(".concat(i,"px)"))},scrollEvent:function(e){var t,i=this,r=i.reactData,l=i.internalData,n=r.xThumbWidth,r=r.yThumbHeight,o=l.lastScrollTop,a=l.lastScrollLeft,s=i.computeXOpts,c=e.currentTarget,u=c.scrollTop,h=c.scrollLeft,m=c.clientWidth,f=c.clientHeight,d=c.scrollHeight,c=c.scrollWidth,g="",p=!1,b=!1,v=!1,T=!1;o!==u&&(t=_xeUtils.default.toNumber(i.computeYOpts.threshold)||1,o<u?(g="bottom",0<r&&d-t<=u+f&&(b=!0)):(g="top",0<r&&u<=t&&(p=!0))),a!==h&&(o=_xeUtils.default.toNumber(s.threshold)||1,a<h?(g="right",0<n&&c-o<=h+m&&(T=!0)):(g="left",0<n&&h<=o&&(v=!0))),i.updateThumbOffset(),l.lastScrollTop=u,l.lastScrollLeft=h,(b||p||T||v)&&i.dispatchEvent("scroll-boundary",{direction:g,isTop:p,isBottom:b,isLeft:v,isRight:T,scrollTop:u,scrollLeft:h,clientWidth:m,clientHeight:f,scrollHeight:d,scrollWidth:c},e),i.dispatchEvent("scroll",{direction:g,isTop:0<r&&u<=0,isBottom:0<r&&d<=u+f,isLeft:0<n&&h<=0,isRight:0<n&&c<=h+m,scrollTop:u,scrollLeft:h,clientWidth:m,clientHeight:f,scrollHeight:d,scrollWidth:c},e)},clickTrackXEvent:function(e){var t,i,r=this.reactData,l=e.currentTarget;l===e.target&&(t=this.$refs.refViewElem)&&(r=r.xThumbWidth,i=l.getBoundingClientRect(),t.scrollTo({left:(0,_util.getScrollFromClick)(e.clientX-i.left,t.clientWidth,t.scrollWidth,l.clientWidth,r),behavior:"auto"}))},clickTrackYEvent:function(e){var t,i,r=this.reactData,l=e.currentTarget;l===e.target&&(t=this.$refs.refViewElem)&&(r=r.yThumbHeight,i=l.getBoundingClientRect(),t.scrollTo({top:(0,_util.getScrollFromClick)(e.clientY-i.top,t.clientHeight,t.scrollHeight,l.clientHeight,r),behavior:"auto"}))},pointerdownThumbXEvent:function(e){var t,i=this.reactData,r=this.internalData,l=e.currentTarget,n=(r.isThumbDrag=!0,l.setPointerCapture(e.pointerId),this.$refs.refViewElem);n&&(i=i.xThumbWidth,t=(l=l.parentElement).getBoundingClientRect(),e=e.clientX-t.left,t=(0,_util.getThumbOffsetSize)(n.scrollLeft,n.clientWidth,n.scrollWidth,l.clientWidth,i),r.thumbDragOffset=e-t)},pointermoveThumbXEvent:function(e){var t,i,r=this.reactData,l=this.internalData,n=l.isThumbDrag,l=l.thumbDragOffset;n&&(n=this.$refs.refViewElem)&&(r=r.xThumbWidth,i=(t=e.currentTarget.parentElement).getBoundingClientRect(),n.scrollLeft=(0,_util.getScrollFromDrag)(e.clientX-i.left,l,n.clientWidth,n.scrollWidth,t.clientWidth,r))},cleatPointerThumbEvent:function(e){var t=this.internalData;e.currentTarget.releasePointerCapture(e.pointerId),t.isThumbDrag=!1},pointerdownThumbYEvent:function(e){var t,i=this.reactData,r=this.internalData,l=e.currentTarget,n=(r.isThumbDrag=!0,l.setPointerCapture(e.pointerId),this.$refs.refViewElem);n&&(i=i.yThumbHeight,t=(l=l.parentElement).getBoundingClientRect(),e=e.clientY-t.top,t=(0,_util.getThumbOffsetSize)(n.scrollTop,n.clientHeight,n.scrollHeight,l.clientHeight,i),r.thumbDragOffset=e-t)},pointermoveThumbYEvent:function(e){var t,i,r=this.reactData,l=this.internalData,n=l.isThumbDrag,l=l.thumbDragOffset;n&&(n=this.$refs.refViewElem)&&(r=r.yThumbHeight,i=(t=e.currentTarget.parentElement).getBoundingClientRect(),n.scrollTop=(0,_util.getScrollFromDrag)(e.clientY-i.top,l,n.clientHeight,n.scrollHeight,t.clientHeight,r))},renderVN:function(e){var t=this,i=t.$scopedSlots,r=t.native,l=t.loading,n=t.computeXOpts,o=t.computeYOpts,i=i.default;return e("div",{ref:"refElem",class:t.computeWrapperClss,style:t.computeWrapperStyle},[e("div",{ref:"refViewElem",class:t.computeViewClss,on:{scroll:t.scrollEvent}},[e("div",{ref:"refViewInnerElem",class:"vxe-scrollbar--view-inner"},i?i({}):[])]),r||"hidden"===n.visible?renderEmptyElement(t):e("div",{ref:"refTrackXElem",class:"vxe-scrollbar--track-x",on:{click:t.clickTrackXEvent}},[e("div",{ref:"refThumbXElem",class:"vxe-scrollbar--thumb-x",on:{pointerdown:t.pointerdownThumbXEvent,pointermove:t.pointermoveThumbXEvent,pointerup:t.cleatPointerThumbEvent,pointercancel:t.cleatPointerThumbEvent,lostpointercapture:t.cleatPointerThumbEvent}})]),r||"hidden"===o.visible?renderEmptyElement(t):e("div",{ref:"refTrackYElem",class:"vxe-scrollbar--track-y",on:{click:t.clickTrackYEvent}},[e("div",{ref:"refThumbYElem",class:"vxe-scrollbar--thumb-y",on:{pointerdown:t.pointerdownThumbYEvent,pointermove:t.pointermoveThumbYEvent,pointerup:t.cleatPointerThumbEvent,pointercancel:t.cleatPointerThumbEvent,lostpointercapture:t.cleatPointerThumbEvent}})]),e(_loading.default,{class:"vxe-scrollbar--loading",props:{value:l}})])}},watch:{native:function(){this.reFlag++},syncResize:function(){this.reFlag++},reFlag:function(){var e=this;e.recalculate().then(function(){e.recalculate()})}},created:function(){this.internalData=createInternalData()},mounted:function(){var e=this,t=e,i=e.internalData,r=t.autoResize,l=e.$refs.refViewInnerElem;r&&l&&((r=globalResize.create(function(){t.autoResize&&e.reFlag++})).observe(l),i.resizeObserver=r),e.$nextTick(function(){e.recalculate()})},beforeDestroy:function(){var e=this.internalData.resizeObserver;e&&e.disconnect()},destroyed:function(){var e=this.reactData,t=this.internalData;_xeUtils.default.assign(e,createReactData()),_xeUtils.default.assign(t,createInternalData())},render:function(e){return this.renderVN(e)}});
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getScrollFromClick = getScrollFromClick;
7
+ exports.getScrollFromDrag = getScrollFromDrag;
8
+ exports.getThumbOffsetSize = getThumbOffsetSize;
9
+ exports.getThumbSize = getThumbSize;
10
+ /**
11
+ * 计算滚动条滑块的长度
12
+ */
13
+ function getThumbSize(viewportSize, contentSize, trackSize) {
14
+ if (contentSize <= viewportSize) {
15
+ return 0;
16
+ }
17
+ var ratio = viewportSize / contentSize;
18
+ var ideal = trackSize * ratio;
19
+ return Math.max(20, Math.min(ideal, trackSize));
20
+ }
21
+ /**
22
+ * 计算滚动条滑块的偏移位置
23
+ */
24
+ function getThumbOffsetSize(offsetSize, viewportSize, contentSize, trackSize, thumbSize) {
25
+ var maxScroll = contentSize - viewportSize;
26
+ if (maxScroll <= 0) {
27
+ return 0;
28
+ }
29
+ var maxThumbOffset = trackSize - thumbSize;
30
+ if (maxThumbOffset <= 0) {
31
+ return 0;
32
+ }
33
+ var clamped = Math.min(Math.max(offsetSize, 0), maxScroll);
34
+ var ratio = clamped / maxScroll;
35
+ return ratio * maxThumbOffset;
36
+ }
37
+ /**
38
+ * 根据点击轨道的位置,计算滑块的偏移位置
39
+ */
40
+ function getScrollFromClick(clickPosition, viewportSize, contentSize, trackSize, thumbSize) {
41
+ var maxThumbOffset = trackSize - thumbSize;
42
+ var maxScroll = contentSize - viewportSize;
43
+ if (maxScroll <= 0 || maxThumbOffset <= 0) {
44
+ return 0;
45
+ }
46
+ var thumbOffset = clickPosition - thumbSize / 2;
47
+ thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
48
+ var scrollOffset = thumbOffset / maxThumbOffset * maxScroll;
49
+ return scrollOffset;
50
+ }
51
+ /**
52
+ * 拖拽 thumb 时,根据鼠标位置计算滑块的偏移位置
53
+ */
54
+ function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSize, trackSize, thumbSize) {
55
+ var maxScroll = contentSize - viewportSize;
56
+ var maxThumbOffset = trackSize - thumbSize;
57
+ if (maxScroll <= 0 || maxThumbOffset <= 0) {
58
+ return 0;
59
+ }
60
+ var thumbOffset = pointerPosition - dragOffset;
61
+ thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
62
+ return thumbOffset / maxThumbOffset * maxScroll;
63
+ }
@@ -0,0 +1 @@
1
+ function getThumbSize(t,e,r){return e<=t?0:Math.max(20,Math.min(r*(t/e),r))}function getThumbOffsetSize(t,e,r,o,m){r-=e;return r<=0||(e=o-m)<=0?0:Math.min(Math.max(t,0),r)/r*e}function getScrollFromClick(t,e,r,o,m){o-=m,r-=e;return r<=0||o<=0?0:(e=t-m/2,(e=Math.min(Math.max(e,0),o))/o*r)}function getScrollFromDrag(t,e,r,o,m,i){o-=r,r=m-i;return o<=0||r<=0?0:(m=t-e,(m=Math.min(Math.max(m,0),r))/r*o)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getScrollFromClick=getScrollFromClick,exports.getScrollFromDrag=getScrollFromDrag,exports.getThumbOffsetSize=getThumbOffsetSize,exports.getThumbSize=getThumbSize;
@@ -0,0 +1 @@
1
+ require('./style.css')