PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.37
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.37
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / widgets / Search / script.js

script.js in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.37, at includes/widgets/Search/script.js

271 lines 16.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // noinspection JSUnresolvedReference
2
3 "use strict";
4 (function ($) {
5 $(window).on('elementor/frontend/init', function () {
6 let AjaxSearchHandler = elementorModules.frontend.handlers.Base.extend({
7 onInit: function onInit() {
8 this.initAjaxSearch();
9 },
10
11 initAjaxSearch: function () {
12 const $scope = this.$element;
13 let isFound = false;
14 $scope.find('.king-addons-search-form-input').on({
15 focus: function () {
16 $scope.addClass('king-addons-search-form-input-focus');
17 },
18 blur: function () {
19 $scope.removeClass('king-addons-search-form-input-focus');
20 }
21 });
22
23 if ($scope.find('.king-addons-category-select').length > 0) {
24
25 $(document).ready(function () {
26 let king_addons_SelectedCategory = localStorage.getItem('king_addons_SelectedCategory');
27 if (king_addons_SelectedCategory) {
28 $scope.find('.king-addons-category-select option').each(function () {
29 if ($(this).val() === king_addons_SelectedCategory) {
30 isFound = true;
31 $scope.find('.king-addons-category-select').val(king_addons_SelectedCategory);
32 return false;
33 } else {
34 $scope.find('.king-addons-category-select').val(0);
35 }
36 });
37 }
38 });
39
40 $scope.find('.king-addons-category-select').on('change', function (e) {
41
42 let selectedValue = $(this).val();
43 localStorage.setItem('king_addons_SelectedCategory', selectedValue);
44
45 if ($scope.find('.king-addons-search-form-input').attr('ajax-search') === 'yes') {
46 postsOffset = 0;
47 $scope.find('.king-addons-data-fetch').hide();
48 $scope.find('.king-addons-data-fetch ul').html('');
49 ajaxSearchCall($scope.find('.king-addons-search-form-input'), postsOffset, e);
50 }
51 });
52 }
53
54 let prevData;
55 let searchTimeout = null;
56
57 function ajaxSearchCall(thisObject, postsOffset, e) {
58 if (e.which === 13) {
59 return false;
60 }
61
62 if (searchTimeout != null) {
63 clearTimeout(searchTimeout);
64 }
65 let optionPostType = ($scope.find('.king-addons-category-select').length > 0 && $scope.find('.king-addons-category-select').find('option:selected').data('post-type'));
66 let king_addons_TaxonomyType = $scope.find('.king-addons-search-form-input').attr('king-addons-taxonomy-type');
67
68 if ($scope.find('.king-addons-category-select').length > 0) {
69 if (!king_addons_TaxonomyType) {
70 if ($scope.find('.king-addons-search-form-input').attr('king-addons-query-type') === 'product') {
71 king_addons_TaxonomyType = 'product_cat';
72 } else {
73 king_addons_TaxonomyType = 'category';
74 }
75 }
76 }
77
78 searchTimeout = setTimeout(() => {
79 let thisValue = thisObject.val();
80
81 $.ajax({
82 type: 'POST',
83 url: KingAddonsSearchData.ajaxUrl,
84 data: {
85 action: 'king_addons_data_fetch',
86 nonce: KingAddonsSearchData.nonce,
87 king_addons_keyword: $scope.find('.king-addons-search-form-input').val(),
88 king_addons_query_type: $scope.find('.king-addons-search-form-input').attr('king-addons-query-type'),
89 king_addons_option_post_type: optionPostType ? $scope.find('.king-addons-category-select').find('option:selected').data('post-type') : '',
90 king_addons_taxonomy_type: king_addons_TaxonomyType,
91 king_addons_category: $scope.find('.king-addons-category-select').length > 0 ? $scope.find('.king-addons-category-select').val() : '',
92 king_addons_number_of_results: $scope.find('.king-addons-search-form-input').attr('number-of-results'),
93 king_addons_search_results_offset: postsOffset,
94 king_addons_show_description: $scope.find('.king-addons-search-form-input').attr('show-description'),
95 king_addons_number_of_words: $scope.find('.king-addons-search-form-input').attr('number-of-words'),
96 king_addons_show_ajax_thumbnail: $scope.find('.king-addons-search-form-input').attr('show-ajax-thumbnails'),
97 king_addons_show_view_result_btn: $scope.find('.king-addons-search-form-input').attr('show-view-result-btn'),
98 king_addons_view_result_text: $scope.find('.king-addons-search-form-input').attr('view-result-text'),
99 king_addons_no_results: $scope.find('.king-addons-search-form-input').attr('no-results'),
100 king_addons_exclude_without_thumb: $scope.find('.king-addons-search-form-input').attr('exclude-without-thumb'),
101 king_addons_ajax_search_link_target: $scope.find('.king-addons-search-form-input').attr('link-target'),
102 king_addons_show_ps_pt: $scope.find('.king-addons-search-form-input').attr('password-protected')
103 },
104 success: function (data) {
105 $scope.closest('section').addClass('king-addons-section-z-index');
106 if ($scope.find('.king-addons-data-fetch ul').html() === '') {
107 $scope.find('.king-addons-pagination-loading').hide();
108 $scope.find('.king-addons-data-fetch ul').html(data);
109 $scope.find('.king-addons-no-more-results').fadeOut(100);
110 setTimeout(function () {
111 if (!data.includes('king-addons-no-results')) {
112 $scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
113 if ($scope.find('.king-addons-data-fetch ul').find('li').length < $scope.find('.king-addons-search-form-input').attr('number-of-results') ||
114 $scope.find('.king-addons-data-fetch ul').find('li').length === $scope.find('.king-addons-data-fetch ul').find('li').data('number-of-results')) {
115 $scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
116 $scope.find('.king-addons-load-more-results').fadeOut(100);
117 } else {
118 $scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
119 $scope.find('.king-addons-load-more-results').fadeIn(100);
120 }
121 } else {
122 $scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
123 }
124 }, 100);
125 prevData = data;
126 } else {
127 if (data !== prevData) {
128 prevData = data;
129 if (data.includes('king-addons-no-results')) {
130 $scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
131 $scope.find('.king-addons-data-fetch ul').html('');
132 $scope.closest('section').removeClass('king-addons-section-z-index');
133 } else {
134 $scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
135 }
136
137 $scope.find('.king-addons-data-fetch ul').append(data);
138
139 if (data === '') {
140 $scope.find('.king-addons-load-more-results').fadeOut(100);
141 setTimeout(function () {
142 $scope.find('.king-addons-pagination-loading').hide();
143 $scope.find('.king-addons-no-more-results').fadeIn(100);
144 }, 100);
145 } else {
146 $scope.find('.king-addons-pagination-loading').hide();
147 $scope.find('.king-addons-load-more-results').show();
148 }
149
150 if ($scope.find('.king-addons-data-fetch ul').find('li').length < $scope.find('.king-addons-search-form-input').attr('number-of-results')) {
151 $scope.find('.king-addons-load-more-results').fadeOut(100);
152 setTimeout(function () {
153 $scope.find('.king-addons-pagination-loading').hide();
154 $scope.find('.king-addons-no-more-results').fadeIn(100);
155 }, 100);
156 } else {
157 $scope.find('.king-addons-load-more-results').show();
158 }
159
160 if ($scope.find('.king-addons-data-fetch ul').find('li').length === $scope.find('.king-addons-data-fetch ul').find('li').data('number-of-results')) {
161 $scope.find('.king-addons-load-more-results').fadeOut(100);
162 setTimeout(function () {
163 $scope.find('.king-addons-pagination-loading').hide();
164 $scope.find('.king-addons-no-more-results').fadeIn(100);
165 }, 100);
166 } else {
167 $scope.find('.king-addons-load-more-results').show();
168 }
169 }
170 }
171
172 if (data.includes('king-addons-no-results')) {
173 $scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
174 $scope.find('.king-addons-load-more-results').fadeOut();
175 } else {
176 $scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
177 }
178
179 if (thisValue.length > 2) {
180 $scope.find('.king-addons-data-fetch').slideDown(200);
181 $scope.find('.king-addons-data-fetch ul').fadeTo(200, 1);
182 } else {
183 $scope.find('.king-addons-data-fetch').slideUp(200);
184 $scope.find('.king-addons-data-fetch ul').fadeTo(200, 0);
185 setTimeout(function () {
186 $scope.find('.king-addons-data-fetch ul').html('');
187 $scope.find('.king-addons-no-results').remove();
188 $scope.closest('section').removeClass('king-addons-section-z-index');
189 }, 600);
190 postsOffset = 0;
191 }
192 },
193 error: function (error) {
194 console.log(error);
195 }
196 });
197 }, 400);
198 }
199
200 if ($scope.find('.king-addons-search-form-input').attr('ajax-search') === 'yes') {
201
202 $scope.find('.king-addons-search-form').attr('autocomplete', 'off');
203
204 var postsOffset = 0;
205
206 $scope.find('.king-addons-load-more-results').on('click', function (e) {
207 postsOffset += +$scope.find('.king-addons-search-form-input').attr('number-of-results');
208 $scope.find('.king-addons-load-more-results').hide();
209 $scope.find('.king-addons-pagination-loading').css('display', 'inline-block');
210 ajaxSearchCall($scope.find('.king-addons-search-form-input'), postsOffset, e);
211 });
212
213 $scope.find('.king-addons-search-form-input').on('keyup', function (e) {
214 postsOffset = 0;
215 $scope.find('.king-addons-data-fetch').hide();
216 $scope.find('.king-addons-data-fetch ul').html('');
217 ajaxSearchCall($(this), postsOffset, e);
218 });
219
220 $scope.find('.king-addons-data-fetch').on('click', '.king-addons-close-search', function () {
221 // noinspection DuplicatedCode
222 $scope.find('.king-addons-search-form-input').val('');
223 $scope.find('.king-addons-data-fetch').slideUp(200);
224 setTimeout(function () {
225 $scope.find('.king-addons-data-fetch ul').html('');
226 $scope.find('.king-addons-no-results').remove();
227 $scope.closest('section').removeClass('king-addons-section-z-index');
228 }, 400);
229 postsOffset = 0;
230 });
231
232 $('body').on('click', function (e) {
233 if (!e.target.classList.value.includes('king-addons-data-fetch') && !e.target.closest('.king-addons-data-fetch')) {
234 if (!e.target.classList.value.includes('king-addons-search-form') && !e.target.closest('.king-addons-search-form')) {
235 // noinspection DuplicatedCode
236 $scope.find('.king-addons-search-form-input').val('');
237 $scope.find('.king-addons-data-fetch').slideUp(200);
238 setTimeout(function () {
239 $scope.find('.king-addons-data-fetch ul').html('');
240 $scope.find('.king-addons-no-results').remove();
241 $scope.closest('section').removeClass('king-addons-section-z-index');
242 }, 400);
243 postsOffset = 0;
244 }
245 }
246 });
247
248 let mutationObserver = new MutationObserver(function () {
249 $scope.find('.king-addons-data-fetch li').on('click', function () {
250 let itemUrl = $(this).find('a').attr('href');
251 let itemUrlTarget = $(this).find('a').attr('target');
252 window.open(itemUrl, itemUrlTarget).focus();
253 });
254 });
255
256 mutationObserver.observe($scope[0], {
257 childList: true,
258 subtree: true,
259 });
260 }
261
262 }
263 });
264
265 elementorFrontend.hooks.addAction('frontend/element_ready/king-addons-search.default', function ($scope) {
266 elementorFrontend.elementsHandler.addHandler(AjaxSearchHandler, {
267 $element: $scope
268 });
269 });
270 });
271 })(jQuery);