vxe-pc-ui 4.20.9 → 4.20.11

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 (102) hide show
  1. package/dist/all.esm.js +1874 -2040
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/date-panel/src/date-panel.js +58 -36
  5. package/es/date-panel/style.css +22 -20
  6. package/es/date-panel/style.min.css +1 -1
  7. package/es/icon/style.css +1 -1
  8. package/es/icon-picker/src/icon-picker.js +74 -38
  9. package/es/icon-picker/style.css +9 -3
  10. package/es/icon-picker/style.min.css +1 -1
  11. package/es/list/src/list.js +12 -165
  12. package/es/scrollbar/src/scrollbar.js +20 -173
  13. package/es/select/src/select.js +246 -8
  14. package/es/select/style.css +44 -0
  15. package/es/select/style.min.css +1 -1
  16. package/es/style.css +1 -1
  17. package/es/style.min.css +1 -1
  18. package/es/tooltip/src/tooltip.js +2 -4
  19. package/es/tooltip/style.css +2 -0
  20. package/es/tooltip/style.min.css +1 -1
  21. package/es/tree/src/tree.js +21 -173
  22. package/es/ui/index.js +1 -1
  23. package/es/ui/src/log.js +1 -1
  24. package/es/vxe-date-panel/style.css +22 -20
  25. package/es/vxe-date-panel/style.min.css +1 -1
  26. package/es/vxe-icon-picker/style.css +9 -3
  27. package/es/vxe-icon-picker/style.min.css +1 -1
  28. package/es/vxe-select/style.css +44 -0
  29. package/es/vxe-select/style.min.css +1 -1
  30. package/es/vxe-tooltip/style.css +2 -0
  31. package/es/vxe-tooltip/style.min.css +1 -1
  32. package/lib/date-panel/src/date-panel.js +56 -34
  33. package/lib/date-panel/src/date-panel.min.js +1 -1
  34. package/lib/date-panel/style/style.css +22 -20
  35. package/lib/date-panel/style/style.min.css +1 -1
  36. package/lib/icon/style/style.css +1 -1
  37. package/lib/icon/style/style.min.css +1 -1
  38. package/lib/icon-picker/src/icon-picker.js +101 -45
  39. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  40. package/lib/icon-picker/style/style.css +9 -3
  41. package/lib/icon-picker/style/style.min.css +1 -1
  42. package/lib/index.umd.js +827 -761
  43. package/lib/index.umd.min.js +1 -1
  44. package/lib/list/src/list.js +29 -195
  45. package/lib/list/src/list.min.js +1 -1
  46. package/lib/scrollbar/src/scrollbar.js +34 -199
  47. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  48. package/lib/select/src/select.js +318 -68
  49. package/lib/select/src/select.min.js +1 -1
  50. package/lib/select/style/style.css +44 -0
  51. package/lib/select/style/style.min.css +1 -1
  52. package/lib/style.css +1 -1
  53. package/lib/style.min.css +1 -1
  54. package/lib/tooltip/src/tooltip.js +2 -4
  55. package/lib/tooltip/src/tooltip.min.js +1 -1
  56. package/lib/tooltip/style/style.css +2 -0
  57. package/lib/tooltip/style/style.min.css +1 -1
  58. package/lib/tree/src/tree.js +40 -202
  59. package/lib/tree/src/tree.min.js +1 -1
  60. package/lib/ui/index.js +1 -1
  61. package/lib/ui/index.min.js +1 -1
  62. package/lib/ui/src/log.js +1 -1
  63. package/lib/ui/src/log.min.js +1 -1
  64. package/lib/vxe-date-panel/style/style.css +22 -20
  65. package/lib/vxe-date-panel/style/style.min.css +1 -1
  66. package/lib/vxe-icon-picker/style/style.css +9 -3
  67. package/lib/vxe-icon-picker/style/style.min.css +1 -1
  68. package/lib/vxe-select/style/style.css +44 -0
  69. package/lib/vxe-select/style/style.min.css +1 -1
  70. package/lib/vxe-tooltip/style/style.css +2 -0
  71. package/lib/vxe-tooltip/style/style.min.css +1 -1
  72. package/package.json +2 -2
  73. package/packages/date-panel/src/date-panel.ts +58 -36
  74. package/packages/icon-picker/src/icon-picker.ts +80 -38
  75. package/packages/list/src/list.ts +28 -182
  76. package/packages/scrollbar/src/scrollbar.ts +36 -188
  77. package/packages/select/src/select.ts +281 -8
  78. package/packages/tooltip/src/tooltip.ts +2 -4
  79. package/packages/tree/src/tree.ts +37 -190
  80. package/styles/components/date-panel.scss +31 -29
  81. package/styles/components/icon-picker.scss +9 -3
  82. package/styles/components/select.scss +77 -0
  83. package/styles/components/tooltip.scss +1 -0
  84. package/types/components/gantt-module/gantt-view.d.ts +16 -16
  85. package/types/components/icon-picker.d.ts +21 -1
  86. package/types/components/list.d.ts +4 -0
  87. package/types/components/scrollbar.d.ts +7 -14
  88. package/types/components/select.d.ts +28 -3
  89. package/types/components/table.d.ts +30 -18
  90. package/types/components/tree.d.ts +7 -16
  91. /package/es/icon/{iconfont.1792139440389.ttf → iconfont.1792226845944.ttf} +0 -0
  92. /package/es/icon/{iconfont.1792139440389.woff → iconfont.1792226845944.woff} +0 -0
  93. /package/es/icon/{iconfont.1792139440389.woff2 → iconfont.1792226845944.woff2} +0 -0
  94. /package/es/{iconfont.1792139440389.ttf → iconfont.1792226845944.ttf} +0 -0
  95. /package/es/{iconfont.1792139440389.woff → iconfont.1792226845944.woff} +0 -0
  96. /package/es/{iconfont.1792139440389.woff2 → iconfont.1792226845944.woff2} +0 -0
  97. /package/lib/icon/style/{iconfont.1792139440389.ttf → iconfont.1792226845944.ttf} +0 -0
  98. /package/lib/icon/style/{iconfont.1792139440389.woff → iconfont.1792226845944.woff} +0 -0
  99. /package/lib/icon/style/{iconfont.1792139440389.woff2 → iconfont.1792226845944.woff2} +0 -0
  100. /package/lib/{iconfont.1792139440389.ttf → iconfont.1792226845944.ttf} +0 -0
  101. /package/lib/{iconfont.1792139440389.woff → iconfont.1792226845944.woff} +0 -0
  102. /package/lib/{iconfont.1792139440389.woff2 → iconfont.1792226845944.woff2} +0 -0
@@ -12,9 +12,7 @@ import VxeLoadingComponent from '../../loading'
12
12
 
13
13
  import type { VxeListConstructor, VxeListPropTypes, VxeListEmits, ListReactData, VxeListPrivateMethods, ListInternalData, VxeListDefines, ValueOf, ListMethods, ListPrivateMethods, ListPrivateRef, VxeComponentStyleType } from '../../../types'
14
14
 
15
- const { getConfig, getIcon, getI18n, domUtils, scrollbarUtils, useFns, menus, globalEvents, globalResize } = VxeUI
16
-
17
- const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
15
+ const { getConfig, getIcon, getI18n, domUtils, useFns, menus, globalEvents, globalResize } = VxeUI
18
16
 
19
17
  const { warnLog, errLog } = createComponentLog('tree')
20
18
 
@@ -167,9 +165,6 @@ export default defineVxeComponent({
167
165
 
168
166
  const browseObj = XEUtils.browse()
169
167
 
170
- const { computeSize } = useFns.useSize(props)
171
- const { computeIsVScrollbar } = useFns.useVScrollbar(props)
172
-
173
168
  const reactData = reactive(createReactData())
174
169
 
175
170
  const internalData = createInternalData()
@@ -183,14 +178,12 @@ export default defineVxeComponent({
183
178
  const refVirtualSpaceElem = ref() as Ref<HTMLDivElement>
184
179
  const refVirtualBody = ref() as Ref<HTMLDivElement>
185
180
 
186
- const refTrackXElem = ref<HTMLDivElement>()
187
- const refTrackYElem = ref<HTMLDivElement>()
188
- const refThumbXElem = ref<HTMLDivElement>()
189
- const refThumbYElem = ref<HTMLDivElement>()
190
-
191
181
  const refDragRowLineElem = ref<HTMLDivElement>()
192
182
  const refDragTipElem = ref<HTMLDivElement>()
193
183
 
184
+ const { computeSize } = useFns.useSize(props)
185
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props)
186
+
194
187
  const refMaps: ListPrivateRef = {
195
188
  refElem
196
189
  }
@@ -204,6 +197,22 @@ export default defineVxeComponent({
204
197
  getRefMaps: () => refMaps
205
198
  } as unknown as VxeListConstructor & VxeListPrivateMethods
206
199
 
200
+ const {
201
+ refTrackXElem,
202
+ refTrackYElem,
203
+ refThumbXElem,
204
+ refThumbYElem,
205
+ updateThumbSize,
206
+ updateThumbOffset,
207
+ clickTrackXEvent,
208
+ clickTrackYEvent,
209
+ pointerdownThumbXEvent,
210
+ pointermoveThumbXEvent,
211
+ cleatPointerThumbEvent,
212
+ pointerdownThumbYEvent,
213
+ pointermoveThumbYEvent
214
+ } = useFns.useInitVScrollbar($xeList)
215
+
207
216
  const computeRowOpts = computed(() => {
208
217
  return Object.assign({}, getConfig().list.rowConfig, props.rowConfig)
209
218
  })
@@ -593,7 +602,10 @@ export default defineVxeComponent({
593
602
  const scrollLeft = scrollBodyElem.scrollLeft
594
603
  const isX = scrollLeft !== internalData.lastScrollLeft
595
604
  const isY = scrollTop !== internalData.lastScrollTop
596
- updateThumbOffset()
605
+ const isVScrollbar = computeIsVScrollbar.value
606
+ if (isVScrollbar) {
607
+ updateThumbOffset()
608
+ }
597
609
  internalData.lastScrollTop = scrollTop
598
610
  internalData.lastScrollLeft = scrollLeft
599
611
  if (reactData.scrollYLoad) {
@@ -1618,6 +1630,10 @@ export default defineVxeComponent({
1618
1630
 
1619
1631
  const listMethods: ListMethods = {
1620
1632
  dispatchEvent,
1633
+ getScrollViewElem () {
1634
+ const viewEl = refVirtualWrapper.value
1635
+ return viewEl || null
1636
+ },
1621
1637
  loadData,
1622
1638
  /**
1623
1639
  * 重新加载数据
@@ -1969,176 +1985,6 @@ export default defineVxeComponent({
1969
1985
  }
1970
1986
  }
1971
1987
 
1972
- const updateThumbSize = () => {
1973
- const viewEl = refVirtualWrapper.value
1974
- if (!viewEl) {
1975
- return
1976
- }
1977
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
1978
- return
1979
- }
1980
- const trackXEl = refTrackXElem.value
1981
- const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0
1982
- const thumbXElem = refThumbXElem.value
1983
- if (thumbXElem) {
1984
- thumbXElem.style.width = xThumbWidth + 'px'
1985
- }
1986
- reactData.xThumbWidth = xThumbWidth
1987
-
1988
- const trackYEl = refTrackYElem.value
1989
-
1990
- const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0
1991
- const thumbYElem = refThumbYElem.value
1992
- if (thumbYElem) {
1993
- thumbYElem.style.height = yThumbHeight + 'px'
1994
- }
1995
- reactData.yThumbHeight = yThumbHeight
1996
- }
1997
-
1998
- const updateThumbOffset = () => {
1999
- const viewEl = refVirtualWrapper.value
2000
- if (!viewEl) {
2001
- return
2002
- }
2003
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
2004
- return
2005
- }
2006
- const { xThumbWidth, yThumbHeight } = reactData
2007
- const trackXEl = refTrackXElem.value
2008
- const thumbXElem = refThumbXElem.value
2009
- const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0
2010
- internalData.xThumbLeft = xThumbLeft
2011
- if (thumbXElem && xThumbWidth) {
2012
- thumbXElem.style.width = xThumbWidth + 'px'
2013
- thumbXElem.style.transform = `translateX(${xThumbLeft}px)`
2014
- }
2015
-
2016
- const trackYEl = refTrackYElem.value
2017
- const thumbYElem = refThumbYElem.value
2018
- const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0
2019
- internalData.yThumbTop = yThumbTop
2020
- if (thumbYElem && yThumbHeight) {
2021
- thumbYElem.style.height = yThumbHeight + 'px'
2022
- thumbYElem.style.transform = `translateY(${yThumbTop}px)`
2023
- }
2024
- }
2025
-
2026
- const clickTrackXEvent = (evnt: MouseEvent) => {
2027
- const trackEl = evnt.currentTarget as HTMLDivElement
2028
- if (trackEl !== evnt.target) {
2029
- return
2030
- }
2031
- const viewEl = refVirtualWrapper.value
2032
- if (!viewEl) {
2033
- return
2034
- }
2035
- const { xThumbWidth } = reactData
2036
- const trackRect = trackEl.getBoundingClientRect()
2037
- viewEl.scrollTo({
2038
- left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
2039
- behavior: 'auto'
2040
- })
2041
- }
2042
-
2043
- const clickTrackYEvent = (evnt: MouseEvent) => {
2044
- const trackEl = evnt.currentTarget as HTMLDivElement
2045
- if (trackEl !== evnt.target) {
2046
- return
2047
- }
2048
- const viewEl = refVirtualWrapper.value
2049
- if (!viewEl) {
2050
- return
2051
- }
2052
- const { yThumbHeight } = reactData
2053
- const trackRect = trackEl.getBoundingClientRect()
2054
- viewEl.scrollTo({
2055
- top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
2056
- behavior: 'auto'
2057
- })
2058
- }
2059
-
2060
- const pointerdownThumbXEvent = (evnt: PointerEvent) => {
2061
- const thumbEl = evnt.currentTarget as HTMLDivElement
2062
- internalData.isThumbDrag = true
2063
- thumbEl.setPointerCapture(evnt.pointerId)
2064
-
2065
- const viewEl = refVirtualWrapper.value
2066
- if (!viewEl) {
2067
- return
2068
- }
2069
- const { xThumbWidth } = reactData
2070
- const trackEl = thumbEl.parentElement as HTMLDivElement
2071
- const trackRect = trackEl.getBoundingClientRect()
2072
- const pointerPosition = evnt.clientX - trackRect.left
2073
- // 记录 thumb 的偏移
2074
- const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
2075
- internalData.thumbDragOffset = pointerPosition - thumbOffset
2076
- }
2077
-
2078
- const pointermoveThumbXEvent = (evnt: PointerEvent) => {
2079
- const thumbEl = evnt.currentTarget as HTMLDivElement
2080
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
2081
- return
2082
- }
2083
- const { isThumbDrag, thumbDragOffset } = internalData
2084
- if (isThumbDrag) {
2085
- const viewEl = refVirtualWrapper.value
2086
- if (!viewEl) {
2087
- return
2088
- }
2089
- const { xThumbWidth } = reactData
2090
- const thumbEl = evnt.currentTarget as HTMLDivElement
2091
- const trackEl = thumbEl.parentElement as HTMLDivElement
2092
- const trackRect = trackEl.getBoundingClientRect()
2093
- // 更新偏移
2094
- viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
2095
- }
2096
- }
2097
-
2098
- const cleatPointerThumbEvent = (evnt: PointerEvent) => {
2099
- const thumbEl = evnt.currentTarget as HTMLDivElement
2100
- thumbEl.releasePointerCapture(evnt.pointerId)
2101
- internalData.isThumbDrag = false
2102
- }
2103
-
2104
- const pointerdownThumbYEvent = (evnt: PointerEvent) => {
2105
- const thumbEl = evnt.currentTarget as HTMLDivElement
2106
- internalData.isThumbDrag = true
2107
- thumbEl.setPointerCapture(evnt.pointerId)
2108
-
2109
- const viewEl = refVirtualWrapper.value
2110
- if (!viewEl) {
2111
- return
2112
- }
2113
- const { yThumbHeight } = reactData
2114
- const trackEl = thumbEl.parentElement as HTMLDivElement
2115
- const trackRect = trackEl.getBoundingClientRect()
2116
- const pointerPosition = evnt.clientY - trackRect.top
2117
- // 记录 thumb 的偏移
2118
- const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
2119
- internalData.thumbDragOffset = pointerPosition - thumbOffset
2120
- }
2121
-
2122
- const pointermoveThumbYEvent = (evnt: PointerEvent) => {
2123
- const thumbEl = evnt.currentTarget as HTMLDivElement
2124
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
2125
- return
2126
- }
2127
- const { isThumbDrag, thumbDragOffset } = internalData
2128
- if (isThumbDrag) {
2129
- const viewEl = refVirtualWrapper.value
2130
- if (!viewEl) {
2131
- return
2132
- }
2133
- const { yThumbHeight } = reactData
2134
- const thumbEl = evnt.currentTarget as HTMLDivElement
2135
- const trackEl = thumbEl.parentElement as HTMLDivElement
2136
- const trackRect = trackEl.getBoundingClientRect()
2137
- // 更新偏移
2138
- viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
2139
- }
2140
- }
2141
-
2142
1988
  Object.assign($xeList, listMethods, listPrivateMethods)
2143
1989
 
2144
1990
  const renderDragTip = () => {
@@ -1,16 +1,14 @@
1
1
  import { ref, h, reactive, computed, PropType, onMounted, onBeforeUnmount, nextTick, watch } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
- import { VxeUI } from '../../ui'
4
+ import { VxeUI, useFns } from '../../ui'
5
5
  import { toCssUnit } from '../../ui/src/dom'
6
6
  import { getDefaultConfig } from '../../ui/src/utils'
7
7
  import VxeLoadingComponent from '../../loading'
8
8
 
9
9
  import type { ScrollbarReactData, ScrollbarInternalData, VxeScrollbarEmits, ScrollbarMethods, ScrollbarPrivateMethods, VxeScrollbarPropTypes, ValueOf, ScrollbarPrivateRef, VxeScrollbarPrivateComputed, VxeScrollbarConstructor, VxeScrollbarPrivateMethods, VxeComponentStyleType } from '../../../types'
10
10
 
11
- const { getConfig, createEvent, domUtils, scrollbarUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI
12
-
13
- const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
11
+ const { getConfig, createEvent, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI
14
12
 
15
13
  function createReactData (): ScrollbarReactData {
16
14
  return {
@@ -21,7 +19,7 @@ function createReactData (): ScrollbarReactData {
21
19
 
22
20
  function createInternalData (): ScrollbarInternalData {
23
21
  return {
24
- // resizeObserver: undefined,
22
+ // scrollObserver: undefined,
25
23
  // isThumbDrag: false,
26
24
  thumbDragOffset: 0,
27
25
  yThumbTop: 0,
@@ -85,6 +83,10 @@ export default defineVxeComponent({
85
83
  type: String as PropType<VxeScrollbarPropTypes.ViewInnerClassName>,
86
84
  default: () => getConfig().scrollbar.viewInnerClassName
87
85
  },
86
+ size: {
87
+ type: String as PropType<VxeScrollbarPropTypes.Size>,
88
+ default: () => getConfig().scrollbar.size || getConfig().size
89
+ },
88
90
  /**
89
91
  * 已废弃
90
92
  * @deprecated
@@ -111,15 +113,13 @@ export default defineVxeComponent({
111
113
  const refElem = ref<HTMLDivElement>()
112
114
  const refViewElem = ref<HTMLDivElement>()
113
115
  const refViewInnerElem = ref<HTMLDivElement>()
114
- const refTrackXElem = ref<HTMLDivElement>()
115
- const refTrackYElem = ref<HTMLDivElement>()
116
- const refThumbXElem = ref<HTMLDivElement>()
117
- const refThumbYElem = ref<HTMLDivElement>()
118
116
 
119
117
  const reactData = reactive(createReactData())
120
118
 
121
119
  const internalData = createInternalData()
122
120
 
121
+ const { computeSize } = useFns.useSize(props)
122
+
123
123
  const computeWrapperStyle = computed(() => {
124
124
  const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props
125
125
  const barWidth = computeYWidth.value
@@ -187,6 +187,7 @@ export default defineVxeComponent({
187
187
  const computeWrapperClss = computed(() => {
188
188
  const { native, theme, className, padding } = props
189
189
  const { yThumbHeight, xThumbWidth } = reactData
190
+ const vSize = computeSize.value
190
191
  const xToTop = computeXToTop.value
191
192
  const yToLeft = computeYToLeft.value
192
193
  const xVisible = computeXVisible.value
@@ -195,6 +196,7 @@ export default defineVxeComponent({
195
196
  const yAutoHide = computeYAutoHide.value
196
197
  return domUtils.buildClass([
197
198
  'vxe-scrollbar',
199
+ vSize ? `size--${vSize}` : '',
198
200
  theme ? `theme--${theme}` : '',
199
201
  `ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
200
202
  `ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
@@ -263,17 +265,33 @@ export default defineVxeComponent({
263
265
  getComputeMaps: () => computeMaps
264
266
  } as unknown as VxeScrollbarConstructor & VxeScrollbarPrivateMethods
265
267
 
268
+ const {
269
+ refTrackXElem,
270
+ refTrackYElem,
271
+ refThumbXElem,
272
+ refThumbYElem,
273
+ updateThumbSize,
274
+ updateThumbOffset,
275
+ clickTrackXEvent,
276
+ clickTrackYEvent,
277
+ pointerdownThumbXEvent,
278
+ pointermoveThumbXEvent,
279
+ cleatPointerThumbEvent,
280
+ pointerdownThumbYEvent,
281
+ pointermoveThumbYEvent
282
+ } = useFns.useInitVScrollbar($xeScrollbar)
283
+
266
284
  const dispatchEvent = (type: ValueOf<VxeScrollbarEmits>, params: Record<string, any>, evnt: Event | null) => {
267
285
  emit(type, createEvent(evnt, { $scrollbar: $xeScrollbar }, params))
268
286
  }
269
287
 
270
288
  const scrollbarMethods: ScrollbarMethods = {
271
289
  dispatchEvent,
272
- getViewElem () {
290
+ getScrollViewElem () {
273
291
  const viewEl = refViewElem.value
274
292
  return viewEl || null
275
293
  },
276
- getViewInnerElem () {
294
+ getScrollViewInnerElem () {
277
295
  const viewInnerEl = refViewInnerElem.value
278
296
  return viewInnerEl || null
279
297
  },
@@ -333,60 +351,6 @@ export default defineVxeComponent({
333
351
  }
334
352
  }
335
353
 
336
- const updateThumbSize = () => {
337
- const viewEl = refViewElem.value
338
- if (!viewEl) {
339
- return
340
- }
341
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
342
- return
343
- }
344
- const trackXEl = refTrackXElem.value
345
- const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0
346
- const thumbXElem = refThumbXElem.value
347
- if (thumbXElem) {
348
- thumbXElem.style.width = xThumbWidth + 'px'
349
- }
350
- reactData.xThumbWidth = xThumbWidth
351
-
352
- const trackYEl = refTrackYElem.value
353
-
354
- const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0
355
- const thumbYElem = refThumbYElem.value
356
- if (thumbYElem) {
357
- thumbYElem.style.height = yThumbHeight + 'px'
358
- }
359
- reactData.yThumbHeight = yThumbHeight
360
- }
361
-
362
- const updateThumbOffset = () => {
363
- const viewEl = refViewElem.value
364
- if (!viewEl) {
365
- return
366
- }
367
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
368
- return
369
- }
370
- const { xThumbWidth, yThumbHeight } = reactData
371
- const trackXEl = refTrackXElem.value
372
- const thumbXElem = refThumbXElem.value
373
- const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0
374
- internalData.xThumbLeft = xThumbLeft
375
- if (thumbXElem && xThumbWidth) {
376
- thumbXElem.style.width = xThumbWidth + 'px'
377
- thumbXElem.style.transform = `translateX(${xThumbLeft}px)`
378
- }
379
-
380
- const trackYEl = refTrackYElem.value
381
- const thumbYElem = refThumbYElem.value
382
- const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0
383
- internalData.yThumbTop = yThumbTop
384
- if (thumbYElem && yThumbHeight) {
385
- thumbYElem.style.height = yThumbHeight + 'px'
386
- thumbYElem.style.transform = `translateY(${yThumbTop}px)`
387
- }
388
- }
389
-
390
354
  const scrollEvent = (evnt: Event) => {
391
355
  const { xThumbWidth, yThumbHeight } = reactData
392
356
  const { lastScrollTop, lastScrollLeft } = internalData
@@ -460,122 +424,6 @@ export default defineVxeComponent({
460
424
  }, evnt)
461
425
  }
462
426
 
463
- const clickTrackXEvent = (evnt: MouseEvent) => {
464
- const trackEl = evnt.currentTarget as HTMLDivElement
465
- if (trackEl !== evnt.target) {
466
- return
467
- }
468
- const viewEl = refViewElem.value
469
- if (!viewEl) {
470
- return
471
- }
472
- const { xThumbWidth } = reactData
473
- const trackRect = trackEl.getBoundingClientRect()
474
- viewEl.scrollTo({
475
- left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
476
- behavior: 'auto'
477
- })
478
- }
479
-
480
- const clickTrackYEvent = (evnt: MouseEvent) => {
481
- const trackEl = evnt.currentTarget as HTMLDivElement
482
- if (trackEl !== evnt.target) {
483
- return
484
- }
485
- const viewEl = refViewElem.value
486
- if (!viewEl) {
487
- return
488
- }
489
- const { yThumbHeight } = reactData
490
- const trackRect = trackEl.getBoundingClientRect()
491
- viewEl.scrollTo({
492
- top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
493
- behavior: 'auto'
494
- })
495
- }
496
-
497
- const pointerdownThumbXEvent = (evnt: PointerEvent) => {
498
- const thumbEl = evnt.currentTarget as HTMLDivElement
499
- internalData.isThumbDrag = true
500
- thumbEl.setPointerCapture(evnt.pointerId)
501
-
502
- const viewEl = refViewElem.value
503
- if (!viewEl) {
504
- return
505
- }
506
- const { xThumbWidth } = reactData
507
- const trackEl = thumbEl.parentElement as HTMLDivElement
508
- const trackRect = trackEl.getBoundingClientRect()
509
- const pointerPosition = evnt.clientX - trackRect.left
510
- // 记录 thumb 的偏移
511
- const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
512
- internalData.thumbDragOffset = pointerPosition - thumbOffset
513
- }
514
-
515
- const pointermoveThumbXEvent = (evnt: PointerEvent) => {
516
- const thumbEl = evnt.currentTarget as HTMLDivElement
517
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
518
- return
519
- }
520
- const { isThumbDrag, thumbDragOffset } = internalData
521
- if (isThumbDrag) {
522
- const viewEl = refViewElem.value
523
- if (!viewEl) {
524
- return
525
- }
526
- const { xThumbWidth } = reactData
527
- const thumbEl = evnt.currentTarget as HTMLDivElement
528
- const trackEl = thumbEl.parentElement as HTMLDivElement
529
- const trackRect = trackEl.getBoundingClientRect()
530
- // 更新偏移
531
- viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
532
- }
533
- }
534
-
535
- const cleatPointerThumbEvent = (evnt: PointerEvent) => {
536
- const thumbEl = evnt.currentTarget as HTMLDivElement
537
- thumbEl.releasePointerCapture(evnt.pointerId)
538
- internalData.isThumbDrag = false
539
- }
540
-
541
- const pointerdownThumbYEvent = (evnt: PointerEvent) => {
542
- const thumbEl = evnt.currentTarget as HTMLDivElement
543
- internalData.isThumbDrag = true
544
- thumbEl.setPointerCapture(evnt.pointerId)
545
-
546
- const viewEl = refViewElem.value
547
- if (!viewEl) {
548
- return
549
- }
550
- const { yThumbHeight } = reactData
551
- const trackEl = thumbEl.parentElement as HTMLDivElement
552
- const trackRect = trackEl.getBoundingClientRect()
553
- const pointerPosition = evnt.clientY - trackRect.top
554
- // 记录 thumb 的偏移
555
- const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
556
- internalData.thumbDragOffset = pointerPosition - thumbOffset
557
- }
558
-
559
- const pointermoveThumbYEvent = (evnt: PointerEvent) => {
560
- const thumbEl = evnt.currentTarget as HTMLDivElement
561
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
562
- return
563
- }
564
- const { isThumbDrag, thumbDragOffset } = internalData
565
- if (isThumbDrag) {
566
- const viewEl = refViewElem.value
567
- if (!viewEl) {
568
- return
569
- }
570
- const { yThumbHeight } = reactData
571
- const thumbEl = evnt.currentTarget as HTMLDivElement
572
- const trackEl = thumbEl.parentElement as HTMLDivElement
573
- const trackRect = trackEl.getBoundingClientRect()
574
- // 更新偏移
575
- viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
576
- }
577
- }
578
-
579
427
  const scrollbarPrivateMethods: ScrollbarPrivateMethods = {
580
428
  }
581
429
 
@@ -704,18 +552,18 @@ export default defineVxeComponent({
704
552
  const viewEl = refViewElem.value
705
553
  const viewInnerEl = refViewInnerElem.value
706
554
  if (autoResize) {
707
- const resizeObserver = globalResize.create(() => {
555
+ const scrollObserver = globalResize.create(() => {
708
556
  if (props.autoResize) {
709
557
  reFlag.value++
710
558
  }
711
559
  })
712
560
  if (viewEl) {
713
- resizeObserver.observe(viewEl)
561
+ scrollObserver.observe(viewEl)
714
562
  }
715
563
  if (viewInnerEl) {
716
- resizeObserver.observe(viewInnerEl)
564
+ scrollObserver.observe(viewInnerEl)
717
565
  }
718
- internalData.resizeObserver = resizeObserver
566
+ internalData.scrollObserver = scrollObserver
719
567
  }
720
568
 
721
569
  reFlag.value++
@@ -725,9 +573,9 @@ export default defineVxeComponent({
725
573
  })
726
574
 
727
575
  onBeforeUnmount(() => {
728
- const { resizeObserver } = internalData
729
- if (resizeObserver) {
730
- resizeObserver.disconnect()
576
+ const { scrollObserver } = internalData
577
+ if (scrollObserver) {
578
+ scrollObserver.disconnect()
731
579
  }
732
580
  globalEvents.off($xeScrollbar, 'resize')
733
581
  })