1( function( $ ) { 2 3 'use strict'; 4 5 var teamMembersPublic = { 6 7 settings: { 8 selectors: { 9 main: '.team-container', 10 filter: '.cherry-team-filter', 11 loadMore: '.ajax-more-btn', 12 pager: '.team-ajax-pager', 13 filterLink: '.cherry-team-filter_link', 14 result: '.team-listing', 15 container: '.cherry-team', 16 loader: '.team-loader', 17 }, 18 actions: { 19 filter: 'cherry_team_filter_posts', 20 more: 'cherry_team_load_more', 21 pager: 'cherry_team_pager' 22 }, 23 templates: { 24 loaderLarge: '<a href="#" class="team-loader loader-large">' + window.cherryTeam.loader + '</a>', 25 loaderSmall: '<a href="#" class="team-loader loader-small">' + window.cherryTeam.loader + '</a>', 26 }, 27 state: { 28 filters: false, 29 more: false, 30 pager: false 31 } 32 }, 33 34 init: function () { 35 var self = this; 36 self.render( self ); 37 }, 38 39 render: function ( self ) { 40 41 $( self.settings.selectors.main ).each( function() { 42 var $this = $( this ); 43 44 if ( ! $this.data( 'inited' ) ) { 45 $this.data( 'inited', 'true' ); 46 47 self.initFilters( $( this ) ); 48 self.initLoadMore( $( this ) ); 49 self.initPager( $( this ) ); 50 } 51 } ); 52 53 $( window ).on( 'elementor/frontend/init', self.initElementorWidget ); 54 55 }, 56 57 initElementorWidget: function() { 58 59 window.elementorFrontend.hooks.addAction( 60 'frontend/element_ready/cherry_team.default', 61 function( $scope ) { 62 63 var $container = $scope.find( teamMembersPublic.settings.selectors.main ); 64 65 if ( $container.length ) { 66 67 if ( ! $container.data( 'inited' ) ) { 68 $container.data( 'inited', 'true' ); 69 70 teamMembersPublic.initFilters( $container ); 71 teamMembersPublic.initLoadMore( $container ); 72 teamMembersPublic.initPager( $container ); 73 } 74 75 } 76 77 } 78 ); 79 80 }, 81 82 addLoader: function( $container, isMore ) { 83 84 var template = this.settings.templates.loaderSmall; 85 86 if ( false === isMore ) { 87 $container.addClass( 'in-progress' ); 88 template = this.settings.templates.loaderLarge; 89 } 90 91 $container.append( template ); 92 }, 93 94 removeLoader: function( $container, isMore ) { 95 96 if ( false === isMore ) { 97 $container.removeClass( 'in-progress' ); 98 } 99 100 $container.find( this.settings.selectors.loader ).remove(); 101 }, 102 103 initFilters: function( $item ) { 104 105 var $filter = $item.find( teamMembersPublic.settings.selectors.filter ), 106 $result = $item.find( teamMembersPublic.settings.selectors.result ), 107 $container = $item.find( teamMembersPublic.settings.selectors.container ), 108 data = {}; 109 110 $filter.on( 'click', teamMembersPublic.settings.selectors.filterLink, function( event ) { 111 112 var $this = $( this ), 113 $parent = $this.parent(); 114 115 event.preventDefault(); 116 117 if ( $parent.hasClass( 'active' ) ) { 118 return; 119 } 120 121 data.group = $this.data( 'term' ); 122 data.atts = $container.data( 'atts' ); 123 data.groups = $container.data( 'groups' ); 124 data.action = teamMembersPublic.settings.actions.filter; 125 126 $parent.addClass( 'active' ).siblings().removeClass( 'active' ); 127 teamMembersPublic.addLoader( $container, false ); 128 129 $.ajax({
130 url: window.cherryTeam.ajaxurl, 131 type: 'post', 132 dataType: 'json', 133 data: data, 134 error: function() { 135 teamMembersPublic.removeLoader( $container, false ); 136 } 137 }).done( function( response ) { 138 teamMembersPublic.removeLoader( $container, false ); 139 $result.html( response.data.result ); 140 $container.data( 'atts', response.data.atts ); 141 $container.data( 'page', 1 ); 142 $container.data( 'pages', response.data.pages ); 143 144 if ( 1 < response.data.pages && $( teamMembersPublic.settings.selectors.loadMore ).length ) { 145 $( teamMembersPublic.settings.selectors.loadMore ).removeClass( 'btn-hidden' ); 146 } 147 148 if ( 1 == response.data.pages && $( teamMembersPublic.settings.selectors.loadMore ).length ) { 149 $( teamMembersPublic.settings.selectors.loadMore ).addClass( 'btn-hidden' ); 150 } 151 152 if ( $( teamMembersPublic.settings.selectors.pager ).length ) { 153 $( teamMembersPublic.settings.selectors.pager ).remove(); 154 } 155 156 $container.append( response.data.pager ); 157 158 }); 159 }); 160 }, 161 162 initLoadMore: function( $item ) { 163 164 $item.on( 'click', teamMembersPublic.settings.selectors.loadMore, function( event ) { 165 166 var $this = $( this ), 167 $result = $item.find( teamMembersPublic.settings.selectors.result ), 168 $container = $item.find( teamMembersPublic.settings.selectors.container ), 169 pages = $container.data( 'pages' ), 170 data = {}; 171 172 event.preventDefault(); 173 174 data.page = $container.data( 'page' ); 175 data.atts = $container.data( 'atts' ); 176 data.action = teamMembersPublic.settings.actions.more; 177 178 teamMembersPublic.addLoader( $container, true ); 179 180 $.ajax({
181 url: window.cherryTeam.ajaxurl, 182 type: 'post', 183 dataType: 'json', 184 data: data, 185 error: function() { 186 teamMembersPublic.removeLoader( $container, true ); 187 } 188 }).done( function( response ) { 189 teamMembersPublic.removeLoader( $container, true ); 190 $result.append( response.data.result ); 191 $container.data( 'page', response.data.page ); 192 193 if ( response.data.page == pages ) { 194 $this.addClass( 'btn-hidden' ); 195 } 196 197 }); 198 199 }); 200 201 }, 202 203 initPager: function( $item ) { 204 205 $item.on( 'click', teamMembersPublic.settings.selectors.pager + ' a.page-numbers', function( event ) { 206 207 var $this = $( this ), 208 $result = $item.find( teamMembersPublic.settings.selectors.result ), 209 $container = $item.find( teamMembersPublic.settings.selectors.container ), 210 pages = $container.data( 'pages' ), 211 data = {}; 212 213 event.preventDefault(); 214 215 data.page = $this.data( 'page' ); 216 data.atts = $container.data( 'atts' ); 217 data.action = teamMembersPublic.settings.actions.pager; 218 219 teamMembersPublic.addLoader( $container, false ); 220 221 $this.addClass( 'current' ).siblings().removeClass( 'current' ); 222 223 $.ajax({
224 url: window.cherryTeam.ajaxurl, 225 type: 'post', 226 dataType: 'json', 227 data: data, 228 error: function() { 229 teamMembersPublic.removeLoader( $container, false ); 230 } 231 }).done( function( response ) { 232 233 teamMembersPublic.removeLoader( $container, false ); 234 $result.html( response.data.result ); 235 $container.data( 'page', response.data.page ); 236 237 }); 238 239 }); 240 241 } 242 243 } 244 245 teamMembersPublic.init(); 246 247}( jQuery ) );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.