Rename JSX files with proper .jsx extension (#23733)
		
	This commit is contained in:
		
					parent
					
						
							
								f0e1b12c10
							
						
					
				
			
			
				commit
				
					
						44a7d87cb1
					
				
			
		
					 248 changed files with 10 additions and 2 deletions
				
			
		
							
								
								
									
										72
									
								
								app/javascript/mastodon/features/ui/components/column.jsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								app/javascript/mastodon/features/ui/components/column.jsx
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| import React from 'react'; | ||||
| import ColumnHeader from './column_header'; | ||||
| import PropTypes from 'prop-types'; | ||||
| import { debounce } from 'lodash'; | ||||
| import { scrollTop } from '../../../scroll'; | ||||
| import { isMobile } from '../../../is_mobile'; | ||||
| 
 | ||||
| export default class Column extends React.PureComponent { | ||||
| 
 | ||||
|   static propTypes = { | ||||
|     heading: PropTypes.string, | ||||
|     icon: PropTypes.string, | ||||
|     children: PropTypes.node, | ||||
|     active: PropTypes.bool, | ||||
|     hideHeadingOnMobile: PropTypes.bool, | ||||
|   }; | ||||
| 
 | ||||
|   handleHeaderClick = () => { | ||||
|     const scrollable = this.node.querySelector('.scrollable'); | ||||
| 
 | ||||
|     if (!scrollable) { | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
|     this._interruptScrollAnimation = scrollTop(scrollable); | ||||
|   }; | ||||
| 
 | ||||
|   scrollTop () { | ||||
|     const scrollable = this.node.querySelector('.scrollable'); | ||||
| 
 | ||||
|     if (!scrollable) { | ||||
|       return; | ||||
|     } | ||||
| 
 | ||||
|     this._interruptScrollAnimation = scrollTop(scrollable); | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
|   handleScroll = debounce(() => { | ||||
|     if (typeof this._interruptScrollAnimation !== 'undefined') { | ||||
|       this._interruptScrollAnimation(); | ||||
|     } | ||||
|   }, 200); | ||||
| 
 | ||||
|   setRef = (c) => { | ||||
|     this.node = c; | ||||
|   }; | ||||
| 
 | ||||
|   render () { | ||||
|     const { heading, icon, children, active, hideHeadingOnMobile } = this.props; | ||||
| 
 | ||||
|     const showHeading = heading && (!hideHeadingOnMobile || (hideHeadingOnMobile && !isMobile(window.innerWidth))); | ||||
| 
 | ||||
|     const columnHeaderId = showHeading && heading.replace(/ /g, '-'); | ||||
|     const header = showHeading && ( | ||||
|       <ColumnHeader icon={icon} active={active} type={heading} onClick={this.handleHeaderClick} columnHeaderId={columnHeaderId} /> | ||||
|     ); | ||||
|     return ( | ||||
|       <div | ||||
|         ref={this.setRef} | ||||
|         role='region' | ||||
|         aria-labelledby={columnHeaderId} | ||||
|         className='column' | ||||
|         onScroll={this.handleScroll} | ||||
|       > | ||||
|         {header} | ||||
|         {children} | ||||
|       </div> | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue