@arco-design/mobile-react 2.30.0 → 2.30.1

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 (67) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.en-US.md +2 -2
  3. package/README.md +2 -2
  4. package/cjs/carousel/index.js +3 -1
  5. package/cjs/context-provider/index.d.ts +5 -1
  6. package/cjs/context-provider/index.js +10 -3
  7. package/cjs/dialog/demo/style/css/mobile.css +2 -1
  8. package/cjs/dialog/demo/style/mobile.less +2 -1
  9. package/cjs/form/form-item.js +15 -7
  10. package/cjs/form/type.d.ts +3 -2
  11. package/cjs/form/utils.d.ts +1 -0
  12. package/cjs/form/utils.js +6 -2
  13. package/cjs/input/demo/style/css/mobile.css +25 -7
  14. package/cjs/input/demo/style/mobile.less +32 -7
  15. package/cjs/nav-bar/style/css/index.css +1 -1
  16. package/cjs/notify/demo/style/css/mobile.css +5 -1
  17. package/cjs/notify/demo/style/mobile.less +9 -1
  18. package/cjs/popover/demo/style/css/mobile.css +6 -2
  19. package/cjs/popover/demo/style/mobile.less +12 -2
  20. package/cjs/tabs/demo/style/css/mobile.css +6 -2
  21. package/cjs/tabs/demo/style/mobile.less +7 -1
  22. package/cjs/tabs/style/css/index.css +1 -1
  23. package/dist/index.js +36 -15
  24. package/dist/index.min.js +1 -1
  25. package/esm/carousel/index.js +3 -1
  26. package/esm/context-provider/index.d.ts +5 -1
  27. package/esm/context-provider/index.js +11 -4
  28. package/esm/dialog/demo/style/css/mobile.css +2 -1
  29. package/esm/dialog/demo/style/mobile.less +2 -1
  30. package/esm/form/form-item.js +15 -7
  31. package/esm/form/type.d.ts +3 -2
  32. package/esm/form/utils.d.ts +1 -0
  33. package/esm/form/utils.js +6 -2
  34. package/esm/input/demo/style/css/mobile.css +25 -7
  35. package/esm/input/demo/style/mobile.less +32 -7
  36. package/esm/nav-bar/style/css/index.css +1 -1
  37. package/esm/notify/demo/style/css/mobile.css +5 -1
  38. package/esm/notify/demo/style/mobile.less +9 -1
  39. package/esm/popover/demo/style/css/mobile.css +6 -2
  40. package/esm/popover/demo/style/mobile.less +12 -2
  41. package/esm/tabs/demo/style/css/mobile.css +6 -2
  42. package/esm/tabs/demo/style/mobile.less +7 -1
  43. package/esm/tabs/style/css/index.css +1 -1
  44. package/package.json +3 -3
  45. package/tokens/app/arcodesign/default/css-variables.less +4 -4
  46. package/tokens/app/arcodesign/default/index.js +4 -4
  47. package/tokens/app/arcodesign/default/index.json +10 -10
  48. package/tokens/app/arcodesign/default/index.less +4 -4
  49. package/umd/carousel/index.js +3 -1
  50. package/umd/context-provider/index.d.ts +5 -1
  51. package/umd/context-provider/index.js +10 -3
  52. package/umd/dialog/demo/style/css/mobile.css +2 -1
  53. package/umd/dialog/demo/style/mobile.less +2 -1
  54. package/umd/form/form-item.js +15 -7
  55. package/umd/form/type.d.ts +3 -2
  56. package/umd/form/utils.d.ts +1 -0
  57. package/umd/form/utils.js +6 -2
  58. package/umd/input/demo/style/css/mobile.css +25 -7
  59. package/umd/input/demo/style/mobile.less +32 -7
  60. package/umd/nav-bar/style/css/index.css +1 -1
  61. package/umd/notify/demo/style/css/mobile.css +5 -1
  62. package/umd/notify/demo/style/mobile.less +9 -1
  63. package/umd/popover/demo/style/css/mobile.css +6 -2
  64. package/umd/popover/demo/style/mobile.less +12 -2
  65. package/umd/tabs/demo/style/css/mobile.css +6 -2
  66. package/umd/tabs/demo/style/mobile.less +7 -1
  67. package/umd/tabs/style/css/index.css +1 -1
@@ -47,11 +47,15 @@ export interface GlobalContextParams {
47
47
  * @default false
48
48
  */
49
49
  useRtl?: boolean;
50
+ /**
51
+ * 当系统原生暗黑模式发生变化时触发,useDarkMode=true 时有效
52
+ * @en Triggered when the system's native dark mode changes, valid when useDarkMode=true
53
+ */
54
+ onDarkModeChange?: (isDark: boolean) => void;
50
55
  }
51
56
  export declare const defaultContext: GlobalContextParams;
52
57
  export declare const GlobalContext: React.Context<GlobalContextParams>;
53
58
  export interface ContextProviderProps extends GlobalContextParams {
54
- onDarkModeChange?: (isDark: boolean) => void;
55
59
  children: React.ReactNode;
56
60
  }
57
61
  export declare type WithGlobalContext<T> = T & {
@@ -73,9 +73,15 @@
73
73
  isDarkModeState = _useState[0],
74
74
  setIsDarkModeState = _useState[1];
75
75
 
76
- var setDarkModeState = function setDarkModeState(isDark) {
76
+ var mountedRef = (0, _react.useRef)(false);
77
+
78
+ var setDarkModeState = function setDarkModeState(isDark, needChange) {
79
+ if (needChange === void 0) {
80
+ needChange = true;
81
+ }
82
+
77
83
  setIsDarkModeState(isDark);
78
- onDarkModeChange && onDarkModeChange(isDark);
84
+ needChange && onDarkModeChange && onDarkModeChange(isDark);
79
85
  };
80
86
 
81
87
  var isDarkMode = (0, _react.useMemo)(function () {
@@ -104,7 +110,7 @@
104
110
 
105
111
  if (useDarkMode) {
106
112
  var dark = matchMedia.matches;
107
- setDarkModeState(dark);
113
+ setDarkModeState(dark, mountedRef.current);
108
114
 
109
115
  if (typeof matchMedia.addEventListener === 'function') {
110
116
  matchMedia.addEventListener('change', changeDarkMode);
@@ -113,6 +119,7 @@
113
119
  }
114
120
  }
115
121
 
122
+ mountedRef.current = true;
116
123
  return function () {
117
124
  if (useDarkMode) {
118
125
  if (typeof matchMedia.removeEventListener === 'function') {
@@ -509,7 +509,7 @@
509
509
  padding: 0.16rem 0.24rem;
510
510
  font-size: 0.28rem;
511
511
  line-height: 0.4rem;
512
- background-color: #F2F3F5;
512
+ background-color: #F7F8FA ;
513
513
  width: 100%;
514
514
  caret-color: #165DFF ;
515
515
  }
@@ -536,6 +536,7 @@
536
536
  color: #929293 ;
537
537
  }
538
538
  .arco-theme-dark .dialog-input-demo-input {
539
+ background-color: hsla(0, 0%, 100%, 0.08) ;
539
540
  caret-color: #3C7EFF ;
540
541
  }
541
542
  .arco-theme-dark .dialog-input-demo-hint {
@@ -17,7 +17,7 @@
17
17
  .rem(padding, 8, 12);
18
18
  .rem(font-size, 14);
19
19
  .rem(line-height, 20);
20
- background-color: #F2F3F5;
20
+ .use-var(background-color, card-background-color);
21
21
  width: 100%;
22
22
  .use-var(caret-color, primary-color);
23
23
  }
@@ -59,6 +59,7 @@
59
59
  .dialog-input-demo {
60
60
  &-input {
61
61
  @{arco-dark-mode-selector} & {
62
+ .use-var(background-color, dark-card-background-color);
62
63
  .use-var(caret-color, dark-primary-color);
63
64
  }
64
65
  }
@@ -86,12 +86,14 @@
86
86
  fieldValidator.validate((_fieldValidator$valid = {}, _fieldValidator$valid[field] = value, _fieldValidator$valid), function (errorsMap) {
87
87
  var _getErrorAndWarnings = (0, _utils.getErrorAndWarnings)((errorsMap == null ? void 0 : errorsMap[field]) || []),
88
88
  errors = _getErrorAndWarnings.errors,
89
- warnings = _getErrorAndWarnings.warnings;
89
+ warnings = _getErrorAndWarnings.warnings,
90
+ errorTypes = _getErrorAndWarnings.errorTypes;
90
91
 
91
92
  _this._errors = errors;
92
93
  onValidateStatusChange({
93
94
  errors: _this._errors,
94
- warnings: warnings
95
+ warnings: warnings,
96
+ errorTypes: errorTypes
95
97
  });
96
98
  return resolve({
97
99
  errors: _this._errors,
@@ -336,16 +338,22 @@
336
338
  errors = _useState[0],
337
339
  setErrors = _useState[1];
338
340
 
339
- var _useState2 = (0, _react.useState)([]),
340
- warnings = _useState2[0],
341
- setWarnings = _useState2[1];
341
+ var _useState2 = (0, _react.useState)(null),
342
+ errorTypes = _useState2[0],
343
+ setErrorTypes = _useState2[1];
344
+
345
+ var _useState3 = (0, _react.useState)([]),
346
+ warnings = _useState3[0],
347
+ setWarnings = _useState3[1];
342
348
 
343
349
  var formItemRef = (0, _react.useRef)(null);
344
350
 
345
351
  var onValidateStatusChange = function onValidateStatusChange(validateResult) {
346
352
  var _errors = validateResult.errors,
347
- _warnings = validateResult.warnings;
353
+ _warnings = validateResult.warnings,
354
+ _errorTypes = validateResult.errorTypes;
348
355
  setErrors(_errors.length ? _errors[0] : null);
356
+ setErrorTypes(_errorTypes.length ? _errorTypes[0] : null);
349
357
  setWarnings(_warnings);
350
358
  };
351
359
 
@@ -367,7 +375,7 @@
367
375
  return /*#__PURE__*/_react.default.createElement("div", {
368
376
  className: (0, _mobileUtils.cls)(prefixCls + "-form-item", prefixCls + "-form-item-" + (itemLayout || layout), className, (_cls = {
369
377
  disabled: fieldDisabled
370
- }, _cls[prefixCls + "-form-item-error"] = !!errors, _cls[prefixCls + "-form-item-warning"] = Boolean(!errors && warnings), _cls)),
378
+ }, _cls[prefixCls + "-form-item-error"] = !!errors, _cls[prefixCls + "-form-item-warning"] = Boolean(!errors && warnings), _cls[prefixCls + "-form-item-error-" + errorTypes] = errorTypes, _cls)),
371
379
  style: style,
372
380
  ref: formItemRef
373
381
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -344,8 +344,9 @@ export interface IFormItemInnerProps {
344
344
  * @en The callback when validating status changes
345
345
  */
346
346
  onValidateStatusChange: (data: {
347
- errors: any;
348
- warnings: any;
347
+ errors: ReactNode[];
348
+ warnings: ReactNode[];
349
+ errorTypes: string[];
349
350
  }) => void;
350
351
  /**
351
352
  * 获取内部表单项的dom
@@ -3,4 +3,5 @@ export declare const isFieldRequired: (rules?: IRules[]) => boolean;
3
3
  export declare const getErrorAndWarnings: (result: ValidatorError[]) => {
4
4
  warnings: string[];
5
5
  errors: string[];
6
+ errorTypes: string[];
6
7
  };
package/umd/form/utils.js CHANGED
@@ -31,11 +31,13 @@
31
31
  var getErrorAndWarnings = function getErrorAndWarnings(result) {
32
32
  var errors = [];
33
33
  var warnings = [];
34
+ var errorTypes = [];
34
35
  result.map(function (_ref) {
35
36
  var _ref$message = _ref.message,
36
37
  message = _ref$message === void 0 ? [] : _ref$message,
37
38
  _ref$validateLevel = _ref.validateLevel,
38
- validateLevel = _ref$validateLevel === void 0 ? 'error' : _ref$validateLevel;
39
+ validateLevel = _ref$validateLevel === void 0 ? 'error' : _ref$validateLevel,
40
+ resultErrorTypes = _ref.errorTypes;
39
41
 
40
42
  if (!(message != null && message.length)) {
41
43
  return;
@@ -45,11 +47,13 @@
45
47
  warnings = [].concat(warnings, message);
46
48
  } else {
47
49
  errors = [].concat(errors, message);
50
+ errorTypes = [].concat(errorTypes, resultErrorTypes);
48
51
  }
49
52
  });
50
53
  return {
51
54
  warnings: warnings,
52
- errors: errors
55
+ errors: errors,
56
+ errorTypes: errorTypes
53
57
  };
54
58
  };
55
59
 
@@ -509,23 +509,23 @@
509
509
  }
510
510
  #demo-input .demo-input-maxlength {
511
511
  font-size: 0.28rem;
512
- color: #86909c;
512
+ color: #86909c ;
513
513
  }
514
514
  #demo-input .demo-input-maxlength.error {
515
- color: #f53f3f;
515
+ color: #F53F3F ;
516
516
  }
517
517
  #demo-input .demo-input-red-placeholder {
518
- caret-color: #f53f3f;
518
+ caret-color: #F53F3F ;
519
519
  }
520
520
  #demo-input .demo-input-red-placeholder::-webkit-input-placeholder {
521
- color: #f53f3f;
521
+ color: #F53F3F ;
522
522
  }
523
523
  #demo-input .demo-input-red-placeholder::placeholder {
524
- color: #f53f3f;
524
+ color: #F53F3F ;
525
525
  }
526
526
  #demo-input .demo-input-error-hint {
527
527
  font-size: 0.24rem;
528
- color: #f53f3f;
528
+ color: #F53F3F ;
529
529
  padding: 0 0 0.32rem 2.08rem;
530
530
  margin-top: -0.16rem;
531
531
  }
@@ -579,6 +579,24 @@
579
579
  color: #929293 ;
580
580
  }
581
581
  .arco-theme-dark #demo-input .arco-input-container {
582
- background: #17171A ;
582
+ background: #232324 ;
583
+ }
584
+ .arco-theme-dark #demo-input .demo-input-maxlength {
585
+ color: #929293 ;
586
+ }
587
+ .arco-theme-dark #demo-input .demo-input-maxlength.error {
588
+ color: #F76965 ;
589
+ }
590
+ .arco-theme-dark #demo-input .demo-input-red-placeholder {
591
+ caret-color: #F76965 ;
592
+ }
593
+ .arco-theme-dark #demo-input .demo-input-red-placeholder::-webkit-input-placeholder {
594
+ color: #F76965 ;
595
+ }
596
+ .arco-theme-dark #demo-input .demo-input-red-placeholder::placeholder {
597
+ color: #F76965 ;
598
+ }
599
+ .arco-theme-dark #demo-input .demo-input-error-hint {
600
+ color: #F76965 ;
583
601
  }
584
602
  /********************* End *************************/
@@ -8,7 +8,7 @@
8
8
  background: transparent;
9
9
  }
10
10
  .@{prefix}-input-container {
11
- .use-var(background, background-color);
11
+ .use-var(background, cell-background-color);
12
12
 
13
13
  &:not(:first-of-type) {
14
14
  .rem(margin-top, 8);
@@ -17,24 +17,24 @@
17
17
 
18
18
  .demo-input-maxlength {
19
19
  .rem(font-size, 14);
20
- color: #86909c;
20
+ .use-var(color, sub-info-font-color);
21
21
 
22
22
  &.error {
23
- color: #f53f3f;
23
+ .use-var(color, danger-color);
24
24
  }
25
25
  }
26
26
 
27
27
  .demo-input-red-placeholder {
28
- caret-color: #f53f3f;
28
+ .use-var(caret-color, danger-color);
29
29
 
30
30
  &::placeholder {
31
- color: #f53f3f;
31
+ .use-var(color, danger-color);
32
32
  }
33
33
  }
34
34
 
35
35
  .demo-input-error-hint {
36
36
  .rem(font-size, 12);
37
- color: #f53f3f;
37
+ .use-var(color, danger-color);
38
38
  .rem(padding, 0, 0, 16, 104);
39
39
  .rem(margin-top, -8);
40
40
 
@@ -99,7 +99,32 @@
99
99
  #demo-input {
100
100
  .@{prefix}-input-container {
101
101
  @{arco-dark-mode-selector} & {
102
- .use-var(background, dark-background-color);
102
+ .use-var(background, dark-cell-background-color);
103
+ }
104
+ }
105
+ .demo-input-maxlength {
106
+ @{arco-dark-mode-selector} & {
107
+ .use-var(color, dark-sub-info-font-color);
108
+ }
109
+ &.error {
110
+ @{arco-dark-mode-selector} & {
111
+ .use-var(color, dark-danger-color);
112
+ }
113
+ }
114
+ }
115
+ .demo-input-red-placeholder {
116
+ @{arco-dark-mode-selector} & {
117
+ .use-var(caret-color, dark-danger-color);
118
+ }
119
+ &::placeholder {
120
+ @{arco-dark-mode-selector} & {
121
+ .use-var(color, dark-danger-color);
122
+ }
123
+ }
124
+ }
125
+ .demo-input-error-hint {
126
+ @{arco-dark-mode-selector} & {
127
+ .use-var(color, dark-danger-color);
103
128
  }
104
129
  }
105
130
  }
@@ -650,7 +650,7 @@
650
650
  }
651
651
  .arco-theme-dark .arco-nav-bar {
652
652
  color: #f6f6f6 ;
653
- background: #232324 ;
653
+ background: #17171A ;
654
654
  }
655
655
  .arco-theme-dark .arco-nav-bar-wrapper.arco-nav-bar-wrapper-border {
656
656
  position: relative;
@@ -512,7 +512,8 @@
512
512
  padding: 0 0.32rem;
513
513
  height: 0.72rem;
514
514
  color: inherit;
515
- border: 0.5px solid #e5e6eb;
515
+ border: 0.5px solid;
516
+ border-color: #e5e6eb ;
516
517
  display: -webkit-box;
517
518
  display: -webkit-flex;
518
519
  display: flex;
@@ -538,4 +539,7 @@
538
539
  background: #2e2e30 ;
539
540
  color: #929293 ;
540
541
  }
542
+ .arco-theme-dark #demo-notify .notify-custom-content {
543
+ border-color: #484849 ;
544
+ }
541
545
  /********************* End *************************/
@@ -17,7 +17,8 @@
17
17
  .rem(padding, 0, 16);
18
18
  .rem(height, 36);
19
19
  color: inherit;
20
- border: 0.5px solid #e5e6eb;
20
+ border: 0.5px solid;
21
+ .use-var(border-color, line-color);
21
22
  display: flex;
22
23
  justify-content: center;
23
24
  align-items: center;
@@ -48,5 +49,12 @@
48
49
  .use-var(color, dark-sub-info-font-color);
49
50
  }
50
51
  }
52
+ #demo-notify {
53
+ .notify-custom-content {
54
+ @{arco-dark-mode-selector} & {
55
+ .use-var(border-color, dark-line-color);
56
+ }
57
+ }
58
+ }
51
59
  }
52
60
  /********************* End *************************/
@@ -605,9 +605,9 @@
605
605
  justify-content: center;
606
606
  width: 64px;
607
607
  height: 24px;
608
- background: #fff;
608
+ background-color: #FFFFFF ;
609
609
  border-radius: 40px;
610
- color: #1d2129;
610
+ color: #1d2129 ;
611
611
  font-size: 12px;
612
612
  }
613
613
  #demo-popover .custom-demo-wrapper {
@@ -642,4 +642,8 @@
642
642
  background: #2e2e30 ;
643
643
  color: #929293 ;
644
644
  }
645
+ .arco-theme-dark #demo-popover .suffix-demo-wrapper .custom-suffix-btn {
646
+ background-color: #232324 ;
647
+ color: #f6f6f6 ;
648
+ }
645
649
  /********************* End *************************/
@@ -78,9 +78,9 @@
78
78
  justify-content: center;
79
79
  width: 64px;
80
80
  height: 24px;
81
- background: #fff;
81
+ .use-var(background-color, container-background-color);
82
82
  border-radius: 40px;
83
- color: #1d2129;
83
+ .use-var(color, font-color);
84
84
  font-size: 12px;
85
85
  }
86
86
  }
@@ -121,5 +121,15 @@
121
121
  .use-var(color, dark-sub-info-font-color);
122
122
  }
123
123
  }
124
+ #demo-popover {
125
+ .suffix-demo-wrapper {
126
+ .custom-suffix-btn {
127
+ @{arco-dark-mode-selector} & {
128
+ .use-var(background-color, dark-container-background-color);
129
+ .use-var(color, dark-font-color);
130
+ }
131
+ }
132
+ }
133
+ }
124
134
  }
125
135
  /********************* End *************************/
@@ -496,6 +496,7 @@
496
496
  */
497
497
  #demo-tabs .arcodesign-mobile-demo-content {
498
498
  padding: 0;
499
+ background: #FFFFFF ;
499
500
  }
500
501
  #demo-tabs .demo-tab-content {
501
502
  display: -webkit-box;
@@ -551,8 +552,8 @@
551
552
  transform: rotate(180deg);
552
553
  }
553
554
  .arco-theme-dark #demo-tabs .demo-tabs-add-extra {
554
- background: -webkit-linear-gradient(right, #232324 66.04%, rgba(35, 35, 36, 0) 105%);
555
- background: linear-gradient(270deg, #232324 66.04%, rgba(35, 35, 36, 0) 105%);
555
+ background: -webkit-linear-gradient(right, #17171A 66.04%, rgba(23, 23, 26, 0) 105%);
556
+ background: linear-gradient(270deg, #17171A 66.04%, rgba(23, 23, 26, 0) 105%);
556
557
  }
557
558
  #demo-tabs .demo-tab-custom-bar .arco-tab-cell-container-wrap {
558
559
  height: 1.52rem;
@@ -603,6 +604,9 @@
603
604
  background: #2e2e30 ;
604
605
  color: #929293 ;
605
606
  }
607
+ .arco-theme-dark #demo-tabs .arcodesign-mobile-demo-content {
608
+ background: #17171A ;
609
+ }
606
610
  .arco-theme-dark #demo-tabs .demo-tab-content {
607
611
  color: #929293 ;
608
612
  }
@@ -4,6 +4,7 @@
4
4
 
5
5
  .arcodesign-mobile-demo-content {
6
6
  padding: 0;
7
+ .use-var(background, background-color);
7
8
  }
8
9
 
9
10
  .demo-tab-content {
@@ -41,7 +42,7 @@
41
42
  transform: rotate(180deg);
42
43
  }
43
44
  .arco-theme-dark & {
44
- background: linear-gradient(270deg, @dark-container-background-color 66.04%, rgba(@dark-container-background-color, 0) 105%);
45
+ background: linear-gradient(270deg, @dark-background-color 66.04%, rgba(@dark-background-color, 0) 105%);
45
46
  }
46
47
  }
47
48
 
@@ -118,6 +119,11 @@
118
119
  }
119
120
  }
120
121
  #demo-tabs {
122
+ .arcodesign-mobile-demo-content {
123
+ @{arco-dark-mode-selector} & {
124
+ .use-var(background, dark-background-color);
125
+ }
126
+ }
121
127
  .demo-tab-content {
122
128
  @{arco-dark-mode-selector} & {
123
129
  .use-var(color, dark-sub-info-font-color);
@@ -1052,7 +1052,7 @@
1052
1052
  color: #f6f6f6 ;
1053
1053
  }
1054
1054
  .arco-theme-dark .arco-tab-cell-container-wrap {
1055
- background: #232324 ;
1055
+ background: #17171A ;
1056
1056
  }
1057
1057
  .arco-theme-dark .arco-tab-cell-container-inner.has-divider.pos-top {
1058
1058
  box-shadow: 0 -1PX 0 0 #484849 inset;