Commit 9259d189a957e44d2caa344cfcfaa99a552c90ac
1 parent
f5f122fef2
Exists in
master
and in
2 other branches
Agregado scroll horizontal en la seccion de articulos en el carrito
Showing
2 changed files
with
29 additions
and
24 deletions
Show diff stats
src/app/modules/seleccion-productos/seleccion-productos.component.html
| 1 | <div class="h-92 bg-white"> | 1 | <div class="h-92 bg-white"> |
| 2 | <!-- PUBLICIDADES --> | 2 | <!-- PUBLICIDADES --> |
| 3 | <div class="row mx-0 h-10"> | 3 | <div class="row mx-0 h-10"> |
| 4 | <div class="col-12 p-3 h-100"> | 4 | <div class="col-12 p-3 h-100"> |
| 5 | <div class="bg-dark h-100"></div> | 5 | <div class="bg-dark h-100"></div> |
| 6 | </div> | 6 | </div> |
| 7 | </div> | 7 | </div> |
| 8 | <div class="h-90"> | 8 | <div class="h-90"> |
| 9 | <!-- CABECERA --> | 9 | <!-- CABECERA --> |
| 10 | <div class="row mx-4 h-auto border border-primary rounded-sm"> | 10 | <div class="row mx-4 h-auto border border-primary rounded-sm"> |
| 11 | <div class="col-12 p-2 align-self-center"> | 11 | <div class="col-12 p-2 align-self-center"> |
| 12 | <div class="px-3"> | 12 | <div class="px-3"> |
| 13 | <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p> | 13 | <p class="h6 text-truncate">SELECCIONÁ TÚ COMIDA Y/O BEBIDA</p> |
| 14 | </div> | 14 | </div> |
| 15 | </div> | 15 | </div> |
| 16 | </div> | 16 | </div> |
| 17 | <!-- CUERPO --> | 17 | <!-- CUERPO --> |
| 18 | <div class="row mr-4 h-70"> | 18 | <div class="row mr-4 h-70"> |
| 19 | <div class="col-12 h-100 px-0 py-3"> | 19 | <div class="col-12 h-100 px-0 py-3"> |
| 20 | <div class="row mx-0 h-100"> | 20 | <div class="row mx-0 h-100"> |
| 21 | <!-- FILTRO CATEGORIAS --> | 21 | <!-- FILTRO CATEGORIAS --> |
| 22 | <div class="col-5 col-sm-3 col-xl-2 h-100"> | 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> | 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"> | 24 | <div class="row mx-0 h-94 align-items-center"> |
| 25 | <div class="col-12 h-5"> | 25 | <div class="col-12 h-5"> |
| 26 | <img | 26 | <img |
| 27 | draggable="false" | 27 | draggable="false" |
| 28 | ondragstart="return false;" | 28 | ondragstart="return false;" |
| 29 | (contextmenu)="false" | 29 | (contextmenu)="false" |
| 30 | class="h-100 d-block mx-auto rotate-90-neg" | 30 | class="h-100 d-block mx-auto rotate-90-neg" |
| 31 | src="assets/img/ir-color.svg" | 31 | src="assets/img/ir-color.svg" |
| 32 | (mousedown)="scroll(templateCategorias, -80)" | 32 | (mousedown)="scrollY(templateCategorias, -80)" |
| 33 | (mouseup)="mouseup()" | 33 | (mouseup)="mouseup()" |
| 34 | (mouseleave)="mouseup()"> | 34 | (mouseleave)="mouseup()"> |
| 35 | </div> | 35 | </div> |
| 36 | <!-- CATEGORIAS --> | 36 | <!-- CATEGORIAS --> |
| 37 | <div | 37 | <div |
| 38 | #templateCategorias | 38 | #templateCategorias |
| 39 | class="col-12 px-0 box-categorias border border-primary border-left-0 rounded-right scroll-y"> | 39 | class="col-12 px-0 box-categorias border border-primary border-left-0 rounded-right scroll-y"> |
| 40 | <div | 40 | <div |
| 41 | class="row mx-4 mb-2 h-32 justify-content-center tab" | 41 | class="row mx-4 mb-2 h-32 justify-content-center tab" |
| 42 | [ngClass]="{ 'active': categoria.selected, 'border-bottom-effect': !categoria.selected }" | 42 | [ngClass]="{ 'active': categoria.selected, 'border-bottom-effect': !categoria.selected }" |
| 43 | (click)="selectCategoria(i)" | 43 | (click)="selectCategoria(i)" |
| 44 | *ngFor="let categoria of categorias; let i = index;"> | 44 | *ngFor="let categoria of categorias; let i = index;"> |
| 45 | <img | 45 | <img |
| 46 | class="col-12 h-50 align-self-end d-none d-sm-block" | 46 | class="col-12 h-50 align-self-end d-none d-sm-block" |
| 47 | src="assets/img/ir-color.svg"> | 47 | src="assets/img/ir-color.svg"> |
| 48 | <small class="col-10 my-1 h-25 align-self-end text-center">{{categoria.id}}</small> | 48 | <small class="col-10 my-1 h-25 align-self-end text-center">{{categoria.id}}</small> |
| 49 | </div> | 49 | </div> |
| 50 | </div> | 50 | </div> |
| 51 | <div class="col-12 h-5"> | 51 | <div class="col-12 h-5"> |
| 52 | <img | 52 | <img |
| 53 | draggable="false" | 53 | draggable="false" |
| 54 | ondragstart="return false;" | 54 | ondragstart="return false;" |
| 55 | (contextmenu)="false" | 55 | (contextmenu)="false" |
| 56 | class="h-100 d-block mx-auto rotate-90" | 56 | class="h-100 d-block mx-auto rotate-90" |
| 57 | src="assets/img/ir-color.svg" | 57 | src="assets/img/ir-color.svg" |
| 58 | (mousedown)="scroll(templateCategorias, 80)" | 58 | (mousedown)="scrollY(templateCategorias, 80)" |
| 59 | (mouseup)="mouseup()" | 59 | (mouseup)="mouseup()" |
| 60 | (mouseleave)="mouseup()"> | 60 | (mouseleave)="mouseup()"> |
| 61 | </div> | 61 | </div> |
| 62 | </div> | 62 | </div> |
| 63 | </div> | 63 | </div> |
| 64 | <!-- LISTA DE ARTICULOS --> | 64 | <!-- LISTA DE ARTICULOS --> |
| 65 | <div class="col-7 col-sm-9 col-xl-10 pb-3 h-80 align-self-center scroll-y"> | 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"> | 66 | <div class="row row-cols-1 row-cols-sm-3 row-cols-xl-6 h-100"> |
| 67 | <!-- ARTICULO --> | 67 | <!-- ARTICULO --> |
| 68 | <div class="col px-2 my-1 my-md-3 h-auto" *ngFor="let lala of [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]"> | 68 | <div class="col px-2 my-1 my-md-3 h-auto" *ngFor="let lala of [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]"> |
| 69 | <div class="card h-100"> | 69 | <div class="card h-100"> |
| 70 | <img src="assets/img/ir-color.svg" class="card-img-top h-55"> | 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"> | 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> | 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> | 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"> | 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"> | 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"> | 76 | <div class="col px-0 align-self-center text-white text-right"> |
| 77 | {{55 | currency}} | 77 | {{55 | currency}} |
| 78 | </div> | 78 | </div> |
| 79 | <div class="col-5 px-0"> | 79 | <div class="col-5 px-0"> |
| 80 | <img class="d-block ml-auto py-1 img-ir" src="assets/img/ir.svg"> | 80 | <img class="d-block ml-auto py-1 img-ir" src="assets/img/ir.svg"> |
| 81 | </div> | 81 | </div> |
| 82 | </div> | 82 | </div> |
| 83 | </div> | 83 | </div> |
| 84 | </div> | 84 | </div> |
| 85 | </div> | 85 | </div> |
| 86 | </div> | 86 | </div> |
| 87 | </div> | 87 | </div> |
| 88 | </div> | 88 | </div> |
| 89 | </div> | 89 | </div> |
| 90 | </div> | 90 | </div> |
| 91 | </div> | 91 | </div> |
| 92 | <div class="row mx-0 h-20 justify-content-center"> | 92 | <div class="row mx-0 h-20 justify-content-center"> |
| 93 | <div class="col-11 h-100 px-0 border border-primary rounded"> | 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"> | 94 | <div class="row mx-0 h-15 border-bottom border-primary"> |
| 95 | <p class="col align-self-center"><small>PRODUCTOS EN TÚ CARRITO DE COMPRAS</small></p> | 95 | <p class="col align-self-center text-truncate"><small>PRODUCTOS EN TÚ CARRITO DE COMPRAS</small></p> |
| 96 | </div> | 96 | </div> |
| 97 | <div class="row h-85 mx-auto"> | 97 | <div class="row h-85 mx-0 justify-content-between"> |
| 98 | <div class="col-auto h-20 align-self-center"> | 98 | <div class="col-auto h-20 align-self-center"> |
| 99 | <img | 99 | <img |
| 100 | draggable="false" | 100 | draggable="false" |
| 101 | ondragstart="return false;" | 101 | ondragstart="return false;" |
| 102 | (contextmenu)="false" | 102 | (contextmenu)="false" |
| 103 | class="img-ir rotate-180-neg" | 103 | class="img-ir rotate-180-neg" |
| 104 | src="assets/img/ir-fondo-color.svg" | 104 | src="assets/img/ir-fondo-color.svg" |
| 105 | (mousedown)="scroll(templateCarrito, -80)" | 105 | (mousedown)="scrollX(templateCarrito, -100)" |
| 106 | (mouseup)="mouseup()" | 106 | (mouseup)="mouseup()" |
| 107 | (mouseleave)="mouseup()"> | 107 | (mouseleave)="mouseup()"> |
| 108 | </div> | 108 | </div> |
| 109 | <div class="col h-100"> | 109 | <div class="col-6 col-sm-8 col-md-9 col-lg-10 h-100"> |
| 110 | <div #templateCarrito class="row h-100 mx-0 scroll-x"> | 110 | <div #templateCarrito class="row flex-row flex-nowrap h-100 mx-0 scroll-x"> |
| 111 | <div | 111 | <div |
| 112 | class="col-12 col-md-3 col-xl-2 p-2 h-100" | 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)" | 113 | (click)="selectCategoria(i)" |
| 114 | *ngFor="let categoria of [{},{},{},{},{},{},{}]; let i = index;"> | 114 | *ngFor="let categoria of [{},{},{},{},{},{},{},{},{},{},{},{},{},{}]; let i = index;"> |
| 115 | <img | 115 | <img |
| 116 | class="h-55 mx-auto" | 116 | class="d-block h-55 mx-auto" |
| 117 | src="assets/img/ir-color.svg"> | 117 | src="assets/img/ir-color.svg"> |
| 118 | <p class="mt-1 text-center text-primary"><small>{{'lala'}}</small></p> | 118 | <p class="d-block mt-auto text-center text-primary"><small>{{'lala'}}</small></p> |
| 119 | </div> | 119 | </div> |
| 120 | </div> | 120 | </div> |
| 121 | </div> | 121 | </div> |
| 122 | <div class="col-auto h-20 align-self-center"> | 122 | <div class="col-auto h-20 align-self-center"> |
| 123 | <img | 123 | <img |
| 124 | draggable="false" | 124 | draggable="false" |
| 125 | ondragstart="return false;" | 125 | ondragstart="return false;" |
| 126 | (contextmenu)="false" | 126 | (contextmenu)="false" |
| 127 | class="img-ir" | 127 | class="img-ir" |
| 128 | src="assets/img/ir-fondo-color.svg" | 128 | src="assets/img/ir-fondo-color.svg" |
| 129 | (mousedown)="scroll(templateCarrito, -80)" | 129 | (mousedown)="scrollX(templateCarrito, 100)" |
| 130 | (mouseup)="mouseup()" | 130 | (mouseup)="mouseup()" |
| 131 | (mouseleave)="mouseup()"> | 131 | (mouseleave)="mouseup()"> |
| 132 | </div> | 132 | </div> |
| 133 | </div> | 133 | </div> |
| 134 | </div> | 134 | </div> |
| 135 | </div> | 135 | </div> |
| 136 | </div> | 136 | </div> |
| 137 | 137 | ||
| 138 | </div> | ||
| 138 | </div> |
src/app/modules/seleccion-productos/seleccion-productos.component.ts
| 1 | import { Component, OnInit } from '@angular/core'; | 1 | import { Component, OnInit } from "@angular/core"; |
| 2 | 2 | ||
| 3 | @Component({ | 3 | @Component({ |
| 4 | selector: 'app-seleccion-productos', | 4 | selector: "app-seleccion-productos", |
| 5 | templateUrl: './seleccion-productos.component.html', | 5 | templateUrl: "./seleccion-productos.component.html", |
| 6 | styleUrls: ['./seleccion-productos.component.scss'] | 6 | styleUrls: ["./seleccion-productos.component.scss"] |
| 7 | }) | 7 | }) |
| 8 | export class SeleccionProductosComponent implements OnInit { | 8 | export class SeleccionProductosComponent implements OnInit { |
| 9 | timeoutHandler: any; | 9 | timeoutHandler: any; |
| 10 | categorias = [ | 10 | categorias = [ |
| 11 | { id: 1, selected: false }, | 11 | { id: 1, selected: false }, |
| 12 | { id: 2, selected: false }, | 12 | { id: 2, selected: false }, |
| 13 | { id: 3, selected: false }, | 13 | { id: 3, selected: false } |
| 14 | ]; | 14 | ]; |
| 15 | 15 | ||
| 16 | constructor() { } | 16 | constructor() {} |
| 17 | 17 | ||
| 18 | ngOnInit() { | 18 | ngOnInit() {} |
| 19 | } | ||
| 20 | 19 | ||
| 21 | selectCategoria(index: number) { | 20 | selectCategoria(index: number) { |
| 22 | this.categorias.forEach((categoria, i) => { | 21 | this.categorias.forEach((categoria, i) => { |
| 23 | categoria.selected = index === i ? true : false; | 22 | categoria.selected = index === i ? true : false; |
| 24 | }); | 23 | }); |
| 25 | } | 24 | } |
| 26 | 25 | ||
| 27 | mouseup() { | 26 | mouseup() { |
| 28 | if (!this.timeoutHandler) return; | 27 | if (!this.timeoutHandler) return; |
| 29 | clearInterval(this.timeoutHandler); | 28 | clearInterval(this.timeoutHandler); |
| 30 | } | 29 | } |
| 31 | 30 | ||
| 32 | scroll(el: HTMLElement, value) { | 31 | scrollY(el: HTMLElement, value) { |
| 33 | el.scroll({ behavior: 'smooth', top: (value + el.scrollTop) }); | 32 | el.scroll({ behavior: "smooth", top: value + el.scrollTop }); |
| 34 | this.timeoutHandler = setInterval(() => { | 33 | this.timeoutHandler = setInterval(() => { |
| 35 | el.scroll({ behavior: 'smooth', top: (value + el.scrollTop) }); | 34 | el.scroll({ behavior: "smooth", top: value + el.scrollTop }); |
| 36 | }, 500); | 35 | }, 500); |
| 37 | } | 36 | } |
| 38 | 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 | } | ||
| 39 | } | 44 | } |