Commit df5ac1b54a3d10c59ddc5e4d95930df68302f126
Exists in
master
and in
1 other branch
Cambios en scss
Showing
6 changed files
Show diff stats
src/app/app.module.ts
| ... | ... | @@ -3,6 +3,7 @@ import { BrowserModule } from '@angular/platform-browser'; |
| 3 | 3 | import { NgModule } from '@angular/core'; |
| 4 | 4 | import { AppRoutingModule } from './app-routing.module'; |
| 5 | 5 | import { HttpClientModule } from '@angular/common/http'; |
| 6 | +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; | |
| 6 | 7 | //#endregion |
| 7 | 8 | |
| 8 | 9 | //#region COMPONENTS |
| ... | ... | @@ -30,7 +31,10 @@ import { ConfirmacionCarritoComponent } from './components/confirmacion-carrito/ |
| 30 | 31 | imports: [ |
| 31 | 32 | BrowserModule, |
| 32 | 33 | AppRoutingModule, |
| 33 | - HttpClientModule | |
| 34 | + HttpClientModule, | |
| 35 | + FormsModule, | |
| 36 | + ReactiveFormsModule, | |
| 37 | + ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }) | |
| 34 | 38 | ], |
| 35 | 39 | providers: [], |
| 36 | 40 | bootstrap: [AppComponent] |
src/app/components/busqueda-productos/busqueda-productos.component.html
| ... | ... | @@ -16,43 +16,58 @@ |
| 16 | 16 | <div class="row m-4 disable-user-select"> |
| 17 | 17 | |
| 18 | 18 | <!-- FILTROS --> |
| 19 | - <div class="col-sm-2"> | |
| 19 | + <div class="col-sm-2 p-1"> | |
| 20 | 20 | <div class="text-center"> |
| 21 | 21 | <p class="font-weight-bold text-muted border-bottom pb-2">Buscar por Categoría</p> |
| 22 | 22 | </div> |
| 23 | 23 | <ul class="list-group"> |
| 24 | - <li class="list-group-item list-group-item-action my-1 py-2 h6"> | |
| 24 | + <li | |
| 25 | + [ngClass]="{active: categoria == 1}" | |
| 26 | + (click)="categoria = 1" | |
| 27 | + class="list-group-item list-group-item-action text-center my-1 p-2 h6"> | |
| 25 | 28 | Combos y Promociones |
| 26 | 29 | </li> |
| 27 | 30 | <li |
| 28 | - class="list-group-item list-group-item-action my-1 p-2 h6 shadow-sm font-weight-bold"> | |
| 31 | + [ngClass]="{active: categoria == 2}" | |
| 32 | + (click)="categoria = 2" | |
| 33 | + class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | |
| 29 | 34 | Todos |
| 30 | 35 | </li> |
| 31 | 36 | <li |
| 32 | - class="list-group-item list-group-item-action my-1 p-2 h6 shadow-sm"> | |
| 37 | + [ngClass]="{active: categoria == 3}" | |
| 38 | + (click)="categoria = 3" | |
| 39 | + class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | |
| 33 | 40 | Bebidas |
| 34 | 41 | </li> |
| 35 | 42 | <li |
| 36 | - class="list-group-item list-group-item-action my-1 p-2 h6 shadow-sm"> | |
| 43 | + [ngClass]="{active: categoria == 4}" | |
| 44 | + (click)="categoria = 4" | |
| 45 | + class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | |
| 37 | 46 | Sandwichería |
| 38 | 47 | </li> |
| 39 | 48 | <li |
| 40 | - class="list-group-item list-group-item-action my-1 p-2 h6 shadow-sm"> | |
| 49 | + [ngClass]="{active: categoria == 5}" | |
| 50 | + (click)="categoria = 5" | |
| 51 | + class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | |
| 41 | 52 | Panaderia |
| 42 | 53 | </li> |
| 43 | 54 | <li |
| 44 | - class="list-group-item list-group-item-action my-1 p-2 h6 shadow-sm"> | |
| 55 | + [ngClass]="{active: categoria == 6}" | |
| 56 | + (click)="categoria = 6" | |
| 57 | + class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | |
| 45 | 58 | Golosinas |
| 46 | 59 | </li> |
| 47 | 60 | <li |
| 48 | - class="list-group-item list-group-item-action my-1 p-2 h6 shadow-sm"> | |
| 61 | + [ngClass]="{active: categoria == 7}" | |
| 62 | + (click)="categoria = 7" | |
| 63 | + class="list-group-item list-group-item-action text-center my-1 p-2 h6 shadow-sm"> | |
| 49 | 64 | Tabaqueria |
| 50 | 65 | </li> |
| 51 | 66 | </ul> |
| 52 | 67 | </div> |
| 53 | 68 | |
| 54 | 69 | <!-- SEARCH INPUT --> |
| 55 | - <div class="col-sm-10"> | |
| 70 | + <div *ngIf="productos.length > 0" class="fade-in col-sm-10"> | |
| 56 | 71 | |
| 57 | 72 | <div class="form-group row search"> |
| 58 | 73 | <div class="col-sm-10"> |
| ... | ... | @@ -60,7 +75,9 @@ |
| 60 | 75 | <input |
| 61 | 76 | type="text" |
| 62 | 77 | class="form-control form-control-lg shadow-sm rounded-pill px-5" |
| 63 | - placeholder="Búsqueda productos"> | |
| 78 | + placeholder="Búsqueda productos" | |
| 79 | + [(ngModel)]="searchTerm" | |
| 80 | + (ngModelChange)="filterItems()"> | |
| 64 | 81 | </div> |
| 65 | 82 | <!-- BOTON VOLVER --> |
| 66 | 83 | <div class="col-sm-2"> |
| ... | ... | @@ -75,13 +92,13 @@ |
| 75 | 92 | </div> |
| 76 | 93 | |
| 77 | 94 | <!-- LISTA DE PRODUCTOS --> |
| 78 | - <div class="row pr-3 vh-50 overflow-scroll disable-user-select"> | |
| 95 | + <div class="row align-items-start vh-70 overflow-scroll disable-user-select"> | |
| 79 | 96 | <div |
| 80 | 97 | class="col-4 p-2" |
| 81 | - *ngFor="let producto of productos"> | |
| 82 | - <div class="card card-effect bg-white rounded-sm shadow border-0"> | |
| 83 | - <img src="../../../assets/img/descarga.jpg" class="card-img-top w-75 m-auto"> | |
| 84 | - <div class="card-body p-2"> | |
| 98 | + *ngFor="let producto of auxProductos"> | |
| 99 | + <div class="card-effect bg-white rounded-sm shadow border-0"> | |
| 100 | + <img src="../../../assets/img/descarga.jpg" class="w-75 m-auto"> | |
| 101 | + <div class="p-2"> | |
| 85 | 102 | <p class="h6 text-left m-0">{{producto.DetArt}}</p> |
| 86 | 103 | <div class="row justify-content-between m-0"> |
| 87 | 104 | <div class="col-12 p-0"> |
| ... | ... | @@ -100,6 +117,12 @@ |
| 100 | 117 | </div> |
| 101 | 118 | </div> |
| 102 | 119 | |
| 120 | + <!-- SPINNER --> | |
| 121 | + <div *ngIf="productos.length === 0 && showSpinner" class="col-sm-10 align-self-center"> | |
| 122 | + <div class="spinner-border spinner-lg text-secondary" role="status"></div> | |
| 123 | + <span class="text-secondary m-2 h5">Cargando información.</span> | |
| 124 | + </div> | |
| 125 | + | |
| 103 | 126 | </div> |
| 104 | 127 | |
| 105 | 128 | </div> |
src/app/components/busqueda-productos/busqueda-productos.component.scss
src/app/components/busqueda-productos/busqueda-productos.component.ts
| ... | ... | @@ -10,6 +10,10 @@ import { Producto } from 'src/app/wrappers/producto'; |
| 10 | 10 | export class BusquedaProductosComponent implements OnInit { |
| 11 | 11 | |
| 12 | 12 | productos: Producto[] = []; |
| 13 | + auxProductos: Producto[] = []; | |
| 14 | + searchTerm: string = ''; | |
| 15 | + showSpinner: boolean = true; | |
| 16 | + categoria: Categorias = Categorias.todos; | |
| 13 | 17 | |
| 14 | 18 | constructor(private productoService: ProductoService) { } |
| 15 | 19 | |
| ... | ... | @@ -18,11 +22,26 @@ export class BusquedaProductosComponent implements OnInit { |
| 18 | 22 | this.productoService.getAll() |
| 19 | 23 | .subscribe((data: Producto[]) => { |
| 20 | 24 | |
| 21 | - this.productos = data; | |
| 25 | + this.auxProductos = this.productos = data; | |
| 22 | 26 | }, (error) => { |
| 23 | - | |
| 27 | + this.showSpinner = false; | |
| 24 | 28 | console.error(error); |
| 25 | 29 | }); |
| 26 | 30 | } |
| 27 | 31 | |
| 32 | + filterItems() { | |
| 33 | + console.log(''); | |
| 34 | + this.auxProductos = this.productos.filter(x => x.DetArt.toLowerCase().includes(this.searchTerm.toLowerCase())); | |
| 35 | + } | |
| 36 | + | |
| 37 | +} | |
| 38 | + | |
| 39 | +enum Categorias { | |
| 40 | + promosCombos = 1, | |
| 41 | + todos = 2, | |
| 42 | + bebidas = 3, | |
| 43 | + sandwicheria = 4, | |
| 44 | + panaderia = 5, | |
| 45 | + golosinas = 6, | |
| 46 | + tabaqueria = 7, | |
| 28 | 47 | } |
src/assets/scss/bootstrap-override.scss
| 1 | -@import "../../../node_modules/bootstrap/scss/functions"; | |
| 1 | +@import "../../../node_modules/bootstrap/scss/functions"; | |
| 2 | 2 | @import "../../../node_modules/bootstrap/scss/variables"; |
| 3 | 3 | |
| 4 | 4 | $theme-colors: ( |
| 5 | - primary: red, | |
| 6 | - light: white, | |
| 5 | + primary: #2872ae, | |
| 6 | + light: white | |
| 7 | 7 | ); |
| 8 | 8 | |
| 9 | +.list-group-item.active { | |
| 10 | + background-color: #2872ae !important; | |
| 11 | + border-color: #2872ae !important; | |
| 12 | +} | |
| 13 | + | |
| 9 | 14 | @import "../../../node_modules/bootstrap/scss/bootstrap.scss"; |