add quick filters

This commit is contained in:
Dan Percic 2021-08-10 17:54:27 +03:00
parent 6811739c79
commit f0c4408764
6 changed files with 62 additions and 1 deletions

View File

@ -6,3 +6,4 @@ $btn-bg: #f0f1f4 !default;
$warn: #fdbd00 !default;
$white: white !default;
$separator: rgba(226, 228, 233, 0.9) !default;
$quick-filter-border: #d3d5da !default;

View File

@ -15,6 +15,7 @@ export * from './lib/filtering/filter.service';
export * from './lib/filtering/models/filter.model';
export * from './lib/filtering/models/filter-group.model';
export * from './lib/filtering/models/nested-filter.model';
export * from './lib/filtering/quick-filters/quick-filters.component';
export * from './lib/sorting/sort-by.pipe';
export * from './lib/sorting/sorting.service';
export * from './lib/sorting/models/sorting-option.model';

View File

@ -11,6 +11,7 @@ import { RoundCheckboxComponent } from './inputs/round-checkbox/round-checkbox.c
import { SortByPipe } from './sorting/sort-by.pipe';
import { HumanizePipe } from './utils/pipes/humanize.pipe';
import { TableColumnNameComponent } from './tables/table-column-name/table-column-name.component';
import { QuickFiltersComponent } from './filtering/quick-filters/quick-filters.component';
const buttons = [IconButtonComponent, ChevronButtonComponent, CircleButtonComponent];
@ -18,7 +19,7 @@ const inputs = [RoundCheckboxComponent];
const matModules = [MatIconModule, MatButtonModule, MatTooltipModule];
const components = [...buttons, ...inputs, TableColumnNameComponent];
const components = [...buttons, ...inputs, TableColumnNameComponent, QuickFiltersComponent];
const pipes = [SortByPipe, HumanizePipe];

View File

@ -0,0 +1,8 @@
<div
(click)="filterService.toggleFilter('quickFilters', filter.key)"
*ngFor="let filter of quickFilters"
[class.active]="filter.checked"
class="quick-filter"
>
{{ filter.label }}
</div>

View File

@ -0,0 +1,34 @@
@import '../../../assets/styles/common';
:host {
display: flex;
flex: 1;
justify-content: flex-end;
}
.quick-filter {
box-sizing: border-box;
border: 1px solid $quick-filter-border;
border-radius: 17px;
background-color: $btn-bg;
padding: 0 14px;
height: 34px;
display: flex;
align-items: center;
cursor: pointer;
transition: background-color 0.2s;
&:hover {
background-color: $white;
}
&.active {
background-color: $white;
font-weight: 600;
border: none;
}
&:not(:last-child) {
margin-right: 8px;
}
}

View File

@ -0,0 +1,16 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { Required } from '../../utils/decorators/required.decorator';
import { NestedFilter } from '../models/nested-filter.model';
import { FilterService } from '../filter.service';
@Component({
selector: 'iqser-quick-filters',
templateUrl: './quick-filters.component.html',
styleUrls: ['./quick-filters.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class QuickFiltersComponent {
@Input() @Required() quickFilters!: Set<NestedFilter>;
constructor(readonly filterService: FilterService) {}
}