@douyinfe/semi-ui 2.51.4 → 2.52.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 +285 -0
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +488 -214
- 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/_utils/index.d.ts +2 -1
- package/lib/cjs/_utils/index.js +0 -5
- package/lib/cjs/avatar/TopSlotSvg.d.ts +5 -0
- package/lib/cjs/avatar/TopSlotSvg.js +74 -0
- package/lib/cjs/avatar/index.d.ts +25 -0
- package/lib/cjs/avatar/index.js +126 -8
- package/lib/cjs/avatar/interface.d.ts +24 -1
- package/lib/cjs/cascader/index.d.ts +2 -3
- package/lib/cjs/cascader/index.js +19 -28
- package/lib/cjs/datePicker/datePicker.js +1 -1
- package/lib/cjs/datePicker/yearAndMonth.js +16 -20
- package/lib/cjs/dropdown/dropdownItem.js +2 -1
- package/lib/cjs/form/hoc/withField.d.ts +3 -3
- package/lib/cjs/input/index.d.ts +1 -0
- package/lib/cjs/input/index.js +12 -4
- package/lib/cjs/modal/Modal.d.ts +1 -0
- package/lib/cjs/modal/Modal.js +13 -5
- package/lib/cjs/modal/confirm.d.ts +5 -0
- package/lib/cjs/select/option.js +1 -2
- package/lib/cjs/slider/index.js +33 -1
- package/lib/cjs/table/ColumnFilter.d.ts +34 -18
- package/lib/cjs/table/ColumnFilter.js +134 -73
- package/lib/cjs/table/ResizableTable.js +1 -1
- package/lib/cjs/table/Table.d.ts +5 -5
- package/lib/cjs/table/Table.js +38 -13
- package/lib/cjs/table/index.d.ts +1 -1
- package/lib/cjs/table/interface.d.ts +30 -10
- package/lib/cjs/treeSelect/index.d.ts +2 -0
- package/lib/cjs/treeSelect/index.js +4 -0
- package/lib/es/_utils/index.d.ts +2 -1
- package/lib/es/_utils/index.js +0 -5
- package/lib/es/avatar/TopSlotSvg.d.ts +5 -0
- package/lib/es/avatar/TopSlotSvg.js +66 -0
- package/lib/es/avatar/index.d.ts +25 -0
- package/lib/es/avatar/index.js +126 -8
- package/lib/es/avatar/interface.d.ts +24 -1
- package/lib/es/cascader/index.d.ts +2 -3
- package/lib/es/cascader/index.js +19 -28
- package/lib/es/datePicker/datePicker.js +1 -1
- package/lib/es/datePicker/yearAndMonth.js +16 -20
- package/lib/es/dropdown/dropdownItem.js +2 -1
- package/lib/es/form/hoc/withField.d.ts +3 -3
- package/lib/es/input/index.d.ts +1 -0
- package/lib/es/input/index.js +12 -4
- package/lib/es/modal/Modal.d.ts +1 -0
- package/lib/es/modal/Modal.js +13 -5
- package/lib/es/modal/confirm.d.ts +5 -0
- package/lib/es/select/option.js +1 -2
- package/lib/es/slider/index.js +33 -1
- package/lib/es/table/ColumnFilter.d.ts +34 -18
- package/lib/es/table/ColumnFilter.js +135 -74
- package/lib/es/table/ResizableTable.js +1 -1
- package/lib/es/table/Table.d.ts +5 -5
- package/lib/es/table/Table.js +38 -13
- package/lib/es/table/index.d.ts +1 -1
- package/lib/es/table/interface.d.ts +30 -10
- package/lib/es/treeSelect/index.d.ts +2 -0
- package/lib/es/treeSelect/index.js +4 -0
- package/package.json +8 -8
package/lib/es/table/Table.js
CHANGED
|
@@ -468,6 +468,7 @@ class Table extends BaseComponent {
|
|
|
468
468
|
this.renderSelection = function () {
|
|
469
469
|
let record = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
470
470
|
let inHeader = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
471
|
+
let index = arguments.length > 2 ? arguments[2] : undefined;
|
|
471
472
|
const {
|
|
472
473
|
rowSelection,
|
|
473
474
|
allDisabledRowKeysSet
|
|
@@ -477,43 +478,67 @@ class Table extends BaseComponent {
|
|
|
477
478
|
selectedRowKeys = [],
|
|
478
479
|
selectedRowKeysSet = new Set(),
|
|
479
480
|
getCheckboxProps,
|
|
480
|
-
disabled
|
|
481
|
+
disabled,
|
|
482
|
+
renderCell
|
|
481
483
|
} = rowSelection;
|
|
484
|
+
const allRowKeys = _this2.cachedFilteredSortedRowKeys;
|
|
485
|
+
const allRowKeysSet = _this2.cachedFilteredSortedRowKeysSet;
|
|
486
|
+
const allIsSelected = _this2.foundation.allIsSelected(selectedRowKeysSet, allDisabledRowKeysSet, allRowKeys);
|
|
487
|
+
const hasRowSelected = _this2.foundation.hasRowSelected(selectedRowKeys, allRowKeysSet);
|
|
488
|
+
const indeterminate = hasRowSelected && !allIsSelected;
|
|
482
489
|
if (inHeader) {
|
|
483
490
|
const columnKey = _get(rowSelection, 'key', strings.DEFAULT_KEY_COLUMN_SELECTION);
|
|
484
|
-
const
|
|
485
|
-
const allRowKeysSet = _this2.cachedFilteredSortedRowKeysSet;
|
|
486
|
-
const allIsSelected = _this2.foundation.allIsSelected(selectedRowKeysSet, allDisabledRowKeysSet, allRowKeys);
|
|
487
|
-
const hasRowSelected = _this2.foundation.hasRowSelected(selectedRowKeys, allRowKeysSet);
|
|
488
|
-
return /*#__PURE__*/React.createElement(ColumnSelection, {
|
|
491
|
+
const originNode = /*#__PURE__*/React.createElement(ColumnSelection, {
|
|
489
492
|
"aria-label": `${allIsSelected ? 'Deselect' : 'Select'} all rows`,
|
|
490
493
|
disabled: disabled,
|
|
491
494
|
key: columnKey,
|
|
492
495
|
selected: allIsSelected,
|
|
493
|
-
indeterminate:
|
|
496
|
+
indeterminate: indeterminate,
|
|
494
497
|
onChange: (selected, e) => {
|
|
495
498
|
_this2.toggleSelectAllRow(selected, e);
|
|
496
499
|
}
|
|
497
500
|
});
|
|
501
|
+
const selectAll = (selected, e) => _this2.toggleSelectAllRow(selected, e);
|
|
502
|
+
return _isFunction(renderCell) ? renderCell({
|
|
503
|
+
selected: allIsSelected,
|
|
504
|
+
record,
|
|
505
|
+
originNode,
|
|
506
|
+
inHeader,
|
|
507
|
+
disabled,
|
|
508
|
+
indeterminate,
|
|
509
|
+
selectAll
|
|
510
|
+
}) : originNode;
|
|
498
511
|
} else {
|
|
499
512
|
const key = _this2.foundation.getRecordKey(record);
|
|
500
513
|
const selected = selectedRowKeysSet.has(key);
|
|
501
514
|
const checkboxPropsFn = () => typeof getCheckboxProps === 'function' ? getCheckboxProps(record) : {};
|
|
502
|
-
|
|
515
|
+
const originNode = /*#__PURE__*/React.createElement(ColumnSelection, {
|
|
503
516
|
"aria-label": `${selected ? 'Deselect' : 'Select'} this row`,
|
|
504
517
|
getCheckboxProps: checkboxPropsFn,
|
|
505
518
|
selected: selected,
|
|
506
519
|
onChange: (status, e) => _this2.toggleSelectRow(status, key, e)
|
|
507
520
|
});
|
|
521
|
+
const selectRow = (selected, e) => _this2.toggleSelectRow(selected, key, e);
|
|
522
|
+
return _isFunction(renderCell) ? renderCell({
|
|
523
|
+
selected,
|
|
524
|
+
record,
|
|
525
|
+
index,
|
|
526
|
+
originNode,
|
|
527
|
+
inHeader: false,
|
|
528
|
+
disabled,
|
|
529
|
+
indeterminate,
|
|
530
|
+
selectRow
|
|
531
|
+
}) : originNode;
|
|
508
532
|
}
|
|
509
533
|
}
|
|
510
534
|
return null;
|
|
511
535
|
};
|
|
512
536
|
this.renderRowSelectionCallback = function (text) {
|
|
513
537
|
let record = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
514
|
-
|
|
538
|
+
let index = arguments.length > 2 ? arguments[2] : undefined;
|
|
539
|
+
return _this2.renderSelection(record, false, index);
|
|
515
540
|
};
|
|
516
|
-
this.renderTitleSelectionCallback = () => this.renderSelection(
|
|
541
|
+
this.renderTitleSelectionCallback = () => this.renderSelection(undefined, true);
|
|
517
542
|
this.normalizeSelectionColumn = function () {
|
|
518
543
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
519
544
|
const {
|
|
@@ -608,7 +633,7 @@ class Table extends BaseComponent {
|
|
|
608
633
|
const {
|
|
609
634
|
prefixCls
|
|
610
635
|
} = _this2.props;
|
|
611
|
-
if (column && (column.sorter || column.filters || column.useFullRender)) {
|
|
636
|
+
if (column && (column.sorter || column.filters || column.onFilter || column.useFullRender)) {
|
|
612
637
|
let hasSorterOrFilter = false;
|
|
613
638
|
const {
|
|
614
639
|
dataIndex,
|
|
@@ -650,10 +675,10 @@ class Table extends BaseComponent {
|
|
|
650
675
|
const stateFilteredValue = _get(curQuery, 'filteredValue');
|
|
651
676
|
const defaultFilteredValue = _get(curQuery, 'defaultFilteredValue');
|
|
652
677
|
const filteredValue = stateFilteredValue ? stateFilteredValue : defaultFilteredValue;
|
|
653
|
-
if (Array.isArray(column.filters) && column.filters.length || /*#__PURE__*/isValidElement(column.filterDropdown)) {
|
|
678
|
+
if (Array.isArray(column.filters) && column.filters.length || /*#__PURE__*/isValidElement(column.filterDropdown) || typeof column.renderFilterDropdown === 'function') {
|
|
654
679
|
const filter = /*#__PURE__*/React.createElement(ColumnFilter, Object.assign({
|
|
655
680
|
key: strings.DEFAULT_KEY_COLUMN_FILTER
|
|
656
|
-
}, curQuery, {
|
|
681
|
+
}, _omit(curQuery, 'children'), {
|
|
657
682
|
filteredValue: filteredValue,
|
|
658
683
|
onFilterDropdownVisibleChange: visible => _this2.foundation.toggleShowFilter(dataIndex, visible),
|
|
659
684
|
onSelect: data => _this2.foundation.handleFilterSelect(dataIndex, data)
|
package/lib/es/table/index.d.ts
CHANGED
|
@@ -96,7 +96,7 @@ declare class Table<RecordType extends Record<string, any> = Data> extends React
|
|
|
96
96
|
tableRef: React.RefObject<NormalTable<RecordType>>;
|
|
97
97
|
context: ContextValue;
|
|
98
98
|
constructor(props: TableProps);
|
|
99
|
-
getCurrentPageData: () =>
|
|
99
|
+
getCurrentPageData: () => Pick<import("@douyinfe/semi-foundation/lib/es/table/foundation").BasePageData<RecordType>, "dataSource" | "groups">;
|
|
100
100
|
render(): JSX.Element;
|
|
101
101
|
}
|
|
102
102
|
export * from './interface';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React, { ReactNode, MutableRefObject } from 'react';
|
|
2
|
-
import { BaseProps } from '../_base/baseComponent';
|
|
3
|
-
import { PaginationProps } from '../pagination';
|
|
4
|
-
import { CheckboxProps } from '../checkbox';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ArrayElement } from '../_base/base';
|
|
2
|
+
import type { BaseProps } from '../_base/baseComponent';
|
|
3
|
+
import type { PaginationProps } from '../pagination';
|
|
4
|
+
import type { CheckboxProps } from '../checkbox';
|
|
5
|
+
import type { Locale } from '../locale/interface';
|
|
6
|
+
import type { ArrayElement } from '../_base/base';
|
|
8
7
|
import { strings } from '@douyinfe/semi-foundation/lib/es/table/constants';
|
|
9
|
-
import { BaseRowKeyType, BaseSortOrder, BaseGroupBy, BaseGroupByFn, BaseFixed, BaseAlign, BaseChangeInfoSorter, BaseSorter, BaseFilter, BaseChangeInfoFilter, BaseIncludeGroupRecord, BaseEllipsis } from '@douyinfe/semi-foundation/lib/es/table/foundation';
|
|
10
|
-
import { ScrollDirection, CSSDirection } from 'react-window';
|
|
8
|
+
import type { BaseRowKeyType, BaseSortOrder, BaseGroupBy, BaseGroupByFn, BaseFixed, BaseAlign, BaseChangeInfoSorter, BaseSorter, BaseFilter, BaseChangeInfoFilter, BaseIncludeGroupRecord, BaseEllipsis } from '@douyinfe/semi-foundation/lib/es/table/foundation';
|
|
9
|
+
import type { ScrollDirection, CSSDirection } from 'react-window';
|
|
10
|
+
import type { ColumnFilterProps } from './ColumnFilter';
|
|
11
11
|
export interface TableProps<RecordType extends Record<string, any> = any> extends BaseProps {
|
|
12
12
|
bordered?: boolean;
|
|
13
13
|
children?: ReactNode;
|
|
@@ -65,29 +65,37 @@ export interface ColumnProps<RecordType extends Record<string, any> = any> {
|
|
|
65
65
|
children?: Array<ColumnProps<RecordType>>;
|
|
66
66
|
className?: string;
|
|
67
67
|
colSpan?: number;
|
|
68
|
+
/** use `dataIndex` to get current column data item from record. If you use `sorter` or `onFilter`, a unique `dataIndex` is required */
|
|
68
69
|
dataIndex?: string;
|
|
69
70
|
defaultFilteredValue?: any[];
|
|
70
71
|
defaultSortOrder?: SortOrder;
|
|
71
72
|
filterChildrenRecord?: boolean;
|
|
72
|
-
filterDropdown?:
|
|
73
|
-
|
|
73
|
+
filterDropdown?: ColumnFilterProps['filterDropdown'];
|
|
74
|
+
/** render filter Dropdown panel content */
|
|
75
|
+
renderFilterDropdown?: ColumnFilterProps['renderFilterDropdown'];
|
|
76
|
+
/** filter Dropdown props */
|
|
77
|
+
filterDropdownProps?: ColumnFilterProps['filterDropdownProps'];
|
|
74
78
|
filterDropdownVisible?: boolean;
|
|
75
79
|
filterIcon?: FilterIcon;
|
|
76
80
|
filterMultiple?: boolean;
|
|
77
81
|
filteredValue?: any[];
|
|
82
|
+
/** `filters` is not required if you use `renderFilterDropdown` */
|
|
78
83
|
filters?: Filter[];
|
|
79
84
|
fixed?: Fixed;
|
|
85
|
+
/** the key required by React. If you have already set the `dataIndex`, the key does not need to be set again. */
|
|
80
86
|
key?: string | number;
|
|
81
87
|
render?: ColumnRender<RecordType>;
|
|
82
88
|
renderFilterDropdownItem?: RenderFilterDropdownItem;
|
|
83
89
|
sortChildrenRecord?: boolean;
|
|
84
90
|
sortOrder?: SortOrder;
|
|
91
|
+
/** enable sorting, `dataIndex` is required at the same time */
|
|
85
92
|
sorter?: Sorter<RecordType>;
|
|
86
93
|
sortIcon?: SortIcon;
|
|
87
94
|
title?: ColumnTitle;
|
|
88
95
|
useFullRender?: boolean;
|
|
89
96
|
width?: string | number;
|
|
90
97
|
onCell?: OnCell<RecordType>;
|
|
98
|
+
/** enable filtering, `dataIndex` is required at the same time */
|
|
91
99
|
onFilter?: OnFilter<RecordType>;
|
|
92
100
|
onFilterDropdownVisibleChange?: OnFilterDropdownVisibleChange;
|
|
93
101
|
onHeaderCell?: OnHeaderCell<RecordType>;
|
|
@@ -217,7 +225,19 @@ export interface RowSelectionProps<RecordType> {
|
|
|
217
225
|
onChange?: RowSelectionOnChange<RecordType>;
|
|
218
226
|
onSelect?: RowSelectionOnSelect<RecordType>;
|
|
219
227
|
onSelectAll?: RowSelectionOnSelectAll<RecordType>;
|
|
228
|
+
renderCell?: RowSelectionRenderCell<RecordType>;
|
|
220
229
|
}
|
|
230
|
+
export type RowSelectionRenderCell<RecordType> = (renderCellArgs: {
|
|
231
|
+
selected: boolean;
|
|
232
|
+
record: RecordType;
|
|
233
|
+
originNode: JSX.Element;
|
|
234
|
+
inHeader: boolean;
|
|
235
|
+
disabled: boolean;
|
|
236
|
+
indeterminate: boolean;
|
|
237
|
+
index?: number;
|
|
238
|
+
selectRow?: (selected: boolean, e: Event) => void;
|
|
239
|
+
selectAll?: (selected: boolean, e: Event) => void;
|
|
240
|
+
}) => ReactNode;
|
|
221
241
|
export type GetCheckboxProps<RecordType> = (record: RecordType) => CheckboxProps;
|
|
222
242
|
export type RowSelectionOnChange<RecordType> = (selectedRowKeys?: (string | number)[], selectedRows?: RecordType[]) => void;
|
|
223
243
|
export type RowSelectionOnSelect<RecordType> = (record?: RecordType, selected?: boolean, selectedRows?: RecordType[], nativeEvent?: React.MouseEvent) => void;
|
|
@@ -82,6 +82,7 @@ export interface TreeSelectProps extends Omit<BasicTreeSelectProps, OverrideComm
|
|
|
82
82
|
onChange?: OnChange;
|
|
83
83
|
onFocus?: (e: React.MouseEvent) => void;
|
|
84
84
|
onVisibleChange?: (isVisible: boolean) => void;
|
|
85
|
+
onClear?: (e: React.MouseEvent | React.KeyboardEvent<HTMLDivElement>) => void;
|
|
85
86
|
}
|
|
86
87
|
export type OverrideCommonState = 'keyEntities' | 'treeData' | 'disabledKeys' | 'flattenNodes';
|
|
87
88
|
export interface TreeSelectState extends Omit<BasicTreeSelectInnerData, OverrideCommonState | 'prevProps'>, Pick<TreeState, OverrideCommonState> {
|
|
@@ -121,6 +122,7 @@ declare class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState>
|
|
|
121
122
|
virtualize: PropTypes.Requireable<object>;
|
|
122
123
|
treeNodeFilterProp: PropTypes.Requireable<string>;
|
|
123
124
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
125
|
+
onClear: PropTypes.Requireable<(...args: any[]) => any>;
|
|
124
126
|
onSearch: PropTypes.Requireable<(...args: any[]) => any>;
|
|
125
127
|
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
126
128
|
onExpand: PropTypes.Requireable<(...args: any[]) => any>;
|
|
@@ -1146,6 +1146,9 @@ class TreeSelect extends BaseComponent {
|
|
|
1146
1146
|
onLoad
|
|
1147
1147
|
} = this.props;
|
|
1148
1148
|
_isFunction(onLoad) && onLoad(newLoadedKeys, data);
|
|
1149
|
+
},
|
|
1150
|
+
notifyClear: e => {
|
|
1151
|
+
this.props.onClear && this.props.onClear(e);
|
|
1149
1152
|
}
|
|
1150
1153
|
};
|
|
1151
1154
|
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, super.adapter), filterAdapter), treeSelectAdapter), treeAdapter), {
|
|
@@ -1317,6 +1320,7 @@ TreeSelect.propTypes = {
|
|
|
1317
1320
|
virtualize: PropTypes.object,
|
|
1318
1321
|
treeNodeFilterProp: PropTypes.string,
|
|
1319
1322
|
onChange: PropTypes.func,
|
|
1323
|
+
onClear: PropTypes.func,
|
|
1320
1324
|
onSearch: PropTypes.func,
|
|
1321
1325
|
onSelect: PropTypes.func,
|
|
1322
1326
|
onExpand: PropTypes.func,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.52.0-beta.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.52.0-beta.0",
|
|
24
|
+
"@douyinfe/semi-animation-react": "2.52.0-beta.0",
|
|
25
|
+
"@douyinfe/semi-foundation": "2.52.0-beta.0",
|
|
26
|
+
"@douyinfe/semi-icons": "2.52.0-beta.0",
|
|
27
|
+
"@douyinfe/semi-illustrations": "2.52.0-beta.0",
|
|
28
|
+
"@douyinfe/semi-theme-default": "2.52.0-beta.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": "92b9e3fc80cd5a352f6b9a1ffcb8f5191c688d95",
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@babel/plugin-proposal-decorators": "^7.15.8",
|
|
81
81
|
"@babel/plugin-transform-runtime": "^7.15.8",
|