vxe-pc-ui 3.20.9 → 3.20.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.
- package/es/date-panel/src/date-panel.js +70 -39
- package/es/date-panel/style.css +22 -20
- package/es/date-panel/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +11 -3
- package/es/icon-picker/style.css +9 -3
- package/es/icon-picker/style.min.css +1 -1
- package/es/list/src/list.js +8 -182
- package/es/scrollbar/src/scrollbar.js +24 -188
- package/es/select/src/select.js +273 -8
- package/es/select/style.css +44 -0
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tooltip/src/tooltip.js +2 -4
- package/es/tooltip/style.css +2 -0
- package/es/tooltip/style.min.css +1 -1
- package/es/tree/src/tree.js +17 -190
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-date-panel/style.css +22 -20
- package/es/vxe-date-panel/style.min.css +1 -1
- package/es/vxe-icon-picker/style.css +9 -3
- package/es/vxe-icon-picker/style.min.css +1 -1
- package/es/vxe-select/style.css +44 -0
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-tooltip/style.css +2 -0
- package/es/vxe-tooltip/style.min.css +1 -1
- package/lib/date-panel/src/date-panel.js +74 -43
- package/lib/date-panel/src/date-panel.min.js +1 -1
- package/lib/date-panel/style/style.css +22 -20
- package/lib/date-panel/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +56 -38
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/icon-picker/style/style.css +9 -3
- package/lib/icon-picker/style/style.min.css +1 -1
- package/lib/index.umd.js +715 -741
- package/lib/index.umd.min.js +1 -1
- package/lib/list/src/list.js +6 -188
- package/lib/list/src/list.min.js +1 -1
- package/lib/scrollbar/src/scrollbar.js +21 -192
- package/lib/scrollbar/src/scrollbar.min.js +1 -1
- package/lib/select/src/select.js +322 -69
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +44 -0
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tooltip/src/tooltip.js +2 -4
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tooltip/style/style.css +2 -0
- package/lib/tooltip/style/style.min.css +1 -1
- package/lib/tree/src/tree.js +16 -196
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-date-panel/style/style.css +22 -20
- package/lib/vxe-date-panel/style/style.min.css +1 -1
- package/lib/vxe-icon-picker/style/style.css +9 -3
- package/lib/vxe-icon-picker/style/style.min.css +1 -1
- package/lib/vxe-select/style/style.css +44 -0
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-tooltip/style/style.css +2 -0
- package/lib/vxe-tooltip/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/date-panel/src/date-panel.ts +70 -39
- package/packages/icon-picker/src/icon-picker.ts +12 -3
- package/packages/list/src/list.ts +11 -202
- package/packages/scrollbar/src/scrollbar.ts +24 -199
- package/packages/select/src/select.ts +304 -11
- package/packages/tabs/src/tabs.ts +2 -4
- package/packages/tooltip/src/tooltip.ts +2 -4
- package/packages/tree/src/tree.ts +20 -211
- package/styles/components/date-panel.scss +31 -29
- package/styles/components/icon-picker.scss +9 -3
- package/styles/components/select.scss +77 -0
- package/styles/components/tooltip.scss +1 -0
- package/types/components/gantt-module/gantt-view.d.ts +8 -17
- package/types/components/icon-picker.d.ts +21 -1
- package/types/components/list.d.ts +4 -0
- package/types/components/scrollbar.d.ts +7 -14
- package/types/components/select.d.ts +28 -3
- package/types/components/table.d.ts +20 -20
- package/types/components/tree.d.ts +7 -16
- /package/es/icon/{iconfont.1792139429655.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/es/icon/{iconfont.1792139429655.woff → iconfont.1792219842866.woff} +0 -0
- /package/es/icon/{iconfont.1792139429655.woff2 → iconfont.1792219842866.woff2} +0 -0
- /package/es/{iconfont.1792139429655.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/es/{iconfont.1792139429655.woff → iconfont.1792219842866.woff} +0 -0
- /package/es/{iconfont.1792139429655.woff2 → iconfont.1792219842866.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1792139429655.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1792139429655.woff → iconfont.1792219842866.woff} +0 -0
- /package/lib/icon/style/{iconfont.1792139429655.woff2 → iconfont.1792219842866.woff2} +0 -0
- /package/lib/{iconfont.1792139429655.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/lib/{iconfont.1792139429655.woff → iconfont.1792219842866.woff} +0 -0
- /package/lib/{iconfont.1792139429655.woff2 → iconfont.1792219842866.woff2} +0 -0
package/es/list/src/list.js
CHANGED
|
@@ -9,8 +9,7 @@ import { createComponentLog } from '../../ui/src/log';
|
|
|
9
9
|
import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime';
|
|
10
10
|
import { getItemCacheObj } from './util';
|
|
11
11
|
import VxeLoadingComponent from '../../loading';
|
|
12
|
-
const { getConfig, getIcon, getI18n, domUtils,
|
|
13
|
-
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils;
|
|
12
|
+
const { getConfig, getIcon, getI18n, domUtils, menus, globalEvents, globalResize } = VxeUI;
|
|
14
13
|
const { warnLog, errLog } = createComponentLog('tree');
|
|
15
14
|
let crossListDragRowObj = null;
|
|
16
15
|
function eqRowKey(rowKey1, rowKey2) {
|
|
@@ -86,7 +85,8 @@ export default {
|
|
|
86
85
|
name: 'VxeList',
|
|
87
86
|
mixins: [
|
|
88
87
|
globalMixins.sizeMixin,
|
|
89
|
-
globalMixins.vScrollbarMixin
|
|
88
|
+
globalMixins.vScrollbarMixin,
|
|
89
|
+
globalMixins.initVScrollbarMixin
|
|
90
90
|
],
|
|
91
91
|
props: {
|
|
92
92
|
data: Array,
|
|
@@ -325,6 +325,11 @@ export default {
|
|
|
325
325
|
}
|
|
326
326
|
return [];
|
|
327
327
|
},
|
|
328
|
+
getScrollViewElem() {
|
|
329
|
+
const $xeList = this;
|
|
330
|
+
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
331
|
+
return viewEl || null;
|
|
332
|
+
},
|
|
328
333
|
getRowId(row) {
|
|
329
334
|
const $xeList = this;
|
|
330
335
|
const keyField = $xeList.computeKeyField;
|
|
@@ -1972,185 +1977,6 @@ export default {
|
|
|
1972
1977
|
}
|
|
1973
1978
|
}
|
|
1974
1979
|
},
|
|
1975
|
-
updateThumbSize() {
|
|
1976
|
-
const $xeList = this;
|
|
1977
|
-
const reactData = $xeList.reactData;
|
|
1978
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
1979
|
-
if (!viewEl) {
|
|
1980
|
-
return;
|
|
1981
|
-
}
|
|
1982
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
1983
|
-
return;
|
|
1984
|
-
}
|
|
1985
|
-
const trackXEl = $xeList.$refs.refTrackXElem;
|
|
1986
|
-
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
1987
|
-
const thumbXElem = $xeList.$refs.refThumbXElem;
|
|
1988
|
-
if (thumbXElem) {
|
|
1989
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
1990
|
-
}
|
|
1991
|
-
reactData.xThumbWidth = xThumbWidth;
|
|
1992
|
-
const trackYEl = $xeList.$refs.refTrackYElem;
|
|
1993
|
-
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
1994
|
-
const thumbYElem = $xeList.$refs.refThumbYElem;
|
|
1995
|
-
if (thumbYElem) {
|
|
1996
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
1997
|
-
}
|
|
1998
|
-
reactData.yThumbHeight = yThumbHeight;
|
|
1999
|
-
},
|
|
2000
|
-
updateThumbOffset() {
|
|
2001
|
-
const $xeList = this;
|
|
2002
|
-
const reactData = $xeList.reactData;
|
|
2003
|
-
const internalData = $xeList.internalData;
|
|
2004
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
2005
|
-
if (!viewEl) {
|
|
2006
|
-
return;
|
|
2007
|
-
}
|
|
2008
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
2009
|
-
return;
|
|
2010
|
-
}
|
|
2011
|
-
const { xThumbWidth, yThumbHeight } = reactData;
|
|
2012
|
-
const trackXEl = $xeList.$refs.refTrackXElem;
|
|
2013
|
-
const thumbXElem = $xeList.$refs.refThumbXElem;
|
|
2014
|
-
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
2015
|
-
internalData.xThumbLeft = xThumbLeft;
|
|
2016
|
-
if (thumbXElem && xThumbWidth) {
|
|
2017
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
2018
|
-
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
2019
|
-
}
|
|
2020
|
-
const trackYEl = $xeList.$refs.refTrackYElem;
|
|
2021
|
-
const thumbYElem = $xeList.$refs.refThumbYElem;
|
|
2022
|
-
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
2023
|
-
internalData.yThumbTop = yThumbTop;
|
|
2024
|
-
if (thumbYElem && yThumbHeight) {
|
|
2025
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
2026
|
-
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
2027
|
-
}
|
|
2028
|
-
},
|
|
2029
|
-
clickTrackXEvent(evnt) {
|
|
2030
|
-
const $xeList = this;
|
|
2031
|
-
const reactData = $xeList.reactData;
|
|
2032
|
-
const trackEl = evnt.currentTarget;
|
|
2033
|
-
if (trackEl !== evnt.target) {
|
|
2034
|
-
return;
|
|
2035
|
-
}
|
|
2036
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
2037
|
-
if (!viewEl) {
|
|
2038
|
-
return;
|
|
2039
|
-
}
|
|
2040
|
-
const { xThumbWidth } = reactData;
|
|
2041
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
2042
|
-
viewEl.scrollTo({
|
|
2043
|
-
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
2044
|
-
behavior: 'auto'
|
|
2045
|
-
});
|
|
2046
|
-
},
|
|
2047
|
-
clickTrackYEvent(evnt) {
|
|
2048
|
-
const $xeList = this;
|
|
2049
|
-
const reactData = $xeList.reactData;
|
|
2050
|
-
const trackEl = evnt.currentTarget;
|
|
2051
|
-
if (trackEl !== evnt.target) {
|
|
2052
|
-
return;
|
|
2053
|
-
}
|
|
2054
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
2055
|
-
if (!viewEl) {
|
|
2056
|
-
return;
|
|
2057
|
-
}
|
|
2058
|
-
const { yThumbHeight } = reactData;
|
|
2059
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
2060
|
-
viewEl.scrollTo({
|
|
2061
|
-
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
2062
|
-
behavior: 'auto'
|
|
2063
|
-
});
|
|
2064
|
-
},
|
|
2065
|
-
pointerdownThumbXEvent(evnt) {
|
|
2066
|
-
const $xeList = this;
|
|
2067
|
-
const reactData = $xeList.reactData;
|
|
2068
|
-
const internalData = $xeList.internalData;
|
|
2069
|
-
const thumbEl = evnt.currentTarget;
|
|
2070
|
-
internalData.isThumbDrag = true;
|
|
2071
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
2072
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
2073
|
-
if (!viewEl) {
|
|
2074
|
-
return;
|
|
2075
|
-
}
|
|
2076
|
-
const { xThumbWidth } = reactData;
|
|
2077
|
-
const trackEl = thumbEl.parentElement;
|
|
2078
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
2079
|
-
const pointerPosition = evnt.clientX - trackRect.left;
|
|
2080
|
-
// 记录 thumb 的偏移
|
|
2081
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
2082
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
2083
|
-
},
|
|
2084
|
-
pointermoveThumbXEvent(evnt) {
|
|
2085
|
-
const $xeList = this;
|
|
2086
|
-
const reactData = $xeList.reactData;
|
|
2087
|
-
const internalData = $xeList.internalData;
|
|
2088
|
-
const thumbEl = evnt.currentTarget;
|
|
2089
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
2090
|
-
return;
|
|
2091
|
-
}
|
|
2092
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
2093
|
-
if (isThumbDrag) {
|
|
2094
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
2095
|
-
if (!viewEl) {
|
|
2096
|
-
return;
|
|
2097
|
-
}
|
|
2098
|
-
const { xThumbWidth } = reactData;
|
|
2099
|
-
const thumbEl = evnt.currentTarget;
|
|
2100
|
-
const trackEl = thumbEl.parentElement;
|
|
2101
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
2102
|
-
// 更新偏移
|
|
2103
|
-
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
2104
|
-
}
|
|
2105
|
-
},
|
|
2106
|
-
cleatPointerThumbEvent(evnt) {
|
|
2107
|
-
const $xeList = this;
|
|
2108
|
-
const internalData = $xeList.internalData;
|
|
2109
|
-
const thumbEl = evnt.currentTarget;
|
|
2110
|
-
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
2111
|
-
internalData.isThumbDrag = false;
|
|
2112
|
-
},
|
|
2113
|
-
pointerdownThumbYEvent(evnt) {
|
|
2114
|
-
const $xeList = this;
|
|
2115
|
-
const reactData = $xeList.reactData;
|
|
2116
|
-
const internalData = $xeList.internalData;
|
|
2117
|
-
const thumbEl = evnt.currentTarget;
|
|
2118
|
-
internalData.isThumbDrag = true;
|
|
2119
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
2120
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
2121
|
-
if (!viewEl) {
|
|
2122
|
-
return;
|
|
2123
|
-
}
|
|
2124
|
-
const { yThumbHeight } = reactData;
|
|
2125
|
-
const trackEl = thumbEl.parentElement;
|
|
2126
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
2127
|
-
const pointerPosition = evnt.clientY - trackRect.top;
|
|
2128
|
-
// 记录 thumb 的偏移
|
|
2129
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
2130
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
2131
|
-
},
|
|
2132
|
-
pointermoveThumbYEvent(evnt) {
|
|
2133
|
-
const $xeList = this;
|
|
2134
|
-
const reactData = $xeList.reactData;
|
|
2135
|
-
const internalData = $xeList.internalData;
|
|
2136
|
-
const thumbEl = evnt.currentTarget;
|
|
2137
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
2138
|
-
return;
|
|
2139
|
-
}
|
|
2140
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
2141
|
-
if (isThumbDrag) {
|
|
2142
|
-
const viewEl = $xeList.$refs.refVirtualWrapper;
|
|
2143
|
-
if (!viewEl) {
|
|
2144
|
-
return;
|
|
2145
|
-
}
|
|
2146
|
-
const { yThumbHeight } = reactData;
|
|
2147
|
-
const thumbEl = evnt.currentTarget;
|
|
2148
|
-
const trackEl = thumbEl.parentElement;
|
|
2149
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
2150
|
-
// 更新偏移
|
|
2151
|
-
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
2152
|
-
}
|
|
2153
|
-
},
|
|
2154
1980
|
//
|
|
2155
1981
|
// Render
|
|
2156
1982
|
//
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
|
-
import { VxeUI } from '../../ui';
|
|
3
|
+
import { VxeUI, globalMixins } from '../../ui';
|
|
4
4
|
import { toCssUnit } from '../../ui/src/dom';
|
|
5
5
|
import { getDefaultConfig } from '../../ui/src/utils';
|
|
6
6
|
import VxeLoadingComponent from '../../loading';
|
|
7
|
-
const { getConfig, createEvent, domUtils,
|
|
8
|
-
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils;
|
|
7
|
+
const { getConfig, createEvent, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI;
|
|
9
8
|
function createReactData() {
|
|
10
9
|
return {
|
|
11
10
|
yThumbHeight: 0,
|
|
@@ -14,7 +13,7 @@ function createReactData() {
|
|
|
14
13
|
}
|
|
15
14
|
function createInternalData() {
|
|
16
15
|
return {
|
|
17
|
-
//
|
|
16
|
+
// scrollObserver: undefined,
|
|
18
17
|
// isThumbDrag: false,
|
|
19
18
|
thumbDragOffset: 0,
|
|
20
19
|
yThumbTop: 0,
|
|
@@ -25,6 +24,10 @@ function createInternalData() {
|
|
|
25
24
|
}
|
|
26
25
|
export default {
|
|
27
26
|
name: 'VxeScrollbar',
|
|
27
|
+
mixins: [
|
|
28
|
+
globalMixins.sizeMixin,
|
|
29
|
+
globalMixins.initVScrollbarMixin
|
|
30
|
+
],
|
|
28
31
|
props: {
|
|
29
32
|
id: [String, Number],
|
|
30
33
|
viewId: [String, Number],
|
|
@@ -77,6 +80,10 @@ export default {
|
|
|
77
80
|
type: String,
|
|
78
81
|
default: () => getConfig().scrollbar.viewInnerClassName
|
|
79
82
|
},
|
|
83
|
+
size: {
|
|
84
|
+
type: String,
|
|
85
|
+
default: () => getConfig().scrollbar.size || getConfig().size
|
|
86
|
+
},
|
|
80
87
|
/**
|
|
81
88
|
* 已废弃
|
|
82
89
|
* @deprecated
|
|
@@ -97,8 +104,7 @@ export default {
|
|
|
97
104
|
return Object.assign(Object.assign({}, {}), { xID,
|
|
98
105
|
reactData, reFlag: 0 });
|
|
99
106
|
},
|
|
100
|
-
computed: {
|
|
101
|
-
computeWrapperStyle() {
|
|
107
|
+
computed: Object.assign(Object.assign({}, {}), { computeWrapperStyle() {
|
|
102
108
|
const $xeScrollbar = this;
|
|
103
109
|
const props = $xeScrollbar;
|
|
104
110
|
const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props;
|
|
@@ -173,6 +179,7 @@ export default {
|
|
|
173
179
|
const reactData = $xeScrollbar.reactData;
|
|
174
180
|
const { native, theme, className, padding } = props;
|
|
175
181
|
const { yThumbHeight, xThumbWidth } = reactData;
|
|
182
|
+
const vSize = $xeScrollbar.computeSize;
|
|
176
183
|
const xToTop = $xeScrollbar.computeXToTop;
|
|
177
184
|
const yToLeft = $xeScrollbar.computeYToLeft;
|
|
178
185
|
const xVisible = $xeScrollbar.computeXVisible;
|
|
@@ -181,6 +188,7 @@ export default {
|
|
|
181
188
|
const yAutoHide = $xeScrollbar.computeYAutoHide;
|
|
182
189
|
return domUtils.buildClass([
|
|
183
190
|
'vxe-scrollbar',
|
|
191
|
+
vSize ? `size--${vSize}` : '',
|
|
184
192
|
theme ? `theme--${theme}` : '',
|
|
185
193
|
`ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
|
|
186
194
|
`ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
|
|
@@ -233,8 +241,7 @@ export default {
|
|
|
233
241
|
const $xeScrollbar = this;
|
|
234
242
|
const yOpts = $xeScrollbar.computeYOpts;
|
|
235
243
|
return yOpts.position === 'left';
|
|
236
|
-
}
|
|
237
|
-
},
|
|
244
|
+
} }),
|
|
238
245
|
methods: {
|
|
239
246
|
//
|
|
240
247
|
// Method
|
|
@@ -243,12 +250,12 @@ export default {
|
|
|
243
250
|
const $xeScrollbar = this;
|
|
244
251
|
$xeScrollbar.$emit(type, createEvent(evnt, { $scrollbar: $xeScrollbar }, params));
|
|
245
252
|
},
|
|
246
|
-
|
|
253
|
+
getScrollViewElem() {
|
|
247
254
|
const $xeScrollbar = this;
|
|
248
255
|
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
249
256
|
return viewEl || null;
|
|
250
257
|
},
|
|
251
|
-
|
|
258
|
+
getScrollViewInnerElem() {
|
|
252
259
|
const $xeScrollbar = this;
|
|
253
260
|
const viewInnerEl = $xeScrollbar.$refs.refViewInnerElem;
|
|
254
261
|
return viewInnerEl || null;
|
|
@@ -316,60 +323,6 @@ export default {
|
|
|
316
323
|
$xeScrollbar.updateThumbOffset();
|
|
317
324
|
return $xeScrollbar.$nextTick();
|
|
318
325
|
},
|
|
319
|
-
updateThumbSize() {
|
|
320
|
-
const $xeScrollbar = this;
|
|
321
|
-
const reactData = $xeScrollbar.reactData;
|
|
322
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
323
|
-
if (!viewEl) {
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
const trackXEl = $xeScrollbar.$refs.refTrackXElem;
|
|
330
|
-
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
331
|
-
const thumbXElem = $xeScrollbar.$refs.refThumbXElem;
|
|
332
|
-
if (thumbXElem) {
|
|
333
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
334
|
-
}
|
|
335
|
-
reactData.xThumbWidth = xThumbWidth;
|
|
336
|
-
const trackYEl = $xeScrollbar.$refs.refTrackYElem;
|
|
337
|
-
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
338
|
-
const thumbYElem = $xeScrollbar.$refs.refThumbYElem;
|
|
339
|
-
if (thumbYElem) {
|
|
340
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
341
|
-
}
|
|
342
|
-
reactData.yThumbHeight = yThumbHeight;
|
|
343
|
-
},
|
|
344
|
-
updateThumbOffset() {
|
|
345
|
-
const $xeScrollbar = this;
|
|
346
|
-
const reactData = $xeScrollbar.reactData;
|
|
347
|
-
const internalData = $xeScrollbar.internalData;
|
|
348
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
349
|
-
if (!viewEl) {
|
|
350
|
-
return;
|
|
351
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
const { xThumbWidth, yThumbHeight } = reactData;
|
|
356
|
-
const trackXEl = $xeScrollbar.$refs.refTrackXElem;
|
|
357
|
-
const thumbXElem = $xeScrollbar.$refs.refThumbXElem;
|
|
358
|
-
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
359
|
-
internalData.xThumbLeft = xThumbLeft;
|
|
360
|
-
if (thumbXElem && xThumbWidth) {
|
|
361
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
362
|
-
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
363
|
-
}
|
|
364
|
-
const trackYEl = $xeScrollbar.$refs.refTrackYElem;
|
|
365
|
-
const thumbYElem = $xeScrollbar.$refs.refThumbYElem;
|
|
366
|
-
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
367
|
-
internalData.yThumbTop = yThumbTop;
|
|
368
|
-
if (thumbYElem && yThumbHeight) {
|
|
369
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
370
|
-
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
371
|
-
}
|
|
372
|
-
},
|
|
373
326
|
scrollEvent(evnt) {
|
|
374
327
|
const $xeScrollbar = this;
|
|
375
328
|
const reactData = $xeScrollbar.reactData;
|
|
@@ -447,123 +400,6 @@ export default {
|
|
|
447
400
|
scrollWidth: scrollWidth
|
|
448
401
|
}, evnt);
|
|
449
402
|
},
|
|
450
|
-
clickTrackXEvent(evnt) {
|
|
451
|
-
const $xeScrollbar = this;
|
|
452
|
-
const reactData = $xeScrollbar.reactData;
|
|
453
|
-
const trackEl = evnt.currentTarget;
|
|
454
|
-
if (trackEl !== evnt.target) {
|
|
455
|
-
return;
|
|
456
|
-
}
|
|
457
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
458
|
-
if (!viewEl) {
|
|
459
|
-
return;
|
|
460
|
-
}
|
|
461
|
-
const { xThumbWidth } = reactData;
|
|
462
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
463
|
-
viewEl.scrollTo({
|
|
464
|
-
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
465
|
-
behavior: 'auto'
|
|
466
|
-
});
|
|
467
|
-
},
|
|
468
|
-
clickTrackYEvent(evnt) {
|
|
469
|
-
const $xeScrollbar = this;
|
|
470
|
-
const reactData = $xeScrollbar.reactData;
|
|
471
|
-
const trackEl = evnt.currentTarget;
|
|
472
|
-
if (trackEl !== evnt.target) {
|
|
473
|
-
return;
|
|
474
|
-
}
|
|
475
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
476
|
-
if (!viewEl) {
|
|
477
|
-
return;
|
|
478
|
-
}
|
|
479
|
-
const { yThumbHeight } = reactData;
|
|
480
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
481
|
-
viewEl.scrollTo({
|
|
482
|
-
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
483
|
-
behavior: 'auto'
|
|
484
|
-
});
|
|
485
|
-
},
|
|
486
|
-
pointerdownThumbXEvent(evnt) {
|
|
487
|
-
const $xeScrollbar = this;
|
|
488
|
-
const reactData = $xeScrollbar.reactData;
|
|
489
|
-
const internalData = $xeScrollbar.internalData;
|
|
490
|
-
const thumbEl = evnt.currentTarget;
|
|
491
|
-
internalData.isThumbDrag = true;
|
|
492
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
493
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
494
|
-
if (!viewEl) {
|
|
495
|
-
return;
|
|
496
|
-
}
|
|
497
|
-
const { xThumbWidth } = reactData;
|
|
498
|
-
const trackEl = thumbEl.parentElement;
|
|
499
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
500
|
-
const pointerPosition = evnt.clientX - trackRect.left;
|
|
501
|
-
// 记录 thumb 的偏移
|
|
502
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
503
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
504
|
-
},
|
|
505
|
-
pointermoveThumbXEvent(evnt) {
|
|
506
|
-
const $xeScrollbar = this;
|
|
507
|
-
const reactData = $xeScrollbar.reactData;
|
|
508
|
-
const internalData = $xeScrollbar.internalData;
|
|
509
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
510
|
-
if (isThumbDrag) {
|
|
511
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
512
|
-
if (!viewEl) {
|
|
513
|
-
return;
|
|
514
|
-
}
|
|
515
|
-
const { xThumbWidth } = reactData;
|
|
516
|
-
const thumbEl = evnt.currentTarget;
|
|
517
|
-
const trackEl = thumbEl.parentElement;
|
|
518
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
519
|
-
// 更新偏移
|
|
520
|
-
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
521
|
-
}
|
|
522
|
-
},
|
|
523
|
-
cleatPointerThumbEvent(evnt) {
|
|
524
|
-
const $xeScrollbar = this;
|
|
525
|
-
const internalData = $xeScrollbar.internalData;
|
|
526
|
-
const thumbEl = evnt.currentTarget;
|
|
527
|
-
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
528
|
-
internalData.isThumbDrag = false;
|
|
529
|
-
},
|
|
530
|
-
pointerdownThumbYEvent(evnt) {
|
|
531
|
-
const $xeScrollbar = this;
|
|
532
|
-
const reactData = $xeScrollbar.reactData;
|
|
533
|
-
const internalData = $xeScrollbar.internalData;
|
|
534
|
-
const thumbEl = evnt.currentTarget;
|
|
535
|
-
internalData.isThumbDrag = true;
|
|
536
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
537
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
538
|
-
if (!viewEl) {
|
|
539
|
-
return;
|
|
540
|
-
}
|
|
541
|
-
const { yThumbHeight } = reactData;
|
|
542
|
-
const trackEl = thumbEl.parentElement;
|
|
543
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
544
|
-
const pointerPosition = evnt.clientY - trackRect.top;
|
|
545
|
-
// 记录 thumb 的偏移
|
|
546
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
547
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
548
|
-
},
|
|
549
|
-
pointermoveThumbYEvent(evnt) {
|
|
550
|
-
const $xeScrollbar = this;
|
|
551
|
-
const reactData = $xeScrollbar.reactData;
|
|
552
|
-
const internalData = $xeScrollbar.internalData;
|
|
553
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
554
|
-
if (isThumbDrag) {
|
|
555
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
556
|
-
if (!viewEl) {
|
|
557
|
-
return;
|
|
558
|
-
}
|
|
559
|
-
const { yThumbHeight } = reactData;
|
|
560
|
-
const thumbEl = evnt.currentTarget;
|
|
561
|
-
const trackEl = thumbEl.parentElement;
|
|
562
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
563
|
-
// 更新偏移
|
|
564
|
-
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
565
|
-
}
|
|
566
|
-
},
|
|
567
403
|
//
|
|
568
404
|
// Render
|
|
569
405
|
//
|
|
@@ -725,18 +561,18 @@ export default {
|
|
|
725
561
|
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
726
562
|
const viewInnerEl = $xeScrollbar.$refs.refViewInnerElem;
|
|
727
563
|
if (autoResize) {
|
|
728
|
-
const
|
|
564
|
+
const scrollObserver = globalResize.create(() => {
|
|
729
565
|
if (props.autoResize) {
|
|
730
566
|
$xeScrollbar.reFlag++;
|
|
731
567
|
}
|
|
732
568
|
});
|
|
733
569
|
if (viewEl) {
|
|
734
|
-
|
|
570
|
+
scrollObserver.observe(viewEl);
|
|
735
571
|
}
|
|
736
572
|
if (viewInnerEl) {
|
|
737
|
-
|
|
573
|
+
scrollObserver.observe(viewInnerEl);
|
|
738
574
|
}
|
|
739
|
-
internalData.
|
|
575
|
+
internalData.scrollObserver = scrollObserver;
|
|
740
576
|
}
|
|
741
577
|
$xeScrollbar.reFlag++;
|
|
742
578
|
globalEvents.on($xeScrollbar, 'resize', () => {
|
|
@@ -746,9 +582,9 @@ export default {
|
|
|
746
582
|
beforeDestroy() {
|
|
747
583
|
const $xeScrollbar = this;
|
|
748
584
|
const internalData = $xeScrollbar.internalData;
|
|
749
|
-
const {
|
|
750
|
-
if (
|
|
751
|
-
|
|
585
|
+
const { scrollObserver } = internalData;
|
|
586
|
+
if (scrollObserver) {
|
|
587
|
+
scrollObserver.disconnect();
|
|
752
588
|
}
|
|
753
589
|
globalEvents.off($xeScrollbar, 'resize');
|
|
754
590
|
},
|