Commit d2dcb1b9f9d98b803cfe158fe235a9f37691f352
Exists in
master
and in
1 other branch
Merge branch 'master' into 'master'
Master(mpuebla) See merge request !27
Showing
16 changed files
Show diff stats
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 '@angular/router'; |
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
src/app/components/inicio/inicio.component.ts
... | ... | @@ -7,7 +7,6 @@ import { Router } from '@angular/router'; |
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
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
src/app/wrappers/promocion.ts
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 | +} |
src/styles.scss
... | ... | @@ -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; |