src/app/core/filter/filter-overlay/filter-overlay.component.ts
The component that shows filter options on small screens via a popover instead of the menu
| changeDetection | ChangeDetectionStrategy.OnPush |
| selector | app-filter-overlay |
| standalone | true |
| imports |
MatDialogModule
MatButtonModule
|
| styles | :host { display: block } |
| templateUrl | ./filter-overlay.component.html |
No results matching.
MatDialogModule
FilterComponent
MatButtonModule
Properties |
| data |
Type : unknown
|
Default value : inject<FilterOverlayData<T>>(MAT_DIALOG_DATA)
|
import { Component, inject, ChangeDetectionStrategy } from "@angular/core";
import { MAT_DIALOG_DATA, MatDialogModule } from "@angular/material/dialog";
import { Entity, EntityConstructor } from "../../entity/model/entity";
import { FilterConfig } from "../../entity-list/EntityListConfig";
import { FilterComponent } from "../filter/filter.component";
import { MatButtonModule } from "@angular/material/button";
import { DataFilter } from "../filters/filters";
export interface FilterOverlayData<T extends Entity> {
filterConfig: FilterConfig[];
entityType: EntityConstructor<T>;
entities: T[];
useUrlQueryParams: true;
filterObjChange: (filter: DataFilter<T>) => void;
}
/**
* The component that shows filter options on small screens
* via a popover instead of the menu
*/
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: "app-filter-overlay",
templateUrl: "./filter-overlay.component.html",
styles: [":host { display: block }"],
imports: [MatDialogModule, FilterComponent, MatButtonModule],
})
export class FilterOverlayComponent<T extends Entity> {
data = inject<FilterOverlayData<T>>(MAT_DIALOG_DATA);
}
<h1 mat-dialog-title i18n>Filter Options</h1>
<div mat-dialog-content>
<app-filter
[filterConfig]="data.filterConfig"
[entityType]="data.entityType"
[entities]="data.entities"
[useUrlQueryParams]="true"
(filterObjChange)="data.filterObjChange($event)"
>
</app-filter>
</div>
<div mat-dialog-actions>
<button mat-raised-button mat-dialog-close i18n>Close</button>
</div>
:host { display: block }