-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUtilityService.js
More file actions
126 lines (113 loc) · 3.88 KB
/
UtilityService.js
File metadata and controls
126 lines (113 loc) · 3.88 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
if (!window.SequraFE) {
window.SequraFE = {};
}
(function () {
function UtilityService() {
/**
* Shows the HTML node.
*
* @param {HTMLElement} element
*/
this.showElement = (element) => {
element?.classList.remove('sqs--hidden');
};
/**
* Hides the HTML node.
*
* @param {HTMLElement} element
*/
this.hideElement = (element) => {
element?.classList.add('sqs--hidden');
};
/**
* Enables loading spinner.
*/
this.showLoader = () => {
this.showElement(document.getElementById('sq-spinner'));
};
/**
* Hides loading spinner.
*/
this.hideLoader = () => {
this.hideElement(document.getElementById('sq-spinner'));
};
/**
* Shows flash message.
*
* @note Only one flash message will be shown at the same time.
*
* @param {string} message
* @param {'error' | 'warning' | 'success'} status
* @param {number?} clearAfter Time in ms to remove alert message.
*/
this.createFlashMessage = (message, status, clearAfter) => {
return SequraFE.elementGenerator.createFlashMessage(message, status, clearAfter);
};
/**
* Updates a form's footer state based on the number of changes.
*
* @param {boolean} disable
*/
this.disableFooter = (disable) => {
const saveButton = document.querySelector('.sq-page-footer .sqp-actions .sqp-save');
const cancelButton = document.querySelector('.sq-page-footer .sqp-actions .sqp-cancel');
if (saveButton && cancelButton) {
saveButton.disabled = disable;
cancelButton.disabled = disable;
}
};
/**
* Creates deep clone of an object with object's properties.
* Removes object's methods.
*
* @note Object cannot have values that cannot be converted to json (undefined, infinity etc).
*
* @param {object} obj
* @return {object}
*/
this.cloneObject = (obj) => JSON.parse(JSON.stringify(obj || {}));
/**
* Gets the first ancestor element with the corresponding class name.
*
* @param {HTMLElement} element
* @param {string} className
* @return {HTMLElement}
*/
this.getAncestor = (element, className) => {
let parent = element?.parentElement;
while (parent) {
if (parent.classList.contains(className)) {
break;
}
parent = parent.parentElement;
}
return parent;
};
/**
* Returns the menu item array for page navigation.
*
* @param {string} activePage
* @return {Array<{label: string, href: string, isActive: boolean}>}
*/
this.getMenuItems = (activePage) => {
return SequraFE.isPromotional ? [] : [
{
label: 'general.paymentMethods',
href: window.location.href.split('#')[0] + '#payment',
isActive: activePage === SequraFE.appStates.PAYMENT
},
{
label: 'general.settings',
href: window.location.href.split('#')[0] + '#settings',
isActive: activePage === SequraFE.appStates.SETTINGS
},
{
label: 'general.advanced',
href: window.location.href.split('#')[0] + '#advanced',
isActive: activePage === SequraFE.appStates.ADVANCED
}
];
};
}
SequraFE.utilities = new UtilityService();
})();