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.
Files changed (64) hide show
  1. package/dist/all.esm.js +5135 -5080
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/icon/style.css +1 -1
  5. package/es/scrollbar/src/scrollbar.js +20 -3
  6. package/es/scrollbar/style.css +11 -0
  7. package/es/scrollbar/style.min.css +1 -1
  8. package/es/style.css +1 -1
  9. package/es/style.min.css +1 -1
  10. package/es/tabs/src/tabs.js +5 -3
  11. package/es/tooltip/src/tooltip.js +45 -8
  12. package/es/tooltip/style.css +2 -1
  13. package/es/tooltip/style.min.css +1 -1
  14. package/es/ui/index.js +1 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-scrollbar/style.css +11 -0
  17. package/es/vxe-scrollbar/style.min.css +1 -1
  18. package/es/vxe-tooltip/style.css +2 -1
  19. package/es/vxe-tooltip/style.min.css +1 -1
  20. package/lib/icon/style/style.css +1 -1
  21. package/lib/icon/style/style.min.css +1 -1
  22. package/lib/index.umd.js +4617 -4339
  23. package/lib/index.umd.min.js +1 -1
  24. package/lib/scrollbar/src/scrollbar.js +22 -3
  25. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  26. package/lib/scrollbar/style/style.css +11 -0
  27. package/lib/scrollbar/style/style.min.css +1 -1
  28. package/lib/style.css +1 -1
  29. package/lib/style.min.css +1 -1
  30. package/lib/tabs/src/tabs.js +45 -33
  31. package/lib/tabs/src/tabs.min.js +1 -1
  32. package/lib/tooltip/src/tooltip.js +79 -29
  33. package/lib/tooltip/src/tooltip.min.js +1 -1
  34. package/lib/tooltip/style/style.css +2 -1
  35. package/lib/tooltip/style/style.min.css +1 -1
  36. package/lib/ui/index.js +1 -1
  37. package/lib/ui/index.min.js +1 -1
  38. package/lib/ui/src/log.js +1 -1
  39. package/lib/ui/src/log.min.js +1 -1
  40. package/lib/vxe-scrollbar/style/style.css +11 -0
  41. package/lib/vxe-scrollbar/style/style.min.css +1 -1
  42. package/lib/vxe-tooltip/style/style.css +2 -1
  43. package/lib/vxe-tooltip/style/style.min.css +1 -1
  44. package/package.json +2 -2
  45. package/packages/scrollbar/src/scrollbar.ts +20 -2
  46. package/packages/tabs/src/tabs.ts +6 -3
  47. package/packages/tooltip/src/tooltip.ts +47 -9
  48. package/styles/components/scrollbar.scss +15 -1
  49. package/styles/components/tooltip.scss +2 -1
  50. package/types/components/scrollbar.d.ts +19 -1
  51. package/types/components/table.d.ts +1 -0
  52. package/types/components/tooltip.d.ts +21 -0
  53. /package/es/icon/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
  54. /package/es/icon/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
  55. /package/es/icon/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
  56. /package/es/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
  57. /package/es/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
  58. /package/es/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
  59. /package/lib/icon/style/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
  60. /package/lib/icon/style/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
  61. /package/lib/icon/style/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
  62. /package/lib/{iconfont.1792054434227.ttf → iconfont.1792080138286.ttf} +0 -0
  63. /package/lib/{iconfont.1792054434227.woff → iconfont.1792080138286.woff} +0 -0
  64. /package/lib/{iconfont.1792054434227.woff2 → iconfont.1792080138286.woff2} +0 -0
@@ -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: () => (0, _ui.getConfig)().tabs.destroyOnClose
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: () => (0, _ui.getConfig)().tabs.type
50
+ default: () => getConfig().tabs.type
39
51
  },
40
52
  position: {
41
53
  type: String,
42
- default: () => (0, _ui.getConfig)().tabs.position
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: () => (0, _ui.getConfig)().tabs.padding
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: () => (0, _ui.getConfig)().tabs.size || (0, _ui.getConfig)().size
71
+ default: () => getConfig().tabs.size || getConfig().size
60
72
  },
61
73
  useScrollbar: {
62
74
  type: Boolean,
63
- default: () => (0, _utils.getDefaultConfig)((0, _ui.getConfig)().tabs.useScrollbar, (0, _ui.getConfig)().useScrollbar)
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({}, (0, _ui.getConfig)().tabs.closeConfig, props.closeConfig);
163
+ return Object.assign({}, getConfig().tabs.closeConfig, props.closeConfig);
152
164
  });
153
165
  const computeRefreshOpts = (0, _vue.computed)(() => {
154
- return Object.assign({}, (0, _ui.getConfig)().tabs.refreshConfig, props.refreshConfig);
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({}, (0, _ui.getConfig)().tabs.scrollbarConfig, props.scrollbarConfig);
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 (!_ui.permission.checkVisible(permissionCode)) {
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, (0, _ui.createEvent)(evnt, {
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 || (0, _ui.getConfig)().tabs.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 || (0, _ui.getConfig)().tabs.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
- })) : (0, _ui.renderEmptyElement)($xeTabs), isTabOver ? (0, _vue.h)('div', {
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 ? (0, _ui.getIcon)().TABS_TAB_BUTTON_TOP : (0, _ui.getIcon)().TABS_TAB_BUTTON_LEFT
748
- })]) : (0, _ui.renderEmptyElement)($xeTabs), (0, _vue.h)('div', {
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
- })]) : (0, _ui.renderEmptyElement)($xeTabs), titlePrefixSlot ? (0, _vue.h)('span', {
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
- })) : (0, _ui.renderEmptyElement)($xeTabs), (0, _vue.h)('span', {
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
- })) : (0, _ui.renderEmptyElement)($xeTabs)]), ((0, _utils.isEnableConf)(refreshConfig) || refreshOpts.enabled) && (refreshVisibleMethod ? refreshVisibleMethod(params) : true) ? (0, _vue.h)('div', {
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 ? (0, _ui.getIcon)().TABS_TAB_REFRESH_LOADING : (0, _ui.getIcon)().TABS_TAB_REFRESH
829
- })]) : (0, _ui.renderEmptyElement)($xeTabs), (showClose || (0, _utils.isEnableConf)(closeConfig) || closeOpts.enabled) && (!closeVisibleMethod || closeVisibleMethod(params)) ? (0, _vue.h)('div', {
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: (0, _ui.getIcon)().TABS_TAB_CLOSE
838
- })]) : (0, _ui.renderEmptyElement)($xeTabs)])]);
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 ? (0, _ui.getIcon)().TABS_TAB_BUTTON_BOTTOM : (0, _ui.getIcon)().TABS_TAB_BUTTON_RIGHT
849
- })]) : (0, _ui.renderEmptyElement)($xeTabs), tabSuffixSlot ? (0, _vue.h)('div', {
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
- })) : (0, _ui.renderEmptyElement)($xeTabs)]);
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 (0, _ui.renderEmptyElement)($xeTabs);
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) : (0, _ui.renderEmptyElement)($xeTabs)];
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 (0, _ui.renderEmptyElement)($xeTabs);
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)) : (0, _ui.renderEmptyElement)($xeTabs), (0, _vue.h)('div', {
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)) : (0, _ui.renderEmptyElement)($xeTabs), showLoading && isLoading ? (0, _ui.renderEmptyElement)($xeTabs) : (0, _vue.h)(_loading.default, {
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
- _ui.globalEvents.on($xeTabs, 'resize', updateTabStyle);
1042
+ globalEvents.on($xeTabs, 'resize', updateTabStyle);
1031
1043
  });
1032
1044
  (0, _vue.onUnmounted)(() => {
1033
- _ui.globalEvents.off($xeTabs, 'resize');
1045
+ globalEvents.off($xeTabs, 'resize');
1034
1046
  });
1035
1047
  (0, _vue.provide)('$xeTabs', $xeTabs);
1036
1048
  addInitName(props.modelValue, null);
@@ -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: () => (0, _ui.getConfig)().tooltip.size || (0, _ui.getConfig)().size
54
+ default: () => getConfig().tooltip.size || getConfig().size
44
55
  },
45
56
  selector: [String, Element],
46
57
  trigger: {
47
58
  type: String,
48
- default: () => (0, _ui.getConfig)().tooltip.trigger || 'hover'
59
+ default: () => getConfig().tooltip.trigger || 'hover'
49
60
  },
50
61
  theme: {
51
62
  type: String,
52
- default: () => (0, _ui.getConfig)().tooltip.theme || 'dark'
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((0, _ui.getConfig)().tooltip.useHtml) ? (0, _ui.getConfig)().tooltip.useHtml : null
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: () => (0, _ui.getConfig)().tooltip.useHTML
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: () => (0, _ui.getConfig)().tooltip.Width
82
+ default: () => getConfig().tooltip.Width
72
83
  },
73
84
  height: {
74
85
  type: [String, Number],
75
- default: () => (0, _ui.getConfig)().tooltip.height
86
+ default: () => getConfig().tooltip.height
76
87
  },
77
88
  minWidth: {
78
89
  type: [String, Number],
79
- default: () => (0, _ui.getConfig)().tooltip.minWidth
90
+ default: () => getConfig().tooltip.minWidth
80
91
  },
81
92
  minHeight: {
82
93
  type: [String, Number],
83
- default: () => (0, _ui.getConfig)().tooltip.minHeight
94
+ default: () => getConfig().tooltip.minHeight
84
95
  },
85
96
  maxWidth: {
86
97
  type: [String, Number],
87
- default: () => (0, _ui.getConfig)().tooltip.maxWidth
98
+ default: () => getConfig().tooltip.maxWidth
88
99
  },
89
100
  maxHeight: {
90
101
  type: [String, Number],
91
- default: () => (0, _ui.getConfig)().tooltip.maxHeight
102
+ default: () => getConfig().tooltip.maxHeight
92
103
  },
93
104
  placement: {
94
105
  type: String,
95
- default: () => (0, _ui.getConfig)().tooltip.placement
106
+ default: () => getConfig().tooltip.placement
96
107
  },
97
108
  defaultPlacement: {
98
109
  type: String,
99
- default: () => (0, _ui.getConfig)().tooltip.defaultPlacement
110
+ default: () => getConfig().tooltip.defaultPlacement
100
111
  },
101
112
  isArrow: {
102
113
  type: Boolean,
103
- default: () => (0, _ui.getConfig)().tooltip.isArrow
114
+ default: () => getConfig().tooltip.isArrow
104
115
  },
105
116
  enterable: {
106
117
  type: Boolean,
107
- default: () => (0, _ui.getConfig)().tooltip.enterable
118
+ default: () => getConfig().tooltip.enterable
108
119
  },
109
120
  enterDelay: {
110
121
  type: Number,
111
- default: () => (0, _ui.getConfig)().tooltip.enterDelay
122
+ default: () => getConfig().tooltip.enterDelay
112
123
  },
113
124
  leaveDelay: {
114
125
  type: Number,
115
- default: () => (0, _ui.getConfig)().tooltip.leaveDelay
126
+ default: () => getConfig().tooltip.leaveDelay
116
127
  },
117
128
  appendTo: {
118
129
  type: [String, Function],
119
- default: () => (0, _ui.getConfig)().tooltip.appendTo
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 contentWrapperfElem = (0, _vue.ref)();
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, (0, _ui.createEvent)(evnt, {
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: contentWrapperfElem,
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 contentWrapperfEl = contentWrapperfElem.value;
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
- _ui.globalEvents.on($xeTooltip, 'blur', handleGlobalBlurEvent);
576
- _ui.globalEvents.on($xeTooltip, 'scroll', handleGlobalScrollEvent);
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 = contentWrapperfElem.value;
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
- _ui.globalEvents.off($xeTooltip, 'blur');
599
- _ui.globalEvents.off($xeTooltip, 'scroll');
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:()=>(0,_ui.getConfig)().tooltip.size||(0,_ui.getConfig)().size},selector:[String,Element],trigger:{type:String,default:()=>(0,_ui.getConfig)().tooltip.trigger||"hover"},theme:{type:String,default:()=>(0,_ui.getConfig)().tooltip.theme||"dark"},content:{type:[String,Number],default:null},useHtml:{type:Boolean,default:()=>_xeUtils.default.isBoolean((0,_ui.getConfig)().tooltip.useHtml)?(0,_ui.getConfig)().tooltip.useHtml:null},useHTML:{type:Boolean,default:()=>(0,_ui.getConfig)().tooltip.useHTML},zIndex:[String,Number],popupClassName:[String,Function],width:{type:[String,Number],default:()=>(0,_ui.getConfig)().tooltip.Width},height:{type:[String,Number],default:()=>(0,_ui.getConfig)().tooltip.height},minWidth:{type:[String,Number],default:()=>(0,_ui.getConfig)().tooltip.minWidth},minHeight:{type:[String,Number],default:()=>(0,_ui.getConfig)().tooltip.minHeight},maxWidth:{type:[String,Number],default:()=>(0,_ui.getConfig)().tooltip.maxWidth},maxHeight:{type:[String,Number],default:()=>(0,_ui.getConfig)().tooltip.maxHeight},placement:{type:String,default:()=>(0,_ui.getConfig)().tooltip.placement},defaultPlacement:{type:String,default:()=>(0,_ui.getConfig)().tooltip.defaultPlacement},isArrow:{type:Boolean,default:()=>(0,_ui.getConfig)().tooltip.isArrow},enterable:{type:Boolean,default:()=>(0,_ui.getConfig)().tooltip.enterable},enterDelay:{type:Number,default:()=>(0,_ui.getConfig)().tooltip.enterDelay},leaveDelay:{type:Number,default:()=>(0,_ui.getConfig)().tooltip.leaveDelay},appendTo:{type:[String,Function],default:()=>(0,_ui.getConfig)().tooltip.appendTo}},emits:["update:modelValue","show","hide"],setup(m,e){let{slots:p,emit:l}=e;var t=_xeUtils.default.uniqueId();let d=(0,_ui.useSize)(m).computeSize,_=(0,_vue.reactive)(createReactData()),a=createInternalData(),h=(0,_vue.ref)(),c=(0,_vue.ref)(),g=(0,_vue.computed)(()=>{var{width:e,height:t,minHeight:i,minWidth:l,maxHeight:n,maxWidth:o}=m,a={};return e&&(a.width=(0,_dom.toCssUnit)(e)),t&&(a.height=(0,_dom.toCssUnit)(t)),l&&(a.minWidth=(0,_dom.toCssUnit)(l)),i&&(a.minHeight=(0,_dom.toCssUnit)(i)),o&&(a.maxWidth=(0,_dom.toCssUnit)(o)),n&&(a.maxHeight=(0,_dom.toCssUnit)(n)),a}),i={refElem:h},v={xID:t,props:m,context:e,reactData:_,internalData:a,getRefMaps:()=>i},r=(e,t,i)=>{l(e,(0,_ui.createEvent)(i,{$tooltip:v},t))},n=e=>{e!==_.visible&&(_.visible=e,_.isUpdate=!0,l("update:modelValue",e))},o=()=>{var e=m.zIndex;e?_.tipZindex=_xeUtils.default.toNumber(e):_.tipZindex<(0,_utils.getLastZIndex)()&&(_.tipZindex=(0,_utils.nextZIndex)())},u=()=>{_.visible?v.close():S(_.target||w(),m.content)},s=()=>{S(_.target||w(),m.content)},f=()=>{var{trigger:e,enterable:t,leaveDelay:i}=m;_.tipActive=!1,t&&"hover"===e?setTimeout(()=>{_.tipActive||v.close()},i):v.close()},x=()=>{_.tipActive=!0},y=()=>{var{trigger:e,enterable:t,leaveDelay:i}=m;_.tipActive=!1,t&&"hover"===e&&setTimeout(()=>{_.tipActive||v.close()},i)},b=()=>{var e=m.appendTo,t=_.tipStore,i=h.value;return i&&!i.parentNode&&(0,_dom.getPopupAppendElement)(e).appendChild(i),n(!0),o(),t.placement="top",t.style={width:"auto",left:0,top:0,zIndex:m.zIndex||_.tipZindex},t.arrowStyle={left:"50%"},v.updatePlacement()},C=()=>{a.showDelayTip=_xeUtils.default.debounce(()=>{_.tipActive&&b()},m.enterDelay,{leading:!1,trailing:!0})},S=(e,t,i)=>{var l=p.content;if((l||""!==t&&!_xeUtils.default.eqNull(t))&&e){var l=a.showDelayTip,{trigger:n,enterDelay:o}=m;if(_.tipPos=i?{x:i.clientX,y:i.clientY,oLeft:i.offsetX,oTop:i.offsetY}:null,_.tipActive=!0,_.tipTarget=e,_.tipContent=t,_.visible)return v.updatePlacement();if(!o||"hover"!==n)return e=b(),r("show",{},i||null),e;l&&l(),r("show",{},i||null)}return(0,_vue.nextTick)()},w=()=>{var e=m.selector;if(e){if(_xeUtils.default.isElement(e))return e;if(_xeUtils.default.isString(e))return document.querySelector(e)}return null},T=()=>{var{placement:i,defaultPlacement:l,appendTo:n,isArrow:o}=m,{tipTarget:a,tipStore:r,tipPos:u,tipZindex:s}=_,p=h.value;if(a&&p){var d=a.getBoundingClientRect(),c=a.offsetWidth,g=a.offsetHeight,v=p.offsetWidth,f=d.left;let e=0,t=0;u&&(u.oLeft||u.oTop)&&(e=f,t=d.top+g,o?e=e+Math.max(8,Math.min(c-8,u.oLeft))-v/2:(e=u.x+1,t=u.y+1));f=(0,_dom.updatePanelPlacement)(a,p,{defaultTop:t,defaultLeft:e,placement:i,defaultPlacement:l,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,i){return S(t||_.target||w(),i,e)},open(e,t){return S(e||_.target||w(),t)},close(){return _.tipPos=null,_.tipTarget=null,_.tipActive=!1,Object.assign(_.tipStore,{style:{},placement:"",arrowStyle:null}),n(!1),r("hide",{},null),(0,_vue.nextTick)()},toVisible(e,t){return S(e,t)},updatePlacement(){return T(),(0,_vue.nextTick)().then(T)},isActived(){return _.tipActive},setActived(e){_.tipActive=!!e}};let U=e=>{e.stopPropagation()},D=()=>{_.visible&&v.updatePlacement()},N=()=>{v.close()};e={handleCloseEvent:f};Object.assign(v,t,e);return(0,_vue.watch)(()=>m.enterDelay,()=>{C()}),(0,_vue.watch)(()=>m.content,e=>{_.tipContent=e}),(0,_vue.watch)(()=>m.modelValue,e=>{_.isUpdate||(e?S(_.target||w(),m.content):v.close()),_.isUpdate=!1}),C(),(0,_vue.onMounted)(()=>{var e=c.value;e&&e.addEventListener("wheel",U,{passive:!1}),(0,_vue.nextTick)(()=>{var e,{trigger:t,content:l}=m;let n=h.value;if(n){let i=n.parentNode;i&&(_.tipContent=l,_.tipZindex=(0,_utils.nextZIndex)(),_xeUtils.default.arrayEach(n.children,(e,t)=>{t&&(i.insertBefore(e,n),_.target||(_.target=e))}),i.removeChild(n),e=_.target,e&&("hover"===t?(e.onmouseenter=s,e.onmouseleave=f):"click"===t&&(e.onclick=u)),m.modelValue)&&S(e||w(),l)}}),_ui.globalEvents.on(v,"blur",N),_ui.globalEvents.on(v,"scroll",D)}),(0,_vue.onBeforeUnmount)(()=>{var e=_.target,t=h.value,e=(e&&(e.onmouseenter=null,e.onmouseleave=null,e.onclick=null),c.value);e&&e.removeEventListener("wheel",U),t&&(e=t.parentNode)&&e.removeChild(t),_ui.globalEvents.off(v,"blur"),_ui.globalEvents.off(v,"scroll"),_xeUtils.default.assign(_,createReactData()),_xeUtils.default.assign(a,createInternalData())}),v.renderVN=()=>{var{popupClassName:e,theme:t,isArrow:i,enterable:l}=m,{tipActive:n,visible:o,tipStore:a}=_,r=p.default,u=d.value;let s;return l&&(s={onMouseenter:x,onMouseleave:y}),(0,_vue.h)("div",Object.assign({ref:h,class:["vxe-tooltip--wrapper","theme--"+t,e?_xeUtils.default.isFunction(e)?e({$tooltip:v}):e:"",{["size--"+u]:u,["placement--"+a.placement]:a.placement,"is--enterable":l,"is--visible":o,"is--arrow":i,"is--active":n}],style:a.style},s),[(0,_vue.h)("div",{key:"tby",class:"vxe-tooltip--body"},[(()=>{var{useHtml:e,useHTML:t}=m,i=_.tipContent,l=g.value,n=p.content,o=[];return n?o.push((0,_vue.h)("div",{key:"ct"},(0,_vn.getSlotVNs)(n({})))):(_xeUtils.default.isBoolean(e)?e:t)?o.push((0,_vue.h)("div",{key:"ch",innerHTML:i})):o.push((0,_vue.h)("span",{key:"cd"},""+i)),(0,_vue.h)("div",{key:3,ref:c,class:"vxe-tooltip--content",style:l},o)})(),(0,_vue.h)("div",{class:"vxe-tooltip--arrow",style:a.arrowStyle})]),...r?(0,_vn.getSlotVNs)(r({})):[]])},v},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_scrollbar=_interopRequireDefault(require("../../scrollbar"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{baseUtils,getConfig,createEvent,globalEvents}=_ui.VxeUI,getDefVal=baseUtils.getDefVal;function createReactData(){return{target:null,isUpdate:!1,visible:!1,tipPos:null,tipContent:"",tipActive:!1,tipTarget:null,tipZindex:0,tipStore:{style:{},placement:"",arrowStyle:{}}}}function createInternalData(){return{}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeTooltip",props:{modelValue:Boolean,size:{type:String,default:()=>getConfig().tooltip.size||getConfig().size},selector:[String,Element],trigger:{type:String,default:()=>getConfig().tooltip.trigger||"hover"},theme:{type:String,default:()=>getConfig().tooltip.theme||"dark"},content:{type:[String,Number],default:null},useHtml:{type:Boolean,default:()=>_xeUtils.default.isBoolean(getConfig().tooltip.useHtml)?getConfig().tooltip.useHtml:null},useHTML:{type:Boolean,default:()=>getConfig().tooltip.useHTML},zIndex:[String,Number],popupClassName:[String,Function],width:{type:[String,Number],default:()=>getConfig().tooltip.Width},height:{type:[String,Number],default:()=>getConfig().tooltip.height},minWidth:{type:[String,Number],default:()=>getConfig().tooltip.minWidth},minHeight:{type:[String,Number],default:()=>getConfig().tooltip.minHeight},maxWidth:{type:[String,Number],default:()=>getConfig().tooltip.maxWidth},maxHeight:{type:[String,Number],default:()=>getConfig().tooltip.maxHeight},placement:{type:String,default:()=>getConfig().tooltip.placement},defaultPlacement:{type:String,default:()=>getConfig().tooltip.defaultPlacement},isArrow:{type:Boolean,default:()=>getConfig().tooltip.isArrow},enterable:{type:Boolean,default:()=>getConfig().tooltip.enterable},enterDelay:{type:Number,default:()=>getConfig().tooltip.enterDelay},leaveDelay:{type:Number,default:()=>getConfig().tooltip.leaveDelay},appendTo:{type:[String,Function],default:()=>getConfig().tooltip.appendTo},useScrollbar:{type:Boolean,default:()=>getDefVal(getConfig().tooltip.useScrollbar,getConfig().useScrollbar)},scrollbarConfig:Object},emits:["update:modelValue","show","hide"],setup(m,e){let{slots:p,emit:i}=e;var t=_xeUtils.default.uniqueId();let d=(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;