PageSourceSearch

https://www.journeyhomelending.com/wp-content/plugins/cherry-services-list/public/assets/js/cherry-services.js

js journeyhomelending.com collected 2026-09-30 21:57:00 UTC 7,570 bytes, 272 lines download raw bytes

1( function( $ ) {
2
3	"use strict";
4
5	var servicesListPublic = {
6
7		settings: {
8			selectors: {
9				main: '.services-container',
10				filter: '.cherry-services-filter',
11				loadMore: '.ajax-more-btn',
12				pager: '.services-ajax-pager',
13				filterLink: '.cherry-services-filter_link',
14				result: '.services-listing',
15				container: '.cherry-services',
16				loader: '.services-loader',
17			},
18			actions: {
19				filter: 'cherry_services_filter_posts',
20				more: 'cherry_services_load_more',
21				pager: 'cherry_services_pager'
22			},
23			templates: {
24				loaderLarge: '<div class="services-loader loader-large">' + window.cherryServices.loader + '</div>',
25				loaderSmall: '<div class="services-loader loader-small">' + window.cherryServices.loader + '</div>',
26			},
27			state: {
28				filters: false,
29				more: false,
30				pager: false
31			}
32
33		},
34
35		init: function () {
36
37			var self = this;
38
39			// Document ready event check
40			if ( CherryJsCore.status.is_ready ) {
41				self.render( self );
42			} else {
43				CherryJsCore.variable.$document.on( 'ready', self.render( self ) );
44			}
45
46		},
47
48		render: function ( self ) {
49
50			if ( ! window.elementorFrontend ) {
51				$( self.settings.selectors.main ).each( function() {
52					self.initFilters( $( this ) );
53					self.initLoadMore( $( this ) );
54					self.initPager( $( this ) );
55				} );
56			} else {
57				$( window ).on( 'elementor/frontend/init', self.initElementorWidget );
58			}
59
60		},
61
62		initElementorWidget: function() {
63
64			window.elementorFrontend.hooks.addAction(
65				'frontend/element_ready/cherry_services.default',
66				function( $scope ) {
67
68					var $container = $scope.find( servicesListPublic.settings.selectors.main );
69
70					if ( $container.length ) {
71
72						if ( window.elementorFrontend.isEditMode() ) {
73							servicesListPublic.settings.state.filters = false;
74							servicesListPublic.settings.state.more    = false;
75							servicesListPublic.settings.state.pager   = false;
76						}
77
78						servicesListPublic.initFilters( $container );
79						servicesListPublic.initLoadMore( $container );
80						servicesListPublic.initPager( $container );
81
82					}
83
84				}
85			);
86
87		},
88
89		addLoader: function( $container, isMore ) {
90
91			var template = this.settings.templates.loaderSmall;
92
93			if ( false === isMore ) {
94				$container.addClass( 'in-progress' );
95				template = this.settings.templates.loaderLarge;
96			}
97
98			$container.append( template );
99		},
100
101		removeLoader: function( $container, isMore ) {
102
103			if ( false === isMore ) {
104				$container.removeClass( 'in-progress' );
105			}
106
107			$container.find( this.settings.selectors.loader ).remove();
108		},
109
110		initFilters: function( $item ) {
111
112			if ( false !== servicesListPublic.settings.state.filters ) {
113				return;
114			}
115
116			servicesListPublic.settings.state.filters = true;
117
118			var $filter    = $item.find( servicesListPublic.settings.selectors.filter ),
119				$result    = $item.find( servicesListPublic.settings.selectors.result ),
120				$container = $item.find( servicesListPublic.settings.selectors.container ),
121				data       = new Object();
122
123			$filter.on( 'click', servicesListPublic.settings.selectors.filterLink, function( event ) {
124
125				var $this   = $( this ),
126					$parent = $this.parent();
127
128				event.preventDefault();
129
130				if ( $parent.hasClass( 'active' ) ) {
131					return;
132				}
133
134				data.cat    = $this.data( 'term' );
135				data.atts   = $container.data( 'atts' );
136				data.cats   = $container.data( 'cat' );
137				data.action = servicesListPublic.settings.actions.filter;
138
139				$parent.addClass( 'active' ).siblings().removeClass( 'active' );
140				servicesListPublic.addLoader( $container, false );
141
142				$.ajax({
143					url: window.cherryServices.ajaxurl,
144					type: 'post',
145					dataType: 'json',
146					data: data,
147					error: function() {
148						servicesListPublic.removeLoader( $container, false );
149					}
150				}).done( function( response ) {
151					servicesListPublic.removeLoader( $container, false );
152					$result.html( response.data.result );
153					$container.data( 'atts', response.data.atts );
154					$container.data( 'page', 1 );
155					$container.data( 'pages', response.data.pages );
156
157					if ( 1 < response.data.pages && $( servicesListPublic.settings.selectors.loadMore, $item ).length ) {
158						$( servicesListPublic.settings.selectors.loadMore, $item ).removeClass( 'btn-hidden' );
159					}
160
161					if ( 1 == response.data.pages && $( servicesListPublic.settings.selectors.loadMore, $item ).length ) {
162						$( servicesListPublic.settings.selectors.loadMore, $item ).addClass( 'btn-hidden' );
163					}
164
165					if ( $( servicesListPublic.settings.selectors.pager, $item ).length ) {
166						$( servicesListPublic.settings.selectors.pager, $item ).remove();
167					}
168
169					$container.append( response.data.pager );
170
171				});
172			});
173		},
174
175		initLoadMore: function( $item ) {
176
177			if ( false !== servicesListPublic.settings.state.more ) {
178				return;
179			}
180
181			servicesListPublic.settings.state.more = true;
182
183			$item.on( 'click', servicesListPublic.settings.selectors.loadMore, function( event ) {
184
185				var $this      = $( this ),
186					$result    = $item.find( servicesListPublic.settings.selectors.result ),
187					$container = $item.find( servicesListPublic.settings.selectors.container ),
188					pages      = $container.data( 'pages' ),
189					data       = new Object();
190
191				event.preventDefault();
192
193				data.page   = $container.data( 'page' );
194				data.atts   = $container.data( 'atts' );
195				data.action = servicesListPublic.settings.actions.more;
196
197				servicesListPublic.addLoader( $container, true );
198
199				$.ajax({
200					url: window.cherryServices.ajaxurl,
201					type: 'post',
202					dataType: 'json',
203					data: data,
204					error: function() {
205						servicesListPublic.removeLoader( $container, true );
206					}
207				}).done( function( response ) {
208					servicesListPublic.removeLoader( $container, true );
209					$result.append( response.data.result );
210					$container.data( 'page', response.data.page );
211
212					if ( response.data.page == pages ) {
213						$this.addClass( 'btn-hidden' );
214					}
215
216				});
217
218			});
219
220		},
221
222		initPager: function( $item ) {
223
224			if ( false !== servicesListPublic.settings.state.pager ) {
225				return;
226			}
227
228			servicesListPublic.settings.state.pager = true;
229
230			$item.on( 'click', servicesListPublic.settings.selectors.pager + ' a.page-numbers', function( event ) {
231
232				var $this      = $( this ),
233					$result    = $item.find( servicesListPublic.settings.selectors.result ),
234					$container = $item.find( servicesListPublic.settings.selectors.container ),
235					pages      = $container.data( 'pages' ),
236					data       = new Object();
237
238				event.preventDefault();
239
240				data.page   = $this.data( 'page' );
241				data.atts   = $container.data( 'atts' );
242				data.action = servicesListPublic.settings.actions.pager;
243
244				servicesListPublic.addLoader( $container, false );
245
246				$this.addClass( 'current' ).siblings().removeClass( 'current' );
247
248				$.ajax({
249					url: window.cherryServices.ajaxurl,
250					type: 'post',
251					dataType: 'json',
252					data: data,
253					error: function() {
254						servicesListPublic.removeLoader( $container, false );
255					}
256				}).done( function( response ) {
257
258					servicesListPublic.removeLoader( $container, false );
259					$result.html( response.data.result );
260					$container.data( 'page', response.data.page );
261
262				});
263
264			});
265
266		}
267
268	}
269
270	servicesListPublic.init();
271
272}( 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.