File Editor
Directories:
.. (Back)
dev
vendors
Files:
sinatra-slider.js
sinatra-slider.min.js
sinatra-wc.js
sinatra-wc.min.js
sinatra.js
sinatra.min.js
skip-link-focus-fix.js
skip-link-focus-fix.min.js
Create New File
Create
Edit File: sinatra-wc.js
"use strict"; //--------------------------------------------------------------------// // 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 init() { // 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 ready() { SinatraWC.customDropdown(); SinatraWC.quantButtons(); }, /** * On ajax request complete. * * @since 1.0.0 */ ajaxComplete: function ajaxComplete() { SinatraWC.quantButtons(); }, /** * On WooCommerce added to cart event. * * @since 1.0.0 */ addedToCart: function addedToCart() { SinatraWC.showCartDropdown(); }, /** * Bind UI actions. * * @since 1.0.0 */ bindUIActions: function bindUIActions() { SinatraWC.removeCartItem(); }, //--------------------------------------------------------------------// // Functions //--------------------------------------------------------------------// /** * Adds plus-munus quantity buttons to WooCommerce. * * @since 1.0.0 */ quantButtons: function quantButtons() { 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 showCartDropdown() { // 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 customDropdown() { 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 removeCartItem() { 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