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

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 (50) hide show
  1. package/button/buttonGroup.tsx +1 -1
  2. package/button/index.tsx +2 -0
  3. package/checkbox/_story/checkbox.stories.js +2 -0
  4. package/checkbox/checkbox.tsx +22 -19
  5. package/checkbox/checkboxGroup.tsx +1 -0
  6. package/dist/css/semi.css +42 -135
  7. package/dist/css/semi.min.css +1 -1
  8. package/dist/umd/semi-ui.js +395 -329
  9. package/dist/umd/semi-ui.js.map +1 -1
  10. package/dist/umd/semi-ui.min.js +1 -1
  11. package/dist/umd/semi-ui.min.js.map +1 -1
  12. package/form/baseForm.tsx +0 -1
  13. package/lib/cjs/button/buttonGroup.js +5 -9
  14. package/lib/cjs/button/index.d.ts +1 -0
  15. package/lib/cjs/button/index.js +1 -0
  16. package/lib/cjs/checkbox/checkbox.js +18 -10
  17. package/lib/cjs/checkbox/checkboxGroup.js +10 -9
  18. package/lib/cjs/form/baseForm.d.ts +1 -1
  19. package/lib/cjs/form/baseForm.js +0 -1
  20. package/lib/cjs/form/field.d.ts +1 -1
  21. package/lib/cjs/popconfirm/index.d.ts +4 -2
  22. package/lib/cjs/popconfirm/index.js +49 -31
  23. package/lib/cjs/radio/radio.js +21 -13
  24. package/lib/cjs/radio/radioGroup.js +1 -1
  25. package/lib/cjs/tabs/TabBar.js +5 -1
  26. package/lib/cjs/transfer/index.js +7 -2
  27. package/lib/cjs/typography/title.d.ts +1 -1
  28. package/lib/es/button/buttonGroup.js +5 -8
  29. package/lib/es/button/index.d.ts +1 -0
  30. package/lib/es/button/index.js +1 -0
  31. package/lib/es/checkbox/checkbox.js +18 -10
  32. package/lib/es/checkbox/checkboxGroup.js +8 -7
  33. package/lib/es/form/baseForm.d.ts +1 -1
  34. package/lib/es/form/baseForm.js +0 -1
  35. package/lib/es/form/field.d.ts +1 -1
  36. package/lib/es/popconfirm/index.d.ts +4 -2
  37. package/lib/es/popconfirm/index.js +49 -31
  38. package/lib/es/radio/radio.js +21 -13
  39. package/lib/es/radio/radioGroup.js +1 -1
  40. package/lib/es/tabs/TabBar.js +5 -1
  41. package/lib/es/transfer/index.js +7 -2
  42. package/lib/es/typography/title.d.ts +1 -1
  43. package/package.json +7 -7
  44. package/popconfirm/_story/popconfirm.stories.js +37 -1
  45. package/popconfirm/index.tsx +14 -6
  46. package/radio/_story/radio.stories.js +5 -5
  47. package/radio/radio.tsx +20 -19
  48. package/radio/radioGroup.tsx +1 -1
  49. package/tabs/TabBar.tsx +7 -1
  50. package/transfer/index.tsx +7 -2
@@ -45,7 +45,7 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
45
45
  let lineCls = `${prefixCls}-group-line`;
46
46
  if (inner.length > 1) {
47
47
  inner.slice(0, -1).forEach(item => {
48
- const isButtonType = [get(item, 'type.displayName'), get(item, 'type.name')].includes('Button');
48
+ const isButtonType = get(item, 'type.elementType') === 'Button';
49
49
  const buttonProps = get(item, 'props') as ButtonProps;
50
50
  if (buttonProps) {
51
51
  const { type, theme, disabled } = buttonProps;
package/button/index.tsx CHANGED
@@ -18,6 +18,7 @@ class Button extends React.PureComponent<ButtonProps> {
18
18
  ...BaseButton.propTypes,
19
19
  ...IconButton.propTypes,
20
20
  };
21
+ static elementType: string;
21
22
  constructor(props = {}) {
22
23
  super(props);
23
24
  }
@@ -34,5 +35,6 @@ class Button extends React.PureComponent<ButtonProps> {
34
35
  }
35
36
  }
36
37
  }
38
+ Button.elementType = 'Button';
37
39
 
38
40
  export default Button;
@@ -31,6 +31,8 @@ export const CheckboxDefault = () => {
31
31
  </Checkbox>
32
32
  <br />
33
33
  <Checkbox indeterminate>indeterminate</Checkbox>
34
+ <Checkbox onChange={e => console.log(e)} value={1} onChange={v => console.log(v)}>
35
+ </Checkbox>
34
36
  </div>
35
37
  );
36
38
  };
@@ -235,20 +235,27 @@ class Checkbox extends BaseComponent<CheckboxProps, CheckboxState> {
235
235
  const name = inGroup && this.context.checkboxGroup.name;
236
236
  const xSemiPropChildren = this.props['x-semi-children-alias'] || 'children';
237
237
 
238
- const renderContent = () => (
239
- <>
240
- {children ? (
241
- <span id={addonId} className={`${prefix}-addon`} x-semi-prop={xSemiPropChildren}>
242
- {children}
243
- </span>
244
- ) : null}
245
- {extra ? (
246
- <div id={extraId} className={extraCls} x-semi-prop="extra">
247
- {extra}
248
- </div>
249
- ) : null}
250
- </>
251
- );
238
+ const renderContent = () => {
239
+ if (!children && !extra) {
240
+ return null;
241
+ }
242
+
243
+ return (
244
+ <div className={`${prefix}-content`}>
245
+ {children ? (
246
+ <span id={addonId} className={`${prefix}-addon`} x-semi-prop={xSemiPropChildren}>
247
+ {children}
248
+ </span>
249
+ ) : null}
250
+ {extra ? (
251
+ <div id={extraId} className={extraCls} x-semi-prop="extra">
252
+ {extra}
253
+ </div>
254
+ ) : null}
255
+ </div>
256
+ );
257
+ };
258
+
252
259
  return (
253
260
  // label is better than span, however span is here which is to solve gitlab issue #364
254
261
  <span
@@ -276,11 +283,7 @@ class Checkbox extends BaseComponent<CheckboxProps, CheckboxState> {
276
283
  onInputFocus={this.handleFocusVisible}
277
284
  onInputBlur={this.handleBlur}
278
285
  />
279
- {
280
- props.isCardType ?
281
- <div>{renderContent()}</div> :
282
- renderContent()
283
- }
286
+ {renderContent()}
284
287
  </span>
285
288
  );
286
289
  }
@@ -120,6 +120,7 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
120
120
  [`${prefix }-wrapper`]: true,
121
121
  [`${prefix }-${ direction}`]: direction,
122
122
  [`${prefix}-${direction}-cardType`]: direction && isCardType,
123
+ [`${prefix}-${direction}-pureCardType`]: direction && isPureCardType,
123
124
  }, className);
124
125
 
125
126
  const realValue = this.state.value.slice();
package/dist/css/semi.css CHANGED
@@ -3508,7 +3508,7 @@ body {
3508
3508
  box-sizing: border-box;
3509
3509
  position: relative;
3510
3510
  display: flex;
3511
- align-items: center;
3511
+ align-items: flex-start;
3512
3512
  flex-wrap: wrap;
3513
3513
  font-size: 14px;
3514
3514
  line-height: 20px;
@@ -3516,6 +3516,7 @@ body {
3516
3516
  cursor: pointer;
3517
3517
  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);
3518
3518
  transform: scale(var(--semi-transform_scale-none));
3519
+ column-gap: 8px;
3519
3520
  }
3520
3521
  .semi-checkbox input[type=checkbox] {
3521
3522
  position: absolute;
@@ -3526,11 +3527,16 @@ body {
3526
3527
  margin: 0;
3527
3528
  opacity: 0;
3528
3529
  }
3530
+ .semi-checkbox-content {
3531
+ flex: 1;
3532
+ display: flex;
3533
+ flex-direction: column;
3534
+ row-gap: 4px;
3535
+ }
3529
3536
  .semi-checkbox-addon {
3530
3537
  display: flex;
3531
3538
  flex: 1;
3532
3539
  align-items: center;
3533
- padding-left: 8px;
3534
3540
  color: var(--semi-color-text-0);
3535
3541
  line-height: 20px;
3536
3542
  user-select: none;
@@ -3633,7 +3639,6 @@ body {
3633
3639
  }
3634
3640
  .semi-checkbox-cardType .semi-checkbox-inner {
3635
3641
  position: relative;
3636
- margin-right: 8px;
3637
3642
  flex-shrink: 0;
3638
3643
  }
3639
3644
  .semi-checkbox-cardType .semi-checkbox-inner-display {
@@ -3642,22 +3647,18 @@ body {
3642
3647
  .semi-checkbox-cardType .semi-checkbox-inner-pureCardType {
3643
3648
  opacity: 0;
3644
3649
  width: 0;
3645
- margin-right: 0;
3646
3650
  }
3647
3651
  .semi-checkbox-cardType .semi-checkbox-addon {
3648
3652
  font-weight: 600;
3649
3653
  font-size: 14px;
3650
3654
  line-height: 20px;
3651
3655
  color: var(--semi-color-text-0);
3652
- margin-left: 0;
3653
- padding-left: 0;
3654
3656
  }
3655
3657
  .semi-checkbox-cardType .semi-checkbox-extra {
3656
3658
  font-weight: normal;
3657
3659
  font-size: 14px;
3658
3660
  line-height: 20px;
3659
3661
  color: var(--semi-color-text-2);
3660
- padding-left: 0;
3661
3662
  }
3662
3663
  .semi-checkbox-cardType .semi-checkbox-extra.semi-checkbox-cardType_extra_noChildren {
3663
3664
  margin-top: 0;
@@ -3759,9 +3760,7 @@ body {
3759
3760
  flex-grow: 1;
3760
3761
  flex-basis: 100%;
3761
3762
  box-sizing: border-box;
3762
- padding-left: 24px;
3763
3763
  color: var(--semi-color-text-2);
3764
- margin-top: 4px;
3765
3764
  }
3766
3765
  .semi-checkbox-focus {
3767
3766
  outline: 2px solid var(--semi-color-primary-light-active);
@@ -3779,21 +3778,24 @@ body {
3779
3778
  .semi-checkboxGroup .semi-checkbox.semi-checkbox-vertical {
3780
3779
  margin-bottom: 16px;
3781
3780
  }
3781
+ .semi-checkboxGroup-horizontal {
3782
+ display: flex;
3783
+ flex-wrap: wrap;
3784
+ gap: 16px;
3785
+ }
3782
3786
  .semi-checkboxGroup-horizontal .semi-checkbox {
3783
- margin-right: 16px;
3784
3787
  display: inline-flex;
3785
3788
  }
3786
- .semi-checkboxGroup-horizontal .semi-checkbox:last-of-type {
3787
- margin-right: 0;
3788
- }
3789
- .semi-checkboxGroup-vertical .semi-checkbox {
3790
- margin-bottom: 12px;
3789
+ .semi-checkboxGroup-vertical {
3790
+ display: flex;
3791
+ flex-direction: column;
3792
+ row-gap: 12px;
3791
3793
  }
3792
- .semi-checkboxGroup-vertical .semi-checkbox:last-of-type {
3793
- margin-bottom: 0;
3794
+ .semi-checkboxGroup-vertical-cardType {
3795
+ row-gap: 16px;
3794
3796
  }
3795
- .semi-checkboxGroup-vertical-cardType .semi-checkbox {
3796
- margin-bottom: 16px;
3797
+ .semi-checkboxGroup-vertical-pureCardType .semi-checkbox {
3798
+ column-gap: 0;
3797
3799
  }
3798
3800
 
3799
3801
  .semi-rtl .semi-checkbox,
@@ -3805,43 +3807,10 @@ body {
3805
3807
  left: auto;
3806
3808
  right: 0;
3807
3809
  }
3808
- .semi-rtl .semi-checkbox-addon,
3809
- .semi-portal-rtl .semi-checkbox-addon {
3810
- padding-left: 0;
3811
- padding-right: 8px;
3812
- }
3813
- .semi-rtl .semi-checkbox-extra,
3814
- .semi-portal-rtl .semi-checkbox-extra {
3815
- padding-left: 0;
3816
- padding-right: 24px;
3817
- }
3818
- .semi-rtl .semi-checkbox-cardType .semi-checkbox-inner,
3819
- .semi-portal-rtl .semi-checkbox-cardType .semi-checkbox-inner {
3820
- margin-right: 0;
3821
- margin-left: 8px;
3822
- }
3823
- .semi-rtl .semi-checkbox-cardType .semi-checkbox-addon,
3824
- .semi-portal-rtl .semi-checkbox-cardType .semi-checkbox-addon {
3825
- margin-right: 0;
3826
- padding-right: 0;
3827
- }
3828
- .semi-rtl .semi-checkbox-cardType .semi-checkbox-extra,
3829
- .semi-portal-rtl .semi-checkbox-cardType .semi-checkbox-extra {
3830
- padding-right: 0;
3831
- }
3832
3810
  .semi-rtl .semi-checkboxGroup,
3833
3811
  .semi-portal-rtl .semi-checkboxGroup {
3834
3812
  direction: rtl;
3835
3813
  }
3836
- .semi-rtl .semi-checkboxGroup-horizontal .semi-checkbox,
3837
- .semi-portal-rtl .semi-checkboxGroup-horizontal .semi-checkbox {
3838
- margin-right: 0;
3839
- margin-left: 16px;
3840
- }
3841
- .semi-rtl .semi-checkboxGroup-horizontal .semi-checkbox:last-of-type,
3842
- .semi-portal-rtl .semi-checkboxGroup-horizontal .semi-checkbox:last-of-type {
3843
- margin-left: 0;
3844
- }
3845
3814
 
3846
3815
  .semi-collapse-item {
3847
3816
  border-bottom: 1px solid var(--semi-color-border);
@@ -14664,9 +14633,8 @@ body {
14664
14633
  font-size: 14px;
14665
14634
  line-height: 20px;
14666
14635
  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
14636
  display: inline-flex;
14669
- flex-wrap: wrap;
14637
+ column-gap: 8px;
14670
14638
  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
14639
  min-height: 20px;
14672
14640
  min-width: 16px;
@@ -14715,6 +14683,7 @@ body {
14715
14683
  border-radius: var(--semi-border-radius-small);
14716
14684
  }
14717
14685
  .semi-radio-buttonRadioGroup {
14686
+ position: relative;
14718
14687
  padding: 4px;
14719
14688
  border-radius: var(--semi-border-radius-small);
14720
14689
  line-height: 16px;
@@ -14739,8 +14708,6 @@ body {
14739
14708
  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
14709
  }
14741
14710
  .semi-radio-cardRadioGroup .semi-radio-inner {
14742
- position: relative;
14743
- margin-right: 8px;
14744
14711
  flex-shrink: 0;
14745
14712
  }
14746
14713
  .semi-radio-cardRadioGroup .semi-radio-inner-display {
@@ -14751,8 +14718,6 @@ body {
14751
14718
  font-size: 14px;
14752
14719
  line-height: 20px;
14753
14720
  color: var(--semi-color-text-0);
14754
- margin-left: 0;
14755
- padding-left: 0;
14756
14721
  }
14757
14722
  .semi-radio-cardRadioGroup .semi-radio-extra {
14758
14723
  font-weight: normal;
@@ -14809,19 +14774,18 @@ body {
14809
14774
  border-color: var(--semi-color-primary-disabled);
14810
14775
  }
14811
14776
  .semi-radio-inner {
14812
- position: absolute;
14813
- display: inline-block;
14814
- top: 2px;
14815
- left: 0;
14777
+ display: inline-flex;
14778
+ margin-top: 2px;
14779
+ position: relative;
14816
14780
  width: 16px;
14817
14781
  height: 16px;
14818
14782
  vertical-align: sub;
14819
14783
  user-select: none;
14820
14784
  }
14821
14785
  .semi-radio-inner-display {
14822
- position: absolute;
14823
- left: 0;
14824
- top: 0;
14786
+ display: inline-flex;
14787
+ align-items: center;
14788
+ justify-content: center;
14825
14789
  box-sizing: border-box;
14826
14790
  width: 16px;
14827
14791
  height: 16px;
@@ -14831,11 +14795,14 @@ body {
14831
14795
  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
14796
  }
14833
14797
  .semi-radio-inner-display .semi-icon {
14834
- position: absolute;
14835
14798
  width: 100%;
14836
14799
  height: 100%;
14837
14800
  font-size: 14px;
14838
14801
  }
14802
+ .semi-radio-content {
14803
+ display: flex;
14804
+ flex-direction: column;
14805
+ }
14839
14806
  .semi-radio:hover .semi-radio-inner-display {
14840
14807
  background: var(--semi-color-fill-0);
14841
14808
  }
@@ -14844,14 +14811,11 @@ body {
14844
14811
  }
14845
14812
  .semi-radio-addon {
14846
14813
  user-select: none;
14847
- padding-left: 8px;
14848
- margin-left: 16px;
14849
14814
  color: var(--semi-color-text-0);
14850
14815
  display: inline-flex;
14851
14816
  align-items: center;
14852
14817
  }
14853
14818
  .semi-radio-addon-buttonRadio {
14854
- margin-left: 0;
14855
14819
  text-align: center;
14856
14820
  border-radius: var(--semi-border-radius-small);
14857
14821
  font-weight: 600;
@@ -14935,11 +14899,7 @@ body {
14935
14899
  color: var(--semi-color-disabled-text);
14936
14900
  }
14937
14901
  .semi-radio-extra {
14938
- flex-grow: 1;
14939
- flex-basis: 100%;
14940
- flex-shrink: 0;
14941
14902
  color: var(--semi-color-text-2);
14942
- padding-left: 24px;
14943
14903
  box-sizing: border-box;
14944
14904
  }
14945
14905
  .semi-radio-focus {
@@ -14954,25 +14914,21 @@ body {
14954
14914
  line-height: 20px;
14955
14915
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
14956
14916
  }
14957
- .semi-radioGroup-vertical .semi-radio:last-of-type {
14958
- margin-bottom: 0;
14917
+ .semi-radioGroup-vertical {
14918
+ display: flex;
14919
+ flex-direction: column;
14920
+ row-gap: 12px;
14959
14921
  }
14960
14922
  .semi-radioGroup-vertical-default .semi-radio {
14961
- display: block;
14962
- margin-bottom: 12px;
14923
+ display: flex;
14963
14924
  }
14964
14925
  .semi-radioGroup-vertical-card .semi-radio {
14965
14926
  display: flex;
14966
- margin-bottom: 16px;
14967
14927
  }
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
- }
14974
- .semi-radioGroup-horizontal-default {
14975
- display: inline-block;
14928
+ .semi-radioGroup-horizontal {
14929
+ display: inline-flex;
14930
+ flex-wrap: wrap;
14931
+ gap: 16px;
14976
14932
  }
14977
14933
  .semi-radioGroup-buttonRadio {
14978
14934
  display: inline-block;
@@ -14996,59 +14952,10 @@ body {
14996
14952
  .semi-portal-rtl .semi-radio-buttonRadioGroup:not(:last-child) {
14997
14953
  padding-left: 0;
14998
14954
  }
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
14955
  .semi-rtl .semi-radioGroup,
15040
14956
  .semi-portal-rtl .semi-radioGroup {
15041
14957
  direction: rtl;
15042
14958
  }
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
14959
 
15053
14960
  .semi-rating {
15054
14961
  display: inline-block;