Change number animations direction based on decrease or increase (#12971)
This commit is contained in:
		
					parent
					
						
							
								dd4eec6bf6
							
						
					
				
			
			
				commit
				
					
						10e209d8e0
					
				
			
		
					 1 changed files with 22 additions and 5 deletions
				
			
		|  | @ -11,16 +11,33 @@ export default class AnimatedNumber extends React.PureComponent { | |||
|     value: PropTypes.number.isRequired, | ||||
|   }; | ||||
| 
 | ||||
|   willEnter () { | ||||
|     return { y: -1 }; | ||||
|   state = { | ||||
|     direction: 1, | ||||
|   }; | ||||
| 
 | ||||
|   componentWillReceiveProps (nextProps) { | ||||
|     if (nextProps.value > this.props.value) { | ||||
|       this.setState({ direction: 1 }); | ||||
|     } else if (nextProps.value < this.props.value) { | ||||
|       this.setState({ direction: -1 }); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   willLeave () { | ||||
|     return { y: spring(1, { damping: 35, stiffness: 400 }) }; | ||||
|   willEnter = () => { | ||||
|     const { direction } = this.state; | ||||
| 
 | ||||
|     return { y: -1 * direction }; | ||||
|   } | ||||
| 
 | ||||
|   willLeave = () => { | ||||
|     const { direction } = this.state; | ||||
| 
 | ||||
|     return { y: spring(1 * direction, { damping: 35, stiffness: 400 }) }; | ||||
|   } | ||||
| 
 | ||||
|   render () { | ||||
|     const { value } = this.props; | ||||
|     const { direction } = this.state; | ||||
| 
 | ||||
|     if (reduceMotion) { | ||||
|       return <FormattedNumber value={value} />; | ||||
|  | @ -37,7 +54,7 @@ export default class AnimatedNumber extends React.PureComponent { | |||
|         {items => ( | ||||
|           <span className='animated-number'> | ||||
|             {items.map(({ key, data, style }) => ( | ||||
|               <span key={key} style={{ position: style.y > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}><FormattedNumber value={data} /></span> | ||||
|               <span key={key} style={{ position: (direction * style.y) > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}><FormattedNumber value={data} /></span> | ||||
|             ))} | ||||
|           </span> | ||||
|         )} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue