ng-easycommerce 0.0.412 → 0.0.415
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 +20 -2
- package/assets/ec-i18n/en.json +4 -2
- package/assets/ec-i18n/es.json +4 -2
- package/assets/recaptcha/recaptcha-site-keys.json +2 -2
- package/assets/recaptcha/recaptcha-sites-prod.json +36 -0
- package/assets/recaptcha/recaptcha-sites.json +18 -18
- package/bundles/ng-easycommerce.umd.js +97 -17
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/ec-component/seller-dashboard-container-ec/seller-dashboard-container-ec.component.js +25 -9
- package/esm2015/lib/ec-component/share-block-ec/share-block-ec.component.js +17 -3
- package/esm2015/lib/ec-component/stores-ec/stores-ec.component.js +39 -1
- package/esm2015/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm2015/lib/interfaces/store.js +1 -1
- package/esm2015/lib/services/captcha.service.js +12 -5
- package/esm2015/lib/services/cart.service.js +3 -3
- package/esm5/lib/ec-component/seller-dashboard-container-ec/seller-dashboard-container-ec.component.js +25 -9
- package/esm5/lib/ec-component/share-block-ec/share-block-ec.component.js +18 -3
- package/esm5/lib/ec-component/stores-ec/stores-ec.component.js +44 -1
- package/esm5/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm5/lib/interfaces/store.js +1 -1
- package/esm5/lib/services/captcha.service.js +12 -5
- package/esm5/lib/services/cart.service.js +3 -3
- package/fesm2015/ng-easycommerce.js +91 -17
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +97 -17
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/seller-dashboard-container-ec/seller-dashboard-container-ec.component.d.ts +7 -0
- package/lib/ec-component/share-block-ec/share-block-ec.component.d.ts +6 -1
- package/lib/ec-component/stores-ec/stores-ec.component.d.ts +26 -0
- package/lib/interfaces/store.d.ts +2 -0
- package/lib/services/captcha.service.d.ts +9 -1
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -3302,11 +3302,11 @@ let CartService = class CartService {
|
|
|
3302
3302
|
this.requestInProcess.next(false);
|
|
3303
3303
|
};
|
|
3304
3304
|
this.updateCartItemQuantity = (variant_id, quantity) => {
|
|
3305
|
-
this.items.find(item => item.variant_id == variant_id).quantity = quantity;
|
|
3305
|
+
let newQuantity = this.items.find(item => item.variant_id == variant_id).quantity = quantity;
|
|
3306
3306
|
this.cartItemsSubject.next(this.items);
|
|
3307
3307
|
this.requestInProcess.next(false);
|
|
3308
3308
|
this.updateLocalCart();
|
|
3309
|
-
this.toastrService.show('product-updated');
|
|
3309
|
+
this.toastrService.show('product-updated', { quantity: newQuantity });
|
|
3310
3310
|
};
|
|
3311
3311
|
this.appendToCart = (cart) => {
|
|
3312
3312
|
this.updateCartObj(cart);
|
|
@@ -4273,7 +4273,7 @@ let AbleBuyerGuardService = class AbleBuyerGuardService {
|
|
|
4273
4273
|
this.router = router;
|
|
4274
4274
|
}
|
|
4275
4275
|
canActivate(routeSnapshot) {
|
|
4276
|
-
const redirectTo = routeSnapshot.data.
|
|
4276
|
+
const redirectTo = routeSnapshot.data.redirectSellerTo || '/';
|
|
4277
4277
|
if (!this.auth.isAbleToBuy())
|
|
4278
4278
|
this.router.navigateByUrl(redirectTo);
|
|
4279
4279
|
return this.auth.isAbleToBuy();
|
|
@@ -7143,9 +7143,15 @@ let StoresEcComponent = class StoresEcComponent extends ComponentHelper {
|
|
|
7143
7143
|
this.sanitizer = sanitizer;
|
|
7144
7144
|
this.filterStores = null;
|
|
7145
7145
|
this.storesAll = null;
|
|
7146
|
+
this.exclusiveStores = null;
|
|
7146
7147
|
this.imageMap = true;
|
|
7147
7148
|
this.stores = [];
|
|
7148
7149
|
this.provinces = [];
|
|
7150
|
+
/**
|
|
7151
|
+
* @description Obtiene todas la provincias que figuren en el arreglo
|
|
7152
|
+
* @param stores Arreglo de tiendas
|
|
7153
|
+
* @returns {Array} Arreglo de provincias
|
|
7154
|
+
*/
|
|
7149
7155
|
this.getProvices = (stores) => {
|
|
7150
7156
|
let provincesOpt = [];
|
|
7151
7157
|
stores.forEach(store => {
|
|
@@ -7155,6 +7161,37 @@ let StoresEcComponent = class StoresEcComponent extends ComponentHelper {
|
|
|
7155
7161
|
});
|
|
7156
7162
|
return provincesOpt;
|
|
7157
7163
|
};
|
|
7164
|
+
/**
|
|
7165
|
+
* @description Retorna un arreglo de objetos formado por las claves
|
|
7166
|
+
* "province"(contiene un objeto provincia) y
|
|
7167
|
+
* "stores" (contiene un arreglo de tiendas pertenecientes a la provincia)
|
|
7168
|
+
* @param stores Opcional, arreglo de tiendas a la que se le quiere aplicar la division por provincia
|
|
7169
|
+
* @returns {Array<{"province", "stores"}>}
|
|
7170
|
+
*/
|
|
7171
|
+
this.getStoresByProvinces = (stores = this.stores) => {
|
|
7172
|
+
let storesByProvinces = [];
|
|
7173
|
+
if (stores) {
|
|
7174
|
+
let provinces = this.getProvices(stores);
|
|
7175
|
+
provinces.forEach(elem => {
|
|
7176
|
+
var _a;
|
|
7177
|
+
let aux = (_a = stores) === null || _a === void 0 ? void 0 : _a.filter(store => store.province.code == elem.code);
|
|
7178
|
+
storesByProvinces.push({ province: elem, stores: aux });
|
|
7179
|
+
});
|
|
7180
|
+
}
|
|
7181
|
+
return storesByProvinces;
|
|
7182
|
+
};
|
|
7183
|
+
/**
|
|
7184
|
+
* @description Retorna las tiendas con/sin retiro en el local
|
|
7185
|
+
* @param stores Opcional, arreglo de tiendas
|
|
7186
|
+
* @param cond Opcional, Si es "true" obtiene las tiendas con retiro local caso contrario "false"
|
|
7187
|
+
* @returns {Array<Store>} Arreglo de Store
|
|
7188
|
+
*/
|
|
7189
|
+
this.getPickupStores = (stores = this.stores, cond = true) => stores && stores.filter(store => cond == store.pickupStore);
|
|
7190
|
+
/**
|
|
7191
|
+
* @description Metodo que devuelve las tiendas que NO son exclusivas.
|
|
7192
|
+
* @returns {Array<Store>} Arreglo de Store
|
|
7193
|
+
*/
|
|
7194
|
+
this.getNonExclusiveStores = () => this.stores.filter(store => !store.exclusive);
|
|
7158
7195
|
this.selectChange = (select) => {
|
|
7159
7196
|
this.filterStores = select != '' && this.storesAll.filter(store => store.province.code == select) || this.storesAll;
|
|
7160
7197
|
return true;
|
|
@@ -7163,6 +7200,7 @@ let StoresEcComponent = class StoresEcComponent extends ComponentHelper {
|
|
|
7163
7200
|
this.storesService.stores.pipe(filter(store => store && store.length > 0)).subscribe(stores => {
|
|
7164
7201
|
this.storesAll = stores;
|
|
7165
7202
|
this.stores = stores;
|
|
7203
|
+
this.exclusiveStores = stores.filter(store => store.exclusive);
|
|
7166
7204
|
this.selectChange('');
|
|
7167
7205
|
});
|
|
7168
7206
|
this.ecOnConstruct();
|
|
@@ -7286,20 +7324,35 @@ let SellerDashboardContainerEcComponent = class SellerDashboardContainerEcCompon
|
|
|
7286
7324
|
this.fuse.setCollection(this.filteredCustomers);
|
|
7287
7325
|
this.sortCustomers(this.sortValue);
|
|
7288
7326
|
};
|
|
7327
|
+
/**
|
|
7328
|
+
* @description Ordena la lista de clientes
|
|
7329
|
+
* @param value recibe una cadena que de estar formada de la forma "tipoOrdenacion_atributoPorOrdenar"
|
|
7330
|
+
* Ejemplo: "asc_firstName" o "desc_id" ...
|
|
7331
|
+
*/
|
|
7289
7332
|
this.sortCustomers = value => {
|
|
7290
7333
|
this.sortValue = value;
|
|
7291
|
-
|
|
7334
|
+
let values = value.split('_');
|
|
7335
|
+
let sortType = values[0];
|
|
7336
|
+
let attribute = values[1];
|
|
7337
|
+
const comparator = (sortType == 'asc')
|
|
7292
7338
|
? [-1, 1]
|
|
7293
7339
|
: [1, -1];
|
|
7340
|
+
let typeValue;
|
|
7341
|
+
if (this.filteredCustomers.length > 0) {
|
|
7342
|
+
typeValue = typeof (this.filteredCustomers[0][attribute]);
|
|
7343
|
+
}
|
|
7344
|
+
let sortFunction = typeValue == 'number' ? this.sortNumber : this.sortText;
|
|
7294
7345
|
this.filteredCustomers =
|
|
7295
7346
|
this.sortValue
|
|
7296
|
-
? this.filteredCustomers.sort((aCustomer, otherCustomer) =>
|
|
7297
|
-
return (aCustomer.firstName == otherCustomer.firstName)
|
|
7298
|
-
? aCustomer.lastName.toLowerCase() < otherCustomer.lastName.toLowerCase() ? comparator[0] : comparator[1]
|
|
7299
|
-
: aCustomer.firstName.toLowerCase() < otherCustomer.firstName.toLowerCase() ? comparator[0] : comparator[1];
|
|
7300
|
-
})
|
|
7347
|
+
? this.filteredCustomers.sort((aCustomer, otherCustomer) => sortFunction(aCustomer, otherCustomer, attribute, comparator))
|
|
7301
7348
|
: this.filteredCustomers;
|
|
7302
7349
|
};
|
|
7350
|
+
this.sortNumber = (aCustomer, otherCustomer, attribute, comparator) => aCustomer[attribute] < otherCustomer[attribute] ? comparator[0] : comparator[1];
|
|
7351
|
+
this.sortText = (aCustomer, otherCustomer, attribute, comparator) => {
|
|
7352
|
+
return (aCustomer[attribute] == otherCustomer[attribute])
|
|
7353
|
+
? aCustomer.lastName.toLowerCase() < otherCustomer.lastName.toLowerCase() ? comparator[0] : comparator[1]
|
|
7354
|
+
: String(aCustomer[attribute]).toLowerCase() < String(otherCustomer[attribute]).toLowerCase() ? comparator[0] : comparator[1];
|
|
7355
|
+
};
|
|
7303
7356
|
this.changeCustomer = customer => {
|
|
7304
7357
|
this.authService.setCustomer(customer);
|
|
7305
7358
|
customer
|
|
@@ -7323,6 +7376,7 @@ let SellerDashboardContainerEcComponent = class SellerDashboardContainerEcCompon
|
|
|
7323
7376
|
this.customers = user.customers;
|
|
7324
7377
|
this.filteredCustomers = this.customers;
|
|
7325
7378
|
this.fuse.setCollection(this.filteredCustomers);
|
|
7379
|
+
this.sortCustomers('desc_ordersNotApproved');
|
|
7326
7380
|
});
|
|
7327
7381
|
}
|
|
7328
7382
|
};
|
|
@@ -7338,8 +7392,8 @@ __decorate$17([
|
|
|
7338
7392
|
SellerDashboardContainerEcComponent = __decorate$17([
|
|
7339
7393
|
Component({
|
|
7340
7394
|
selector: 'app-seller-dashboard-container',
|
|
7341
|
-
template: "<section *ngIf=\"user\" id=\"seller-dashboard\">\n <div class=\"section-content mt-5 mb-2 tablaVendedores\">\n <div class=\"container-xl\">\n <div class=\"row\">\n <main class=\"col-md-12\">\n\n <ul *ngIf=\"hasHeader()\" class=\"nav nav-tabs\">\n <li class=\"nav-item col-12 col-lg-2\">\n <a *ngIf=\"hasUIComponent('HEADER_TAB')\" class=\"nav-link active cursor-pointer px-4\"
|
|
7342
|
-
styles: ["#seller-dashboard{--seller-dashboard-primary-color:0,0,0}.btn-seller-primary{color:#fff!important;background-color:rgba(var(--seller-dashboard-primary-color),1)!important;border-color:rgba(var(--seller-dashboard-primary-color),1)!important}.btn-seller-primary:hover{background-color:rgba(var(--seller-dashboard-primary-color),.9)!important}.btn-seller-primary:active{background-color:rgba(var(--seller-dashboard-primary-color),.8)!important}.btnGestionar{padding:6px 12px!important;height:36px;display:flex;align-items:center;justify-content:center;margin-left:10px}.ordenarVendedores{width:150px!important;color:#8b8b8b!important;background-color:#fff;border:1px solid #b6b6b6!important;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px}.buscadorVendedores{margin-bottom:4px!important}.buscadorVendedores input{border:1px solid #b6b6b6!important;width:200px}.buscadorVendedores .btnSearch{border:1px solid #b6b6b6!important;padding:.375rem .75rem;font-size:1rem}.buscadorVendedores .btnSearch:focus{background-color:#fff!important}.carritoProductoHeader{border:none!important}.carritoProductoHeader small{font-size:13px}.cadaVendedor{padding:5px 0;margin-bottom:0!important;border:none!important;border-bottom:1px solid #ccc!important;border-radius:0!important;-webkit-border-radius:0}.cadaVendedor .btnIngresar a{padding:10px!important;border-width:1px!important;border-style:solid!important;display:flex;align-items:center;width:
|
|
7395
|
+
template: "<section *ngIf=\"user\" id=\"seller-dashboard\">\n <div class=\"section-content mt-5 mb-2 tablaVendedores\">\n <div class=\"container-xl\">\n <div class=\"row\">\n <main class=\"col-md-12\">\n\n <ul *ngIf=\"hasHeader()\" class=\"nav nav-tabs\">\n <li class=\"nav-item col-12 col-lg-2\">\n <a *ngIf=\"hasUIComponent('HEADER_TAB')\" class=\"nav-link active cursor-pointer px-4\"\n aria-current=\"page\">\n {{ 'my-clients' | translate }}\n </a>\n </li>\n <div\n class=\"d-flex justify-content-end justify-content-lg-start justify-content-xl-end col-12 col-md-12 col-lg-6\">\n <a *ngIf=\"hasUIComponent('GENERATE_BUDGET_BTN') && authService.getCustomer()?.id; else withoutCustomer\"\n [routerLink]=\"'/collection'\" class=\"btn btn-seller-primary text-white btnGestionar d-flex align-items-center\"><i\n class=\"bi bi-file-earmark me-2 mr-2\"></i>{{ 'generate-budget' | translate }}</a>\n <ng-template #withoutCustomer>\n <a class=\"btn btn-seller-primary text-white btnGestionar d-flex align-items-center\" (click)=\"toastrService.show('must-select-customer')\">\n <i class=\"bi bi-file-earmark me-2 mr-2\"></i>{{ 'generate-budget' | translate }}</a>\n </ng-template>\n <a *ngIf=\"hasUIComponent('MANAGE_ORDERS_BTN')\"\n (click)=\"navigateExternal(constants.getUrlBase())\"\n class=\"btn btn-seller-primary text-white btnGestionar d-flex align-items-center me- me-lg-4 mr- mr-lg-4\"><i\n class=\"bi bi-archive-fill me-2 mr-2\"></i>{{ 'manage-orders' | translate }}</a>\n </div>\n <div class=\"d-flex ms-auto camposVendedores col-12 col-md-12 col-lg-4 justify-content-end\">\n <select *ngIf=\"hasUIComponent('SORT_SELECT')\" id=\"customerSort\" name=\"customerSort\"\n (change)=\"sortCustomers($event.target.value)\" class=\"mb-1 ordenarVendedores\">\n <option selected hidden disabled>{{ 'order-by' | translate }}</option>\n <option value='asc_firstName'>{{ 'client' | translate }} (A-Z)</option>\n <option value='desc_firstName'>{{ 'client' | translate }} (Z-A)</option>\n <option value='asc_id'>Menor a Mayor c\u00F3digo</option>\n <option value='desc_id'>Mayor a Menor c\u00F3digo</option>\n </select>\n <form *ngIf=\"hasUIComponent('SEARCH_FORM')\"\n class=\"col-lg-auto mb-lg-0 d-flex ms-3 ml-3 d-flex buscadorVendedores\">\n <input type=\"text\" name=\"searchInput\" class=\"form-control\"\n placeholder=\"{{ 'search' | translate }}\" [(ngModel)]=\"searchInput\"\n (keyup.enter)=\"updateCustomers()\">\n <button class=\"btn btn-primary ms-1 ml-1 bg-white border-dark btnSearch\"><i\n class=\"bi bi-search text-dark\" (click)=\"updateCustomers()\"></i></button>\n </form>\n </div>\n </ul>\n\n <ng-container *ngIf=\"user.customers?.length; else noCustomers\">\n\n <article class=\"card card-body mb-1 carritoProductoHeader m-0 py-0 mt-4\">\n <div class=\"row align-items-center font-bold border-bottom\">\n <div class=\"col-3 col-md-2 text-left\">\n <small>{{ 'code' | translate | uppercase }}</small>\n </div>\n <div class=\"col-5 col-md-3 mb-md-0\">\n <small>{{ 'client' | translate | uppercase }}</small>\n </div>\n <div class=\"col-4 col-md-3 text-left d-none d-md-block\">\n <small>{{ 'user' | translate | uppercase }}</small>\n </div>\n <div class=\"col-4 col-md-2 text-left\">\n <small>{{ 'new-orders' | translate | uppercase }}</small>\n </div>\n <div class=\"col-2 col-md-2 text-left d-none d-md-block\">\n <small></small>\n </div>\n\n </div>\n </article>\n\n <article *ngFor=\"let customer of filteredCustomers\" class=\"card card-body mb-3 cadaVendedor\">\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-3 col-md-2 text-left ps-2 pl-2\">\n <div class=\"price h6 pb-0 mb-0 ps-3 pl-1\">{{ customer.id }}</div>\n </div>\n <div class=\"col-5 col-md-3 text-left\">\n <div class=\"price h6 fw-normal ps-2 pl-2 pb-0 mb-0\">\n {{ customer.firstName }} {{ customer.lastName }}\n <p class=\"d-block d-md-none fs-6 mt-1 mb-0 p-0 userMobile\">\n {{ customer.email }}\n </p>\n </div>\n </div>\n <div class=\"col-4 col-md-3 text-left d-none d-md-block\">\n <div class=\"price h6 fw-normal pb-0 mb-0 ps-2 pl-2\">\n {{ customer.email }}\n </div>\n </div>\n <div class=\"col-4 col-md-2 text-left ps-2 pl-2\">\n <div *ngIf=\"true\" class=\"contNumero\">\n {{ customer.ordersNotApproved }}\n </div>\n </div>\n <div class=\"col-12 col-md-2 btnIngresar\">\n\n <ng-container\n *ngIf=\"authService.getCustomer()?.id == customer.id; else noActiveCustomer\">\n <a (click)=\"changeCustomer(null)\"\n class=\"btn btn-seller-primary justify-content-center\">\n <i class=\"bi bi-box-arrow-left me-2 mr-2\"></i>\n <small class=\"me-2 mr-2 d-none d-md-block\">\n {{ 'exit' | translate | uppercase }}\n </small>\n </a>\n </ng-container>\n <ng-template #noActiveCustomer>\n <a (click)=\"changeCustomer(customer)\"\n class=\"btn btn-seller-primary justify-content-center\">\n <i class=\"bi bi-box-arrow-in-right me-2 mr-2\"></i>\n <small class=\"me-2 mr-2 d-none d-md-block\">\n {{ 'operate-as' | translate | uppercase }}\n </small>\n </a>\n </ng-template>\n\n </div>\n </div>\n </article>\n\n </ng-container>\n\n </main>\n </div>\n </div>\n </div>\n</section>\n\n<ng-template #noCustomers>\n <h4 class=\"text-center p-5\">{{ 'no-customers' | translate }}</h4>\n</ng-template>",
|
|
7396
|
+
styles: ["#seller-dashboard{--seller-dashboard-primary-color:0,0,0}.btn-seller-primary{color:#fff!important;background-color:rgba(var(--seller-dashboard-primary-color),1)!important;border-color:rgba(var(--seller-dashboard-primary-color),1)!important}.btn-seller-primary:hover{background-color:rgba(var(--seller-dashboard-primary-color),.9)!important}.btn-seller-primary:active{background-color:rgba(var(--seller-dashboard-primary-color),.8)!important}.btnGestionar{padding:6px 12px!important;height:36px;display:flex;align-items:center;justify-content:center;margin-left:10px}.ordenarVendedores{width:150px!important;color:#8b8b8b!important;background-color:#fff;border:1px solid #b6b6b6!important;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px}.buscadorVendedores{margin-bottom:4px!important}.buscadorVendedores input{border:1px solid #b6b6b6!important;width:200px}.buscadorVendedores .btnSearch{border:1px solid #b6b6b6!important;padding:.375rem .75rem;font-size:1rem}.buscadorVendedores .btnSearch:focus{background-color:#fff!important}.carritoProductoHeader{border:none!important}.carritoProductoHeader small{font-size:13px}.cadaVendedor{padding:5px 0;margin-bottom:0!important;border:none!important;border-bottom:1px solid #ccc!important;border-radius:0!important;-webkit-border-radius:0}.cadaVendedor .btnIngresar a{padding:10px!important;border-width:1px!important;border-style:solid!important;display:flex;align-items:center;width:100%!important;margin-left:auto;color:#fff}.cadaVendedor .btnIngresar .contNumero{background-color:#eee;width:20px;height:20px;color:#000;font-size:13px;display:flex;align-items:center;justify-content:center;font-weight:600;border-radius:20px;-webkit-border-radius:20px;-moz-border-radius:20px;-ms-border-radius:20px;-o-border-radius:20px}.userMobile{font-size:14px!important;font-style:italic!important}.cadaVendedor .btnIngresar a:hover{background-color:rgba(var(--seller-dashboard-primary-color),.85)}.cadaVendedor .btnIngresar a:active{background-color:rgba(var(--seller-dashboard-primary-color),.8)}.cursor-pointer{cursor:pointer}.font-bold{font-weight:700}.border-bottom{border-bottom:1px solid #000!important}@media screen and (max-width:1200px){.btnGestionar{font-size:12px}}@media screen and (max-width:992px){.camposVendedores{justify-content:flex-end;margin-top:8px;margin-bottom:4px}}@media all and (max-width:768px){.ordenarVendedores{width:140px!important}.buscadorVendedores input{width:140px}.cadaVendedor .btnIngresar a{width:70px!important}}@media all and (max-width:576px){.tablaVendedores .nav-tabs .nav-link{font-size:13px;padding:6px!important}.btnGestionar{padding:6px 8px!important;font-size:13px;height:36px;display:flex;align-items:center;justify-content:center;margin-top:3px;margin-left:10px}.buscadorVendedores input,.ordenarVendedores{font-size:13px}}.fs-6{font-size:1rem!important}"]
|
|
7343
7397
|
}),
|
|
7344
7398
|
__param$9(3, Inject('env'))
|
|
7345
7399
|
], SellerDashboardContainerEcComponent);
|
|
@@ -9050,15 +9104,17 @@ var __decorate$1p = (this && this.__decorate) || function (decorators, target, k
|
|
|
9050
9104
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9051
9105
|
};
|
|
9052
9106
|
let ShareBlockEcComponent = class ShareBlockEcComponent extends ComponentHelper {
|
|
9053
|
-
constructor(consts, renderer, meta, title) {
|
|
9107
|
+
constructor(consts, paramsService, renderer, meta, title) {
|
|
9054
9108
|
super();
|
|
9055
9109
|
this.consts = consts;
|
|
9110
|
+
this.paramsService = paramsService;
|
|
9056
9111
|
this.renderer = renderer;
|
|
9057
9112
|
this.meta = meta;
|
|
9058
9113
|
this.title = title;
|
|
9059
9114
|
this.url = '';
|
|
9060
9115
|
this.mediaimg = '';
|
|
9061
9116
|
this.description = '';
|
|
9117
|
+
this.params = {};
|
|
9062
9118
|
this.toShareFacebook = () => {
|
|
9063
9119
|
//return `https://www.facebook.com/share.php?u=${encodeURIComponent(this.url)}`
|
|
9064
9120
|
return `https://www.facebook.com/share.php?u=${this.url}`;
|
|
@@ -9071,6 +9127,12 @@ let ShareBlockEcComponent = class ShareBlockEcComponent extends ComponentHelper
|
|
|
9071
9127
|
//return `https://pinterest.com/pin/create/button/?url=${encodeURIComponent(this.url)}&media=${encodeURIComponent(this.mediaimg)}&description=${encodeURIComponent(this.description)}`
|
|
9072
9128
|
return `https://pinterest.com/pin/create/button/?url=${this.url}&media=${this.consts.mediaUrl() + this.mediaimg}&description=${this.description}`;
|
|
9073
9129
|
};
|
|
9130
|
+
this.toShareWhatsapp = (wsp) => {
|
|
9131
|
+
return `https://wa.me/${wsp.value}?text=Me%20interesa%20este%20producto.%20${this.url}`;
|
|
9132
|
+
};
|
|
9133
|
+
this.toShareEmail = (mail) => {
|
|
9134
|
+
return `mailto:${mail.value}?subject=Consulta%20sobre%20el%20producto:%20${this.description}&body=Artículo:%20${this.url}`;
|
|
9135
|
+
};
|
|
9074
9136
|
this.createMetadata = () => {
|
|
9075
9137
|
// <meta name="description" content="Cojín JOY, en algodón rústico súper soft, tonos frescos y naturales, y con detalles de borlas para darle un toque divertido.">
|
|
9076
9138
|
// <meta property="og:site_name" content="MYC HOME LINENS">
|
|
@@ -9153,11 +9215,16 @@ let ShareBlockEcComponent = class ShareBlockEcComponent extends ComponentHelper
|
|
|
9153
9215
|
}
|
|
9154
9216
|
], true);
|
|
9155
9217
|
}
|
|
9218
|
+
this.paramsService.parameters.subscribe(res => {
|
|
9219
|
+
var _a;
|
|
9220
|
+
this.params = res != null ? (_a = res) === null || _a === void 0 ? void 0 : _a.filter(elem => elem.code.includes('share')) : [];
|
|
9221
|
+
});
|
|
9156
9222
|
this.ecOnInit();
|
|
9157
9223
|
}
|
|
9158
9224
|
};
|
|
9159
9225
|
ShareBlockEcComponent.ctorParameters = () => [
|
|
9160
9226
|
{ type: Constants },
|
|
9227
|
+
{ type: ParametersService },
|
|
9161
9228
|
{ type: Renderer2 },
|
|
9162
9229
|
{ type: Meta },
|
|
9163
9230
|
{ type: Title }
|
|
@@ -9168,7 +9235,7 @@ __decorate$1p([
|
|
|
9168
9235
|
ShareBlockEcComponent = __decorate$1p([
|
|
9169
9236
|
Component({
|
|
9170
9237
|
selector: 'app-share-block-ec',
|
|
9171
|
-
template: "<div class=\"w-100 d-flex justify-content-around\">\n <a target=\"_blank\" [href]=\"toShareFacebook()\"\n class=\"social-sharing__link\" title=\"Compartir en Facebook\">\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-facebook\" viewBox=\"0 0 32 32\">\n <path fill=\"#444\"\n d=\"M18.56 31.36V17.28h4.48l.64-5.12h-5.12v-3.2c0-1.28.64-2.56 2.56-2.56h2.56V1.28H19.2c-3.84 0-7.04 2.56-7.04 7.04v3.84H7.68v5.12h4.48v14.08h6.4z\">\n </path>\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Compartir</span>\n </a>\n <a target=\"_blank\"
|
|
9238
|
+
template: "<div class=\"w-100 d-flex justify-content-around\">\n <ng-container *ngIf=\"params && params.length > 0; else default\">\n <a *ngIf=\"hasParams(params, 'facebook')\" target=\"_blank\" [href]=\"toShareFacebook()\"\n class=\"social-sharing__link\" title=\"Compartir en Facebook\">\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-facebook\" viewBox=\"0 0 32 32\">\n <path fill=\"#444\"\n d=\"M18.56 31.36V17.28h4.48l.64-5.12h-5.12v-3.2c0-1.28.64-2.56 2.56-2.56h2.56V1.28H19.2c-3.84 0-7.04 2.56-7.04 7.04v3.84H7.68v5.12h4.48v14.08h6.4z\">\n </path>\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Compartir</span>\n </a>\n <a *ngIf=\"hasParams(params, 'twitter')\" target=\"_blank\" \n [href]=\"toShareTwitter()\"\n class=\"social-sharing__link\" title=\"Tuitear en Twitter\">\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-twitter\" viewBox=\"0 0 32 32\">\n <path fill=\"#444\"\n d=\"M31.281 6.733q-1.304 1.924-3.13 3.26 0 .13.033.408t.033.408q0 2.543-.75 5.086t-2.282 4.858-3.635 4.108-5.053 2.869-6.341 1.076q-5.282 0-9.65-2.836.913.065 1.5.065 4.401 0 7.857-2.673-2.054-.033-3.668-1.255t-2.266-3.146q.554.13 1.206.13.88 0 1.663-.261-2.184-.456-3.619-2.184t-1.435-3.977v-.065q1.239.652 2.836.717-1.271-.848-2.021-2.233t-.75-2.983q0-1.63.815-3.195 2.38 2.967 5.754 4.678t7.319 1.907q-.228-.815-.228-1.434 0-2.608 1.858-4.45t4.532-1.842q1.304 0 2.51.522t2.054 1.467q2.152-.424 4.01-1.532-.685 2.217-2.771 3.488 1.989-.261 3.619-.978z\">\n </path>\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Tuitear</span>\n </a>\n <a *ngIf=\"hasParams(params, 'pinterest')\" target=\"_blank\"\n [href]=\"toSharePinterest()\"\n class=\"social-sharing__link\" title=\"Pinear en Pinterest\">\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-pinterest\" viewBox=\"0 0 32 32\">\n <path fill=\"#444\"\n d=\"M27.52 9.6c-.64-5.76-6.4-8.32-12.8-7.68-4.48.64-9.6 4.48-9.6 10.24 0 3.2.64 5.76 3.84 6.4 1.28-2.56-.64-3.2-.64-4.48-1.28-7.04 8.32-12.16 13.44-7.04 3.2 3.84 1.28 14.08-4.48 13.44-5.12-1.28 2.56-9.6-1.92-11.52-3.2-1.28-5.12 4.48-3.84 7.04-1.28 4.48-3.2 8.96-1.92 15.36 2.56-1.92 3.84-5.76 4.48-9.6 1.28.64 1.92 1.92 3.84 1.92 6.4-.64 10.24-7.68 9.6-14.08z\">\n </path>\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Hacer pin</span>\n </a>\n <a *ngIf=\"hasParams(params, 'whatsapp') as wsp\" target=\"_blank\" [href]=\"toShareWhatsapp(wsp)\" class=\"social-sharing__link\" title=\"Whatsapp\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" fill=\"currentColor\" class=\"bi bi-whatsapp\"\n viewBox=\"0 0 16 16\">\n <path\n d=\"M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z\" />\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Whatsapp</span>\n </a>\n <a *ngIf=\"hasParams(params, 'email') as email\" target=\"_blank\" [href]=\"toShareEmail(email)\" class=\"social-sharing__link\"\n title=\"Email\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" fill=\"currentColor\" class=\"bi bi-envelope-fill\"\n viewBox=\"0 0 16 16\">\n <path\n d=\"M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414.05 3.555ZM0 4.697v7.104l5.803-3.558L0 4.697ZM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586l-1.239-.757Zm3.436-.586L16 11.801V4.697l-5.803 3.546Z\" />\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Email</span>\n </a>\n </ng-container>\n</div>\n\n<!-- VISTA DEFAULT CON LINKS QUE NO REQUIEREN PARAMETROS-->\n<ng-template #default>\n <a target=\"_blank\" [href]=\"toShareFacebook()\" class=\"social-sharing__link\" title=\"Compartir en Facebook\">\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-facebook\" viewBox=\"0 0 32 32\">\n <path fill=\"#444\"\n d=\"M18.56 31.36V17.28h4.48l.64-5.12h-5.12v-3.2c0-1.28.64-2.56 2.56-2.56h2.56V1.28H19.2c-3.84 0-7.04 2.56-7.04 7.04v3.84H7.68v5.12h4.48v14.08h6.4z\">\n </path>\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Compartir</span>\n </a>\n <a target=\"_blank\" [href]=\"toShareTwitter()\" class=\"social-sharing__link\" title=\"Tuitear en Twitter\">\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-twitter\" viewBox=\"0 0 32 32\">\n <path fill=\"#444\"\n d=\"M31.281 6.733q-1.304 1.924-3.13 3.26 0 .13.033.408t.033.408q0 2.543-.75 5.086t-2.282 4.858-3.635 4.108-5.053 2.869-6.341 1.076q-5.282 0-9.65-2.836.913.065 1.5.065 4.401 0 7.857-2.673-2.054-.033-3.668-1.255t-2.266-3.146q.554.13 1.206.13.88 0 1.663-.261-2.184-.456-3.619-2.184t-1.435-3.977v-.065q1.239.652 2.836.717-1.271-.848-2.021-2.233t-.75-2.983q0-1.63.815-3.195 2.38 2.967 5.754 4.678t7.319 1.907q-.228-.815-.228-1.434 0-2.608 1.858-4.45t4.532-1.842q1.304 0 2.51.522t2.054 1.467q2.152-.424 4.01-1.532-.685 2.217-2.771 3.488 1.989-.261 3.619-.978z\">\n </path>\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Tuitear</span>\n </a>\n <a target=\"_blank\" [href]=\"toSharePinterest()\" class=\"social-sharing__link\" title=\"Pinear en Pinterest\">\n <svg aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" class=\"icon icon-pinterest\" viewBox=\"0 0 32 32\">\n <path fill=\"#444\"\n d=\"M27.52 9.6c-.64-5.76-6.4-8.32-12.8-7.68-4.48.64-9.6 4.48-9.6 10.24 0 3.2.64 5.76 3.84 6.4 1.28-2.56-.64-3.2-.64-4.48-1.28-7.04 8.32-12.16 13.44-7.04 3.2 3.84 1.28 14.08-4.48 13.44-5.12-1.28 2.56-9.6-1.92-11.52-3.2-1.28-5.12 4.48-3.84 7.04-1.28 4.48-3.2 8.96-1.92 15.36 2.56-1.92 3.84-5.76 4.48-9.6 1.28.64 1.92 1.92 3.84 1.92 6.4-.64 10.24-7.68 9.6-14.08z\">\n </path>\n </svg>\n <span class=\"social-sharing__title\" aria-hidden=\"true\">Hacer pin</span>\n </a>\n</ng-template>\n<!-- FIN -->",
|
|
9172
9239
|
styles: ["a{color:#000}"]
|
|
9173
9240
|
})
|
|
9174
9241
|
], ShareBlockEcComponent);
|
|
@@ -10540,13 +10607,21 @@ let CaptchaService = class CaptchaService {
|
|
|
10540
10607
|
this.http = http;
|
|
10541
10608
|
this.captchaSubject = new BehaviorSubject({ siteKey: '' });
|
|
10542
10609
|
this.captcha = this.captchaSubject.asObservable();
|
|
10610
|
+
this.testing = "easycommercetech";
|
|
10611
|
+
this.productionEnvironment = false;
|
|
10543
10612
|
this.recaptchaSiteKeysUrl = './assets/recaptcha/recaptcha-site-keys.json';
|
|
10544
10613
|
this.recaptchaSitesUrl = './assets/recaptcha/recaptcha-sites.json';
|
|
10614
|
+
this.recaptchaSitesUrlProd = './assets/recaptcha/recaptcha-sites-prod.json';
|
|
10545
10615
|
/**
|
|
10546
10616
|
*
|
|
10547
10617
|
* @returns {string} path que contiene la direccion del endpoint referido al captcha
|
|
10548
10618
|
*/
|
|
10549
10619
|
this.captchaApi = () => 'shop-api/channels';
|
|
10620
|
+
/**
|
|
10621
|
+
* @description Devuelve true si la url es de produccion, false en caso contrario.
|
|
10622
|
+
* @returns {Boolean}
|
|
10623
|
+
*/
|
|
10624
|
+
this.isProd = () => !this.urlBaseFormat.includes(this.testing);
|
|
10550
10625
|
/**
|
|
10551
10626
|
* @description Carga las variables RECAPTCHA_SITES y RECAPTCHA_SITE_KEYS, con los valores
|
|
10552
10627
|
* de los Json estaticos, para posteriormente obtener la "siteKey"(clave del captcha) en caso
|
|
@@ -10565,12 +10640,10 @@ let CaptchaService = class CaptchaService {
|
|
|
10565
10640
|
return this.http.get(this.recaptchaSiteKeysUrl);
|
|
10566
10641
|
};
|
|
10567
10642
|
/**
|
|
10568
|
-
*
|
|
10643
|
+
* @description Se obtiene los datos segun el entorno en que se ejecute
|
|
10569
10644
|
* @returns {Observable<>} Datos obtenidos del archivo con las url de los sitios
|
|
10570
10645
|
*/
|
|
10571
|
-
this.getRecaptchaSites = () =>
|
|
10572
|
-
return this.http.get(this.recaptchaSitesUrl);
|
|
10573
|
-
};
|
|
10646
|
+
this.getRecaptchaSites = () => this.productionEnvironment ? this.http.get(this.recaptchaSitesUrlProd) : this.http.get(this.recaptchaSitesUrl);
|
|
10574
10647
|
/**
|
|
10575
10648
|
* @description Genera una peticion para recibir la clave del captcha. En caso de no tener exito,
|
|
10576
10649
|
* utiliza los archivos estaticos para retornar una clave por defecto. Rellena el Observable con
|
|
@@ -10599,6 +10672,7 @@ let CaptchaService = class CaptchaService {
|
|
|
10599
10672
|
* la clave por defecto que pertenece a esta direccion, inicializa la configuracion inicial.
|
|
10600
10673
|
*/
|
|
10601
10674
|
this.urlBaseFormat = this.formatUrl(location.href);
|
|
10675
|
+
this.productionEnvironment = this.isProd();
|
|
10602
10676
|
this.initializer();
|
|
10603
10677
|
}
|
|
10604
10678
|
};
|