@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.
- package/dist/umd/semi-ui.js +67 -123
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/carousel/CarouselIndicator.d.ts +1 -1
- package/lib/cjs/carousel/index.d.ts +1 -1
- package/lib/cjs/cascader/index.d.ts +1 -1
- package/lib/cjs/cascader/item.d.ts +1 -1
- package/lib/cjs/datePicker/dateInput.d.ts +1 -1
- package/lib/cjs/datePicker/datePicker.d.ts +1 -1
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
- package/lib/cjs/popover/index.d.ts +1 -1
- package/lib/cjs/tabs/TabBar.d.ts +0 -1
- package/lib/cjs/tabs/TabBar.js +3 -49
- package/lib/cjs/tabs/TabItem.d.ts +2 -22
- package/lib/cjs/tabs/TabItem.js +70 -79
- package/lib/cjs/tabs/index.d.ts +2 -3
- package/lib/cjs/tooltip/index.d.ts +1 -1
- package/lib/es/carousel/CarouselIndicator.d.ts +1 -1
- package/lib/es/carousel/index.d.ts +1 -1
- package/lib/es/cascader/index.d.ts +1 -1
- package/lib/es/cascader/item.d.ts +1 -1
- package/lib/es/datePicker/dateInput.d.ts +1 -1
- package/lib/es/datePicker/datePicker.d.ts +1 -1
- package/lib/es/datePicker/monthsGrid.d.ts +1 -1
- package/lib/es/popover/index.d.ts +1 -1
- package/lib/es/tabs/TabBar.d.ts +0 -1
- package/lib/es/tabs/TabBar.js +4 -50
- package/lib/es/tabs/TabItem.d.ts +2 -22
- package/lib/es/tabs/TabItem.js +67 -77
- package/lib/es/tabs/index.d.ts +2 -3
- package/lib/es/tooltip/index.d.ts +1 -1
- package/package.json +8 -8
|
@@ -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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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>;
|
package/lib/cjs/tabs/TabBar.d.ts
CHANGED
|
@@ -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;
|
package/lib/cjs/tabs/TabBar.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
19
|
-
|
|
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;
|
package/lib/cjs/tabs/TabItem.js
CHANGED
|
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
44
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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;
|
package/lib/cjs/tabs/index.d.ts
CHANGED
|
@@ -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:
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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>;
|
package/lib/es/tabs/TabBar.d.ts
CHANGED
|
@@ -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;
|
package/lib/es/tabs/TabBar.js
CHANGED
|
@@ -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
|
|
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.
|
|
176
|
+
visibleItemRenderer: this.renderTabItem
|
|
223
177
|
});
|
|
224
178
|
};
|
|
225
179
|
|
package/lib/es/tabs/TabItem.d.ts
CHANGED
|
@@ -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
|
-
|
|
19
|
-
|
|
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;
|