diff --git a/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.html b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.html new file mode 100644 index 0000000..1651a98 --- /dev/null +++ b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.html @@ -0,0 +1,59 @@ + +

CATEGORÍAS

+
+
+ +
+ +
+
+ + Todos +
+
+ + {{categoria.detalle}} +
+
+
+ +
+
diff --git a/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.scss b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.scss new file mode 100644 index 0000000..a65def2 --- /dev/null +++ b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.scss @@ -0,0 +1,54 @@ +$primary: #aa006b; + +.box-categorias { + height: calc(100% - 100px) !important; +} + +.active { + transition: 0.3s; + background-color: white; + border-bottom: 3px solid $primary !important; + border-top: 3px solid $primary !important; + border-left: 3px solid $primary !important; + border-right: 3px solid $primary !important; +} + +.border-bottom-effect { + border: none; + position: relative; + &:hover { + border: none; + } + &::after { + content: ""; + position: absolute; + width: 0px; + height: 3px; + left: 50%; + bottom: 0; + background-color: $primary; + transition: all ease-in-out 0.2s; + } + &:hover::after { + width: 100%; + left: 0; + } +} + +.cat-content.media-pantalla { + margin: 0.5rem 0.7rem !important; + height: 76% !important; +} + +.cat-box.media-pantalla { + height: calc(100% - 85px) !important; +} + +.cat-btn.media-pantalla { + height: 7% !important; +} + +#content.media-pantalla, +#boxCarrito.media-pantalla { + max-height: 60% !important; +} diff --git a/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.spec.ts b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.spec.ts new file mode 100644 index 0000000..0376829 --- /dev/null +++ b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FiltroCategoriasComponent } from './filtro-categorias.component'; + +describe('FiltroCategoriasComponent', () => { + let component: FiltroCategoriasComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FiltroCategoriasComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FiltroCategoriasComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.ts b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.ts new file mode 100644 index 0000000..5de594e --- /dev/null +++ b/src/app/modules/seleccion-articulos/filtro-categorias/filtro-categorias.component.ts @@ -0,0 +1,86 @@ +import { Component, OnInit, Input, HostListener, Output, EventEmitter } from '@angular/core'; +import { ICategoria } from 'src/app/interfaces/ICategoria'; +import { InactiveScreenService } from 'src/app/services/inactive-screen/inactive-screen.service'; +import { CategoriaService } from 'src/app/services/categoria/categoria.service'; +import { APP_SETTINGS } from 'src/etc/AppSettings'; + +@Component({ + selector: 'app-filtro-categorias', + templateUrl: './filtro-categorias.component.html', + styleUrls: ['./filtro-categorias.component.scss'] +}) +export class FiltroCategoriasComponent implements OnInit { + @Output() getProductos = new EventEmitter(); + @Output() setProductos = new EventEmitter(); + @Output() filterItems = new EventEmitter(); + categorias: ICategoria[] = []; + timeoutHandler: any; + categoriaActive = null; + allActive = true; + queMostrar = 'todos'; + urlImagenes = `${APP_SETTINGS.apiDeboSuite}/imagenes/`; + + constructor( + private categoriaService: CategoriaService, + private inactiveScreen: InactiveScreenService, + ) { } + + ngOnInit() { } + + getCategorias() { + this.categoriaService.getAll() + .subscribe((categorias: ICategoria[]) => { + switch (this.queMostrar) { + case 'todos': + this.categorias = categorias; + this.categoriaActive = 0; + break; + case 'promociones': + this.categorias = categorias; + this.categoriaActive = 19; + break; + case 'ordenar': + this.categorias = categorias.filter((categoria: ICategoria) => { + return categoria.ES_PEDIDO; + }); + this.categoriaActive = 4; + break; + default: + this.categorias = categorias; + this.categoriaActive = 0; + break; + } + !localStorage.getItem('articulos') ? + this.getProductos.emit() : + this.setProductos.emit(); + }); + } + + selectCategoria(index: number, idCategoria?: number) { + if (this.categoriaActive === idCategoria) return; + this.categoriaActive = idCategoria; + this.allActive = idCategoria === 0 ? true : false; + this.categorias.forEach((categoria, i) => { + categoria.selected = index === i ? true : false; + }); + this.filterItems.emit(); + } + + @HostListener('scroll', ['$event']) + scrollEvent(event: Event) { + clearTimeout(this.inactiveScreen.timerReposo); + this.inactiveScreen.startTimeOutInactividad(); + } + + mouseup() { + if (!this.timeoutHandler) return; + clearInterval(this.timeoutHandler); + } + + scrollY(el: HTMLElement, value) { + el.scroll({ behavior: 'smooth', top: value + el.scrollTop }); + this.timeoutHandler = setInterval(() => { + el.scroll({ behavior: 'smooth', top: value + el.scrollTop }); + }, 500); + } +} diff --git a/src/app/modules/seleccion-articulos/seleccion-articulos.component.html b/src/app/modules/seleccion-articulos/seleccion-articulos.component.html index 66fc31e..725df46 100644 --- a/src/app/modules/seleccion-articulos/seleccion-articulos.component.html +++ b/src/app/modules/seleccion-articulos/seleccion-articulos.component.html @@ -15,70 +15,13 @@
- -
-

CATEGORÍAS

-
-
- -
- -
-
- - Todos -
-
- - {{categoria.detalle}} -
-
-
- -
-
-
+ +
{ - switch (this.queMostrar) { - case 'todos': - this.categorias = categorias; - this.categoriaActive = 0; - break; - case 'promociones': - this.categorias = categorias; - this.categoriaActive = 19; - break; - case 'ordenar': - this.categorias = categorias.filter((categoria: ICategoria) => { - return categoria.ES_PEDIDO; - }); - this.categoriaActive = 4; - break; - default: - this.categorias = categorias; - this.categoriaActive = 0; - break; - } - !localStorage.getItem('articulos') ? - this.getProductos() : - this.setProductos(); - }); - } - getProductos() { this.articuloService.getAll() .subscribe((result: IArticulo[]) => { this.articuloService.setArticulosSinImagen(result); - if (this.queMostrar === 'ordenar') { - this.categorias.forEach((categoria: ICategoria) => { + if (this.filtroCategorias.queMostrar === 'ordenar') { + this.filtroCategorias.categorias.forEach((categoria: ICategoria) => { const tempArticulos = result.filter((articulo: IArticulo) => { return articulo.categoria_selfservice === categoria.id; }); @@ -119,12 +90,12 @@ export class SeleccionArticulosComponent implements OnInit, OnDestroy { } filterItems() { - if (this.categoriaActive === 0) { + if (this.filtroCategorias.categoriaActive === 0) { this.auxArticulos = this.articulos; return; } this.auxArticulos = this.articulos.filter(x => { - return x.categoria_selfservice === this.categoriaActive; + return x.categoria_selfservice === this.filtroCategorias.categoriaActive; }); this.ordenar(); } @@ -137,16 +108,6 @@ export class SeleccionArticulosComponent implements OnInit, OnDestroy { } } - selectCategoria(index: number, idCategoria?: number) { - if (this.categoriaActive === idCategoria) return; - this.categoriaActive = idCategoria; - this.allActive = idCategoria === 0 ? true : false; - this.categorias.forEach((categoria, i) => { - categoria.selected = index === i ? true : false; - }); - this.filterItems(); - } - selectArticulo(articulo: IArticulo) { this.getByID(articulo.id); } @@ -239,7 +200,9 @@ export class SeleccionArticulosComponent implements OnInit, OnDestroy { mediaPantalla() { if ($('body').hasClass('media-pantalla')) { - $('.cat-content,#content,.cat-btn,#boxCarrito,.cat-box,.img-categoria').addClass('media-pantalla').addBack('media-pantalla'); + $('.cat-content,#content,.cat-btn,#boxCarrito,.cat-box,.img-categoria') + .addClass('media-pantalla') + .addBack('media-pantalla'); } } } diff --git a/src/app/modules/seleccion-articulos/seleccion-articulos.module.ts b/src/app/modules/seleccion-articulos/seleccion-articulos.module.ts index 894822c..f6139ed 100644 --- a/src/app/modules/seleccion-articulos/seleccion-articulos.module.ts +++ b/src/app/modules/seleccion-articulos/seleccion-articulos.module.ts @@ -11,6 +11,7 @@ import { SinonimoComponent } from 'src/app/shared/sinonimo/sinonimo.component'; import { FormsModule } from '@angular/forms'; import { ConfirmacionComponent } from 'src/app/shared/confirmacion/confirmacion.component'; import { ArticuloCantidadComponent } from 'src/app/shared/articulo-cantidad/articulo-cantidad.component'; +import { FiltroCategoriasComponent } from './filtro-categorias/filtro-categorias.component'; @NgModule({ declarations: [ @@ -20,6 +21,7 @@ import { ArticuloCantidadComponent } from 'src/app/shared/articulo-cantidad/arti SinonimoComponent, ConfirmacionComponent, ArticuloCantidadComponent, + FiltroCategoriasComponent, ], imports: [ CommonModule, diff --git a/src/scss/styles-bootstrap.scss b/src/scss/styles-bootstrap.scss index fb055f8..ffec04b 100644 --- a/src/scss/styles-bootstrap.scss +++ b/src/scss/styles-bootstrap.scss @@ -66,4 +66,8 @@ $border-radius-sm: 0.5rem; margin-bottom: 50px !important; } +.card { + border: none !important; +} + @import "node_modules/bootstrap/scss/bootstrap";