@arco-design/mobile-react 2.30.9 → 2.30.10

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 (39) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.en-US.md +70 -2
  3. package/README.md +69 -2
  4. package/cjs/carousel/index.js +3 -0
  5. package/cjs/picker/index.js +3 -2
  6. package/cjs/picker/type.d.ts +1 -1
  7. package/cjs/picker-view/components/cascader.d.ts +1 -0
  8. package/cjs/picker-view/components/cascader.js +8 -1
  9. package/cjs/picker-view/components/picker-cell.d.ts +1 -0
  10. package/cjs/picker-view/components/picker-cell.js +6 -1
  11. package/cjs/picker-view/index.d.ts +6 -1
  12. package/cjs/picker-view/index.js +25 -13
  13. package/cjs/tabs/tab-cell.js +54 -29
  14. package/cjs/tabs/type.d.ts +5 -0
  15. package/dist/index.js +102 -48
  16. package/dist/index.min.js +1 -1
  17. package/esm/carousel/index.js +3 -0
  18. package/esm/picker/index.js +3 -2
  19. package/esm/picker/type.d.ts +1 -1
  20. package/esm/picker-view/components/cascader.d.ts +1 -0
  21. package/esm/picker-view/components/cascader.js +8 -1
  22. package/esm/picker-view/components/picker-cell.d.ts +1 -0
  23. package/esm/picker-view/components/picker-cell.js +6 -1
  24. package/esm/picker-view/index.d.ts +6 -1
  25. package/esm/picker-view/index.js +26 -13
  26. package/esm/tabs/tab-cell.js +55 -29
  27. package/esm/tabs/type.d.ts +5 -0
  28. package/package.json +3 -3
  29. package/umd/carousel/index.js +3 -0
  30. package/umd/picker/index.js +3 -2
  31. package/umd/picker/type.d.ts +1 -1
  32. package/umd/picker-view/components/cascader.d.ts +1 -0
  33. package/umd/picker-view/components/cascader.js +8 -1
  34. package/umd/picker-view/components/picker-cell.d.ts +1 -0
  35. package/umd/picker-view/components/picker-cell.js +6 -1
  36. package/umd/picker-view/index.d.ts +6 -1
  37. package/umd/picker-view/index.js +25 -13
  38. package/umd/tabs/tab-cell.js +54 -29
  39. package/umd/tabs/type.d.ts +5 -0
@@ -94,14 +94,18 @@
94
94
  return tabs.length < overflowThreshold ? tabBarArrange : 'start';
95
95
  }),
96
96
  originArrange = _useState3[0],
97
- setOriginArrange = _useState3[1]; // 默认tab小于overflowThreshold个时不开启加载前隐藏,大于overflowThreshold个时开启
97
+ setOriginArrange = _useState3[1];
98
98
 
99
+ var _useState4 = (0, _react.useState)(false),
100
+ forceUpdate = _useState4[0],
101
+ setForceUpdate = _useState4[1]; // 默认tab小于overflowThreshold个时不开启加载前隐藏,大于overflowThreshold个时开启
99
102
 
100
- var _useState4 = (0, _react.useState)(function () {
103
+
104
+ var _useState5 = (0, _react.useState)(function () {
101
105
  return hideTabBarBeforeMounted === void 0 ? tabs.length < overflowThreshold || activeIndex === 0 : !hideTabBarBeforeMounted;
102
106
  }),
103
- showTab = _useState4[0],
104
- setShowTab = _useState4[1];
107
+ showTab = _useState5[0],
108
+ setShowTab = _useState5[1];
105
109
 
106
110
  var isVertical = tabDirection === 'vertical';
107
111
  var isLine = (type || '').indexOf('line') !== -1;
@@ -116,6 +120,15 @@
116
120
  var hasDivider = tabBarHasDivider === void 0 ? isLine : tabBarHasDivider;
117
121
  var wrapSize = isVertical ? wrapWidth : wrapHeight;
118
122
  var system = (0, _helpers.useSystem)();
123
+
124
+ var updateScrollPosition = function updateScrollPosition() {
125
+ if (wrapSize && tabBarScrollChance !== 'none') {
126
+ setTimeout(function () {
127
+ scrollToCenter();
128
+ }, tabBarScrollChance === 'after-jump' ? Math.max(transitionDuration || 0, duration || 0) : 0);
129
+ }
130
+ };
131
+
119
132
  (0, _react.useEffect)(function () {
120
133
  (0, _mobileUtils.nextTick)(function () {
121
134
  setCellOverflow(); // dom出来之后originArrange置空,交由tabBarArrange控制
@@ -135,31 +148,16 @@
135
148
  (_underlineRef$current = underlineRef.current) == null ? void 0 : _underlineRef$current.resetUnderlineStyle();
136
149
  });
137
150
  }, [activeIndex, tabs, getCellPadding('left'), getCellPadding('right'), tabBarGutter, tabDirection]);
138
- (0, _react.useImperativeHandle)(ref, function () {
139
- return {
140
- dom: domRef.current,
141
- scrollTo: scrollTo,
142
- scrollToCenter: scrollToCenter,
143
- hasOverflow: hasOverflow,
144
- setCaterpillarAnimate: function setCaterpillarAnimate(ratio) {
145
- var _underlineRef$current2;
146
-
147
- return (_underlineRef$current2 = underlineRef.current) == null ? void 0 : _underlineRef$current2.setCaterpillarAnimate(ratio);
148
- },
149
- resetUnderlineStyle: function resetUnderlineStyle() {
150
- var _underlineRef$current3;
151
-
152
- return (_underlineRef$current3 = underlineRef.current) == null ? void 0 : _underlineRef$current3.resetUnderlineStyle();
153
- }
154
- };
155
- }, [scrollToCenter, scrollTo, hasOverflow]);
156
151
  (0, _react.useEffect)(function () {
157
- if (wrapSize && tabBarScrollChance !== 'none') {
158
- setTimeout(function () {
159
- scrollToCenter();
160
- }, tabBarScrollChance === 'after-jump' ? Math.max(transitionDuration || 0, duration || 0) : 0);
161
- }
152
+ updateScrollPosition();
162
153
  }, [activeIndex, wrapSize]);
154
+ (0, _react.useEffect)(function () {
155
+ var _underlineRef$current2;
156
+
157
+ setCellOverflow();
158
+ (_underlineRef$current2 = underlineRef.current) == null ? void 0 : _underlineRef$current2.resetUnderlineStyle();
159
+ updateScrollPosition();
160
+ }, [forceUpdate]);
163
161
  (0, _react.useEffect)(function () {
164
162
  tabBarScrollChance !== 'none' && scrollToCenter(true); // TabCell左右可滚动时,防止触发父级touchmove事件导致滚不动
165
163
  // @en When the TabCell can be scrolled left and right, prevent the parent touchmove event from being triggered which result in inability to scroll
@@ -300,7 +298,7 @@
300
298
  return typeof tab === 'string' ? tab : tab.title;
301
299
  }
302
300
 
303
- function renderTabUnderline() {
301
+ var renderTabUnderline = function renderTabUnderline() {
304
302
  if (!showUnderline || !isLine) {
305
303
  return null;
306
304
  }
@@ -331,7 +329,7 @@
331
329
  getTabCenterLeft: getTabCenterLeft,
332
330
  getTabRect: getTabRect
333
331
  }, lineProps));
334
- }
332
+ };
335
333
 
336
334
  var cellInner = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, tabs.map(function (tab, index) {
337
335
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -374,6 +372,33 @@
374
372
  }
375
373
  }) : null);
376
374
 
375
+ var _updateLayout = function updateLayout() {
376
+ setForceUpdate(function (val) {
377
+ return !val;
378
+ });
379
+ };
380
+
381
+ (0, _react.useImperativeHandle)(ref, function () {
382
+ return {
383
+ dom: domRef.current,
384
+ scrollTo: scrollTo,
385
+ scrollToCenter: scrollToCenter,
386
+ hasOverflow: hasOverflow,
387
+ setCaterpillarAnimate: function setCaterpillarAnimate(ratio) {
388
+ var _underlineRef$current3;
389
+
390
+ return (_underlineRef$current3 = underlineRef.current) == null ? void 0 : _underlineRef$current3.setCaterpillarAnimate(ratio);
391
+ },
392
+ resetUnderlineStyle: function resetUnderlineStyle() {
393
+ var _underlineRef$current4;
394
+
395
+ return (_underlineRef$current4 = underlineRef.current) == null ? void 0 : _underlineRef$current4.resetUnderlineStyle();
396
+ },
397
+ updateLayout: function updateLayout() {
398
+ return _updateLayout();
399
+ }
400
+ };
401
+ }, [scrollToCenter, scrollTo, hasOverflow]);
377
402
  return /*#__PURE__*/_react.default.createElement("div", {
378
403
  className: (0, _mobileUtils.cls)(prefix + "-container-wrap", tabDirection, "type-" + type, tabBarClass, system),
379
404
  style: tabBarStyle
@@ -565,6 +565,11 @@ export interface TabCellRef {
565
565
  * @en Recalculate underline style
566
566
  */
567
567
  resetUnderlineStyle: () => void;
568
+ /**
569
+ * 强制更新 tab-cell
570
+ * @en Force update tab-cell
571
+ */
572
+ updateLayout: () => void;
568
573
  }
569
574
  export interface TabPaneProps extends Pick<TabsProps, 'duration' | 'transitionDuration' | 'lazyloadCount' | 'hideContentStyle' | 'renderHideContent' | 'mode' | 'tabPaneClass' | 'tabPaneStyle' | 'tabPaneExtra' | 'getScrollContainer' | 'scrollThrottle' | 'scrollOffset' | 'goLastWhenScrollBottom' | 'scrollVertical' | 'translateZ' | 'fullScreen' | 'autoHeight' | 'onScroll' | 'swipeEnergySaving'> {
570
575
  prefixCls?: string;