CodeViewer with referenced height of parent div
This commit is contained in:
		
							parent
							
								
									c11ff8fc6c
								
							
						
					
					
						commit
						dddd9432db
					
				| @ -32,10 +32,10 @@ const AccordionSummary = withStyles((theme) => ({ | |||||||
|   root: { |   root: { | ||||||
|     backgroundColor: theme.palette.secondary.main, |     backgroundColor: theme.palette.secondary.main, | ||||||
|     borderBottom: `1px solid white`, |     borderBottom: `1px solid white`, | ||||||
|     marginBottom: -1, |     marginBottom: '-1px', | ||||||
|     minHeight: 50, |     minHeight: '50px', | ||||||
|     '&$expanded': { |     '&$expanded': { | ||||||
|       minHeight: 50, |       minHeight: '50px', | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   content: { |   content: { | ||||||
| @ -55,15 +55,24 @@ const AccordionDetails = withStyles((theme) => ({ | |||||||
| 
 | 
 | ||||||
| class CodeViewer extends Component { | class CodeViewer extends Component { | ||||||
| 
 | 
 | ||||||
|   state = { |   constructor(props){ | ||||||
|     expanded: true |     super(props); | ||||||
|  |     this.state = { | ||||||
|  |       expanded: true, | ||||||
|  |       componentHeight: null | ||||||
|  |     }; | ||||||
|  |     this.myDiv = React.createRef(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   componentDidMount() { |   componentDidMount() { | ||||||
|     Prism.highlightAll(); |     Prism.highlightAll(); | ||||||
|  |     this.setState({componentHeight: this.myDiv.current.offsetHeight+'px'}); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   componentDidUpdate() { |   componentDidUpdate(props, state) { | ||||||
|  |     if(this.myDiv.current && this.myDiv.current.offsetHeight+'px' !== this.state.componentHeight){ | ||||||
|  |       this.setState({componentHeight: this.myDiv.current.offsetHeight+'px'}); | ||||||
|  |     } | ||||||
|     Prism.highlightAll(); |     Prism.highlightAll(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -74,8 +83,9 @@ class CodeViewer extends Component { | |||||||
|   render() { |   render() { | ||||||
|     var curlyBrackets = '{ }'; |     var curlyBrackets = '{ }'; | ||||||
|     var unequal = '<>'; |     var unequal = '<>'; | ||||||
|  |     console.log('render', this.myDiv); | ||||||
|     return ( |     return ( | ||||||
|       <Card style={{height: '100%', maxHeight: '500px'}}> |       <Card style={{height: '100%', maxHeight: '500px'}} ref={this.myDiv}> | ||||||
|         <Accordion |         <Accordion | ||||||
|           square={true} |           square={true} | ||||||
|           style={{margin: 0}} |           style={{margin: 0}} | ||||||
| @ -86,7 +96,7 @@ class CodeViewer extends Component { | |||||||
|             <b style={{fontSize: '20px', marginRight: '5px', width: '35px'}}>{curlyBrackets}</b> |             <b style={{fontSize: '20px', marginRight: '5px', width: '35px'}}>{curlyBrackets}</b> | ||||||
|             <div style={{margin: 'auto 5px 2px 0px'}}>Arduino Quellcode</div> |             <div style={{margin: 'auto 5px 2px 0px'}}>Arduino Quellcode</div> | ||||||
|           </AccordionSummary> |           </AccordionSummary> | ||||||
|           <AccordionDetails style={{padding: 0, height: 'calc(500px - 50px - 50px)', backgroundColor: 'white'}}> |           <AccordionDetails style={{padding: 0, height: `calc(${this.state.componentHeight} - 50px - 50px)`, backgroundColor: 'white'}}> | ||||||
|             <pre className="line-numbers" style={{paddingBottom: 0, width: '100%', overflow: 'auto', scrollbarWidth: 'thin', height: 'calc(100% - 30px)', margin: '15px 0', paddingTop: 0, whiteSpace: 'pre-wrap', backgroundColor: 'white'}}> |             <pre className="line-numbers" style={{paddingBottom: 0, width: '100%', overflow: 'auto', scrollbarWidth: 'thin', height: 'calc(100% - 30px)', margin: '15px 0', paddingTop: 0, whiteSpace: 'pre-wrap', backgroundColor: 'white'}}> | ||||||
|               <code className="language-clike"> |               <code className="language-clike"> | ||||||
|                 {this.props.arduino} |                 {this.props.arduino} | ||||||
| @ -104,7 +114,7 @@ class CodeViewer extends Component { | |||||||
|             <b style={{fontSize: '20px', marginRight: '5px', width: '35px'}}>{unequal}</b> |             <b style={{fontSize: '20px', marginRight: '5px', width: '35px'}}>{unequal}</b> | ||||||
|             <div style={{margin: 'auto 5px 2px 0px'}}>XML Blöcke</div> |             <div style={{margin: 'auto 5px 2px 0px'}}>XML Blöcke</div> | ||||||
|           </AccordionSummary> |           </AccordionSummary> | ||||||
|           <AccordionDetails style={{padding: 0, height: 'calc(500px - 50px - 50px)', backgroundColor: 'white'}}> |           <AccordionDetails style={{padding: 0, height: `calc(${this.state.componentHeight} - 50px - 50px)`, backgroundColor: 'white'}}> | ||||||
|             <pre className="line-numbers" style={{paddingBottom: 0, width: '100%', overflow: 'auto', scrollbarWidth: 'thin', height: 'calc(100% - 30px)', margin: '15px 0', paddingTop: 0, whiteSpace: 'pre-wrap', backgroundColor: 'white'}}> |             <pre className="line-numbers" style={{paddingBottom: 0, width: '100%', overflow: 'auto', scrollbarWidth: 'thin', height: 'calc(100% - 30px)', margin: '15px 0', paddingTop: 0, whiteSpace: 'pre-wrap', backgroundColor: 'white'}}> | ||||||
|               <code className="language-xml"> |               <code className="language-xml"> | ||||||
|                 {`${this.props.xml}`} |                 {`${this.props.xml}`} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user