<?php
// Exit if accessed directly
if ( ! defined( 'DGWT_WCAS_FILE' ) ) {
exit;
}
add_filter( 'body_class', function ( $classes ) {
$classes[] = 'dgwt-wcas-theme-flatsome';
return $classes;
} );
add_action( 'wp_loaded', function () {
remove_shortcode( 'search' );
add_shortcode( 'search', array( 'DgoraWcas\\Shortcode', 'addBody' ) );
} );
global $dgwt_wcas_flatsome_search_counter;
$dgwt_wcas_flatsome_search_counter = 0;
add_action( 'wp_head', function () { ?>
<style>
.dgwt-wcas-flatsome-up {
margin-top: -40vh;
}
#search-lightbox .dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input {
height: 60px;
font-size: 20px;
}
#search-lightbox .dgwt-wcas-search-wrapp {
-webkit-transition: all 100ms ease-in-out;
-moz-transition: all 100ms ease-in-out;
-ms-transition: all 100ms ease-in-out;
-o-transition: all 100ms ease-in-out;
transition: all 100ms ease-in-out;
}
#search-lightbox .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:before {
top: 21px;
}
.dgwt-wcas-overlay-mobile-on .mfp-wrap .mfp-content {
width: 100vw;
}
.dgwt-wcas-overlay-mobile-on .mfp-close,
.dgwt-wcas-overlay-mobile-on .nav-sidebar {
display: none;
}
.dgwt-wcas-overlay-mobile-on .main-menu-overlay {
display: none;
}
.dgwt-wcas-open .header-search-dropdown .nav-dropdown {
opacity: 1;
max-height: inherit;
left: -15px !important;
}
.dgwt-wcas-open:not(.dgwt-wcas-theme-flatsome-dd-sc) .nav-right .header-search-dropdown .nav-dropdown {
left: auto;
/*right: -15px;*/
}
.dgwt-wcas-theme-flatsome .nav-dropdown .dgwt-wcas-search-wrapp {
min-width: 450px;
}
.header-search-form {
min-width: 250px;
}
</style>
<?php
} );
// Count search items in headers.
add_action( 'flatsome_header_elements', function ( $value ) {
global $dgwt_wcas_flatsome_search_counter;
if ( $value === 'search' ) {
$dgwt_wcas_flatsome_search_counter ++;
}
} );
add_action( 'wp_footer', function () {
global $dgwt_wcas_flatsome_search_counter;
// Overwriting search icon.
if ( get_theme_mod( 'header_search_style', 'dropdown' ) === 'dropdown' && $dgwt_wcas_flatsome_search_counter > 0 ) {
for ( $i = 0; $i < $dgwt_wcas_flatsome_search_counter; $i ++ ) {
echo '<div id="wcas-theme-search-' . $i . '" style="display: block;" class="wcas-theme-search"><li>' . do_shortcode( '[fibosearch layout="icon"]' ) . '</li></div>';
}
?>
<style>
.header-main .dgwt-wcas-search-wrapp.dgwt-wcas-layout-icon .dgwt-wcas-search-icon {
width: 16px;
}
.header-main .dgwt-wcas-search-wrapp.dgwt-wcas-layout-icon .dgwt-wcas-ico-magnifier-handler {
fill: hsla(0, 0%, 40%, .85);
max-width: 16px;
}
.header-main .dgwt-wcas-search-wrapp.dgwt-wcas-layout-icon .dgwt-wcas-ico-magnifier-handler:hover {
fill: hsla(0, 0%, 7%, .85);
}
.header-main.nav-dark .dgwt-wcas-search-wrapp.dgwt-wcas-layout-icon .dgwt-wcas-ico-magnifier-handler {
fill: hsla(0, 0%, 100%, .8);
}
.header-main.nav-dark .dgwt-wcas-search-wrapp.dgwt-wcas-layout-icon .dgwt-wcas-ico-magnifier-handler:hover {
fill: #ffffff;
}
</style>
<script>
wcasThemeSearch = document.querySelectorAll('.header-search');
if (wcasThemeSearch.length > 0) {
wcasThemeSearch.forEach((wcasThemeSearchItem, index) => {
if (document.querySelector('#wcas-theme-search-' + index + ' > li') !== null) {
wcasThemeSearchItem.replaceWith(document.querySelector('#wcas-theme-search-' + index + ' > li'));
}
});
}
document.querySelectorAll('.wcas-theme-search').forEach(function (elem) {
elem.remove();
});
</script>
<?php
}
$minChars = DGWT_WCAS()->settings->getOption( 'min_chars' );
if ( empty( $minChars ) || ! is_numeric( $minChars ) ) {
$minChars = 3;
}
?>
<script>
(function ($) {
$(document).ready(function () {
$(document).on('keyup', '#search-lightbox .dgwt-wcas-search-wrapp .dgwt-wcas-search-input', function () {
if (this.value.length >= <?php echo $minChars; ?>) {
if (!$(this).closest('.dgwt-wcas-search-wrapp').hasClass('dgwt-wcas-flatsome-up')) {
setTimeout(function () {
$(window).trigger('resize.autocomplete');
}, 105);
}
$(this).closest('.dgwt-wcas-search-wrapp').addClass('dgwt-wcas-flatsome-up');
}
});
var refreshDropdownPosition;
var style = '';
var positioning = false;
$(document).on('mouseenter', '.header-search-dropdown a', function (e) {
if (positioning) {
return;
}
setTimeout(function () {
var pos = $(e.target).closest('.header-search').find('.nav-dropdown').attr('style');
if (typeof pos == 'string' && pos.length > 0) {
style = pos;
}
refreshDropdownPosition = setInterval(function () {
if ($('body').hasClass('dgwt-wcas-open') && style.length > 0) {
$('.nav-dropdown').attr('style', style);
}
if (!$('body').hasClass('dgwt-wcas-open') && !$('.header-search').hasClass('current-dropdown')) {
clearInterval(refreshDropdownPosition);
$('.nav-dropdown').removeAttr('style');
style = '';
positioning = false;
}
}, 10)
}, 400);
positioning = true;
});
$(document).on('click', '.header-search-lightbox > a, .header-search-lightbox > .header-button > a', function () {
var formWrapper = $('#search-lightbox').find('.dgwt-wcas-search-wrapp');
setTimeout(function () {
if (formWrapper.find('.dgwt-wcas-close')[0]) {
formWrapper.find('.dgwt-wcas-close')[0].click();
}
formWrapper.removeClass('dgwt-wcas-flatsome-up');
formWrapper.find('.dgwt-wcas-search-input').trigger('focus');
// Recalc button positions.
const plugin = formWrapper.find('.dgwt-wcas-search-input').data('autocomplete');
plugin.positionPreloaderAndMic();
}, 300);
});
// Mobile
$(document).on('click', '.mobile-nav .header-search .icon-search', function () {
var $handler = $('.js-dgwt-wcas-enable-mobile-form');
if ($handler.length) {
$handler[0].click();
// Close unused modal.
setTimeout(function () {
var $modalClose = $('.mfp-wrap .mfp-close');
if ($modalClose.length) {
$modalClose[0].click();
}
}, 300);
}
});
});
})(jQuery);
</script>
<?php
}, 1000 );
add_action( 'wp_footer', function () { ?>
<script>
(function ($) {
// Fix Quantity buttons
$(document).on('dgwtWcasDetailsPanelLoaded', function () {
var $quantityFields = $('.dgwt-wcas-details-wrapp .quantity');
if ($quantityFields.length) {
$quantityFields.addQty();
}
});
})(jQuery);
</script>
<?php
}, 1001 );
add_filter( 'dgwt/wcas/troubleshooting/tests', function ( $tests ) {
$tests['direct'][] = array(
'label' => 'Flatsome incompatible settings',
'test' => function () {
$result = array(
'label' => '',
'status' => 'good',
'description' => '',
'actions' => '',
'test' => 'FlatsomeIncompatibleSettings',
);
if (
get_theme_mod( 'header_search_style' ) === 'lightbox' &&
get_theme_mod( 'header_cart_style', 'dropdown' ) === 'off-canvas' &&
DGWT_WCAS()->settings->getOption( 'show_details_box' ) === 'on'
) {
$customizeUrl = admin_url( 'customize.php' );
$result['status'] = 'critical';
$result['label'] = __( 'There is a conflict between Flatsome theme settings and our plugin', 'ajax-search-for-woocommerce' );
$result['description'] = '<p style="max-width: 740px">' . __( "There is a rare combination of <b>FiboSearch</b> and <b>Flatsome</b> settings that might cause issues when adding a product to the cart from the autocomplete search results. Unfortunately, you have this combination. You can't use <b>Off-Canvas Sidebar</b> as <b>Cart Style (Flatsome)</b>, <b>Search Icon Type</b> as <b>Search Icon Type (Flatsome)</b>, and <b>Details Panel (FiboSearch)</b> at the same time. The solution is to resign from one of these options.", 'ajax-search-for-woocommerce' ) . '</p>';
$result['description'] .= '<p><b>' . __( 'Solutions (you only need to use one of them)', 'ajax-search-for-woocommerce' ) . '</b></p>';
$result['description'] .= '<ol><li>' . __( '(FiboSearch settings) Go to <code>Autocomplete</code> tab and disable <code>Show Details Panel</code> option.', 'ajax-search-for-woocommerce' ) . '</li>';
$result['description'] .= '<li>' . sprintf( __( '(Flatsome settings) Go to <code>Appearance -> <a href="%s" target="_blank">Customize</a> -> Header -> Search</code> and change <code>Search Icon Type</code> option to <code>Dropdown</code>.', 'ajax-search-for-woocommerce' ), $customizeUrl ) . '</li>';
$result['description'] .= '<li>' . sprintf( __( '(Flatsome settings) Go to <code>Appearance -> <a href="%s" target="_blank">Customize</a> -> Header -> Cart</code> and change <code>Cart Style</code> option to <code>Dropdown</code> or <code>Link only</code>.', 'ajax-search-for-woocommerce' ), $customizeUrl ) . '</li></ol>';
}
return $result;
}
);
return $tests;
} );