// noinspection JSUnresolvedReference
"use strict";
(function ($) {
$(window).on('elementor/frontend/init', function () {
let AjaxSearchHandler = elementorModules.frontend.handlers.Base.extend({
onInit: function onInit() {
this.initAjaxSearch();
},
initAjaxSearch: function () {
const $scope = this.$element;
let isFound = false;
$scope.find('.king-addons-search-form-input').on({
focus: function () {
$scope.addClass('king-addons-search-form-input-focus');
},
blur: function () {
$scope.removeClass('king-addons-search-form-input-focus');
}
});
if ($scope.find('.king-addons-category-select').length > 0) {
$(document).ready(function () {
let king_addons_SelectedCategory = localStorage.getItem('king_addons_SelectedCategory');
if (king_addons_SelectedCategory) {
$scope.find('.king-addons-category-select option').each(function () {
if ($(this).val() === king_addons_SelectedCategory) {
isFound = true;
$scope.find('.king-addons-category-select').val(king_addons_SelectedCategory);
return false;
} else {
$scope.find('.king-addons-category-select').val(0);
}
});
}
});
$scope.find('.king-addons-category-select').on('change', function (e) {
let selectedValue = $(this).val();
localStorage.setItem('king_addons_SelectedCategory', selectedValue);
if ($scope.find('.king-addons-search-form-input').attr('ajax-search') === 'yes') {
postsOffset = 0;
$scope.find('.king-addons-data-fetch').hide();
$scope.find('.king-addons-data-fetch ul').html('');
ajaxSearchCall($scope.find('.king-addons-search-form-input'), postsOffset, e);
}
});
}
let prevData;
let searchTimeout = null;
function ajaxSearchCall(thisObject, postsOffset, e) {
if (e.which === 13) {
return false;
}
if (searchTimeout != null) {
clearTimeout(searchTimeout);
}
let optionPostType = ($scope.find('.king-addons-category-select').length > 0 && $scope.find('.king-addons-category-select').find('option:selected').data('post-type'));
let king_addons_TaxonomyType = $scope.find('.king-addons-search-form-input').attr('king-addons-taxonomy-type');
if ($scope.find('.king-addons-category-select').length > 0) {
if (!king_addons_TaxonomyType) {
if ($scope.find('.king-addons-search-form-input').attr('king-addons-query-type') === 'product') {
king_addons_TaxonomyType = 'product_cat';
} else {
king_addons_TaxonomyType = 'category';
}
}
}
searchTimeout = setTimeout(() => {
let thisValue = thisObject.val();
$.ajax({
type: 'POST',
url: KingAddonsSearchData.ajaxUrl,
data: {
action: 'king_addons_data_fetch',
nonce: KingAddonsSearchData.nonce,
king_addons_keyword: $scope.find('.king-addons-search-form-input').val(),
king_addons_query_type: $scope.find('.king-addons-search-form-input').attr('king-addons-query-type'),
king_addons_option_post_type: optionPostType ? $scope.find('.king-addons-category-select').find('option:selected').data('post-type') : '',
king_addons_taxonomy_type: king_addons_TaxonomyType,
king_addons_category: $scope.find('.king-addons-category-select').length > 0 ? $scope.find('.king-addons-category-select').val() : '',
king_addons_number_of_results: $scope.find('.king-addons-search-form-input').attr('number-of-results'),
king_addons_search_results_offset: postsOffset,
king_addons_show_description: $scope.find('.king-addons-search-form-input').attr('show-description'),
king_addons_number_of_words: $scope.find('.king-addons-search-form-input').attr('number-of-words'),
king_addons_show_ajax_thumbnail: $scope.find('.king-addons-search-form-input').attr('show-ajax-thumbnails'),
king_addons_show_view_result_btn: $scope.find('.king-addons-search-form-input').attr('show-view-result-btn'),
king_addons_view_result_text: $scope.find('.king-addons-search-form-input').attr('view-result-text'),
king_addons_no_results: $scope.find('.king-addons-search-form-input').attr('no-results'),
king_addons_exclude_without_thumb: $scope.find('.king-addons-search-form-input').attr('exclude-without-thumb'),
king_addons_ajax_search_link_target: $scope.find('.king-addons-search-form-input').attr('link-target'),
king_addons_show_ps_pt: $scope.find('.king-addons-search-form-input').attr('password-protected')
},
success: function (data) {
$scope.closest('section').addClass('king-addons-section-z-index');
if ($scope.find('.king-addons-data-fetch ul').html() === '') {
$scope.find('.king-addons-pagination-loading').hide();
$scope.find('.king-addons-data-fetch ul').html(data);
$scope.find('.king-addons-no-more-results').fadeOut(100);
setTimeout(function () {
if (!data.includes('king-addons-no-results')) {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
if ($scope.find('.king-addons-data-fetch ul').find('li').length < $scope.find('.king-addons-search-form-input').attr('number-of-results') ||
$scope.find('.king-addons-data-fetch ul').find('li').length === $scope.find('.king-addons-data-fetch ul').find('li').data('number-of-results')) {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
$scope.find('.king-addons-load-more-results').fadeOut(100);
} else {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
$scope.find('.king-addons-load-more-results').fadeIn(100);
}
} else {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
}
}, 100);
prevData = data;
} else {
if (data !== prevData) {
prevData = data;
if (data.includes('king-addons-no-results')) {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
$scope.find('.king-addons-data-fetch ul').html('');
$scope.closest('section').removeClass('king-addons-section-z-index');
} else {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
}
$scope.find('.king-addons-data-fetch ul').append(data);
if (data === '') {
$scope.find('.king-addons-load-more-results').fadeOut(100);
setTimeout(function () {
$scope.find('.king-addons-pagination-loading').hide();
$scope.find('.king-addons-no-more-results').fadeIn(100);
}, 100);
} else {
$scope.find('.king-addons-pagination-loading').hide();
$scope.find('.king-addons-load-more-results').show();
}
if ($scope.find('.king-addons-data-fetch ul').find('li').length < $scope.find('.king-addons-search-form-input').attr('number-of-results')) {
$scope.find('.king-addons-load-more-results').fadeOut(100);
setTimeout(function () {
$scope.find('.king-addons-pagination-loading').hide();
$scope.find('.king-addons-no-more-results').fadeIn(100);
}, 100);
} else {
$scope.find('.king-addons-load-more-results').show();
}
if ($scope.find('.king-addons-data-fetch ul').find('li').length === $scope.find('.king-addons-data-fetch ul').find('li').data('number-of-results')) {
$scope.find('.king-addons-load-more-results').fadeOut(100);
setTimeout(function () {
$scope.find('.king-addons-pagination-loading').hide();
$scope.find('.king-addons-no-more-results').fadeIn(100);
}, 100);
} else {
$scope.find('.king-addons-load-more-results').show();
}
}
}
if (data.includes('king-addons-no-results')) {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'none');
$scope.find('.king-addons-load-more-results').fadeOut();
} else {
$scope.find('.king-addons-ajax-search-pagination').css('display', 'flex');
}
if (thisValue.length > 2) {
$scope.find('.king-addons-data-fetch').slideDown(200);
$scope.find('.king-addons-data-fetch ul').fadeTo(200, 1);
} else {
$scope.find('.king-addons-data-fetch').slideUp(200);
$scope.find('.king-addons-data-fetch ul').fadeTo(200, 0);
setTimeout(function () {
$scope.find('.king-addons-data-fetch ul').html('');
$scope.find('.king-addons-no-results').remove();
$scope.closest('section').removeClass('king-addons-section-z-index');
}, 600);
postsOffset = 0;
}
},
error: function (error) {
console.log(error);
}
});
}, 400);
}
if ($scope.find('.king-addons-search-form-input').attr('ajax-search') === 'yes') {
$scope.find('.king-addons-search-form').attr('autocomplete', 'off');
var postsOffset = 0;
$scope.find('.king-addons-load-more-results').on('click', function (e) {
postsOffset += +$scope.find('.king-addons-search-form-input').attr('number-of-results');
$scope.find('.king-addons-load-more-results').hide();
$scope.find('.king-addons-pagination-loading').css('display', 'inline-block');
ajaxSearchCall($scope.find('.king-addons-search-form-input'), postsOffset, e);
});
$scope.find('.king-addons-search-form-input').on('keyup', function (e) {
postsOffset = 0;
$scope.find('.king-addons-data-fetch').hide();
$scope.find('.king-addons-data-fetch ul').html('');
ajaxSearchCall($(this), postsOffset, e);
});
$scope.find('.king-addons-data-fetch').on('click', '.king-addons-close-search', function () {
// noinspection DuplicatedCode
$scope.find('.king-addons-search-form-input').val('');
$scope.find('.king-addons-data-fetch').slideUp(200);
setTimeout(function () {
$scope.find('.king-addons-data-fetch ul').html('');
$scope.find('.king-addons-no-results').remove();
$scope.closest('section').removeClass('king-addons-section-z-index');
}, 400);
postsOffset = 0;
});
$('body').on('click', function (e) {
if (!e.target.classList.value.includes('king-addons-data-fetch') && !e.target.closest('.king-addons-data-fetch')) {
if (!e.target.classList.value.includes('king-addons-search-form') && !e.target.closest('.king-addons-search-form')) {
// noinspection DuplicatedCode
$scope.find('.king-addons-search-form-input').val('');
$scope.find('.king-addons-data-fetch').slideUp(200);
setTimeout(function () {
$scope.find('.king-addons-data-fetch ul').html('');
$scope.find('.king-addons-no-results').remove();
$scope.closest('section').removeClass('king-addons-section-z-index');
}, 400);
postsOffset = 0;
}
}
});
let mutationObserver = new MutationObserver(function () {
$scope.find('.king-addons-data-fetch li').on('click', function () {
let itemUrl = $(this).find('a').attr('href');
let itemUrlTarget = $(this).find('a').attr('target');
window.open(itemUrl, itemUrlTarget).focus();
});
});
mutationObserver.observe($scope[0], {
childList: true,
subtree: true,
});
}
}
});
elementorFrontend.hooks.addAction('frontend/element_ready/king-addons-search.default', function ($scope) {
elementorFrontend.elementsHandler.addHandler(AjaxSearchHandler, {
$element: $scope
});
});
});
})(jQuery);