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.
Files changed (312) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +85 -0
  3. package/dist/common/utils.d.ts +2 -1
  4. package/dist/common/utils.js +3 -0
  5. package/dist/common/utils.js.map +1 -1
  6. package/dist/components/accordion/index.d.ts +16 -13
  7. package/dist/components/accordion/index.js +77 -97
  8. package/dist/components/accordion/index.js.map +1 -1
  9. package/dist/components/action-sheet/body/index.d.ts +2 -4
  10. package/dist/components/action-sheet/body/index.js +8 -6
  11. package/dist/components/action-sheet/body/index.js.map +1 -1
  12. package/dist/components/action-sheet/body/item/index.d.ts +7 -7
  13. package/dist/components/action-sheet/body/item/index.js +14 -14
  14. package/dist/components/action-sheet/body/item/index.js.map +1 -1
  15. package/dist/components/action-sheet/footer/index.d.ts +7 -7
  16. package/dist/components/action-sheet/footer/index.js +14 -17
  17. package/dist/components/action-sheet/footer/index.js.map +1 -1
  18. package/dist/components/action-sheet/header/index.d.ts +2 -4
  19. package/dist/components/action-sheet/header/index.js +8 -9
  20. package/dist/components/action-sheet/header/index.js.map +1 -1
  21. package/dist/components/action-sheet/index.d.ts +12 -13
  22. package/dist/components/action-sheet/index.js +53 -57
  23. package/dist/components/action-sheet/index.js.map +1 -1
  24. package/dist/components/activity-indicator/index.d.ts +12 -6
  25. package/dist/components/activity-indicator/index.js +19 -22
  26. package/dist/components/activity-indicator/index.js.map +1 -1
  27. package/dist/components/avatar/index.d.ts +14 -8
  28. package/dist/components/avatar/index.js +36 -43
  29. package/dist/components/avatar/index.js.map +1 -1
  30. package/dist/components/badge/index.d.ts +11 -8
  31. package/dist/components/badge/index.js +18 -34
  32. package/dist/components/badge/index.js.map +1 -1
  33. package/dist/components/button/index.d.ts +29 -14
  34. package/dist/components/button/index.js +97 -112
  35. package/dist/components/button/index.js.map +1 -1
  36. package/dist/components/calendar/body/index.d.ts +3 -26
  37. package/dist/components/calendar/body/index.js +215 -235
  38. package/dist/components/calendar/body/index.js.map +1 -1
  39. package/dist/components/calendar/controller/index.d.ts +3 -5
  40. package/dist/components/calendar/controller/index.js +47 -43
  41. package/dist/components/calendar/controller/index.js.map +1 -1
  42. package/dist/components/calendar/index.d.ts +3 -20
  43. package/dist/components/calendar/index.js +219 -201
  44. package/dist/components/calendar/index.js.map +1 -1
  45. package/dist/components/calendar/ui/date-list/index.d.ts +2 -6
  46. package/dist/components/calendar/ui/date-list/index.js +36 -41
  47. package/dist/components/calendar/ui/date-list/index.js.map +1 -1
  48. package/dist/components/calendar/ui/day-list/index.d.ts +2 -4
  49. package/dist/components/calendar/ui/day-list/index.js +6 -5
  50. package/dist/components/calendar/ui/day-list/index.js.map +1 -1
  51. package/dist/components/card/index.d.ts +15 -7
  52. package/dist/components/card/index.js +42 -43
  53. package/dist/components/card/index.js.map +1 -1
  54. package/dist/components/checkbox/index.d.ts +11 -7
  55. package/dist/components/checkbox/index.js +30 -35
  56. package/dist/components/checkbox/index.js.map +1 -1
  57. package/dist/components/config-provider/context.d.ts +6 -0
  58. package/dist/components/config-provider/context.js +13 -0
  59. package/dist/components/config-provider/context.js.map +1 -0
  60. package/dist/components/config-provider/index.d.ts +7 -0
  61. package/dist/components/config-provider/index.js +15 -0
  62. package/dist/components/config-provider/index.js.map +1 -0
  63. package/dist/components/countdown/index.d.ts +19 -19
  64. package/dist/components/countdown/index.js +183 -118
  65. package/dist/components/countdown/index.js.map +1 -1
  66. package/dist/components/countdown/item/index.d.ts +8 -7
  67. package/dist/components/countdown/item/index.js +10 -13
  68. package/dist/components/countdown/item/index.js.map +1 -1
  69. package/dist/components/curtain/index.d.ts +11 -8
  70. package/dist/components/curtain/index.js +36 -45
  71. package/dist/components/curtain/index.js.map +1 -1
  72. package/dist/components/divider/index.d.ts +13 -6
  73. package/dist/components/divider/index.js +29 -38
  74. package/dist/components/divider/index.js.map +1 -1
  75. package/dist/components/drawer/index.d.ts +13 -15
  76. package/dist/components/drawer/index.js +100 -93
  77. package/dist/components/drawer/index.js.map +1 -1
  78. package/dist/components/fab/index.d.ts +8 -7
  79. package/dist/components/fab/index.js +16 -16
  80. package/dist/components/fab/index.js.map +1 -1
  81. package/dist/components/flex/index.d.ts +11 -5
  82. package/dist/components/flex/index.js +17 -18
  83. package/dist/components/flex/index.js.map +1 -1
  84. package/dist/components/flex/item/index.d.ts +11 -5
  85. package/dist/components/flex/item/index.js +17 -18
  86. package/dist/components/flex/item/index.js.map +1 -1
  87. package/dist/components/float-layout/index.d.ts +20 -12
  88. package/dist/components/float-layout/index.js +56 -72
  89. package/dist/components/float-layout/index.js.map +1 -1
  90. package/dist/components/form/index.d.ts +11 -8
  91. package/dist/components/form/index.js +28 -28
  92. package/dist/components/form/index.js.map +1 -1
  93. package/dist/components/grid/index.d.ts +22 -7
  94. package/dist/components/grid/index.js +61 -66
  95. package/dist/components/grid/index.js.map +1 -1
  96. package/dist/components/icon/index.d.ts +13 -7
  97. package/dist/components/icon/index.js +24 -34
  98. package/dist/components/icon/index.js.map +1 -1
  99. package/dist/components/image-picker/index.d.ts +19 -9
  100. package/dist/components/image-picker/index.js +83 -102
  101. package/dist/components/image-picker/index.js.map +1 -1
  102. package/dist/components/indexes/index.d.ts +16 -28
  103. package/dist/components/indexes/index.js +198 -209
  104. package/dist/components/indexes/index.js.map +1 -1
  105. package/dist/components/input/index.d.ts +37 -15
  106. package/dist/components/input/index.js +152 -161
  107. package/dist/components/input/index.js.map +1 -1
  108. package/dist/components/input-number/index.d.ts +20 -11
  109. package/dist/components/input-number/index.js +107 -126
  110. package/dist/components/input-number/index.js.map +1 -1
  111. package/dist/components/list/index.d.ts +7 -6
  112. package/dist/components/list/index.js +15 -15
  113. package/dist/components/list/index.js.map +1 -1
  114. package/dist/components/list/item/index.d.ts +27 -9
  115. package/dist/components/list/item/index.js +89 -117
  116. package/dist/components/list/item/index.js.map +1 -1
  117. package/dist/components/load-more/index.d.ts +15 -7
  118. package/dist/components/load-more/index.js +29 -50
  119. package/dist/components/load-more/index.js.map +1 -1
  120. package/dist/components/loading/index.d.ts +8 -7
  121. package/dist/components/loading/index.js +14 -20
  122. package/dist/components/loading/index.js.map +1 -1
  123. package/dist/components/message/index.d.ts +9 -14
  124. package/dist/components/message/index.js +45 -59
  125. package/dist/components/message/index.js.map +1 -1
  126. package/dist/components/modal/action/index.d.ts +7 -6
  127. package/dist/components/modal/action/index.js +15 -15
  128. package/dist/components/modal/action/index.js.map +1 -1
  129. package/dist/components/modal/content/index.d.ts +2 -4
  130. package/dist/components/modal/content/index.js +8 -6
  131. package/dist/components/modal/content/index.js.map +1 -1
  132. package/dist/components/modal/header/index.d.ts +2 -4
  133. package/dist/components/modal/header/index.js +8 -6
  134. package/dist/components/modal/header/index.js.map +1 -1
  135. package/dist/components/modal/index.d.ts +16 -14
  136. package/dist/components/modal/index.js +63 -77
  137. package/dist/components/modal/index.js.map +1 -1
  138. package/dist/components/nav-bar/index.d.ts +20 -10
  139. package/dist/components/nav-bar/index.js +146 -162
  140. package/dist/components/nav-bar/index.js.map +1 -1
  141. package/dist/components/noticebar/index.d.ts +17 -15
  142. package/dist/components/noticebar/index.js +115 -128
  143. package/dist/components/noticebar/index.js.map +1 -1
  144. package/dist/components/pagination/index.d.ts +13 -11
  145. package/dist/components/pagination/index.js +64 -120
  146. package/dist/components/pagination/index.js.map +1 -1
  147. package/dist/components/progress/index.d.ts +11 -5
  148. package/dist/components/progress/index.js +39 -36
  149. package/dist/components/progress/index.js.map +1 -1
  150. package/dist/components/radio/index.d.ts +11 -7
  151. package/dist/components/radio/index.js +29 -33
  152. package/dist/components/radio/index.js.map +1 -1
  153. package/dist/components/range/index.d.ts +19 -21
  154. package/dist/components/range/index.js +146 -153
  155. package/dist/components/range/index.js.map +1 -1
  156. package/dist/components/rate/index.d.ts +13 -7
  157. package/dist/components/rate/index.js +47 -62
  158. package/dist/components/rate/index.js.map +1 -1
  159. package/dist/components/search-bar/index.d.ts +23 -15
  160. package/dist/components/search-bar/index.js +120 -146
  161. package/dist/components/search-bar/index.js.map +1 -1
  162. package/dist/components/segmented-control/index.d.ts +14 -7
  163. package/dist/components/segmented-control/index.js +52 -66
  164. package/dist/components/segmented-control/index.js.map +1 -1
  165. package/dist/components/slider/index.d.ts +21 -12
  166. package/dist/components/slider/index.js +66 -90
  167. package/dist/components/slider/index.js.map +1 -1
  168. package/dist/components/steps/index.d.ts +11 -7
  169. package/dist/components/steps/index.js +43 -48
  170. package/dist/components/steps/index.js.map +1 -1
  171. package/dist/components/swipe-action/index.d.ts +12 -25
  172. package/dist/components/swipe-action/index.js +118 -115
  173. package/dist/components/swipe-action/index.js.map +1 -1
  174. package/dist/components/swipe-action/options/index.d.ts +2 -4
  175. package/dist/components/swipe-action/options/index.js +18 -17
  176. package/dist/components/swipe-action/options/index.js.map +1 -1
  177. package/dist/components/switch/index.d.ts +14 -7
  178. package/dist/components/switch/index.js +36 -41
  179. package/dist/components/switch/index.js.map +1 -1
  180. package/dist/components/tab-bar/index.d.ts +17 -7
  181. package/dist/components/tab-bar/index.js +108 -135
  182. package/dist/components/tab-bar/index.js.map +1 -1
  183. package/dist/components/tabs/index.d.ts +17 -23
  184. package/dist/components/tabs/index.js +185 -174
  185. package/dist/components/tabs/index.js.map +1 -1
  186. package/dist/components/tabs-pane/index.d.ts +11 -6
  187. package/dist/components/tabs-pane/index.js +26 -28
  188. package/dist/components/tabs-pane/index.js.map +1 -1
  189. package/dist/components/tag/index.d.ts +14 -7
  190. package/dist/components/tag/index.js +31 -40
  191. package/dist/components/tag/index.js.map +1 -1
  192. package/dist/components/textarea/index.d.ts +29 -11
  193. package/dist/components/textarea/index.js +72 -92
  194. package/dist/components/textarea/index.js.map +1 -1
  195. package/dist/components/timeline/index.d.ts +9 -6
  196. package/dist/components/timeline/index.js +50 -56
  197. package/dist/components/timeline/index.js.map +1 -1
  198. package/dist/components/toast/img.json +3 -6
  199. package/dist/components/toast/index.d.ts +16 -15
  200. package/dist/components/toast/index.js +85 -94
  201. package/dist/components/toast/index.js.map +1 -1
  202. package/dist/hooks/useComponentLocale.d.ts +2 -0
  203. package/dist/hooks/useComponentLocale.js +12 -0
  204. package/dist/hooks/useComponentLocale.js.map +1 -0
  205. package/dist/index.d.ts +3 -0
  206. package/dist/index.esm.js +4006 -4404
  207. package/dist/index.esm.js.map +1 -1
  208. package/dist/index.js +4032 -4434
  209. package/dist/index.js.map +1 -1
  210. package/dist/locale/en_US.d.ts +3 -0
  211. package/dist/locale/en_US.js +34 -0
  212. package/dist/locale/en_US.js.map +1 -0
  213. package/dist/locale/index.d.ts +4 -0
  214. package/dist/locale/index.js +10 -0
  215. package/dist/locale/index.js.map +1 -0
  216. package/dist/locale/types.d.ts +34 -0
  217. package/dist/locale/types.js +1 -0
  218. package/dist/locale/types.js.map +1 -0
  219. package/dist/locale/zh_CN.d.ts +3 -0
  220. package/dist/locale/zh_CN.js +34 -0
  221. package/dist/locale/zh_CN.js.map +1 -0
  222. package/dist/style/components/avatar.scss +1 -1
  223. package/dist/style/components/badge.scss +7 -2
  224. package/dist/style/components/calendar.scss +1 -1
  225. package/dist/style/components/countdown.scss +2 -1
  226. package/dist/style/components/flex.scss +1 -1
  227. package/dist/style/components/grid.scss +2 -2
  228. package/dist/style/components/icon.scss +302 -101
  229. package/dist/style/components/input.scss +2 -2
  230. package/dist/style/components/progress.scss +1 -1
  231. package/dist/style/components/search-bar.scss +1 -1
  232. package/dist/style/components/steps.scss +2 -2
  233. package/dist/style/components/tabs.scss +1 -1
  234. package/dist/style/components/tag.scss +1 -1
  235. package/dist/style/components/timeline.scss +1 -1
  236. package/dist/style/components/toast.scss +7 -3
  237. package/dist/style/index.css +176 -176
  238. package/dist/style/index.css.map +1 -1
  239. package/dist/style/mixins/libs/hairline.scss +4 -19
  240. package/dist/style/mixins/libs/shade.scss +3 -6
  241. package/dist/style/mixins/libs/tint.scss +4 -7
  242. package/dist/style/themes/purple.scss +15 -15
  243. package/dist/style/themes/red.scss +16 -13
  244. package/dist/style/variables/default.scss +69 -73
  245. package/package.json +5 -3
  246. package/rn/components/accordion/index.tsx +2 -9
  247. package/rn/components/action-sheet/body/index.tsx +1 -3
  248. package/rn/components/action-sheet/body/item/index.tsx +1 -3
  249. package/rn/components/action-sheet/footer/index.tsx +1 -3
  250. package/rn/components/action-sheet/header/index.tsx +1 -3
  251. package/rn/components/activity-indicator/index.tsx +1 -3
  252. package/rn/components/avatar/index.tsx +5 -5
  253. package/rn/components/calendar/controller/index.tsx +2 -7
  254. package/rn/components/card/index.tsx +4 -4
  255. package/rn/components/countdown/index.scss +5 -4
  256. package/rn/components/countdown/item/index.tsx +1 -3
  257. package/rn/components/curtain/index.tsx +5 -5
  258. package/rn/components/flex/index.scss +2 -2
  259. package/rn/components/flex/item/index.scss +2 -2
  260. package/rn/components/grid/index.tsx +15 -15
  261. package/rn/components/icon/index.tsx +4 -4
  262. package/rn/components/image-picker/index.tsx +7 -7
  263. package/rn/components/pagination/index.tsx +7 -7
  264. package/rn/components/progress/index.tsx +5 -5
  265. package/rn/components/radio/index.tsx +7 -7
  266. package/rn/components/rate/index.tsx +4 -4
  267. package/rn/components/segmented-control/index.tsx +8 -8
  268. package/rn/components/slider/index.tsx +9 -9
  269. package/rn/components/steps/index.tsx +8 -8
  270. package/rn/components/swipe-action/options/index.tsx +1 -3
  271. package/rn/components/switch/index.tsx +2 -9
  272. package/rn/components/toast/img.json +3 -6
  273. package/rn/components/toast/index.tsx +8 -8
  274. package/rn/style/components/accordion.scss +1 -1
  275. package/rn/style/components/action-sheet.scss +1 -1
  276. package/rn/style/components/avatar.scss +1 -1
  277. package/rn/style/components/badge.scss +8 -3
  278. package/rn/style/components/button.scss +1 -1
  279. package/rn/style/components/calendar.scss +1 -1
  280. package/rn/style/components/checkbox.scss +1 -1
  281. package/rn/style/components/curtain.scss +1 -1
  282. package/rn/style/components/fab.scss +1 -4
  283. package/rn/style/components/flex.scss +1 -1
  284. package/rn/style/components/grid.scss +2 -6
  285. package/rn/style/components/icon.scss +302 -101
  286. package/rn/style/components/index.scss +41 -41
  287. package/rn/style/components/input.scss +1 -1
  288. package/rn/style/components/list.scss +2 -4
  289. package/rn/style/components/loading.scss +4 -4
  290. package/rn/style/components/message.scss +1 -1
  291. package/rn/style/components/modal.scss +0 -2
  292. package/rn/style/components/nav-bar.scss +3 -3
  293. package/rn/style/components/noticebar.scss +0 -4
  294. package/rn/style/components/progress.scss +1 -1
  295. package/rn/style/components/radio.scss +2 -2
  296. package/rn/style/components/range.scss +1 -1
  297. package/rn/style/components/search-bar.scss +1 -1
  298. package/rn/style/components/segmented-control.scss +4 -1
  299. package/rn/style/components/slider.scss +0 -1
  300. package/rn/style/components/steps.scss +3 -3
  301. package/rn/style/components/switch.scss +0 -1
  302. package/rn/style/components/tabs.scss +2 -2
  303. package/rn/style/components/tag.scss +1 -1
  304. package/rn/style/components/timeline.scss +0 -2
  305. package/rn/style/components/toast.scss +5 -2
  306. package/rn/style/index.scss +1 -1
  307. package/rn/style/mixins/libs/hairline.scss +4 -22
  308. package/rn/style/mixins/libs/shade.scss +1 -4
  309. package/rn/style/mixins/libs/tint.scss +2 -5
  310. package/rn/style/themes/purple.scss +15 -15
  311. package/rn/style/themes/red.scss +16 -13
  312. 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
- class AtTabs extends React.Component {
11
- constructor(props) {
12
- super(props);
13
- this.updateState = (idx) => {
14
- if (this.props.scroll) {
15
- switch (ENV) {
16
- case Taro.ENV_TYPE.WEAPP:
17
- case Taro.ENV_TYPE.ALIPAY:
18
- case Taro.ENV_TYPE.SWAN: {
19
- const index = Math.max(idx - 1, 0);
20
- this.setState({
21
- _scrollIntoView: `tab${this._tabId}${index}`
22
- });
23
- break;
24
- }
25
- case Taro.ENV_TYPE.WEB: {
26
- const index = Math.max(idx - 1, 0);
27
- const prevTabItem = this.tabHeaderRef.children[index];
28
- prevTabItem && this.setState({
29
- _scrollTop: prevTabItem.offsetTop,
30
- _scrollLeft: prevTabItem.offsetLeft
31
- });
32
- break;
33
- }
34
- default: {
35
- console.warn("AtTab \u7EC4\u4EF6\u5728\u8BE5\u73AF\u5883\u8FD8\u672A\u9002\u914D");
36
- break;
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
- this.state = {
42
- _scrollLeft: 0,
43
- _scrollTop: 0,
44
- _scrollIntoView: ""
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
- this._touchDot = e.touches[0].pageX;
59
- this._timer = setInterval(() => {
60
- this._interval++;
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 - this._touchDot;
100
+ const moveDistance = touchMove - touchDotRef.current;
68
101
  const maxIndex = tabList.length;
69
- if (!this._isMoving && this._interval < MAX_INTERVAL && this._touchDot > 20) {
102
+ if (!isMovingRef.current && intervalRef.current < MAX_INTERVAL && touchDotRef.current > 20) {
70
103
  if (current + 1 < maxIndex && moveDistance <= -MIN_DISTANCE) {
71
- this._isMoving = true;
72
- this.handleClick(current + 1, e);
104
+ isMovingRef.current = true;
105
+ handleClick(current + 1, e);
73
106
  } else if (current - 1 >= 0 && moveDistance >= MIN_DISTANCE) {
74
- this._isMoving = true;
75
- this.handleClick(current - 1, e);
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
- this._timer && clearInterval(this._timer);
83
- this._interval = 0;
84
- this._isMoving = false;
85
- }
86
- getTabHeaderRef() {
87
- if (ENV === Taro.ENV_TYPE.WEB) {
88
- this.tabHeaderRef = document.getElementById(this._tabId);
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
- UNSAFE_componentWillReceiveProps(nextProps) {
92
- if (nextProps.scroll !== this.props.scroll) {
93
- this.getTabHeaderRef();
133
+ if (scroll !== prevScrollRef.current) {
134
+ getTabHeaderRef();
135
+ prevScrollRef.current = scroll;
94
136
  }
95
- if (nextProps.current !== this.props.current) {
96
- this.updateState(nextProps.current);
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
- componentDidMount() {
100
- this.getTabHeaderRef();
101
- this.updateState(this.props.current);
102
- }
103
- componentWillUnmount() {
104
- this.tabHeaderRef = null;
153
+ Object.assign(bodyStyle, {
154
+ transform: transformStyle
155
+ });
156
+ if (!animated) {
157
+ bodyStyle.transition = "unset";
105
158
  }
106
- render() {
107
- const {
108
- customStyle = "",
109
- className,
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
- if (!animated) {
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: "at-tabs__body",
180
- onTouchStart: this.handleTouchStart.bind(this),
181
- onTouchEnd: this.handleTouchEnd.bind(this),
182
- onTouchMove: this.handleTouchMove.bind(this),
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
- /* @__PURE__ */ React.createElement(View, { className: "at-tabs__underline", style: underlineStyle }),
186
- this.props.children
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
- AtTabs as default
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 { InferProps } from 'prop-types';
2
- import React from 'react';
1
+ import PropTypes from 'prop-types';
3
2
  import { AtTabsPaneProps } from '../../../types/tabs-pane';
4
- export default class AtTabsPane extends React.Component<AtTabsPaneProps> {
5
- static defaultProps: AtTabsPaneProps;
6
- static propTypes: InferProps<AtTabsPaneProps>;
7
- render(): JSX.Element;
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
- class AtTabsPane extends React.Component {
6
- render() {
7
- const { customStyle, className, tabDirection, index, current } = this.props;
8
- return /* @__PURE__ */ React.createElement(
9
- View,
10
- {
11
- className: classNames(
12
- {
13
- "at-tabs-pane": true,
14
- "at-tabs-pane--vertical": tabDirection === "vertical",
15
- "at-tabs-pane--active": index === current,
16
- "at-tabs-pane--inactive": index !== current
17
- },
18
- className
19
- ),
20
- style: customStyle
21
- },
22
- this.props.children
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
- AtTabsPane as default
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, { InferProps } from 'prop-types'\nimport React from 'react'\nimport { View } from '@tarojs/components'\nimport { AtTabsPaneProps } from '../../../types/tabs-pane'\n\nexport default class AtTabsPane extends React.Component<AtTabsPaneProps> {\n public static defaultProps: AtTabsPaneProps\n public static propTypes: InferProps<AtTabsPaneProps>\n\n public render(): JSX.Element {\n const { customStyle, className, tabDirection, index, current } = this.props\n\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 {this.props.children}\n </View>\n )\n }\n}\n\nAtTabsPane.defaultProps = {\n customStyle: '',\n className: '',\n tabDirection: 'horizontal',\n index: 0,\n current: 0\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"],"mappings":"AAAA,OAAO,gBAAgB;AACvB,OAAO,eAA+B;AACtC,OAAO,WAAW;AAClB,SAAS,YAAY;AAGrB,MAAO,mBAAiC,MAAM,UAA2B;AAAA,EAIhE,SAAsB;AAC3B,UAAM,EAAE,aAAa,WAAW,cAAc,OAAO,QAAQ,IAAI,KAAK;AAEtE,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,YACE,gBAAgB;AAAA,YAChB,0BAA0B,iBAAiB;AAAA,YAC3C,wBAAwB,UAAU;AAAA,YAClC,0BAA0B,UAAU;AAAA,UACtC;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA;AAAA,MAEN,KAAK,MAAM;AAAA,IACd;AAAA,EAEJ;AACF;AAEA,WAAW,eAAe;AAAA,EACxB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,OAAO;AAAA,EACP,SAAS;AACX;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;","names":[]}
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 { InferProps } from 'prop-types';
2
- import React from 'react';
1
+ import PropTypes from 'prop-types';
3
2
  import { AtTagProps } from '../../../types/tag';
4
- export default class AtTag extends React.Component<AtTagProps> {
5
- static defaultProps: AtTagProps;
6
- static propTypes: InferProps<AtTagProps>;
7
- private onClick;
8
- render(): JSX.Element;
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;