@douyinfe/semi-ui 2.57.1-alpha.0 → 2.58.0
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/css/semi.css +85 -9
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +82 -21
- 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/_base/base.css +2 -2
- package/lib/cjs/button/Button.d.ts +1 -1
- package/lib/cjs/button/Button.js +1 -0
- package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
- package/lib/cjs/form/baseForm.d.ts +2 -2
- package/lib/cjs/form/field.d.ts +2 -2
- package/lib/cjs/locale/interface.d.ts +3 -0
- package/lib/cjs/locale/source/ar.js +3 -0
- package/lib/cjs/locale/source/de.js +3 -0
- package/lib/cjs/locale/source/en_GB.js +3 -0
- package/lib/cjs/locale/source/en_US.js +3 -0
- package/lib/cjs/locale/source/es.js +3 -0
- package/lib/cjs/locale/source/fr.js +3 -0
- package/lib/cjs/locale/source/id_ID.js +3 -0
- package/lib/cjs/locale/source/it.js +3 -0
- package/lib/cjs/locale/source/ja_JP.js +3 -0
- package/lib/cjs/locale/source/ko_KR.js +3 -0
- package/lib/cjs/locale/source/ms_MY.js +3 -0
- package/lib/cjs/locale/source/nl_NL.js +3 -0
- package/lib/cjs/locale/source/pl_PL.js +3 -0
- package/lib/cjs/locale/source/pt_BR.js +3 -0
- package/lib/cjs/locale/source/ro.js +3 -0
- package/lib/cjs/locale/source/ru_RU.js +3 -0
- package/lib/cjs/locale/source/sv_SE.js +3 -0
- package/lib/cjs/locale/source/th_TH.js +3 -0
- package/lib/cjs/locale/source/tr_TR.js +3 -0
- package/lib/cjs/locale/source/vi_VN.js +3 -0
- package/lib/cjs/locale/source/zh_CN.js +3 -0
- package/lib/cjs/locale/source/zh_TW.js +3 -0
- package/lib/cjs/modal/confirm.d.ts +9 -9
- package/lib/cjs/navigation/Item.js +1 -1
- package/lib/cjs/slider/index.js +9 -6
- package/lib/cjs/table/Body/BaseRow.d.ts +0 -2
- package/lib/cjs/table/Body/BaseRow.js +4 -9
- package/lib/cjs/table/ColGroup.d.ts +2 -2
- package/lib/cjs/table/interface.d.ts +16 -15
- package/lib/cjs/tabs/TabBar.d.ts +4 -0
- package/lib/cjs/tabs/TabBar.js +55 -3
- package/lib/cjs/tabs/TabItem.js +3 -1
- package/lib/cjs/tabs/index.d.ts +1 -0
- package/lib/cjs/tabs/index.js +7 -4
- package/lib/cjs/tabs/interface.d.ts +7 -0
- package/lib/cjs/typography/title.d.ts +1 -1
- package/lib/es/_base/base.css +2 -2
- package/lib/es/button/Button.d.ts +1 -1
- package/lib/es/button/Button.js +1 -0
- package/lib/es/datePicker/monthsGrid.d.ts +1 -1
- package/lib/es/form/baseForm.d.ts +2 -2
- package/lib/es/form/field.d.ts +2 -2
- package/lib/es/locale/interface.d.ts +3 -0
- package/lib/es/locale/source/ar.js +3 -0
- package/lib/es/locale/source/de.js +3 -0
- package/lib/es/locale/source/en_GB.js +3 -0
- package/lib/es/locale/source/en_US.js +3 -0
- package/lib/es/locale/source/es.js +3 -0
- package/lib/es/locale/source/fr.js +3 -0
- package/lib/es/locale/source/id_ID.js +3 -0
- package/lib/es/locale/source/it.js +3 -0
- package/lib/es/locale/source/ja_JP.js +3 -0
- package/lib/es/locale/source/ko_KR.js +3 -0
- package/lib/es/locale/source/ms_MY.js +3 -0
- package/lib/es/locale/source/nl_NL.js +3 -0
- package/lib/es/locale/source/pl_PL.js +3 -0
- package/lib/es/locale/source/pt_BR.js +3 -0
- package/lib/es/locale/source/ro.js +3 -0
- package/lib/es/locale/source/ru_RU.js +3 -0
- package/lib/es/locale/source/sv_SE.js +3 -0
- package/lib/es/locale/source/th_TH.js +3 -0
- package/lib/es/locale/source/tr_TR.js +3 -0
- package/lib/es/locale/source/vi_VN.js +3 -0
- package/lib/es/locale/source/zh_CN.js +3 -0
- package/lib/es/locale/source/zh_TW.js +3 -0
- package/lib/es/modal/confirm.d.ts +9 -9
- package/lib/es/navigation/Item.js +1 -1
- package/lib/es/slider/index.js +9 -6
- package/lib/es/table/Body/BaseRow.d.ts +0 -2
- package/lib/es/table/Body/BaseRow.js +4 -7
- package/lib/es/table/ColGroup.d.ts +2 -2
- package/lib/es/table/interface.d.ts +16 -15
- package/lib/es/tabs/TabBar.d.ts +4 -0
- package/lib/es/tabs/TabBar.js +56 -4
- package/lib/es/tabs/TabItem.js +3 -1
- package/lib/es/tabs/index.d.ts +1 -0
- package/lib/es/tabs/index.js +7 -4
- package/lib/es/tabs/interface.d.ts +7 -0
- package/lib/es/typography/title.d.ts +1 -1
- package/package.json +8 -8
package/lib/es/slider/index.js
CHANGED
|
@@ -266,11 +266,11 @@ export default class Slider extends BaseComponent {
|
|
|
266
266
|
const minPercent = percentInfo.min;
|
|
267
267
|
const maxPercent = percentInfo.max;
|
|
268
268
|
let trackStyle = !vertical ? {
|
|
269
|
-
width: range ? `${(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
|
|
270
|
-
left: range ? `${minPercent * 100}%` : 0
|
|
269
|
+
width: range ? `${Math.abs(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
|
|
270
|
+
left: range ? `${Math.min(minPercent, maxPercent) * 100}%` : 0
|
|
271
271
|
} : {
|
|
272
|
-
height: range ? `${(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
|
|
273
|
-
top: range ? `${minPercent * 100}%` : 0
|
|
272
|
+
height: range ? `${Math.abs(maxPercent - minPercent) * 100}%` : `${minPercent * 100}%`,
|
|
273
|
+
top: range ? `${Math.min(minPercent, maxPercent) * 100}%` : 0
|
|
274
274
|
};
|
|
275
275
|
trackStyle = included ? trackStyle : {};
|
|
276
276
|
return (
|
|
@@ -448,7 +448,9 @@ export default class Slider extends BaseComponent {
|
|
|
448
448
|
let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _noop;
|
|
449
449
|
this.setState(stateObj, callback);
|
|
450
450
|
},
|
|
451
|
-
notifyChange: cbValue =>
|
|
451
|
+
notifyChange: cbValue => {
|
|
452
|
+
this.props.onChange(Array.isArray(cbValue) ? [...cbValue].sort() : cbValue);
|
|
453
|
+
},
|
|
452
454
|
setDragging: value => {
|
|
453
455
|
this.dragging = value;
|
|
454
456
|
},
|
|
@@ -601,7 +603,8 @@ export default class Slider extends BaseComponent {
|
|
|
601
603
|
[`${prefixCls}`]: !vertical,
|
|
602
604
|
[cssClasses.VERTICAL]: vertical
|
|
603
605
|
});
|
|
604
|
-
const
|
|
606
|
+
const fixedCurrentValue = Array.isArray(currentValue) ? [...currentValue].sort() : currentValue;
|
|
607
|
+
const ariaLabel = range ? `Range: ${this._getAriaValueText(fixedCurrentValue[0], 0)} to ${this._getAriaValueText(fixedCurrentValue[1], 1)}` : undefined;
|
|
605
608
|
const slider = /*#__PURE__*/React.createElement("div", Object.assign({
|
|
606
609
|
className: wrapperClass,
|
|
607
610
|
style: style,
|
|
@@ -158,11 +158,9 @@ export default class TableRow extends BaseComponent<BaseRowProps, Record<string,
|
|
|
158
158
|
disabled: boolean;
|
|
159
159
|
};
|
|
160
160
|
get adapter(): TableRowAdapter<BaseRowProps>;
|
|
161
|
-
ref: React.MutableRefObject<any>;
|
|
162
161
|
constructor(props: BaseRowProps);
|
|
163
162
|
componentDidMount(): void;
|
|
164
163
|
shouldComponentUpdate(nextProps: BaseRowProps): boolean;
|
|
165
|
-
_cacheNode: (node: any) => void;
|
|
166
164
|
renderExpandIcon: (record: Record<string, any>) => React.ReactNode;
|
|
167
165
|
renderCells(): React.ReactNode[];
|
|
168
166
|
handleMouseEnter: (e: React.MouseEvent) => void;
|
|
@@ -13,7 +13,7 @@ var __rest = this && this.__rest || function (s, e) {
|
|
|
13
13
|
}
|
|
14
14
|
return t;
|
|
15
15
|
};
|
|
16
|
-
import React
|
|
16
|
+
import React from 'react';
|
|
17
17
|
import classnames from 'classnames';
|
|
18
18
|
import PropTypes from 'prop-types';
|
|
19
19
|
import { strings, cssClasses } from '@douyinfe/semi-foundation/lib/es/table/constants';
|
|
@@ -88,9 +88,6 @@ export default class TableRow extends BaseComponent {
|
|
|
88
88
|
}
|
|
89
89
|
constructor(props) {
|
|
90
90
|
super(props);
|
|
91
|
-
this._cacheNode = node => {
|
|
92
|
-
this.ref.current = node;
|
|
93
|
-
};
|
|
94
91
|
// Pass true to render the tree-shaped expand button
|
|
95
92
|
this.renderExpandIcon = record => {
|
|
96
93
|
const {
|
|
@@ -119,7 +116,6 @@ export default class TableRow extends BaseComponent {
|
|
|
119
116
|
customRowProps.onClick(e);
|
|
120
117
|
}
|
|
121
118
|
};
|
|
122
|
-
this.ref = /*#__PURE__*/createRef();
|
|
123
119
|
this.foundation = new TableRowFoundation(this.adapter);
|
|
124
120
|
}
|
|
125
121
|
componentDidMount() {
|
|
@@ -260,7 +256,8 @@ export default class TableRow extends BaseComponent {
|
|
|
260
256
|
expandableRow,
|
|
261
257
|
level,
|
|
262
258
|
expandedRow,
|
|
263
|
-
isSection
|
|
259
|
+
isSection,
|
|
260
|
+
rowKey
|
|
264
261
|
} = this.props;
|
|
265
262
|
const BodyRow = components.body.row;
|
|
266
263
|
const _a = onRow(record, index) || {},
|
|
@@ -299,7 +296,7 @@ export default class TableRow extends BaseComponent {
|
|
|
299
296
|
}, ariaProps, rowProps, {
|
|
300
297
|
style: baseRowStyle,
|
|
301
298
|
className: rowCls,
|
|
302
|
-
|
|
299
|
+
"data-row-key": rowKey,
|
|
303
300
|
onMouseEnter: this.handleMouseEnter,
|
|
304
301
|
onMouseLeave: this.handleMouseLeave,
|
|
305
302
|
onClick: this.handleClick
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { ColumnProps } from './interface';
|
|
3
|
+
import { ColumnProps, TableComponents } from './interface';
|
|
4
4
|
export interface ColGroupProps {
|
|
5
5
|
columns?: ColumnProps[];
|
|
6
6
|
prefixCls?: string;
|
|
7
7
|
className?: string;
|
|
8
8
|
style?: React.CSSProperties;
|
|
9
|
-
components?:
|
|
9
|
+
components?: TableComponents['body'];
|
|
10
10
|
}
|
|
11
11
|
export default class ColGroup extends React.PureComponent<ColGroupProps> {
|
|
12
12
|
static propTypes: {
|
|
@@ -188,29 +188,30 @@ export interface Data {
|
|
|
188
188
|
[x: string]: any;
|
|
189
189
|
key?: string | number;
|
|
190
190
|
}
|
|
191
|
+
export type TableComponent<P> = React.ComponentType<P> | React.ForwardRefExoticComponent<P> | keyof React.ReactHTML;
|
|
191
192
|
export interface TableComponents {
|
|
192
|
-
table?:
|
|
193
|
+
table?: TableComponent<any>;
|
|
193
194
|
header?: {
|
|
194
|
-
outer?:
|
|
195
|
-
wrapper?:
|
|
196
|
-
row?:
|
|
197
|
-
cell?:
|
|
195
|
+
outer?: TableComponent<any>;
|
|
196
|
+
wrapper?: TableComponent<any>;
|
|
197
|
+
row?: TableComponent<any>;
|
|
198
|
+
cell?: TableComponent<any>;
|
|
198
199
|
};
|
|
199
200
|
body?: {
|
|
200
|
-
outer?:
|
|
201
|
-
wrapper?:
|
|
202
|
-
row?:
|
|
203
|
-
cell?:
|
|
201
|
+
outer?: TableComponent<any>;
|
|
202
|
+
wrapper?: TableComponent<any>;
|
|
203
|
+
row?: TableComponent<any>;
|
|
204
|
+
cell?: TableComponent<any>;
|
|
204
205
|
colgroup?: {
|
|
205
|
-
wrapper?:
|
|
206
|
-
col?:
|
|
206
|
+
wrapper?: TableComponent<any>;
|
|
207
|
+
col?: TableComponent<any>;
|
|
207
208
|
};
|
|
208
209
|
};
|
|
209
210
|
footer?: {
|
|
210
|
-
wrapper?:
|
|
211
|
-
row?:
|
|
212
|
-
cell?:
|
|
213
|
-
outer?:
|
|
211
|
+
wrapper?: TableComponent<any>;
|
|
212
|
+
row?: TableComponent<any>;
|
|
213
|
+
cell?: TableComponent<any>;
|
|
214
|
+
outer?: TableComponent<any>;
|
|
214
215
|
};
|
|
215
216
|
}
|
|
216
217
|
export interface RowSelectionProps<RecordType> {
|
package/lib/es/tabs/TabBar.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { MouseEvent, ReactNode } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
+
import { DropdownProps } from '../dropdown';
|
|
3
4
|
import { TabBarProps, PlainTab } from './interface';
|
|
4
5
|
export interface TabBarState {
|
|
5
6
|
endInd: number;
|
|
@@ -25,6 +26,7 @@ declare class TabBar extends React.Component<TabBarProps, TabBarState> {
|
|
|
25
26
|
type: PropTypes.Requireable<string>;
|
|
26
27
|
closable: PropTypes.Requireable<boolean>;
|
|
27
28
|
deleteTabItem: PropTypes.Requireable<(...args: any[]) => any>;
|
|
29
|
+
more: PropTypes.Requireable<NonNullable<number | object>>;
|
|
28
30
|
};
|
|
29
31
|
constructor(props: TabBarProps);
|
|
30
32
|
componentDidMount(): void;
|
|
@@ -38,6 +40,8 @@ declare class TabBar extends React.Component<TabBarProps, TabBarState> {
|
|
|
38
40
|
renderCollapse: (items: Array<OverflowItem>, icon: ReactNode, pos: 'start' | 'end') => ReactNode;
|
|
39
41
|
renderOverflow: (items: any[]) => Array<ReactNode>;
|
|
40
42
|
renderCollapsedTab: () => ReactNode;
|
|
43
|
+
renderWithMoreTrigger: () => ReactNode;
|
|
44
|
+
renderMoreDropdown: (panels: PlainTab[], dropDownProps: DropdownProps, trigger: ReactNode) => ReactNode;
|
|
41
45
|
render(): ReactNode;
|
|
42
46
|
private _isActive;
|
|
43
47
|
private _getItemKey;
|
package/lib/es/tabs/TabBar.js
CHANGED
|
@@ -16,9 +16,10 @@ import getDataAttr from '@douyinfe/semi-foundation/lib/es/utils/getDataAttr';
|
|
|
16
16
|
import OverflowList from '../overflowList';
|
|
17
17
|
import Dropdown from '../dropdown';
|
|
18
18
|
import Button from '../button';
|
|
19
|
-
import { IconChevronRight, IconChevronLeft } from '@douyinfe/semi-icons';
|
|
19
|
+
import { IconChevronRight, IconChevronLeft, IconChevronDown } from '@douyinfe/semi-icons';
|
|
20
20
|
import { getUuidv4 } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
|
|
21
21
|
import TabItem from './TabItem';
|
|
22
|
+
import LocaleConsumer from "../locale/localeConsumer";
|
|
22
23
|
class TabBar extends React.Component {
|
|
23
24
|
constructor(props) {
|
|
24
25
|
super(props);
|
|
@@ -156,6 +157,55 @@ class TabBar extends React.Component {
|
|
|
156
157
|
visibleItemRenderer: this.renderTabItem
|
|
157
158
|
});
|
|
158
159
|
};
|
|
160
|
+
this.renderWithMoreTrigger = () => {
|
|
161
|
+
const {
|
|
162
|
+
list,
|
|
163
|
+
more
|
|
164
|
+
} = this.props;
|
|
165
|
+
let tabElements = [];
|
|
166
|
+
let moreTrigger = /*#__PURE__*/React.createElement("div", {
|
|
167
|
+
className: cls({
|
|
168
|
+
[`${cssClasses.TABS_BAR}-more-trigger`]: true,
|
|
169
|
+
[`${cssClasses.TABS_BAR}-more-trigger-${this.props.type}`]: true
|
|
170
|
+
})
|
|
171
|
+
}, /*#__PURE__*/React.createElement(LocaleConsumer, {
|
|
172
|
+
componentName: "Tabs"
|
|
173
|
+
}, (locale, localeCode) => /*#__PURE__*/React.createElement("div", {
|
|
174
|
+
className: `${cssClasses.TABS_BAR}-more-trigger-content`
|
|
175
|
+
}, /*#__PURE__*/React.createElement("div", null, locale.more), /*#__PURE__*/React.createElement(IconChevronDown, {
|
|
176
|
+
className: `${cssClasses.TABS_BAR}-more-trigger-content-icon`
|
|
177
|
+
}))));
|
|
178
|
+
let keepCount;
|
|
179
|
+
if (typeof more === "number") {
|
|
180
|
+
keepCount = list.length - Math.min(more, list.length);
|
|
181
|
+
tabElements = list.slice(0, keepCount).map(panel => this.renderTabItem(panel));
|
|
182
|
+
} else if (typeof more === 'object') {
|
|
183
|
+
keepCount = list.length - Math.min(more.count, list.length);
|
|
184
|
+
tabElements = list.slice(0, keepCount).map(panel => this.renderTabItem(panel));
|
|
185
|
+
if (more.render) {
|
|
186
|
+
moreTrigger = more.render();
|
|
187
|
+
}
|
|
188
|
+
} else if (more !== undefined) {
|
|
189
|
+
throw new Error("[Semi Tabs]: invalid tab props format: more");
|
|
190
|
+
}
|
|
191
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, tabElements, this.renderMoreDropdown(list.slice(keepCount), more === null || more === void 0 ? void 0 : more['dropdownProps'], moreTrigger));
|
|
192
|
+
};
|
|
193
|
+
this.renderMoreDropdown = (panels, dropDownProps, trigger) => {
|
|
194
|
+
return /*#__PURE__*/React.createElement(Dropdown, Object.assign({
|
|
195
|
+
trigger: 'hover',
|
|
196
|
+
showTick: true,
|
|
197
|
+
position: 'bottomLeft',
|
|
198
|
+
className: `${cssClasses.TABS_BAR}-more-dropdown-${this.props.type}`,
|
|
199
|
+
clickToHide: true,
|
|
200
|
+
menu: panels.map(panel => ({
|
|
201
|
+
node: 'item',
|
|
202
|
+
name: panel.tab,
|
|
203
|
+
icon: panel.icon,
|
|
204
|
+
onClick: e => this.props.onTabClick(panel.itemKey, e),
|
|
205
|
+
active: this.props.activeKey === panel.itemKey
|
|
206
|
+
}))
|
|
207
|
+
}, dropDownProps), trigger);
|
|
208
|
+
};
|
|
159
209
|
this._isActive = key => key === this.props.activeKey;
|
|
160
210
|
this._getItemKey = key => `${key}-bar`;
|
|
161
211
|
this.state = {
|
|
@@ -205,9 +255,10 @@ class TabBar extends React.Component {
|
|
|
205
255
|
className,
|
|
206
256
|
list,
|
|
207
257
|
tabPosition,
|
|
258
|
+
more,
|
|
208
259
|
collapsible
|
|
209
260
|
} = _a,
|
|
210
|
-
restProps = __rest(_a, ["type", "style", "className", "list", "tabPosition", "collapsible"]);
|
|
261
|
+
restProps = __rest(_a, ["type", "style", "className", "list", "tabPosition", "more", "collapsible"]);
|
|
211
262
|
const classNames = cls(className, {
|
|
212
263
|
[cssClasses.TABS_BAR]: true,
|
|
213
264
|
[cssClasses.TABS_BAR_LINE]: type === 'line',
|
|
@@ -217,7 +268,7 @@ class TabBar extends React.Component {
|
|
|
217
268
|
[`${cssClasses.TABS_BAR}-collapse`]: collapsible
|
|
218
269
|
});
|
|
219
270
|
const extra = this.renderExtra();
|
|
220
|
-
const contents = collapsible ? this.renderCollapsedTab() : this.renderTabComponents(list);
|
|
271
|
+
const contents = collapsible ? this.renderCollapsedTab() : more ? this.renderWithMoreTrigger() : this.renderTabComponents(list);
|
|
221
272
|
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
222
273
|
role: "tablist",
|
|
223
274
|
"aria-orientation": tabPosition === "left" ? "vertical" : "horizontal",
|
|
@@ -240,6 +291,7 @@ TabBar.propTypes = {
|
|
|
240
291
|
tabPosition: PropTypes.oneOf(strings.POSITION_MAP),
|
|
241
292
|
type: PropTypes.oneOf(strings.TYPE_MAP),
|
|
242
293
|
closable: PropTypes.bool,
|
|
243
|
-
deleteTabItem: PropTypes.func
|
|
294
|
+
deleteTabItem: PropTypes.func,
|
|
295
|
+
more: PropTypes.oneOfType([PropTypes.number, PropTypes.object])
|
|
244
296
|
};
|
|
245
297
|
export default TabBar;
|
package/lib/es/tabs/TabItem.js
CHANGED
|
@@ -34,7 +34,9 @@ const TabItem = (props, ref) => {
|
|
|
34
34
|
onClick: e => deleteTabItem(itemKey, e)
|
|
35
35
|
}) : null;
|
|
36
36
|
}, [type, closable, deleteTabItem, itemKey]);
|
|
37
|
-
const renderIcon = useCallback(icon => /*#__PURE__*/React.createElement("span",
|
|
37
|
+
const renderIcon = useCallback(icon => /*#__PURE__*/React.createElement("span", {
|
|
38
|
+
className: `${cssClasses.TABS_BAR}-icon`
|
|
39
|
+
}, icon), []);
|
|
38
40
|
const handleKeyDownInItem = useCallback(event => {
|
|
39
41
|
handleKeyDown && handleKeyDown(event, itemKey, closable);
|
|
40
42
|
}, [handleKeyDown, itemKey, closable]);
|
package/lib/es/tabs/index.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ declare class Tabs extends BaseComponent<TabsProps, TabsState> {
|
|
|
37
37
|
type: PropTypes.Requireable<string>;
|
|
38
38
|
onTabClose: PropTypes.Requireable<(...args: any[]) => any>;
|
|
39
39
|
preventScroll: PropTypes.Requireable<boolean>;
|
|
40
|
+
more: PropTypes.Requireable<NonNullable<number | object>>;
|
|
40
41
|
};
|
|
41
42
|
static __SemiComponentName__: string;
|
|
42
43
|
static defaultProps: TabsProps;
|
package/lib/es/tabs/index.js
CHANGED
|
@@ -222,9 +222,10 @@ class Tabs extends BaseComponent {
|
|
|
222
222
|
tabBarStyle,
|
|
223
223
|
tabPaneMotion,
|
|
224
224
|
tabPosition,
|
|
225
|
-
type
|
|
225
|
+
type,
|
|
226
|
+
more
|
|
226
227
|
} = _a,
|
|
227
|
-
restProps = __rest(_a, ["children", "className", "collapsible", "contentStyle", "keepDOM", "lazyRender", "renderTabBar", "size", "style", "tabBarClassName", "tabBarExtraContent", "tabBarStyle", "tabPaneMotion", "tabPosition", "type"]);
|
|
228
|
+
restProps = __rest(_a, ["children", "className", "collapsible", "contentStyle", "keepDOM", "lazyRender", "renderTabBar", "size", "style", "tabBarClassName", "tabBarExtraContent", "tabBarStyle", "tabPaneMotion", "tabPosition", "type", "more"]);
|
|
228
229
|
const {
|
|
229
230
|
panes,
|
|
230
231
|
activeKey
|
|
@@ -249,7 +250,8 @@ class Tabs extends BaseComponent {
|
|
|
249
250
|
tabPosition,
|
|
250
251
|
type,
|
|
251
252
|
deleteTabItem: this.deleteTabItem,
|
|
252
|
-
handleKeyDown: this.foundation.handleKeyDown
|
|
253
|
+
handleKeyDown: this.foundation.handleKeyDown,
|
|
254
|
+
more
|
|
253
255
|
};
|
|
254
256
|
const tabBar = renderTabBar ? renderTabBar(tabBarProps, TabBar) : /*#__PURE__*/React.createElement(TabBar, Object.assign({}, tabBarProps));
|
|
255
257
|
const content = keepDOM ? children : this.getActiveItem();
|
|
@@ -296,7 +298,8 @@ Tabs.propTypes = {
|
|
|
296
298
|
tabPosition: PropTypes.oneOf(strings.POSITION_MAP),
|
|
297
299
|
type: PropTypes.oneOf(strings.TYPE_MAP),
|
|
298
300
|
onTabClose: PropTypes.func,
|
|
299
|
-
preventScroll: PropTypes.bool
|
|
301
|
+
preventScroll: PropTypes.bool,
|
|
302
|
+
more: PropTypes.oneOfType([PropTypes.number, PropTypes.object])
|
|
300
303
|
};
|
|
301
304
|
Tabs.__SemiComponentName__ = "Tabs";
|
|
302
305
|
Tabs.defaultProps = getDefaultPropsFromGlobalConfig(Tabs.__SemiComponentName__, {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { CSSProperties, MouseEvent, ReactNode } from 'react';
|
|
2
2
|
import { Motion } from '../_base/base';
|
|
3
3
|
import TabBar from './TabBar';
|
|
4
|
+
import { DropdownProps } from "../dropdown";
|
|
4
5
|
export type TabType = 'line' | 'card' | 'button';
|
|
5
6
|
export type TabSize = 'small' | 'medium' | 'large';
|
|
6
7
|
export type TabPosition = 'top' | 'left';
|
|
@@ -34,6 +35,11 @@ export interface TabsProps {
|
|
|
34
35
|
type?: TabType;
|
|
35
36
|
onTabClose?: (tabKey: string) => void;
|
|
36
37
|
preventScroll?: boolean;
|
|
38
|
+
more?: number | {
|
|
39
|
+
count: number;
|
|
40
|
+
render?: () => ReactNode;
|
|
41
|
+
dropdownProps?: DropdownProps;
|
|
42
|
+
};
|
|
37
43
|
}
|
|
38
44
|
export interface TabBarProps {
|
|
39
45
|
activeKey?: string;
|
|
@@ -51,6 +57,7 @@ export interface TabBarProps {
|
|
|
51
57
|
closable?: boolean;
|
|
52
58
|
deleteTabItem?: (tabKey: string, event: MouseEvent<Element>) => void;
|
|
53
59
|
handleKeyDown?: (event: React.KeyboardEvent, itemKey: string, closable: boolean) => void;
|
|
60
|
+
more?: TabsProps['more'];
|
|
54
61
|
}
|
|
55
62
|
export interface TabPaneProps {
|
|
56
63
|
className?: string;
|
|
@@ -60,7 +60,7 @@ export default class Title extends PureComponent<TitleProps> {
|
|
|
60
60
|
underline: PropTypes.Requireable<boolean>;
|
|
61
61
|
strong: PropTypes.Requireable<boolean>;
|
|
62
62
|
type: PropTypes.Requireable<"warning" | "success" | "primary" | "secondary" | "danger" | "tertiary" | "quaternary">;
|
|
63
|
-
heading: PropTypes.Requireable<
|
|
63
|
+
heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 5 | 6>;
|
|
64
64
|
style: PropTypes.Requireable<object>;
|
|
65
65
|
className: PropTypes.Requireable<string>;
|
|
66
66
|
component: PropTypes.Requireable<string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.58.0",
|
|
4
4
|
"description": "A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es/index.js",
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"@dnd-kit/core": "^6.0.8",
|
|
21
21
|
"@dnd-kit/sortable": "^7.0.2",
|
|
22
22
|
"@dnd-kit/utilities": "^3.2.1",
|
|
23
|
-
"@douyinfe/semi-animation": "2.
|
|
24
|
-
"@douyinfe/semi-animation-react": "2.
|
|
25
|
-
"@douyinfe/semi-foundation": "2.
|
|
26
|
-
"@douyinfe/semi-icons": "2.
|
|
27
|
-
"@douyinfe/semi-illustrations": "2.
|
|
28
|
-
"@douyinfe/semi-theme-default": "2.
|
|
23
|
+
"@douyinfe/semi-animation": "2.58.0",
|
|
24
|
+
"@douyinfe/semi-animation-react": "2.58.0",
|
|
25
|
+
"@douyinfe/semi-foundation": "2.58.0",
|
|
26
|
+
"@douyinfe/semi-icons": "2.58.0",
|
|
27
|
+
"@douyinfe/semi-illustrations": "2.58.0",
|
|
28
|
+
"@douyinfe/semi-theme-default": "2.58.0",
|
|
29
29
|
"async-validator": "^3.5.0",
|
|
30
30
|
"classnames": "^2.2.6",
|
|
31
31
|
"copy-text-to-clipboard": "^2.1.1",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
],
|
|
76
76
|
"author": "",
|
|
77
77
|
"license": "MIT",
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "71f716ee06be81190ed3d28de4e61542ad0b62d3",
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@babel/plugin-proposal-decorators": "^7.15.8",
|
|
81
81
|
"@babel/plugin-transform-runtime": "^7.15.8",
|