Commit 597bbe4795b38c885f12e1222134dfefff217193
Exists in
master
and in
1 other branch
Merge branch 'master' into 'master'
Master(mpuebla) See merge request !22
Showing
16 changed files
Show diff stats
src/app/components/busqueda-productos/busqueda-productos.component.html
1 | <div class="row m-0 fade-in"> | 1 | <div class="row m-0 fade-in"> |
2 | <div class="col-12 p-0"> | 2 | <div class="col-12 p-0"> |
3 | 3 | ||
4 | <!-- NOMBRE DE SECCION --> | 4 | <!-- NOMBRE DE SECCION --> |
5 | <div class="row m-0"> | 5 | <div class="row m-0"> |
6 | <div class="col-12 p-0"> | 6 | <div class="col-12 p-0"> |
7 | <p class="h5 py-1 bg-gray text-muted text-center"> | 7 | <p class="h5 py-1 bg-gray text-muted text-center"> |
8 | Búsqueda | 8 | Búsqueda |
9 | <i class="fa fa-search"></i> | 9 | <i class="fa fa-search"></i> |
10 | </p> | 10 | </p> |
11 | </div> | 11 | </div> |
12 | </div> | 12 | </div> |
13 | 13 | ||
14 | <div class="row m-4 disable-user-select"> | 14 | <div class="row m-3 disable-user-select"> |
15 | 15 | ||
16 | <!-- FILTROS --> | 16 | <!-- FILTROS --> |
17 | <div class="col-sm-2 p-1"> | 17 | <div class="col-sm-2 p-1"> |
18 | <div class="text-center"> | 18 | <div class="text-center"> |
19 | <p class="font-weight-bold text-muted border-bottom pb-2">Buscar por Categoría</p> | 19 | <p class="font-weight-bold text-muted border-bottom pb-2">Buscar por Categoría</p> |
20 | </div> | 20 | </div> |
21 | <ul class="list-group"> | 21 | <ul class="list-group"> |
22 | <li | 22 | <li |
23 | [ngClass]="{active: categoria == 1}" | 23 | [ngClass]="{active: categoria == 1}" |
24 | (click)="categoria = 1" | 24 | (click)="categoria = 1" |
25 | class="list-group-item list-group-item-action text-center my-1 p-2 h6"> | 25 | class="list-group-item list-group-item-action text-center my-1 p-2 h6"> |
26 | Combos y Promociones | 26 | Combos y Promociones |
27 | </li> | 27 | </li> |
28 | <li | 28 | <li |
29 | [ngClass]="{active: categoria == 2}" | 29 | [ngClass]="{active: categoria == 2}" |
30 | (click)="categoria = 2" | 30 | (click)="categoria = 2" |
31 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | 31 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> |
32 | Todos | 32 | Todos |
33 | </li> | 33 | </li> |
34 | <li | 34 | <li |
35 | [ngClass]="{active: categoria == 3}" | 35 | [ngClass]="{active: categoria == 3}" |
36 | (click)="categoria = 3" | 36 | (click)="categoria = 3" |
37 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | 37 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> |
38 | Bebidas | 38 | Bebidas |
39 | </li> | 39 | </li> |
40 | <li | 40 | <li |
41 | [ngClass]="{active: categoria == 4}" | 41 | [ngClass]="{active: categoria == 4}" |
42 | (click)="categoria = 4" | 42 | (click)="categoria = 4" |
43 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | 43 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> |
44 | Sandwichería | 44 | Sandwichería |
45 | </li> | 45 | </li> |
46 | <li | 46 | <li |
47 | [ngClass]="{active: categoria == 5}" | 47 | [ngClass]="{active: categoria == 5}" |
48 | (click)="categoria = 5" | 48 | (click)="categoria = 5" |
49 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | 49 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> |
50 | Panaderia | 50 | Panaderia |
51 | </li> | 51 | </li> |
52 | <li | 52 | <li |
53 | [ngClass]="{active: categoria == 6}" | 53 | [ngClass]="{active: categoria == 6}" |
54 | (click)="categoria = 6" | 54 | (click)="categoria = 6" |
55 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | 55 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> |
56 | Golosinas | 56 | Golosinas |
57 | </li> | 57 | </li> |
58 | <li | 58 | <li |
59 | [ngClass]="{active: categoria == 7}" | 59 | [ngClass]="{active: categoria == 7}" |
60 | (click)="categoria = 7" | 60 | (click)="categoria = 7" |
61 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | 61 | class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> |
62 | Tabaqueria | 62 | Tabaqueria |
63 | </li> | 63 | </li> |
64 | </ul> | 64 | </ul> |
65 | </div> | 65 | </div> |
66 | 66 | ||
67 | <!-- SEARCH INPUT --> | 67 | <!-- SEARCH INPUT --> |
68 | <div *ngIf="productos.length > 0" class="fade-in col-sm-10"> | 68 | <div *ngIf="productos.length > 0" class="fade-in col-sm-10"> |
69 | 69 | ||
70 | <div class="form-group row search"> | 70 | <div class="form-group row search"> |
71 | <div class="col-sm-10"> | 71 | <div class="col-sm-10"> |
72 | <span class="fa fa-search form-control-lg form-control-search pl-3"></span> | 72 | <span class="fa fa-search form-control-lg form-control-search pl-3"></span> |
73 | <input | 73 | <input |
74 | type="text" | 74 | type="text" |
75 | class="form-control form-control-lg shadow-sm rounded-pill px-5" | 75 | class="form-control form-control-lg shadow-sm rounded-pill px-5" |
76 | placeholder="Búsqueda productos" | 76 | placeholder="Búsqueda productos" |
77 | [(ngModel)]="searchTerm" | 77 | [(ngModel)]="searchTerm" |
78 | (ngModelChange)="filterItems()"> | 78 | (ngModelChange)="filterItems()"> |
79 | </div> | 79 | </div> |
80 | <!-- BOTON VOLVER --> | 80 | <!-- BOTON VOLVER --> |
81 | <div class="col-sm-2"> | 81 | <div class="col-sm-2"> |
82 | <button | 82 | <button |
83 | type="button" | 83 | type="button" |
84 | class="btn btn-light btn-lg shadow-sm" | 84 | class="btn btn-light btn-lg shadow-sm" |
85 | [routerLink]="['/inicio']"> | 85 | [routerLink]="['/inicio']"> |
86 | <span class="font-weight-normal h6 pr-2">Volver</span> | 86 | <span class="font-weight-normal h6 pr-2">Volver</span> |
87 | <i class="fa fa-undo text-warning" aria-hidden="true"></i> | 87 | <i class="fa fa-undo text-warning" aria-hidden="true"></i> |
88 | </button> | 88 | </button> |
89 | </div> | 89 | </div> |
90 | </div> | 90 | </div> |
91 | <!-- LISTA DE PRODUCTOS --> | 91 | <!-- LISTA DE PRODUCTOS --> |
92 | <div class="row align-items-start vh-70 overflow-scroll disable-user-select"> | 92 | <div class="row align-items-start vh-60 overflow-scroll disable-user-select"> |
93 | <div | 93 | <div |
94 | class="col-4 p-2" | 94 | class="col-4 p-2" |
95 | *ngFor="let producto of auxProductos"> | 95 | *ngFor="let producto of auxProductos"> |
96 | <div | 96 | <div |
97 | class="card-effect bg-white rounded-sm shadow border-0" | 97 | class="card-effect bg-white rounded-sm shadow border-0" |
98 | (click)="mostrarBotonCargar(producto)"> | 98 | (click)="mostrarBotonCargar(producto)"> |
99 | <img src="{{apiUrl}}/imagenes/accesoPLAYA.png" class="w-75 m-auto"> | 99 | <img src="{{apiUrl}}/imagenes/cafe.jpg" class="rounded-sm w-100 m-auto"> |
100 | <div class="p-2"> | 100 | <div class="p-2"> |
101 | <p class="h6 text-left m-0">{{producto.DetArt}}</p> | 101 | <p class="h6 text-left m-0">{{producto.DetArt}}</p> |
102 | <div class="row justify-content-between m-0"> | 102 | <div class="row justify-content-between m-0"> |
103 | <div class="col-12 p-0"> | 103 | <div class="col-12 p-0"> |
104 | <div class="text-left"> | 104 | <div class="text-left"> |
105 | <p class="m-0 h6"><small>{{producto.DetArt}}</small></p> | 105 | <p class="m-0 h6"><small>{{producto.DetArt}}</small></p> |
106 | <p class="m-0 h6"><small>COD. {{producto.CodRub}}</small></p> | 106 | <p class="m-0 h6"><small>COD. {{producto.CodRub}}</small></p> |
107 | </div> | 107 | </div> |
108 | </div> | 108 | </div> |
109 | <div class="col-12 my-auto pt-2 pr-2 p-0"> | 109 | <div class="col-12 my-auto pt-2 pr-2 p-0"> |
110 | <p class="text-right m-0 h6">{{producto.PreVen | currency}}</p> | 110 | <p class="text-right m-0 h6">{{producto.PreVen | currency}}</p> |
111 | </div> | 111 | </div> |
112 | </div> | 112 | </div> |
113 | <div *ngIf="producto.showCargarProducto" class="row mt-2"> | 113 | <div *ngIf="producto.showCargarProducto" class="row mt-2"> |
114 | <div class="col-sm-12"> | 114 | <div class="col-sm-12"> |
115 | <div class="btn btn-block btn-outline-primary shadow">Cargar Producto</div> | 115 | <button |
116 | type="button" | ||
117 | class="btn btn-block btn-outline-primary shadow" | ||
118 | (click)="elegirProducto(producto)"> | ||
119 | Cargar Producto | ||
120 | </button> | ||
116 | </div> | 121 | </div> |
117 | </div> | 122 | </div> |
118 | </div> | 123 | </div> |
119 | </div> | 124 | </div> |
120 | </div> | 125 | </div> |
121 | </div> | 126 | </div> |
122 | </div> | 127 | </div> |
123 | 128 | ||
124 | <!-- SPINNER --> | 129 | <!-- SPINNER --> |
125 | <div *ngIf="productos.length === 0 && showSpinner" class="col-sm-10 align-self-center"> | 130 | <div *ngIf="productos.length === 0 && showSpinner" class="col-sm-10 align-self-center"> |
126 | <div class="spinner-border spinner-lg text-secondary" role="status"></div> | 131 | <div class="spinner-border spinner-lg text-secondary" role="status"></div> |
127 | <span class="text-secondary m-2 h5">Cargando información.</span> | 132 | <span class="text-secondary m-2 h5">Cargando información.</span> |
128 | </div> | 133 | </div> |
129 | 134 | ||
130 | </div> | 135 | </div> |
131 | 136 | ||
132 | </div> | 137 | </div> |
133 | 138 | ||
134 | </div> | 139 | </div> |
135 | 140 |
src/app/components/busqueda-productos/busqueda-productos.component.scss
1 | .search .form-control-search { | 1 | .search .form-control-search { |
2 | position: absolute; | 2 | position: absolute; |
3 | z-index: 2; | 3 | z-index: 2; |
4 | display: block; | 4 | display: block; |
5 | text-align: center; | 5 | text-align: center; |
6 | pointer-events: none; | 6 | pointer-events: none; |
7 | color: #aaa; | 7 | color: #aaa; |
8 | line-height: inherit; | 8 | line-height: inherit; |
9 | } | 9 | } |
10 | |||
11 | .vh-70 { | ||
12 | min-height: auto !important; | ||
13 | max-height: 70vh !important; | ||
14 | } | ||
15 | |||
16 | .spinner-lg{ | ||
17 | width: 3rem !important; | ||
18 | height: 3rem !important; | ||
19 | } | ||
20 | 10 |
src/app/components/busqueda-productos/busqueda-productos.component.ts
1 | import { Component, OnInit, APP_BOOTSTRAP_LISTENER } from '@angular/core'; | 1 | import { Component, OnInit, APP_BOOTSTRAP_LISTENER } from '@angular/core'; |
2 | import { ProductoService } from 'src/app/services/producto.service'; | 2 | import { ProductoService } from 'src/app/services/producto.service'; |
3 | import { Producto } from 'src/app/wrappers/producto'; | 3 | import { Producto } from 'src/app/wrappers/producto'; |
4 | import { appSettings } from 'src/etc/AppSettings'; | 4 | import { appSettings } from 'src/etc/AppSettings'; |
5 | import { Router } from '@angular/router'; | ||
5 | 6 | ||
6 | @Component({ | 7 | @Component({ |
7 | selector: 'app-busqueda-productos', | 8 | selector: 'app-busqueda-productos', |
8 | templateUrl: './busqueda-productos.component.html', | 9 | templateUrl: './busqueda-productos.component.html', |
9 | styleUrls: ['./busqueda-productos.component.scss'] | 10 | styleUrls: ['./busqueda-productos.component.scss'] |
10 | }) | 11 | }) |
11 | export class BusquedaProductosComponent implements OnInit { | 12 | export class BusquedaProductosComponent implements OnInit { |
12 | 13 | ||
13 | private productos: Producto[] = []; | 14 | private productos: Producto[] = []; |
14 | private auxProductos: Producto[] = []; | 15 | private auxProductos: Producto[] = []; |
15 | private searchTerm: string = ''; | 16 | private searchTerm: string = ''; |
16 | private showSpinner: boolean = true; | 17 | private showSpinner: boolean = true; |
17 | private categoria: Categorias = Categorias.todos; | 18 | private categoria: Categorias = Categorias.todos; |
18 | private apiUrl: string = appSettings.apiUrl; | 19 | private apiUrl: string = appSettings.apiUrl; |
19 | private showBtnCargarProducto: boolean = false; | 20 | private showBtnCargarProducto: boolean = false; |
20 | 21 | ||
21 | constructor(private productoService: ProductoService) { } | 22 | constructor( |
23 | private productoService: ProductoService, | ||
24 | private router: Router) { } | ||
22 | 25 | ||
23 | ngOnInit() { | 26 | ngOnInit() { |
24 | 27 | ||
28 | this.productoService.productoAcargar = undefined; | ||
25 | this.productoService.getAll() | 29 | this.productoService.getAll() |
26 | .subscribe((data: Producto[]) => { | 30 | .subscribe((data: Producto[]) => { |
27 | 31 | ||
28 | this.auxProductos = this.productos = data; | 32 | this.auxProductos = this.productos = data; |
29 | }, (error) => { | 33 | }, (error) => { |
30 | this.showSpinner = false; | 34 | this.showSpinner = false; |
31 | console.error(error); | 35 | console.error(error); |
32 | }); | 36 | }); |
33 | } | 37 | } |
34 | 38 | ||
35 | filterItems() { | 39 | filterItems() { |
36 | 40 | ||
37 | this.auxProductos = this.productos.filter(x => { | 41 | this.auxProductos = this.productos.filter(x => { |
38 | return x.DetArt.toLowerCase().includes(this.searchTerm.toLowerCase()) | 42 | return x.DetArt.toLowerCase().includes(this.searchTerm.toLowerCase()) |
39 | }); | 43 | }); |
40 | } | 44 | } |
41 | 45 | ||
42 | agregarAlCarrito(producto: Producto) { | 46 | agregarAlCarrito(producto: Producto) { |
43 | 47 | ||
44 | producto.cantidad = 1; | 48 | producto.cantidad = 1; |
45 | this.productoService.productos.push(producto); | 49 | this.productoService.productos.push(producto); |
46 | } | 50 | } |
47 | 51 | ||
48 | mostrarBotonCargar(producto: Producto) { | 52 | private mostrarBotonCargar(producto: Producto) { |
49 | 53 | ||
50 | for (let i = 0; i < this.auxProductos.length; i++) { | 54 | for (let i = 0; i < this.auxProductos.length; i++) { |
51 | if (this.auxProductos[i].id !== producto.id) | 55 | if (this.auxProductos[i].id !== producto.id) |
52 | this.auxProductos[i].showCargarProducto = false; | 56 | this.auxProductos[i].showCargarProducto = false; |
53 | else if (producto.showCargarProducto) return; | 57 | else if (producto.showCargarProducto) return; |
54 | } | 58 | } |
55 | producto.showCargarProducto = !producto.showCargarProducto | 59 | producto.showCargarProducto = !producto.showCargarProducto |
56 | } | 60 | } |
61 | |||
62 | private elegirProducto(producto: Producto) { | ||
63 | |||
64 | this.productoService.productoAcargar = producto; | ||
65 | this.router.navigate(['inicio']); | ||
66 | } | ||
57 | } | 67 | } |
58 | 68 | ||
59 | enum Categorias { | 69 | enum Categorias { |
60 | promosCombos = 1, | 70 | promosCombos = 1, |
61 | todos = 2, | 71 | todos = 2, |
62 | bebidas = 3, | 72 | bebidas = 3, |
63 | sandwicheria = 4, | 73 | sandwicheria = 4, |
64 | panaderia = 5, | 74 | panaderia = 5, |
65 | golosinas = 6, | 75 | golosinas = 6, |
66 | tabaqueria = 7, | 76 | tabaqueria = 7, |
67 | } | 77 | } |
68 | 78 |
src/app/components/confirmacion-carrito/confirmacion-carrito.component.html
1 | <div class="row"> | 1 | <div class="row"> |
2 | <div class="col-12"> | 2 | <div class="col-12"> |
3 | 3 | ||
4 | <!-- NOMBRE DE SECCION --> | 4 | <!-- NOMBRE DE SECCION --> |
5 | <div class="row m-0"> | 5 | <div class="row m-0"> |
6 | <div class="col-12 p-0"> | 6 | <div class="col-12 p-0"> |
7 | <p class="h5 py-1 bg-gray text-muted text-center">Pago <i class="fa fa-usd"></i></p> | 7 | <p class="h5 py-1 bg-gray text-muted text-center">Pago <i class="fa fa-usd"></i></p> |
8 | </div> | 8 | </div> |
9 | </div> | 9 | </div> |
10 | 10 | ||
11 | <div class="row m-4 d-flex align-items-center"> | 11 | <div class="row m-3 d-flex align-items-center"> |
12 | <div class="col-4"> | 12 | <div class="col-4"> |
13 | <h1>Mi Compra <i class="fa fa-shopping-cart "></i></h1> | 13 | <h1>Mi Compra <i class="fa fa-shopping-cart "></i></h1> |
14 | </div> | 14 | </div> |
15 | <div class="col-8"> | 15 | <div class="col-8"> |
16 | <h2>¿Desea finalizar su compra?</h2> | 16 | <h2>¿Desea finalizar su compra?</h2> |
17 | <h3>Por favor, controle y confirme su compra.</h3> | 17 | <h3>Por favor, controle y confirme su compra.</h3> |
18 | </div> | 18 | </div> |
19 | <div class="col-sm-7"> | 19 | <div class="col-sm-7"> |
20 | 20 | ||
21 | <div class="row pr-3 vh-50 overflow-scroll"> | 21 | <div class="row pr-3 vh-50 overflow-scroll"> |
22 | <div class="col-4 p-2" *ngFor="let producto of productos"> | 22 | <div class="col-4 p-2" *ngFor="let producto of productos"> |
23 | <div class="card card-effect bg-white rounded-sm shadow border-0"> | 23 | <div class="card card-effect bg-white rounded-sm shadow border-0"> |
24 | <img src="{{apiUrl}}/imagenes/{{producto.nombreImagen}}" class="card-img-top w-75 m-auto"> | 24 | <img src="{{apiUrl}}/imagenes/{{producto.nombreImagen}}" class="card-img-top w-75 m-auto"> |
25 | <div class="card-body"> | 25 | <div class="card-body"> |
26 | <p class="h5 text-left m-0">{{producto.variable}}</p> | 26 | <p class="h5 text-left m-0">{{producto.variable}}</p> |
27 | <div class="text-left"> | 27 | <div class="text-left"> |
28 | <p class="m-0"><small>ASDASDSADASDSA</small></p> | 28 | <p class="m-0"><small>ASDASDSADASDSA</small></p> |
29 | <p class="m-0"><small>COD. 1222</small></p> | 29 | <p class="m-0"><small>COD. 1222</small></p> |
30 | <p class="m-0"><strong>$ 563</strong></p> | 30 | <p class="m-0"><strong>$ 563</strong></p> |
31 | </div> | 31 | </div> |
32 | </div> | 32 | </div> |
33 | </div> | 33 | </div> |
34 | </div> | 34 | </div> |
35 | </div> | 35 | </div> |
36 | </div> | 36 | </div> |
37 | <div class="col-sm-5"> | 37 | <div class="col-sm-5"> |
38 | <h3>TOTAL: $553</h3> | 38 | <h3>TOTAL: $553</h3> |
39 | </div> | 39 | </div> |
40 | </div> | 40 | </div> |
41 | </div> | 41 | </div> |
42 | </div> | 42 | </div> |
43 | 43 |
src/app/components/inicio/inicio.component.html
1 | <div class="row m-0 fade-in"> | 1 | <div class="row m-0 fade-in"> |
2 | <div class="col-12 p-0"> | 2 | <div class="col-12 p-0"> |
3 | 3 | ||
4 | <!-- NOMBRE DE SECCION --> | 4 | <!-- NOMBRE DE SECCION --> |
5 | <div class="row m-0"> | 5 | <div class="row m-0"> |
6 | <div class="col-12 p-0"> | 6 | <div class="col-12 p-0"> |
7 | <p class="h5 py-1 bg-gray text-muted text-center">Inicio</p> | 7 | <p class="h5 py-1 bg-gray text-muted text-center">Inicio</p> |
8 | </div> | 8 | </div> |
9 | </div> | 9 | </div> |
10 | 10 | ||
11 | <div class="row m-4 d-flex align-items-center disable-user-select"> | 11 | <div class="row m-3 d-flex align-items-start disable-user-select"> |
12 | <div class="col-md-5 d-flex align-items-end flex-column"> | 12 | <div class="col-md-5 d-flex align-items-end flex-column"> |
13 | 13 | ||
14 | <!-- PROMOCIONES --> | 14 | <!-- PROMOCIONES --> |
15 | <div class="card bg-white border-0 shadow rounded w-100 mb-auto"> | 15 | <div class="card bg-white border-0 shadow rounded w-100 mb-auto"> |
16 | <div class="card-body text-left p-4"> | 16 | <div class="card-body text-left px-4 py-3"> |
17 | <div class="row"> | 17 | <div class="row"> |
18 | <div class="col-7"> | 18 | <div class="col-7"> |
19 | <p class="h3 card-title">Promociones</p> | 19 | <p class="h3 card-title">Promociones</p> |
20 | </div> | 20 | </div> |
21 | <div class="col-5 p-0"> | 21 | <div class="col-5 p-0"> |
22 | <img src="{{apiUrl}}/imagenes/primario.promociones.png" class="icon-dim m-0"> | 22 | <img src="{{apiUrl}}/imagenes/primario.promociones.png" class="icon-dim m-0"> |
23 | </div> | 23 | </div> |
24 | </div> | 24 | </div> |
25 | <p class="h5 card-text text-muted font-weight-light">Conozca las ofertas del momento.</p> | 25 | <p class="h5 card-text text-muted font-weight-light">Conozca las ofertas del momento.</p> |
26 | </div> | 26 | </div> |
27 | <div id="carouselIndicators" class="carousel slide mb-4" data-ride="carousel"> | 27 | <div id="carouselIndicators" class="carousel slide" data-ride="carousel"> |
28 | <ol class="carousel-indicators m-0"> | ||
29 | <li data-target="#carouselIndicators" data-slide-to="0" class="bg-dark active"></li> | ||
30 | <li data-target="#carouselIndicators" data-slide-to="1" class="bg-dark"></li> | ||
31 | <li data-target="#carouselIndicators" data-slide-to="2" class="bg-dark"></li> | ||
32 | </ol> | ||
33 | <div class="carousel-inner"> | 28 | <div class="carousel-inner"> |
34 | <div class="carousel-item active"> | 29 | <div class="carousel-item active"> |
35 | <img src="{{apiUrl}}/imagenes/descarga.jpg" class="d-block w-50 m-auto rounded"> | 30 | <img src="{{apiUrl}}/imagenes/cafe.jpg" class="d-block w-100 m-auto rounded"> |
36 | </div> | 31 | </div> |
37 | <div class="carousel-item"> | 32 | <div class="carousel-item"> |
38 | <img src="{{apiUrl}}/imagenes/descarga.jpg" class="d-block w-50 m-auto rounded"> | 33 | <img src="{{apiUrl}}/imagenes/cafe.jpg" class="d-block w-100 m-auto rounded"> |
39 | </div> | 34 | </div> |
40 | <div class="carousel-item"> | 35 | <div class="carousel-item"> |
41 | <img src="{{apiUrl}}/imagenes/descarga.jpg" class="d-block w-50 m-auto rounded"> | 36 | <img src="{{apiUrl}}/imagenes/cafe.jpg" class="d-block w-100 m-auto rounded"> |
42 | </div> | 37 | </div> |
43 | </div> | 38 | </div> |
44 | </div> | 39 | </div> |
45 | </div> | 40 | </div> |
46 | 41 | ||
47 | <!-- ORDENAR --> | 42 | <!-- ORDENAR --> |
48 | <div class="card card-effect bg-white border-0 shadow rounded w-100 mt-4"> | 43 | <div class="card card-effect bg-white border-0 shadow rounded w-100 mt-4"> |
49 | <div class="card-body text-left p-4"> | 44 | <div class="card-body text-left px-4 py-3"> |
50 | <div class="row"> | 45 | <div class="row"> |
51 | <div class="col-5"> | 46 | <div class="col-5"> |
52 | <p class="h3 card-title">Ordenar</p> | 47 | <p class="h3 card-title">Ordenar</p> |
53 | </div> | 48 | </div> |
54 | <div class="col-7 p-0"> | 49 | <div class="col-7 p-0"> |
55 | <img src="{{apiUrl}}/imagenes/primario.ordenar.png" class="icon-dim"> | 50 | <img src="{{apiUrl}}/imagenes/primario.ordenar.png" class="icon-dim"> |
56 | </div> | 51 | </div> |
57 | </div> | 52 | </div> |
58 | <p class="h5 card-text text-muted font-weight-light">Arme su pedido y solo pase a retirar.</p> | 53 | <p class="h5 card-text text-muted font-weight-light">Arme su pedido y solo pase a retirar.</p> |
59 | </div> | 54 | </div> |
60 | <img | 55 | <img |
61 | class="card-img-bottom d-block w-100 mx-auto rounded" | 56 | class="card-img-bottom d-block w-100 mx-auto rounded" |
62 | src="{{apiUrl}}/imagenes/cafe.jpg"> | 57 | src="{{apiUrl}}/imagenes/cafe.jpg"> |
63 | </div> | 58 | </div> |
64 | </div> | 59 | </div> |
65 | 60 | ||
66 | <div class="col-md-7 d-flex align-items-end flex-column"> | 61 | <div class="col-md-7 d-flex align-items-end flex-column mt-4 mt-md-0"> |
67 | 62 | ||
68 | <!-- CARGAR PRODUCTOS --> | 63 | <!-- CARGAR PRODUCTOS --> |
69 | <ng-template #popTemplate> | 64 | <ng-template #popTemplate> |
70 | <app-popover | 65 | <app-popover |
71 | [popover]="popoverDirective" | 66 | [popover]="popoverDirective" |
72 | [popoverContent]="'que onda'" | 67 | [popoverContent]="popoverContent" |
73 | class="card bg-primary text-white rounded-sm border-0"> | 68 | class="fade-in text-white rounded-sm border-0"> |
74 | </app-popover> | 69 | </app-popover> |
75 | </ng-template> | 70 | </ng-template> |
76 | <div | 71 | <div |
77 | placement="left" | 72 | placement="left" |
78 | triggers="" | 73 | triggers="" |
79 | [popover]="popTemplate" | 74 | [popover]="popTemplate" |
80 | class="w-100" | 75 | class="w-100" |
81 | #pop="bs-popover" | 76 | #pop="bs-popover"> |
82 | (click)="open()"> | ||
83 | <div class="card bg-white border-0 shadow rounded mb-auto"> | 77 | <div class="card bg-white border-0 shadow rounded mb-auto"> |
84 | <div class="card-body text-left p-4"> | 78 | <div class="card-body text-left px-4 py-3"> |
85 | <div class="row"> | 79 | <div class="row"> |
86 | <div class="col-6"> | 80 | <div class="col-6"> |
87 | <p class="h3 card-title">Cargar Productos</p> | 81 | <p class="h3 card-title">Cargar Productos</p> |
88 | </div> | 82 | </div> |
89 | <div class="col-6 p-0"> | 83 | <div class="col-6 p-0"> |
90 | <img src="{{apiUrl}}/imagenes/escanear.png" class="icon-dim mb-2"> | 84 | <img src="{{apiUrl}}/imagenes/escanear.png" class="icon-dim mb-2"> |
91 | </div> | 85 | </div> |
92 | </div> | 86 | </div> |
93 | <p class="h5 card-text text-muted font-weight-light"> | 87 | <p class="h5 card-text text-muted font-weight-light"> |
94 | Coloque el código de<br> | 88 | Coloque el código de<br> |
95 | barras o QR frente al scanner. | 89 | barras o QR frente al scanner. |
96 | </p> | 90 | </p> |
97 | </div> | 91 | </div> |
98 | <div class="card bg-white border-0 w-75 mx-auto mb-4"> | 92 | <div class="row m-4"> |
99 | <img class="card-img-top d-block w-50 mx-auto rounded" src="{{apiUrl}}/imagenes/descarga.jpg"> | 93 | <div class="col card bg-white shadow border-0 w-75 p-0 mx-auto rounded-sm"> |
100 | <div class="card-body text-left p-2"> | 94 | <img |
101 | <p class="m-0 card-text text-muted">Galletas Oreo x117 grs Chocolate.</p> | 95 | *ngIf="!productoAcargar" |
102 | <p class="m-0 card-text text-muted">COD. 12121222</p> | 96 | class="card-img-top d-block w-100 mx-auto rounded-sm" |
97 | src="{{apiUrl}}/imagenes/escanner.jpg"> | ||
98 | <div *ngIf="productoAcargar"> | ||
99 | <img | ||
100 | class="card-img-top d-block w-100 mx-auto rounded-sm" | ||
101 | src="{{apiUrl}}/imagenes/cafe.jpg"> | ||
102 | |||
103 | <div class="row justify-content-between m-3"> | ||
104 | <div class="col-auto text-left px-1"> | ||
105 | <p class="h6 font-weight-bold mb-0">{{productoAcargar.DetArt}}</p> | ||
106 | <p class="h6 mb-0"><small>{{productoAcargar.DetArt}}</small></p> | ||
107 | </div> | ||
108 | <div class="col-4 text-right my-auto"> | ||
109 | <p class="h5 font-weight-bold mb-0">{{productoAcargar.PreVen | currency}}</p> | ||
110 | </div> | ||
111 | </div> | ||
112 | </div> | ||
113 | </div> | ||
114 | <!-- BOTONES --> | ||
115 | <div | ||
116 | class="col-5 pr-0" | ||
117 | *ngIf="productoAcargar && tienePromo"> | ||
118 | <button | ||
119 | *ngIf="productoEsPromo" | ||
120 | type="button" | ||
121 | class="btn btn-light btn-block shadow-sm" | ||
122 | (click)="pop.show()"> | ||
123 | <span class="pr-2">Personalizar</span> | ||
124 | <i class="fa fa-hand-o-up text-purple" aria-hidden="true"></i> | ||
125 | </button> | ||
126 | <button | ||
127 | *ngIf="!productoEsPromo" | ||
128 | type="button" | ||
129 | class="btn btn-primary btn-block shadow-sm" | ||
130 | (click)="pop.show()"> | ||
131 | <span class="pr-2">Mostrar promociones</span> | ||
132 | <i class="fa fa-bullhorn fa-flip-horizontal" aria-hidden="true"></i> | ||
133 | </button> | ||
134 | <button type="button" class="btn btn-light btn-block shadow-sm my-3"> | ||
135 | <span class="pr-2 font-weight-bold">Confirmar</span> | ||
136 | <i class="fa fa-check text-success" aria-hidden="true"></i> | ||
137 | </button> | ||
138 | <button | ||
139 | type="button" | ||
140 | class="btn btn-light btn-block shadow-sm" | ||
141 | (click)="deshacerCarga()"> | ||
142 | <span class="pr-2">Deshacer</span> | ||
143 | <i class="fa fa-undo text-warning" aria-hidden="true"></i> | ||
144 | </button> | ||
103 | </div> | 145 | </div> |
104 | </div> | 146 | </div> |
105 | </div> | 147 | </div> |
106 | </div> | 148 | </div> |
107 | 149 | ||
108 | <!-- BUSCAR PRODUCTOS --> | 150 | <!-- BUSCAR PRODUCTOS --> |
109 | <div (click)="goPage('busqueda-productos')" | 151 | <div (click)="goPage('busqueda-productos')" |
110 | class="card card-effect bg-white border-0 shadow rounded w-100 mt-4"> | 152 | class="card card-effect bg-white border-0 shadow rounded w-100 mt-4"> |
111 | <div class="card-body text-left p-4"> | 153 | <div class="card-body text-left px-4 py-3"> |
112 | <div class="row"> | 154 | <div class="row"> |
113 | <div class="col-6"> | 155 | <div class="col-6"> |
114 | <p class="h3 card-title">Buscar Productos</p> | 156 | <p class="h3 card-title">Buscar Productos</p> |
115 | <p class="h5 card-text text-muted font-weight-light"> | 157 | <p class="h5 card-text text-muted font-weight-light"> |
116 | Busque aquí los productos<br> | 158 | Busque aquí los productos<br> |
117 | que no tienen código </p> | 159 | que no tienen código </p> |
118 | </div> | 160 | </div> |
119 | <div class="col-6 p-0"> | 161 | <div class="col-6 p-0"> |
120 | <img src="{{apiUrl}}/imagenes/primario.buscar.png" class="icon-dim mb-2"> | 162 | <img src="{{apiUrl}}/imagenes/primario.buscar.png" class="icon-dim mb-2"> |
121 | </div> | 163 | </div> |
122 | </div> | 164 | </div> |
123 | 165 | ||
124 | </div> | 166 | </div> |
125 | </div> | 167 | </div> |
126 | 168 | ||
127 | </div> | 169 | </div> |
src/app/components/inicio/inicio.component.ts
1 | import { Component, OnInit, ViewChild } from '@angular/core'; | 1 | import { Component, OnInit, ViewChild } from '@angular/core'; |
2 | import { Router } from '@angular/router'; | ||
3 | import { PopoverDirective } from 'ngx-bootstrap'; | 2 | import { PopoverDirective } from 'ngx-bootstrap'; |
4 | import { appSettings } from 'src/etc/AppSettings'; | 3 | import { appSettings } from 'src/etc/AppSettings'; |
4 | import { Producto } from 'src/app/wrappers/producto'; | ||
5 | import { ProductoService } from 'src/app/services/producto.service'; | ||
6 | import { Router } from '@angular/router'; | ||
7 | import { Promocion } from 'src/app/wrappers/promocion'; | ||
5 | 8 | ||
6 | 9 | ||
7 | @Component({ | 10 | @Component({ |
8 | selector: 'app-inicio', | 11 | selector: 'app-inicio', |
9 | templateUrl: './inicio.component.html', | 12 | templateUrl: './inicio.component.html', |
10 | styleUrls: ['./inicio.component.scss'] | 13 | styleUrls: ['./inicio.component.scss'] |
11 | }) | 14 | }) |
12 | export class InicioComponent implements OnInit { | 15 | export class InicioComponent implements OnInit { |
13 | 16 | ||
14 | @ViewChild('pop', { static: false }) popoverDirective: PopoverDirective; | 17 | @ViewChild('pop', { static: false }) popoverDirective: PopoverDirective; |
15 | apiUrl : string = appSettings.apiUrl | 18 | private productoAcargar: Producto; |
19 | private tienePromo = false; | ||
20 | private productoEsPromo = false; | ||
21 | |||
22 | popoverContent: Promocion[] = [] | ||
23 | apiUrl: string = appSettings.apiUrl | ||
16 | 24 | ||
17 | constructor(private router: Router) { } | 25 | constructor( |
26 | private router: Router, | ||
27 | private productoService: ProductoService) { } | ||
18 | 28 | ||
19 | ngOnInit() { | 29 | ngOnInit() { |
30 | |||
31 | this.productoAcargar = this.productoService.productoAcargar; | ||
32 | if (this.productoAcargar) { | ||
33 | var sector = this.productoAcargar.CodSec; | ||
34 | var codigo = this.productoAcargar.CodArt; | ||
35 | this.productoService.getPromocion(sector, codigo) | ||
36 | .subscribe((promociones: Promocion[]) => { | ||
37 | |||
38 | if (promociones.length === 0) { | ||
39 | //Si no tiene promociones la cargará al carrito despues de un tiempo | ||
40 | setTimeout(() => { | ||
41 | this.productoService.productos.push(this.productoAcargar); | ||
42 | this.productoAcargar = undefined; | ||
43 | this.tienePromo = false; | ||
44 | }, 2000) | ||
45 | } else { | ||
46 | |||
47 | this.popoverContent = promociones; | ||
48 | this.tienePromo = true; | ||
49 | this.popoverDirective.show(); | ||
50 | } | ||
51 | }, error => { console.error(error); }) | ||
52 | } | ||
20 | } | 53 | } |
21 | 54 | ||
22 | open() { | 55 | showPopover() { |
23 | 56 | ||
24 | this.popoverDirective.show(); | 57 | this.popoverDirective.show(); |
25 | } | 58 | } |
26 | 59 | ||
27 | private goPage(pageUrl) { | 60 | private goPage(pageUrl) { |
28 | this.router.navigate([pageUrl]); | 61 | this.router.navigate([pageUrl]); |
29 | } | 62 | } |
30 | 63 | ||
64 | deshacerCarga() { | ||
65 | |||
66 | this.productoAcargar = undefined; | ||
67 | this.tienePromo = false; | ||
68 | this.popoverDirective.hide(); | ||
69 | } | ||
70 | |||
31 | } | 71 | } |
src/app/components/master/master.component.html
1 | <div class="row m-0 fade-in"> | 1 | <div class="row m-0 fade-in"> |
2 | <div class="col-10 p-0"> | 2 | <div class="col-10 p-0 vh-100"> |
3 | 3 | ||
4 | <!-- TOP HEADER --> | 4 | <!-- TOP HEADER --> |
5 | <app-header></app-header> | 5 | <app-header></app-header> |
6 | 6 | ||
7 | <router-outlet></router-outlet> | 7 | <router-outlet></router-outlet> |
8 | 8 | ||
9 | </div> | 9 | </div> |
10 | 10 | ||
11 | <!-- SIDEBAR --> | 11 | <!-- SIDEBAR --> |
12 | <app-sidebar class="col-2 col-md-2 vh-100 bg-primary-gradient"></app-sidebar> | 12 | <app-sidebar class="sidebar position-fixed float-right col-2 col-md-2 vh-100 bg-primary-gradient"></app-sidebar> |
13 | 13 | ||
14 | </div> | 14 | </div> |
15 | 15 |
src/app/components/popover/popover.component.html
1 | <div class="card-body"> | 1 | <div class="card-body"> |
2 | <div class="row"> | 2 | <div class="row"> |
3 | <div class="col"> | 3 | <div class="col text-left"> |
4 | <p class="h5 card-title"> | 4 | <p class="h5 card-title"> |
5 | Este producto forma parte<br> | 5 | Este producto forma parte<br> |
6 | de Combos y Promociones | 6 | de Combos y Promociones |
7 | </p> | 7 | </p> |
8 | </div> | 8 | </div> |
9 | </div> | 9 | </div> |
10 | 10 | ||
11 | <div class="row"> | 11 | <div class="overflow-scroll popover-size pr-2"> |
12 | <div class="col text-dark"> | 12 | <div |
13 | <div class="bg-white rounded-sm p-2 px-3"> | 13 | class="row my-2" |
14 | <div class="row justify-content-between"> | 14 | *ngFor="let promo of popoverContent"> |
15 | <div class="col-auto"> | 15 | <div class="col text-dark"> |
16 | <p class="h4 font-weight-bold mb-0">Promo 2x1</p> | 16 | <div class="bg-white rounded-sm p-2 px-3"> |
17 | <p class="h6 mb-0">{{popoverContent}}</p> | 17 | <div class="row justify-content-between"> |
18 | </div> | 18 | <div class="col-auto text-left"> |
19 | <div class="col-4 text-right my-auto"> | 19 | <p class="h5 font-weight-bold mb-0">{{promo.nombrePromo}}</p> |
20 | <p class="h3 font-weight-bold mb-0">{{28 | currency}}</p> | 20 | <p |
21 | class="h6 mb-0" | ||
22 | *ngFor="let producto of promo.productos"> | ||
23 | {{producto.DetArt}} | ||
24 | </p> | ||
25 | </div> | ||
26 | <div class="col-auto text-right align-self-end"> | ||
27 | <p class="h4 font-weight-bold mb-0">{{28 | currency}}</p> | ||
28 | </div> | ||
21 | </div> | 29 | </div> |
22 | </div> | 30 | </div> |
23 | </div> | 31 | </div> |
24 | </div> | 32 | </div> |
25 | </div> | 33 | </div> |
26 | 34 | ||
27 | <div class="row mt-3 justify-content-end"> | 35 | <div class="row mt-3 justify-content-end"> |
28 | <div class="col-auto"> | 36 | <div class="col-auto"> |
29 | <button | 37 | <button |
30 | type="button" | 38 | type="button" |
31 | class="btn btn-sm btn-light shadow" | 39 | class="btn btn-sm btn-light shadow" |
32 | (click)="hide()"> | 40 | (click)="hide()"> |
33 | <span class="pr-2">No, gracias</span> | 41 | <span class="pr-2">No, gracias</span> |
34 | <i class="fa fa-times text-danger" aria-hidden="true"></i> | 42 | <i class="fa fa-times text-danger" aria-hidden="true"></i> |
35 | </button> | 43 | </button> |
36 | </div> | 44 | </div> |
37 | </div> | 45 | </div> |
38 | 46 | ||
39 | </div> | 47 | </div> |
40 | 48 |
src/app/components/popover/popover.component.scss
1 | .popover-size { | ||
2 | max-height: 430px !important; | ||
3 | min-height: 200px !important; | ||
4 | } | ||
5 |
src/app/components/popover/popover.component.ts
1 | import { Component, OnInit, Input } from '@angular/core'; | 1 | import { Component, OnInit, Input } from '@angular/core'; |
2 | import { PopoverDirective } from 'ngx-bootstrap/popover'; | 2 | import { PopoverDirective } from 'ngx-bootstrap/popover'; |
3 | import { Promocion } from 'src/app/wrappers/promocion'; | ||
3 | 4 | ||
4 | @Component({ | 5 | @Component({ |
5 | selector: 'app-popover', | 6 | selector: 'app-popover', |
6 | templateUrl: './popover.component.html', | 7 | templateUrl: './popover.component.html', |
7 | styleUrls: ['./popover.component.scss'] | 8 | styleUrls: ['./popover.component.scss'] |
8 | }) | 9 | }) |
9 | export class PopoverComponent implements OnInit { | 10 | export class PopoverComponent implements OnInit { |
10 | 11 | ||
11 | @Input() popover: PopoverDirective; | 12 | @Input() popover: PopoverDirective; |
12 | @Input() popoverContent: string; | 13 | @Input() popoverContent: Promocion[]; |
13 | 14 | ||
14 | constructor() { } | 15 | constructor() { } |
15 | 16 | ||
16 | ngOnInit() { | 17 | ngOnInit() { |
17 | } | 18 | } |
18 | 19 | ||
19 | hide() { | 20 | hide() { |
20 | this.popover.hide(); | 21 | this.popover.hide(); |
21 | } | 22 | } |
22 | 23 | ||
23 | } | 24 | } |
24 | 25 |
src/app/components/sidebar/sidebar.component.scss
1 | .card-description{ | 1 | .card-description{ |
2 | font-size: 12px; | 2 | font-size: 12px; |
3 | } | 3 | } |
4 | 4 | ||
5 | app-sidebar { | ||
6 | background-color: red !important; | ||
7 | } | ||
8 | 5 |
src/app/services/producto.service.ts
1 | import { Injectable } from '@angular/core'; | 1 | import { Injectable } from '@angular/core'; |
2 | import { HttpClient } from '@angular/common/http'; | 2 | import { HttpClient } from '@angular/common/http'; |
3 | import { Observable } from 'rxjs'; | 3 | import { Observable } from 'rxjs'; |
4 | import { appSettings } from 'src/etc/AppSettings'; | 4 | import { appSettings } from 'src/etc/AppSettings'; |
5 | import { Producto } from '../wrappers/producto'; | 5 | import { Producto } from '../wrappers/producto'; |
6 | 6 | ||
7 | @Injectable({ | 7 | @Injectable({ |
8 | providedIn: 'root' | 8 | providedIn: 'root' |
9 | }) | 9 | }) |
10 | export class ProductoService { | 10 | export class ProductoService { |
11 | 11 | ||
12 | productos : Producto[] = []; | 12 | productos: Producto[] = []; |
13 | productoAcargar: Producto; | ||
13 | 14 | ||
14 | constructor(private http: HttpClient) { } | 15 | constructor(private http: HttpClient) { } |
15 | 16 | ||
16 | getAll(): Observable<any> { | 17 | getAll(): Observable<any> { |
17 | 18 | ||
18 | return this.http.get(`${appSettings.apiUrl}/articulos`); | 19 | return this.http.get(`${appSettings.apiUrl}/articulos`); |
19 | } | 20 | } |
20 | 21 | ||
21 | setProductos(producto : Producto){ | 22 | setProductos(producto: Producto) { |
22 | 23 | ||
23 | this.productos.push(producto); | 24 | this.productos.push(producto); |
24 | } | 25 | } |
25 | 26 | ||
27 | getPromocion(sector, codigo): Observable<any> { | ||
28 | |||
29 | var url = `${appSettings.apiUrl}/promociones/incluir-articulo/${sector}/${codigo}`; | ||
30 | return this.http.get(url); | ||
31 | } | ||
32 | |||
26 | } | 33 | } |
27 | 34 |
src/app/wrappers/promocion.ts
File was created | 1 | import { Producto } from './producto'; | |
2 | |||
3 | export interface Promocion { | ||
4 | idPromo: number; | ||
5 | nombrePromo: string; | ||
6 | productos: Producto[]; | ||
7 | } | ||
8 |
src/assets/scss/bootstrap-override.scss
1 | @import "../../../node_modules/bootstrap/scss/functions"; | 1 | @import "../../../node_modules/bootstrap/scss/functions"; |
2 | @import "../../../node_modules/bootstrap/scss/variables"; | 2 | @import "../../../node_modules/bootstrap/scss/variables"; |
3 | @import "../../../node_modules/bootstrap/scss/mixins"; | ||
4 | |||
5 | $primary: #2872ae; | ||
3 | 6 | ||
4 | $theme-colors: ( | 7 | $theme-colors: ( |
5 | primary: #2872ae, | 8 | primary: $primary, |
6 | light: white | 9 | light: white |
7 | ); | 10 | ); |
8 | 11 | ||
9 | .popover { | 12 | .popover { |
10 | min-width: 470px !important; | 13 | transform: translate3d(-464px, 0, -34px) !important; |
11 | max-width: auto !important; | 14 | min-width: 200px !important; |
15 | max-width: 525px !important; | ||
12 | border: none !important; | 16 | border: none !important; |
13 | border-radius: 1.5rem !important; | 17 | border-radius: 1.5rem !important; |
14 | padding: 0 !important; | 18 | padding: 0 !important; |
19 | background-color: $primary !important; | ||
15 | .popover-body { | 20 | .popover-body { |
16 | padding: 0 !important; | 21 | padding: 0 !important; |
17 | } | 22 | } |
18 | } | 23 | } |
19 | 24 | ||
20 | .bs-popover-left .arrow::after, | 25 | .bs-popover-left .arrow::after, |
21 | .bs-popover-auto[x-placement^="left"] .arrow::after { | 26 | .bs-popover-auto[x-placement^="left"] .arrow::after { |
22 | border-left-color: #2872ae !important; // Any color here | 27 | border-left-color: $primary !important; |
23 | } | 28 | } |
24 | 29 | ||
25 | .bs-popover-right .arrow::after, | 30 | .bs-popover-right .arrow::after, |
26 | .bs-popover-auto[x-placement^="right"] .arrow::after { | 31 | .bs-popover-auto[x-placement^="right"] .arrow::after { |
27 | border-right-color: #2872ae !important; // Any color here | 32 | border-right-color: $primary !important; |
28 | } | 33 | } |
29 | 34 | ||
30 | .bs-popover-top .arrow::after, | 35 | .bs-popover-top .arrow::after, |
31 | .bs-popover-auto[x-placement^="top"] .arrow::after { | 36 | .bs-popover-auto[x-placement^="top"] .arrow::after { |
32 | border-top-color: #2872ae !important; // Any color here | 37 | border-top-color: $primary !important; |
33 | } | 38 | } |
34 | 39 | ||
35 | .bs-popover-bottom .arrow::after, | 40 | .bs-popover-bottom .arrow::after, |
36 | .bs-popover-auto[x-placement^="bottom"] .arrow::after { | 41 | .bs-popover-auto[x-placement^="bottom"] .arrow::after { |
37 | border-bottom-color: #2872ae !important; // Any color here | 42 | border-bottom-color: $primary !important; |
38 | } | 43 | } |
39 | 44 | ||
40 | .list-group-item.active { | 45 | .list-group-item.active { |
41 | background-color: #2872ae !important; | 46 | background-color: $primary !important; |
42 | border-color: #2872ae !important; | 47 | border-color: $primary !important; |
43 | } | 48 | } |
44 | 49 | ||
45 | @import "../../../node_modules/bootstrap/scss/bootstrap.scss"; | 50 | @import "../../../node_modules/bootstrap/scss/bootstrap"; |
46 | 51 |
src/favicon.ico
No preview for this file type
src/styles.scss
1 | @import "./assets/scss/animation.scss"; | 1 | @import "./assets/scss/animation.scss"; |
2 | @import "./assets/scss/bootstrap-override.scss"; | 2 | @import "./assets/scss/bootstrap-override.scss"; |
3 | @import "../node_modules/bootstrap/scss/_variables.scss"; | ||
3 | 4 | ||
4 | html, | 5 | html, |
5 | body { | 6 | body { |
6 | background-color: #f0f0f0; | 7 | background-color: #f0f0f0; |
7 | overflow: hidden; | 8 | overflow: hidden; |
8 | } | 9 | } |
9 | 10 | ||
10 | .blur { | 11 | .blur { |
11 | filter: blur(10px); | 12 | filter: blur(10px); |
12 | -webkit-filter: blur(10px); | 13 | -webkit-filter: blur(10px); |
13 | } | 14 | } |
14 | 15 | ||
15 | .disable-user-select { | 16 | .disable-user-select { |
16 | -webkit-user-select: none; | 17 | -webkit-user-select: none; |
17 | -moz-user-select: none; | 18 | -moz-user-select: none; |
18 | -ms-user-select: none; | 19 | -ms-user-select: none; |
19 | user-select: none; | 20 | user-select: none; |
20 | } | 21 | } |
21 | 22 | ||
22 | .blue-gradient { | 23 | .blue-gradient { |
23 | background: linear-gradient(0deg, #8093a4, #fcfcfc); | 24 | background: linear-gradient(0deg, #ffffff00, $white); |
24 | } | 25 | } |
25 | 26 | ||
26 | .rounded { | 27 | .rounded { |
27 | border-radius: 1.5rem !important; | 28 | border-radius: 1.5rem !important; |
28 | } | 29 | } |
29 | 30 | ||
30 | .rounded-top-sm { | 31 | .rounded-top-sm { |
31 | border-top-left-radius: 0.75rem !important; | 32 | border-top-left-radius: 0.75rem !important; |
32 | border-top-right-radius: 0.75rem !important; | 33 | border-top-right-radius: 0.75rem !important; |
33 | } | 34 | } |
34 | 35 | ||
35 | .rounded-sm { | 36 | .rounded-sm { |
36 | border-radius: 0.75rem !important; | 37 | border-radius: 0.75rem !important; |
37 | } | 38 | } |
38 | 39 | ||
39 | .card-effect { | 40 | .card-effect { |
40 | &:active { | 41 | &:active { |
41 | background-color: #c9c9c9b3 !important; | 42 | background-color: #c9c9c9b3 !important; |
42 | transition: background-color 0.5s; | 43 | transition: background-color 0.5s; |
43 | } | 44 | } |
44 | &:focus { | 45 | &:focus { |
45 | background-color: #c9c9c9b3 !important; | 46 | background-color: #c9c9c9b3 !important; |
46 | transition: background-color 0.5s; | 47 | transition: background-color 0.5s; |
47 | } | 48 | } |
48 | } | 49 | } |
49 | 50 | ||
50 | .overflow-scroll { | 51 | .overflow-scroll { |
51 | overflow-y: auto !important; | 52 | overflow-y: auto !important; |
52 | overflow-x: hidden !important; | 53 | overflow-x: hidden !important; |
53 | &::-webkit-scrollbar { | 54 | &::-webkit-scrollbar { |
54 | width: 0.5em; | 55 | width: 0.5em; |
55 | } | 56 | } |
56 | &::-webkit-scrollbar-track { | 57 | &::-webkit-scrollbar-track { |
57 | border-radius: 10px; | 58 | border-radius: 10px; |
58 | box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.4); | 59 | box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.4); |
59 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.4); | 60 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.4); |
61 | background-color: $white; | ||
60 | } | 62 | } |
61 | &::-webkit-scrollbar-thumb { | 63 | &::-webkit-scrollbar-thumb { |
64 | box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.7); | ||
62 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.7); | 65 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.7); |
63 | outline: 1px solid slategrey; | 66 | outline: 1px solid slategrey; |
64 | border-radius: 10px; | 67 | border-radius: 10px; |
65 | height: 12px; | 68 | height: 12px; |
66 | &:active { | 69 | &:active { |
67 | box-shadow: inset 0 0 8px rgba(255, 0, 0, 0.9); | 70 | box-shadow: inset 0 0 8px rgba(255, 0, 0, 0.9); |
68 | -webkit-box-shadow: inset 0 0 8px rgba(255, 0, 0, 0.9); | 71 | -webkit-box-shadow: inset 0 0 8px rgba(255, 0, 0, 0.9); |
69 | } | 72 | } |
70 | } | 73 | } |
71 | &::-webkit-scrollbar-corner { | 74 | &::-webkit-scrollbar-corner { |
72 | border-radius: 10px; | 75 | border-radius: 10px; |
73 | } | 76 | } |
74 | } | 77 | } |
75 | 78 | ||
76 | .bg-gray { | 79 | .bg-gray { |
77 | background-color: #e6e6e6; | 80 | background-color: #e6e6e6; |
78 | } | 81 | } |
79 | 82 | ||
80 | .bg-primary-gradient { | 83 | .bg-primary-gradient { |
81 | background: linear-gradient(135deg, rgba(40, 112, 175, 1) 0%, rgba(0, 32, 66, 1) 100%); | 84 | background: linear-gradient(135deg, rgba(40, 112, 175, 1) 0%, rgba(0, 32, 66, 1) 100%); |
82 | } | 85 | } |
83 | 86 | ||
84 | .icon-dim { | 87 | .icon-dim { |
85 | height: 40px !important; | 88 | height: 40px !important; |
86 | width: auto !important; | 89 | width: auto !important; |
87 | background-color: white !important; | 90 | background-color: white !important; |
88 | } | 91 | } |
89 | 92 | ||
90 | .carousel-indicators li{ | 93 | .text-purple { |
91 | width: 10px !important; | 94 | color: $purple; |
92 | height: 10px !important; | 95 | } |
93 | border-radius: 15px !important; | 96 | |
94 | border-top: black !important; | 97 | .vh-70 { |
95 | border-bottom: black !important; | 98 | min-height: auto !important; |
99 | max-height: 70vh !important; | ||
100 | } | ||
101 | |||
102 | .vh-60 { | ||
103 | min-height: auto !important; | ||
104 | max-height: 60vh !important; | ||
105 | } | ||
106 | |||
107 | .spinner-lg { | ||
108 | width: 3rem !important; | ||
109 | height: 3rem !important; | ||
110 | } | ||
111 | |||
112 | .sidebar { | ||
113 | right: 0; | ||
96 | } | 114 | } |
97 | 115 |