vxe-pc-ui 4.20.8 → 4.20.9

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 (92) hide show
  1. package/dist/all.esm.js +909 -818
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/card/src/card.js +8 -6
  5. package/es/drawer/src/drawer.js +7 -5
  6. package/es/icon/style.css +1 -1
  7. package/es/layout-aside/src/layout-aside.js +6 -4
  8. package/es/layout-body/src/layout-body.js +6 -4
  9. package/es/layout-container/src/layout-container.js +11 -3
  10. package/es/list/src/list.js +79 -50
  11. package/es/menu/src/menu.js +7 -5
  12. package/es/modal/src/modal.js +7 -5
  13. package/es/scrollbar/src/scrollbar.js +8 -0
  14. package/es/style.css +1 -1
  15. package/es/style.min.css +1 -1
  16. package/es/tabs/src/tabs.js +5 -4
  17. package/es/tooltip/src/tooltip.js +9 -5
  18. package/es/tree/src/tree.js +74 -45
  19. package/es/ui/index.js +1 -1
  20. package/es/ui/src/log.js +1 -1
  21. package/lib/card/src/card.js +9 -6
  22. package/lib/card/src/card.min.js +1 -1
  23. package/lib/drawer/src/drawer.js +7 -4
  24. package/lib/drawer/src/drawer.min.js +1 -1
  25. package/lib/icon/style/style.css +1 -1
  26. package/lib/icon/style/style.min.css +1 -1
  27. package/lib/index.umd.js +267 -134
  28. package/lib/index.umd.min.js +1 -1
  29. package/lib/layout-aside/src/layout-aside.js +7 -4
  30. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  31. package/lib/layout-body/src/layout-body.js +7 -4
  32. package/lib/layout-body/src/layout-body.min.js +1 -1
  33. package/lib/layout-container/src/layout-container.js +20 -4
  34. package/lib/layout-container/src/layout-container.min.js +1 -1
  35. package/lib/list/src/list.js +79 -47
  36. package/lib/list/src/list.min.js +1 -1
  37. package/lib/menu/src/menu.js +8 -4
  38. package/lib/menu/src/menu.min.js +1 -1
  39. package/lib/modal/src/modal.js +7 -4
  40. package/lib/modal/src/modal.min.js +1 -1
  41. package/lib/scrollbar/src/scrollbar.js +8 -0
  42. package/lib/style.css +1 -1
  43. package/lib/style.min.css +1 -1
  44. package/lib/tabs/src/tabs.js +6 -5
  45. package/lib/tabs/src/tabs.min.js +1 -1
  46. package/lib/tooltip/src/tooltip.js +9 -4
  47. package/lib/tooltip/src/tooltip.min.js +1 -1
  48. package/lib/tree/src/tree.js +74 -43
  49. package/lib/tree/src/tree.min.js +1 -1
  50. package/lib/ui/index.js +1 -1
  51. package/lib/ui/index.min.js +1 -1
  52. package/lib/ui/src/log.js +1 -1
  53. package/lib/ui/src/log.min.js +1 -1
  54. package/package.json +2 -2
  55. package/packages/card/src/card.ts +8 -6
  56. package/packages/drawer/src/drawer.ts +7 -5
  57. package/packages/layout-aside/src/layout-aside.ts +6 -4
  58. package/packages/layout-body/src/layout-body.ts +6 -4
  59. package/packages/layout-container/src/layout-container.ts +13 -3
  60. package/packages/list/src/list.ts +81 -50
  61. package/packages/menu/src/menu.ts +7 -5
  62. package/packages/modal/src/modal.ts +7 -5
  63. package/packages/scrollbar/src/scrollbar.ts +8 -1
  64. package/packages/tabs/src/tabs.ts +5 -4
  65. package/packages/tooltip/src/tooltip.ts +9 -5
  66. package/packages/tree/src/tree.ts +76 -45
  67. package/types/components/card.d.ts +2 -2
  68. package/types/components/drawer.d.ts +2 -2
  69. package/types/components/grid.d.ts +3 -1
  70. package/types/components/layout-aside.d.ts +2 -2
  71. package/types/components/layout-body.d.ts +2 -2
  72. package/types/components/layout-container.d.ts +3 -1
  73. package/types/components/list.d.ts +2 -2
  74. package/types/components/menu.d.ts +2 -2
  75. package/types/components/modal.d.ts +2 -2
  76. package/types/components/scrollbar.d.ts +10 -0
  77. package/types/components/table.d.ts +9 -5
  78. package/types/components/tabs.d.ts +2 -2
  79. package/types/components/tooltip.d.ts +2 -2
  80. package/types/components/tree.d.ts +2 -2
  81. /package/es/icon/{iconfont.1792115566662.ttf → iconfont.1792139440389.ttf} +0 -0
  82. /package/es/icon/{iconfont.1792115566662.woff → iconfont.1792139440389.woff} +0 -0
  83. /package/es/icon/{iconfont.1792115566662.woff2 → iconfont.1792139440389.woff2} +0 -0
  84. /package/es/{iconfont.1792115566662.ttf → iconfont.1792139440389.ttf} +0 -0
  85. /package/es/{iconfont.1792115566662.woff → iconfont.1792139440389.woff} +0 -0
  86. /package/es/{iconfont.1792115566662.woff2 → iconfont.1792139440389.woff2} +0 -0
  87. /package/lib/icon/style/{iconfont.1792115566662.ttf → iconfont.1792139440389.ttf} +0 -0
  88. /package/lib/icon/style/{iconfont.1792115566662.woff → iconfont.1792139440389.woff} +0 -0
  89. /package/lib/icon/style/{iconfont.1792115566662.woff2 → iconfont.1792139440389.woff2} +0 -0
  90. /package/lib/{iconfont.1792115566662.ttf → iconfont.1792139440389.ttf} +0 -0
  91. /package/lib/{iconfont.1792115566662.woff → iconfont.1792139440389.woff} +0 -0
  92. /package/lib/{iconfont.1792115566662.woff2 → iconfont.1792139440389.woff2} +0 -0
@@ -88,7 +88,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
88
88
  const $xeParentTabs = (0, _vue.inject)('$xeTabs', null);
89
89
  const {
90
90
  computeSize
91
- } = (0, _ui.useSize)(props);
91
+ } = _ui.useFns.useSize(props);
92
+ const {
93
+ computeIsVScrollbar
94
+ } = _ui.useFns.useVScrollbar(props);
92
95
  const refElem = (0, _vue.ref)();
93
96
  const refHeadWrapperElem = (0, _vue.ref)();
94
97
  const refHeadPrevElem = (0, _vue.ref)();
@@ -865,9 +868,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
865
868
  })) : renderEmptyElement($xeTabs)]);
866
869
  };
867
870
  const renderTabPane = item => {
868
- const {
869
- useScrollbar
870
- } = props;
871
871
  const {
872
872
  initNames,
873
873
  activeName
@@ -878,8 +878,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
878
878
  } = item;
879
879
  const defaultSlot = slots ? slots.default : null;
880
880
  const scrollbarProps = computeScrollbarProps.value;
881
+ const isVScrollbar = computeIsVScrollbar.value;
881
882
  if (name && initNames.includes(name)) {
882
- return useScrollbar ? (0, _vue.h)(_scrollbar.default, Object.assign({
883
+ return isVScrollbar ? (0, _vue.h)(_scrollbar.default, Object.assign({
883
884
  key: `${name}`,
884
885
  class: ['vxe-tabs-pane--scrollbar-item', {
885
886
  'is--visible': activeName === name
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_ui=require("../../ui"),_vn=require("../../ui/src/vn"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_log=require("../../ui/src/log"),_xeUtils=_interopRequireDefault(require("xe-utils")),_loading=_interopRequireDefault(require("../../loading")),_scrollbar=_interopRequireDefault(require("../../scrollbar"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{baseUtils,createEvent,getConfig,getIcon,globalEvents,permission,renderEmptyElement}=_ui.VxeUI,getDefVal=baseUtils.getDefVal,{warnLog,errLog}=(0,_log.createComponentLog)("tabs"),scrollbarOffsetSize=20;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTabs",props:{modelValue:[String,Number,Boolean],options:Array,width:[String,Number],height:[String,Number],destroyOnClose:{type:Boolean,default:()=>getConfig().tabs.destroyOnClose},titleWidth:[String,Number],titleAlign:[String,Number],type:{type:String,default:()=>getConfig().tabs.type},position:{type:String,default:()=>getConfig().tabs.position},showClose:Boolean,showBody:{type:Boolean,default:!0},padding:{type:Boolean,default:()=>getConfig().tabs.padding},trigger:String,beforeChangeMethod:Function,closeConfig:Object,refreshConfig:Object,size:{type:String,default:()=>getConfig().tabs.size||getConfig().size},useScrollbar:{type:Boolean,default:()=>getDefVal(getConfig().tabs.useScrollbar,getConfig().useScrollbar)},scrollbarConfig:Object,beforeCloseMethod:Function},emits:["update:modelValue","change","tab-change","tab-change-fail","tab-close","tab-close-fail","tab-click","tab-load"],setup(d,e){let{slots:S,emit:l}=e;var E=_xeUtils.default.uniqueId();let t=(0,_vue.inject)("$xeTabs",null),h=(0,_ui.useSize)(d).computeSize,c=(0,_vue.ref)(),M=(0,_vue.ref)(),u=(0,_vue.ref)(),v=(0,_vue.ref)(),O=(0,_vue.reactive)({staticTabs:[],activeName:null,initNames:[],lintLeft:0,lintTop:0,lintWidth:0,lintHeight:0,scrollbarWidth:0,scrollbarHeight:0,isTabOver:!1,resizeFlag:1,cacheTabMaps:{}}),m={slTimeout:void 0},w={refElem:c},B=(0,_vue.computed)(()=>{var e=d.type;return e||"default"}),L=(0,_vue.computed)(()=>{var e=d.position;return e||"top"}),H=(0,_vue.computed)(()=>{var e=L.value;return"left"===e||"right"===e}),U=(0,_vue.computed)(()=>{var{lintLeft:e,lintTop:t,lintWidth:a,lintHeight:l}=O;return H.value?{top:t+"px",height:l+"px"}:{left:e+"px",width:a+"px"}}),q=(0,_vue.computed)(()=>{var{width:e,height:t}=d,a={};return e&&(a.width=(0,_dom.toCssUnit)(e)),t&&(a.height="auto"===t?"100%":(0,_dom.toCssUnit)(t)),a}),z=(0,_vue.computed)(()=>Object.assign({},getConfig().tabs.closeConfig,d.closeConfig)),A=(0,_vue.computed)(()=>Object.assign({},getConfig().tabs.refreshConfig,d.refreshConfig)),b=(0,_vue.computed)(()=>{var e=d.options;return(e||[]).filter(e=>a(e))}),_=(0,_vue.computed)(()=>{var e=O.staticTabs;return e.filter(e=>a(e))});var V=(0,_vue.computed)(()=>t?t.reactData.resizeFlag:null);let F=(0,_vue.computed)(()=>Object.assign({},getConfig().tabs.scrollbarConfig,d.scrollbarConfig)),R=(0,_vue.computed)(()=>{var e=F.value,{viewClassName:t,viewInnerClassName:a}=e;return{width:e.width,height:e.height,autoHide:e.autoHide,visible:e.visible,xConfig:e.xConfig,yConfig:e.yConfig,className:e.className,viewAttrs:e.viewAttrs,viewClassName:"vxe-tabs-pane--scrollbar-item-view"+(t?" "+t:""),viewInnerClassName:"vxe-tabs-pane--scrollbar-item-inner"+(t?" "+a:"")}}),D={},W={xID:E,props:d,context:e,reactData:O,getRefMaps:()=>w,getComputeMaps:()=>D},a=e=>{e=e.permissionCode;return!(e&&!permission.checkVisible(e))},k=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=S[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],I=()=>{var e,t,a,l,i,s=H.value,r=M.value,n=u.value,o=v.value;r&&({scrollLeft:r,scrollTop:e,clientWidth:t,clientHeight:a,scrollWidth:l,scrollHeight:i}=r,n&&(0<(s?e:r)?(0,_dom.addClass):(0,_dom.removeClass))(n,"scrolling--middle"),o)&&((s?a<i-Math.ceil(e):t<l-Math.ceil(r))?(0,_dom.addClass):(0,_dom.removeClass))(o,"scrolling--middle")},f=()=>{var e=()=>{let t=O.activeName;var e,a,l,i,s,r=B.value,n=b.value,o=_.value,u=M.value,v=H.value;let c=0,d=0,h=0,m=0,f=0,p=0,g=!1;u&&(o=_xeUtils.default.findIndexOf(o.length?o:n,e=>e.name===t),{children:n,offsetWidth:u,scrollWidth:e,offsetHeight:l,scrollHeight:i,clientWidth:a,clientHeight:s}=u,f=u-a,p=l-s,v?(g=i!==s,-1<o&&(u=n[o])&&(l=u.clientHeight,v=u.clientWidth,m="card"===r?(c=v,d=l,u.offsetTop):"border-card"===r?(c=v,d=l,u.offsetTop-1):(d=Math.max(4,Math.floor(.6*l)),u.offsetTop+Math.floor((l-d)/2)))):(g=e!==a,-1<o&&(i=n[o])&&(s=i.clientWidth,h="card"===r?(c=s+1,i.offsetLeft):"border-card"===r?(c=s,i.offsetLeft-1):(c=Math.max(4,Math.floor(.6*s)),i.offsetLeft+Math.floor((s-c)/2))))),O.scrollbarWidth=f,O.scrollbarHeight=p,O.lintLeft=h,O.lintTop=m,O.lintWidth=c,O.lintHeight=d,O.isTabOver=g,I()};e(),(0,_vue.nextTick)(e)},p=(e,t,a)=>{l(e,createEvent(a,{$tabs:W},t))},n=e=>{l("update:modelValue",e)},o=(e,t)=>{var a=O.initNames;return!(!e||a.includes(e)||(p("tab-load",{name:e},t),a.push(e),0))},i=e=>{let l=null,i={};if(e&&e.length){let a=!1;l=d.modelValue,e.forEach(e=>{var{name:e,preload:t}=e||{};e&&(i[""+e]={loading:!1},l===e&&(a=!0),t)&&o(e,null)}),a||(l=e[0].name,o(l,null),n(l))}O.activeName=l,O.cacheTabMaps=i},j=(t,a)=>{var e=d.trigger,l=d.beforeChangeMethod||getConfig().tabs.beforeChangeMethod;let i=O.activeName,s=a.name,r=s;p("tab-click",{name:s},t),"manual"!==e&&s!==i&&Promise.resolve(!l||l({$tabs:W,name:s,oldName:i,newName:s,option:a})).then(e=>{e?(O.activeName=s,n(r),o(s,t),p("change",{value:r,name:s,oldName:i,newName:s,option:a},t),p("tab-change",{value:r,name:s,oldName:i,newName:s,option:a},t)):p("tab-change-fail",{value:r,name:s,oldName:i,newName:s,option:a},t)}).catch(()=>{p("tab-change-fail",{value:r,name:s,oldName:i,newName:s,option:a},t)})},P=(e,t)=>{e.stopPropagation();var{activeName:e,cacheTabMaps:a}=O,l=t.name,i=A.value.queryMethod;let s=l?a[""+l]:null;s&&(i?s.loading||(s.loading=!0,Promise.resolve(i({$tabs:W,value:e,name:l,option:t})).finally(()=>{s.loading=!1})):errLog("vxe.error.notFunc",["refresh-config.queryMethod"]))},$=(t,e,a,l)=>{t.stopPropagation();var i=O.activeName,s=z.value.beforeMethod||d.beforeCloseMethod||getConfig().tabs.beforeCloseMethod;let r=e.name,n=i,o=n;i===r&&(i=a<l.length-1?l[a+1]:l[a-1],o=i?i.name:null),Promise.resolve(!s||s({$tabs:W,value:n,name:r,nextName:o,option:e})).then(e=>{e?p("tab-close",{value:n,name:r,nextName:o},t):p("tab-close-fail",{value:n,name:r,nextName:o},t)}).catch(()=>{p("tab-close-fail",{value:n,name:r,nextName:o},t)})},G=(n,e)=>{var t=m.slTimeout;let o=H.value,u=o?0:e,v=o?e:0,c=6,d=35,h=(t&&(clearTimeout(t),m.slTimeout=void 0),()=>{var e,t,a,l,i,s,r=M.value;0<c&&(c--,r)&&({clientWidth:e,clientHeight:t,scrollWidth:a,scrollHeight:l,scrollLeft:i,scrollTop:s}=r,o?(v=Math.floor(v/2),0<n?t+s<l&&(r.scrollTop+=v,d-=4,m.slTimeout=setTimeout(h,d)):0<s&&(r.scrollTop-=v,d-=4,m.slTimeout=setTimeout(h,d))):(u=Math.floor(u/2),0<n?e+i<a&&(r.scrollLeft+=u,d-=4,m.slTimeout=setTimeout(h,d)):0<i&&(r.scrollLeft-=u,d-=4,m.slTimeout=setTimeout(h,d))),f())});h()},s=e=>{var t,a=H.value,l=M.value;l&&({clientWidth:l,clientHeight:t}=l,a=Math.floor(.75*(a?t:l)),G(e,a))},J=()=>{s(-1)},K=()=>{s(1)},r=n=>{let o=b.value,u=_.value,v=H.value;return(0,_vue.nextTick)().then(()=>{var e,t,a,l,i,s,r=M.value;r&&(-1<(l=_xeUtils.default.findIndexOf(u.length?u:o,e=>e.name===n))&&({scrollLeft:e,scrollTop:s,clientWidth:t,clientHeight:i,children:a}=r,a=a[l])&&(v?(0<(i=(l=a.offsetTop)+a.clientHeight-(s+i))&&(r.scrollTop+=i),l<s&&(r.scrollTop=l)):(0<(s=(i=a.offsetLeft)+a.clientWidth-(e+t))&&(r.scrollLeft+=s),i<e&&(r.scrollLeft=i))),f())})},g=t=>{let a=O.activeName;var l=b.value,i=_.value,i=i.length?i:l,l=_xeUtils.default.findIndexOf(i,e=>e.name===a);if(-1<l){let e=null;t?l<i.length-1&&(e=i[l+1]):0<l&&(e=i[l-1]),e&&(i=t=e.name,O.activeName=t,n(i),o(t,null))}return(0,_vue.nextTick)()},x={dispatchEvent:p,scrollToTab:r,prev(){return g(!1)},next(){return g(!0)},prevTab(){return warnLog("vxe.error.delFunc",["prevTab","prev"]),x.prev()},nextTab(){return warnLog("vxe.error.delFunc",["nextTab","next"]),x.next()}};Object.assign(W,x,{});let T=h=>{let{titleWidth:m,titleAlign:f,showClose:p,closeConfig:g,refreshConfig:b}=d,{activeName:_,scrollbarWidth:e,scrollbarHeight:t,isTabOver:a,cacheTabMaps:x}=O,T=B.value,C=L.value;var l=H.value,i=U.value,s=S.tabPrefix||S["tab-prefix"]||S.prefix,r=S.tabSuffix||S["tab-suffix"]||S.suffix||S.extra;let y=z.value,N=y.visibleMethod,E=A.value,w=E.visibleMethod;return(0,_vue.h)("div",{key:"th",class:["vxe-tabs-header","type--"+T,"pos--"+C]},[s?(0,_vue.h)("div",{class:["vxe-tabs-header--prefix","type--"+T,"pos--"+C]},k(s,{name:_})):renderEmptyElement(W),a?(0,_vue.h)("div",{ref:u,class:["vxe-tabs-header--bar vxe-tabs-header--prev-bar","type--"+T,"pos--"+C],onClick:J},[(0,_vue.h)("span",{class:l?getIcon().TABS_TAB_BUTTON_TOP:getIcon().TABS_TAB_BUTTON_LEFT})]):renderEmptyElement(W),(0,_vue.h)("div",{class:["vxe-tabs-header--wrapper","type--"+T,"pos--"+C]},[(0,_vue.h)("div",{ref:M,class:"vxe-tabs-header--item-wrapper",style:l?{marginRight:`-${e+scrollbarOffsetSize}px`,paddingRight:scrollbarOffsetSize+"px"}:{marginBottom:`-${t+scrollbarOffsetSize}px`,paddingBottom:scrollbarOffsetSize+"px"},onScroll:I},h.map((t,a)=>{var{title:e,titleWidth:l,titleAlign:i,icon:s,name:r}=t,n=t.slots||{},o=n.title||n.tab,u=n.titlePrefix||n["title-prefix"],n=n.titleSuffix||n["title-suffix"],l=l||m,i=i||f,v={$tabs:W,value:_,name:r,option:t},c=_===r,d=r?x[""+r]:null,d=!!d&&d.loading;return(0,_vue.h)("div",{key:""+r,class:["vxe-tabs-header--item","type--"+T,"pos--"+C,i?"align--"+i:"",{"is--active":c}],style:l?{width:(0,_dom.toCssUnit)(l)}:void 0,onClick(e){j(e,t)}},[(0,_vue.h)("div",{class:"vxe-tabs-header--item-inner"},[(0,_vue.h)("div",{class:"vxe-tabs-header--item-content"},[s?(0,_vue.h)("span",{class:"vxe-tabs-header--item-icon"},[(0,_vue.h)("i",{class:s})]):renderEmptyElement(W),u?(0,_vue.h)("span",{class:"vxe-tabs-header--item-prefix"},k(u,{name:r,title:e})):renderEmptyElement(W),(0,_vue.h)("span",{class:"vxe-tabs-header--item-name"},o?k(o,{name:r,title:e}):""+e),n?(0,_vue.h)("span",{class:"vxe-tabs-header--item-suffix"},k(n,{name:r,title:e})):renderEmptyElement(W)]),!(0,_utils.isEnableConf)(b)&&!E.enabled||w&&!w(v)?renderEmptyElement(W):(0,_vue.h)("div",{class:["vxe-tabs-header--refresh-btn",{"is--active":c,"is--loading":d,"is--disabled":d}],onClick(e){P(e,t)}},[(0,_vue.h)("i",{class:d?getIcon().TABS_TAB_REFRESH_LOADING:getIcon().TABS_TAB_REFRESH})]),!(p||(0,_utils.isEnableConf)(g)||y.enabled)||N&&!N(v)?renderEmptyElement(W):(0,_vue.h)("div",{class:["vxe-tabs-header--close-btn",{"is--active":c}],onClick(e){$(e,t,a,h)}},[(0,_vue.h)("i",{class:getIcon().TABS_TAB_CLOSE})])])])}).concat([(0,_vue.h)("span",{key:"line",class:["vxe-tabs-header--active-line","type--"+T,"pos--"+C],style:i})]))]),a?(0,_vue.h)("div",{ref:v,class:["vxe-tabs-header--bar vxe-tabs-header--next-bar","type--"+T,"pos--"+C],onClick:K},[(0,_vue.h)("span",{class:l?getIcon().TABS_TAB_BUTTON_BOTTOM:getIcon().TABS_TAB_BUTTON_RIGHT})]):renderEmptyElement(W),r?(0,_vue.h)("div",{class:["vxe-tabs-header--suffix","type--"+T,"pos--"+C]},k(r,{name:_})):renderEmptyElement(W)])},C=e=>{var t=d.useScrollbar,{initNames:a,activeName:l}=O;let{name:i,slots:s}=e,r=s?s.default:null;e=R.value;return i&&a.includes(i)?t?(0,_vue.h)(_scrollbar.default,Object.assign({key:""+i,class:["vxe-tabs-pane--scrollbar-item",{"is--visible":l===i}]},e),{default:()=>r?k(r,{name:i}):[]}):(0,_vue.h)("div",{key:""+i,class:["vxe-tabs-pane--item",{"is--visible":l===i}]},r?k(r,{name:i}):[]):renderEmptyElement(W)},Q=e=>{var t=d.destroyOnClose;let a=O.activeName;return t?[(t=e.find(e=>e.name===a))?C(t):renderEmptyElement(W)]:e.map(e=>C(e))},X=e=>{var{height:t,padding:a,showBody:l}=d,{activeName:i,cacheTabMaps:s}=O,r=h.value,n=B.value,o=L.value,u=A.value.showLoading,v=S.header,c=S.footer;return l?(s=!!(s=i?s[""+i]:null)&&s.loading,i={name:i},(0,_vue.h)("div",{key:"tb",class:["vxe-tabs-pane--wrapper","type--"+n,"pos--"+o,{"is--content":l}]},[v?(0,_vue.h)("div",{class:"vxe-tabs-pane--header"},k(v,i)):renderEmptyElement(W),(0,_vue.h)("div",{class:["vxe-tabs-pane--body","type--"+n,"pos--"+o,{["size--"+r]:r,"is--padding":a,"is--height":t}]},Q(e)),c?(0,_vue.h)("div",{class:"vxe-tabs-pane--footer"},k(c,i)):renderEmptyElement(W),u&&s?renderEmptyElement(W):(0,_vue.h)(_loading.default,{class:"vxe-tabs--loading",modelValue:s})])):renderEmptyElement(W)};(0,_vue.watch)(()=>d.position,()=>{O.resizeFlag++}),(0,_vue.watch)(()=>d.modelValue,e=>{o(e,null),O.activeName=e}),(0,_vue.watch)(()=>O.activeName,e=>{r(e)});let y=(0,_vue.ref)(0),N=((0,_vue.watch)(()=>d.options?d.options.length:-1,()=>{y.value++}),(0,_vue.watch)(()=>d.options,()=>{y.value++}),(0,_vue.watch)(y,()=>{i(d.options),O.resizeFlag++}),(0,_vue.ref)(0));return(0,_vue.watch)(()=>O.staticTabs?O.staticTabs.length:-1,()=>{N.value++}),(0,_vue.watch)(()=>O.staticTabs,()=>{N.value++}),(0,_vue.watch)(N,()=>{i(O.staticTabs),O.resizeFlag++}),(0,_vue.watch)(V,()=>{O.resizeFlag++}),(0,_vue.watch)(()=>O.resizeFlag,()=>{(0,_vue.nextTick)(()=>{f()})}),(0,_vue.onMounted)(()=>{f(),globalEvents.on(W,"resize",f)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(W,"resize")}),(0,_vue.provide)("$xeTabs",W),o(d.modelValue,null),i(O.staticTabs.length?O.staticTabs:d.options),W.renderVN=()=>{var{height:e,padding:t,trigger:a}=d,l=O.activeName,i=h.value,s=b.value,r=_.value,n=B.value,o=L.value,u=q.value,v=S.default,r=v?r:s,s=[(0,_vue.h)("div",{key:"ts",class:"vxe-tabs-slots"},v?v({name:l}):[])];return"right"===o||"bottom"===o?s.push(X(r),T(r)):s.push(T(r),X(r)),(0,_vue.h)("div",{ref:c,class:["vxe-tabs","pos--"+o,"vxe-tabs--"+n,"trigger--"+("manual"===a?"trigger":"default"),{["size--"+i]:i,"is--padding":t,"is--height":e}],style:u},s)},W},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_ui=require("../../ui"),_vn=require("../../ui/src/vn"),_dom=require("../../ui/src/dom"),_utils=require("../../ui/src/utils"),_log=require("../../ui/src/log"),_xeUtils=_interopRequireDefault(require("xe-utils")),_loading=_interopRequireDefault(require("../../loading")),_scrollbar=_interopRequireDefault(require("../../scrollbar"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{baseUtils,createEvent,getConfig,getIcon,globalEvents,permission,renderEmptyElement}=_ui.VxeUI,getDefVal=baseUtils.getDefVal,{warnLog,errLog}=(0,_log.createComponentLog)("tabs"),scrollbarOffsetSize=20;var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTabs",props:{modelValue:[String,Number,Boolean],options:Array,width:[String,Number],height:[String,Number],destroyOnClose:{type:Boolean,default:()=>getConfig().tabs.destroyOnClose},titleWidth:[String,Number],titleAlign:[String,Number],type:{type:String,default:()=>getConfig().tabs.type},position:{type:String,default:()=>getConfig().tabs.position},showClose:Boolean,showBody:{type:Boolean,default:!0},padding:{type:Boolean,default:()=>getConfig().tabs.padding},trigger:String,beforeChangeMethod:Function,closeConfig:Object,refreshConfig:Object,size:{type:String,default:()=>getConfig().tabs.size||getConfig().size},useScrollbar:{type:Boolean,default:()=>getDefVal(getConfig().tabs.useScrollbar,getConfig().useScrollbar)},scrollbarConfig:Object,beforeCloseMethod:Function},emits:["update:modelValue","change","tab-change","tab-change-fail","tab-close","tab-close-fail","tab-click","tab-load"],setup(d,e){let{slots:S,emit:l}=e;var E=_xeUtils.default.uniqueId();let t=(0,_vue.inject)("$xeTabs",null),h=_ui.useFns.useSize(d).computeSize,w=_ui.useFns.useVScrollbar(d).computeIsVScrollbar,c=(0,_vue.ref)(),M=(0,_vue.ref)(),u=(0,_vue.ref)(),v=(0,_vue.ref)(),O=(0,_vue.reactive)({staticTabs:[],activeName:null,initNames:[],lintLeft:0,lintTop:0,lintWidth:0,lintHeight:0,scrollbarWidth:0,scrollbarHeight:0,isTabOver:!1,resizeFlag:1,cacheTabMaps:{}}),m={slTimeout:void 0},V={refElem:c},B=(0,_vue.computed)(()=>{var e=d.type;return e||"default"}),L=(0,_vue.computed)(()=>{var e=d.position;return e||"top"}),H=(0,_vue.computed)(()=>{var e=L.value;return"left"===e||"right"===e}),F=(0,_vue.computed)(()=>{var{lintLeft:e,lintTop:t,lintWidth:a,lintHeight:l}=O;return H.value?{top:t+"px",height:l+"px"}:{left:e+"px",width:a+"px"}}),U=(0,_vue.computed)(()=>{var{width:e,height:t}=d,a={};return e&&(a.width=(0,_dom.toCssUnit)(e)),t&&(a.height="auto"===t?"100%":(0,_dom.toCssUnit)(t)),a}),z=(0,_vue.computed)(()=>Object.assign({},getConfig().tabs.closeConfig,d.closeConfig)),A=(0,_vue.computed)(()=>Object.assign({},getConfig().tabs.refreshConfig,d.refreshConfig)),b=(0,_vue.computed)(()=>{var e=d.options;return(e||[]).filter(e=>a(e))}),_=(0,_vue.computed)(()=>{var e=O.staticTabs;return e.filter(e=>a(e))});var q=(0,_vue.computed)(()=>t?t.reactData.resizeFlag:null);let R=(0,_vue.computed)(()=>Object.assign({},getConfig().tabs.scrollbarConfig,d.scrollbarConfig)),D=(0,_vue.computed)(()=>{var e=R.value,{viewClassName:t,viewInnerClassName:a}=e;return{width:e.width,height:e.height,autoHide:e.autoHide,visible:e.visible,xConfig:e.xConfig,yConfig:e.yConfig,className:e.className,viewAttrs:e.viewAttrs,viewClassName:"vxe-tabs-pane--scrollbar-item-view"+(t?" "+t:""),viewInnerClassName:"vxe-tabs-pane--scrollbar-item-inner"+(t?" "+a:"")}}),j={},W={xID:E,props:d,context:e,reactData:O,getRefMaps:()=>V,getComputeMaps:()=>j},a=e=>{e=e.permissionCode;return!(e&&!permission.checkVisible(e))},k=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=S[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],I=()=>{var e,t,a,l,i,s=H.value,r=M.value,n=u.value,o=v.value;r&&({scrollLeft:r,scrollTop:e,clientWidth:t,clientHeight:a,scrollWidth:l,scrollHeight:i}=r,n&&(0<(s?e:r)?(0,_dom.addClass):(0,_dom.removeClass))(n,"scrolling--middle"),o)&&((s?a<i-Math.ceil(e):t<l-Math.ceil(r))?(0,_dom.addClass):(0,_dom.removeClass))(o,"scrolling--middle")},f=()=>{var e=()=>{let t=O.activeName;var e,a,l,i,s,r=B.value,n=b.value,o=_.value,u=M.value,v=H.value;let c=0,d=0,h=0,m=0,f=0,p=0,g=!1;u&&(o=_xeUtils.default.findIndexOf(o.length?o:n,e=>e.name===t),{children:n,offsetWidth:u,scrollWidth:e,offsetHeight:l,scrollHeight:i,clientWidth:a,clientHeight:s}=u,f=u-a,p=l-s,v?(g=i!==s,-1<o&&(u=n[o])&&(l=u.clientHeight,v=u.clientWidth,m="card"===r?(c=v,d=l,u.offsetTop):"border-card"===r?(c=v,d=l,u.offsetTop-1):(d=Math.max(4,Math.floor(.6*l)),u.offsetTop+Math.floor((l-d)/2)))):(g=e!==a,-1<o&&(i=n[o])&&(s=i.clientWidth,h="card"===r?(c=s+1,i.offsetLeft):"border-card"===r?(c=s,i.offsetLeft-1):(c=Math.max(4,Math.floor(.6*s)),i.offsetLeft+Math.floor((s-c)/2))))),O.scrollbarWidth=f,O.scrollbarHeight=p,O.lintLeft=h,O.lintTop=m,O.lintWidth=c,O.lintHeight=d,O.isTabOver=g,I()};e(),(0,_vue.nextTick)(e)},p=(e,t,a)=>{l(e,createEvent(a,{$tabs:W},t))},n=e=>{l("update:modelValue",e)},o=(e,t)=>{var a=O.initNames;return!(!e||a.includes(e)||(p("tab-load",{name:e},t),a.push(e),0))},i=e=>{let l=null,i={};if(e&&e.length){let a=!1;l=d.modelValue,e.forEach(e=>{var{name:e,preload:t}=e||{};e&&(i[""+e]={loading:!1},l===e&&(a=!0),t)&&o(e,null)}),a||(l=e[0].name,o(l,null),n(l))}O.activeName=l,O.cacheTabMaps=i},P=(t,a)=>{var e=d.trigger,l=d.beforeChangeMethod||getConfig().tabs.beforeChangeMethod;let i=O.activeName,s=a.name,r=s;p("tab-click",{name:s},t),"manual"!==e&&s!==i&&Promise.resolve(!l||l({$tabs:W,name:s,oldName:i,newName:s,option:a})).then(e=>{e?(O.activeName=s,n(r),o(s,t),p("change",{value:r,name:s,oldName:i,newName:s,option:a},t),p("tab-change",{value:r,name:s,oldName:i,newName:s,option:a},t)):p("tab-change-fail",{value:r,name:s,oldName:i,newName:s,option:a},t)}).catch(()=>{p("tab-change-fail",{value:r,name:s,oldName:i,newName:s,option:a},t)})},$=(e,t)=>{e.stopPropagation();var{activeName:e,cacheTabMaps:a}=O,l=t.name,i=A.value.queryMethod;let s=l?a[""+l]:null;s&&(i?s.loading||(s.loading=!0,Promise.resolve(i({$tabs:W,value:e,name:l,option:t})).finally(()=>{s.loading=!1})):errLog("vxe.error.notFunc",["refresh-config.queryMethod"]))},G=(t,e,a,l)=>{t.stopPropagation();var i=O.activeName,s=z.value.beforeMethod||d.beforeCloseMethod||getConfig().tabs.beforeCloseMethod;let r=e.name,n=i,o=n;i===r&&(i=a<l.length-1?l[a+1]:l[a-1],o=i?i.name:null),Promise.resolve(!s||s({$tabs:W,value:n,name:r,nextName:o,option:e})).then(e=>{e?p("tab-close",{value:n,name:r,nextName:o},t):p("tab-close-fail",{value:n,name:r,nextName:o},t)}).catch(()=>{p("tab-close-fail",{value:n,name:r,nextName:o},t)})},J=(n,e)=>{var t=m.slTimeout;let o=H.value,u=o?0:e,v=o?e:0,c=6,d=35,h=(t&&(clearTimeout(t),m.slTimeout=void 0),()=>{var e,t,a,l,i,s,r=M.value;0<c&&(c--,r)&&({clientWidth:e,clientHeight:t,scrollWidth:a,scrollHeight:l,scrollLeft:i,scrollTop:s}=r,o?(v=Math.floor(v/2),0<n?t+s<l&&(r.scrollTop+=v,d-=4,m.slTimeout=setTimeout(h,d)):0<s&&(r.scrollTop-=v,d-=4,m.slTimeout=setTimeout(h,d))):(u=Math.floor(u/2),0<n?e+i<a&&(r.scrollLeft+=u,d-=4,m.slTimeout=setTimeout(h,d)):0<i&&(r.scrollLeft-=u,d-=4,m.slTimeout=setTimeout(h,d))),f())});h()},s=e=>{var t,a=H.value,l=M.value;l&&({clientWidth:l,clientHeight:t}=l,a=Math.floor(.75*(a?t:l)),J(e,a))},K=()=>{s(-1)},Q=()=>{s(1)},r=n=>{let o=b.value,u=_.value,v=H.value;return(0,_vue.nextTick)().then(()=>{var e,t,a,l,i,s,r=M.value;r&&(-1<(l=_xeUtils.default.findIndexOf(u.length?u:o,e=>e.name===n))&&({scrollLeft:e,scrollTop:s,clientWidth:t,clientHeight:i,children:a}=r,a=a[l])&&(v?(0<(i=(l=a.offsetTop)+a.clientHeight-(s+i))&&(r.scrollTop+=i),l<s&&(r.scrollTop=l)):(0<(s=(i=a.offsetLeft)+a.clientWidth-(e+t))&&(r.scrollLeft+=s),i<e&&(r.scrollLeft=i))),f())})},g=t=>{let a=O.activeName;var l=b.value,i=_.value,i=i.length?i:l,l=_xeUtils.default.findIndexOf(i,e=>e.name===a);if(-1<l){let e=null;t?l<i.length-1&&(e=i[l+1]):0<l&&(e=i[l-1]),e&&(i=t=e.name,O.activeName=t,n(i),o(t,null))}return(0,_vue.nextTick)()},x={dispatchEvent:p,scrollToTab:r,prev(){return g(!1)},next(){return g(!0)},prevTab(){return warnLog("vxe.error.delFunc",["prevTab","prev"]),x.prev()},nextTab(){return warnLog("vxe.error.delFunc",["nextTab","next"]),x.next()}};Object.assign(W,x,{});let T=h=>{let{titleWidth:m,titleAlign:f,showClose:p,closeConfig:g,refreshConfig:b}=d,{activeName:_,scrollbarWidth:e,scrollbarHeight:t,isTabOver:a,cacheTabMaps:x}=O,T=B.value,C=L.value;var l=H.value,i=F.value,s=S.tabPrefix||S["tab-prefix"]||S.prefix,r=S.tabSuffix||S["tab-suffix"]||S.suffix||S.extra;let y=z.value,N=y.visibleMethod,E=A.value,w=E.visibleMethod;return(0,_vue.h)("div",{key:"th",class:["vxe-tabs-header","type--"+T,"pos--"+C]},[s?(0,_vue.h)("div",{class:["vxe-tabs-header--prefix","type--"+T,"pos--"+C]},k(s,{name:_})):renderEmptyElement(W),a?(0,_vue.h)("div",{ref:u,class:["vxe-tabs-header--bar vxe-tabs-header--prev-bar","type--"+T,"pos--"+C],onClick:K},[(0,_vue.h)("span",{class:l?getIcon().TABS_TAB_BUTTON_TOP:getIcon().TABS_TAB_BUTTON_LEFT})]):renderEmptyElement(W),(0,_vue.h)("div",{class:["vxe-tabs-header--wrapper","type--"+T,"pos--"+C]},[(0,_vue.h)("div",{ref:M,class:"vxe-tabs-header--item-wrapper",style:l?{marginRight:`-${e+scrollbarOffsetSize}px`,paddingRight:scrollbarOffsetSize+"px"}:{marginBottom:`-${t+scrollbarOffsetSize}px`,paddingBottom:scrollbarOffsetSize+"px"},onScroll:I},h.map((t,a)=>{var{title:e,titleWidth:l,titleAlign:i,icon:s,name:r}=t,n=t.slots||{},o=n.title||n.tab,u=n.titlePrefix||n["title-prefix"],n=n.titleSuffix||n["title-suffix"],l=l||m,i=i||f,v={$tabs:W,value:_,name:r,option:t},c=_===r,d=r?x[""+r]:null,d=!!d&&d.loading;return(0,_vue.h)("div",{key:""+r,class:["vxe-tabs-header--item","type--"+T,"pos--"+C,i?"align--"+i:"",{"is--active":c}],style:l?{width:(0,_dom.toCssUnit)(l)}:void 0,onClick(e){P(e,t)}},[(0,_vue.h)("div",{class:"vxe-tabs-header--item-inner"},[(0,_vue.h)("div",{class:"vxe-tabs-header--item-content"},[s?(0,_vue.h)("span",{class:"vxe-tabs-header--item-icon"},[(0,_vue.h)("i",{class:s})]):renderEmptyElement(W),u?(0,_vue.h)("span",{class:"vxe-tabs-header--item-prefix"},k(u,{name:r,title:e})):renderEmptyElement(W),(0,_vue.h)("span",{class:"vxe-tabs-header--item-name"},o?k(o,{name:r,title:e}):""+e),n?(0,_vue.h)("span",{class:"vxe-tabs-header--item-suffix"},k(n,{name:r,title:e})):renderEmptyElement(W)]),!(0,_utils.isEnableConf)(b)&&!E.enabled||w&&!w(v)?renderEmptyElement(W):(0,_vue.h)("div",{class:["vxe-tabs-header--refresh-btn",{"is--active":c,"is--loading":d,"is--disabled":d}],onClick(e){$(e,t)}},[(0,_vue.h)("i",{class:d?getIcon().TABS_TAB_REFRESH_LOADING:getIcon().TABS_TAB_REFRESH})]),!(p||(0,_utils.isEnableConf)(g)||y.enabled)||N&&!N(v)?renderEmptyElement(W):(0,_vue.h)("div",{class:["vxe-tabs-header--close-btn",{"is--active":c}],onClick(e){G(e,t,a,h)}},[(0,_vue.h)("i",{class:getIcon().TABS_TAB_CLOSE})])])])}).concat([(0,_vue.h)("span",{key:"line",class:["vxe-tabs-header--active-line","type--"+T,"pos--"+C],style:i})]))]),a?(0,_vue.h)("div",{ref:v,class:["vxe-tabs-header--bar vxe-tabs-header--next-bar","type--"+T,"pos--"+C],onClick:Q},[(0,_vue.h)("span",{class:l?getIcon().TABS_TAB_BUTTON_BOTTOM:getIcon().TABS_TAB_BUTTON_RIGHT})]):renderEmptyElement(W),r?(0,_vue.h)("div",{class:["vxe-tabs-header--suffix","type--"+T,"pos--"+C]},k(r,{name:_})):renderEmptyElement(W)])},C=e=>{var{initNames:t,activeName:a}=O;let{name:l,slots:i}=e,s=i?i.default:null;var e=D.value,r=w.value;return l&&t.includes(l)?r?(0,_vue.h)(_scrollbar.default,Object.assign({key:""+l,class:["vxe-tabs-pane--scrollbar-item",{"is--visible":a===l}]},e),{default:()=>s?k(s,{name:l}):[]}):(0,_vue.h)("div",{key:""+l,class:["vxe-tabs-pane--item",{"is--visible":a===l}]},s?k(s,{name:l}):[]):renderEmptyElement(W)},X=e=>{var t=d.destroyOnClose;let a=O.activeName;return t?[(t=e.find(e=>e.name===a))?C(t):renderEmptyElement(W)]:e.map(e=>C(e))},Y=e=>{var{height:t,padding:a,showBody:l}=d,{activeName:i,cacheTabMaps:s}=O,r=h.value,n=B.value,o=L.value,u=A.value.showLoading,v=S.header,c=S.footer;return l?(s=!!(s=i?s[""+i]:null)&&s.loading,i={name:i},(0,_vue.h)("div",{key:"tb",class:["vxe-tabs-pane--wrapper","type--"+n,"pos--"+o,{"is--content":l}]},[v?(0,_vue.h)("div",{class:"vxe-tabs-pane--header"},k(v,i)):renderEmptyElement(W),(0,_vue.h)("div",{class:["vxe-tabs-pane--body","type--"+n,"pos--"+o,{["size--"+r]:r,"is--padding":a,"is--height":t}]},X(e)),c?(0,_vue.h)("div",{class:"vxe-tabs-pane--footer"},k(c,i)):renderEmptyElement(W),u&&s?renderEmptyElement(W):(0,_vue.h)(_loading.default,{class:"vxe-tabs--loading",modelValue:s})])):renderEmptyElement(W)};(0,_vue.watch)(()=>d.position,()=>{O.resizeFlag++}),(0,_vue.watch)(()=>d.modelValue,e=>{o(e,null),O.activeName=e}),(0,_vue.watch)(()=>O.activeName,e=>{r(e)});let y=(0,_vue.ref)(0),N=((0,_vue.watch)(()=>d.options?d.options.length:-1,()=>{y.value++}),(0,_vue.watch)(()=>d.options,()=>{y.value++}),(0,_vue.watch)(y,()=>{i(d.options),O.resizeFlag++}),(0,_vue.ref)(0));return(0,_vue.watch)(()=>O.staticTabs?O.staticTabs.length:-1,()=>{N.value++}),(0,_vue.watch)(()=>O.staticTabs,()=>{N.value++}),(0,_vue.watch)(N,()=>{i(O.staticTabs),O.resizeFlag++}),(0,_vue.watch)(q,()=>{O.resizeFlag++}),(0,_vue.watch)(()=>O.resizeFlag,()=>{(0,_vue.nextTick)(()=>{f()})}),(0,_vue.onMounted)(()=>{f(),globalEvents.on(W,"resize",f)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(W,"resize")}),(0,_vue.provide)("$xeTabs",W),o(d.modelValue,null),i(O.staticTabs.length?O.staticTabs:d.options),W.renderVN=()=>{var{height:e,padding:t,trigger:a}=d,l=O.activeName,i=h.value,s=b.value,r=_.value,n=B.value,o=L.value,u=U.value,v=S.default,r=v?r:s,s=[(0,_vue.h)("div",{key:"ts",class:"vxe-tabs-slots"},v?v({name:l}):[])];return"right"===o||"bottom"===o?s.push(Y(r),T(r)):s.push(T(r),Y(r)),(0,_vue.h)("div",{ref:c,class:["vxe-tabs","pos--"+o,"vxe-tabs--"+n,"trigger--"+("manual"===a?"trigger":"default"),{["size--"+i]:i,"is--padding":t,"is--height":e}],style:u},s)},W},render(){return this.renderVN()}});
@@ -144,7 +144,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
144
144
  const xID = _xeUtils.default.uniqueId();
145
145
  const {
146
146
  computeSize
147
- } = (0, _ui.useSize)(props);
147
+ } = _ui.useFns.useSize(props);
148
+ const {
149
+ computeIsVScrollbar
150
+ } = _ui.useFns.useVScrollbar(props);
148
151
  const reactData = (0, _vue.reactive)(createReactData());
149
152
  const internalData = createInternalData();
150
153
  const refElem = (0, _vue.ref)();
@@ -435,7 +438,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
435
438
  return updateTipStyle().then(() => {
436
439
  return updateTipStyle();
437
440
  }).then(() => {
438
- return updateTipStyle();
441
+ setTimeout(() => {
442
+ updateTipStyle();
443
+ }, 15);
439
444
  });
440
445
  },
441
446
  isActived() {
@@ -462,7 +467,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
462
467
  Object.assign($xeTooltip, tooltipMethods, tooltipPrivateMethods);
463
468
  const renderContent = () => {
464
469
  const {
465
- useScrollbar,
466
470
  theme,
467
471
  useHtml,
468
472
  useHTML
@@ -470,6 +474,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
470
474
  const {
471
475
  tipContent
472
476
  } = reactData;
477
+ const isVScrollbar = computeIsVScrollbar.value;
473
478
  const wrapperStyle = computeWrapperStyle.value;
474
479
  const contentSlot = slots.content;
475
480
  const contVNs = [];
@@ -487,7 +492,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
487
492
  key: 'cd'
488
493
  }, `${tipContent}`));
489
494
  }
490
- if (useScrollbar) {
495
+ if (isVScrollbar) {
491
496
  return (0, _vue.h)(_scrollbar.default, {
492
497
  key: 5,
493
498
  ref: contentScrollbar,
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_scrollbar=_interopRequireDefault(require("../../scrollbar"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{baseUtils,getConfig,createEvent,globalEvents}=_ui.VxeUI,getDefVal=baseUtils.getDefVal;function createReactData(){return{target:null,isUpdate:!1,visible:!1,tipPos:null,tipContent:"",tipActive:!1,tipTarget:null,tipZindex:0,tipStore:{style:{},placement:"",arrowStyle:{}}}}function createInternalData(){return{}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTooltip",props:{modelValue:Boolean,size:{type:String,default:()=>getConfig().tooltip.size||getConfig().size},selector:[String,Element],trigger:{type:String,default:()=>getConfig().tooltip.trigger||"hover"},theme:{type:String,default:()=>getConfig().tooltip.theme||"dark"},content:{type:[String,Number],default:null},useHtml:{type:Boolean,default:()=>_xeUtils.default.isBoolean(getConfig().tooltip.useHtml)?getConfig().tooltip.useHtml:null},useHTML:{type:Boolean,default:()=>getConfig().tooltip.useHTML},zIndex:[String,Number],popupClassName:[String,Function],width:{type:[String,Number],default:()=>getConfig().tooltip.Width},height:{type:[String,Number],default:()=>getConfig().tooltip.height},minWidth:{type:[String,Number],default:()=>getConfig().tooltip.minWidth},minHeight:{type:[String,Number],default:()=>getConfig().tooltip.minHeight},maxWidth:{type:[String,Number],default:()=>getConfig().tooltip.maxWidth},maxHeight:{type:[String,Number],default:()=>getConfig().tooltip.maxHeight},placement:{type:String,default:()=>getConfig().tooltip.placement},defaultPlacement:{type:String,default:()=>getConfig().tooltip.defaultPlacement},isArrow:{type:Boolean,default:()=>getConfig().tooltip.isArrow},enterable:{type:Boolean,default:()=>getConfig().tooltip.enterable},enterDelay:{type:Number,default:()=>getConfig().tooltip.enterDelay},leaveDelay:{type:Number,default:()=>getConfig().tooltip.leaveDelay},appendTo:{type:[String,Function],default:()=>getConfig().tooltip.appendTo},useScrollbar:{type:Boolean,default:()=>getDefVal(getConfig().tooltip.useScrollbar,getConfig().useScrollbar)},scrollbarConfig:Object},emits:["update:modelValue","show","hide"],setup(m,e){let{slots:p,emit:i}=e;var t=_xeUtils.default.uniqueId();let d=(0,_ui.useSize)(m).computeSize,h=(0,_vue.reactive)(createReactData()),a=createInternalData(),_=(0,_vue.ref)(),c=(0,_vue.ref)(),v=(0,_vue.ref)(),g=(0,_vue.computed)(()=>{var{width:e,height:t,minHeight:l,minWidth:i,maxHeight:n,maxWidth:o}=m,a={};return e&&(a.width=(0,_dom.toCssUnit)(e)),t&&(a.height=(0,_dom.toCssUnit)(t)),i&&(a.minWidth=(0,_dom.toCssUnit)(i)),l&&(a.minHeight=(0,_dom.toCssUnit)(l)),o&&(a.maxWidth=(0,_dom.toCssUnit)(o)),n&&(a.maxHeight=(0,_dom.toCssUnit)(n)),a}),l={refElem:_},f={xID:t,props:m,context:e,reactData:h,internalData:a,getRefMaps:()=>l},r=(e,t,l)=>{i(e,createEvent(l,{$tooltip:f},t))},n=e=>{e!==h.visible&&(h.visible=e,h.isUpdate=!0,i("update:modelValue",e))},o=()=>{var e=m.zIndex;e?h.tipZindex=_xeUtils.default.toNumber(e):h.tipZindex<(0,_utils.getLastZIndex)()&&(h.tipZindex=(0,_utils.nextZIndex)())},u=()=>{h.visible?f.close():S(h.target||U(),m.content)},s=()=>{S(h.target||U(),m.content)},x=()=>{var{trigger:e,enterable:t,leaveDelay:l}=m;h.tipActive=!1,t&&"hover"===e?setTimeout(()=>{h.tipActive||f.close()},l):f.close()},y=()=>{h.tipActive=!0},b=()=>{var{trigger:e,enterable:t,leaveDelay:l}=m;h.tipActive=!1,t&&"hover"===e&&setTimeout(()=>{h.tipActive||f.close()},l)},C=()=>{var e=m.appendTo,t=h.tipStore,l=_.value;return l&&!l.parentNode&&(0,_dom.getPopupAppendElement)(e).appendChild(l),n(!0),o(),t.placement="top",t.style={width:"auto",left:0,top:0,zIndex:m.zIndex||h.tipZindex},t.arrowStyle={left:"50%"},f.updatePlacement().then(()=>f.updatePlacement())},w=()=>{a.showDelayTip=_xeUtils.default.debounce(()=>{h.tipActive&&C()},m.enterDelay,{leading:!1,trailing:!0})},S=(e,t,l)=>{var i=p.content;if((i||""!==t&&!_xeUtils.default.eqNull(t))&&e){var i=a.showDelayTip,{trigger:n,enterDelay:o}=m;if(h.tipPos=l?{x:l.clientX,y:l.clientY,oLeft:l.offsetX,oTop:l.offsetY}:null,h.tipActive=!0,h.tipTarget=e,h.tipContent=t,h.visible)return f.updatePlacement();if(!o||"hover"!==n)return e=C(),r("show",{},l||null),e;i&&i(),r("show",{},l||null)}return(0,_vue.nextTick)()},U=()=>{var e=m.selector;if(e){if(_xeUtils.default.isElement(e))return e;if(_xeUtils.default.isString(e))return document.querySelector(e)}return null},D=()=>{var{placement:l,defaultPlacement:i,appendTo:n,isArrow:o}=m,{tipTarget:a,tipStore:r,tipPos:u,tipZindex:s}=h,p=_.value;if(a&&p){var d=a.getBoundingClientRect(),c=a.offsetWidth,v=a.offsetHeight,g=p.offsetWidth,f=d.left;let e=0,t=0;u&&(u.oLeft||u.oTop)&&(e=f,t=d.top+v,o?e=e+Math.max(8,Math.min(c-8,u.oLeft))-g/2:(e=u.x+1,t=u.y+1));f=(0,_dom.updatePanelPlacement)(a,p,{defaultTop:t,defaultLeft:e,placement:l,defaultPlacement:i,appendTo:n,isMinWidth:!1,teleportTo:!0}),d=Object.assign(f.style,{zIndex:s});r.placement=f.placement,r.style=d,r.arrowStyle.left=f.arrowLeft?f.arrowLeft+"px":""}return(0,_vue.nextTick)()};t={dispatchEvent:r,openByEvent(e,t,l){return S(t||h.target||U(),l,e)},open(e,t){return S(e||h.target||U(),t)},close(){return h.tipPos=null,h.tipTarget=null,h.tipActive=!1,Object.assign(h.tipStore,{style:{},placement:"",arrowStyle:null}),n(!1),r("hide",{},null),(0,_vue.nextTick)()},toVisible(e,t){return S(e,t)},updatePlacement(){return D().then(()=>D()).then(()=>D())},isActived(){return h.tipActive},setActived(e){h.tipActive=!!e}};let T=e=>{e.stopPropagation()},N=()=>{h.visible&&f.updatePlacement()},E=()=>{f.close()};e={handleCloseEvent:x};Object.assign(f,t,e);return(0,_vue.watch)(()=>m.enterDelay,()=>{w()}),(0,_vue.watch)(()=>m.content,e=>{h.tipContent=e}),(0,_vue.watch)(()=>m.modelValue,e=>{h.isUpdate||(e?S(h.target||U(),m.content):f.close()),h.isUpdate=!1}),w(),(0,_vue.onMounted)(()=>{var e=c.value,e=(e&&(e=e.getViewElem())&&(e.addEventListener("wheel",T,{passive:!1}),a.scrollbarViewEl=e),v.value);e&&e.addEventListener("wheel",T,{passive:!1}),(0,_vue.nextTick)(()=>{var e,{trigger:t,content:i}=m;let n=_.value;if(n){let l=n.parentNode;l&&(h.tipContent=i,h.tipZindex=(0,_utils.nextZIndex)(),_xeUtils.default.arrayEach(n.children,(e,t)=>{t&&(l.insertBefore(e,n),h.target||(h.target=e))}),l.removeChild(n),e=h.target,e&&("hover"===t?(e.onmouseenter=s,e.onmouseleave=x):"click"===t&&(e.onclick=u)),m.modelValue)&&S(e||U(),i)}}),globalEvents.on(f,"blur",E),globalEvents.on(f,"scroll",N)}),(0,_vue.onBeforeUnmount)(()=>{var e=h.target,t=a.scrollbarViewEl,l=_.value,e=(e&&(e.onmouseenter=null,e.onmouseleave=null,e.onclick=null),v.value);e&&e.removeEventListener("wheel",T),t&&t.removeEventListener("wheel",T),l&&(e=l.parentNode)&&e.removeChild(l),globalEvents.off(f,"blur"),globalEvents.off(f,"scroll"),_xeUtils.default.assign(h,createReactData()),_xeUtils.default.assign(a,createInternalData())}),f.renderVN=()=>{var{popupClassName:e,theme:t,isArrow:l,enterable:i}=m,{tipActive:n,visible:o,tipStore:a}=h,r=p.default,u=d.value;let s;return i&&(s={onMouseenter:y,onMouseleave:b}),(0,_vue.h)("div",Object.assign({ref:_,class:["vxe-tooltip--wrapper","theme--"+t,e?_xeUtils.default.isFunction(e)?e({$tooltip:f}):e:"",{["size--"+u]:u,["placement--"+a.placement]:a.placement,"is--enterable":i,"is--visible":o,"is--arrow":l,"is--active":n}],style:a.style},s),[(0,_vue.h)("div",{key:"tby",class:"vxe-tooltip--body"},[(()=>{var{useScrollbar:e,theme:t,useHtml:l,useHTML:i}=m,n=h.tipContent,o=g.value,a=p.content;let r=[];return a?r.push((0,_vue.h)("div",{key:"ct"},(0,_vn.getSlotVNs)(a({})))):(_xeUtils.default.isBoolean(l)?l:i)?r.push((0,_vue.h)("div",{key:"ch",innerHTML:n})):r.push((0,_vue.h)("span",{key:"cd"},""+n)),e?(0,_vue.h)(_scrollbar.default,{key:5,ref:c,class:"vxe-tooltip--scrollbar-content",theme:t,viewClassName:"vxe-tooltip--scrollbar-content-view",viewInnerClassName:"vxe-tooltip--scrollbar-content-inner",viewStyle:o},{default:()=>r}):(0,_vue.h)("div",{key:3,ref:v,class:"vxe-tooltip--content",style:o},r)})(),(0,_vue.h)("div",{class:"vxe-tooltip--arrow",style:a.arrowStyle})]),...r?(0,_vn.getSlotVNs)(r({})):[]])},f},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_scrollbar=_interopRequireDefault(require("../../scrollbar"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{baseUtils,getConfig,createEvent,globalEvents}=_ui.VxeUI,getDefVal=baseUtils.getDefVal;function createReactData(){return{target:null,isUpdate:!1,visible:!1,tipPos:null,tipContent:"",tipActive:!1,tipTarget:null,tipZindex:0,tipStore:{style:{},placement:"",arrowStyle:{}}}}function createInternalData(){return{}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTooltip",props:{modelValue:Boolean,size:{type:String,default:()=>getConfig().tooltip.size||getConfig().size},selector:[String,Element],trigger:{type:String,default:()=>getConfig().tooltip.trigger||"hover"},theme:{type:String,default:()=>getConfig().tooltip.theme||"dark"},content:{type:[String,Number],default:null},useHtml:{type:Boolean,default:()=>_xeUtils.default.isBoolean(getConfig().tooltip.useHtml)?getConfig().tooltip.useHtml:null},useHTML:{type:Boolean,default:()=>getConfig().tooltip.useHTML},zIndex:[String,Number],popupClassName:[String,Function],width:{type:[String,Number],default:()=>getConfig().tooltip.Width},height:{type:[String,Number],default:()=>getConfig().tooltip.height},minWidth:{type:[String,Number],default:()=>getConfig().tooltip.minWidth},minHeight:{type:[String,Number],default:()=>getConfig().tooltip.minHeight},maxWidth:{type:[String,Number],default:()=>getConfig().tooltip.maxWidth},maxHeight:{type:[String,Number],default:()=>getConfig().tooltip.maxHeight},placement:{type:String,default:()=>getConfig().tooltip.placement},defaultPlacement:{type:String,default:()=>getConfig().tooltip.defaultPlacement},isArrow:{type:Boolean,default:()=>getConfig().tooltip.isArrow},enterable:{type:Boolean,default:()=>getConfig().tooltip.enterable},enterDelay:{type:Number,default:()=>getConfig().tooltip.enterDelay},leaveDelay:{type:Number,default:()=>getConfig().tooltip.leaveDelay},appendTo:{type:[String,Function],default:()=>getConfig().tooltip.appendTo},useScrollbar:{type:Boolean,default:()=>getDefVal(getConfig().tooltip.useScrollbar,getConfig().useScrollbar)},scrollbarConfig:Object},emits:["update:modelValue","show","hide"],setup(m,e){let{slots:p,emit:i}=e;var t=_xeUtils.default.uniqueId();let d=_ui.useFns.useSize(m).computeSize,c=_ui.useFns.useVScrollbar(m).computeIsVScrollbar,h=(0,_vue.reactive)(createReactData()),a=createInternalData(),_=(0,_vue.ref)(),v=(0,_vue.ref)(),g=(0,_vue.ref)(),f=(0,_vue.computed)(()=>{var{width:e,height:t,minHeight:l,minWidth:i,maxHeight:n,maxWidth:o}=m,a={};return e&&(a.width=(0,_dom.toCssUnit)(e)),t&&(a.height=(0,_dom.toCssUnit)(t)),i&&(a.minWidth=(0,_dom.toCssUnit)(i)),l&&(a.minHeight=(0,_dom.toCssUnit)(l)),o&&(a.maxWidth=(0,_dom.toCssUnit)(o)),n&&(a.maxHeight=(0,_dom.toCssUnit)(n)),a}),l={refElem:_},x={xID:t,props:m,context:e,reactData:h,internalData:a,getRefMaps:()=>l},r=(e,t,l)=>{i(e,createEvent(l,{$tooltip:x},t))},n=e=>{e!==h.visible&&(h.visible=e,h.isUpdate=!0,i("update:modelValue",e))},o=()=>{var e=m.zIndex;e?h.tipZindex=_xeUtils.default.toNumber(e):h.tipZindex<(0,_utils.getLastZIndex)()&&(h.tipZindex=(0,_utils.nextZIndex)())},u=()=>{h.visible?x.close():T(h.target||U(),m.content)},s=()=>{T(h.target||U(),m.content)},y=()=>{var{trigger:e,enterable:t,leaveDelay:l}=m;h.tipActive=!1,t&&"hover"===e?setTimeout(()=>{h.tipActive||x.close()},l):x.close()},b=()=>{h.tipActive=!0},C=()=>{var{trigger:e,enterable:t,leaveDelay:l}=m;h.tipActive=!1,t&&"hover"===e&&setTimeout(()=>{h.tipActive||x.close()},l)},S=()=>{var e=m.appendTo,t=h.tipStore,l=_.value;return l&&!l.parentNode&&(0,_dom.getPopupAppendElement)(e).appendChild(l),n(!0),o(),t.placement="top",t.style={width:"auto",left:0,top:0,zIndex:m.zIndex||h.tipZindex},t.arrowStyle={left:"50%"},x.updatePlacement().then(()=>x.updatePlacement())},w=()=>{a.showDelayTip=_xeUtils.default.debounce(()=>{h.tipActive&&S()},m.enterDelay,{leading:!1,trailing:!0})},T=(e,t,l)=>{var i=p.content;if((i||""!==t&&!_xeUtils.default.eqNull(t))&&e){var i=a.showDelayTip,{trigger:n,enterDelay:o}=m;if(h.tipPos=l?{x:l.clientX,y:l.clientY,oLeft:l.offsetX,oTop:l.offsetY}:null,h.tipActive=!0,h.tipTarget=e,h.tipContent=t,h.visible)return x.updatePlacement();if(!o||"hover"!==n)return e=S(),r("show",{},l||null),e;i&&i(),r("show",{},l||null)}return(0,_vue.nextTick)()},U=()=>{var e=m.selector;if(e){if(_xeUtils.default.isElement(e))return e;if(_xeUtils.default.isString(e))return document.querySelector(e)}return null},D=()=>{var{placement:l,defaultPlacement:i,appendTo:n,isArrow:o}=m,{tipTarget:a,tipStore:r,tipPos:u,tipZindex:s}=h,p=_.value;if(a&&p){var d=a.getBoundingClientRect(),c=a.offsetWidth,v=a.offsetHeight,g=p.offsetWidth,f=d.left;let e=0,t=0;u&&(u.oLeft||u.oTop)&&(e=f,t=d.top+v,o?e=e+Math.max(8,Math.min(c-8,u.oLeft))-g/2:(e=u.x+1,t=u.y+1));f=(0,_dom.updatePanelPlacement)(a,p,{defaultTop:t,defaultLeft:e,placement:l,defaultPlacement:i,appendTo:n,isMinWidth:!1,teleportTo:!0}),d=Object.assign(f.style,{zIndex:s});r.placement=f.placement,r.style=d,r.arrowStyle.left=f.arrowLeft?f.arrowLeft+"px":""}return(0,_vue.nextTick)()};t={dispatchEvent:r,openByEvent(e,t,l){return T(t||h.target||U(),l,e)},open(e,t){return T(e||h.target||U(),t)},close(){return h.tipPos=null,h.tipTarget=null,h.tipActive=!1,Object.assign(h.tipStore,{style:{},placement:"",arrowStyle:null}),n(!1),r("hide",{},null),(0,_vue.nextTick)()},toVisible(e,t){return T(e,t)},updatePlacement(){return D().then(()=>D()).then(()=>{setTimeout(()=>{D()},15)})},isActived(){return h.tipActive},setActived(e){h.tipActive=!!e}};let N=e=>{e.stopPropagation()},E=()=>{h.visible&&x.updatePlacement()},V=()=>{x.close()};e={handleCloseEvent:y};Object.assign(x,t,e);return(0,_vue.watch)(()=>m.enterDelay,()=>{w()}),(0,_vue.watch)(()=>m.content,e=>{h.tipContent=e}),(0,_vue.watch)(()=>m.modelValue,e=>{h.isUpdate||(e?T(h.target||U(),m.content):x.close()),h.isUpdate=!1}),w(),(0,_vue.onMounted)(()=>{var e=v.value,e=(e&&(e=e.getViewElem())&&(e.addEventListener("wheel",N,{passive:!1}),a.scrollbarViewEl=e),g.value);e&&e.addEventListener("wheel",N,{passive:!1}),(0,_vue.nextTick)(()=>{var e,{trigger:t,content:i}=m;let n=_.value;if(n){let l=n.parentNode;l&&(h.tipContent=i,h.tipZindex=(0,_utils.nextZIndex)(),_xeUtils.default.arrayEach(n.children,(e,t)=>{t&&(l.insertBefore(e,n),h.target||(h.target=e))}),l.removeChild(n),e=h.target,e&&("hover"===t?(e.onmouseenter=s,e.onmouseleave=y):"click"===t&&(e.onclick=u)),m.modelValue)&&T(e||U(),i)}}),globalEvents.on(x,"blur",V),globalEvents.on(x,"scroll",E)}),(0,_vue.onBeforeUnmount)(()=>{var e=h.target,t=a.scrollbarViewEl,l=_.value,e=(e&&(e.onmouseenter=null,e.onmouseleave=null,e.onclick=null),g.value);e&&e.removeEventListener("wheel",N),t&&t.removeEventListener("wheel",N),l&&(e=l.parentNode)&&e.removeChild(l),globalEvents.off(x,"blur"),globalEvents.off(x,"scroll"),_xeUtils.default.assign(h,createReactData()),_xeUtils.default.assign(a,createInternalData())}),x.renderVN=()=>{var{popupClassName:e,theme:t,isArrow:l,enterable:i}=m,{tipActive:n,visible:o,tipStore:a}=h,r=p.default,u=d.value;let s;return i&&(s={onMouseenter:b,onMouseleave:C}),(0,_vue.h)("div",Object.assign({ref:_,class:["vxe-tooltip--wrapper","theme--"+t,e?_xeUtils.default.isFunction(e)?e({$tooltip:x}):e:"",{["size--"+u]:u,["placement--"+a.placement]:a.placement,"is--enterable":i,"is--visible":o,"is--arrow":l,"is--active":n}],style:a.style},s),[(0,_vue.h)("div",{key:"tby",class:"vxe-tooltip--body"},[(()=>{var{theme:e,useHtml:t,useHTML:l}=m,i=h.tipContent,n=c.value,o=f.value,a=p.content;let r=[];return a?r.push((0,_vue.h)("div",{key:"ct"},(0,_vn.getSlotVNs)(a({})))):(_xeUtils.default.isBoolean(t)?t:l)?r.push((0,_vue.h)("div",{key:"ch",innerHTML:i})):r.push((0,_vue.h)("span",{key:"cd"},""+i)),n?(0,_vue.h)(_scrollbar.default,{key:5,ref:v,class:"vxe-tooltip--scrollbar-content",theme:e,viewClassName:"vxe-tooltip--scrollbar-content-view",viewInnerClassName:"vxe-tooltip--scrollbar-content-inner",viewStyle:o},{default:()=>r}):(0,_vue.h)("div",{key:3,ref:g,class:"vxe-tooltip--content",style:o},r)})(),(0,_vue.h)("div",{class:"vxe-tooltip--arrow",style:a.arrowStyle})]),...r?(0,_vn.getSlotVNs)(r({})):[]])},x},render(){return this.renderVN()}});
@@ -252,11 +252,15 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
252
252
  const xID = _xeUtils.default.uniqueId();
253
253
  const {
254
254
  computeSize
255
- } = (0, _ui.useSize)(props);
255
+ } = _ui.useFns.useSize(props);
256
+ const {
257
+ computeIsVScrollbar
258
+ } = _ui.useFns.useVScrollbar(props);
256
259
  const refElem = (0, _vue.ref)();
257
260
  const refHeaderWrapperElem = (0, _vue.ref)();
258
261
  const refFooterWrapperElem = (0, _vue.ref)();
259
262
  const refVirtualWrapper = (0, _vue.ref)();
263
+ const refVirtualSpaceElem = (0, _vue.ref)();
260
264
  const refVirtualBody = (0, _vue.ref)();
261
265
  const refTrackXElem = (0, _vue.ref)();
262
266
  const refTrackYElem = (0, _vue.ref)();
@@ -1054,8 +1058,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1054
1058
  });
1055
1059
  };
1056
1060
  const updateScrollbar = () => {
1057
- updateThumbSize();
1058
- updateThumbOffset();
1061
+ const isVScrollbar = computeIsVScrollbar.value;
1062
+ if (isVScrollbar) {
1063
+ return (0, _vue.nextTick)().then(() => {
1064
+ updateThumbSize();
1065
+ updateThumbOffset();
1066
+ });
1067
+ }
1068
+ return Promise.resolve();
1059
1069
  };
1060
1070
  /**
1061
1071
  * 重新计算列表
@@ -1082,11 +1092,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1082
1092
  const parentPaddingSize = (0, _dom.getPaddingTopBottomSize)(parentEl);
1083
1093
  reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
1084
1094
  }
1085
- updateScrollbar();
1086
1095
  updateHeight();
1087
1096
  return computeScrollLoad().then(() => {
1088
1097
  updateHeight();
1089
1098
  updateYSpace();
1099
+ updateScrollbar();
1090
1100
  });
1091
1101
  }
1092
1102
  return (0, _vue.nextTick)();
@@ -1119,7 +1129,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
1119
1129
  }
1120
1130
  };
1121
1131
  const scrollEvent = evnt => {
1122
- const scrollBodyElem = evnt.target;
1132
+ const scrollBodyElem = evnt.currentTarget;
1123
1133
  const scrollTop = scrollBodyElem.scrollTop;
1124
1134
  const scrollLeft = scrollBodyElem.scrollLeft;
1125
1135
  const isX = scrollLeft !== internalData.lastScrollLeft;
@@ -3462,6 +3472,28 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
3462
3472
  hideDropTip();
3463
3473
  }
3464
3474
  };
3475
+ const bindScrollbarResize = () => {
3476
+ const isVScrollbar = computeIsVScrollbar.value;
3477
+ const {
3478
+ scrollObserver
3479
+ } = internalData;
3480
+ if (isVScrollbar) {
3481
+ if (!scrollObserver) {
3482
+ const el = refElem.value;
3483
+ const viewInnerEl = refVirtualSpaceElem.value;
3484
+ const scrollObserver = _ui.globalResize.create(() => {
3485
+ reScrollFlag.value++;
3486
+ });
3487
+ if (el) {
3488
+ scrollObserver.observe(el);
3489
+ }
3490
+ if (viewInnerEl) {
3491
+ scrollObserver.observe(viewInnerEl);
3492
+ }
3493
+ internalData.scrollObserver = scrollObserver;
3494
+ }
3495
+ }
3496
+ };
3465
3497
  const updateThumbSize = () => {
3466
3498
  const viewEl = refVirtualWrapper.value;
3467
3499
  if (!viewEl) {
@@ -3981,8 +4013,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
3981
4013
  const {
3982
4014
  loading,
3983
4015
  trigger,
3984
- showLine,
3985
- useScrollbar
4016
+ showLine
3986
4017
  } = props;
3987
4018
  const {
3988
4019
  bodyHeight,
@@ -3993,6 +4024,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
3993
4024
  yThumbHeight
3994
4025
  } = reactData;
3995
4026
  const vSize = computeSize.value;
4027
+ const isVScrollbar = computeIsVScrollbar.value;
3996
4028
  const radioOpts = computeRadioOpts.value;
3997
4029
  const checkboxOpts = computeCheckboxOpts.value;
3998
4030
  const loadingOpts = computeLoadingOpts.value;
@@ -4019,13 +4051,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4019
4051
  }
4020
4052
  return (0, _vue.h)('div', Object.assign({
4021
4053
  ref: refElem,
4022
- class: ['vxe-tree', useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '', useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '', {
4054
+ class: ['vxe-tree', isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '', isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '', isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '', isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '', {
4023
4055
  [`size--${vSize}`]: vSize,
4024
4056
  'show--line': showLine,
4025
- 'is--virtual-scrollbar': useScrollbar,
4026
- 'ov-padding': useScrollbar && scrollbarOpts.padding,
4027
- 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
4028
- 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
4057
+ 'is--virtual-scrollbar': isVScrollbar,
4058
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
4059
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
4060
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
4029
4061
  'overflow-y': yThumbHeight,
4030
4062
  'overflow-x': xThumbWidth,
4031
4063
  'checkbox--highlight': checkboxOpts.highlight,
@@ -4046,6 +4078,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4046
4078
  style: treeStyle,
4047
4079
  onScroll: scrollEvent
4048
4080
  }, [(0, _vue.h)('div', {
4081
+ ref: refVirtualSpaceElem,
4049
4082
  class: 'vxe-tree--y-space',
4050
4083
  style: {
4051
4084
  height: bodyHeight ? `${bodyHeight}px` : ''
@@ -4065,7 +4098,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4065
4098
  /**
4066
4099
  * 滚动条
4067
4100
  */
4068
- useScrollbar ? (0, _vue.h)('div', {
4101
+ isVScrollbar ? (0, _vue.h)('div', {
4069
4102
  class: scrollbarWrapperClss
4070
4103
  }, [scrollXVisible === false ? (0, _ui.renderEmptyElement)($xeTree) : (0, _vue.h)('div', {
4071
4104
  ref: refTrackXElem,
@@ -4175,40 +4208,51 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4175
4208
  (0, _vue.watch)(() => props.filterValue, () => {
4176
4209
  triggerSearchEvent(new Event('filter'));
4177
4210
  });
4178
- const reFlag = (0, _vue.ref)(0);
4211
+ const reScrollFlag = (0, _vue.ref)(0);
4212
+ const reLayoutFlag = (0, _vue.ref)(0);
4179
4213
  (0, _vue.watch)(() => props.height, () => {
4180
- reFlag.value++;
4214
+ reLayoutFlag.value++;
4181
4215
  });
4182
4216
  (0, _vue.watch)(() => props.minHeight, () => {
4183
- reFlag.value++;
4217
+ reLayoutFlag.value++;
4184
4218
  });
4185
4219
  (0, _vue.watch)(() => props.maxHeight, () => {
4186
- reFlag.value++;
4220
+ reLayoutFlag.value++;
4187
4221
  });
4188
- (0, _vue.watch)(() => props.useScrollbar, () => {
4189
- reFlag.value++;
4222
+ (0, _vue.watch)(computeIsVScrollbar, () => {
4223
+ (0, _vue.nextTick)(() => {
4224
+ bindScrollbarResize();
4225
+ (0, _vue.nextTick)(() => {
4226
+ reLayoutFlag.value++;
4227
+ });
4228
+ });
4190
4229
  });
4191
4230
  (0, _vue.watch)(computeScrollYWidth, () => {
4192
- reFlag.value++;
4231
+ reLayoutFlag.value++;
4193
4232
  });
4194
4233
  (0, _vue.watch)(computeScrollXHeight, () => {
4195
- reFlag.value++;
4234
+ reLayoutFlag.value++;
4196
4235
  });
4197
4236
  (0, _vue.watch)(computeScrollXVisible, () => {
4198
4237
  (0, _vue.nextTick)(() => {
4199
- reFlag.value++;
4238
+ reLayoutFlag.value++;
4200
4239
  });
4201
4240
  });
4202
4241
  (0, _vue.watch)(computeScrollYVisible, () => {
4203
4242
  (0, _vue.nextTick)(() => {
4204
- reFlag.value++;
4243
+ reLayoutFlag.value++;
4205
4244
  });
4206
4245
  });
4207
- (0, _vue.watch)(reFlag, () => {
4246
+ (0, _vue.watch)(reLayoutFlag, () => {
4208
4247
  recalculate().then(() => {
4209
4248
  recalculate();
4210
4249
  });
4211
4250
  });
4251
+ (0, _vue.watch)(reScrollFlag, () => {
4252
+ updateScrollbar().then(() => {
4253
+ updateScrollbar();
4254
+ });
4255
+ });
4212
4256
  (0, _vue.onMounted)(() => {
4213
4257
  const {
4214
4258
  transform,
@@ -4217,8 +4261,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4217
4261
  showOverflow,
4218
4262
  lazy,
4219
4263
  loadMethod,
4220
- autoResize,
4221
- useScrollbar
4264
+ autoResize
4222
4265
  } = props;
4223
4266
  const dragOpts = computeDragOpts.value;
4224
4267
  if (!showOverflow) {
@@ -4240,25 +4283,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4240
4283
  if (menuConfig && !VxeUIContextMenu) {
4241
4284
  errLog('vxe.error.reqComp', ['vxe-context-menu']);
4242
4285
  }
4243
- const el = refElem.value;
4244
- if (useScrollbar || autoResize) {
4245
- const viewInnerEl = refVirtualBody.value;
4246
- const scrollObserver = _ui.globalResize.create(() => {
4247
- updateScrollbar();
4248
- });
4249
- if (el) {
4250
- scrollObserver.observe(el);
4251
- }
4252
- if (viewInnerEl) {
4253
- scrollObserver.observe(viewInnerEl);
4254
- }
4255
- internalData.scrollObserver = scrollObserver;
4256
- }
4257
4286
  if (autoResize) {
4287
+ const el = refElem.value;
4258
4288
  const parentEl = getParentElem();
4259
4289
  const resizeObserver = _ui.globalResize.create(() => {
4260
4290
  if (props.autoResize) {
4261
- reFlag.value++;
4291
+ reLayoutFlag.value++;
4262
4292
  }
4263
4293
  });
4264
4294
  if (el) {
@@ -4269,9 +4299,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
4269
4299
  }
4270
4300
  internalData.resizeObserver = resizeObserver;
4271
4301
  }
4272
- reFlag.value++;
4302
+ reLayoutFlag.value++;
4303
+ bindScrollbarResize();
4273
4304
  _ui.globalEvents.on($xeTree, 'resize', () => {
4274
- reFlag.value++;
4305
+ reLayoutFlag.value++;
4275
4306
  });
4276
4307
  });
4277
4308
  (0, _vue.onBeforeUnmount)(() => {