vxe-pc-ui 4.20.6 → 4.20.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all.esm.js +5135 -5080
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/scrollbar/src/scrollbar.js +20 -3
- package/es/scrollbar/style.css +11 -0
- package/es/scrollbar/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +5 -3
- package/es/tooltip/src/tooltip.js +45 -8
- package/es/tooltip/style.css +2 -1
- package/es/tooltip/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-scrollbar/style.css +11 -0
- package/es/vxe-scrollbar/style.min.css +1 -1
- package/es/vxe-tooltip/style.css +2 -1
- package/es/vxe-tooltip/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +4617 -4339
- package/lib/index.umd.min.js +1 -1
- package/lib/scrollbar/src/scrollbar.js +22 -3
- package/lib/scrollbar/src/scrollbar.min.js +1 -1
- package/lib/scrollbar/style/style.css +11 -0
- package/lib/scrollbar/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tabs.js +45 -33
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +79 -29
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tooltip/style/style.css +2 -1
- package/lib/tooltip/style/style.min.css +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/lib/vxe-scrollbar/style/style.css +11 -0
- package/lib/vxe-scrollbar/style/style.min.css +1 -1
- package/lib/vxe-tooltip/style/style.css +2 -1
- package/lib/vxe-tooltip/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/scrollbar/src/scrollbar.ts +20 -2
- package/packages/tabs/src/tabs.ts +6 -3
- package/packages/tooltip/src/tooltip.ts +47 -9
- package/styles/components/scrollbar.scss +15 -1
- package/styles/components/tooltip.scss +2 -1
- package/types/components/scrollbar.d.ts +19 -1
- package/types/components/table.d.ts +1 -0
- package/types/components/tooltip.d.ts +21 -0
- /package/es/icon/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
- /package/es/icon/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
- /package/es/icon/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
- /package/es/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
- /package/es/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
- /package/es/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
- /package/lib/icon/style/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
- /package/lib/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
- /package/lib/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
- /package/lib/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
package/lib/tabs/src/tabs.js
CHANGED
|
@@ -15,6 +15,18 @@ var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
|
15
15
|
var _loading = _interopRequireDefault(require("../../loading"));
|
|
16
16
|
var _scrollbar = _interopRequireDefault(require("../../scrollbar"));
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
+
const {
|
|
19
|
+
baseUtils,
|
|
20
|
+
createEvent,
|
|
21
|
+
getConfig,
|
|
22
|
+
getIcon,
|
|
23
|
+
globalEvents,
|
|
24
|
+
permission,
|
|
25
|
+
renderEmptyElement
|
|
26
|
+
} = _ui.VxeUI;
|
|
27
|
+
const {
|
|
28
|
+
getDefVal
|
|
29
|
+
} = baseUtils;
|
|
18
30
|
const {
|
|
19
31
|
warnLog,
|
|
20
32
|
errLog
|
|
@@ -29,17 +41,17 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
29
41
|
height: [String, Number],
|
|
30
42
|
destroyOnClose: {
|
|
31
43
|
type: Boolean,
|
|
32
|
-
default: () =>
|
|
44
|
+
default: () => getConfig().tabs.destroyOnClose
|
|
33
45
|
},
|
|
34
46
|
titleWidth: [String, Number],
|
|
35
47
|
titleAlign: [String, Number],
|
|
36
48
|
type: {
|
|
37
49
|
type: String,
|
|
38
|
-
default: () =>
|
|
50
|
+
default: () => getConfig().tabs.type
|
|
39
51
|
},
|
|
40
52
|
position: {
|
|
41
53
|
type: String,
|
|
42
|
-
default: () =>
|
|
54
|
+
default: () => getConfig().tabs.position
|
|
43
55
|
},
|
|
44
56
|
showClose: Boolean,
|
|
45
57
|
showBody: {
|
|
@@ -48,7 +60,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
48
60
|
},
|
|
49
61
|
padding: {
|
|
50
62
|
type: Boolean,
|
|
51
|
-
default: () =>
|
|
63
|
+
default: () => getConfig().tabs.padding
|
|
52
64
|
},
|
|
53
65
|
trigger: String,
|
|
54
66
|
beforeChangeMethod: Function,
|
|
@@ -56,11 +68,11 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
56
68
|
refreshConfig: Object,
|
|
57
69
|
size: {
|
|
58
70
|
type: String,
|
|
59
|
-
default: () =>
|
|
71
|
+
default: () => getConfig().tabs.size || getConfig().size
|
|
60
72
|
},
|
|
61
73
|
useScrollbar: {
|
|
62
74
|
type: Boolean,
|
|
63
|
-
default: () => (
|
|
75
|
+
default: () => getDefVal(getConfig().tabs.useScrollbar, getConfig().useScrollbar)
|
|
64
76
|
},
|
|
65
77
|
scrollbarConfig: Object,
|
|
66
78
|
// 已废弃
|
|
@@ -148,10 +160,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
148
160
|
return stys;
|
|
149
161
|
});
|
|
150
162
|
const computeCloseOpts = (0, _vue.computed)(() => {
|
|
151
|
-
return Object.assign({},
|
|
163
|
+
return Object.assign({}, getConfig().tabs.closeConfig, props.closeConfig);
|
|
152
164
|
});
|
|
153
165
|
const computeRefreshOpts = (0, _vue.computed)(() => {
|
|
154
|
-
return Object.assign({},
|
|
166
|
+
return Object.assign({}, getConfig().tabs.refreshConfig, props.refreshConfig);
|
|
155
167
|
});
|
|
156
168
|
const computeTabOptions = (0, _vue.computed)(() => {
|
|
157
169
|
const {
|
|
@@ -169,7 +181,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
169
181
|
return $xeParentTabs ? $xeParentTabs.reactData.resizeFlag : null;
|
|
170
182
|
});
|
|
171
183
|
const computeScrollbarOpts = (0, _vue.computed)(() => {
|
|
172
|
-
return Object.assign({},
|
|
184
|
+
return Object.assign({}, getConfig().tabs.scrollbarConfig, props.scrollbarConfig);
|
|
173
185
|
});
|
|
174
186
|
const computeScrollbarProps = (0, _vue.computed)(() => {
|
|
175
187
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
@@ -204,7 +216,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
204
216
|
permissionCode
|
|
205
217
|
} = item;
|
|
206
218
|
if (permissionCode) {
|
|
207
|
-
if (!
|
|
219
|
+
if (!permission.checkVisible(permissionCode)) {
|
|
208
220
|
return false;
|
|
209
221
|
}
|
|
210
222
|
}
|
|
@@ -335,7 +347,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
335
347
|
(0, _vue.nextTick)(handleStyle);
|
|
336
348
|
};
|
|
337
349
|
const dispatchEvent = (type, params, evnt) => {
|
|
338
|
-
emit(type,
|
|
350
|
+
emit(type, createEvent(evnt, {
|
|
339
351
|
$tabs: $xeTabs
|
|
340
352
|
}, params));
|
|
341
353
|
};
|
|
@@ -391,7 +403,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
391
403
|
const {
|
|
392
404
|
trigger
|
|
393
405
|
} = props;
|
|
394
|
-
const beforeMethod = props.beforeChangeMethod ||
|
|
406
|
+
const beforeMethod = props.beforeChangeMethod || getConfig().tabs.beforeChangeMethod;
|
|
395
407
|
const {
|
|
396
408
|
activeName
|
|
397
409
|
} = reactData;
|
|
@@ -490,7 +502,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
490
502
|
activeName
|
|
491
503
|
} = reactData;
|
|
492
504
|
const closeOpts = computeCloseOpts.value;
|
|
493
|
-
const beforeMethod = closeOpts.beforeMethod || props.beforeCloseMethod ||
|
|
505
|
+
const beforeMethod = closeOpts.beforeMethod || props.beforeCloseMethod || getConfig().tabs.beforeCloseMethod;
|
|
494
506
|
const {
|
|
495
507
|
name
|
|
496
508
|
} = item;
|
|
@@ -739,13 +751,13 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
739
751
|
class: ['vxe-tabs-header--prefix', `type--${tabType}`, `pos--${tabPosition}`]
|
|
740
752
|
}, callSlot(tabPrefixSlot, {
|
|
741
753
|
name: activeName
|
|
742
|
-
})) :
|
|
754
|
+
})) : renderEmptyElement($xeTabs), isTabOver ? (0, _vue.h)('div', {
|
|
743
755
|
ref: refHeadPrevElem,
|
|
744
756
|
class: ['vxe-tabs-header--bar vxe-tabs-header--prev-bar', `type--${tabType}`, `pos--${tabPosition}`],
|
|
745
757
|
onClick: scrollLeftEvent
|
|
746
758
|
}, [(0, _vue.h)('span', {
|
|
747
|
-
class: lrPosition ?
|
|
748
|
-
})]) :
|
|
759
|
+
class: lrPosition ? getIcon().TABS_TAB_BUTTON_TOP : getIcon().TABS_TAB_BUTTON_LEFT
|
|
760
|
+
})]) : renderEmptyElement($xeTabs), (0, _vue.h)('div', {
|
|
749
761
|
class: ['vxe-tabs-header--wrapper', `type--${tabType}`, `pos--${tabPosition}`]
|
|
750
762
|
}, [(0, _vue.h)('div', {
|
|
751
763
|
ref: refHeadWrapperElem,
|
|
@@ -800,12 +812,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
800
812
|
class: 'vxe-tabs-header--item-icon'
|
|
801
813
|
}, [(0, _vue.h)('i', {
|
|
802
814
|
class: icon
|
|
803
|
-
})]) :
|
|
815
|
+
})]) : renderEmptyElement($xeTabs), titlePrefixSlot ? (0, _vue.h)('span', {
|
|
804
816
|
class: 'vxe-tabs-header--item-prefix'
|
|
805
817
|
}, callSlot(titlePrefixSlot, {
|
|
806
818
|
name,
|
|
807
819
|
title
|
|
808
|
-
})) :
|
|
820
|
+
})) : renderEmptyElement($xeTabs), (0, _vue.h)('span', {
|
|
809
821
|
class: 'vxe-tabs-header--item-name'
|
|
810
822
|
}, titleSlot ? callSlot(titleSlot, {
|
|
811
823
|
name,
|
|
@@ -815,7 +827,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
815
827
|
}, callSlot(titleSuffixSlot, {
|
|
816
828
|
name,
|
|
817
829
|
title
|
|
818
|
-
})) :
|
|
830
|
+
})) : renderEmptyElement($xeTabs)]), ((0, _utils.isEnableConf)(refreshConfig) || refreshOpts.enabled) && (refreshVisibleMethod ? refreshVisibleMethod(params) : true) ? (0, _vue.h)('div', {
|
|
819
831
|
class: ['vxe-tabs-header--refresh-btn', {
|
|
820
832
|
'is--active': isActive,
|
|
821
833
|
'is--loading': isLoading,
|
|
@@ -825,8 +837,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
825
837
|
handleRefreshTabEvent(evnt, item);
|
|
826
838
|
}
|
|
827
839
|
}, [(0, _vue.h)('i', {
|
|
828
|
-
class: isLoading ?
|
|
829
|
-
})]) :
|
|
840
|
+
class: isLoading ? getIcon().TABS_TAB_REFRESH_LOADING : getIcon().TABS_TAB_REFRESH
|
|
841
|
+
})]) : renderEmptyElement($xeTabs), (showClose || (0, _utils.isEnableConf)(closeConfig) || closeOpts.enabled) && (!closeVisibleMethod || closeVisibleMethod(params)) ? (0, _vue.h)('div', {
|
|
830
842
|
class: ['vxe-tabs-header--close-btn', {
|
|
831
843
|
'is--active': isActive
|
|
832
844
|
}],
|
|
@@ -834,8 +846,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
834
846
|
handleCloseTabEvent(evnt, item, index, tabList);
|
|
835
847
|
}
|
|
836
848
|
}, [(0, _vue.h)('i', {
|
|
837
|
-
class:
|
|
838
|
-
})]) :
|
|
849
|
+
class: getIcon().TABS_TAB_CLOSE
|
|
850
|
+
})]) : renderEmptyElement($xeTabs)])]);
|
|
839
851
|
}).concat([(0, _vue.h)('span', {
|
|
840
852
|
key: 'line',
|
|
841
853
|
class: ['vxe-tabs-header--active-line', `type--${tabType}`, `pos--${tabPosition}`],
|
|
@@ -845,12 +857,12 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
845
857
|
class: ['vxe-tabs-header--bar vxe-tabs-header--next-bar', `type--${tabType}`, `pos--${tabPosition}`],
|
|
846
858
|
onClick: scrollRightEvent
|
|
847
859
|
}, [(0, _vue.h)('span', {
|
|
848
|
-
class: lrPosition ?
|
|
849
|
-
})]) :
|
|
860
|
+
class: lrPosition ? getIcon().TABS_TAB_BUTTON_BOTTOM : getIcon().TABS_TAB_BUTTON_RIGHT
|
|
861
|
+
})]) : renderEmptyElement($xeTabs), tabSuffixSlot ? (0, _vue.h)('div', {
|
|
850
862
|
class: ['vxe-tabs-header--suffix', `type--${tabType}`, `pos--${tabPosition}`]
|
|
851
863
|
}, callSlot(tabSuffixSlot, {
|
|
852
864
|
name: activeName
|
|
853
|
-
})) :
|
|
865
|
+
})) : renderEmptyElement($xeTabs)]);
|
|
854
866
|
};
|
|
855
867
|
const renderTabPane = item => {
|
|
856
868
|
const {
|
|
@@ -885,7 +897,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
885
897
|
name
|
|
886
898
|
}) : []);
|
|
887
899
|
}
|
|
888
|
-
return
|
|
900
|
+
return renderEmptyElement($xeTabs);
|
|
889
901
|
};
|
|
890
902
|
const renderTabContent = tabList => {
|
|
891
903
|
const {
|
|
@@ -896,7 +908,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
896
908
|
} = reactData;
|
|
897
909
|
if (destroyOnClose) {
|
|
898
910
|
const activeTab = tabList.find(item => item.name === activeName);
|
|
899
|
-
return [activeTab ? renderTabPane(activeTab) :
|
|
911
|
+
return [activeTab ? renderTabPane(activeTab) : renderEmptyElement($xeTabs)];
|
|
900
912
|
}
|
|
901
913
|
return tabList.map(item => renderTabPane(item));
|
|
902
914
|
};
|
|
@@ -920,7 +932,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
920
932
|
const headerpSlot = slots.header;
|
|
921
933
|
const footerSlot = slots.footer;
|
|
922
934
|
if (!showBody) {
|
|
923
|
-
return
|
|
935
|
+
return renderEmptyElement($xeTabs);
|
|
924
936
|
}
|
|
925
937
|
const cacheItem = activeName ? cacheTabMaps[`${activeName}`] : null;
|
|
926
938
|
const isLoading = cacheItem ? cacheItem.loading : false;
|
|
@@ -934,7 +946,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
934
946
|
}]
|
|
935
947
|
}, [headerpSlot ? (0, _vue.h)('div', {
|
|
936
948
|
class: 'vxe-tabs-pane--header'
|
|
937
|
-
}, callSlot(headerpSlot, defParams)) :
|
|
949
|
+
}, callSlot(headerpSlot, defParams)) : renderEmptyElement($xeTabs), (0, _vue.h)('div', {
|
|
938
950
|
class: ['vxe-tabs-pane--body', `type--${tabType}`, `pos--${tabPosition}`, {
|
|
939
951
|
[`size--${vSize}`]: vSize,
|
|
940
952
|
'is--padding': padding,
|
|
@@ -942,7 +954,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
942
954
|
}]
|
|
943
955
|
}, renderTabContent(tabList)), footerSlot ? (0, _vue.h)('div', {
|
|
944
956
|
class: 'vxe-tabs-pane--footer'
|
|
945
|
-
}, callSlot(footerSlot, defParams)) :
|
|
957
|
+
}, callSlot(footerSlot, defParams)) : renderEmptyElement($xeTabs), showLoading && isLoading ? renderEmptyElement($xeTabs) : (0, _vue.h)(_loading.default, {
|
|
946
958
|
class: 'vxe-tabs--loading',
|
|
947
959
|
modelValue: isLoading
|
|
948
960
|
})]);
|
|
@@ -1027,10 +1039,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1027
1039
|
});
|
|
1028
1040
|
(0, _vue.onMounted)(() => {
|
|
1029
1041
|
updateTabStyle();
|
|
1030
|
-
|
|
1042
|
+
globalEvents.on($xeTabs, 'resize', updateTabStyle);
|
|
1031
1043
|
});
|
|
1032
1044
|
(0, _vue.onUnmounted)(() => {
|
|
1033
|
-
|
|
1045
|
+
globalEvents.off($xeTabs, 'resize');
|
|
1034
1046
|
});
|
|
1035
1047
|
(0, _vue.provide)('$xeTabs', $xeTabs);
|
|
1036
1048
|
addInitName(props.modelValue, null);
|
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{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:()=>(0,_ui.getConfig)().tabs.destroyOnClose},titleWidth:[String,Number],titleAlign:[String,Number],type:{type:String,default:()=>(0,_ui.getConfig)().tabs.type},position:{type:String,default:()=>(0,_ui.getConfig)().tabs.position},showClose:Boolean,showBody:{type:Boolean,default:!0},padding:{type:Boolean,default:()=>(0,_ui.getConfig)().tabs.padding},trigger:String,beforeChangeMethod:Function,closeConfig:Object,refreshConfig:Object,size:{type:String,default:()=>(0,_ui.getConfig)().tabs.size||(0,_ui.getConfig)().size},useScrollbar:{type:Boolean,default:()=>(0,_utils.getDefaultConfig)((0,_ui.getConfig)().tabs.useScrollbar,(0,_ui.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:i}=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}),F=(0,_vue.computed)(()=>{var{lintLeft:e,lintTop:t,lintWidth:a,lintHeight:i}=O;return H.value?{top:t+"px",height:i+"px"}:{left:e+"px",width:a+"px"}}),I=(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({},(0,_ui.getConfig)().tabs.closeConfig,d.closeConfig)),A=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().tabs.refreshConfig,d.refreshConfig)),_=(0,_vue.computed)(()=>{var e=d.options;return(e||[]).filter(e=>a(e))}),b=(0,_vue.computed)(()=>{var e=O.staticTabs;return e.filter(e=>a(e))});var U=(0,_vue.computed)(()=>t?t.reactData.resizeFlag:null);let V=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().tabs.scrollbarConfig,d.scrollbarConfig)),R=(0,_vue.computed)(()=>{var e=V.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:()=>w,getComputeMaps:()=>j},a=e=>{e=e.permissionCode;return!(e&&!_ui.permission.checkVisible(e))},k=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=S[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],q=()=>{var e,t,a,i,l,s=H.value,r=M.value,o=u.value,n=v.value;r&&({scrollLeft:r,scrollTop:e,clientWidth:t,clientHeight:a,scrollWidth:i,scrollHeight:l}=r,o&&(0<(s?e:r)?(0,_dom.addClass):(0,_dom.removeClass))(o,"scrolling--middle"),n)&&((s?a<l-Math.ceil(e):t<i-Math.ceil(r))?(0,_dom.addClass):(0,_dom.removeClass))(n,"scrolling--middle")},f=()=>{var e=()=>{let t=O.activeName;var e,a,i,l,s,r=B.value,o=_.value,n=b.value,u=M.value,v=H.value;let c=0,d=0,h=0,m=0,f=0,p=0,g=!1;u&&(n=_xeUtils.default.findIndexOf(n.length?n:o,e=>e.name===t),{children:o,offsetWidth:u,scrollWidth:e,offsetHeight:i,scrollHeight:l,clientWidth:a,clientHeight:s}=u,f=u-a,p=i-s,v?(g=l!==s,-1<n&&(u=o[n])&&(i=u.clientHeight,v=u.clientWidth,m="card"===r?(c=v,d=i,u.offsetTop):"border-card"===r?(c=v,d=i,u.offsetTop-1):(d=Math.max(4,Math.floor(.6*i)),u.offsetTop+Math.floor((i-d)/2)))):(g=e!==a,-1<n&&(l=o[n])&&(s=l.clientWidth,h="card"===r?(c=s+1,l.offsetLeft):"border-card"===r?(c=s,l.offsetLeft-1):(c=Math.max(4,Math.floor(.6*s)),l.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,q()};e(),(0,_vue.nextTick)(e)},p=(e,t,a)=>{i(e,(0,_ui.createEvent)(a,{$tabs:W},t))},o=e=>{i("update:modelValue",e)},n=(e,t)=>{var a=O.initNames;return!(!e||a.includes(e)||(p("tab-load",{name:e},t),a.push(e),0))},l=e=>{let i=null,l={};if(e&&e.length){let a=!1;i=d.modelValue,e.forEach(e=>{var{name:e,preload:t}=e||{};e&&(l[""+e]={loading:!1},i===e&&(a=!0),t)&&n(e,null)}),a||(i=e[0].name,n(i,null),o(i))}O.activeName=i,O.cacheTabMaps=l},D=(t,a)=>{var e=d.trigger,i=d.beforeChangeMethod||(0,_ui.getConfig)().tabs.beforeChangeMethod;let l=O.activeName,s=a.name,r=s;p("tab-click",{name:s},t),"manual"!==e&&s!==l&&Promise.resolve(!i||i({$tabs:W,name:s,oldName:l,newName:s,option:a})).then(e=>{e?(O.activeName=s,o(r),n(s,t),p("change",{value:r,name:s,oldName:l,newName:s,option:a},t),p("tab-change",{value:r,name:s,oldName:l,newName:s,option:a},t)):p("tab-change-fail",{value:r,name:s,oldName:l,newName:s,option:a},t)}).catch(()=>{p("tab-change-fail",{value:r,name:s,oldName:l,newName:s,option:a},t)})},P=(e,t)=>{e.stopPropagation();var{activeName:e,cacheTabMaps:a}=O,i=t.name,l=A.value.queryMethod;let s=i?a[""+i]:null;s&&(l?s.loading||(s.loading=!0,Promise.resolve(l({$tabs:W,value:e,name:i,option:t})).finally(()=>{s.loading=!1})):errLog("vxe.error.notFunc",["refresh-config.queryMethod"]))},$=(t,e,a,i)=>{t.stopPropagation();var l=O.activeName,s=z.value.beforeMethod||d.beforeCloseMethod||(0,_ui.getConfig)().tabs.beforeCloseMethod;let r=e.name,o=l,n=o;l===r&&(l=a<i.length-1?i[a+1]:i[a-1],n=l?l.name:null),Promise.resolve(!s||s({$tabs:W,value:o,name:r,nextName:n,option:e})).then(e=>{e?p("tab-close",{value:o,name:r,nextName:n},t):p("tab-close-fail",{value:o,name:r,nextName:n},t)}).catch(()=>{p("tab-close-fail",{value:o,name:r,nextName:n},t)})},G=(o,e)=>{var t=m.slTimeout;let n=H.value,u=n?0:e,v=n?e:0,c=6,d=35,h=(t&&(clearTimeout(t),m.slTimeout=void 0),()=>{var e,t,a,i,l,s,r=M.value;0<c&&(c--,r)&&({clientWidth:e,clientHeight:t,scrollWidth:a,scrollHeight:i,scrollLeft:l,scrollTop:s}=r,n?(v=Math.floor(v/2),0<o?t+s<i&&(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<o?e+l<a&&(r.scrollLeft+=u,d-=4,m.slTimeout=setTimeout(h,d)):0<l&&(r.scrollLeft-=u,d-=4,m.slTimeout=setTimeout(h,d))),f())});h()},s=e=>{var t,a=H.value,i=M.value;i&&({clientWidth:i,clientHeight:t}=i,a=Math.floor(.75*(a?t:i)),G(e,a))},J=()=>{s(-1)},K=()=>{s(1)},r=o=>{let n=_.value,u=b.value,v=H.value;return(0,_vue.nextTick)().then(()=>{var e,t,a,i,l,s,r=M.value;r&&(-1<(i=_xeUtils.default.findIndexOf(u.length?u:n,e=>e.name===o))&&({scrollLeft:e,scrollTop:s,clientWidth:t,clientHeight:l,children:a}=r,a=a[i])&&(v?(0<(l=(i=a.offsetTop)+a.clientHeight-(s+l))&&(r.scrollTop+=l),i<s&&(r.scrollTop=i)):(0<(s=(l=a.offsetLeft)+a.clientWidth-(e+t))&&(r.scrollLeft+=s),l<e&&(r.scrollLeft=l))),f())})},g=t=>{let a=O.activeName;var i=_.value,l=b.value,l=l.length?l:i,i=_xeUtils.default.findIndexOf(l,e=>e.name===a);if(-1<i){let e=null;t?i<l.length-1&&(e=l[i+1]):0<i&&(e=l[i-1]),e&&(l=t=e.name,O.activeName=t,o(l),n(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:_}=d,{activeName:b,scrollbarWidth:e,scrollbarHeight:t,isTabOver:a,cacheTabMaps:x}=O,T=B.value,C=L.value;var i=H.value,l=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:b})):(0,_ui.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:i?(0,_ui.getIcon)().TABS_TAB_BUTTON_TOP:(0,_ui.getIcon)().TABS_TAB_BUTTON_LEFT})]):(0,_ui.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:i?{marginRight:`-${e+scrollbarOffsetSize}px`,paddingRight:scrollbarOffsetSize+"px"}:{marginBottom:`-${t+scrollbarOffsetSize}px`,paddingBottom:scrollbarOffsetSize+"px"},onScroll:q},h.map((t,a)=>{var{title:e,titleWidth:i,titleAlign:l,icon:s,name:r}=t,o=t.slots||{},n=o.title||o.tab,u=o.titlePrefix||o["title-prefix"],o=o.titleSuffix||o["title-suffix"],i=i||m,l=l||f,v={$tabs:W,value:b,name:r,option:t},c=b===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,l?"align--"+l:"",{"is--active":c}],style:i?{width:(0,_dom.toCssUnit)(i)}:void 0,onClick(e){D(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})]):(0,_ui.renderEmptyElement)(W),u?(0,_vue.h)("span",{class:"vxe-tabs-header--item-prefix"},k(u,{name:r,title:e})):(0,_ui.renderEmptyElement)(W),(0,_vue.h)("span",{class:"vxe-tabs-header--item-name"},n?k(n,{name:r,title:e}):""+e),o?(0,_vue.h)("span",{class:"vxe-tabs-header--item-suffix"},k(o,{name:r,title:e})):(0,_ui.renderEmptyElement)(W)]),!(0,_utils.isEnableConf)(_)&&!E.enabled||w&&!w(v)?(0,_ui.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?(0,_ui.getIcon)().TABS_TAB_REFRESH_LOADING:(0,_ui.getIcon)().TABS_TAB_REFRESH})]),!(p||(0,_utils.isEnableConf)(g)||y.enabled)||N&&!N(v)?(0,_ui.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:(0,_ui.getIcon)().TABS_TAB_CLOSE})])])])}).concat([(0,_vue.h)("span",{key:"line",class:["vxe-tabs-header--active-line","type--"+T,"pos--"+C],style:l})]))]),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:i?(0,_ui.getIcon)().TABS_TAB_BUTTON_BOTTOM:(0,_ui.getIcon)().TABS_TAB_BUTTON_RIGHT})]):(0,_ui.renderEmptyElement)(W),r?(0,_vue.h)("div",{class:["vxe-tabs-header--suffix","type--"+T,"pos--"+C]},k(r,{name:b})):(0,_ui.renderEmptyElement)(W)])},C=e=>{var t=d.useScrollbar,{initNames:a,activeName:i}=O;let{name:l,slots:s}=e,r=s?s.default:null;e=R.value;return l&&a.includes(l)?t?(0,_vue.h)(_scrollbar.default,Object.assign({key:""+l,class:["vxe-tabs-pane--scrollbar-item",{"is--visible":i===l}]},e),{default:()=>r?k(r,{name:l}):[]}):(0,_vue.h)("div",{key:""+l,class:["vxe-tabs-pane--item",{"is--visible":i===l}]},r?k(r,{name:l}):[]):(0,_ui.renderEmptyElement)(W)},Q=e=>{var t=d.destroyOnClose;let a=O.activeName;return t?[(t=e.find(e=>e.name===a))?C(t):(0,_ui.renderEmptyElement)(W)]:e.map(e=>C(e))},X=e=>{var{height:t,padding:a,showBody:i}=d,{activeName:l,cacheTabMaps:s}=O,r=h.value,o=B.value,n=L.value,u=A.value.showLoading,v=S.header,c=S.footer;return i?(s=!!(s=l?s[""+l]:null)&&s.loading,l={name:l},(0,_vue.h)("div",{key:"tb",class:["vxe-tabs-pane--wrapper","type--"+o,"pos--"+n,{"is--content":i}]},[v?(0,_vue.h)("div",{class:"vxe-tabs-pane--header"},k(v,l)):(0,_ui.renderEmptyElement)(W),(0,_vue.h)("div",{class:["vxe-tabs-pane--body","type--"+o,"pos--"+n,{["size--"+r]:r,"is--padding":a,"is--height":t}]},Q(e)),c?(0,_vue.h)("div",{class:"vxe-tabs-pane--footer"},k(c,l)):(0,_ui.renderEmptyElement)(W),u&&s?(0,_ui.renderEmptyElement)(W):(0,_vue.h)(_loading.default,{class:"vxe-tabs--loading",modelValue:s})])):(0,_ui.renderEmptyElement)(W)};(0,_vue.watch)(()=>d.position,()=>{O.resizeFlag++}),(0,_vue.watch)(()=>d.modelValue,e=>{n(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,()=>{l(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,()=>{l(O.staticTabs),O.resizeFlag++}),(0,_vue.watch)(U,()=>{O.resizeFlag++}),(0,_vue.watch)(()=>O.resizeFlag,()=>{(0,_vue.nextTick)(()=>{f()})}),(0,_vue.onMounted)(()=>{f(),_ui.globalEvents.on(W,"resize",f)}),(0,_vue.onUnmounted)(()=>{_ui.globalEvents.off(W,"resize")}),(0,_vue.provide)("$xeTabs",W),n(d.modelValue,null),l(O.staticTabs.length?O.staticTabs:d.options),W.renderVN=()=>{var{height:e,padding:t,trigger:a}=d,i=O.activeName,l=h.value,s=_.value,r=b.value,o=B.value,n=L.value,u=I.value,v=S.default,r=v?r:s,s=[(0,_vue.h)("div",{key:"ts",class:"vxe-tabs-slots"},v?v({name:i}):[])];return"right"===n||"bottom"===n?s.push(X(r),T(r)):s.push(T(r),X(r)),(0,_vue.h)("div",{ref:c,class:["vxe-tabs","pos--"+n,"vxe-tabs--"+o,"trigger--"+("manual"===a?"trigger":"default"),{["size--"+l]:l,"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=(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()}});
|
|
@@ -11,7 +11,17 @@ var _ui = require("../../ui");
|
|
|
11
11
|
var _utils = require("../../ui/src/utils");
|
|
12
12
|
var _dom = require("../../ui/src/dom");
|
|
13
13
|
var _vn = require("../../ui/src/vn");
|
|
14
|
+
var _scrollbar = _interopRequireDefault(require("../../scrollbar"));
|
|
14
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
const {
|
|
17
|
+
baseUtils,
|
|
18
|
+
getConfig,
|
|
19
|
+
createEvent,
|
|
20
|
+
globalEvents
|
|
21
|
+
} = _ui.VxeUI;
|
|
22
|
+
const {
|
|
23
|
+
getDefVal
|
|
24
|
+
} = baseUtils;
|
|
15
25
|
function createReactData() {
|
|
16
26
|
return {
|
|
17
27
|
target: null,
|
|
@@ -31,6 +41,7 @@ function createReactData() {
|
|
|
31
41
|
}
|
|
32
42
|
function createInternalData() {
|
|
33
43
|
return {
|
|
44
|
+
// scrollbarViewEl: undefined,
|
|
34
45
|
// showDelayTip: undefined
|
|
35
46
|
};
|
|
36
47
|
}
|
|
@@ -40,16 +51,16 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
40
51
|
modelValue: Boolean,
|
|
41
52
|
size: {
|
|
42
53
|
type: String,
|
|
43
|
-
default: () =>
|
|
54
|
+
default: () => getConfig().tooltip.size || getConfig().size
|
|
44
55
|
},
|
|
45
56
|
selector: [String, Element],
|
|
46
57
|
trigger: {
|
|
47
58
|
type: String,
|
|
48
|
-
default: () =>
|
|
59
|
+
default: () => getConfig().tooltip.trigger || 'hover'
|
|
49
60
|
},
|
|
50
61
|
theme: {
|
|
51
62
|
type: String,
|
|
52
|
-
default: () =>
|
|
63
|
+
default: () => getConfig().tooltip.theme || 'dark'
|
|
53
64
|
},
|
|
54
65
|
content: {
|
|
55
66
|
type: [String, Number],
|
|
@@ -57,67 +68,72 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
57
68
|
},
|
|
58
69
|
useHtml: {
|
|
59
70
|
type: Boolean,
|
|
60
|
-
default: () => _xeUtils.default.isBoolean(
|
|
71
|
+
default: () => _xeUtils.default.isBoolean(getConfig().tooltip.useHtml) ? getConfig().tooltip.useHtml : null
|
|
61
72
|
},
|
|
62
73
|
// 已废弃,请使用 useHtml
|
|
63
74
|
useHTML: {
|
|
64
75
|
type: Boolean,
|
|
65
|
-
default: () =>
|
|
76
|
+
default: () => getConfig().tooltip.useHTML
|
|
66
77
|
},
|
|
67
78
|
zIndex: [String, Number],
|
|
68
79
|
popupClassName: [String, Function],
|
|
69
80
|
width: {
|
|
70
81
|
type: [String, Number],
|
|
71
|
-
default: () =>
|
|
82
|
+
default: () => getConfig().tooltip.Width
|
|
72
83
|
},
|
|
73
84
|
height: {
|
|
74
85
|
type: [String, Number],
|
|
75
|
-
default: () =>
|
|
86
|
+
default: () => getConfig().tooltip.height
|
|
76
87
|
},
|
|
77
88
|
minWidth: {
|
|
78
89
|
type: [String, Number],
|
|
79
|
-
default: () =>
|
|
90
|
+
default: () => getConfig().tooltip.minWidth
|
|
80
91
|
},
|
|
81
92
|
minHeight: {
|
|
82
93
|
type: [String, Number],
|
|
83
|
-
default: () =>
|
|
94
|
+
default: () => getConfig().tooltip.minHeight
|
|
84
95
|
},
|
|
85
96
|
maxWidth: {
|
|
86
97
|
type: [String, Number],
|
|
87
|
-
default: () =>
|
|
98
|
+
default: () => getConfig().tooltip.maxWidth
|
|
88
99
|
},
|
|
89
100
|
maxHeight: {
|
|
90
101
|
type: [String, Number],
|
|
91
|
-
default: () =>
|
|
102
|
+
default: () => getConfig().tooltip.maxHeight
|
|
92
103
|
},
|
|
93
104
|
placement: {
|
|
94
105
|
type: String,
|
|
95
|
-
default: () =>
|
|
106
|
+
default: () => getConfig().tooltip.placement
|
|
96
107
|
},
|
|
97
108
|
defaultPlacement: {
|
|
98
109
|
type: String,
|
|
99
|
-
default: () =>
|
|
110
|
+
default: () => getConfig().tooltip.defaultPlacement
|
|
100
111
|
},
|
|
101
112
|
isArrow: {
|
|
102
113
|
type: Boolean,
|
|
103
|
-
default: () =>
|
|
114
|
+
default: () => getConfig().tooltip.isArrow
|
|
104
115
|
},
|
|
105
116
|
enterable: {
|
|
106
117
|
type: Boolean,
|
|
107
|
-
default: () =>
|
|
118
|
+
default: () => getConfig().tooltip.enterable
|
|
108
119
|
},
|
|
109
120
|
enterDelay: {
|
|
110
121
|
type: Number,
|
|
111
|
-
default: () =>
|
|
122
|
+
default: () => getConfig().tooltip.enterDelay
|
|
112
123
|
},
|
|
113
124
|
leaveDelay: {
|
|
114
125
|
type: Number,
|
|
115
|
-
default: () =>
|
|
126
|
+
default: () => getConfig().tooltip.leaveDelay
|
|
116
127
|
},
|
|
117
128
|
appendTo: {
|
|
118
129
|
type: [String, Function],
|
|
119
|
-
default: () =>
|
|
120
|
-
}
|
|
130
|
+
default: () => getConfig().tooltip.appendTo
|
|
131
|
+
},
|
|
132
|
+
useScrollbar: {
|
|
133
|
+
type: Boolean,
|
|
134
|
+
default: () => getDefVal(getConfig().tooltip.useScrollbar, getConfig().useScrollbar)
|
|
135
|
+
},
|
|
136
|
+
scrollbarConfig: Object
|
|
121
137
|
},
|
|
122
138
|
emits: ['update:modelValue', 'show', 'hide'],
|
|
123
139
|
setup(props, context) {
|
|
@@ -132,7 +148,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
132
148
|
const reactData = (0, _vue.reactive)(createReactData());
|
|
133
149
|
const internalData = createInternalData();
|
|
134
150
|
const refElem = (0, _vue.ref)();
|
|
135
|
-
const
|
|
151
|
+
const contentScrollbar = (0, _vue.ref)();
|
|
152
|
+
const contentWrapperElem = (0, _vue.ref)();
|
|
136
153
|
const computeWrapperStyle = (0, _vue.computed)(() => {
|
|
137
154
|
const {
|
|
138
155
|
width,
|
|
@@ -175,7 +192,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
175
192
|
getRefMaps: () => refMaps
|
|
176
193
|
};
|
|
177
194
|
const dispatchEvent = (type, params, evnt) => {
|
|
178
|
-
emit(type,
|
|
195
|
+
emit(type, createEvent(evnt, {
|
|
179
196
|
$tooltip: $xeTooltip
|
|
180
197
|
}, params));
|
|
181
198
|
};
|
|
@@ -267,7 +284,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
267
284
|
tipStore.arrowStyle = {
|
|
268
285
|
left: '50%'
|
|
269
286
|
};
|
|
270
|
-
return $xeTooltip.updatePlacement()
|
|
287
|
+
return $xeTooltip.updatePlacement().then(() => {
|
|
288
|
+
return $xeTooltip.updatePlacement();
|
|
289
|
+
});
|
|
271
290
|
};
|
|
272
291
|
const handleDelayFn = () => {
|
|
273
292
|
internalData.showDelayTip = _xeUtils.default.debounce(() => {
|
|
@@ -439,6 +458,8 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
439
458
|
Object.assign($xeTooltip, tooltipMethods, tooltipPrivateMethods);
|
|
440
459
|
const renderContent = () => {
|
|
441
460
|
const {
|
|
461
|
+
useScrollbar,
|
|
462
|
+
theme,
|
|
442
463
|
useHtml,
|
|
443
464
|
useHTML
|
|
444
465
|
} = props;
|
|
@@ -462,9 +483,22 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
462
483
|
key: 'cd'
|
|
463
484
|
}, `${tipContent}`));
|
|
464
485
|
}
|
|
486
|
+
if (useScrollbar) {
|
|
487
|
+
return (0, _vue.h)(_scrollbar.default, {
|
|
488
|
+
key: 5,
|
|
489
|
+
ref: contentScrollbar,
|
|
490
|
+
class: 'vxe-tooltip--scrollbar-content',
|
|
491
|
+
theme,
|
|
492
|
+
viewClassName: 'vxe-tooltip--scrollbar-content-view',
|
|
493
|
+
viewInnerClassName: 'vxe-tooltip--scrollbar-content-inner',
|
|
494
|
+
viewStyle: wrapperStyle
|
|
495
|
+
}, {
|
|
496
|
+
default: () => contVNs
|
|
497
|
+
});
|
|
498
|
+
}
|
|
465
499
|
return (0, _vue.h)('div', {
|
|
466
500
|
key: 3,
|
|
467
|
-
ref:
|
|
501
|
+
ref: contentWrapperElem,
|
|
468
502
|
class: 'vxe-tooltip--content',
|
|
469
503
|
style: wrapperStyle
|
|
470
504
|
}, contVNs);
|
|
@@ -529,7 +563,17 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
529
563
|
});
|
|
530
564
|
handleDelayFn();
|
|
531
565
|
(0, _vue.onMounted)(() => {
|
|
532
|
-
const
|
|
566
|
+
const $scrollbar = contentScrollbar.value;
|
|
567
|
+
if ($scrollbar) {
|
|
568
|
+
const viewEl = $scrollbar.getViewElem();
|
|
569
|
+
if (viewEl) {
|
|
570
|
+
viewEl.addEventListener('wheel', wheelEvent, {
|
|
571
|
+
passive: false
|
|
572
|
+
});
|
|
573
|
+
internalData.scrollbarViewEl = viewEl;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
const contentWrapperfEl = contentWrapperElem.value;
|
|
533
577
|
if (contentWrapperfEl) {
|
|
534
578
|
contentWrapperfEl.addEventListener('wheel', wheelEvent, {
|
|
535
579
|
passive: false
|
|
@@ -572,31 +616,37 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
572
616
|
}
|
|
573
617
|
}
|
|
574
618
|
});
|
|
575
|
-
|
|
576
|
-
|
|
619
|
+
globalEvents.on($xeTooltip, 'blur', handleGlobalBlurEvent);
|
|
620
|
+
globalEvents.on($xeTooltip, 'scroll', handleGlobalScrollEvent);
|
|
577
621
|
});
|
|
578
622
|
(0, _vue.onBeforeUnmount)(() => {
|
|
579
623
|
const {
|
|
580
624
|
target
|
|
581
625
|
} = reactData;
|
|
626
|
+
const {
|
|
627
|
+
scrollbarViewEl
|
|
628
|
+
} = internalData;
|
|
582
629
|
const panelElem = refElem.value;
|
|
583
630
|
if (target) {
|
|
584
631
|
target.onmouseenter = null;
|
|
585
632
|
target.onmouseleave = null;
|
|
586
633
|
target.onclick = null;
|
|
587
634
|
}
|
|
588
|
-
const contentWrapperfEl =
|
|
635
|
+
const contentWrapperfEl = contentWrapperElem.value;
|
|
589
636
|
if (contentWrapperfEl) {
|
|
590
637
|
contentWrapperfEl.removeEventListener('wheel', wheelEvent);
|
|
591
638
|
}
|
|
639
|
+
if (scrollbarViewEl) {
|
|
640
|
+
scrollbarViewEl.removeEventListener('wheel', wheelEvent);
|
|
641
|
+
}
|
|
592
642
|
if (panelElem) {
|
|
593
643
|
const parentNode = panelElem.parentNode;
|
|
594
644
|
if (parentNode) {
|
|
595
645
|
parentNode.removeChild(panelElem);
|
|
596
646
|
}
|
|
597
647
|
}
|
|
598
|
-
|
|
599
|
-
|
|
648
|
+
globalEvents.off($xeTooltip, 'blur');
|
|
649
|
+
globalEvents.off($xeTooltip, 'scroll');
|
|
600
650
|
_xeUtils.default.assign(reactData, createReactData());
|
|
601
651
|
_xeUtils.default.assign(internalData, createInternalData());
|
|
602
652
|
});
|
|
@@ -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");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}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:()=>
|
|
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":""}};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(),(0,_vue.nextTick)().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()}});
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
.vxe-tooltip--wrapper.is--enterable .vxe-tooltip--body {
|
|
26
26
|
pointer-events: all;
|
|
27
27
|
}
|
|
28
|
-
.vxe-tooltip--wrapper .vxe-tooltip--content
|
|
28
|
+
.vxe-tooltip--wrapper .vxe-tooltip--content,
|
|
29
|
+
.vxe-tooltip--wrapper .vxe-tooltip--scrollbar-content-view {
|
|
29
30
|
padding: 8px 12px;
|
|
30
31
|
max-width: 600px;
|
|
31
32
|
max-height: 800px;
|