/**
* WP Alpha Theme Framework
* Alpha Shop
*
* @package WP Alpha Framework
* @since 1.2.0
*/
window.theme = window.theme || {};
( function ( $ ) {
/**
* Initialize shop functions
*
* @class Shop
* @since 1.0
* @return {void}
*/
theme.shop = ( function () {
/**
* Initialize shop filter menu for horizontal layout (horizontal filter widgets)
*
* @since 1.0
*/
function initSelectMenu() {
function _initSelectMenu() {
// show selected attributes after loading
$( '.toolbox-horizontal .shop-sidebar .widget .chosen' ).each( function ( e ) {
if ( $( this ).find( 'a' ).attr( 'href' ) == window.location.href ) {
return;
}
$( '' + $( this ).find( 'a' ).text() + '' )
.insertBefore( '.toolbox-horizontal + .select-items .filter-clean' )
.attr( 'data-type', $( this ).closest( '.widget' ).attr( 'id' ).split( '-' ).slice( 0, -1 ).join( '-' ) )
.data( 'link_id', $( this ).closest( '.widget' ).attr( 'id' ) )
.data( 'link_idx', $( this ).index() )
.attr( 'data-title', $( this ).find( 'a' ).attr( 'data-title' ) );
$( '.toolbox-horizontal + .select-items' ).fadeIn();
} )
}
function openMenu( e ) {
// close all select menu
$( this ).parent().siblings().removeClass( 'opened' );
$( this ).parent().toggleClass( 'opened' );
e.stopPropagation();
}
function closeMenu( e ) {
$( '.toolbox-horizontal .shop-sidebar .widget, .alpha-filters .select-ul' ).removeClass( 'opened' );
}
function stopPropagation( e ) {
e.stopPropagation();
}
function onAddFilterItem( e ) {
var $this = $( this );
if ( $this.closest( '.wc-block-product-categories-list ' ).length || $this.closest( '.widget' ).hasClass( 'yith-woo-ajax-reset-navigation' ) || $this.closest( '.widget_product_tag_cloud' ).length ) {
return;
}
// Horizontal sidebar
theme.doLoading( '.shop-sidebar.top-sidebar .widget>*:not(.widget-title)', 'small' );
// Left Sidebar
theme.doLoading( '.shop-sidebar.left-sidebar .widget>*:not(.widget-title)', 'small' );
if ( $this.closest( '.product-categories' ).length ) {
$( '.toolbox-horizontal + .select-items .select-item' ).remove();
}
if ( $this.parent().hasClass( 'chosen' ) ) {
$( '.toolbox-horizontal + .select-items .select-item' )
.filter( function ( i, el ) {
return $( el ).data( 'link_id' ) == $this.closest( '.widget' ).attr( 'id' ) &&
$( el ).data( 'link_idx' ) == $this.closest( 'li' ).index();
} )
.fadeOut( function () {
$( this ).remove();
// if only clean all button remains
if ( $( '.select-items' ).children().length < 2 ) {
$( '.select-items' ).hide();
}
} )
} else {
var type = $this.closest( '.widget' ).attr( 'id' ) ? $this.closest( '.widget' ).attr( 'id' ).split( '-' ).slice( 0, -1 ).join( '-' ) : '';
if ( 'alpha-price-filter' == type ) {
$( '.toolbox-horizontal + .select-items' ).find( '[data-type="alpha-price-filter"]' ).remove();
$this.closest( 'li' ).addClass( 'chosen' ).siblings().removeClass( 'chosen' );
}
$( '' + $this.text() + '' )
.insertBefore( '.toolbox-horizontal + .select-items .filter-clean' )
.hide().fadeIn()
.attr( 'data-type', type )
.data( 'link_id', $this.closest( '.widget' ).attr( 'id' ) )
.data( 'link_idx', $this.closest( 'li' ).index() ); // link to anchor
// if only clean all button remains
if ( $( '.select-items' ).children().length >= 2 ) {
$( '.select-items' ).show();
}
}
}
function onRemoveFilterItem( e ) {
var $this = $( this );
if ( alpha_vars.shop_ajax ) {
e.preventDefault();
}
var id = $this.data( 'link_id' );
if ( id && !$( '.toolbox-horizontal .shop-sidebar #' + id ).find( '.d-loading' ).length ) {
var $link = $( '.toolbox-horizontal .shop-sidebar #' + id ).find( 'li' ).eq( $this.data( 'link_idx' ) ).children( 'a' );
if ( $link.length ) {
if ( $link.closest( '.product-categories' ).length ) {
$this.siblings( '.filter-clean' ).trigger( 'click' );
} else {
$link.trigger( 'click' );
}
}
}
}
function onCleanFilterItems( e ) {
if ( alpha_vars.shop_ajax ) {
e.preventDefault();
}
$( this ).parent( '.select-items' ).fadeOut( function () {
$( this ).children( '.select-item' ).remove();
} )
}
_initSelectMenu();
theme.$body
// show or hide select menu
.on( 'click', '.toolbox-horizontal .shop-sidebar .widget-title, .alpha-filters .select-ul-toggle, .toolbox-horizontal .shop-sidebar .wp-block-group__inner-container > h2', openMenu )
.on( 'click', '.toolbox-horizontal .shop-sidebar .widget-title + *, .toolbox-horizontal .shop-sidebar .wp-block-group__inner-container > h2 + *', stopPropagation ) // if click in popup area, not hide it
.on( 'click', closeMenu )
// if select item is clicked
.on( 'click', '.shop-sidebar .widget a', onAddFilterItem )
.on( 'click', '.toolbox-horizontal + .select-items .select-item', onRemoveFilterItem )
.on( 'click', '.toolbox-horizontal + .select-items .filter-clean', onCleanFilterItems )
}
/**
* Initalize subpages
*
* @since 1.0
*/
function initSubpages() {
// Refresh sticky sidebar on shipping calculator in cart page
theme.$body.on( 'click', '.shipping-calculator-button', function ( e ) {
var btn = e.currentTarget;
setTimeout( function () {
$( btn ).closest( '.sticky-sidebar' ).trigger( 'recalc.pin' );
}, 400 );
} )
if ( alpha_vars.cart_auto_update ) {
theme.$body.on( 'click', '.shop_table .quantity-minus, .shop_table .quantity-plus', function () {
$( '.shop_table button[name="update_cart"]' ).trigger( 'click' );
} );
theme.$body.on( 'keyup', '.shop_table .quantity .qty', function () {
$( '.shop_table button[name="update_cart"]' ).trigger( 'click' );
} );
}
}
/**
* Event handler to change show count for non ajax mode.
*
* @since 1.0
* @param {Event} e
*/
function changeShowCountPage( e ) {
if ( this.value ) {
location.href = theme.addUrlParam( location.href.replace( /\/page\/\d*/, '' ), 'count', this.value );
}
}
return {
init: function () {
// Functions for shop page
initSelectMenu();
initSubpages();
// Handler
if ( !( alpha_vars.shop_ajax && $( document.body ).hasClass( 'alpha-archive-product-layout' ) ) ) {
theme.$body
.on( 'change', '.toolbox-show-count .count', changeShowCountPage )
}
// Functions for Alert
theme.woocommerce.initAlertAction();
}
}
} )();
$( window ).on( 'alpha_complete', function () {
theme.shop.init();
} );
} )( window.jQuery );