@douyinfe/semi-ui 2.27.0-alpha.0 → 2.27.0-alpha.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.
@@ -12,7 +12,7 @@ declare class CarouselIndicator extends React.PureComponent<CarouselIndicatorPro
12
12
  total: PropTypes.Requireable<number>;
13
13
  onIndicatorChange: PropTypes.Requireable<(...args: any[]) => any>;
14
14
  type: PropTypes.Requireable<"line" | "dot" | "columnar">;
15
- trigger: PropTypes.Requireable<"click" | "hover">;
15
+ trigger: PropTypes.Requireable<"hover" | "click">;
16
16
  };
17
17
  onIndicatorChange: (activeIndex: number) => void;
18
18
  handleIndicatorClick: (activeIndex: number) => void;
@@ -30,7 +30,7 @@ declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
30
30
  slideDirection: PropTypes.Requireable<"left" | "right">;
31
31
  speed: PropTypes.Requireable<number>;
32
32
  style: PropTypes.Requireable<object>;
33
- trigger: PropTypes.Requireable<"click" | "hover">;
33
+ trigger: PropTypes.Requireable<"hover" | "click">;
34
34
  };
35
35
  static defaultProps: CarouselProps;
36
36
  foundation: CarouselFoundation;
@@ -110,7 +110,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
110
110
  zIndex: PropTypes.Requireable<number>;
111
111
  value: PropTypes.Requireable<NonNullable<string | number | any[]>>;
112
112
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
113
- showNext: PropTypes.Requireable<"click" | "hover">;
113
+ showNext: PropTypes.Requireable<"hover" | "click">;
114
114
  stopPropagation: PropTypes.Requireable<NonNullable<string | boolean>>;
115
115
  showClear: PropTypes.Requireable<boolean>;
116
116
  defaultOpen: PropTypes.Requireable<boolean>;
@@ -48,7 +48,7 @@ export default class Item extends PureComponent<CascaderItemProps> {
48
48
  onItemClick: PropTypes.Requireable<(...args: any[]) => any>;
49
49
  onItemHover: PropTypes.Requireable<(...args: any[]) => any>;
50
50
  multiple: PropTypes.Requireable<boolean>;
51
- showNext: PropTypes.Requireable<"click" | "hover">;
51
+ showNext: PropTypes.Requireable<"hover" | "click">;
52
52
  checkedKeys: PropTypes.Requireable<object>;
53
53
  halfCheckedKeys: PropTypes.Requireable<object>;
54
54
  onItemCheckboxClick: PropTypes.Requireable<(...args: any[]) => any>;
@@ -26,7 +26,7 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
26
26
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  value: PropTypes.Requireable<any[]>;
28
28
  disabled: PropTypes.Requireable<boolean>;
29
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
29
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
30
30
  showClear: PropTypes.Requireable<boolean>;
31
31
  format: PropTypes.Requireable<string>;
32
32
  inputStyle: PropTypes.Requireable<object>;
@@ -46,7 +46,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
46
46
  'aria-invalid': PropTypes.Requireable<boolean>;
47
47
  'aria-labelledby': PropTypes.Requireable<string>;
48
48
  'aria-required': PropTypes.Requireable<boolean>;
49
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
49
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
50
50
  size: PropTypes.Requireable<"small" | "default" | "large">;
51
51
  clearIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
52
52
  density: PropTypes.Requireable<"default" | "compact">;
@@ -19,7 +19,7 @@ export interface MonthsGridProps extends MonthsGridFoundationProps, BaseProps {
19
19
  export declare type MonthsGridState = MonthsGridFoundationState;
20
20
  export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGridState> {
21
21
  static propTypes: {
22
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
22
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
23
23
  defaultValue: PropTypes.Requireable<NonNullable<string | number | object>>;
24
24
  defaultPickerValue: PropTypes.Requireable<NonNullable<string | number | object>>;
25
25
  multiple: PropTypes.Requireable<boolean>;
@@ -58,7 +58,7 @@ declare class Popover extends React.PureComponent<PopoverProps, PopoverState> {
58
58
  margin: PropTypes.Requireable<NonNullable<number | object>>;
59
59
  mouseEnterDelay: PropTypes.Requireable<number>;
60
60
  mouseLeaveDelay: PropTypes.Requireable<number>;
61
- trigger: PropTypes.Validator<NonNullable<"click" | "focus" | "hover" | "custom">>;
61
+ trigger: PropTypes.Validator<NonNullable<"hover" | "focus" | "click" | "custom">>;
62
62
  contentClassName: PropTypes.Requireable<NonNullable<string | any[]>>;
63
63
  onVisibleChange: PropTypes.Requireable<(...args: any[]) => any>;
64
64
  onClickOutSide: PropTypes.Requireable<(...args: any[]) => any>;
@@ -31,7 +31,6 @@ declare class TabBar extends React.Component<TabBarProps, TabBarState> {
31
31
  renderExtra(): ReactNode;
32
32
  handleItemClick: (itemKey: string, e: MouseEvent<Element>) => void;
33
33
  handleKeyDown: (event: React.KeyboardEvent, itemKey: string, closable: boolean) => void;
34
- renderTabItemInOverflowList: (panel: PlainTab) => ReactNode;
35
34
  renderTabItem: (panel: PlainTab) => ReactNode;
36
35
  renderTabComponents: (list: Array<PlainTab>) => Array<ReactNode>;
37
36
  handleArrowClick: (items: Array<OverflowItem>, pos: 'start' | 'end') => void;
@@ -66,51 +66,6 @@ class TabBar extends _react.default.Component {
66
66
  this.props.handleKeyDown(event, itemKey, closable);
67
67
  };
68
68
 
69
- this.renderTabItemInOverflowList = panel => {
70
- const {
71
- size,
72
- type,
73
- deleteTabItem
74
- } = this.props;
75
- const panelIcon = panel.icon ? this.renderIcon(panel.icon) : null;
76
- const closableIcon = type === 'card' && panel.closable ? /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
77
- "aria-label": "Close",
78
- role: "button",
79
- className: "".concat(_constants.cssClasses.TABS_TAB, "-icon-close"),
80
- onClick: e => deleteTabItem(panel.itemKey, e)
81
- }) : null;
82
- let events = {};
83
- const key = panel.itemKey;
84
-
85
- if (!panel.disabled) {
86
- events = {
87
- onClick: e => this.handleItemClick(key, e)
88
- };
89
- }
90
-
91
- const isSelected = this._isActive(key);
92
-
93
- const className = (0, _classnames.default)(_constants.cssClasses.TABS_TAB, {
94
- [_constants.cssClasses.TABS_TAB_ACTIVE]: isSelected,
95
- [_constants.cssClasses.TABS_TAB_DISABLED]: panel.disabled,
96
- ["".concat(_constants.cssClasses.TABS_TAB, "-small")]: size === 'small',
97
- ["".concat(_constants.cssClasses.TABS_TAB, "-medium")]: size === 'medium'
98
- });
99
- return /*#__PURE__*/_react.default.createElement("div", Object.assign({
100
- role: "tab",
101
- id: "semiTab".concat(key),
102
- "data-tabkey": "semiTab".concat(key),
103
- "aria-controls": "semiTabPanel".concat(key),
104
- "aria-disabled": panel.disabled ? 'true' : 'false',
105
- "aria-selected": isSelected ? 'true' : 'false',
106
- tabIndex: isSelected ? 0 : -1,
107
- onKeyDown: e => this.handleKeyDown(e, key, panel.closable)
108
- }, events, {
109
- className: className,
110
- key: this._getItemKey(key)
111
- }), panelIcon, panel.tab, closableIcon);
112
- };
113
-
114
69
  this.renderTabItem = panel => {
115
70
  const {
116
71
  size,
@@ -122,9 +77,8 @@ class TabBar extends _react.default.Component {
122
77
 
123
78
  const isSelected = this._isActive(panel.itemKey);
124
79
 
125
- return /*#__PURE__*/_react.default.createElement(_TabItem.default, Object.assign({
126
- key: this._getItemKey(panel.itemKey)
127
- }, panel, {
80
+ return /*#__PURE__*/_react.default.createElement(_TabItem.default, Object.assign({}, panel, {
81
+ key: this._getItemKey(panel.itemKey),
128
82
  selected: isSelected,
129
83
  size: size,
130
84
  type: type,
@@ -240,7 +194,7 @@ class TabBar extends _react.default.Component {
240
194
  overflowRenderer: this.renderOverflow,
241
195
  renderMode: "scroll",
242
196
  className: "".concat(_constants.cssClasses.TABS_BAR, "-overflow-list"),
243
- visibleItemRenderer: this.renderTabItemInOverflowList
197
+ visibleItemRenderer: this.renderTabItem
244
198
  });
245
199
  };
246
200
 
@@ -1,5 +1,4 @@
1
1
  import React, { ReactNode, MouseEvent } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import { TabType, TabSize, TabPosition } from './interface';
4
3
  export interface TabItemProps {
5
4
  tab?: ReactNode;
@@ -15,24 +14,5 @@ export interface TabItemProps {
15
14
  deleteTabItem?: (tabKey: string, event: MouseEvent<Element>) => void;
16
15
  onClick?: (itemKey: string, e: MouseEvent<Element>) => void;
17
16
  }
18
- export default class TabItem extends React.Component<TabItemProps> {
19
- static propsTypes: {
20
- tab: PropTypes.Requireable<PropTypes.ReactNodeLike>;
21
- icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
22
- size: PropTypes.Requireable<string>;
23
- type: PropTypes.Requireable<string>;
24
- tabPosition: PropTypes.Requireable<string>;
25
- selected: PropTypes.Requireable<boolean>;
26
- closable: PropTypes.Requireable<boolean>;
27
- disabled: PropTypes.Requireable<boolean>;
28
- itemKey: PropTypes.Requireable<string>;
29
- handleKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
30
- deleteTabItem: PropTypes.Requireable<(...args: any[]) => any>;
31
- onClick: PropTypes.Requireable<(...args: any[]) => any>;
32
- };
33
- static elementType: string;
34
- renderIcon(icon: ReactNode): ReactNode;
35
- handleKeyDown: (event: React.KeyboardEvent) => void;
36
- handleClick: (e: React.MouseEvent) => void;
37
- render(): JSX.Element;
38
- }
17
+ declare const ForwardTabItem: React.ForwardRefExoticComponent<TabItemProps & React.RefAttributes<HTMLDivElement>>;
18
+ export default ForwardTabItem;
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _react = _interopRequireWildcard(require("react"));
11
9
 
12
10
  var _classnames = _interopRequireDefault(require("classnames"));
13
11
 
@@ -17,88 +15,81 @@ var _semiIcons = require("@douyinfe/semi-icons");
17
15
 
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
20
- class TabItem extends _react.default.Component {
21
- constructor() {
22
- super(...arguments);
23
-
24
- this.handleKeyDown = event => {
25
- const {
26
- itemKey,
27
- closable,
28
- handleKeyDown
29
- } = this.props;
30
- handleKeyDown && handleKeyDown(event, itemKey, closable);
31
- };
32
-
33
- this.handleClick = e => {
34
- const {
35
- itemKey,
36
- onClick,
37
- disabled
38
- } = this.props;
39
- !disabled && onClick && onClick(itemKey, e);
40
- };
41
- }
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
42
21
 
43
- renderIcon(icon) {
44
- return /*#__PURE__*/_react.default.createElement("span", null, icon);
22
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
23
+ var t = {};
24
+
25
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
26
+
27
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
28
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
45
29
  }
30
+ return t;
31
+ };
46
32
 
47
- render() {
48
- const {
49
- tab,
50
- size,
51
- type,
52
- icon,
53
- selected,
54
- closable,
55
- disabled,
56
- itemKey,
57
- deleteTabItem,
58
- tabPosition
59
- } = this.props;
60
- const panelIcon = icon ? this.renderIcon(icon) : null;
61
- const className = (0, _classnames.default)(_constants.cssClasses.TABS_TAB, "".concat(_constants.cssClasses.TABS_TAB, "-").concat(type), "".concat(_constants.cssClasses.TABS_TAB, "-").concat(tabPosition), "".concat(_constants.cssClasses.TABS_TAB, "-single"), {
62
- [_constants.cssClasses.TABS_TAB_ACTIVE]: selected,
63
- [_constants.cssClasses.TABS_TAB_DISABLED]: disabled,
64
- ["".concat(_constants.cssClasses.TABS_TAB, "-small")]: size === 'small',
65
- ["".concat(_constants.cssClasses.TABS_TAB, "-medium")]: size === 'medium'
66
- });
67
- const closableIcon = type === 'card' && closable ? /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
33
+ const TabItem = (props, ref) => {
34
+ const {
35
+ tab,
36
+ size,
37
+ type,
38
+ icon,
39
+ selected,
40
+ closable,
41
+ disabled,
42
+ itemKey,
43
+ deleteTabItem,
44
+ tabPosition,
45
+ handleKeyDown,
46
+ onClick
47
+ } = props,
48
+ resetProps = __rest(props, ["tab", "size", "type", "icon", "selected", "closable", "disabled", "itemKey", "deleteTabItem", "tabPosition", "handleKeyDown", "onClick"]);
49
+
50
+ const closableIcon = (0, _react.useMemo)(() => {
51
+ return type === 'card' && closable ? /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
68
52
  "aria-label": "Close",
69
53
  role: "button",
70
54
  className: "".concat(_constants.cssClasses.TABS_TAB, "-icon-close"),
71
55
  onClick: e => deleteTabItem(itemKey, e)
72
56
  }) : null;
73
- return /*#__PURE__*/_react.default.createElement("div", {
74
- role: "tab",
75
- id: "semiTab".concat(itemKey),
76
- "data-tabkey": "semiTab".concat(itemKey),
77
- "aria-controls": "semiTabPanel".concat(itemKey),
78
- "aria-disabled": disabled ? 'true' : 'false',
79
- "aria-selected": selected ? 'true' : 'false',
80
- tabIndex: selected ? 0 : -1,
81
- onKeyDown: this.handleKeyDown,
82
- onClick: this.handleClick,
83
- className: className
84
- }, panelIcon, tab, closableIcon);
85
- }
57
+ }, [type, closable, deleteTabItem, itemKey]);
58
+ const renderIcon = (0, _react.useCallback)(icon => /*#__PURE__*/_react.default.createElement("span", null, icon), []);
59
+ const handleKeyDownInItem = (0, _react.useCallback)(event => {
60
+ handleKeyDown && handleKeyDown(event, itemKey, closable);
61
+ }, [handleKeyDown, itemKey, closable]);
62
+ const handleItemClick = (0, _react.useCallback)(e => {
63
+ !disabled && onClick && onClick(itemKey, e);
64
+ }, [itemKey, disabled, onClick]);
65
+ const panelIcon = icon ? renderIcon(icon) : null;
66
+ const className = (0, _classnames.default)(_constants.cssClasses.TABS_TAB, "".concat(_constants.cssClasses.TABS_TAB, "-").concat(type), "".concat(_constants.cssClasses.TABS_TAB, "-").concat(tabPosition), "".concat(_constants.cssClasses.TABS_TAB, "-single"), {
67
+ [_constants.cssClasses.TABS_TAB_ACTIVE]: selected,
68
+ [_constants.cssClasses.TABS_TAB_DISABLED]: disabled,
69
+ ["".concat(_constants.cssClasses.TABS_TAB, "-small")]: size === 'small',
70
+ ["".concat(_constants.cssClasses.TABS_TAB, "-medium")]: size === 'medium'
71
+ });
72
+ return /*#__PURE__*/_react.default.createElement("div", Object.assign({
73
+ role: "tab",
74
+ id: "semiTab".concat(itemKey),
75
+ "data-tabkey": "semiTab".concat(itemKey),
76
+ "aria-controls": "semiTabPanel".concat(itemKey),
77
+ "aria-disabled": disabled ? 'true' : 'false',
78
+ "aria-selected": selected ? 'true' : 'false',
79
+ tabIndex: selected ? 0 : -1,
80
+ onKeyDown: handleKeyDownInItem,
81
+ onClick: handleItemClick,
82
+ className: className
83
+ }, resetProps, {
84
+ ref: ref
85
+ }), panelIcon, tab, closableIcon);
86
+ }; // Why is forwardRef needed here?
87
+ // Because TabItem needs to be used in OverflowList (when tabs' type is collapsible),
88
+ // OverflowList will pass ref to the outermost div DOM node of TabItem
86
89
 
87
- }
88
-
89
- exports.default = TabItem;
90
- TabItem.propsTypes = {
91
- tab: _propTypes.default.node,
92
- icon: _propTypes.default.node,
93
- size: _propTypes.default.oneOf(_constants.strings.SIZE),
94
- type: _propTypes.default.oneOf(_constants.strings.TYPE_MAP),
95
- tabPosition: _propTypes.default.oneOf(_constants.strings.POSITION_MAP),
96
- selected: _propTypes.default.bool,
97
- closable: _propTypes.default.bool,
98
- disabled: _propTypes.default.bool,
99
- itemKey: _propTypes.default.string,
100
- handleKeyDown: _propTypes.default.func,
101
- deleteTabItem: _propTypes.default.func,
102
- onClick: _propTypes.default.func
103
- };
104
- TabItem.elementType = 'TabItem';
90
+
91
+ const ForwardTabItem = /*#__PURE__*/(0, _react.forwardRef)(TabItem); // @ts-ignore
92
+
93
+ ForwardTabItem.elementType = 'TabItem';
94
+ var _default = ForwardTabItem;
95
+ exports.default = _default;
@@ -1,10 +1,9 @@
1
- import { MouseEvent, ReactElement, ReactNode, RefCallback, RefObject } from 'react';
1
+ import React, { MouseEvent, ReactElement, ReactNode, RefCallback, RefObject } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import TabsFoundation, { TabsAdapter } from '@douyinfe/semi-foundation/lib/cjs/tabs/foundation';
4
4
  import BaseComponent from '../_base/baseComponent';
5
5
  import '@douyinfe/semi-foundation/lib/cjs/tabs/tabs.css';
6
6
  import TabPane from './TabPane';
7
- import TabItem from './TabItem';
8
7
  import { PlainTab, TabsProps } from './interface';
9
8
  export * from './interface';
10
9
  export interface TabsState {
@@ -15,7 +14,7 @@ export interface TabsState {
15
14
  }
16
15
  declare class Tabs extends BaseComponent<TabsProps, TabsState> {
17
16
  static TabPane: typeof TabPane;
18
- static TabItem: typeof TabItem;
17
+ static TabItem: React.ForwardRefExoticComponent<import("./TabItem").TabItemProps & React.RefAttributes<HTMLDivElement>>;
19
18
  static propTypes: {
20
19
  activeKey: PropTypes.Requireable<string>;
21
20
  className: PropTypes.Requireable<string>;
@@ -90,7 +90,7 @@ export default class Tooltip extends BaseComponent<TooltipProps, TooltipState> {
90
90
  getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
91
91
  mouseEnterDelay: PropTypes.Requireable<number>;
92
92
  mouseLeaveDelay: PropTypes.Requireable<number>;
93
- trigger: PropTypes.Validator<NonNullable<"click" | "focus" | "hover" | "custom">>;
93
+ trigger: PropTypes.Validator<NonNullable<"hover" | "focus" | "click" | "custom">>;
94
94
  className: PropTypes.Requireable<string>;
95
95
  wrapperClassName: PropTypes.Requireable<string>;
96
96
  clickToHide: PropTypes.Requireable<boolean>;
@@ -12,7 +12,7 @@ declare class CarouselIndicator extends React.PureComponent<CarouselIndicatorPro
12
12
  total: PropTypes.Requireable<number>;
13
13
  onIndicatorChange: PropTypes.Requireable<(...args: any[]) => any>;
14
14
  type: PropTypes.Requireable<"line" | "dot" | "columnar">;
15
- trigger: PropTypes.Requireable<"click" | "hover">;
15
+ trigger: PropTypes.Requireable<"hover" | "click">;
16
16
  };
17
17
  onIndicatorChange: (activeIndex: number) => void;
18
18
  handleIndicatorClick: (activeIndex: number) => void;
@@ -30,7 +30,7 @@ declare class Carousel extends BaseComponent<CarouselProps, CarouselState> {
30
30
  slideDirection: PropTypes.Requireable<"left" | "right">;
31
31
  speed: PropTypes.Requireable<number>;
32
32
  style: PropTypes.Requireable<object>;
33
- trigger: PropTypes.Requireable<"click" | "hover">;
33
+ trigger: PropTypes.Requireable<"hover" | "click">;
34
34
  };
35
35
  static defaultProps: CarouselProps;
36
36
  foundation: CarouselFoundation;
@@ -110,7 +110,7 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
110
110
  zIndex: PropTypes.Requireable<number>;
111
111
  value: PropTypes.Requireable<NonNullable<string | number | any[]>>;
112
112
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
113
- showNext: PropTypes.Requireable<"click" | "hover">;
113
+ showNext: PropTypes.Requireable<"hover" | "click">;
114
114
  stopPropagation: PropTypes.Requireable<NonNullable<string | boolean>>;
115
115
  showClear: PropTypes.Requireable<boolean>;
116
116
  defaultOpen: PropTypes.Requireable<boolean>;
@@ -48,7 +48,7 @@ export default class Item extends PureComponent<CascaderItemProps> {
48
48
  onItemClick: PropTypes.Requireable<(...args: any[]) => any>;
49
49
  onItemHover: PropTypes.Requireable<(...args: any[]) => any>;
50
50
  multiple: PropTypes.Requireable<boolean>;
51
- showNext: PropTypes.Requireable<"click" | "hover">;
51
+ showNext: PropTypes.Requireable<"hover" | "click">;
52
52
  checkedKeys: PropTypes.Requireable<object>;
53
53
  halfCheckedKeys: PropTypes.Requireable<object>;
54
54
  onItemCheckboxClick: PropTypes.Requireable<(...args: any[]) => any>;
@@ -26,7 +26,7 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
26
26
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  value: PropTypes.Requireable<any[]>;
28
28
  disabled: PropTypes.Requireable<boolean>;
29
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
29
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
30
30
  showClear: PropTypes.Requireable<boolean>;
31
31
  format: PropTypes.Requireable<string>;
32
32
  inputStyle: PropTypes.Requireable<object>;
@@ -46,7 +46,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
46
46
  'aria-invalid': PropTypes.Requireable<boolean>;
47
47
  'aria-labelledby': PropTypes.Requireable<string>;
48
48
  'aria-required': PropTypes.Requireable<boolean>;
49
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
49
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
50
50
  size: PropTypes.Requireable<"small" | "default" | "large">;
51
51
  clearIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
52
52
  density: PropTypes.Requireable<"default" | "compact">;
@@ -19,7 +19,7 @@ export interface MonthsGridProps extends MonthsGridFoundationProps, BaseProps {
19
19
  export declare type MonthsGridState = MonthsGridFoundationState;
20
20
  export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGridState> {
21
21
  static propTypes: {
22
- type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "dateTimeRange">;
22
+ type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
23
23
  defaultValue: PropTypes.Requireable<NonNullable<string | number | object>>;
24
24
  defaultPickerValue: PropTypes.Requireable<NonNullable<string | number | object>>;
25
25
  multiple: PropTypes.Requireable<boolean>;
@@ -58,7 +58,7 @@ declare class Popover extends React.PureComponent<PopoverProps, PopoverState> {
58
58
  margin: PropTypes.Requireable<NonNullable<number | object>>;
59
59
  mouseEnterDelay: PropTypes.Requireable<number>;
60
60
  mouseLeaveDelay: PropTypes.Requireable<number>;
61
- trigger: PropTypes.Validator<NonNullable<"click" | "focus" | "hover" | "custom">>;
61
+ trigger: PropTypes.Validator<NonNullable<"hover" | "focus" | "click" | "custom">>;
62
62
  contentClassName: PropTypes.Requireable<NonNullable<string | any[]>>;
63
63
  onVisibleChange: PropTypes.Requireable<(...args: any[]) => any>;
64
64
  onClickOutSide: PropTypes.Requireable<(...args: any[]) => any>;
@@ -31,7 +31,6 @@ declare class TabBar extends React.Component<TabBarProps, TabBarState> {
31
31
  renderExtra(): ReactNode;
32
32
  handleItemClick: (itemKey: string, e: MouseEvent<Element>) => void;
33
33
  handleKeyDown: (event: React.KeyboardEvent, itemKey: string, closable: boolean) => void;
34
- renderTabItemInOverflowList: (panel: PlainTab) => ReactNode;
35
34
  renderTabItem: (panel: PlainTab) => ReactNode;
36
35
  renderTabComponents: (list: Array<PlainTab>) => Array<ReactNode>;
37
36
  handleArrowClick: (items: Array<OverflowItem>, pos: 'start' | 'end') => void;
@@ -19,7 +19,7 @@ import getDataAttr from '@douyinfe/semi-foundation/lib/es/utils/getDataAttr';
19
19
  import OverflowList from '../overflowList';
20
20
  import Dropdown from '../dropdown';
21
21
  import Button from '../button';
22
- import { IconChevronRight, IconChevronLeft, IconClose } from '@douyinfe/semi-icons';
22
+ import { IconChevronRight, IconChevronLeft } from '@douyinfe/semi-icons';
23
23
  import { getUuidv4 } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
24
24
  import TabItem from './TabItem';
25
25
 
@@ -47,51 +47,6 @@ class TabBar extends React.Component {
47
47
  this.props.handleKeyDown(event, itemKey, closable);
48
48
  };
49
49
 
50
- this.renderTabItemInOverflowList = panel => {
51
- const {
52
- size,
53
- type,
54
- deleteTabItem
55
- } = this.props;
56
- const panelIcon = panel.icon ? this.renderIcon(panel.icon) : null;
57
- const closableIcon = type === 'card' && panel.closable ? /*#__PURE__*/React.createElement(IconClose, {
58
- "aria-label": "Close",
59
- role: "button",
60
- className: "".concat(cssClasses.TABS_TAB, "-icon-close"),
61
- onClick: e => deleteTabItem(panel.itemKey, e)
62
- }) : null;
63
- let events = {};
64
- const key = panel.itemKey;
65
-
66
- if (!panel.disabled) {
67
- events = {
68
- onClick: e => this.handleItemClick(key, e)
69
- };
70
- }
71
-
72
- const isSelected = this._isActive(key);
73
-
74
- const className = cls(cssClasses.TABS_TAB, {
75
- [cssClasses.TABS_TAB_ACTIVE]: isSelected,
76
- [cssClasses.TABS_TAB_DISABLED]: panel.disabled,
77
- ["".concat(cssClasses.TABS_TAB, "-small")]: size === 'small',
78
- ["".concat(cssClasses.TABS_TAB, "-medium")]: size === 'medium'
79
- });
80
- return /*#__PURE__*/React.createElement("div", Object.assign({
81
- role: "tab",
82
- id: "semiTab".concat(key),
83
- "data-tabkey": "semiTab".concat(key),
84
- "aria-controls": "semiTabPanel".concat(key),
85
- "aria-disabled": panel.disabled ? 'true' : 'false',
86
- "aria-selected": isSelected ? 'true' : 'false',
87
- tabIndex: isSelected ? 0 : -1,
88
- onKeyDown: e => this.handleKeyDown(e, key, panel.closable)
89
- }, events, {
90
- className: className,
91
- key: this._getItemKey(key)
92
- }), panelIcon, panel.tab, closableIcon);
93
- };
94
-
95
50
  this.renderTabItem = panel => {
96
51
  const {
97
52
  size,
@@ -103,9 +58,8 @@ class TabBar extends React.Component {
103
58
 
104
59
  const isSelected = this._isActive(panel.itemKey);
105
60
 
106
- return /*#__PURE__*/React.createElement(TabItem, Object.assign({
107
- key: this._getItemKey(panel.itemKey)
108
- }, panel, {
61
+ return /*#__PURE__*/React.createElement(TabItem, Object.assign({}, panel, {
62
+ key: this._getItemKey(panel.itemKey),
109
63
  selected: isSelected,
110
64
  size: size,
111
65
  type: type,
@@ -219,7 +173,7 @@ class TabBar extends React.Component {
219
173
  overflowRenderer: this.renderOverflow,
220
174
  renderMode: "scroll",
221
175
  className: "".concat(cssClasses.TABS_BAR, "-overflow-list"),
222
- visibleItemRenderer: this.renderTabItemInOverflowList
176
+ visibleItemRenderer: this.renderTabItem
223
177
  });
224
178
  };
225
179
 
@@ -1,5 +1,4 @@
1
1
  import React, { ReactNode, MouseEvent } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import { TabType, TabSize, TabPosition } from './interface';
4
3
  export interface TabItemProps {
5
4
  tab?: ReactNode;
@@ -15,24 +14,5 @@ export interface TabItemProps {
15
14
  deleteTabItem?: (tabKey: string, event: MouseEvent<Element>) => void;
16
15
  onClick?: (itemKey: string, e: MouseEvent<Element>) => void;
17
16
  }
18
- export default class TabItem extends React.Component<TabItemProps> {
19
- static propsTypes: {
20
- tab: PropTypes.Requireable<PropTypes.ReactNodeLike>;
21
- icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
22
- size: PropTypes.Requireable<string>;
23
- type: PropTypes.Requireable<string>;
24
- tabPosition: PropTypes.Requireable<string>;
25
- selected: PropTypes.Requireable<boolean>;
26
- closable: PropTypes.Requireable<boolean>;
27
- disabled: PropTypes.Requireable<boolean>;
28
- itemKey: PropTypes.Requireable<string>;
29
- handleKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
30
- deleteTabItem: PropTypes.Requireable<(...args: any[]) => any>;
31
- onClick: PropTypes.Requireable<(...args: any[]) => any>;
32
- };
33
- static elementType: string;
34
- renderIcon(icon: ReactNode): ReactNode;
35
- handleKeyDown: (event: React.KeyboardEvent) => void;
36
- handleClick: (e: React.MouseEvent) => void;
37
- render(): JSX.Element;
38
- }
17
+ declare const ForwardTabItem: React.ForwardRefExoticComponent<TabItemProps & React.RefAttributes<HTMLDivElement>>;
18
+ export default ForwardTabItem;