@douyinfe/semi-ui 2.8.2 → 2.9.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 (118) hide show
  1. package/anchor/__test__/anchor.test.js +1 -0
  2. package/anchor/_story/anchor.stories.js +23 -1
  3. package/badge/index.tsx +12 -3
  4. package/cascader/_story/cascader.stories.js +17 -2
  5. package/cascader/index.tsx +1 -1
  6. package/checkbox/_story/checkbox.stories.js +1 -1
  7. package/collapse/item.tsx +2 -0
  8. package/datePicker/_story/datePicker.stories.js +37 -0
  9. package/descriptions/index.tsx +3 -4
  10. package/descriptions/item.tsx +1 -1
  11. package/dist/css/semi.css +63 -17
  12. package/dist/css/semi.min.css +1 -1
  13. package/dist/umd/semi-ui.js +7444 -3323
  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/divider/__test__/divider.test.js +72 -0
  18. package/divider/_story/Demo.tsx +16 -0
  19. package/divider/_story/divider.stories.js +41 -0
  20. package/divider/_story/divider.stories.tsx +8 -0
  21. package/divider/index.tsx +72 -0
  22. package/form/_story/demo.jsx +9 -0
  23. package/index.ts +1 -0
  24. package/input/__test__/input.test.js +12 -3
  25. package/input/__test__/textArea.test.js +53 -0
  26. package/lib/cjs/badge/index.d.ts +9 -0
  27. package/lib/cjs/badge/index.js +34 -6
  28. package/lib/cjs/button/index.d.ts +1 -1
  29. package/lib/cjs/cascader/index.js +1 -1
  30. package/lib/cjs/collapse/item.js +4 -2
  31. package/lib/cjs/descriptions/index.d.ts +2 -3
  32. package/lib/cjs/descriptions/index.js +4 -3
  33. package/lib/cjs/descriptions/item.d.ts +1 -1
  34. package/lib/cjs/divider/index.d.ts +20 -0
  35. package/lib/cjs/divider/index.js +88 -0
  36. package/lib/cjs/form/baseForm.d.ts +1 -1
  37. package/lib/cjs/form/errorMessage.d.ts +1 -1
  38. package/lib/cjs/iconButton/index.d.ts +1 -1
  39. package/lib/cjs/index.d.ts +1 -0
  40. package/lib/cjs/index.js +9 -0
  41. package/lib/cjs/modal/Modal.js +3 -0
  42. package/lib/cjs/modal/confirm.d.ts +5 -5
  43. package/lib/cjs/navigation/Header.d.ts +1 -1
  44. package/lib/cjs/navigation/index.d.ts +2 -2
  45. package/lib/cjs/popover/index.d.ts +1 -1
  46. package/lib/cjs/progress/index.d.ts +1 -1
  47. package/lib/cjs/scrollList/scrollItem.js +4 -0
  48. package/lib/cjs/select/optionGroup.d.ts +1 -1
  49. package/lib/cjs/slider/index.js +16 -12
  50. package/lib/cjs/table/Body/BaseRow.d.ts +1 -1
  51. package/lib/cjs/table/Body/ExpandedRow.d.ts +1 -1
  52. package/lib/cjs/table/Column.d.ts +1 -1
  53. package/lib/cjs/table/ColumnShape.d.ts +1 -1
  54. package/lib/cjs/table/CustomExpandIcon.d.ts +1 -1
  55. package/lib/cjs/table/Table.d.ts +5 -5
  56. package/lib/cjs/table/index.d.ts +4 -4
  57. package/lib/cjs/tabs/TabPane.js +4 -0
  58. package/lib/cjs/tabs/index.js +2 -0
  59. package/lib/cjs/tagInput/index.d.ts +1 -1
  60. package/lib/cjs/tooltip/index.d.ts +1 -1
  61. package/lib/cjs/transfer/index.d.ts +1 -0
  62. package/lib/cjs/transfer/index.js +3 -1
  63. package/lib/es/badge/index.d.ts +9 -0
  64. package/lib/es/badge/index.js +31 -6
  65. package/lib/es/button/index.d.ts +1 -1
  66. package/lib/es/cascader/index.js +1 -1
  67. package/lib/es/collapse/item.js +4 -2
  68. package/lib/es/descriptions/index.d.ts +2 -3
  69. package/lib/es/descriptions/index.js +4 -3
  70. package/lib/es/descriptions/item.d.ts +1 -1
  71. package/lib/es/divider/index.d.ts +20 -0
  72. package/lib/es/divider/index.js +68 -0
  73. package/lib/es/form/baseForm.d.ts +1 -1
  74. package/lib/es/form/errorMessage.d.ts +1 -1
  75. package/lib/es/iconButton/index.d.ts +1 -1
  76. package/lib/es/index.d.ts +1 -0
  77. package/lib/es/index.js +1 -0
  78. package/lib/es/modal/Modal.js +3 -0
  79. package/lib/es/modal/confirm.d.ts +5 -5
  80. package/lib/es/navigation/Header.d.ts +1 -1
  81. package/lib/es/navigation/index.d.ts +2 -2
  82. package/lib/es/popover/index.d.ts +1 -1
  83. package/lib/es/progress/index.d.ts +1 -1
  84. package/lib/es/scrollList/scrollItem.js +4 -0
  85. package/lib/es/select/optionGroup.d.ts +1 -1
  86. package/lib/es/slider/index.js +16 -12
  87. package/lib/es/table/Body/BaseRow.d.ts +1 -1
  88. package/lib/es/table/Body/ExpandedRow.d.ts +1 -1
  89. package/lib/es/table/Column.d.ts +1 -1
  90. package/lib/es/table/ColumnShape.d.ts +1 -1
  91. package/lib/es/table/CustomExpandIcon.d.ts +1 -1
  92. package/lib/es/table/Table.d.ts +5 -5
  93. package/lib/es/table/index.d.ts +4 -4
  94. package/lib/es/tabs/TabPane.js +4 -0
  95. package/lib/es/tabs/index.js +2 -0
  96. package/lib/es/tagInput/index.d.ts +1 -1
  97. package/lib/es/tooltip/index.d.ts +1 -1
  98. package/lib/es/transfer/index.d.ts +1 -0
  99. package/lib/es/transfer/index.js +3 -1
  100. package/modal/Modal.tsx +2 -0
  101. package/modal/confirm.tsx +1 -1
  102. package/overflowList/_story/overflowList.stories.js +44 -0
  103. package/package.json +9 -9
  104. package/scrollList/_story/SingleWheelList/index.js +72 -0
  105. package/scrollList/_story/scrolllist.stories.js +7 -0
  106. package/scrollList/scrollItem.tsx +3 -0
  107. package/slider/_story/slider.stories.js +28 -6
  108. package/slider/index.tsx +15 -10
  109. package/table/__test__/table.test.js +1 -0
  110. package/tabs/TabPane.tsx +2 -0
  111. package/tabs/_story/tabs.stories.js +72 -0
  112. package/tabs/index.tsx +1 -0
  113. package/tagInput/_story/tagInput.stories.js +14 -1
  114. package/tooltip/_story/tooltip.stories.js +127 -15
  115. package/transfer/index.tsx +4 -1
  116. package/typography/__test__/typography.test.js +1 -0
  117. package/upload/__test__/upload.test.js +2 -0
  118. package/upload/_story/upload.stories.js +2 -2
@@ -23,6 +23,7 @@ describe('Anchor', () => {
23
23
  it('anchor small size', () => {
24
24
  const smallAnchor = mount(<Anchor size="small" />);
25
25
  expect(smallAnchor.find(`.${BASE_CLASS_PREFIX}-anchor-size-small`)).toHaveLength(1);
26
+ smallAnchor.unmount();
26
27
  });
27
28
 
28
29
  it('anchor rail theme', () => {
@@ -1,4 +1,5 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
+ import Button from '../../button';
2
3
  import { Anchor } from '../../index';
3
4
 
4
5
  export default {
@@ -264,3 +265,24 @@ export const FixContainerScrollBug1158 = () => (
264
265
  </div>
265
266
  </div>
266
267
  );
268
+
269
+ export const AutoCollapse = () => {
270
+ const [href, setHref] = useState('#设计语言');
271
+ return (
272
+ <div>
273
+ <Anchor autoCollapse>
274
+ <Anchor.Link href="#动态展示" title="1. 动态展示">
275
+ <Anchor.Link href="#组件" title="1.1 组件">
276
+ <Anchor.Link href="#头像" title="1.1.1 Avatar" />
277
+ <Anchor.Link href="#按钮" title="1.1.2 Button" />
278
+ <Anchor.Link href="#图标" title="1.1.3 Icon" />
279
+ </Anchor.Link>
280
+ <Anchor.Link href="#物料" title="1.2 物料" />
281
+ <Anchor.Link href="#主题商店" title="1.3 主题商店" />
282
+ </Anchor.Link>
283
+ <Anchor.Link href={href} title="2. 设计语言" />
284
+ </Anchor>
285
+ <Button onClick={()=>{console.log('sdf');setHref('#我改变啦')}}>setHref</Button>
286
+ </div>
287
+ )
288
+ };
package/badge/index.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import cls from 'classnames';
3
3
  import PropTypes from 'prop-types';
4
- import { isNumber, isString } from 'lodash';
4
+ import { isNumber, isString, noop } from 'lodash';
5
5
  import ConfigContext, { ContextValue } from '../configProvider/context';
6
6
  import { cssClasses, strings } from '@douyinfe/semi-foundation/badge/constants';
7
7
  import '@douyinfe/semi-foundation/badge/badge.scss';
@@ -21,6 +21,9 @@ export interface BadgeProps {
21
21
  overflowCount?: number;
22
22
  style?: React.CSSProperties;
23
23
  className?: string;
24
+ onMouseEnter?: (e: React.MouseEvent) => any;
25
+ onMouseLeave?: (e: React.MouseEvent) => any;
26
+ onClick?: (e: React.MouseEvent) => any;
24
27
  children?: React.ReactNode | undefined;
25
28
  }
26
29
 
@@ -36,6 +39,9 @@ export default class Badge extends PureComponent<BadgeProps> {
36
39
  style: PropTypes.object,
37
40
  className: PropTypes.string,
38
41
  children: PropTypes.node,
42
+ onClick: PropTypes.func,
43
+ onMouseEnter: PropTypes.func,
44
+ onMouseLeave: PropTypes.func,
39
45
  };
40
46
 
41
47
  static defaultProps = {
@@ -43,6 +49,9 @@ export default class Badge extends PureComponent<BadgeProps> {
43
49
  type: 'primary',
44
50
  theme: 'solid',
45
51
  className: '',
52
+ onClick: () => noop,
53
+ onMouseEnter: () => noop,
54
+ onMouseLeave: () => noop,
46
55
  };
47
56
 
48
57
  context: ContextValue;
@@ -52,7 +61,7 @@ export default class Badge extends PureComponent<BadgeProps> {
52
61
  // DefaultPosition here, static can't get this
53
62
  const defaultPosition = direction === 'rtl' ? 'leftTop' : 'rightTop';
54
63
  // eslint-disable-next-line max-len
55
- const { count, dot, type, theme, position = defaultPosition, overflowCount, style, children, className } = this.props;
64
+ const { count, dot, type, theme, position = defaultPosition, overflowCount, style, children, className, ...rest } = this.props;
56
65
  const custom = count && !(isNumber(count) || isString(count));
57
66
  const showBadge = count !== null && typeof count !== 'undefined';
58
67
  const wrapper = cls(className, {
@@ -71,7 +80,7 @@ export default class Badge extends PureComponent<BadgeProps> {
71
80
  content = count;
72
81
  }
73
82
  return (
74
- <span className={prefixCls}>
83
+ <span className={prefixCls} {...rest}>
75
84
  {children}
76
85
  <span className={wrapper} style={style}>
77
86
  {dot ? null : content}
@@ -697,7 +697,8 @@ export const ShowClear = () => {
697
697
  <Cascader
698
698
  style={{ marginLeft: 700, width: 300 }}
699
699
  treeData={treeData1}
700
- placeholder="Please select"
700
+ placeholder="Please select when multiple"
701
+ multiple
701
702
  showClear
702
703
  />
703
704
  <br />
@@ -1434,4 +1435,18 @@ export const DynamicTreeData = () => {
1434
1435
  <br />
1435
1436
  </div>
1436
1437
  );
1437
- }
1438
+ }
1439
+
1440
+
1441
+ export const SuperLongList = () => {
1442
+ let treeData = new Array(100).fill().map(() => ({ label: '浙江省', value: 'zhejiang' }));
1443
+ treeData.push({ label: '到底啦', value: 'bottom' })
1444
+ return (
1445
+ <Cascader
1446
+ style={{ width: 300 }}
1447
+ treeData={treeData}
1448
+ placeholder="请选择所在地区"
1449
+ onListScroll={()=>{console.log(123)}}
1450
+ />
1451
+ );
1452
+ };
@@ -828,7 +828,7 @@ class Cascader extends BaseComponent<CascaderProps, CascaderState> {
828
828
  */
829
829
  handleClearEnterPress = (e: KeyboardEvent) => {
830
830
  e && e.stopPropagation();
831
- this.foundation.handleClearEnterPress();
831
+ this.foundation.handleClearEnterPress(e);
832
832
  };
833
833
 
834
834
  showClearBtn = () => {
@@ -754,7 +754,7 @@ export const CheckboxGroupCardStyle = () => (
754
754
  >
755
755
  多选框标题
756
756
  </Checkbox>
757
- </CheckboxGroup> */}
757
+ </CheckboxGroup>
758
758
  </>
759
759
  );
760
760
 
package/collapse/item.tsx CHANGED
@@ -89,6 +89,8 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
89
89
  children,
90
90
  itemKey,
91
91
  reCalcKey,
92
+ header,
93
+ extra,
92
94
  ...restProps
93
95
  } = this.props;
94
96
  const {
@@ -814,3 +814,40 @@ export const FixTriggerRenderClosePanel = () => {
814
814
  };
815
815
  FixTriggerRenderClosePanel.storyName = "fix triggerRender close bug"
816
816
 
817
+ export const A11yKeyboardDemo = () => {
818
+ const [value, setValue] = useState(new Date('2022-08-08 00:00'));
819
+ const [rangeValue, setRangeValue] = useState([new Date('2022-08-08 00:00'), new Date('2022-08-09 12:00')]);
820
+
821
+ const handleChange = v => {
822
+ console.log('change', v);
823
+ setValue(v);
824
+ };
825
+
826
+ const handleRangeChange = v => {
827
+ console.log('change', v);
828
+ setRangeValue(v);
829
+ };
830
+
831
+ return (
832
+ <Space vertical align='start' data-cy="space">
833
+ <div data-cy="dateRange">
834
+ <DatePicker
835
+ value={rangeValue}
836
+ type="dateRange"
837
+ onChange={handleRangeChange}
838
+ showClear
839
+ />
840
+ </div>
841
+ <div data-cy="date">
842
+ <DatePicker
843
+ onChange={handleChange}
844
+ showClear
845
+ multiple
846
+ />
847
+ </div>
848
+ </Space>
849
+ );
850
+ };
851
+
852
+ A11yKeyboardDemo.storyName = "a11y keyboard demo"
853
+
@@ -10,8 +10,7 @@ import Item from './item';
10
10
  export { DescriptionsItemProps } from './item';
11
11
  export type DescriptionsSize = 'small' | 'medium' | 'large';
12
12
  export interface Data {
13
- [x: string]: any;
14
- key?: string | number;
13
+ key?: React.ReactNode;
15
14
  value?: (() => React.ReactNode) | React.ReactNode;
16
15
  hidden?: boolean;
17
16
  }
@@ -62,8 +61,8 @@ class Descriptions extends PureComponent<DescriptionsProps> {
62
61
  [`${prefixCls}-double-${size}`]: row,
63
62
  });
64
63
  const childrenList = data && data.length ?
65
- data.map(item => (
66
- isPlainObject(item) ? <Item key={item.key} itemKey={item.key} {...item}>{item.value}</Item> : null
64
+ data.map((item, index) => (
65
+ isPlainObject(item) ? <Item itemKey={item.key} {...item} key={index}>{item.value}</Item> : null
67
66
  )) :
68
67
  children;
69
68
  return (
@@ -9,7 +9,7 @@ export interface DescriptionsItemProps {
9
9
  className?: string;
10
10
  children?: React.ReactNode | undefined | (() => React.ReactNode);
11
11
  style?: React.CSSProperties;
12
- itemKey: string | number;
12
+ itemKey?: React.ReactNode;
13
13
  }
14
14
 
15
15
  const prefixCls = cssClasses.PREFIX;
package/dist/css/semi.css CHANGED
@@ -759,12 +759,7 @@ body[theme-mode=dark], body .semi-always-dark {
759
759
  font-weight: 600;
760
760
  }
761
761
  .semi-avatar-content {
762
- position: absolute;
763
762
  user-select: none;
764
- left: 50%;
765
- top: 50%;
766
- transform: translate(-50%, -50%);
767
- transform-origin: center;
768
763
  }
769
764
  .semi-avatar-extra-extra-small {
770
765
  width: 20px;
@@ -772,7 +767,7 @@ body[theme-mode=dark], body .semi-always-dark {
772
767
  }
773
768
  .semi-avatar-extra-extra-small .semi-avatar-content {
774
769
  transform-origin: center;
775
- transform: scale(0.8) translate(-62.5%, -62.5%);
770
+ transform: scale(0.8);
776
771
  }
777
772
  .semi-avatar-extra-extra-small .semi-avatar-label {
778
773
  font-size: 10px;
@@ -784,7 +779,7 @@ body[theme-mode=dark], body .semi-always-dark {
784
779
  }
785
780
  .semi-avatar-extra-small .semi-avatar-content {
786
781
  transform-origin: center;
787
- transform: scale(0.8) translate(-62.5%, -62.5%);
782
+ transform: scale(0.8);
788
783
  }
789
784
  .semi-avatar-extra-small .semi-avatar-label {
790
785
  font-size: 10px;
@@ -1108,19 +1103,13 @@ body[theme-mode=dark], body .semi-always-dark {
1108
1103
  .semi-portal-rtl .semi-avatar {
1109
1104
  direction: rtl;
1110
1105
  }
1111
- .semi-rtl .semi-avatar-content,
1112
- .semi-portal-rtl .semi-avatar-content {
1113
- left: auto;
1114
- right: 50%;
1115
- transform: translate(50%, -50%);
1116
- }
1117
1106
  .semi-rtl .semi-avatar-extra-extra-small .semi-avatar-content,
1118
1107
  .semi-portal-rtl .semi-avatar-extra-extra-small .semi-avatar-content {
1119
- transform: scale(0.8) translate(62.5%, -62.5%);
1108
+ transform: scale(0.8);
1120
1109
  }
1121
1110
  .semi-rtl .semi-avatar-extra-small .semi-avatar-content,
1122
1111
  .semi-portal-rtl .semi-avatar-extra-small .semi-avatar-content {
1123
- transform: scale(0.8) translate(62.5%, -62.5%);
1112
+ transform: scale(0.8);
1124
1113
  }
1125
1114
  .semi-rtl .semi-avatar-hover,
1126
1115
  .semi-portal-rtl .semi-avatar-hover {
@@ -4572,6 +4561,64 @@ body[theme-mode=dark], body .semi-always-dark {
4572
4561
  padding-left: 80px;
4573
4562
  }
4574
4563
 
4564
+ .semi-divider {
4565
+ margin: 1px 0px 1px 0px;
4566
+ border-bottom: 1px solid var(--semi-color-border);
4567
+ color: var(--semi-color-text-0);
4568
+ box-sizing: border-box;
4569
+ }
4570
+ .semi-divider-dashed {
4571
+ border-bottom-style: dashed;
4572
+ }
4573
+ .semi-divider-horizontal {
4574
+ width: 100%;
4575
+ display: flex;
4576
+ }
4577
+ .semi-divider-vertical {
4578
+ border-bottom: 0;
4579
+ display: inline-block;
4580
+ margin: 0px 1px 0px 1px;
4581
+ border-left: 1px solid var(--semi-color-border);
4582
+ height: 20px;
4583
+ vertical-align: middle;
4584
+ }
4585
+ .semi-divider-with-text {
4586
+ display: flex;
4587
+ border-bottom: 0;
4588
+ white-space: nowrap;
4589
+ align-items: center;
4590
+ }
4591
+ .semi-divider-with-text .semi-divider_inner-text {
4592
+ font-weight: 600;
4593
+ padding: 0px 8px 0px 8px;
4594
+ display: inline-block;
4595
+ }
4596
+ .semi-divider-with-text::before, .semi-divider-with-text::after {
4597
+ content: "";
4598
+ width: 50%;
4599
+ border-bottom: 1px solid var(--semi-color-border);
4600
+ }
4601
+ .semi-divider-with-text-left::before {
4602
+ width: 40px;
4603
+ }
4604
+ .semi-divider-with-text-left::after {
4605
+ flex: 1;
4606
+ }
4607
+ .semi-divider-with-text-right::before {
4608
+ flex: 1;
4609
+ }
4610
+ .semi-divider-with-text-right::after {
4611
+ width: 40px;
4612
+ }
4613
+
4614
+ .semi-divider-dashed::before, .semi-divider-dashed::after {
4615
+ border-bottom: 1px dashed var(--semi-color-border);
4616
+ }
4617
+
4618
+ .semi-divider-vertical.semi-divider-dashed {
4619
+ border-left: 1px dashed var(--semi-color-border);
4620
+ }
4621
+
4575
4622
  .semi-dropdown {
4576
4623
  font-size: 14px;
4577
4624
  line-height: 20px;
@@ -4787,7 +4834,6 @@ body[theme-mode=dark], body .semi-always-dark {
4787
4834
  line-height: 20px;
4788
4835
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
4789
4836
  flex-shrink: 0;
4790
- user-select: none;
4791
4837
  }
4792
4838
  .semi-form-field-label-disabled {
4793
4839
  color: var(--semi-color-disabled-text);
@@ -18415,7 +18461,7 @@ body[theme-mode=dark], body .semi-always-dark {
18415
18461
  .semi-transfer-left-empty {
18416
18462
  height: 36px;
18417
18463
  }
18418
- .semi-transfer-left .semi-spin {
18464
+ .semi-transfer-left > .semi-spin {
18419
18465
  width: 100%;
18420
18466
  flex-grow: 1;
18421
18467
  }