vxe-pc-ui 4.6.35 → 4.6.37

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 (48) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/notice-bar/src/notice-bar.js +9 -2
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/tabs/src/tabs.js +323 -106
  6. package/es/tabs/style.css +434 -156
  7. package/es/tabs/style.min.css +1 -1
  8. package/es/ui/index.js +3 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/es/vxe-tabs/style.css +434 -156
  11. package/es/vxe-tabs/style.min.css +1 -1
  12. package/lib/icon/style/style.css +1 -1
  13. package/lib/icon/style/style.min.css +1 -1
  14. package/lib/index.umd.js +354 -102
  15. package/lib/index.umd.min.js +1 -1
  16. package/lib/notice-bar/src/notice-bar.js +8 -1
  17. package/lib/notice-bar/src/notice-bar.min.js +1 -1
  18. package/lib/style.css +1 -1
  19. package/lib/style.min.css +1 -1
  20. package/lib/tabs/src/tabs.js +342 -99
  21. package/lib/tabs/src/tabs.min.js +1 -1
  22. package/lib/tabs/style/style.css +434 -156
  23. package/lib/tabs/style/style.min.css +1 -1
  24. package/lib/ui/index.js +3 -1
  25. package/lib/ui/index.min.js +1 -1
  26. package/lib/ui/src/log.js +1 -1
  27. package/lib/ui/src/log.min.js +1 -1
  28. package/lib/vxe-tabs/style/style.css +434 -156
  29. package/lib/vxe-tabs/style/style.min.css +1 -1
  30. package/package.json +1 -1
  31. package/packages/notice-bar/src/notice-bar.ts +13 -3
  32. package/packages/tabs/src/tabs.ts +334 -107
  33. package/packages/ui/index.ts +2 -0
  34. package/styles/components/tabs.scss +539 -183
  35. package/types/components/tabs.d.ts +27 -7
  36. package/types/ui/global-icon.d.ts +2 -0
  37. /package/es/icon/{iconfont.1750910542831.ttf → iconfont.1751116737472.ttf} +0 -0
  38. /package/es/icon/{iconfont.1750910542831.woff → iconfont.1751116737472.woff} +0 -0
  39. /package/es/icon/{iconfont.1750910542831.woff2 → iconfont.1751116737472.woff2} +0 -0
  40. /package/es/{iconfont.1750910542831.ttf → iconfont.1751116737472.ttf} +0 -0
  41. /package/es/{iconfont.1750910542831.woff → iconfont.1751116737472.woff} +0 -0
  42. /package/es/{iconfont.1750910542831.woff2 → iconfont.1751116737472.woff2} +0 -0
  43. /package/lib/icon/style/{iconfont.1750910542831.ttf → iconfont.1751116737472.ttf} +0 -0
  44. /package/lib/icon/style/{iconfont.1750910542831.woff → iconfont.1751116737472.woff} +0 -0
  45. /package/lib/icon/style/{iconfont.1750910542831.woff2 → iconfont.1751116737472.woff2} +0 -0
  46. /package/lib/{iconfont.1750910542831.ttf → iconfont.1751116737472.ttf} +0 -0
  47. /package/lib/{iconfont.1750910542831.woff → iconfont.1751116737472.woff} +0 -0
  48. /package/lib/{iconfont.1750910542831.woff2 → iconfont.1751116737472.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -4241,14 +4241,14 @@ function checkDynamic() {
4241
4241
  }
4242
4242
  ;// CONCATENATED MODULE: ./packages/ui/src/log.ts
4243
4243
 
4244
- const log_version = `ui v${"4.6.35"}`;
4244
+ const log_version = `ui v${"4.6.37"}`;
4245
4245
  const warnLog = log.create('warn', log_version);
4246
4246
  const errLog = log.create('error', log_version);
4247
4247
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
4248
4248
 
4249
4249
 
4250
4250
 
4251
- const ui_version = "4.6.35";
4251
+ const ui_version = "4.6.37";
4252
4252
  index_esm_VxeUI.uiVersion = ui_version;
4253
4253
  index_esm_VxeUI.dynamicApp = dynamicApp;
4254
4254
  function config(options) {
@@ -4771,6 +4771,8 @@ setIcon({
4771
4771
  TABLE_SELECT_OPEN: iconPrefix + 'caret-down rotate180',
4772
4772
  TABLE_SELECT_CLOSE: iconPrefix + 'caret-down',
4773
4773
  // tabs
4774
+ TABS_TAB_BUTTON_TOP: iconPrefix + 'arrow-up',
4775
+ TABS_TAB_BUTTON_BOTTOM: iconPrefix + 'arrow-down',
4774
4776
  TABS_TAB_BUTTON_LEFT: iconPrefix + 'arrow-left',
4775
4777
  TABS_TAB_BUTTON_RIGHT: iconPrefix + 'arrow-right',
4776
4778
  TABS_TAB_CLOSE: iconPrefix + 'close',
@@ -22544,17 +22546,30 @@ const ViewItemComponent = defineVxeComponent({
22544
22546
 
22545
22547
 
22546
22548
 
22549
+ const scrollbarOffsetSize = 20;
22547
22550
  /* harmony default export */ var tabs = (defineVxeComponent({
22548
22551
  name: 'VxeTabs',
22549
22552
  props: {
22550
22553
  modelValue: [String, Number, Boolean],
22551
22554
  options: Array,
22555
+ width: [String, Number],
22552
22556
  height: [String, Number],
22553
22557
  destroyOnClose: Boolean,
22554
22558
  titleWidth: [String, Number],
22555
22559
  titleAlign: [String, Number],
22556
- type: String,
22560
+ type: {
22561
+ type: String,
22562
+ default: () => getConfig().tabs.type
22563
+ },
22564
+ position: {
22565
+ type: String,
22566
+ default: () => getConfig().tabs.position
22567
+ },
22557
22568
  showClose: Boolean,
22569
+ showBody: {
22570
+ type: Boolean,
22571
+ default: true
22572
+ },
22558
22573
  padding: {
22559
22574
  type: Boolean,
22560
22575
  default: () => getConfig().tabs.padding
@@ -22576,12 +22591,18 @@ const ViewItemComponent = defineVxeComponent({
22576
22591
  const $xeParentTabs = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTabs', null);
22577
22592
  const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
22578
22593
  const refHeadWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
22594
+ const refHeadPrevElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
22595
+ const refHeadNextElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
22579
22596
  const reactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)({
22580
22597
  staticTabs: [],
22581
22598
  activeName: null,
22582
22599
  initNames: [],
22583
22600
  lintLeft: 0,
22601
+ lintTop: 0,
22584
22602
  lintWidth: 0,
22603
+ lintHeight: 0,
22604
+ scrollbarWidth: 0,
22605
+ scrollbarHeight: 0,
22585
22606
  isTabOver: false,
22586
22607
  resizeFlag: 1,
22587
22608
  cacheTabMaps: {}
@@ -22592,6 +22613,52 @@ const ViewItemComponent = defineVxeComponent({
22592
22613
  const refMaps = {
22593
22614
  refElem
22594
22615
  };
22616
+ const computeTabType = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
22617
+ const {
22618
+ type
22619
+ } = props;
22620
+ return type || 'default';
22621
+ });
22622
+ const computeTabPosition = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
22623
+ const {
22624
+ position
22625
+ } = props;
22626
+ return position || 'top';
22627
+ });
22628
+ const computeLrPosition = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
22629
+ const tabPosition = computeTabPosition.value;
22630
+ return tabPosition === 'left' || tabPosition === 'right';
22631
+ });
22632
+ const computeLineStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
22633
+ const {
22634
+ lintLeft,
22635
+ lintTop,
22636
+ lintWidth,
22637
+ lintHeight
22638
+ } = reactData;
22639
+ const lrPosition = computeLrPosition.value;
22640
+ return lrPosition ? {
22641
+ top: `${lintTop}px`,
22642
+ height: `${lintHeight}px`
22643
+ } : {
22644
+ left: `${lintLeft}px`,
22645
+ width: `${lintWidth}px`
22646
+ };
22647
+ });
22648
+ const computeWrapperStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
22649
+ const {
22650
+ width,
22651
+ height
22652
+ } = props;
22653
+ const stys = {};
22654
+ if (width) {
22655
+ stys.width = toCssUnit(width);
22656
+ }
22657
+ if (width) {
22658
+ stys.height = toCssUnit(height);
22659
+ }
22660
+ return stys;
22661
+ });
22595
22662
  const computeCloseOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
22596
22663
  return Object.assign({}, getConfig().tabs.closeConfig, props.closeConfig);
22597
22664
  });
@@ -22610,6 +22677,9 @@ const ViewItemComponent = defineVxeComponent({
22610
22677
  } = reactData;
22611
22678
  return staticTabs.filter(item => handleFilterTab(item));
22612
22679
  });
22680
+ const computeParentTabsResizeFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
22681
+ return $xeParentTabs ? $xeParentTabs.reactData.resizeFlag : null;
22682
+ });
22613
22683
  const computeMaps = {};
22614
22684
  const $xeTabs = {
22615
22685
  xID,
@@ -22641,49 +22711,118 @@ const ViewItemComponent = defineVxeComponent({
22641
22711
  }
22642
22712
  return [];
22643
22713
  };
22644
- const updateTabStyle = () => {
22645
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
22714
+ const checkScrolling = () => {
22715
+ const lrPosition = computeLrPosition.value;
22716
+ const headerWrapperEl = refHeadWrapperElem.value;
22717
+ const headPrevEl = refHeadPrevElem.value;
22718
+ const headNextEl = refHeadNextElem.value;
22719
+ if (headerWrapperEl) {
22646
22720
  const {
22647
- type
22648
- } = props;
22721
+ scrollLeft,
22722
+ scrollTop,
22723
+ clientWidth,
22724
+ clientHeight,
22725
+ scrollWidth,
22726
+ scrollHeight
22727
+ } = headerWrapperEl;
22728
+ if (headPrevEl) {
22729
+ if ((lrPosition ? scrollTop : scrollLeft) > 0) {
22730
+ addClass(headPrevEl, 'scrolling--middle');
22731
+ } else {
22732
+ removeClass(headPrevEl, 'scrolling--middle');
22733
+ }
22734
+ }
22735
+ if (headNextEl) {
22736
+ if (lrPosition ? clientHeight < scrollHeight - Math.ceil(scrollTop) : clientWidth < scrollWidth - Math.ceil(scrollLeft)) {
22737
+ addClass(headNextEl, 'scrolling--middle');
22738
+ } else {
22739
+ removeClass(headNextEl, 'scrolling--middle');
22740
+ }
22741
+ }
22742
+ }
22743
+ };
22744
+ const updateTabStyle = () => {
22745
+ const handleStyle = () => {
22649
22746
  const {
22650
22747
  activeName
22651
22748
  } = reactData;
22749
+ const tabType = computeTabType.value;
22652
22750
  const tabOptions = computeTabOptions.value;
22653
22751
  const tabStaticOptions = computeTabStaticOptions.value;
22654
22752
  const headerWrapperEl = refHeadWrapperElem.value;
22753
+ const lrPosition = computeLrPosition.value;
22655
22754
  let lintWidth = 0;
22755
+ let lintHeight = 0;
22656
22756
  let lintLeft = 0;
22757
+ let lintTop = 0;
22758
+ let sBarWidth = 0;
22759
+ let sBarHeight = 0;
22657
22760
  let isOver = false;
22658
22761
  if (headerWrapperEl) {
22659
22762
  const index = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(tabStaticOptions.length ? tabStaticOptions : tabOptions, item => item.name === activeName);
22660
22763
  const {
22661
22764
  children,
22765
+ offsetWidth,
22662
22766
  scrollWidth,
22663
- clientWidth
22767
+ offsetHeight,
22768
+ scrollHeight,
22769
+ clientWidth,
22770
+ clientHeight
22664
22771
  } = headerWrapperEl;
22665
- isOver = scrollWidth !== clientWidth;
22666
- if (index > -1) {
22667
- const tabEl = children[index];
22668
- const tabWidth = tabEl.clientWidth;
22669
- if (type) {
22670
- if (type === 'card') {
22671
- lintWidth = tabWidth + 2;
22672
- lintLeft = tabEl.offsetLeft;
22673
- } else if (type === 'border-card') {
22674
- lintWidth = tabWidth + 2;
22675
- lintLeft = tabEl.offsetLeft - 1;
22772
+ sBarWidth = offsetWidth - clientWidth;
22773
+ sBarHeight = offsetHeight - clientHeight;
22774
+ if (lrPosition) {
22775
+ isOver = scrollHeight !== clientHeight;
22776
+ if (index > -1) {
22777
+ const tabEl = children[index];
22778
+ if (tabEl) {
22779
+ const tabHeight = tabEl.clientHeight;
22780
+ const tabWidth = tabEl.clientWidth;
22781
+ if (tabType === 'card') {
22782
+ lintWidth = tabWidth;
22783
+ lintHeight = tabHeight;
22784
+ lintTop = tabEl.offsetTop;
22785
+ } else if (tabType === 'border-card') {
22786
+ lintWidth = tabWidth;
22787
+ lintHeight = tabHeight;
22788
+ lintTop = tabEl.offsetTop - 1;
22789
+ } else {
22790
+ lintHeight = Math.max(4, Math.floor(tabHeight * 0.6));
22791
+ lintTop = tabEl.offsetTop + Math.floor((tabHeight - lintHeight) / 2);
22792
+ }
22793
+ }
22794
+ }
22795
+ } else {
22796
+ isOver = scrollWidth !== clientWidth;
22797
+ if (index > -1) {
22798
+ const tabEl = children[index];
22799
+ if (tabEl) {
22800
+ const tabWidth = tabEl.clientWidth;
22801
+ if (tabType === 'card') {
22802
+ lintWidth = tabWidth + 1;
22803
+ lintLeft = tabEl.offsetLeft;
22804
+ } else if (tabType === 'border-card') {
22805
+ lintWidth = tabWidth;
22806
+ lintLeft = tabEl.offsetLeft - 1;
22807
+ } else {
22808
+ lintWidth = Math.max(4, Math.floor(tabWidth * 0.6));
22809
+ lintLeft = tabEl.offsetLeft + Math.floor((tabWidth - lintWidth) / 2);
22810
+ }
22676
22811
  }
22677
- } else {
22678
- lintWidth = Math.max(4, Math.floor(tabWidth * 0.6));
22679
- lintLeft = tabEl.offsetLeft + Math.floor((tabWidth - lintWidth) / 2);
22680
22812
  }
22681
22813
  }
22682
22814
  }
22815
+ reactData.scrollbarWidth = sBarWidth;
22816
+ reactData.scrollbarHeight = sBarHeight;
22683
22817
  reactData.lintLeft = lintLeft;
22818
+ reactData.lintTop = lintTop;
22684
22819
  reactData.lintWidth = lintWidth;
22820
+ reactData.lintHeight = lintHeight;
22685
22821
  reactData.isTabOver = isOver;
22686
- });
22822
+ checkScrolling();
22823
+ };
22824
+ handleStyle();
22825
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(handleStyle);
22687
22826
  };
22688
22827
  const dispatchEvent = (type, params, evnt) => {
22689
22828
  emit(type, createEvent(evnt, {
@@ -22877,7 +23016,9 @@ const ViewItemComponent = defineVxeComponent({
22877
23016
  const {
22878
23017
  slTimeout
22879
23018
  } = internalData;
22880
- let offsetLeft = offsetSize;
23019
+ const lrPosition = computeLrPosition.value;
23020
+ let offsetLeft = lrPosition ? 0 : offsetSize;
23021
+ let offsetTop = lrPosition ? offsetSize : 0;
22881
23022
  let scrollCount = 6;
22882
23023
  let delayNum = 35;
22883
23024
  if (slTimeout) {
@@ -22891,21 +23032,41 @@ const ViewItemComponent = defineVxeComponent({
22891
23032
  if (headerWrapperEl) {
22892
23033
  const {
22893
23034
  clientWidth,
23035
+ clientHeight,
22894
23036
  scrollWidth,
22895
- scrollLeft
23037
+ scrollHeight,
23038
+ scrollLeft,
23039
+ scrollTop
22896
23040
  } = headerWrapperEl;
22897
- offsetLeft = Math.floor(offsetLeft / 2);
22898
- if (offsetPos > 0) {
22899
- if (clientWidth + scrollLeft < scrollWidth) {
22900
- headerWrapperEl.scrollLeft += offsetLeft;
22901
- delayNum -= 4;
22902
- internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
23041
+ if (lrPosition) {
23042
+ offsetTop = Math.floor(offsetTop / 2);
23043
+ if (offsetPos > 0) {
23044
+ if (clientHeight + scrollTop < scrollHeight) {
23045
+ headerWrapperEl.scrollTop += offsetTop;
23046
+ delayNum -= 4;
23047
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
23048
+ }
23049
+ } else {
23050
+ if (scrollTop > 0) {
23051
+ headerWrapperEl.scrollTop -= offsetTop;
23052
+ delayNum -= 4;
23053
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
23054
+ }
22903
23055
  }
22904
23056
  } else {
22905
- if (scrollLeft > 0) {
22906
- headerWrapperEl.scrollLeft -= offsetLeft;
22907
- delayNum -= 4;
22908
- internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
23057
+ offsetLeft = Math.floor(offsetLeft / 2);
23058
+ if (offsetPos > 0) {
23059
+ if (clientWidth + scrollLeft < scrollWidth) {
23060
+ headerWrapperEl.scrollLeft += offsetLeft;
23061
+ delayNum -= 4;
23062
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
23063
+ }
23064
+ } else {
23065
+ if (scrollLeft > 0) {
23066
+ headerWrapperEl.scrollLeft -= offsetLeft;
23067
+ delayNum -= 4;
23068
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
23069
+ }
22909
23070
  }
22910
23071
  }
22911
23072
  updateTabStyle();
@@ -22915,9 +23076,14 @@ const ViewItemComponent = defineVxeComponent({
22915
23076
  scrollAnimate();
22916
23077
  };
22917
23078
  const handleScrollToLeft = offsetPos => {
23079
+ const lrPosition = computeLrPosition.value;
22918
23080
  const headerWrapperEl = refHeadWrapperElem.value;
22919
23081
  if (headerWrapperEl) {
22920
- const offsetSize = Math.floor(headerWrapperEl.clientWidth * 0.75);
23082
+ const {
23083
+ clientWidth,
23084
+ clientHeight
23085
+ } = headerWrapperEl;
23086
+ const offsetSize = Math.floor((lrPosition ? clientHeight : clientWidth) * 0.75);
22921
23087
  startScrollAnimation(offsetPos, offsetSize);
22922
23088
  }
22923
23089
  };
@@ -22930,6 +23096,7 @@ const ViewItemComponent = defineVxeComponent({
22930
23096
  const scrollToTab = name => {
22931
23097
  const tabOptions = computeTabOptions.value;
22932
23098
  const tabStaticOptions = computeTabStaticOptions.value;
23099
+ const lrPosition = computeLrPosition.value;
22933
23100
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
22934
23101
  const headerWrapperEl = refHeadWrapperElem.value;
22935
23102
  if (headerWrapperEl) {
@@ -22937,21 +23104,37 @@ const ViewItemComponent = defineVxeComponent({
22937
23104
  if (index > -1) {
22938
23105
  const {
22939
23106
  scrollLeft,
23107
+ scrollTop,
22940
23108
  clientWidth,
23109
+ clientHeight,
22941
23110
  children
22942
23111
  } = headerWrapperEl;
22943
23112
  const tabEl = children[index];
22944
23113
  if (tabEl) {
22945
- const tabOffsetLeft = tabEl.offsetLeft;
22946
- const tabClientWidth = tabEl.clientWidth;
22947
- // 如果右侧被挡
22948
- const overSize = tabOffsetLeft + tabClientWidth - (scrollLeft + clientWidth);
22949
- if (overSize > 0) {
22950
- headerWrapperEl.scrollLeft += overSize;
22951
- }
22952
- // 如果左侧被挡,优先
22953
- if (tabOffsetLeft < scrollLeft) {
22954
- headerWrapperEl.scrollLeft = tabOffsetLeft;
23114
+ if (lrPosition) {
23115
+ const tabOffsetTop = tabEl.offsetTop;
23116
+ const tabClientHeight = tabEl.clientHeight;
23117
+ // 如果顶部被挡
23118
+ const overSize = tabOffsetTop + tabClientHeight - (scrollTop + clientHeight);
23119
+ if (overSize > 0) {
23120
+ headerWrapperEl.scrollTop += overSize;
23121
+ }
23122
+ // 如果底部被挡,优先
23123
+ if (tabOffsetTop < scrollTop) {
23124
+ headerWrapperEl.scrollTop = tabOffsetTop;
23125
+ }
23126
+ } else {
23127
+ const tabOffsetLeft = tabEl.offsetLeft;
23128
+ const tabClientWidth = tabEl.clientWidth;
23129
+ // 如果右侧被挡
23130
+ const overSize = tabOffsetLeft + tabClientWidth - (scrollLeft + clientWidth);
23131
+ if (overSize > 0) {
23132
+ headerWrapperEl.scrollLeft += overSize;
23133
+ }
23134
+ // 如果左侧被挡,优先
23135
+ if (tabOffsetLeft < scrollLeft) {
23136
+ headerWrapperEl.scrollLeft = tabOffsetLeft;
23137
+ }
22955
23138
  }
22956
23139
  }
22957
23140
  }
@@ -23010,7 +23193,6 @@ const ViewItemComponent = defineVxeComponent({
23010
23193
  Object.assign($xeTabs, tabsMethods, tabsPrivateMethods);
23011
23194
  const renderTabHeader = tabList => {
23012
23195
  const {
23013
- type,
23014
23196
  titleWidth: allTitleWidth,
23015
23197
  titleAlign: allTitleAlign,
23016
23198
  showClose,
@@ -23019,28 +23201,47 @@ const ViewItemComponent = defineVxeComponent({
23019
23201
  } = props;
23020
23202
  const {
23021
23203
  activeName,
23022
- lintLeft,
23023
- lintWidth,
23204
+ scrollbarWidth,
23205
+ scrollbarHeight,
23024
23206
  isTabOver,
23025
23207
  cacheTabMaps
23026
23208
  } = reactData;
23027
- const extraSlot = slots.extra;
23209
+ const tabType = computeTabType.value;
23210
+ const tabPosition = computeTabPosition.value;
23211
+ const lrPosition = computeLrPosition.value;
23212
+ const lineStyle = computeLineStyle.value;
23213
+ const prefixSlot = slots.prefix;
23214
+ const suffixSlot = slots.suffix || slots.extra;
23028
23215
  const closeOpts = computeCloseOpts.value;
23029
23216
  const closeVisibleMethod = closeOpts.visibleMethod;
23030
23217
  const refreshOpts = computeRefreshOpts.value;
23031
23218
  const refreshVisibleMethod = refreshOpts.visibleMethod;
23032
23219
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23033
- class: 'vxe-tabs-header'
23034
- }, [isTabOver ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23035
- class: 'vxe-tabs-header--bar vxe-tabs-header--left-bar',
23220
+ key: 'th',
23221
+ class: ['vxe-tabs-header', `type--${tabType}`, `pos--${tabPosition}`]
23222
+ }, [prefixSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23223
+ class: ['vxe-tabs-header--prefix', `type--${tabType}`, `pos--${tabPosition}`]
23224
+ }, getSlotVNs(prefixSlot({
23225
+ name: activeName
23226
+ }))) : renderEmptyElement($xeTabs), isTabOver ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23227
+ ref: refHeadPrevElem,
23228
+ class: ['vxe-tabs-header--bar vxe-tabs-header--prev-bar', `type--${tabType}`, `pos--${tabPosition}`],
23036
23229
  onClick: scrollLeftEvent
23037
23230
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
23038
- class: getIcon().TABS_TAB_BUTTON_LEFT
23231
+ class: lrPosition ? getIcon().TABS_TAB_BUTTON_TOP : getIcon().TABS_TAB_BUTTON_LEFT
23039
23232
  })]) : renderEmptyElement($xeTabs), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23040
- class: 'vxe-tabs-header--wrapper'
23233
+ class: ['vxe-tabs-header--wrapper', `type--${tabType}`, `pos--${tabPosition}`]
23041
23234
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23042
23235
  ref: refHeadWrapperElem,
23043
- class: 'vxe-tabs-header--item-wrapper'
23236
+ class: 'vxe-tabs-header--item-wrapper',
23237
+ style: lrPosition ? {
23238
+ marginRight: `-${scrollbarWidth + scrollbarOffsetSize}px`,
23239
+ paddingRight: `${scrollbarOffsetSize}px`
23240
+ } : {
23241
+ marginBottom: `-${scrollbarHeight + scrollbarOffsetSize}px`,
23242
+ paddingBottom: `${scrollbarOffsetSize}px`
23243
+ },
23244
+ onScroll: checkScrolling
23044
23245
  }, tabList.map((item, index) => {
23045
23246
  const {
23046
23247
  title,
@@ -23064,12 +23265,12 @@ const ViewItemComponent = defineVxeComponent({
23064
23265
  const isLoading = cacheItem ? cacheItem.loading : false;
23065
23266
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23066
23267
  key: `${name}`,
23067
- class: ['vxe-tabs-header--item', itemAlign ? `align--${itemAlign}` : '', {
23268
+ class: ['vxe-tabs-header--item', `type--${tabType}`, `pos--${tabPosition}`, itemAlign ? `align--${itemAlign}` : '', {
23068
23269
  'is--active': isActive
23069
23270
  }],
23070
23271
  style: itemWidth ? {
23071
23272
  width: toCssUnit(itemWidth)
23072
- } : null,
23273
+ } : undefined,
23073
23274
  onClick(evnt) {
23074
23275
  clickEvent(evnt, item);
23075
23276
  }
@@ -23086,15 +23287,19 @@ const ViewItemComponent = defineVxeComponent({
23086
23287
  }, titleSlot ? callSlot(titleSlot, {
23087
23288
  name,
23088
23289
  title
23089
- }) : `${title}`)]), (isEnableConf(refreshConfig) || refreshOpts.enabled) && (refreshVisibleMethod ? refreshVisibleMethod(params) : isActive) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23090
- class: 'vxe-tabs-header--refresh-btn',
23290
+ }) : `${title}`)]), (isEnableConf(refreshConfig) || refreshOpts.enabled) && (refreshVisibleMethod ? refreshVisibleMethod(params) : true) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23291
+ class: ['vxe-tabs-header--refresh-btn', {
23292
+ 'is--active': isActive
23293
+ }],
23091
23294
  onClick(evnt) {
23092
23295
  handleRefreshTabEvent(evnt, item);
23093
23296
  }
23094
23297
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
23095
23298
  class: isLoading ? getIcon().TABS_TAB_REFRESH_LOADING : getIcon().TABS_TAB_REFRESH
23096
23299
  })]) : renderEmptyElement($xeTabs), (showClose || isEnableConf(closeConfig) || closeOpts.enabled) && (!closeVisibleMethod || closeVisibleMethod(params)) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23097
- class: 'vxe-tabs-header--close-btn',
23300
+ class: ['vxe-tabs-header--close-btn', {
23301
+ 'is--active': isActive
23302
+ }],
23098
23303
  onClick(evnt) {
23099
23304
  handleCloseTabEvent(evnt, item, index, tabList);
23100
23305
  }
@@ -23103,19 +23308,19 @@ const ViewItemComponent = defineVxeComponent({
23103
23308
  })]) : renderEmptyElement($xeTabs)])]);
23104
23309
  }).concat([(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
23105
23310
  key: 'line',
23106
- class: `vxe-tabs-header--active-line type--${type || 'default'}`,
23107
- style: {
23108
- left: `${lintLeft}px`,
23109
- width: `${lintWidth}px`
23110
- }
23311
+ class: ['vxe-tabs-header--active-line', `type--${tabType}`, `pos--${tabPosition}`],
23312
+ style: lineStyle
23111
23313
  })]))]), isTabOver ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23112
- class: 'vxe-tabs-header--bar vxe-tabs-header--right-bar',
23314
+ ref: refHeadNextElem,
23315
+ class: ['vxe-tabs-header--bar vxe-tabs-header--next-bar', `type--${tabType}`, `pos--${tabPosition}`],
23113
23316
  onClick: scrollRightEvent
23114
23317
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
23115
- class: getIcon().TABS_TAB_BUTTON_RIGHT
23116
- })]) : renderEmptyElement($xeTabs), extraSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23117
- class: 'vxe-tabs-header--extra'
23118
- }, getSlotVNs(extraSlot({}))) : renderEmptyElement($xeTabs)]);
23318
+ class: lrPosition ? getIcon().TABS_TAB_BUTTON_BOTTOM : getIcon().TABS_TAB_BUTTON_RIGHT
23319
+ })]) : renderEmptyElement($xeTabs), suffixSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23320
+ class: ['vxe-tabs-header--suffix', `type--${tabType}`, `pos--${tabPosition}`]
23321
+ }, getSlotVNs(suffixSlot({
23322
+ name: activeName
23323
+ }))) : renderEmptyElement($xeTabs)]);
23119
23324
  };
23120
23325
  const renderTabPane = item => {
23121
23326
  const {
@@ -23130,64 +23335,106 @@ const ViewItemComponent = defineVxeComponent({
23130
23335
  return name && initNames.includes(name) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23131
23336
  key: `${name}`,
23132
23337
  class: ['vxe-tabs-pane--item', {
23133
- 'is--visible': activeName === name,
23134
- 'has--content': !!defaultSlot
23338
+ 'is--visible': activeName === name
23135
23339
  }]
23136
23340
  }, defaultSlot ? callSlot(defaultSlot, {
23137
23341
  name
23138
23342
  }) : []) : renderEmptyElement($xeTabs);
23139
23343
  };
23140
- const renderTabContent = tabList => {
23344
+ const renderTabContent = (tabList, activeTab) => {
23141
23345
  const {
23142
23346
  destroyOnClose
23143
23347
  } = props;
23348
+ if (destroyOnClose) {
23349
+ return [activeTab ? renderTabPane(activeTab) : renderEmptyElement($xeTabs)];
23350
+ }
23351
+ return tabList.map(item => renderTabPane(item));
23352
+ };
23353
+ const rendetTabBody = tabList => {
23354
+ const {
23355
+ height,
23356
+ padding,
23357
+ showBody
23358
+ } = props;
23144
23359
  const {
23145
23360
  activeName
23146
23361
  } = reactData;
23362
+ const tabType = computeTabType.value;
23363
+ const tabPosition = computeTabPosition.value;
23364
+ const headerpSlot = slots.header;
23365
+ const footerSlot = slots.footer;
23366
+ const defParams = {
23367
+ name: activeName
23368
+ };
23147
23369
  const activeDefaultTab = tabList.find(item => item.name === activeName);
23148
- if (destroyOnClose) {
23149
- return [activeDefaultTab ? renderTabPane(activeDefaultTab) : renderEmptyElement($xeTabs)];
23370
+ let hasContent = false;
23371
+ if (activeDefaultTab) {
23372
+ const {
23373
+ slots
23374
+ } = activeDefaultTab;
23375
+ hasContent = !!(slots && slots.default);
23150
23376
  }
23151
- return tabList.map(item => renderTabPane(item));
23377
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23378
+ key: 'tb',
23379
+ class: ['vxe-tabs-pane--wrapper', `type--${tabType}`, `pos--${tabPosition}`, {
23380
+ 'is--content': showBody === false ? showBody : hasContent
23381
+ }]
23382
+ }, [headerpSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23383
+ class: 'vxe-tabs-pane--header'
23384
+ }, callSlot(headerpSlot, defParams)) : renderEmptyElement($xeTabs), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23385
+ class: ['vxe-tabs-pane--body', `type--${tabType}`, `pos--${tabPosition}`, {
23386
+ 'is--padding': padding,
23387
+ 'is--height': height
23388
+ }]
23389
+ }, renderTabContent(tabList, activeDefaultTab)), footerSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23390
+ class: 'vxe-tabs-pane--footer'
23391
+ }, callSlot(footerSlot, defParams)) : renderEmptyElement($xeTabs)]);
23152
23392
  };
23153
23393
  const renderVN = () => {
23154
23394
  const {
23155
- type,
23156
23395
  height,
23157
23396
  padding,
23158
23397
  trigger
23159
23398
  } = props;
23399
+ const {
23400
+ activeName
23401
+ } = reactData;
23160
23402
  const tabOptions = computeTabOptions.value;
23161
23403
  const tabStaticOptions = computeTabStaticOptions.value;
23404
+ const tabType = computeTabType.value;
23405
+ const tabPosition = computeTabPosition.value;
23406
+ const wrapperStyle = computeWrapperStyle.value;
23162
23407
  const defaultSlot = slots.default;
23163
- const footerSlot = slots.footer;
23164
23408
  const tabList = defaultSlot ? tabStaticOptions : tabOptions;
23409
+ const vns = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23410
+ key: 'ts',
23411
+ class: 'vxe-tabs-slots'
23412
+ }, defaultSlot ? defaultSlot({
23413
+ name: activeName
23414
+ }) : [])];
23415
+ if (tabPosition === 'right' || tabPosition === 'bottom') {
23416
+ vns.push(rendetTabBody(tabList), renderTabHeader(tabList));
23417
+ } else {
23418
+ vns.push(renderTabHeader(tabList), rendetTabBody(tabList));
23419
+ }
23165
23420
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23166
23421
  ref: refElem,
23167
- class: ['vxe-tabs', `vxe-tabs--${type || 'default'}`, `trigger--${trigger === 'manual' ? 'trigger' : 'default'}`, {
23422
+ class: ['vxe-tabs', `pos--${tabPosition}`, `vxe-tabs--${tabType}`, `trigger--${trigger === 'manual' ? 'trigger' : 'default'}`, {
23168
23423
  'is--padding': padding,
23169
23424
  'is--height': height
23170
23425
  }],
23171
- style: height ? {
23172
- height: toCssUnit(height)
23173
- } : null
23174
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23175
- class: 'vxe-tabs-slots'
23176
- }, defaultSlot ? defaultSlot({}) : []), renderTabHeader(tabList), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23177
- class: 'vxe-tabs-pane'
23178
- }, renderTabContent(tabList)), footerSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
23179
- class: 'vxe-tabs-footer'
23180
- }, callSlot(footerSlot, {})) : renderEmptyElement($xeTabs)]);
23426
+ style: wrapperStyle
23427
+ }, vns);
23181
23428
  };
23429
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.position, () => {
23430
+ reactData.resizeFlag++;
23431
+ });
23182
23432
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.modelValue, val => {
23183
23433
  addInitName(val, null);
23184
23434
  reactData.activeName = val;
23185
23435
  });
23186
23436
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => reactData.activeName, val => {
23187
23437
  scrollToTab(val);
23188
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
23189
- reactData.resizeFlag++;
23190
- });
23191
23438
  });
23192
23439
  const optsFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
23193
23440
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.options ? props.options.length : -1, () => {
@@ -23198,7 +23445,7 @@ const ViewItemComponent = defineVxeComponent({
23198
23445
  });
23199
23446
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(optsFlag, () => {
23200
23447
  initDefaultName(props.options);
23201
- updateTabStyle();
23448
+ reactData.resizeFlag++;
23202
23449
  });
23203
23450
  const stFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
23204
23451
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => reactData.staticTabs ? reactData.staticTabs.length : -1, () => {
@@ -23209,21 +23456,19 @@ const ViewItemComponent = defineVxeComponent({
23209
23456
  });
23210
23457
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(stFlag, () => {
23211
23458
  initDefaultName(reactData.staticTabs);
23212
- updateTabStyle();
23459
+ reactData.resizeFlag++;
23460
+ });
23461
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeParentTabsResizeFlag, () => {
23462
+ reactData.resizeFlag++;
23213
23463
  });
23214
- if ($xeParentTabs) {
23215
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => $xeParentTabs ? $xeParentTabs.reactData.resizeFlag : null, () => {
23216
- reactData.resizeFlag++;
23217
- });
23218
- }
23219
23464
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => reactData.resizeFlag, () => {
23220
23465
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
23221
23466
  updateTabStyle();
23222
23467
  });
23223
23468
  });
23224
23469
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
23225
- globalEvents.on($xeTabs, 'resize', updateTabStyle);
23226
23470
  updateTabStyle();
23471
+ globalEvents.on($xeTabs, 'resize', updateTabStyle);
23227
23472
  });
23228
23473
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
23229
23474
  globalEvents.off($xeTabs, 'resize');
@@ -45037,6 +45282,7 @@ const Modal = VxeModal;
45037
45282
  slots,
45038
45283
  emit
45039
45284
  } = context;
45285
+ const $xeTabs = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTabs', null);
45040
45286
  const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
45041
45287
  const {
45042
45288
  computeSize
@@ -45055,6 +45301,9 @@ const Modal = VxeModal;
45055
45301
  } = props;
45056
45302
  return `${content || ''}`;
45057
45303
  });
45304
+ const computeTabsResizeFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
45305
+ return $xeTabs ? $xeTabs.reactData.resizeFlag : null;
45306
+ });
45058
45307
  const computeMaps = {};
45059
45308
  const $xeNoticeBar = {
45060
45309
  xID,
@@ -45124,7 +45373,9 @@ const Modal = VxeModal;
45124
45373
  class: 'vxe-notice-bar--suffix'
45125
45374
  }, suffixSlot({})) : renderEmptyElement($xeNoticeBar)]);
45126
45375
  };
45127
- $xeNoticeBar.renderVN = renderVN;
45376
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeTabsResizeFlag, () => {
45377
+ updateAnimationStyle();
45378
+ });
45128
45379
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
45129
45380
  globalEvents.on($xeNoticeBar, 'resize', updateAnimationStyle);
45130
45381
  updateAnimationStyle();
@@ -45132,6 +45383,7 @@ const Modal = VxeModal;
45132
45383
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(() => {
45133
45384
  globalEvents.off($xeNoticeBar, 'resize');
45134
45385
  });
45386
+ $xeNoticeBar.renderVN = renderVN;
45135
45387
  return $xeNoticeBar;
45136
45388
  },
45137
45389
  render() {