diff --git a/src/components/countdown-timer.js b/src/components/countdown-timer.js index dbc214a..bc38a54 100644 --- a/src/components/countdown-timer.js +++ b/src/components/countdown-timer.js @@ -4,9 +4,7 @@ import PropTypes from 'prop-types'; import FlipNumber from './flip-number'; import Separator from './flip-number/separator'; - import TransformUtils from '../utils'; - import style from './style'; class CountdownTimer extends React.Component { @@ -14,7 +12,7 @@ class CountdownTimer extends React.Component { hours: 0, minutes: 0, seconds: 0, - } + }; componentDidMount() { const { time } = this.props; @@ -53,18 +51,18 @@ class CountdownTimer extends React.Component { const { hours, minutes, seconds } = this.state; const newState = TransformUtils.subtractTime(hours, minutes, seconds); this.setState(prevState => ({ ...prevState, ...newState })); - } + }; render() { const { wrapperStyle, flipNumberProps } = this.props; const { hours, minutes, seconds } = this.state; return ( - {!!hours && } + {!!hours && } - {!!minutes && } + {!!minutes && } - {!!seconds && } + {!!seconds && } ); } diff --git a/src/components/flip-number/index.js b/src/components/flip-number/index.js index 0a47225..59b46b6 100644 --- a/src/components/flip-number/index.js +++ b/src/components/flip-number/index.js @@ -8,20 +8,32 @@ import NumberCard from './number-card'; import style from '../style'; function FlipNumber({ - number, unit, size, perspective, numberWrapperStyle, cardStyle, flipCardStyle, numberStyle, + number, unit, size, perspective, numberWrapperStyle, cardStyle, flipCardStyle, numberStyle, lastUnit, nextUnit, seconds, }) { number = parseInt(number); let previousNumber = number - 1; - if (unit !== 'hours') { - previousNumber = previousNumber === -1 ? 59 : previousNumber; + + if (unit === 'hours') { + previousNumber = previousNumber === -1 ? 0 : previousNumber; + } else if (unit === 'minutes') { + previousNumber = previousNumber < 0 ? (parseInt(lastUnit) === 0 ? 0 : 59) : previousNumber; } else { - previousNumber = previousNumber === -1 ? 23 : previousNumber; + previousNumber = previousNumber < 0 ? (parseInt(lastUnit) === 0 ? 0 : 59) : previousNumber; } number = number < 10 ? `0${number}` : number; previousNumber = previousNumber < 10 ? `0${previousNumber}` : previousNumber; const numberSplit = number.toString().split(''); - const previousNumberSplit = previousNumber.toString().split(''); + let previousNumberSplit = previousNumber.toString().split(''); + if (unit === 'minutes' && parseInt(nextUnit) !== 0) { + previousNumberSplit = numberSplit; + } + if (unit === 'hours') { + if (parseInt(nextUnit) !== 0 || seconds !== 0) { + previousNumberSplit = numberSplit; + } + } + return (