PageSourceSearch

https://seda-cog.org/wp-content/plugins/cherry-team-members/public/assets/js/cherry-team.js?ver=1.4.6

js seda-cog.org collected 2026-10-02 10:33:10 UTC 6,731 bytes, 247 lines download raw bytes

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.