vxe-pc-ui 4.20.9 → 4.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.
Files changed (102) hide show
  1. package/dist/all.esm.js +1863 -2038
  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 +8 -164
  12. package/es/scrollbar/src/scrollbar.js +20 -173
  13. package/es/select/src/select.js +243 -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 +17 -172
  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 +813 -756
  43. package/lib/index.umd.min.js +1 -1
  44. package/lib/list/src/list.js +25 -194
  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 +315 -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 +36 -201
  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 +24 -181
  76. package/packages/scrollbar/src/scrollbar.ts +36 -188
  77. package/packages/select/src/select.ts +278 -8
  78. package/packages/tooltip/src/tooltip.ts +2 -4
  79. package/packages/tree/src/tree.ts +33 -189
  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 +7 -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 +20 -18
  90. package/types/components/tree.d.ts +7 -16
  91. /package/es/icon/{iconfont.1792139440389.ttf → iconfont.1792219842406.ttf} +0 -0
  92. /package/es/icon/{iconfont.1792139440389.woff → iconfont.1792219842406.woff} +0 -0
  93. /package/es/icon/{iconfont.1792139440389.woff2 → iconfont.1792219842406.woff2} +0 -0
  94. /package/es/{iconfont.1792139440389.ttf → iconfont.1792219842406.ttf} +0 -0
  95. /package/es/{iconfont.1792139440389.woff → iconfont.1792219842406.woff} +0 -0
  96. /package/es/{iconfont.1792139440389.woff2 → iconfont.1792219842406.woff2} +0 -0
  97. /package/lib/icon/style/{iconfont.1792139440389.ttf → iconfont.1792219842406.ttf} +0 -0
  98. /package/lib/icon/style/{iconfont.1792139440389.woff → iconfont.1792219842406.woff} +0 -0
  99. /package/lib/icon/style/{iconfont.1792139440389.woff2 → iconfont.1792219842406.woff2} +0 -0
  100. /package/lib/{iconfont.1792139440389.ttf → iconfont.1792219842406.ttf} +0 -0
  101. /package/lib/{iconfont.1792139440389.woff → iconfont.1792219842406.woff} +0 -0
  102. /package/lib/{iconfont.1792139440389.woff2 → iconfont.1792219842406.woff2} +0 -0
@@ -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
  })