Commit 9259d189a957e44d2caa344cfcfaa99a552c90ac

Authored by Marcelo Puebla
1 parent f5f122fef2

Agregado scroll horizontal en la seccion de articulos en el carrito

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 }