PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.87
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.87
51.1.87 51.1.86 51.1.84 51.1.85 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 All 41 releases
← All changes | includes/widgets/Search/script.js +271 -0 51.1.2 → 51.1.87 View file →
@@ -1,0 +1,271 @@
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);