@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.
Files changed (68) hide show
  1. package/calendar/monthCalendar.tsx +14 -13
  2. package/cascader/index.tsx +21 -3
  3. package/cascader/item.tsx +25 -5
  4. package/datePicker/dateInput.tsx +8 -5
  5. package/datePicker/datePicker.tsx +6 -1
  6. package/datePicker/month.tsx +14 -7
  7. package/datePicker/monthsGrid.tsx +17 -5
  8. package/datePicker/navigation.tsx +8 -4
  9. package/datePicker/quickControl.tsx +1 -0
  10. package/datePicker/yearAndMonth.tsx +1 -1
  11. package/dist/css/semi.css +21 -8
  12. package/dist/css/semi.min.css +1 -1
  13. package/dist/umd/semi-ui.js +232 -92
  14. package/dist/umd/semi-ui.js.map +1 -1
  15. package/dist/umd/semi-ui.min.js +1 -1
  16. package/dist/umd/semi-ui.min.js.map +1 -1
  17. package/form/__test__/formApi.test.js +182 -0
  18. package/form/_story/FormApi/arrayDemo.jsx +4 -7
  19. package/form/_story/Layout/slotDemo.jsx +2 -2
  20. package/form/_story/demo.jsx +18 -1
  21. package/form/_story/form.stories.js +6 -6
  22. package/form/baseForm.tsx +2 -2
  23. package/form/hoc/withField.tsx +1 -1
  24. package/lib/cjs/_base/base.css +5 -5
  25. package/lib/cjs/calendar/monthCalendar.js +21 -5
  26. package/lib/cjs/cascader/index.d.ts +9 -2
  27. package/lib/cjs/cascader/index.js +14 -1
  28. package/lib/cjs/cascader/item.d.ts +6 -2
  29. package/lib/cjs/cascader/item.js +33 -4
  30. package/lib/cjs/datePicker/dateInput.d.ts +0 -2
  31. package/lib/cjs/datePicker/dateInput.js +17 -6
  32. package/lib/cjs/datePicker/datePicker.js +15 -12
  33. package/lib/cjs/datePicker/month.d.ts +1 -0
  34. package/lib/cjs/datePicker/month.js +18 -2
  35. package/lib/cjs/datePicker/monthsGrid.js +16 -4
  36. package/lib/cjs/datePicker/navigation.js +8 -0
  37. package/lib/cjs/datePicker/quickControl.js +1 -0
  38. package/lib/cjs/datePicker/yearAndMonth.js +1 -0
  39. package/lib/cjs/form/baseForm.js +2 -2
  40. package/lib/cjs/form/hoc/withField.js +1 -1
  41. package/lib/cjs/scrollList/scrollItem.d.ts +2 -1
  42. package/lib/cjs/scrollList/scrollItem.js +13 -3
  43. package/lib/es/_base/base.css +5 -5
  44. package/lib/es/calendar/monthCalendar.js +22 -5
  45. package/lib/es/cascader/index.d.ts +9 -2
  46. package/lib/es/cascader/index.js +14 -1
  47. package/lib/es/cascader/item.d.ts +6 -2
  48. package/lib/es/cascader/item.js +31 -4
  49. package/lib/es/datePicker/dateInput.d.ts +0 -2
  50. package/lib/es/datePicker/dateInput.js +17 -6
  51. package/lib/es/datePicker/datePicker.js +15 -12
  52. package/lib/es/datePicker/month.d.ts +1 -0
  53. package/lib/es/datePicker/month.js +18 -2
  54. package/lib/es/datePicker/monthsGrid.js +16 -4
  55. package/lib/es/datePicker/navigation.js +8 -0
  56. package/lib/es/datePicker/quickControl.js +2 -0
  57. package/lib/es/datePicker/yearAndMonth.js +1 -0
  58. package/lib/es/form/baseForm.js +2 -2
  59. package/lib/es/form/hoc/withField.js +1 -1
  60. package/lib/es/scrollList/scrollItem.d.ts +2 -1
  61. package/lib/es/scrollList/scrollItem.js +13 -3
  62. package/package.json +9 -9
  63. package/scrollList/_story/ScrollList/index.js +3 -0
  64. package/scrollList/_story/WheelList/index.js +3 -0
  65. package/scrollList/scrollItem.tsx +30 -9
  66. package/table/_story/Perf/Virtualized/index.jsx +6 -0
  67. package/table/_story/v2/FixedHeaderMerge/index.jsx +1 -1
  68. 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.5.0",
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.5.0",
18
- "@douyinfe/semi-animation-react": "2.5.0",
19
- "@douyinfe/semi-foundation": "2.5.0",
20
- "@douyinfe/semi-icons": "2.5.0",
21
- "@douyinfe/semi-illustrations": "2.5.0",
22
- "@douyinfe/semi-theme-default": "2.5.0",
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": "856255d8b5ad895a5fee47c5920aa1835836aff0",
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.5.0",
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`]: selectedIndex === index && mode !== wheelMode,
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 (selectedIndex === index) {
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 key={prefixKey + index} {...events} className={cls}>
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 ref={this._cacheListNode}>{inner}</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_${ num }_`);
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_${ num }_`);
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 ref={this._cacheListNode} onClick={this.clickToSelectItem}>
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 = 40 + (Math.random() > 0.5 ? 1 : -1) * (i % 9);
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
  }