diff --git a/src/app/modules/search/components/index.ts b/src/app/modules/search/components/index.ts
index c48130e8..83b2a7c8 100644
--- a/src/app/modules/search/components/index.ts
+++ b/src/app/modules/search/components/index.ts
@@ -2,10 +2,12 @@ import * as searchFiltersContainer from './search-filters-container';
import * as searchResultsContainer from './search-results-container';
import * as filterSummaryContainer from './filter-summary-container';
import * as searchTitleContainer from './search-title-container';
+import * as mobileFiltersContainer from './mobile-filters-container';
export const SEARCH_COMPONENTS = [
...searchFiltersContainer.COMPONENTS,
...searchResultsContainer.COMPONENTS,
...filterSummaryContainer.COMPONENTS,
- ...searchTitleContainer.COMPONENTS
+ ...searchTitleContainer.COMPONENTS,
+ ...mobileFiltersContainer.COMPONENTS
];
diff --git a/src/app/modules/search/components/mobile-filters-container/components/index.ts b/src/app/modules/search/components/mobile-filters-container/components/index.ts
new file mode 100644
index 00000000..156d2026
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/index.ts
@@ -0,0 +1,7 @@
+import { MobileFilterListComponent } from './mobile-filter-list/mobile-filter-list.component';
+import { MobileSortFilterListComponent } from './mobile-sort-filter-list/mobile-sort-filter-list.component';
+
+export const COMPONENTS = [
+ MobileFilterListComponent,
+ MobileSortFilterListComponent
+];
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.html b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.html
new file mode 100644
index 00000000..74dc3803
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.html
@@ -0,0 +1,40 @@
+
+
+
+ FILTER
+
+
+
+
+
+
+
+
+
+ -
+ {{ tab?.content }}
+
+
+
+
+
+
+
+
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.scss b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.scss
new file mode 100644
index 00000000..e4c94874
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.scss
@@ -0,0 +1,146 @@
+.filter-list {
+ list-style: none;
+ li {
+ border-bottom: 1px solid #eaeaec;
+ padding: 0 15px;
+ min-height: 50px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+
+ &.active {
+ border-left: 2px solid #ff3e6c;
+ background: white;
+ font-weight: bold;
+ }
+ }
+}
+span {
+ height: 100%;
+ display: block;
+}
+
+// filter modal
+
+::ng-deep .filter-modal {
+ margin: 0;
+ .modal-content {
+ border: none;
+ border-radius: 0;
+ height: 100%;
+ .modal-header {
+ padding: 0;
+ div {
+ width: 50%;
+ float: left;
+ display: block;
+ padding: 13px 12px 10px 20px;
+ text-transform: uppercase;
+ font-size: 13px;
+ font-weight: bold;
+ height: 50px;
+ .modal-title {
+ font-size: 13px;
+ }
+ .clear-filter-btn {
+ font-weight: 300;
+ cursor: pointer;
+ padding-right: 20px;
+ color: #ff3e6c;
+ }
+ }
+ }
+ .modal-body {
+ min-height: calc(100vh - 99px);
+ }
+ .modal-footer {
+ padding: 4px 0;
+ border-top: 1px solid #eaeaec;
+ text-align: center;
+ background: white;
+ a {
+ width: 50%;
+ float: left;
+ display: block;
+ padding: 10px 15px;
+ text-transform: uppercase;
+ font-size: 13px;
+ text-align: center;
+ position: relative;
+ margin: 0;
+ &.b-right {
+ &::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 1px;
+ background: #eaeaec;
+ height: 22px;
+ margin-top: 15px;
+ content: '';
+ z-index: 1;
+ }
+ }
+ &.apply-filter-btn {
+ color: #ff3e6c;
+ }
+ }
+ }
+ }
+}
+
+// filter container
+
+::ng-deep .filter-tabs {
+ background: red;
+ .nav {
+ padding: 0;
+ height: 100%;
+ overflow: scroll;
+ border-right: 1px solid #eaeaec;
+ width: 33.33%;
+ float: left;
+ border-bottom: none;
+ li {
+ margin-bottom: 0;
+ a {
+ background: #f5f5f6;
+ font-size: 14px;
+ border-bottom: 1px solid #eaeaec;
+ padding: 0 15px;
+ min-height: 50px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border-radius: 0;
+ color: #3e4152;
+ &.active {
+ background: white;
+ font-weight: bold;
+ border: none;
+ border-left: 2px solid #ff3e6c;
+ }
+ }
+ }
+ }
+ .filterlist-container {
+ height: calc(100vh - 150px);
+ overflow: scroll;
+ padding: 0 16px;
+ ul {
+ li {
+ border: none;
+ border-radius: 0;
+ font-size: 13px;
+ padding: 15px 8px;
+ border-bottom: 1px solid #eaeaec;
+ }
+ }
+ }
+}
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.spec.ts b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.spec.ts
new file mode 100644
index 00000000..a54b002b
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.spec.ts
@@ -0,0 +1,24 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { MobileFilterListComponent } from './mobile-filter-list.component';
+
+describe('MobileFilterListComponent', () => {
+ let component: MobileFilterListComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [MobileFilterListComponent]
+ }).compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(MobileFilterListComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.ts b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.ts
new file mode 100644
index 00000000..fd6a5dab
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-filter-list/mobile-filter-list.component.ts
@@ -0,0 +1,48 @@
+import { Component, OnInit, TemplateRef } from '@angular/core';
+import { BsModalService } from 'ngx-bootstrap/modal';
+import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';
+import { idLocale } from 'ngx-bootstrap';
+
+@Component({
+ selector: 'app-mobile-filter-list',
+ templateUrl: './mobile-filter-list.component.html',
+ styleUrls: ['./mobile-filter-list.component.scss']
+})
+export class MobileFilterListComponent implements OnInit {
+ modalRef: BsModalRef;
+ config = { animated: true, class: 'filter-modal' };
+
+ filterItems = ['Category', 'Brand', 'Style', 'Unit', 'Price', 'Discount'];
+
+ filterItemList = [0, 1, 2, 3, 4];
+
+ tabs: any[] = [
+ {
+ title: this.filterItems[0],
+ content: 'Dynamic content 1',
+ customClass: 'customClass'
+ },
+ {
+ title: this.filterItems[1],
+ content: 'Dynamic content 2',
+ customClass: 'customClass'
+ },
+ {
+ title: this.filterItems[2],
+ content: 'Dynamic content 3',
+ customClass: 'customClass'
+ },
+ {
+ title: this.filterItems[3],
+ content: 'Dynamic content 1',
+ customClass: 'customClass'
+ }
+ ];
+
+ constructor(private modalService: BsModalService) {}
+
+ ngOnInit() {}
+ openModal(filterModal: TemplateRef) {
+ this.modalRef = this.modalService.show(filterModal, this.config);
+ }
+}
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.html b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.html
new file mode 100644
index 00000000..5e3162f5
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.html
@@ -0,0 +1,16 @@
+
+ SORT
+
+
+
+
+
+
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.scss b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.scss
new file mode 100644
index 00000000..2b3e07c3
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.scss
@@ -0,0 +1,50 @@
+.sort-list {
+ li {
+ display: block;
+ line-height: 24px;
+ padding: 15px 0;
+ border-bottom: solid 1px #eaeaec;
+ width: 82%;
+ font-size: 14px;
+ margin-left: 65px;
+ }
+}
+
+span {
+ height: 100%;
+ display: block;
+}
+
+.sort-header {
+ font-weight: bold;
+ border: none;
+ font-size: 18px;
+ color: #3e4152;
+ padding-left: 20px;
+ padding-top: 12px;
+ padding-bottom: 8px;
+}
+
+// sort modal
+
+::ng-deep .sort-modal {
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ margin: 0;
+ .modal-content {
+ border: none;
+ border-radius: 0;
+ // @at-root body.modal-open .modal {
+ // padding-top: 30vh;
+ // }
+ .modal-header {
+ padding: 0px;
+ text-transform: uppercase;
+ border-bottom: none;
+ }
+ .modal-body {
+ padding: 0;
+ }
+ }
+}
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.spec.ts b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.spec.ts
new file mode 100644
index 00000000..3b9d975c
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { MobileSortFilterListComponent } from './mobile-sort-filter-list.component';
+
+describe('MobileSortFilterListComponent', () => {
+ let component: MobileSortFilterListComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ MobileSortFilterListComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(MobileSortFilterListComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.ts b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.ts
new file mode 100644
index 00000000..2c31dfcc
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/components/mobile-sort-filter-list/mobile-sort-filter-list.component.ts
@@ -0,0 +1,30 @@
+import { Component, OnInit, TemplateRef } from '@angular/core';
+import { BsModalService } from 'ngx-bootstrap/modal';
+import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';
+
+@Component({
+ selector: 'app-mobile-sort-filter-list',
+ templateUrl: './mobile-sort-filter-list.component.html',
+ styleUrls: ['./mobile-sort-filter-list.component.scss']
+})
+export class MobileSortFilterListComponent implements OnInit {
+ modalRef: BsModalRef;
+ sortItems = [
+ ' Popularity',
+ ' Latest',
+ ' Discount',
+ ' Price: High to Low',
+ ' Price: Low to High'
+ ];
+ config = {
+ animated: true,
+ class: 'sort-modal'
+ };
+ constructor(private modalService: BsModalService) {}
+
+ ngOnInit() {}
+
+ openModal(sortModal: TemplateRef) {
+ this.modalRef = this.modalService.show(sortModal, this.config);
+ }
+}
diff --git a/src/app/modules/search/components/mobile-filters-container/index.ts b/src/app/modules/search/components/mobile-filters-container/index.ts
new file mode 100644
index 00000000..3cbd03f4
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/index.ts
@@ -0,0 +1,7 @@
+import { MobileFiltersContainerComponent } from './mobile-filters-container.component';
+import * as MFCComponents from './components';
+
+export const COMPONENTS = [
+ MobileFiltersContainerComponent,
+ ...MFCComponents.COMPONENTS
+];
diff --git a/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.html b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.html
new file mode 100644
index 00000000..ff35885d
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.html
@@ -0,0 +1,8 @@
+
diff --git a/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.scss b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.scss
new file mode 100644
index 00000000..9ce6927b
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.scss
@@ -0,0 +1,34 @@
+.mobile-bottom-nav {
+ border-top: 1px solid #eaeaec;
+ text-align: center;
+ background: white;
+ padding: 0;
+ a {
+ background: white;
+ color: #ff3e6c;
+ width: 50%;
+ height: 50px;
+ padding: 14px 0px;
+ font-size: 14px;
+ letter-spacing: 0.9px;
+ display: block;
+ margin: 0;
+ float: left;
+ text-transform: uppercase;
+ cursor: pointer;
+ position: relative;
+ &.b-right {
+ ::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 1px;
+ background: #eaeaec;
+ height: 22px;
+ margin-top: 15px;
+ content: '';
+ z-index: 1;
+ }
+ }
+ }
+}
diff --git a/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.spec.ts b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.spec.ts
new file mode 100644
index 00000000..517c6e81
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { MobileFiltersContainerComponent } from './mobile-filters-container.component';
+
+describe('MobileFiltersContainerComponent', () => {
+ let component: MobileFiltersContainerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ MobileFiltersContainerComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(MobileFiltersContainerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.ts b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.ts
new file mode 100644
index 00000000..711ffa78
--- /dev/null
+++ b/src/app/modules/search/components/mobile-filters-container/mobile-filters-container.component.ts
@@ -0,0 +1,9 @@
+import { Component, OnInit } from '@angular/core';
+import { SearchFiltersContainerComponent } from '../search-filters-container/search-filters-container.component';
+
+@Component({
+ selector: 'app-mobile-filters-container',
+ templateUrl: './mobile-filters-container.component.html',
+ styleUrls: ['./mobile-filters-container.component.scss']
+})
+export class MobileFiltersContainerComponent extends SearchFiltersContainerComponent {}
diff --git a/src/app/modules/search/pages/search-page/search-page.component.html b/src/app/modules/search/pages/search-page/search-page.component.html
index b1e9fe54..d8ac66f0 100644
--- a/src/app/modules/search/pages/search-page/search-page.component.html
+++ b/src/app/modules/search/pages/search-page/search-page.component.html
@@ -31,6 +31,14 @@
[searchResults]="searchResults"
>
+
diff --git a/src/app/shared/index.ts b/src/app/shared/index.ts
index 01ed8c75..8999affe 100644
--- a/src/app/shared/index.ts
+++ b/src/app/shared/index.ts
@@ -15,6 +15,7 @@ import { RandomPipe } from './pipes/random.pipe';
// components
// imports
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
+import { TabsModule } from 'ngx-bootstrap/tabs';
import { RatingModule } from 'ngx-bootstrap/rating';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { ProductSliderComponent } from './components/product-slider/product-slider.component';
@@ -49,6 +50,7 @@ import { SanitizeHtmlPipe } from './pipes/sanitize-html.pipe';
// modules
CommonModule,
BsDropdownModule,
+ TabsModule,
RatingModule,
TypeaheadModule,
FormsModule,
@@ -74,6 +76,7 @@ import { SanitizeHtmlPipe } from './pipes/sanitize-html.pipe';
CommonModule,
BsDropdownModule.forRoot(),
TypeaheadModule.forRoot(),
+ TabsModule.forRoot(),
RatingModule.forRoot(),
RouterModule,
NgxInputStarRatingModule,