@douyinfe/semi-ui 2.5.0 → 2.6.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/calendar/monthCalendar.tsx +14 -13
- package/cascader/index.tsx +21 -3
- package/cascader/item.tsx +25 -5
- package/datePicker/dateInput.tsx +8 -5
- package/datePicker/datePicker.tsx +6 -1
- package/datePicker/month.tsx +14 -7
- package/datePicker/monthsGrid.tsx +17 -5
- package/datePicker/navigation.tsx +8 -4
- package/datePicker/quickControl.tsx +1 -0
- package/datePicker/yearAndMonth.tsx +1 -1
- package/dist/css/semi.css +21 -8
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +232 -92
- 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/form/__test__/formApi.test.js +182 -0
- package/form/_story/FormApi/arrayDemo.jsx +4 -7
- package/form/_story/Layout/slotDemo.jsx +2 -2
- package/form/_story/demo.jsx +18 -1
- package/form/_story/form.stories.js +6 -6
- package/form/baseForm.tsx +2 -2
- package/form/hoc/withField.tsx +1 -1
- package/lib/cjs/_base/base.css +5 -5
- package/lib/cjs/calendar/monthCalendar.js +21 -5
- package/lib/cjs/cascader/index.d.ts +9 -2
- package/lib/cjs/cascader/index.js +14 -1
- package/lib/cjs/cascader/item.d.ts +6 -2
- package/lib/cjs/cascader/item.js +33 -4
- package/lib/cjs/datePicker/dateInput.d.ts +0 -2
- package/lib/cjs/datePicker/dateInput.js +17 -6
- package/lib/cjs/datePicker/datePicker.js +15 -12
- package/lib/cjs/datePicker/month.d.ts +1 -0
- package/lib/cjs/datePicker/month.js +18 -2
- package/lib/cjs/datePicker/monthsGrid.js +16 -4
- package/lib/cjs/datePicker/navigation.js +8 -0
- package/lib/cjs/datePicker/quickControl.js +1 -0
- package/lib/cjs/datePicker/yearAndMonth.js +1 -0
- package/lib/cjs/form/baseForm.js +2 -2
- package/lib/cjs/form/hoc/withField.js +1 -1
- package/lib/cjs/scrollList/scrollItem.d.ts +2 -1
- package/lib/cjs/scrollList/scrollItem.js +13 -3
- package/lib/es/_base/base.css +5 -5
- package/lib/es/calendar/monthCalendar.js +22 -5
- package/lib/es/cascader/index.d.ts +9 -2
- package/lib/es/cascader/index.js +14 -1
- package/lib/es/cascader/item.d.ts +6 -2
- package/lib/es/cascader/item.js +31 -4
- package/lib/es/datePicker/dateInput.d.ts +0 -2
- package/lib/es/datePicker/dateInput.js +17 -6
- package/lib/es/datePicker/datePicker.js +15 -12
- package/lib/es/datePicker/month.d.ts +1 -0
- package/lib/es/datePicker/month.js +18 -2
- package/lib/es/datePicker/monthsGrid.js +16 -4
- package/lib/es/datePicker/navigation.js +8 -0
- package/lib/es/datePicker/quickControl.js +2 -0
- package/lib/es/datePicker/yearAndMonth.js +1 -0
- package/lib/es/form/baseForm.js +2 -2
- package/lib/es/form/hoc/withField.js +1 -1
- package/lib/es/scrollList/scrollItem.d.ts +2 -1
- package/lib/es/scrollList/scrollItem.js +13 -3
- package/package.json +9 -9
- package/scrollList/_story/ScrollList/index.js +3 -0
- package/scrollList/_story/WheelList/index.js +3 -0
- package/scrollList/scrollItem.tsx +30 -9
- package/table/_story/Perf/Virtualized/index.jsx +6 -0
- package/table/_story/v2/FixedHeaderMerge/index.jsx +1 -1
- package/table/_story/v2/defaultFilteredValue.tsx +0 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0-beta.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es/index.js",
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@babel/runtime-corejs3": "^7.15.4",
|
|
17
|
-
"@douyinfe/semi-animation": "2.
|
|
18
|
-
"@douyinfe/semi-animation-react": "2.
|
|
19
|
-
"@douyinfe/semi-foundation": "2.
|
|
20
|
-
"@douyinfe/semi-icons": "2.
|
|
21
|
-
"@douyinfe/semi-illustrations": "2.
|
|
22
|
-
"@douyinfe/semi-theme-default": "2.
|
|
17
|
+
"@douyinfe/semi-animation": "2.6.0-beta.0",
|
|
18
|
+
"@douyinfe/semi-animation-react": "2.6.0-beta.0",
|
|
19
|
+
"@douyinfe/semi-foundation": "2.6.0-beta.0",
|
|
20
|
+
"@douyinfe/semi-icons": "2.6.0-beta.0",
|
|
21
|
+
"@douyinfe/semi-illustrations": "2.6.0-beta.0",
|
|
22
|
+
"@douyinfe/semi-theme-default": "2.6.0-beta.0",
|
|
23
23
|
"@types/react-window": "^1.8.2",
|
|
24
24
|
"async-validator": "^3.5.0",
|
|
25
25
|
"classnames": "^2.2.6",
|
|
@@ -69,13 +69,13 @@
|
|
|
69
69
|
],
|
|
70
70
|
"author": "",
|
|
71
71
|
"license": "MIT",
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "49d107f759f3610a471c34bb9568ad9408aa2cb0",
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@babel/plugin-proposal-decorators": "^7.15.8",
|
|
75
75
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
76
76
|
"@babel/preset-env": "^7.15.8",
|
|
77
77
|
"@babel/preset-react": "^7.14.5",
|
|
78
|
-
"@douyinfe/semi-scss-compile": "2.
|
|
78
|
+
"@douyinfe/semi-scss-compile": "2.6.0-beta.0",
|
|
79
79
|
"@storybook/addon-knobs": "^6.3.1",
|
|
80
80
|
"@types/lodash": "^4.14.176",
|
|
81
81
|
"babel-loader": "^8.2.2",
|
|
@@ -43,6 +43,7 @@ class ScrollListDemo extends React.Component {
|
|
|
43
43
|
type={1}
|
|
44
44
|
selectedIndex={this.state.selectIndex1}
|
|
45
45
|
onSelect={this.onSelect}
|
|
46
|
+
aria-label="1"
|
|
46
47
|
/>
|
|
47
48
|
<ScrollItem
|
|
48
49
|
mode="normal"
|
|
@@ -50,6 +51,7 @@ class ScrollListDemo extends React.Component {
|
|
|
50
51
|
type={2}
|
|
51
52
|
selectedIndex={this.state.selectIndex2}
|
|
52
53
|
onSelect={this.onSelect}
|
|
54
|
+
aria-label="2"
|
|
53
55
|
/>
|
|
54
56
|
<ScrollItem
|
|
55
57
|
mode="normal"
|
|
@@ -57,6 +59,7 @@ class ScrollListDemo extends React.Component {
|
|
|
57
59
|
type={3}
|
|
58
60
|
selectedIndex={this.state.selectIndex3}
|
|
59
61
|
onSelect={this.onSelect}
|
|
62
|
+
aria-label="3"
|
|
60
63
|
/>
|
|
61
64
|
</ScrollList>
|
|
62
65
|
);
|
|
@@ -92,6 +92,7 @@ class ScrollListDemo extends React.Component {
|
|
|
92
92
|
type={1}
|
|
93
93
|
selectedIndex={this.state.selectIndex1}
|
|
94
94
|
onSelect={this.onSelectAP}
|
|
95
|
+
aria-label="时段"
|
|
95
96
|
/>
|
|
96
97
|
<ScrollItem
|
|
97
98
|
{...commonProps}
|
|
@@ -99,6 +100,7 @@ class ScrollListDemo extends React.Component {
|
|
|
99
100
|
type={2}
|
|
100
101
|
selectedIndex={this.state.selectIndex2}
|
|
101
102
|
onSelect={this.onSelectHour}
|
|
103
|
+
aria-label="小时"
|
|
102
104
|
/>
|
|
103
105
|
<ScrollItem
|
|
104
106
|
{...commonProps}
|
|
@@ -106,6 +108,7 @@ class ScrollListDemo extends React.Component {
|
|
|
106
108
|
type={3}
|
|
107
109
|
selectedIndex={this.state.selectIndex3}
|
|
108
110
|
onSelect={this.onSelectMinute}
|
|
111
|
+
aria-label="分钟"
|
|
109
112
|
/>
|
|
110
113
|
</ScrollList>
|
|
111
114
|
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { AriaAttributes } from 'react';
|
|
2
2
|
import BaseComponent from '../_base/baseComponent';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import classnames from 'classnames';
|
|
@@ -28,6 +28,7 @@ export interface ScrollItemProps<T extends Item> {
|
|
|
28
28
|
motion?: Motion;
|
|
29
29
|
style?: React.CSSProperties;
|
|
30
30
|
type?: string | number; // used to identify the scrollItem, used internally by the semi component, and does not need to be exposed to the user
|
|
31
|
+
'aria-label'?: AriaAttributes['aria-label'];
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
export interface ScrollItemState {
|
|
@@ -413,15 +414,15 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
|
|
|
413
414
|
const { transform: itemTrans } = item;
|
|
414
415
|
|
|
415
416
|
const transform = typeof itemTrans === 'function' ? itemTrans : commonTrans;
|
|
416
|
-
|
|
417
|
+
const selected = selectedIndex === index;
|
|
417
418
|
const cls = classnames({
|
|
418
|
-
[`${cssClasses.PREFIX}-item-sel`]:
|
|
419
|
+
[`${cssClasses.PREFIX}-item-sel`]: selected && mode !== wheelMode,
|
|
419
420
|
[`${cssClasses.PREFIX}-item-disabled`]: Boolean(item.disabled),
|
|
420
421
|
});
|
|
421
422
|
|
|
422
423
|
let text = '';
|
|
423
424
|
|
|
424
|
-
if (
|
|
425
|
+
if (selected) {
|
|
425
426
|
if (typeof transform === 'function') {
|
|
426
427
|
text = transform(item.value, item.text);
|
|
427
428
|
} else {
|
|
@@ -441,7 +442,14 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
|
|
|
441
442
|
|
|
442
443
|
return (
|
|
443
444
|
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
|
444
|
-
<li
|
|
445
|
+
<li
|
|
446
|
+
key={prefixKey + index}
|
|
447
|
+
{...events}
|
|
448
|
+
className={cls}
|
|
449
|
+
role="option"
|
|
450
|
+
aria-selected={selected}
|
|
451
|
+
aria-disabled={item.disabled}
|
|
452
|
+
>
|
|
445
453
|
{text}
|
|
446
454
|
</li>
|
|
447
455
|
);
|
|
@@ -457,7 +465,14 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
|
|
|
457
465
|
|
|
458
466
|
return (
|
|
459
467
|
<div style={style} className={wrapperCls} ref={this._cacheWrapperNode}>
|
|
460
|
-
<ul
|
|
468
|
+
<ul
|
|
469
|
+
role="listbox"
|
|
470
|
+
aria-multiselectable={false}
|
|
471
|
+
aria-label={this.props['aria-label']}
|
|
472
|
+
ref={this._cacheListNode}
|
|
473
|
+
>
|
|
474
|
+
{inner}
|
|
475
|
+
</ul>
|
|
461
476
|
</div>
|
|
462
477
|
);
|
|
463
478
|
};
|
|
@@ -470,13 +485,13 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
|
|
|
470
485
|
const { prependCount, appendCount } = this.state;
|
|
471
486
|
|
|
472
487
|
const prependList = times(prependCount).reduce((arr, num) => {
|
|
473
|
-
const items = this.renderItemList(`pre_${
|
|
488
|
+
const items = this.renderItemList(`pre_${num}_`);
|
|
474
489
|
arr.unshift(...items);
|
|
475
490
|
|
|
476
491
|
return arr;
|
|
477
492
|
}, []);
|
|
478
493
|
const appendList = times(appendCount).reduce((arr, num) => {
|
|
479
|
-
const items = this.renderItemList(`app_${
|
|
494
|
+
const items = this.renderItemList(`app_${num}_`);
|
|
480
495
|
arr.push(...items);
|
|
481
496
|
return arr;
|
|
482
497
|
}, []);
|
|
@@ -500,7 +515,13 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
|
|
|
500
515
|
<div className={selectorCls} ref={this._cacheSelectorNode} />
|
|
501
516
|
<div className={postShadeCls} />
|
|
502
517
|
<div className={listWrapperCls} ref={this._cacheWrapperNode} onScroll={this.scrollToSelectItem}>
|
|
503
|
-
<ul
|
|
518
|
+
<ul
|
|
519
|
+
role="listbox"
|
|
520
|
+
aria-label={this.props['aria-label']}
|
|
521
|
+
aria-multiselectable={false}
|
|
522
|
+
ref={this._cacheListNode}
|
|
523
|
+
onClick={this.clickToSelectItem}
|
|
524
|
+
>
|
|
504
525
|
{prependList}
|
|
505
526
|
{inner}
|
|
506
527
|
{appendList}
|
|
@@ -9,29 +9,35 @@ class PerfVirtualized extends React.Component {
|
|
|
9
9
|
{
|
|
10
10
|
title: 'A',
|
|
11
11
|
dataIndex: 'key',
|
|
12
|
+
key: 'a',
|
|
12
13
|
width: 150,
|
|
13
14
|
},
|
|
14
15
|
{
|
|
15
16
|
title: 'B',
|
|
16
17
|
dataIndex: 'key',
|
|
18
|
+
key: 'b',
|
|
17
19
|
},
|
|
18
20
|
{
|
|
19
21
|
title: 'C',
|
|
20
22
|
dataIndex: 'key',
|
|
23
|
+
key: 'c',
|
|
21
24
|
},
|
|
22
25
|
{
|
|
23
26
|
title: 'D',
|
|
24
27
|
dataIndex: 'key',
|
|
28
|
+
key: 'd',
|
|
25
29
|
},
|
|
26
30
|
{
|
|
27
31
|
title: 'E',
|
|
28
32
|
dataIndex: 'key',
|
|
29
33
|
width: 200,
|
|
34
|
+
key: 'e',
|
|
30
35
|
},
|
|
31
36
|
{
|
|
32
37
|
title: 'F',
|
|
33
38
|
dataIndex: 'key',
|
|
34
39
|
width: 100,
|
|
40
|
+
key: 'f'
|
|
35
41
|
},
|
|
36
42
|
];
|
|
37
43
|
|
|
@@ -45,7 +45,7 @@ export default function Demo() {
|
|
|
45
45
|
const data = useMemo(() => {
|
|
46
46
|
const data = [];
|
|
47
47
|
for (let i = 0; i < 100; i++) {
|
|
48
|
-
let age =
|
|
48
|
+
let age = (i * 1000) % 149;
|
|
49
49
|
let name = `Edward King ${i}`;
|
|
50
50
|
data.push({
|
|
51
51
|
key: '' + i,
|
|
@@ -59,14 +59,6 @@ function App() {
|
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
title: '更新日期',
|
|
65
|
-
dataIndex: 'updateTime',
|
|
66
|
-
sorter: (a, b) => a.updateTime - b.updateTime > 0 ? 1 : -1,
|
|
67
|
-
render: (value) => {
|
|
68
|
-
return dateFns.format(new Date(value), 'yyyy-MM-dd');
|
|
69
|
-
}
|
|
70
62
|
}
|
|
71
63
|
];
|
|
72
64
|
|
|
@@ -80,7 +72,6 @@ function App() {
|
|
|
80
72
|
name: isSemiDesign ? `Semi Design 设计稿${i}.fig` : `Semi Pro 设计稿${i}.fig`,
|
|
81
73
|
owner: isSemiDesign ? '姜鹏志' : '郝宣',
|
|
82
74
|
size: randomNumber,
|
|
83
|
-
updateTime: new Date().valueOf() + randomNumber * DAY,
|
|
84
75
|
avatarBg: isSemiDesign ? 'grey' : 'red'
|
|
85
76
|
});
|
|
86
77
|
}
|