File Editor
Directories:
.. (Back)
vendors
Files:
sinatra-slider.js
sinatra-wc.js
sinatra.js
skip-link-focus-fix.js
Create New File
Create
Edit File: sinatra-wc.js
//--------------------------------------------------------------------// // Sinatra WooCommerce compatibility script. //--------------------------------------------------------------------// ;(function( $ ) { "use strict"; /** * Cart dropdown timer. * @type {Boolean} */ var cart_dropdown_timer = false; /** * Common element caching. */ var $body = $( 'body' ); var $wrapper = $( '#page' ); /** * Holds most important methods that bootstrap the whole theme. * * @type {Object} */ var SinatraWC = { /** * Start the engine. * * @since 1.0.0 */ init: function() { // Document ready. $(document).ready( SinatraWC.ready ); // Ajax complete event. $(document).ajaxComplete( SinatraWC.ajaxComplete ); // On WooCommerce ajax added to cart event. $body.on( 'added_to_cart', SinatraWC.addedToCart ); // Bind UI actions. SinatraWC.bindUIActions(); }, //--------------------------------------------------------------------// // Events //--------------------------------------------------------------------// /** * Document ready. * * @since 1.0.0 */ ready: function() { SinatraWC.customDropdown(); SinatraWC.quantButtons(); }, /** * On ajax request complete. * * @since 1.0.0 */ ajaxComplete: function() { SinatraWC.quantButtons(); }, /** * On WooCommerce added to cart event. * * @since 1.0.0 */ addedToCart: function() { SinatraWC.showCartDropdown(); }, /** * Bind UI actions. * * @since 1.0.0 */ bindUIActions: function() { SinatraWC.removeCartItem(); }, //--------------------------------------------------------------------// // Functions //--------------------------------------------------------------------// /** * Adds plus-munus quantity buttons to WooCommerce. * * @since 1.0.0 */ quantButtons: function() { var $new_quantity, $quantity, $input, $this; // Append plus and minus buttons to cart quantity. var $quant_input = $( 'div.quantity:not(.appended), td.quantity:not(.appended)' ).find( '.qty' ); if ( $quant_input.length && 'date' !== $quant_input.prop( 'type' ) && 'hidden' !== $quant_input.prop( 'type' ) ) { // Add plus and minus icons $quant_input.parent().addClass( 'appended' ); $quant_input.after('<a href="#" class="si-woo-minus">-</a><a href="#" class="si-woo-plus">+</a>'); $( '.si-woo-plus, .si-woo-minus' ).unbind( 'click' ); $( '.si-woo-plus, .si-woo-minus' ).on( 'click', function (e) { e.preventDefault(); $this = $(this); $input = $this.parent().find( 'input' ); $quantity = $input.val(); $new_quantity = 0; if ( $this.hasClass( 'si-woo-plus' ) ) { $new_quantity = parseInt( $quantity ) + 1; } else { if ( $quantity > 0 ) { $new_quantity = parseInt( $quantity ) - 1; } } $input.val( $new_quantity ); // Trigger change. $quant_input.trigger( 'change' ); }); } }, /** * Shows cart dropdown widget for 5 seconds aftern an item has been added to the cart. * * @since 1.0.0 */ showCartDropdown: function() { // Exit if header cart dropdown is not available. if ( ! $( '.si-header-widget__cart' ).length ) { return; } $( '.si-header-widget__cart' ).addClass( 'dropdown-visible' ); setTimeout( function() { $( '#sinatra-header-inner' ).find( '.si-cart' ).find( '.si-cart-count' ).addClass( 'animate-pop' ); }, 100); if ( cart_dropdown_timer ) { clearTimeout( cart_dropdown_timer ); cart_dropdown_timer = false; } cart_dropdown_timer = setTimeout( function() { $( '.si-header-widget__cart' ).removeClass( 'dropdown-visible' ).find( '.dropdown-item' ).removeAttr( 'style' ); }, 5000 ); }, /** * Adds custom dropdown field for shop orderby. * * @since 1.0.0 */ customDropdown: function() { if ( ! $( 'form.woocommerce-ordering' ).length ) { return; } var $select = $( 'form.woocommerce-ordering .orderby' ); var $form_wrap = $( 'form.woocommerce-ordering' ); var $sel_option = $( 'form.woocommerce-ordering .orderby option:selected' ).text(); var chevron_svg = '<svg class="si-icon" version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path d="M24.958 10.483c-0.534-0.534-1.335-0.534-1.868 0l-7.074 7.074-7.074-7.074c-0.534-0.534-1.335-0.534-1.868 0s-0.534 1.335 0 1.868l8.008 8.008c0.267 0.267 0.667 0.4 0.934 0.4s0.667-0.133 0.934-0.4l8.008-8.008c0.534-0.534 0.534-1.335 0-1.868z"></path></svg>'; $form_wrap.append( '<span id="si-orderby"><span>' + $sel_option + '</span>' + chevron_svg + '</span>' ); $select.addClass( 'custom-select-loaded' ); var $appended = $( '#si-orderby' ); $select.width( $appended.width() ).css( 'height', $appended.height() + 'px' ); $select.change( function() { $appended.find( 'span' ).html( $( 'form.woocommerce-ordering .orderby option:selected' ).text()); $( this ).width( $appended.width() ); }); }, /** * Removes an item from cart via ajax. * * @since 1.0.0 */ removeCartItem: function() { var $this; // Exit if there is no cart item remove button. if ( ! $( '.si-remove-cart-item' ).length ) { return; } $wrapper.on( 'click', '.si-remove-cart-item', function(e) { e.preventDefault(); $this = $(this); $this.closest( '.si-cart-item' ).addClass( 'removing' ); var data = { action: 'sinatra_remove_wc_cart_item', _ajax_nonce: sinatra_vars.nonce, product_key: $this.data( 'product_key' ), }; $.post( sinatra_vars.ajaxurl, data, function(response) { if ( response.success ) { $body.trigger( 'wc_fragment_refresh' ); } else { $this.closest( '.si-cart-item' ).removeClass( 'removing' ); } }); }); }, }; // END var SinatraWC. SinatraWC.init(); window.sinatra_wc = SinatraWC; })( jQuery );
Save Changes
Rename File
Rename