taro-ui 3.3.3 → 3.4.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/LICENSE +1 -1
- package/README.md +85 -0
- package/dist/common/utils.d.ts +2 -1
- package/dist/common/utils.js +3 -0
- package/dist/common/utils.js.map +1 -1
- package/dist/components/accordion/index.d.ts +16 -13
- package/dist/components/accordion/index.js +77 -97
- package/dist/components/accordion/index.js.map +1 -1
- package/dist/components/action-sheet/body/index.d.ts +2 -4
- package/dist/components/action-sheet/body/index.js +8 -6
- package/dist/components/action-sheet/body/index.js.map +1 -1
- package/dist/components/action-sheet/body/item/index.d.ts +7 -7
- package/dist/components/action-sheet/body/item/index.js +14 -14
- package/dist/components/action-sheet/body/item/index.js.map +1 -1
- package/dist/components/action-sheet/footer/index.d.ts +7 -7
- package/dist/components/action-sheet/footer/index.js +14 -17
- package/dist/components/action-sheet/footer/index.js.map +1 -1
- package/dist/components/action-sheet/header/index.d.ts +2 -4
- package/dist/components/action-sheet/header/index.js +8 -9
- package/dist/components/action-sheet/header/index.js.map +1 -1
- package/dist/components/action-sheet/index.d.ts +12 -13
- package/dist/components/action-sheet/index.js +53 -57
- package/dist/components/action-sheet/index.js.map +1 -1
- package/dist/components/activity-indicator/index.d.ts +12 -6
- package/dist/components/activity-indicator/index.js +19 -22
- package/dist/components/activity-indicator/index.js.map +1 -1
- package/dist/components/avatar/index.d.ts +14 -8
- package/dist/components/avatar/index.js +36 -43
- package/dist/components/avatar/index.js.map +1 -1
- package/dist/components/badge/index.d.ts +11 -8
- package/dist/components/badge/index.js +18 -34
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/button/index.d.ts +29 -14
- package/dist/components/button/index.js +97 -112
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/calendar/body/index.d.ts +3 -26
- package/dist/components/calendar/body/index.js +215 -235
- package/dist/components/calendar/body/index.js.map +1 -1
- package/dist/components/calendar/controller/index.d.ts +3 -5
- package/dist/components/calendar/controller/index.js +47 -43
- package/dist/components/calendar/controller/index.js.map +1 -1
- package/dist/components/calendar/index.d.ts +3 -20
- package/dist/components/calendar/index.js +219 -201
- package/dist/components/calendar/index.js.map +1 -1
- package/dist/components/calendar/ui/date-list/index.d.ts +2 -6
- package/dist/components/calendar/ui/date-list/index.js +36 -41
- package/dist/components/calendar/ui/date-list/index.js.map +1 -1
- package/dist/components/calendar/ui/day-list/index.d.ts +2 -4
- package/dist/components/calendar/ui/day-list/index.js +6 -5
- package/dist/components/calendar/ui/day-list/index.js.map +1 -1
- package/dist/components/card/index.d.ts +15 -7
- package/dist/components/card/index.js +42 -43
- package/dist/components/card/index.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +11 -7
- package/dist/components/checkbox/index.js +30 -35
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/config-provider/context.d.ts +6 -0
- package/dist/components/config-provider/context.js +13 -0
- package/dist/components/config-provider/context.js.map +1 -0
- package/dist/components/config-provider/index.d.ts +7 -0
- package/dist/components/config-provider/index.js +15 -0
- package/dist/components/config-provider/index.js.map +1 -0
- package/dist/components/countdown/index.d.ts +19 -19
- package/dist/components/countdown/index.js +183 -118
- package/dist/components/countdown/index.js.map +1 -1
- package/dist/components/countdown/item/index.d.ts +8 -7
- package/dist/components/countdown/item/index.js +10 -13
- package/dist/components/countdown/item/index.js.map +1 -1
- package/dist/components/curtain/index.d.ts +11 -8
- package/dist/components/curtain/index.js +36 -45
- package/dist/components/curtain/index.js.map +1 -1
- package/dist/components/divider/index.d.ts +13 -6
- package/dist/components/divider/index.js +29 -38
- package/dist/components/divider/index.js.map +1 -1
- package/dist/components/drawer/index.d.ts +13 -15
- package/dist/components/drawer/index.js +100 -93
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/fab/index.d.ts +8 -7
- package/dist/components/fab/index.js +16 -16
- package/dist/components/fab/index.js.map +1 -1
- package/dist/components/flex/index.d.ts +11 -5
- package/dist/components/flex/index.js +17 -18
- package/dist/components/flex/index.js.map +1 -1
- package/dist/components/flex/item/index.d.ts +11 -5
- package/dist/components/flex/item/index.js +17 -18
- package/dist/components/flex/item/index.js.map +1 -1
- package/dist/components/float-layout/index.d.ts +20 -12
- package/dist/components/float-layout/index.js +56 -72
- package/dist/components/float-layout/index.js.map +1 -1
- package/dist/components/form/index.d.ts +11 -8
- package/dist/components/form/index.js +28 -28
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/grid/index.d.ts +22 -7
- package/dist/components/grid/index.js +61 -66
- package/dist/components/grid/index.js.map +1 -1
- package/dist/components/icon/index.d.ts +13 -7
- package/dist/components/icon/index.js +24 -34
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/image-picker/index.d.ts +19 -9
- package/dist/components/image-picker/index.js +83 -102
- package/dist/components/image-picker/index.js.map +1 -1
- package/dist/components/indexes/index.d.ts +16 -28
- package/dist/components/indexes/index.js +198 -209
- package/dist/components/indexes/index.js.map +1 -1
- package/dist/components/input/index.d.ts +37 -15
- package/dist/components/input/index.js +152 -161
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/input-number/index.d.ts +20 -11
- package/dist/components/input-number/index.js +107 -126
- package/dist/components/input-number/index.js.map +1 -1
- package/dist/components/list/index.d.ts +7 -6
- package/dist/components/list/index.js +15 -15
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/list/item/index.d.ts +27 -9
- package/dist/components/list/item/index.js +89 -117
- package/dist/components/list/item/index.js.map +1 -1
- package/dist/components/load-more/index.d.ts +15 -7
- package/dist/components/load-more/index.js +29 -50
- package/dist/components/load-more/index.js.map +1 -1
- package/dist/components/loading/index.d.ts +8 -7
- package/dist/components/loading/index.js +14 -20
- package/dist/components/loading/index.js.map +1 -1
- package/dist/components/message/index.d.ts +9 -14
- package/dist/components/message/index.js +45 -59
- package/dist/components/message/index.js.map +1 -1
- package/dist/components/modal/action/index.d.ts +7 -6
- package/dist/components/modal/action/index.js +15 -15
- package/dist/components/modal/action/index.js.map +1 -1
- package/dist/components/modal/content/index.d.ts +2 -4
- package/dist/components/modal/content/index.js +8 -6
- package/dist/components/modal/content/index.js.map +1 -1
- package/dist/components/modal/header/index.d.ts +2 -4
- package/dist/components/modal/header/index.js +8 -6
- package/dist/components/modal/header/index.js.map +1 -1
- package/dist/components/modal/index.d.ts +16 -14
- package/dist/components/modal/index.js +63 -77
- package/dist/components/modal/index.js.map +1 -1
- package/dist/components/nav-bar/index.d.ts +20 -10
- package/dist/components/nav-bar/index.js +146 -162
- package/dist/components/nav-bar/index.js.map +1 -1
- package/dist/components/noticebar/index.d.ts +17 -15
- package/dist/components/noticebar/index.js +115 -128
- package/dist/components/noticebar/index.js.map +1 -1
- package/dist/components/pagination/index.d.ts +13 -11
- package/dist/components/pagination/index.js +64 -120
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/progress/index.d.ts +11 -5
- package/dist/components/progress/index.js +39 -36
- package/dist/components/progress/index.js.map +1 -1
- package/dist/components/radio/index.d.ts +11 -7
- package/dist/components/radio/index.js +29 -33
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/range/index.d.ts +19 -21
- package/dist/components/range/index.js +146 -153
- package/dist/components/range/index.js.map +1 -1
- package/dist/components/rate/index.d.ts +13 -7
- package/dist/components/rate/index.js +47 -62
- package/dist/components/rate/index.js.map +1 -1
- package/dist/components/search-bar/index.d.ts +23 -15
- package/dist/components/search-bar/index.js +120 -146
- package/dist/components/search-bar/index.js.map +1 -1
- package/dist/components/segmented-control/index.d.ts +14 -7
- package/dist/components/segmented-control/index.js +52 -66
- package/dist/components/segmented-control/index.js.map +1 -1
- package/dist/components/slider/index.d.ts +21 -12
- package/dist/components/slider/index.js +66 -90
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/steps/index.d.ts +11 -7
- package/dist/components/steps/index.js +43 -48
- package/dist/components/steps/index.js.map +1 -1
- package/dist/components/swipe-action/index.d.ts +12 -25
- package/dist/components/swipe-action/index.js +118 -115
- package/dist/components/swipe-action/index.js.map +1 -1
- package/dist/components/swipe-action/options/index.d.ts +2 -4
- package/dist/components/swipe-action/options/index.js +18 -17
- package/dist/components/swipe-action/options/index.js.map +1 -1
- package/dist/components/switch/index.d.ts +14 -7
- package/dist/components/switch/index.js +36 -41
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/tab-bar/index.d.ts +17 -7
- package/dist/components/tab-bar/index.js +108 -135
- package/dist/components/tab-bar/index.js.map +1 -1
- package/dist/components/tabs/index.d.ts +17 -23
- package/dist/components/tabs/index.js +185 -174
- package/dist/components/tabs/index.js.map +1 -1
- package/dist/components/tabs-pane/index.d.ts +11 -6
- package/dist/components/tabs-pane/index.js +26 -28
- package/dist/components/tabs-pane/index.js.map +1 -1
- package/dist/components/tag/index.d.ts +14 -7
- package/dist/components/tag/index.js +31 -40
- package/dist/components/tag/index.js.map +1 -1
- package/dist/components/textarea/index.d.ts +29 -11
- package/dist/components/textarea/index.js +72 -92
- package/dist/components/textarea/index.js.map +1 -1
- package/dist/components/timeline/index.d.ts +9 -6
- package/dist/components/timeline/index.js +50 -56
- package/dist/components/timeline/index.js.map +1 -1
- package/dist/components/toast/img.json +3 -6
- package/dist/components/toast/index.d.ts +16 -15
- package/dist/components/toast/index.js +85 -94
- package/dist/components/toast/index.js.map +1 -1
- package/dist/hooks/useComponentLocale.d.ts +2 -0
- package/dist/hooks/useComponentLocale.js +12 -0
- package/dist/hooks/useComponentLocale.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.esm.js +4006 -4404
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +4032 -4434
- package/dist/index.js.map +1 -1
- package/dist/locale/en_US.d.ts +3 -0
- package/dist/locale/en_US.js +34 -0
- package/dist/locale/en_US.js.map +1 -0
- package/dist/locale/index.d.ts +4 -0
- package/dist/locale/index.js +10 -0
- package/dist/locale/index.js.map +1 -0
- package/dist/locale/types.d.ts +34 -0
- package/dist/locale/types.js +1 -0
- package/dist/locale/types.js.map +1 -0
- package/dist/locale/zh_CN.d.ts +3 -0
- package/dist/locale/zh_CN.js +34 -0
- package/dist/locale/zh_CN.js.map +1 -0
- package/dist/style/components/avatar.scss +1 -1
- package/dist/style/components/badge.scss +7 -2
- package/dist/style/components/calendar.scss +1 -1
- package/dist/style/components/countdown.scss +2 -1
- package/dist/style/components/flex.scss +1 -1
- package/dist/style/components/grid.scss +2 -2
- package/dist/style/components/icon.scss +302 -101
- package/dist/style/components/input.scss +2 -2
- package/dist/style/components/progress.scss +1 -1
- package/dist/style/components/search-bar.scss +1 -1
- package/dist/style/components/steps.scss +2 -2
- package/dist/style/components/tabs.scss +1 -1
- package/dist/style/components/tag.scss +1 -1
- package/dist/style/components/timeline.scss +1 -1
- package/dist/style/components/toast.scss +7 -3
- package/dist/style/index.css +176 -176
- package/dist/style/index.css.map +1 -1
- package/dist/style/mixins/libs/hairline.scss +4 -19
- package/dist/style/mixins/libs/shade.scss +3 -6
- package/dist/style/mixins/libs/tint.scss +4 -7
- package/dist/style/themes/purple.scss +15 -15
- package/dist/style/themes/red.scss +16 -13
- package/dist/style/variables/default.scss +69 -73
- package/package.json +5 -3
- package/rn/components/accordion/index.tsx +2 -9
- package/rn/components/action-sheet/body/index.tsx +1 -3
- package/rn/components/action-sheet/body/item/index.tsx +1 -3
- package/rn/components/action-sheet/footer/index.tsx +1 -3
- package/rn/components/action-sheet/header/index.tsx +1 -3
- package/rn/components/activity-indicator/index.tsx +1 -3
- package/rn/components/avatar/index.tsx +5 -5
- package/rn/components/calendar/controller/index.tsx +2 -7
- package/rn/components/card/index.tsx +4 -4
- package/rn/components/countdown/index.scss +5 -4
- package/rn/components/countdown/item/index.tsx +1 -3
- package/rn/components/curtain/index.tsx +5 -5
- package/rn/components/flex/index.scss +2 -2
- package/rn/components/flex/item/index.scss +2 -2
- package/rn/components/grid/index.tsx +15 -15
- package/rn/components/icon/index.tsx +4 -4
- package/rn/components/image-picker/index.tsx +7 -7
- package/rn/components/pagination/index.tsx +7 -7
- package/rn/components/progress/index.tsx +5 -5
- package/rn/components/radio/index.tsx +7 -7
- package/rn/components/rate/index.tsx +4 -4
- package/rn/components/segmented-control/index.tsx +8 -8
- package/rn/components/slider/index.tsx +9 -9
- package/rn/components/steps/index.tsx +8 -8
- package/rn/components/swipe-action/options/index.tsx +1 -3
- package/rn/components/switch/index.tsx +2 -9
- package/rn/components/toast/img.json +3 -6
- package/rn/components/toast/index.tsx +8 -8
- package/rn/style/components/accordion.scss +1 -1
- package/rn/style/components/action-sheet.scss +1 -1
- package/rn/style/components/avatar.scss +1 -1
- package/rn/style/components/badge.scss +8 -3
- package/rn/style/components/button.scss +1 -1
- package/rn/style/components/calendar.scss +1 -1
- package/rn/style/components/checkbox.scss +1 -1
- package/rn/style/components/curtain.scss +1 -1
- package/rn/style/components/fab.scss +1 -4
- package/rn/style/components/flex.scss +1 -1
- package/rn/style/components/grid.scss +2 -6
- package/rn/style/components/icon.scss +302 -101
- package/rn/style/components/index.scss +41 -41
- package/rn/style/components/input.scss +1 -1
- package/rn/style/components/list.scss +2 -4
- package/rn/style/components/loading.scss +4 -4
- package/rn/style/components/message.scss +1 -1
- package/rn/style/components/modal.scss +0 -2
- package/rn/style/components/nav-bar.scss +3 -3
- package/rn/style/components/noticebar.scss +0 -4
- package/rn/style/components/progress.scss +1 -1
- package/rn/style/components/radio.scss +2 -2
- package/rn/style/components/range.scss +1 -1
- package/rn/style/components/search-bar.scss +1 -1
- package/rn/style/components/segmented-control.scss +4 -1
- package/rn/style/components/slider.scss +0 -1
- package/rn/style/components/steps.scss +3 -3
- package/rn/style/components/switch.scss +0 -1
- package/rn/style/components/tabs.scss +2 -2
- package/rn/style/components/tag.scss +1 -1
- package/rn/style/components/timeline.scss +0 -2
- package/rn/style/components/toast.scss +5 -2
- package/rn/style/index.scss +1 -1
- package/rn/style/mixins/libs/hairline.scss +4 -22
- package/rn/style/mixins/libs/shade.scss +1 -4
- package/rn/style/mixins/libs/tint.scss +2 -5
- package/rn/style/themes/purple.scss +15 -15
- package/rn/style/themes/red.scss +16 -13
- package/rn/style/variables/default.scss +69 -73
|
@@ -1,206 +1,216 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
1
20
|
import classNames from "classnames";
|
|
2
21
|
import PropTypes from "prop-types";
|
|
3
|
-
import React from "react";
|
|
22
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
4
23
|
import { ScrollView, View } from "@tarojs/components";
|
|
5
24
|
import Taro from "@tarojs/taro";
|
|
6
25
|
import { isTest, mergeStyle, uuid } from "../../common/utils";
|
|
7
26
|
const ENV = Taro.getEnv();
|
|
8
27
|
const MIN_DISTANCE = 100;
|
|
9
28
|
const MAX_INTERVAL = 10;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
function AtTabs({
|
|
30
|
+
customStyle = "",
|
|
31
|
+
className = "",
|
|
32
|
+
tabDirection = "horizontal",
|
|
33
|
+
height = "",
|
|
34
|
+
current = 0,
|
|
35
|
+
swipeable = true,
|
|
36
|
+
scroll = false,
|
|
37
|
+
animated = true,
|
|
38
|
+
tabList = [],
|
|
39
|
+
onClick,
|
|
40
|
+
children
|
|
41
|
+
}) {
|
|
42
|
+
const tabIdRef = useRef(isTest() ? "tabs-AOTU2018" : uuid());
|
|
43
|
+
const touchDotRef = useRef(0);
|
|
44
|
+
const timerRef = useRef(null);
|
|
45
|
+
const intervalRef = useRef(0);
|
|
46
|
+
const isMovingRef = useRef(false);
|
|
47
|
+
const tabHeaderRef = useRef(null);
|
|
48
|
+
const [scrollState, setScrollState] = useState({
|
|
49
|
+
_scrollLeft: 0,
|
|
50
|
+
_scrollTop: 0,
|
|
51
|
+
_scrollIntoView: ""
|
|
52
|
+
});
|
|
53
|
+
const getTabHeaderRef = () => {
|
|
54
|
+
if (ENV === Taro.ENV_TYPE.WEB) {
|
|
55
|
+
tabHeaderRef.current = document.getElementById(tabIdRef.current);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const updateState = (idx) => {
|
|
59
|
+
var _a;
|
|
60
|
+
if (scroll) {
|
|
61
|
+
switch (ENV) {
|
|
62
|
+
case Taro.ENV_TYPE.WEAPP:
|
|
63
|
+
case Taro.ENV_TYPE.ALIPAY:
|
|
64
|
+
case Taro.ENV_TYPE.SWAN: {
|
|
65
|
+
const index = Math.max(idx - 1, 0);
|
|
66
|
+
setScrollState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
67
|
+
_scrollIntoView: `tab${tabIdRef.current}${index}`
|
|
68
|
+
}));
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case Taro.ENV_TYPE.WEB: {
|
|
72
|
+
const index = Math.max(idx - 1, 0);
|
|
73
|
+
const prevTabItem = (_a = tabHeaderRef.current) == null ? void 0 : _a.children[index];
|
|
74
|
+
prevTabItem && setScrollState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
75
|
+
_scrollTop: prevTabItem.offsetTop,
|
|
76
|
+
_scrollLeft: prevTabItem.offsetLeft
|
|
77
|
+
}));
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
default: {
|
|
81
|
+
console.warn("AtTab \u7EC4\u4EF6\u5728\u8BE5\u73AF\u5883\u8FD8\u672A\u9002\u914D");
|
|
82
|
+
break;
|
|
38
83
|
}
|
|
39
84
|
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this._tabId = isTest() ? "tabs-AOTU2018" : uuid();
|
|
47
|
-
this._touchDot = 0;
|
|
48
|
-
this._timer = null;
|
|
49
|
-
this._interval = 0;
|
|
50
|
-
this._isMoving = false;
|
|
51
|
-
}
|
|
52
|
-
handleClick(index, event) {
|
|
53
|
-
this.props.onClick(index, event);
|
|
54
|
-
}
|
|
55
|
-
handleTouchStart(e) {
|
|
56
|
-
const { swipeable, tabDirection } = this.props;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const handleClick = (index, event) => {
|
|
88
|
+
onClick && onClick(index, event);
|
|
89
|
+
};
|
|
90
|
+
const handleTouchStart = (e) => {
|
|
57
91
|
if (!swipeable || tabDirection === "vertical") return;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
92
|
+
touchDotRef.current = e.touches[0].pageX;
|
|
93
|
+
timerRef.current = setInterval(() => {
|
|
94
|
+
intervalRef.current++;
|
|
61
95
|
}, 100);
|
|
62
|
-
}
|
|
63
|
-
handleTouchMove(e) {
|
|
64
|
-
const { swipeable, tabDirection, current, tabList } = this.props;
|
|
96
|
+
};
|
|
97
|
+
const handleTouchMove = (e) => {
|
|
65
98
|
if (!swipeable || tabDirection === "vertical") return;
|
|
66
99
|
const touchMove = e.touches[0].pageX;
|
|
67
|
-
const moveDistance = touchMove -
|
|
100
|
+
const moveDistance = touchMove - touchDotRef.current;
|
|
68
101
|
const maxIndex = tabList.length;
|
|
69
|
-
if (!
|
|
102
|
+
if (!isMovingRef.current && intervalRef.current < MAX_INTERVAL && touchDotRef.current > 20) {
|
|
70
103
|
if (current + 1 < maxIndex && moveDistance <= -MIN_DISTANCE) {
|
|
71
|
-
|
|
72
|
-
|
|
104
|
+
isMovingRef.current = true;
|
|
105
|
+
handleClick(current + 1, e);
|
|
73
106
|
} else if (current - 1 >= 0 && moveDistance >= MIN_DISTANCE) {
|
|
74
|
-
|
|
75
|
-
|
|
107
|
+
isMovingRef.current = true;
|
|
108
|
+
handleClick(current - 1, e);
|
|
76
109
|
}
|
|
77
110
|
}
|
|
78
|
-
}
|
|
79
|
-
handleTouchEnd() {
|
|
80
|
-
const { swipeable, tabDirection } = this.props;
|
|
111
|
+
};
|
|
112
|
+
const handleTouchEnd = () => {
|
|
81
113
|
if (!swipeable || tabDirection === "vertical") return;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
114
|
+
timerRef.current && clearInterval(timerRef.current);
|
|
115
|
+
intervalRef.current = 0;
|
|
116
|
+
isMovingRef.current = false;
|
|
117
|
+
};
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
getTabHeaderRef();
|
|
120
|
+
updateState(current);
|
|
121
|
+
return () => {
|
|
122
|
+
tabHeaderRef.current = null;
|
|
123
|
+
};
|
|
124
|
+
}, []);
|
|
125
|
+
const prevScrollRef = useRef(scroll);
|
|
126
|
+
const prevCurrentRef = useRef(current);
|
|
127
|
+
const isMountRef = useRef(true);
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
if (isMountRef.current) {
|
|
130
|
+
isMountRef.current = false;
|
|
131
|
+
return;
|
|
89
132
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
this.getTabHeaderRef();
|
|
133
|
+
if (scroll !== prevScrollRef.current) {
|
|
134
|
+
getTabHeaderRef();
|
|
135
|
+
prevScrollRef.current = scroll;
|
|
94
136
|
}
|
|
95
|
-
if (
|
|
96
|
-
|
|
137
|
+
if (current !== prevCurrentRef.current) {
|
|
138
|
+
updateState(current);
|
|
139
|
+
prevCurrentRef.current = current;
|
|
97
140
|
}
|
|
141
|
+
}, [scroll, current]);
|
|
142
|
+
const { _scrollLeft, _scrollTop, _scrollIntoView } = scrollState;
|
|
143
|
+
const heightStyle = { height };
|
|
144
|
+
const underlineStyle = {
|
|
145
|
+
height: tabDirection === "vertical" ? `${tabList.length * 100}%` : "1PX",
|
|
146
|
+
width: tabDirection === "horizontal" ? `${tabList.length * 100}%` : "1PX"
|
|
147
|
+
};
|
|
148
|
+
const bodyStyle = {};
|
|
149
|
+
let transformStyle = `translate3d(0px, -${current * 100}%, 0px)`;
|
|
150
|
+
if (tabDirection === "horizontal") {
|
|
151
|
+
transformStyle = `translate3d(-${current * 100}%, 0px, 0px)`;
|
|
98
152
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
this.tabHeaderRef = null;
|
|
153
|
+
Object.assign(bodyStyle, {
|
|
154
|
+
transform: transformStyle
|
|
155
|
+
});
|
|
156
|
+
if (!animated) {
|
|
157
|
+
bodyStyle.transition = "unset";
|
|
105
158
|
}
|
|
106
|
-
|
|
107
|
-
const {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
height,
|
|
111
|
-
tabDirection,
|
|
112
|
-
animated,
|
|
113
|
-
tabList,
|
|
114
|
-
scroll,
|
|
115
|
-
current
|
|
116
|
-
} = this.props;
|
|
117
|
-
const { _scrollLeft, _scrollTop, _scrollIntoView } = this.state;
|
|
118
|
-
const heightStyle = { height };
|
|
119
|
-
const underlineStyle = {
|
|
120
|
-
height: tabDirection === "vertical" ? `${tabList.length * 100}%` : "1PX",
|
|
121
|
-
width: tabDirection === "horizontal" ? `${tabList.length * 100}%` : "1PX"
|
|
122
|
-
};
|
|
123
|
-
const bodyStyle = {};
|
|
124
|
-
let transformStyle = `translate3d(0px, -${current * 100}%, 0px)`;
|
|
125
|
-
if (tabDirection === "horizontal") {
|
|
126
|
-
transformStyle = `translate3d(-${current * 100}%, 0px, 0px)`;
|
|
127
|
-
}
|
|
128
|
-
Object.assign(bodyStyle, {
|
|
129
|
-
transform: transformStyle
|
|
159
|
+
const tabItems = tabList.map((item, idx) => {
|
|
160
|
+
const itemCls = classNames({
|
|
161
|
+
"at-tabs__item": true,
|
|
162
|
+
"at-tabs__item--active": current === idx
|
|
130
163
|
});
|
|
131
|
-
|
|
132
|
-
bodyStyle.transition = "unset";
|
|
133
|
-
}
|
|
134
|
-
const tabItems = tabList.map((item, idx) => {
|
|
135
|
-
const itemCls = classNames({
|
|
136
|
-
"at-tabs__item": true,
|
|
137
|
-
"at-tabs__item--active": current === idx
|
|
138
|
-
});
|
|
139
|
-
return /* @__PURE__ */ React.createElement(
|
|
140
|
-
View,
|
|
141
|
-
{
|
|
142
|
-
className: itemCls,
|
|
143
|
-
id: `tab${this._tabId}${idx}`,
|
|
144
|
-
key: `at-tabs-item-${idx}`,
|
|
145
|
-
onClick: this.handleClick.bind(this, idx)
|
|
146
|
-
},
|
|
147
|
-
item.title,
|
|
148
|
-
/* @__PURE__ */ React.createElement(View, { className: "at-tabs__item-underline" })
|
|
149
|
-
);
|
|
150
|
-
});
|
|
151
|
-
const rootCls = classNames(
|
|
152
|
-
{
|
|
153
|
-
"at-tabs": true,
|
|
154
|
-
"at-tabs--scroll": scroll,
|
|
155
|
-
[`at-tabs--${tabDirection}`]: true,
|
|
156
|
-
[`at-tabs--${ENV}`]: true
|
|
157
|
-
},
|
|
158
|
-
className
|
|
159
|
-
);
|
|
160
|
-
const scrollX = tabDirection === "horizontal";
|
|
161
|
-
const scrollY = tabDirection === "vertical";
|
|
162
|
-
return /* @__PURE__ */ React.createElement(View, { className: rootCls, style: mergeStyle(heightStyle, customStyle) }, scroll ? /* @__PURE__ */ React.createElement(
|
|
163
|
-
ScrollView,
|
|
164
|
-
{
|
|
165
|
-
id: this._tabId,
|
|
166
|
-
className: "at-tabs__header",
|
|
167
|
-
style: heightStyle,
|
|
168
|
-
scrollX,
|
|
169
|
-
scrollY,
|
|
170
|
-
scrollWithAnimation: true,
|
|
171
|
-
scrollLeft: _scrollLeft,
|
|
172
|
-
scrollTop: _scrollTop,
|
|
173
|
-
scrollIntoView: _scrollIntoView
|
|
174
|
-
},
|
|
175
|
-
tabItems
|
|
176
|
-
) : /* @__PURE__ */ React.createElement(View, { id: this._tabId, className: "at-tabs__header" }, tabItems), /* @__PURE__ */ React.createElement(
|
|
164
|
+
return /* @__PURE__ */ React.createElement(
|
|
177
165
|
View,
|
|
178
166
|
{
|
|
179
|
-
className:
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
style: mergeStyle(bodyStyle, heightStyle)
|
|
167
|
+
className: itemCls,
|
|
168
|
+
id: `tab${tabIdRef.current}${idx}`,
|
|
169
|
+
key: `at-tabs-item-${idx}`,
|
|
170
|
+
onClick: (event) => handleClick(idx, event)
|
|
184
171
|
},
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
)
|
|
188
|
-
}
|
|
172
|
+
item.title,
|
|
173
|
+
/* @__PURE__ */ React.createElement(View, { className: "at-tabs__item-underline" })
|
|
174
|
+
);
|
|
175
|
+
});
|
|
176
|
+
const rootCls = classNames(
|
|
177
|
+
{
|
|
178
|
+
"at-tabs": true,
|
|
179
|
+
"at-tabs--scroll": scroll,
|
|
180
|
+
[`at-tabs--${tabDirection}`]: true,
|
|
181
|
+
[`at-tabs--${ENV}`]: true
|
|
182
|
+
},
|
|
183
|
+
className
|
|
184
|
+
);
|
|
185
|
+
const scrollX = tabDirection === "horizontal";
|
|
186
|
+
const scrollY = tabDirection === "vertical";
|
|
187
|
+
return /* @__PURE__ */ React.createElement(View, { className: rootCls, style: mergeStyle(heightStyle, customStyle) }, scroll ? /* @__PURE__ */ React.createElement(
|
|
188
|
+
ScrollView,
|
|
189
|
+
{
|
|
190
|
+
id: tabIdRef.current,
|
|
191
|
+
className: "at-tabs__header",
|
|
192
|
+
style: heightStyle,
|
|
193
|
+
scrollX,
|
|
194
|
+
scrollY,
|
|
195
|
+
scrollWithAnimation: true,
|
|
196
|
+
scrollLeft: _scrollLeft,
|
|
197
|
+
scrollTop: _scrollTop,
|
|
198
|
+
scrollIntoView: _scrollIntoView
|
|
199
|
+
},
|
|
200
|
+
tabItems
|
|
201
|
+
) : /* @__PURE__ */ React.createElement(View, { id: tabIdRef.current, className: "at-tabs__header" }, tabItems), /* @__PURE__ */ React.createElement(
|
|
202
|
+
View,
|
|
203
|
+
{
|
|
204
|
+
className: "at-tabs__body",
|
|
205
|
+
onTouchStart: handleTouchStart,
|
|
206
|
+
onTouchEnd: handleTouchEnd,
|
|
207
|
+
onTouchMove: handleTouchMove,
|
|
208
|
+
style: mergeStyle(bodyStyle, heightStyle)
|
|
209
|
+
},
|
|
210
|
+
/* @__PURE__ */ React.createElement(View, { className: "at-tabs__underline", style: underlineStyle }),
|
|
211
|
+
children
|
|
212
|
+
));
|
|
189
213
|
}
|
|
190
|
-
AtTabs.defaultProps = {
|
|
191
|
-
customStyle: "",
|
|
192
|
-
className: "",
|
|
193
|
-
tabDirection: "horizontal",
|
|
194
|
-
height: "",
|
|
195
|
-
current: 0,
|
|
196
|
-
swipeable: true,
|
|
197
|
-
scroll: false,
|
|
198
|
-
animated: true,
|
|
199
|
-
tabList: [],
|
|
200
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
201
|
-
onClick: () => {
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
214
|
AtTabs.propTypes = {
|
|
205
215
|
customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
|
|
206
216
|
className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
|
|
@@ -213,7 +223,8 @@ AtTabs.propTypes = {
|
|
|
213
223
|
tabList: PropTypes.array,
|
|
214
224
|
onClick: PropTypes.func
|
|
215
225
|
};
|
|
226
|
+
var tabs_default = AtTabs;
|
|
216
227
|
export {
|
|
217
|
-
|
|
228
|
+
tabs_default as default
|
|
218
229
|
};
|
|
219
230
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/tabs/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes, { InferProps } from 'prop-types'\nimport React from 'react'\nimport { ScrollView, View } from '@tarojs/components'\nimport { CommonEvent, ITouchEvent } from '@tarojs/components/types/common'\nimport Taro from '@tarojs/taro'\nimport { AtTabsProps, AtTabsState } from '../../../types/tabs'\nimport { isTest, mergeStyle, uuid } from '../../common/utils'\n\nconst ENV = Taro.getEnv()\nconst MIN_DISTANCE = 100\nconst MAX_INTERVAL = 10\n\nexport default class AtTabs extends React.Component<AtTabsProps, AtTabsState> {\n public static defaultProps: AtTabsProps\n public static propTypes: InferProps<AtTabsProps>\n\n private _tabId: string\n private _touchDot: number\n private _timer: ReturnType<typeof setInterval> | null\n private _interval: number\n private _isMoving: boolean\n private tabHeaderRef: any\n\n public constructor(props: AtTabsProps) {\n super(props)\n this.state = {\n _scrollLeft: 0,\n _scrollTop: 0,\n _scrollIntoView: ''\n }\n this._tabId = isTest() ? 'tabs-AOTU2018' : uuid()\n // 触摸时的原点\n this._touchDot = 0\n // 定时器\n this._timer = null\n // 滑动时间间隔\n this._interval = 0\n // 是否已经在滑动\n this._isMoving = false\n }\n\n private updateState = (idx: number): void => {\n if (this.props.scroll) {\n // 标签栏滚动\n switch (ENV) {\n case Taro.ENV_TYPE.WEAPP:\n case Taro.ENV_TYPE.ALIPAY:\n case Taro.ENV_TYPE.SWAN: {\n const index = Math.max(idx - 1, 0)\n this.setState({\n _scrollIntoView: `tab${this._tabId}${index}`\n })\n break\n }\n case Taro.ENV_TYPE.WEB: {\n const index = Math.max(idx - 1, 0)\n const prevTabItem = this.tabHeaderRef.children[index]\n prevTabItem &&\n this.setState({\n _scrollTop: prevTabItem.offsetTop,\n _scrollLeft: prevTabItem.offsetLeft\n })\n break\n }\n default: {\n console.warn('AtTab 组件在该环境还未适配')\n break\n }\n }\n }\n }\n\n private handleClick(index: number, event: CommonEvent): void {\n this.props.onClick(index, event)\n }\n\n private handleTouchStart(e: ITouchEvent): void {\n const { swipeable, tabDirection } = this.props\n if (!swipeable || tabDirection === 'vertical') return\n // 获取触摸时的原点\n this._touchDot = e.touches[0].pageX\n // 使用js计时器记录时间\n this._timer = setInterval(() => {\n this._interval++\n }, 100)\n }\n\n private handleTouchMove(e: ITouchEvent): void {\n const { swipeable, tabDirection, current, tabList } = this.props\n if (!swipeable || tabDirection === 'vertical') return\n\n const touchMove = e.touches[0].pageX\n const moveDistance = touchMove - this._touchDot\n const maxIndex = tabList.length\n\n if (\n !this._isMoving &&\n this._interval < MAX_INTERVAL &&\n this._touchDot > 20\n ) {\n // 向左滑动\n if (current + 1 < maxIndex && moveDistance <= -MIN_DISTANCE) {\n this._isMoving = true\n this.handleClick(current + 1, e)\n\n // 向右滑动\n } else if (current - 1 >= 0 && moveDistance >= MIN_DISTANCE) {\n this._isMoving = true\n this.handleClick(current - 1, e)\n }\n }\n }\n\n private handleTouchEnd(): void {\n const { swipeable, tabDirection } = this.props\n if (!swipeable || tabDirection === 'vertical') return\n\n this._timer && clearInterval(this._timer)\n this._interval = 0\n this._isMoving = false\n }\n\n private getTabHeaderRef(): void {\n if (ENV === Taro.ENV_TYPE.WEB) {\n this.tabHeaderRef = document.getElementById(this._tabId)\n }\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: AtTabsProps): void {\n if (nextProps.scroll !== this.props.scroll) {\n this.getTabHeaderRef()\n }\n if (nextProps.current !== this.props.current) {\n this.updateState(nextProps.current)\n }\n }\n\n public componentDidMount(): void {\n this.getTabHeaderRef()\n this.updateState(this.props.current)\n }\n\n public componentWillUnmount(): void {\n this.tabHeaderRef = null\n }\n\n public render(): JSX.Element {\n const {\n customStyle = '',\n className,\n height,\n tabDirection,\n animated,\n tabList,\n scroll,\n current\n } = this.props\n const { _scrollLeft, _scrollTop, _scrollIntoView } = this.state\n\n const heightStyle = { height }\n const underlineStyle = {\n height: tabDirection === 'vertical' ? `${tabList.length * 100}%` : '1PX',\n width: tabDirection === 'horizontal' ? `${tabList.length * 100}%` : '1PX'\n }\n const bodyStyle: React.CSSProperties = {}\n let transformStyle = `translate3d(0px, -${current * 100}%, 0px)`\n if (tabDirection === 'horizontal') {\n transformStyle = `translate3d(-${current * 100}%, 0px, 0px)`\n }\n Object.assign(bodyStyle, {\n transform: transformStyle\n })\n if (!animated) {\n bodyStyle.transition = 'unset'\n }\n\n const tabItems = tabList.map((item, idx) => {\n const itemCls = classNames({\n 'at-tabs__item': true,\n 'at-tabs__item--active': current === idx\n })\n\n return (\n <View\n className={itemCls}\n id={`tab${this._tabId}${idx}`}\n key={`at-tabs-item-${idx}`}\n onClick={this.handleClick.bind(this, idx)}\n >\n {item.title}\n <View className='at-tabs__item-underline'></View>\n </View>\n )\n })\n const rootCls = classNames(\n {\n 'at-tabs': true,\n 'at-tabs--scroll': scroll,\n [`at-tabs--${tabDirection}`]: true,\n [`at-tabs--${ENV}`]: true\n },\n className\n )\n const scrollX = tabDirection === 'horizontal'\n const scrollY = tabDirection === 'vertical'\n\n return (\n <View className={rootCls} style={mergeStyle(heightStyle, customStyle)}>\n {scroll ? (\n <ScrollView\n id={this._tabId}\n className='at-tabs__header'\n style={heightStyle}\n scrollX={scrollX}\n scrollY={scrollY}\n scrollWithAnimation\n scrollLeft={_scrollLeft}\n scrollTop={_scrollTop}\n scrollIntoView={_scrollIntoView}\n >\n {tabItems}\n </ScrollView>\n ) : (\n <View id={this._tabId} className='at-tabs__header'>\n {tabItems}\n </View>\n )}\n <View\n className='at-tabs__body'\n onTouchStart={this.handleTouchStart.bind(this)}\n onTouchEnd={this.handleTouchEnd.bind(this)}\n onTouchMove={this.handleTouchMove.bind(this)}\n style={mergeStyle(bodyStyle, heightStyle)}\n >\n <View className='at-tabs__underline' style={underlineStyle}></View>\n {this.props.children}\n </View>\n </View>\n )\n }\n}\n\nAtTabs.defaultProps = {\n customStyle: '',\n className: '',\n tabDirection: 'horizontal',\n height: '',\n current: 0,\n swipeable: true,\n scroll: false,\n animated: true,\n tabList: [],\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClick: (): void => {}\n}\n\nAtTabs.propTypes = {\n customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n height: PropTypes.string,\n tabDirection: PropTypes.oneOf(['horizontal', 'vertical']),\n current: PropTypes.number,\n swipeable: PropTypes.bool,\n scroll: PropTypes.bool,\n animated: PropTypes.bool,\n tabList: PropTypes.array,\n onClick: PropTypes.func\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/tabs/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { ScrollView, View } from '@tarojs/components'\nimport { CommonEvent, ITouchEvent } from '@tarojs/components/types/common'\nimport Taro from '@tarojs/taro'\nimport { AtTabsProps } from '../../../types/tabs'\nimport { isTest, mergeStyle, uuid } from '../../common/utils'\n\nconst ENV = Taro.getEnv()\nconst MIN_DISTANCE = 100\nconst MAX_INTERVAL = 10\n\nfunction AtTabs({\n customStyle = '',\n className = '',\n tabDirection = 'horizontal',\n height = '',\n current = 0,\n swipeable = true,\n scroll = false,\n animated = true,\n tabList = [],\n onClick,\n children\n}: AtTabsProps): JSX.Element {\n const tabIdRef = useRef(isTest() ? 'tabs-AOTU2018' : uuid())\n const touchDotRef = useRef(0)\n const timerRef = useRef<ReturnType<typeof setInterval> | null>(null)\n const intervalRef = useRef(0)\n const isMovingRef = useRef(false)\n const tabHeaderRef = useRef<any>(null)\n\n const [scrollState, setScrollState] = useState({\n _scrollLeft: 0,\n _scrollTop: 0,\n _scrollIntoView: ''\n })\n\n const getTabHeaderRef = (): void => {\n if (ENV === Taro.ENV_TYPE.WEB) {\n tabHeaderRef.current = document.getElementById(tabIdRef.current)\n }\n }\n\n const updateState = (idx: number): void => {\n if (scroll) {\n switch (ENV) {\n case Taro.ENV_TYPE.WEAPP:\n case Taro.ENV_TYPE.ALIPAY:\n case Taro.ENV_TYPE.SWAN: {\n const index = Math.max(idx - 1, 0)\n setScrollState(prev => ({\n ...prev,\n _scrollIntoView: `tab${tabIdRef.current}${index}`\n }))\n break\n }\n case Taro.ENV_TYPE.WEB: {\n const index = Math.max(idx - 1, 0)\n const prevTabItem = tabHeaderRef.current?.children[index]\n prevTabItem &&\n setScrollState(prev => ({\n ...prev,\n _scrollTop: prevTabItem.offsetTop,\n _scrollLeft: prevTabItem.offsetLeft\n }))\n break\n }\n default: {\n console.warn('AtTab 组件在该环境还未适配')\n break\n }\n }\n }\n }\n\n const handleClick = (index: number, event: CommonEvent): void => {\n onClick && onClick(index, event)\n }\n\n const handleTouchStart = (e: ITouchEvent): void => {\n if (!swipeable || tabDirection === 'vertical') return\n touchDotRef.current = e.touches[0].pageX\n timerRef.current = setInterval(() => {\n intervalRef.current++\n }, 100)\n }\n\n const handleTouchMove = (e: ITouchEvent): void => {\n if (!swipeable || tabDirection === 'vertical') return\n\n const touchMove = e.touches[0].pageX\n const moveDistance = touchMove - touchDotRef.current\n const maxIndex = tabList.length\n\n if (\n !isMovingRef.current &&\n intervalRef.current < MAX_INTERVAL &&\n touchDotRef.current > 20\n ) {\n if (current + 1 < maxIndex && moveDistance <= -MIN_DISTANCE) {\n isMovingRef.current = true\n handleClick(current + 1, e)\n } else if (current - 1 >= 0 && moveDistance >= MIN_DISTANCE) {\n isMovingRef.current = true\n handleClick(current - 1, e)\n }\n }\n }\n\n const handleTouchEnd = (): void => {\n if (!swipeable || tabDirection === 'vertical') return\n\n timerRef.current && clearInterval(timerRef.current)\n intervalRef.current = 0\n isMovingRef.current = false\n }\n\n useEffect(() => {\n getTabHeaderRef()\n updateState(current)\n return () => {\n tabHeaderRef.current = null\n }\n // componentDidMount / componentWillUnmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const prevScrollRef = useRef(scroll)\n const prevCurrentRef = useRef(current)\n const isMountRef = useRef(true)\n useEffect(() => {\n if (isMountRef.current) {\n isMountRef.current = false\n return\n }\n if (scroll !== prevScrollRef.current) {\n getTabHeaderRef()\n prevScrollRef.current = scroll\n }\n if (current !== prevCurrentRef.current) {\n updateState(current)\n prevCurrentRef.current = current\n }\n }, [scroll, current])\n\n const { _scrollLeft, _scrollTop, _scrollIntoView } = scrollState\n\n const heightStyle = { height }\n const underlineStyle = {\n height: tabDirection === 'vertical' ? `${tabList.length * 100}%` : '1PX',\n width: tabDirection === 'horizontal' ? `${tabList.length * 100}%` : '1PX'\n }\n const bodyStyle: React.CSSProperties = {}\n let transformStyle = `translate3d(0px, -${current * 100}%, 0px)`\n if (tabDirection === 'horizontal') {\n transformStyle = `translate3d(-${current * 100}%, 0px, 0px)`\n }\n Object.assign(bodyStyle, {\n transform: transformStyle\n })\n if (!animated) {\n bodyStyle.transition = 'unset'\n }\n\n const tabItems = tabList.map((item, idx) => {\n const itemCls = classNames({\n 'at-tabs__item': true,\n 'at-tabs__item--active': current === idx\n })\n\n return (\n <View\n className={itemCls}\n id={`tab${tabIdRef.current}${idx}`}\n key={`at-tabs-item-${idx}`}\n onClick={(event: CommonEvent) => handleClick(idx, event)}\n >\n {item.title}\n <View className='at-tabs__item-underline'></View>\n </View>\n )\n })\n const rootCls = classNames(\n {\n 'at-tabs': true,\n 'at-tabs--scroll': scroll,\n [`at-tabs--${tabDirection}`]: true,\n [`at-tabs--${ENV}`]: true\n },\n className\n )\n const scrollX = tabDirection === 'horizontal'\n const scrollY = tabDirection === 'vertical'\n\n return (\n <View className={rootCls} style={mergeStyle(heightStyle, customStyle)}>\n {scroll ? (\n <ScrollView\n id={tabIdRef.current}\n className='at-tabs__header'\n style={heightStyle}\n scrollX={scrollX}\n scrollY={scrollY}\n scrollWithAnimation\n scrollLeft={_scrollLeft}\n scrollTop={_scrollTop}\n scrollIntoView={_scrollIntoView}\n >\n {tabItems}\n </ScrollView>\n ) : (\n <View id={tabIdRef.current} className='at-tabs__header'>\n {tabItems}\n </View>\n )}\n <View\n className='at-tabs__body'\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n onTouchMove={handleTouchMove}\n style={mergeStyle(bodyStyle, heightStyle)}\n >\n <View className='at-tabs__underline' style={underlineStyle}></View>\n {children}\n </View>\n </View>\n )\n}\n\nAtTabs.propTypes = {\n customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n height: PropTypes.string,\n tabDirection: PropTypes.oneOf(['horizontal', 'vertical']),\n current: PropTypes.number,\n swipeable: PropTypes.bool,\n scroll: PropTypes.bool,\n animated: PropTypes.bool,\n tabList: PropTypes.array,\n onClick: PropTypes.func\n}\n\nexport default AtTabs\n"],"mappings":"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","names":[]}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import React from 'react';
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
3
2
|
import { AtTabsPaneProps } from '../../../types/tabs-pane';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
declare function AtTabsPane({ customStyle, className, tabDirection, index, current, children }: AtTabsPaneProps): JSX.Element;
|
|
4
|
+
declare namespace AtTabsPane {
|
|
5
|
+
var propTypes: {
|
|
6
|
+
customStyle: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
|
|
7
|
+
className: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
|
|
8
|
+
tabDirection: PropTypes.Requireable<string>;
|
|
9
|
+
index: PropTypes.Requireable<number>;
|
|
10
|
+
current: PropTypes.Requireable<number>;
|
|
11
|
+
};
|
|
8
12
|
}
|
|
13
|
+
export default AtTabsPane;
|
|
@@ -2,34 +2,31 @@ import classNames from "classnames";
|
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { View } from "@tarojs/components";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
5
|
+
function AtTabsPane({
|
|
6
|
+
customStyle = "",
|
|
7
|
+
className = "",
|
|
8
|
+
tabDirection = "horizontal",
|
|
9
|
+
index = 0,
|
|
10
|
+
current = 0,
|
|
11
|
+
children
|
|
12
|
+
}) {
|
|
13
|
+
return /* @__PURE__ */ React.createElement(
|
|
14
|
+
View,
|
|
15
|
+
{
|
|
16
|
+
className: classNames(
|
|
17
|
+
{
|
|
18
|
+
"at-tabs-pane": true,
|
|
19
|
+
"at-tabs-pane--vertical": tabDirection === "vertical",
|
|
20
|
+
"at-tabs-pane--active": index === current,
|
|
21
|
+
"at-tabs-pane--inactive": index !== current
|
|
22
|
+
},
|
|
23
|
+
className
|
|
24
|
+
),
|
|
25
|
+
style: customStyle
|
|
26
|
+
},
|
|
27
|
+
children
|
|
28
|
+
);
|
|
25
29
|
}
|
|
26
|
-
AtTabsPane.defaultProps = {
|
|
27
|
-
customStyle: "",
|
|
28
|
-
className: "",
|
|
29
|
-
tabDirection: "horizontal",
|
|
30
|
-
index: 0,
|
|
31
|
-
current: 0
|
|
32
|
-
};
|
|
33
30
|
AtTabsPane.propTypes = {
|
|
34
31
|
customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
|
|
35
32
|
className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
|
|
@@ -37,7 +34,8 @@ AtTabsPane.propTypes = {
|
|
|
37
34
|
index: PropTypes.number,
|
|
38
35
|
current: PropTypes.number
|
|
39
36
|
};
|
|
37
|
+
var tabs_pane_default = AtTabsPane;
|
|
40
38
|
export {
|
|
41
|
-
|
|
39
|
+
tabs_pane_default as default
|
|
42
40
|
};
|
|
43
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/tabs-pane/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes
|
|
1
|
+
{"version":3,"sources":["../../../src/components/tabs-pane/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { View } from '@tarojs/components'\nimport { AtTabsPaneProps } from '../../../types/tabs-pane'\n\nfunction AtTabsPane({\n customStyle = '',\n className = '',\n tabDirection = 'horizontal',\n index = 0,\n current = 0,\n children\n}: AtTabsPaneProps): JSX.Element {\n return (\n <View\n className={classNames(\n {\n 'at-tabs-pane': true,\n 'at-tabs-pane--vertical': tabDirection === 'vertical',\n 'at-tabs-pane--active': index === current,\n 'at-tabs-pane--inactive': index !== current\n },\n className\n )}\n style={customStyle}\n >\n {children}\n </View>\n )\n}\n\nAtTabsPane.propTypes = {\n customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n tabDirection: PropTypes.oneOf(['horizontal', 'vertical']),\n index: PropTypes.number,\n current: PropTypes.number\n}\n\nexport default AtTabsPane\n"],"mappings":"AAAA,OAAO,gBAAgB;AACvB,OAAO,eAAe;AACtB,OAAO,WAAW;AAClB,SAAS,YAAY;AAGrB,SAAS,WAAW;AAAA,EAClB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,UAAU;AAAA,EACV;AACF,GAAiC;AAC/B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,UACE,gBAAgB;AAAA,UAChB,0BAA0B,iBAAiB;AAAA,UAC3C,wBAAwB,UAAU;AAAA,UAClC,0BAA0B,UAAU;AAAA,QACtC;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO;AAAA;AAAA,IAEN;AAAA,EACH;AAEJ;AAEA,WAAW,YAAY;AAAA,EACrB,aAAa,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,CAAC;AAAA,EACrE,WAAW,UAAU,UAAU,CAAC,UAAU,OAAO,UAAU,MAAM,CAAC;AAAA,EAClE,cAAc,UAAU,MAAM,CAAC,cAAc,UAAU,CAAC;AAAA,EACxD,OAAO,UAAU;AAAA,EACjB,SAAS,UAAU;AACrB;AAEA,IAAO,oBAAQ;","names":[]}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import React from 'react';
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
3
2
|
import { AtTagProps } from '../../../types/tag';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
declare function AtTag({ size, type, name, circle, disabled, active, customStyle, className, children, onClick }: AtTagProps): JSX.Element;
|
|
4
|
+
declare namespace AtTag {
|
|
5
|
+
var propTypes: {
|
|
6
|
+
size: PropTypes.Requireable<string>;
|
|
7
|
+
type: PropTypes.Requireable<string>;
|
|
8
|
+
name: PropTypes.Requireable<string>;
|
|
9
|
+
circle: PropTypes.Requireable<boolean>;
|
|
10
|
+
active: PropTypes.Requireable<boolean>;
|
|
11
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
12
|
+
customStyle: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
|
|
13
|
+
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
14
|
+
};
|
|
9
15
|
}
|
|
16
|
+
export default AtTag;
|