add quick filters
This commit is contained in:
parent
6811739c79
commit
f0c4408764
@ -6,3 +6,4 @@ $btn-bg: #f0f1f4 !default;
|
|||||||
$warn: #fdbd00 !default;
|
$warn: #fdbd00 !default;
|
||||||
$white: white !default;
|
$white: white !default;
|
||||||
$separator: rgba(226, 228, 233, 0.9) !default;
|
$separator: rgba(226, 228, 233, 0.9) !default;
|
||||||
|
$quick-filter-border: #d3d5da !default;
|
||||||
|
|||||||
@ -15,6 +15,7 @@ export * from './lib/filtering/filter.service';
|
|||||||
export * from './lib/filtering/models/filter.model';
|
export * from './lib/filtering/models/filter.model';
|
||||||
export * from './lib/filtering/models/filter-group.model';
|
export * from './lib/filtering/models/filter-group.model';
|
||||||
export * from './lib/filtering/models/nested-filter.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/sort-by.pipe';
|
||||||
export * from './lib/sorting/sorting.service';
|
export * from './lib/sorting/sorting.service';
|
||||||
export * from './lib/sorting/models/sorting-option.model';
|
export * from './lib/sorting/models/sorting-option.model';
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { RoundCheckboxComponent } from './inputs/round-checkbox/round-checkbox.c
|
|||||||
import { SortByPipe } from './sorting/sort-by.pipe';
|
import { SortByPipe } from './sorting/sort-by.pipe';
|
||||||
import { HumanizePipe } from './utils/pipes/humanize.pipe';
|
import { HumanizePipe } from './utils/pipes/humanize.pipe';
|
||||||
import { TableColumnNameComponent } from './tables/table-column-name/table-column-name.component';
|
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];
|
const buttons = [IconButtonComponent, ChevronButtonComponent, CircleButtonComponent];
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ const inputs = [RoundCheckboxComponent];
|
|||||||
|
|
||||||
const matModules = [MatIconModule, MatButtonModule, MatTooltipModule];
|
const matModules = [MatIconModule, MatButtonModule, MatTooltipModule];
|
||||||
|
|
||||||
const components = [...buttons, ...inputs, TableColumnNameComponent];
|
const components = [...buttons, ...inputs, TableColumnNameComponent, QuickFiltersComponent];
|
||||||
|
|
||||||
const pipes = [SortByPipe, HumanizePipe];
|
const pipes = [SortByPipe, HumanizePipe];
|
||||||
|
|
||||||
|
|||||||
@ -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>
|
||||||
34
src/lib/filtering/quick-filters/quick-filters.component.scss
Normal file
34
src/lib/filtering/quick-filters/quick-filters.component.scss
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/lib/filtering/quick-filters/quick-filters.component.ts
Normal file
16
src/lib/filtering/quick-filters/quick-filters.component.ts
Normal 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) {}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user