import { Component } from '@angular/core';
import {
ColumnDef,
Datagrid,
NgbAdvancedSearchComponent,
NgbAdvancedSearchField,
NgbAdvancedSearchRule,
NgbCompositeFilterDescriptor,
} from '@angular-bootstrap/ngbootstrap';
@Component({
standalone: true,
imports: [Datagrid, NgbAdvancedSearchComponent],
template: `
<ngb-advanced-search
[fields]="fields"
[rules]="rules"
[logic]="logic"
(rulesChange)="rules = $event"
(logicChange)="logic = $event"
(filterChange)="filter = $event"
></ngb-advanced-search>
<ngb-datagrid
[columns]="columns"
[data]="employees"
[filter]="filter"
[enableFiltering]="true"
[filterable]="'none'"
></ngb-datagrid>
`,
})
export class EmployeeAdvancedSearchDemo {
logic: 'and' | 'or' = 'and';
filter: NgbCompositeFilterDescriptor | null = null;
rules: NgbAdvancedSearchRule[] = [
{ field: 'department', operator: 'contains', value: '' },
{ field: 'salary', operator: 'gte', value: '' },
];
readonly fields: NgbAdvancedSearchField[] = [
{ field: 'name', label: 'Name' },
{ field: 'department', label: 'Department' },
{ field: 'salary', label: 'Salary', type: 'number' },
{ field: 'joinDate', label: 'Join Date', type: 'date' },
];
readonly columns: ColumnDef<Employee>[] = [
{ field: 'name', header: 'Name' },
{ field: 'department', header: 'Department' },
{ field: 'salary', header: 'Salary', type: 'number' },
{ field: 'joinDate', header: 'Join Date', type: 'date' },
];
}