ng-easycommerce 0.0.447 → 0.0.450

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,14 @@
1
+ # version 0.0.450
2
+ - Se arregla el metodo de decidir para que use las url segun el entorno enviado en el campo public_enviroment
3
+ - Se agrega un metodo en el channel-config.service.ts para poder cambiar de canal via hostname.
4
+ # version 0.0.449
5
+ - Se quitan los decimales para la moneda de Suecia (SEK)
6
+
7
+ # version 0.0.448
8
+ - Se agrega la funcionalidad para poder ordenar por columnas las ordenes de los clientes.
9
+ - Se modifica la funcion setSearchValue de header-ec para que acepte una funcion que se ejecuta al presionar enter.
10
+ - Se arregla el problema de estilos en los botones del checkout.
11
+
1
12
  # version 0.0.447
2
13
  - Se actualiza el componente de build-your-ec para que trabaje con la toma de los filtros de atributos.
3
14
 
@@ -15,6 +15,7 @@
15
15
 
16
16
  let modoHead = dataDecidirHead?.config?.public_environment || null
17
17
  modoHead && (modoHead == 'prod' && (modoHead = false) || modoHead == 'test' && (modoHead = true))
18
+ //console.log('modo head',modoHead, dataDecidirHead)
18
19
  !modoHead && (modoHead = window.location.host.includes('easycommerce'))
19
20
  let my_awesome_script = document.createElement('script');
20
21
  my_awesome_script.setAttribute('defer', 'defer')
@@ -88,7 +89,7 @@
88
89
  my_copy_script.setAttribute('type', 'text/javascript');
89
90
 
90
91
  let infoDecidir = JSON.parse(localStorage.getItem('dataDecidir')) || undefined
91
- console.log(infoDecidir)
92
+ //console.log(infoDecidir)
92
93
  let urlBase = 'https://h.online-metrix.net/fp/tags.js';
93
94
  let ord_id = infoDecidir?.config?.public_environment == 'test' ? '1snn5n9w' : 'k8vif92e'
94
95
  let merchand_id = infoDecidir?.config?.public_merchand_id || 'decidir_agregador'
@@ -288,10 +289,9 @@
288
289
  let cybersource = dataDecidir?.config?.public_cybersource && dataDecidir?.config?.public_cybersource == 'deshabilitado'
289
290
  let modo = dataDecidir?.config?.public_environment || null
290
291
 
291
- modo && (modo == 'prod' && (modo = false) || modo == 'test' && (modo = true))
292
- !modo && (modo = window.location.host.includes('easycommerce'))
292
+ modo ? (modo == 'prod' ? modo = false : modo = true): (modo = window.location.host.includes('easycommerce'))
293
293
 
294
- const decidir = new Decidir(modo && urlSandbox || urlProduccion, cybersource);
294
+ const decidir = new Decidir(modo && modo ? urlSandbox : urlProduccion, cybersource);
295
295
  decidir.setPublishableKey(publicApiKey);
296
296
  decidir.setTimeout(5000);
297
297
 
@@ -419,7 +419,7 @@
419
419
  code: 'SEK',
420
420
  symbol: 'SEK',
421
421
  position: 'R',
422
- withoutDecimals: false
422
+ withoutDecimals: true
423
423
  }
424
424
  ];
425
425
  _this.currency = currencyTypeCofig.find(function (ct) { return ct.code == currencyTypeFind.toUpperCase(); }) || _this.currency;
@@ -3480,6 +3480,30 @@
3480
3480
  _this.consts.setCurrency(channelObj.baseCurrency);
3481
3481
  _this.injector.get(AddressingService).setTypeSelectAddress(channelObj.headquarterSelectionOnly || 'LOAD_ADDRESS_AND_SELECTION');
3482
3482
  };
3483
+ /**
3484
+ * @description cambian de canal segun el hostname que recibe por parametro.
3485
+ * @warning esta funcion es util para el caso en que se necesite manejar url distintas,
3486
+ * cada una con su configuración de canal, pero utilizando el mismo frontend.
3487
+ * En cualquier otro caso, utilizar las demas herramientas.
3488
+ * @param {string} hostname hostname del canal que se requiere utilizar.
3489
+ */
3490
+ this.changeChannelByHostname = function (hostname) {
3491
+ //console.log(this.channelsSubject.getValue())
3492
+ _this.connection.get(_this.channelsApi()).toPromise().then(function (res) {
3493
+ var channel = res.filter(function (elem) { return elem.hostname == hostname; });
3494
+ if (channel) {
3495
+ if (channel[0].code != _this.consts.getChannel()) {
3496
+ console.log(channel[0]);
3497
+ _this.changeChannel(channel[0]);
3498
+ window.location.href = window.location.href;
3499
+ }
3500
+ }
3501
+ else {
3502
+ console.log("El hostname no coincide con ninguno que venga en los canales");
3503
+ }
3504
+ });
3505
+ //return channel
3506
+ };
3483
3507
  this.getChannelConfig();
3484
3508
  this.getChannels();
3485
3509
  this.getLocales();
@@ -8246,8 +8270,12 @@
8246
8270
  _this.authService.logout();
8247
8271
  _this.router.navigateByUrl('home');
8248
8272
  };
8249
- _this.setSearchValue = function (event) {
8250
- event.key == 'Enter' && _this.getCollectionSearch();
8273
+ _this.setSearchValue = function (event, afterSearch) {
8274
+ var args = [];
8275
+ for (var _i = 2; _i < arguments.length; _i++) {
8276
+ args[_i - 2] = arguments[_i];
8277
+ }
8278
+ event.key == 'Enter' && _this.getCollectionSearch() && (afterSearch ? afterSearch(args) : null);
8251
8279
  _this.searchValue = event.target.value;
8252
8280
  };
8253
8281
  _this.getCollectionSearch = function () { return _this.router.navigateByUrl('/collection?search=' + _this.searchValue); };
@@ -10744,6 +10772,21 @@
10744
10772
  _this.router = router;
10745
10773
  _this.consts = consts;
10746
10774
  _this.loading = true;
10775
+ /**
10776
+ * @description name -> nombre de clave de valuesToSort; asc -> true: ascendente, false: descendente
10777
+ */
10778
+ _this.currentSort = { name: '', asc: true };
10779
+ /**
10780
+ * @description true -> ordena de forma ascendente | false -> ordena de forma decreciente
10781
+ */
10782
+ _this.valuesToSort = {
10783
+ number: { asc: true, attribute: 'number' },
10784
+ paymentState: { asc: true, attribute: 'state' },
10785
+ method: { asc: true, attribute: 'method', subAttribute: 'name' },
10786
+ methodState: { asc: true, attribute: 'state' },
10787
+ date: { asc: true, attribute: 'checkoutCompletedAt' },
10788
+ total: { asc: true, attribute: 'total' }
10789
+ };
10747
10790
  _this.sortedByNewest = function (orders) { return orders && orders.length && orders.sort(function (anOrder, otherOrder) { return anOrder.number > otherOrder.number ? -1 : 1; }); };
10748
10791
  _this.goToOrder = function (order) {
10749
10792
  _this.ordersService.setSelectedOrder(order);
@@ -10770,6 +10813,87 @@
10770
10813
  }
10771
10814
  }
10772
10815
  };
10816
+ /**
10817
+ * @description Ordena la lista de ordenes
10818
+ * @param value recibe una valor que debe coincidir con las claves de la variable valuesToSort
10819
+ */
10820
+ _this.sortOrders = function (value) {
10821
+ _this.sortValue = value;
10822
+ _this.setCurrentSort(_this.sortValue, _this.valuesToSort[_this.sortValue].asc);
10823
+ var comparator = (_this.valuesToSort[_this.sortValue].asc)
10824
+ ? [-1, 1]
10825
+ : [1, -1];
10826
+ _this.valuesToSort[_this.sortValue].asc = !_this.valuesToSort[_this.sortValue].asc;
10827
+ var typeValue;
10828
+ if (_this.orders.length > 0) {
10829
+ typeValue = typeof (_this.orders[0]);
10830
+ }
10831
+ var sortFunction = _this.getSortFunction(_this.sortValue);
10832
+ _this.orders =
10833
+ _this.sortValue
10834
+ ? _this.orders.sort(function (aOrders, otherOrders) { return sortFunction(aOrders, otherOrders, _this.valuesToSort[_this.sortValue], comparator); })
10835
+ : _this.orders;
10836
+ };
10837
+ /**
10838
+ * @description retorna la funcion que se debe utilizar para el sort del arreglo
10839
+ * @param value parametro que indica el tipo de funcion que debe retornar
10840
+ * @returns funcion para utilizar en la busqueda
10841
+ */
10842
+ _this.getSortFunction = function (value) {
10843
+ switch (value) {
10844
+ case 'paymentState':
10845
+ return _this.sortPaymentState;
10846
+ case 'method':
10847
+ return _this.sortShipments;
10848
+ case 'methodState':
10849
+ return _this.sortShipments;
10850
+ case 'total':
10851
+ return _this.sortNumber;
10852
+ default:
10853
+ return _this.sortText;
10854
+ }
10855
+ };
10856
+ /* Funciones para ordernar */
10857
+ _this.sortPaymentState = function (aOrders, otherOrders, data, comparator) {
10858
+ return (aOrders.payments[0][data.attribute] == otherOrders.payments[0][data.attribute])
10859
+ ? _this.tieBreaker(aOrders, otherOrders, comparator)
10860
+ : String(aOrders.payments[0][data.attribute]).toLowerCase() < String(otherOrders.payments[0][data.attribute]).toLowerCase() ? comparator[0] : comparator[1];
10861
+ };
10862
+ _this.sortShipments = function (aOrders, otherOrders, data, comparator) {
10863
+ if (data.subAttribute) {
10864
+ return (aOrders.shipments[0][data.attribute][data.subAttribute] == otherOrders.shipments[0][data.attribute][data.subAttribute])
10865
+ ? _this.tieBreaker(aOrders, otherOrders, comparator)
10866
+ : String(aOrders.shipments[0][data.attribute][data.subAttribute]).toLowerCase() < String(otherOrders.shipments[0][data.attribute][data.subAttribute]).toLowerCase() ? comparator[0] : comparator[1];
10867
+ }
10868
+ else {
10869
+ return (aOrders.shipments[0][data.attribute] == otherOrders.shipments[0][data.attribute])
10870
+ ? _this.tieBreaker(aOrders, otherOrders, comparator)
10871
+ : String(aOrders.shipments[0][data.attribute]).toLowerCase() < String(otherOrders.shipments[0][data.attribute]).toLowerCase() ? comparator[0] : comparator[1];
10872
+ }
10873
+ };
10874
+ _this.sortNumber = function (aOrders, otherOrders, data, comparator) { return aOrders[data.attribute] < otherOrders[data.attribute] ? comparator[0] : comparator[1]; };
10875
+ _this.sortText = function (aOrders, otherOrders, data, comparator) {
10876
+ return (aOrders[data.attribute] == otherOrders[data.attribute])
10877
+ ? aOrders.number.toLowerCase() < otherOrders.number.toLowerCase() ? comparator[0] : comparator[1]
10878
+ : String(aOrders[data.attribute]).toLowerCase() < String(otherOrders[data.attribute]).toLowerCase() ? comparator[0] : comparator[1];
10879
+ };
10880
+ /**
10881
+ * @description funcion utilizada para desempate.
10882
+ * @param aOrders
10883
+ * @param otherOrders
10884
+ * @param comparator
10885
+ * @returns
10886
+ */
10887
+ _this.tieBreaker = function (aOrders, otherOrders, comparator) { return aOrders.number.toLowerCase() < otherOrders.number.toLowerCase() ? comparator[0] : comparator[1]; };
10888
+ /**
10889
+ * @description cambia los valores de la variable currentSort
10890
+ * @param name
10891
+ * @param asc
10892
+ */
10893
+ _this.setCurrentSort = function (name, asc) {
10894
+ _this.currentSort.name = name;
10895
+ _this.currentSort.asc = asc;
10896
+ };
10773
10897
  _this.mediaUrl = _this.consts.mediaUrl();
10774
10898
  _this.ecOnConstruct();
10775
10899
  return _this;
@@ -10795,8 +10919,8 @@
10795
10919
  OrdersEcComponent = __decorate$1g([
10796
10920
  core.Component({
10797
10921
  selector: 'app-orders-ec',
10798
- template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\n <section id=\"orders\" class=\"w-100\" *ngIf=\"!loading; else loadingView\">\n <div *ngIf=\"orders && orders.length; else noOrders\">\n <div class=\"row item border-bottom\" *ngFor=\"let order of orders\">\n <div class=\"col-lg-2 col-12\">\n <p class=\"st dropdown-toggle\">{{ 'order' | translate }}:</p>\n <h5 class=\"fw-bold\">\n {{ order.number }}\n </h5>\n <ng-container *ngIf=\"order.items[0].product.variants[0]?.images?.length ; else defaultpicture\">\n <img class=\"smc maxwidth\" [src]=\"mediaUrl + order.items[0].product.variants[0].images[0]\" alt=\"\">\n </ng-container>\n <ng-template #defaultpicture>\n <img *ngIf=\"order.items[0].product.picturesdefault\" class=\"smc maxwidth\"\n [src]=\"mediaUrl + order.items[0].product.picturesdefault[0]\" alt=\"\">\n </ng-template>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"st dropdown-toggle\">{{ 'payment-state' | translate }}:</p>\n <p class=\"price\">\n {{ order.payments[0].state | translate | titlecase }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"st dropdown-toggle\">{{ 'shipment-method' | translate }}:</p>\n <p class=\"price\">\n {{ order.shipments[0].method.name }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"st dropdown-toggle\">{{ 'shipment-state' | translate }}:</p>\n <p class=\"price\">\n {{ order.shipments[0].state | translate | titlecase }}\n </p>\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\n <!-- <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</button> -->\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"st dropdown-toggle\">{{ 'date' | translate }}:</p>\n <p class=\"price\">\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"st dropdown-toggle\">{{ 'total' | translate }}:</p>\n <h5 class=\"fw-bold text-nowrap\">\n {{ (order.totals.total) | ecCurrencySymbol }}\n </h5>\n <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">{{\n 'see-order' | translate }}</button>\n </div>\n </div>\n </div>\n </section>\n</div>\n\n<ng-template #noOrders>\n <div class=\"w-100 h-50\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <h5>{{ 'no-orders' | translate }}</h5>\n </div>\n </div>\n</ng-template>\n\n<ng-template #errorView>\n <div class=\"w-100 h-50\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <h4>{{ 'orders-error' | translate }}</h4>\n </div>\n </div>\n</ng-template>\n\n<ng-template #loadingView>\n <div class=\"w-100 h-50 py-5\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n </div>\n</ng-template>",
10799
- styles: ["#ordersEcComponent .btn.btdetalle{background-color:#000;color:#fff;border-color:#000;border-width:1px;border-radius:10px;padding:10px 0}#ordersEcComponent .btn.btdetalle:hover{background-color:#fff;color:#000;border-color:#000}"]
10922
+ template: "<div class=\"container-fluid\" id=\"ordersEcComponent\">\n <section id=\"orders\" class=\"w-100\" *ngIf=\"!loading; else loadingView\">\n <div *ngIf=\"orders && orders.length; else noOrders\">\n <div class=\"row mb-1 border-bottom\">\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'number' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('number')\">{{ 'order' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'paymentState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('paymentState')\">{{ 'payment-state' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'method' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('method')\">{{ 'shipment-method' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12 \">\n <p\n [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'methodState' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('methodState')\">\n {{ 'shipment-state' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'date' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('date')\">{{ 'date' | translate }}:</p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p [class]=\"'st dropdown-toggle cursor-pointer my-2 '+ (currentSort.name == 'total' ? 'applied ' + (!currentSort.asc ? 'asc' : 'desc') : '')\"\n (click)=\"sortOrders('total')\">{{ 'total' | translate }}:</p>\n </div>\n </div>\n <div class=\"row item border-bottom\" *ngFor=\"let order of orders\">\n <div class=\"col-lg-2 col-12\">\n <h5 class=\"fw-bold\">\n {{ order.number }}\n </h5>\n <ng-container *ngIf=\"order.items[0].product.variants[0]?.images?.length ; else defaultpicture\">\n <img class=\"smc maxwidth\" [src]=\"mediaUrl + order.items[0].product.variants[0].images[0]\" alt=\"\">\n </ng-container>\n <ng-template #defaultpicture>\n <img *ngIf=\"order.items[0].product.picturesdefault\" class=\"smc maxwidth\"\n [src]=\"mediaUrl + order.items[0].product.picturesdefault[0]\" alt=\"\">\n </ng-template>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"price\">\n {{ order.payments[0].state | translate | titlecase }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n \n <p class=\"price\">\n {{ order.shipments[0].method.name }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"price\">\n {{ order.shipments[0].state | translate | titlecase }}\n </p>\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\n <!-- <button class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</button> -->\n <a *ngIf=\"order.tracking\" [href]=\"order.tracking\" class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">Ver seguimiento</a>\n </div>\n <div class=\"col-lg-2 col-12\">\n <p class=\"price\">\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\n </p>\n </div>\n <div class=\"col-lg-2 col-12\">\n <h5 class=\"fw-bold text-nowrap\">\n {{ (order.totals.total) | ecCurrencySymbol }}\n </h5>\n <button class=\"btn px-0 w-100 btdetalle\" (click)=\"goToOrder(order)\">{{\n 'see-order' | translate }}</button>\n </div>\n </div>\n </div>\n </section>\n</div>\n\n<ng-template #noOrders>\n <div class=\"w-100 h-50\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <h5>{{ 'no-orders' | translate }}</h5>\n </div>\n </div>\n</ng-template>\n\n<ng-template #errorView>\n <div class=\"w-100 h-50\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <h4>{{ 'orders-error' | translate }}</h4>\n </div>\n </div>\n</ng-template>\n\n<ng-template #loadingView>\n <div class=\"w-100 h-50 py-5\">\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n </div>\n</ng-template>",
10923
+ styles: ["#ordersEcComponent .btn.btdetalle{background-color:#000;color:#fff;border-color:#000;border-width:1px;border-radius:10px;padding:10px 0}#ordersEcComponent .btn.btdetalle:hover{background-color:#fff;color:#000;border-color:#000}.asc.dropdown-toggle::after{transform:rotate(180deg)}.applied.dropdown-toggle::after{color:#198754}"]
10800
10924
  })
10801
10925
  ], OrdersEcComponent);
10802
10926
  return OrdersEcComponent;
@@ -14582,8 +14706,8 @@
14582
14706
  StepEcComponent = __decorate$1J([
14583
14707
  core.Component({
14584
14708
  selector: 'app-step-ec',
14585
- template: "<ng-container [ngSwitch]=\"step_id\">\n\n <ng-container *ngSwitchCase=\"1\">\n <app-dataform-ec [step_id]=\"1\">\n </app-dataform-ec>\n <div class=\"checkout-btn-unique text-end\">\n <button *ngIf=\"isStepReady('address')\" class=\"btn valid-btn\"\n (click)=\"nextStep()\"> {{(lastStep ? 'finish-checkout' : 'ready-form')|translate}}</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"2\">\n <ng-container *ngIf=\"isStepReady('address')\">\n <app-shipment-ec [step_id]=\"2\">\n </app-shipment-ec>\n <div class=\"checkout-btn-container mt-2\">\n <button class=\"btn valid-btn\" (click)=\"goBack()\">{{'back'|translate}}</button>\n <ng-container *ngIf=\"(checkoutService.order$ | async) as order\">\n <button *ngIf=\"isStepReady('shipment')\" (click)=\"nextStep()\"\n class=\"btn valid-btn float-end\">{{ (lastStep ? 'finish-checkout' : 'ready-form') |translate}}\n </button>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"3\">\n <ng-container *ngIf=\"isStepReady(previousStep)\">\n <app-payment-ec [step_id]=\"3\">\n </app-payment-ec>\n <div class=\"checkout-btn-container mt-2\">\n <button class=\"btn valid-btn\"\n (click)=\"goBack()\">{{'back'|translate}}</button>\n </div>\n </ng-container>\n </ng-container>\n\n</ng-container>\n",
14586
- styles: [""]
14709
+ template: "<ng-container [ngSwitch]=\"step_id\">\n\n <ng-container *ngSwitchCase=\"1\">\n <app-dataform-ec [step_id]=\"1\">\n </app-dataform-ec>\n <div class=\"checkout-btn-unique text-end\">\n <button *ngIf=\"isStepReady('address')\" class=\"btn valid-btn mt-2\"\n (click)=\"nextStep()\"> {{(lastStep ? 'finish-checkout' : 'ready-form')|translate}}</button>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"2\">\n <ng-container *ngIf=\"isStepReady('address')\">\n <app-shipment-ec [step_id]=\"2\">\n </app-shipment-ec>\n <div class=\"checkout-btn-container mt-2\">\n <button class=\"btn valid-btn\" (click)=\"goBack()\">{{'back'|translate}}</button>\n <ng-container *ngIf=\"(checkoutService.order$ | async) as order\">\n <button *ngIf=\"isStepReady('shipment')\" (click)=\"nextStep()\"\n class=\"btn valid-btn float-end\">{{ (lastStep ? 'finish-checkout' : 'ready-form') |translate}}\n </button>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"3\">\n <ng-container *ngIf=\"isStepReady(previousStep)\">\n <app-payment-ec [step_id]=\"3\">\n </app-payment-ec>\n <div class=\"checkout-btn-container mt-2\">\n <button class=\"btn valid-btn\"\n (click)=\"goBack()\">{{'back'|translate}}</button>\n </div>\n </ng-container>\n </ng-container>\n\n</ng-container>\n",
14710
+ styles: [".btn:disabled{opacity:.65}.btn.valid-btn{background-color:#000;color:#fff;margin-right:12px}"]
14587
14711
  })
14588
14712
  ], StepEcComponent);
14589
14713
  return StepEcComponent;