Commit d2dcb1b9f9d98b803cfe158fe235a9f37691f352

Authored by Eric Fernandez
Exists in master and in 1 other branch validar_pve

Merge branch 'master' into 'master'

Master(mpuebla)

See merge request !27
src/app/components/busqueda-productos/busqueda-productos.component.html
... ... @@ -75,7 +75,7 @@
75 75 <p class="text-right m-0 h6">{{producto.PreVen | currency}}</p>
76 76 </div>
77 77 </div>
78   - <div *ngIf="producto.showCargarProducto" class="row mt-2">
  78 + <div *ngIf="producto.showCargarProducto" class="row mt-2 fade-bottom">
79 79 <div class="col-sm-12">
80 80 <button
81 81 type="button"
src/app/components/home/home.component.html
1   -<div class="container-fluid">
  1 +<div class="container-fluid background-image">
2 2 <div class="row">
3 3 <div class="col p-0">
4   - <div class="vh-100 d-flex align-items-start flex-column disable-user-select">
5   -
  4 + <div class="vh-100 d-flex align-content-between flex-wrap disable-user-select">
  5 +
6 6 <!-- HEADER -->
7   - <div class="bg-dark py-1 py-sm-2 py-lg-5 w-100">
8   - <p class="text-white text-center">HEADER</p>
  7 + <div class="row m-0 w-100 bg-primary-gradient-horizontal">
  8 + <div class="col-6 bg-white p-5 rounded-bottom-right">
  9 + <img class="w-25 mx-auto d-block" src="{{apiUrl}}/imagenes/logoaxion.png">
  10 + </div>
9 11 </div>
10 12  
11   - <div class="h-100 w-100 position-relative">
12   - <div class="background-image blur"></div>
13   - <div class="row position-absolute w-100 h-100">
14   - <div class="col-5 my-auto">
15   - <!-- CAROUSEL -->
16   - <div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
17   - <div class="carousel-inner">
18   - <div class="carousel-item active">
19   - <img class="m-auto img-fluid d-block w-75"
20   - src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQWhHnLeoxWeJeiBKvVg-9zDzppOVX_AY5tXpRuS7If0mzb_01b"
21   - alt="">
22   - </div>
23   - <div class="carousel-item">
24   - <img class="m-auto img-fluid d-block w-75"
25   - src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQWhHnLeoxWeJeiBKvVg-9zDzppOVX_AY5tXpRuS7If0mzb_01b"
26   - alt="">
27   - </div>
28   - </div>
29   - </div>
30   - </div>
31   - <div class="col-7 my-auto">
32   - <div class="text-center text-white">
33   - <h1 class="display-2 font-weight-bold">Ā”BIENVENIDO!</h1>
34   - <h1 class="display-3 font-weight-bold">Toque la pantalla<br>para comenzar.</h1>
35   - </div>
36   - </div>
  13 + <!-- INFO DE BIENVENIDA -->
  14 + <div class="row w-100">
  15 + <div class="col-4 offset-2">
  16 + <img src="{{apiUrl}}/imagenes/accesoPLAYA.png" class="w-100">
  17 + </div>
  18 + <div class="col-6 text-center text-white my-auto">
  19 + <p class="display-2 font-weight-bold mb-5">Ā”BIENVENIDO!</p>
  20 + <p class="display-3 m-0">Toque la pantalla<br>para comenzar</p>
37 21 </div>
38 22 </div>
39 23  
40 24 <!-- FOOTER -->
41   - <div class="bg-dark py-1 py-sm-2 py-lg-5 w-100">
42   - <p class="text-white text-center">FOOTER</p>
  25 + <div class="row m-0 w-100 bg-gray">
  26 + <div class="col-6 bg-white offset-6 p-5 rounded-top-left">
  27 + <img class="w-25 mx-auto d-block" src="{{apiUrl}}/imagenes/logodebo.png">
  28 + </div>
43 29 </div>
  30 +
44 31 </div>
45 32 </div>
46 33 </div>
47   -</div>
48 34 \ No newline at end of file
  35 +</div>
src/app/components/home/home.component.scss
1 1 .background-image {
2   - background-image: url(http://www.nortecorrientes.com/content/bucket/7/304027w980.jpg);
  2 + background-image: url(http://10.231.45.117:4705/autoservicio/imagenes/homeBackground.jpg);
3 3 background-repeat: no-repeat;
4 4 background-size: cover;
5   - position: absolute;
6   - width: 100%;
7   - height: 100%;
  5 +}
  6 +
  7 +.w-20 {
  8 + width: 20% !important;
  9 +}
  10 +
  11 +.rounded-bottom-right {
  12 + border-bottom-right-radius: 10rem;
  13 + &:before {
  14 + border-radius: 0 40px 40px 0;
  15 + background-color: #fff;
  16 + }
  17 +}
  18 +
  19 +.rounded-top-left {
  20 + border-top-left-radius: 10rem;
  21 +}
  22 +
  23 +.bg-gray {
  24 + background-color: #cccccc;
8 25 }
src/app/components/home/home.component.ts
1 1 import { Component, OnInit, HostListener } from '@angular/core';
2 2 import { Router } from '@angular/router';
  3 +import { appSettings } from 'src/etc/AppSettings';
3 4  
4 5 @Component({
5 6 selector: 'app-home',
... ... @@ -8,6 +9,8 @@ import { Router } from &#39;@angular/router&#39;;
8 9 })
9 10 export class HomeComponent implements OnInit {
10 11  
  12 + private apiUrl: string = appSettings.apiUrl;
  13 +
11 14 constructor(private router: Router) { }
12 15  
13 16 ngOnInit() {
src/app/components/inicio/inicio.component.html
... ... @@ -63,16 +63,17 @@
63 63 <!-- CARGAR PRODUCTOS -->
64 64 <ng-template #popTemplate>
65 65 <app-popover-promos
66   - *ngIf="productoAcargar && !productoEsPromo"
  66 + *ngIf="promociones.length > 0 && sinonimos.length === 0"
67 67 [popover]="popoverDirective"
68 68 [popoverContent]="promociones"
69 69 (promoSeleccionada)="promoSeleccionada($event)"
70 70 class="text-white rounded-sm border-0">
71 71 </app-popover-promos>
72 72 <app-popover-sinonimos
73   - *ngIf="promoAcargar && productoEsPromo"
  73 + *ngIf="sinonimos.length > 0"
74 74 [popover]="popoverDirective"
75 75 [popoverContent]="sinonimos"
  76 + (sinonimoSeleccionado)="sinonimoSeleccionado($event)"
76 77 class="text-white rounded-sm border-0">
77 78 </app-popover-sinonimos>
78 79 </ng-template>
... ... @@ -106,7 +107,7 @@
106 107 src="{{apiUrl}}/imagenes/escanner.jpg">
107 108  
108 109 <!-- PRODUCTO A CARGAR -->
109   - <div class="fade-in m-0" *ngIf="productoAcargar && !productoEsPromo">
  110 + <div class="fade-in m-0" *ngIf="productoAcargar && !promoAcargar">
110 111 <img
111 112 class="card-img-top d-block w-100 mx-auto rounded-sm"
112 113 src="{{apiUrl}}/imagenes/testImg3.jpg">
... ... @@ -122,7 +123,7 @@
122 123 </div>
123 124  
124 125 <!-- PROMO A CARGAR -->
125   - <div class="fade-in m-0" *ngIf="promoAcargar && productoEsPromo">
  126 + <div class="fade-in m-0" *ngIf="promoAcargar">
126 127 <img
127 128 class="card-img-top d-block w-100 mx-auto rounded-sm"
128 129 src="{{apiUrl}}/imagenes/testImg3.jpg">
... ... @@ -132,7 +133,7 @@
132 133 <p class="h6 font-weight-bold mb-0">{{promoAcargar.nombrePromo}}</p>
133 134 </div>
134 135 <div class="col-12 text-right mt-2 align-self-end">
135   - <p class="h5 font-weight-bold mb-0">{{productoAcargar.PreVen | currency}}</p>
  136 + <p class="h5 font-weight-bold mb-0">{{promoAcargar.precioTotal | currency}}</p>
136 137 </div>
137 138 </div>
138 139 </div>
... ... @@ -141,9 +142,9 @@
141 142 <!-- BOTONES DE CARGAR PRODUCTOS-->
142 143 <div
143 144 class="col-5 pr-0"
144   - *ngIf="productoAcargar && tienePromo">
  145 + *ngIf="promociones.length > 0">
145 146 <button
146   - *ngIf="productoEsPromo && promoAcargar.sinonimos"
  147 + *ngIf="sinonimos.length > 0"
147 148 type="button"
148 149 class="btn btn-light btn-block shadow-sm"
149 150 (click)="pop.show()">
... ... @@ -151,7 +152,7 @@
151 152 <i class="fa fa-hand-o-up text-purple" aria-hidden="true"></i>
152 153 </button>
153 154 <button
154   - *ngIf="!productoEsPromo"
  155 + *ngIf="!promoAcargar"
155 156 type="button"
156 157 class="btn btn-primary btn-block shadow-sm"
157 158 (click)="pop.show()">
src/app/components/inicio/inicio.component.scss
... ... @@ -4,7 +4,3 @@
4 4 float: left;
5 5 background-color: #2872ae;
6 6 }
7   -
8   -.black-text {
9   - color: black;
10   -}
src/app/components/inicio/inicio.component.ts
... ... @@ -7,7 +7,6 @@ import { Router } from &#39;@angular/router&#39;;
7 7 import { Promocion } from 'src/app/wrappers/promocion';
8 8 import { Sinonimo } from 'src/app/wrappers/sinonimo';
9 9  
10   -
11 10 @Component({
12 11 selector: 'app-inicio',
13 12 templateUrl: './inicio.component.html',
... ... @@ -18,8 +17,7 @@ export class InicioComponent implements OnInit {
18 17 @ViewChild('pop', { static: false }) popoverDirective: PopoverDirective;
19 18 private productoAcargar: Producto;
20 19 private promoAcargar: Promocion;
21   - private tienePromo = false;
22   - private productoEsPromo = false;
  20 + private sinonimoAcargar: Sinonimo;
23 21  
24 22 promociones: Promocion[] = [];
25 23 sinonimos: Sinonimo[] = [];
... ... @@ -32,6 +30,10 @@ export class InicioComponent implements OnInit {
32 30 ngOnInit() {
33 31  
34 32 this.productoAcargar = this.productoService.productoAcargar;
  33 + this.getPromociones();
  34 + }
  35 +
  36 + getPromociones() {
35 37 if (this.productoAcargar) {
36 38 var sector = this.productoAcargar.CodSec;
37 39 var codigo = this.productoAcargar.CodArt;
... ... @@ -43,12 +45,10 @@ export class InicioComponent implements OnInit {
43 45 setTimeout(() => {
44 46 this.productoService.productos.push(this.productoAcargar);
45 47 this.productoAcargar = undefined;
46   - this.tienePromo = false;
47 48 }, 2000)
48 49 } else {
49 50  
50 51 this.promociones = res;
51   - this.tienePromo = true;
52 52 this.popoverDirective.show();
53 53 }
54 54 }, error => { console.error(error); })
... ... @@ -66,32 +66,52 @@ export class InicioComponent implements OnInit {
66 66 }
67 67  
68 68 deshacerCarga() {
69   - if (this.productoEsPromo) {
  69 +
  70 + if (this.sinonimoAcargar || this.sinonimos.length > 0) {
  71 + this.sinonimos = [];
  72 + this.sinonimoAcargar = undefined;
  73 + this.popoverDirective.hide();
  74 + }
  75 +
  76 + if (this.promoAcargar) {
70 77 this.promoAcargar = undefined;
71   - this.productoEsPromo = false;
72 78 this.popoverDirective.show();
73 79 } else {
74 80 this.productoAcargar = undefined;
75   - this.tienePromo = false;
  81 + this.promociones = [];
76 82 this.popoverDirective.hide();
77 83 }
78 84 }
79 85  
80 86 promoSeleccionada($event: Promocion) {
81 87  
82   - this.productoEsPromo = true;
83 88 this.promoAcargar = $event;
84 89 this.popoverDirective.hide();
85 90 if (this.promoAcargar.sinonimos) {
86 91 var sector = this.promoAcargar.sector;
87 92 var codigo = this.promoAcargar.codigo;
88 93 this.productoService.getPromocionSinonimos(sector, codigo)
89   - .subscribe((res : Sinonimo[]) => {
90   -
  94 + .subscribe((res: Sinonimo[]) => {
  95 + res.forEach(resSinonimo => {
  96 + resSinonimo.productos.forEach(productoSinonimo => {
  97 + this.promoAcargar.productos.forEach(productoPromo => {
  98 + if (productoPromo.id === productoSinonimo.id) {
  99 + productoSinonimo.esPadre = true;
  100 + }
  101 + });
  102 +
  103 + })
  104 + })
91 105 this.sinonimos = res;
92 106 this.showPopover();
93 107 })
94 108 }
95 109 }
96 110  
  111 + sinonimoSeleccionado($event: Sinonimo) {
  112 +
  113 + console.log($event);
  114 + this.sinonimoAcargar = $event;
  115 + }
  116 +
97 117 }
src/app/components/popover-promos/popover-promos.component.html
... ... @@ -24,7 +24,7 @@
24 24 </div>
25 25 <div class="col-12 text-right mt-2">
26 26 <p class="h4 font-weight-bold mb-0">
27   - {{calcularPrecioDePromo(promo.productos) | currency}}
  27 + {{calcularPrecioDePromo(promo) | currency}}
28 28 </p>
29 29 </div>
30 30 </div>
src/app/components/popover-promos/popover-promos.component.ts
... ... @@ -28,14 +28,13 @@ export class PopoverPromosComponent implements OnInit {
28 28 this.promoSeleccionada.emit(promo);
29 29 }
30 30  
31   - calcularPrecioDePromo(productos: Producto[]) {
  31 + calcularPrecioDePromo(promo: Promocion) {
32 32  
33   - var precio = 0;
34   - productos.forEach(producto => {
35   - precio += producto.PreVen;
  33 + promo.precioTotal = 0;
  34 + promo.productos.forEach(producto => {
  35 + promo.precioTotal += producto.PreVen;
36 36 })
37   -
38   - return precio;
  37 + return promo.precioTotal;
39 38 }
40 39  
41 40 }
src/app/components/popover-sinonimos/popover-sinonimos.component.html
... ... @@ -8,31 +8,49 @@
8 8 </div>
9 9 </div>
10 10  
11   - <div class="row m-0">
12   - <div class="col text-left">
13   - <p class="h5 card-title">
14   - Elija una opción
15   - </p>
16   - </div>
17   - </div>
18   -
19 11 <div class="row m-0 overflow-scroll popover-size pr-2 my-2">
20 12 <div class="col">
21   - <div class="row" *ngFor="let sinonimo of popoverContent">
22   - <div class="col pl-4 h6">
23   - <div class="custom-control custom-radio">
24   - <input
25   - type="radio"
26   - id="{{sinonimo.CodArt}}"
27   - name="sinonimoOpciones"
28   - class="custom-control-input"
29   - (click)="setSinonimo(sinonimo)">
30   - <label
31   - class="font-weight-normal custom-control-label"
32   - for="{{sinonimo.CodArt}}">
33   - {{sinonimo.DetArt}}
34   - </label>
  13 + <div class="row mb-2" *ngFor="let sinonimo of popoverContent">
  14 + <div class="col">
  15 +
  16 + <div class="row m-0">
  17 + <div class="col text-left">
  18 + <p class="h5 card-title">
  19 + Elija una opción
  20 + </p>
  21 + </div>
35 22 </div>
  23 +
  24 + <div class="row my-3 d-flex justify-content-between" *ngFor="let producto of sinonimo.productos">
  25 + <div class="col-8 pl-4 h6 m-0">
  26 + <div class="custom-control custom-radio">
  27 + <input
  28 + type="radio"
  29 + [id]="producto.id"
  30 + [checked]="producto.esPadre"
  31 + name="sinonimoOpciones"
  32 + class="custom-control-input"
  33 + (click)="setSinonimo(sinonimo)">
  34 + <label class="font-weight-normal custom-control-label" [for]="producto.id">
  35 + {{producto.DetArt}}
  36 + </label>
  37 + </div>
  38 + </div>
  39 + <div class="col-auto">
  40 + <div class="btn-group-sm btn-group float-left my-auto" role="group">
  41 + <button type="button" class="btn btn-light btn-sm my-auto border">
  42 + <i class="fa fa-plus" aria-hidden="true"></i>
  43 + </button>
  44 + <div class="bg-white border border-white px-3 my-auto text-dark h5">
  45 + <small>{{producto.cantidad}}</small>
  46 + </div>
  47 + <button type="button" class="btn btn-light btn-sm my-auto border">
  48 + <i class="fa fa-minus" aria-hidden="true"></i>
  49 + </button>
  50 + </div>
  51 + </div>
  52 + </div>
  53 +
36 54 </div>
37 55 </div>
38 56 </div>
... ... @@ -47,4 +65,4 @@
47 65 </div>
48 66 </div>
49 67  
50 68 -</div>
  69 +</div>
51 70 \ No newline at end of file
src/app/components/popover-sinonimos/popover-sinonimos.component.ts
1   -import { Component, OnInit, Input } from '@angular/core';
  1 +import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';
2 2 import { PopoverDirective } from 'ngx-bootstrap';
  3 +import { Producto } from 'src/app/wrappers/producto';
3 4 import { Sinonimo } from 'src/app/wrappers/sinonimo';
4 5  
5 6 @Component({
... ... @@ -12,21 +13,28 @@ export class PopoverSinonimosComponent implements OnInit {
12 13 //Directiva del popover, para poder cerrarlo desde este componente
13 14 @Input() popover: PopoverDirective;
14 15 @Input() popoverContent: Sinonimo[];
15   - sinonimoAelegir: Sinonimo;
  16 + @Output() sinonimoSeleccionado = new EventEmitter<Sinonimo>();
  17 + sinonimo: Sinonimo;
16 18  
17 19 constructor() { }
18 20  
19 21 ngOnInit() {
  22 +
  23 + //Seteo en la variable a emitir el sinonimo que sea padre
  24 + this.popoverContent.forEach(sinonimo => {
  25 + // this.sinonimo = sinonimo.esPadre ? sinonimo : undefined;
  26 + })
20 27 }
21 28  
22 29 hidePopover() {
23 30  
  31 + this.sinonimoSeleccionado.emit(this.sinonimo);
24 32 this.popover.hide();
25 33 }
26 34  
27 35 setSinonimo(sinonimo: Sinonimo) {
28 36  
29   - this.sinonimoAelegir = sinonimo;
  37 + this.sinonimo = sinonimo;
30 38 }
31 39  
32 40 }
src/app/wrappers/producto.ts
... ... @@ -90,4 +90,5 @@ export interface Producto {
90 90 categoria_selfservice: number;
91 91 cantidad?: number;
92 92 showCargarProducto?: boolean;
  93 + esPadre?: boolean;
93 94 }
src/app/wrappers/promocion.ts
... ... @@ -7,4 +7,5 @@ export interface Promocion {
7 7 sinonimos: boolean;
8 8 sector: number,
9 9 codigo: number,
  10 + precioTotal? : number,
10 11 }
src/app/wrappers/sinonimo.ts
  1 +import { Producto } from './producto';
  2 +
1 3 export interface Sinonimo {
2   - EMP: number;
3   - ID_SIN: number;
4   - SEC: number;
5   - COD: string;
6   - DET: string;
7   - E_HD: string[];
8   - C_HD: string[];
9   - CodSec: number;
10   - CodArt: number;
11   - DetArt: string;
12   - CodRub: number;
13   - Costo: number;
14   - PreNet: number;
15   - ImpInt: number;
16   - UniVen: number;
17   - FecCos: Date;
18   - UltAct: Date;
19   - CodPro: number;
20   - ExiDep: number;
21   - ExiVta: number;
22   - MinDep: number;
23   - MaxDep: number;
24   - MinPVE: number;
25   - MaxPVE: number;
26   - ENTTur: number;
27   - SINTur: number;
28   - SALTur: number;
29   - IvaSN: boolean;
30   - DepSN: boolean;
31   - RubMay: number;
32   - PreVen: number;
33   - IvaCO: number;
34   - TIP: string;
35   - IMPIVA: number;
36   - ENTADM: number;
37   - SALADM: number;
38   - CODIIN: number;
39   - PRO: boolean;
40   - FPP: boolean;
41   - ESS: boolean;
42   - FID: Date;
43   - NID: number;
44   - FIV: Date;
45   - NIV: number;
46   - COO: string;
47   - CAG: string;
48   - CAP: number;
49   - UTL: number;
50   - NHA: boolean;
51   - PID: boolean;
52   - PRV: number;
53   - PRD: number;
54   - ImpInt2: number;
55   - CLA: number;
56   - UNICAP: number;
57   - ELBPRO: string;
58   - PPP: number;
59   - ALI: number;
60   - BAL_TIPO: string;
61   - PER_MAY: boolean;
62   - ES_MAY: boolean;
63   - CLA_MAY: number;
64   - PME_CMP: string;
65   - USA_BAL: boolean;
66   - DET_LAR: string;
67   - ROTULO: string;
68   - REC_MANUAL: boolean;
69   - E_HD1: string;
70   - C_HD1: string;
71   - ImpInt3: number;
72   - FUA_MAE_YPF: Date;
73   - CPQ: number;
74   - EPQ: string;
75   - BPQ: number;
76   - PUPQ: number;
77   - CORVTO: boolean;
78   - CORVTO_COSTO: number;
79   - UTLFR: number;
80   - FAMILIA: number;
81   - ES_LUB: boolean;
82   - ES_FERT: boolean;
83   - AutoFac: boolean;
84   - LitrosPCD: number;
85   - LisPCD: number;
86   - id: number;
87   - ImpLey23966: boolean;
88   - es_bio: boolean;
89   - ExpArbaRev: boolean;
90   - ES_AGROQ: boolean;
91   - ES_PLAST: boolean;
92   - es_bio_por: string;
93   - ID_MARCA: number;
94   - ID_ATRB1: number;
95   - ID_ATRB2: number;
96   - ID_ART_REF: number;
97   - ILPC: boolean;
98   - CantAgrupar: number;
99   - E_HD2: string;
100   - PPV: number;
101   - PPD: number;
102   - MOD_DET: boolean;
103   - C_HD2: string;
104   - nombreImagen?: any;
105   - IMP_IMP_INT: boolean;
  4 +
  5 + ID_SIN: number,
  6 + descripcion: string,
  7 + productos: Producto[],
106 8 }
src/assets/scss/animation.scss
... ... @@ -83,9 +83,8 @@
83 83 }
84 84  
85 85 .fade-left {
86   -
87   - -webkit-animation: fadeleft .5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
88   - animation: fadeleft .5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
  86 + -webkit-animation: fadeleft 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
  87 + animation: fadeleft 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
89 88 }
90 89  
91 90 @-webkit-keyframes fadeleft {
... ... @@ -121,3 +120,38 @@
121 120 opacity: 1;
122 121 }
123 122 }
  123 +
  124 +.fade-bottom {
  125 + -webkit-animation: fade-top 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both;
  126 + animation: fade-top 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both;
  127 +}
  128 +
  129 +@-webkit-keyframes fade-top {
  130 + 0% {
  131 + -webkit-transform: scaleY(0.4);
  132 + transform: scaleY(0.4);
  133 + -webkit-transform-origin: 100% 0%;
  134 + transform-origin: 100% 0%;
  135 + }
  136 + 100% {
  137 + -webkit-transform: scaleY(1);
  138 + transform: scaleY(1);
  139 + -webkit-transform-origin: 100% 0%;
  140 + transform-origin: 100% 0%;
  141 + }
  142 +}
  143 +
  144 +@keyframes fade-top {
  145 + 0% {
  146 + -webkit-transform: scaleY(0.4);
  147 + transform: scaleY(0.4);
  148 + -webkit-transform-origin: 100% 0%;
  149 + transform-origin: 100% 0%;
  150 + }
  151 + 100% {
  152 + -webkit-transform: scaleY(1);
  153 + transform: scaleY(1);
  154 + -webkit-transform-origin: 100% 0%;
  155 + transform-origin: 100% 0%;
  156 + }
  157 +}
... ... @@ -84,6 +84,10 @@ body {
84 84 background: linear-gradient(135deg, rgba(40, 112, 175, 1) 0%, rgba(0, 32, 66, 1) 100%);
85 85 }
86 86  
  87 +.bg-primary-gradient-horizontal {
  88 + background: linear-gradient(90deg, rgba(40, 112, 175, 1) 0%, rgba(0, 32, 66, 1) 100%);
  89 +}
  90 +
87 91 .icon-dim {
88 92 height: 40px !important;
89 93 width: auto !important;