@arco-design/mobile-react 2.27.4 → 2.28.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.
- package/CHANGELOG.md +33 -0
- package/README.en-US.md +2 -2
- package/README.md +2 -2
- package/cjs/_helpers/hooks.d.ts +1 -0
- package/cjs/_helpers/hooks.js +44 -28
- package/cjs/action-sheet/index.d.ts +2 -2
- package/cjs/badge/index.js +2 -1
- package/cjs/badge/style/css/index.css +12 -0
- package/cjs/badge/style/index.less +3 -3
- package/cjs/button/style/css/index.css +4 -0
- package/cjs/button/style/index.less +1 -1
- package/cjs/cell/style/css/index.css +7 -0
- package/cjs/cell/style/index.less +4 -1
- package/cjs/checkbox/style/css/index.css +13 -0
- package/cjs/checkbox/style/index.less +3 -3
- package/cjs/collapse/collapse.js +12 -6
- package/cjs/dialog/index.d.ts +2 -2
- package/cjs/form/style/css/index.css +16 -0
- package/cjs/form/style/index.less +4 -4
- package/cjs/image-preview/index.d.ts +2 -2
- package/cjs/image-preview/index.js +4 -2
- package/cjs/image-preview/style/css/index.css +3 -0
- package/cjs/image-preview/style/index.less +4 -0
- package/cjs/index.d.ts +12 -12
- package/cjs/index.js +46 -46
- package/cjs/load-more/index.d.ts +5 -0
- package/cjs/load-more/index.js +2 -1
- package/cjs/masking/index.d.ts +2 -2
- package/cjs/masking/index.js +4 -2
- package/cjs/notify/index.d.ts +8 -8
- package/cjs/popover/popover.js +10 -2
- package/cjs/popup/index.d.ts +2 -2
- package/cjs/popup-swiper/index.d.ts +2 -2
- package/cjs/radio/style/css/index.css +8 -0
- package/cjs/radio/style/index.less +2 -2
- package/cjs/rate/index.js +5 -3
- package/cjs/rate/style/css/index.css +4 -0
- package/cjs/rate/style/index.less +4 -0
- package/cjs/slider/hooks/index.d.ts +1 -1
- package/cjs/slider/popover.js +6 -2
- package/cjs/stepper/hooks/useButtonClick.js +8 -9
- package/cjs/sticky/index.d.ts +5 -0
- package/cjs/sticky/index.js +20 -7
- package/cjs/style.d.ts +13 -13
- package/cjs/style.js +24 -24
- package/cjs/switch/index.js +7 -2
- package/cjs/switch/style/css/index.css +44 -0
- package/cjs/switch/style/index.less +19 -7
- package/cjs/tabs/demo/style/css/mobile.css +11 -0
- package/cjs/tabs/demo/style/mobile.less +5 -1
- package/cjs/tabs/index.js +14 -5
- package/cjs/tabs/style/css/index.css +32 -7
- package/cjs/tabs/style/index.less +9 -14
- package/cjs/tabs/tab-cell-underline.js +14 -5
- package/cjs/tabs/tab-cell.js +15 -7
- package/cjs/tabs/tab-pane.js +4 -3
- package/cjs/tabs/type.d.ts +1 -0
- package/cjs/toast/index.d.ts +12 -12
- package/cjs/toast/index.js +5 -2
- package/dist/index.js +13914 -13836
- package/dist/index.min.js +4 -4
- package/dist/style.css +3366 -3236
- package/dist/style.min.css +1 -1
- package/esm/_helpers/hooks.d.ts +1 -0
- package/esm/_helpers/hooks.js +43 -29
- package/esm/action-sheet/index.d.ts +2 -2
- package/esm/badge/index.js +2 -1
- package/esm/badge/style/css/index.css +12 -0
- package/esm/badge/style/index.less +3 -3
- package/esm/button/style/css/index.css +4 -0
- package/esm/button/style/index.less +1 -1
- package/esm/cell/style/css/index.css +7 -0
- package/esm/cell/style/index.less +4 -1
- package/esm/checkbox/style/css/index.css +13 -0
- package/esm/checkbox/style/index.less +3 -3
- package/esm/collapse/collapse.js +14 -8
- package/esm/dialog/index.d.ts +2 -2
- package/esm/form/style/css/index.css +16 -0
- package/esm/form/style/index.less +4 -4
- package/esm/image-preview/index.d.ts +2 -2
- package/esm/image-preview/index.js +4 -2
- package/esm/image-preview/style/css/index.css +3 -0
- package/esm/image-preview/style/index.less +4 -0
- package/esm/index.d.ts +12 -12
- package/esm/index.js +12 -12
- package/esm/load-more/index.d.ts +5 -0
- package/esm/load-more/index.js +2 -1
- package/esm/masking/index.d.ts +2 -2
- package/esm/masking/index.js +4 -2
- package/esm/notify/index.d.ts +8 -8
- package/esm/popover/popover.js +10 -2
- package/esm/popup/index.d.ts +2 -2
- package/esm/popup-swiper/index.d.ts +2 -2
- package/esm/radio/style/css/index.css +8 -0
- package/esm/radio/style/index.less +2 -2
- package/esm/rate/index.js +5 -3
- package/esm/rate/style/css/index.css +4 -0
- package/esm/rate/style/index.less +4 -0
- package/esm/slider/hooks/index.d.ts +1 -1
- package/esm/slider/popover.js +7 -3
- package/esm/stepper/hooks/useButtonClick.js +8 -9
- package/esm/sticky/index.d.ts +5 -0
- package/esm/sticky/index.js +20 -7
- package/esm/style.d.ts +13 -13
- package/esm/style.js +13 -13
- package/esm/switch/index.js +9 -4
- package/esm/switch/style/css/index.css +44 -0
- package/esm/switch/style/index.less +19 -7
- package/esm/tabs/demo/style/css/mobile.css +11 -0
- package/esm/tabs/demo/style/mobile.less +5 -1
- package/esm/tabs/index.js +16 -7
- package/esm/tabs/style/css/index.css +32 -7
- package/esm/tabs/style/index.less +9 -14
- package/esm/tabs/tab-cell-underline.js +14 -6
- package/esm/tabs/tab-cell.js +15 -8
- package/esm/tabs/tab-pane.js +4 -3
- package/esm/tabs/type.d.ts +1 -0
- package/esm/toast/index.d.ts +12 -12
- package/esm/toast/index.js +5 -2
- package/package.json +3 -3
- package/umd/_helpers/hooks.d.ts +1 -0
- package/umd/_helpers/hooks.js +44 -28
- package/umd/action-sheet/index.d.ts +2 -2
- package/umd/badge/index.js +2 -1
- package/umd/badge/style/css/index.css +12 -0
- package/umd/badge/style/index.less +3 -3
- package/umd/button/style/css/index.css +4 -0
- package/umd/button/style/index.less +1 -1
- package/umd/cell/style/css/index.css +7 -0
- package/umd/cell/style/index.less +4 -1
- package/umd/checkbox/style/css/index.css +13 -0
- package/umd/checkbox/style/index.less +3 -3
- package/umd/collapse/collapse.js +12 -6
- package/umd/dialog/index.d.ts +2 -2
- package/umd/form/style/css/index.css +16 -0
- package/umd/form/style/index.less +4 -4
- package/umd/image-preview/index.d.ts +2 -2
- package/umd/image-preview/index.js +4 -2
- package/umd/image-preview/style/css/index.css +3 -0
- package/umd/image-preview/style/index.less +4 -0
- package/umd/index.d.ts +12 -12
- package/umd/index.js +28 -28
- package/umd/load-more/index.d.ts +5 -0
- package/umd/load-more/index.js +2 -1
- package/umd/masking/index.d.ts +2 -2
- package/umd/masking/index.js +4 -2
- package/umd/notify/index.d.ts +8 -8
- package/umd/popover/popover.js +10 -2
- package/umd/popup/index.d.ts +2 -2
- package/umd/popup-swiper/index.d.ts +2 -2
- package/umd/radio/style/css/index.css +8 -0
- package/umd/radio/style/index.less +2 -2
- package/umd/rate/index.js +5 -3
- package/umd/rate/style/css/index.css +4 -0
- package/umd/rate/style/index.less +4 -0
- package/umd/slider/hooks/index.d.ts +1 -1
- package/umd/slider/popover.js +6 -2
- package/umd/stepper/hooks/useButtonClick.js +8 -9
- package/umd/sticky/index.d.ts +5 -0
- package/umd/sticky/index.js +20 -7
- package/umd/style.d.ts +13 -13
- package/umd/style.js +2 -2
- package/umd/switch/index.js +7 -2
- package/umd/switch/style/css/index.css +44 -0
- package/umd/switch/style/index.less +19 -7
- package/umd/tabs/demo/style/css/mobile.css +11 -0
- package/umd/tabs/demo/style/mobile.less +5 -1
- package/umd/tabs/index.js +14 -5
- package/umd/tabs/style/css/index.css +32 -7
- package/umd/tabs/style/index.less +9 -14
- package/umd/tabs/tab-cell-underline.js +16 -9
- package/umd/tabs/tab-cell.js +17 -11
- package/umd/tabs/tab-pane.js +4 -3
- package/umd/tabs/type.d.ts +1 -0
- package/umd/toast/index.d.ts +12 -12
- package/umd/toast/index.js +5 -2
package/esm/style.js
CHANGED
@@ -1,35 +1,32 @@
|
|
1
1
|
import '../style/public.less';
|
2
|
-
import './
|
2
|
+
import './tabs/style';
|
3
|
+
import './sticky/style';
|
4
|
+
import './load-more/style';
|
5
|
+
import './cell/style';
|
3
6
|
import './action-sheet/style';
|
4
7
|
import './avatar/style';
|
5
8
|
import './badge/style';
|
9
|
+
import './button/style';
|
6
10
|
import './carousel/style';
|
7
|
-
import './cell/style';
|
8
11
|
import './checkbox/style';
|
9
12
|
import './circle-progress/style';
|
10
13
|
import './collapse/style';
|
11
14
|
import './context-provider/style';
|
12
15
|
import './count-down/style';
|
13
16
|
import './date-picker/style';
|
14
|
-
import './divider/style';
|
15
17
|
import './dialog/style';
|
18
|
+
import './divider/style';
|
16
19
|
import './dropdown/style';
|
17
20
|
import './dropdown-menu/style';
|
18
21
|
import './ellipsis/style';
|
19
22
|
import './form/style';
|
20
|
-
import './input/style';
|
21
|
-
import './textarea/style';
|
22
|
-
import './radio/style';
|
23
|
-
import './image-picker/style';
|
24
|
-
import './rate/style';
|
25
|
-
import './slider/style';
|
26
23
|
import './grid/style';
|
27
24
|
import './image/style';
|
28
|
-
import './
|
25
|
+
import './image-picker/style';
|
29
26
|
import './image-preview/style';
|
30
27
|
import './index-bar/style';
|
28
|
+
import './input/style';
|
31
29
|
import './keyboard/style';
|
32
|
-
import './load-more/style';
|
33
30
|
import './loading/style';
|
34
31
|
import './masking/style';
|
35
32
|
import './nav-bar/style';
|
@@ -44,15 +41,18 @@ import './popup-swiper/style';
|
|
44
41
|
import './portal/style';
|
45
42
|
import './progress/style';
|
46
43
|
import './pull-refresh/style';
|
44
|
+
import './radio/style';
|
45
|
+
import './rate/style';
|
47
46
|
import './search-bar/style';
|
47
|
+
import './show-monitor/style';
|
48
|
+
import './slider/style';
|
48
49
|
import './stepper/style';
|
49
50
|
import './steps/style';
|
50
|
-
import './sticky/style';
|
51
51
|
import './swipe-action/style';
|
52
52
|
import './swipe-load/style';
|
53
53
|
import './switch/style';
|
54
54
|
import './tab-bar/style';
|
55
|
-
import './tabs/style';
|
56
55
|
import './tag/style';
|
56
|
+
import './textarea/style';
|
57
57
|
import './toast/style';
|
58
58
|
import './transition/style';
|
package/esm/switch/index.js
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
-
import React, { useState, useEffect, forwardRef, useImperativeHandle, useRef } from 'react';
|
1
|
+
import React, { useState, useEffect, forwardRef, useImperativeHandle, useRef, useContext } from 'react';
|
2
2
|
import { cls, componentWrapper } from '@arco-design/mobile-utils';
|
3
|
-
import { ContextLayout } from '../context-provider';
|
3
|
+
import { ContextLayout, GlobalContext } from '../context-provider';
|
4
4
|
import { useSystem } from '../_helpers';
|
5
5
|
var Switch = /*#__PURE__*/forwardRef(function (props, ref) {
|
6
|
+
var _useContext = useContext(GlobalContext),
|
7
|
+
useRtl = _useContext.useRtl;
|
8
|
+
|
6
9
|
var system = useSystem();
|
7
10
|
var className = props.className,
|
8
11
|
style = props.style,
|
@@ -70,13 +73,15 @@ var Switch = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
70
73
|
|
71
74
|
var touchEndX = e.changedTouches && e.changedTouches[0] ? e.changedTouches[0].clientX : 0;
|
72
75
|
var distance = touchEndX - touchStartX;
|
76
|
+
var swipeRight = useRtl ? distance < 0 : distance > 0;
|
77
|
+
var swipeLeft = useRtl ? distance > 0 : distance < 0;
|
73
78
|
var newChecked = false; // 右滑打开
|
74
79
|
// @en Swipe right to open
|
75
80
|
|
76
|
-
if (
|
81
|
+
if (swipeRight) {
|
77
82
|
newChecked = true; // 左滑关闭
|
78
83
|
// @en Swipe left to close
|
79
|
-
} else if (
|
84
|
+
} else if (swipeLeft) {
|
80
85
|
newChecked = false; // 点击时取反
|
81
86
|
// @en Invert on clicking
|
82
87
|
} else {
|
@@ -44,15 +44,31 @@
|
|
44
44
|
right: auto;
|
45
45
|
left: 5PX ;
|
46
46
|
}
|
47
|
+
[dir="rtl"] .arco-switch.type-android.checked .arco-switch-text {
|
48
|
+
right: initial;
|
49
|
+
left: auto;
|
50
|
+
}
|
51
|
+
[dir="rtl"] .arco-switch.type-android.checked .arco-switch-text {
|
52
|
+
left: initial;
|
53
|
+
right: 5PX ;
|
54
|
+
}
|
47
55
|
.arco-switch.type-android.checked .arco-switch-inner {
|
48
56
|
-webkit-transform: translateX(16PX) ;
|
49
57
|
transform: translateX(16PX) ;
|
50
58
|
}
|
59
|
+
[dir="rtl"] .arco-switch.type-android.checked .arco-switch-inner {
|
60
|
+
-webkit-transform: rotate(180deg) translateX(16PX) ;
|
61
|
+
transform: rotate(180deg) translateX(16PX) ;
|
62
|
+
}
|
51
63
|
.arco-switch.type-android .arco-switch-inner {
|
52
64
|
width: 20PX ;
|
53
65
|
height: 20PX ;
|
54
66
|
box-shadow: 0 2PX 4PX 0 rgba(0, 0, 0, 0.08) ;
|
55
67
|
}
|
68
|
+
[dir="rtl"] .arco-switch.type-android .arco-switch-inner {
|
69
|
+
-webkit-transform: rotate(180deg);
|
70
|
+
transform: rotate(180deg);
|
71
|
+
}
|
56
72
|
.arco-switch.type-android.disabled.checked {
|
57
73
|
background-color: #94bfff ;
|
58
74
|
}
|
@@ -63,6 +79,10 @@
|
|
63
79
|
font-size: 12PX ;
|
64
80
|
right: 5PX ;
|
65
81
|
}
|
82
|
+
[dir="rtl"] .arco-switch.type-android .arco-switch-text {
|
83
|
+
right: initial;
|
84
|
+
left: 5PX ;
|
85
|
+
}
|
66
86
|
.arco-switch.type-ios {
|
67
87
|
width: 1.02rem ;
|
68
88
|
height: 0.62rem ;
|
@@ -83,11 +103,23 @@
|
|
83
103
|
right: auto;
|
84
104
|
left: 0.12rem ;
|
85
105
|
}
|
106
|
+
[dir="rtl"] .arco-switch.type-ios.checked .arco-switch-text {
|
107
|
+
right: initial;
|
108
|
+
left: auto;
|
109
|
+
}
|
110
|
+
[dir="rtl"] .arco-switch.type-ios.checked .arco-switch-text {
|
111
|
+
left: initial;
|
112
|
+
right: 0.12rem ;
|
113
|
+
}
|
86
114
|
.arco-switch.type-ios.checked .arco-switch-inner {
|
87
115
|
-webkit-transform: translateX(0.4rem) ;
|
88
116
|
transform: translateX(0.4rem) ;
|
89
117
|
box-shadow: 0 3PX 2PX 0 rgba(0, 0, 0, 0.12) ;
|
90
118
|
}
|
119
|
+
[dir="rtl"] .arco-switch.type-ios.checked .arco-switch-inner {
|
120
|
+
-webkit-transform: rotate(180deg) translateX(0.4rem) ;
|
121
|
+
transform: rotate(180deg) translateX(0.4rem) ;
|
122
|
+
}
|
91
123
|
.arco-switch.type-ios.disabled.checked {
|
92
124
|
opacity: 0.3 ;
|
93
125
|
}
|
@@ -95,6 +127,10 @@
|
|
95
127
|
font-size: 0.28rem ;
|
96
128
|
right: 0.12rem ;
|
97
129
|
}
|
130
|
+
[dir="rtl"] .arco-switch.type-ios .arco-switch-text {
|
131
|
+
right: initial;
|
132
|
+
left: 0.12rem ;
|
133
|
+
}
|
98
134
|
.arco-switch.type-ios .arco-switch-inner {
|
99
135
|
width: 0.54rem ;
|
100
136
|
height: 0.54rem ;
|
@@ -136,6 +172,10 @@
|
|
136
172
|
border-radius: 150%;
|
137
173
|
}
|
138
174
|
}
|
175
|
+
[dir="rtl"] .arco-switch.type-ios .arco-switch-inner {
|
176
|
+
-webkit-transform: rotate(180deg);
|
177
|
+
transform: rotate(180deg);
|
178
|
+
}
|
139
179
|
.arco-switch.type-ios.disabled.checked {
|
140
180
|
background-color: #4DD865 ;
|
141
181
|
}
|
@@ -169,6 +209,10 @@
|
|
169
209
|
-webkit-transition: all 0.2s ;
|
170
210
|
transition: all 0.2s ;
|
171
211
|
}
|
212
|
+
[dir="rtl"] .arco-switch-inner {
|
213
|
+
left: initial;
|
214
|
+
right: 0;
|
215
|
+
}
|
172
216
|
.fully .arco-switch-inner {
|
173
217
|
border-radius: 50% ;
|
174
218
|
}
|
@@ -33,17 +33,23 @@
|
|
33
33
|
&.checked {
|
34
34
|
.use-var(background-color, switch-android-checked-background);
|
35
35
|
.@{prefix}-switch-text {
|
36
|
-
right
|
37
|
-
.use-var(left, switch-android-text-gap-size);
|
36
|
+
.set-prop-with-rtl(right, auto);
|
37
|
+
.use-var-with-rtl(left, switch-android-text-gap-size);
|
38
38
|
}
|
39
39
|
.@{prefix}-switch-inner {
|
40
40
|
.use-var(transform, switch-android-checked-inner-transform);
|
41
|
+
[dir="rtl"] & {
|
42
|
+
.use-var(transform, switch-android-checked-inner-transform, "rotate(180deg)");
|
43
|
+
}
|
41
44
|
}
|
42
45
|
}
|
43
46
|
.@{prefix}-switch-inner {
|
44
47
|
.use-var(width, switch-android-inner-diameter-size);
|
45
48
|
.use-var(height, switch-android-inner-diameter-size);
|
46
49
|
.use-var(box-shadow, switch-android-inner-box-shadow);
|
50
|
+
[dir="rtl"] & {
|
51
|
+
transform: rotate(180deg);
|
52
|
+
}
|
47
53
|
}
|
48
54
|
|
49
55
|
&.disabled {
|
@@ -58,7 +64,7 @@
|
|
58
64
|
}
|
59
65
|
.@{prefix}-switch-text {
|
60
66
|
.use-var(font-size, switch-android-text-font-size);
|
61
|
-
.use-var(right, switch-android-text-gap-size);
|
67
|
+
.use-var-with-rtl(right, switch-android-text-gap-size);
|
62
68
|
}
|
63
69
|
}
|
64
70
|
|
@@ -80,12 +86,15 @@
|
|
80
86
|
&.checked {
|
81
87
|
.use-var(background-color, switch-ios-checked-background);
|
82
88
|
.@{prefix}-switch-text {
|
83
|
-
right
|
84
|
-
.use-var(left, switch-ios-text-gap-size);
|
89
|
+
.set-prop-with-rtl(right, auto);
|
90
|
+
.use-var-with-rtl(left, switch-ios-text-gap-size);
|
85
91
|
}
|
86
92
|
.@{prefix}-switch-inner {
|
87
93
|
.use-var(transform, switch-ios-checked-inner-transform);
|
88
94
|
.use-var(box-shadow, switch-ios-inner-box-shadow);
|
95
|
+
[dir="rtl"] & {
|
96
|
+
.use-var(transform, switch-ios-checked-inner-transform, "rotate(180deg)");
|
97
|
+
}
|
89
98
|
}
|
90
99
|
}
|
91
100
|
|
@@ -94,12 +103,15 @@
|
|
94
103
|
}
|
95
104
|
.@{prefix}-switch-text {
|
96
105
|
.use-var(font-size, switch-ios-text-font-size);
|
97
|
-
.use-var(right, switch-ios-text-gap-size);
|
106
|
+
.use-var-with-rtl(right, switch-ios-text-gap-size);
|
98
107
|
}
|
99
108
|
.@{prefix}-switch-inner {
|
100
109
|
.use-var(width, switch-ios-inner-diameter-size);
|
101
110
|
.use-var(height, switch-ios-inner-diameter-size);
|
102
111
|
.onepx-border-var(all, switch-ios-inner-border-color, 50%);
|
112
|
+
[dir="rtl"] & {
|
113
|
+
transform: rotate(180deg);
|
114
|
+
}
|
103
115
|
}
|
104
116
|
|
105
117
|
&.disabled {
|
@@ -127,7 +139,7 @@
|
|
127
139
|
|
128
140
|
&-inner {
|
129
141
|
position: relative;
|
130
|
-
left
|
142
|
+
.set-prop-with-rtl(left, 0);
|
131
143
|
top: 0;
|
132
144
|
display: flex;
|
133
145
|
align-items: center;
|
@@ -43,6 +43,17 @@
|
|
43
43
|
justify-content: flex-end;
|
44
44
|
font-weight: bold;
|
45
45
|
}
|
46
|
+
[dir="rtl"] #demo-tabs .demo-tabs-add-extra {
|
47
|
+
right: initial;
|
48
|
+
left: 0;
|
49
|
+
}
|
50
|
+
[dir="rtl"] #demo-tabs .demo-tabs-add-extra {
|
51
|
+
-webkit-box-pack: start;
|
52
|
+
-webkit-justify-content: flex-start;
|
53
|
+
justify-content: flex-start;
|
54
|
+
-webkit-transform: rotate(180deg);
|
55
|
+
transform: rotate(180deg);
|
56
|
+
}
|
46
57
|
#demo-tabs .demo-tab-custom-bar .arco-tab-cell-container-wrap {
|
47
58
|
height: 1.52rem;
|
48
59
|
}
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
.demo-tabs-add-extra {
|
26
26
|
position: absolute;
|
27
|
-
right
|
27
|
+
.set-prop-with-rtl(right, 0);
|
28
28
|
top: 0;
|
29
29
|
background: linear-gradient(270deg, #fff 66.04%, rgba(255, 255, 255, 0) 105%);
|
30
30
|
.rem(width, 64);
|
@@ -36,6 +36,10 @@
|
|
36
36
|
align-items: center;
|
37
37
|
justify-content: flex-end;
|
38
38
|
font-weight: bold;
|
39
|
+
[dir="rtl"] & {
|
40
|
+
justify-content: flex-start;
|
41
|
+
transform: rotate(180deg);
|
42
|
+
}
|
39
43
|
}
|
40
44
|
|
41
45
|
.demo-tab-custom-bar {
|
package/esm/tabs/index.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
|
-
import React, { useRef, forwardRef, useImperativeHandle, useState, useEffect, useCallback } from 'react';
|
2
|
+
import React, { useRef, forwardRef, useImperativeHandle, useState, useEffect, useCallback, useContext } from 'react';
|
3
3
|
import { cls, nextTick } from '@arco-design/mobile-utils';
|
4
|
-
import { ContextLayout } from '../context-provider';
|
4
|
+
import { ContextLayout, GlobalContext } from '../context-provider';
|
5
5
|
import TabCell from './tab-cell';
|
6
6
|
import TabPane from './tab-pane';
|
7
7
|
import { useRefState, useListenResize, useUpdateEffect, useSwiperInnerScroll, useSystem } from '../_helpers';
|
@@ -124,6 +124,10 @@ var Tabs = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
124
124
|
tabBarStopPropagation = _props$tabBarStopProp === void 0 ? true : _props$tabBarStopProp,
|
125
125
|
_props$swipeEnergySav = props.swipeEnergySaving,
|
126
126
|
swipeEnergySaving = _props$swipeEnergySav === void 0 ? false : _props$swipeEnergySav;
|
127
|
+
|
128
|
+
var _useContext = useContext(GlobalContext),
|
129
|
+
useRtl = _useContext.useRtl;
|
130
|
+
|
127
131
|
var domRef = useRef(null);
|
128
132
|
var cellRef = useRef(null);
|
129
133
|
var paneRef = useRef(null);
|
@@ -175,6 +179,8 @@ var Tabs = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
175
179
|
var allPanes = getAllPanes();
|
176
180
|
var tabDirection = ['top', 'bottom'].indexOf(tabBarPosition) !== -1 ? 'vertical' : 'horizontal';
|
177
181
|
var canSwipe = mode === 'swipe' && !disabled && swipeable && tabDirection === 'vertical' && tabs.length > 1;
|
182
|
+
var horizontalUseRtl = tabDirection === 'vertical' && useRtl;
|
183
|
+
var rtlRatio = horizontalUseRtl ? -1 : 1;
|
178
184
|
useImperativeHandle(ref, function () {
|
179
185
|
return {
|
180
186
|
dom: domRef.current,
|
@@ -294,6 +300,7 @@ var Tabs = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
294
300
|
var posDisY = touchMoveY - touchStartYRef.current;
|
295
301
|
var absDisX = Math.abs(posDisX);
|
296
302
|
var absDisY = Math.abs(posDisY);
|
303
|
+
var comparedDis = posDisX * rtlRatio;
|
297
304
|
|
298
305
|
if (scrollingRef.current === null) {
|
299
306
|
scrollingRef.current = absDisX < absDisY;
|
@@ -311,10 +318,10 @@ var Tabs = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
311
318
|
return;
|
312
319
|
}
|
313
320
|
|
314
|
-
if (activeIndexRef.current === 0 &&
|
321
|
+
if (activeIndexRef.current === 0 && comparedDis > 0 || activeIndexRef.current === tabs.length - 1 && comparedDis < 0) {
|
315
322
|
if (!touchStoppedRef.current && absDisX > stopTouchThreshold) {
|
316
323
|
touchStoppedRef.current = true;
|
317
|
-
onTouchStopped && onTouchStopped(
|
324
|
+
onTouchStopped && onTouchStopped(comparedDis >= 0 ? -1 : 1);
|
318
325
|
}
|
319
326
|
|
320
327
|
setDistance(0);
|
@@ -364,10 +371,11 @@ var Tabs = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
364
371
|
var index = activeIndexRef.current;
|
365
372
|
var needJump = Math.abs(dis) > maxSlice && Math.abs(dis) > distanceToChangeTab || Math.abs(speed) > speedToChangeTab;
|
366
373
|
var newIndex = index;
|
374
|
+
var comparedDis = dis * rtlRatio;
|
367
375
|
|
368
|
-
if (
|
376
|
+
if (comparedDis > 0 && needJump) {
|
369
377
|
newIndex = index - 1;
|
370
|
-
} else if (
|
378
|
+
} else if (comparedDis < 0 && needJump) {
|
371
379
|
newIndex = index + 1;
|
372
380
|
}
|
373
381
|
|
@@ -511,7 +519,8 @@ var Tabs = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
511
519
|
tabPaneExtra: tabPaneExtra,
|
512
520
|
autoHeight: autoHeight,
|
513
521
|
onScroll: onScroll,
|
514
|
-
swipeEnergySaving: swipeEnergySaving
|
522
|
+
swipeEnergySaving: swipeEnergySaving,
|
523
|
+
rtlRatio: rtlRatio
|
515
524
|
}, commonProps)));
|
516
525
|
});
|
517
526
|
});
|
@@ -368,11 +368,12 @@
|
|
368
368
|
-webkit-flex: 1;
|
369
369
|
flex: 1;
|
370
370
|
}
|
371
|
-
.arco-tab-cell.vertical:not(.custom).line {
|
371
|
+
.arco-tab-cell.vertical:not(.custom).line:not(.last) {
|
372
372
|
margin-right: 0.8rem ;
|
373
373
|
}
|
374
|
-
.arco-tab-cell.vertical:not(.custom).line.last {
|
375
|
-
margin-right:
|
374
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).line:not(.last) {
|
375
|
+
margin-right: initial;
|
376
|
+
margin-left: 0.8rem ;
|
376
377
|
}
|
377
378
|
.arco-tab-cell.vertical:not(.custom).line.active,
|
378
379
|
.arco-tab-cell.vertical:not(.custom).line-divide.active {
|
@@ -407,29 +408,53 @@
|
|
407
408
|
.arco-tab-cell.vertical:not(.custom).card:not(:last-child) {
|
408
409
|
border-right: 1PX solid #165dff ;
|
409
410
|
}
|
411
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).card:not(:last-child) {
|
412
|
+
border-right: initial;
|
413
|
+
border-left: 1PX solid #165dff ;
|
414
|
+
}
|
410
415
|
.arco-tab-cell.vertical:not(.custom).card:first-of-type {
|
411
416
|
border-top-left-radius: 2PX ;
|
412
417
|
border-bottom-left-radius: 2PX ;
|
413
418
|
}
|
419
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).card:first-of-type {
|
420
|
+
border-top-left-radius: initial;
|
421
|
+
border-top-right-radius: 2PX ;
|
422
|
+
}
|
423
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).card:first-of-type {
|
424
|
+
border-bottom-left-radius: initial;
|
425
|
+
border-bottom-right-radius: 2PX ;
|
426
|
+
}
|
414
427
|
.arco-tab-cell.vertical:not(.custom).card:last-of-type {
|
415
428
|
border-top-right-radius: 2PX ;
|
416
429
|
border-bottom-right-radius: 2PX ;
|
417
430
|
}
|
431
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).card:last-of-type {
|
432
|
+
border-top-right-radius: initial;
|
433
|
+
border-top-left-radius: 2PX ;
|
434
|
+
}
|
435
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).card:last-of-type {
|
436
|
+
border-bottom-right-radius: initial;
|
437
|
+
border-bottom-left-radius: 2PX ;
|
438
|
+
}
|
418
439
|
.arco-tab-cell.vertical:not(.custom).card.android,
|
419
440
|
.arco-tab-cell.vertical:not(.custom).tag-divide.android {
|
420
441
|
padding-top: 0.04rem;
|
421
442
|
}
|
422
443
|
.arco-tab-cell.vertical:not(.custom).tag,
|
423
444
|
.arco-tab-cell.vertical:not(.custom).tag-divide {
|
424
|
-
margin-right: 0.32rem ;
|
425
445
|
padding: 0 0.32rem ;
|
426
446
|
border-radius: 2rem;
|
427
447
|
background: #f7f8fA ;
|
428
448
|
color: #1d2129 ;
|
429
449
|
}
|
430
|
-
.arco-tab-cell.vertical:not(.custom).tag.last,
|
431
|
-
.arco-tab-cell.vertical:not(.custom).tag-divide.last {
|
432
|
-
margin-right:
|
450
|
+
.arco-tab-cell.vertical:not(.custom).tag:not(.last),
|
451
|
+
.arco-tab-cell.vertical:not(.custom).tag-divide:not(.last) {
|
452
|
+
margin-right: 0.32rem ;
|
453
|
+
}
|
454
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).tag:not(.last),
|
455
|
+
[dir="rtl"] .arco-tab-cell.vertical:not(.custom).tag-divide:not(.last) {
|
456
|
+
margin-right: initial;
|
457
|
+
margin-left: 0.32rem ;
|
433
458
|
}
|
434
459
|
.arco-tab-cell.vertical:not(.custom).tag.active,
|
435
460
|
.arco-tab-cell.vertical:not(.custom).tag-divide.active {
|
@@ -310,12 +310,8 @@
|
|
310
310
|
|
311
311
|
&:not(.custom) {
|
312
312
|
|
313
|
-
&.line {
|
314
|
-
.use-var(margin-right, tabs-tab-bar-line-gutter);
|
315
|
-
|
316
|
-
&.last {
|
317
|
-
margin-right: 0;
|
318
|
-
}
|
313
|
+
&.line:not(.last) {
|
314
|
+
.use-var-with-rtl(margin-right, tabs-tab-bar-line-gutter);
|
319
315
|
}
|
320
316
|
|
321
317
|
&.line,
|
@@ -337,17 +333,17 @@
|
|
337
333
|
}
|
338
334
|
|
339
335
|
&:not(:last-child) {
|
340
|
-
.use-var(border-right, tabs-tab-bar-card-color, 1PX solid);
|
336
|
+
.use-var-with-rtl(border-right, tabs-tab-bar-card-color, 1PX solid);
|
341
337
|
}
|
342
338
|
|
343
339
|
&:first-of-type {
|
344
|
-
.use-var(border-top-left-radius, tabs-tab-bar-card-border-radius);
|
345
|
-
.use-var(border-bottom-left-radius, tabs-tab-bar-card-border-radius);
|
340
|
+
.use-var-with-rtl(border-top-left-radius, tabs-tab-bar-card-border-radius);
|
341
|
+
.use-var-with-rtl(border-bottom-left-radius, tabs-tab-bar-card-border-radius);
|
346
342
|
}
|
347
343
|
|
348
344
|
&:last-of-type {
|
349
|
-
.use-var(border-top-right-radius, tabs-tab-bar-card-border-radius);
|
350
|
-
.use-var(border-bottom-right-radius, tabs-tab-bar-card-border-radius);
|
345
|
+
.use-var-with-rtl(border-top-right-radius, tabs-tab-bar-card-border-radius);
|
346
|
+
.use-var-with-rtl(border-bottom-right-radius, tabs-tab-bar-card-border-radius);
|
351
347
|
}
|
352
348
|
}
|
353
349
|
|
@@ -361,14 +357,13 @@
|
|
361
357
|
|
362
358
|
&.tag,
|
363
359
|
&.tag-divide {
|
364
|
-
.use-var(margin-right, tabs-tab-bar-tag-gutter);
|
365
360
|
.use-var(padding, tabs-tab-bar-tag-padding);
|
366
361
|
.rem(border-radius, 100);
|
367
362
|
.use-var(background, tabs-tab-bar-tag-background);
|
368
363
|
.use-var(color, tabs-tab-bar-tag-text-color);
|
369
364
|
|
370
|
-
|
371
|
-
margin-right
|
365
|
+
&:not(.last) {
|
366
|
+
.use-var-with-rtl(margin-right, tabs-tab-bar-tag-gutter);
|
372
367
|
}
|
373
368
|
|
374
369
|
&.active {
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
|
-
import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
2
|
+
import React, { forwardRef, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
3
3
|
import { addCssKeyframes, cls, nextTick, removeCssStyleDom } from '@arco-design/mobile-utils';
|
4
4
|
import { getStyleWithVendor, useRefState, useSystem } from '../_helpers';
|
5
|
+
import { GlobalContext } from '../context-provider';
|
5
6
|
var TabCellUnderline = /*#__PURE__*/forwardRef(function (props, ref) {
|
6
7
|
var prefix = props.prefix,
|
7
8
|
useCaterpillar = props.useCaterpillar,
|
@@ -25,6 +26,9 @@ var TabCellUnderline = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
25
26
|
getTabRect = props.getTabRect,
|
26
27
|
getTabCenterLeft = props.getTabCenterLeft;
|
27
28
|
|
29
|
+
var _useContext = useContext(GlobalContext),
|
30
|
+
useRtl = _useContext.useRtl;
|
31
|
+
|
28
32
|
var _useState = useState({}),
|
29
33
|
underlineStyle = _useState[0],
|
30
34
|
setUnderlineStyle = _useState[1];
|
@@ -44,6 +48,7 @@ var TabCellUnderline = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
44
48
|
var isVertical = tabDirection === 'vertical';
|
45
49
|
var maxScaleWithDefault = caterpillarMaxScale || 2;
|
46
50
|
var translateZStr = translateZ ? ' translateZ(0)' : '';
|
51
|
+
var rtlRatio = isVertical && useRtl ? -1 : 1;
|
47
52
|
useImperativeHandle(ref, function () {
|
48
53
|
return {
|
49
54
|
setCaterpillarAnimate: setCaterpillarAnimate,
|
@@ -115,11 +120,13 @@ var TabCellUnderline = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
115
120
|
}
|
116
121
|
|
117
122
|
function getDescIndex() {
|
118
|
-
|
123
|
+
var comparedDis = distance * rtlRatio;
|
124
|
+
|
125
|
+
if (comparedDis > 0) {
|
119
126
|
return activeIndex - 1;
|
120
127
|
}
|
121
128
|
|
122
|
-
if (
|
129
|
+
if (comparedDis < 0) {
|
123
130
|
return activeIndex + 1;
|
124
131
|
}
|
125
132
|
|
@@ -141,7 +148,8 @@ var TabCellUnderline = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
141
148
|
var currentLeft = getLineLeft(activeIndex);
|
142
149
|
var descIndex = getDescIndex();
|
143
150
|
var descLeft = getLineLeft(descIndex);
|
144
|
-
var
|
151
|
+
var comparedDis = distance * rtlRatio;
|
152
|
+
var moveRatio = wrapWidth ? comparedDis / wrapWidth : 0;
|
145
153
|
var leftOffset = moveRatio * (currentLeft - descLeft);
|
146
154
|
var direc = isVertical ? 'X' : 'Y';
|
147
155
|
var transStyle = useCaterpillar && !jumpingDis && !underlineAdaptive ? caterpillarProperty === 'size' ? (_ref = {}, _ref[isVertical ? 'width' : 'height'] = 100 * getLineScale(moveRatio) + "%", _ref.willChange = 'width', _ref) : {
|
@@ -156,7 +164,7 @@ var TabCellUnderline = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
156
164
|
var currentWidth = getLineWidth(activeIndex);
|
157
165
|
var descWidth = getLineWidth(descIndex);
|
158
166
|
var widthOffset = moveRatio * (currentWidth - descWidth);
|
159
|
-
adaptiveStyle = (_adaptiveStyle = {}, _adaptiveStyle[isVertical ? 'width' : 'height'] =
|
167
|
+
adaptiveStyle = (_adaptiveStyle = {}, _adaptiveStyle[isVertical ? 'width' : 'height'] = comparedDis > 0 ? currentWidth - widthOffset : currentWidth + widthOffset, _adaptiveStyle.willChange = 'width', _adaptiveStyle);
|
160
168
|
adaptiveOuterStyle = isVertical ? {
|
161
169
|
width: 'auto'
|
162
170
|
} : {
|
@@ -173,7 +181,7 @@ var TabCellUnderline = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
173
181
|
};
|
174
182
|
return {
|
175
183
|
outer: _extends({
|
176
|
-
transform: "translate" + direc + "(" + (
|
184
|
+
transform: "translate" + direc + "(" + (comparedDis > 0 ? currentLeft - leftOffset : currentLeft + leftOffset) + "px)" + translateZStr
|
177
185
|
}, outerSize, adaptiveOuterStyle),
|
178
186
|
inner: _extends({}, transStyle, adaptiveStyle)
|
179
187
|
};
|
package/esm/tabs/tab-cell.js
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
|
-
import React, { useRef, forwardRef, useImperativeHandle, useState, useEffect } from 'react';
|
2
|
+
import React, { useRef, forwardRef, useImperativeHandle, useState, useEffect, useContext } from 'react';
|
3
3
|
import { cls, scrollWithAnimation, nextTick } from '@arco-design/mobile-utils';
|
4
4
|
import { useSystem } from '../_helpers';
|
5
5
|
import TabCellUnderline from './tab-cell-underline';
|
6
|
+
import { GlobalContext } from '../context-provider';
|
6
7
|
var TabCell = /*#__PURE__*/forwardRef(function (props, ref) {
|
7
8
|
var tabs = props.tabs,
|
8
9
|
prefixCls = props.prefixCls,
|
@@ -52,6 +53,10 @@ var TabCell = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
52
53
|
translateZ = props.translateZ,
|
53
54
|
tabBarStopPropagation = props.tabBarStopPropagation;
|
54
55
|
var prefix = prefixCls + "-tab-cell";
|
56
|
+
|
57
|
+
var _useContext = useContext(GlobalContext),
|
58
|
+
useRtl = _useContext.useRtl;
|
59
|
+
|
55
60
|
var domRef = useRef(null);
|
56
61
|
var underlineRef = useRef(null);
|
57
62
|
var allCellRectRef = useRef([]);
|
@@ -246,20 +251,22 @@ var TabCell = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
246
251
|
}
|
247
252
|
|
248
253
|
function getCellStyle(index) {
|
254
|
+
var _ref2;
|
255
|
+
|
249
256
|
if (!isVertical) {
|
250
257
|
return {};
|
251
258
|
}
|
252
259
|
|
260
|
+
var marginStart = useRtl ? 'marginRight' : 'marginLeft';
|
261
|
+
var marginEnd = useRtl ? 'marginLeft' : 'marginRight';
|
262
|
+
|
253
263
|
if (index === 0) {
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
};
|
264
|
+
var _ref;
|
265
|
+
|
266
|
+
return _ref = {}, _ref[marginEnd] = cellGutter, _ref[marginStart] = getCellPadding('left'), _ref;
|
258
267
|
}
|
259
268
|
|
260
|
-
return {
|
261
|
-
marginRight: index === tabs.length - 1 ? void 0 : cellGutter
|
262
|
-
};
|
269
|
+
return _ref2 = {}, _ref2[marginEnd] = index === tabs.length - 1 ? void 0 : cellGutter, _ref2;
|
263
270
|
}
|
264
271
|
|
265
272
|
function renderBarItem(tab, index) {
|
package/esm/tabs/tab-pane.js
CHANGED
@@ -36,7 +36,8 @@ var TabPane = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
36
36
|
autoHeight = props.autoHeight,
|
37
37
|
swipeEnergySaving = props.swipeEnergySaving,
|
38
38
|
changeIndex = props.changeIndex,
|
39
|
-
onScroll = props.onScroll
|
39
|
+
onScroll = props.onScroll,
|
40
|
+
rtlRatio = props.rtlRatio;
|
40
41
|
var domRef = useRef(null);
|
41
42
|
var panesRef = useRef([]);
|
42
43
|
var autoScrollingRef = useRef(false);
|
@@ -235,7 +236,7 @@ var TabPane = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
235
236
|
var translateStr = translateZ ? ' translateZ(0)' : '';
|
236
237
|
var sizeStyle = tabDirection === 'vertical' ? {
|
237
238
|
width: 100 * panes.length + "%",
|
238
|
-
transform: "translateX(" + (distance - wrapWidth * activeIndex) + "px)" + translateStr
|
239
|
+
transform: "translateX(" + (distance - wrapWidth * activeIndex * rtlRatio) + "px)" + translateStr
|
239
240
|
} : {
|
240
241
|
height: 100 * panes.length + "%",
|
241
242
|
transform: "translateY(" + (distance - wrapHeight * activeIndex) + "px)" + translateStr
|
@@ -263,7 +264,7 @@ var TabPane = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
263
264
|
|
264
265
|
var translateStr = translateZ ? ' translateZ(0)' : '';
|
265
266
|
var sizeStyle = tabDirection === 'vertical' ? {
|
266
|
-
transform: "translateX(" + (distance - wrapWidth * (activeIndex - index)) + "px)" + translateStr
|
267
|
+
transform: "translateX(" + (distance - wrapWidth * (activeIndex - index) * rtlRatio) + "px)" + translateStr
|
267
268
|
} : {
|
268
269
|
transform: "translateY(" + (distance - wrapHeight * (activeIndex - index)) + "px)" + translateStr
|
269
270
|
};
|
package/esm/tabs/type.d.ts
CHANGED
@@ -579,6 +579,7 @@ export interface TabPaneProps extends Pick<TabsProps, 'duration' | 'transitionDu
|
|
579
579
|
paneTrans: boolean;
|
580
580
|
swipeable: boolean;
|
581
581
|
changeIndex: (newIndex: number, from?: string) => void;
|
582
|
+
rtlRatio: number;
|
582
583
|
}
|
583
584
|
export interface TabPaneRef {
|
584
585
|
/**
|