PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / 2.3.1
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant v2.3.1
2.3.2 2.3.1 2.3.0 2.2.8 2.2.7 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.11.0 1.11.1 1.11.2 1.6 1.7 1.8 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 1.9.10 1.9.11 All 60 releases
merchant / assets / js / scroll-to.js

scroll-to.js in Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant 2.3.1, at assets/js/scroll-to.js

61 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Merchant Scroll To.
3 *
4 */
5
6 'use strict';
7
8 var merchant = merchant || {};
9 merchant.scrollTo = {
10 domReady: function domReady(fn) {
11 if (typeof fn !== 'function') {
12 return;
13 }
14 if (document.readyState === 'interactive' || document.readyState === 'complete') {
15 return fn();
16 }
17 document.addEventListener('DOMContentLoaded', fn, false);
18 },
19 init: function init() {
20 var elements = document.querySelectorAll('[data-merchant-scroll-to]');
21 if ('null' === typeof elements) {
22 return;
23 }
24 elements.forEach(function (el) {
25 el.addEventListener('click', function (event) {
26 event.preventDefault();
27 merchant.scrollTo.scrollTo(el);
28 });
29 });
30 },
31 scrollTo: function scrollTo(el) {
32 var scrollToSelector = el.getAttribute('data-merchant-scroll-to');
33 var scrollToOffset = el.getAttribute('data-merchant-scroll-to-offset') || 0;
34 if (!scrollToSelector) {
35 return;
36 }
37 var elClientRect = document.querySelector(scrollToSelector).getBoundingClientRect();
38 var scrollPosition = parseInt(elClientRect.top + window.pageYOffset - scrollToOffset);
39 window.dispatchEvent(new Event('mrc-scrollto.before.scrolling'), {
40 eventData: {
41 context: el
42 }
43 });
44 window.scrollTo({
45 top: scrollPosition,
46 behavior: 'smooth'
47 });
48 setTimeout(function () {
49 window.dispatchEvent(new Event('mrc-scrollto.after.scrolling', {
50 eventData: {
51 context: el
52 }
53 }));
54 }, 500);
55 }
56 };
57
58 // Initialize.
59 merchant.scrollTo.domReady(function () {
60 merchant.scrollTo.init();
61 });