@teddy-dev/frontend 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/algolia/algolia-loader.js +56 -0
- package/algolia/algolia-search.js +222 -0
- package/auth/teddy-auth-login.js +29 -0
- package/auth/teddy-auth-profile.js +58 -0
- package/auth/teddy-auth-register.js +52 -0
- package/auth/teddy-auth-reset.js +39 -0
- package/auth/teddy-auth.js +92 -0
- package/bantoa/bantoa-product.js +64 -0
- package/bantoa/bantoa-search.js +46 -0
- package/bantoa/bantoa-stylemix.js +43 -0
- package/bantoa/bantoa.js +21 -0
- package/cart/teddy-cart-controller.js +163 -0
- package/cart/teddy-cart-customer.js +86 -0
- package/cart/teddy-cart-discounts.js +55 -0
- package/cart/teddy-cart-promo-apply.js +24 -0
- package/cart/teddy-cart-promo-error.js +38 -0
- package/cart/teddy-cart-promo-loading.js +20 -0
- package/cart/teddy-cart-promo.js +96 -0
- package/components/mc-btn.js +38 -0
- package/components/mc-card-render.js +33 -0
- package/components/mc-cart-counter.js +14 -0
- package/components/mc-cart-error.js +35 -0
- package/components/mc-cart-quantity.js +43 -0
- package/components/mc-cart-remove.js +32 -0
- package/components/mc-copy.js +33 -0
- package/components/mc-element.js +84 -0
- package/components/mc-form-errors.js +35 -0
- package/components/mc-form-success.js +31 -0
- package/components/mc-form.js +223 -0
- package/components/mc-input-area.js +13 -0
- package/components/mc-input-checkbox-group.js +52 -0
- package/components/mc-input-checkbox.js +12 -0
- package/components/mc-input-password.js +39 -0
- package/components/mc-input-places.js +43 -0
- package/components/mc-input-quantity.js +43 -0
- package/components/mc-input-select.js +14 -0
- package/components/mc-input-text.js +12 -0
- package/components/mc-input.js +137 -0
- package/components/mc-loader.js +21 -0
- package/components/mc-modal.js +69 -0
- package/components/mc-password-eye.js +24 -0
- package/components/mc-password-tips.js +60 -0
- package/components/mc-qrcode.js +41 -0
- package/components/mc-range.js +108 -0
- package/components/mc-read-more.js +56 -0
- package/components/mc-recommended.js +50 -0
- package/components/mc-referrer.js +20 -0
- package/components/mc-splash-controller.js +32 -0
- package/components/mc-splash-link.js +65 -0
- package/components/mc-stoq.js +30 -0
- package/components/mc-swiper.js +333 -0
- package/components/mc-video.js +61 -0
- package/css/bootstrap-lg.css +2762 -0
- package/css/bootstrap-lg.min.css +1 -0
- package/css/bootstrap-md.css +2762 -0
- package/css/bootstrap-md.min.css +1 -0
- package/css/bootstrap-sm.css +2762 -0
- package/css/bootstrap-sm.min.css +1 -0
- package/css/bootstrap-xl.css +2790 -0
- package/css/bootstrap-xl.min.css +1 -0
- package/css/bootstrap-xxl.css +2762 -0
- package/css/bootstrap-xxl.min.css +1 -0
- package/css/bootstrap.css +9824 -0
- package/css/bootstrap.min.css +5 -0
- package/css/mc-form-errors.css +3 -0
- package/css/mc-loader.css +6 -0
- package/css/mc-password-eye.css +6 -0
- package/css/mc-password-tips.css +6 -0
- package/css/mc-read-more.css +14 -0
- package/css/mc-video.css +4 -0
- package/css/mc-wishlist-hero-btn.css +7 -0
- package/loader.js +110 -0
- package/loyalty/teddy-loyalty-create.js +40 -0
- package/loyalty/teddy-loyalty-redeem.js +38 -0
- package/loyalty/teddy-loyalty.js +214 -0
- package/package.json +20 -0
- package/res/mc-events.js +43 -0
- package/res/mc-shopify.js +439 -0
- package/res/mc-utils.js +119 -0
- package/res/mc-vue.js +9350 -0
- package/returns/teddy-return-iban.js +115 -0
- package/returns/teddy-return-list.js +165 -0
- package/returns/teddy-return-request.js +353 -0
- package/scripts/publish-store.js +62 -0
- package/test/auth-login-error.json +4 -0
- package/test/auth-login-success.json +13 -0
- package/test/auth-password-change-error.json +4 -0
- package/test/auth-password-change-success.json +3 -0
- package/test/auth-register-error.json +4 -0
- package/test/auth-register-success.json +12 -0
- package/test/auth-reset-error.json +4 -0
- package/test/auth-reset-success.json +3 -0
- package/test/loyalty-error.json +4 -0
- package/test/loyalty-noinfo.json +18 -0
- package/test/loyalty-redeem-error.json +4 -0
- package/test/loyalty-redeem-success.json +11 -0
- package/test/loyalty-success.json +143 -0
- package/test/returns-create-success.json +1 -0
- package/test/returns-get-success.json +35 -0
- package/test/returns-get-tracking.json +30 -0
- package/test/returns-list-empty.json +4 -0
- package/test/returns-list-success.json +59 -0
- package/test/returns-search-manual.json +67 -0
- package/test/returns-search-success.json +76 -0
- package/test/wishlist-error.json +4 -0
- package/test/wishlist-success.json +3 -0
- package/wishlist/teddy-wishlist-btn.js +55 -0
- package/wishlist/teddy-wishlist-clear.js +18 -0
- package/wishlist/teddy-wishlist-counter.js +35 -0
- package/wishlist/teddy-wishlist-item.js +46 -0
- package/wishlist/teddy-wishlist-page.js +59 -0
- package/wishlist/teddy-wishlist.js +131 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
await loadComponent('./components/mc-element.js', false);
|
|
2
|
+
await loadComponent('./auth/teddy-auth.js', false);
|
|
3
|
+
|
|
4
|
+
class TeddyLoyaltyCreate extends McElement {
|
|
5
|
+
|
|
6
|
+
connectedCallback() {
|
|
7
|
+
this.addEventListener('click', this.createCard.bind(this));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
createCard = () => {
|
|
11
|
+
const script = this.querySelector('script');
|
|
12
|
+
if(!script) {
|
|
13
|
+
console.error('No script tag found inside teddy-loyalty-create component');
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const json = JSON.parse(script.innerText);
|
|
18
|
+
json.sessionId = TeddyAuth.getSessionId();
|
|
19
|
+
axios({
|
|
20
|
+
method: 'POST',
|
|
21
|
+
url: theme.apis.loyalty.create,
|
|
22
|
+
data: json,
|
|
23
|
+
headers: {
|
|
24
|
+
"Ocp-Apim-Subscription-Key":"0936a98c9baa4aa1a2787657e151b44a"
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
.then(response => {
|
|
28
|
+
location.reload();
|
|
29
|
+
})
|
|
30
|
+
.catch(e => {
|
|
31
|
+
console.error('Error creating loyalty card: ', e);
|
|
32
|
+
alert(theme.t.errors.generic);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
if (!window.customElements.get('teddy-loyalty-create')) {
|
|
38
|
+
window.customElements.define('teddy-loyalty-create', TeddyLoyaltyCreate);
|
|
39
|
+
}
|
|
40
|
+
window.TeddyLoyaltyCreate = TeddyLoyaltyCreate;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
await loadComponent('./components/mc-form.js', false);
|
|
2
|
+
await loadComponent('./components/mc-form-success.js', false);
|
|
3
|
+
await loadComponent('./res/mc-events.js', false);
|
|
4
|
+
|
|
5
|
+
class TeddyLoyaltyRedeem extends McForm {
|
|
6
|
+
|
|
7
|
+
error = (e) => {
|
|
8
|
+
McShopify.customEvent(MCEVENTS.FORM_ERROR, e, this);
|
|
9
|
+
let message = theme.t.errors.generic || 'An error occurred';
|
|
10
|
+
if(!theme?.t?.errors?.idm) {
|
|
11
|
+
console.error('TeddyLoyaltyRedeem: Missing theme.t.errors.idm translation');
|
|
12
|
+
this.errors.showError(message);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
message = theme.t.errors.idm[e.error?.code] || theme.t.errors.idm[e.status] || theme.t.errors.idm.default || message;
|
|
16
|
+
console.error("TeddyLoyaltyRedeem.error", message, e);
|
|
17
|
+
this.errors.showError(message);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
success = ({ data }) => {
|
|
21
|
+
console.log('Redemption successful', data);
|
|
22
|
+
if (!data.success) {
|
|
23
|
+
this.error(data);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
this.errors.clear();
|
|
28
|
+
const success = this.querySelector('mc-form-success');
|
|
29
|
+
if(!success) return;
|
|
30
|
+
success.showMessage(theme.t.success.redeem || 'Redemption successful!');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (!customElements.get('teddy-loyalty-redeem')) {
|
|
36
|
+
customElements.define('teddy-loyalty-redeem', TeddyLoyaltyRedeem);
|
|
37
|
+
}
|
|
38
|
+
window.TeddyLoyaltyRedeem = TeddyLoyaltyRedeem;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import '../res/mc-events.js';
|
|
2
|
+
const {createApp} = await import('../res/mc-vue.js');
|
|
3
|
+
await loadComponent('./components/mc-element.js', false);
|
|
4
|
+
await loadComponent('./auth/teddy-auth.js', false);
|
|
5
|
+
|
|
6
|
+
class TeddyLoyalty extends McElement {
|
|
7
|
+
|
|
8
|
+
connectedCallback() {
|
|
9
|
+
const observer = new IntersectionObserver(
|
|
10
|
+
(entries, obs) => {
|
|
11
|
+
entries.forEach(entry => {
|
|
12
|
+
if (entry.isIntersecting) {
|
|
13
|
+
// L'elemento è nella viewport
|
|
14
|
+
this.init();
|
|
15
|
+
obs.unobserve(this); // Osserva solo la prima volta
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
{ threshold: 0.1 }
|
|
20
|
+
);
|
|
21
|
+
observer.observe(this);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
init = async () => {
|
|
25
|
+
const cmp = this;
|
|
26
|
+
|
|
27
|
+
const app = createApp({
|
|
28
|
+
delimiters: ['${', '}'], // setta i delimitatori di vue, altrimenti se usiamo gli standard va in conflitto con liquid
|
|
29
|
+
data: () => {
|
|
30
|
+
return {
|
|
31
|
+
loading: true,
|
|
32
|
+
info: window.loyalty?.loyalty?.info || null,
|
|
33
|
+
promotions: window.loyalty?.loyalty?.promotions || [],
|
|
34
|
+
page: 1,
|
|
35
|
+
limit: cmp.dataset.limit || 10,
|
|
36
|
+
movements: window.loyalty?.loyalty?.movements || [],
|
|
37
|
+
data: window.loyalty || null,
|
|
38
|
+
error: false,
|
|
39
|
+
levels: theme.loyalty?.map((e, i) => {
|
|
40
|
+
return {
|
|
41
|
+
...e,
|
|
42
|
+
index: i
|
|
43
|
+
};
|
|
44
|
+
}) || [],
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
methods: {
|
|
48
|
+
getData() {
|
|
49
|
+
this.loading = true;
|
|
50
|
+
window.loyaltyLoading = true;
|
|
51
|
+
axios({
|
|
52
|
+
url: theme.apis.loyalty.info.replace('{customerId}', cmp.dataset.customer),
|
|
53
|
+
method: 'POST',
|
|
54
|
+
data: this.params(),
|
|
55
|
+
headers: {
|
|
56
|
+
"Ocp-Apim-Subscription-Key": "0936a98c9baa4aa1a2787657e151b44a",
|
|
57
|
+
}
|
|
58
|
+
}).then(r => {
|
|
59
|
+
this.onSuccess(r.data);
|
|
60
|
+
}).catch(e => {
|
|
61
|
+
this.onError();
|
|
62
|
+
}).finally(() => {
|
|
63
|
+
this.loading = false;
|
|
64
|
+
window.loyaltyLoading = false;
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
onSuccess(data) {
|
|
69
|
+
console.log('Loyalty data fetched successfully', data);
|
|
70
|
+
if(!data.success){
|
|
71
|
+
this.onError();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
window.loyalty = data.data;
|
|
76
|
+
this.setData();
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
onError() {
|
|
80
|
+
window.loyalty = null;
|
|
81
|
+
this.error = true;
|
|
82
|
+
this.data = null;
|
|
83
|
+
this.info = null;
|
|
84
|
+
this.promotions = [];
|
|
85
|
+
this.movements = [];
|
|
86
|
+
this.setData();
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
params(all = true) {
|
|
90
|
+
return {
|
|
91
|
+
brand: cmp.dataset.brand,
|
|
92
|
+
market: cmp.dataset.market,
|
|
93
|
+
callingSystem: 6,
|
|
94
|
+
sessionId: TeddyAuth.getSessionId(),
|
|
95
|
+
cardNumber: cmp.dataset.card
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
checkData() {
|
|
100
|
+
if (window.loyaltyLoading) {
|
|
101
|
+
setTimeout(() => {
|
|
102
|
+
this.checkData();
|
|
103
|
+
}, 100);
|
|
104
|
+
return; // se è in loading non facciamo nulla
|
|
105
|
+
}
|
|
106
|
+
if (window.loyalty && window.loyalty.loyalty) {
|
|
107
|
+
this.setData(window.loyalty);
|
|
108
|
+
this.loading = false;
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
this.getData();
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
setData() {
|
|
116
|
+
if (!window.loyalty || !window.loyalty.info) {
|
|
117
|
+
console.warn('No loyalty data found');
|
|
118
|
+
this.onError();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.data = window.loyalty;
|
|
122
|
+
this.info = this.data?.info || null;
|
|
123
|
+
this.promotions = this.data?.promotions || [];
|
|
124
|
+
this.movements = this.data?.movements || {};
|
|
125
|
+
|
|
126
|
+
console.log('loyalty data', this.data);
|
|
127
|
+
|
|
128
|
+
if (!this.info) {
|
|
129
|
+
console.warn('No loyalty info found');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.info.tier = { ...this.info.tier, ...this.levels.find(level => level.code == this.info.tier.current) }
|
|
133
|
+
console.log('loyalty info', this.info);
|
|
134
|
+
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
addPage() {
|
|
138
|
+
this.loading = true;
|
|
139
|
+
window.loyaltyLoading = true;
|
|
140
|
+
axios({
|
|
141
|
+
url: theme.apis.loyalty.info.replace('{customerId}', cmp.dataset.customer),
|
|
142
|
+
method: 'GET',
|
|
143
|
+
params: this.params(false)
|
|
144
|
+
}).then(r => {
|
|
145
|
+
const oldItems = this.movements.items || [];
|
|
146
|
+
const newItems = r.data.loyalty.movements.items || [];
|
|
147
|
+
|
|
148
|
+
const updatedItems = [...oldItems, ...newItems];
|
|
149
|
+
|
|
150
|
+
this.movements = {
|
|
151
|
+
...r.data.loyalty.movements,
|
|
152
|
+
items: updatedItems
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
console.log('loyalty movements', this.movements);
|
|
156
|
+
}).catch(e => {
|
|
157
|
+
console.error('Error fetching loyalty data', e);
|
|
158
|
+
window.loyalty = null;
|
|
159
|
+
this.setData();
|
|
160
|
+
}).finally(() => {
|
|
161
|
+
this.loading = false;
|
|
162
|
+
window.loyaltyLoading = false;
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
next() {
|
|
167
|
+
if (!this.movements) return;
|
|
168
|
+
if (!this.movements.pagination) return;
|
|
169
|
+
if (this.movements.pagination.hasNext) {
|
|
170
|
+
this.page++;
|
|
171
|
+
this.addPage();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
computed: {
|
|
176
|
+
progress() {
|
|
177
|
+
const myTier = this.levels.find(level => level.code == this.info.tier.current)?.index || 0;
|
|
178
|
+
return myTier / (this.levels.length-1) * 100;
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
progressHalf() {
|
|
182
|
+
const myTier = this.levels.find(level => level.code == this.info.tier.current)?.index || 0;
|
|
183
|
+
return (myTier / (this.levels.length-1) * 100) - (100 / (this.levels.length-1) / 2);
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
movementsByDate() {
|
|
187
|
+
if (!this.movements) return [];
|
|
188
|
+
const grouped = this.movements.reduce((acc, item) => {
|
|
189
|
+
const date = new Date(item.date).toLocaleDateString(`${Shopify.locale}-${Shopify.country}`, { year: 'numeric', month: 'numeric', day: 'numeric' });
|
|
190
|
+
if (!acc[date]) acc[date] = [];
|
|
191
|
+
acc[date].push(item);
|
|
192
|
+
return acc;
|
|
193
|
+
}, {});
|
|
194
|
+
const obj = Object.entries(grouped).map(([date, items]) => ({ date, items }));
|
|
195
|
+
console.log('movements by date', obj);
|
|
196
|
+
return obj;
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
mounted() {
|
|
200
|
+
this.checkData();
|
|
201
|
+
console.log('Loyalty component mounted', this.data);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
app.config.compilerOptions.isCustomElement = tag => tag.includes('-'); // per evitare che vue vada in conflitto con i custom element
|
|
205
|
+
app.mount(this);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (!customElements.get('teddy-loyalty')) {
|
|
212
|
+
customElements.define('teddy-loyalty', TeddyLoyalty);
|
|
213
|
+
}
|
|
214
|
+
window.TeddyLoyalty = TeddyLoyalty;
|
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@teddy-dev/frontend",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Utility js per temi ict shopify",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
|
+
"publish:store": "node scripts/publish-store.js"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/ICT-Sviluppo/npm-teddy.git"
|
|
13
|
+
},
|
|
14
|
+
"author": "martina piangerelli",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/ICT-Sviluppo/npm-teddy/issues"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/ICT-Sviluppo/npm-teddy#readme"
|
|
20
|
+
}
|
package/res/mc-events.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const MCEVENTS = {
|
|
2
|
+
COOKIE_CONSENT: 'mc:cookie:consent', //Evento emesso quando l'utente accetta o non accetta i cookie
|
|
3
|
+
COOKIE_CLOSED: 'mc:cookie:closed', //Evento emesso quando l'utente chiude il banner dei cookie
|
|
4
|
+
CART_ADDED: 'mc:cart:added', //Evento emesso quando un prodotto viene aggiunto al carrello
|
|
5
|
+
CART_UPDATED: 'mc:cart:updated', //Evento emesso quando il carrello viene aggiornato
|
|
6
|
+
CART_REMOVED: 'mc:cart:removed', //Evento emesso quando un prodotto viene rimosso dal carrello
|
|
7
|
+
CART_ERROR: 'mc:cart:error', //Evento emesso quando un prodotto viene rimosso dal carrello
|
|
8
|
+
SEARCH: 'mc:search', //Evento emesso quando viene effettuata una ricerca
|
|
9
|
+
SEARCH_ERROR: 'mc:search:error', //Evento emesso quando viene effettuata una ricerca
|
|
10
|
+
WISHLIST_ADDED: 'mc:wishlist:added', // Evento custom: prodotto aggiunto
|
|
11
|
+
WISHLIST_CHANGED: 'mc:wishlist:changed', // Evento custom: prodotto modificato
|
|
12
|
+
WISHLIST_REMOVED: 'mc:wishlist:removed', // Evento custom: prodotto rimosso
|
|
13
|
+
WISHLIST_ERROR: 'mc:wishlist:error', // Evento custom: errore
|
|
14
|
+
WISHLIST_CLEARED: 'mc:wishlist:cleared', // Evento custom: errore
|
|
15
|
+
WISHLIST_SAVED: 'mc:wishlist:saved', // Evento custom: errore
|
|
16
|
+
INPUT_VALID: 'mc:input:valid', // Evento custom: input valido
|
|
17
|
+
INPUT_ERROR: 'mc:input:error', // Evento custom: input con errore
|
|
18
|
+
FORM_SUBMIT: 'mc:form:submit', // Evento custom: form inviato
|
|
19
|
+
FORM_SUCCESS: 'mc:form:success', // Evento custom: form inviato con successo
|
|
20
|
+
FORM_ERROR: 'mc:form:error', // Evento custom: errore nel form
|
|
21
|
+
FORM_COMPLETED: 'mc:form:completed', // Evento custom: form completato
|
|
22
|
+
FORM_VALIDATE: 'mc:form:validate', // Evento custom: form validato
|
|
23
|
+
EL_ACTIVATED: 'mc:el:activated', // Evento custom: elemento attivato
|
|
24
|
+
EL_DEACTIVATED: 'mc:el:deactivated', // Evento custom: elemento disattivato
|
|
25
|
+
PLACES_LOCATED: 'mc:places:located', // Evento custom: geolocalizzazione riuscita
|
|
26
|
+
PLACES_CHANGE: 'mc:places:change', // Evento custom: cambio posto selezionato
|
|
27
|
+
QUANTITY_CHANGED: 'mc:quantity:changed', // Evento custom: quantità cambiata
|
|
28
|
+
LOGIN: 'mc:login', // Evento custom: login effettuato
|
|
29
|
+
LOGOUT: 'mc:logout', // Evento custom: logout effettuato
|
|
30
|
+
VARIANTS_FOUND: 'mc:variants:found', // Evento custom: varianti trovate
|
|
31
|
+
PROMO_APPLIED: 'mc:promo:applied', // Evento custom: promozione applicata
|
|
32
|
+
CART_ASSOCIATED: 'mc:cart:associated', // Evento custom: carrello associato
|
|
33
|
+
CART_READY: 'mc:cart:ready', // Evento custom: carrello pronto
|
|
34
|
+
ATTRIBUTES_UPDATED: 'mc:attributes:updated', // Evento custom: attributi aggiornati
|
|
35
|
+
FORM_AUTOSUBMIT: 'mc:form:autosubmit',
|
|
36
|
+
PROMO_ERROR: 'mc:promo:error',
|
|
37
|
+
PROMO_APPLIED: 'mc:promo:applied',
|
|
38
|
+
PROMO_COMPLETED: 'mc:promo:completed',
|
|
39
|
+
PROMO_APPLY: 'mc:promo:apply',
|
|
40
|
+
BANTOA_LOADED: 'mc:bantoa:loaded',
|
|
41
|
+
};
|
|
42
|
+
window.MCEVENTS = MCEVENTS; // Esporta l'oggetto MCEVENTS nel contesto globale
|
|
43
|
+
export default MCEVENTS;
|