PluginProbe ʕ •ᴥ•ʔ
Premium Addons for Elementor – Powerful Elementor Templates & Widgets / 4.10.78
Premium Addons for Elementor – Powerful Elementor Templates & Widgets v4.10.78
4.11.84 4.11.83 4.11.82 4.11.80 4.11.81 4.11.79 4.11.78 4.11.77 4.11.76 4.11.75 3.20.5 4.11.69 3.20.6 4.11.7 3.20.7 4.11.70 3.20.8 4.11.71 3.20.9 4.11.72 3.21.1 4.11.73 3.21.2 4.11.74 3.21.3 4.11.8 3.21.4 4.11.9 3.21.5 4.2.0 3.21.6 4.2.1 3.3.0 4.2.2 3.3.1 4.2.3 3.3.2 4.2.4 3.3.3 4.2.5 3.3.4 4.2.6 3.3.5 4.2.7 3.3.6 4.2.8 3.3.7 4.2.9 3.3.8 4.3.0 3.3.9 4.3.1 3.4.0 4.3.2 3.4.1 4.3.3 3.4.2 4.3.4 3.4.3 4.3.5 3.4.4 4.3.6 3.4.5 4.3.7 3.4.6 4.3.8 3.4.7 4.3.9 3.4.8 4.4.0 3.4.9 4.4.1 3.5.0 4.4.2 3.5.1 4.4.3 3.5.2 4.4.4 3.5.3 4.4.5 3.5.4 4.4.6 3.5.5 4.4.7 3.5.6 4.4.8 3.5.7 4.4.9 3.5.8 4.5.0 3.5.9 4.5.1 3.6.0 4.5.2 3.6.1 4.5.3 3.6.2 4.5.4 3.6.3 4.5.5 3.6.4 4.5.6 3.6.5 4.5.7 3.6.6 4.5.8 3.6.7 4.5.9 3.6.8 4.6.0 3.6.9 4.6.1 3.7.0 4.7.0 3.7.1 4.7.1 3.7.2 4.7.2 3.7.3 4.7.3 3.7.4 4.7.4 3.7.5 4.7.5 3.7.6 4.7.6 3.7.7 4.7.7 3.7.8 4.7.8 3.7.9 4.7.9 3.8.0 4.8.0 3.8.1 4.8.1 3.8.2 4.8.10 3.8.3 4.8.11 3.8.4 4.8.2 3.8.5 4.8.3 3.8.6 4.8.4 3.8.7 4.8.5 3.8.8 4.8.6 3.8.9 4.8.7 3.9.0 4.8.8 3.9.1 4.8.9 3.9.2 4.9.0 3.9.3 4.9.0-beta1 3.9.4 4.9.0-beta2 3.9.5 4.9.1 3.9.6 4.9.10 3.9.7 4.9.11 3.9.8 4.9.12 3.9.9 4.9.13 4.0.1 4.9.14 4.0.3 4.9.15 4.0.4 4.9.16 4.0.5 4.9.17 4.0.6 4.9.18 4.0.7 4.9.19 4.0.8 4.9.2 4.0.9 4.9.20 4.1.0 4.9.21 4.1.1 4.9.22 4.1.2 4.9.23 4.1.3 4.9.24 trunk 4.1.4 4.9.25 1.0 4.1.5 4.9.26 1.01 4.1.6 4.9.27 1.02 4.1.7 4.9.28 1.03 4.1.8 4.9.29 1.04 4.1.9 4.9.3 1.05 4.10.0 4.9.30 1.06 4.10.1 4.9.31 1.07 4.10.10 4.9.32 1.08 4.10.11 4.9.33 1.09 4.10.12 4.9.34 2.0 4.10.13 4.9.35 2.0.1 4.10.14 4.9.36 2.0.2 4.10.15 4.9.37 2.0.3 4.10.16 4.9.38 2.0.4 4.10.17 4.9.39 2.0.5 4.10.18 4.9.4 2.0.6 4.10.19 4.9.40 2.0.7 4.10.2 4.9.41 2.0.8 4.10.20 4.9.42 2.0.9 4.10.21 4.9.43 2.1.0 4.10.22 4.9.45 2.1.1 4.10.23 4.9.46 2.1.2 4.10.24 4.9.47 2.1.3 4.10.25 4.9.48 2.1.4 4.10.26 4.9.49 2.1.5 4.10.27 4.9.5 2.1.5-beta1 4.10.28 4.9.50 2.1.6 4.10.29 4.9.51 2.1.7 4.10.3 4.9.52 2.1.8 4.10.30 4.9.53 2.1.9 4.10.31 4.9.54 2.2.0 4.10.32 4.9.55 2.2.1 4.10.33 4.9.56 2.2.2 4.10.34 4.9.57 2.2.3 4.10.35 4.9.6 2.2.4 4.10.36 4.9.7 2.2.5 4.10.37 4.9.8 2.2.6 4.10.38 4.9.9 2.2.7 4.10.39 2.2.8 4.10.4 2.2.9 4.10.40 2.3.0 4.10.41 2.3.1 4.10.42 2.3.2 4.10.43 2.3.3 4.10.44 2.3.4 4.10.45 2.3.5 4.10.46 2.3.6 4.10.47 2.3.7 4.10.48 2.3.8 4.10.49 2.3.9 4.10.5 2.4.0 4.10.50 2.4.1 4.10.51 2.5.0 4.10.52 2.5.1 4.10.53 2.5.2 4.10.54 2.5.3 4.10.55 2.5.4 4.10.56 2.5.5 4.10.57 2.5.6 4.10.58 2.5.7 4.10.59 2.5.8 4.10.6 2.5.9 4.10.60 2.6.0 4.10.61 2.6.1 4.10.62 2.6.2 4.10.63 2.6.3 4.10.64 2.6.4 4.10.65 2.6.5 4.10.66 2.6.6 4.10.67 2.6.7 4.10.68 2.6.8 4.10.69 2.6.9 4.10.7 2.7.0 4.10.70 2.7.1 4.10.71 2.7.2 4.10.72 2.7.3 4.10.73 2.7.4 4.10.74 2.7.5 4.10.75 2.7.6 4.10.76 2.7.7 4.10.77 2.7.8 4.10.78 2.7.9 4.10.79 2.8.0 4.10.8 2.8.1 4.10.80 2.8.2 4.10.81 2.8.3 4.10.82 2.8.4 4.10.83 2.8.5 4.10.84 2.8.6 4.10.85 2.8.7 4.10.86 2.8.8 4.10.87 2.8.9 4.10.88 2.9.0 4.10.89 2.9.1 4.10.9 2.9.2 4.10.90 2.9.3 4.11.0 2.9.4 4.11.1 2.9.5 4.11.10 2.9.6 4.11.11 2.9.7 4.11.12 2.9.8 4.11.13 2.9.9 4.11.14 3.0.0 4.11.15 3.0.1 4.11.16 3.0.2 4.11.17 3.0.3 4.11.18 3.0.4 4.11.19 3.0.5 4.11.2 3.0.6 4.11.20 3.0.7 4.11.21 3.0.8 4.11.22 3.0.9 4.11.23 3.1.0 4.11.24 3.1.1 4.11.25 3.1.2 4.11.26 3.1.3 4.11.27 3.1.4 4.11.28 3.1.5 4.11.29 3.1.6 4.11.3 3.1.7 4.11.30 3.1.8 4.11.31 3.1.9 4.11.32 3.10.0 4.11.33 3.10.1 4.11.34 3.10.2 4.11.35 3.10.3 4.11.36 3.10.4 4.11.37 3.10.5 4.11.38 3.10.6 4.11.39 3.10.7 4.11.4 3.10.8 4.11.40 3.10.9 4.11.41 3.11.0 4.11.42 3.11.1 4.11.43 3.11.2 4.11.44 3.11.3 4.11.45 3.11.4 4.11.46 3.11.5 4.11.47 3.11.6 4.11.48 3.11.7 4.11.49 3.11.8 4.11.5 3.11.9 4.11.50 3.12.0 4.11.51 3.12.1 4.11.52 3.12.2 4.11.53 3.12.3 4.11.54 3.2.0 4.11.55 3.2.1 4.11.56 3.2.2 4.11.57 3.2.3 4.11.58 3.2.4 4.11.59 3.2.5 4.11.6 3.2.6 4.11.60 3.2.7 4.11.61 3.2.8 4.11.62 3.2.9 4.11.63 3.20.0 4.11.64 3.20.1 4.11.65 3.20.2 4.11.66 3.20.3 4.11.67 3.20.4 4.11.68
premium-addons-for-elementor / assets / frontend / js / premium-search-form.js
premium-addons-for-elementor / assets / frontend / js Last commit date
TweenMax.js 1 year ago anime.js 1 year ago flipster.js 1 year ago headroom.js 1 year ago iscroll.js 1 year ago isotope.js 1 year ago jquery-countdown.js 1 year ago jquery-mousewheel.js 1 year ago jquery-slimscroll.js 1 year ago lottie.js 1 year ago luxon.js 1 year ago markerclusterer.js 1 year ago modal.js 1 year ago motionpath.js 1 year ago pa-gsap.js 1 year ago pa-scrolldir.js 1 year ago premium-addons.js 1 year ago premium-banner.js 1 year ago premium-blog.js 1 year ago premium-button.js 1 year ago premium-carousel-widget.js 1 year ago premium-contact-form.js 1 year ago premium-countdown-timer.js 1 year ago premium-counter.js 1 year ago premium-dis-conditions.js 1 year ago premium-dual-header.js 1 year ago premium-eq-height.js 1 year ago premium-fancy-text.js 1 year ago premium-floating-effects.js 1 year ago premium-global-tooltips.js 1 year ago premium-icon-list.js 1 year ago premium-image-button.js 1 year ago premium-image-scroll.js 1 year ago premium-img-gallery.js 1 year ago premium-maps.js 1 year ago premium-media-wheel.js 1 year ago premium-mini-cart.js 1 year ago premium-mobile-menu.js 1 year ago premium-modal-box.js 1 year ago premium-nav-menu.js 1 year ago premium-notifications.js 1 year ago premium-person.js 1 year ago premium-pinterest-feed.js 1 year ago premium-post-ticker.js 1 year ago premium-progressbar.js 1 year ago premium-search-form.js 1 year ago premium-shape-divider.js 1 year ago premium-svg-drawer.js 1 year ago premium-tcloud.js 1 year ago premium-testimonials.js 1 year ago premium-textual-showcase.js 1 year ago premium-tiktok-feed.js 1 year ago premium-title.js 1 year ago premium-video-box.js 1 year ago premium-vscroll.js 1 year ago premium-weather.js 1 year ago premium-woo-categories.js 1 year ago premium-woo-cta.js 1 year ago premium-woo-products.js 1 year ago premium-world-clock.js 1 year ago premium-wrapper-link.js 1 year ago prettyPhoto.js 1 year ago scrollTrigger.js 1 year ago slick.js 1 year ago tooltipster.js 1 year ago typed.js 1 year ago universal-tilt.js 1 year ago vticker.js 1 year ago
premium-search-form.js
383 lines
1 (function ($) {
2
3 var PremiumSearchHandler = function ($scope, $) {
4
5 var widgetID = $scope.data('id');
6
7 $scope = $('.elementor-element-' + widgetID);
8
9 var $container = $scope.find('.premium-search__container'),
10 settings = $container.data('settings'),
11 $search = $scope.find('.premium-search__input'),
12 $spinnerWrap = $scope.find('.premium-search__spinner'),
13 queryType = settings.query,
14 buttonAction = settings.buttonAction,
15 lastSearchQuery = null,
16 highlightColor = getComputedStyle($scope[0]).getPropertyValue('--pa-search-hightlight');
17
18 if ('post' === queryType) {
19 var $resultsContainer = $scope.find('.premium-search__query-wrap'),
20 pageNumber = 1;
21
22 if (settings.hideOnClick) {
23
24 $("body").on("click", function (event) {
25
26 var widgetContent = ".premium-search__container, .premium-search__container *, .premium-search__query-wrap, .premium-search__query-wrap *";
27
28 if (!$(event.target).is($scope.find(widgetContent))) {
29 $resultsContainer.html('').addClass('query-hidden');
30 }
31 });
32 }
33 }
34
35 if ('onpage' === buttonAction) {
36
37 $container.on('click', '.premium-search__btn', handleSearch);
38
39 $search.on('keyup', function () {
40 var searchQuery = $search.val();
41
42 //Hide the current query everytime a keyboard is clicked. But only if query string is changed.
43 if (searchQuery !== lastSearchQuery && 'post' === queryType)
44 $resultsContainer.html('').addClass('query-hidden');
45
46 if ('' === searchQuery) {
47 var $textElems = $(settings.target).find('li,h1,h2,h3,h4,h5,h6,p,span,i');
48 $textElems.css('filter', 'blur(0px)');
49
50 var $fadeElems = $(settings.fadeout_target).find('li,h1,h2,h3,h4,h5,h6,p,span,i')
51 $fadeElems.css('opacity', '1');
52 }
53
54 });
55
56 } else {
57 $container.on('click', '.premium-search__btn', function () {
58
59 var searchQuery = $search.val(),
60 postType = $container.find('.premium-search__type-select').val() || [];
61
62 window.location.href = settings.search_link + '?s=' + searchQuery + '&post_type=' + postType;
63 });
64 }
65
66 //On click remove button.
67 $container.on('click', '.premium-search__remove-wrap', function () {
68 $search.val('');
69 handleSearch('remove');
70 });
71
72 //On change post type select.
73 $container.find('.premium-search__type-select').on('change', function () {
74 lastSearchQuery = '';
75 handleSearch();
76 });
77
78 //We want the search to be triggered all time.
79 $search.on('keyup', handleSearch);
80
81 //For enter button.
82 document.addEventListener("keydown", function (event) {
83
84 if ($container.hasClass("is-focused")) {
85 if (13 === event.keyCode)
86 handleSearch();
87 }
88
89 });
90
91 $search.on("focus blur", function (e) {
92 $container.toggleClass("is-focused");
93
94 if ('focus' === e.type) {
95 lastSearchQuery = '';
96 handleSearch();
97 }
98
99 });
100
101 if ($scope.hasClass('premium-search-anim-label-letter')) {
102
103 $search.on("focus", function () {
104 var letterSpacing = parseFloat($container.find('label').css('letter-spacing').replace('px', ''));
105
106 $container.find('label').css('letter-spacing', (letterSpacing + 3) + 'px');
107 });
108
109 $search.on("blur", function () {
110 var letterSpacing = parseFloat($container.find('label').css('letter-spacing').replace('px', ''));
111
112 $container.find('label').css('letter-spacing', (letterSpacing - 3) + 'px');
113 });
114
115
116
117 }
118
119 function handleSearch(trigger) {
120
121 var timeToWait = 'remove' === trigger ? 10 : ('elements' === queryType ? 100 : 1000);
122
123 setTimeout(function () {
124
125 var searchQuery = $search.val();
126
127 if (!$container.hasClass('fetching') && searchQuery !== lastSearchQuery) {
128
129 if ('post' === queryType)
130 $resultsContainer.html('').addClass('query-hidden');
131
132 if ('elements' !== queryType) {
133
134 if ('' !== searchQuery) {
135
136 $.ajax({
137 url: PremiumSettings.ajaxurl,
138 dataType: 'json',
139 type: 'POST',
140 data: {
141 action: 'premium_get_search_results',
142 nonce: PremiumSettings.nonce,
143 page_id: $container.data('page'),
144 page_number: 1,
145 widget_id: $scope.data('id'),
146 query: searchQuery,
147 post_type: $container.find('.premium-search__type-select').val(),
148 results_number: settings.results_number
149 },
150 beforeSend: function () {
151
152 $container.find('.premium-search__remove-wrap').addClass('premium-addons__v-hidden');
153
154 $spinnerWrap.append('<div class="premium-loading-feed"><div class="premium-loader"></div></div>');
155
156 $container.addClass('fetching');
157 },
158 success: function (res) {
159
160 if (!res.data)
161 return;
162
163 var posts = res.data.posts,
164 pagination = res.data.pagination;
165
166 $spinnerWrap.find(".premium-loading-feed").remove();
167
168 $container.find('.premium-search__remove-wrap').removeClass('premium-addons__v-hidden');
169
170 $resultsContainer.html(posts).removeClass('query-hidden');
171
172 if (settings.carousel)
173 $resultsContainer.find('.premium-search__posts-wrap').slick(getSlickSettings());
174
175 // if ($container.hasClass('premium-search__skin-banner'))
176 forceEqualHeight();
177
178 if ('' !== pagination) {
179 $resultsContainer.append("<div class='premium-search__footer'></div>");
180 $resultsContainer.find(".premium-search__footer").html(pagination);
181 }
182
183 $container.removeClass('fetching');
184
185 },
186 error: function (err) {
187 console.log(err);
188
189 $spinnerWrap.find(".premium-loading-feed").remove();
190 $container.removeClass('fetching');
191 },
192 });
193 }
194
195 } else {
196
197 var $textElems = $(settings.target).find('li,h1,h2,h3,h4,h5,h6,p,span,i'),
198 $fadeElems = $(settings.fadeout_target).find('li,h1,h2,h3,h4,h5,h6,p,span,i');
199
200 $textElems.css('transition', 'filter 0.3s ease-in-out');
201 $fadeElems.css('transition', 'opacity 0.3s ease-in-out');
202
203 $textElems.find('.pa-highlighted-text-' + widgetID).removeClass('pa-highlighted-text-' + widgetID);
204 $textElems.css('filter', 'blur(0px)');
205 $fadeElems.css('opacity', '1');
206
207 if ('' !== searchQuery) {
208
209 searchQuery = searchQuery.trim().toLowerCase();
210
211 // Filter elements that don't contain the specified text (case-sensitive)
212 var $queriedElems = $textElems.filter(function () {
213 return $(this).text().toLowerCase().indexOf(searchQuery) == -1;
214 });
215
216 $queriedElems.css('filter', 'blur(3px)');
217 $fadeElems.css('opacity', '0.4');
218
219 if (highlightColor) {
220
221 var $matchedElems = $textElems.filter(function () {
222 return $(this).text().toLowerCase().indexOf(searchQuery) !== -1;
223 });
224
225 $matchedElems.map(function (index, textElem) {
226
227 if ($(this).is(':visible') && 'LI' !== $(this).prop('tagName')) {
228
229 textElem = $(this).text().toLowerCase();
230
231 textElem = textElem.replace(new RegExp(searchQuery, 'g'), '<span class="pa-highlighted-text pa-highlighted-text-' + widgetID + '">' + searchQuery + '</span>');
232
233 $(this).html(textElem);
234 }
235 });
236
237 }
238
239 } else {
240 $textElems.css('filter', 'blur(0px)');
241
242 $textElems.find('.pa-highlighted-text-' + widgetID).removeClass('pa-highlighted-text-' + widgetID);
243 $fadeElems.css('opacity', '1');
244 }
245
246
247 }
248
249 lastSearchQuery = searchQuery;
250 }
251
252 }, timeToWait);
253
254 }
255
256 function forceEqualHeight() {
257
258 var heights = new Array(),
259 $contentWrapper = $container.find('.premium-search__post-content');
260
261 $contentWrapper.each(function (index, post) {
262
263 var height = $(post).outerHeight();
264
265 heights.push(height);
266 });
267
268 var maxHeight = Math.max.apply(null, heights);
269
270 $contentWrapper.css("height", maxHeight + "px");
271 }
272
273 function getSlickSettings() {
274
275 var cols = getComputedStyle($scope[0]).getPropertyValue('--pa-search-carousel-slides'),
276 prevArrow = settings.arrows ? '<a type="button" data-role="none" class="carousel-arrow carousel-prev" aria-label="Previous" role="button" style=""><i class="fas fa-angle-left" aria-hidden="true"></i></a>' : '',
277 nextArrow = settings.arrows ? '<a type="button" data-role="none" class="carousel-arrow carousel-next" aria-label="Next" role="button" style=""><i class="fas fa-angle-right" aria-hidden="true"></i></a>' : '';
278
279 cols = parseInt(100 / cols.substr(0, cols.indexOf('%')))
280
281 return {
282 infinite: false,
283 draggable: true,
284 autoplay: false,
285 slidesToShow: cols,
286 slidesToScroll: settings.slidesToScroll || cols,
287
288 rows: settings.rows,
289 speed: settings.speed,
290 nextArrow: nextArrow,
291 prevArrow: prevArrow,
292 fade: settings.fade,
293 centerMode: settings.center,
294 centerPadding: settings.spacing + "px",
295
296 dots: settings.dots,
297 customPaging: function () {
298 return '<i class="fas fa-circle"></i>';
299 }
300 }
301
302 }
303
304 $scope.on('click', '.premium-search-form__pagination-container .page-numbers', function (e) {
305
306 e.preventDefault();
307
308 if ($(this).hasClass("current")) return;
309
310 var currentPage = parseInt($scope.find('.page-numbers.current').html());
311
312 if ($(this).hasClass('next')) {
313 pageNumber = currentPage + 1;
314 } else if ($(this).hasClass('prev')) {
315 pageNumber = currentPage - 1;
316 } else {
317 pageNumber = $(this).html();
318 }
319
320 $.ajax({
321 url: PremiumSettings.ajaxurl,
322 dataType: 'json',
323 type: 'POST',
324 data: {
325 action: 'premium_get_search_results',
326 nonce: PremiumSettings.nonce,
327 page_id: $container.data('page'),
328 page_number: pageNumber,
329 widget_id: $scope.data('id'),
330 query: lastSearchQuery,
331 post_type: $container.find('.premium-search__type-select').val(),
332 results_number: settings.results_number
333 },
334 beforeSend: function () {
335
336 $container.find('.premium-search__remove-wrap').addClass('premium-addons__v-hidden');
337
338 $resultsContainer.append('<div class="premium-loading-feed"><div class="premium-loader"></div></div>');
339
340 $container.addClass('fetching');
341 },
342 success: function (res) {
343
344 if (!res.data)
345 return;
346
347 var posts = res.data.posts,
348 pagination = res.data.pagination;
349
350 $resultsContainer.find(".premium-loading-feed").remove();
351
352 $container.find('.premium-search__remove-wrap').removeClass('premium-addons__v-hidden');
353
354 $resultsContainer.html(posts).removeClass('query-hidden');
355
356 forceEqualHeight();
357
358 $resultsContainer.append("<div class='premium-search__footer'></div>");
359
360 $resultsContainer.find(".premium-search__footer").html(pagination);
361
362 $container.removeClass('fetching');
363
364 },
365 error: function (err) {
366 console.log(err);
367
368 $spinnerWrap.find(".premium-loading-feed").remove();
369
370 $container.removeClass('fetching');
371 },
372 });
373
374 });
375
376 };
377
378 $(window).on('elementor/frontend/init', function () {
379 elementorFrontend.hooks.addAction('frontend/element_ready/premium-search-form.default', PremiumSearchHandler);
380 });
381 })(jQuery);
382
383