@douyinfe/semi-ui 2.58.0-beta.0 → 2.58.1

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 (73) hide show
  1. package/dist/css/semi.css +108 -29
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +105 -31
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/_base/base.css +2 -2
  8. package/lib/cjs/button/Button.d.ts +1 -1
  9. package/lib/cjs/button/Button.js +1 -0
  10. package/lib/cjs/locale/interface.d.ts +3 -0
  11. package/lib/cjs/locale/source/ar.js +3 -0
  12. package/lib/cjs/locale/source/de.js +3 -0
  13. package/lib/cjs/locale/source/en_GB.js +3 -0
  14. package/lib/cjs/locale/source/en_US.js +3 -0
  15. package/lib/cjs/locale/source/es.js +3 -0
  16. package/lib/cjs/locale/source/fr.js +3 -0
  17. package/lib/cjs/locale/source/id_ID.js +3 -0
  18. package/lib/cjs/locale/source/it.js +3 -0
  19. package/lib/cjs/locale/source/ja_JP.js +3 -0
  20. package/lib/cjs/locale/source/ko_KR.js +3 -0
  21. package/lib/cjs/locale/source/ms_MY.js +3 -0
  22. package/lib/cjs/locale/source/nl_NL.js +3 -0
  23. package/lib/cjs/locale/source/pl_PL.js +3 -0
  24. package/lib/cjs/locale/source/pt_BR.js +3 -0
  25. package/lib/cjs/locale/source/ro.js +3 -0
  26. package/lib/cjs/locale/source/ru_RU.js +3 -0
  27. package/lib/cjs/locale/source/sv_SE.js +3 -0
  28. package/lib/cjs/locale/source/th_TH.js +3 -0
  29. package/lib/cjs/locale/source/tr_TR.js +3 -0
  30. package/lib/cjs/locale/source/vi_VN.js +3 -0
  31. package/lib/cjs/locale/source/zh_CN.js +3 -0
  32. package/lib/cjs/locale/source/zh_TW.js +3 -0
  33. package/lib/cjs/slider/index.js +13 -8
  34. package/lib/cjs/tabs/TabBar.d.ts +7 -0
  35. package/lib/cjs/tabs/TabBar.js +78 -18
  36. package/lib/cjs/tabs/TabItem.js +3 -1
  37. package/lib/cjs/tabs/index.d.ts +1 -0
  38. package/lib/cjs/tabs/index.js +7 -4
  39. package/lib/cjs/tabs/interface.d.ts +7 -0
  40. package/lib/es/_base/base.css +2 -2
  41. package/lib/es/button/Button.d.ts +1 -1
  42. package/lib/es/button/Button.js +1 -0
  43. package/lib/es/locale/interface.d.ts +3 -0
  44. package/lib/es/locale/source/ar.js +3 -0
  45. package/lib/es/locale/source/de.js +3 -0
  46. package/lib/es/locale/source/en_GB.js +3 -0
  47. package/lib/es/locale/source/en_US.js +3 -0
  48. package/lib/es/locale/source/es.js +3 -0
  49. package/lib/es/locale/source/fr.js +3 -0
  50. package/lib/es/locale/source/id_ID.js +3 -0
  51. package/lib/es/locale/source/it.js +3 -0
  52. package/lib/es/locale/source/ja_JP.js +3 -0
  53. package/lib/es/locale/source/ko_KR.js +3 -0
  54. package/lib/es/locale/source/ms_MY.js +3 -0
  55. package/lib/es/locale/source/nl_NL.js +3 -0
  56. package/lib/es/locale/source/pl_PL.js +3 -0
  57. package/lib/es/locale/source/pt_BR.js +3 -0
  58. package/lib/es/locale/source/ro.js +3 -0
  59. package/lib/es/locale/source/ru_RU.js +3 -0
  60. package/lib/es/locale/source/sv_SE.js +3 -0
  61. package/lib/es/locale/source/th_TH.js +3 -0
  62. package/lib/es/locale/source/tr_TR.js +3 -0
  63. package/lib/es/locale/source/vi_VN.js +3 -0
  64. package/lib/es/locale/source/zh_CN.js +3 -0
  65. package/lib/es/locale/source/zh_TW.js +3 -0
  66. package/lib/es/slider/index.js +13 -8
  67. package/lib/es/tabs/TabBar.d.ts +7 -0
  68. package/lib/es/tabs/TabBar.js +79 -19
  69. package/lib/es/tabs/TabItem.js +3 -1
  70. package/lib/es/tabs/index.d.ts +1 -0
  71. package/lib/es/tabs/index.js +7 -4
  72. package/lib/es/tabs/interface.d.ts +7 -0
  73. package/package.json +8 -8
@@ -21460,6 +21460,9 @@ const local = {
21460
21460
  confirm: '确定',
21461
21461
  cancel: '取消'
21462
21462
  },
21463
+ Tabs: {
21464
+ more: "更多"
21465
+ },
21463
21466
  TimePicker: {
21464
21467
  placeholder: {
21465
21468
  time: '请选择时间',
@@ -27929,6 +27932,7 @@ class Button_Button extends external_root_React_commonjs2_react_commonjs_react_a
27929
27932
  [`${prefixCls}-block`]: block,
27930
27933
  [`${prefixCls}-circle`]: circle,
27931
27934
  [`${prefixCls}-borderless`]: theme === 'borderless',
27935
+ [`${prefixCls}-outline`]: theme === "outline",
27932
27936
  [`${prefixCls}-${type}-disabled`]: disabled && type
27933
27937
  }, className),
27934
27938
  type: htmlType,
@@ -76644,11 +76648,11 @@ class Slider extends BaseComponent {
76644
76648
  const minPercent = percentInfo.min;
76645
76649
  const maxPercent = percentInfo.max;
76646
76650
  let trackStyle = !vertical ? {
76647
- width: range ? `${(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
76648
- left: range ? `${minPercent * 100}%` : 0
76651
+ width: range ? `${Math.abs(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
76652
+ left: range ? `${Math.min(minPercent, maxPercent) * 100}%` : 0
76649
76653
  } : {
76650
- height: range ? `${(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
76651
- top: range ? `${minPercent * 100}%` : 0
76654
+ height: range ? `${Math.abs(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
76655
+ top: range ? `${Math.min(minPercent, maxPercent) * 100}%` : 0
76652
76656
  };
76653
76657
  trackStyle = included ? trackStyle : {};
76654
76658
  return (
@@ -76763,11 +76767,13 @@ class Slider extends BaseComponent {
76763
76767
  var _this = this;
76764
76768
  return Object.assign(Object.assign({}, super.adapter), {
76765
76769
  getSliderLengths: () => {
76770
+ var _a;
76766
76771
  if (this.sliderEl && this.sliderEl.current) {
76767
76772
  const rect = this.sliderEl.current.getBoundingClientRect();
76773
+ const offsetParentRect = (_a = this.sliderEl.current.offsetParent) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
76768
76774
  const offset = {
76769
- x: this.sliderEl.current.offsetLeft,
76770
- y: this.sliderEl.current.offsetTop
76775
+ x: offsetParentRect ? rect.left - offsetParentRect.left : this.sliderEl.current.offsetLeft,
76776
+ y: offsetParentRect ? rect.top - offsetParentRect.top : this.sliderEl.current.offsetTop
76771
76777
  };
76772
76778
  return {
76773
76779
  sliderX: offset.x,
@@ -76824,7 +76830,9 @@ class Slider extends BaseComponent {
76824
76830
  let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (noop_default());
76825
76831
  this.setState(stateObj, callback);
76826
76832
  },
76827
- notifyChange: cbValue => this.props.onChange(cbValue),
76833
+ notifyChange: cbValue => {
76834
+ this.props.onChange(Array.isArray(cbValue) ? [...cbValue].sort() : cbValue);
76835
+ },
76828
76836
  setDragging: value => {
76829
76837
  this.dragging = value;
76830
76838
  },
@@ -76977,7 +76985,8 @@ class Slider extends BaseComponent {
76977
76985
  [`${slider_prefixCls}`]: !vertical,
76978
76986
  [slider_constants_cssClasses.VERTICAL]: vertical
76979
76987
  });
76980
- const ariaLabel = range ? `Range: ${this._getAriaValueText(currentValue[0], 0)} to ${this._getAriaValueText(currentValue[1], 1)}` : undefined;
76988
+ const fixedCurrentValue = Array.isArray(currentValue) ? [...currentValue].sort() : currentValue;
76989
+ const ariaLabel = range ? `Range: ${this._getAriaValueText(fixedCurrentValue[0], 0)} to ${this._getAriaValueText(fixedCurrentValue[1], 1)}` : undefined;
76981
76990
  const slider = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", Object.assign({
76982
76991
  className: wrapperClass,
76983
76992
  style: style,
@@ -84887,7 +84896,9 @@ const TabItem = (props, ref) => {
84887
84896
  onClick: e => deleteTabItem(itemKey, e)
84888
84897
  }) : null;
84889
84898
  }, [type, closable, deleteTabItem, itemKey]);
84890
- const renderIcon = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(icon => /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", null, icon), []);
84899
+ const renderIcon = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(icon => /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", {
84900
+ className: `${tabs_constants_cssClasses.TABS_BAR}-icon`
84901
+ }, icon), []);
84891
84902
  const handleKeyDownInItem = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(event => {
84892
84903
  handleKeyDown && handleKeyDown(event, itemKey, closable);
84893
84904
  }, [handleKeyDown, itemKey, closable]);
@@ -84945,20 +84956,14 @@ var TabBar_rest = undefined && undefined.__rest || function (s, e) {
84945
84956
 
84946
84957
 
84947
84958
 
84959
+
84948
84960
  class TabBar extends (external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Component {
84949
84961
  constructor(props) {
84962
+ var _this;
84950
84963
  super(props);
84964
+ _this = this;
84951
84965
  this.handleItemClick = (itemKey, e) => {
84952
84966
  this.props.onTabClick(itemKey, e);
84953
- if (this.props.collapsible) {
84954
- const key = this._getItemKey(itemKey);
84955
- const tabItem = document.querySelector(`[data-uuid="${this.state.uuid}"] .${tabs_constants_cssClasses.TABS_TAB}[data-scrollkey="${key}"]`);
84956
- tabItem.scrollIntoView({
84957
- behavior: 'smooth',
84958
- block: 'nearest',
84959
- inline: 'nearest'
84960
- });
84961
- }
84962
84967
  };
84963
84968
  this.handleKeyDown = (event, itemKey, closable) => {
84964
84969
  this.props.handleKeyDown(event, itemKey, closable);
@@ -84983,6 +84988,19 @@ class TabBar extends (external_root_React_commonjs2_react_commonjs_react_amd_rea
84983
84988
  onClick: this.handleItemClick
84984
84989
  }));
84985
84990
  };
84991
+ this.scrollTabItemIntoViewByKey = function (key) {
84992
+ let logicalPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'nearest';
84993
+ const tabItem = document.querySelector(`[data-uuid="${_this.state.uuid}"] .${tabs_constants_cssClasses.TABS_TAB}[data-scrollkey="${key}"]`);
84994
+ tabItem === null || tabItem === void 0 ? void 0 : tabItem.scrollIntoView({
84995
+ behavior: 'smooth',
84996
+ block: logicalPosition,
84997
+ inline: logicalPosition
84998
+ });
84999
+ };
85000
+ this.scrollActiveTabItemIntoView = logicalPosition => {
85001
+ const key = this._getItemKey(this.props.activeKey);
85002
+ this.scrollTabItemIntoViewByKey(key, logicalPosition);
85003
+ };
84986
85004
  this.renderTabComponents = list => list.map(panel => this.renderTabItem(panel));
84987
85005
  this.handleArrowClick = (items, pos) => {
84988
85006
  const lastItem = pos === 'start' ? items.pop() : items.shift();
@@ -84990,12 +85008,7 @@ class TabBar extends (external_root_React_commonjs2_react_commonjs_react_amd_rea
84990
85008
  return;
84991
85009
  }
84992
85010
  const key = this._getItemKey(lastItem.itemKey);
84993
- const tabItem = document.querySelector(`[data-uuid="${this.state.uuid}"] .${tabs_constants_cssClasses.TABS_TAB}[data-scrollkey="${key}"]`);
84994
- tabItem.scrollIntoView({
84995
- behavior: 'smooth',
84996
- block: 'nearest',
84997
- inline: 'nearest'
84998
- });
85011
+ this.scrollTabItemIntoViewByKey(key);
84999
85012
  };
85000
85013
  this.renderCollapse = (items, icon, pos) => {
85001
85014
  if (isEmpty_default()(items)) {
@@ -85082,6 +85095,55 @@ class TabBar extends (external_root_React_commonjs2_react_commonjs_react_amd_rea
85082
85095
  visibleItemRenderer: this.renderTabItem
85083
85096
  });
85084
85097
  };
85098
+ this.renderWithMoreTrigger = () => {
85099
+ const {
85100
+ list,
85101
+ more
85102
+ } = this.props;
85103
+ let tabElements = [];
85104
+ let moreTrigger = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
85105
+ className: classnames_default()({
85106
+ [`${tabs_constants_cssClasses.TABS_BAR}-more-trigger`]: true,
85107
+ [`${tabs_constants_cssClasses.TABS_BAR}-more-trigger-${this.props.type}`]: true
85108
+ })
85109
+ }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LocaleConsumer, {
85110
+ componentName: "Tabs"
85111
+ }, (locale, localeCode) => /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", {
85112
+ className: `${tabs_constants_cssClasses.TABS_BAR}-more-trigger-content`
85113
+ }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", null, locale.more), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(IconChevronDown, {
85114
+ className: `${tabs_constants_cssClasses.TABS_BAR}-more-trigger-content-icon`
85115
+ }))));
85116
+ let keepCount;
85117
+ if (typeof more === "number") {
85118
+ keepCount = list.length - Math.min(more, list.length);
85119
+ tabElements = list.slice(0, keepCount).map(panel => this.renderTabItem(panel));
85120
+ } else if (typeof more === 'object') {
85121
+ keepCount = list.length - Math.min(more.count, list.length);
85122
+ tabElements = list.slice(0, keepCount).map(panel => this.renderTabItem(panel));
85123
+ if (more.render) {
85124
+ moreTrigger = more.render();
85125
+ }
85126
+ } else if (more !== undefined) {
85127
+ throw new Error("[Semi Tabs]: invalid tab props format: more");
85128
+ }
85129
+ return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, tabElements, this.renderMoreDropdown(list.slice(keepCount), more === null || more === void 0 ? void 0 : more['dropdownProps'], moreTrigger));
85130
+ };
85131
+ this.renderMoreDropdown = (panels, dropDownProps, trigger) => {
85132
+ return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(dropdown_0, Object.assign({
85133
+ trigger: 'hover',
85134
+ showTick: true,
85135
+ position: 'bottomLeft',
85136
+ className: `${tabs_constants_cssClasses.TABS_BAR}-more-dropdown-${this.props.type}`,
85137
+ clickToHide: true,
85138
+ menu: panels.map(panel => ({
85139
+ node: 'item',
85140
+ name: panel.tab,
85141
+ icon: panel.icon,
85142
+ onClick: e => this.props.onTabClick(panel.itemKey, e),
85143
+ active: this.props.activeKey === panel.itemKey
85144
+ }))
85145
+ }, dropDownProps), trigger);
85146
+ };
85085
85147
  this._isActive = key => key === this.props.activeKey;
85086
85148
  this._getItemKey = key => `${key}-bar`;
85087
85149
  this.state = {
@@ -85096,6 +85158,13 @@ class TabBar extends (external_root_React_commonjs2_react_commonjs_react_amd_rea
85096
85158
  uuid: getUuidv4()
85097
85159
  });
85098
85160
  }
85161
+ componentDidUpdate(prevProps) {
85162
+ if (prevProps.activeKey !== this.props.activeKey) {
85163
+ if (this.props.collapsible) {
85164
+ this.scrollActiveTabItemIntoView();
85165
+ }
85166
+ }
85167
+ }
85099
85168
  renderIcon(icon) {
85100
85169
  return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", null, icon);
85101
85170
  }
@@ -85131,9 +85200,10 @@ class TabBar extends (external_root_React_commonjs2_react_commonjs_react_amd_rea
85131
85200
  className,
85132
85201
  list,
85133
85202
  tabPosition,
85203
+ more,
85134
85204
  collapsible
85135
85205
  } = _a,
85136
- restProps = TabBar_rest(_a, ["type", "style", "className", "list", "tabPosition", "collapsible"]);
85206
+ restProps = TabBar_rest(_a, ["type", "style", "className", "list", "tabPosition", "more", "collapsible"]);
85137
85207
  const classNames = classnames_default()(className, {
85138
85208
  [tabs_constants_cssClasses.TABS_BAR]: true,
85139
85209
  [tabs_constants_cssClasses.TABS_BAR_LINE]: type === 'line',
@@ -85143,7 +85213,7 @@ class TabBar extends (external_root_React_commonjs2_react_commonjs_react_amd_rea
85143
85213
  [`${tabs_constants_cssClasses.TABS_BAR}-collapse`]: collapsible
85144
85214
  });
85145
85215
  const extra = this.renderExtra();
85146
- const contents = collapsible ? this.renderCollapsedTab() : this.renderTabComponents(list);
85216
+ const contents = collapsible ? this.renderCollapsedTab() : more ? this.renderWithMoreTrigger() : this.renderTabComponents(list);
85147
85217
  return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", Object.assign({
85148
85218
  role: "tablist",
85149
85219
  "aria-orientation": tabPosition === "left" ? "vertical" : "horizontal",
@@ -85166,7 +85236,8 @@ TabBar.propTypes = {
85166
85236
  tabPosition: prop_types_default().oneOf(tabs_constants_strings.POSITION_MAP),
85167
85237
  type: prop_types_default().oneOf(tabs_constants_strings.TYPE_MAP),
85168
85238
  closable: (prop_types_default()).bool,
85169
- deleteTabItem: (prop_types_default()).func
85239
+ deleteTabItem: (prop_types_default()).func,
85240
+ more: prop_types_default().oneOfType([(prop_types_default()).number, (prop_types_default()).object])
85170
85241
  };
85171
85242
  /* harmony default export */ const tabs_TabBar = (TabBar);
85172
85243
  ;// CONCATENATED MODULE: ./tabs/tabs-context.ts
@@ -85525,9 +85596,10 @@ class Tabs extends BaseComponent {
85525
85596
  tabBarStyle,
85526
85597
  tabPaneMotion,
85527
85598
  tabPosition,
85528
- type
85599
+ type,
85600
+ more
85529
85601
  } = _a,
85530
- restProps = tabs_rest(_a, ["children", "className", "collapsible", "contentStyle", "keepDOM", "lazyRender", "renderTabBar", "size", "style", "tabBarClassName", "tabBarExtraContent", "tabBarStyle", "tabPaneMotion", "tabPosition", "type"]);
85602
+ restProps = tabs_rest(_a, ["children", "className", "collapsible", "contentStyle", "keepDOM", "lazyRender", "renderTabBar", "size", "style", "tabBarClassName", "tabBarExtraContent", "tabBarStyle", "tabPaneMotion", "tabPosition", "type", "more"]);
85531
85603
  const {
85532
85604
  panes,
85533
85605
  activeKey
@@ -85552,7 +85624,8 @@ class Tabs extends BaseComponent {
85552
85624
  tabPosition,
85553
85625
  type,
85554
85626
  deleteTabItem: this.deleteTabItem,
85555
- handleKeyDown: this.foundation.handleKeyDown
85627
+ handleKeyDown: this.foundation.handleKeyDown,
85628
+ more
85556
85629
  };
85557
85630
  const tabBar = renderTabBar ? renderTabBar(tabBarProps, tabs_TabBar) : /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(tabs_TabBar, Object.assign({}, tabBarProps));
85558
85631
  const content = keepDOM ? children : this.getActiveItem();
@@ -85599,7 +85672,8 @@ Tabs.propTypes = {
85599
85672
  tabPosition: prop_types_default().oneOf(tabs_constants_strings.POSITION_MAP),
85600
85673
  type: prop_types_default().oneOf(tabs_constants_strings.TYPE_MAP),
85601
85674
  onTabClose: (prop_types_default()).func,
85602
- preventScroll: (prop_types_default()).bool
85675
+ preventScroll: (prop_types_default()).bool,
85676
+ more: prop_types_default().oneOfType([(prop_types_default()).number, (prop_types_default()).object])
85603
85677
  };
85604
85678
  Tabs.__SemiComponentName__ = "Tabs";
85605
85679
  Tabs.defaultProps = getDefaultPropsFromGlobalConfig(Tabs.__SemiComponentName__, {