Commit 4f1f6f3d58ca5076d3aa1139c2c12b00d67c7960
1 parent
9259d189a9
Exists in
develop
Cambio nombre de modulo
Showing
14 changed files
with
275 additions
and
275 deletions
Show diff stats
src/app/app-routing.module.ts
| 1 | import { NgModule } from '@angular/core'; | 1 | import { NgModule } from '@angular/core'; |
| 2 | import { Routes, RouterModule } from '@angular/router'; | 2 | import { Routes, RouterModule } from '@angular/router'; |
| 3 | import { SplashScreenComponent } from './modules/splash-screen/splash-screen.component'; | 3 | import { SplashScreenComponent } from './modules/splash-screen/splash-screen.component'; |
| 4 | import { AdminComponent } from './modules/admin/admin.component'; | 4 | import { AdminComponent } from './modules/admin/admin.component'; |
| 5 | 5 | ||
| 6 | const routes: Routes = [ | 6 | const routes: Routes = [ |
| 7 | { path: '', component: SplashScreenComponent }, | 7 | { path: '', component: SplashScreenComponent }, |
| 8 | { | 8 | { |
| 9 | path: '', | 9 | path: '', |
| 10 | component: AdminComponent, | 10 | component: AdminComponent, |
| 11 | children: [ | 11 | children: [ |
| 12 | { | 12 | { |
| 13 | path: 'formas-pago', | 13 | path: 'formas-pago', |
| 14 | loadChildren: () => import('./modules/formas-pago/formas-pago.module').then(m => m.FormasPagoModule) | 14 | loadChildren: () => import('./modules/formas-pago/formas-pago.module').then(m => m.FormasPagoModule) |
| 15 | }, | 15 | }, |
| 16 | { | 16 | { |
| 17 | path: 'opcion-pedido', | 17 | path: 'opcion-pedido', |
| 18 | loadChildren: () => import('./modules/opcion-pedido/opcion-pedido.module').then(m => m.OpcionPedidoModule) | 18 | loadChildren: () => import('./modules/opcion-pedido/opcion-pedido.module').then(m => m.OpcionPedidoModule) |
| 19 | }, | 19 | }, |
| 20 | { | 20 | { |
| 21 | path: 'seleccion-productos', | 21 | path: 'seleccion-articulos', |
| 22 | loadChildren: () => import('./modules/seleccion-productos/seleccion-productos.module').then(m => m.SeleccionProductosModule) | 22 | loadChildren: () => import('./modules/seleccion-articulos/seleccion-articulos.module').then(m => m.SeleccionArticulosModule) |
| 23 | }, | 23 | }, |
| 24 | ] | 24 | ] |
| 25 | }, | 25 | }, |
| 26 | { path: '**', redirectTo: '', pathMatch: 'full' }, | 26 | { path: '**', redirectTo: '', pathMatch: 'full' }, |
| 27 | ]; | 27 | ]; |
| 28 | 28 | ||
| 29 | @NgModule({ | 29 | @NgModule({ |
| 30 | imports: [RouterModule.forRoot(routes, { useHash: true })], | 30 | imports: [RouterModule.forRoot(routes, { useHash: true })], |
| 31 | exports: [RouterModule] | 31 | exports: [RouterModule] |
| 32 | }) | 32 | }) |
| 33 | export class AppRoutingModule { } | 33 | export class AppRoutingModule { } |
| 34 | 34 |
src/app/modules/opcion-pedido/opcion-pedido.component.html
| 1 | <div class="h-92 bg-white"> | 1 | <div class="h-92 bg-white"> |
| 2 | <div class="row mx-0 h-15"> | 2 | <div class="row mx-0 h-15"> |
| 3 | <div class="col-12 px-0 h-80 my-auto"> | 3 | <div class="col-12 px-0 h-80 my-auto"> |
| 4 | <img class="d-block mx-auto h-100" src="assets/img/logo-spot.svg"> | 4 | <img class="d-block mx-auto h-100" src="assets/img/logo-spot.svg"> |
| 5 | </div> | 5 | </div> |
| 6 | </div> | 6 | </div> |
| 7 | <div class="h-85"> | 7 | <div class="h-85"> |
| 8 | <div class="row h-25 mx-0 justify-content-center text-center"> | 8 | <div class="row h-25 mx-0 justify-content-center text-center"> |
| 9 | <div class="col-12 px-0 h-auto align-self-center"> | 9 | <div class="col-12 px-0 h-auto align-self-center"> |
| 10 | <p class="h6 mb-5 text-center">TU PEDIDO ES PARA:</p> | 10 | <p class="h6 mb-5 text-center">TU PEDIDO ES PARA:</p> |
| 11 | </div> | 11 | </div> |
| 12 | </div> | 12 | </div> |
| 13 | <div class="row h-15 justify-content-center mx-0"> | 13 | <div class="row h-15 justify-content-center mx-0"> |
| 14 | <div class="col-auto px-0 h-auto align-self-start"> | 14 | <div class="col-auto px-0 h-auto align-self-start"> |
| 15 | <div | 15 | <div |
| 16 | class="btn-effect col-auto align-self-center px-0 bg-white" | 16 | class="btn-effect col-auto align-self-center px-0 bg-white" |
| 17 | (click)="goTo('/seleccion-productos')"> | 17 | (click)="goTo('/seleccion-articulos')"> |
| 18 | <div class="row mx-0 bg-primary badge-pill"> | 18 | <div class="row mx-0 bg-primary badge-pill"> |
| 19 | <div class="col-auto p-0"> | 19 | <div class="col-auto p-0"> |
| 20 | <img class="p-1 img-plato" src="assets/img/icono-plato.svg"> | 20 | <img class="p-1 img-plato" src="assets/img/icono-plato.svg"> |
| 21 | </div> | 21 | </div> |
| 22 | <div class="col-auto align-self-center text-white">comer acá</div> | 22 | <div class="col-auto align-self-center text-white">comer acá</div> |
| 23 | <div class="col-auto align-self-center p-0"> | 23 | <div class="col-auto align-self-center p-0"> |
| 24 | <img class="p-1 img-ir" src="assets/img/ir.svg"> | 24 | <img class="p-1 img-ir" src="assets/img/ir.svg"> |
| 25 | </div> | 25 | </div> |
| 26 | </div> | 26 | </div> |
| 27 | </div> | 27 | </div> |
| 28 | </div> | 28 | </div> |
| 29 | </div> | 29 | </div> |
| 30 | <div class="row h-15 justify-content-center mx-0"> | 30 | <div class="row h-15 justify-content-center mx-0"> |
| 31 | <div class="col-auto px-0 h-auto align-self-start"> | 31 | <div class="col-auto px-0 h-auto align-self-start"> |
| 32 | <div | 32 | <div |
| 33 | class="btn-effect col-auto align-self-center px-0 bg-white" | 33 | class="btn-effect col-auto align-self-center px-0 bg-white" |
| 34 | (click)="goTo('/seleccion-productos')"> | 34 | (click)="goTo('/seleccion-articulos')"> |
| 35 | <div class="row mx-0 bg-primary badge-pill"> | 35 | <div class="row mx-0 bg-primary badge-pill"> |
| 36 | <div class="col-auto p-0"> | 36 | <div class="col-auto p-0"> |
| 37 | <img class="p-1 img-plato" src="assets/img/icono-take-away.svg"> | 37 | <img class="p-1 img-plato" src="assets/img/icono-take-away.svg"> |
| 38 | </div> | 38 | </div> |
| 39 | <div class="col-auto align-self-center text-white">para llevar</div> | 39 | <div class="col-auto align-self-center text-white">para llevar</div> |
| 40 | <div class="col-auto align-self-center p-0"> | 40 | <div class="col-auto align-self-center p-0"> |
| 41 | <img class="p-1 img-ir" src="assets/img/ir.svg"> | 41 | <img class="p-1 img-ir" src="assets/img/ir.svg"> |
| 42 | </div> | 42 | </div> |
| 43 | </div> | 43 | </div> |
| 44 | </div> | 44 | </div> |
| 45 | </div> | 45 | </div> |
| 46 | </div> | 46 | </div> |
| 47 | </div> | 47 | </div> |
| 48 | </div> | 48 | </div> |
| 49 | 49 |
src/app/modules/seleccion-articulos/seleccion-articulos-routing.module.ts
| File was created | 1 | import { NgModule } from '@angular/core'; | |
| 2 | import { Routes, RouterModule } from '@angular/router'; | ||
| 3 | import { SeleccionArticulosComponent } from './seleccion-articulos.component'; | ||
| 4 | |||
| 5 | const routes: Routes = [ | ||
| 6 | { path: '', component: SeleccionArticulosComponent } | ||
| 7 | ]; | ||
| 8 | |||
| 9 | @NgModule({ | ||
| 10 | imports: [RouterModule.forChild(routes)], | ||
| 11 | exports: [RouterModule] | ||
| 12 | }) | ||
| 13 | export class SeleccionArticulosRoutingModule { } | ||
| 14 |
src/app/modules/seleccion-articulos/seleccion-articulos.component.html
| File was created | 1 | <div class="h-92 bg-white"> | |
| 2 | <!-- PUBLICIDADES --> | ||
| 3 | <div class="row mx-0 h-10"> | ||
| 4 | <div class="col-12 p-3 h-100"> | ||
| 5 | <div class="bg-dark h-100"></div> | ||
| 6 | </div> | ||
| 7 | </div> | ||
| 8 | <div class="h-90"> | ||
| 9 | <!-- CABECERA --> | ||
| 10 | <div class="row mx-4 h-auto border border-primary rounded-sm"> | ||
| 11 | <div class="col-12 p-2 align-self-center"> | ||
| 12 | <div class="px-3"> | ||
| 13 | <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p> | ||
| 14 | </div> | ||
| 15 | </div> | ||
| 16 | </div> | ||
| 17 | <!-- CUERPO --> | ||
| 18 | <div class="row mr-4 h-70"> | ||
| 19 | <div class="col-12 h-100 px-0 py-3"> | ||
| 20 | <div class="row mx-0 h-100"> | ||
| 21 | <!-- FILTRO CATEGORIAS --> | ||
| 22 | <div class="col-5 col-sm-3 col-xl-2 h-100"> | ||
| 23 | <p class="h6 h-6 m-0 text-center"><small>CATEGORÍAS</small></p> | ||
| 24 | <div class="row mx-0 h-94 align-items-center"> | ||
| 25 | <div class="col-12 h-5"> | ||
| 26 | <img | ||
| 27 | draggable="false" | ||
| 28 | ondragstart="return false;" | ||
| 29 | (contextmenu)="false" | ||
| 30 | class="h-100 d-block mx-auto rotate-90-neg" | ||
| 31 | src="assets/img/ir-color.svg" | ||
| 32 | (mousedown)="scrollY(templateCategorias, -80)" | ||
| 33 | (mouseup)="mouseup()" | ||
| 34 | (mouseleave)="mouseup()"> | ||
| 35 | </div> | ||
| 36 | <!-- CATEGORIAS --> | ||
| 37 | <div | ||
| 38 | #templateCategorias | ||
| 39 | class="col-12 px-0 box-categorias border border-primary border-left-0 rounded-right scroll-y"> | ||
| 40 | <div | ||
| 41 | class="row mx-4 mb-2 h-32 justify-content-center tab" | ||
| 42 | [ngClass]="{ 'active': categoria.selected, 'border-bottom-effect': !categoria.selected }" | ||
| 43 | (click)="selectCategoria(i)" | ||
| 44 | *ngFor="let categoria of categorias; let i = index;"> | ||
| 45 | <img | ||
| 46 | class="col-12 h-50 align-self-end d-none d-sm-block" | ||
| 47 | src="assets/img/ir-color.svg"> | ||
| 48 | <small class="col-10 my-1 h-25 align-self-end text-center">{{categoria.id}}</small> | ||
| 49 | </div> | ||
| 50 | </div> | ||
| 51 | <div class="col-12 h-5"> | ||
| 52 | <img | ||
| 53 | draggable="false" | ||
| 54 | ondragstart="return false;" | ||
| 55 | (contextmenu)="false" | ||
| 56 | class="h-100 d-block mx-auto rotate-90" | ||
| 57 | src="assets/img/ir-color.svg" | ||
| 58 | (mousedown)="scrollY(templateCategorias, 80)" | ||
| 59 | (mouseup)="mouseup()" | ||
| 60 | (mouseleave)="mouseup()"> | ||
| 61 | </div> | ||
| 62 | </div> | ||
| 63 | </div> | ||
| 64 | <!-- LISTA DE ARTICULOS --> | ||
| 65 | <div class="col-7 col-sm-9 col-xl-10 pb-3 h-80 align-self-center scroll-y"> | ||
| 66 | <div class="row row-cols-1 row-cols-sm-3 row-cols-xl-6 h-100"> | ||
| 67 | <!-- ARTICULO --> | ||
| 68 | <div class="col px-2 my-1 my-md-3 h-auto" *ngFor="let lala of [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]"> | ||
| 69 | <div class="card h-100"> | ||
| 70 | <img src="assets/img/ir-color.svg" class="card-img-top h-55"> | ||
| 71 | <div class="row mx-0 py-1 h-auto justify-content-center"> | ||
| 72 | <p class="col-12 px-1 h6 h-auto text-primary text-center">{{'CORTADO'}}</p> | ||
| 73 | <p class="col-12 px-1 h-auto text-center"><small>{{'Café con un poco de leche'}}</small></p> | ||
| 74 | <div class="col-12 px-1 align-self-end btn-effect h-auto"> | ||
| 75 | <div class="row mx-0 justify-content-between bg-primary badge-pill"> | ||
| 76 | <div class="col px-0 align-self-center text-white text-right"> | ||
| 77 | {{55 | currency}} | ||
| 78 | </div> | ||
| 79 | <div class="col-5 px-0"> | ||
| 80 | <img class="d-block ml-auto py-1 img-ir" src="assets/img/ir.svg"> | ||
| 81 | </div> | ||
| 82 | </div> | ||
| 83 | </div> | ||
| 84 | </div> | ||
| 85 | </div> | ||
| 86 | </div> | ||
| 87 | </div> | ||
| 88 | </div> | ||
| 89 | </div> | ||
| 90 | </div> | ||
| 91 | </div> | ||
| 92 | <div class="row mx-0 h-20 justify-content-center"> | ||
| 93 | <div class="col-11 h-100 px-0 border border-primary rounded"> | ||
| 94 | <div class="row mx-0 h-15 border-bottom border-primary"> | ||
| 95 | <p class="col align-self-center text-truncate"><small>ARTÍCULOS EN TÚ CARRITO DE COMPRAS</small></p> | ||
| 96 | </div> | ||
| 97 | <div class="row h-85 mx-0 justify-content-between"> | ||
| 98 | <div class="col-auto h-20 align-self-center"> | ||
| 99 | <img | ||
| 100 | draggable="false" | ||
| 101 | ondragstart="return false;" | ||
| 102 | (contextmenu)="false" | ||
| 103 | class="img-ir rotate-180-neg" | ||
| 104 | src="assets/img/ir-fondo-color.svg" | ||
| 105 | (mousedown)="scrollX(templateCarrito, -100)" | ||
| 106 | (mouseup)="mouseup()" | ||
| 107 | (mouseleave)="mouseup()"> | ||
| 108 | </div> | ||
| 109 | <div class="col-6 col-sm-8 col-md-9 col-lg-10 h-100"> | ||
| 110 | <div #templateCarrito class="row flex-row flex-nowrap h-100 mx-0 scroll-x"> | ||
| 111 | <div | ||
| 112 | class="col-10 col-sm-4 col-lg-2 col-xl-auto px-2 px-xl-4 h-auto align-self-center border-right border-primary" | ||
| 113 | (click)="selectCategoria(i)" | ||
| 114 | *ngFor="let categoria of [{},{},{},{},{},{},{},{},{},{},{},{},{},{}]; let i = index;"> | ||
| 115 | <img | ||
| 116 | class="d-block h-55 mx-auto" | ||
| 117 | src="assets/img/ir-color.svg"> | ||
| 118 | <p class="d-block mt-auto text-center text-primary"><small>{{'lala'}}</small></p> | ||
| 119 | </div> | ||
| 120 | </div> | ||
| 121 | </div> | ||
| 122 | <div class="col-auto h-20 align-self-center"> | ||
| 123 | <img | ||
| 124 | draggable="false" | ||
| 125 | ondragstart="return false;" | ||
| 126 | (contextmenu)="false" | ||
| 127 | class="img-ir" | ||
| 128 | src="assets/img/ir-fondo-color.svg" | ||
| 129 | (mousedown)="scrollX(templateCarrito, 100)" | ||
| 130 | (mouseup)="mouseup()" | ||
| 131 | (mouseleave)="mouseup()"> | ||
| 132 | </div> | ||
| 133 | </div> | ||
| 134 | </div> | ||
| 135 | </div> | ||
| 136 | </div> | ||
| 137 | |||
| 138 | </div> | ||
| 139 |
src/app/modules/seleccion-articulos/seleccion-articulos.component.scss
| File was created | 1 | $primary: #aa006b; | |
| 2 | |||
| 3 | .box-categorias { | ||
| 4 | height: calc(100% - 100px) !important; | ||
| 5 | } | ||
| 6 | |||
| 7 | .active { | ||
| 8 | background-color: white; | ||
| 9 | border-bottom: 3px solid $primary !important; | ||
| 10 | } | ||
| 11 | |||
| 12 | .border-bottom-effect { | ||
| 13 | border: none; | ||
| 14 | position: relative; | ||
| 15 | &:hover { | ||
| 16 | border: none; | ||
| 17 | } | ||
| 18 | &::after { | ||
| 19 | content: ""; | ||
| 20 | position: absolute; | ||
| 21 | width: 0px; | ||
| 22 | height: 3px; | ||
| 23 | left: 50%; | ||
| 24 | bottom: 0; | ||
| 25 | background-color: $primary; | ||
| 26 | transition: all ease-in-out 0.2s; | ||
| 27 | } | ||
| 28 | &:hover::after { | ||
| 29 | width: 100%; | ||
| 30 | left: 0; | ||
| 31 | } | ||
| 32 | } | ||
| 33 | |||
| 34 | .card { | ||
| 35 | border: none; | ||
| 36 | } | ||
| 37 |
src/app/modules/seleccion-articulos/seleccion-articulos.component.spec.ts
| File was created | 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; | |
| 2 | |||
| 3 | import { SeleccionArticulosComponent } from './seleccion-articulos.component'; | ||
| 4 | |||
| 5 | describe('SeleccionArticulosComponent', () => { | ||
| 6 | let component: SeleccionArticulosComponent; | ||
| 7 | let fixture: ComponentFixture<SeleccionArticulosComponent>; | ||
| 8 | |||
| 9 | beforeEach(async(() => { | ||
| 10 | TestBed.configureTestingModule({ | ||
| 11 | declarations: [ SeleccionArticulosComponent ] | ||
| 12 | }) | ||
| 13 | .compileComponents(); | ||
| 14 | })); | ||
| 15 | |||
| 16 | beforeEach(() => { | ||
| 17 | fixture = TestBed.createComponent(SeleccionArticulosComponent); | ||
| 18 | component = fixture.componentInstance; | ||
| 19 | fixture.detectChanges(); | ||
| 20 | }); | ||
| 21 | |||
| 22 | it('should create', () => { | ||
| 23 | expect(component).toBeTruthy(); | ||
| 24 | }); | ||
| 25 | }); | ||
| 26 |
src/app/modules/seleccion-articulos/seleccion-articulos.component.ts
| File was created | 1 | import { Component, OnInit } from "@angular/core"; | |
| 2 | |||
| 3 | @Component({ | ||
| 4 | selector: "app-seleccion-articulos", | ||
| 5 | templateUrl: "./seleccion-articulos.component.html", | ||
| 6 | styleUrls: ["./seleccion-articulos.component.scss"] | ||
| 7 | }) | ||
| 8 | export class SeleccionArticulosComponent implements OnInit { | ||
| 9 | timeoutHandler: any; | ||
| 10 | categorias = [ | ||
| 11 | { id: 1, selected: false }, | ||
| 12 | { id: 2, selected: false }, | ||
| 13 | { id: 3, selected: false } | ||
| 14 | ]; | ||
| 15 | |||
| 16 | constructor() {} | ||
| 17 | |||
| 18 | ngOnInit() {} | ||
| 19 | |||
| 20 | selectCategoria(index: number) { | ||
| 21 | this.categorias.forEach((categoria, i) => { | ||
| 22 | categoria.selected = index === i ? true : false; | ||
| 23 | }); | ||
| 24 | } | ||
| 25 | |||
| 26 | mouseup() { | ||
| 27 | if (!this.timeoutHandler) return; | ||
| 28 | clearInterval(this.timeoutHandler); | ||
| 29 | } | ||
| 30 | |||
| 31 | scrollY(el: HTMLElement, value) { | ||
| 32 | el.scroll({ behavior: "smooth", top: value + el.scrollTop }); | ||
| 33 | this.timeoutHandler = setInterval(() => { | ||
| 34 | el.scroll({ behavior: "smooth", top: value + el.scrollTop }); | ||
| 35 | }, 500); | ||
| 36 | } | ||
| 37 | |||
| 38 | scrollX(el: HTMLElement, value) { | ||
| 39 | el.scroll({ behavior: "smooth", left: value + el.scrollLeft }); | ||
| 40 | this.timeoutHandler = setInterval(() => { | ||
| 41 | el.scroll({ behavior: "smooth", left: value + el.scrollLeft }); | ||
| 42 | }, 500); | ||
| 43 | } | ||
| 44 | } | ||
| 45 |
src/app/modules/seleccion-articulos/seleccion-articulos.module.ts
| File was created | 1 | import { NgModule } from '@angular/core'; | |
| 2 | import { CommonModule } from '@angular/common'; | ||
| 3 | |||
| 4 | import { SeleccionArticulosRoutingModule } from './seleccion-articulos-routing.module'; | ||
| 5 | import { SeleccionArticulosComponent } from './seleccion-articulos.component'; | ||
| 6 | |||
| 7 | |||
| 8 | @NgModule({ | ||
| 9 | declarations: [SeleccionArticulosComponent], | ||
| 10 | imports: [ | ||
| 11 | CommonModule, | ||
| 12 | SeleccionArticulosRoutingModule | ||
| 13 | ] | ||
| 14 | }) | ||
| 15 | export class SeleccionArticulosModule { } | ||
| 16 |
src/app/modules/seleccion-productos/seleccion-productos-routing.module.ts
| 1 | import { NgModule } from '@angular/core'; | File was deleted | |
| 2 | import { Routes, RouterModule } from '@angular/router'; | ||
| 3 | import { SeleccionProductosComponent } from './seleccion-productos.component'; | ||
| 4 | |||
| 5 | const routes: Routes = [ | ||
| 6 | { path: '', component: SeleccionProductosComponent } | ||
| 7 | ]; | ||
| 8 | |||
| 9 | @NgModule({ | ||
| 10 | imports: [RouterModule.forChild(routes)], | ||
| 11 | exports: [RouterModule] | ||
| 12 | }) | ||
| 13 | export class SeleccionProductosRoutingModule { } | ||
| 14 | 1 | import { NgModule } from '@angular/core'; |
src/app/modules/seleccion-productos/seleccion-productos.component.html
| 1 | <div class="h-92 bg-white"> | File was deleted | |
| 2 | <!-- PUBLICIDADES --> | ||
| 3 | <div class="row mx-0 h-10"> | ||
| 4 | <div class="col-12 p-3 h-100"> | ||
| 5 | <div class="bg-dark h-100"></div> | ||
| 6 | </div> | ||
| 7 | </div> | ||
| 8 | <div class="h-90"> | ||
| 9 | <!-- CABECERA --> | ||
| 10 | <div class="row mx-4 h-auto border border-primary rounded-sm"> | ||
| 11 | <div class="col-12 p-2 align-self-center"> | ||
| 12 | <div class="px-3"> | ||
| 13 | <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p> | ||
| 14 | </div> | ||
| 15 | </div> | ||
| 16 | </div> | ||
| 17 | <!-- CUERPO --> | ||
| 18 | <div class="row mr-4 h-70"> | ||
| 19 | <div class="col-12 h-100 px-0 py-3"> | ||
| 20 | <div class="row mx-0 h-100"> | ||
| 21 | <!-- FILTRO CATEGORIAS --> | ||
| 22 | <div class="col-5 col-sm-3 col-xl-2 h-100"> | ||
| 23 | <p class="h6 h-6 m-0 text-center"><small>CATEGORÍAS</small></p> | ||
| 24 | <div class="row mx-0 h-94 align-items-center"> | ||
| 25 | <div class="col-12 h-5"> | ||
| 26 | <img | ||
| 27 | draggable="false" | ||
| 28 | ondragstart="return false;" | ||
| 29 | (contextmenu)="false" | ||
| 30 | class="h-100 d-block mx-auto rotate-90-neg" | ||
| 31 | src="assets/img/ir-color.svg" | ||
| 32 | (mousedown)="scrollY(templateCategorias, -80)" | ||
| 33 | (mouseup)="mouseup()" | ||
| 34 | (mouseleave)="mouseup()"> | ||
| 35 | </div> | ||
| 36 | <!-- CATEGORIAS --> | ||
| 37 | <div | ||
| 38 | #templateCategorias | ||
| 39 | class="col-12 px-0 box-categorias border border-primary border-left-0 rounded-right scroll-y"> | ||
| 40 | <div | ||
| 41 | class="row mx-4 mb-2 h-32 justify-content-center tab" | ||
| 42 | [ngClass]="{ 'active': categoria.selected, 'border-bottom-effect': !categoria.selected }" | ||
| 43 | (click)="selectCategoria(i)" | ||
| 44 | *ngFor="let categoria of categorias; let i = index;"> | ||
| 45 | <img | ||
| 46 | class="col-12 h-50 align-self-end d-none d-sm-block" | ||
| 47 | src="assets/img/ir-color.svg"> | ||
| 48 | <small class="col-10 my-1 h-25 align-self-end text-center">{{categoria.id}}</small> | ||
| 49 | </div> | ||
| 50 | </div> | ||
| 51 | <div class="col-12 h-5"> | ||
| 52 | <img | ||
| 53 | draggable="false" | ||
| 54 | ondragstart="return false;" | ||
| 55 | (contextmenu)="false" | ||
| 56 | class="h-100 d-block mx-auto rotate-90" | ||
| 57 | src="assets/img/ir-color.svg" | ||
| 58 | (mousedown)="scrollY(templateCategorias, 80)" | ||
| 59 | (mouseup)="mouseup()" | ||
| 60 | (mouseleave)="mouseup()"> | ||
| 61 | </div> | ||
| 62 | </div> | ||
| 63 | </div> | ||
| 64 | <!-- LISTA DE ARTICULOS --> | ||
| 65 | <div class="col-7 col-sm-9 col-xl-10 pb-3 h-80 align-self-center scroll-y"> | ||
| 66 | <div class="row row-cols-1 row-cols-sm-3 row-cols-xl-6 h-100"> | ||
| 67 | <!-- ARTICULO --> | ||
| 68 | <div class="col px-2 my-1 my-md-3 h-auto" *ngFor="let lala of [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]"> | ||
| 69 | <div class="card h-100"> | ||
| 70 | <img src="assets/img/ir-color.svg" class="card-img-top h-55"> | ||
| 71 | <div class="row mx-0 py-1 h-auto justify-content-center"> | ||
| 72 | <p class="col-12 px-1 h6 h-auto text-primary text-center">{{'CORTADO'}}</p> | ||
| 73 | <p class="col-12 px-1 h-auto text-center"><small>{{'Café con un poco de leche'}}</small></p> | ||
| 74 | <div class="col-12 px-1 align-self-end btn-effect h-auto"> | ||
| 75 | <div class="row mx-0 justify-content-between bg-primary badge-pill"> | ||
| 76 | <div class="col px-0 align-self-center text-white text-right"> | ||
| 77 | {{55 | currency}} | ||
| 78 | </div> | ||
| 79 | <div class="col-5 px-0"> | ||
| 80 | <img class="d-block ml-auto py-1 img-ir" src="assets/img/ir.svg"> | ||
| 81 | </div> | ||
| 82 | </div> | ||
| 83 | </div> | ||
| 84 | </div> | ||
| 85 | </div> | ||
| 86 | </div> | ||
| 87 | </div> | ||
| 88 | </div> | ||
| 89 | </div> | ||
| 90 | </div> | ||
| 91 | </div> | ||
| 92 | <div class="row mx-0 h-20 justify-content-center"> | ||
| 93 | <div class="col-11 h-100 px-0 border border-primary rounded"> | ||
| 94 | <div class="row mx-0 h-15 border-bottom border-primary"> | ||
| 95 | <p class="col align-self-center text-truncate"><small>PRODUCTOS EN TÚ CARRITO DE COMPRAS</small></p> | ||
| 96 | </div> | ||
| 97 | <div class="row h-85 mx-0 justify-content-between"> | ||
| 98 | <div class="col-auto h-20 align-self-center"> | ||
| 99 | <img | ||
| 100 | draggable="false" | ||
| 101 | ondragstart="return false;" | ||
| 102 | (contextmenu)="false" | ||
| 103 | class="img-ir rotate-180-neg" | ||
| 104 | src="assets/img/ir-fondo-color.svg" | ||
| 105 | (mousedown)="scrollX(templateCarrito, -100)" | ||
| 106 | (mouseup)="mouseup()" | ||
| 107 | (mouseleave)="mouseup()"> | ||
| 108 | </div> | ||
| 109 | <div class="col-6 col-sm-8 col-md-9 col-lg-10 h-100"> | ||
| 110 | <div #templateCarrito class="row flex-row flex-nowrap h-100 mx-0 scroll-x"> | ||
| 111 | <div | ||
| 112 | class="col-10 col-sm-4 col-lg-2 col-xl-auto px-2 px-xl-4 h-auto align-self-center border-right border-primary" | ||
| 113 | (click)="selectCategoria(i)" | ||
| 114 | *ngFor="let categoria of [{},{},{},{},{},{},{},{},{},{},{},{},{},{}]; let i = index;"> | ||
| 115 | <img | ||
| 116 | class="d-block h-55 mx-auto" | ||
| 117 | src="assets/img/ir-color.svg"> | ||
| 118 | <p class="d-block mt-auto text-center text-primary"><small>{{'lala'}}</small></p> | ||
| 119 | </div> | ||
| 120 | </div> | ||
| 121 | </div> | ||
| 122 | <div class="col-auto h-20 align-self-center"> | ||
| 123 | <img | ||
| 124 | draggable="false" | ||
| 125 | ondragstart="return false;" | ||
| 126 | (contextmenu)="false" | ||
| 127 | class="img-ir" | ||
| 128 | src="assets/img/ir-fondo-color.svg" | ||
| 129 | (mousedown)="scrollX(templateCarrito, 100)" | ||
| 130 | (mouseup)="mouseup()" | ||
| 131 | (mouseleave)="mouseup()"> | ||
| 132 | </div> | ||
| 133 | </div> | ||
| 134 | </div> | ||
| 135 | </div> | ||
| 136 | </div> | ||
| 137 | |||
| 138 | </div> | ||
| 139 | 1 | <div class="h-92 bg-white"> |
src/app/modules/seleccion-productos/seleccion-productos.component.scss
| 1 | $primary: #aa006b; | File was deleted | |
| 2 | |||
| 3 | .box-categorias { | ||
| 4 | height: calc(100% - 100px) !important; | ||
| 5 | } | ||
| 6 | |||
| 7 | .active { | ||
| 8 | background-color: white; | ||
| 9 | border-bottom: 3px solid $primary !important; | ||
| 10 | } | ||
| 11 | |||
| 12 | .border-bottom-effect { | ||
| 13 | border: none; | ||
| 14 | position: relative; | ||
| 15 | &:hover { | ||
| 16 | border: none; | ||
| 17 | } | ||
| 18 | &::after { | ||
| 19 | content: ""; | ||
| 20 | position: absolute; | ||
| 21 | width: 0px; | ||
| 22 | height: 3px; | ||
| 23 | left: 50%; | ||
| 24 | bottom: 0; | ||
| 25 | background-color: $primary; | ||
| 26 | transition: all ease-in-out 0.2s; | ||
| 27 | } | ||
| 28 | &:hover::after { | ||
| 29 | width: 100%; | ||
| 30 | left: 0; | ||
| 31 | } | ||
| 32 | } | ||
| 33 | |||
| 34 | .card { | ||
| 35 | border: none; | ||
| 36 | } | ||
| 37 | 1 | $primary: #aa006b; |
src/app/modules/seleccion-productos/seleccion-productos.component.spec.ts
| 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; | File was deleted | |
| 2 | |||
| 3 | import { SeleccionProductosComponent } from './seleccion-productos.component'; | ||
| 4 | |||
| 5 | describe('SeleccionProductosComponent', () => { | ||
| 6 | let component: SeleccionProductosComponent; | ||
| 7 | let fixture: ComponentFixture<SeleccionProductosComponent>; | ||
| 8 | |||
| 9 | beforeEach(async(() => { | ||
| 10 | TestBed.configureTestingModule({ | ||
| 11 | declarations: [ SeleccionProductosComponent ] | ||
| 12 | }) | ||
| 13 | .compileComponents(); | ||
| 14 | })); | ||
| 15 | |||
| 16 | beforeEach(() => { | ||
| 17 | fixture = TestBed.createComponent(SeleccionProductosComponent); | ||
| 18 | component = fixture.componentInstance; | ||
| 19 | fixture.detectChanges(); | ||
| 20 | }); | ||
| 21 | |||
| 22 | it('should create', () => { | ||
| 23 | expect(component).toBeTruthy(); | ||
| 24 | }); | ||
| 25 | }); | ||
| 26 | 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
src/app/modules/seleccion-productos/seleccion-productos.component.ts
| 1 | import { Component, OnInit } from "@angular/core"; | File was deleted | |
| 2 | |||
| 3 | @Component({ | ||
| 4 | selector: "app-seleccion-productos", | ||
| 5 | templateUrl: "./seleccion-productos.component.html", | ||
| 6 | styleUrls: ["./seleccion-productos.component.scss"] | ||
| 7 | }) | ||
| 8 | export class SeleccionProductosComponent implements OnInit { | ||
| 9 | timeoutHandler: any; | ||
| 10 | categorias = [ | ||
| 11 | { id: 1, selected: false }, | ||
| 12 | { id: 2, selected: false }, | ||
| 13 | { id: 3, selected: false } | ||
| 14 | ]; | ||
| 15 | |||
| 16 | constructor() {} | ||
| 17 | |||
| 18 | ngOnInit() {} | ||
| 19 | |||
| 20 | selectCategoria(index: number) { | ||
| 21 | this.categorias.forEach((categoria, i) => { | ||
| 22 | categoria.selected = index === i ? true : false; | ||
| 23 | }); | ||
| 24 | } | ||
| 25 | |||
| 26 | mouseup() { | ||
| 27 | if (!this.timeoutHandler) return; | ||
| 28 | clearInterval(this.timeoutHandler); | ||
| 29 | } | ||
| 30 | |||
| 31 | scrollY(el: HTMLElement, value) { | ||
| 32 | el.scroll({ behavior: "smooth", top: value + el.scrollTop }); | ||
| 33 | this.timeoutHandler = setInterval(() => { | ||
| 34 | el.scroll({ behavior: "smooth", top: value + el.scrollTop }); | ||
| 35 | }, 500); | ||
| 36 | } | ||
| 37 | |||
| 38 | scrollX(el: HTMLElement, value) { | ||
| 39 | el.scroll({ behavior: "smooth", left: value + el.scrollLeft }); | ||
| 40 | this.timeoutHandler = setInterval(() => { | ||
| 41 | el.scroll({ behavior: "smooth", left: value + el.scrollLeft }); | ||
| 42 | }, 500); | ||
| 43 | } | ||
| 44 | } | ||
| 45 | 1 | import { Component, OnInit } from "@angular/core"; |
src/app/modules/seleccion-productos/seleccion-productos.module.ts
| 1 | import { NgModule } from '@angular/core'; | File was deleted | |
| 2 | import { CommonModule } from '@angular/common'; | ||
| 3 | |||
| 4 | import { SeleccionProductosRoutingModule } from './seleccion-productos-routing.module'; | ||
| 5 | import { SeleccionProductosComponent } from './seleccion-productos.component'; | ||
| 6 | |||
| 7 | |||
| 8 | @NgModule({ | ||
| 9 | declarations: [SeleccionProductosComponent], | ||
| 10 | imports: [ | ||
| 11 | CommonModule, | ||
| 12 | SeleccionProductosRoutingModule | ||
| 13 | ] | ||
| 14 | }) | ||
| 15 | export class SeleccionProductosModule { } | ||
| 16 | 1 | import { NgModule } from '@angular/core'; |