diff options
| author | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-07-24 15:33:17 +0700 |
|---|---|---|
| committer | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-07-24 15:33:17 +0700 |
| commit | 2de322571bad7490baaf439fa2bb12124c646bb5 (patch) | |
| tree | d7c4151eb2bf83b85cd0532d45dedd02aa06694e /src/core/components/elements/CountDown/CountDown2.jsx | |
| parent | 8b8ab7680be37e84d0dc6cc1683fe4996f7cc8c1 (diff) | |
| parent | d4f3cce1b07c5d4f75892ffc49c8dbbbbb58922f (diff) | |
Merge branch 'master' into CR/widget_WA
Diffstat (limited to 'src/core/components/elements/CountDown/CountDown2.jsx')
| -rw-r--r-- | src/core/components/elements/CountDown/CountDown2.jsx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/core/components/elements/CountDown/CountDown2.jsx b/src/core/components/elements/CountDown/CountDown2.jsx new file mode 100644 index 00000000..61503d17 --- /dev/null +++ b/src/core/components/elements/CountDown/CountDown2.jsx @@ -0,0 +1,51 @@ +import { useEffect, useState } from 'react' + +const CountDown2 = ({ initialTime }) => { + const hours = Math.floor(initialTime / 3600) + const minutes = Math.floor((initialTime % 3600) / 60) + const seconds = initialTime % 60 + + const [timeLeft, setTimeLeft] = useState({ + hour: hours, + minute: minutes, + second: seconds + }) + + useEffect(() => { + const timer = setInterval(() => { + const totalSeconds = timeLeft.hour * 3600 + timeLeft.minute * 60 + timeLeft.second + const secondsLeft = totalSeconds - 1 + if (secondsLeft < 0) { + clearInterval(timer) + } else { + const hours = Math.floor(secondsLeft / 3600) + const minutes = Math.floor((secondsLeft % 3600) / 60) + const seconds = secondsLeft % 60 + setTimeLeft({ hour: hours, minute: minutes, second: seconds }) + } + }, 1000) + return () => clearInterval(timer) + }, [timeLeft]) + + return ( + <div className='flex justify-between gap-x-2'> + <div className='flex flex-col items-center'> + <span className='bg-red-200 border border-red-500 text-black font-sm w-10 h-8 flex items-center justify-center rounded'> + {timeLeft.hour.toString().padStart(2, '0')} + </span> + </div> + <div className='flex flex-col items-center'> + <span className='bg-red-200 border border-red-500 text-black font-sm w-10 h-8 flex items-center justify-center rounded'> + {timeLeft.minute.toString().padStart(2, '0')} + </span> + </div> + <div className='flex flex-col items-center'> + <span className='bg-red-200 border border-red-500 text-black font-sm w-10 h-8 flex items-center justify-center rounded'> + {timeLeft.second.toString().padStart(2, '0')} + </span> + </div> + </div> + ) +} + +export default CountDown2 |
