vxe-pc-ui 4.20.5 → 4.20.7

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 (110) hide show
  1. package/dist/all.esm.js +5157 -5088
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/button/src/button.js +1 -0
  5. package/es/cascader/src/cascader.js +1 -0
  6. package/es/color-picker/src/color-picker.js +1 -0
  7. package/es/date-picker/src/date-picker.js +1 -0
  8. package/es/date-range-picker/src/date-range-picker.js +1 -0
  9. package/es/icon/style.css +1 -1
  10. package/es/icon-picker/src/icon-picker.js +1 -0
  11. package/es/pulldown/src/pulldown.js +1 -0
  12. package/es/scrollbar/src/scrollbar.js +20 -3
  13. package/es/scrollbar/style.css +11 -0
  14. package/es/scrollbar/style.min.css +1 -1
  15. package/es/select/src/select.js +1 -0
  16. package/es/style.css +1 -1
  17. package/es/style.min.css +1 -1
  18. package/es/table-select/src/table-select.js +1 -0
  19. package/es/tabs/src/tabs.js +5 -3
  20. package/es/tooltip/src/tooltip.js +47 -9
  21. package/es/tooltip/style.css +2 -1
  22. package/es/tooltip/style.min.css +1 -1
  23. package/es/tree-select/src/tree-select.js +1 -0
  24. package/es/ui/index.js +1 -1
  25. package/es/ui/src/dom.js +11 -8
  26. package/es/ui/src/log.js +1 -1
  27. package/es/vxe-scrollbar/style.css +11 -0
  28. package/es/vxe-scrollbar/style.min.css +1 -1
  29. package/es/vxe-tooltip/style.css +2 -1
  30. package/es/vxe-tooltip/style.min.css +1 -1
  31. package/lib/button/src/button.js +1 -0
  32. package/lib/button/src/button.min.js +1 -1
  33. package/lib/cascader/src/cascader.js +1 -0
  34. package/lib/cascader/src/cascader.min.js +1 -1
  35. package/lib/color-picker/src/color-picker.js +1 -0
  36. package/lib/color-picker/src/color-picker.min.js +1 -1
  37. package/lib/date-picker/src/date-picker.js +1 -0
  38. package/lib/date-picker/src/date-picker.min.js +1 -1
  39. package/lib/date-range-picker/src/date-range-picker.js +1 -0
  40. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  41. package/lib/icon/style/style.css +1 -1
  42. package/lib/icon/style/style.min.css +1 -1
  43. package/lib/icon-picker/src/icon-picker.js +1 -0
  44. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  45. package/lib/index.umd.js +4640 -4346
  46. package/lib/index.umd.min.js +1 -1
  47. package/lib/pulldown/src/pulldown.js +1 -0
  48. package/lib/pulldown/src/pulldown.min.js +1 -1
  49. package/lib/scrollbar/src/scrollbar.js +22 -3
  50. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  51. package/lib/scrollbar/style/style.css +11 -0
  52. package/lib/scrollbar/style/style.min.css +1 -1
  53. package/lib/select/src/select.js +1 -0
  54. package/lib/select/src/select.min.js +1 -1
  55. package/lib/style.css +1 -1
  56. package/lib/style.min.css +1 -1
  57. package/lib/table-select/src/table-select.js +1 -0
  58. package/lib/table-select/src/table-select.min.js +1 -1
  59. package/lib/tabs/src/tabs.js +45 -33
  60. package/lib/tabs/src/tabs.min.js +1 -1
  61. package/lib/tooltip/src/tooltip.js +81 -29
  62. package/lib/tooltip/src/tooltip.min.js +1 -1
  63. package/lib/tooltip/style/style.css +2 -1
  64. package/lib/tooltip/style/style.min.css +1 -1
  65. package/lib/tree-select/src/tree-select.js +1 -0
  66. package/lib/tree-select/src/tree-select.min.js +1 -1
  67. package/lib/ui/index.js +1 -1
  68. package/lib/ui/index.min.js +1 -1
  69. package/lib/ui/src/dom.js +11 -7
  70. package/lib/ui/src/dom.min.js +1 -1
  71. package/lib/ui/src/log.js +1 -1
  72. package/lib/ui/src/log.min.js +1 -1
  73. package/lib/vxe-scrollbar/style/style.css +11 -0
  74. package/lib/vxe-scrollbar/style/style.min.css +1 -1
  75. package/lib/vxe-tooltip/style/style.css +2 -1
  76. package/lib/vxe-tooltip/style/style.min.css +1 -1
  77. package/package.json +2 -2
  78. package/packages/button/src/button.ts +2 -1
  79. package/packages/cascader/src/cascader.ts +1 -0
  80. package/packages/color-picker/src/color-picker.ts +1 -0
  81. package/packages/date-picker/src/date-picker.ts +1 -0
  82. package/packages/date-range-picker/src/date-range-picker.ts +1 -0
  83. package/packages/icon-picker/src/icon-picker.ts +1 -0
  84. package/packages/pulldown/src/pulldown.ts +1 -0
  85. package/packages/scrollbar/src/scrollbar.ts +20 -2
  86. package/packages/select/src/select.ts +1 -0
  87. package/packages/table-select/src/table-select.ts +1 -0
  88. package/packages/tabs/src/tabs.ts +6 -3
  89. package/packages/tooltip/src/tooltip.ts +49 -10
  90. package/packages/tree-select/src/tree-select.ts +1 -0
  91. package/packages/ui/src/dom.ts +12 -8
  92. package/styles/components/scrollbar.scss +15 -1
  93. package/styles/components/tooltip.scss +2 -1
  94. package/types/components/button.d.ts +4 -0
  95. package/types/components/cascader.d.ts +4 -0
  96. package/types/components/scrollbar.d.ts +19 -1
  97. package/types/components/table.d.ts +1 -0
  98. package/types/components/tooltip.d.ts +21 -0
  99. /package/es/icon/{iconfont.1792048659766.ttf → iconfont.1792080138286.ttf} +0 -0
  100. /package/es/icon/{iconfont.1792048659766.woff → iconfont.1792080138286.woff} +0 -0
  101. /package/es/icon/{iconfont.1792048659766.woff2 → iconfont.1792080138286.woff2} +0 -0
  102. /package/es/{iconfont.1792048659766.ttf → iconfont.1792080138286.ttf} +0 -0
  103. /package/es/{iconfont.1792048659766.woff → iconfont.1792080138286.woff} +0 -0
  104. /package/es/{iconfont.1792048659766.woff2 → iconfont.1792080138286.woff2} +0 -0
  105. /package/lib/icon/style/{iconfont.1792048659766.ttf → iconfont.1792080138286.ttf} +0 -0
  106. /package/lib/icon/style/{iconfont.1792048659766.woff → iconfont.1792080138286.woff} +0 -0
  107. /package/lib/icon/style/{iconfont.1792048659766.woff2 → iconfont.1792080138286.woff2} +0 -0
  108. /package/lib/{iconfont.1792048659766.ttf → iconfont.1792080138286.ttf} +0 -0
  109. /package/lib/{iconfont.1792048659766.woff → iconfont.1792080138286.woff} +0 -0
  110. /package/lib/{iconfont.1792048659766.woff2 → iconfont.1792080138286.woff2} +0 -0
package/lib/ui/src/log.js CHANGED
@@ -9,7 +9,7 @@ var _core = require("@vxe-ui/core");
9
9
  const {
10
10
  log
11
11
  } = _core.VxeUI;
12
- const uiVersion = `ui v${"4.20.5"}`;
12
+ const uiVersion = `ui v${"4.20.7"}`;
13
13
  function createComponentLog(name) {
14
14
  const tableVersion = _core.VxeUI.tableVersion ? `table v${_core.VxeUI.tableVersion}` : '';
15
15
  const ganttVersion = _core.VxeUI.ganttVersion ? `gantt v${_core.VxeUI.ganttVersion}` : '';
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.createComponentLog=createComponentLog,exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,uiVersion="ui v4.20.5";function createComponentLog(e){var r=_core.VxeUI.tableVersion?"table v"+_core.VxeUI.tableVersion:"",o=_core.VxeUI.ganttVersion?"gantt v"+_core.VxeUI.ganttVersion:"",n=_core.VxeUI.designVersion?"design v"+_core.VxeUI.designVersion:"",r=[uiVersion,r,o,n].filter(e=>e).join(" ");return{warnLog:log.create("warn",r+"] ["+e),errLog:log.create("error",r+"] ["+e)}}let warnLog=exports.warnLog=log.create("warn",uiVersion),errLog=exports.errLog=log.create("error",uiVersion);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.createComponentLog=createComponentLog,exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,uiVersion="ui v4.20.7";function createComponentLog(e){var r=_core.VxeUI.tableVersion?"table v"+_core.VxeUI.tableVersion:"",o=_core.VxeUI.ganttVersion?"gantt v"+_core.VxeUI.ganttVersion:"",n=_core.VxeUI.designVersion?"design v"+_core.VxeUI.designVersion:"",r=[uiVersion,r,o,n].filter(e=>e).join(" ");return{warnLog:log.create("warn",r+"] ["+e),errLog:log.create("error",r+"] ["+e)}}let warnLog=exports.warnLog=log.create("warn",uiVersion),errLog=exports.errLog=log.create("error",uiVersion);
@@ -141,4 +141,15 @@
141
141
  .vxe-scrollbar--thumb-x:active,
142
142
  .vxe-scrollbar--thumb-y:active {
143
143
  background-color: var(--vxe-ui-scrollbar-thumb-active-background-color);
144
+ }
145
+
146
+ .vxe-scrollbar.theme--light {
147
+ --vxe-ui-scrollbar-thumb-background-color: rgba(0,0,0,0.4);
148
+ --vxe-ui-scrollbar-thumb-hover-background-color: rgba(0,0,0,0.5);
149
+ --vxe-ui-scrollbar-thumb-active-background-color: rgba(0,0,0,0.6);
150
+ }
151
+ .vxe-scrollbar.theme--dark {
152
+ --vxe-ui-scrollbar-thumb-background-color: rgba(255,255,255,0.4);
153
+ --vxe-ui-scrollbar-thumb-hover-background-color: rgba(255,255,255,0.5);
154
+ --vxe-ui-scrollbar-thumb-active-background-color: rgba(255,255,255,0.6);
144
155
  }
@@ -1 +1 @@
1
- .vxe-scrollbar{position:relative}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view{scrollbar-width:none;-ms-overflow-style:none}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view::-webkit-scrollbar{display:none}.vxe-scrollbar.is--virtual.ov-x--auto-hide:hover>.vxe-scrollbar--track-x{opacity:1}.vxe-scrollbar.is--virtual.ov-x--auto-hide>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--virtual.ov-y--auto-hide:hover>.vxe-scrollbar--track-y{opacity:1}.vxe-scrollbar.is--virtual.ov-y--auto-hide>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar{width:var(--vxe-ui-scrollbar-y-width);height:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb{border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}.vxe-scrollbar.ov-x--hidden>.vxe-scrollbar--view{overflow-x:hidden}.vxe-scrollbar.ov-y--hidden>.vxe-scrollbar--view{overflow-y:hidden}.vxe-scrollbar--view{height:100%;width:100%;overflow-x:auto;overflow-y:auto}.vxe-scrollbar--track-x,.vxe-scrollbar--track-y{display:none;position:absolute;background-color:var(--vxe-ui-scrollbar-track-background-color);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-scrollbar.overflow-x>.vxe-scrollbar--track-x{display:block}.vxe-scrollbar.overflow-y>.vxe-scrollbar--track-y{display:block}.vxe-scrollbar--track-x{width:100%;left:0;height:var(--vxe-ui-scrollbar-x-height);padding:var(--vxe-ui-scrollbar-track-padding) 0}.vxe-scrollbar--track-y{height:100%;top:0;width:var(--vxe-ui-scrollbar-y-width);padding:0 var(--vxe-ui-scrollbar-track-padding)}.vxe-scrollbar.sx-pos--top>.vxe-scrollbar--track-x{top:0}.vxe-scrollbar.sx-pos--bottom>.vxe-scrollbar--track-x{bottom:0}.vxe-scrollbar.sy-pos--left>.vxe-scrollbar--track-y{left:0}.vxe-scrollbar.sy-pos--right>.vxe-scrollbar--track-y{right:0}.vxe-scrollbar.overflow-x.overflow-y>.vxe-scrollbar--track-x{width:calc(100% - var(--vxe-ui-scrollbar-x-height))}.vxe-scrollbar.overflow-x.overflow-y>.vxe-scrollbar--track-y{height:calc(100% - var(--vxe-ui-scrollbar-y-width))}.vxe-scrollbar.overflow-x.overflow-y.sx-pos--top.sy-pos--left>.vxe-scrollbar--track-y,.vxe-scrollbar.overflow-x.overflow-y.sx-pos--top.sy-pos--right>.vxe-scrollbar--track-y{top:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.overflow-x.overflow-y.sy-pos--left.sx-pos--bottom>.vxe-scrollbar--track-x,.vxe-scrollbar.overflow-x.overflow-y.sy-pos--left.sx-pos--top>.vxe-scrollbar--track-x{left:var(--vxe-ui-scrollbar-y-width)}.vxe-scrollbar.is--padding.overflow-x.sx-pos--top{padding-top:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--padding.overflow-x.sx-pos--bottom{padding-bottom:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--padding.overflow-y.sy-pos--left{padding-left:var(--vxe-ui-scrollbar-y-width)}.vxe-scrollbar.is--padding.overflow-y.sy-pos--right{padding-right:var(--vxe-ui-scrollbar-y-width)}.vxe-scrollbar--thumb-y{width:100%}.vxe-scrollbar--thumb-x{height:100%}.vxe-scrollbar--thumb-x,.vxe-scrollbar--thumb-y{border-radius:var(--vxe-ui-scrollbar-thumb-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar--thumb-x:hover,.vxe-scrollbar--thumb-y:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar--thumb-x:active,.vxe-scrollbar--thumb-y:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}
1
+ .vxe-scrollbar{position:relative}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view{scrollbar-width:none;-ms-overflow-style:none}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view::-webkit-scrollbar{display:none}.vxe-scrollbar.is--virtual.ov-x--auto-hide:hover>.vxe-scrollbar--track-x{opacity:1}.vxe-scrollbar.is--virtual.ov-x--auto-hide>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--virtual.ov-y--auto-hide:hover>.vxe-scrollbar--track-y{opacity:1}.vxe-scrollbar.is--virtual.ov-y--auto-hide>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar{width:var(--vxe-ui-scrollbar-y-width);height:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb{border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}.vxe-scrollbar.ov-x--hidden>.vxe-scrollbar--view{overflow-x:hidden}.vxe-scrollbar.ov-y--hidden>.vxe-scrollbar--view{overflow-y:hidden}.vxe-scrollbar--view{height:100%;width:100%;overflow-x:auto;overflow-y:auto}.vxe-scrollbar--track-x,.vxe-scrollbar--track-y{display:none;position:absolute;background-color:var(--vxe-ui-scrollbar-track-background-color);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-scrollbar.overflow-x>.vxe-scrollbar--track-x{display:block}.vxe-scrollbar.overflow-y>.vxe-scrollbar--track-y{display:block}.vxe-scrollbar--track-x{width:100%;left:0;height:var(--vxe-ui-scrollbar-x-height);padding:var(--vxe-ui-scrollbar-track-padding) 0}.vxe-scrollbar--track-y{height:100%;top:0;width:var(--vxe-ui-scrollbar-y-width);padding:0 var(--vxe-ui-scrollbar-track-padding)}.vxe-scrollbar.sx-pos--top>.vxe-scrollbar--track-x{top:0}.vxe-scrollbar.sx-pos--bottom>.vxe-scrollbar--track-x{bottom:0}.vxe-scrollbar.sy-pos--left>.vxe-scrollbar--track-y{left:0}.vxe-scrollbar.sy-pos--right>.vxe-scrollbar--track-y{right:0}.vxe-scrollbar.overflow-x.overflow-y>.vxe-scrollbar--track-x{width:calc(100% - var(--vxe-ui-scrollbar-x-height))}.vxe-scrollbar.overflow-x.overflow-y>.vxe-scrollbar--track-y{height:calc(100% - var(--vxe-ui-scrollbar-y-width))}.vxe-scrollbar.overflow-x.overflow-y.sx-pos--top.sy-pos--left>.vxe-scrollbar--track-y,.vxe-scrollbar.overflow-x.overflow-y.sx-pos--top.sy-pos--right>.vxe-scrollbar--track-y{top:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.overflow-x.overflow-y.sy-pos--left.sx-pos--bottom>.vxe-scrollbar--track-x,.vxe-scrollbar.overflow-x.overflow-y.sy-pos--left.sx-pos--top>.vxe-scrollbar--track-x{left:var(--vxe-ui-scrollbar-y-width)}.vxe-scrollbar.is--padding.overflow-x.sx-pos--top{padding-top:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--padding.overflow-x.sx-pos--bottom{padding-bottom:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--padding.overflow-y.sy-pos--left{padding-left:var(--vxe-ui-scrollbar-y-width)}.vxe-scrollbar.is--padding.overflow-y.sy-pos--right{padding-right:var(--vxe-ui-scrollbar-y-width)}.vxe-scrollbar--thumb-y{width:100%}.vxe-scrollbar--thumb-x{height:100%}.vxe-scrollbar--thumb-x,.vxe-scrollbar--thumb-y{border-radius:var(--vxe-ui-scrollbar-thumb-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar--thumb-x:hover,.vxe-scrollbar--thumb-y:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar--thumb-x:active,.vxe-scrollbar--thumb-y:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}.vxe-scrollbar.theme--light{--vxe-ui-scrollbar-thumb-background-color:rgba(0,0,0,0.4);--vxe-ui-scrollbar-thumb-hover-background-color:rgba(0,0,0,0.5);--vxe-ui-scrollbar-thumb-active-background-color:rgba(0,0,0,0.6)}.vxe-scrollbar.theme--dark{--vxe-ui-scrollbar-thumb-background-color:rgba(255,255,255,0.4);--vxe-ui-scrollbar-thumb-hover-background-color:rgba(255,255,255,0.5);--vxe-ui-scrollbar-thumb-active-background-color:rgba(255,255,255,0.6)}
@@ -25,7 +25,8 @@
25
25
  .vxe-tooltip--wrapper.is--enterable .vxe-tooltip--body {
26
26
  pointer-events: all;
27
27
  }
28
- .vxe-tooltip--wrapper .vxe-tooltip--content {
28
+ .vxe-tooltip--wrapper .vxe-tooltip--content,
29
+ .vxe-tooltip--wrapper .vxe-tooltip--scrollbar-content-view {
29
30
  padding: 8px 12px;
30
31
  max-width: 600px;
31
32
  max-height: 800px;
@@ -1 +1 @@
1
- .vxe-tooltip--wrapper{display:none;position:absolute;top:-100%;left:-100%;font-size:12px;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);pointer-events:none}.vxe-tooltip--wrapper.is--visible{display:inline-block}.vxe-tooltip--wrapper.is--arrow .vxe-tooltip--arrow{display:block}.vxe-tooltip--wrapper.is--enterable:after{content:"";position:absolute;left:0;width:100%;height:6px;background-color:transparent}.vxe-tooltip--wrapper.is--enterable .vxe-tooltip--body{pointer-events:all}.vxe-tooltip--wrapper .vxe-tooltip--content{padding:8px 12px;max-width:600px;max-height:800px;white-space:pre-line;border-radius:var(--vxe-ui-base-border-radius);overflow:auto}.vxe-tooltip--wrapper .vxe-tooltip--arrow{display:none;position:absolute;border-color:transparent;border-width:6px;border-style:solid;left:50%;transform:translateX(-6px)}.vxe-tooltip--wrapper .vxe-tooltip--arrow:before{content:"";position:absolute;border-color:transparent;border-width:5px;border-style:solid;left:-5px}.vxe-tooltip--wrapper.placement--top.is--arrow{padding-bottom:6px}.vxe-tooltip--wrapper.placement--top.is--enterable:after{bottom:-6px}.vxe-tooltip--wrapper.placement--top .vxe-tooltip--arrow{bottom:-11px}.vxe-tooltip--wrapper.placement--top .vxe-tooltip--arrow:before{top:-7px}.vxe-tooltip--wrapper.placement--bottom.is--arrow{padding-top:6px}.vxe-tooltip--wrapper.placement--bottom.is--enterable:after{top:-6px}.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow{top:-11px}.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow:before{top:-3px}.vxe-tooltip--body{position:relative;border-radius:var(--vxe-ui-base-border-radius);white-space:normal;word-break:break-word;box-shadow:2px 2px 4px -2px rgba(0,0,0,.2)}.vxe-tooltip--wrapper.theme--light .vxe-tooltip--body{background-color:var(--vxe-ui-layout-background-color);border:1px solid var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--top .vxe-tooltip--arrow{border-top-color:var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--top .vxe-tooltip--arrow:before{border-top-color:var(--vxe-ui-layout-background-color)}.vxe-tooltip--wrapper.theme--light.placement--bottom .vxe-tooltip--arrow{border-bottom-color:var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--bottom .vxe-tooltip--arrow:before{border-bottom-color:var(--vxe-ui-layout-background-color)}.vxe-tooltip--wrapper.theme--dark .vxe-tooltip--body{background:var(--vxe-ui-tooltip-dark-background-color);color:var(--vxe-ui-tooltip-dark-color)}.vxe-tooltip--wrapper.theme--dark.placement--top .vxe-tooltip--arrow{border-top-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--top .vxe-tooltip--arrow:before{border-top-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--bottom .vxe-tooltip--arrow{border-bottom-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--bottom .vxe-tooltip--arrow:before{border-bottom-color:var(--vxe-ui-tooltip-dark-background-color)}
1
+ .vxe-tooltip--wrapper{display:none;position:absolute;top:-100%;left:-100%;font-size:12px;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);pointer-events:none}.vxe-tooltip--wrapper.is--visible{display:inline-block}.vxe-tooltip--wrapper.is--arrow .vxe-tooltip--arrow{display:block}.vxe-tooltip--wrapper.is--enterable:after{content:"";position:absolute;left:0;width:100%;height:6px;background-color:transparent}.vxe-tooltip--wrapper.is--enterable .vxe-tooltip--body{pointer-events:all}.vxe-tooltip--wrapper .vxe-tooltip--content,.vxe-tooltip--wrapper .vxe-tooltip--scrollbar-content-view{padding:8px 12px;max-width:600px;max-height:800px;white-space:pre-line;border-radius:var(--vxe-ui-base-border-radius);overflow:auto}.vxe-tooltip--wrapper .vxe-tooltip--arrow{display:none;position:absolute;border-color:transparent;border-width:6px;border-style:solid;left:50%;transform:translateX(-6px)}.vxe-tooltip--wrapper .vxe-tooltip--arrow:before{content:"";position:absolute;border-color:transparent;border-width:5px;border-style:solid;left:-5px}.vxe-tooltip--wrapper.placement--top.is--arrow{padding-bottom:6px}.vxe-tooltip--wrapper.placement--top.is--enterable:after{bottom:-6px}.vxe-tooltip--wrapper.placement--top .vxe-tooltip--arrow{bottom:-11px}.vxe-tooltip--wrapper.placement--top .vxe-tooltip--arrow:before{top:-7px}.vxe-tooltip--wrapper.placement--bottom.is--arrow{padding-top:6px}.vxe-tooltip--wrapper.placement--bottom.is--enterable:after{top:-6px}.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow{top:-11px}.vxe-tooltip--wrapper.placement--bottom .vxe-tooltip--arrow:before{top:-3px}.vxe-tooltip--body{position:relative;border-radius:var(--vxe-ui-base-border-radius);white-space:normal;word-break:break-word;box-shadow:2px 2px 4px -2px rgba(0,0,0,.2)}.vxe-tooltip--wrapper.theme--light .vxe-tooltip--body{background-color:var(--vxe-ui-layout-background-color);border:1px solid var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--top .vxe-tooltip--arrow{border-top-color:var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--top .vxe-tooltip--arrow:before{border-top-color:var(--vxe-ui-layout-background-color)}.vxe-tooltip--wrapper.theme--light.placement--bottom .vxe-tooltip--arrow{border-bottom-color:var(--vxe-ui-input-border-color)}.vxe-tooltip--wrapper.theme--light.placement--bottom .vxe-tooltip--arrow:before{border-bottom-color:var(--vxe-ui-layout-background-color)}.vxe-tooltip--wrapper.theme--dark .vxe-tooltip--body{background:var(--vxe-ui-tooltip-dark-background-color);color:var(--vxe-ui-tooltip-dark-color)}.vxe-tooltip--wrapper.theme--dark.placement--top .vxe-tooltip--arrow{border-top-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--top .vxe-tooltip--arrow:before{border-top-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--bottom .vxe-tooltip--arrow{border-bottom-color:var(--vxe-ui-tooltip-dark-background-color)}.vxe-tooltip--wrapper.theme--dark.placement--bottom .vxe-tooltip--arrow:before{border-bottom-color:var(--vxe-ui-tooltip-dark-background-color)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-pc-ui",
3
- "version": "4.20.5",
3
+ "version": "4.20.7",
4
4
  "description": "A vue based PC component library",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -27,7 +27,7 @@
27
27
  "style": "lib/style.css",
28
28
  "typings": "types/index.d.ts",
29
29
  "dependencies": {
30
- "@vxe-ui/core": "^4.4.31"
30
+ "@vxe-ui/core": "^4.4.33"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@rollup/plugin-commonjs": "^29.0.0",
@@ -311,7 +311,8 @@ const VxeButtonComponent = defineVxeComponent({
311
311
  const handleStyle = () => {
312
312
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
313
313
  placement: popupOpts.placement || placement,
314
- defaultPlacement: (popupOpts as any).defaultPlacement,
314
+ defaultPlacement: popupOpts.defaultPlacement,
315
+ appendTo: popupOpts.appendTo,
315
316
  teleportTo: btnTransfer
316
317
  })
317
318
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -816,6 +816,7 @@ export default defineVxeComponent({
816
816
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
817
817
  placement: popupOpts.placement,
818
818
  defaultPlacement: popupOpts.defaultPlacement,
819
+ appendTo: popupOpts.appendTo,
819
820
  teleportTo: btnTransfer,
820
821
  isMinWidth: false
821
822
  })
@@ -333,6 +333,7 @@ export default defineVxeComponent({
333
333
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
334
334
  placement: popupOpts.placement || placement,
335
335
  defaultPlacement: popupOpts.defaultPlacement,
336
+ appendTo: popupOpts.appendTo,
336
337
  teleportTo: btnTransfer
337
338
  })
338
339
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -1244,6 +1244,7 @@ export default defineVxeComponent({
1244
1244
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
1245
1245
  placement: popupOpts.placement || placement,
1246
1246
  defaultPlacement: popupOpts.defaultPlacement,
1247
+ appendTo: popupOpts.appendTo,
1247
1248
  teleportTo: btnTransfer
1248
1249
  })
1249
1250
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -1045,6 +1045,7 @@ export default defineVxeComponent({
1045
1045
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
1046
1046
  placement: popupOpts.placement || placement,
1047
1047
  defaultPlacement: popupOpts.defaultPlacement,
1048
+ appendTo: popupOpts.appendTo,
1048
1049
  teleportTo: btnTransfer
1049
1050
  })
1050
1051
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -245,6 +245,7 @@ export default defineVxeComponent({
245
245
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
246
246
  placement: popupOpts.placement || placement,
247
247
  defaultPlacement: popupOpts.defaultPlacement,
248
+ appendTo: popupOpts.appendTo,
248
249
  teleportTo: btnTransfer
249
250
  })
250
251
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -155,6 +155,7 @@ export default defineVxeComponent({
155
155
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
156
156
  placement: popupOpts.placement || placement,
157
157
  defaultPlacement: popupOpts.defaultPlacement,
158
+ appendTo: popupOpts.appendTo,
158
159
  teleportTo: btnTransfer
159
160
  })
160
161
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -36,6 +36,10 @@ export default defineVxeComponent({
36
36
  props: {
37
37
  id: [String, Number] as PropType<VxeScrollbarPropTypes.Id>,
38
38
  viewId: [String, Number] as PropType<VxeScrollbarPropTypes.ViewId>,
39
+ theme: {
40
+ type: String as PropType<VxeScrollbarPropTypes.Theme>,
41
+ default: () => getConfig().scrollbar.theme
42
+ },
39
43
  width: [String, Number] as PropType<VxeScrollbarPropTypes.Width>,
40
44
  height: [String, Number] as PropType<VxeScrollbarPropTypes.Height>,
41
45
  minWidth: [String, Number] as PropType<VxeScrollbarPropTypes.MinWidth>,
@@ -69,6 +73,10 @@ export default defineVxeComponent({
69
73
  type: Object as PropType<VxeScrollbarPropTypes.ViewAttrs>,
70
74
  default: () => getConfig().scrollbar.viewAttrs
71
75
  },
76
+ viewStyle: {
77
+ type: Object as PropType<VxeScrollbarPropTypes.ViewStyle>,
78
+ default: () => getConfig().scrollbar.viewStyle
79
+ },
72
80
  viewClassName: {
73
81
  type: String as PropType<VxeScrollbarPropTypes.ViewClassName>,
74
82
  default: () => getConfig().scrollbar.viewClassName
@@ -169,7 +177,7 @@ export default defineVxeComponent({
169
177
  })
170
178
 
171
179
  const computeWrapperClss = computed(() => {
172
- const { native, className, padding } = props
180
+ const { native, theme, className, padding } = props
173
181
  const { yThumbHeight, xThumbWidth } = reactData
174
182
  const xToTop = computeXToTop.value
175
183
  const yToLeft = computeYToLeft.value
@@ -179,6 +187,7 @@ export default defineVxeComponent({
179
187
  const yAutoHide = computeYAutoHide.value
180
188
  return domUtils.buildClass([
181
189
  'vxe-scrollbar',
190
+ theme ? `theme--${theme}` : '',
182
191
  `ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
183
192
  `ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
184
193
  `sx-pos--${xToTop ? 'top' : 'bottom'}`,
@@ -252,6 +261,14 @@ export default defineVxeComponent({
252
261
 
253
262
  const scrollbarMethods: ScrollbarMethods = {
254
263
  dispatchEvent,
264
+ getViewElem () {
265
+ const viewEl = refViewElem.value
266
+ return viewEl || null
267
+ },
268
+ getViewInnerElem () {
269
+ const viewInnerEl = refViewInnerElem.value
270
+ return viewInnerEl || null
271
+ },
255
272
  scrollTo (left: ScrollToOptions | number, top?: number) {
256
273
  const viewEl = refViewElem.value
257
274
  if (viewEl) {
@@ -557,7 +574,7 @@ export default defineVxeComponent({
557
574
  Object.assign($xeScrollbar, scrollbarMethods, scrollbarPrivateMethods)
558
575
 
559
576
  const renderVN = () => {
560
- const { id, native, loading, viewId, viewAttrs } = props
577
+ const { id, native, loading, viewId, viewAttrs, viewStyle } = props
561
578
  const wrapperStyle = computeWrapperStyle.value
562
579
  const wrapperClss = computeWrapperClss.value
563
580
  const viewClss = computeViewClss.value
@@ -576,6 +593,7 @@ export default defineVxeComponent({
576
593
  class: viewClss,
577
594
  onScroll: scrollEvent,
578
595
  id: viewId || null,
596
+ style: viewStyle,
579
597
  ...viewAttrs
580
598
  }, [
581
599
  h('div', {
@@ -613,6 +613,7 @@ export default defineVxeComponent({
613
613
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
614
614
  placement: popupOpts.placement || placement,
615
615
  defaultPlacement: popupOpts.defaultPlacement,
616
+ appendTo: popupOpts.appendTo,
616
617
  teleportTo: btnTransfer
617
618
  })
618
619
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -444,6 +444,7 @@ export default defineVxeComponent({
444
444
  const ppObj = updatePanelPlacement(targetElem, panelElem, {
445
445
  placement: popupOpts.placement || placement,
446
446
  defaultPlacement: popupOpts.defaultPlacement,
447
+ appendTo: popupOpts.appendTo,
447
448
  teleportTo: btnTransfer
448
449
  })
449
450
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -1,9 +1,9 @@
1
1
  import { ref, h, reactive, inject, PropType, provide, computed, onUnmounted, watch, nextTick, onMounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
- import { createEvent, getConfig, getIcon, globalEvents, permission, useSize, renderEmptyElement } from '../../ui'
3
+ import { VxeUI, useSize } from '../../ui'
4
4
  import { getSlotVNs } from '../../ui/src/vn'
5
5
  import { toCssUnit, addClass, removeClass } from '../../ui/src/dom'
6
- import { getDefaultConfig, isEnableConf } from '../../ui/src/utils'
6
+ import { isEnableConf } from '../../ui/src/utils'
7
7
  import { createComponentLog } from '../../ui/src/log'
8
8
  import XEUtils from 'xe-utils'
9
9
  import VxeLoadingComponent from '../../loading'
@@ -11,6 +11,9 @@ import VxeScrollbarComponent from '../../scrollbar'
11
11
 
12
12
  import type { VxeTabsPropTypes, VxeTabPaneProps, VxeTabsEmits, TabsInternalData, TabsReactData, TabsPrivateRef, VxeTabsPrivateComputed, VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines, ValueOf, TabsMethods, TabsPrivateMethods, VxeComponentStyleType } from '../../../types'
13
13
 
14
+ const { baseUtils, createEvent, getConfig, getIcon, globalEvents, permission, renderEmptyElement } = VxeUI
15
+ const { getDefVal } = baseUtils
16
+
14
17
  const { warnLog, errLog } = createComponentLog('tabs')
15
18
 
16
19
  const scrollbarOffsetSize = 20
@@ -55,7 +58,7 @@ export default defineVxeComponent({
55
58
  },
56
59
  useScrollbar: {
57
60
  type: Boolean as PropType<VxeTabsPropTypes.UseScrollbar>,
58
- default: () => getDefaultConfig(getConfig().tabs.useScrollbar, getConfig().useScrollbar)
61
+ default: () => getDefVal(getConfig().tabs.useScrollbar, getConfig().useScrollbar)
59
62
  },
60
63
  scrollbarConfig: Object as PropType<VxeTabsPropTypes.ScrollbarConfig>,
61
64
  // 已废弃
@@ -1,12 +1,16 @@
1
1
  import { h, ref, nextTick, onBeforeUnmount, onMounted, computed, reactive, watch, PropType, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
- import { getConfig, createEvent, useSize, globalEvents } from '../../ui'
4
+ import { VxeUI, useSize } from '../../ui'
5
5
  import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
6
6
  import { getPopupAppendElement, toCssUnit, updatePanelPlacement } from '../../ui/src/dom'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
+ import VxeScrollbarComponent from '../../scrollbar'
8
9
 
9
- import type { VxeTooltipPropTypes, VxeTooltipConstructor, VxeTooltipEmits, TooltipInternalData, TooltipPrivateMethods, TooltipReactData, TooltipMethods, TooltipPrivateRef, VxeComponentStyleType, ValueOf } from '../../../types'
10
+ import type { VxeTooltipPropTypes, VxeTooltipConstructor, VxeTooltipEmits, TooltipInternalData, TooltipPrivateMethods, TooltipReactData, TooltipMethods, TooltipPrivateRef, VxeComponentStyleType, ValueOf, VxeScrollbarInstance } from '../../../types'
11
+
12
+ const { baseUtils, getConfig, createEvent, globalEvents } = VxeUI
13
+ const { getDefVal } = baseUtils
10
14
 
11
15
  function createReactData (): TooltipReactData {
12
16
  return {
@@ -28,6 +32,7 @@ function createReactData (): TooltipReactData {
28
32
 
29
33
  function createInternalData (): TooltipInternalData {
30
34
  return {
35
+ // scrollbarViewEl: undefined,
31
36
  // showDelayTip: undefined
32
37
  }
33
38
  }
@@ -115,7 +120,12 @@ export default defineVxeComponent({
115
120
  appendTo: {
116
121
  type: [String, Function] as PropType<VxeTooltipPropTypes.AppendTo>,
117
122
  default: () => getConfig().tooltip.appendTo
118
- }
123
+ },
124
+ useScrollbar: {
125
+ type: Boolean as PropType<VxeTooltipPropTypes.UseScrollbar>,
126
+ default: () => getDefVal(getConfig().tooltip.useScrollbar, getConfig().useScrollbar)
127
+ },
128
+ scrollbarConfig: Object as PropType<VxeTooltipPropTypes.ScrollbarConfig>
119
129
  },
120
130
  emits: [
121
131
  'update:modelValue',
@@ -134,7 +144,8 @@ export default defineVxeComponent({
134
144
  const internalData = createInternalData()
135
145
 
136
146
  const refElem = ref<HTMLDivElement>()
137
- const contentWrapperfElem = ref<HTMLDivElement>()
147
+ const contentScrollbar = ref<VxeScrollbarInstance>()
148
+ const contentWrapperElem = ref<HTMLDivElement>()
138
149
 
139
150
  const computeWrapperStyle = computed(() => {
140
151
  const { width, height, minHeight, minWidth, maxHeight, maxWidth } = props
@@ -251,7 +262,9 @@ export default defineVxeComponent({
251
262
  tipStore.placement = 'top'
252
263
  tipStore.style = { width: 'auto', left: 0, top: 0, zIndex: props.zIndex || reactData.tipZindex }
253
264
  tipStore.arrowStyle = { left: '50%' }
254
- return $xeTooltip.updatePlacement()
265
+ return $xeTooltip.updatePlacement().then(() => {
266
+ return $xeTooltip.updatePlacement()
267
+ })
255
268
  }
256
269
 
257
270
  const handleDelayFn = () => {
@@ -314,7 +327,7 @@ export default defineVxeComponent({
314
327
  }
315
328
 
316
329
  const updateTipStyle = () => {
317
- const { placement, defaultPlacement, isArrow } = props
330
+ const { placement, defaultPlacement, appendTo, isArrow } = props
318
331
  const { tipTarget: targetElem, tipStore, tipPos, tipZindex } = reactData
319
332
  const panelElem = refElem.value
320
333
  if (!targetElem || !panelElem) {
@@ -348,6 +361,7 @@ export default defineVxeComponent({
348
361
  defaultLeft: left,
349
362
  placement: placement,
350
363
  defaultPlacement: defaultPlacement,
364
+ appendTo: appendTo,
351
365
  isMinWidth: false,
352
366
  teleportTo: true
353
367
  })
@@ -416,7 +430,7 @@ export default defineVxeComponent({
416
430
  Object.assign($xeTooltip, tooltipMethods, tooltipPrivateMethods)
417
431
 
418
432
  const renderContent = () => {
419
- const { useHtml, useHTML } = props
433
+ const { useScrollbar, theme, useHtml, useHTML } = props
420
434
  const { tipContent } = reactData
421
435
  const wrapperStyle = computeWrapperStyle.value
422
436
  const contentSlot = slots.content
@@ -439,9 +453,22 @@ export default defineVxeComponent({
439
453
  key: 'cd'
440
454
  }, `${tipContent}`))
441
455
  }
456
+ if (useScrollbar) {
457
+ return h(VxeScrollbarComponent, {
458
+ key: 5,
459
+ ref: contentScrollbar,
460
+ class: 'vxe-tooltip--scrollbar-content',
461
+ theme,
462
+ viewClassName: 'vxe-tooltip--scrollbar-content-view',
463
+ viewInnerClassName: 'vxe-tooltip--scrollbar-content-inner',
464
+ viewStyle: wrapperStyle
465
+ }, {
466
+ default: () => contVNs
467
+ })
468
+ }
442
469
  return h('div', {
443
470
  key: 3,
444
- ref: contentWrapperfElem,
471
+ ref: contentWrapperElem,
445
472
  class: 'vxe-tooltip--content',
446
473
  style: wrapperStyle
447
474
  }, contVNs)
@@ -508,7 +535,15 @@ export default defineVxeComponent({
508
535
  handleDelayFn()
509
536
 
510
537
  onMounted(() => {
511
- const contentWrapperfEl = contentWrapperfElem.value
538
+ const $scrollbar = contentScrollbar.value
539
+ if ($scrollbar) {
540
+ const viewEl = $scrollbar.getViewElem()
541
+ if (viewEl) {
542
+ viewEl.addEventListener('wheel', wheelEvent, { passive: false })
543
+ internalData.scrollbarViewEl = viewEl
544
+ }
545
+ }
546
+ const contentWrapperfEl = contentWrapperElem.value
512
547
  if (contentWrapperfEl) {
513
548
  contentWrapperfEl.addEventListener('wheel', wheelEvent, { passive: false })
514
549
  }
@@ -550,16 +585,20 @@ export default defineVxeComponent({
550
585
 
551
586
  onBeforeUnmount(() => {
552
587
  const { target } = reactData
588
+ const { scrollbarViewEl } = internalData
553
589
  const panelElem = refElem.value
554
590
  if (target) {
555
591
  target.onmouseenter = null
556
592
  target.onmouseleave = null
557
593
  target.onclick = null
558
594
  }
559
- const contentWrapperfEl = contentWrapperfElem.value
595
+ const contentWrapperfEl = contentWrapperElem.value
560
596
  if (contentWrapperfEl) {
561
597
  contentWrapperfEl.removeEventListener('wheel', wheelEvent)
562
598
  }
599
+ if (scrollbarViewEl) {
600
+ scrollbarViewEl.removeEventListener('wheel', wheelEvent)
601
+ }
563
602
  if (panelElem) {
564
603
  const parentNode = panelElem.parentNode
565
604
  if (parentNode) {
@@ -499,6 +499,7 @@ export default defineVxeComponent({
499
499
  isMinWidth: !popupOpts.width,
500
500
  placement: popupOpts.placement || placement,
501
501
  defaultPlacement: popupOpts.defaultPlacement,
502
+ appendTo: popupOpts.appendTo,
502
503
  teleportTo: btnTransfer
503
504
  })
504
505
  const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
@@ -179,6 +179,7 @@ interface PanelPlacementOptions {
179
179
  defaultLeft?: number
180
180
  placement?: '' | 'top' | 'bottom' | null
181
181
  defaultPlacement?: '' | 'top' | 'bottom' | null
182
+ appendTo?: string | HTMLElement | ((params: any) => string | HTMLElement)
182
183
  teleportTo?: boolean
183
184
  marginSize?: number
184
185
  isMinWidth?: boolean
@@ -188,7 +189,8 @@ interface PanelPlacementOptions {
188
189
  * 通用定位计算
189
190
  */
190
191
  export function updatePanelPlacement (targetElem: HTMLElement | null | undefined, panelElem: HTMLElement | null | undefined, options: PanelPlacementOptions) {
191
- const { defaultTop, defaultLeft, placement, defaultPlacement, teleportTo, marginSize, isMinWidth } = Object.assign({
192
+ const { defaultTop, defaultLeft, placement, defaultPlacement, appendTo, teleportTo, marginSize, isMinWidth } = Object.assign({
193
+ appendTo: '',
192
194
  teleportTo: false,
193
195
  marginSize: 18,
194
196
  isMinWidth: true
@@ -202,7 +204,7 @@ export function updatePanelPlacement (targetElem: HTMLElement | null | undefined
202
204
  const stys: Record<string, string> = {}
203
205
  if (panelElem && targetElem) {
204
206
  const bodyEl = document.body
205
- const parentWrapperEl = getPopupWrapperElement(panelElem)
207
+ const parentWrapperEl = getPopupWrapperElement(teleportTo ? getPopupAppendElement(appendTo) : panelElem)
206
208
  if (parentWrapperEl) {
207
209
  const targetWidth = targetElem.offsetWidth
208
210
  const targetHeight = targetElem.offsetHeight
@@ -215,16 +217,18 @@ export function updatePanelPlacement (targetElem: HTMLElement | null | undefined
215
217
  const visibleHeight = bodyEl.clientHeight
216
218
  const visibleWidth = bodyEl.clientWidth
217
219
 
218
- const offsetLeft = parentWrapperRect.left
219
- const offsetTop = parentWrapperRect.top
220
+ const parentWrapperScrollLeft = parentWrapperEl.scrollLeft
221
+ const parentWrapperScrollTop = parentWrapperEl.scrollTop
222
+ const parentWrapperOffsetLeft = parentWrapperRect.left
223
+ const parentWrapperOffsetTop = parentWrapperRect.top
220
224
  const targetLeft = targetRect.left
221
225
  const targetTop = targetRect.top
222
226
 
223
227
  minWidth = targetElem.offsetWidth
224
228
 
225
229
  if (teleportTo) {
226
- left = defaultLeft || (targetLeft - (panelWidth - targetWidth) / 2)
227
- top = defaultTop || (targetTop + targetHeight)
230
+ left = (defaultLeft || (targetLeft - (panelWidth - targetWidth) / 2)) - parentWrapperScrollLeft
231
+ top = (defaultTop || (targetTop + targetHeight)) - parentWrapperScrollTop
228
232
  if (placement === 'top') {
229
233
  panelPlacement = 'top'
230
234
  top = targetTop - panelHeight
@@ -267,8 +271,8 @@ export function updatePanelPlacement (targetElem: HTMLElement | null | undefined
267
271
  }
268
272
 
269
273
  // 偏移
270
- top -= offsetTop
271
- left -= offsetLeft
274
+ top -= parentWrapperOffsetTop
275
+ left -= parentWrapperOffsetLeft
272
276
  } else {
273
277
  if (placement === 'top') {
274
278
  panelPlacement = 'top'
@@ -191,4 +191,18 @@
191
191
  &:active {
192
192
  background-color: var(--vxe-ui-scrollbar-thumb-active-background-color);
193
193
  }
194
- }
194
+ }
195
+
196
+ // 滚动条主题色
197
+ .vxe-scrollbar {
198
+ &.theme--light {
199
+ --vxe-ui-scrollbar-thumb-background-color: rgba(0,0,0,0.4);
200
+ --vxe-ui-scrollbar-thumb-hover-background-color: rgba(0,0,0,0.5);
201
+ --vxe-ui-scrollbar-thumb-active-background-color: rgba(0,0,0,0.6);
202
+ }
203
+ &.theme--dark {
204
+ --vxe-ui-scrollbar-thumb-background-color: rgba(255,255,255,0.4);
205
+ --vxe-ui-scrollbar-thumb-hover-background-color: rgba(255,255,255,0.5);
206
+ --vxe-ui-scrollbar-thumb-active-background-color: rgba(255,255,255,0.6);
207
+ }
208
+ }
@@ -28,7 +28,8 @@
28
28
  pointer-events: all;
29
29
  }
30
30
  }
31
- .vxe-tooltip--content {
31
+ .vxe-tooltip--content,
32
+ .vxe-tooltip--scrollbar-content-view {
32
33
  padding: 8px 12px;
33
34
  max-width: 600px;
34
35
  max-height: 800px;
@@ -94,6 +94,10 @@ export namespace VxeButtonPropTypes {
94
94
 
95
95
  export type DestroyOnClose = boolean
96
96
  export interface PopupConfig {
97
+ /**
98
+ * 默认弹出面板方向
99
+ */
100
+ defaultPlacement?: 'top' | 'bottom' | '' | null
97
101
  /**
98
102
  * 设置弹出面板方向
99
103
  */
@@ -150,6 +150,10 @@ export namespace VxeCascaderPropTypes {
150
150
  */
151
151
  defaultPlacement?: 'top' | 'bottom' | '' | null
152
152
  transfer?: boolean
153
+ /**
154
+ * 挂载到指定元素下
155
+ */
156
+ appendTo?: string | HTMLElement | ((params: {}) => string | HTMLElement)
153
157
  height?: number | string
154
158
  nodeWidth?: number | string
155
159
  nodeHeight?: number | string
@@ -1,5 +1,5 @@
1
1
  import { RenderFunction, SetupContext, Ref } from 'vue'
2
- import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentEventParams, ValueOf } from '@vxe-ui/core'
2
+ import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentEventParams, ValueOf, VxeComponentStyleType } from '@vxe-ui/core'
3
3
 
4
4
  /* eslint-disable no-use-before-define,@typescript-eslint/ban-types */
5
5
 
@@ -26,6 +26,7 @@ export interface VxeScrollbarPrivateRef extends ScrollbarPrivateRef { }
26
26
  export namespace VxeScrollbarPropTypes {
27
27
  export type Id = number | string
28
28
  export type ViewId = number | string
29
+ export type Theme = '' | 'light' | 'dark'
29
30
  export type Width = number | string
30
31
  export type Height = number | string
31
32
  export type MinWidth = number | string
@@ -73,6 +74,7 @@ export namespace VxeScrollbarPropTypes {
73
74
  }
74
75
  export type ClassName = string
75
76
  export type ViewAttrs = Record<string, any>
77
+ export type ViewStyle = VxeComponentStyleType
76
78
  export type ViewClassName = string
77
79
  export type ViewInnerClassName = string
78
80
  export type AutoResize = boolean
@@ -88,6 +90,10 @@ export interface VxeScrollbarProps {
88
90
  * View ID
89
91
  */
90
92
  viewId?: VxeScrollbarPropTypes.ViewId
93
+ /**
94
+ * 主题色
95
+ */
96
+ theme?: VxeScrollbarPropTypes.Theme
91
97
  /**
92
98
  * 容器宽度
93
99
  */
@@ -148,6 +154,10 @@ export interface VxeScrollbarProps {
148
154
  * 给视图元素附加属性
149
155
  */
150
156
  viewAttrs?: VxeScrollbarPropTypes.ViewAttrs
157
+ /**
158
+ * 给视图元素附加样式
159
+ */
160
+ viewStyle?: VxeScrollbarPropTypes.ViewStyle
151
161
  /**
152
162
  * 给视图元素附加 class
153
163
  */
@@ -215,6 +225,14 @@ export interface ScrollbarMethods {
215
225
  * 滚动元素到可见位置
216
226
  */
217
227
  scrollIntoView(): void
228
+ /**
229
+ * 获取滚动视图元素
230
+ */
231
+ getViewElem(): HTMLElement | null
232
+ /**
233
+ * 获取滚动视图内容包裹元素
234
+ */
235
+ getViewInnerElem(): HTMLElement | null
218
236
  /**
219
237
  * 重新计算样式
220
238
  * 对于某些特殊场景可能会用到,比如更新内容
@@ -1598,6 +1598,7 @@ export namespace VxeTablePropTypes {
1598
1598
  */
1599
1599
  defaultPlacement?: VxeTooltipPropTypes.DefaultPlacement
1600
1600
  popupClassName?: VxeTooltipPropTypes.PopupClassName
1601
+ useScrollbar?: VxeTooltipPropTypes.UseScrollbar
1601
1602
  /**
1602
1603
  * 该方法可以通过返回值来重写默认的提示内容,可以返回 null 使用默认的提示内容,可以返回空内容去掉指定单元格的提示内容
1603
1604
  */