Advertisement
artemsemkin

Rhye template: disable animations in Masonry grids

Sep 11th, 2022
1,375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class SectionGrid extends ScrollAnimation {
  2.   constructor({
  3.     scope,
  4.     target
  5.   }) {
  6.     super({
  7.       scope,
  8.       target
  9.     });
  10.   }
  11.  
  12.   set() {
  13.  
  14.     this.$items = this.$el.find('.section-grid__item');
  15.     this.$filter = this.$el.find('.js-filter');
  16.     this.$filterUnderline = this.$filter.find('.filter__underline');
  17.     this.$grid = this.$el.find('.js-grid');
  18.  
  19.     // gsap.set(this.$items, {
  20.     //  scaleY: 1.5,
  21.     //  y: '33%',
  22.     //  transformOrigin: 'top center',
  23.     //  autoAlpha: 0,
  24.     // });
  25.  
  26.     // gsap.set(this.$el, {
  27.     //  autoAlpha: 1
  28.     // });
  29.  
  30.     // gsap.set(this.$filterUnderline, {
  31.     //  autoAlpha: 1
  32.     // });
  33.  
  34.     this._bindGridFilter();
  35.   }
  36.  
  37.   // run() {
  38.   //    const
  39.   //        masterTL = new gsap.timeline(),
  40.   //        colsDesktop = parseInt(this.$el.data('grid-columns'), 10) || 1,
  41.   //        colsTablet = parseInt(this.$el.data('grid-columns-tablet'), 10) || 1,
  42.   //        colsMobile = parseInt(this.$el.data('grid-columns-mobile'), 10) || 1,
  43.   //        lg = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.lg - 1 : 1024,
  44.   //        md = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.md - 1 : 767;
  45.  
  46.   //    let cols = colsDesktop;
  47.  
  48.   //    masterTL.to(this.$filterUnderline, {
  49.   //        autoAlpha: 1,
  50.   //        duration: 1.2,
  51.   //        ease: 'expo.inOut'
  52.   //    });
  53.  
  54.   //    if (window.Modernizr.mq('(max-width: ' + lg + 'px)')) {
  55.   //        cols = colsTablet;
  56.   //    }
  57.  
  58.   //    if (window.Modernizr.mq('(max-width: ' + md + 'px)')) {
  59.   //        cols = colsMobile;
  60.   //    }
  61.  
  62.   //    for (var index = 0; index < this.$items.length; index = index + cols) {
  63.  
  64.   //        var
  65.   //            $array = this.$items.slice(index, index + cols),
  66.   //            tl = new gsap.timeline();
  67.  
  68.   //        tl
  69.   //            .to($array, {
  70.   //                duration: 0.9,
  71.   //                autoAlpha: 1,
  72.   //                y: '0%',
  73.   //                force3D: true,
  74.   //                scaleY: 1,
  75.   //                ease: 'power3.out',
  76.   //                stagger: 0.15
  77.   //            }, 'start');
  78.  
  79.   //        this._createScene({
  80.   //            element: $array[0],
  81.   //            triggerHook: 0.95,
  82.   //            timeline: tl,
  83.   //            reveal: false
  84.   //        });
  85.  
  86.   //    }
  87.  
  88.   //    this._createScene({
  89.   //        element: this.$el,
  90.   //        timeline: masterTL
  91.   //    });
  92.   // }
  93.  
  94.   _bindGridFilter() {
  95.     const
  96.       self = this,
  97.       event = new CustomEvent('arts/grid/filter');
  98.  
  99.     if (!this.$grid.length) {
  100.       return;
  101.     }
  102.  
  103.     this.filter = this._createFilter();
  104.     this.grid = this._createGrid();
  105.  
  106.     if (this.$filter.length) {
  107.       this.filter.setActiveItem(0);
  108.       this.filter.$items.on('click', function (e) {
  109.         const filterBy = $(this).data('filter');
  110.  
  111.         if (filterBy === '*') {
  112.           self.$grid.removeClass('grid_filtered');
  113.         } else {
  114.           self.$grid.addClass('grid_filtered');
  115.         }
  116.  
  117.         e.preventDefault();
  118.  
  119.         self.grid.isotope({
  120.           filter: filterBy
  121.         });
  122.       });
  123.  
  124.       self.grid.on('arrangeComplete', () => {
  125.         window.dispatchEvent(event);
  126.       });
  127.     }
  128.   }
  129.  
  130.   _createFilter() {
  131.     return new Filter({
  132.       scope: this.$scope,
  133.       target: this.$filter
  134.     });
  135.   }
  136.  
  137.   _createGrid() {
  138.     return new Grid({
  139.       target: this.$grid
  140.     });
  141.   }
  142. }
  143.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement