vxe-pc-ui 4.20.7 → 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.
- package/dist/all.esm.js +915 -820
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/card/src/card.js +8 -6
- package/es/drawer/src/drawer.js +7 -5
- package/es/icon/style.css +1 -1
- package/es/layout-aside/src/layout-aside.js +6 -4
- package/es/layout-body/src/layout-body.js +6 -4
- package/es/layout-container/src/layout-container.js +11 -3
- package/es/list/src/list.js +79 -50
- package/es/menu/src/menu.js +7 -5
- package/es/modal/src/modal.js +7 -5
- package/es/scrollbar/src/scrollbar.js +8 -0
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +5 -4
- package/es/tooltip/src/tooltip.js +15 -7
- package/es/tree/src/tree.js +74 -45
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/card/src/card.js +9 -6
- package/lib/card/src/card.min.js +1 -1
- package/lib/drawer/src/drawer.js +7 -4
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +371 -163
- package/lib/index.umd.min.js +1 -1
- package/lib/layout-aside/src/layout-aside.js +7 -4
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +7 -4
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/layout-container/src/layout-container.js +20 -4
- package/lib/layout-container/src/layout-container.min.js +1 -1
- package/lib/list/src/list.js +79 -47
- package/lib/list/src/list.min.js +1 -1
- package/lib/menu/src/menu.js +8 -4
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +7 -4
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/scrollbar/src/scrollbar.js +8 -0
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tabs.js +6 -5
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +15 -6
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tree/src/tree.js +74 -43
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/card/src/card.ts +8 -6
- package/packages/drawer/src/drawer.ts +7 -5
- package/packages/layout-aside/src/layout-aside.ts +6 -4
- package/packages/layout-body/src/layout-body.ts +6 -4
- package/packages/layout-container/src/layout-container.ts +13 -3
- package/packages/list/src/list.ts +81 -50
- package/packages/menu/src/menu.ts +7 -5
- package/packages/modal/src/modal.ts +7 -5
- package/packages/scrollbar/src/scrollbar.ts +8 -1
- package/packages/tabs/src/tabs.ts +5 -4
- package/packages/tooltip/src/tooltip.ts +15 -7
- package/packages/tree/src/tree.ts +76 -45
- package/types/components/card.d.ts +2 -2
- package/types/components/drawer.d.ts +2 -2
- package/types/components/grid.d.ts +3 -1
- package/types/components/layout-aside.d.ts +2 -2
- package/types/components/layout-body.d.ts +2 -2
- package/types/components/layout-container.d.ts +3 -1
- package/types/components/list.d.ts +2 -2
- package/types/components/menu.d.ts +2 -2
- package/types/components/modal.d.ts +2 -2
- package/types/components/scrollbar.d.ts +10 -0
- package/types/components/table.d.ts +9 -5
- package/types/components/tabs.d.ts +2 -2
- package/types/components/tooltip.d.ts +2 -2
- package/types/components/tree.d.ts +2 -2
- /package/es/icon/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
- /package/es/icon/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
- /package/es/icon/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
- /package/es/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
- /package/es/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
- /package/es/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
- /package/lib/icon/style/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
- /package/lib/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
- /package/lib/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
- /package/lib/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
package/lib/tabs/src/tabs.js
CHANGED
|
@@ -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
|
-
} =
|
|
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
|
|
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
|
package/lib/tabs/src/tabs.min.js
CHANGED
|
@@ -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
|
-
} =
|
|
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)();
|
|
@@ -369,7 +372,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
369
372
|
} = reactData;
|
|
370
373
|
const panelElem = refElem.value;
|
|
371
374
|
if (!targetElem || !panelElem) {
|
|
372
|
-
return;
|
|
375
|
+
return (0, _vue.nextTick)();
|
|
373
376
|
}
|
|
374
377
|
const targetRect = targetElem.getBoundingClientRect();
|
|
375
378
|
const targetWidth = targetElem.offsetWidth;
|
|
@@ -405,6 +408,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
405
408
|
tipStore.placement = ppObj.placement;
|
|
406
409
|
tipStore.style = panelStyle;
|
|
407
410
|
tipStore.arrowStyle.left = ppObj.arrowLeft ? `${ppObj.arrowLeft}px` : '';
|
|
411
|
+
return (0, _vue.nextTick)();
|
|
408
412
|
};
|
|
409
413
|
const tooltipMethods = {
|
|
410
414
|
dispatchEvent,
|
|
@@ -431,8 +435,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
431
435
|
return handleVisible(target, content);
|
|
432
436
|
},
|
|
433
437
|
updatePlacement() {
|
|
434
|
-
updateTipStyle()
|
|
435
|
-
|
|
438
|
+
return updateTipStyle().then(() => {
|
|
439
|
+
return updateTipStyle();
|
|
440
|
+
}).then(() => {
|
|
441
|
+
setTimeout(() => {
|
|
442
|
+
updateTipStyle();
|
|
443
|
+
}, 15);
|
|
444
|
+
});
|
|
436
445
|
},
|
|
437
446
|
isActived() {
|
|
438
447
|
return reactData.tipActive;
|
|
@@ -458,7 +467,6 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
458
467
|
Object.assign($xeTooltip, tooltipMethods, tooltipPrivateMethods);
|
|
459
468
|
const renderContent = () => {
|
|
460
469
|
const {
|
|
461
|
-
useScrollbar,
|
|
462
470
|
theme,
|
|
463
471
|
useHtml,
|
|
464
472
|
useHTML
|
|
@@ -466,6 +474,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
466
474
|
const {
|
|
467
475
|
tipContent
|
|
468
476
|
} = reactData;
|
|
477
|
+
const isVScrollbar = computeIsVScrollbar.value;
|
|
469
478
|
const wrapperStyle = computeWrapperStyle.value;
|
|
470
479
|
const contentSlot = slots.content;
|
|
471
480
|
const contVNs = [];
|
|
@@ -483,7 +492,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
483
492
|
key: 'cd'
|
|
484
493
|
}, `${tipContent}`));
|
|
485
494
|
}
|
|
486
|
-
if (
|
|
495
|
+
if (isVScrollbar) {
|
|
487
496
|
return (0, _vue.h)(_scrollbar.default, {
|
|
488
497
|
key: 5,
|
|
489
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=
|
|
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()}});
|
package/lib/tree/src/tree.js
CHANGED
|
@@ -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
|
-
} =
|
|
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
|
-
|
|
1058
|
-
|
|
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.
|
|
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',
|
|
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':
|
|
4026
|
-
'ov-padding':
|
|
4027
|
-
'ov-x--auto-hide':
|
|
4028
|
-
'ov-y--auto-hide':
|
|
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
|
-
|
|
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
|
|
4211
|
+
const reScrollFlag = (0, _vue.ref)(0);
|
|
4212
|
+
const reLayoutFlag = (0, _vue.ref)(0);
|
|
4179
4213
|
(0, _vue.watch)(() => props.height, () => {
|
|
4180
|
-
|
|
4214
|
+
reLayoutFlag.value++;
|
|
4181
4215
|
});
|
|
4182
4216
|
(0, _vue.watch)(() => props.minHeight, () => {
|
|
4183
|
-
|
|
4217
|
+
reLayoutFlag.value++;
|
|
4184
4218
|
});
|
|
4185
4219
|
(0, _vue.watch)(() => props.maxHeight, () => {
|
|
4186
|
-
|
|
4220
|
+
reLayoutFlag.value++;
|
|
4187
4221
|
});
|
|
4188
|
-
(0, _vue.watch)(
|
|
4189
|
-
|
|
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
|
-
|
|
4231
|
+
reLayoutFlag.value++;
|
|
4193
4232
|
});
|
|
4194
4233
|
(0, _vue.watch)(computeScrollXHeight, () => {
|
|
4195
|
-
|
|
4234
|
+
reLayoutFlag.value++;
|
|
4196
4235
|
});
|
|
4197
4236
|
(0, _vue.watch)(computeScrollXVisible, () => {
|
|
4198
4237
|
(0, _vue.nextTick)(() => {
|
|
4199
|
-
|
|
4238
|
+
reLayoutFlag.value++;
|
|
4200
4239
|
});
|
|
4201
4240
|
});
|
|
4202
4241
|
(0, _vue.watch)(computeScrollYVisible, () => {
|
|
4203
4242
|
(0, _vue.nextTick)(() => {
|
|
4204
|
-
|
|
4243
|
+
reLayoutFlag.value++;
|
|
4205
4244
|
});
|
|
4206
4245
|
});
|
|
4207
|
-
(0, _vue.watch)(
|
|
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
|
-
|
|
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
|
-
|
|
4302
|
+
reLayoutFlag.value++;
|
|
4303
|
+
bindScrollbarResize();
|
|
4273
4304
|
_ui.globalEvents.on($xeTree, 'resize', () => {
|
|
4274
|
-
|
|
4305
|
+
reLayoutFlag.value++;
|
|
4275
4306
|
});
|
|
4276
4307
|
});
|
|
4277
4308
|
(0, _vue.onBeforeUnmount)(() => {
|