Advertisement
Eulis

banner-rebase-jsx

Oct 2nd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | None | 0 0
  1. import React, { Component } from 'react';
  2. import Slider from 'react-slick';
  3. import playArrow from './play-arrow.svg';
  4. import rightArrow from './right-arrow.svg';
  5. import leftArrow from './left-arrow.svg';
  6. import './banner.css';
  7. import { Link } from 'react-router-dom';
  8.  
  9. function NextSlide(props) {
  10. const { onClick } = props;
  11. return (
  12. <div onClick={ onClick } className="banner-arrow-container">
  13. <img className="banner-arrow" src={ rightArrow } alt="previous arrow" />
  14. </div>
  15. );
  16. }
  17.  
  18. function PrevSlide(props) {
  19. const { onClick } = props;
  20. return (
  21. <div onClick={ onClick } id="banner-arrow-left" className="banner-arrow-container">
  22. <img className="banner-arrow" src={ leftArrow } alt="next arrow" />
  23. </div>
  24. );
  25. }
  26.  
  27. class Banner extends Component {
  28.  
  29. constructor(props){
  30. super(props);
  31. this.state = {
  32. videoPreview: 'https://media.giphy.com/media/lpI71bwDWLM7mEV8Sf/giphy.gif',
  33. tour: '<iframe width="100%" height="100vh" style="width: 100%; height: 100%;" src="https://www.google.com/maps/embed?pb=!4v1559222392357!6m8!1m7!1sCAoSLEFGMVFpcFBvaEdibktnbzRxRVpON21JaTlGanNabzNlcnpfMWt1dE9uSXNY!2m2!1d-8.7045821876584!2d-35.080530367716!3f174.77973645732317!4f-30.183789800098268!5f0.7820865974627469" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>',
  34. dotTour: 'banner-dot-activated',
  35. dot360: 'banner-dot',
  36. bannerWidth: {},
  37. bannerHeight: {},
  38. bannerFooter: {},
  39. }
  40. this.handleScreenChange = this.handleScreenChange.bind(this);
  41. }
  42.  
  43. handleScreenChange(){
  44. let width = window.innerWidth;
  45. if(width <= 1024){
  46. this.setState({
  47. ...this.state,
  48. bannerWidth : '100%',
  49. bannerFooter: this.props.newStyle.display,
  50. })
  51. }
  52. else{
  53. this.setState({
  54. ...this.state,
  55. bannerWidth: this.props.newStyle.width,
  56. bannerHeight: this.props.newStyle.height,
  57. bannerFooter: this.props.newStyle.display,
  58. })
  59. }
  60. }
  61. componentDidMount(){
  62. if(typeof this.props.newStyle !== 'undefined') {
  63. this.handleScreenChange();
  64. }
  65. }
  66. componentWillMount(){
  67. window.addEventListener('resize', this.handleScreenChange)
  68.  
  69. }
  70.  
  71. render() {
  72. const dotTour = (slide) => {
  73. const dotStyle = slide ? 'banner-dot-activated' : 'banner-dot';
  74. this.state.dotTour = dotStyle;
  75. }
  76.  
  77. const dot360 = (slide) => {
  78. const dotStyle = slide ? 'banner-dot' : 'banner-dot-activated';
  79. this.state.dot360 = dotStyle;
  80. }
  81.  
  82. const bannerSettings = {
  83. speed: 500,
  84. slidesToShow: 1,
  85. slidesToScroll: 1,
  86. infinite: true,
  87. autoplay: false,
  88. arrows: true,
  89. prevArrow: <PrevSlide />,
  90. nextArrow: <NextSlide />,
  91. beforeChange: (current, next) => {
  92. dotTour(current);
  93. dot360(current);
  94. return this.setState({ oldSlide: current, activeSlide: next })
  95. },
  96. afterChange: current => this.setState({ activeSlide2: current }),
  97. responsive: [
  98. {
  99. breakpoint: 1025,
  100. settings: {
  101. arrows: false
  102. }
  103. }
  104. ]
  105. }
  106. return (
  107. <section className="banner" style={{width: this.state.bannerWidth, height: this.state.bannerHeight}}>
  108. <div className="slick-wraper">
  109. <Slider { ...bannerSettings } >
  110. <div className="banner-slide">
  111. <img className="banner-gif" src={ this.state.videoPreview } alt="hotel video preview" />
  112. <a href="" target="_blank" className="play-button-container">
  113. <div className="play-button">
  114. <img src={ playArrow } alt="play" />
  115. </div>
  116. <div className="banner-video-text">
  117. <p>Assista</p>
  118. <p id="banner-button-last-text">ao vídeo completo</p>
  119. </div>
  120. </a>
  121. </div>
  122. <div className="banner-slide">
  123. <div className="banner-tour" dangerouslySetInnerHTML={{ __html: this.state.tour }}></div>
  124. </div>
  125. </Slider>
  126. <div className="banner-slider-menu">
  127. <div className="banner-arrows-container">
  128. </div>
  129. <div id="banner-button-text" className="banner-slider-menu-content-container">
  130. <div className="banner-slider-menu-content-semi">
  131. <p className={ this.state.dotTour }>Vídeo <span>tour</span></p>
  132. </div>
  133. <div className="banner-slider-menu-content-semi">
  134. <p className={ this.state.dot360 }>360° <span>tour</span></p>
  135. </div>
  136. </div>
  137. <div id="banner-button-numbers" className="banner-slider-menu-content-container">
  138. <div className="banner-slider-menu-content-semi">
  139. <p id="banner-number-1" className={ this.state.dotTour }>01</p>
  140. </div>
  141. <div className="banner-slider-menu-content-semi">
  142. <p id="banner-number-2" className={ this.state.dot360 }>02</p>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. <div className="banner-footer" style={{display: this.state.bannerFooter}}>
  148. <Link style={{
  149. textDecoration: 'none',
  150. color: '#fff',
  151. cursor: 'pointer',
  152. }}
  153. to="/">
  154. FAÇA SUA RESERVA
  155. </Link>
  156. </div>
  157. </section>
  158. );
  159.  
  160. }
  161. }
  162.  
  163. export default Banner;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement