@douyinfe/semi-ui 2.35.0 → 2.36.0-beta.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 +142 -17
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +193 -106
- 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/anchor/index.d.ts +2 -1
- package/lib/cjs/anchor/link.js +13 -6
- package/lib/cjs/calendar/dayCalendar.d.ts +2 -1
- package/lib/cjs/calendar/dayCalendar.js +7 -2
- package/lib/cjs/calendar/index.d.ts +1 -0
- package/lib/cjs/calendar/index.js +1 -0
- package/lib/cjs/calendar/interface.d.ts +2 -0
- package/lib/cjs/calendar/monthCalendar.d.ts +1 -1
- package/lib/cjs/calendar/monthCalendar.js +12 -4
- package/lib/cjs/calendar/rangeCalendar.d.ts +3 -1
- package/lib/cjs/calendar/rangeCalendar.js +23 -9
- package/lib/cjs/calendar/weekCalendar.d.ts +3 -1
- package/lib/cjs/calendar/weekCalendar.js +23 -9
- package/lib/cjs/datePicker/datePicker.js +12 -4
- package/lib/cjs/datePicker/monthsGrid.js +6 -2
- package/lib/cjs/datePicker/yearAndMonth.d.ts +2 -0
- package/lib/cjs/datePicker/yearAndMonth.js +4 -2
- package/lib/cjs/input/textarea.d.ts +1 -1
- package/lib/cjs/navigation/Footer.d.ts +3 -0
- package/lib/cjs/navigation/Footer.js +19 -9
- package/lib/cjs/navigation/SubNav.d.ts +1 -13
- package/lib/cjs/navigation/SubNav.js +4 -19
- package/lib/cjs/navigation/index.d.ts +4 -1
- package/lib/cjs/navigation/index.js +7 -1
- package/lib/cjs/select/index.d.ts +2 -1
- package/lib/cjs/select/index.js +4 -0
- package/lib/cjs/table/Body/index.d.ts +1 -1
- package/lib/cjs/table/ResizableTable.d.ts +1 -1
- package/lib/cjs/table/TableHeaderRow.js +22 -14
- package/lib/cjs/table/interface.d.ts +5 -1
- package/lib/cjs/typography/base.d.ts +1 -0
- package/lib/cjs/typography/base.js +28 -14
- package/lib/cjs/typography/title.d.ts +2 -0
- package/lib/cjs/typography/title.js +2 -1
- package/lib/es/anchor/index.d.ts +2 -1
- package/lib/es/anchor/link.js +12 -6
- package/lib/es/calendar/dayCalendar.d.ts +2 -1
- package/lib/es/calendar/dayCalendar.js +7 -2
- package/lib/es/calendar/index.d.ts +1 -0
- package/lib/es/calendar/index.js +1 -0
- package/lib/es/calendar/interface.d.ts +2 -0
- package/lib/es/calendar/monthCalendar.d.ts +1 -1
- package/lib/es/calendar/monthCalendar.js +12 -4
- package/lib/es/calendar/rangeCalendar.d.ts +3 -1
- package/lib/es/calendar/rangeCalendar.js +19 -9
- package/lib/es/calendar/weekCalendar.d.ts +3 -1
- package/lib/es/calendar/weekCalendar.js +19 -9
- package/lib/es/datePicker/datePicker.js +12 -4
- package/lib/es/datePicker/monthsGrid.js +6 -2
- package/lib/es/datePicker/yearAndMonth.d.ts +2 -0
- package/lib/es/datePicker/yearAndMonth.js +4 -2
- package/lib/es/input/textarea.d.ts +1 -1
- package/lib/es/navigation/Footer.d.ts +3 -0
- package/lib/es/navigation/Footer.js +16 -7
- package/lib/es/navigation/SubNav.d.ts +1 -13
- package/lib/es/navigation/SubNav.js +5 -20
- package/lib/es/navigation/index.d.ts +4 -1
- package/lib/es/navigation/index.js +7 -1
- package/lib/es/select/index.d.ts +2 -1
- package/lib/es/select/index.js +4 -0
- package/lib/es/table/Body/index.d.ts +1 -1
- package/lib/es/table/ResizableTable.d.ts +1 -1
- package/lib/es/table/TableHeaderRow.js +22 -14
- package/lib/es/table/interface.d.ts +5 -1
- package/lib/es/typography/base.d.ts +1 -0
- package/lib/es/typography/base.js +28 -14
- package/lib/es/typography/title.d.ts +2 -0
- package/lib/es/typography/title.js +2 -1
- package/package.json +8 -9
|
@@ -180,7 +180,8 @@ class SubNav extends _baseComponent.default {
|
|
|
180
180
|
itemKey,
|
|
181
181
|
indent,
|
|
182
182
|
disabled,
|
|
183
|
-
level
|
|
183
|
+
level,
|
|
184
|
+
expandIcon
|
|
184
185
|
} = this.props;
|
|
185
186
|
const {
|
|
186
187
|
mode,
|
|
@@ -210,7 +211,7 @@ class SubNav extends _baseComponent.default {
|
|
|
210
211
|
"aria-hidden": true
|
|
211
212
|
});
|
|
212
213
|
} else {
|
|
213
|
-
toggleIconType = /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronDown, {
|
|
214
|
+
toggleIconType = expandIcon ? expandIcon : /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronDown, {
|
|
214
215
|
"aria-hidden": true
|
|
215
216
|
}); // Horizontal mode does not require animation fix#1198
|
|
216
217
|
// withTransition = true;
|
|
@@ -220,7 +221,7 @@ class SubNav extends _baseComponent.default {
|
|
|
220
221
|
withTransition = true;
|
|
221
222
|
}
|
|
222
223
|
|
|
223
|
-
toggleIconType = /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronDown, {
|
|
224
|
+
toggleIconType = expandIcon ? expandIcon : /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronDown, {
|
|
224
225
|
"aria-hidden": true
|
|
225
226
|
});
|
|
226
227
|
}
|
|
@@ -410,14 +411,6 @@ SubNav.propTypes = {
|
|
|
410
411
|
* Nested child elements
|
|
411
412
|
*/
|
|
412
413
|
children: _propTypes.default.node,
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* The icon name of the right control switch (on and off status)
|
|
416
|
-
*/
|
|
417
|
-
toggleIcon: _propTypes.default.oneOfType([_propTypes.default.any, _propTypes.default.shape({
|
|
418
|
-
open: _propTypes.default.string,
|
|
419
|
-
closed: _propTypes.default.string
|
|
420
|
-
})]),
|
|
421
414
|
style: _propTypes.default.object,
|
|
422
415
|
|
|
423
416
|
/**
|
|
@@ -441,13 +434,5 @@ SubNav.defaultProps = {
|
|
|
441
434
|
isCollapsed: false,
|
|
442
435
|
isOpen: false,
|
|
443
436
|
maxHeight: _constants.numbers.DEFAULT_SUBNAV_MAX_HEIGHT,
|
|
444
|
-
toggleIcon: {
|
|
445
|
-
open: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronUp, {
|
|
446
|
-
"aria-hidden": true
|
|
447
|
-
}),
|
|
448
|
-
closed: /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronDown, {
|
|
449
|
-
"aria-hidden": true
|
|
450
|
-
})
|
|
451
|
-
},
|
|
452
437
|
disabled: false
|
|
453
438
|
};
|
|
@@ -11,7 +11,7 @@ export type { CollapseButtonProps } from './CollapseButton';
|
|
|
11
11
|
export type { NavFooterProps } from './Footer';
|
|
12
12
|
export type { NavHeaderProps } from './Header';
|
|
13
13
|
export type { NavItemProps } from './Item';
|
|
14
|
-
export type {
|
|
14
|
+
export type { SubNavProps } from './SubNav';
|
|
15
15
|
export declare type Mode = 'vertical' | 'horizontal';
|
|
16
16
|
export interface OnSelectedData {
|
|
17
17
|
itemKey: React.ReactText;
|
|
@@ -33,6 +33,7 @@ export interface NavProps extends BaseProps {
|
|
|
33
33
|
defaultIsCollapsed?: boolean;
|
|
34
34
|
defaultOpenKeys?: React.ReactText[];
|
|
35
35
|
defaultSelectedKeys?: React.ReactText[];
|
|
36
|
+
expandIcon?: React.ReactNode;
|
|
36
37
|
footer?: React.ReactNode | NavFooterProps;
|
|
37
38
|
header?: React.ReactNode | NavHeaderProps;
|
|
38
39
|
isCollapsed?: boolean;
|
|
@@ -86,9 +87,11 @@ declare class Nav extends BaseComponent<NavProps, NavState> {
|
|
|
86
87
|
static Header: typeof Header;
|
|
87
88
|
static Footer: typeof Footer;
|
|
88
89
|
static propTypes: {
|
|
90
|
+
collapseIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
89
91
|
defaultOpenKeys: PropTypes.Requireable<NonNullable<string | number>[]>;
|
|
90
92
|
openKeys: PropTypes.Requireable<NonNullable<string | number>[]>;
|
|
91
93
|
defaultSelectedKeys: PropTypes.Requireable<NonNullable<string | number>[]>;
|
|
94
|
+
expandIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
92
95
|
selectedKeys: PropTypes.Requireable<NonNullable<string | number>[]>;
|
|
93
96
|
mode: PropTypes.Requireable<string>;
|
|
94
97
|
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -195,13 +195,17 @@ class Nav extends _baseComponent.default {
|
|
|
195
195
|
renderItems() {
|
|
196
196
|
let items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
197
197
|
let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
198
|
+
const {
|
|
199
|
+
expandIcon
|
|
200
|
+
} = this.props;
|
|
198
201
|
|
|
199
202
|
const finalDom = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, items.map((item, idx) => {
|
|
200
203
|
if (Array.isArray(item.items) && item.items.length) {
|
|
201
204
|
return /*#__PURE__*/_react.default.createElement(_SubNav.default, Object.assign({
|
|
202
205
|
key: item.itemKey || String(level) + idx
|
|
203
206
|
}, item, {
|
|
204
|
-
level: level
|
|
207
|
+
level: level,
|
|
208
|
+
expandIcon: expandIcon
|
|
205
209
|
}), this.renderItems(item.items, level + 1));
|
|
206
210
|
} else {
|
|
207
211
|
return /*#__PURE__*/_react.default.createElement(_Item.default, Object.assign({
|
|
@@ -371,11 +375,13 @@ Nav.Item = _Item.default;
|
|
|
371
375
|
Nav.Header = _Header.default;
|
|
372
376
|
Nav.Footer = _Footer.default;
|
|
373
377
|
Nav.propTypes = {
|
|
378
|
+
collapseIcon: _propTypes.default.node,
|
|
374
379
|
// Initial expanded SubNav navigation key array
|
|
375
380
|
defaultOpenKeys: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])),
|
|
376
381
|
openKeys: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])),
|
|
377
382
|
// Initial selected navigation key array
|
|
378
383
|
defaultSelectedKeys: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])),
|
|
384
|
+
expandIcon: _propTypes.default.node,
|
|
379
385
|
selectedKeys: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])),
|
|
380
386
|
// Navigation type, now supports vertical, horizontal
|
|
381
387
|
mode: _propTypes.default.oneOf([..._constants.strings.MODE]),
|
|
@@ -271,7 +271,7 @@ declare class Select extends BaseComponent<SelectProps, SelectState> {
|
|
|
271
271
|
componentDidMount(): void;
|
|
272
272
|
componentWillUnmount(): void;
|
|
273
273
|
componentDidUpdate(prevProps: SelectProps, prevState: SelectState): void;
|
|
274
|
-
handleInputChange: (value: string, event: React.
|
|
274
|
+
handleInputChange: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
275
275
|
renderInput(): JSX.Element;
|
|
276
276
|
close(): void;
|
|
277
277
|
open(): void;
|
|
@@ -281,6 +281,7 @@ declare class Select extends BaseComponent<SelectProps, SelectState> {
|
|
|
281
281
|
focus(): void;
|
|
282
282
|
onSelect(option: OptionProps, optionIndex: number, e: any): void;
|
|
283
283
|
onClear(e: React.MouseEvent): void;
|
|
284
|
+
search(value: string, event: React.ChangeEvent<HTMLInputElement>): void;
|
|
284
285
|
renderEmpty(): JSX.Element;
|
|
285
286
|
renderLoading(): JSX.Element;
|
|
286
287
|
renderOption(option: OptionProps, optionIndex: number, style?: React.CSSProperties): any;
|
package/lib/cjs/select/index.js
CHANGED
|
@@ -562,6 +562,10 @@ class Select extends _baseComponent.default {
|
|
|
562
562
|
this.foundation.handleClearClick(e);
|
|
563
563
|
}
|
|
564
564
|
|
|
565
|
+
search(value, event) {
|
|
566
|
+
this.handleInputChange(value, event);
|
|
567
|
+
}
|
|
568
|
+
|
|
565
569
|
renderEmpty() {
|
|
566
570
|
return /*#__PURE__*/_react.default.createElement(_option.default, {
|
|
567
571
|
empty: true,
|
|
@@ -2,7 +2,7 @@ import React, { ReactNode } from 'react';
|
|
|
2
2
|
import { FlattenData, GroupFlattenData } from '@douyinfe/semi-foundation/lib/cjs/table/bodyFoundation';
|
|
3
3
|
import Store from '@douyinfe/semi-foundation/lib/cjs/utils/Store';
|
|
4
4
|
import { BaseProps } from '../../_base/baseComponent';
|
|
5
|
-
import { ExpandedRowRender, Virtualized, GetVirtualizedListRef, ColumnProps, Size, BodyScrollEvent, Scroll, Fixed, TableComponents, RowExpandable, VirtualizedOnScroll, RowKey } from '../interface';
|
|
5
|
+
import type { ExpandedRowRender, Virtualized, GetVirtualizedListRef, ColumnProps, Size, BodyScrollEvent, Scroll, Fixed, TableComponents, RowExpandable, VirtualizedOnScroll, RowKey } from '../interface';
|
|
6
6
|
export interface BodyProps extends BaseProps {
|
|
7
7
|
tableLayout?: 'fixed' | 'auto';
|
|
8
8
|
anyColumnFixed?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Table from './Table';
|
|
3
|
-
import { TableProps } from './interface';
|
|
3
|
+
import type { TableProps } from './interface';
|
|
4
4
|
declare const _default: React.ForwardRefExoticComponent<TableProps<any> & React.RefAttributes<Table<any>>>;
|
|
5
5
|
export default _default;
|
|
@@ -183,21 +183,29 @@ class TableHeaderRow extends _baseComponent.default {
|
|
|
183
183
|
return null;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
return
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
186
|
+
return (
|
|
187
|
+
/*#__PURE__*/
|
|
188
|
+
// @ts-ignore no need to do complex ts type checking and qualification
|
|
189
|
+
_react.default.createElement(HeaderCell, Object.assign({
|
|
190
|
+
role: "columnheader",
|
|
191
|
+
"aria-colindex": cellIndex + 1
|
|
192
|
+
}, props, {
|
|
193
|
+
style: cellStyle,
|
|
194
|
+
key: column.key || column.dataIndex || cellIndex
|
|
195
|
+
}))
|
|
196
|
+
);
|
|
193
197
|
});
|
|
194
|
-
return
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
198
|
+
return (
|
|
199
|
+
/*#__PURE__*/
|
|
200
|
+
// @ts-ignore no need to do complex ts type checking and qualification
|
|
201
|
+
_react.default.createElement(HeaderRow, Object.assign({
|
|
202
|
+
role: "row",
|
|
203
|
+
"aria-rowindex": index + 1
|
|
204
|
+
}, rowProps, {
|
|
205
|
+
style: style,
|
|
206
|
+
ref: this.cacheRef
|
|
207
|
+
}), cells)
|
|
208
|
+
);
|
|
201
209
|
}
|
|
202
210
|
|
|
203
211
|
}
|
|
@@ -262,8 +262,12 @@ export declare type VirtualizedOnScrollArgs = {
|
|
|
262
262
|
scrollOffset?: number;
|
|
263
263
|
scrollUpdateWasRequested?: boolean;
|
|
264
264
|
};
|
|
265
|
+
export declare type VirtualizeItemSizeRow = {
|
|
266
|
+
sectionRow?: boolean;
|
|
267
|
+
expandedRow?: boolean;
|
|
268
|
+
};
|
|
265
269
|
export declare type VirtualizedMode = 'list' | 'grid';
|
|
266
|
-
export declare type VirtualizedItemSizeFn = (index?: number) => number;
|
|
270
|
+
export declare type VirtualizedItemSizeFn = (index?: number, row?: VirtualizeItemSizeRow) => number;
|
|
267
271
|
export declare type VirtualizedItemSize = number | VirtualizedItemSizeFn;
|
|
268
272
|
export declare type VirtualizedOnScroll = (object: VirtualizedOnScrollArgs) => void;
|
|
269
273
|
export interface VirtualizedProps {
|
|
@@ -107,7 +107,7 @@ class Base extends _react.Component {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
this.rafId = window.requestAnimationFrame(this.getEllipsisState.bind(this));
|
|
110
|
-
}; // if
|
|
110
|
+
}; // if it needs to use js overflowed:
|
|
111
111
|
// 1. text is expandable 2. expandText need to be shown 3. has extra operation 4. text need to ellipse from mid
|
|
112
112
|
|
|
113
113
|
|
|
@@ -445,10 +445,7 @@ class Base extends _react.Component {
|
|
|
445
445
|
const {
|
|
446
446
|
expanded
|
|
447
447
|
} = this.state;
|
|
448
|
-
const canUseCSSEllipsis = this.canUseCSSEllipsis(); //
|
|
449
|
-
// both css truncation and js truncation should throw a warning
|
|
450
|
-
|
|
451
|
-
(0, _warning.default)('children' in this.props && typeof children !== 'string', "[Semi Typography] 'Only children with pure text could be used with ellipsis at this moment."); // If children is null, css/js truncated flag isTruncate is false
|
|
448
|
+
const canUseCSSEllipsis = this.canUseCSSEllipsis(); // If children is null, css/js truncated flag isTruncate is false
|
|
452
449
|
|
|
453
450
|
if ((0, _isNull2.default)(children)) {
|
|
454
451
|
this.setState({
|
|
@@ -456,7 +453,11 @@ class Base extends _react.Component {
|
|
|
456
453
|
isOverflowed: false
|
|
457
454
|
});
|
|
458
455
|
return undefined;
|
|
459
|
-
}
|
|
456
|
+
} // Currently only text truncation is supported, if there is non-text,
|
|
457
|
+
// both css truncation and js truncation should throw a warning
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
(0, _warning.default)('children' in this.props && typeof children !== 'string', "[Semi Typography] Only children with pure text could be used with ellipsis at this moment.");
|
|
460
461
|
|
|
461
462
|
if (!rows || rows < 0 || expanded) {
|
|
462
463
|
return undefined;
|
|
@@ -565,9 +566,10 @@ class Base extends _react.Component {
|
|
|
565
566
|
icon,
|
|
566
567
|
size,
|
|
567
568
|
link,
|
|
568
|
-
heading
|
|
569
|
+
heading,
|
|
570
|
+
weight
|
|
569
571
|
} = _a,
|
|
570
|
-
rest = __rest(_a, ["component", "children", "className", "type", "spacing", "disabled", "style", "ellipsis", "icon", "size", "link", "heading"]);
|
|
572
|
+
rest = __rest(_a, ["component", "children", "className", "type", "spacing", "disabled", "style", "ellipsis", "icon", "size", "link", "heading", "weight"]);
|
|
571
573
|
|
|
572
574
|
const textProps = (0, _omit2.default)(rest, ['strong', 'editable', 'mark', 'copyable', 'underline', 'code', // 'link',
|
|
573
575
|
'delete']);
|
|
@@ -586,6 +588,7 @@ class Base extends _react.Component {
|
|
|
586
588
|
className: linkCls
|
|
587
589
|
}, textNode) : textNode));
|
|
588
590
|
const hTagReg = /^h[1-6]$/;
|
|
591
|
+
const isHeader = (0, _isString2.default)(heading) && hTagReg.test(heading);
|
|
589
592
|
const wrapperCls = (0, _classnames.default)(className, ellipsisCls, {
|
|
590
593
|
// [`${prefixCls}-primary`]: !type || type === 'primary',
|
|
591
594
|
[`${prefixCls}-${type}`]: type && !link,
|
|
@@ -593,11 +596,15 @@ class Base extends _react.Component {
|
|
|
593
596
|
[`${prefixCls}-link`]: link,
|
|
594
597
|
[`${prefixCls}-disabled`]: disabled,
|
|
595
598
|
[`${prefixCls}-${spacing}`]: spacing,
|
|
596
|
-
[`${prefixCls}-${heading}`]:
|
|
599
|
+
[`${prefixCls}-${heading}`]: isHeader,
|
|
600
|
+
[`${prefixCls}-${heading}-weight-${weight}`]: isHeader && isNaN(Number(weight))
|
|
597
601
|
});
|
|
602
|
+
const textStyle = Object.assign(Object.assign({}, isNaN(Number(weight)) ? {} : {
|
|
603
|
+
fontWeight: weight
|
|
604
|
+
}), style);
|
|
598
605
|
return /*#__PURE__*/_react.default.createElement(_typography.default, Object.assign({
|
|
599
606
|
className: wrapperCls,
|
|
600
|
-
style: Object.assign(Object.assign({},
|
|
607
|
+
style: Object.assign(Object.assign({}, textStyle), ellipsisStyle),
|
|
601
608
|
component: component,
|
|
602
609
|
forwardRef: this.wrapperRef
|
|
603
610
|
}, textProps), textNode, this.renderOperations());
|
|
@@ -633,15 +640,22 @@ class Base extends _react.Component {
|
|
|
633
640
|
}
|
|
634
641
|
|
|
635
642
|
render() {
|
|
636
|
-
|
|
637
|
-
onResize: this.onResize
|
|
638
|
-
}, /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
|
|
643
|
+
const content = /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
|
|
639
644
|
componentName: "Typography"
|
|
640
645
|
}, locale => {
|
|
641
646
|
this.expandStr = locale.expand;
|
|
642
647
|
this.collapseStr = locale.collapse;
|
|
643
648
|
return this.renderTipWrapper();
|
|
644
|
-
})
|
|
649
|
+
});
|
|
650
|
+
|
|
651
|
+
if (this.props.ellipsis) {
|
|
652
|
+
return /*#__PURE__*/_react.default.createElement(_resizeObserver.default, {
|
|
653
|
+
onResize: this.onResize,
|
|
654
|
+
observeParent: true
|
|
655
|
+
}, content);
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
return content;
|
|
645
659
|
}
|
|
646
660
|
|
|
647
661
|
}
|
|
@@ -26,6 +26,7 @@ export interface TitleProps extends Omit<React.HTMLAttributes<HTMLHeadingElement
|
|
|
26
26
|
style?: React.CSSProperties;
|
|
27
27
|
type?: TypographyBaseType;
|
|
28
28
|
underline?: boolean;
|
|
29
|
+
weight?: ArrayElement<typeof strings.WEIGHT> | number;
|
|
29
30
|
}
|
|
30
31
|
export default class Title extends PureComponent<TitleProps> {
|
|
31
32
|
static propTypes: {
|
|
@@ -42,6 +43,7 @@ export default class Title extends PureComponent<TitleProps> {
|
|
|
42
43
|
style: PropTypes.Requireable<object>;
|
|
43
44
|
className: PropTypes.Requireable<string>;
|
|
44
45
|
component: PropTypes.Requireable<string>;
|
|
46
|
+
weight: PropTypes.Requireable<NonNullable<number | "default" | "bold" | "medium" | "light" | "regular" | "semibold">>;
|
|
45
47
|
};
|
|
46
48
|
static defaultProps: {
|
|
47
49
|
copyable: boolean;
|
|
@@ -63,7 +63,8 @@ Title.propTypes = {
|
|
|
63
63
|
heading: _propTypes.default.oneOf(_constants.strings.HEADING),
|
|
64
64
|
style: _propTypes.default.object,
|
|
65
65
|
className: _propTypes.default.string,
|
|
66
|
-
component: _propTypes.default.string
|
|
66
|
+
component: _propTypes.default.string,
|
|
67
|
+
weight: _propTypes.default.oneOfType([_propTypes.default.oneOf(_constants.strings.WEIGHT), _propTypes.default.number])
|
|
67
68
|
};
|
|
68
69
|
Title.defaultProps = {
|
|
69
70
|
copyable: false,
|
package/lib/es/anchor/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import Link from './link';
|
|
|
7
7
|
import '@douyinfe/semi-foundation/lib/es/anchor/anchor.css';
|
|
8
8
|
import { ArrayElement } from '../_base/base';
|
|
9
9
|
import { ContextValue } from '../configProvider/context';
|
|
10
|
+
import { ShowTooltip } from '../typography/interface';
|
|
10
11
|
export type { LinkProps } from './link';
|
|
11
12
|
export interface AnchorProps {
|
|
12
13
|
autoCollapse?: boolean;
|
|
@@ -20,7 +21,7 @@ export interface AnchorProps {
|
|
|
20
21
|
position?: ArrayElement<typeof strings.POSITION_SET>;
|
|
21
22
|
railTheme?: ArrayElement<typeof strings.SLIDE_COLOR>;
|
|
22
23
|
scrollMotion?: boolean;
|
|
23
|
-
showTooltip?: boolean;
|
|
24
|
+
showTooltip?: boolean | ShowTooltip;
|
|
24
25
|
size?: ArrayElement<typeof strings.SIZE>;
|
|
25
26
|
style?: React.CSSProperties;
|
|
26
27
|
targetOffset?: number;
|
package/lib/es/anchor/link.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _isObject from "lodash/isObject";
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import cls from 'classnames';
|
|
3
4
|
import PropTypes from 'prop-types';
|
|
@@ -30,17 +31,22 @@ export default class Link extends BaseComponent {
|
|
|
30
31
|
[`${prefixCls}-link-tooltip-active`]: active,
|
|
31
32
|
[`${prefixCls}-link-tooltip-disabled`]: disabled
|
|
32
33
|
});
|
|
33
|
-
const toolTipOpt = position ? {
|
|
34
|
-
position
|
|
35
|
-
} : {};
|
|
36
34
|
|
|
37
35
|
if (showTooltip) {
|
|
36
|
+
const showTooltipObj = _isObject(showTooltip) ? Object.assign({
|
|
37
|
+
opts: {}
|
|
38
|
+
}, showTooltip) : {
|
|
39
|
+
opts: {}
|
|
40
|
+
}; // The position can be set through showTooltip, here it is compatible with the position API
|
|
41
|
+
|
|
42
|
+
if (position) {
|
|
43
|
+
showTooltipObj.opts['position'] = position;
|
|
44
|
+
}
|
|
45
|
+
|
|
38
46
|
return /*#__PURE__*/React.createElement(Typography.Text, {
|
|
39
47
|
size: size === 'default' ? 'normal' : 'small',
|
|
40
48
|
ellipsis: {
|
|
41
|
-
showTooltip:
|
|
42
|
-
opts: Object.assign({}, toolTipOpt)
|
|
43
|
-
}
|
|
49
|
+
showTooltip: showTooltipObj
|
|
44
50
|
},
|
|
45
51
|
type: 'tertiary',
|
|
46
52
|
className: linkTitleCls
|
|
@@ -26,6 +26,7 @@ export default class DayCalendar extends BaseComponent<DayCalendarProps, DayCale
|
|
|
26
26
|
style: PropTypes.Requireable<object>;
|
|
27
27
|
className: PropTypes.Requireable<string>;
|
|
28
28
|
dateGridRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
29
|
+
allDayEventsRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
29
30
|
};
|
|
30
31
|
static defaultProps: {
|
|
31
32
|
events: import("@douyinfe/semi-foundation/lib/es/calendar/foundation").EventObject[];
|
|
@@ -43,7 +44,7 @@ export default class DayCalendar extends BaseComponent<DayCalendarProps, DayCale
|
|
|
43
44
|
componentDidUpdate(prevProps: DayCalendarProps, prevState: DayCalendarState): void;
|
|
44
45
|
componentWillUnmount(): void;
|
|
45
46
|
checkWeekend: (val: Date) => boolean;
|
|
46
|
-
renderAllDayEvents: (events: ParsedEventsWithArray['allDay']) => JSX.Element[];
|
|
47
|
+
renderAllDayEvents: (events: ParsedEventsWithArray['allDay']) => string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.ReactFragment | JSX.Element[];
|
|
47
48
|
handleClick: (e: React.MouseEvent, val: [Date, number, number, number]) => void;
|
|
48
49
|
renderAllDay: (events: ParsedEventsWithArray['allDay']) => JSX.Element;
|
|
49
50
|
render(): JSX.Element;
|
|
@@ -18,6 +18,10 @@ export default class DayCalendar extends BaseComponent {
|
|
|
18
18
|
this.checkWeekend = val => this.foundation.checkWeekend(val);
|
|
19
19
|
|
|
20
20
|
this.renderAllDayEvents = events => {
|
|
21
|
+
if (this.props.allDayEventsRender) {
|
|
22
|
+
return this.props.allDayEventsRender(this.props.events);
|
|
23
|
+
}
|
|
24
|
+
|
|
21
25
|
const list = events.map((event, ind) => {
|
|
22
26
|
const {
|
|
23
27
|
children,
|
|
@@ -110,7 +114,7 @@ export default class DayCalendar extends BaseComponent {
|
|
|
110
114
|
const prevEventKeys = prevState.cachedKeys;
|
|
111
115
|
const nowEventKeys = this.props.events.map(event => event.key);
|
|
112
116
|
|
|
113
|
-
if (!_isEqual(prevEventKeys, nowEventKeys)) {
|
|
117
|
+
if (!_isEqual(prevEventKeys, nowEventKeys) || !_isEqual(prevProps.displayValue, this.props.displayValue)) {
|
|
114
118
|
this.foundation.parseDailyEvents();
|
|
115
119
|
}
|
|
116
120
|
}
|
|
@@ -183,7 +187,8 @@ DayCalendar.propTypes = {
|
|
|
183
187
|
height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
184
188
|
style: PropTypes.object,
|
|
185
189
|
className: PropTypes.string,
|
|
186
|
-
dateGridRender: PropTypes.func
|
|
190
|
+
dateGridRender: PropTypes.func,
|
|
191
|
+
allDayEventsRender: PropTypes.func
|
|
187
192
|
};
|
|
188
193
|
DayCalendar.defaultProps = {
|
|
189
194
|
events: [],
|
|
@@ -22,6 +22,7 @@ declare class Calendar extends BaseComponent<CalendarProps, {}> {
|
|
|
22
22
|
scrollTop: PropTypes.Requireable<number>;
|
|
23
23
|
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
24
24
|
renderTimeDisplay: PropTypes.Requireable<(...args: any[]) => any>;
|
|
25
|
+
renderDateDisplay: PropTypes.Requireable<(...args: any[]) => any>;
|
|
25
26
|
markWeekend: PropTypes.Requireable<boolean>;
|
|
26
27
|
width: PropTypes.Requireable<NonNullable<string | number>>;
|
|
27
28
|
height: PropTypes.Requireable<NonNullable<string | number>>;
|
package/lib/es/calendar/index.js
CHANGED
|
@@ -54,6 +54,7 @@ Calendar.propTypes = {
|
|
|
54
54
|
scrollTop: PropTypes.number,
|
|
55
55
|
onClick: PropTypes.func,
|
|
56
56
|
renderTimeDisplay: PropTypes.func,
|
|
57
|
+
renderDateDisplay: PropTypes.func,
|
|
57
58
|
markWeekend: PropTypes.bool,
|
|
58
59
|
width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
59
60
|
height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
@@ -18,7 +18,9 @@ export interface CalendarProps extends BaseProps {
|
|
|
18
18
|
markWeekend?: boolean;
|
|
19
19
|
width?: number | string;
|
|
20
20
|
height?: number | string;
|
|
21
|
+
renderDateDisplay?: (date: Date) => React.ReactNode;
|
|
21
22
|
dateGridRender?: (dateString?: string, date?: Date) => React.ReactNode;
|
|
23
|
+
allDayEventsRender?: (events: EventObject[]) => React.ReactNode;
|
|
22
24
|
}
|
|
23
25
|
export declare type DayCalendarProps = Omit<CalendarProps, 'mode'>;
|
|
24
26
|
declare type DayCalendarPropsKeys = 'events' | 'displayValue' | 'showCurrTime' | 'mode' | 'dateGridRender';
|
|
@@ -51,7 +51,7 @@ export default class monthCalendar extends BaseComponent<MonthCalendarProps, Mon
|
|
|
51
51
|
renderHeader: (dateFnsLocale: Locale['dateFnsLocale']) => JSX.Element;
|
|
52
52
|
renderEvents: (events: ParsedRangeEvent[]) => JSX.Element[];
|
|
53
53
|
renderCollapsed: (events: MonthlyEvent['day'][number], itemInfo: DateObj, listCls: string, month: string) => JSX.Element;
|
|
54
|
-
formatDayString: (month: string, date: string) => JSX.Element;
|
|
54
|
+
formatDayString: (dateObj: Date, month: string, date: string) => string | number | boolean | React.ReactFragment | JSX.Element;
|
|
55
55
|
renderCusDateGrid: (date: Date) => React.ReactNode;
|
|
56
56
|
renderWeekRow: (index: number | string, weekDay: MonthData[number], events?: MonthlyEvent) => JSX.Element;
|
|
57
57
|
renderMonthGrid: () => JSX.Element;
|
|
@@ -173,10 +173,18 @@ export default class monthCalendar extends BaseComponent {
|
|
|
173
173
|
key: date,
|
|
174
174
|
className: listCls,
|
|
175
175
|
onClick: e => this.handleClick(e, [date])
|
|
176
|
-
}, this.formatDayString(month, dayString), shouldRenderCard ? text : null, this.renderCusDateGrid(date)));
|
|
176
|
+
}, this.formatDayString(date, month, dayString), shouldRenderCard ? text : null, this.renderCusDateGrid(date)));
|
|
177
177
|
};
|
|
178
178
|
|
|
179
|
-
this.formatDayString = (month, date) => {
|
|
179
|
+
this.formatDayString = (dateObj, month, date) => {
|
|
180
|
+
const {
|
|
181
|
+
renderDateDisplay
|
|
182
|
+
} = this.props;
|
|
183
|
+
|
|
184
|
+
if (renderDateDisplay) {
|
|
185
|
+
return renderDateDisplay(dateObj);
|
|
186
|
+
}
|
|
187
|
+
|
|
180
188
|
if (date === '1') {
|
|
181
189
|
return /*#__PURE__*/React.createElement(LocaleConsumer, {
|
|
182
190
|
componentName: "Calendar"
|
|
@@ -253,7 +261,7 @@ export default class monthCalendar extends BaseComponent {
|
|
|
253
261
|
key: `${date}-weeksk`,
|
|
254
262
|
className: listCls,
|
|
255
263
|
onClick: e => _this.handleClick(e, [date])
|
|
256
|
-
}, _this.formatDayString(month, dayString), _this.renderCusDateGrid(date));
|
|
264
|
+
}, _this.formatDayString(date, month, dayString), _this.renderCusDateGrid(date));
|
|
257
265
|
|
|
258
266
|
if (!shouldRenderCollapsed) {
|
|
259
267
|
return inner;
|
|
@@ -373,7 +381,7 @@ export default class monthCalendar extends BaseComponent {
|
|
|
373
381
|
}
|
|
374
382
|
}
|
|
375
383
|
|
|
376
|
-
if (!_isEqual(prevEventKeys, nowEventKeys) || itemLimitUpdate) {
|
|
384
|
+
if (!_isEqual(prevEventKeys, nowEventKeys) || itemLimitUpdate || !_isEqual(prevProps.displayValue, this.props.displayValue)) {
|
|
377
385
|
this.foundation.parseMonthlyEvents(itemLimit || this.props.events);
|
|
378
386
|
}
|
|
379
387
|
}
|
|
@@ -20,7 +20,9 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
|
|
|
20
20
|
markWeekend: PropTypes.Requireable<boolean>;
|
|
21
21
|
scrollTop: PropTypes.Requireable<number>;
|
|
22
22
|
renderTimeDisplay: PropTypes.Requireable<(...args: any[]) => any>;
|
|
23
|
+
renderDateDisplay: PropTypes.Requireable<(...args: any[]) => any>;
|
|
23
24
|
dateGridRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
25
|
+
allDayEventsRender: PropTypes.Requireable<(...args: any[]) => any>;
|
|
24
26
|
width: PropTypes.Requireable<NonNullable<string | number>>;
|
|
25
27
|
height: PropTypes.Requireable<NonNullable<string | number>>;
|
|
26
28
|
style: PropTypes.Requireable<object>;
|
|
@@ -45,7 +47,7 @@ export default class RangeCalendar extends BaseComponent<RangeCalendarProps, Ran
|
|
|
45
47
|
handleClick: (e: React.MouseEvent, val: [Date, number, number, number]) => void;
|
|
46
48
|
renderDayGrid: () => JSX.Element[];
|
|
47
49
|
renderHeader: (dateFnsLocale: Locale['dateFnsLocale']) => JSX.Element;
|
|
48
|
-
renderAllDayEvents: (events: Array<ParsedRangeEvent>) => JSX.Element[];
|
|
50
|
+
renderAllDayEvents: (events: Array<ParsedRangeEvent>) => string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.ReactFragment | JSX.Element[];
|
|
49
51
|
renderAllDay: (locale: Locale['Calendar']) => JSX.Element;
|
|
50
52
|
render(): JSX.Element;
|
|
51
53
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _isEqual from "lodash/isEqual";
|
|
2
|
-
import React from 'react';
|
|
2
|
+
import React, { Fragment } from 'react';
|
|
3
3
|
import cls from 'classnames';
|
|
4
4
|
import PropTypes from 'prop-types'; // eslint-disable-next-line max-len
|
|
5
5
|
|
|
@@ -65,7 +65,8 @@ export default class RangeCalendar extends BaseComponent {
|
|
|
65
65
|
this.renderHeader = dateFnsLocale => {
|
|
66
66
|
const {
|
|
67
67
|
markWeekend,
|
|
68
|
-
range
|
|
68
|
+
range,
|
|
69
|
+
renderDateDisplay
|
|
69
70
|
} = this.props;
|
|
70
71
|
const {
|
|
71
72
|
month,
|
|
@@ -91,16 +92,21 @@ export default class RangeCalendar extends BaseComponent {
|
|
|
91
92
|
[`${cssClasses.PREFIX}-today`]: isToday,
|
|
92
93
|
[`${cssClasses.PREFIX}-weekend`]: markWeekend && day.isWeekend
|
|
93
94
|
});
|
|
95
|
+
const dateContent = renderDateDisplay ? renderDateDisplay(date) : /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
96
|
+
className: `${cssClasses.PREFIX}-today-date`
|
|
97
|
+
}, dayString), /*#__PURE__*/React.createElement("span", null, weekday));
|
|
94
98
|
return /*#__PURE__*/React.createElement("li", {
|
|
95
99
|
key: `${date.toString()}-weekheader`,
|
|
96
100
|
className: listCls
|
|
97
|
-
},
|
|
98
|
-
className: `${cssClasses.PREFIX}-today-date`
|
|
99
|
-
}, dayString), /*#__PURE__*/React.createElement("span", null, weekday));
|
|
101
|
+
}, dateContent);
|
|
100
102
|
}))));
|
|
101
103
|
};
|
|
102
104
|
|
|
103
105
|
this.renderAllDayEvents = events => {
|
|
106
|
+
if (this.props.allDayEventsRender) {
|
|
107
|
+
return this.props.allDayEventsRender(this.props.events);
|
|
108
|
+
}
|
|
109
|
+
|
|
104
110
|
const list = events.map((event, ind) => {
|
|
105
111
|
const {
|
|
106
112
|
leftPos,
|
|
@@ -124,13 +130,15 @@ export default class RangeCalendar extends BaseComponent {
|
|
|
124
130
|
};
|
|
125
131
|
|
|
126
132
|
this.renderAllDay = locale => {
|
|
133
|
+
const {
|
|
134
|
+
allDayEventsRender
|
|
135
|
+
} = this.props;
|
|
127
136
|
const {
|
|
128
137
|
allDay
|
|
129
138
|
} = this.state.parsedEvents;
|
|
130
139
|
const parsed = this.foundation.parseRangeAllDayEvents(allDay);
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
height: `${maxRowHeight}em`
|
|
140
|
+
const style = allDayEventsRender ? null : {
|
|
141
|
+
height: `${calcRowHeight(parsed)}em`
|
|
134
142
|
};
|
|
135
143
|
const {
|
|
136
144
|
markWeekend
|
|
@@ -214,7 +222,7 @@ export default class RangeCalendar extends BaseComponent {
|
|
|
214
222
|
const prevEventKeys = prevState.cachedKeys;
|
|
215
223
|
const nowEventKeys = this.props.events.map(event => event.key);
|
|
216
224
|
|
|
217
|
-
if (!_isEqual(prevEventKeys, nowEventKeys)) {
|
|
225
|
+
if (!_isEqual(prevEventKeys, nowEventKeys) || !_isEqual(prevProps.range, this.props.range)) {
|
|
218
226
|
this.foundation.parseRangeEvents();
|
|
219
227
|
}
|
|
220
228
|
}
|
|
@@ -267,7 +275,9 @@ RangeCalendar.propTypes = {
|
|
|
267
275
|
markWeekend: PropTypes.bool,
|
|
268
276
|
scrollTop: PropTypes.number,
|
|
269
277
|
renderTimeDisplay: PropTypes.func,
|
|
278
|
+
renderDateDisplay: PropTypes.func,
|
|
270
279
|
dateGridRender: PropTypes.func,
|
|
280
|
+
allDayEventsRender: PropTypes.func,
|
|
271
281
|
width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
272
282
|
height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
273
283
|
style: PropTypes.object,
|