From b02510e26e7e9bc292a1779bd23801014b94aad4 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 26 Apr 2023 17:23:52 +0700 Subject: flash sale and countdown --- .../components/elements/CountDown/CountDown.jsx | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/core/components/elements/CountDown/CountDown.jsx (limited to 'src/core/components/elements/CountDown/CountDown.jsx') diff --git a/src/core/components/elements/CountDown/CountDown.jsx b/src/core/components/elements/CountDown/CountDown.jsx new file mode 100644 index 00000000..49a33d77 --- /dev/null +++ b/src/core/components/elements/CountDown/CountDown.jsx @@ -0,0 +1,55 @@ +import { useEffect, useState } from 'react' + +const CountDown = ({ initialTime }) => { + const days = Math.floor(initialTime / 86400) + const hours = Math.floor((initialTime % 86400) / 3600) + const minutes = Math.floor((initialTime % 3600) / 60) + const seconds = initialTime % 60 + + const [timeLeft, setTimeLeft] = useState({ + day: days, + hour: hours, + minute: minutes, + second: seconds + }) + + useEffect(() => { + const timer = setInterval(() => { + const totalSeconds = timeLeft.day * 86400 + timeLeft.hour * 3600 + timeLeft.minute * 60 + timeLeft.second + const secondsLeft = totalSeconds - 1 + if (secondsLeft < 0) { + clearInterval(timer) + } else { + const days = Math.floor(secondsLeft / 86400) + const hours = Math.floor((secondsLeft % 86400) / 3600) + const minutes = Math.floor((secondsLeft % 3600) / 60) + const seconds = secondsLeft % 60 + setTimeLeft({ day: days, hour: hours, minute: minutes, second: seconds }) + } + }, 1000) + return () => clearInterval(timer) + }, [timeLeft]) + + return ( +
+
+ {timeLeft.day} + Hari +
+
+ {timeLeft.hour} + Jam +
+
+ {timeLeft.minute} + Menit +
+
+ {timeLeft.second} + Detik +
+
+ ) +} + +export default CountDown -- cgit v1.2.3 From 5d8ad078bdc735e708654e278b226868dc3bc403 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 27 Apr 2023 16:45:05 +0700 Subject: flash sale mapping, mobile flash sale --- src/core/components/elements/CountDown/CountDown.jsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/core/components/elements/CountDown/CountDown.jsx') diff --git a/src/core/components/elements/CountDown/CountDown.jsx b/src/core/components/elements/CountDown/CountDown.jsx index 49a33d77..877f7998 100644 --- a/src/core/components/elements/CountDown/CountDown.jsx +++ b/src/core/components/elements/CountDown/CountDown.jsx @@ -31,22 +31,22 @@ const CountDown = ({ initialTime }) => { }, [timeLeft]) return ( -
+
- {timeLeft.day} - Hari + {timeLeft.day.toString().padStart(2, '0')} + Hari
- {timeLeft.hour} - Jam + {timeLeft.hour.toString().padStart(2, '0')} + Jam
- {timeLeft.minute} - Menit + {timeLeft.minute.toString().padStart(2, '0')} + Menit
- {timeLeft.second} - Detik + {timeLeft.second.toString().padStart(2, '0')} + Detik
) -- cgit v1.2.3 From b4abdb00ef83aa824e8a05d5b75df48adb7b9629 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 3 May 2023 10:38:52 +0700 Subject: semi dynamic page --- src/core/components/elements/CountDown/CountDown.jsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/core/components/elements/CountDown/CountDown.jsx') diff --git a/src/core/components/elements/CountDown/CountDown.jsx b/src/core/components/elements/CountDown/CountDown.jsx index 877f7998..91a1f68e 100644 --- a/src/core/components/elements/CountDown/CountDown.jsx +++ b/src/core/components/elements/CountDown/CountDown.jsx @@ -15,7 +15,8 @@ const CountDown = ({ initialTime }) => { useEffect(() => { const timer = setInterval(() => { - const totalSeconds = timeLeft.day * 86400 + timeLeft.hour * 3600 + timeLeft.minute * 60 + timeLeft.second + const totalSeconds = + timeLeft.day * 86400 + timeLeft.hour * 3600 + timeLeft.minute * 60 + timeLeft.second const secondsLeft = totalSeconds - 1 if (secondsLeft < 0) { clearInterval(timer) @@ -33,19 +34,27 @@ const CountDown = ({ initialTime }) => { return (
- {timeLeft.day.toString().padStart(2, '0')} + + {timeLeft.day.toString().padStart(2, '0')} + Hari
- {timeLeft.hour.toString().padStart(2, '0')} + + {timeLeft.hour.toString().padStart(2, '0')} + Jam
- {timeLeft.minute.toString().padStart(2, '0')} + + {timeLeft.minute.toString().padStart(2, '0')} + Menit
- {timeLeft.second.toString().padStart(2, '0')} + + {timeLeft.second.toString().padStart(2, '0')} + Detik
-- cgit v1.2.3