@arco-design/mobile-react 2.27.5 → 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 +18 -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 +43 -27
- 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/form/style/css/index.css +16 -0
- package/cjs/form/style/index.less +4 -4
- package/cjs/image-preview/index.js +2 -1
- 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/sticky/index.d.ts +5 -0
- package/cjs/sticky/index.js +20 -7
- 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/dist/index.js +92 -40
- package/dist/index.min.js +3 -3
- package/dist/style.css +134 -7
- package/dist/style.min.css +1 -1
- package/esm/_helpers/hooks.d.ts +1 -0
- package/esm/_helpers/hooks.js +41 -27
- 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/form/style/css/index.css +16 -0
- package/esm/form/style/index.less +4 -4
- package/esm/image-preview/index.js +2 -1
- 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/sticky/index.d.ts +5 -0
- package/esm/sticky/index.js +20 -7
- 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/package.json +3 -3
- package/umd/_helpers/hooks.d.ts +1 -0
- package/umd/_helpers/hooks.js +43 -27
- 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/form/style/css/index.css +16 -0
- package/umd/form/style/index.less +4 -4
- package/umd/image-preview/index.js +2 -1
- 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/sticky/index.d.ts +5 -0
- package/umd/sticky/index.js +20 -7
- 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
@@ -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
|
/**
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@arco-design/mobile-react",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.28.0",
|
4
4
|
"description": "",
|
5
5
|
"main": "cjs/index.js",
|
6
6
|
"module": "esm/index.js",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
"author": "taoyiyue@bytedance.com",
|
16
16
|
"license": "ISC",
|
17
17
|
"dependencies": {
|
18
|
-
"@arco-design/mobile-utils": "2.
|
18
|
+
"@arco-design/mobile-utils": "2.16.0",
|
19
19
|
"@arco-design/transformable": "^1.0.0",
|
20
20
|
"lodash.throttle": "^4.1.1",
|
21
21
|
"resize-observer-polyfill": "^1.5.1"
|
@@ -35,5 +35,5 @@
|
|
35
35
|
"publishConfig": {
|
36
36
|
"access": "public"
|
37
37
|
},
|
38
|
-
"gitHead": "
|
38
|
+
"gitHead": "6809000ae9f4310979628d4bd43a728d34266899"
|
39
39
|
}
|
package/umd/_helpers/hooks.d.ts
CHANGED
@@ -15,6 +15,7 @@ export declare function useListenResize(resizeHandler: () => void, deps?: any[],
|
|
15
15
|
* @param initialState {en} Initial State
|
16
16
|
*/
|
17
17
|
export declare function useMountedState<S>(initialState: S | (() => S)): [S, React.Dispatch<React.SetStateAction<S>>];
|
18
|
+
export declare function useSameRefState<T>(initialValue: T): [T, React.MutableRefObject<T>, (data: T) => void];
|
18
19
|
export declare function useRefState<T>(initialValue: T | (() => T)): [T, React.MutableRefObject<T>, React.Dispatch<React.SetStateAction<T>>];
|
19
20
|
export declare function useRefMountedState<T>(initialValue: T | (() => T)): [T, React.MutableRefObject<T>, React.Dispatch<React.SetStateAction<T>>];
|
20
21
|
export declare function useUpdateEffect(effect: () => void | (() => void), dependencies?: any[]): void;
|