taro-react-uilib 1.4.19-3 → 1.4.19-4
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.
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
@import "../../styles/themes/variable.scss";
|
|
2
|
+
|
|
3
|
+
#{$xh-prefix}-countdown {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
&-time{
|
|
7
|
+
min-width: 32px;
|
|
8
|
+
height: 32px;
|
|
9
|
+
line-height: 32px;
|
|
10
|
+
background: var(--color-primary-secondary);
|
|
11
|
+
border-radius: 6px;
|
|
12
|
+
color: var(--color-primary-reverse);
|
|
13
|
+
font-size: 24px;
|
|
14
|
+
text-align: center;
|
|
15
|
+
}
|
|
16
|
+
&-dot{
|
|
17
|
+
color: var(--color-primary-secondary);
|
|
18
|
+
padding: 3px;
|
|
19
|
+
font-weight: 500;
|
|
20
|
+
font-size: 18px;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React, { useState, useEffect, useRef } from "react";
|
|
2
|
+
import { View } from "@tarojs/components";
|
|
3
|
+
import "./index.scss";
|
|
4
|
+
const Countdown = props => {
|
|
5
|
+
const { expireDate, overTimeCb, customStyle = false, isPause = false, onTimeChange, } = props;
|
|
6
|
+
const [hour, setHour] = useState("");
|
|
7
|
+
const [min, setMin] = useState("");
|
|
8
|
+
const [sec, setSec] = useState("");
|
|
9
|
+
const [showTime, setShowTime] = useState(false);
|
|
10
|
+
const timer = useRef(null);
|
|
11
|
+
let counttime = 0;
|
|
12
|
+
const countdown = () => {
|
|
13
|
+
let h;
|
|
14
|
+
let m;
|
|
15
|
+
let s;
|
|
16
|
+
const endTime = new Date(expireDate).getTime();
|
|
17
|
+
let nowTime = Date.now();
|
|
18
|
+
const distance = endTime - nowTime;
|
|
19
|
+
/** 剩余时间 */
|
|
20
|
+
onTimeChange && onTimeChange(distance);
|
|
21
|
+
counttime = Math.floor(distance / 1000);
|
|
22
|
+
/** 截止时间过期,不展示倒计时 */
|
|
23
|
+
if (counttime <= 0) {
|
|
24
|
+
setShowTime(false);
|
|
25
|
+
clearInterval(timer.current);
|
|
26
|
+
overTimeCb === null || overTimeCb === void 0 ? void 0 : overTimeCb();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
setShowTime(true);
|
|
30
|
+
// 秒
|
|
31
|
+
s = counttime % 60;
|
|
32
|
+
s = s < 10 ? "0" + s : s;
|
|
33
|
+
setSec(s);
|
|
34
|
+
// 分
|
|
35
|
+
m = Math.floor((counttime / 60) % 60);
|
|
36
|
+
m = m < 10 ? "0" + m : m;
|
|
37
|
+
setMin(m);
|
|
38
|
+
// 小时
|
|
39
|
+
h = Math.floor(counttime / 60 / 60);
|
|
40
|
+
h = h < 10 ? "0" + h : h;
|
|
41
|
+
setHour(h);
|
|
42
|
+
};
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
// 调用setInterval()方法:间隔指定的毫秒数不停地执行
|
|
45
|
+
if (expireDate) {
|
|
46
|
+
clearInterval(timer.current);
|
|
47
|
+
if (!isPause) {
|
|
48
|
+
timer.current = setInterval(() => {
|
|
49
|
+
countdown();
|
|
50
|
+
}, 1000);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}, [expireDate, isPause]);
|
|
54
|
+
return (React.createElement(React.Fragment, null, showTime &&
|
|
55
|
+
(customStyle ? (React.createElement(React.Fragment, null,
|
|
56
|
+
hour,
|
|
57
|
+
":",
|
|
58
|
+
min,
|
|
59
|
+
":",
|
|
60
|
+
sec)) : (React.createElement(View, { className: "xh-countdown" },
|
|
61
|
+
React.createElement(View, { className: "xh-countdown-time" }, hour),
|
|
62
|
+
React.createElement(View, { className: "xh-countdown-dot" }, ":"),
|
|
63
|
+
React.createElement(View, { className: "xh-countdown-time" }, min),
|
|
64
|
+
React.createElement(View, { className: "xh-countdown-dot" }, ":"),
|
|
65
|
+
React.createElement(View, { className: "xh-countdown-time" }, sec))))));
|
|
66
|
+
};
|
|
67
|
+
export default Countdown;
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Countdown/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,cAAc,CAAC;AAUtB,MAAM,SAAS,GAA6B,KAAK,CAAC,EAAE;IAClD,MAAM,EACJ,UAAU,EACV,UAAU,EACV,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,EACf,YAAY,GACb,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAEhC,IAAI,SAAS,GAAW,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QAEN,MAAM,OAAO,GAAW,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;QACnC,WAAW;QACX,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEvC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAExC,oBAAoB;QACpB,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,UAAU,aAAV,UAAU,uBAAV,UAAU,EAAI,CAAC;YACf,OAAO;SACR;QACD,WAAW,CAAC,IAAI,CAAC,CAAC;QAElB,IAAI;QACJ,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC;QACnB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,CAAC,CAAC,CAAC;QACV,IAAI;QACJ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,CAAC,CAAC,CAAC;QACV,KAAK;QACL,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,kCAAkC;QAClC,IAAI,UAAU,EAAE;YACd,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,EAAE;gBACZ,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;oBAC/B,SAAS,EAAE,CAAC;gBACd,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;SACF;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,QACZ,QAAQ;QACP,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,oBAAC,KAAK,CAAC,QAAQ;YACZ,IAAI;;YAAG,GAAG;;YAAG,GAAG,CACF,CAClB,CAAC,CAAC,CAAC,CACF,oBAAC,IAAI,IAAC,SAAS,EAAC,cAAc;YAC5B,oBAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,IAAE,IAAI,CAAQ;YACjD,oBAAC,IAAI,IAAC,SAAS,EAAC,kBAAkB,QAAS;YAC3C,oBAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,IAAE,GAAG,CAAQ;YAChD,oBAAC,IAAI,IAAC,SAAS,EAAC,kBAAkB,QAAS;YAC3C,oBAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,IAAE,GAAG,CAAQ,CAC3C,CACR,CAAC,CACW,CAClB,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "./index.scss";
|
|
3
|
+
export declare type CountdownProps = {
|
|
4
|
+
expireDate: string | number;
|
|
5
|
+
overTimeCb?: () => void;
|
|
6
|
+
customStyle?: boolean;
|
|
7
|
+
isPause?: boolean;
|
|
8
|
+
onTimeChange?: (distance: number) => void;
|
|
9
|
+
};
|
|
10
|
+
declare const Countdown: React.FC<CountdownProps>;
|
|
11
|
+
export default Countdown;
|