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,20 +1,20 @@
1
- import { InferProps } from 'prop-types';
2
- import React from 'react';
3
- import { AtCountDownProps, AtCountdownState } from '../../../types/countdown';
4
- export default class AtCountdown extends React.Component<AtCountDownProps, AtCountdownState> {
5
- static defaultProps: AtCountDownProps;
6
- static propTypes: InferProps<AtCountDownProps>;
7
- private seconds;
8
- private timer;
9
- constructor(props: AtCountDownProps);
10
- private setTimer;
11
- private clearTimer;
12
- private calculateTime;
13
- private countdonwn;
14
- UNSAFE_componentWillReceiveProps(nextProps: AtCountDownProps): void;
15
- componentDidMount(): void;
16
- componentWillUnmount(): void;
17
- componentDidHide(): void;
18
- componentDidShow(): void;
19
- render(): JSX.Element;
1
+ import PropTypes from 'prop-types';
2
+ import { AtCountDownProps } from '../../../types/countdown';
3
+ declare function AtCountdown({ customStyle, className, format, isCard, isShowDay, isShowHour, isShowMinute, day, hours, minutes, seconds, onTimeUp }: AtCountDownProps): JSX.Element;
4
+ declare namespace AtCountdown {
5
+ var propTypes: {
6
+ customStyle: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
7
+ className: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
8
+ isCard: PropTypes.Requireable<boolean>;
9
+ isShowDay: PropTypes.Requireable<boolean>;
10
+ isShowHour: PropTypes.Requireable<boolean>;
11
+ isShowMinute: PropTypes.Requireable<boolean>;
12
+ format: PropTypes.Requireable<object>;
13
+ day: PropTypes.Requireable<number>;
14
+ hours: PropTypes.Requireable<number>;
15
+ minutes: PropTypes.Requireable<number>;
16
+ seconds: PropTypes.Requireable<number>;
17
+ onTimeUp: PropTypes.Requireable<(...args: any[]) => any>;
18
+ };
20
19
  }
20
+ export default AtCountdown;
@@ -1,137 +1,201 @@
1
1
  import classNames from "classnames";
2
2
  import PropTypes from "prop-types";
3
- import React from "react";
3
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { View } from "@tarojs/components";
5
+ import { useDidHide, useDidShow } from "@tarojs/taro";
6
+ import { useComponentLocale } from "../../hooks/useComponentLocale";
5
7
  import AtCountdownItem from "./item";
6
8
  const toSeconds = (day, hours, minutes, seconds) => day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds;
7
- const defaultFormat = {
8
- day: "\u5929",
9
- hours: "\u65F6",
10
- minutes: "\u5206",
11
- seconds: "\u79D2"
12
- };
13
- class AtCountdown extends React.Component {
14
- constructor(props) {
15
- super(props);
16
- const { day = 0, hours = 0, minutes = 0, seconds = 0 } = this.props;
17
- this.seconds = toSeconds(day, hours, minutes, seconds);
18
- const {
19
- day: _day,
20
- hours: _hours,
21
- minutes: _minutes,
22
- seconds: _seconds
23
- } = this.calculateTime();
24
- this.state = {
25
- _day,
26
- _hours,
27
- _minutes,
28
- _seconds
29
- };
30
- }
31
- setTimer() {
32
- if (!this.timer) this.countdonwn();
33
- }
34
- clearTimer() {
35
- if (this.timer) {
36
- clearTimeout(this.timer);
37
- this.timer = 0;
38
- }
39
- }
40
- calculateTime() {
41
- let [day, hours, minutes, seconds] = [0, 0, 0, 0];
42
- if (this.seconds > 0) {
43
- day = this.props.isShowDay ? Math.floor(this.seconds / (60 * 60 * 24)) : 0;
44
- hours = this.props.isShowHour ? Math.floor(this.seconds / (60 * 60)) - day * 24 : 0;
45
- minutes = this.props.isShowMinute ? Math.floor(this.seconds / 60) - day * 24 * 60 - hours * 60 : 0;
46
- seconds = Math.floor(this.seconds) - day * 24 * 60 * 60 - hours * 60 * 60 - minutes * 60;
9
+ function AtCountdown({
10
+ customStyle = "",
11
+ className = "",
12
+ format,
13
+ isCard = false,
14
+ isShowDay = false,
15
+ isShowHour = true,
16
+ isShowMinute = true,
17
+ day = 0,
18
+ hours = 0,
19
+ minutes = 0,
20
+ seconds = 0,
21
+ onTimeUp
22
+ }) {
23
+ const locale = useComponentLocale("Countdown");
24
+ const mergedFormat = useMemo(
25
+ () => {
26
+ var _a, _b, _c, _d;
27
+ return {
28
+ day: (_a = format == null ? void 0 : format.day) != null ? _a : locale.day,
29
+ hours: (_b = format == null ? void 0 : format.hours) != null ? _b : locale.hours,
30
+ minutes: (_c = format == null ? void 0 : format.minutes) != null ? _c : locale.minutes,
31
+ seconds: (_d = format == null ? void 0 : format.seconds) != null ? _d : locale.seconds
32
+ };
33
+ },
34
+ [
35
+ format == null ? void 0 : format.day,
36
+ format == null ? void 0 : format.hours,
37
+ format == null ? void 0 : format.minutes,
38
+ format == null ? void 0 : format.seconds,
39
+ locale.day,
40
+ locale.hours,
41
+ locale.minutes,
42
+ locale.seconds
43
+ ]
44
+ );
45
+ const propsRef = useRef({
46
+ customStyle,
47
+ className,
48
+ format: mergedFormat,
49
+ isCard,
50
+ isShowDay,
51
+ isShowHour,
52
+ isShowMinute,
53
+ day,
54
+ hours,
55
+ minutes,
56
+ seconds,
57
+ onTimeUp
58
+ });
59
+ const isMountedRef = useRef(false);
60
+ const secondsRef = useRef(toSeconds(day, hours, minutes, seconds));
61
+ const timerRef = useRef();
62
+ const calculateTime = useCallback(() => {
63
+ let [calcDay, calcHours, calcMinutes, calcSeconds] = [0, 0, 0, 0];
64
+ if (secondsRef.current > 0) {
65
+ calcDay = isShowDay ? Math.floor(secondsRef.current / (60 * 60 * 24)) : 0;
66
+ calcHours = isShowHour ? Math.floor(secondsRef.current / (60 * 60)) - calcDay * 24 : 0;
67
+ calcMinutes = isShowMinute ? Math.floor(secondsRef.current / 60) - calcDay * 24 * 60 - calcHours * 60 : 0;
68
+ calcSeconds = Math.floor(secondsRef.current) - calcDay * 24 * 60 * 60 - calcHours * 60 * 60 - calcMinutes * 60;
47
69
  }
48
70
  return {
49
- day,
50
- hours,
51
- minutes,
52
- seconds
71
+ day: calcDay,
72
+ hours: calcHours,
73
+ minutes: calcMinutes,
74
+ seconds: calcSeconds
53
75
  };
54
- }
55
- countdonwn() {
56
- const { day, hours, minutes, seconds } = this.calculateTime();
57
- this.setState({
58
- _day: day,
59
- _hours: hours,
60
- _minutes: minutes,
61
- _seconds: seconds
62
- });
63
- this.seconds--;
64
- if (this.seconds < 0) {
65
- this.clearTimer();
66
- this.props.onTimeUp && this.props.onTimeUp();
76
+ }, [isShowDay, isShowHour, isShowMinute]);
77
+ const initialTime = calculateTime();
78
+ const [_day, setDay] = useState(initialTime.day);
79
+ const [_hours, setHours] = useState(initialTime.hours);
80
+ const [_minutes, setMinutes] = useState(initialTime.minutes);
81
+ const [_seconds, setSeconds] = useState(initialTime.seconds);
82
+ const clearTimer = useCallback(() => {
83
+ if (timerRef.current) {
84
+ clearTimeout(timerRef.current);
85
+ timerRef.current = 0;
86
+ }
87
+ }, []);
88
+ const countdown = useCallback(() => {
89
+ const {
90
+ day: calcDay,
91
+ hours: calcHours,
92
+ minutes: calcMinutes,
93
+ seconds: calcSeconds
94
+ } = calculateTime();
95
+ setDay(calcDay);
96
+ setHours(calcHours);
97
+ setMinutes(calcMinutes);
98
+ setSeconds(calcSeconds);
99
+ secondsRef.current--;
100
+ if (secondsRef.current < 0) {
101
+ clearTimer();
102
+ onTimeUp && onTimeUp();
67
103
  return;
68
104
  }
69
- this.timer = setTimeout(() => {
70
- this.countdonwn();
105
+ timerRef.current = setTimeout(() => {
106
+ countdown();
71
107
  }, 1e3);
72
- }
73
- UNSAFE_componentWillReceiveProps(nextProps) {
74
- if (JSON.stringify(this.props) === JSON.stringify(nextProps)) return;
75
- const { day = 0, hours = 0, minutes = 0, seconds = 0 } = nextProps;
76
- this.seconds = toSeconds(day, hours, minutes, seconds);
77
- this.clearTimer();
78
- this.setTimer();
79
- }
80
- componentDidMount() {
81
- this.setTimer();
82
- }
83
- componentWillUnmount() {
84
- this.clearTimer();
85
- }
86
- componentDidHide() {
87
- this.clearTimer();
88
- }
89
- componentDidShow() {
90
- this.setTimer();
91
- }
92
- render() {
93
- const {
108
+ }, [calculateTime, clearTimer, onTimeUp]);
109
+ const setTimer = useCallback(() => {
110
+ if (!timerRef.current) countdown();
111
+ }, [countdown]);
112
+ useEffect(() => {
113
+ propsRef.current = {
114
+ customStyle,
94
115
  className,
116
+ format: mergedFormat,
117
+ isCard,
118
+ isShowDay,
119
+ isShowHour,
120
+ isShowMinute,
121
+ day,
122
+ hours,
123
+ minutes,
124
+ seconds,
125
+ onTimeUp
126
+ };
127
+ });
128
+ useEffect(() => {
129
+ const nextProps = {
95
130
  customStyle,
96
- format = defaultFormat,
131
+ className,
132
+ format: mergedFormat,
97
133
  isCard,
98
134
  isShowDay,
99
135
  isShowHour,
100
- isShowMinute
101
- } = this.props;
102
- const { _day, _hours, _minutes, _seconds } = this.state;
103
- return /* @__PURE__ */ React.createElement(
104
- View,
105
- {
106
- className: classNames(
107
- {
108
- "at-countdown": true,
109
- "at-countdown--card": isCard
110
- },
111
- className
112
- ),
113
- style: customStyle
114
- },
115
- isShowDay && /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _day, separator: (format == null ? void 0 : format.day) || "\u5929" }),
116
- isShowHour && /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _hours, separator: (format == null ? void 0 : format.hours) || "" }),
117
- isShowMinute && /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _minutes, separator: (format == null ? void 0 : format.minutes) || "" }),
118
- /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _seconds, separator: (format == null ? void 0 : format.seconds) || "" })
119
- );
120
- }
136
+ isShowMinute,
137
+ day,
138
+ hours,
139
+ minutes,
140
+ seconds,
141
+ onTimeUp
142
+ };
143
+ if (!isMountedRef.current) {
144
+ isMountedRef.current = true;
145
+ propsRef.current = nextProps;
146
+ return;
147
+ }
148
+ if (JSON.stringify(propsRef.current) === JSON.stringify(nextProps)) return;
149
+ propsRef.current = nextProps;
150
+ secondsRef.current = toSeconds(day, hours, minutes, seconds);
151
+ clearTimer();
152
+ setTimer();
153
+ }, [
154
+ customStyle,
155
+ className,
156
+ mergedFormat,
157
+ isCard,
158
+ isShowDay,
159
+ isShowHour,
160
+ isShowMinute,
161
+ day,
162
+ hours,
163
+ minutes,
164
+ seconds,
165
+ onTimeUp,
166
+ clearTimer,
167
+ setTimer
168
+ ]);
169
+ useEffect(() => {
170
+ setTimer();
171
+ return () => {
172
+ clearTimer();
173
+ };
174
+ }, [setTimer, clearTimer]);
175
+ useDidHide(() => {
176
+ clearTimer();
177
+ });
178
+ useDidShow(() => {
179
+ setTimer();
180
+ });
181
+ return /* @__PURE__ */ React.createElement(
182
+ View,
183
+ {
184
+ className: classNames(
185
+ {
186
+ "at-countdown": true,
187
+ "at-countdown--card": isCard
188
+ },
189
+ className
190
+ ),
191
+ style: customStyle
192
+ },
193
+ isShowDay && /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _day, separator: mergedFormat.day }),
194
+ isShowHour && /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _hours, separator: mergedFormat.hours }),
195
+ isShowMinute && /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _minutes, separator: mergedFormat.minutes }),
196
+ /* @__PURE__ */ React.createElement(AtCountdownItem, { num: _seconds, separator: mergedFormat.seconds })
197
+ );
121
198
  }
122
- AtCountdown.defaultProps = {
123
- customStyle: "",
124
- className: "",
125
- isCard: false,
126
- isShowDay: false,
127
- isShowHour: true,
128
- isShowMinute: true,
129
- format: defaultFormat,
130
- day: 0,
131
- hours: 0,
132
- minutes: 0,
133
- seconds: 0
134
- };
135
199
  AtCountdown.propTypes = {
136
200
  customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
137
201
  className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
@@ -146,7 +210,8 @@ AtCountdown.propTypes = {
146
210
  seconds: PropTypes.number,
147
211
  onTimeUp: PropTypes.func
148
212
  };
213
+ var countdown_default = AtCountdown;
149
214
  export {
150
- AtCountdown as default
215
+ countdown_default as default
151
216
  };
152
217
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/countdown/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes, { InferProps } from 'prop-types'\nimport React from 'react'\nimport { View } from '@tarojs/components'\nimport { AtCountDownProps, AtCountdownState } from '../../../types/countdown'\nimport AtCountdownItem from './item'\n\ntype TimeObject = {\n day: number\n hours: number\n minutes: number\n seconds: number\n}\n\nconst toSeconds = (\n day: number,\n hours: number,\n minutes: number,\n seconds: number\n): number => day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds\n\nconst defaultFormat = {\n day: '天',\n hours: '时',\n minutes: '分',\n seconds: '秒'\n}\n\nexport default class AtCountdown extends React.Component<\n AtCountDownProps,\n AtCountdownState\n> {\n public static defaultProps: AtCountDownProps\n public static propTypes: InferProps<AtCountDownProps>\n\n private seconds: number\n private timer: NodeJS.Timeout | number | undefined\n\n public constructor(props: AtCountDownProps) {\n super(props)\n const { day = 0, hours = 0, minutes = 0, seconds = 0 } = this.props\n this.seconds = toSeconds(day, hours, minutes, seconds)\n const {\n day: _day,\n hours: _hours,\n minutes: _minutes,\n seconds: _seconds\n } = this.calculateTime()\n\n this.state = {\n _day,\n _hours,\n _minutes,\n _seconds\n }\n }\n\n private setTimer(): void {\n if (!this.timer) this.countdonwn()\n }\n\n private clearTimer(): void {\n if (this.timer) {\n clearTimeout(this.timer as number)\n this.timer = 0\n }\n }\n\n private calculateTime(): TimeObject {\n let [day, hours, minutes, seconds] = [0, 0, 0, 0]\n\n if (this.seconds > 0) {\n day = this.props.isShowDay ? Math.floor(this.seconds / (60 * 60 * 24)) : 0\n hours = this.props.isShowHour\n ? Math.floor(this.seconds / (60 * 60)) - day * 24\n : 0\n minutes = this.props.isShowMinute\n ? Math.floor(this.seconds / 60) - day * 24 * 60 - hours * 60\n : 0\n seconds =\n Math.floor(this.seconds) -\n day * 24 * 60 * 60 -\n hours * 60 * 60 -\n minutes * 60\n }\n return {\n day,\n hours,\n minutes,\n seconds\n }\n }\n\n private countdonwn(): void {\n const { day, hours, minutes, seconds } = this.calculateTime()\n\n this.setState({\n _day: day,\n _hours: hours,\n _minutes: minutes,\n _seconds: seconds\n })\n this.seconds--\n\n if (this.seconds < 0) {\n this.clearTimer()\n this.props.onTimeUp && this.props.onTimeUp()\n return\n }\n\n this.timer = setTimeout(() => {\n this.countdonwn()\n }, 1000)\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: AtCountDownProps): void {\n if (JSON.stringify(this.props) === JSON.stringify(nextProps)) return\n\n const { day = 0, hours = 0, minutes = 0, seconds = 0 } = nextProps\n this.seconds = toSeconds(day, hours, minutes, seconds)\n this.clearTimer()\n this.setTimer()\n }\n\n public componentDidMount(): void {\n this.setTimer()\n }\n\n public componentWillUnmount(): void {\n this.clearTimer()\n }\n\n public componentDidHide(): void {\n this.clearTimer()\n }\n\n public componentDidShow(): void {\n this.setTimer()\n }\n\n public render(): JSX.Element {\n const {\n className,\n customStyle,\n format = defaultFormat,\n isCard,\n isShowDay,\n isShowHour,\n isShowMinute\n } = this.props\n\n const { _day, _hours, _minutes, _seconds } = this.state\n\n return (\n <View\n className={classNames(\n {\n 'at-countdown': true,\n 'at-countdown--card': isCard\n },\n className\n )}\n style={customStyle}\n >\n {isShowDay && (\n <AtCountdownItem num={_day} separator={format?.day || '天'} />\n )}\n {isShowHour && (\n <AtCountdownItem num={_hours} separator={format?.hours || ''} />\n )}\n {isShowMinute && (\n <AtCountdownItem num={_minutes} separator={format?.minutes || ''} />\n )}\n <AtCountdownItem num={_seconds} separator={format?.seconds || ''} />\n </View>\n )\n }\n}\n\nAtCountdown.defaultProps = {\n customStyle: '',\n className: '',\n isCard: false,\n isShowDay: false,\n isShowHour: true,\n isShowMinute: true,\n format: defaultFormat,\n day: 0,\n hours: 0,\n minutes: 0,\n seconds: 0\n}\n\nAtCountdown.propTypes = {\n customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n isCard: PropTypes.bool,\n isShowDay: PropTypes.bool,\n isShowHour: PropTypes.bool,\n isShowMinute: PropTypes.bool,\n format: PropTypes.object,\n day: PropTypes.number,\n hours: PropTypes.number,\n minutes: PropTypes.number,\n seconds: PropTypes.number,\n onTimeUp: PropTypes.func\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/countdown/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { View } from '@tarojs/components'\nimport { useDidHide, useDidShow } from '@tarojs/taro'\nimport { useComponentLocale } from '../../hooks/useComponentLocale'\nimport { AtCountDownProps } from '../../../types/countdown'\nimport AtCountdownItem from './item'\n\ntype TimeObject = {\n day: number\n hours: number\n minutes: number\n seconds: number\n}\n\nconst toSeconds = (\n day: number,\n hours: number,\n minutes: number,\n seconds: number\n): number => day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds\n\nfunction AtCountdown({\n customStyle = '',\n className = '',\n format,\n isCard = false,\n isShowDay = false,\n isShowHour = true,\n isShowMinute = true,\n day = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n onTimeUp\n}: AtCountDownProps): JSX.Element {\n const locale = useComponentLocale('Countdown')\n const mergedFormat = useMemo(\n () => ({\n day: format?.day ?? locale.day,\n hours: format?.hours ?? locale.hours,\n minutes: format?.minutes ?? locale.minutes,\n seconds: format?.seconds ?? locale.seconds\n }),\n [\n format?.day,\n format?.hours,\n format?.minutes,\n format?.seconds,\n locale.day,\n locale.hours,\n locale.minutes,\n locale.seconds\n ]\n )\n const propsRef = useRef<AtCountDownProps>({\n customStyle,\n className,\n format: mergedFormat,\n isCard,\n isShowDay,\n isShowHour,\n isShowMinute,\n day,\n hours,\n minutes,\n seconds,\n onTimeUp\n })\n const isMountedRef = useRef(false)\n const secondsRef = useRef(toSeconds(day, hours, minutes, seconds))\n const timerRef = useRef<NodeJS.Timeout | number>()\n\n const calculateTime = useCallback((): TimeObject => {\n let [calcDay, calcHours, calcMinutes, calcSeconds] = [0, 0, 0, 0]\n\n if (secondsRef.current > 0) {\n calcDay = isShowDay ? Math.floor(secondsRef.current / (60 * 60 * 24)) : 0\n calcHours = isShowHour\n ? Math.floor(secondsRef.current / (60 * 60)) - calcDay * 24\n : 0\n calcMinutes = isShowMinute\n ? Math.floor(secondsRef.current / 60) -\n calcDay * 24 * 60 -\n calcHours * 60\n : 0\n calcSeconds =\n Math.floor(secondsRef.current) -\n calcDay * 24 * 60 * 60 -\n calcHours * 60 * 60 -\n calcMinutes * 60\n }\n return {\n day: calcDay,\n hours: calcHours,\n minutes: calcMinutes,\n seconds: calcSeconds\n }\n }, [isShowDay, isShowHour, isShowMinute])\n\n const initialTime = calculateTime()\n const [_day, setDay] = useState(initialTime.day)\n const [_hours, setHours] = useState(initialTime.hours)\n const [_minutes, setMinutes] = useState(initialTime.minutes)\n const [_seconds, setSeconds] = useState(initialTime.seconds)\n\n const clearTimer = useCallback((): void => {\n if (timerRef.current) {\n clearTimeout(timerRef.current as number)\n timerRef.current = 0\n }\n }, [])\n\n const countdown = useCallback((): void => {\n const {\n day: calcDay,\n hours: calcHours,\n minutes: calcMinutes,\n seconds: calcSeconds\n } = calculateTime()\n\n setDay(calcDay)\n setHours(calcHours)\n setMinutes(calcMinutes)\n setSeconds(calcSeconds)\n secondsRef.current--\n\n if (secondsRef.current < 0) {\n clearTimer()\n onTimeUp && onTimeUp()\n return\n }\n\n timerRef.current = setTimeout(() => {\n countdown()\n }, 1000)\n }, [calculateTime, clearTimer, onTimeUp])\n\n const setTimer = useCallback((): void => {\n if (!timerRef.current) countdown()\n }, [countdown])\n\n useEffect(() => {\n propsRef.current = {\n customStyle,\n className,\n format: mergedFormat,\n isCard,\n isShowDay,\n isShowHour,\n isShowMinute,\n day,\n hours,\n minutes,\n seconds,\n onTimeUp\n }\n })\n\n useEffect(() => {\n const nextProps = {\n customStyle,\n className,\n format: mergedFormat,\n isCard,\n isShowDay,\n isShowHour,\n isShowMinute,\n day,\n hours,\n minutes,\n seconds,\n onTimeUp\n }\n if (!isMountedRef.current) {\n isMountedRef.current = true\n propsRef.current = nextProps\n return\n }\n if (JSON.stringify(propsRef.current) === JSON.stringify(nextProps)) return\n\n propsRef.current = nextProps\n secondsRef.current = toSeconds(day, hours, minutes, seconds)\n clearTimer()\n setTimer()\n }, [\n customStyle,\n className,\n mergedFormat,\n isCard,\n isShowDay,\n isShowHour,\n isShowMinute,\n day,\n hours,\n minutes,\n seconds,\n onTimeUp,\n clearTimer,\n setTimer\n ])\n\n useEffect(() => {\n setTimer()\n return () => {\n clearTimer()\n }\n }, [setTimer, clearTimer])\n\n useDidHide(() => {\n clearTimer()\n })\n\n useDidShow(() => {\n setTimer()\n })\n\n return (\n <View\n className={classNames(\n {\n 'at-countdown': true,\n 'at-countdown--card': isCard\n },\n className\n )}\n style={customStyle}\n >\n {isShowDay && <AtCountdownItem num={_day} separator={mergedFormat.day} />}\n {isShowHour && (\n <AtCountdownItem num={_hours} separator={mergedFormat.hours} />\n )}\n {isShowMinute && (\n <AtCountdownItem num={_minutes} separator={mergedFormat.minutes} />\n )}\n <AtCountdownItem num={_seconds} separator={mergedFormat.seconds} />\n </View>\n )\n}\n\nAtCountdown.propTypes = {\n customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n isCard: PropTypes.bool,\n isShowDay: PropTypes.bool,\n isShowHour: PropTypes.bool,\n isShowMinute: PropTypes.bool,\n format: PropTypes.object,\n day: PropTypes.number,\n hours: PropTypes.number,\n minutes: PropTypes.number,\n seconds: PropTypes.number,\n onTimeUp: PropTypes.func\n}\n\nexport default AtCountdown\n"],"mappings":"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","names":[]}
@@ -1,9 +1,10 @@
1
- import { InferProps } from 'prop-types';
2
- import React from 'react';
1
+ import PropTypes from 'prop-types';
3
2
  import { AtCountdownItemProps } from '../../../../types/countdown';
4
- export default class AtCountdownItem extends React.Component<AtCountdownItemProps> {
5
- static defaultProps: AtCountdownItemProps;
6
- static propTypes: InferProps<AtCountdownItemProps>;
7
- private formatNum;
8
- render(): JSX.Element;
3
+ declare function AtCountdownItem({ num, separator }: AtCountdownItemProps): JSX.Element;
4
+ declare namespace AtCountdownItem {
5
+ var propTypes: {
6
+ num: PropTypes.Validator<number>;
7
+ separator: PropTypes.Requireable<string>;
8
+ };
9
9
  }
10
+ export default AtCountdownItem;
@@ -1,24 +1,21 @@
1
1
  import PropTypes from "prop-types";
2
2
  import React from "react";
3
3
  import { Text, View } from "@tarojs/components";
4
- class AtCountdownItem extends React.Component {
5
- formatNum(num) {
6
- return num <= 9 ? `0${num}` : `${num}`;
7
- }
8
- render() {
9
- const { num, separator } = this.props;
10
- return /* @__PURE__ */ React.createElement(View, { className: "at-countdown__item" }, /* @__PURE__ */ React.createElement(View, { className: "at-countdown__time-box" }, /* @__PURE__ */ React.createElement(Text, { className: "at-countdown__time" }, this.formatNum(num))), /* @__PURE__ */ React.createElement(Text, { className: "at-countdown__separator" }, separator));
11
- }
4
+ function formatNum(num) {
5
+ return num <= 9 ? `0${num}` : `${num}`;
6
+ }
7
+ function AtCountdownItem({
8
+ num = 0,
9
+ separator = ":"
10
+ }) {
11
+ return /* @__PURE__ */ React.createElement(View, { className: "at-countdown__item" }, /* @__PURE__ */ React.createElement(View, { className: "at-countdown__time-box" }, /* @__PURE__ */ React.createElement(Text, { className: "at-countdown__time" }, formatNum(num))), /* @__PURE__ */ React.createElement(Text, { className: "at-countdown__separator" }, separator));
12
12
  }
13
- AtCountdownItem.defaultProps = {
14
- num: 0,
15
- separator: ":"
16
- };
17
13
  AtCountdownItem.propTypes = {
18
14
  num: PropTypes.number.isRequired,
19
15
  separator: PropTypes.string
20
16
  };
17
+ var item_default = AtCountdownItem;
21
18
  export {
22
- AtCountdownItem as default
19
+ item_default as default
23
20
  };
24
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/countdown/item/index.tsx"],"sourcesContent":["import PropTypes, { InferProps } from 'prop-types'\nimport React from 'react'\nimport { Text, View } from '@tarojs/components'\nimport { AtCountdownItemProps } from '../../../../types/countdown'\n\nexport default class AtCountdownItem extends React.Component<AtCountdownItemProps> {\n public static defaultProps: AtCountdownItemProps\n public static propTypes: InferProps<AtCountdownItemProps>\n\n private formatNum(num: number): string {\n return num <= 9 ? `0${num}` : `${num}`\n }\n\n public render(): JSX.Element {\n const { num, separator } = this.props\n\n return (\n <View className='at-countdown__item'>\n <View className='at-countdown__time-box'>\n <Text className='at-countdown__time'>{this.formatNum(num)}</Text>\n </View>\n <Text className='at-countdown__separator'>{separator}</Text>\n </View>\n )\n }\n}\n\nAtCountdownItem.defaultProps = {\n num: 0,\n separator: ':'\n}\n\nAtCountdownItem.propTypes = {\n num: PropTypes.number.isRequired,\n separator: PropTypes.string\n}\n"],"mappings":"AAAA,OAAO,eAA+B;AACtC,OAAO,WAAW;AAClB,SAAS,MAAM,YAAY;AAG3B,MAAO,wBAAsC,MAAM,UAAgC;AAAA,EAIzE,UAAU,KAAqB;AACrC,WAAO,OAAO,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG;AAAA,EACtC;AAAA,EAEO,SAAsB;AAC3B,UAAM,EAAE,KAAK,UAAU,IAAI,KAAK;AAEhC,WACE,oCAAC,QAAK,WAAU,wBACd,oCAAC,QAAK,WAAU,4BACd,oCAAC,QAAK,WAAU,wBAAsB,KAAK,UAAU,GAAG,CAAE,CAC5D,GACA,oCAAC,QAAK,WAAU,6BAA2B,SAAU,CACvD;AAAA,EAEJ;AACF;AAEA,gBAAgB,eAAe;AAAA,EAC7B,KAAK;AAAA,EACL,WAAW;AACb;AAEA,gBAAgB,YAAY;AAAA,EAC1B,KAAK,UAAU,OAAO;AAAA,EACtB,WAAW,UAAU;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/countdown/item/index.tsx"],"sourcesContent":["import PropTypes from 'prop-types'\nimport React from 'react'\nimport { Text, View } from '@tarojs/components'\nimport { AtCountdownItemProps } from '../../../../types/countdown'\n\nfunction formatNum(num: number): string {\n return num <= 9 ? `0${num}` : `${num}`\n}\n\nfunction AtCountdownItem({\n num = 0,\n separator = ':'\n}: AtCountdownItemProps): JSX.Element {\n return (\n <View className='at-countdown__item'>\n <View className='at-countdown__time-box'>\n <Text className='at-countdown__time'>{formatNum(num)}</Text>\n </View>\n <Text className='at-countdown__separator'>{separator}</Text>\n </View>\n )\n}\n\nAtCountdownItem.propTypes = {\n num: PropTypes.number.isRequired,\n separator: PropTypes.string\n}\n\nexport default AtCountdownItem\n"],"mappings":"AAAA,OAAO,eAAe;AACtB,OAAO,WAAW;AAClB,SAAS,MAAM,YAAY;AAG3B,SAAS,UAAU,KAAqB;AACtC,SAAO,OAAO,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG;AACtC;AAEA,SAAS,gBAAgB;AAAA,EACvB,MAAM;AAAA,EACN,YAAY;AACd,GAAsC;AACpC,SACE,oCAAC,QAAK,WAAU,wBACd,oCAAC,QAAK,WAAU,4BACd,oCAAC,QAAK,WAAU,wBAAsB,UAAU,GAAG,CAAE,CACvD,GACA,oCAAC,QAAK,WAAU,6BAA2B,SAAU,CACvD;AAEJ;AAEA,gBAAgB,YAAY;AAAA,EAC1B,KAAK,UAAU,OAAO;AAAA,EACtB,WAAW,UAAU;AACvB;AAEA,IAAO,eAAQ;","names":[]}
@@ -1,10 +1,13 @@
1
- import { InferProps } from 'prop-types';
2
- import React from 'react';
1
+ import PropTypes from 'prop-types';
3
2
  import { AtCurtainProps } from '../../../types/curtain';
4
- export default class AtCurtain extends React.Component<AtCurtainProps> {
5
- static defaultProps: AtCurtainProps;
6
- static propTypes: InferProps<AtCurtainProps>;
7
- private onClose;
8
- private _stopPropagation;
9
- render(): JSX.Element;
3
+ declare function AtCurtain({ className, customStyle, isOpened, closeBtnPosition, onClose, children }: AtCurtainProps): JSX.Element;
4
+ declare namespace AtCurtain {
5
+ var propTypes: {
6
+ customStyle: PropTypes.Requireable<NonNullable<string | object | null | undefined>>;
7
+ className: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>;
8
+ isOpened: PropTypes.Requireable<boolean>;
9
+ closeBtnPosition: PropTypes.Requireable<string>;
10
+ onClose: PropTypes.Requireable<(...args: any[]) => any>;
11
+ };
10
12
  }
13
+ export default AtCurtain;
@@ -2,53 +2,43 @@ 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 AtCurtain extends React.Component {
6
- onClose(e) {
5
+ import { noop } from "../../common/utils";
6
+ function AtCurtain({
7
+ className = "",
8
+ customStyle = "",
9
+ isOpened = false,
10
+ closeBtnPosition = "bottom",
11
+ onClose = noop,
12
+ children
13
+ }) {
14
+ const handleClose = (e) => {
7
15
  e.stopPropagation();
8
- this.props.onClose(e);
9
- }
10
- _stopPropagation(e) {
16
+ onClose(e);
17
+ };
18
+ const stopPropagation = (e) => {
11
19
  e.stopPropagation();
12
- }
13
- render() {
14
- const { className, customStyle, isOpened, closeBtnPosition } = this.props;
15
- const curtainClass = classNames(
16
- {
17
- "at-curtain": true,
18
- "at-curtain--closed": !isOpened
19
- },
20
- className
21
- );
22
- const btnCloseClass = classNames({
23
- "at-curtain__btn-close": true,
24
- [`at-curtain__btn-close--${closeBtnPosition}`]: closeBtnPosition
25
- });
26
- return /* @__PURE__ */ React.createElement(
27
- View,
28
- {
29
- className: curtainClass,
30
- style: customStyle,
31
- onClick: this._stopPropagation
32
- },
33
- /* @__PURE__ */ React.createElement(View, { className: "at-curtain__container" }, /* @__PURE__ */ React.createElement(View, { className: "at-curtain__body" }, this.props.children, /* @__PURE__ */ React.createElement(
34
- View,
35
- {
36
- className: btnCloseClass,
37
- onClick: this.onClose.bind(this)
38
- }
39
- )))
40
- );
41
- }
20
+ };
21
+ const curtainClass = classNames(
22
+ {
23
+ "at-curtain": true,
24
+ "at-curtain--closed": !isOpened
25
+ },
26
+ className
27
+ );
28
+ const btnCloseClass = classNames({
29
+ "at-curtain__btn-close": true,
30
+ [`at-curtain__btn-close--${closeBtnPosition}`]: closeBtnPosition
31
+ });
32
+ return /* @__PURE__ */ React.createElement(
33
+ View,
34
+ {
35
+ className: curtainClass,
36
+ style: customStyle,
37
+ onClick: stopPropagation
38
+ },
39
+ /* @__PURE__ */ React.createElement(View, { className: "at-curtain__container" }, /* @__PURE__ */ React.createElement(View, { className: "at-curtain__body" }, children, /* @__PURE__ */ React.createElement(View, { className: btnCloseClass, onClick: handleClose })))
40
+ );
42
41
  }
43
- AtCurtain.defaultProps = {
44
- customStyle: "",
45
- className: "",
46
- isOpened: false,
47
- closeBtnPosition: "bottom",
48
- // eslint-disable-next-line @typescript-eslint/no-empty-function
49
- onClose: () => {
50
- }
51
- };
52
42
  AtCurtain.propTypes = {
53
43
  customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
54
44
  className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
@@ -56,7 +46,8 @@ AtCurtain.propTypes = {
56
46
  closeBtnPosition: PropTypes.string,
57
47
  onClose: PropTypes.func
58
48
  };
49
+ var curtain_default = AtCurtain;
59
50
  export {
60
- AtCurtain as default
51
+ curtain_default as default
61
52
  };
62
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/curtain/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes, { InferProps } from 'prop-types'\nimport React from 'react'\nimport { View } from '@tarojs/components'\nimport { CommonEvent } from '@tarojs/components/types/common'\nimport { AtCurtainProps } from '../../../types/curtain'\n\nexport default class AtCurtain extends React.Component<AtCurtainProps> {\n public static defaultProps: AtCurtainProps\n public static propTypes: InferProps<AtCurtainProps>\n\n private onClose(e: CommonEvent): void {\n e.stopPropagation()\n this.props.onClose(e)\n }\n\n private _stopPropagation(e: CommonEvent): void {\n e.stopPropagation()\n }\n\n public render(): JSX.Element {\n const { className, customStyle, isOpened, closeBtnPosition } = this.props\n\n const curtainClass = classNames(\n {\n 'at-curtain': true,\n 'at-curtain--closed': !isOpened\n },\n className\n )\n const btnCloseClass = classNames({\n 'at-curtain__btn-close': true,\n [`at-curtain__btn-close--${closeBtnPosition}`]: closeBtnPosition\n })\n\n return (\n <View\n className={curtainClass}\n style={customStyle}\n onClick={this._stopPropagation}\n >\n <View className='at-curtain__container'>\n <View className='at-curtain__body'>\n {this.props.children}\n <View\n className={btnCloseClass}\n onClick={this.onClose.bind(this)}\n ></View>\n </View>\n </View>\n </View>\n )\n }\n}\n\nAtCurtain.defaultProps = {\n customStyle: '',\n className: '',\n isOpened: false,\n closeBtnPosition: 'bottom',\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onClose: (): void => {}\n}\n\nAtCurtain.propTypes = {\n customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n isOpened: PropTypes.bool,\n closeBtnPosition: PropTypes.string,\n onClose: PropTypes.func\n}\n"],"mappings":"AAAA,OAAO,gBAAgB;AACvB,OAAO,eAA+B;AACtC,OAAO,WAAW;AAClB,SAAS,YAAY;AAIrB,MAAO,kBAAgC,MAAM,UAA0B;AAAA,EAI7D,QAAQ,GAAsB;AACpC,MAAE,gBAAgB;AAClB,SAAK,MAAM,QAAQ,CAAC;AAAA,EACtB;AAAA,EAEQ,iBAAiB,GAAsB;AAC7C,MAAE,gBAAgB;AAAA,EACpB;AAAA,EAEO,SAAsB;AAC3B,UAAM,EAAE,WAAW,aAAa,UAAU,iBAAiB,IAAI,KAAK;AAEpE,UAAM,eAAe;AAAA,MACnB;AAAA,QACE,cAAc;AAAA,QACd,sBAAsB,CAAC;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AACA,UAAM,gBAAgB,WAAW;AAAA,MAC/B,yBAAyB;AAAA,MACzB,CAAC,0BAA0B,gBAAgB,EAAE,GAAG;AAAA,IAClD,CAAC;AAED,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QACX,OAAO;AAAA,QACP,SAAS,KAAK;AAAA;AAAA,MAEd,oCAAC,QAAK,WAAU,2BACd,oCAAC,QAAK,WAAU,sBACb,KAAK,MAAM,UACZ;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,SAAS,KAAK,QAAQ,KAAK,IAAI;AAAA;AAAA,MAChC,CACH,CACF;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,UAAU,eAAe;AAAA,EACvB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,kBAAkB;AAAA;AAAA,EAElB,SAAS,MAAY;AAAA,EAAC;AACxB;AAEA,UAAU,YAAY;AAAA,EACpB,aAAa,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,CAAC;AAAA,EACrE,WAAW,UAAU,UAAU,CAAC,UAAU,OAAO,UAAU,MAAM,CAAC;AAAA,EAClE,UAAU,UAAU;AAAA,EACpB,kBAAkB,UAAU;AAAA,EAC5B,SAAS,UAAU;AACrB;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/curtain/index.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport React from 'react'\nimport { View } from '@tarojs/components'\nimport { CommonEvent } from '@tarojs/components/types/common'\nimport { AtCurtainProps } from '../../../types/curtain'\nimport { noop } from '../../common/utils'\n\nfunction AtCurtain({\n className = '',\n customStyle = '',\n isOpened = false,\n closeBtnPosition = 'bottom',\n onClose = noop,\n children\n}: AtCurtainProps): JSX.Element {\n const handleClose = (e: CommonEvent): void => {\n e.stopPropagation()\n onClose(e)\n }\n\n const stopPropagation = (e: CommonEvent): void => {\n e.stopPropagation()\n }\n\n const curtainClass = classNames(\n {\n 'at-curtain': true,\n 'at-curtain--closed': !isOpened\n },\n className\n )\n const btnCloseClass = classNames({\n 'at-curtain__btn-close': true,\n [`at-curtain__btn-close--${closeBtnPosition}`]: closeBtnPosition\n })\n\n return (\n <View\n className={curtainClass}\n style={customStyle}\n onClick={stopPropagation}\n >\n <View className='at-curtain__container'>\n <View className='at-curtain__body'>\n {children}\n <View className={btnCloseClass} onClick={handleClose}></View>\n </View>\n </View>\n </View>\n )\n}\n\nAtCurtain.propTypes = {\n customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n isOpened: PropTypes.bool,\n closeBtnPosition: PropTypes.string,\n onClose: PropTypes.func\n}\n\nexport default AtCurtain\n"],"mappings":"AAAA,OAAO,gBAAgB;AACvB,OAAO,eAAe;AACtB,OAAO,WAAW;AAClB,SAAS,YAAY;AAGrB,SAAS,YAAY;AAErB,SAAS,UAAU;AAAA,EACjB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,UAAU;AAAA,EACV;AACF,GAAgC;AAC9B,QAAM,cAAc,CAAC,MAAyB;AAC5C,MAAE,gBAAgB;AAClB,YAAQ,CAAC;AAAA,EACX;AAEA,QAAM,kBAAkB,CAAC,MAAyB;AAChD,MAAE,gBAAgB;AAAA,EACpB;AAEA,QAAM,eAAe;AAAA,IACnB;AAAA,MACE,cAAc;AAAA,MACd,sBAAsB,CAAC;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACA,QAAM,gBAAgB,WAAW;AAAA,IAC/B,yBAAyB;AAAA,IACzB,CAAC,0BAA0B,gBAAgB,EAAE,GAAG;AAAA,EAClD,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA;AAAA,IAET,oCAAC,QAAK,WAAU,2BACd,oCAAC,QAAK,WAAU,sBACb,UACD,oCAAC,QAAK,WAAW,eAAe,SAAS,aAAa,CACxD,CACF;AAAA,EACF;AAEJ;AAEA,UAAU,YAAY;AAAA,EACpB,aAAa,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,CAAC;AAAA,EACrE,WAAW,UAAU,UAAU,CAAC,UAAU,OAAO,UAAU,MAAM,CAAC;AAAA,EAClE,UAAU,UAAU;AAAA,EACpB,kBAAkB,UAAU;AAAA,EAC5B,SAAS,UAAU;AACrB;AAEA,IAAO,kBAAQ;","names":[]}