Improve swiping (#4188)
* feat(components/columns_area): Toggle animation settings * fix(components/media_modal): Center non-visible views * fix(components/media_modal): Check for null * refactor(columns_area): Better logic
This commit is contained in:
		
							parent
							
								
									a9a0c854e1
								
							
						
					
					
						commit
						a9067167bb
					
				
					 2 changed files with 16 additions and 6 deletions
				
			
		|  | @ -32,12 +32,19 @@ export default class ColumnsArea extends ImmutablePureComponent { | |||
|     children: PropTypes.node, | ||||
|   }; | ||||
| 
 | ||||
|   componentDidUpdate() { | ||||
|     this.lastIndex = getIndex(this.context.router.history.location.pathname); | ||||
|   } | ||||
| 
 | ||||
|   handleSwipe = (index) => { | ||||
|     window.requestAnimationFrame(() => { | ||||
|       window.requestAnimationFrame(() => { | ||||
|         this.context.router.history.push(getLink(index)); | ||||
|       }); | ||||
|     }); | ||||
|     this.pendingIndex = index; | ||||
|   } | ||||
| 
 | ||||
|   handleAnimationEnd = () => { | ||||
|     if (typeof this.pendingIndex === 'number') { | ||||
|       this.context.router.history.push(getLink(this.pendingIndex)); | ||||
|       this.pendingIndex = null; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   renderView = (link, index) => { | ||||
|  | @ -68,10 +75,11 @@ export default class ColumnsArea extends ImmutablePureComponent { | |||
|     const { columns, children, singleColumn } = this.props; | ||||
| 
 | ||||
|     const columnIndex = getIndex(this.context.router.history.location.pathname); | ||||
|     const shouldAnimate = Math.abs(this.lastIndex - columnIndex) === 1; | ||||
| 
 | ||||
|     if (singleColumn) { | ||||
|       return columnIndex !== -1 ? ( | ||||
|         <ReactSwipeableViews index={columnIndex} onChangeIndex={this.handleSwipe} animateTransitions={false} style={{ height: '100%' }}> | ||||
|         <ReactSwipeableViews index={columnIndex} onChangeIndex={this.handleSwipe} onTransitionEnd={this.handleAnimationEnd} animateTransitions={shouldAnimate} springConfig={{ duration: '400ms', delay: '0s', easeFunction: 'ease' }} style={{ height: '100%' }}> | ||||
|           {links.map(this.renderView)} | ||||
|         </ReactSwipeableViews> | ||||
|       ) : <div className='columns-area'>{children}</div>; | ||||
|  |  | |||
|  | @ -1312,6 +1312,8 @@ | |||
| } | ||||
| 
 | ||||
| .react-swipeable-view-container > * { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   height: 100%; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue