ng-easycommerce-v18 0.3.21-beta.3 → 0.3.22-beta.2
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/README.md +7 -7
- package/esm2022/lib/classes/filters/filter.mjs +27 -2
- package/esm2022/lib/constants/api.constants.service.mjs +7 -1
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +5 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +1 -5
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +44 -53
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +32 -23
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +6 -4
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -2
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +7 -17
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +90 -30
- package/esm2022/lib/ec-services/options.service.mjs +27 -3
- package/esm2022/lib/ec-services/parameters.service.mjs +41 -1
- package/fesm2022/ng-easycommerce-v18.mjs +445 -296
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/constants/api.constants.service.d.ts +4 -0
- package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +0 -1
- package/lib/ec-services/analytics/gtm.service.d.ts +5 -0
- package/lib/ec-services/options.service.d.ts +4 -0
- package/lib/ec-services/parameters.service.d.ts +6 -0
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { inject, Injectable } from '@angular/core';
|
|
|
2
2
|
import { ApiConstantsService } from '../constants';
|
|
3
3
|
import { ConnectionService } from '../api';
|
|
4
4
|
import { BehaviorSubject, catchError, map, of, shareReplay } from 'rxjs';
|
|
5
|
+
import { AnalyticsService } from './analytics';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
/**
|
|
7
8
|
* Servicio que maneja los parametros de la aplicación.
|
|
@@ -15,6 +16,10 @@ export class ParametersService {
|
|
|
15
16
|
* Maneja las peticiones a la API
|
|
16
17
|
*/
|
|
17
18
|
connection = inject(ConnectionService);
|
|
19
|
+
/**
|
|
20
|
+
* Servicio de Analytics
|
|
21
|
+
*/
|
|
22
|
+
analyticsService = inject(AnalyticsService);
|
|
18
23
|
//API URLS
|
|
19
24
|
/**
|
|
20
25
|
* Devuelve la URL para obtener todos los parametros.
|
|
@@ -36,6 +41,7 @@ export class ParametersService {
|
|
|
36
41
|
if (this.parametersSubject.getValue() === null) {
|
|
37
42
|
this.connection.get(this.getAllParametersAPI()).pipe(shareReplay(1), map((response) => {
|
|
38
43
|
this.parametersSubject.next(response);
|
|
44
|
+
this.initAnalyticsFromParams(response);
|
|
39
45
|
return response;
|
|
40
46
|
}), catchError((error) => {
|
|
41
47
|
console.log(`Error: ${error}`);
|
|
@@ -52,6 +58,40 @@ export class ParametersService {
|
|
|
52
58
|
* @returns El objeto con los datos del parámetro encontrado, sino retorna `null`
|
|
53
59
|
*/
|
|
54
60
|
hasParams(params, code) { return params && params.find((param) => param.code?.toLowerCase().includes(code.toLowerCase())); }
|
|
61
|
+
findAnalyticsParam(params, service) {
|
|
62
|
+
const channel = this.apiConstants.CHANNEL?.toLowerCase() ?? '';
|
|
63
|
+
// Código específico por canal: facebook_nombrecanal_id
|
|
64
|
+
const codeChannel = `${service}_${channel}_id`;
|
|
65
|
+
// Código genérico: facebook_id
|
|
66
|
+
const codeGeneric = `${service}_id`;
|
|
67
|
+
const normalize = (code) => (code || '').toLowerCase();
|
|
68
|
+
let param = params.find(p => normalize(p.code) === codeChannel);
|
|
69
|
+
if (!param) {
|
|
70
|
+
param = params.find(p => normalize(p.code) === codeGeneric);
|
|
71
|
+
}
|
|
72
|
+
return param;
|
|
73
|
+
}
|
|
74
|
+
initAnalyticsFromParams(params) {
|
|
75
|
+
if (!params || !params.length)
|
|
76
|
+
return;
|
|
77
|
+
if (!this.apiConstants.IS_PRODUCTION)
|
|
78
|
+
return;
|
|
79
|
+
const facebook = this.findAnalyticsParam(params, 'facebook');
|
|
80
|
+
const google = this.findAnalyticsParam(params, 'google');
|
|
81
|
+
const gtm = this.findAnalyticsParam(params, 'gtm');
|
|
82
|
+
const metricool = this.findAnalyticsParam(params, 'metricool');
|
|
83
|
+
const doppler = this.findAnalyticsParam(params, 'doppler');
|
|
84
|
+
if (facebook)
|
|
85
|
+
this.analyticsService.initializeFacebook(facebook.value);
|
|
86
|
+
if (google)
|
|
87
|
+
this.analyticsService.initializeGoogle(google.value);
|
|
88
|
+
if (gtm)
|
|
89
|
+
this.analyticsService.initializeGTM(gtm.value);
|
|
90
|
+
if (metricool)
|
|
91
|
+
this.analyticsService.initializeMetricool(metricool.value);
|
|
92
|
+
if (doppler)
|
|
93
|
+
this.analyticsService.initializeDoppler(doppler.value);
|
|
94
|
+
}
|
|
55
95
|
constructor() { }
|
|
56
96
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParametersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57
97
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParametersService, providedIn: 'root' });
|
|
@@ -62,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
62
102
|
providedIn: 'root'
|
|
63
103
|
}]
|
|
64
104
|
}], ctorParameters: () => [] });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL3BhcmFtZXRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFDL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBQzdCOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2xEOztPQUVHO0lBQ0ssVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBRTlDOztPQUVHO0lBQ0ssZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQsVUFBVTtJQUNWOzs7T0FHRztJQUNLLG1CQUFtQixLQUFLLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sYUFBYSxDQUFBLENBQUMsQ0FBQztJQUVuSCxhQUFhO0lBQ2I7O09BRUc7SUFDSyxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFDbEUsV0FBVyxHQUFtQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUYsU0FB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LGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTNELElBQUksUUFBUTtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsSUFBSSxNQUFNO1lBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLEdBQUc7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLFNBQVM7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLElBQUksT0FBTztZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGdCQUFnQixDQUFDO3dHQXJHTCxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQUZqQixNQUFNOzs0RkFFTixpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4vYW5hbHl0aWNzJztcbi8qKlxuICogU2VydmljaW8gcXVlIG1hbmVqYSBsb3MgcGFyYW1ldHJvcyBkZSBsYSBhcGxpY2FjacOzbi5cbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyc1NlcnZpY2Uge1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpXG5cdC8qKlxuXHQgKiBNYW5lamEgbGFzIHBldGljaW9uZXMgYSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgY29ubmVjdGlvbiA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSlcblxuXHQvKipcblx0ICogU2VydmljaW8gZGUgQW5hbHl0aWNzXG5cdCAqL1xuXHRwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XG5cblx0Ly9BUEkgVVJMU1xuXHQvKipcblx0ICogRGV2dWVsdmUgbGEgVVJMIHBhcmEgb2J0ZW5lciB0b2RvcyBsb3MgcGFyYW1ldHJvcy5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIGdldEFsbFBhcmFtZXRlcnNBUEkoKSB7IHJldHVybiBgJHt0aGlzLmFwaUNvbnN0YW50cy5TSE9QX0FQSV9VUkx9JHt0aGlzLmFwaUNvbnN0YW50cy5DSEFOTkVMfS9wYXJhbWV0ZXJzYCB9XG5cblx0Ly9PQlNFUlZBQkxFU1xuXHQvKipcblx0ICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbG9zIGNhbWJpb3MgZW4gbG9zIGRhdG9zIGRlIGxvcyBwYXJhbWV0cm9zXG5cdCAqL1xuXHRwcml2YXRlIHBhcmFtZXRlcnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJhbWV0ZXJbXSB8IG51bGw+KG51bGwpO1xuXHRwcml2YXRlIHBhcmFtZXRlcnMkOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdIHwgbnVsbD4gPSB0aGlzLnBhcmFtZXRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8vTUVUSE9EU1xuXHQvKipcblx0ICogT2J0aWVuZSBsb3MgcGFyw6FtZXRyb3MgZGVsIGJhY2tlbmQuIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXJzKCk6IE9ic2VydmFibGU8UGFyYW1ldGVyW10gfCBudWxsPiB7XG5cdFx0aWYgKHRoaXMucGFyYW1ldGVyc1N1YmplY3QuZ2V0VmFsdWUoKSA9PT0gbnVsbCkge1xuXHRcdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldEFsbFBhcmFtZXRlcnNBUEkoKSkucGlwZShcblx0XHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0XHRcdG1hcCgocmVzcG9uc2U6IFBhcmFtZXRlcltdKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wYXJhbWV0ZXJzU3ViamVjdC5uZXh0KHJlc3BvbnNlKVxuXHRcdFx0XHRcdHRoaXMuaW5pdEFuYWx5dGljc0Zyb21QYXJhbXMocmVzcG9uc2UpO1xuXHRcdFx0XHRcdHJldHVybiByZXNwb25zZVxuXHRcdFx0XHR9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBFcnJvcjogJHtlcnJvcn1gKVxuXHRcdFx0XHRcdHRoaXMucGFyYW1ldGVyc1N1YmplY3QubmV4dChbXSlcblx0XHRcdFx0XHRyZXR1cm4gb2YoW10pXG5cdFx0XHRcdH0pXG5cdFx0XHQpLnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5wYXJhbWV0ZXJzJFxuXHR9XG5cdC8qKlxuXHQgKiBDb21wcnVlYmEgc2kgZWwgY8OzZGlnbyBkZSB1biBwYXLDoW1ldHJvIGV4aXN0ZSBlbiBsYSBsaXN0YSBkZSBwYXLDoW1ldHJvcy5cblx0ICogQHBhcmFtIHBhcmFtcyBMaXN0YSBkZSBwYXLDoW1ldHJvc1xuXHQgKiBAcGFyYW0gY29kZSBDw7NkaWdvIGRlbCBwYXLDoW1ldHJvIGEgYnVzY2FyXG5cdCAqIEByZXR1cm5zIEVsIG9iamV0byBjb24gbG9zIGRhdG9zIGRlbCBwYXLDoW1ldHJvIGVuY29udHJhZG8sIHNpbm8gcmV0b3JuYSBgbnVsbGBcblx0ICovXG5cdHB1YmxpYyBoYXNQYXJhbXMocGFyYW1zOiBhbnksIGNvZGU6IHN0cmluZyk6IGFueSB7IHJldHVybiBwYXJhbXMgJiYgcGFyYW1zLmZpbmQoKHBhcmFtOiBhbnkpID0+IHBhcmFtLmNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY29kZS50b0xvd2VyQ2FzZSgpKSkgfVxuXG5cdFxuXHRwcml2YXRlIGZpbmRBbmFseXRpY3NQYXJhbShcblx0XHRwYXJhbXM6IFBhcmFtZXRlcltdLFxuXHRcdHNlcnZpY2U6ICdmYWNlYm9vaycgfCAnZ29vZ2xlJyB8ICdndG0nIHwgJ21ldHJpY29vbCcgfCAnZG9wcGxlcidcblx0KTogUGFyYW1ldGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjaGFubmVsID0gdGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTD8udG9Mb3dlckNhc2UoKSA/PyAnJztcblxuXHRcdC8vIEPDs2RpZ28gZXNwZWPDrWZpY28gcG9yIGNhbmFsOiBmYWNlYm9va19ub21icmVjYW5hbF9pZFxuXHRcdGNvbnN0IGNvZGVDaGFubmVsID0gYCR7c2VydmljZX1fJHtjaGFubmVsfV9pZGA7XG5cblx0XHQvLyBDw7NkaWdvIGdlbsOpcmljbzogZmFjZWJvb2tfaWRcblx0XHRjb25zdCBjb2RlR2VuZXJpYyA9IGAke3NlcnZpY2V9X2lkYDtcblxuXHRcdGNvbnN0IG5vcm1hbGl6ZSA9IChjb2RlPzogc3RyaW5nKSA9PiAoY29kZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuXHRcdGxldCBwYXJhbSA9IHBhcmFtcy5maW5kKHAgPT4gbm9ybWFsaXplKHAuY29kZSkgPT09IGNvZGVDaGFubmVsKTtcblxuXHRcdGlmICghcGFyYW0pIHtcblx0XHRcdHBhcmFtID0gcGFyYW1zLmZpbmQocCA9PiBub3JtYWxpemUocC5jb2RlKSA9PT0gY29kZUdlbmVyaWMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBwYXJhbTtcblx0fVxuXG5cdHByaXZhdGUgaW5pdEFuYWx5dGljc0Zyb21QYXJhbXMocGFyYW1zOiBQYXJhbWV0ZXJbXSB8IG51bGwpIHtcblx0XHRpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLmxlbmd0aCkgcmV0dXJuO1xuXG5cdFx0aWYgKCF0aGlzLmFwaUNvbnN0YW50cy5JU19QUk9EVUNUSU9OKSByZXR1cm47XG5cblx0XHRjb25zdCBmYWNlYm9vayA9IHRoaXMuZmluZEFuYWx5dGljc1BhcmFtKHBhcmFtcywgJ2ZhY2Vib29rJyk7XG5cdFx0Y29uc3QgZ29vZ2xlID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnZ29vZ2xlJyk7XG5cdFx0Y29uc3QgZ3RtID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnZ3RtJyk7XG5cdFx0Y29uc3QgbWV0cmljb29sID0gdGhpcy5maW5kQW5hbHl0aWNzUGFyYW0ocGFyYW1zLCAnbWV0cmljb29sJyk7XG5cdFx0Y29uc3QgZG9wcGxlciA9IHRoaXMuZmluZEFuYWx5dGljc1BhcmFtKHBhcmFtcywgJ2RvcHBsZXInKTtcblxuXHRcdGlmIChmYWNlYm9vaykgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXRpYWxpemVGYWNlYm9vayhmYWNlYm9vay52YWx1ZSk7XG5cdFx0aWYgKGdvb2dsZSkgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXRpYWxpemVHb29nbGUoZ29vZ2xlLnZhbHVlKTtcblx0XHRpZiAoZ3RtKSB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdGlhbGl6ZUdUTShndG0udmFsdWUpO1xuXHRcdGlmIChtZXRyaWNvb2wpIHRoaXMuYW5hbHl0aWNzU2VydmljZS5pbml0aWFsaXplTWV0cmljb29sKG1ldHJpY29vbC52YWx1ZSk7XG5cdFx0aWYgKGRvcHBsZXIpIHRoaXMuYW5hbHl0aWNzU2VydmljZS5pbml0aWFsaXplRG9wcGxlcihkb3BwbGVyLnZhbHVlKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiJdfQ==
|