Skip to content

Commit 9779454

Browse files
committed
Refactor: Updated missing scripts to use the class based approach
1 parent eb5c4cb commit 9779454

3 files changed

Lines changed: 97 additions & 32 deletions

File tree

Dist/Functional/FormatNumbers.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,13 @@ class NumberFormatter {
6767

6868
const InitializeFormatNumbers = () => {
6969
try {
70+
window.trickeries = window.trickeries || [];
7071
const numbersToFormat = document.querySelectorAll('[wt-formatnumber-element="number"]');
7172
if (!numbersToFormat || numbersToFormat.length === 0) throw new Error("No elements found to format.");
7273

7374
numbersToFormat.forEach((numberContainer) => {
74-
new NumberFormatter(numberContainer);
75+
let instance = new NumberFormatter(numberContainer);
76+
window.trickeries.push({'FormatNumber': instance});
7577
});
7678
} catch (err) {
7779
console.error(`Format Number found an Error while initializing: ${err.message}`);

Dist/WebflowOnly/CMSSelect.js

Lines changed: 52 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,59 @@
1-
'use strict'
1+
'use strict';
22

3-
const InitializeCMSSelect = () => {
4-
5-
const selectElements = document.querySelectorAll('[wt-cmsselect-element^="select-"], [wt-cmsselect-element="select"]');
6-
7-
if(!selectElements || selectElements.length === 0) return;
3+
class CMSSelect {
4+
constructor(selectElement) {
5+
try {
6+
this.selectElement = selectElement;
7+
this.attributeValue = this.selectElement.getAttribute('wt-cmsselect-element');
8+
this.index = this.attributeValue.replace('select', '');
9+
10+
// Fetch the corresponding options
11+
this.options = document.querySelectorAll(`[wt-cmsselect-element="target${this.index}"]`);
12+
if (!this.options || this.options.length === 0) throw new Error(`No options found for select ${this.index}`);
813

9-
for(let select of selectElements){
10-
const _sel = select.getAttribute('wt-cmsselect-element');
11-
let index = _sel.replace('select','');
12-
let _opts = document.querySelectorAll(`[wt-cmsselect-element="target${index}"]`);
14+
// Populate the select element
15+
this.populateSelect();
16+
} catch (err) {
17+
console.error(`Error initializing CMSSelect: ${err.message}`);
18+
}
19+
}
1320

14-
for(let opt of _opts) {
15-
let val = opt.getAttribute('wt-cmsselect-value');
16-
let text = opt.innerText;
17-
18-
if(text && text !== "")
19-
select.add( new Option(text, (val ? val : text)))
21+
populateSelect() {
22+
try {
23+
this.options.forEach(opt => {
24+
const value = opt.getAttribute('wt-cmsselect-value');
25+
const text = opt.innerText;
26+
27+
if (text && text.trim() !== "") {
28+
const option = new Option(text, value || text);
29+
this.selectElement.add(option);
30+
}
31+
});
32+
} catch (err) {
33+
console.error(`Error populating select: ${err.message}`);
2034
}
2135
}
2236
}
2337

24-
window.addEventListener('DOMContentLoaded', InitializeCMSSelect());
38+
const InitializeCMSSelect = () => {
39+
try {
40+
window.trickeries = window.trickeries || [];
41+
const selectElements = document.querySelectorAll('[wt-cmsselect-element^="select-"], [wt-cmsselect-element="select"]');
42+
43+
if (!selectElements || selectElements.length === 0) throw new Error("No select elements found.");
44+
45+
selectElements.forEach(selectElement => {
46+
const instance = new CMSSelect(selectElement);
47+
window.trickeries.push({ 'CMSSelect': instance });
48+
});
49+
} catch (err) {
50+
console.error(`Error during CMSSelect initialization: ${err.message}`);
51+
}
52+
};
53+
54+
// Ensure the script runs when the DOM is fully loaded
55+
if (/complete|interactive|loaded/.test(document.readyState)) {
56+
InitializeCMSSelect();
57+
} else {
58+
window.addEventListener('DOMContentLoaded', InitializeCMSSelect);
59+
}

Dist/WebflowOnly/MirrorClick.js

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,50 @@
1-
'use strict'
21

3-
const InitializeMirrorClick = () => {
2+
'use strict';
3+
4+
class MirrorClick {
5+
constructor(triggerElement) {
6+
try {
7+
this.triggerElement = triggerElement;
8+
this.triggerAttr = triggerElement.getAttribute('wt-mirrorclick-element');
9+
this.index = this.triggerAttr.replace('trigger', '');
10+
this.targetElement = document.querySelector(`[wt-mirrorclick-element="target${this.index}"]`);
411

5-
let triggers = document.querySelectorAll('[wt-mirrorclick-element^="trigger-"], [wt-mirrorclick-element="trigger"]');
6-
7-
if(!triggers || triggers.length === 0) return;
12+
if (!this.targetElement) throw new Error(`Target element not found for trigger: ${this.index}`);
813

9-
for(let trigger of triggers) {
10-
let _triggerAttr = trigger.getAttribute('wt-mirrorclick-element');
11-
let _index = _triggerAttr.replace('trigger','');
12-
let _target = document.querySelector(`[wt-mirrorclick-element="target${_index}"]`);
14+
this.bindClickEvent();
15+
} catch (err) {
16+
console.error(`Error initializing MirrorClick: ${err.message}`);
17+
}
18+
}
1319

14-
if(_target) {
15-
trigger.addEventListener('click', () => {
16-
_target.click();
17-
})
20+
bindClickEvent() {
21+
try {
22+
this.triggerElement.addEventListener('click', () => {
23+
this.targetElement.click();
24+
});
25+
} catch (err) {
26+
console.error(`Error binding click event for MirrorClick: ${err.message}`);
1827
}
1928
}
2029
}
2130

22-
window.addEventListener('DOMContentLoaded', InitializeMirrorClick());
31+
const InitializeMirrorClick = () => {
32+
try {
33+
window.trickeries = window.trickeries || [];
34+
const triggers = document.querySelectorAll('[wt-mirrorclick-element^="trigger-"], [wt-mirrorclick-element="trigger"]');
35+
if (!triggers || triggers.length === 0) throw new Error("No trigger elements found.");
36+
37+
triggers.forEach((triggerElement) => {
38+
let instance = new MirrorClick(triggerElement);
39+
window.trickeries.push({'MirrorClick': instance});
40+
});
41+
} catch (err) {
42+
console.error(`MirrorClick found an error during initialization: ${err.message}`);
43+
}
44+
};
45+
46+
if (/complete|interactive|loaded/.test(document.readyState)) {
47+
InitializeMirrorClick();
48+
} else {
49+
window.addEventListener('DOMContentLoaded', InitializeMirrorClick);
50+
};

0 commit comments

Comments
 (0)