@douyinfe/semi-ui 2.19.0-alpha.5 → 2.19.0-alpha.6

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.
@@ -1,10 +1,9 @@
1
- import React, { isValidElement, cloneElement, ReactNode } from 'react';
1
+ import React, { isValidElement, cloneElement } from 'react';
2
2
  import BaseComponent, { BaseProps } from '../_base/baseComponent';
3
3
  import PropTypes from 'prop-types';
4
4
  import classNames from 'classnames';
5
5
  import { cssClasses, strings } from '@douyinfe/semi-foundation/button/constants';
6
- import { get } from 'lodash';
7
- import { Type, Size, ButtonProps } from './Button';
6
+ import { Type, Size } from './Button';
8
7
 
9
8
  import '@douyinfe/semi-foundation/button/button.scss';
10
9
 
@@ -40,41 +39,9 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
40
39
  size: 'default',
41
40
  };
42
41
 
43
- getInnerWithLine(inner) {
44
- const innerWithLine: ReactNode[] = [];
45
- let lineCls = `${prefixCls}-group-line`;
46
- if (inner.length > 1) {
47
- inner.slice(0, -1).forEach(item => {
48
- const isButtonType = [get(item, 'type.displayName'), get(item, 'type.name')].includes('Button');
49
- const buttonProps = get(item, 'props') as ButtonProps;
50
- if (buttonProps) {
51
- const { type, theme, disabled } = buttonProps;
52
- lineCls = classNames(
53
- `${prefixCls}-group-line`,
54
- `${prefixCls}-group-line-${theme ?? 'light'}`,
55
- `${prefixCls}-group-line-${type ?? 'primary'}`,
56
- {
57
- [`${prefixCls}-group-line-disabled`]: disabled,
58
- }
59
- );
60
- }
61
- if (isButtonType) {
62
- innerWithLine.push(item, <span className={lineCls} />);
63
- } else {
64
- innerWithLine.push(item);
65
- }
66
- });
67
- innerWithLine.push(inner.slice(-1));
68
- return innerWithLine;
69
- } else {
70
- return inner;
71
- }
72
- }
73
-
74
42
  render() {
75
43
  const { children, disabled, size, type, className, 'aria-label': ariaLabel, ...rest } = this.props;
76
- let inner: ReactNode[];
77
- let innerWithLine: ReactNode[] = [];
44
+ let inner;
78
45
  const cls = classNames(`${prefixCls}-group`, className);
79
46
 
80
47
  if (children) {
@@ -83,8 +50,7 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
83
50
  ? cloneElement(itm, { disabled, size, type, ...itm.props, ...rest, key: index })
84
51
  : itm
85
52
  ));
86
- innerWithLine = this.getInnerWithLine(inner);
87
53
  }
88
- return <div className={cls} role="group" aria-label={ariaLabel}>{innerWithLine}</div>;
54
+ return <div className={cls} role="group" aria-label={ariaLabel}>{inner}</div>;
89
55
  }
90
56
  }
package/dist/css/semi.css CHANGED
@@ -1778,10 +1778,6 @@ body {
1778
1778
  .semi-button-block {
1779
1779
  width: 100%;
1780
1780
  }
1781
- .semi-button-group {
1782
- display: flex;
1783
- flex-wrap: wrap;
1784
- }
1785
1781
  .semi-button-group > .semi-button {
1786
1782
  margin: 0;
1787
1783
  padding-left: 0;
@@ -1820,46 +1816,13 @@ body {
1820
1816
  border-top-left-radius: var(--semi-border-radius-small);
1821
1817
  border-bottom-left-radius: var(--semi-border-radius-small);
1822
1818
  }
1819
+ .semi-button-group > .semi-button:not(:last-child) .semi-button-content {
1820
+ border-right: 1px var(--semi-color-border) solid;
1821
+ }
1823
1822
  .semi-button-group > .semi-button:last-child {
1824
1823
  border-top-right-radius: var(--semi-border-radius-small);
1825
1824
  border-bottom-right-radius: var(--semi-border-radius-small);
1826
1825
  }
1827
- .semi-button-group-line {
1828
- display: inline-flex;
1829
- align-items: center;
1830
- background-color: var(--semi-color-border);
1831
- }
1832
- .semi-button-group-line-primary {
1833
- background-color: var(--semi-color-primary);
1834
- }
1835
- .semi-button-group-line-secondary {
1836
- background-color: var(--semi-color-secondary);
1837
- }
1838
- .semi-button-group-line-tertiary {
1839
- background-color: var(--semi-color-tertiary);
1840
- }
1841
- .semi-button-group-line-warning {
1842
- background-color: var(--semi-color-warning);
1843
- }
1844
- .semi-button-group-line-danger {
1845
- background-color: var(--semi-color-danger);
1846
- }
1847
- .semi-button-group-line-disabled {
1848
- background-color: var(--semi-color-disabled-bg);
1849
- }
1850
- .semi-button-group-line-light {
1851
- background-color: var(--semi-color-fill-0);
1852
- }
1853
- .semi-button-group-line-borderless {
1854
- background-color: transparent;
1855
- }
1856
- .semi-button-group-line::before {
1857
- display: block;
1858
- content: "";
1859
- width: 1px;
1860
- height: 20px;
1861
- background-color: var(--semi-color-border);
1862
- }
1863
1826
 
1864
1827
  .semi-rtl .semi-button,
1865
1828
  .semi-portal-rtl .semi-button {
@@ -14664,9 +14627,8 @@ body {
14664
14627
  font-size: 14px;
14665
14628
  line-height: 20px;
14666
14629
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
14667
- position: relative;
14668
14630
  display: inline-flex;
14669
- flex-wrap: wrap;
14631
+ column-gap: 8px;
14670
14632
  transition: background-color var(--semi-transition_duration-faster) var(--semi-transition_function-easeIn) var(--semi-transition_delay-fastest), border var(--semi-transition_duration-faster) var(--semi-transition_function-easeIn) var(--semi-transition_delay-fastest);
14671
14633
  min-height: 20px;
14672
14634
  min-width: 16px;
@@ -14715,6 +14677,7 @@ body {
14715
14677
  border-radius: var(--semi-border-radius-small);
14716
14678
  }
14717
14679
  .semi-radio-buttonRadioGroup {
14680
+ position: relative;
14718
14681
  padding: 4px;
14719
14682
  border-radius: var(--semi-border-radius-small);
14720
14683
  line-height: 16px;
@@ -14739,8 +14702,6 @@ body {
14739
14702
  transition: background-color var(--semi-transition_duration-faster) var(--semi-transition_function-easeIn) var(--semi-transition_delay-fastest), border var(--semi-transition_duration-faster) var(--semi-transition_function-easeIn) var(--semi-transition_delay-fastest);
14740
14703
  }
14741
14704
  .semi-radio-cardRadioGroup .semi-radio-inner {
14742
- position: relative;
14743
- margin-right: 8px;
14744
14705
  flex-shrink: 0;
14745
14706
  }
14746
14707
  .semi-radio-cardRadioGroup .semi-radio-inner-display {
@@ -14751,8 +14712,6 @@ body {
14751
14712
  font-size: 14px;
14752
14713
  line-height: 20px;
14753
14714
  color: var(--semi-color-text-0);
14754
- margin-left: 0;
14755
- padding-left: 0;
14756
14715
  }
14757
14716
  .semi-radio-cardRadioGroup .semi-radio-extra {
14758
14717
  font-weight: normal;
@@ -14809,19 +14768,18 @@ body {
14809
14768
  border-color: var(--semi-color-primary-disabled);
14810
14769
  }
14811
14770
  .semi-radio-inner {
14812
- position: absolute;
14813
- display: inline-block;
14814
- top: 2px;
14815
- left: 0;
14771
+ display: inline-flex;
14772
+ margin-top: 2px;
14773
+ position: relative;
14816
14774
  width: 16px;
14817
14775
  height: 16px;
14818
14776
  vertical-align: sub;
14819
14777
  user-select: none;
14820
14778
  }
14821
14779
  .semi-radio-inner-display {
14822
- position: absolute;
14823
- left: 0;
14824
- top: 0;
14780
+ display: inline-flex;
14781
+ align-items: center;
14782
+ justify-content: center;
14825
14783
  box-sizing: border-box;
14826
14784
  width: 16px;
14827
14785
  height: 16px;
@@ -14831,11 +14789,14 @@ body {
14831
14789
  transition: background-color var(--semi-transition_duration-faster) var(--semi-transition_function-easeIn) var(--semi-transition_delay-fastest), border var(--semi-transition_duration-faster) var(--semi-transition_function-easeIn) var(--semi-transition_delay-fastest);
14832
14790
  }
14833
14791
  .semi-radio-inner-display .semi-icon {
14834
- position: absolute;
14835
14792
  width: 100%;
14836
14793
  height: 100%;
14837
14794
  font-size: 14px;
14838
14795
  }
14796
+ .semi-radio-content {
14797
+ display: flex;
14798
+ flex-direction: column;
14799
+ }
14839
14800
  .semi-radio:hover .semi-radio-inner-display {
14840
14801
  background: var(--semi-color-fill-0);
14841
14802
  }
@@ -14844,14 +14805,11 @@ body {
14844
14805
  }
14845
14806
  .semi-radio-addon {
14846
14807
  user-select: none;
14847
- padding-left: 8px;
14848
- margin-left: 16px;
14849
14808
  color: var(--semi-color-text-0);
14850
14809
  display: inline-flex;
14851
14810
  align-items: center;
14852
14811
  }
14853
14812
  .semi-radio-addon-buttonRadio {
14854
- margin-left: 0;
14855
14813
  text-align: center;
14856
14814
  border-radius: var(--semi-border-radius-small);
14857
14815
  font-weight: 600;
@@ -14935,11 +14893,7 @@ body {
14935
14893
  color: var(--semi-color-disabled-text);
14936
14894
  }
14937
14895
  .semi-radio-extra {
14938
- flex-grow: 1;
14939
- flex-basis: 100%;
14940
- flex-shrink: 0;
14941
14896
  color: var(--semi-color-text-2);
14942
- padding-left: 24px;
14943
14897
  box-sizing: border-box;
14944
14898
  }
14945
14899
  .semi-radio-focus {
@@ -14954,25 +14908,21 @@ body {
14954
14908
  line-height: 20px;
14955
14909
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
14956
14910
  }
14957
- .semi-radioGroup-vertical .semi-radio:last-of-type {
14958
- margin-bottom: 0;
14911
+ .semi-radioGroup-vertical {
14912
+ display: flex;
14913
+ flex-direction: column;
14914
+ row-gap: 12px;
14959
14915
  }
14960
14916
  .semi-radioGroup-vertical-default .semi-radio {
14961
- display: block;
14962
- margin-bottom: 12px;
14917
+ display: flex;
14963
14918
  }
14964
14919
  .semi-radioGroup-vertical-card .semi-radio {
14965
14920
  display: flex;
14966
- margin-bottom: 16px;
14967
- }
14968
- .semi-radioGroup-horizontal .semi-radio {
14969
- margin-right: 16px;
14970
- }
14971
- .semi-radioGroup-horizontal .semi-radio:last-of-type {
14972
- margin-right: 0;
14973
14921
  }
14974
- .semi-radioGroup-horizontal-default {
14975
- display: inline-block;
14922
+ .semi-radioGroup-horizontal {
14923
+ display: inline-flex;
14924
+ flex-wrap: wrap;
14925
+ gap: 16px;
14976
14926
  }
14977
14927
  .semi-radioGroup-buttonRadio {
14978
14928
  display: inline-block;
@@ -14996,59 +14946,10 @@ body {
14996
14946
  .semi-portal-rtl .semi-radio-buttonRadioGroup:not(:last-child) {
14997
14947
  padding-left: 0;
14998
14948
  }
14999
- .semi-rtl .semi-radio-inner,
15000
- .semi-portal-rtl .semi-radio-inner {
15001
- left: auto;
15002
- right: 0;
15003
- }
15004
- .semi-rtl .semi-radio-inner-display,
15005
- .semi-portal-rtl .semi-radio-inner-display {
15006
- left: auto;
15007
- right: 0;
15008
- }
15009
- .semi-rtl .semi-radio-addon,
15010
- .semi-portal-rtl .semi-radio-addon {
15011
- padding-left: 0;
15012
- margin-left: 0;
15013
- padding-right: 8px;
15014
- margin-right: 16px;
15015
- }
15016
- .semi-rtl .semi-radio-addon-buttonRadio,
15017
- .semi-portal-rtl .semi-radio-addon-buttonRadio {
15018
- margin-right: 0;
15019
- }
15020
- .semi-rtl .semi-radio-extra,
15021
- .semi-portal-rtl .semi-radio-extra {
15022
- padding-left: 0;
15023
- padding-right: 24px;
15024
- }
15025
- .semi-rtl-isCardRadioGroup .semi-radio-inner,
15026
- .semi-portal-rtl-isCardRadioGroup .semi-radio-inner {
15027
- margin-right: 0;
15028
- margin-left: 8px;
15029
- }
15030
- .semi-rtl-isCardRadioGroup .semi-radio-addon,
15031
- .semi-portal-rtl-isCardRadioGroup .semi-radio-addon {
15032
- margin-right: 0;
15033
- padding-right: 0;
15034
- }
15035
- .semi-rtl-isCardRadioGroup .semi-radio-extra,
15036
- .semi-portal-rtl-isCardRadioGroup .semi-radio-extra {
15037
- padding-right: 0;
15038
- }
15039
14949
  .semi-rtl .semi-radioGroup,
15040
14950
  .semi-portal-rtl .semi-radioGroup {
15041
14951
  direction: rtl;
15042
14952
  }
15043
- .semi-rtl .semi-radioGroup-horizontal .semi-radio,
15044
- .semi-portal-rtl .semi-radioGroup-horizontal .semi-radio {
15045
- margin-right: 0;
15046
- margin-left: 16px;
15047
- }
15048
- .semi-rtl .semi-radioGroup-horizontal .semi-radio:last-of-type,
15049
- .semi-portal-rtl .semi-radioGroup-horizontal .semi-radio:last-of-type {
15050
- margin-left: 0;
15051
- }
15052
14953
 
15053
14954
  .semi-rating {
15054
14955
  display: inline-block;