ng-easycommerce-v18 0.3.18-beta.1 → 0.3.19-beta.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.
Files changed (37) hide show
  1. package/README.md +2 -3
  2. package/assets/ec-i18n/en.json +1 -0
  3. package/assets/ec-i18n/es.json +1 -0
  4. package/esm2022/lib/constants/api.constants.service.mjs +15 -19
  5. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +2 -4
  6. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +37 -9
  7. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +21 -31
  8. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +54 -6
  9. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +2 -2
  10. package/esm2022/lib/ec-services/cart.service.mjs +22 -4
  11. package/esm2022/lib/ec-services/checkout.service.mjs +2 -4
  12. package/esm2022/lib/ec-services/index.mjs +1 -3
  13. package/esm2022/lib/ec-services/product-detail.service.mjs +11 -1
  14. package/esm2022/lib/interfaces/environment.mjs +1 -1
  15. package/esm2022/lib/interfaces/index.mjs +1 -2
  16. package/esm2022/lib/interfaces/product.mjs +1 -1
  17. package/esm2022/lib/providers/index.mjs +1 -2
  18. package/fesm2022/ng-easycommerce-v18.mjs +215 -451
  19. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  20. package/lib/constants/api.constants.service.d.ts +0 -1
  21. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +1 -1
  22. package/lib/ec-components/product-ec/product-ec.component.d.ts +4 -0
  23. package/lib/ec-services/cart.service.d.ts +1 -1
  24. package/lib/ec-services/index.d.ts +0 -2
  25. package/lib/interfaces/environment.d.ts +0 -1
  26. package/lib/interfaces/index.d.ts +0 -1
  27. package/lib/interfaces/product.d.ts +6 -0
  28. package/lib/providers/index.d.ts +0 -1
  29. package/package.json +1 -1
  30. package/esm2022/lib/ec-services/base-api.service.mjs +0 -148
  31. package/esm2022/lib/ec-services/runtime-config.service.mjs +0 -149
  32. package/esm2022/lib/interfaces/runtime-config.mjs +0 -2
  33. package/esm2022/lib/providers/provideRuntimeConfig.mjs +0 -39
  34. package/lib/ec-services/base-api.service.d.ts +0 -64
  35. package/lib/ec-services/runtime-config.service.d.ts +0 -56
  36. package/lib/interfaces/runtime-config.d.ts +0 -22
  37. package/lib/providers/provideRuntimeConfig.d.ts +0 -12
@@ -1,12 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, makeEnvironmentProviders, PLATFORM_ID, Injectable, Inject, APP_INITIALIZER, inject, RendererFactory2, afterNextRender, signal, EnvironmentInjector, runInInjectionContext, Component, ChangeDetectorRef, HostListener, CUSTOM_ELEMENTS_SCHEMA, Input, Pipe, Injector, EventEmitter, Output, forwardRef, afterRender, ViewChild, computed, Renderer2, ChangeDetectionStrategy, Directive } from '@angular/core';
3
- import * as i1$1 from '@angular/common';
4
- import { isPlatformBrowser, DOCUMENT, AsyncPipe, CommonModule, TitleCasePipe, JsonPipe, UpperCasePipe, Location } from '@angular/common';
5
- import { BehaviorSubject, of, take, shareReplay, map, catchError as catchError$1, filter, ReplaySubject, firstValueFrom, concatMap, throwError, switchMap, combineLatest } from 'rxjs';
6
- import * as i1 from '@angular/common/http';
2
+ import { InjectionToken, makeEnvironmentProviders, inject, Injectable, PLATFORM_ID, RendererFactory2, afterNextRender, signal, EnvironmentInjector, runInInjectionContext, Component, ChangeDetectorRef, HostListener, CUSTOM_ELEMENTS_SCHEMA, Input, Pipe, Injector, EventEmitter, Output, forwardRef, afterRender, ViewChild, Inject, computed, Renderer2, ChangeDetectionStrategy, Directive } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { DOCUMENT, isPlatformBrowser, AsyncPipe, CommonModule, TitleCasePipe, JsonPipe, UpperCasePipe, Location } from '@angular/common';
5
+ import { take, BehaviorSubject, shareReplay, map, catchError, of, filter, ReplaySubject, firstValueFrom, concatMap, throwError, switchMap, combineLatest } from 'rxjs';
7
6
  import { HttpClient, HttpHeaders } from '@angular/common/http';
8
- import { tap, catchError, filter as filter$1, skipWhile } from 'rxjs/operators';
9
- import * as i1$2 from '@ngx-translate/core';
7
+ import * as i1$1 from '@ngx-translate/core';
10
8
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
11
9
  import { CookieService } from 'ngx-cookie-service';
12
10
  import * as i2 from '@angular/router';
@@ -15,16 +13,17 @@ import { signalStore, withState, withMethods, patchState } from '@ngrx/signals';
15
13
  import { ToastrService } from 'ngx-toastr';
16
14
  import moment from 'moment';
17
15
  import { StorageMap } from '@ngx-pwa/local-storage';
18
- import * as i1$4 from '@angular/forms';
16
+ import * as i1$3 from '@angular/forms';
19
17
  import { Validators, FormsModule, FormBuilder, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
20
18
  import { register } from 'swiper/element/bundle';
21
19
  import { register as register$1 } from 'swiper/element';
22
- import * as i1$5 from '@angular/platform-browser';
20
+ import * as i1$4 from '@angular/platform-browser';
23
21
  import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
24
- import * as i1$3 from 'ng-recaptcha-2';
22
+ import * as i1$2 from 'ng-recaptcha-2';
25
23
  import { RecaptchaModule } from 'ng-recaptcha-2';
26
24
  import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
27
25
  import * as he from 'he';
26
+ import { filter as filter$1, skipWhile } from 'rxjs/operators';
28
27
 
29
28
  /**
30
29
  * Token para el provider de enviroment
@@ -44,186 +43,6 @@ const provideEnvironment = (environment) => {
44
43
  ]);
45
44
  };
46
45
 
47
- class RuntimeConfigService {
48
- platformId;
49
- http;
50
- configSubject = new BehaviorSubject(null);
51
- config$ = this.configSubject.asObservable();
52
- _config = null;
53
- constructor(platformId, http) {
54
- this.platformId = platformId;
55
- this.http = http;
56
- }
57
- /**
58
- * Carga la configuración en runtime
59
- * - En SSR: Lee desde el objeto window inyectado por el servidor
60
- * - En Browser: Hace petición HTTP a /runtime-config.json
61
- */
62
- loadConfig() {
63
- // Si ya tenemos la config cargada, la devolvemos
64
- if (this._config) {
65
- return of(this._config);
66
- }
67
- if (isPlatformBrowser(this.platformId)) {
68
- // En el navegador, primero intentamos obtener la config desde window
69
- if (window.__RUNTIME_CONFIG__) {
70
- this._config = window.__RUNTIME_CONFIG__;
71
- this.configSubject.next(this._config);
72
- return of(this._config);
73
- }
74
- // Si no está en window, hacemos petición HTTP
75
- return this.http.get('/runtime-config.json').pipe(tap(config => {
76
- this._config = config;
77
- this.configSubject.next(config);
78
- // Guardamos en window para siguientes accesos
79
- window.__RUNTIME_CONFIG__ = config;
80
- }), catchError(error => {
81
- console.error('Error loading runtime config:', error);
82
- // Fallback config si falla la carga
83
- const fallbackConfig = {
84
- apiUrl: 'https://elden-preprod.backend.easycommerce.com.ar/',
85
- appEnv: 'preprod',
86
- production: false,
87
- locale: 'es_AR',
88
- channel: 'minorista'
89
- };
90
- this._config = fallbackConfig;
91
- this.configSubject.next(fallbackConfig);
92
- return of(fallbackConfig);
93
- }));
94
- }
95
- else {
96
- // En SSR, leemos desde window que fue inyectado por el servidor
97
- if (typeof window !== 'undefined' && window.__RUNTIME_CONFIG__) {
98
- this._config = window.__RUNTIME_CONFIG__;
99
- this.configSubject.next(this._config);
100
- return of(this._config);
101
- }
102
- // Fallback para SSR si no hay config inyectada
103
- // En el servidor, las variables de entorno se configuran desde el server.ts
104
- const fallbackConfig = {
105
- apiUrl: 'https://elden-preprod.backend.easycommerce.com.ar/',
106
- appEnv: 'preprod',
107
- production: false,
108
- locale: 'es_AR',
109
- channel: 'minorista'
110
- };
111
- this._config = fallbackConfig;
112
- this.configSubject.next(fallbackConfig);
113
- return of(fallbackConfig);
114
- }
115
- }
116
- /**
117
- * Obtiene la configuración actual (síncrono)
118
- */
119
- getConfig() {
120
- return this._config;
121
- }
122
- /**
123
- * Obtiene la API URL actual
124
- */
125
- getApiUrl() {
126
- return this._config?.apiUrl || 'https://elden-preprod.backend.easycommerce.com.ar/';
127
- }
128
- /**
129
- * Obtiene la Frontend URL actual
130
- */
131
- getFrontendUrl() {
132
- return this._config?.frontendUrl;
133
- }
134
- /**
135
- * Obtiene el entorno actual
136
- */
137
- getAppEnv() {
138
- return this._config?.appEnv || 'development';
139
- }
140
- /**
141
- * Verifica si estamos en producción
142
- */
143
- isProduction() {
144
- return this._config?.production || false;
145
- }
146
- /**
147
- * Obtiene el locale actual
148
- */
149
- getLocale() {
150
- return this._config?.locale || 'es_AR';
151
- }
152
- /**
153
- * Obtiene el canal actual
154
- */
155
- getChannel() {
156
- return this._config?.channel || 'minorista';
157
- }
158
- /**
159
- * Método helper para construir URLs de API
160
- */
161
- buildApiUrl(endpoint) {
162
- const apiUrl = this.getApiUrl();
163
- const cleanEndpoint = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;
164
- return `${apiUrl}${cleanEndpoint}`;
165
- }
166
- /**
167
- * Método helper para construir URLs del frontend
168
- */
169
- buildFrontendUrl(path) {
170
- const frontendUrl = this.getFrontendUrl();
171
- if (!frontendUrl) {
172
- return path;
173
- }
174
- const cleanPath = path.startsWith('/') ? path.slice(1) : path;
175
- return `${frontendUrl}${cleanPath}`;
176
- }
177
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuntimeConfigService, deps: [{ token: PLATFORM_ID }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
178
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuntimeConfigService, providedIn: 'root' });
179
- }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RuntimeConfigService, decorators: [{
181
- type: Injectable,
182
- args: [{
183
- providedIn: 'root'
184
- }]
185
- }], ctorParameters: () => [{ type: Object, decorators: [{
186
- type: Inject,
187
- args: [PLATFORM_ID]
188
- }] }, { type: i1.HttpClient }] });
189
-
190
- /**
191
- * Factory function para APP_INITIALIZER
192
- * Carga la configuración runtime antes de que Angular bootstrap la aplicación
193
- */
194
- function initializeRuntimeConfig(runtimeConfigService) {
195
- return () => {
196
- return new Promise((resolve, reject) => {
197
- runtimeConfigService.loadConfig().subscribe({
198
- next: (config) => {
199
- console.log('🔧 Runtime config loaded:', config);
200
- resolve(config);
201
- },
202
- error: (error) => {
203
- console.error('❌ Failed to load runtime config:', error);
204
- // Aún en caso de error, resolvemos para no bloquear la app
205
- resolve(null);
206
- }
207
- });
208
- });
209
- };
210
- }
211
- /**
212
- * Función que configura el RuntimeConfigService y su inicialización
213
- * Debe ser usado en app.config.ts junto con provideEnvironment
214
- */
215
- function provideRuntimeConfig() {
216
- return makeEnvironmentProviders([
217
- RuntimeConfigService,
218
- {
219
- provide: APP_INITIALIZER,
220
- useFactory: initializeRuntimeConfig,
221
- deps: [RuntimeConfigService],
222
- multi: true
223
- }
224
- ]);
225
- }
226
-
227
46
  /**
228
47
  * Servicio que provee de datos que estan relacionado con las peticiones a la API
229
48
  * @export
@@ -232,7 +51,6 @@ function provideRuntimeConfig() {
232
51
  class ApiConstantsService {
233
52
  _localStorage = inject(LocalStorageService);
234
53
  _translate = inject(TranslateService);
235
- _runtimeConfig = inject(RuntimeConfigService);
236
54
  /**
237
55
  * Contiene los datos provisto por el frontend en el archivo environment.ts
238
56
  */
@@ -241,10 +59,13 @@ class ApiConstantsService {
241
59
  * Canal actual del frontend
242
60
  */
243
61
  get CHANNEL() {
244
- // Usar runtime config primero
245
- const runtimeConfig = this._runtimeConfig.getConfig();
246
- if (runtimeConfig?.channel) {
247
- return runtimeConfig.channel;
62
+ // Verificar si estamos en el navegador (no en SSR)
63
+ if (typeof window !== 'undefined') {
64
+ // Primero intenta leer de window.__env (configurado por Docker)
65
+ const windowEnv = window.__env;
66
+ if (windowEnv?.channel) {
67
+ return windowEnv.channel;
68
+ }
248
69
  }
249
70
  // Fallback al environment
250
71
  return this._channel;
@@ -266,25 +87,20 @@ class ApiConstantsService {
266
87
  */
267
88
  CMS_URL = 'cms/';
268
89
  constructor() {
269
- // Inicializar con valores por defecto del environment
270
90
  this._channel = this.environment.channel;
271
91
  this.LOCALE = this.environment.locale;
272
- // Actualizar con runtime config cuando esté disponible
273
- this._runtimeConfig.config$.subscribe(config => {
274
- if (config) {
275
- this._channel = config.channel;
276
- this.LOCALE = config.locale;
277
- }
278
- });
279
92
  }
280
93
  /**
281
94
  * URL del backend para realizar las peticiones
282
95
  */
283
96
  get API_URL() {
284
- // Usar runtime config primero
285
- const runtimeConfig = this._runtimeConfig.getConfig();
286
- if (runtimeConfig?.apiUrl) {
287
- return runtimeConfig.apiUrl;
97
+ // Verificar si estamos en el navegador (no en SSR)
98
+ if (typeof window !== 'undefined') {
99
+ // Primero intenta leer de window.__env (configurado por Docker)
100
+ const windowEnv = window.__env;
101
+ if (windowEnv?.apiUrl) {
102
+ return windowEnv.apiUrl;
103
+ }
288
104
  }
289
105
  // Fallback al environment (para SSR y como backup)
290
106
  return this.environment.apiUrl ?? '';
@@ -777,7 +593,7 @@ class OptionsService {
777
593
  const categories = this.appendPaths(true, response);
778
594
  this.categoriesSubject.next(categories);
779
595
  return categories;
780
- }), catchError$1((error) => {
596
+ }), catchError((error) => {
781
597
  console.log(`Error: ${error}`);
782
598
  this.categoriesSubject.next([]);
783
599
  return of([]);
@@ -977,7 +793,7 @@ class OptionsService {
977
793
  }
978
794
  return result;
979
795
  };
980
- getSectionContentByLink = (link) => this.connection.getHTML(this.pageContentByCodeApi(link)).pipe(map(html => html.split('</head>')[html.split('</head>').length - 1]), catchError$1(e => of(false)));
796
+ getSectionContentByLink = (link) => this.connection.getHTML(this.pageContentByCodeApi(link)).pipe(map(html => html.split('</head>')[html.split('</head>').length - 1]), catchError(e => of(false)));
981
797
  getFAQ() {
982
798
  return this.connection.get(this.faqsApi()).pipe(map(response => {
983
799
  let result = [];
@@ -1042,7 +858,7 @@ class ParametersService {
1042
858
  this.connection.get(this.getAllParametersAPI()).pipe(shareReplay(1), map((response) => {
1043
859
  this.parametersSubject.next(response);
1044
860
  return response;
1045
- }), catchError$1((error) => {
861
+ }), catchError((error) => {
1046
862
  console.log(`Error: ${error}`);
1047
863
  this.parametersSubject.next([]);
1048
864
  return of([]);
@@ -1415,7 +1231,7 @@ class GoogleAnalyticsService {
1415
1231
  * @param gtm_id id provisto por Google Tag Manager.
1416
1232
  */
1417
1233
  initialize(gtm_id) {
1418
- if (typeof document !== 'undefined' && !document.getElementById('google_tag_manager')) {
1234
+ if (!document.getElementById('google_tag_manager')) {
1419
1235
  console.log('hay elemento');
1420
1236
  const declaration = this.renderer.createElement('script');
1421
1237
  declaration.async = true;
@@ -3482,7 +3298,7 @@ class AuthService {
3482
3298
  return 'ok';
3483
3299
  }
3484
3300
  return 'error';
3485
- }), catchError$1((error) => {
3301
+ }), catchError((error) => {
3486
3302
  this._loggingInSubject.next(false);
3487
3303
  return throwError(() => error); // <-- Propaga el error real
3488
3304
  }));
@@ -4677,8 +4493,15 @@ class CartService {
4677
4493
  * @param quantity la cantidad nueva.
4678
4494
  */
4679
4495
  updateItemQuantity(item, quantity) {
4496
+ // Validar antes de proceder
4680
4497
  if (this.validateQuantity(item, quantity) && (this.validatePriceAndCredits(item, quantity))) {
4681
- firstValueFrom(this._connection.put(this.updateItemQuantityApi(this.findItemByIdVariant(item.variant_id)), { 'quantity': Number(quantity) })).then(res => this.updateCartObj(res) && this.updateCartItemQuantity(item.variant_id, Number(quantity)), err => this.handleError(err));
4498
+ // Si pasa las validaciones, hacer la petición HTTP
4499
+ firstValueFrom(this._connection.put(this.updateItemQuantityApi(this.findItemByIdVariant(item.variant_id)), { 'quantity': Number(quantity) }))
4500
+ .then(res => this.updateCartObj(res) && this.updateCartItemQuantity(item.variant_id, Number(quantity)), err => this.handleError(err));
4501
+ return true; // Validaciones pasaron, operación iniciada
4502
+ }
4503
+ else {
4504
+ return false; // Validaciones fallaron
4682
4505
  }
4683
4506
  }
4684
4507
  /**
@@ -4759,14 +4582,25 @@ class CartService {
4759
4582
  * @returns
4760
4583
  */
4761
4584
  validateQuantity(item, quantity) {
4762
- if ((this.getCountFromItemInCart(item.productCode) + quantity) > item.product.variants[0].maximumItemsQuantity) {
4585
+ const actualQuantity = Number(this.getCountFromItemInCart(item.productCode)); // <-- Forzar a número
4586
+ const newQuantity = Number(quantity); // <-- Forzar a número
4587
+ if ((actualQuantity + newQuantity) > item.product.variants[0].maximumItemsQuantity) {
4763
4588
  this._toastService.show('maximum-items-quantity', { quantity: item.product.variants[0].maximumItemsQuantity });
4764
4589
  return false;
4765
4590
  }
4766
- if ((this.getCountFromItemInCart(item.productCode) + quantity) < item.product.variants[0].minimumItemsQuantity) {
4591
+ if ((actualQuantity + newQuantity) < item.product.variants[0].minimumItemsQuantity) {
4767
4592
  this._toastService.show('minimum-items-quantity', { quantity: item.product.variants[0].minimumItemsQuantity });
4768
4593
  return false;
4769
4594
  }
4595
+ if (item.product.variants[0].multipleQuantity && item.product.variants[0].multipleQuantity > 1) {
4596
+ if ((actualQuantity + newQuantity) % item.product.variants[0].multipleQuantity !== 0) {
4597
+ this._toastService.show('multiple-quantity-required', {
4598
+ multiple: item.product.variants[0].multipleQuantity,
4599
+ current: actualQuantity + newQuantity // <-- Ahora suma correctamente
4600
+ });
4601
+ return false;
4602
+ }
4603
+ }
4770
4604
  return true;
4771
4605
  }
4772
4606
  /**
@@ -5114,6 +4948,7 @@ class ProductDetailService {
5114
4948
  associated.minimumItemsQuantity = v.stock > 0 && 'minimumItemsQuantity' in v && v.minimumItemsQuantity > 0
5115
4949
  ? v.minimumItemsQuantity
5116
4950
  : (v.multipleQuantity ?? 1);
4951
+ associated.multipleQuantity = v.multipleQuantity ?? 1;
5117
4952
  // Precios al consumidor final
5118
4953
  associated.finalConsumer = {
5119
4954
  finalConsumerPrice: v.final_consumer_price,
@@ -5316,6 +5151,15 @@ class ProductDetailService {
5316
5151
  this._toastService.show('minimum-items-quantity', { quantity: asociatedData.minimumItemsQuantity });
5317
5152
  return false;
5318
5153
  }
5154
+ if (asociatedData.multipleQuantity && asociatedData.multipleQuantity > 1) {
5155
+ if ((actualQuantity + quantity) % asociatedData.multipleQuantity !== 0) {
5156
+ this._toastService.show('multiple-quantity-required', {
5157
+ multiple: asociatedData.multipleQuantity,
5158
+ current: actualQuantity + quantity
5159
+ });
5160
+ return false;
5161
+ }
5162
+ }
5319
5163
  return true;
5320
5164
  };
5321
5165
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductDetailService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -5464,9 +5308,7 @@ class CheckoutService {
5464
5308
  this.complete().then(res => {
5465
5309
  if (res.ok) {
5466
5310
  this._router.navigate(['checkout/order_success']);
5467
- if (typeof window !== 'undefined') {
5468
- window.scrollTo(0, 0);
5469
- }
5311
+ window.scrollTo(0, 0);
5470
5312
  }
5471
5313
  else {
5472
5314
  this._toastService.show('operation-error');
@@ -6087,148 +5929,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
6087
5929
  }]
6088
5930
  }] });
6089
5931
 
6090
- /**
6091
- * Servicio base para realizar peticiones HTTP usando configuración dinámica
6092
- * Todos los servicios de la aplicación deben extender este servicio o usar sus métodos
6093
- */
6094
- class BaseApiService {
6095
- http;
6096
- runtimeConfigService;
6097
- constructor(http, runtimeConfigService) {
6098
- this.http = http;
6099
- this.runtimeConfigService = runtimeConfigService;
6100
- }
6101
- /**
6102
- * Construye una URL completa usando la API_URL del runtime
6103
- */
6104
- buildApiUrl(endpoint) {
6105
- return this.runtimeConfigService.buildApiUrl(endpoint);
6106
- }
6107
- /**
6108
- * Obtiene headers comunes que incluyen información del runtime
6109
- */
6110
- getCommonHeaders() {
6111
- const config = this.runtimeConfigService.getConfig();
6112
- let headers = new HttpHeaders({
6113
- 'Content-Type': 'application/json'
6114
- });
6115
- if (config) {
6116
- headers = headers
6117
- .set('X-Channel', config.channel)
6118
- .set('X-Locale', config.locale)
6119
- .set('X-Environment', config.appEnv);
6120
- }
6121
- return headers;
6122
- }
6123
- /**
6124
- * Método GET genérico
6125
- */
6126
- get(endpoint, options = {}) {
6127
- const url = this.buildApiUrl(endpoint);
6128
- const headers = this.mergeHeaders(options.headers);
6129
- return this.http.get(url, {
6130
- ...options,
6131
- headers
6132
- });
6133
- }
6134
- /**
6135
- * Método POST genérico
6136
- */
6137
- post(endpoint, data, options = {}) {
6138
- const url = this.buildApiUrl(endpoint);
6139
- const headers = this.mergeHeaders(options.headers);
6140
- return this.http.post(url, data, {
6141
- ...options,
6142
- headers
6143
- });
6144
- }
6145
- /**
6146
- * Método PUT genérico
6147
- */
6148
- put(endpoint, data, options = {}) {
6149
- const url = this.buildApiUrl(endpoint);
6150
- const headers = this.mergeHeaders(options.headers);
6151
- return this.http.put(url, data, {
6152
- ...options,
6153
- headers
6154
- });
6155
- }
6156
- /**
6157
- * Método PATCH genérico
6158
- */
6159
- patch(endpoint, data, options = {}) {
6160
- const url = this.buildApiUrl(endpoint);
6161
- const headers = this.mergeHeaders(options.headers);
6162
- return this.http.patch(url, data, {
6163
- ...options,
6164
- headers
6165
- });
6166
- }
6167
- /**
6168
- * Método DELETE genérico
6169
- */
6170
- delete(endpoint, options = {}) {
6171
- const url = this.buildApiUrl(endpoint);
6172
- const headers = this.mergeHeaders(options.headers);
6173
- return this.http.delete(url, {
6174
- ...options,
6175
- headers
6176
- });
6177
- }
6178
- /**
6179
- * Método para peticiones que necesitan esperar a que la config esté cargada
6180
- */
6181
- getWithConfig(endpoint, options = {}) {
6182
- return this.runtimeConfigService.config$.pipe(switchMap(config => {
6183
- if (!config) {
6184
- throw new Error('Runtime config not loaded');
6185
- }
6186
- return this.get(endpoint, options);
6187
- }));
6188
- }
6189
- /**
6190
- * Método para POST que necesitan esperar a que la config esté cargada
6191
- */
6192
- postWithConfig(endpoint, data, options = {}) {
6193
- return this.runtimeConfigService.config$.pipe(switchMap(config => {
6194
- if (!config) {
6195
- throw new Error('Runtime config not loaded');
6196
- }
6197
- return this.post(endpoint, data, options);
6198
- }));
6199
- }
6200
- /**
6201
- * Combina headers personalizados con los headers comunes
6202
- */
6203
- mergeHeaders(customHeaders) {
6204
- let headers = this.getCommonHeaders();
6205
- if (customHeaders) {
6206
- if (customHeaders instanceof HttpHeaders) {
6207
- customHeaders.keys().forEach(key => {
6208
- const values = customHeaders.getAll(key);
6209
- if (values) {
6210
- headers = headers.set(key, values);
6211
- }
6212
- });
6213
- }
6214
- else {
6215
- Object.keys(customHeaders).forEach(key => {
6216
- headers = headers.set(key, customHeaders[key]);
6217
- });
6218
- }
6219
- }
6220
- return headers;
6221
- }
6222
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, deps: [{ token: i1.HttpClient }, { token: RuntimeConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
6223
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, providedIn: 'root' });
6224
- }
6225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, decorators: [{
6226
- type: Injectable,
6227
- args: [{
6228
- providedIn: 'root'
6229
- }]
6230
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: RuntimeConfigService }] });
6231
-
6232
5932
  /**
6233
5933
  * Componente que sirve para abstraer la funcionalidad que comparten
6234
5934
  * el menú y el footer.
@@ -6546,21 +6246,17 @@ class HeaderEcComponent extends MenuEcComponent {
6546
6246
  });
6547
6247
  }
6548
6248
  onWindowScroll() {
6549
- if (isPlatformBrowser(this.platformId)) {
6550
- const scrollTop = window.scrollY;
6551
- this.isScrolled = scrollTop > 80;
6552
- }
6249
+ const scrollTop = window.scrollY;
6250
+ this.isScrolled = scrollTop > 80;
6553
6251
  }
6554
6252
  isHomeFunction() {
6555
- if (isPlatformBrowser(this.platformId)) {
6556
- const headerElement = document.querySelector('header');
6557
- if (headerElement) {
6558
- if (this.router.url !== '/home') {
6559
- headerElement.classList.add('show-menu');
6560
- }
6561
- else {
6562
- headerElement.classList.remove('show-menu');
6563
- }
6253
+ const headerElement = document.querySelector('header');
6254
+ if (headerElement) {
6255
+ if (this.router.url !== '/home') {
6256
+ headerElement.classList.add('show-menu');
6257
+ }
6258
+ else {
6259
+ headerElement.classList.remove('show-menu');
6564
6260
  }
6565
6261
  }
6566
6262
  }
@@ -6584,30 +6280,26 @@ class HeaderEcComponent extends MenuEcComponent {
6584
6280
  }
6585
6281
  };
6586
6282
  borrarInput(inputId) {
6587
- if (isPlatformBrowser(this.platformId)) {
6588
- if (inputId) {
6589
- const input = document.getElementById(inputId);
6283
+ if (inputId) {
6284
+ const input = document.getElementById(inputId);
6285
+ if (input) {
6286
+ input.value = '';
6287
+ }
6288
+ }
6289
+ else {
6290
+ const inputs = ['searchInput1'];
6291
+ inputs.forEach((id) => {
6292
+ const input = document.getElementById(id);
6590
6293
  if (input) {
6591
6294
  input.value = '';
6592
6295
  }
6593
- }
6594
- else {
6595
- const inputs = ['searchInput1'];
6596
- inputs.forEach((id) => {
6597
- const input = document.getElementById(id);
6598
- if (input) {
6599
- input.value = '';
6600
- }
6601
- });
6602
- }
6296
+ });
6603
6297
  }
6604
6298
  this.searchValue = '';
6605
6299
  this.coreConstantsService.searchValue = '';
6606
6300
  this.getCollectionSearch();
6607
6301
  }
6608
6302
  setupMobileMenu() {
6609
- if (!isPlatformBrowser(this.platformId))
6610
- return;
6611
6303
  // console.log('setupMobileMenu called');
6612
6304
  const menuMobile = document.querySelector('.menuMobile');
6613
6305
  if (!(menuMobile instanceof HTMLElement))
@@ -6643,8 +6335,6 @@ class HeaderEcComponent extends MenuEcComponent {
6643
6335
  });
6644
6336
  }
6645
6337
  setupSearchInputs() {
6646
- if (!isPlatformBrowser(this.platformId))
6647
- return;
6648
6338
  const inputs = ['searchInput1', 'searchInput2'];
6649
6339
  inputs.forEach(id => {
6650
6340
  const input = document.getElementById(id);
@@ -6913,7 +6603,7 @@ class BlockBannerFullEcComponent extends BlockEcComponent {
6913
6603
  };
6914
6604
  }
6915
6605
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6916
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta", prevArrowImage: "prevArrowImage", nextArrowImage: "nextArrowImage", prevArrowText: "prevArrowText", nextArrowText: "nextArrowText", enableCustomNavigation: "enableCustomNavigation" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
6606
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerFullEcComponent, isStandalone: true, selector: "app-block-banner-full-ec", inputs: { banners: "banners", meta: "meta", prevArrowImage: "prevArrowImage", nextArrowImage: "nextArrowImage", prevArrowText: "prevArrowText", nextArrowText: "nextArrowText", enableCustomNavigation: "enableCustomNavigation" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length > 0) {\r\n <section [ngClass]=\"trimClassBlock(meta?.code)+' container-fluid px-0'\"\r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n @if (banners.length == 1) {\r\n <!-- si es formato fijo -->\r\n <div class=\"row justify-content-center\">\r\n @let banner = banners[0];\r\n @if(!banners.styles?.button?.text){\r\n <!-- banner sin boton -->\r\n <a [href]=\"banner.url\" >\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#fff' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n </a>\r\n }@else {\r\n <!-- banner fijo con boton -->\r\n <div class=\"item col-12\">\r\n <img class=\"img-fluid\" [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\">\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-' + (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p \r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\"\r\n [class]=\"'item-button-full btn btn-light '\">\r\n {{banner.styles.button.text}}\r\n </a> \r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <!-- si es carrousel -->\r\n <!-- @if(swiperElement() != null){ -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <swiper-slide>\r\n <div class=\"item\">\r\n @if (!banner.styles?.button?.text) {\r\n <!-- banner sin boton -->\r\n @if(banner.url){\r\n <a [href]=\"banner.url\" class=\"\">\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n </a>\r\n }@else {\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" class=\"img-fluid w-100\" />\r\n }\r\n }@else {\r\n <!-- banner con boton -->\r\n <img [src]=\"mediaBannerUrl + getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 h-100 start-0 top-0\">\r\n @if(banner.title){\r\n <h2 [class]=\"'item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button-full btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n <!-- } -->\r\n \r\n }\r\n </section>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
6917
6607
  }
6918
6608
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerFullEcComponent, decorators: [{
6919
6609
  type: Component,
@@ -7024,7 +6714,7 @@ class BlockBannerBoxEcComponent extends BlockEcComponent {
7024
6714
  }
7025
6715
  boxesInlcudesCode = (box) => this.meta.code.toUpperCase().includes(box.toUpperCase());
7026
6716
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerBoxEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7027
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerBoxEcComponent, isStandalone: true, selector: "app-block-banner-box-ec", inputs: { banners: "banners", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length){\r\n <section [ngClass]=\"trimClassBlock(meta.code) + ' container'\" \r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n <div class=\"block-boxes\">\r\n @if(meta.name){\r\n <div class=\"row\">\r\n a\r\n <div class=\"col-12 mt-4\">\r\n <h2 class=\"font-weight-normal font-gd\">\r\n <span>{{meta.name}}</span>\r\n </h2>\r\n </div>\r\n </div> \r\n }\r\n \r\n @if(meta.styles && meta.styles.carrousel == false){\r\n <!-- Si es formato fijo -->\r\n <div class=\"banner-content\">\r\n <div class=\"row g-0\">\r\n @for (banner of banners; track $index) {\r\n <div [ngClass]=\"'item '+'col-md-6 '+'col-lg-'+(12/banners.length) \" [id]=\"$index\">\r\n <img class=\"img-fluid\" [src]=\" mediaBannerUrl+getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 top-0 start-0 h-100\">\r\n <h2 [ngClass]=\"'item-title px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000'\">\r\n {{banner.title}}\r\n </h2>\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else {\r\n <!-- Si es Carrousel -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <!-- Si es de Categorias -->\r\n @if (banner.taxons[0]) {\r\n <swiper-slide>\r\n\r\n <a class=\"banner-content carrousel item\" (click)='redirectRoute(banner.taxons[0].slug)' [routerLink]=\"['/collection/categories/', banner.taxons[0].slug]\" routerLinkActive=\"router-link-active\" style=\"text-decoration: none; cursor: pointer; background-color: white;\">\r\n <div class=\"image-container\">\r\n <img [src]=\"mediaBannerUrl+getImage(banner)\" alt=\"Banner Image\" class=\"banner-image\">\r\n </div>\r\n @if(banner.title){\r\n <h2 [class]=\"'box-text item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n style=\"color:#fff\">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.taxons && banner.taxons.length){\r\n <h5 class=\"item-subtitle-full item-position-vertical-center text-center box-text\">\r\n {{banner.translations.es_AR.title}}\r\n </h5>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'box-text px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </a>\r\n </swiper-slide>\r\n } @else {\r\n <swiper-slide>\r\n\r\n <a class=\"banner-content carrousel item\" style=\"cursor: pointer;\">\r\n <div class=\"image-container\">\r\n <img [src]=\"mediaBannerUrl+getImage(banner)\" alt=\"Banner Image\" class=\"banner-image\">\r\n </div>\r\n @if(banner.title){\r\n <h2 [class]=\"'box-text item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n style=\"color:#fff\">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.taxons && banner.taxons.length){\r\n <h5 class=\"item-subtitle-full item-position-vertical-center text-center box-text\">\r\n {{banner.translations.es_AR.title}}\r\n </h5>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'box-text px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </a>\r\n </swiper-slide>\r\n }\r\n \r\n }\r\n </swiper-container> \r\n }\r\n </div>\r\n\r\n </section>\r\n}", styles: ["@charset \"UTF-8\";.banner-container{text-align:center}.banner-image{display:block;margin:0 auto}.item-subtitle-full{margin-top:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
6717
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockBannerBoxEcComponent, isStandalone: true, selector: "app-block-banner-box-ec", inputs: { banners: "banners", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "@if(banners.length){\r\n <section [ngClass]=\"trimClassBlock(meta.code) + ' container'\" \r\n [style.background-color]=\"meta.styles?.backgroundColor\"\r\n [style.background-image]=\"meta.styles?.backgroundImage ? 'url(' + mediaUrl + meta.styles?.backgroundImage +')' : 'inherit'\">\r\n\r\n <div class=\"block-boxes\">\r\n @if(meta.name){\r\n <div class=\"row\">\r\n a\r\n <div class=\"col-12 mt-4\">\r\n <h2 class=\"font-weight-normal font-gd\">\r\n <span>{{meta.name}}</span>\r\n </h2>\r\n </div>\r\n </div> \r\n }\r\n \r\n @if(meta.styles && meta.styles.carrousel == false){\r\n <!-- Si es formato fijo -->\r\n <div class=\"banner-content\">\r\n <div class=\"row g-0\">\r\n @for (banner of banners; track $index) {\r\n <div [ngClass]=\"'item '+'col-md-6 '+'col-lg-'+(12/banners.length) \" [id]=\"$index\">\r\n <img class=\"img-fluid\" [src]=\" mediaBannerUrl+getImage(banner)\" alt=\"\" />\r\n <div class=\"position-absolute w-100 top-0 start-0 h-100\">\r\n <h2 [ngClass]=\"'item-title px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000'\">\r\n {{banner.title}}\r\n </h2>\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'px-4 item-subtitle item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </div>\r\n <div [class]=\"'item-position-vertical-' + (banner.styles?.button?.position)\">\r\n @if(banner.styles?.button?.text){\r\n <a href=\"{{banner.url}}\" [class]=\"'item-button btn btn-light'\">\r\n {{banner.styles.button.text}}\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else {\r\n <!-- Si es Carrousel -->\r\n <swiper-container init=\"false\" [id]=\"meta?.code\">\r\n @for (banner of banners; track $index) {\r\n <!-- Si es de Categorias -->\r\n @if (banner.taxons[0]) {\r\n <swiper-slide>\r\n\r\n <a class=\"banner-content carrousel item\" (click)='redirectRoute(banner.taxons[0].slug)' [routerLink]=\"['/collection/categories/', banner.taxons[0].slug]\" routerLinkActive=\"router-link-active\" style=\"text-decoration: none; cursor: pointer; background-color: white;\">\r\n <div class=\"image-container\">\r\n <img [src]=\"mediaBannerUrl+getImage(banner)\" alt=\"Banner Image\" class=\"banner-image\">\r\n </div>\r\n @if(banner.title){\r\n <h2 [class]=\"'box-text item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n style=\"color:#fff\">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.taxons && banner.taxons.length){\r\n <h5 class=\"item-subtitle-full item-position-vertical-center text-center box-text\">\r\n {{banner.translations.es_AR.title}}\r\n </h5>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'box-text px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </a>\r\n </swiper-slide>\r\n } @else {\r\n <swiper-slide>\r\n\r\n <a class=\"banner-content carrousel item\" style=\"cursor: pointer;\">\r\n <div class=\"image-container\">\r\n <img [src]=\"mediaBannerUrl+getImage(banner)\" alt=\"Banner Image\" class=\"banner-image\">\r\n </div>\r\n @if(banner.title){\r\n <h2 [class]=\"'box-text item-title-full px-2 item-position-vertical-'+ (banner.styles?.description?.position)\"\r\n style=\"color:#fff\">\r\n {{banner.title}}\r\n </h2>\r\n }\r\n @if(banner.taxons && banner.taxons.length){\r\n <h5 class=\"item-subtitle-full item-position-vertical-center text-center box-text\">\r\n {{banner.translations.es_AR.title}}\r\n </h5>\r\n }\r\n @if(banner.subtitle){\r\n <p [style.color]=\"(banner.styles?.description?.color) ? banner.styles?.description?.color : '#000' \"\r\n [class]=\"'box-text px-4 item-subtitle-full item-position-vertical-' + (banner.styles?.description?.position)\">\r\n {{banner.subtitle}}\r\n </p>\r\n }\r\n </a>\r\n </swiper-slide>\r\n }\r\n \r\n }\r\n </swiper-container> \r\n }\r\n </div>\r\n\r\n </section>\r\n}", styles: ["@charset \"UTF-8\";.banner-container{text-align:center}.banner-image{display:block;margin:0 auto}.item-subtitle-full{margin-top:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] });
7028
6718
  }
7029
6719
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockBannerBoxEcComponent, decorators: [{
7030
6720
  type: Component,
@@ -7226,7 +6916,7 @@ class PriceEcComponent {
7226
6916
  return !!value && value.split(' - ').length === 2;
7227
6917
  }
7228
6918
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7229
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PriceEcComponent, isStandalone: true, selector: "app-price-ec", inputs: { price: "price", saleprice: "saleprice", basePrice: "basePrice", taxeAmount: "taxeAmount", taxes: "taxes", priceSize: "priceSize", showTaxLegendOnly: "showTaxLegendOnly", disableTaxInfo: "disableTaxInfo", customPriceTemplate: "customPriceTemplate", customSalePriceTemplate: "customSalePriceTemplate", customSimplePriceTemplate: "customSimplePriceTemplate", customSimpleSalePriceTemplate: "customSimpleSalePriceTemplate", customTaxTemplate: "customTaxTemplate", customOnlyTaxLabelTemplate: "customOnlyTaxLabelTemplate" }, ngImport: i0, template: "@if(!hidePrices){\r\n@if (!showPricesOnlyToLoggedUsers || logged) {\r\n<ng-container *ngIf=\"customSalePriceTemplate || customPriceTemplate; else defaultPriceBlock\">\r\n <ng-container *ngTemplateOutlet=\"customSalePriceTemplate || customPriceTemplate\">\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #defaultPriceBlock>\r\n <div class=\"price\">\r\n <!-- Con precio de oferta -->\r\n <div *ngIf=\"saleprice; else onlyPriceBlock\" class=\"line-height-custom\">\r\n\r\n <!-- Precio original como rango o tachado simple -->\r\n <div *ngIf=\"hasRange(price); else simplePriceDel\" class=\"price-whithSaleprice\">\r\n <del class=\"\">\r\n {{\r\n price!.split(' - ')[0] | ecCurrencySymbol\r\n }}\r\n {{\r\n price!.split(' - ')[1] | ecCurrencySymbol\r\n }}\r\n </del>\r\n </div>\r\n\r\n <!-- Oferta como rango o simple -->\r\n <div *ngIf=\"hasRange(saleprice); else simpleSalePrice\" class=\"\">\r\n {{\r\n saleprice!.split(' - ')[0] | ecCurrencySymbol\r\n }}\r\n {{\r\n saleprice!.split(' - ')[1] | ecCurrencySymbol\r\n }}\r\n </div>\r\n </div>\r\n\r\n <!-- S\u00F3lo precio sin oferta -->\r\n <ng-template #onlyPriceBlock>\r\n <div *ngIf=\"hasRange(price); else simplePrice\" class=\"price-onlyPrice\">\r\n {{\r\n price!.split(' - ')[0] | ecCurrencySymbol\r\n }} -\r\n {{\r\n price!.split(' - ')[1] | ecCurrencySymbol\r\n }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Fallback simple price -->\r\n <ng-template #simplePrice>\r\n <ng-container *ngIf=\"customSimplePriceTemplate; else fallbackSimplePrice\">\r\n <ng-container *ngTemplateOutlet=\"customSimplePriceTemplate\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #fallbackSimplePrice>\r\n <del>&nbsp;</del>\r\n <div class=\"price-simplePrice\">\r\n {{ price | ecCurrencySymbol }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Fallback simple price-del -->\r\n <ng-template #simplePriceDel>\r\n <div class=\"price-simpleDel\">\r\n <del class=\"\">{{ price | ecCurrencySymbol }}</del>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Fallback simple saleprice -->\r\n <ng-template #simpleSalePrice>\r\n <ng-container *ngIf=\"customSimpleSalePriceTemplate; else fallbackSimpleSalePrice\">\r\n <ng-container *ngTemplateOutlet=\"customSimpleSalePriceTemplate\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #fallbackSimpleSalePrice>\r\n <div class=\"price-simpleSaleprice\">\r\n {{ saleprice | ecCurrencySymbol }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Secci\u00F3n de impuestos -->\r\n<ng-container *ngIf=\"shouldShowTaxes\">\r\n <!-- S\u00F3lo leyenda -->\r\n <ng-container *ngIf=\"showTaxLegendOnly; else detailedTaxBlock\">\r\n <ng-container *ngIf=\"customOnlyTaxLabelTemplate; else defaultOnlyTaxLabel\">\r\n <ng-container *ngTemplateOutlet=\"customOnlyTaxLabelTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultOnlyTaxLabel>\r\n <p class=\"taxes-title\">\r\n {{ 'price-without-national-taxes' | translate }}:\r\n {{ basePrice! | ecCurrencySymbol }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <!-- Detalle impuestos -->\r\n <ng-template #detailedTaxBlock>\r\n <ng-container *ngIf=\"customTaxTemplate; else defaultTaxBlock\">\r\n <ng-container *ngTemplateOutlet=\"customTaxTemplate\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n\r\n<ng-template #defaultTaxBlock>\r\n <div class=\"taxes-section\">\r\n <p class=\"taxes-title\">\r\n {{ 'price-without-national-taxes' | translate }}:\r\n {{ basePrice! | ecCurrencySymbol }}\r\n </p>\r\n <ul class=\"taxes-list\">\r\n <li>\r\n {{ taxes.Name }}: {{ taxeAmount | ecCurrencySymbol }}\r\n </li>\r\n </ul>\r\n </div>\r\n</ng-template>\r\n}\r\n}", styles: [".price-sm{font-size:13px}.price{font-size:18px}.line-height-custom{line-height:1.2}.lnth{text-decoration:line-through;color:gray}.taxes-section{margin-top:.5rem;border-radius:.5rem;font-size:.95rem;color:#333;line-height:1.4;max-width:400px}.taxes-title{font-weight:500;margin-bottom:.2rem;font-size:.7rem;color:#222}.taxes-list{list-style:none;padding:0;margin:0}.taxes-list li{display:flex;justify-content:space-between;margin-bottom:.1rem;font-size:.65rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
6919
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PriceEcComponent, isStandalone: true, selector: "app-price-ec", inputs: { price: "price", saleprice: "saleprice", basePrice: "basePrice", taxeAmount: "taxeAmount", taxes: "taxes", priceSize: "priceSize", showTaxLegendOnly: "showTaxLegendOnly", disableTaxInfo: "disableTaxInfo", customPriceTemplate: "customPriceTemplate", customSalePriceTemplate: "customSalePriceTemplate", customSimplePriceTemplate: "customSimplePriceTemplate", customSimpleSalePriceTemplate: "customSimpleSalePriceTemplate", customTaxTemplate: "customTaxTemplate", customOnlyTaxLabelTemplate: "customOnlyTaxLabelTemplate" }, ngImport: i0, template: "@if(!hidePrices){\r\n@if (!showPricesOnlyToLoggedUsers || logged) {\r\n<ng-container *ngIf=\"customSalePriceTemplate || customPriceTemplate; else defaultPriceBlock\">\r\n <ng-container *ngTemplateOutlet=\"customSalePriceTemplate || customPriceTemplate\">\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #defaultPriceBlock>\r\n <div class=\"price\">\r\n <!-- Con precio de oferta -->\r\n <div *ngIf=\"saleprice; else onlyPriceBlock\" class=\"line-height-custom\">\r\n\r\n <!-- Precio original como rango o tachado simple -->\r\n <div *ngIf=\"hasRange(price); else simplePriceDel\" class=\"price-whithSaleprice\">\r\n <del class=\"\">\r\n {{\r\n price!.split(' - ')[0] | ecCurrencySymbol\r\n }}\r\n {{\r\n price!.split(' - ')[1] | ecCurrencySymbol\r\n }}\r\n </del>\r\n </div>\r\n\r\n <!-- Oferta como rango o simple -->\r\n <div *ngIf=\"hasRange(saleprice); else simpleSalePrice\" class=\"\">\r\n {{\r\n saleprice!.split(' - ')[0] | ecCurrencySymbol\r\n }}\r\n {{\r\n saleprice!.split(' - ')[1] | ecCurrencySymbol\r\n }}\r\n </div>\r\n </div>\r\n\r\n <!-- S\u00F3lo precio sin oferta -->\r\n <ng-template #onlyPriceBlock>\r\n <div *ngIf=\"hasRange(price); else simplePrice\" class=\"price-onlyPrice\">\r\n {{\r\n price!.split(' - ')[0] | ecCurrencySymbol\r\n }} -\r\n {{\r\n price!.split(' - ')[1] | ecCurrencySymbol\r\n }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Fallback simple price -->\r\n <ng-template #simplePrice>\r\n <ng-container *ngIf=\"customSimplePriceTemplate; else fallbackSimplePrice\">\r\n <ng-container *ngTemplateOutlet=\"customSimplePriceTemplate\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #fallbackSimplePrice>\r\n <del>&nbsp;</del>\r\n <div class=\"price-simplePrice\">\r\n {{ price | ecCurrencySymbol }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Fallback simple price-del -->\r\n <ng-template #simplePriceDel>\r\n <div class=\"price-simpleDel\">\r\n <del class=\"\">{{ price | ecCurrencySymbol }}</del>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Fallback simple saleprice -->\r\n <ng-template #simpleSalePrice>\r\n <ng-container *ngIf=\"customSimpleSalePriceTemplate; else fallbackSimpleSalePrice\">\r\n <ng-container *ngTemplateOutlet=\"customSimpleSalePriceTemplate\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #fallbackSimpleSalePrice>\r\n <div class=\"price-simpleSaleprice\">\r\n {{ saleprice | ecCurrencySymbol }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Secci\u00F3n de impuestos -->\r\n<ng-container *ngIf=\"shouldShowTaxes\">\r\n <!-- S\u00F3lo leyenda -->\r\n <ng-container *ngIf=\"showTaxLegendOnly; else detailedTaxBlock\">\r\n <ng-container *ngIf=\"customOnlyTaxLabelTemplate; else defaultOnlyTaxLabel\">\r\n <ng-container *ngTemplateOutlet=\"customOnlyTaxLabelTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultOnlyTaxLabel>\r\n <p class=\"taxes-title\">\r\n {{ 'price-without-national-taxes' | translate }}:\r\n {{ basePrice! | ecCurrencySymbol }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <!-- Detalle impuestos -->\r\n <ng-template #detailedTaxBlock>\r\n <ng-container *ngIf=\"customTaxTemplate; else defaultTaxBlock\">\r\n <ng-container *ngTemplateOutlet=\"customTaxTemplate\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</ng-container>\r\n\r\n<ng-template #defaultTaxBlock>\r\n <div class=\"taxes-section\">\r\n <p class=\"taxes-title\">\r\n {{ 'price-without-national-taxes' | translate }}:\r\n {{ basePrice! | ecCurrencySymbol }}\r\n </p>\r\n <ul class=\"taxes-list\">\r\n <li>\r\n {{ taxes.Name }}: {{ taxeAmount | ecCurrencySymbol }}\r\n </li>\r\n </ul>\r\n </div>\r\n</ng-template>\r\n}\r\n}", styles: [".price-sm{font-size:13px}.price{font-size:18px}.line-height-custom{line-height:1.2}.lnth{text-decoration:line-through;color:gray}.taxes-section{margin-top:.5rem;border-radius:.5rem;font-size:.95rem;color:#333;line-height:1.4;max-width:400px}.taxes-title{font-weight:500;margin-bottom:.2rem;font-size:.7rem;color:#222}.taxes-list{list-style:none;padding:0;margin:0}.taxes-list li{display:flex;justify-content:space-between;margin-bottom:.1rem;font-size:.65rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
7230
6920
  }
7231
6921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceEcComponent, decorators: [{
7232
6922
  type: Component,
@@ -7345,7 +7035,6 @@ class ProductEcComponent {
7345
7035
  return Math.round(discount);
7346
7036
  }
7347
7037
  plus(stock, multipleQuantity) {
7348
- console.log('Aumentando cantidad');
7349
7038
  const current = Number(this.quantity()); // <-- fuerza a número
7350
7039
  if (multipleQuantity && multipleQuantity > 0) {
7351
7040
  stock
@@ -7363,7 +7052,6 @@ class ProductEcComponent {
7363
7052
  }
7364
7053
  }
7365
7054
  less(multipleQuantity) {
7366
- console.log('Disminuyendo cantidad');
7367
7055
  const current = Number(this.quantity()); // <-- fuerza a número
7368
7056
  if (multipleQuantity && multipleQuantity > 0) {
7369
7057
  current > multipleQuantity
@@ -7375,7 +7063,6 @@ class ProductEcComponent {
7375
7063
  }
7376
7064
  }
7377
7065
  addToCart() {
7378
- console.log('Añadiendo al carrito');
7379
7066
  if (this.isAddingToCart() || this.quantity() <= 0)
7380
7067
  return;
7381
7068
  // Verificar que tenemos el producto y sus variantes
@@ -7394,22 +7081,73 @@ class ProductEcComponent {
7394
7081
  this._toastService.show('out-of-stock-actually');
7395
7082
  return;
7396
7083
  }
7084
+ // NUEVAS VALIDACIONES: Verificar restricciones del producto
7085
+ if (!this.validateQuantity(this.quantity())) {
7086
+ return; // La validación ya mostró el toast correspondiente
7087
+ }
7397
7088
  this.isAddingToCart.set(true);
7398
7089
  try {
7399
7090
  // Agregar al carrito usando CartService directamente
7400
7091
  this._cartService.addToCart(this.product, this.quantity(), firstVariant.code);
7401
- console.log('Producto agregado al carrito exitosamente');
7402
7092
  // Resetear cantidad a 1 después de agregar al carrito
7403
7093
  this.quantity.set(1);
7404
7094
  }
7405
7095
  catch (error) {
7406
- console.error('Error al agregar al carrito:', error);
7407
7096
  this._toastService.show('cant-buy');
7408
7097
  }
7409
7098
  setTimeout(() => {
7410
7099
  this.isAddingToCart.set(false);
7411
7100
  }, 2000);
7412
7101
  }
7102
+ /**
7103
+ * Valida las restricciones de cantidad del producto
7104
+ */
7105
+ validateQuantity(quantity) {
7106
+ if (!this.product.variants || this.product.variants.length === 0) {
7107
+ this._toastService.show('cant-buy');
7108
+ return false;
7109
+ }
7110
+ const variant = this.product.variants[0];
7111
+ // Obtener cantidad actual en el carrito
7112
+ const actualQuantity = this._cartService.getCountFromItemInCart(variant.code);
7113
+ const totalQuantity = Number(actualQuantity) + Number(quantity);
7114
+ // Obtener restricciones del producto/variante (con valores por defecto)
7115
+ const maximumItemsQuantity = this.product.maximumItemsQuantity ||
7116
+ variant.maximumItemsQuantity ||
7117
+ 999999;
7118
+ const minimumItemsQuantity = this.product.minimumItemsQuantity ||
7119
+ variant.minimumItemsQuantity ||
7120
+ 1;
7121
+ const multipleQuantity = this.product.multipleQuantity ||
7122
+ variant.multipleQuantity ||
7123
+ 1;
7124
+ // Validar cantidad máxima
7125
+ if (totalQuantity > maximumItemsQuantity) {
7126
+ this._toastService.show('maximum-items-quantity', { quantity: maximumItemsQuantity });
7127
+ return false;
7128
+ }
7129
+ // Validar cantidad mínima
7130
+ if (totalQuantity < minimumItemsQuantity) {
7131
+ this._toastService.show('minimum-items-quantity', { quantity: minimumItemsQuantity });
7132
+ return false;
7133
+ }
7134
+ // Validar múltiplo de cantidad
7135
+ if (multipleQuantity && multipleQuantity > 1) {
7136
+ if (totalQuantity % multipleQuantity !== 0) {
7137
+ this._toastService.show('multiple-quantity-required', {
7138
+ multiple: multipleQuantity,
7139
+ current: totalQuantity
7140
+ });
7141
+ return false;
7142
+ }
7143
+ }
7144
+ // Validar que no exceda el stock total
7145
+ if (totalQuantity > variant.stock) {
7146
+ this._toastService.show('out-of-stock-actually');
7147
+ return false;
7148
+ }
7149
+ return true; // Todas las validaciones pasaron
7150
+ }
7413
7151
  checkStock(stock) {
7414
7152
  if (this.quantity() >= stock)
7415
7153
  this.quantity.set(stock);
@@ -7430,7 +7168,7 @@ class ProductEcComponent {
7430
7168
  }
7431
7169
  }
7432
7170
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7433
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ProductEcComponent, isStandalone: true, selector: "app-product-ec", inputs: { product: "product", isProductBox: "isProductBox", isCollection: "isCollection" }, outputs: { loaded: "loaded" }, ngImport: i0, template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\r\n <!-- Marca especial y descuento -->\r\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\r\n class=\"marcas\">\r\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\r\n <ng-container *ngIf=\"shouldShowPrice\">\r\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\r\n [ecProductOff]=\"product\">\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n\r\n <!-- Imagen del producto -->\r\n <div class=\"foto\">\r\n @if(product.picturesdefault){\r\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\r\n } @else {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n }\r\n }\r\n </div>\r\n <!-- Precio -->\r\n\r\n\r\n <!-- Nombre del producto -->\r\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\r\n\r\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\r\n\r\n @if (shouldShowPrice) {\r\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\r\n }\r\n @if(!hidePrices){\r\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\r\n\r\n <div class=\"fixBottom\">\r\n\r\n <!-- Bot\u00F3n de acciones -->\r\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\r\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\r\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\r\n 'standard') {\r\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n <ng-container *ngIf=\"isCollection; else normalText\">\r\n <span> {{(\"buy\" | translate) | uppercase}} </span>\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{(\"buy\" | translate) | uppercase}}\r\n </ng-template>\r\n </button>\r\n }@else {\r\n <!-- Caso 1: Agotado o Disponible muy pronto -->\r\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0].name | uppercase }} </span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>}\r\n <!-- Caso 2: Contacto por WhatsApp -->\r\n @if (product.special_mark[0].type === 'whatsapp_contact') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\r\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n\r\n </button>\r\n }\r\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\r\n @if (product.special_mark[0]?.type === 'more_info') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }}\r\n</a>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1$1.TitleCasePipe, name: "titlecase" }, { kind: "component", type: PriceEcComponent, selector: "app-price-ec", inputs: ["price", "saleprice", "basePrice", "taxeAmount", "taxes", "priceSize", "showTaxLegendOnly", "disableTaxInfo", "customPriceTemplate", "customSalePriceTemplate", "customSimplePriceTemplate", "customSimpleSalePriceTemplate", "customTaxTemplate", "customOnlyTaxLabelTemplate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }] });
7171
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ProductEcComponent, isStandalone: true, selector: "app-product-ec", inputs: { product: "product", isProductBox: "isProductBox", isCollection: "isCollection" }, outputs: { loaded: "loaded" }, ngImport: i0, template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\r\n <!-- Marca especial y descuento -->\r\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\r\n class=\"marcas\">\r\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\r\n <ng-container *ngIf=\"shouldShowPrice\">\r\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\r\n [ecProductOff]=\"product\">\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n\r\n <!-- Imagen del producto -->\r\n <div class=\"foto\">\r\n @if(product.picturesdefault){\r\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\r\n } @else {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n }\r\n }\r\n </div>\r\n <!-- Precio -->\r\n\r\n\r\n <!-- Nombre del producto -->\r\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\r\n\r\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\r\n\r\n @if (shouldShowPrice) {\r\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\r\n }\r\n @if(!hidePrices){\r\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\r\n\r\n <div class=\"fixBottom\">\r\n\r\n <!-- Bot\u00F3n de acciones -->\r\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\r\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\r\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\r\n 'standard') {\r\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n <ng-container *ngIf=\"isCollection; else normalText\">\r\n <span> {{(\"buy\" | translate) | uppercase}} </span>\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{(\"buy\" | translate) | uppercase}}\r\n </ng-template>\r\n </button>\r\n }@else {\r\n <!-- Caso 1: Agotado o Disponible muy pronto -->\r\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0].name | uppercase }} </span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>}\r\n <!-- Caso 2: Contacto por WhatsApp -->\r\n @if (product.special_mark[0].type === 'whatsapp_contact') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\r\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n\r\n </button>\r\n }\r\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\r\n @if (product.special_mark[0]?.type === 'more_info') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }}\r\n</a>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "component", type: PriceEcComponent, selector: "app-price-ec", inputs: ["price", "saleprice", "basePrice", "taxeAmount", "taxes", "priceSize", "showTaxLegendOnly", "disableTaxInfo", "customPriceTemplate", "customSalePriceTemplate", "customSimplePriceTemplate", "customSimpleSalePriceTemplate", "customTaxTemplate", "customOnlyTaxLabelTemplate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }] });
7434
7172
  }
7435
7173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductEcComponent, decorators: [{
7436
7174
  type: Component,
@@ -7519,8 +7257,6 @@ class BlockProductsEcComponent extends BlockEcComponent {
7519
7257
  * Esta función puede ser movida al componente base para reutilización.
7520
7258
  */
7521
7259
  initializeSwiperWithCustomNavigation() {
7522
- if (!isPlatformBrowser(this.platformId))
7523
- return;
7524
7260
  const prevButton = document.getElementById(`${this.meta?.code}-prev`);
7525
7261
  const nextButton = document.getElementById(`${this.meta?.code}-next`);
7526
7262
  const swiperElement = document.getElementById(this.meta?.code);
@@ -7633,7 +7369,7 @@ class BlockProductsEcComponent extends BlockEcComponent {
7633
7369
  });
7634
7370
  }
7635
7371
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockProductsEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7636
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockProductsEcComponent, isStandalone: true, selector: "app-block-products-ec", inputs: { prevArrowImage: "prevArrowImage", nextArrowImage: "nextArrowImage", prevArrowText: "prevArrowText", nextArrowText: "nextArrowText", appProduct: "appProduct", products: "products", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid'\">\r\n\r\n <div class=\"blockProduct block-product\">\r\n @if(meta.name){\r\n <div class=\"row\">\r\n <div class=\"col-12 mt-4\">\r\n <h2 class=\"font-weight-normal font-gd\">\r\n <span>{{meta.name}}</span>\r\n </h2>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if(meta.styles && meta.styles.carrousel == false){\r\n <div class=\"row \">\r\n @for (product of products; track $index) {\r\n <div [class]=\"'item '+ ' col-'+ (meta.styles.items?.sm) + ' col-md-' + (meta.styles.items?.md) + ' col-lg-' + (meta.styles.items?.lg) + ' px-2'\" [id]=\"$index\">\r\n <!-- verifica que si vienen un template para un custom appProduct llamado \"appProduct\" con un objeto \"product\"- sino usa por defecto el del core -->\r\n <ng-container *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"container position-relative\">\r\n <swiper-container \r\n init=\"false\" \r\n [id]=\"meta?.code\"\r\n slides-per-view=\"auto\"\r\n space-between=\"16\"\r\n slides-per-group=\"1\"\r\n navigation=\"false\"\r\n pagination=\"false\"\r\n loop=\"false\">\r\n @for (product of products; track $index) {\r\n <swiper-slide id=\"swiper-slide\">\r\n <ng-container\r\n *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n \r\n <!-- Botones de navegaci\u00F3n personalizados -->\r\n <div class=\"swiper-navigation\">\r\n <div class=\"swiper-button-prev\" [id]=\"meta?.code + '-prev'\">\r\n @if(prevArrowImage) {\r\n <img [src]=\"prevArrowImage\" alt=\"Anterior\" />\r\n } @else {\r\n <span class=\"arrow-text\">{{prevArrowText}}</span>\r\n }\r\n </div>\r\n <div class=\"swiper-button-next\" [id]=\"meta?.code + '-next'\">\r\n @if(nextArrowImage) {\r\n <img [src]=\"nextArrowImage\" alt=\"Siguiente\" />\r\n } @else {\r\n <span class=\"arrow-text\">{{nextArrowText}}</span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n\r\n\r\n<!-- componente por defecto (tomara como producto el contexto pasado como \"product\") -->\r\n<ng-template #defaultAppProduct let-product=\"product\">\r\n <app-product-ec [product]=\"product\"></app-product-ec>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ProductEcComponent, selector: "app-product-ec", inputs: ["product", "isProductBox", "isCollection"], outputs: ["loaded"] }] });
7372
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockProductsEcComponent, isStandalone: true, selector: "app-block-products-ec", inputs: { prevArrowImage: "prevArrowImage", nextArrowImage: "nextArrowImage", prevArrowText: "prevArrowText", nextArrowText: "nextArrowText", appProduct: "appProduct", products: "products", meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<section [ngClass]=\"trimClassBlock(meta.code) + ' container-fluid'\">\r\n\r\n <div class=\"blockProduct block-product\">\r\n @if(meta.name){\r\n <div class=\"row\">\r\n <div class=\"col-12 mt-4\">\r\n <h2 class=\"font-weight-normal font-gd\">\r\n <span>{{meta.name}}</span>\r\n </h2>\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n @if(meta.styles && meta.styles.carrousel == false){\r\n <div class=\"row \">\r\n @for (product of products; track $index) {\r\n <div [class]=\"'item '+ ' col-'+ (meta.styles.items?.sm) + ' col-md-' + (meta.styles.items?.md) + ' col-lg-' + (meta.styles.items?.lg) + ' px-2'\" [id]=\"$index\">\r\n <!-- verifica que si vienen un template para un custom appProduct llamado \"appProduct\" con un objeto \"product\"- sino usa por defecto el del core -->\r\n <ng-container *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"container position-relative\">\r\n <swiper-container \r\n init=\"false\" \r\n [id]=\"meta?.code\"\r\n slides-per-view=\"auto\"\r\n space-between=\"16\"\r\n slides-per-group=\"1\"\r\n navigation=\"false\"\r\n pagination=\"false\"\r\n loop=\"false\">\r\n @for (product of products; track $index) {\r\n <swiper-slide id=\"swiper-slide\">\r\n <ng-container\r\n *ngTemplateOutlet=\"appProduct ? appProduct : defaultAppProduct; context: {product:product}\"></ng-container>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n \r\n <!-- Botones de navegaci\u00F3n personalizados -->\r\n <div class=\"swiper-navigation\">\r\n <div class=\"swiper-button-prev\" [id]=\"meta?.code + '-prev'\">\r\n @if(prevArrowImage) {\r\n <img [src]=\"prevArrowImage\" alt=\"Anterior\" />\r\n } @else {\r\n <span class=\"arrow-text\">{{prevArrowText}}</span>\r\n }\r\n </div>\r\n <div class=\"swiper-button-next\" [id]=\"meta?.code + '-next'\">\r\n @if(nextArrowImage) {\r\n <img [src]=\"nextArrowImage\" alt=\"Siguiente\" />\r\n } @else {\r\n <span class=\"arrow-text\">{{nextArrowText}}</span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n\r\n\r\n<!-- componente por defecto (tomara como producto el contexto pasado como \"product\") -->\r\n<ng-template #defaultAppProduct let-product=\"product\">\r\n <app-product-ec [product]=\"product\"></app-product-ec>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ProductEcComponent, selector: "app-product-ec", inputs: ["product", "isProductBox", "isCollection"], outputs: ["loaded"] }] });
7637
7373
  }
7638
7374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockProductsEcComponent, decorators: [{
7639
7375
  type: Component,
@@ -7769,7 +7505,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
7769
7505
  class LoadingInlineEcComponent {
7770
7506
  type = 'border';
7771
7507
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingInlineEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7772
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoadingInlineEcComponent, isStandalone: true, selector: "app-loading-inline-ec", inputs: { type: "type" }, ngImport: i0, template: "<div class=\"loading-inline-container\">\r\n <div [class]=\"'spinner-'+type+' text-dark spinner-colo'\" id=\"loading\" role=\"status\">\r\n <span class=\"visually-hidden\">{{ 'loading' | translate }}</span>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
7508
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoadingInlineEcComponent, isStandalone: true, selector: "app-loading-inline-ec", inputs: { type: "type" }, ngImport: i0, template: "<div class=\"loading-inline-container\">\r\n <div [class]=\"'spinner-'+type+' text-dark spinner-colo'\" id=\"loading\" role=\"status\">\r\n <span class=\"visually-hidden\">{{ 'loading' | translate }}</span>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
7773
7509
  }
7774
7510
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingInlineEcComponent, decorators: [{
7775
7511
  type: Component,
@@ -7827,7 +7563,7 @@ class ReCaptchaEcComponent {
7827
7563
  useExisting: forwardRef(() => ReCaptchaEcComponent),
7828
7564
  multi: true
7829
7565
  }
7830
- ], ngImport: i0, template: "@if(captcha.siteKey){\r\n <re-captcha (resolved)=\"resolved($event)\" siteKey=\"{{captcha.siteKey}}\">\r\n </re-captcha>\r\n}@else {\r\n <app-loading-full-ec></app-loading-full-ec>\r\n}", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: RecaptchaModule }, { kind: "component", type: i1$3.RecaptchaComponent, selector: "re-captcha", inputs: ["id", "siteKey", "theme", "type", "size", "tabIndex", "badge", "errorMode"], outputs: ["resolved", "error", "errored"], exportAs: ["reCaptcha"] }, { kind: "ngmodule", type: ReactiveFormsModule }] });
7566
+ ], ngImport: i0, template: "@if(captcha.siteKey){\r\n <re-captcha (resolved)=\"resolved($event)\" siteKey=\"{{captcha.siteKey}}\">\r\n </re-captcha>\r\n}@else {\r\n <app-loading-full-ec></app-loading-full-ec>\r\n}", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: RecaptchaModule }, { kind: "component", type: i1$2.RecaptchaComponent, selector: "re-captcha", inputs: ["id", "siteKey", "theme", "type", "size", "tabIndex", "badge", "errorMode"], outputs: ["resolved", "error", "errored"], exportAs: ["reCaptcha"] }, { kind: "ngmodule", type: ReactiveFormsModule }] });
7831
7567
  }
7832
7568
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReCaptchaEcComponent, decorators: [{
7833
7569
  type: Component,
@@ -7994,7 +7730,7 @@ class MagnizoomEcComponent {
7994
7730
  event.stopPropagation();
7995
7731
  }
7996
7732
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MagnizoomEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7997
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MagnizoomEcComponent, isStandalone: true, selector: "[app-magnizoom-ec]", inputs: { ImageSrc: "ImageSrc", zoomMode: "zoomMode", minZoomFactor: "minZoomFactor", maxZoomFactor: "maxZoomFactor", imageStyle: "imageStyle", imageClass: "imageClass" }, viewQueries: [{ propertyName: "mainCanvasRef", first: true, predicate: ["mainCanvas"], descendants: true, static: true }], ngImport: i0, template: "<canvas #mainCanvas\r\n class=\"main-canvas\"\r\n [ngClass]=\"imageClass\"\r\n [ngStyle]=\"imageStyle\"\r\n [width]=\"canvasWidth\"\r\n [height]=\"canvasHeight\"\r\n (mouseleave)=\"onMouseLeave($event)\"\r\n (mouseenter)=\"onMouseEnterOrMove($event)\"\r\n (mousemove)=\"onMouseEnterOrMove($event)\"\r\n (wheel)=\"onMouseScroll($event)\">\r\n</canvas>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
7733
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MagnizoomEcComponent, isStandalone: true, selector: "[app-magnizoom-ec]", inputs: { ImageSrc: "ImageSrc", zoomMode: "zoomMode", minZoomFactor: "minZoomFactor", maxZoomFactor: "maxZoomFactor", imageStyle: "imageStyle", imageClass: "imageClass" }, viewQueries: [{ propertyName: "mainCanvasRef", first: true, predicate: ["mainCanvas"], descendants: true, static: true }], ngImport: i0, template: "<canvas #mainCanvas\r\n class=\"main-canvas\"\r\n [ngClass]=\"imageClass\"\r\n [ngStyle]=\"imageStyle\"\r\n [width]=\"canvasWidth\"\r\n [height]=\"canvasHeight\"\r\n (mouseleave)=\"onMouseLeave($event)\"\r\n (mouseenter)=\"onMouseEnterOrMove($event)\"\r\n (mousemove)=\"onMouseEnterOrMove($event)\"\r\n (wheel)=\"onMouseScroll($event)\">\r\n</canvas>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
7998
7734
  }
7999
7735
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MagnizoomEcComponent, decorators: [{
8000
7736
  type: Component,
@@ -8209,7 +7945,7 @@ class RedsysCatchEcComponent extends ComponentHelper {
8209
7945
  catch { }
8210
7946
  }
8211
7947
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, deps: [{ token: i2.ActivatedRoute }, { token: i2.Router }, { token: CheckoutService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
8212
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RedsysCatchEcComponent, isStandalone: true, selector: "app-redsys-catch-ec", usesInheritance: true, ngImport: i0, template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.UpperCasePipe, name: "uppercase" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
7948
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RedsysCatchEcComponent, isStandalone: true, selector: "app-redsys-catch-ec", usesInheritance: true, ngImport: i0, template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
8213
7949
  }
8214
7950
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, decorators: [{
8215
7951
  type: Component,
@@ -8288,7 +8024,7 @@ class BlockFormContactEcComponent extends BlockEcComponent {
8288
8024
  }
8289
8025
  }
8290
8026
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockFormContactEcComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
8291
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockFormContactEcComponent, isStandalone: true, selector: "app-block-form-contact-ec", inputs: { block: "block", success_message: "success_message", redirect: "redirect", subject: "subject" }, usesInheritance: true, ngImport: i0, template: "@if(block){\r\n<div [class]=\"trimClassBlock(block.code) + ' container-fluid'\">\r\n <div class=\"row justify-content-center\">\r\n <div class=\"col-12 col-md-12\">\r\n <div class=\"row w-100 m-auto\">\r\n <h5>{{block.name || 'Dejanos tu consulta'}}</h5>\r\n <p class=\"w-100\">{{ block.description || 'Completa el siguiente formulario y responderemos tu consulta a la brevedad' }}</p>\r\n </div>\r\n <form [formGroup]=\"form()\" (submit)=\"onSubmit($event)\" class=\"position-relative\" ><!-- (submit)=\"toastCompleteForm($event)\" -->\r\n @if(block.sendName){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"nombre\">Nombre</label>\r\n <input formControlName=\"name\" type=\"text\"\r\n class=\"form-control form-control-sm required\" id=\"nombre\" placeholder=\"Nombre\">\r\n </div>\r\n }\r\n @if(block.sendEmail){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"mail\">Email</label>\r\n <input formControlName=\"email\" type=\"email\"\r\n class=\"form-control form-control-sm required\" id=\"mail\" placeholder=\"Email\">\r\n </div>\r\n }\r\n @if(block.sendTelephone){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"telefono\">Tel\u00E9fono</label>\r\n <input formControlName=\"telephone\" type=\"text\"\r\n class=\"form-control form-control-sm required\" id=\"telefono\" placeholder=\"Tel\u00E9fono\">\r\n </div>\r\n }\r\n @if(block.sendSubject){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"subject\">Asunto</label>\r\n <input formControlName=\"subject\" type=\"text\"\r\n class=\"form-control form-control-sm required\" id=\"subject\" placeholder=\"Asunto\">\r\n </div>\r\n }\r\n @if(block.sendBody){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"mensaje\">Mensaje</label>\r\n <textarea formControlName=\"body\" name=\"mensaje\" id=\"mensaje \" cols=\"30\"\r\n rows=\"5\" placeholder=\"Dejanos tu mensaje\"\r\n class=\"form-control form-control-sm required\"></textarea>\r\n </div>\r\n }\r\n <div class=\"boxContenidoCapcha mb-3 mt-1\">\r\n <div class=\"contenedorCaptcha\">\r\n <re-captcha-ec formControlName=\"recaptcha\"></re-captcha-ec>\r\n </div>\r\n </div>\r\n\r\n <button type=\"submit\" class=\"btn btn-dark text-uppercase px-5\"\r\n [disabled]=\"form().invalid\">ENVIAR</button>\r\n @if(loading){\r\n <app-loading-section-ec/>\r\n }\r\n </form>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "component", type: ReCaptchaEcComponent, selector: "re-captcha-ec", inputs: ["siteKey"] }] });
8027
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BlockFormContactEcComponent, isStandalone: true, selector: "app-block-form-contact-ec", inputs: { block: "block", success_message: "success_message", redirect: "redirect", subject: "subject" }, usesInheritance: true, ngImport: i0, template: "@if(block){\r\n<div [class]=\"trimClassBlock(block.code) + ' container-fluid'\">\r\n <div class=\"row justify-content-center\">\r\n <div class=\"col-12 col-md-12\">\r\n <div class=\"row w-100 m-auto\">\r\n <h5>{{block.name || 'Dejanos tu consulta'}}</h5>\r\n <p class=\"w-100\">{{ block.description || 'Completa el siguiente formulario y responderemos tu consulta a la brevedad' }}</p>\r\n </div>\r\n <form [formGroup]=\"form()\" (submit)=\"onSubmit($event)\" class=\"position-relative\" ><!-- (submit)=\"toastCompleteForm($event)\" -->\r\n @if(block.sendName){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"nombre\">Nombre</label>\r\n <input formControlName=\"name\" type=\"text\"\r\n class=\"form-control form-control-sm required\" id=\"nombre\" placeholder=\"Nombre\">\r\n </div>\r\n }\r\n @if(block.sendEmail){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"mail\">Email</label>\r\n <input formControlName=\"email\" type=\"email\"\r\n class=\"form-control form-control-sm required\" id=\"mail\" placeholder=\"Email\">\r\n </div>\r\n }\r\n @if(block.sendTelephone){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"telefono\">Tel\u00E9fono</label>\r\n <input formControlName=\"telephone\" type=\"text\"\r\n class=\"form-control form-control-sm required\" id=\"telefono\" placeholder=\"Tel\u00E9fono\">\r\n </div>\r\n }\r\n @if(block.sendSubject){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"subject\">Asunto</label>\r\n <input formControlName=\"subject\" type=\"text\"\r\n class=\"form-control form-control-sm required\" id=\"subject\" placeholder=\"Asunto\">\r\n </div>\r\n }\r\n @if(block.sendBody){\r\n <div class=\"form-group mt-1\">\r\n <label class=\"sr-only\" for=\"mensaje\">Mensaje</label>\r\n <textarea formControlName=\"body\" name=\"mensaje\" id=\"mensaje \" cols=\"30\"\r\n rows=\"5\" placeholder=\"Dejanos tu mensaje\"\r\n class=\"form-control form-control-sm required\"></textarea>\r\n </div>\r\n }\r\n <div class=\"boxContenidoCapcha mb-3 mt-1\">\r\n <div class=\"contenedorCaptcha\">\r\n <re-captcha-ec formControlName=\"recaptcha\"></re-captcha-ec>\r\n </div>\r\n </div>\r\n\r\n <button type=\"submit\" class=\"btn btn-dark text-uppercase px-5\"\r\n [disabled]=\"form().invalid\">ENVIAR</button>\r\n @if(loading){\r\n <app-loading-section-ec/>\r\n }\r\n </form>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "component", type: ReCaptchaEcComponent, selector: "re-captcha-ec", inputs: ["siteKey"] }] });
8292
8028
  }
8293
8029
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockFormContactEcComponent, decorators: [{
8294
8030
  type: Component,
@@ -8590,7 +8326,7 @@ class LoginFormEcComponent {
8590
8326
  this.showPassword = !this.showPassword;
8591
8327
  }
8592
8328
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginFormEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8593
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LoginFormEcComponent, isStandalone: true, selector: "app-login-form-ec", inputs: { redirect: "redirect", redirectTo: "redirectTo", inCart: "inCart" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"d-flex flex-column position-relative\">\r\n <h1 class=\"right-line ff-ubuntu-light mb-4\"><span>Ingresar</span></h1>\r\n <p class=\"ff-ubuntu-light font-sm pr-4 mb-4\">\r\n Si ya est\u00E1s registrado. Ingresa en tu cuenta con tu email y la\r\n contrase\u00F1a adecuada.\r\n </p>\r\n <div class=\"w-md-50 w-100 text-center\">\r\n <form [formGroup]=\"loginForm()\" (submit)=\"login($event)\">\r\n <input class=\"form-control mb-4 radius-0\" type=\"email\" formControlName=\"username\"\r\n placeholder=\"Correo Electr\u00F3nico\">\r\n <input class=\"form-control mb-4 radius-0\" type=\"password\" formControlName=\"password\"\r\n placeholder=\"Contrase\u00F1a\">\r\n\r\n <div class=\"row d-flex flex-column\">\r\n <div class=\"col-12 mb-4\">\r\n <button type=\"submit\"\r\n class=\"bg-gray border-0 px-4 py-2 color-white ff-ubuntu-light\">INGRESAR</button>\r\n </div>\r\n <div class=\"col-12 d-flex justify-content-center align-items-center\">\r\n <a [routerLink]=\"'/auth/forgot-password'\" class=\"font-md ff-ubuntu-light\">\r\n \u00BFOlvid\u00F3 su contrase\u00F1a?\r\n </a>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n @if(loading){\r\n <app-loading-section-ec></app-loading-section-ec>\r\n }\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
8329
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LoginFormEcComponent, isStandalone: true, selector: "app-login-form-ec", inputs: { redirect: "redirect", redirectTo: "redirectTo", inCart: "inCart" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"d-flex flex-column position-relative\">\r\n <h1 class=\"right-line ff-ubuntu-light mb-4\"><span>Ingresar</span></h1>\r\n <p class=\"ff-ubuntu-light font-sm pr-4 mb-4\">\r\n Si ya est\u00E1s registrado. Ingresa en tu cuenta con tu email y la\r\n contrase\u00F1a adecuada.\r\n </p>\r\n <div class=\"w-md-50 w-100 text-center\">\r\n <form [formGroup]=\"loginForm()\" (submit)=\"login($event)\">\r\n <input class=\"form-control mb-4 radius-0\" type=\"email\" formControlName=\"username\"\r\n placeholder=\"Correo Electr\u00F3nico\">\r\n <input class=\"form-control mb-4 radius-0\" type=\"password\" formControlName=\"password\"\r\n placeholder=\"Contrase\u00F1a\">\r\n\r\n <div class=\"row d-flex flex-column\">\r\n <div class=\"col-12 mb-4\">\r\n <button type=\"submit\"\r\n class=\"bg-gray border-0 px-4 py-2 color-white ff-ubuntu-light\">INGRESAR</button>\r\n </div>\r\n <div class=\"col-12 d-flex justify-content-center align-items-center\">\r\n <a [routerLink]=\"'/auth/forgot-password'\" class=\"font-md ff-ubuntu-light\">\r\n \u00BFOlvid\u00F3 su contrase\u00F1a?\r\n </a>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n @if(loading){\r\n <app-loading-section-ec></app-loading-section-ec>\r\n }\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
8594
8330
  }
8595
8331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoginFormEcComponent, decorators: [{
8596
8332
  type: Component,
@@ -8652,7 +8388,7 @@ class ForgotPasswordEcComponent {
8652
8388
  }).finally(() => this.loading = false);
8653
8389
  };
8654
8390
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForgotPasswordEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8655
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ForgotPasswordEcComponent, isStandalone: true, selector: "app-forgot-password-ec", ngImport: i0, template: "\r\n<!-- CONTENIDO -->\r\n @if(!ready){\r\n<section class=\"container-fluid mb-3 py-3 py-md-4 bloqueContact\">\r\n <div class=\"container-xl\">\r\n <div class=\"row\">\r\n\r\n <div class=\"col-12 col-md-8 col-lg-5 m-auto recuperar mt-5\">\r\n <h2 class=\"fw-600 mt-0 mb-4\">{{ 'recover-password' | translate\r\n }}</h2>\r\n <form [formGroup]=\"form\" (submit)=\"recoverPassword($event)\" class=\"mt-0\">\r\n\r\n <p for=\"nombre\">{{ 'set-forgot-email' | translate }}</p>\r\n <input class=\"form-control\" formControlName=\"email\" type='text' name='nombre' id=\"nombre\" value='' placeholder=''>\r\n\r\n <div class=\"contSend mt-4\">\r\n <input class=\"comprar\" type=\"submit\" [disabled]=\"form.invalid\" name='' value='ENVIAR' placeholder=''>\r\n </div>\r\n\r\n </form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</section>\r\n} @else {\r\n <div class=\"row d-flex justify-content-center py-5 \">\r\n <div class=\"col-12 col-md-8 my-5\">\r\n <div class=\"element-container text-center\">\r\n <h3>{{ 'mail-sent' | translate }}</h3>\r\n </div>\r\n <div class=\"element-container text-center\">\r\n <h5 class=\"center-text\">{{ 'check-your-email' | translate }}</h5>\r\n </div>\r\n </div>\r\n </div>\r\n }", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
8391
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ForgotPasswordEcComponent, isStandalone: true, selector: "app-forgot-password-ec", ngImport: i0, template: "\r\n<!-- CONTENIDO -->\r\n @if(!ready){\r\n<section class=\"container-fluid mb-3 py-3 py-md-4 bloqueContact\">\r\n <div class=\"container-xl\">\r\n <div class=\"row\">\r\n\r\n <div class=\"col-12 col-md-8 col-lg-5 m-auto recuperar mt-5\">\r\n <h2 class=\"fw-600 mt-0 mb-4\">{{ 'recover-password' | translate\r\n }}</h2>\r\n <form [formGroup]=\"form\" (submit)=\"recoverPassword($event)\" class=\"mt-0\">\r\n\r\n <p for=\"nombre\">{{ 'set-forgot-email' | translate }}</p>\r\n <input class=\"form-control\" formControlName=\"email\" type='text' name='nombre' id=\"nombre\" value='' placeholder=''>\r\n\r\n <div class=\"contSend mt-4\">\r\n <input class=\"comprar\" type=\"submit\" [disabled]=\"form.invalid\" name='' value='ENVIAR' placeholder=''>\r\n </div>\r\n\r\n </form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</section>\r\n} @else {\r\n <div class=\"row d-flex justify-content-center py-5 \">\r\n <div class=\"col-12 col-md-8 my-5\">\r\n <div class=\"element-container text-center\">\r\n <h3>{{ 'mail-sent' | translate }}</h3>\r\n </div>\r\n <div class=\"element-container text-center\">\r\n <h5 class=\"center-text\">{{ 'check-your-email' | translate }}</h5>\r\n </div>\r\n </div>\r\n </div>\r\n }", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
8656
8392
  }
8657
8393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForgotPasswordEcComponent, decorators: [{
8658
8394
  type: Component,
@@ -8674,7 +8410,7 @@ class ConfirmAccountEcComponent {
8674
8410
  });
8675
8411
  }
8676
8412
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmAccountEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8677
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmAccountEcComponent, isStandalone: true, selector: "app-confirm-account-ec", ngImport: i0, template: "<div class=\"my-5 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12 text-center\">\r\n <h4 class=\"confirm-title py-3 text-uppercase d-inline-block\">\r\n {{ ('thanks-for-register' | translate) | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12 text-center\">\r\n <h4>{{ 'thanks-for-register-detail' | translate }}</h4>\r\n <a href=\"/auth/login\">\r\n <button class=\"btn btn-primary my-4\" type=\"button\">{{ 'login' | translate |\r\n uppercase }}</button>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }] });
8413
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmAccountEcComponent, isStandalone: true, selector: "app-confirm-account-ec", ngImport: i0, template: "<div class=\"my-5 py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12 text-center\">\r\n <h4 class=\"confirm-title py-3 text-uppercase d-inline-block\">\r\n {{ ('thanks-for-register' | translate) | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12 text-center\">\r\n <h4>{{ 'thanks-for-register-detail' | translate }}</h4>\r\n <a href=\"/auth/login\">\r\n <button class=\"btn btn-primary my-4\" type=\"button\">{{ 'login' | translate |\r\n uppercase }}</button>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }] });
8678
8414
  }
8679
8415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmAccountEcComponent, decorators: [{
8680
8416
  type: Component,
@@ -8808,7 +8544,7 @@ class RegisterFormEcComponent {
8808
8544
  this.showPassword = !this.showPassword;
8809
8545
  }
8810
8546
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterFormEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8811
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterFormEcComponent, isStandalone: true, selector: "app-register-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"w-100 pl-md-5 position-relative\" id=\"register\">\r\n <div class=\"py-2\">\r\n <h5>CREAR CUENTA</h5>\r\n </div>\r\n <form id=\"registro\" [formGroup]=\"registerForm\" (submit)=\"register($event)\">\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">NOMBRE</label>\r\n <input formControlName=\"firstName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Nombre\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">APELLIDO</label>\r\n <input formControlName=\"lastName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Apellido\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"\">CORREO ELECTRONICO</label>\r\n <input formControlName=\"email\" email required class=\"form-control rounded-0\" type=\"email\"\r\n placeholder=\"Correo electr\u00F3nico\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Contrase\u00F1a\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">REPETIR CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword2\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Repetir contrase\u00F1a\">\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2\">\r\n <input type=\"checkbox\" formControlName=\"terms\" required class=\"custom-control-input form-check-input\" name=\"Color2\"\r\n id=\"Color2\">\r\n <label class=\"custom-control-label ff-ubuntu-light font-sm form-check-label\" for=\"Color2\"> He\r\n le\u00EDdo y acepto las pol\u00EDticas de privacidad y los t\u00E9rminos y\r\n condiciones</label>\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4\">\r\n <input type=\"checkbox\" formControlName=\"newsletter\" class=\"custom-control-input form-check-input\" name=\"Color3\" id=\"Color3\">\r\n <label class=\"custom-control-label form-check-label ff-ubuntu-light font-sm\" for=\"Color3\">\r\n Suscripci\u00F3n al Newsletter</label>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <button [disabled]=\"registerForm.invalid\" type=\"submit\"\r\n class=\"btn btn-primary px-5 py-2 h-fit\">CREAR</button>\r\n </div>\r\n </div>\r\n </form>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n \r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1$4.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }] });
8547
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterFormEcComponent, isStandalone: true, selector: "app-register-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"w-100 pl-md-5 position-relative\" id=\"register\">\r\n <div class=\"py-2\">\r\n <h5>CREAR CUENTA</h5>\r\n </div>\r\n <form id=\"registro\" [formGroup]=\"registerForm\" (submit)=\"register($event)\">\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">NOMBRE</label>\r\n <input formControlName=\"firstName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Nombre\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">APELLIDO</label>\r\n <input formControlName=\"lastName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Apellido\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"\">CORREO ELECTRONICO</label>\r\n <input formControlName=\"email\" email required class=\"form-control rounded-0\" type=\"email\"\r\n placeholder=\"Correo electr\u00F3nico\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Contrase\u00F1a\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">REPETIR CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword2\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Repetir contrase\u00F1a\">\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2\">\r\n <input type=\"checkbox\" formControlName=\"terms\" required class=\"custom-control-input form-check-input\" name=\"Color2\"\r\n id=\"Color2\">\r\n <label class=\"custom-control-label ff-ubuntu-light font-sm form-check-label\" for=\"Color2\"> He\r\n le\u00EDdo y acepto las pol\u00EDticas de privacidad y los t\u00E9rminos y\r\n condiciones</label>\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4\">\r\n <input type=\"checkbox\" formControlName=\"newsletter\" class=\"custom-control-input form-check-input\" name=\"Color3\" id=\"Color3\">\r\n <label class=\"custom-control-label form-check-label ff-ubuntu-light font-sm\" for=\"Color3\">\r\n Suscripci\u00F3n al Newsletter</label>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <button [disabled]=\"registerForm.invalid\" type=\"submit\"\r\n class=\"btn btn-primary px-5 py-2 h-fit\">CREAR</button>\r\n </div>\r\n </div>\r\n </form>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n \r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1$3.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }] });
8812
8548
  }
8813
8549
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterFormEcComponent, decorators: [{
8814
8550
  type: Component,
@@ -8950,7 +8686,7 @@ class RegisterWholesalerFormEcComponent {
8950
8686
  this.form.controls['provinceName'].setValue(provinces.find((province) => province.code == value).name);
8951
8687
  };
8952
8688
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterWholesalerFormEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8953
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterWholesalerFormEcComponent, isStandalone: true, selector: "app-register-wholesaler-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"\">\r\n <div class=\"pt-5 pb-3 border-bottom\">\r\n <h3 class=\"my-auto mx-2 text-left w-fit bold text-beige1 white-space-md-nowrap\">CREAR CUENTA\r\n MAYORISTA</h3>\r\n </div>\r\n <div class=\" py-3\">\r\n <p>Si todavia no tienes una cuenta de grandes consumidores en nuestra plataforma, registrate\r\n ingresando estos\r\n datos:</p>\r\n </div>\r\n <form [formGroup]=\"form\" (submit)=\"register($event)\" class=\"position-relative\">\r\n <div class=\"row w-100 mx-auto d-flex justify-content-center px-0 py-3\">\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre\" required name=\"firstName\"\r\n formControlName=\"firstName\"\r\n [class]=\"form.controls['firstName'].touched ? (form.controls['firstName'].valid && form.controls['firstName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Apellidos</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Apellido\" required name=\"lastName\"\r\n formControlName=\"lastName\"\r\n [class]=\"form.controls['lastName'].touched ? (form.controls['lastName'].valid && form.controls['lastName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El apellido es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Email</label>\r\n <input type=\"email\" id=\"\" placeholder=\"Email\" email required name=\"email\"\r\n formControlName=\"email\"\r\n [class]=\"form.controls['email'].touched ? (form.controls['email'].valid && form.controls['email'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El email no posee un formato correcto.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Contrase\u00F1a</label>\r\n <input type=\"password\" id=\"\" placeholder=\"Contrase\u00F1a\" required name=\"plainPassword\"\r\n formControlName=\"plainPassword\"\r\n [class]=\"form.controls['plainPassword'].touched ? (form.controls['plainPassword'].valid && form.controls['plainPassword'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La contrase\u00F1a es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-type'|translate}}</label>\r\n <select name=\"documentType\" formControlName=\"documentType\" required\r\n [class]=\"form.controls['documentType'].touched ? (form.controls['documentType'].valid && form.controls['documentType'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectDocumentType\" disabled>Seleccione un tipo</option>\r\n @for (type of documentTypes; track $index) {\r\n <option [value]=\"type.code\">{{ type.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-number'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'document-number'|translate}}\" required\r\n name=\"documentNumber\" formControlName=\"documentNumber\"\r\n [class]=\"form.controls['documentNumber'].touched ? (form.controls['documentNumber'].valid && form.controls['documentNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n @if(countries$ | async; as countries ){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'country'|translate}}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" required (change)=\"onCountrySelected($event)\"\r\n [class]=\"form.controls['countryCode'].touched ? (form.controls['countryCode'].valid && form.controls['countryCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpPais\" disabled>Seleccione un pais</option>\r\n @for (country of countries; track $index) {\r\n <option [value]=\"country.code\"> {{ country.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'country-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n @if(provinces$ |async ; as provinces){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'state'|translate}}</label>\r\n <select name=\"provinceCode\" formControlName=\"provinceCode\" required (change)=\"onProvincesSelected($event, provinces)\"\r\n [class]=\"form.controls['provinceCode'].touched ? (form.controls['provinceCode'].valid && form.controls['provinceCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpProvincia\" disabled>Seleccione una provincia\r\n </option>\r\n @for (province of provinces; track $index) {\r\n <option [value]=\"province.code\">{{ province.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'state-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'address'|translate}}</label>\r\n <input placeholder=\"{{'address'|translate}}\" required type=\"text\" name=\"street\"\r\n formControlName=\"street\"\r\n [class]=\"form.controls['street'].touched ? (form.controls['street'].valid && form.controls['street'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'address-help1'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'town-city'|translate}}</label>\r\n <input placeholder=\"{{'town-city'|translate}}\" required type=\"text\" name=\"city\"\r\n formControlName=\"city\"\r\n [class]=\"form.controls['city'].touched ? (form.controls['city'].valid && form.controls['city'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'postal-code'|translate}}</label>\r\n <input placeholder=\"{{'postal-code'|translate}}\" required type=\"text\" name=\"postcode\"\r\n formControlName=\"postcode\"\r\n [class]=\"form.controls['postcode'].touched ? (form.controls['postcode'].valid && form.controls['postcode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre compa\u00F1\u00EDa</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre compa\u00F1\u00EDa\" required name=\"companyName\"\r\n formControlName=\"companyName\"\r\n [class]=\"form.controls['companyName'].touched ? (form.controls['companyName'].valid && form.controls['companyName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre compa\u00F1\u00EDa es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'phone'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'phone'|translate}}\" required name=\"phoneNumber\"\r\n formControlName=\"phoneNumber\"\r\n [class]=\"form.controls['phoneNumber'].touched ? (form.controls['phoneNumber'].valid && form.controls['phoneNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El numero de telefono es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Sexo</label>\r\n <select required name=\"gender\" formControlName=\"gender\"\r\n [class]=\"form.controls['gender'].touched ? (form.controls['gender'].valid && form.controls['gender'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option value=\"null\" id=\"selectOpSexo\">Sexo</option>\r\n <option value=\"u\">Desconocido</option>\r\n <option value=\"s\">Femenino</option>\r\n <option value=\"m\">Masculino</option>\r\n </select>\r\n <span class=\"invalid-feedback\">El sexo es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Fecha creacion</label>\r\n <input type=\"date\" id=\"\" placeholder=\"Fecha creacion\" required name=\"birthday\"\r\n formControlName=\"birthday\"\r\n [class]=\"form.controls['birthday'].touched ? (form.controls['birthday'].valid && form.controls['birthday'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La fecha de creacion es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Identificacion</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Identificacion\" required name=\"taxIdentification\"\r\n formControlName=\"taxIdentification\"\r\n [class]=\"form.controls['taxIdentification'].touched ? (form.controls['taxIdentification'].valid && form.controls['taxIdentification'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La identificacion de la compa\u00F1\u00EDa es un campo\r\n obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1 \">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"terms\" name=\"terms\"\r\n formControlName=\"terms\" type=\"checkbox\">\r\n <label for=\"terms\" class=\"form-check-label\">Acepto los <a\r\n [routerLink]=\"['/section/terminos-y-condiciones']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary\">t\u00E9rminos y\r\n condiciones *</a></label>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1\">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\"\r\n name=\"subscribedToNewsletter\" formControlName=\"subscribedToNewsletter\"\r\n type=\"checkbox\">\r\n <label class=\"form-check-label\" for=\"defaultCheck2\">\r\n Suscripci\u00F3n al newsletter\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"col-12 col-md-6 px-0 py-4 pr-md-1 d-flex justify-content-md-start order-2 order-md-1\">\r\n\r\n <button type=\"submit\" role=\"button\" [disabled]=\"form.invalid\"\r\n class=\"btn btn-primary rounded-0 px-5 py-2 w-100 w-md-auto h-fit\">REGISTRATE</button>\r\n </div>\r\n\r\n </div>\r\n <pre>{{form.value | json}}</pre>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
8689
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterWholesalerFormEcComponent, isStandalone: true, selector: "app-register-wholesaler-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"\">\r\n <div class=\"pt-5 pb-3 border-bottom\">\r\n <h3 class=\"my-auto mx-2 text-left w-fit bold text-beige1 white-space-md-nowrap\">CREAR CUENTA\r\n MAYORISTA</h3>\r\n </div>\r\n <div class=\" py-3\">\r\n <p>Si todavia no tienes una cuenta de grandes consumidores en nuestra plataforma, registrate\r\n ingresando estos\r\n datos:</p>\r\n </div>\r\n <form [formGroup]=\"form\" (submit)=\"register($event)\" class=\"position-relative\">\r\n <div class=\"row w-100 mx-auto d-flex justify-content-center px-0 py-3\">\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre\" required name=\"firstName\"\r\n formControlName=\"firstName\"\r\n [class]=\"form.controls['firstName'].touched ? (form.controls['firstName'].valid && form.controls['firstName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Apellidos</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Apellido\" required name=\"lastName\"\r\n formControlName=\"lastName\"\r\n [class]=\"form.controls['lastName'].touched ? (form.controls['lastName'].valid && form.controls['lastName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El apellido es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Email</label>\r\n <input type=\"email\" id=\"\" placeholder=\"Email\" email required name=\"email\"\r\n formControlName=\"email\"\r\n [class]=\"form.controls['email'].touched ? (form.controls['email'].valid && form.controls['email'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El email no posee un formato correcto.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Contrase\u00F1a</label>\r\n <input type=\"password\" id=\"\" placeholder=\"Contrase\u00F1a\" required name=\"plainPassword\"\r\n formControlName=\"plainPassword\"\r\n [class]=\"form.controls['plainPassword'].touched ? (form.controls['plainPassword'].valid && form.controls['plainPassword'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La contrase\u00F1a es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-type'|translate}}</label>\r\n <select name=\"documentType\" formControlName=\"documentType\" required\r\n [class]=\"form.controls['documentType'].touched ? (form.controls['documentType'].valid && form.controls['documentType'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectDocumentType\" disabled>Seleccione un tipo</option>\r\n @for (type of documentTypes; track $index) {\r\n <option [value]=\"type.code\">{{ type.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-number'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'document-number'|translate}}\" required\r\n name=\"documentNumber\" formControlName=\"documentNumber\"\r\n [class]=\"form.controls['documentNumber'].touched ? (form.controls['documentNumber'].valid && form.controls['documentNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n @if(countries$ | async; as countries ){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'country'|translate}}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" required (change)=\"onCountrySelected($event)\"\r\n [class]=\"form.controls['countryCode'].touched ? (form.controls['countryCode'].valid && form.controls['countryCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpPais\" disabled>Seleccione un pais</option>\r\n @for (country of countries; track $index) {\r\n <option [value]=\"country.code\"> {{ country.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'country-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n @if(provinces$ |async ; as provinces){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'state'|translate}}</label>\r\n <select name=\"provinceCode\" formControlName=\"provinceCode\" required (change)=\"onProvincesSelected($event, provinces)\"\r\n [class]=\"form.controls['provinceCode'].touched ? (form.controls['provinceCode'].valid && form.controls['provinceCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpProvincia\" disabled>Seleccione una provincia\r\n </option>\r\n @for (province of provinces; track $index) {\r\n <option [value]=\"province.code\">{{ province.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'state-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'address'|translate}}</label>\r\n <input placeholder=\"{{'address'|translate}}\" required type=\"text\" name=\"street\"\r\n formControlName=\"street\"\r\n [class]=\"form.controls['street'].touched ? (form.controls['street'].valid && form.controls['street'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'address-help1'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'town-city'|translate}}</label>\r\n <input placeholder=\"{{'town-city'|translate}}\" required type=\"text\" name=\"city\"\r\n formControlName=\"city\"\r\n [class]=\"form.controls['city'].touched ? (form.controls['city'].valid && form.controls['city'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'postal-code'|translate}}</label>\r\n <input placeholder=\"{{'postal-code'|translate}}\" required type=\"text\" name=\"postcode\"\r\n formControlName=\"postcode\"\r\n [class]=\"form.controls['postcode'].touched ? (form.controls['postcode'].valid && form.controls['postcode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre compa\u00F1\u00EDa</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre compa\u00F1\u00EDa\" required name=\"companyName\"\r\n formControlName=\"companyName\"\r\n [class]=\"form.controls['companyName'].touched ? (form.controls['companyName'].valid && form.controls['companyName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre compa\u00F1\u00EDa es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'phone'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'phone'|translate}}\" required name=\"phoneNumber\"\r\n formControlName=\"phoneNumber\"\r\n [class]=\"form.controls['phoneNumber'].touched ? (form.controls['phoneNumber'].valid && form.controls['phoneNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El numero de telefono es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Sexo</label>\r\n <select required name=\"gender\" formControlName=\"gender\"\r\n [class]=\"form.controls['gender'].touched ? (form.controls['gender'].valid && form.controls['gender'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option value=\"null\" id=\"selectOpSexo\">Sexo</option>\r\n <option value=\"u\">Desconocido</option>\r\n <option value=\"s\">Femenino</option>\r\n <option value=\"m\">Masculino</option>\r\n </select>\r\n <span class=\"invalid-feedback\">El sexo es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Fecha creacion</label>\r\n <input type=\"date\" id=\"\" placeholder=\"Fecha creacion\" required name=\"birthday\"\r\n formControlName=\"birthday\"\r\n [class]=\"form.controls['birthday'].touched ? (form.controls['birthday'].valid && form.controls['birthday'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La fecha de creacion es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Identificacion</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Identificacion\" required name=\"taxIdentification\"\r\n formControlName=\"taxIdentification\"\r\n [class]=\"form.controls['taxIdentification'].touched ? (form.controls['taxIdentification'].valid && form.controls['taxIdentification'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La identificacion de la compa\u00F1\u00EDa es un campo\r\n obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1 \">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"terms\" name=\"terms\"\r\n formControlName=\"terms\" type=\"checkbox\">\r\n <label for=\"terms\" class=\"form-check-label\">Acepto los <a\r\n [routerLink]=\"['/section/terminos-y-condiciones']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary\">t\u00E9rminos y\r\n condiciones *</a></label>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1\">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\"\r\n name=\"subscribedToNewsletter\" formControlName=\"subscribedToNewsletter\"\r\n type=\"checkbox\">\r\n <label class=\"form-check-label\" for=\"defaultCheck2\">\r\n Suscripci\u00F3n al newsletter\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"col-12 col-md-6 px-0 py-4 pr-md-1 d-flex justify-content-md-start order-2 order-md-1\">\r\n\r\n <button type=\"submit\" role=\"button\" [disabled]=\"form.invalid\"\r\n class=\"btn btn-primary rounded-0 px-5 py-2 w-100 w-md-auto h-fit\">REGISTRATE</button>\r\n </div>\r\n\r\n </div>\r\n <pre>{{form.value | json}}</pre>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
8954
8690
  }
8955
8691
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterWholesalerFormEcComponent, decorators: [{
8956
8692
  type: Component,
@@ -9048,13 +8784,13 @@ class PasswordResetEcComponent extends ComponentHelper {
9048
8784
  showIcon?.classList.toggle('d-none');
9049
8785
  hideIcon?.classList.toggle('d-none');
9050
8786
  };
9051
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordResetEcComponent, deps: [{ token: AuthService }, { token: ToastService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1$4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
9052
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PasswordResetEcComponent, isStandalone: true, selector: "app-password-reset-ec", usesInheritance: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row justify-content-center py-5\">\r\n <div class=\"col-12 col-md-6 col-lg-4\">\r\n @if(!ready){\r\n <form [formGroup]=\"formGroup\" (submit)=\"sendNewPassword($event)\">\r\n <div class=\"mb-4 text-center\">\r\n <h3>{{ 'set-new-password' | translate }}</h3>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'set-password' | translate }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"password\" formControlName=\"first\" class=\"form-control\" id=\"contrase\u00F1a1\" />\r\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword()\">\r\n <i id=\"show1\" class=\"fas fa-eye i-show-password\"></i>\r\n <i id=\"hide1\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'repeat-password' | translate }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"password\" formControlName=\"second\" class=\"form-control\" id=\"contrase\u00F1a2\" />\r\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword2()\">\r\n <i id=\"show2\" class=\"fas fa-eye i-show-password\"></i>\r\n <i id=\"hide2\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mt-4 text-center\">\r\n <button type=\"submit\" class=\"comprar w-100\">{{ 'update' | translate }}</button>\r\n </div>\r\n @if(loading){\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n }\r\n </form>\r\n }@else {<div class=\"row justify-content-center mt-5 mb-5\">\r\n <div class=\"text-center\">\r\n <div class=\"mb-4\">\r\n <h3>{{ 'updated-password' | translate }}</h3>\r\n </div>\r\n <div class=\"mb-4\">\r\n <h5>{{ 'updated-password-detail' | translate }}</h5>\r\n </div>\r\n <button class=\"comprar\" (click)=\"sendToLogin()\">{{ 'login' | translate }}</button>\r\n </div>\r\n </div>}\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "component", type: LoadingInlineEcComponent, selector: "app-loading-inline-ec", inputs: ["type"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
8787
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordResetEcComponent, deps: [{ token: AuthService }, { token: ToastService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
8788
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PasswordResetEcComponent, isStandalone: true, selector: "app-password-reset-ec", usesInheritance: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row justify-content-center py-5\">\r\n <div class=\"col-12 col-md-6 col-lg-4\">\r\n @if(!ready){\r\n <form [formGroup]=\"formGroup\" (submit)=\"sendNewPassword($event)\">\r\n <div class=\"mb-4 text-center\">\r\n <h3>{{ 'set-new-password' | translate }}</h3>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'set-password' | translate }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"password\" formControlName=\"first\" class=\"form-control\" id=\"contrase\u00F1a1\" />\r\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword()\">\r\n <i id=\"show1\" class=\"fas fa-eye i-show-password\"></i>\r\n <i id=\"hide1\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'repeat-password' | translate }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"password\" formControlName=\"second\" class=\"form-control\" id=\"contrase\u00F1a2\" />\r\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword2()\">\r\n <i id=\"show2\" class=\"fas fa-eye i-show-password\"></i>\r\n <i id=\"hide2\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mt-4 text-center\">\r\n <button type=\"submit\" class=\"comprar w-100\">{{ 'update' | translate }}</button>\r\n </div>\r\n @if(loading){\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n }\r\n </form>\r\n }@else {<div class=\"row justify-content-center mt-5 mb-5\">\r\n <div class=\"text-center\">\r\n <div class=\"mb-4\">\r\n <h3>{{ 'updated-password' | translate }}</h3>\r\n </div>\r\n <div class=\"mb-4\">\r\n <h5>{{ 'updated-password-detail' | translate }}</h5>\r\n </div>\r\n <button class=\"comprar\" (click)=\"sendToLogin()\">{{ 'login' | translate }}</button>\r\n </div>\r\n </div>}\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: LoadingInlineEcComponent, selector: "app-loading-inline-ec", inputs: ["type"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
9053
8789
  }
9054
8790
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordResetEcComponent, decorators: [{
9055
8791
  type: Component,
9056
8792
  args: [{ selector: 'app-password-reset-ec', imports: [TranslateModule, LoadingInlineEcComponent, ReactiveFormsModule], standalone: true, template: "<div class=\"container\">\r\n <div class=\"row justify-content-center py-5\">\r\n <div class=\"col-12 col-md-6 col-lg-4\">\r\n @if(!ready){\r\n <form [formGroup]=\"formGroup\" (submit)=\"sendNewPassword($event)\">\r\n <div class=\"mb-4 text-center\">\r\n <h3>{{ 'set-new-password' | translate }}</h3>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'set-password' | translate }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"password\" formControlName=\"first\" class=\"form-control\" id=\"contrase\u00F1a1\" />\r\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword()\">\r\n <i id=\"show1\" class=\"fas fa-eye i-show-password\"></i>\r\n <i id=\"hide1\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'repeat-password' | translate }}</label>\r\n <div class=\"input-group\">\r\n <input type=\"password\" formControlName=\"second\" class=\"form-control\" id=\"contrase\u00F1a2\" />\r\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword2()\">\r\n <i id=\"show2\" class=\"fas fa-eye i-show-password\"></i>\r\n <i id=\"hide2\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mt-4 text-center\">\r\n <button type=\"submit\" class=\"comprar w-100\">{{ 'update' | translate }}</button>\r\n </div>\r\n @if(loading){\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n }\r\n </form>\r\n }@else {<div class=\"row justify-content-center mt-5 mb-5\">\r\n <div class=\"text-center\">\r\n <div class=\"mb-4\">\r\n <h3>{{ 'updated-password' | translate }}</h3>\r\n </div>\r\n <div class=\"mb-4\">\r\n <h5>{{ 'updated-password-detail' | translate }}</h5>\r\n </div>\r\n <button class=\"comprar\" (click)=\"sendToLogin()\">{{ 'login' | translate }}</button>\r\n </div>\r\n </div>}\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n</div>" }]
9057
- }], ctorParameters: () => [{ type: AuthService }, { type: ToastService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i1$4.FormBuilder }] });
8793
+ }], ctorParameters: () => [{ type: AuthService }, { type: ToastService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i1$3.FormBuilder }] });
9058
8794
 
9059
8795
  class FiltersEcComponent {
9060
8796
  _authService = inject(AuthService);
@@ -9227,7 +8963,7 @@ class VariantsEcComponent {
9227
8963
  return products[index].stock;
9228
8964
  }
9229
8965
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VariantsEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9230
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: VariantsEcComponent, isStandalone: true, selector: "app-variants-ec", inputs: { setImages: "setImages", product: "product" }, ngImport: i0, template: "@if(options$ | async; as options){\r\n@if(options && options.length ){\r\n@for(option of options; track $index){\r\n\r\n@switch (option.type) {\r\n@case ('color') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3 mb-3\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <a role=\"button\" (click)=\"setValuesImages(value.name, option.code) && setOption(option.code, value.name)\"\r\n [class]=\"'rounded-circle color-item m-1 ' + (value.selected ? 'shadow' : '')\" [id]=\"x + value.name\"\r\n [style.border]=\"'1px solid black'\"\r\n [style.background]=\"value.image && (value.image.endsWith('.jpg') || value.image.endsWith('.png') || value.image.endsWith('.svg')) ? 'url(' + this.consts.mediaUrl(value.image) + ')' : '#' + value.name\"\r\n [style.background-size]=\"'cover'\" [style.background-repeat]=\"'no-repeat'\" [style.background-position]=\"'center'\"\r\n [style.box-shadow]=\"(value.selected ? '0px 0px 0px 2px #000' : 'none')\"></a>\r\n }\r\n</div>\r\n}\r\n}\r\n@case ('size') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3\">\r\n <div class=\"btn-group ps-0\">\r\n <a class=\"btn btn-light dropdown-toggle cursor-pointer border border-1 d-flex flex-row justify-content-between align-items-center\"\r\n data-bs-toggle=\"dropdown\" aria-expanded=\"false\"> {{ itemSelected ? itemSelected :\r\n getValueSelect(option.values)}}</a>\r\n <ul class=\"dropdown-menu\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <li [class]=\" (value.selected ? 'selected-size' : 'unselected-size')\">\r\n <a [class]=\"'dropdown-item cursor-pointer '+ (value.selected ? 'text-light' : '')\"\r\n (click)=\"chosenOption(option.code, value.name)\">{{ value.name }}</a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n</div>\r\n}\r\n}\r\n@default {\r\n\r\n}\r\n}\r\n}\r\n}\r\n}", styles: [".circle{width:32px;height:32px;border-radius:50%}.shadow{border:1px solid #000}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.UpperCasePipe, name: "uppercase" }] });
8966
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: VariantsEcComponent, isStandalone: true, selector: "app-variants-ec", inputs: { setImages: "setImages", product: "product" }, ngImport: i0, template: "@if(options$ | async; as options){\r\n@if(options && options.length ){\r\n@for(option of options; track $index){\r\n\r\n@switch (option.type) {\r\n@case ('color') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3 mb-3\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <a role=\"button\" (click)=\"setValuesImages(value.name, option.code) && setOption(option.code, value.name)\"\r\n [class]=\"'rounded-circle color-item m-1 ' + (value.selected ? 'shadow' : '')\" [id]=\"x + value.name\"\r\n [style.border]=\"'1px solid black'\"\r\n [style.background]=\"value.image && (value.image.endsWith('.jpg') || value.image.endsWith('.png') || value.image.endsWith('.svg')) ? 'url(' + this.consts.mediaUrl(value.image) + ')' : '#' + value.name\"\r\n [style.background-size]=\"'cover'\" [style.background-repeat]=\"'no-repeat'\" [style.background-position]=\"'center'\"\r\n [style.box-shadow]=\"(value.selected ? '0px 0px 0px 2px #000' : 'none')\"></a>\r\n }\r\n</div>\r\n}\r\n}\r\n@case ('size') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3\">\r\n <div class=\"btn-group ps-0\">\r\n <a class=\"btn btn-light dropdown-toggle cursor-pointer border border-1 d-flex flex-row justify-content-between align-items-center\"\r\n data-bs-toggle=\"dropdown\" aria-expanded=\"false\"> {{ itemSelected ? itemSelected :\r\n getValueSelect(option.values)}}</a>\r\n <ul class=\"dropdown-menu\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <li [class]=\" (value.selected ? 'selected-size' : 'unselected-size')\">\r\n <a [class]=\"'dropdown-item cursor-pointer '+ (value.selected ? 'text-light' : '')\"\r\n (click)=\"chosenOption(option.code, value.name)\">{{ value.name }}</a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n</div>\r\n}\r\n}\r\n@default {\r\n\r\n}\r\n}\r\n}\r\n}\r\n}", styles: [".circle{width:32px;height:32px;border-radius:50%}.shadow{border:1px solid #000}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] });
9231
8967
  }
9232
8968
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VariantsEcComponent, decorators: [{
9233
8969
  type: Component,
@@ -9455,7 +9191,7 @@ class BreadcrumbEcComponent {
9455
9191
  return this._optionsService.getBreadcrumbByFilters(filters);
9456
9192
  }
9457
9193
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9458
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BreadcrumbEcComponent, isStandalone: true, selector: "app-breadcrumb-ec", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item\"><a routerLink=\"/home\">Home</a></li>\r\n @for (crumb of breadcrumb; track $index) {\r\n @if(breadcrumb.length === $index+1){\r\n <li class=\"breadcrumb-item active\" aria-current=\"page\">\r\n {{\r\n crumb.title | translate | titlecase\r\n }}\r\n </li>\r\n }@else {\r\n <li class=\"breadcrumb-item\">\r\n <a [routerLink]=\"'/'+crumb.path\">{{\r\n crumb.title | translate | titlecase\r\n }}</a>\r\n </li>\r\n }\r\n }\r\n </ol>\r\n</nav>", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
9194
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BreadcrumbEcComponent, isStandalone: true, selector: "app-breadcrumb-ec", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item\"><a routerLink=\"/home\">Home</a></li>\r\n @for (crumb of breadcrumb; track $index) {\r\n @if(breadcrumb.length === $index+1){\r\n <li class=\"breadcrumb-item active\" aria-current=\"page\">\r\n {{\r\n crumb.title | translate | titlecase\r\n }}\r\n </li>\r\n }@else {\r\n <li class=\"breadcrumb-item\">\r\n <a [routerLink]=\"'/'+crumb.path\">{{\r\n crumb.title | translate | titlecase\r\n }}</a>\r\n </li>\r\n }\r\n }\r\n </ol>\r\n</nav>", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
9459
9195
  }
9460
9196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbEcComponent, decorators: [{
9461
9197
  type: Component,
@@ -9544,7 +9280,7 @@ class EcSafeHtmlPipe {
9544
9280
  return '';
9545
9281
  return this.sanitizer.bypassSecurityTrustHtml(value);
9546
9282
  }
9547
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EcSafeHtmlPipe, deps: [{ token: i1$5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
9283
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EcSafeHtmlPipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
9548
9284
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: EcSafeHtmlPipe, isStandalone: true, name: "ecSafeHtml" });
9549
9285
  }
9550
9286
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EcSafeHtmlPipe, decorators: [{
@@ -9553,7 +9289,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
9553
9289
  name: 'ecSafeHtml',
9554
9290
  standalone: true
9555
9291
  }]
9556
- }], ctorParameters: () => [{ type: i1$5.DomSanitizer }] });
9292
+ }], ctorParameters: () => [{ type: i1$4.DomSanitizer }] });
9557
9293
 
9558
9294
  class CartItemEcComponent {
9559
9295
  item;
@@ -9572,28 +9308,56 @@ class CartItemEcComponent {
9572
9308
  // console.log(this.item, this.mediaUrl);
9573
9309
  }
9574
9310
  updateQuantity(stock) {
9311
+ const originalQuantity = this.item.quantity; // Guardar cantidad original
9575
9312
  if (this.quantity > 0 && this.quantity <= stock) {
9576
- this._cartService.updateItemQuantity(this.item, this.quantity);
9313
+ const success = this._cartService.updateItemQuantity(this.item, this.quantity);
9314
+ // Si la validación falló, restaurar la cantidad original
9315
+ if (!success) {
9316
+ this.quantity = originalQuantity;
9317
+ }
9577
9318
  }
9578
9319
  else {
9579
- this.quantity = this.item.quantity;
9320
+ // Restaurar cantidad original si está fuera de rango
9321
+ this.quantity = originalQuantity;
9580
9322
  this._toastService.show('out-of-stock-actually');
9581
9323
  }
9582
9324
  }
9583
- less(stock, value = 1) {
9325
+ plus(stock, value = 1) {
9584
9326
  if (this.isQuantityUpdating)
9585
9327
  return;
9586
9328
  this.isQuantityUpdating = true;
9587
- let quantity = this.item.quantity - value;
9588
- quantity > 0 && quantity <= stock ? this._cartService.updateItemQuantity(this.item, quantity) : this._toastService.show('out-of-stock-actually');
9329
+ let newQuantity = Number(this.quantity) + value; // Forzar a número
9330
+ // Verificar stock ANTES de llamar al servicio
9331
+ if (newQuantity > stock) {
9332
+ this._toastService.show('out-of-stock-actually');
9333
+ setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
9334
+ return;
9335
+ }
9336
+ const success = this._cartService.updateItemQuantity(this.item, newQuantity);
9337
+ // Solo actualizar el input si la operación fue exitosa
9338
+ if (success) {
9339
+ this.quantity = newQuantity;
9340
+ }
9341
+ // Si success es false, NO mostrar mensaje aquí porque ya lo mostró validateQuantity()
9589
9342
  setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
9590
9343
  }
9591
- plus(stock, value = 1) {
9344
+ less(stock, value = 1) {
9592
9345
  if (this.isQuantityUpdating)
9593
9346
  return;
9594
9347
  this.isQuantityUpdating = true;
9595
- let quantity = this.item.quantity + value;
9596
- quantity > 0 && quantity <= stock ? this._cartService.updateItemQuantity(this.item, quantity) : this._toastService.show('out-of-stock-actually');
9348
+ let newQuantity = Number(this.quantity) - value; // Forzar a número
9349
+ // Verificar cantidad mínima ANTES de llamar al servicio
9350
+ if (newQuantity <= 0) {
9351
+ // No permitir cantidades menores o iguales a 0
9352
+ setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
9353
+ return;
9354
+ }
9355
+ const success = this._cartService.updateItemQuantity(this.item, newQuantity);
9356
+ // Solo actualizar el input si la operación fue exitosa
9357
+ if (success) {
9358
+ this.quantity = newQuantity;
9359
+ }
9360
+ // Si success es false, NO mostrar mensaje aquí porque ya lo mostró validateQuantity()
9597
9361
  setTimeout(() => { this.isQuantityUpdating = false; }, 1000);
9598
9362
  }
9599
9363
  deleteCartItem() {
@@ -9652,7 +9416,7 @@ class CartItemEcComponent {
9652
9416
  parameters$ = this.parametersService.getParameters();
9653
9417
  hasParams = this.parametersService.hasParams;
9654
9418
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartItemEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9655
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CartItemEcComponent, isStandalone: true, selector: "app-cart-item-ec", inputs: { item: "item", inSidebar: "inSidebar" }, ngImport: i0, template: "@if(!inSidebar){\r\n<p>cart-item-ec works!</p>\r\n}@else{\r\n\r\n<div class=\"row\">\r\n <div class=\"col-3\">\r\n @let product= item.product;\r\n @if(item.variant_id && product.variants.length>0){\r\n <img [src]=\"mediaUrl + product.variants[0].images[0]\" alt=\"\" class=\"img-fluid\">\r\n }@else{\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"\" class=\"img-fluid\">\r\n }\r\n </div>\r\n <div class=\"col-7\">\r\n <div class=\"info d-flex flex-column align-items-start\">\r\n @if (item.product.special_mark?.length > 0 || item.product.saleprice) {\r\n <div class=\"marcas\">\r\n <img [src]=\"mediaUrl + (item.product.special_mark?.[0]?.images[0] || '')\" alt=\"\">\r\n\r\n @if (item.product.saleprice) {\r\n <div class=\"tag-dsc\">\r\n {{\r\n createDiscountMessage(item.product.saleprice,\r\n item.product.price)\r\n }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n <a class=\"title text-dark text-decoration-none m-0 p-0 h6 mb-0\"\r\n [routerLink]=\"['/product', item.variant_id]\">{{\r\n item.product.name | titlecase\r\n }}</a>\r\n <div class=\"qty1\">\r\n <span>{{ item.product.id}}</span>\r\n </div>\r\n <div class=\"price h6 fw-bold mb-0 pb-0\">{{ item.product.price | ecCurrencySymbol\r\n }}</div>\r\n @if(getVariants(item); as options){\r\n <div class=\"d-flex align-items-center p-0\">\r\n @for(option of options; track $index){\r\n <span class=\"me-1\"> {{option.name | titlecase}}:</span>\r\n @if(option.name == 'COLOR'){\r\n <div class=\"p-2 rounded\" [style.background]=\"'#' + option.value\"></div>\r\n }@else{\r\n <b>{{option.value}}</b>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"campoCantidad mt-2\">\r\n <div class=\"numero\">\r\n <button (click)=\"less(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\r\n </button>\r\n <input type=\"text\" class=\"form-control text-center\" placeholder=\"\"\r\n aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\"\r\n [value]=\"item.quantity\" min=\"1\" step=\"1\" [(ngModel)]=\"quantity\"\r\n (change)=\"updateQuantity(item.product.variants[0]?.stock)\">\r\n <button (click)=\"plus(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-2\">\r\n <a (click)=\"deleteCartItem()\" class=\"btn botBorrar\"><i class=\"fa fa-trash\" aria-hidden=\"true\"></i></a>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
9419
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CartItemEcComponent, isStandalone: true, selector: "app-cart-item-ec", inputs: { item: "item", inSidebar: "inSidebar" }, ngImport: i0, template: "@if(!inSidebar){\r\n<p>cart-item-ec works!</p>\r\n}@else{\r\n\r\n<div class=\"row\">\r\n <div class=\"col-3\">\r\n @let product= item.product;\r\n @if(item.variant_id && product.variants.length>0){\r\n <img [src]=\"mediaUrl + product.variants[0].images[0]\" alt=\"\" class=\"img-fluid\">\r\n }@else{\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"\" class=\"img-fluid\">\r\n }\r\n </div>\r\n <div class=\"col-7\">\r\n <div class=\"info d-flex flex-column align-items-start\">\r\n @if (item.product.special_mark?.length > 0 || item.product.saleprice) {\r\n <div class=\"marcas\">\r\n <img [src]=\"mediaUrl + (item.product.special_mark?.[0]?.images[0] || '')\" alt=\"\">\r\n\r\n @if (item.product.saleprice) {\r\n <div class=\"tag-dsc\">\r\n {{\r\n createDiscountMessage(item.product.saleprice,\r\n item.product.price)\r\n }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n <a class=\"title text-dark text-decoration-none m-0 p-0 h6 mb-0\"\r\n [routerLink]=\"['/product', item.variant_id]\">{{\r\n item.product.name | titlecase\r\n }}</a>\r\n <div class=\"qty1\">\r\n <span>{{ item.product.id}}</span>\r\n </div>\r\n <div class=\"price h6 fw-bold mb-0 pb-0\">{{ item.product.price | ecCurrencySymbol\r\n }}</div>\r\n @if(getVariants(item); as options){\r\n <div class=\"d-flex align-items-center p-0\">\r\n @for(option of options; track $index){\r\n <span class=\"me-1\"> {{option.name | titlecase}}:</span>\r\n @if(option.name == 'COLOR'){\r\n <div class=\"p-2 rounded\" [style.background]=\"'#' + option.value\"></div>\r\n }@else{\r\n <b>{{option.value}}</b>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"campoCantidad mt-2\">\r\n <div class=\"numero\">\r\n <button (click)=\"less(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\r\n </button>\r\n <input type=\"text\" class=\"form-control text-center\" placeholder=\"\"\r\n aria-label=\"Example text with button addon\" aria-describedby=\"button-addon1\"\r\n [value]=\"item.quantity\" min=\"1\" step=\"1\" [(ngModel)]=\"quantity\"\r\n (change)=\"updateQuantity(item.product.variants[0]?.stock)\">\r\n <button (click)=\"plus(item.product.variants[0]?.stock)\" class=\"btn btn-outline-secondary\"\r\n type=\"button\" id=\"button-addon1\">\r\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-2\">\r\n <a (click)=\"deleteCartItem()\" class=\"btn botBorrar\"><i class=\"fa fa-trash\" aria-hidden=\"true\"></i></a>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
9656
9420
  }
9657
9421
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartItemEcComponent, decorators: [{
9658
9422
  type: Component,
@@ -9688,7 +9452,7 @@ class CouponEcComponent {
9688
9452
  }
9689
9453
  setLoading = () => this.loading = true;
9690
9454
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CouponEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9691
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CouponEcComponent, isStandalone: true, selector: "app-coupon-ec", ngImport: i0, template: "<div class=\"border border-bottom card p-2\">\r\n <p class=\"w-100 mb-1\">C\u00F3digo de descuento</p>\r\n \r\n @if(coupon$ | async; as coupon){\r\n <div class=\"d-flex justify-content-between align-items-center px-1\">\r\n <p class=\"m-0\">{{coupon.code}}</p>\r\n <button class=\"btn\" (click)=\"removeCoupon()\"><i class=\"bi bi-trash\"></i></button>\r\n </div>\r\n }@else {\r\n <form class=\"campo d-flex align-items-center\">\r\n <input type='text' class=\"elcampo\" [(ngModel)]=\"couponValue\" name=\"coupon_value\" />\r\n <input type='button' value='VALIDAR' class=\"btn btn-primary btnSend py-1\"\r\n (click)=\" addCoupon()\" />\r\n </form> \r\n }\r\n</div>", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
9455
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CouponEcComponent, isStandalone: true, selector: "app-coupon-ec", ngImport: i0, template: "<div class=\"border border-bottom card p-2\">\r\n <p class=\"w-100 mb-1\">C\u00F3digo de descuento</p>\r\n \r\n @if(coupon$ | async; as coupon){\r\n <div class=\"d-flex justify-content-between align-items-center px-1\">\r\n <p class=\"m-0\">{{coupon.code}}</p>\r\n <button class=\"btn\" (click)=\"removeCoupon()\"><i class=\"bi bi-trash\"></i></button>\r\n </div>\r\n }@else {\r\n <form class=\"campo d-flex align-items-center\">\r\n <input type='text' class=\"elcampo\" [(ngModel)]=\"couponValue\" name=\"coupon_value\" />\r\n <input type='button' value='VALIDAR' class=\"btn btn-primary btnSend py-1\"\r\n (click)=\" addCoupon()\" />\r\n </form> \r\n }\r\n</div>", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
9692
9456
  }
9693
9457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CouponEcComponent, decorators: [{
9694
9458
  type: Component,
@@ -10003,7 +9767,7 @@ class DataformEcComponent {
10003
9767
  this._checkoutService.next();
10004
9768
  }
10005
9769
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataformEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10006
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DataformEcComponent, isStandalone: true, selector: "app-dataform-ec", ngImport: i0, template: "@if(channel$ | async; as channelConfig){\r\n@if(channelConfig.channelType != 'b2b' || (channelConfig.channelType == 'b2b' && isAuthenticated())){\r\n@if( modeSelectAddress == 'LOAD_ADDRESS_AND_SELECTION' && isAuthenticated() && this.addressBook != null){\r\n<!--Selector de modos-->\r\n<div class=\"container card p-4 mb-3\">\r\n <div class=\"row justify-content-center\">\r\n <div class=\"col-12 col-md-10 col-lg-8 text-center\">\r\n <div class=\"btn-group btn-group-toggle\" data-bs-toggle=\"buttons\">\r\n <label [class]=\"'btn btn-outline-secondary ' + (!getMode() ? 'active' : '')\">\r\n <input type=\"radio\" name=\"options\" id=\"option1\" autocomplete=\"off\" checked\r\n (change)=\"setMode('seleccion')\"> {{'select-address' | translate | titlecase}}\r\n </label>\r\n @if(!getParamByChannelAndLanguage('btn_new_address_')){\r\n <label [class]=\"'btn btn-outline-secondary ' + (getMode() ? 'active' : '')\">\r\n <input type=\"radio\" name=\"options\" id=\"option2\" autocomplete=\"off\" (change)=\"setMode('carga')\">\r\n {{ 'new-address' | translate | titlecase}}\r\n </label>\r\n }\r\n @if(getParamByChannelAndLanguage('btn_new_address_'); as param){\r\n <label [class]=\"'btn btn-outline-secondary ' + (selectAddress ? 'active' : '')\">\r\n <input type=\"radio\" name=\"options\" id=\"option2\" autocomplete=\"off\" (change)=\"setMode('carga')\">\r\n {{ param.value}}\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n\r\n@if(getMode()){\r\n@if(!require_login){\r\n<div>\r\n @if(modeSelectAddress == 'ONLY_LOAD_ADDRESS'){\r\n <div class=\"checkout-title my-2\">\r\n <h3>{{'billing-details'|translate}}</h3>\r\n </div>\r\n }\r\n <!--Formulario-->\r\n <form [formGroup]=\"checkoutForm\" (submit)=\"verifyValidate($event)\"> <!-- //this.cartService.items -->\r\n <div class=\"row mt-2\"><!--Fila 1-->\r\n\r\n @if(getTypeForm().viewForms.firstName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <!--Si es required-->\r\n <label class=\"form-label\">{{'first-name'|translate}}\r\n @if(getTypeForm().viewForms.firstName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <!--Input-->\r\n <input class=\"form-control\" type=\"text\" name=\"firstName\" formControlName=\"firstName\" value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['firstName'].touched &&\r\n checkoutForm.controls['firstName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'first-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n <!--Error info-->\r\n @if(checkoutForm.controls['firstName'].touched &&\r\n checkoutForm.controls['firstName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'first-name-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.lastName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'last-name'|translate}}\r\n @if(getTypeForm().viewForms.lastName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input class=\"form-control\" type=\"text\" name=\"lastName\" formControlName=\"lastName\" value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['lastName'].touched &&\r\n checkoutForm.controls['lastName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['lastName'].touched && checkoutForm.controls['lastName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 2-->\r\n @if(getTypeForm().viewForms.phoneNumber.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'phone'|translate}}\r\n @if(getTypeForm().viewForms.phoneNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"phoneNumber\"\r\n formControlName='phoneNumber' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['phoneNumber'].touched &&\r\n checkoutForm.controls['phoneNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['phoneNumber'].touched &&\r\n checkoutForm.controls['phoneNumber'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.email.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'email-address'|translate}}\r\n @if(getTypeForm().viewForms.email.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input class=\"form-control\" type=\"email\" name=\"email\" formControlName='email' value=\"\" placeholder=\"\"\r\n autocomplete=\"off\">\r\n @if(checkoutForm.controls['email'].touched && checkoutForm.controls['email'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['email'].touched && checkoutForm.controls['email'].errors?.['email']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 3-->\r\n @if(getTypeForm().viewForms.countryCode.enabled){\r\n @if(countries$ | async; as countries){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'country'|translate}}\r\n @if(getTypeForm().viewForms.countryCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"countryCode\" formControlName='countryCode'\r\n (change)=\"onCountrySelected($event)\">\r\n @for(country of countries; track $index){\r\n <option [value]=\"country.code\">{{ country.name }}</option>\r\n }\r\n </select>\r\n @if(checkoutForm.controls['countryCode'].touched &&\r\n checkoutForm.controls['countryCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'country-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.provinceCode.enabled){\r\n @if(provinces$ | async; as provinces){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'state'|translate}}\r\n @if(getTypeForm().viewForms.provinceCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"provinceCode\" (change)=\"onProvincesSelected($event, provinces)\"\r\n formControlName='provinceCode'>\r\n <option value=\"\">{{'select-state'|translate}}</option>\r\n @for(province of provinces; track $index){\r\n <option [value]=\"province.code\">{{ province.name }}\r\n </option>\r\n }\r\n </select>\r\n @if(checkoutForm.controls['provinceCode'].touched &&\r\n checkoutForm.controls['provinceCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'state-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.city.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'town-city'|translate}}\r\n @if(getTypeForm().viewForms.city.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"city\" formControlName='city'\r\n value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['city'].touched && checkoutForm.controls['city'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 4-->\r\n @if(getTypeForm().viewForms.street.enabled){\r\n <div class=\"form-group col-12 col-md-8\">\r\n <label class=\"field-label\">{{'address'|translate}}\r\n @if(getTypeForm().viewForms.street.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"street\"\r\n formControlName='street' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['street'].touched && checkoutForm.controls['street'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['street'].touched && checkoutForm.controls['street'].errors?.['maxlength']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- form direcci\u00F3n -->\r\n @if(getTypeForm().viewForms.postcode.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'postal-code'|translate}}\r\n @if(getTypeForm().viewForms.postcode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"postcode\"\r\n formControlName='postcode' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['postcode'].touched &&\r\n checkoutForm.controls['postcode'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['postcode'].touched && checkoutForm.controls['postcode'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\"> {{'postal-code-pattern-error' | translate}} </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 5-->\r\n @if(getTypeForm().viewForms.documentType.enabled){\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-type'|translate}}\r\n @if(getTypeForm().viewForms.documentType.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select name=\"documentType\" class=\"form-select\" (change)=\"onDocumentTypesSelected($event)\"\r\n formControlName='documentType'>\r\n @for(item of documentTypes; track $index){\r\n <option [value]=\"item.code\">{{item.name}}</option>\r\n }\r\n </select>\r\n @if(checkoutForm.controls['documentType'].touched &&\r\n checkoutForm.controls['documentType'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'type-document-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.documentNumber.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-number'|translate}}\r\n @if(getTypeForm().viewForms.documentNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" [type]=\"'text'\" name=\"documentNumber\"\r\n formControlName='documentNumber' min=\"1\" max=\"99999999999\" value=\"\" placeholder=\"\"\r\n autocomplete=\"off\">\r\n @if(checkoutForm.controls['documentNumber'].touched &&\r\n checkoutForm.controls['documentNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'document-number-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 6-->\r\n @if(this.channel.checkoutNotesField == 'required' || this.channel.checkoutNotesField == 'show'){\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(!getLabelNotesParam()){\r\n <label class=\"field-label\">{{'notes'|translate}}\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n @if(getLabelNotesParam(); as labelnotes){\r\n <label class=\"field-label\" [innerHTML]=\"labelnotes.value\">\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"notes\" formControlName='notes'\r\n value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(this.channel.checkoutNotesField == 'required' && checkoutForm.controls['notes'].touched &&\r\n checkoutForm.controls['notes'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'notes-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 7-->\r\n <div class=\"form-group col-12 col-md-12\">\r\n <label for=\"formFact\"><b>{{ 'same-billing-address' | translate }}</b> <input type=\"checkbox\"\r\n class=\"ms-2\" [checked]=\"viewDataFacturacion\" (change)=\"showFormFacturacion()\"\r\n id=\"formFact\"></label>\r\n </div>\r\n </div>\r\n <div class=\"row mt-df\">\r\n <div class=\"col-12\">\r\n <p>\r\n <label class=\"required text-underline text-danger\">* {{ 'required-fields' | translate }}</label>\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"row mt-df\">\r\n @if(getTypeForm().viewForms.terms.enabled){\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(getTypeForm().viewForms.terms.required){\r\n <span class=\"required\">*</span>\r\n }\r\n <label class=\"\" for=\"\"> {{ 'accept-terms' | translate }} <input class=\"ms-2\" name=\"terms\"\r\n formControlName='terms' type=\"checkbox\" required (change)=\"onInputChange()\" /> </label><br />\r\n <button type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#terminos-y-condiciones\">\r\n {{ 'whats-this' | translate }}\r\n </button>\r\n @if(checkoutForm.controls['terms'].touched && !checkoutForm.controls['terms'].value){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{ 'must-accept-terms' | translate }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if(!viewDataFacturacion){\r\n <!--Formulario de Facturaci\u00F3n-->\r\n <div class=\"card\">\r\n <div class=\"card-header text-center\">\r\n <h2>{{ 'billing-data' | translate }}</h2>\r\n </div>\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"checkoutFormFacturacion\">\r\n <div class=\"row mt-2\"><!--Fila 1-->\r\n\r\n @if(getTypeForm().viewForms.firstName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <!--Si es required-->\r\n <label class=\"form-label\">{{'first-name'|translate}}\r\n @if(getTypeForm().viewForms.firstName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <!--Input-->\r\n <input class=\"form-control\" type=\"text\" name=\"firstName\" formControlName=\"firstName\"\r\n value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['firstName'].touched &&\r\n checkoutFormFacturacion.controls['firstName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'first-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n <!--Error info-->\r\n @if(checkoutFormFacturacion.controls['firstName'].touched &&\r\n checkoutFormFacturacion.controls['firstName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'first-name-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.lastName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'last-name'|translate}}\r\n @if(getTypeForm().viewForms.lastName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input class=\"form-control\" type=\"text\" name=\"lastName\" formControlName=\"lastName\" value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['lastName'].touched &&\r\n checkoutFormFacturacion.controls['lastName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['lastName'].touched &&\r\n checkoutFormFacturacion.controls['lastName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 2-->\r\n @if(getTypeForm().viewForms.phoneNumber.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'phone'|translate}}\r\n @if(getTypeForm().viewForms.phoneNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"phoneNumber\"\r\n formControlName='phoneNumber' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['phoneNumber'].touched &&\r\n checkoutFormFacturacion.controls['phoneNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['phoneNumber'].touched &&\r\n checkoutFormFacturacion.controls['phoneNumber'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.email.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'email-address'|translate}}\r\n @if(getTypeForm().viewForms.email.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input class=\"form-control\" type=\"email\" name=\"email\" formControlName='email' value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['email'].touched &&\r\n checkoutFormFacturacion.controls['email'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['email'].touched &&\r\n checkoutFormFacturacion.controls['email'].errors?.['email']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 3-->\r\n @if(getTypeForm().viewForms.countryCode.enabled){\r\n @if(countries$ | async; as countries){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'country'|translate}}\r\n @if(getTypeForm().viewForms.countryCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"countryCode\" formControlName='countryCode'\r\n (change)=\"onCountrySelected($event, true)\">\r\n @for(country of countries; track $index){\r\n <option [value]=\"country.code\">{{ country.name }}</option>\r\n }\r\n </select>\r\n @if(checkoutFormFacturacion.controls['countryCode'].touched &&\r\n checkoutFormFacturacion.controls['countryCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'country-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.provinceCode.enabled){\r\n @if(provinces$ | async; as provinces){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'state'|translate}}\r\n @if(getTypeForm().viewForms.provinceCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"provinceCode\"\r\n (change)=\"onProvincesSelected($event, provinces, true)\" formControlName='provinceCode'>\r\n <option value=\"\">{{'select-state'|translate}}</option>\r\n @for(province of provinces; track $index){\r\n <option [value]=\"province.code\">{{ province.name }}\r\n </option>\r\n }\r\n </select>\r\n @if(checkoutFormFacturacion.controls['provinceCode'].touched &&\r\n checkoutFormFacturacion.controls['provinceCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'state-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.city.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'town-city'|translate}}\r\n @if(getTypeForm().viewForms.city.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"city\"\r\n formControlName='city' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['city'].touched &&\r\n checkoutFormFacturacion.controls['city'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 4-->\r\n @if(getTypeForm().viewForms.street.enabled){\r\n <div class=\"form-group col-12 col-md-8\">\r\n <label class=\"field-label\">{{'address'|translate}}\r\n @if(getTypeForm().viewForms.street.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"street\"\r\n formControlName='street' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['street'].touched &&\r\n checkoutFormFacturacion.controls['street'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['street'].touched &&\r\n checkoutFormFacturacion.controls['street'].errors?.['maxlength']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- form direcci\u00F3n -->\r\n @if(getTypeForm().viewForms.postcode.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'postal-code'|translate}}\r\n @if(getTypeForm().viewForms.postcode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"postcode\"\r\n formControlName='postcode' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['postcode'].touched &&\r\n checkoutFormFacturacion.controls['postcode'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['postcode'].touched &&\r\n checkoutFormFacturacion.controls['postcode'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\"> {{'postal-code-pattern-error' | translate}} </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 5-->\r\n @if(getTypeForm().viewForms.documentType.enabled){\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-type'|translate}}\r\n @if(getTypeForm().viewForms.documentType.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select name=\"documentType\" class=\"form-select\"\r\n (change)=\"onDocumentTypesSelected($event, true)\" formControlName='documentType'>\r\n @for(item of documentTypes; track $index){\r\n <option [value]=\"item.code\">{{item.name}}</option>\r\n }\r\n </select>\r\n @if(checkoutFormFacturacion.controls['documentType'].touched &&\r\n checkoutFormFacturacion.controls['documentType'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'type-document-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.documentNumber.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-number'|translate}}\r\n @if(getTypeForm().viewForms.documentNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" [type]=\"'text'\" name=\"documentNumber\"\r\n formControlName='documentNumber' min=\"1\" max=\"99999999999\" value=\"\" placeholder=\"\"\r\n autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['documentNumber'].touched &&\r\n checkoutFormFacturacion.controls['documentNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'document-number-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 6-->\r\n @if(this.channel.checkoutNotesField == 'required' || this.channel.checkoutNotesField == 'show'){\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(!getLabelNotesParam()){\r\n <label class=\"field-label\">{{'notes'|translate}}\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n @if(getLabelNotesParam(); as labelnotes){\r\n <label class=\"field-label\" [innerHTML]=\"labelnotes.value\">\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"notes\"\r\n formControlName='notes' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(this.channel.checkoutNotesField == 'required' &&\r\n checkoutFormFacturacion.controls['notes'].touched &&\r\n checkoutFormFacturacion.controls['notes'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'notes-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"row d-flex flex-row\">\r\n <div class=\"col-12 d-flex justify-content-end\">\r\n <button type=\"submit\" class=\"btn btn-primary text-white\"\r\n [disabled]=\"checkoutForm.invalid || (this.channel.checkoutNotesField == 'required' && (!checkoutForm.get('notes')?.value || checkoutForm.get('notes')?.value.trim() === '')) || (!viewDataFacturacion && checkoutFormFacturacion && (checkoutFormFacturacion.invalid || (this.channel.checkoutNotesField == 'required' && (!checkoutFormFacturacion.get('notes')?.value || checkoutFormFacturacion.get('notes')?.value.trim() === ''))))\">{{(isLastOne\r\n ? 'finish-checkout' : (allready_data ? 'update' :\r\n 'ready-form')) | translate}}\r\n <!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n </button>\r\n </div>\r\n </div>\r\n @if(loading){\r\n <div class=\"d-flex flex-column justify-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n\r\n </form>\r\n</div>\r\n} @else {\r\n<div id=\"loginCheckout\">\r\n @if(require_login){\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5 \">\r\n <div class=\"col-12 col-md-6 \">\r\n <app-login-form-ec (ready)=\"verifyValidate($event)\" [redirect]=\"false\" [title]=\"'need-login'\">\r\n </app-login-form-ec>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n}\r\n} @else {\r\n@if(modeSelectAddress == 'ONLY_ADDRESS_SELECTION'){\r\n<div class=\"checkout-title my-2\">\r\n <h3>{{'address-selection'|translate}}</h3>\r\n</div>\r\n}\r\n\r\n@if(this.addressBook){\r\n@if(this.addressBook?.length){\r\n<div class=\"container\">\r\n <div class=\"row\">\r\n @for(item of addressBook; track $index; let i = $index){\r\n <div class=\"col-sm-6 col-12 my-3\">\r\n <div class=\"card p-3\">\r\n <input class=\"ms-1 mt-3 form-check-input input-size-lg\" type=\"radio\" [name]=\"'n-'+i\" [id]=\"i\"\r\n [checked]=\"item.selected\" (click)=\"setSelectAddress(item)\" (change)=\"onInputChange()\">\r\n <div class=\"ms-5\">\r\n <h4 class=\"card-title\">\r\n <strong>{{'address'|translate}}</strong><br>\r\n <span class=\"text-uppercase h3\">{{item.street}}</span>\r\n </h4>\r\n <div class=\"row\">\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'country'|translate}}</strong> {{getCountry(item.countryCode)}}\r\n </h5>\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'state'|translate}}</strong> {{getProvince(item.provinceCode)}}\r\n </h5>\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'town-city'|translate}}</strong> {{item.city}}\r\n </h5>\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'postal-code'|translate}}</strong> {{item.postcode}}\r\n </h5>\r\n </div>\r\n <div class=\"row px-3\">\r\n <div class=\"card p-2 bg-light w-100\">\r\n <div class=\"card-body\">\r\n <h5 class=\"card-title\">{{'address-contact'|translate}}</h5>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'first-name'|translate}}</strong>\r\n {{item.addressContact.firstName}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'last-name'|translate}}</strong>\r\n {{item.addressContact.lastName}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'document-type'|translate}}</strong>\r\n {{getDocumentType(item.addressContact.documentType)}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'document-number'|translate}}</strong>\r\n {{item.addressContact.documentNumber}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'email-address'|translate}}</strong>\r\n {{item.addressContact.email}}\r\n </h6>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"w-100\">\r\n @if(this.channel.checkoutNotesField == 'required' || this.channel.checkoutNotesField == 'show'){\r\n <div class=\"row mt-df\">\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(!getLabelNotesParam()){\r\n <label class=\"form-label\">{{'notes'|translate}}\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n @if(getLabelNotesParam(); as labelnotes){\r\n <label class=\"form-label\" [innerHTML]=\"labelnotes.value\">\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"notes\"\r\n [(ngModel)]=\"this.addressBookSelected.notes\" #ctrl=\"ngModel\" value=\"\" placeholder=\"\"\r\n autocomplete=\"off\" [required]=\"this.channel.checkoutNotesField == 'required'\">\r\n @if(this.channel.checkoutNotesField == 'required' && ctrl.touched && ctrl.invalid){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'notes-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row d-flex flex-row\">\r\n <div class=\"col-12 d-flex justify-content-end\">\r\n <button (click)=\"onSelectAddress(cartItems)\" class=\"btn btn-primary text-white\"\r\n [disabled]=\"loadingStep || (this.channel.checkoutNotesField == 'required' && (!this.addressBookSelected.notes || this.addressBookSelected.notes.trim() === ''))\">{{(isLastOne\r\n ? 'finish-checkout' : (allready_data ? 'update' :\r\n 'ready-form')) | translate}}\r\n <!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n </button>\r\n\r\n </div>\r\n </div>\r\n @if(loading){\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 text-center my-2\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n} @else {\r\n<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 text-center my-2\">\r\n <h4> {{'address-book-not-result' | translate }} </h4>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n\r\n}\r\n\r\n}\r\n@else {\r\n<div class=\"container\">\r\n <p>Por favor <a [routerLink]=\"['/auth/login']\"> Inicie Sesi\u00F3n</a></p>\r\n</div>\r\n}\r\n}\r\n@if(getTypeForm().viewForms.terms.enabled){\r\n<div class=\"modal fade\" id=\"terminos-y-condiciones\" tabindex=\"-1\" aria-labelledby=\"modalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl modal-dialog-scrollable\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"modalLabel\">T\u00E9rminos y condiciones</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <app-blocks-ec [section]=\"'terminos-y-condiciones'\" />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: LoginFormEcComponent, selector: "app-login-form-ec", inputs: ["redirect", "redirectTo", "inCart"], outputs: ["ready"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "component", type: BlocksEcComponent, selector: "app-blocks-ec", inputs: ["templates", "show_loading", "section", "blockFilters"] }] });
9770
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DataformEcComponent, isStandalone: true, selector: "app-dataform-ec", ngImport: i0, template: "@if(channel$ | async; as channelConfig){\r\n@if(channelConfig.channelType != 'b2b' || (channelConfig.channelType == 'b2b' && isAuthenticated())){\r\n@if( modeSelectAddress == 'LOAD_ADDRESS_AND_SELECTION' && isAuthenticated() && this.addressBook != null){\r\n<!--Selector de modos-->\r\n<div class=\"container card p-4 mb-3\">\r\n <div class=\"row justify-content-center\">\r\n <div class=\"col-12 col-md-10 col-lg-8 text-center\">\r\n <div class=\"btn-group btn-group-toggle\" data-bs-toggle=\"buttons\">\r\n <label [class]=\"'btn btn-outline-secondary ' + (!getMode() ? 'active' : '')\">\r\n <input type=\"radio\" name=\"options\" id=\"option1\" autocomplete=\"off\" checked\r\n (change)=\"setMode('seleccion')\"> {{'select-address' | translate | titlecase}}\r\n </label>\r\n @if(!getParamByChannelAndLanguage('btn_new_address_')){\r\n <label [class]=\"'btn btn-outline-secondary ' + (getMode() ? 'active' : '')\">\r\n <input type=\"radio\" name=\"options\" id=\"option2\" autocomplete=\"off\" (change)=\"setMode('carga')\">\r\n {{ 'new-address' | translate | titlecase}}\r\n </label>\r\n }\r\n @if(getParamByChannelAndLanguage('btn_new_address_'); as param){\r\n <label [class]=\"'btn btn-outline-secondary ' + (selectAddress ? 'active' : '')\">\r\n <input type=\"radio\" name=\"options\" id=\"option2\" autocomplete=\"off\" (change)=\"setMode('carga')\">\r\n {{ param.value}}\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n\r\n@if(getMode()){\r\n@if(!require_login){\r\n<div>\r\n @if(modeSelectAddress == 'ONLY_LOAD_ADDRESS'){\r\n <div class=\"checkout-title my-2\">\r\n <h3>{{'billing-details'|translate}}</h3>\r\n </div>\r\n }\r\n <!--Formulario-->\r\n <form [formGroup]=\"checkoutForm\" (submit)=\"verifyValidate($event)\"> <!-- //this.cartService.items -->\r\n <div class=\"row mt-2\"><!--Fila 1-->\r\n\r\n @if(getTypeForm().viewForms.firstName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <!--Si es required-->\r\n <label class=\"form-label\">{{'first-name'|translate}}\r\n @if(getTypeForm().viewForms.firstName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <!--Input-->\r\n <input class=\"form-control\" type=\"text\" name=\"firstName\" formControlName=\"firstName\" value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['firstName'].touched &&\r\n checkoutForm.controls['firstName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'first-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n <!--Error info-->\r\n @if(checkoutForm.controls['firstName'].touched &&\r\n checkoutForm.controls['firstName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'first-name-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.lastName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'last-name'|translate}}\r\n @if(getTypeForm().viewForms.lastName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input class=\"form-control\" type=\"text\" name=\"lastName\" formControlName=\"lastName\" value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['lastName'].touched &&\r\n checkoutForm.controls['lastName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['lastName'].touched && checkoutForm.controls['lastName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 2-->\r\n @if(getTypeForm().viewForms.phoneNumber.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'phone'|translate}}\r\n @if(getTypeForm().viewForms.phoneNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"phoneNumber\"\r\n formControlName='phoneNumber' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['phoneNumber'].touched &&\r\n checkoutForm.controls['phoneNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['phoneNumber'].touched &&\r\n checkoutForm.controls['phoneNumber'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.email.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'email-address'|translate}}\r\n @if(getTypeForm().viewForms.email.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input class=\"form-control\" type=\"email\" name=\"email\" formControlName='email' value=\"\" placeholder=\"\"\r\n autocomplete=\"off\">\r\n @if(checkoutForm.controls['email'].touched && checkoutForm.controls['email'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['email'].touched && checkoutForm.controls['email'].errors?.['email']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 3-->\r\n @if(getTypeForm().viewForms.countryCode.enabled){\r\n @if(countries$ | async; as countries){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'country'|translate}}\r\n @if(getTypeForm().viewForms.countryCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"countryCode\" formControlName='countryCode'\r\n (change)=\"onCountrySelected($event)\">\r\n @for(country of countries; track $index){\r\n <option [value]=\"country.code\">{{ country.name }}</option>\r\n }\r\n </select>\r\n @if(checkoutForm.controls['countryCode'].touched &&\r\n checkoutForm.controls['countryCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'country-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.provinceCode.enabled){\r\n @if(provinces$ | async; as provinces){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'state'|translate}}\r\n @if(getTypeForm().viewForms.provinceCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"provinceCode\" (change)=\"onProvincesSelected($event, provinces)\"\r\n formControlName='provinceCode'>\r\n <option value=\"\">{{'select-state'|translate}}</option>\r\n @for(province of provinces; track $index){\r\n <option [value]=\"province.code\">{{ province.name }}\r\n </option>\r\n }\r\n </select>\r\n @if(checkoutForm.controls['provinceCode'].touched &&\r\n checkoutForm.controls['provinceCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'state-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.city.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'town-city'|translate}}\r\n @if(getTypeForm().viewForms.city.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"city\" formControlName='city'\r\n value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['city'].touched && checkoutForm.controls['city'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 4-->\r\n @if(getTypeForm().viewForms.street.enabled){\r\n <div class=\"form-group col-12 col-md-8\">\r\n <label class=\"field-label\">{{'address'|translate}}\r\n @if(getTypeForm().viewForms.street.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"street\"\r\n formControlName='street' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['street'].touched && checkoutForm.controls['street'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['street'].touched && checkoutForm.controls['street'].errors?.['maxlength']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- form direcci\u00F3n -->\r\n @if(getTypeForm().viewForms.postcode.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'postal-code'|translate}}\r\n @if(getTypeForm().viewForms.postcode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"postcode\"\r\n formControlName='postcode' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutForm.controls['postcode'].touched &&\r\n checkoutForm.controls['postcode'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutForm.controls['postcode'].touched && checkoutForm.controls['postcode'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\"> {{'postal-code-pattern-error' | translate}} </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 5-->\r\n @if(getTypeForm().viewForms.documentType.enabled){\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-type'|translate}}\r\n @if(getTypeForm().viewForms.documentType.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select name=\"documentType\" class=\"form-select\" (change)=\"onDocumentTypesSelected($event)\"\r\n formControlName='documentType'>\r\n @for(item of documentTypes; track $index){\r\n <option [value]=\"item.code\">{{item.name}}</option>\r\n }\r\n </select>\r\n @if(checkoutForm.controls['documentType'].touched &&\r\n checkoutForm.controls['documentType'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'type-document-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.documentNumber.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-number'|translate}}\r\n @if(getTypeForm().viewForms.documentNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" [type]=\"'text'\" name=\"documentNumber\"\r\n formControlName='documentNumber' min=\"1\" max=\"99999999999\" value=\"\" placeholder=\"\"\r\n autocomplete=\"off\">\r\n @if(checkoutForm.controls['documentNumber'].touched &&\r\n checkoutForm.controls['documentNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'document-number-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 6-->\r\n @if(this.channel.checkoutNotesField == 'required' || this.channel.checkoutNotesField == 'show'){\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(!getLabelNotesParam()){\r\n <label class=\"field-label\">{{'notes'|translate}}\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n @if(getLabelNotesParam(); as labelnotes){\r\n <label class=\"field-label\" [innerHTML]=\"labelnotes.value\">\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"notes\" formControlName='notes'\r\n value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(this.channel.checkoutNotesField == 'required' && checkoutForm.controls['notes'].touched &&\r\n checkoutForm.controls['notes'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'notes-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 7-->\r\n <div class=\"form-group col-12 col-md-12\">\r\n <label for=\"formFact\"><b>{{ 'same-billing-address' | translate }}</b> <input type=\"checkbox\"\r\n class=\"ms-2\" [checked]=\"viewDataFacturacion\" (change)=\"showFormFacturacion()\"\r\n id=\"formFact\"></label>\r\n </div>\r\n </div>\r\n <div class=\"row mt-df\">\r\n <div class=\"col-12\">\r\n <p>\r\n <label class=\"required text-underline text-danger\">* {{ 'required-fields' | translate }}</label>\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"row mt-df\">\r\n @if(getTypeForm().viewForms.terms.enabled){\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(getTypeForm().viewForms.terms.required){\r\n <span class=\"required\">*</span>\r\n }\r\n <label class=\"\" for=\"\"> {{ 'accept-terms' | translate }} <input class=\"ms-2\" name=\"terms\"\r\n formControlName='terms' type=\"checkbox\" required (change)=\"onInputChange()\" /> </label><br />\r\n <button type=\"button\" class=\"btn btn-primary\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#terminos-y-condiciones\">\r\n {{ 'whats-this' | translate }}\r\n </button>\r\n @if(checkoutForm.controls['terms'].touched && !checkoutForm.controls['terms'].value){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{ 'must-accept-terms' | translate }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if(!viewDataFacturacion){\r\n <!--Formulario de Facturaci\u00F3n-->\r\n <div class=\"card\">\r\n <div class=\"card-header text-center\">\r\n <h2>{{ 'billing-data' | translate }}</h2>\r\n </div>\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"checkoutFormFacturacion\">\r\n <div class=\"row mt-2\"><!--Fila 1-->\r\n\r\n @if(getTypeForm().viewForms.firstName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <!--Si es required-->\r\n <label class=\"form-label\">{{'first-name'|translate}}\r\n @if(getTypeForm().viewForms.firstName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <!--Input-->\r\n <input class=\"form-control\" type=\"text\" name=\"firstName\" formControlName=\"firstName\"\r\n value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['firstName'].touched &&\r\n checkoutFormFacturacion.controls['firstName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'first-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n <!--Error info-->\r\n @if(checkoutFormFacturacion.controls['firstName'].touched &&\r\n checkoutFormFacturacion.controls['firstName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'first-name-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.lastName.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'last-name'|translate}}\r\n @if(getTypeForm().viewForms.lastName.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input class=\"form-control\" type=\"text\" name=\"lastName\" formControlName=\"lastName\" value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['lastName'].touched &&\r\n checkoutFormFacturacion.controls['lastName'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['lastName'].touched &&\r\n checkoutFormFacturacion.controls['lastName'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'last-name-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 2-->\r\n @if(getTypeForm().viewForms.phoneNumber.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'phone'|translate}}\r\n @if(getTypeForm().viewForms.phoneNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"phoneNumber\"\r\n formControlName='phoneNumber' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['phoneNumber'].touched &&\r\n checkoutFormFacturacion.controls['phoneNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['phoneNumber'].touched &&\r\n checkoutFormFacturacion.controls['phoneNumber'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'phone-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if(getTypeForm().viewForms.email.enabled){\r\n <div class=\"form-group col-12 col-md-6\">\r\n <label class=\"form-label\">{{'email-address'|translate}}\r\n @if(getTypeForm().viewForms.email.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input class=\"form-control\" type=\"email\" name=\"email\" formControlName='email' value=\"\"\r\n placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['email'].touched &&\r\n checkoutFormFacturacion.controls['email'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help1'|translate}}\r\n </span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['email'].touched &&\r\n checkoutFormFacturacion.controls['email'].errors?.['email']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'email-address-help2'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-2\"><!--Fila 3-->\r\n @if(getTypeForm().viewForms.countryCode.enabled){\r\n @if(countries$ | async; as countries){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'country'|translate}}\r\n @if(getTypeForm().viewForms.countryCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"countryCode\" formControlName='countryCode'\r\n (change)=\"onCountrySelected($event, true)\">\r\n @for(country of countries; track $index){\r\n <option [value]=\"country.code\">{{ country.name }}</option>\r\n }\r\n </select>\r\n @if(checkoutFormFacturacion.controls['countryCode'].touched &&\r\n checkoutFormFacturacion.controls['countryCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'country-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.provinceCode.enabled){\r\n @if(provinces$ | async; as provinces){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'state'|translate}}\r\n @if(getTypeForm().viewForms.provinceCode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select class=\"form-select\" name=\"provinceCode\"\r\n (change)=\"onProvincesSelected($event, provinces, true)\" formControlName='provinceCode'>\r\n <option value=\"\">{{'select-state'|translate}}</option>\r\n @for(province of provinces; track $index){\r\n <option [value]=\"province.code\">{{ province.name }}\r\n </option>\r\n }\r\n </select>\r\n @if(checkoutFormFacturacion.controls['provinceCode'].touched &&\r\n checkoutFormFacturacion.controls['provinceCode'].errors?.['required']){\r\n <div class=\"text text-danger\">\r\n {{'state-help'|translate}}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.city.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"form-label\">{{'town-city'|translate}}\r\n @if(getTypeForm().viewForms.city.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"city\"\r\n formControlName='city' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['city'].touched &&\r\n checkoutFormFacturacion.controls['city'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 4-->\r\n @if(getTypeForm().viewForms.street.enabled){\r\n <div class=\"form-group col-12 col-md-8\">\r\n <label class=\"field-label\">{{'address'|translate}}\r\n @if(getTypeForm().viewForms.street.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"street\"\r\n formControlName='street' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['street'].touched &&\r\n checkoutFormFacturacion.controls['street'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help1'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['street'].touched &&\r\n checkoutFormFacturacion.controls['street'].errors?.['maxlength']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'address-help2'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- form direcci\u00F3n -->\r\n @if(getTypeForm().viewForms.postcode.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'postal-code'|translate}}\r\n @if(getTypeForm().viewForms.postcode.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"postcode\"\r\n formControlName='postcode' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['postcode'].touched &&\r\n checkoutFormFacturacion.controls['postcode'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n }\r\n @if(checkoutFormFacturacion.controls['postcode'].touched &&\r\n checkoutFormFacturacion.controls['postcode'].errors?.['pattern']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\"> {{'postal-code-pattern-error' | translate}} </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 5-->\r\n @if(getTypeForm().viewForms.documentType.enabled){\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-type'|translate}}\r\n @if(getTypeForm().viewForms.documentType.required){\r\n <span class=\"required\">*</span>\r\n }</label>\r\n <select name=\"documentType\" class=\"form-select\"\r\n (change)=\"onDocumentTypesSelected($event, true)\" formControlName='documentType'>\r\n @for(item of documentTypes; track $index){\r\n <option [value]=\"item.code\">{{item.name}}</option>\r\n }\r\n </select>\r\n @if(checkoutFormFacturacion.controls['documentType'].touched &&\r\n checkoutFormFacturacion.controls['documentType'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'type-document-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n @if(getTypeForm().viewForms.documentNumber.enabled){\r\n <div class=\"form-group col-12 col-md-4\">\r\n <label class=\"field-label\">{{'document-number'|translate}}\r\n @if(getTypeForm().viewForms.documentNumber.required){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n <input (change)=\"onInputChange()\" class=\"form-control\" [type]=\"'text'\" name=\"documentNumber\"\r\n formControlName='documentNumber' min=\"1\" max=\"99999999999\" value=\"\" placeholder=\"\"\r\n autocomplete=\"off\">\r\n @if(checkoutFormFacturacion.controls['documentNumber'].touched &&\r\n checkoutFormFacturacion.controls['documentNumber'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">\r\n {{'document-number-help'|translate}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row mt-df\"><!--Fila 6-->\r\n @if(this.channel.checkoutNotesField == 'required' || this.channel.checkoutNotesField == 'show'){\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(!getLabelNotesParam()){\r\n <label class=\"field-label\">{{'notes'|translate}}\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n @if(getLabelNotesParam(); as labelnotes){\r\n <label class=\"field-label\" [innerHTML]=\"labelnotes.value\">\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"notes\"\r\n formControlName='notes' value=\"\" placeholder=\"\" autocomplete=\"off\">\r\n @if(this.channel.checkoutNotesField == 'required' &&\r\n checkoutFormFacturacion.controls['notes'].touched &&\r\n checkoutFormFacturacion.controls['notes'].errors?.['required']){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'notes-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"row d-flex flex-row\">\r\n <div class=\"col-12 d-flex justify-content-end\">\r\n <button type=\"submit\" class=\"btn btn-primary text-white\"\r\n [disabled]=\"checkoutForm.invalid || (this.channel.checkoutNotesField == 'required' && (!checkoutForm.get('notes')?.value || checkoutForm.get('notes')?.value.trim() === '')) || (!viewDataFacturacion && checkoutFormFacturacion && (checkoutFormFacturacion.invalid || (this.channel.checkoutNotesField == 'required' && (!checkoutFormFacturacion.get('notes')?.value || checkoutFormFacturacion.get('notes')?.value.trim() === ''))))\">{{(isLastOne\r\n ? 'finish-checkout' : (allready_data ? 'update' :\r\n 'ready-form')) | translate}}\r\n <!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n </button>\r\n </div>\r\n </div>\r\n @if(loading){\r\n <div class=\"d-flex flex-column justify-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n\r\n </form>\r\n</div>\r\n} @else {\r\n<div id=\"loginCheckout\">\r\n @if(require_login){\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5 \">\r\n <div class=\"col-12 col-md-6 \">\r\n <app-login-form-ec (ready)=\"verifyValidate($event)\" [redirect]=\"false\" [title]=\"'need-login'\">\r\n </app-login-form-ec>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n}\r\n} @else {\r\n@if(modeSelectAddress == 'ONLY_ADDRESS_SELECTION'){\r\n<div class=\"checkout-title my-2\">\r\n <h3>{{'address-selection'|translate}}</h3>\r\n</div>\r\n}\r\n\r\n@if(this.addressBook){\r\n@if(this.addressBook?.length){\r\n<div class=\"container\">\r\n <div class=\"row\">\r\n @for(item of addressBook; track $index; let i = $index){\r\n <div class=\"col-sm-6 col-12 my-3\">\r\n <div class=\"card p-3\">\r\n <input class=\"ms-1 mt-3 form-check-input input-size-lg\" type=\"radio\" [name]=\"'n-'+i\" [id]=\"i\"\r\n [checked]=\"item.selected\" (click)=\"setSelectAddress(item)\" (change)=\"onInputChange()\">\r\n <div class=\"ms-5\">\r\n <h4 class=\"card-title\">\r\n <strong>{{'address'|translate}}</strong><br>\r\n <span class=\"text-uppercase h3\">{{item.street}}</span>\r\n </h4>\r\n <div class=\"row\">\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'country'|translate}}</strong> {{getCountry(item.countryCode)}}\r\n </h5>\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'state'|translate}}</strong> {{getProvince(item.provinceCode)}}\r\n </h5>\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'town-city'|translate}}</strong> {{item.city}}\r\n </h5>\r\n <h5 class=\"card-subtitle mb-2 text-muted col-auto\">\r\n <strong>{{'postal-code'|translate}}</strong> {{item.postcode}}\r\n </h5>\r\n </div>\r\n <div class=\"row px-3\">\r\n <div class=\"card p-2 bg-light w-100\">\r\n <div class=\"card-body\">\r\n <h5 class=\"card-title\">{{'address-contact'|translate}}</h5>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'first-name'|translate}}</strong>\r\n {{item.addressContact.firstName}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'last-name'|translate}}</strong>\r\n {{item.addressContact.lastName}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'document-type'|translate}}</strong>\r\n {{getDocumentType(item.addressContact.documentType)}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'document-number'|translate}}</strong>\r\n {{item.addressContact.documentNumber}}\r\n </h6>\r\n <h6 class=\"card-subtitle mb-2 text-muted\">\r\n <strong>{{'email-address'|translate}}</strong>\r\n {{item.addressContact.email}}\r\n </h6>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"w-100\">\r\n @if(this.channel.checkoutNotesField == 'required' || this.channel.checkoutNotesField == 'show'){\r\n <div class=\"row mt-df\">\r\n <div class=\"form-group col-12 col-md-12\">\r\n @if(!getLabelNotesParam()){\r\n <label class=\"form-label\">{{'notes'|translate}}\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n @if(getLabelNotesParam(); as labelnotes){\r\n <label class=\"form-label\" [innerHTML]=\"labelnotes.value\">\r\n @if(this.channel.checkoutNotesField == 'required'){\r\n <span class=\"required\">*</span>\r\n }\r\n </label>\r\n }\r\n <input (change)=\"onInputChange()\" class=\"form-control\" type=\"text\" name=\"notes\"\r\n [(ngModel)]=\"this.addressBookSelected.notes\" #ctrl=\"ngModel\" value=\"\" placeholder=\"\"\r\n autocomplete=\"off\" [required]=\"this.channel.checkoutNotesField == 'required'\">\r\n @if(this.channel.checkoutNotesField == 'required' && ctrl.touched && ctrl.invalid){\r\n <div class=\"text-danger-container\">\r\n <span class=\"text-danger\">{{'notes-help'|translate}}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row d-flex flex-row\">\r\n <div class=\"col-12 d-flex justify-content-end\">\r\n <button (click)=\"onSelectAddress(cartItems)\" class=\"btn btn-primary text-white\"\r\n [disabled]=\"loadingStep || (this.channel.checkoutNotesField == 'required' && (!this.addressBookSelected.notes || this.addressBookSelected.notes.trim() === ''))\">{{(isLastOne\r\n ? 'finish-checkout' : (allready_data ? 'update' :\r\n 'ready-form')) | translate}}\r\n <!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n </button>\r\n\r\n </div>\r\n </div>\r\n @if(loading){\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 text-center my-2\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n} @else {\r\n<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 text-center my-2\">\r\n <h4> {{'address-book-not-result' | translate }} </h4>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n\r\n}\r\n\r\n}\r\n@else {\r\n<div class=\"container\">\r\n <p>Por favor <a [routerLink]=\"['/auth/login']\"> Inicie Sesi\u00F3n</a></p>\r\n</div>\r\n}\r\n}\r\n@if(getTypeForm().viewForms.terms.enabled){\r\n<div class=\"modal fade\" id=\"terminos-y-condiciones\" tabindex=\"-1\" aria-labelledby=\"modalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl modal-dialog-scrollable\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"modalLabel\">T\u00E9rminos y condiciones</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <app-blocks-ec [section]=\"'terminos-y-condiciones'\" />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: LoginFormEcComponent, selector: "app-login-form-ec", inputs: ["redirect", "redirectTo", "inCart"], outputs: ["ready"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "component", type: BlocksEcComponent, selector: "app-blocks-ec", inputs: ["templates", "show_loading", "section", "blockFilters"] }] });
10007
9771
  }
10008
9772
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataformEcComponent, decorators: [{
10009
9773
  type: Component,
@@ -10152,7 +9916,7 @@ class ShipmentEcComponent {
10152
9916
  this._checkoutService.next();
10153
9917
  }
10154
9918
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShipmentEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10155
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ShipmentEcComponent, isStandalone: true, selector: "app-shipment-ec", ngImport: i0, template: "<div class=\"container-fluid\">\r\n\t<div class=\"col-12\">\r\n\t\t<div class=\"card text-center\">\r\n\t\t\t<div class=\"card-header text-dark\">\r\n\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t@if(methods$ | async; as methods){\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for(method of filterMethods(methods); track $index){\r\n\t\t\t\t\t\t\t\t<button [disabled]=\"buttonsDisabled\" type=\"button\"\r\n\t\t\t\t\t\t\t\t\t[class]=\"'btn btn-outline-secondary mx-1 mb-1' + (isMethodActive(method.code) ? ' active' : '')\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"setMethod(method)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}@else {\r\n\t\t\t\t\t<div class=\"d-flex flex-row w-100 justify-content-center mt-2\">\r\n\t\t\t\t\t\t<h5 class=\"text-secondary\">{{'no-shipment-methods'|translate}}</h5>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"card-body\">\r\n\t\t\t\t@if(moreInfoInMethod && methodSelect && methodSelect.description){\r\n <div class=\"row justify-content-center mb-2\">\r\n <div class=\"col-12 col-md-6 col-lg-4 d-flex flex-column mb-2\" [id]=\"methodSelect.code\">\r\n @for(line of methodSelect.description.split('\\r\\n'); track $index; let i=$index){\r\n <span [id]=\"methodSelect.code+'-'+i\" [class]=\"'line-'+i\">{{line}}</span>\r\n\t\t\t\t\t }\r\n </div>\r\n </div>}\r\n\t\t\t\t@if(costs$ | async; as costs){\r\n<!-- \t\t\t\t @if(costs){ -->\r\n <div class=\"row justify-content-center\">\r\n @if(!loadingInternal){\r\n\t\t\t\t\t\t@for(cost of costs; track $index; let y = $index){\r\n <div class=\"col-auto text-dark\">\r\n\t\t\t\t\t\t\t@if(cost.contracts.length > 0){\r\n\t\t\t\t\t\t\t\t@if(costs.length > 1){\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ cost.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}@else{\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ methodSelect.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@for(contract of cost.contracts; track $index; let i = $index){\r\n <div class=\"option\">\r\n <div class=\"form-check current-contract\">\r\n <input class=\"form-check-input\" [checked]=\"(y === 0 && i === 0) ? true : contract.selected\" type=\"radio\" name=\"card\" [id]=\"cost.name + i\"\r\n value=\"dark\" (click)=\"verifyValidate(costs,cost.name, contract)\">\r\n <label class=\"form-check-label\" [for]=\"cost.name + i\" aria-label=\"Dark grey\">\r\n @if(validName(contract.name)){\r\n\t\t\t\t\t\t\t\t\t\t\t<span\r\n [class]=\"(cost.name == 'home_delivery') ? 'shipment-contractname home_delivery' : 'shipment-contractname' \">\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{ contract.name | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t</span>}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.computed){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span><br class=\"shipment-contractname\">{{ contract.computed | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<br class=\"shipment-contractname\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.detail){\r\n <div class=\"contract-detail\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for(line of contract.detail.split(' - '); track $index; let i = $index){\r\n <div [class]=\"'contrat-item-'+i\">\r\n @if(i == 0){<span><b>{{ line }}</b></span>}\r\n @if(i > 0){<span class=\"inside-detail\">{{ line }}</span>}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.price > 0){\r\n <span [class]=\"'inside-detail ' + ( costos?.amount == 0 ? ' free ' : '') \">\r\n @if(!contract.computed){<br class=\"shipment-contractname\">}\r\n {{ ('price'|translate) + ': ' + (contract.price | ecCurrencySymbol) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n <br>\r\n </label>\r\n </div>\r\n </div>\r\n\t\t\t\t\t\t\t\t}\r\n \r\n\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t}\r\n }@else {\r\n\t\t\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t}\r\n\t\t\t\t\r\n </div>\r\n\r\n\t\t</div>\r\n\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\r\n\t\t\t\t<button type=\"submit\" (click)=\"next()\" [disabled]=\"!enabledConfirmButton\" class=\"btn btn-primary text-white\">{{(isLastOne\r\n\t\t\t\t\t? 'finish-checkout' :'ready-form') | translate}}\r\n\t\t\t\t\t<!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
9919
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ShipmentEcComponent, isStandalone: true, selector: "app-shipment-ec", ngImport: i0, template: "<div class=\"container-fluid\">\r\n\t<div class=\"col-12\">\r\n\t\t<div class=\"card text-center\">\r\n\t\t\t<div class=\"card-header text-dark\">\r\n\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t@if(methods$ | async; as methods){\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for(method of filterMethods(methods); track $index){\r\n\t\t\t\t\t\t\t\t<button [disabled]=\"buttonsDisabled\" type=\"button\"\r\n\t\t\t\t\t\t\t\t\t[class]=\"'btn btn-outline-secondary mx-1 mb-1' + (isMethodActive(method.code) ? ' active' : '')\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"setMethod(method)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}@else {\r\n\t\t\t\t\t<div class=\"d-flex flex-row w-100 justify-content-center mt-2\">\r\n\t\t\t\t\t\t<h5 class=\"text-secondary\">{{'no-shipment-methods'|translate}}</h5>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"card-body\">\r\n\t\t\t\t@if(moreInfoInMethod && methodSelect && methodSelect.description){\r\n <div class=\"row justify-content-center mb-2\">\r\n <div class=\"col-12 col-md-6 col-lg-4 d-flex flex-column mb-2\" [id]=\"methodSelect.code\">\r\n @for(line of methodSelect.description.split('\\r\\n'); track $index; let i=$index){\r\n <span [id]=\"methodSelect.code+'-'+i\" [class]=\"'line-'+i\">{{line}}</span>\r\n\t\t\t\t\t }\r\n </div>\r\n </div>}\r\n\t\t\t\t@if(costs$ | async; as costs){\r\n<!-- \t\t\t\t @if(costs){ -->\r\n <div class=\"row justify-content-center\">\r\n @if(!loadingInternal){\r\n\t\t\t\t\t\t@for(cost of costs; track $index; let y = $index){\r\n <div class=\"col-auto text-dark\">\r\n\t\t\t\t\t\t\t@if(cost.contracts.length > 0){\r\n\t\t\t\t\t\t\t\t@if(costs.length > 1){\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ cost.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}@else{\r\n\t\t\t\t\t\t\t\t\t<span><b>{{ methodSelect.name | translate }}</b></span>\r\n\t\t\t\t\t\t\t\t\t<hr />\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@for(contract of cost.contracts; track $index; let i = $index){\r\n <div class=\"option\">\r\n <div class=\"form-check current-contract\">\r\n <input class=\"form-check-input\" [checked]=\"(y === 0 && i === 0) ? true : contract.selected\" type=\"radio\" name=\"card\" [id]=\"cost.name + i\"\r\n value=\"dark\" (click)=\"verifyValidate(costs,cost.name, contract)\">\r\n <label class=\"form-check-label\" [for]=\"cost.name + i\" aria-label=\"Dark grey\">\r\n @if(validName(contract.name)){\r\n\t\t\t\t\t\t\t\t\t\t\t<span\r\n [class]=\"(cost.name == 'home_delivery') ? 'shipment-contractname home_delivery' : 'shipment-contractname' \">\r\n\t\t\t\t\t\t\t\t\t\t\t\t{{ contract.name | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t</span>}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.computed){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span><br class=\"shipment-contractname\">{{ contract.computed | translate }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<br class=\"shipment-contractname\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.detail){\r\n <div class=\"contract-detail\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t@for(line of contract.detail.split(' - '); track $index; let i = $index){\r\n <div [class]=\"'contrat-item-'+i\">\r\n @if(i == 0){<span><b>{{ line }}</b></span>}\r\n @if(i > 0){<span class=\"inside-detail\">{{ line }}</span>}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t@if(contract.price > 0){\r\n <span [class]=\"'inside-detail ' + ( costos?.amount == 0 ? ' free ' : '') \">\r\n @if(!contract.computed){<br class=\"shipment-contractname\">}\r\n {{ ('price'|translate) + ': ' + (contract.price | ecCurrencySymbol) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n <br>\r\n </label>\r\n </div>\r\n </div>\r\n\t\t\t\t\t\t\t\t}\r\n \r\n\t\t\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t\t\t}\r\n }@else {\r\n\t\t\t\t\t\t<app-loading-full-ec></app-loading-full-ec>\r\n\t\t\t\t\t}\r\n </div>\r\n\t\t\t\t}\r\n\t\t\t\t\r\n </div>\r\n\r\n\t\t</div>\r\n\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\r\n\t\t\t\t<button type=\"submit\" (click)=\"next()\" [disabled]=\"!enabledConfirmButton\" class=\"btn btn-primary text-white\">{{(isLastOne\r\n\t\t\t\t\t? 'finish-checkout' :'ready-form') | translate}}\r\n\t\t\t\t\t<!-- {{(allready_data ? 'update' : (isLastOne ? 'finish-checkout' : 'ready-form')) | translate}} -->\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
10156
9920
  }
10157
9921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShipmentEcComponent, decorators: [{
10158
9922
  type: Component,
@@ -10347,7 +10111,7 @@ class BankTransferEcComponent {
10347
10111
  ngOnInit() {
10348
10112
  }
10349
10113
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BankTransferEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10350
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BankTransferEcComponent, isStandalone: true, selector: "app-bank-transfer-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<div class=\"row px-0 description-cont\">\r\n\r\n @for(line of method.description.split('\\r\\n');track $index; let i=$index){\r\n <p [id]=\"'faqs-'+i\" [class]=\"'qt px-5 m-0 line-'+i\">{{ line }}</p>\r\n }\r\n</div>\r\n@if(method.instructions){\r\n <hr />\r\n <div class=\"row px-0 instructions-cont mb-1\">\r\n <h5 class=\"instructions-title\">{{ ('instructions' | translate) }}</h5>\r\n @for(line of method.instructions.split('\\r\\n'); track $index; let i=$index){\r\n <p [class]=\"'px-5 m-0 instructions-text line-'+i \">{{ line }}</p>\r\n }\r\n</div>\r\n}\r\n\r\n<div class=\"end-button\">\r\n <button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\r\n ('pay-with-transfer'\r\n | translate) }}</button>\r\n</div>\r\n<!-- @if(loading$ | async; as loading){\r\n @if(loading){\r\n <div class=\"mt-2\">\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n }\r\n} -->", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
10114
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BankTransferEcComponent, isStandalone: true, selector: "app-bank-transfer-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<div class=\"row px-0 description-cont\">\r\n\r\n @for(line of method.description.split('\\r\\n');track $index; let i=$index){\r\n <p [id]=\"'faqs-'+i\" [class]=\"'qt px-5 m-0 line-'+i\">{{ line }}</p>\r\n }\r\n</div>\r\n@if(method.instructions){\r\n <hr />\r\n <div class=\"row px-0 instructions-cont mb-1\">\r\n <h5 class=\"instructions-title\">{{ ('instructions' | translate) }}</h5>\r\n @for(line of method.instructions.split('\\r\\n'); track $index; let i=$index){\r\n <p [class]=\"'px-5 m-0 instructions-text line-'+i \">{{ line }}</p>\r\n }\r\n</div>\r\n}\r\n\r\n<div class=\"end-button\">\r\n <button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\r\n ('pay-with-transfer'\r\n | translate) }}</button>\r\n</div>\r\n<!-- @if(loading$ | async; as loading){\r\n @if(loading){\r\n <div class=\"mt-2\">\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n }\r\n} -->", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
10351
10115
  }
10352
10116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BankTransferEcComponent, decorators: [{
10353
10117
  type: Component,
@@ -10371,7 +10135,7 @@ class OfflineEcComponent {
10371
10135
  ngOnInit() {
10372
10136
  }
10373
10137
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OfflineEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10374
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OfflineEcComponent, isStandalone: true, selector: "app-offline-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\r\n<p class=\"px-5\">{{ method.instructions }}</p>\r\n<div class=\"end-button\">\r\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\r\n\t\t('pay-with-offline'| translate) }}</button>\r\n</div>\r\n<!-- @if(loading$ | async; as loading){\r\n @if(loading){\r\n <div class=\"mt-2\">\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n }\r\n} -->", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
10138
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OfflineEcComponent, isStandalone: true, selector: "app-offline-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\r\n<p class=\"px-5\">{{ method.instructions }}</p>\r\n<div class=\"end-button\">\r\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\r\n\t\t('pay-with-offline'| translate) }}</button>\r\n</div>\r\n<!-- @if(loading$ | async; as loading){\r\n @if(loading){\r\n <div class=\"mt-2\">\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n }\r\n} -->", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
10375
10139
  }
10376
10140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OfflineEcComponent, decorators: [{
10377
10141
  type: Component,
@@ -10571,13 +10335,13 @@ class DecidirEcComponent extends ComponentHelper {
10571
10335
  obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
10572
10336
  obj.style.width = obj.contentWindow.document.body.scrollWidth + 'px';
10573
10337
  };
10574
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, deps: [{ token: i0.Renderer2 }, { token: ConnectionService }, { token: ToastService }, { token: CoreConstantsService }, { token: ApiConstantsService }, { token: CartService }, { token: i2.ActivatedRoute }, { token: i1$5.DomSanitizer }, { token: ParametersService }], target: i0.ɵɵFactoryTarget.Component });
10338
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, deps: [{ token: i0.Renderer2 }, { token: ConnectionService }, { token: ToastService }, { token: CoreConstantsService }, { token: ApiConstantsService }, { token: CartService }, { token: i2.ActivatedRoute }, { token: i1$4.DomSanitizer }, { token: ParametersService }], target: i0.ɵɵFactoryTarget.Component });
10575
10339
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecidirEcComponent, isStandalone: true, selector: "app-decidir-ec", inputs: { paymentServiceInst: "paymentServiceInst", method: "method", total_amount: "total_amount", allData: "allData", user_data: "user_data" }, outputs: { ready: "ready" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;backdrop-filter:blur(2px)}.modal-dialog{max-width:90%;max-height:90%;width:800px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:modalFadeIn .3s ease-out}.modal-dialog.modal-lg{max-width:900px;width:90%}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{display:flex;flex-direction:column;height:100%;border:none;border-radius:16px;background:#fff}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;justify-content:space-between;align-items:center;position:relative}.modal-header:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:700;color:#2c3e50;text-shadow:0 1px 2px rgba(0,0,0,.1)}.modal-header .btn-close{background:none;border:none;font-size:1.8rem;color:#6c757d;cursor:pointer;padding:0;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s ease;position:relative}.modal-header .btn-close:hover{background-color:#dc3545;color:#fff;transform:rotate(90deg);box-shadow:0 4px 12px #dc35454d}.modal-header .btn-close:active{transform:rotate(90deg) scale(.95)}.modal-body{padding:0;flex:1;overflow:hidden;background:#fff}.payment-container{height:100%;display:flex;flex-direction:column;background:#fff}.cards-accepted{padding:1.5rem 2rem;text-align:center;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#fff,#f8f9fa);position:relative}.cards-accepted:after{content:\"\";position:absolute;bottom:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.cards-accepted .cards-img{height:45px;max-width:100%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .2s ease}.cards-accepted .cards-img:hover{transform:scale(1.05)}.iframe-container{flex:1;padding:1.5rem;background:#fff;position:relative}.iframe-container:before{content:\"\";position:absolute;top:0;left:1.5rem;right:1.5rem;height:1px;background:linear-gradient(90deg,transparent 0%,#e9ecef 50%,transparent 100%)}.payment-iframe{width:100%;height:620px;border:none;border-radius:12px;background:#fff;box-shadow:inset 0 2px 8px #0000000d}.half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:520px;width:100%}@media only screen and (max-width: 1024px){.modal-dialog,.modal-dialog.modal-lg{max-width:95%;width:95%}.payment-iframe{height:650px}.modal-header{padding:1rem 1.5rem}.modal-header .modal-title{font-size:1.125rem}.cards-accepted{padding:.75rem 1.5rem}}@media only screen and (max-width: 680px){.modal-dialog{max-width:98%;width:98%;margin:1rem;max-height:calc(100vh - 2rem)}.modal-dialog.modal-lg{max-width:98%;width:98%}.payment-iframe{height:550px}.modal-header{padding:1rem}.modal-header .modal-title{font-size:1rem}.modal-header .btn-close{width:28px;height:28px;font-size:1.25rem}.cards-accepted{padding:.5rem 1rem}.cards-accepted .cards-img{height:35px}.iframe-container{padding:.5rem}}@media only screen and (max-width: 480px){.modal-dialog{margin:.5rem;max-height:calc(100vh - 1rem);border-radius:8px}.modal-content{border-radius:8px}.payment-iframe{height:500px}.cards-accepted .cards-img{height:30px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
10576
10340
  }
10577
10341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, decorators: [{
10578
10342
  type: Component,
10579
10343
  args: [{ selector: 'app-decidir-ec', standalone: true, imports: [CommonModule, FormsModule, LoadingFullEcComponent], template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;backdrop-filter:blur(2px)}.modal-dialog{max-width:90%;max-height:90%;width:800px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:modalFadeIn .3s ease-out}.modal-dialog.modal-lg{max-width:900px;width:90%}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{display:flex;flex-direction:column;height:100%;border:none;border-radius:16px;background:#fff}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;justify-content:space-between;align-items:center;position:relative}.modal-header:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:700;color:#2c3e50;text-shadow:0 1px 2px rgba(0,0,0,.1)}.modal-header .btn-close{background:none;border:none;font-size:1.8rem;color:#6c757d;cursor:pointer;padding:0;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s ease;position:relative}.modal-header .btn-close:hover{background-color:#dc3545;color:#fff;transform:rotate(90deg);box-shadow:0 4px 12px #dc35454d}.modal-header .btn-close:active{transform:rotate(90deg) scale(.95)}.modal-body{padding:0;flex:1;overflow:hidden;background:#fff}.payment-container{height:100%;display:flex;flex-direction:column;background:#fff}.cards-accepted{padding:1.5rem 2rem;text-align:center;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#fff,#f8f9fa);position:relative}.cards-accepted:after{content:\"\";position:absolute;bottom:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.cards-accepted .cards-img{height:45px;max-width:100%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .2s ease}.cards-accepted .cards-img:hover{transform:scale(1.05)}.iframe-container{flex:1;padding:1.5rem;background:#fff;position:relative}.iframe-container:before{content:\"\";position:absolute;top:0;left:1.5rem;right:1.5rem;height:1px;background:linear-gradient(90deg,transparent 0%,#e9ecef 50%,transparent 100%)}.payment-iframe{width:100%;height:620px;border:none;border-radius:12px;background:#fff;box-shadow:inset 0 2px 8px #0000000d}.half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:520px;width:100%}@media only screen and (max-width: 1024px){.modal-dialog,.modal-dialog.modal-lg{max-width:95%;width:95%}.payment-iframe{height:650px}.modal-header{padding:1rem 1.5rem}.modal-header .modal-title{font-size:1.125rem}.cards-accepted{padding:.75rem 1.5rem}}@media only screen and (max-width: 680px){.modal-dialog{max-width:98%;width:98%;margin:1rem;max-height:calc(100vh - 2rem)}.modal-dialog.modal-lg{max-width:98%;width:98%}.payment-iframe{height:550px}.modal-header{padding:1rem}.modal-header .modal-title{font-size:1rem}.modal-header .btn-close{width:28px;height:28px;font-size:1.25rem}.cards-accepted{padding:.5rem 1rem}.cards-accepted .cards-img{height:35px}.iframe-container{padding:.5rem}}@media only screen and (max-width: 480px){.modal-dialog{margin:.5rem;max-height:calc(100vh - 1rem);border-radius:8px}.modal-content{border-radius:8px}.payment-iframe{height:500px}.cards-accepted .cards-img{height:30px}}\n"] }]
10580
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: ConnectionService }, { type: ToastService }, { type: CoreConstantsService }, { type: ApiConstantsService }, { type: CartService }, { type: i2.ActivatedRoute }, { type: i1$5.DomSanitizer }, { type: ParametersService }], propDecorators: { paymentServiceInst: [{
10344
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: ConnectionService }, { type: ToastService }, { type: CoreConstantsService }, { type: ApiConstantsService }, { type: CartService }, { type: i2.ActivatedRoute }, { type: i1$4.DomSanitizer }, { type: ParametersService }], propDecorators: { paymentServiceInst: [{
10581
10345
  type: Input
10582
10346
  }], method: [{
10583
10347
  type: Input
@@ -10670,7 +10434,7 @@ class PaymentEcComponent {
10670
10434
  this._checkoutService.back();
10671
10435
  };
10672
10436
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaymentEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10673
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PaymentEcComponent, isStandalone: true, selector: "app-payment-ec", ngImport: i0, template: "@if(methods$ | async; as methods){\r\n<div class=\"container-fluid\">\r\n\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"card \">\r\n\t\t\t\t<div class=\"card-header text-dark text-center\">\r\n\t\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for (method of methods; track $index; let x = $index) {\r\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-outline-secondary mx-1 mb-1\"(click)=\"setMethod(method) ; setActive($event)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body text-center\">\r\n\t\t\t\t\t@if(methodData$ | async; as method){\r\n\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t@if(!loadingInternal){\r\n\t\t\t\t\t\t\t@if(isMP(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<app-mp-redirect-ec (ready)=\"verifyValidate($event)\" \t[method]=\"method\"></app-mp-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t<!-- <div class=\"method-container text-dark text-left\" *ngIf=\"isMPTarjetaDeCredito(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<div app-mp-credit-ec (ready)=\"verifyValidate()\" [public_key]=\"getPK(method)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectRedsys(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"!method.code.includes('bizum') && !method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"method.code.includes('bizum') || method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-out-ec (ready)=\"verifyValidate($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" [user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-out-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectCecaBank(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-ceca-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t</app-ceca-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isPeyPalExpress(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-paypal-express-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-paypal-express-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isMobbex(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-mobbex-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-mobbex-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBancard(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-bancard-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>-->\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isDecidir(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-decidir-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"_paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-decidir-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> \r\n\t\t\t\t\t\t\t@if(isMethodOffline(method.code)){\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-offline-ec \r\n\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<!--\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCulqi(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-culqi-ec [apiKey]=\"getPKCulqi(method)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[amount]=\"total_amount\" [customStyle]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(ready)=\"verifyValidate()\"></app-culqi-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCatastro(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-catastro-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bancard-catastro-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBamboo(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bamboo-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bamboo-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isBankTransfer(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bank-transfer-ec \r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<app-loading-inline-ec></app-loading-inline-ec>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "component", type: LoadingInlineEcComponent, selector: "app-loading-inline-ec", inputs: ["type"] }, { kind: "component", type: MpRedirectEcComponent, selector: "app-mp-redirect-ec", inputs: ["method", "total_amount", "allData"], outputs: ["ready"] }, { kind: "component", type: BankTransferEcComponent, selector: "app-bank-transfer-ec", inputs: ["method", "verifyValidate", "setLoading"] }, { kind: "component", type: OfflineEcComponent, selector: "app-offline-ec", inputs: ["method", "verifyValidate", "setLoading"] }, { kind: "component", type: DecidirEcComponent, selector: "app-decidir-ec", inputs: ["paymentServiceInst", "method", "total_amount", "allData", "user_data"], outputs: ["ready"] }] });
10437
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PaymentEcComponent, isStandalone: true, selector: "app-payment-ec", ngImport: i0, template: "@if(methods$ | async; as methods){\r\n<div class=\"container-fluid\">\r\n\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"card \">\r\n\t\t\t\t<div class=\"card-header text-dark text-center\">\r\n\t\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for (method of methods; track $index; let x = $index) {\r\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-outline-secondary mx-1 mb-1\"(click)=\"setMethod(method) ; setActive($event)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body text-center\">\r\n\t\t\t\t\t@if(methodData$ | async; as method){\r\n\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t@if(!loadingInternal){\r\n\t\t\t\t\t\t\t@if(isMP(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<app-mp-redirect-ec (ready)=\"verifyValidate($event)\" \t[method]=\"method\"></app-mp-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t<!-- <div class=\"method-container text-dark text-left\" *ngIf=\"isMPTarjetaDeCredito(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<div app-mp-credit-ec (ready)=\"verifyValidate()\" [public_key]=\"getPK(method)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectRedsys(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"!method.code.includes('bizum') && !method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"method.code.includes('bizum') || method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-out-ec (ready)=\"verifyValidate($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" [user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-out-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectCecaBank(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-ceca-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t</app-ceca-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isPeyPalExpress(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-paypal-express-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-paypal-express-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isMobbex(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-mobbex-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-mobbex-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBancard(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-bancard-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>-->\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isDecidir(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-decidir-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"_paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-decidir-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> \r\n\t\t\t\t\t\t\t@if(isMethodOffline(method.code)){\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-offline-ec \r\n\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<!--\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCulqi(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-culqi-ec [apiKey]=\"getPKCulqi(method)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[amount]=\"total_amount\" [customStyle]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(ready)=\"verifyValidate()\"></app-culqi-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCatastro(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-catastro-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bancard-catastro-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBamboo(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bamboo-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bamboo-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isBankTransfer(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bank-transfer-ec \r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<app-loading-inline-ec></app-loading-inline-ec>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: LoadingInlineEcComponent, selector: "app-loading-inline-ec", inputs: ["type"] }, { kind: "component", type: MpRedirectEcComponent, selector: "app-mp-redirect-ec", inputs: ["method", "total_amount", "allData"], outputs: ["ready"] }, { kind: "component", type: BankTransferEcComponent, selector: "app-bank-transfer-ec", inputs: ["method", "verifyValidate", "setLoading"] }, { kind: "component", type: OfflineEcComponent, selector: "app-offline-ec", inputs: ["method", "verifyValidate", "setLoading"] }, { kind: "component", type: DecidirEcComponent, selector: "app-decidir-ec", inputs: ["paymentServiceInst", "method", "total_amount", "allData", "user_data"], outputs: ["ready"] }] });
10674
10438
  }
10675
10439
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaymentEcComponent, decorators: [{
10676
10440
  type: Component,
@@ -10745,7 +10509,7 @@ class DetailCheckoutBlockEcComponent {
10745
10509
  }
10746
10510
  }
10747
10511
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DetailCheckoutBlockEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10748
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DetailCheckoutBlockEcComponent, isStandalone: true, selector: "app-detail-checkout-block-ec", ngImport: i0, template: "@if(data$ | async; as datos){\r\n <div id=\"appDetailCheckoutBlockEc\" class=\"d-flex flex-row w-100 justify-content-center flex-wrap\">\r\n @for(item of data; track $index; let i = $index){\r\n <div class=\"d-flex flex-column justify-content-center mx-sm-3 mx-2 text-center mb-4 resumen\">\r\n <i ngClass=\"mb-2 colorIconoCheckout\" [class]=\"getIcon(item.type)\"></i>\r\n <strong class=\"text-center w-100 font-brandon font-md mb-1\">{{ item.type | translate }}</strong>\r\n <span class=\"text-center w-100 font-brandon font-md text-gray\">{{ (item.amount != 0 ) ? (item.amount |\r\n ecCurrencySymbol) : ('free' | translate) }}</span>\r\n </div>\r\n }\r\n </div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
10512
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DetailCheckoutBlockEcComponent, isStandalone: true, selector: "app-detail-checkout-block-ec", ngImport: i0, template: "@if(data$ | async; as datos){\r\n <div id=\"appDetailCheckoutBlockEc\" class=\"d-flex flex-row w-100 justify-content-center flex-wrap\">\r\n @for(item of data; track $index; let i = $index){\r\n <div class=\"d-flex flex-column justify-content-center mx-sm-3 mx-2 text-center mb-4 resumen\">\r\n <i ngClass=\"mb-2 colorIconoCheckout\" [class]=\"getIcon(item.type)\"></i>\r\n <strong class=\"text-center w-100 font-brandon font-md mb-1\">{{ item.type | translate }}</strong>\r\n <span class=\"text-center w-100 font-brandon font-md text-gray\">{{ (item.amount != 0 ) ? (item.amount |\r\n ecCurrencySymbol) : ('free' | translate) }}</span>\r\n </div>\r\n }\r\n </div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
10749
10513
  }
10750
10514
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DetailCheckoutBlockEcComponent, decorators: [{
10751
10515
  type: Component,
@@ -10796,7 +10560,7 @@ class CheckoutEcComponent {
10796
10560
  this._checkoutService.setSteps(steps);
10797
10561
  }
10798
10562
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckoutEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10799
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CheckoutEcComponent, isStandalone: true, selector: "lib-checkout-ec", ngImport: i0, template: "<main class=\"py-4\" id=\"appCheckoutEc\">\r\n @if(canCheckout){\r\n <app-detail-checkout-block-ec></app-detail-checkout-block-ec>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n @if(state$ | async; as steps){ \r\n <div id=\"stepper\" class=\"bs-stepper\">\r\n <div class=\"mb-3 row d-flex justify-content-center position-relative stepperContainer\">\r\n @for(step of steps; track $index; let x=$index){\r\n <div [class]=\"'d-flex flex-column justify-content-center align-items-center px-0 col-2'\">\r\n <div [class]=\"'step d-inline-flex align-items-center'\" [attr.data-target]=\"'#test-l-'+step.step\">\r\n <span\r\n [class]=\"'px-2 rounded-circle text-white font-bold bs-stepper-number ' + (step.state == 'ready' ? 'bg-primary' : 'bg-secondary') \">{{x+1}}</span>\r\n <span class=\"bs-stepper-label\">{{ step.label |translate}}</span>\r\n </div>\r\n \r\n </div>\r\n @if(x < steps.length-1){\r\n <div class=\"col-3 d-flex align-items-center\"><hr [class]=\"'w-100 line ' + (step.state == 'doing' ? 'line-active' : 'line-default')\" ></div>\r\n }\r\n }\r\n </div>\r\n <!-- CONTENT -->\r\n <div class=\"bs-stepper-content margin-bottom-i\">\r\n <app-step-container-ec [steps]=\"steps\" />\r\n </div>\r\n </div>\r\n } \r\n </div>\r\n <!--@if(loading$ | async; as load){\r\n <div class=\"col-md-12 col-12\">\r\n <div *ngIf=\"load\" class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n <h5>{{ 'processing-payment' | translate }}</h5> \r\n </div>\r\n </div>\r\n }-->\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"wrap\">\r\n <!-- <div *ngIf=\"(loading$ | async) as load\">\r\n <app-loading-full-ec *ngIf=\"canCheckout\"></app-loading-full-ec>\r\n </div>\r\n <section id=\"cart\" *ngIf=\"!canCheckout\">\r\n <section id=\"cart bg-white h-50\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center text-center\">\r\n <h4>{{ 'empty-cart' | translate }}</h4>\r\n <h5>{{ 'empty-cart-detail' | translate }}</h5>\r\n </div>\r\n </section>\r\n </section> -->\r\n </div>\r\n }\r\n</main>\r\n", styles: [".bs-stepper-label{font-size:10px;padding-left:.5rem;font-weight:700}@media (max-width: 767.98px){.bs-stepper-label{font-size:10px;line-height:1.1;white-space:normal;word-wrap:break-word;max-width:65px;text-align:center;padding-left:0;padding-top:.2rem}}.bs-stepper-number{font-size:10px;font-weight:700;padding-top:.2rem;padding-bottom:.2rem}@media (max-width: 767.98px){.bs-stepper-number{font-size:9px;padding:.2rem .35rem;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center}}@media (max-width: 767.98px){.step{flex-direction:column!important;align-items:center!important;text-align:center;width:100%}}@media (max-width: 767.98px){.stepperContainer{margin-bottom:1.5rem!important}.stepperContainer .col-2{display:flex;justify-content:center;align-items:flex-start;min-height:50px}.stepperContainer .col-3{display:flex;align-items:center}.stepperContainer .col-3 hr{margin-top:-10px}}.line{height:1px;border:none;background-color:var(--bs-secondary);position:relative;overflow:hidden;margin:0;opacity:.75!important}.line:before{content:\"\";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--bs-primary);transition:width .5s}.line-active:before{width:100%;left:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "component", type: StepContainerEcComponent, selector: "app-step-container-ec", inputs: ["steps"] }, { kind: "component", type: DetailCheckoutBlockEcComponent, selector: "app-detail-checkout-block-ec" }] });
10563
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CheckoutEcComponent, isStandalone: true, selector: "lib-checkout-ec", ngImport: i0, template: "<main class=\"py-4\" id=\"appCheckoutEc\">\r\n @if(canCheckout){\r\n <app-detail-checkout-block-ec></app-detail-checkout-block-ec>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n @if(state$ | async; as steps){ \r\n <div id=\"stepper\" class=\"bs-stepper\">\r\n <div class=\"mb-3 row d-flex justify-content-center position-relative stepperContainer\">\r\n @for(step of steps; track $index; let x=$index){\r\n <div [class]=\"'d-flex flex-column justify-content-center align-items-center px-0 col-2'\">\r\n <div [class]=\"'step d-inline-flex align-items-center'\" [attr.data-target]=\"'#test-l-'+step.step\">\r\n <span\r\n [class]=\"'px-2 rounded-circle text-white font-bold bs-stepper-number ' + (step.state == 'ready' ? 'bg-primary' : 'bg-secondary') \">{{x+1}}</span>\r\n <span class=\"bs-stepper-label\">{{ step.label |translate}}</span>\r\n </div>\r\n \r\n </div>\r\n @if(x < steps.length-1){\r\n <div class=\"col-3 d-flex align-items-center\"><hr [class]=\"'w-100 line ' + (step.state == 'doing' ? 'line-active' : 'line-default')\" ></div>\r\n }\r\n }\r\n </div>\r\n <!-- CONTENT -->\r\n <div class=\"bs-stepper-content margin-bottom-i\">\r\n <app-step-container-ec [steps]=\"steps\" />\r\n </div>\r\n </div>\r\n } \r\n </div>\r\n <!--@if(loading$ | async; as load){\r\n <div class=\"col-md-12 col-12\">\r\n <div *ngIf=\"load\" class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n <h5>{{ 'processing-payment' | translate }}</h5> \r\n </div>\r\n </div>\r\n }-->\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"wrap\">\r\n <!-- <div *ngIf=\"(loading$ | async) as load\">\r\n <app-loading-full-ec *ngIf=\"canCheckout\"></app-loading-full-ec>\r\n </div>\r\n <section id=\"cart\" *ngIf=\"!canCheckout\">\r\n <section id=\"cart bg-white h-50\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center text-center\">\r\n <h4>{{ 'empty-cart' | translate }}</h4>\r\n <h5>{{ 'empty-cart-detail' | translate }}</h5>\r\n </div>\r\n </section>\r\n </section> -->\r\n </div>\r\n }\r\n</main>\r\n", styles: [".bs-stepper-label{font-size:10px;padding-left:.5rem;font-weight:700}@media (max-width: 767.98px){.bs-stepper-label{font-size:10px;line-height:1.1;white-space:normal;word-wrap:break-word;max-width:65px;text-align:center;padding-left:0;padding-top:.2rem}}.bs-stepper-number{font-size:10px;font-weight:700;padding-top:.2rem;padding-bottom:.2rem}@media (max-width: 767.98px){.bs-stepper-number{font-size:9px;padding:.2rem .35rem;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center}}@media (max-width: 767.98px){.step{flex-direction:column!important;align-items:center!important;text-align:center;width:100%}}@media (max-width: 767.98px){.stepperContainer{margin-bottom:1.5rem!important}.stepperContainer .col-2{display:flex;justify-content:center;align-items:flex-start;min-height:50px}.stepperContainer .col-3{display:flex;align-items:center}.stepperContainer .col-3 hr{margin-top:-10px}}.line{height:1px;border:none;background-color:var(--bs-secondary);position:relative;overflow:hidden;margin:0;opacity:.75!important}.line:before{content:\"\";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--bs-primary);transition:width .5s}.line-active:before{width:100%;left:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: StepContainerEcComponent, selector: "app-step-container-ec", inputs: ["steps"] }, { kind: "component", type: DetailCheckoutBlockEcComponent, selector: "app-detail-checkout-block-ec" }] });
10800
10564
  }
10801
10565
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckoutEcComponent, decorators: [{
10802
10566
  type: Component,
@@ -10840,7 +10604,7 @@ class SuccessEcComponent {
10840
10604
  */
10841
10605
  containsBlock(codeBlock) { return this.blocks.find((block) => block.code == codeBlock); }
10842
10606
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SuccessEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10843
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SuccessEcComponent, isStandalone: true, selector: "app-order-success-ec", ngImport: i0, template: "<div id=\"container \" class=\"flex-center generalContainer container-xl py-5\">\r\n\t@if(payments && payments[0].method.code){\r\n\t<div class=\"Main card my-2\">\r\n\t\t@if(this.blocks && this.blocks.length > 0){ \r\n\t\t\t@if(containsBlock(this.payments[0].method.code); as bloque) {\r\n\t\t\t\t<div class=\"wrap my-4 card-body\" [id]=\"bloque.code\">\r\n\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t<div class=\"col-md-12 col-12\">\r\n\t\t\t\t\t\t\t<h5 [class]=\"bloque.code+'-title'\">{{ (bloque?.translations[locale]?.name ?\r\n\t\t\t\t\t\t\t\tbloque.translations[locale].name :\r\n\t\t\t\t\t\t\t\t'thanks-for-buying') | translate\r\n\t\t\t\t\t\t\t\t| uppercase }}</h5>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t<div class=\"col-md-12 col-12 text-start\">\r\n\t\t\t\t\t\t\t<app-blocks-ec [section]=\"'info_metodo_pago'\" [blockFilters]=\"payments[0].method.code\">\r\n\t\t\t\t\t\t\t</app-blocks-ec>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column details\">\r\n\t\t\t\t\t\t\t\t<p class=\"card-text\">{{ ('number' | translate) + ': ' + params.external_reference }}</p>\r\n\t\t\t\t\t\t\t\t<p class=\"card-text\">{{((params.payment_status || 'pending') | translate)}}</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}@else {\r\n\t\t\t\t<ng-container *ngTemplateOutlet=\"notInfoToMethodTemplate ? notInfoToMethodTemplate : notInfoToMethod; context: { $implicit: params }\"></ng-container>\r\n\t\t\t}\r\n\t\t} @else{\r\n\t\t\t<ng-container *ngTemplateOutlet=\"notInfoToMethodTemplate ? notInfoToMethodTemplate : notInfoToMethod; context: { $implicit: params }\"></ng-container>\r\n\t}\r\n\t</div>\r\n\t} @else {\r\n\t\t<app-loading-full-ec></app-loading-full-ec>\t\r\n\t}\r\n</div>\r\n\r\n<ng-template #notInfoToMethod let-params>\r\n\r\n\t<div class=\"wrap my-4 card-body\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-12 col-12\">\r\n\t\t\t\t<h5 class=\"card-title titpage center-block text-center\">\r\n\t\t\t\t\t{{ 'thanks-for-buying' | translate | uppercase }}\r\n\t\t\t\t</h5>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-12 col-12 text-center py-3\">\r\n\t\t\t\t<h4 class=\"thanks-details\">{{ 'thanks-details' | translate }}</h4>\r\n\t\t\t\t<h5 class=\"number\">{{ ('number' | translate) + ': ' + params.external_reference }}</h5>\r\n\t\t\t\t<h5 class=\"pending\">{{ ((params.payment_status || 'pending') | translate) }}</h5>\r\n\t\t\t\t<!-- <h5 *ngIf=\"!from_mp\">{{ ('will_contact' | translate) }}</h5> -->\r\n\r\n\t\t\t\t<!-- <a routerLink=\"/collection\"><button class=\"comprar\">{{ 'continue-shopping' | translate }}</button></a> -->\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "component", type: BlocksEcComponent, selector: "app-blocks-ec", inputs: ["templates", "show_loading", "section", "blockFilters"] }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
10607
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SuccessEcComponent, isStandalone: true, selector: "app-order-success-ec", ngImport: i0, template: "<div id=\"container \" class=\"flex-center generalContainer container-xl py-5\">\r\n\t@if(payments && payments[0].method.code){\r\n\t<div class=\"Main card my-2\">\r\n\t\t@if(this.blocks && this.blocks.length > 0){ \r\n\t\t\t@if(containsBlock(this.payments[0].method.code); as bloque) {\r\n\t\t\t\t<div class=\"wrap my-4 card-body\" [id]=\"bloque.code\">\r\n\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t<div class=\"col-md-12 col-12\">\r\n\t\t\t\t\t\t\t<h5 [class]=\"bloque.code+'-title'\">{{ (bloque?.translations[locale]?.name ?\r\n\t\t\t\t\t\t\t\tbloque.translations[locale].name :\r\n\t\t\t\t\t\t\t\t'thanks-for-buying') | translate\r\n\t\t\t\t\t\t\t\t| uppercase }}</h5>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t<div class=\"col-md-12 col-12 text-start\">\r\n\t\t\t\t\t\t\t<app-blocks-ec [section]=\"'info_metodo_pago'\" [blockFilters]=\"payments[0].method.code\">\r\n\t\t\t\t\t\t\t</app-blocks-ec>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column details\">\r\n\t\t\t\t\t\t\t\t<p class=\"card-text\">{{ ('number' | translate) + ': ' + params.external_reference }}</p>\r\n\t\t\t\t\t\t\t\t<p class=\"card-text\">{{((params.payment_status || 'pending') | translate)}}</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}@else {\r\n\t\t\t\t<ng-container *ngTemplateOutlet=\"notInfoToMethodTemplate ? notInfoToMethodTemplate : notInfoToMethod; context: { $implicit: params }\"></ng-container>\r\n\t\t\t}\r\n\t\t} @else{\r\n\t\t\t<ng-container *ngTemplateOutlet=\"notInfoToMethodTemplate ? notInfoToMethodTemplate : notInfoToMethod; context: { $implicit: params }\"></ng-container>\r\n\t}\r\n\t</div>\r\n\t} @else {\r\n\t\t<app-loading-full-ec></app-loading-full-ec>\t\r\n\t}\r\n</div>\r\n\r\n<ng-template #notInfoToMethod let-params>\r\n\r\n\t<div class=\"wrap my-4 card-body\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-12 col-12\">\r\n\t\t\t\t<h5 class=\"card-title titpage center-block text-center\">\r\n\t\t\t\t\t{{ 'thanks-for-buying' | translate | uppercase }}\r\n\t\t\t\t</h5>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-12 col-12 text-center py-3\">\r\n\t\t\t\t<h4 class=\"thanks-details\">{{ 'thanks-details' | translate }}</h4>\r\n\t\t\t\t<h5 class=\"number\">{{ ('number' | translate) + ': ' + params.external_reference }}</h5>\r\n\t\t\t\t<h5 class=\"pending\">{{ ((params.payment_status || 'pending') | translate) }}</h5>\r\n\t\t\t\t<!-- <h5 *ngIf=\"!from_mp\">{{ ('will_contact' | translate) }}</h5> -->\r\n\r\n\t\t\t\t<!-- <a routerLink=\"/collection\"><button class=\"comprar\">{{ 'continue-shopping' | translate }}</button></a> -->\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "component", type: BlocksEcComponent, selector: "app-blocks-ec", inputs: ["templates", "show_loading", "section", "blockFilters"] }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
10844
10608
  }
10845
10609
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SuccessEcComponent, decorators: [{
10846
10610
  type: Component,
@@ -10979,7 +10743,7 @@ class OrdersListEcComponent {
10979
10743
  this._router.navigateByUrl((`account/orders/${order.number}`));
10980
10744
  }
10981
10745
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrdersListEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10982
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: OrdersListEcComponent, isStandalone: true, selector: "app-orders-ec", ngImport: i0, template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\r\n @if(!loading){\r\n <section id=\"orders\" class=\"w-100\">\r\n @if(orders && orders.length){\r\n <div class=\"row mb-1 border-bottom\">\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'number' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('number')\">{{ 'order' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'paymentState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('paymentState')\">{{ 'payment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'method' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('method')\">{{ 'shipment-method' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 \">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'methodState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('methodState')\">\r\n {{ 'shipment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'date' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('date')\">{{ 'date' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'total' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('total')\">{{ 'total' | translate }}:</p>\r\n </div>\r\n </div>\r\n @for(order of orders; track $index){\r\n <div class=\"row item border-bottom py-2\">\r\n <div class=\"col-lg-2 col-12\">\r\n <h5 class=\"fw-bold\">\r\n {{ order.number }}\r\n </h5>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n @if(order.payments && order.payments.length > 0){\r\n <p class=\"price\">\r\n {{ order.payments[0].state | translate | titlecase }}\r\n </p>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].state | translate | titlecase }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n <!-- <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</button> -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 d-flex\">\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <h5 class=\"fw-bold text-nowrap\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </h5>\r\n }\r\n <!-- <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">{{\r\n 'see-order' | translate }}</button> -->\r\n <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">\r\n <i class=\"bi bi-box-arrow-in-right\"></i></button>\r\n </div>\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </section>\r\n }@else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #errorView>\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h4>{{ 'orders-error' | translate }}</h4>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
10746
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: OrdersListEcComponent, isStandalone: true, selector: "app-orders-ec", ngImport: i0, template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\r\n @if(!loading){\r\n <section id=\"orders\" class=\"w-100\">\r\n @if(orders && orders.length){\r\n <div class=\"row mb-1 border-bottom\">\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'number' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('number')\">{{ 'order' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'paymentState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('paymentState')\">{{ 'payment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'method' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('method')\">{{ 'shipment-method' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 \">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'methodState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('methodState')\">\r\n {{ 'shipment-state' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'date' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('date')\">{{ 'date' | translate }}:</p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'total' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\r\n (click)=\"sortOrders('total')\">{{ 'total' | translate }}:</p>\r\n </div>\r\n </div>\r\n @for(order of orders; track $index){\r\n <div class=\"row item border-bottom py-2\">\r\n <div class=\"col-lg-2 col-12\">\r\n <h5 class=\"fw-bold\">\r\n {{ order.number }}\r\n </h5>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n @if(order.payments && order.payments.length > 0){\r\n <p class=\"price\">\r\n {{ order.payments[0].state | translate | titlecase }}\r\n </p>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ order.shipments[0].state | translate | titlecase }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n <!-- <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</button> -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-lg-2 col-12\">\r\n <p class=\"price\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-lg-2 col-12 d-flex\">\r\n @if(creditAmountConfigured ? showPrice : true){\r\n <h5 class=\"fw-bold text-nowrap\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </h5>\r\n }\r\n <!-- <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">{{\r\n 'see-order' | translate }}</button> -->\r\n <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">\r\n <i class=\"bi bi-box-arrow-in-right\"></i></button>\r\n </div>\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </section>\r\n }@else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #errorView>\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h4>{{ 'orders-error' | translate }}</h4>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
10983
10747
  }
10984
10748
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrdersListEcComponent, decorators: [{
10985
10749
  type: Component,
@@ -11064,7 +10828,7 @@ class OrderEcComponent {
11064
10828
  }
11065
10829
  mediaUrl = () => this._constants.mediaUrl();
11066
10830
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrderEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11067
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: OrderEcComponent, isStandalone: true, selector: "app-order-ec", ngImport: i0, template: "<main class=\"py-5\" id=\"orderEcComponent\">\r\n <div class=\"container\">\r\n @if(order$ | async; as order){\r\n <div class=\"wrap\">\r\n @if(order){\r\n\r\n <div class=\"row justify-content-between \">\r\n <div class=\"col-sm-auto col-12 font-brandon\">\r\n <h4 class=\"tit1 fw-bold\">{{ ('order' | translate) + ': ' + order.number }}</h4>\r\n </div>\r\n @if(order?.invoice){\r\n <div class=\"col-sm col-12 font-brandon\">\r\n <a target=\"_blank\" [href]=\"getUrlBase().slice(0, -1) + order.invoice\"\r\n class=\"btn btn-link btn-invoice\">\r\n <i class=\"fas fa-file-download me-1\"></i>\r\n {{ 'download' | translate }} {{ 'invoices' | translate | titlecase }}\r\n </a>\r\n </div>\r\n }\r\n <a (click)=\"back()\" class=\"col-auto text-end\">\r\n <button class=\"btn btn-outline-dark btvolver border\">{{ 'back-to-orders' | translate }}</button>\r\n </a>\r\n </div>\r\n\r\n <section id=\"orders\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col-md-2 col-12\">\r\n <p class=\"st\">{{ 'payment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'payment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0]?.method?.name | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">\r\n Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'date' | translate }}:</p>\r\n <p class=\"\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'total' | translate }}:</p>\r\n <h5 class=\"fw-bold\">\r\n {{ (order.totals.total) | ecCurrencySymbol}}\r\n\r\n </h5>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n @if(!hidePrices && allowRepeatOrders){\r\n <div class=\"text-end mt-3\">\r\n <button class=\"btn btn-primary mb-2 btnRepeatOrder\" (click)=\"repeatOrder()\">\r\n {{ 'repeat-order' | translate }}\r\n </button>\r\n </div> \r\n }\r\n\r\n <div class=\"container py-3 border-top border-bottom\">\r\n @if(order.items.length){\r\n <div class=\"row\">\r\n <div class=\"col-2 font-sm font-brandon d-none d-md-block\">\r\n {{ 'product' | translate | uppercase }}\r\n </div>\r\n <div class=\"col-4 font-sm font-brandon d-none d-md-block\">\r\n {{ 'description' | translate | uppercase }}\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div id=\"colLots\" class=\"col-1 font-sm font-brandon d-none d-md-block\">\r\n <!-- {{ 'description' | translate | uppercase }} -->\r\n {{ 'lots' | translate | uppercase }}\r\n </div>\r\n }\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'unit-price' | translate | uppercase }}\r\n </div>\r\n }\r\n <div class=\"col-1 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'quantity' | translate | uppercase }}\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 text-end font-sm font-brandon d-none d-md-block\">\r\n {{ 'total' | translate | uppercase }}\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n\r\n }\r\n @for(item of order.items; track $index; let i = $index){\r\n <div class=\"row cart-items\">\r\n <div class=\"col-5 col-md-2 py-2\">\r\n @if(item.product.variants[0]?.images?.length){\r\n <img class=\"smc maxwidth img-fluid rounded-custom \"\r\n [src]=\"mediaUrl() + item.product.variants[0].images[0]\" alt=\"\">\r\n } @else {\r\n @if(item.product.picturesdefault){\r\n <img class=\"smc maxwidth img-fluid rounded-custom\"\r\n [src]=\"mediaUrl() + item.product.picturesdefault[0]\" alt=\"\">\r\n }\r\n }\r\n </div>\r\n <div\r\n class=\"col-md-4 col-7 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <p class=\"font-brandon d-flex w-100 mb-0\">\r\n {{ item.product.name }} (Cod:{{ item.product.variants[0].code }})\r\n </p>\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div class=\"col-md-1 col-1 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <input type=\"button\" class=\"btn btn-primary btnSeguir m-0 text-center\" type=\"button\"\r\n [attr.data-bs-toggle]=\"'collapse'\" [attr.data-bs-target]=\"'#collapseExample'+i\"\r\n aria-expanded=\"false\" [attr.aria-controls]=\"'collapseExample'+i\"\r\n value=\"{{ 'see' | translate | uppercase }}\">\r\n </div>\r\n }\r\n <div class=\"container d-md-none\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ (item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) |\r\n ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ ((item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) *\r\n item.quantity) | ecCurrencySymbol}}aaaa</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\">\r\n {{ (item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) | ecCurrencySymbol}}\r\n </p>\r\n </div>\r\n }\r\n <div class=\"col-1 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-end w-100 m-0\">\r\n {{ ((item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) * item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n <div class=\"collapse\" [attr.id]=\"'collapseExample'+i\">\r\n <div class=\"card card-body\">\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">#</th>\r\n <th scope=\"col\">Estado</th>\r\n <th scope=\"col\">Cantidad</th>\r\n <th scope=\"col\">Fecha Solicitada</th>\r\n <th scope=\"col\">Fecha Estimada</th>\r\n <th scope=\"col\">Sede</th>\r\n <th scope=\"col\">Nota</th>\r\n <th scope=\"col\">Total Lote</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for( lot of item.orderItemLot; track $index){\r\n <tr>\r\n <th scope=\"row\">{{lot.id}}</th>\r\n <td>{{lot.lot_status}}</td>\r\n <td>{{lot.quantity}}</td>\r\n <td>{{ toDate(lot.date_request, 'DD/MM/YYYY') | translate }}</td>\r\n @if(lot.date_deliver){\r\n <td>{{\r\n toDate(lot.date_deliver, 'DD/MM/YYYY') | translate }}</td>\r\n } @else {\r\n <td>Pendiente</td>\r\n }\r\n <td>{{lot.shipping_address_name}}</td>\r\n <td>{{lot.notes}}</td>\r\n <td>{{lot.total_lot | ecCurrencySymbol}}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-6\"></div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"row py-4\">\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'total-products' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.items) | ecCurrencySymbol }}\r\n </div>\r\n\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'shipment' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.shipping || '0') | ecCurrencySymbol }}\r\n\r\n </div>\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'discount' |\r\n translate }}</div>\r\n }\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end text-end\">\r\n {{ (order.totals.promotion) | ecCurrencySymbol }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0 ){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'taxes' | translate }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.taxes) | ecCurrencySymbol }}</div>\r\n }\r\n\r\n <div class=\"col-6 font-brandon font-md\">{{ 'total' | translate | uppercase }}</div>\r\n <div class=\"col-6 font-brandon font-md text-end\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</main>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }] });
10831
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: OrderEcComponent, isStandalone: true, selector: "app-order-ec", ngImport: i0, template: "<main class=\"py-5\" id=\"orderEcComponent\">\r\n <div class=\"container\">\r\n @if(order$ | async; as order){\r\n <div class=\"wrap\">\r\n @if(order){\r\n\r\n <div class=\"row justify-content-between \">\r\n <div class=\"col-sm-auto col-12 font-brandon\">\r\n <h4 class=\"tit1 fw-bold\">{{ ('order' | translate) + ': ' + order.number }}</h4>\r\n </div>\r\n @if(order?.invoice){\r\n <div class=\"col-sm col-12 font-brandon\">\r\n <a target=\"_blank\" [href]=\"getUrlBase().slice(0, -1) + order.invoice\"\r\n class=\"btn btn-link btn-invoice\">\r\n <i class=\"fas fa-file-download me-1\"></i>\r\n {{ 'download' | translate }} {{ 'invoices' | translate | titlecase }}\r\n </a>\r\n </div>\r\n }\r\n <a (click)=\"back()\" class=\"col-auto text-end\">\r\n <button class=\"btn btn-outline-dark btvolver border\">{{ 'back-to-orders' | translate }}</button>\r\n </a>\r\n </div>\r\n\r\n <section id=\"orders\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col-md-2 col-12\">\r\n <p class=\"st\">{{ 'payment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'payment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0]?.method?.name | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">\r\n Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'date' | translate }}:</p>\r\n <p class=\"\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'total' | translate }}:</p>\r\n <h5 class=\"fw-bold\">\r\n {{ (order.totals.total) | ecCurrencySymbol}}\r\n\r\n </h5>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n @if(!hidePrices && allowRepeatOrders){\r\n <div class=\"text-end mt-3\">\r\n <button class=\"btn btn-primary mb-2 btnRepeatOrder\" (click)=\"repeatOrder()\">\r\n {{ 'repeat-order' | translate }}\r\n </button>\r\n </div> \r\n }\r\n\r\n <div class=\"container py-3 border-top border-bottom\">\r\n @if(order.items.length){\r\n <div class=\"row\">\r\n <div class=\"col-2 font-sm font-brandon d-none d-md-block\">\r\n {{ 'product' | translate | uppercase }}\r\n </div>\r\n <div class=\"col-4 font-sm font-brandon d-none d-md-block\">\r\n {{ 'description' | translate | uppercase }}\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div id=\"colLots\" class=\"col-1 font-sm font-brandon d-none d-md-block\">\r\n <!-- {{ 'description' | translate | uppercase }} -->\r\n {{ 'lots' | translate | uppercase }}\r\n </div>\r\n }\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'unit-price' | translate | uppercase }}\r\n </div>\r\n }\r\n <div class=\"col-1 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'quantity' | translate | uppercase }}\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 text-end font-sm font-brandon d-none d-md-block\">\r\n {{ 'total' | translate | uppercase }}\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n\r\n }\r\n @for(item of order.items; track $index; let i = $index){\r\n <div class=\"row cart-items\">\r\n <div class=\"col-5 col-md-2 py-2\">\r\n @if(item.product.variants[0]?.images?.length){\r\n <img class=\"smc maxwidth img-fluid rounded-custom \"\r\n [src]=\"mediaUrl() + item.product.variants[0].images[0]\" alt=\"\">\r\n } @else {\r\n @if(item.product.picturesdefault){\r\n <img class=\"smc maxwidth img-fluid rounded-custom\"\r\n [src]=\"mediaUrl() + item.product.picturesdefault[0]\" alt=\"\">\r\n }\r\n }\r\n </div>\r\n <div\r\n class=\"col-md-4 col-7 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <p class=\"font-brandon d-flex w-100 mb-0\">\r\n {{ item.product.name }} (Cod:{{ item.product.variants[0].code }})\r\n </p>\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div class=\"col-md-1 col-1 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <input type=\"button\" class=\"btn btn-primary btnSeguir m-0 text-center\" type=\"button\"\r\n [attr.data-bs-toggle]=\"'collapse'\" [attr.data-bs-target]=\"'#collapseExample'+i\"\r\n aria-expanded=\"false\" [attr.aria-controls]=\"'collapseExample'+i\"\r\n value=\"{{ 'see' | translate | uppercase }}\">\r\n </div>\r\n }\r\n <div class=\"container d-md-none\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ (item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) |\r\n ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ ((item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) *\r\n item.quantity) | ecCurrencySymbol}}aaaa</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\">\r\n {{ (item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) | ecCurrencySymbol}}\r\n </p>\r\n </div>\r\n }\r\n <div class=\"col-1 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-end w-100 m-0\">\r\n {{ ((item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) * item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n <div class=\"collapse\" [attr.id]=\"'collapseExample'+i\">\r\n <div class=\"card card-body\">\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">#</th>\r\n <th scope=\"col\">Estado</th>\r\n <th scope=\"col\">Cantidad</th>\r\n <th scope=\"col\">Fecha Solicitada</th>\r\n <th scope=\"col\">Fecha Estimada</th>\r\n <th scope=\"col\">Sede</th>\r\n <th scope=\"col\">Nota</th>\r\n <th scope=\"col\">Total Lote</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for( lot of item.orderItemLot; track $index){\r\n <tr>\r\n <th scope=\"row\">{{lot.id}}</th>\r\n <td>{{lot.lot_status}}</td>\r\n <td>{{lot.quantity}}</td>\r\n <td>{{ toDate(lot.date_request, 'DD/MM/YYYY') | translate }}</td>\r\n @if(lot.date_deliver){\r\n <td>{{\r\n toDate(lot.date_deliver, 'DD/MM/YYYY') | translate }}</td>\r\n } @else {\r\n <td>Pendiente</td>\r\n }\r\n <td>{{lot.shipping_address_name}}</td>\r\n <td>{{lot.notes}}</td>\r\n <td>{{lot.total_lot | ecCurrencySymbol}}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-6\"></div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"row py-4\">\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'total-products' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.items) | ecCurrencySymbol }}\r\n </div>\r\n\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'shipment' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.shipping || '0') | ecCurrencySymbol }}\r\n\r\n </div>\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'discount' |\r\n translate }}</div>\r\n }\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end text-end\">\r\n {{ (order.totals.promotion) | ecCurrencySymbol }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0 ){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'taxes' | translate }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.taxes) | ecCurrencySymbol }}</div>\r\n }\r\n\r\n <div class=\"col-6 font-brandon font-md\">{{ 'total' | translate | uppercase }}</div>\r\n <div class=\"col-6 font-brandon font-md text-end\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</main>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }] });
11068
10832
  }
11069
10833
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrderEcComponent, decorators: [{
11070
10834
  type: Component,
@@ -11257,7 +11021,7 @@ class FaqsEcComponent {
11257
11021
  }).catch(err => this._toastService.show('empty-faqs'));
11258
11022
  }
11259
11023
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FaqsEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FaqsEcComponent, isStandalone: true, selector: "app-faqs-ec", ngImport: i0, template: "<section class=\"formulario container py-2\">\r\n@if(faqs$ | async; as faqs){\r\n @if(!empty_faqs){\r\n <div class=\"d-flex align-items-start row\">\r\n <div class=\"nav flex-column nav-pills me-3 col-2\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\r\n @for(faq of faqs; track $index; let i = $index){\r\n <button [class]=\"'nav-link '+(i==0 ? 'active': '')\" [id]=\"'v-pills-'+faq.code+'-tab'\" data-bs-toggle=\"pill\" [attr.data-bs-target]=\"'#v-pills-'+faq.code\" type=\"button\" role=\"tab\" [attr.aria-controls]=\"'v-pills-'+faq.code\" [attr.aria-selected]=\"(i==0)\">{{faq.title}}</button>\r\n }\r\n </div>\r\n <div class=\"tab-content col-9\" id=\"v-pills-tabContent\">\r\n @for(faq of faqs; track $index; let i = $index){\r\n <div [class]=\"'tab-pane fade '+(i==0 ? 'show active' : '')\" [id]=\"'v-pills-'+faq.code\" role=\"tabpanel\" [attr.aria-labelledby]=\"'v-pills-'+faq.code+'-tab'\" tabindex=\"0\">\r\n <div class=\"accordion\" id=\"accordionFaqs\">\r\n @for(item of faq.questions; track $index; let i = $index){\r\n <div class=\"accordion-item\">\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#collapse-'+i\" aria-expanded=\"false\" [attr.aria-controls]=\"'collapse-'+i\">\r\n {{item.question}}\r\n </button>\r\n </h2>\r\n <div [id]=\"'collapse-'+i\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFaqs\">\r\n <div class=\"accordion-body\">\r\n <p>{{item.answer}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"d-flex justify-content-center\">\r\n {{ 'empty_faqs' | translate }}\r\n </div>\r\n }\r\n}@else {\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n</section>", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
11024
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FaqsEcComponent, isStandalone: true, selector: "app-faqs-ec", ngImport: i0, template: "<section class=\"formulario container py-2\">\r\n@if(faqs$ | async; as faqs){\r\n @if(!empty_faqs){\r\n <div class=\"d-flex align-items-start row\">\r\n <div class=\"nav flex-column nav-pills me-3 col-2\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\r\n @for(faq of faqs; track $index; let i = $index){\r\n <button [class]=\"'nav-link '+(i==0 ? 'active': '')\" [id]=\"'v-pills-'+faq.code+'-tab'\" data-bs-toggle=\"pill\" [attr.data-bs-target]=\"'#v-pills-'+faq.code\" type=\"button\" role=\"tab\" [attr.aria-controls]=\"'v-pills-'+faq.code\" [attr.aria-selected]=\"(i==0)\">{{faq.title}}</button>\r\n }\r\n </div>\r\n <div class=\"tab-content col-9\" id=\"v-pills-tabContent\">\r\n @for(faq of faqs; track $index; let i = $index){\r\n <div [class]=\"'tab-pane fade '+(i==0 ? 'show active' : '')\" [id]=\"'v-pills-'+faq.code\" role=\"tabpanel\" [attr.aria-labelledby]=\"'v-pills-'+faq.code+'-tab'\" tabindex=\"0\">\r\n <div class=\"accordion\" id=\"accordionFaqs\">\r\n @for(item of faq.questions; track $index; let i = $index){\r\n <div class=\"accordion-item\">\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#collapse-'+i\" aria-expanded=\"false\" [attr.aria-controls]=\"'collapse-'+i\">\r\n {{item.question}}\r\n </button>\r\n </h2>\r\n <div [id]=\"'collapse-'+i\" class=\"accordion-collapse collapse\" data-bs-parent=\"#accordionFaqs\">\r\n <div class=\"accordion-body\">\r\n <p>{{item.answer}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }@else {\r\n <div class=\"d-flex justify-content-center\">\r\n {{ 'empty_faqs' | translate }}\r\n </div>\r\n }\r\n}@else {\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n</section>", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
11261
11025
  }
11262
11026
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FaqsEcComponent, decorators: [{
11263
11027
  type: Component,
@@ -11512,7 +11276,7 @@ class RatingEcComponent extends ComponentHelper {
11512
11276
  }
11513
11277
  };
11514
11278
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RatingEcComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
11515
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RatingEcComponent, isStandalone: true, selector: "app-rating-ec", inputs: { template: "template", type: "type", ratingValue: "ratingValue" }, usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <ng-template #stars let-score=\"score\">\r\n @for (value of score; track $index) {\r\n @switch (value) {\r\n @case (1) {\r\n <i class=\"me-1 bi bi-star-fill text-warning star\"></i> \r\n }\r\n @case (0.5) {\r\n <i class=\"me-1 bi bi-star-half text-warning star\"></i>\r\n } \r\n @default {\r\n <i class=\"me-1 bi bi-star text-muted star\"></i>\r\n }\r\n }\r\n }\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"'stars'\"\r\n [ngTemplateOutlet]=\"template ? template : stars\"\r\n [ngTemplateOutletContext]=\"{score:score, ratingValue:ratingValue}\">\r\n </ng-container>\r\n</ng-container> \r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
11279
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RatingEcComponent, isStandalone: true, selector: "app-rating-ec", inputs: { template: "template", type: "type", ratingValue: "ratingValue" }, usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <ng-template #stars let-score=\"score\">\r\n @for (value of score; track $index) {\r\n @switch (value) {\r\n @case (1) {\r\n <i class=\"me-1 bi bi-star-fill text-warning star\"></i> \r\n }\r\n @case (0.5) {\r\n <i class=\"me-1 bi bi-star-half text-warning star\"></i>\r\n } \r\n @default {\r\n <i class=\"me-1 bi bi-star text-muted star\"></i>\r\n }\r\n }\r\n }\r\n </ng-template>\r\n <ng-container *ngSwitchCase=\"'stars'\"\r\n [ngTemplateOutlet]=\"template ? template : stars\"\r\n [ngTemplateOutletContext]=\"{score:score, ratingValue:ratingValue}\">\r\n </ng-container>\r\n</ng-container> \r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
11516
11280
  }
11517
11281
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RatingEcComponent, decorators: [{
11518
11282
  type: Component,
@@ -11679,7 +11443,7 @@ class ReviewsEcComponent extends ComponentHelper {
11679
11443
  _authService = inject(AuthService);
11680
11444
  isAuthenticated$ = this._authService.isAuthenticated();
11681
11445
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReviewsEcComponent, deps: [{ token: ReviewsService }, { token: CoreConstantsService }], target: i0.ɵɵFactoryTarget.Component });
11682
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ReviewsEcComponent, isStandalone: true, selector: "app-reviews-ec", inputs: { product: "product" }, usesInheritance: true, ngImport: i0, template: "<div class=\"row px-3\">\r\n <div class=\"col-12 pb-2 pb-md-0\">\r\n <div class=\"row w-100\">\r\n <div class=\"col-12 col-md-6\">\r\n <h4 class=\"mb-0 pt-2 pb-1\">{{\"product-review\" | translate}}</h4>\r\n @if(isAuthenticated$ ){\r\n <small class=\"pb-2 escribir\" data-bs-toggle=\"modal\" href=\"#modalReview\">\r\n {{\"write-a-review\" | translate}}\r\n <i class=\"bi bi-pencil-square\"></i>\r\n </small>\r\n }\r\n </div>\r\n <div class=\"col-12 col-md-6 d-flex align-items-center justify-content-start justify-content-md-end\">\r\n <div class=\"puntaje d-flex\">\r\n <ng-template #number let-ratingValue=\"ratingValue\">\r\n <p class=\"puntos mb-0\">\r\n {{ratingValue}}\r\n </p>\r\n </ng-template>\r\n <app-rating-ec [ratingValue]=\"product.rating\" [template]=\"number\"></app-rating-ec>\r\n <div class=\"ms-2\">\r\n <div class=\"stars mb-1\">\r\n <app-rating-ec [ratingValue]=\"product.rating\"></app-rating-ec>\r\n </div>\r\n <small><strong>{{reviews.total}} {{\"reviews\" | translate}}</strong></small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"tab-content mt-4\" id=\"myTabContent\">\r\n <div class=\"row g-5\">\r\n @for (item of reviews.items; track $index) {\r\n <div class=\"col-12 col-sm-6 col-md-4\">\r\n <div class=\"row\">\r\n <div class=\"col-9 col-sm-10\">\r\n <div class=\"ranking\">\r\n <app-rating-ec [ratingValue]=\"item.rating\"></app-rating-ec>\r\n </div>\r\n <h4 class=\"text-uppercase\">{{item.title}}</h4>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"ususario\">\r\n <i class=\"bi bi-person-fill\"></i> {{ getAuthorName(item.author) }}\r\n </div>\r\n </div>\r\n <div class=\"resenia mt-2\">\r\n <p style=\"font-size: 14px;\"> {{item.comment}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n @if (getPages() && getPages().length > 1) {\r\n <nav aria-label=\"Page navigation example\">\r\n <ul class=\"pagination custom-pagination\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link cursor-pointer\" (click)=\"first()\" aria-label=\"Previous\">\r\n <span aria-hidden=\"true\">&laquo;</span>\r\n </a>\r\n </li>\r\n @for (page of getPages(); track $index) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link cursor-pointer\" (click)=\"goPage(page)\">{{ page }}</a>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <a class=\"page-link cursor-pointer\" (click)=\"next()\" aria-label=\"Next\">\r\n <span aria-hidden=\"true\">&raquo;</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".custom-pagination{display:flex;justify-content:center;list-style:none;padding:0;margin-top:20px}.custom-pagination .page-item{margin:0 5px}.custom-pagination .page-link{color:#131716;background-color:#f3f3f3;border:1px solid #ccc;padding:8px 12px;border-radius:5px;text-decoration:none;transition:background-color .3s ease}.custom-pagination .page-link:hover{background-color:#0b0c0c;color:#fff}.custom-pagination .page-item.active .page-link{background-color:#131716;color:#fff;font-weight:700}.cursor-pointer{cursor:pointer}\n"], dependencies: [{ kind: "component", type: RatingEcComponent, selector: "app-rating-ec", inputs: ["template", "type", "ratingValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
11446
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ReviewsEcComponent, isStandalone: true, selector: "app-reviews-ec", inputs: { product: "product" }, usesInheritance: true, ngImport: i0, template: "<div class=\"row px-3\">\r\n <div class=\"col-12 pb-2 pb-md-0\">\r\n <div class=\"row w-100\">\r\n <div class=\"col-12 col-md-6\">\r\n <h4 class=\"mb-0 pt-2 pb-1\">{{\"product-review\" | translate}}</h4>\r\n @if(isAuthenticated$ ){\r\n <small class=\"pb-2 escribir\" data-bs-toggle=\"modal\" href=\"#modalReview\">\r\n {{\"write-a-review\" | translate}}\r\n <i class=\"bi bi-pencil-square\"></i>\r\n </small>\r\n }\r\n </div>\r\n <div class=\"col-12 col-md-6 d-flex align-items-center justify-content-start justify-content-md-end\">\r\n <div class=\"puntaje d-flex\">\r\n <ng-template #number let-ratingValue=\"ratingValue\">\r\n <p class=\"puntos mb-0\">\r\n {{ratingValue}}\r\n </p>\r\n </ng-template>\r\n <app-rating-ec [ratingValue]=\"product.rating\" [template]=\"number\"></app-rating-ec>\r\n <div class=\"ms-2\">\r\n <div class=\"stars mb-1\">\r\n <app-rating-ec [ratingValue]=\"product.rating\"></app-rating-ec>\r\n </div>\r\n <small><strong>{{reviews.total}} {{\"reviews\" | translate}}</strong></small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n\r\n <div class=\"tab-content mt-4\" id=\"myTabContent\">\r\n <div class=\"row g-5\">\r\n @for (item of reviews.items; track $index) {\r\n <div class=\"col-12 col-sm-6 col-md-4\">\r\n <div class=\"row\">\r\n <div class=\"col-9 col-sm-10\">\r\n <div class=\"ranking\">\r\n <app-rating-ec [ratingValue]=\"item.rating\"></app-rating-ec>\r\n </div>\r\n <h4 class=\"text-uppercase\">{{item.title}}</h4>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"ususario\">\r\n <i class=\"bi bi-person-fill\"></i> {{ getAuthorName(item.author) }}\r\n </div>\r\n </div>\r\n <div class=\"resenia mt-2\">\r\n <p style=\"font-size: 14px;\"> {{item.comment}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n }\r\n @if (getPages() && getPages().length > 1) {\r\n <nav aria-label=\"Page navigation example\">\r\n <ul class=\"pagination custom-pagination\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link cursor-pointer\" (click)=\"first()\" aria-label=\"Previous\">\r\n <span aria-hidden=\"true\">&laquo;</span>\r\n </a>\r\n </li>\r\n @for (page of getPages(); track $index) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link cursor-pointer\" (click)=\"goPage(page)\">{{ page }}</a>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <a class=\"page-link cursor-pointer\" (click)=\"next()\" aria-label=\"Next\">\r\n <span aria-hidden=\"true\">&raquo;</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".custom-pagination{display:flex;justify-content:center;list-style:none;padding:0;margin-top:20px}.custom-pagination .page-item{margin:0 5px}.custom-pagination .page-link{color:#131716;background-color:#f3f3f3;border:1px solid #ccc;padding:8px 12px;border-radius:5px;text-decoration:none;transition:background-color .3s ease}.custom-pagination .page-link:hover{background-color:#0b0c0c;color:#fff}.custom-pagination .page-item.active .page-link{background-color:#131716;color:#fff;font-weight:700}.cursor-pointer{cursor:pointer}\n"], dependencies: [{ kind: "component", type: RatingEcComponent, selector: "app-rating-ec", inputs: ["template", "type", "ratingValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
11683
11447
  }
11684
11448
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReviewsEcComponent, decorators: [{
11685
11449
  type: Component,
@@ -11793,13 +11557,13 @@ class ReviewsFormEcComponent extends ComponentHelper {
11793
11557
  * @returns
11794
11558
  */
11795
11559
  updateReviews = () => this.reviewsService.updateReviewsByCode(this.product.id);
11796
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReviewsFormEcComponent, deps: [{ token: ToastService }, { token: i2.Router }, { token: CoreConstantsService }, { token: i1$4.FormBuilder }, { token: ProductsService }, { token: AuthService }, { token: ReviewsService }], target: i0.ɵɵFactoryTarget.Component });
11797
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ReviewsFormEcComponent, isStandalone: true, selector: "app-reviews-form-ec", inputs: { product: "product", withAuthenticated: "withAuthenticated", max: "max" }, outputs: { ready: "ready" }, usesInheritance: true, ngImport: i0, template: "<form class=\"formResenia\" [formGroup]=\"reviews_form\" (submit)=\"toastReviewsForm($event)\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label class=\"pt-2\">{{\"product\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <p class=\"mt-1 mb-3\">{{ product.name }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Calificaci\u00F3n -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label class=\"pt-2\">{{\"rating\" | translate}}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <div class=\"cont-star mt-1 mb-3\">\r\n @for(star of limit; track $index){\r\n <input type=\"radio\" class=\"d-none\" [id]=\"'star-' + (limit.length - $index)\" [value]=\"limit.length - $index\"\r\n formControlName=\"rating\">\r\n <label class=\"star-label\" [for]=\"'star-' + (limit.length - $index)\">\r\n <i class=\"bi bi-star-fill\"></i>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Resumen -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label for=\"review-summary\" class=\"pt-2\">{{\"summary\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <textarea id=\"review-summary\" class=\"w-100\" placeholder=\"\u00BFC\u00F3mo fue tu experiencia?\" formControlName=\"title\"></textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- Detalle -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label for=\"review-detail\" class=\"pt-2\">{{\"detail\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <textarea id=\"review-detail\" class=\"w-100\" placeholder=\"Contanos por qu\u00E9\" formControlName=\"comment\"></textarea>\r\n <small class=\"text-uppercase\">(*) {{\"mandatory-fields\" | translate }}</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Bot\u00F3n de env\u00EDo -->\r\n <div class=\"row\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-8\">\r\n <button type=\"submit\" class=\"btn btn-dark py-2 px-4 rounded-0 mt-4\"\r\n [disabled]=\"reviews_form.invalid\">{{\"submit-review\" | translate }}</button>\r\n </div>\r\n </div> \r\n</form>", styles: [".cont-star{direction:rtl;unicode-bidi:bidi-override;display:flex;justify-content:end}.cont-star label{display:flex}.cont-star label i{color:#ccc!important;cursor:pointer;font-size:26px;line-height:30px}.cont-star label i:hover,.cont-star label:hover~label i{color:#ffc107!important}input[type=radio]:checked~label i{color:#ffc107!important}input[type=radio]:checked~label i:before,label:hover i:before{content:\"\\f586\"}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
11560
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReviewsFormEcComponent, deps: [{ token: ToastService }, { token: i2.Router }, { token: CoreConstantsService }, { token: i1$3.FormBuilder }, { token: ProductsService }, { token: AuthService }, { token: ReviewsService }], target: i0.ɵɵFactoryTarget.Component });
11561
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ReviewsFormEcComponent, isStandalone: true, selector: "app-reviews-form-ec", inputs: { product: "product", withAuthenticated: "withAuthenticated", max: "max" }, outputs: { ready: "ready" }, usesInheritance: true, ngImport: i0, template: "<form class=\"formResenia\" [formGroup]=\"reviews_form\" (submit)=\"toastReviewsForm($event)\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label class=\"pt-2\">{{\"product\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <p class=\"mt-1 mb-3\">{{ product.name }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Calificaci\u00F3n -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label class=\"pt-2\">{{\"rating\" | translate}}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <div class=\"cont-star mt-1 mb-3\">\r\n @for(star of limit; track $index){\r\n <input type=\"radio\" class=\"d-none\" [id]=\"'star-' + (limit.length - $index)\" [value]=\"limit.length - $index\"\r\n formControlName=\"rating\">\r\n <label class=\"star-label\" [for]=\"'star-' + (limit.length - $index)\">\r\n <i class=\"bi bi-star-fill\"></i>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Resumen -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label for=\"review-summary\" class=\"pt-2\">{{\"summary\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <textarea id=\"review-summary\" class=\"w-100\" placeholder=\"\u00BFC\u00F3mo fue tu experiencia?\" formControlName=\"title\"></textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- Detalle -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label for=\"review-detail\" class=\"pt-2\">{{\"detail\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <textarea id=\"review-detail\" class=\"w-100\" placeholder=\"Contanos por qu\u00E9\" formControlName=\"comment\"></textarea>\r\n <small class=\"text-uppercase\">(*) {{\"mandatory-fields\" | translate }}</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Bot\u00F3n de env\u00EDo -->\r\n <div class=\"row\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-8\">\r\n <button type=\"submit\" class=\"btn btn-dark py-2 px-4 rounded-0 mt-4\"\r\n [disabled]=\"reviews_form.invalid\">{{\"submit-review\" | translate }}</button>\r\n </div>\r\n </div> \r\n</form>", styles: [".cont-star{direction:rtl;unicode-bidi:bidi-override;display:flex;justify-content:end}.cont-star label{display:flex}.cont-star label i{color:#ccc!important;cursor:pointer;font-size:26px;line-height:30px}.cont-star label i:hover,.cont-star label:hover~label i{color:#ffc107!important}input[type=radio]:checked~label i{color:#ffc107!important}input[type=radio]:checked~label i:before,label:hover i:before{content:\"\\f586\"}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
11798
11562
  }
11799
11563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReviewsFormEcComponent, decorators: [{
11800
11564
  type: Component,
11801
11565
  args: [{ selector: 'app-reviews-form-ec', standalone: true, imports: [TranslateModule, ReactiveFormsModule], template: "<form class=\"formResenia\" [formGroup]=\"reviews_form\" (submit)=\"toastReviewsForm($event)\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label class=\"pt-2\">{{\"product\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <p class=\"mt-1 mb-3\">{{ product.name }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Calificaci\u00F3n -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label class=\"pt-2\">{{\"rating\" | translate}}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <div class=\"cont-star mt-1 mb-3\">\r\n @for(star of limit; track $index){\r\n <input type=\"radio\" class=\"d-none\" [id]=\"'star-' + (limit.length - $index)\" [value]=\"limit.length - $index\"\r\n formControlName=\"rating\">\r\n <label class=\"star-label\" [for]=\"'star-' + (limit.length - $index)\">\r\n <i class=\"bi bi-star-fill\"></i>\r\n </label>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Resumen -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label for=\"review-summary\" class=\"pt-2\">{{\"summary\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <textarea id=\"review-summary\" class=\"w-100\" placeholder=\"\u00BFC\u00F3mo fue tu experiencia?\" formControlName=\"title\"></textarea>\r\n </div>\r\n </div>\r\n\r\n <!-- Detalle -->\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <label for=\"review-detail\" class=\"pt-2\">{{\"detail\" | translate }}*</label>\r\n </div>\r\n <div class=\"col-8\">\r\n <textarea id=\"review-detail\" class=\"w-100\" placeholder=\"Contanos por qu\u00E9\" formControlName=\"comment\"></textarea>\r\n <small class=\"text-uppercase\">(*) {{\"mandatory-fields\" | translate }}</small>\r\n </div>\r\n </div>\r\n\r\n <!-- Bot\u00F3n de env\u00EDo -->\r\n <div class=\"row\">\r\n <div class=\"col-4\"></div>\r\n <div class=\"col-8\">\r\n <button type=\"submit\" class=\"btn btn-dark py-2 px-4 rounded-0 mt-4\"\r\n [disabled]=\"reviews_form.invalid\">{{\"submit-review\" | translate }}</button>\r\n </div>\r\n </div> \r\n</form>", styles: [".cont-star{direction:rtl;unicode-bidi:bidi-override;display:flex;justify-content:end}.cont-star label{display:flex}.cont-star label i{color:#ccc!important;cursor:pointer;font-size:26px;line-height:30px}.cont-star label i:hover,.cont-star label:hover~label i{color:#ffc107!important}input[type=radio]:checked~label i{color:#ffc107!important}input[type=radio]:checked~label i:before,label:hover i:before{content:\"\\f586\"}\n"] }]
11802
- }], ctorParameters: () => [{ type: ToastService }, { type: i2.Router }, { type: CoreConstantsService }, { type: i1$4.FormBuilder }, { type: ProductsService }, { type: AuthService }, { type: ReviewsService }], propDecorators: { product: [{
11566
+ }], ctorParameters: () => [{ type: ToastService }, { type: i2.Router }, { type: CoreConstantsService }, { type: i1$3.FormBuilder }, { type: ProductsService }, { type: AuthService }, { type: ReviewsService }], propDecorators: { product: [{
11803
11567
  type: Input
11804
11568
  }], withAuthenticated: [{
11805
11569
  type: Input
@@ -12054,13 +11818,13 @@ class StoresEcComponent extends ComponentHelper {
12054
11818
  marker.setAnimation(null);
12055
11819
  });
12056
11820
  }
12057
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, deps: [{ token: StoresService }, { token: CoreConstantsService }, { token: i1$5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
11821
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, deps: [{ token: StoresService }, { token: CoreConstantsService }, { token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
12058
11822
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StoresEcComponent, isStandalone: true, selector: "app-store-ec", usesInheritance: true, ngImport: i0, template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\r\n <strong>{{ 'stores' | translate }}</strong>\r\n</div>\r\n@if(stores){\r\n<div class=\"row\">\r\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\r\n <div class=\"row\">\r\n <div class=\"form-group w-100\">\r\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\r\n id=\"exampleFormControlSelect1\">\r\n <option selected [value]=\"''\">Seleccione provincia</option>\r\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\r\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\r\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\r\n <div class=\"col-12\">\r\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\r\n <label>{{ store.address }}</label>\r\n <label>{{ store.phone }}</label>\r\n <div [innerHtml]=\"store.note\"></div>\r\n <div class=\"text-right\">\r\n\r\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\r\n\r\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\r\n </div>\r\n</div>\r\n}@else {\r\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\r\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\r\n</div>\r\n}\r\n\r\n\r\n\r\n<ng-template #loading>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }] });
12059
11823
  }
12060
11824
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, decorators: [{
12061
11825
  type: Component,
12062
11826
  args: [{ selector: 'app-store-ec', standalone: true, imports: [TranslateModule], template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\r\n <strong>{{ 'stores' | translate }}</strong>\r\n</div>\r\n@if(stores){\r\n<div class=\"row\">\r\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\r\n <div class=\"row\">\r\n <div class=\"form-group w-100\">\r\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\r\n id=\"exampleFormControlSelect1\">\r\n <option selected [value]=\"''\">Seleccione provincia</option>\r\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\r\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\r\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\r\n <div class=\"col-12\">\r\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\r\n <label>{{ store.address }}</label>\r\n <label>{{ store.phone }}</label>\r\n <div [innerHtml]=\"store.note\"></div>\r\n <div class=\"text-right\">\r\n\r\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\r\n\r\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\r\n </div>\r\n</div>\r\n}@else {\r\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\r\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\r\n</div>\r\n}\r\n\r\n\r\n\r\n<ng-template #loading>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"] }]
12063
- }], ctorParameters: () => [{ type: StoresService }, { type: CoreConstantsService }, { type: i1$5.DomSanitizer }] });
11827
+ }], ctorParameters: () => [{ type: StoresService }, { type: CoreConstantsService }, { type: i1$4.DomSanitizer }] });
12064
11828
 
12065
11829
  class PriceRangeFilterComponent {
12066
11830
  _filtersService = inject(FiltersService);
@@ -12187,7 +11951,7 @@ class PriceRangeFilterComponent {
12187
11951
  return value;
12188
11952
  }
12189
11953
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceRangeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12190
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PriceRangeFilterComponent, isStandalone: true, selector: "lib-price-range-filter", inputs: { filter: "filter" }, outputs: { rangeChanged: "rangeChanged" }, ngImport: i0, template: "<div class=\"slider\">\r\n <div class=\"slider\">\r\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"range-input d-flex gap-2\">\r\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n</div>\r\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\r\n<div class=\"price-container mt-2\">\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00EDnimo:</span>\r\n <span class=\"price-value\">\r\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\r\n </span>\r\n </div>\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00E1ximo:</span>\r\n <span class=\"price-value price-value-right\">\r\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\r\n </span>\r\n </div>\r\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"], dependencies: [{ kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11954
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PriceRangeFilterComponent, isStandalone: true, selector: "lib-price-range-filter", inputs: { filter: "filter" }, outputs: { rangeChanged: "rangeChanged" }, ngImport: i0, template: "<div class=\"slider\">\r\n <div class=\"slider\">\r\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"range-input d-flex gap-2\">\r\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n</div>\r\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\r\n<div class=\"price-container mt-2\">\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00EDnimo:</span>\r\n <span class=\"price-value\">\r\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\r\n </span>\r\n </div>\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00E1ximo:</span>\r\n <span class=\"price-value price-value-right\">\r\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\r\n </span>\r\n </div>\r\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"], dependencies: [{ kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12191
11955
  }
12192
11956
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceRangeFilterComponent, decorators: [{
12193
11957
  type: Component,
@@ -12447,5 +12211,5 @@ const directives = [
12447
12211
  * Generated bundle index. Do not edit.
12448
12212
  */
12449
12213
 
12450
- export { AccountEcComponent, AddressingService, AnalyticsService, AuthEcComponent, AuthService, AuthStorageService, BaseApiService, BlockBannerBoxEcComponent, BlockBannerFullEcComponent, BlockFormContactEcComponent, BlockHtmlEcComponent, BlockNewsletterEcComponent, BlockProductsEcComponent, BlocksEcComponent, BlocksRepositoryService, BlocksService, BreadcrumbEcComponent, CartEcComponent, CartItemEcComponent, CartService, ChannelService, CheckoutEcComponent, CheckoutService, CollectionEcComponent, ConfirmAccountEcComponent, ContactEcComponent, CoreConstantsService, CouponEcComponent, CurrencyService, DopplerService, ENVIRONMENT_TOKEN, EcCurrencySymbolPipe, EcSafeHtmlPipe, FacebookPixelService, FaqsEcComponent, FiltersEcComponent, FiltersService, FiltersSortEcComponent, FooterEcComponent, ForgotPasswordEcComponent, FormService, GTMService, GoogleAnalyticsService, HeaderEcComponent, HomeEcComponent, LoadingFullEcComponent, LoadingInlineEcComponent, LoadingSectionEcComponent, LocalStorageService, LoginFormEcComponent, MagnizoomEcComponent, MetricoolPixelService, NgxLocalStorageService, OptionsService, OrderEcComponent, OrderUtilityService, OrdersListEcComponent, OrdersService, PaginationService, ParametersService, ParamsContext, PasswordResetEcComponent, PaymentService, PriceEcComponent, PriceRangeFilterComponent, ProductDetailEcComponent, ProductDetailService, ProductEcComponent, ProductOffDirective, ProductStockDirective, ProductsService, ReCaptchaEcComponent, ReCaptchaService, RedsysCatchEcComponent, RegisterFormEcComponent, RegisterWholesalerFormEcComponent, RelatedProductsEcComponent, ReviewsEcComponent, ReviewsFormEcComponent, RuntimeConfigService, SectionContainerEcComponent, ShareEcComponent, ShipmentService, SidebarEcComponent, StoresEcComponent, SuccessEcComponent, TestService, ToastService, VariantsEcComponent, authGuard, authInterceptor, directives, initializeRuntimeConfig, provideEnvironment, provideRuntimeConfig };
12214
+ export { AccountEcComponent, AddressingService, AnalyticsService, AuthEcComponent, AuthService, AuthStorageService, BlockBannerBoxEcComponent, BlockBannerFullEcComponent, BlockFormContactEcComponent, BlockHtmlEcComponent, BlockNewsletterEcComponent, BlockProductsEcComponent, BlocksEcComponent, BlocksRepositoryService, BlocksService, BreadcrumbEcComponent, CartEcComponent, CartItemEcComponent, CartService, ChannelService, CheckoutEcComponent, CheckoutService, CollectionEcComponent, ConfirmAccountEcComponent, ContactEcComponent, CoreConstantsService, CouponEcComponent, CurrencyService, DopplerService, ENVIRONMENT_TOKEN, EcCurrencySymbolPipe, EcSafeHtmlPipe, FacebookPixelService, FaqsEcComponent, FiltersEcComponent, FiltersService, FiltersSortEcComponent, FooterEcComponent, ForgotPasswordEcComponent, FormService, GTMService, GoogleAnalyticsService, HeaderEcComponent, HomeEcComponent, LoadingFullEcComponent, LoadingInlineEcComponent, LoadingSectionEcComponent, LocalStorageService, LoginFormEcComponent, MagnizoomEcComponent, MetricoolPixelService, NgxLocalStorageService, OptionsService, OrderEcComponent, OrderUtilityService, OrdersListEcComponent, OrdersService, PaginationService, ParametersService, ParamsContext, PasswordResetEcComponent, PaymentService, PriceEcComponent, PriceRangeFilterComponent, ProductDetailEcComponent, ProductDetailService, ProductEcComponent, ProductOffDirective, ProductStockDirective, ProductsService, ReCaptchaEcComponent, ReCaptchaService, RedsysCatchEcComponent, RegisterFormEcComponent, RegisterWholesalerFormEcComponent, RelatedProductsEcComponent, ReviewsEcComponent, ReviewsFormEcComponent, SectionContainerEcComponent, ShareEcComponent, ShipmentService, SidebarEcComponent, StoresEcComponent, SuccessEcComponent, TestService, ToastService, VariantsEcComponent, authGuard, authInterceptor, directives, provideEnvironment };
12451
12215
  //# sourceMappingURL=ng-easycommerce-v18.mjs.map