-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvariant-select-on-load-and-change.js
76 lines (69 loc) · 2.54 KB
/
variant-select-on-load-and-change.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// When Page is loaded check for variant url
// selected variant
// <div class="selected-variant" data-id="{{- product.selected_or_first_available_variant.id -}}"></div>
var url = window.location.href,
parts = url.split("?variant="),
last_part = parts[parts.length - 1];
if (!isNaN(last_part)) {
last_part = Number(last_part);
} else {
var selectedVariant = document.querySelector('.selected-variant');
last_part = parseInt(selectedVariant.dataset.id);
console.log(last_part);
}
// Parent element of all the variants
// <div
// data-product-id="{{ product.id }}"
// class="hide custom-variant-data-wrap"
// aria-hidden="true"
// >
// {%- for variant in product.variants -%}
// <div
// class="custom-variant-data"
// data-id="{{ variant.id }}"
// data-quantity="{{ variant.inventory_quantity | default: 0 }}"
// >
// </div>
// {%- endfor -%}
// </div>
var variantDataWrap = document.querySelector('.custom-variant-data-wrap');
// all the variants
var variantDataList = inventoryDataWrap.querySelectorAll('.custom-variant-data');
var dataQuantity = null;
variantDataList.forEach(function(inventoryData) {
var dataId = parseInt(inventoryData.dataset.id);
if (dataId === last_part) {
dataQuantity = parseInt(inventoryData.dataset.quantity);
}
});
// Get all variant-input elements
var variantInputs = document.querySelectorAll('.variant-input');
// Add event listener for each variant-input element
// ===============================================
variantInputs.forEach(function(variantInput) {
variantInput.addEventListener("click", function(event) {
setTimeout(function() {
var url = window.location.href,
parts = url.split("?variant="),
last_part = parts[parts.length - 1];
if (!isNaN(last_part)) {
last_part = Number(last_part);
} else {
var selectedVariant = document.querySelector('.selected-variant');
last_part = Number(selectedVariant.dataset.id);
}
var variantDataWrap = document.querySelector('.custom-variant-data-wrap');
// all the variants
var variantDataList = inventoryDataWrap.querySelectorAll('.custom-variant-data');
var dataQuantity = null;
variantDataList.forEach(function(inventoryData) {
var dataId = parseInt(inventoryData.dataset.id);
if (dataId === last_part) {
dataQuantity = parseInt(inventoryData.dataset.quantity);
}
});
// Use the dataQuantity variable as needed
console.log(dataQuantity);
}, 500);
});
});