{"version":3,"file":"pepperi-addons-ngx-lib-smart-filters.mjs","sources":["../../../projects/ngx-lib/smart-filters/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.html","../../../projects/ngx-lib/smart-filters/common/model/base-filter-component.ts","../../../projects/ngx-lib/smart-filters/text-filter/text-filter.component.ts","../../../projects/ngx-lib/smart-filters/text-filter/text-filter.component.html","../../../projects/ngx-lib/smart-filters/boolean-filter/boolean-filter.component.ts","../../../projects/ngx-lib/smart-filters/boolean-filter/boolean-filter.component.html","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.ts","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.html","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.ts","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.html","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.ts","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.html","../../../projects/ngx-lib/smart-filters/smart-filters.component.ts","../../../projects/ngx-lib/smart-filters/smart-filters.component.html","../../../projects/ngx-lib/smart-filters/smart-filters.module.ts","../../../projects/ngx-lib/smart-filters/common/model/field.ts","../../../projects/ngx-lib/smart-filters/common/model/creator.ts","../../../projects/ngx-lib/smart-filters/public-api.ts","../../../projects/ngx-lib/smart-filters/pepperi-addons-ngx-lib-smart-filters.ts"],"sourcesContent":["import {\n    PepSmartFilterComponentType,\n    PepSmartFilterOperatorType,\n    PepSmartFilterOperatorUnitType,\n} from './type';\nexport class IPepSmartFilterOperator {\n    id: PepSmartFilterOperatorType;\n    name: string;\n    short: string;\n    componentType: PepSmartFilterComponentType[];\n}\n\nconst Equals: IPepSmartFilterOperator = {\n    id: 'eq',\n    name: 'EQUAL',\n    short: '=',\n    componentType: [\n        'number',\n        'boolean',\n        // 'multi-select',\n        // 'date',\n        'text',\n        // 'auto-complete',\n        // 'select',\n    ],\n};\n\nconst NotEqual: IPepSmartFilterOperator = {\n    id: 'neq',\n    name: 'NOT_EQUAL',\n    short: '<>',\n    componentType: [\n        'number',\n        // 'multi-select',\n        // 'date',\n        'text',\n        // 'auto-complete',\n        // 'select',\n    ],\n};\n\nconst LessThan: IPepSmartFilterOperator = {\n    id: 'lt',\n    name: 'LESS_THEN',\n    short: '<',\n    componentType: ['number'],\n};\n\n// const LessThanOrEquals: IPepSmartFilterOperator = {\n//     id: 'ltoe',\n//     name: 'LESS_THEN_OR_EQUAL',\n//     short: '<=',\n//     type: ['number'],\n// };\n\nconst GreaterThan: IPepSmartFilterOperator = {\n    id: 'gt',\n    name: 'GREATER_THEN',\n    short: '>',\n    componentType: ['number'],\n};\n\n// const GreaterThanOrEquals: IPepSmartFilterOperator = {\n//     id: 'gtoe',\n//     name: 'GREATER_THEN_OR_EQUAL',\n//     short: '>=',\n//     type: ['number'],\n// };\n\nconst NumberRange: IPepSmartFilterOperator = {\n    id: 'numberRange',\n    name: 'NUMBER_RANGE',\n    short: 'Range',\n    componentType: ['number'],\n};\n\nconst Contains: IPepSmartFilterOperator = {\n    id: 'contains',\n    name: 'CONTAINS',\n    short: 'Contains',\n    componentType: ['text'],\n};\n\nconst BeginsWith: IPepSmartFilterOperator = {\n    id: 'beginsWith',\n    name: 'BEGINS_WITH',\n    short: 'Begins With',\n    componentType: ['text'],\n};\n\nconst EndsWith: IPepSmartFilterOperator = {\n    id: 'endsWith',\n    name: 'ENDS_WITH',\n    short: 'End With',\n    componentType: ['text'],\n};\n\n// const After: Operator = {\n//     id: 'after',\n//     name: 'After',\n//     short: 'After',\n//     type: ['date'],\n// };\n\n// const Before: Operator = {\n//     id: 'before',\n//     name: 'Before',\n//     short: 'Before',\n//     type: ['date'],\n// };\n\nconst InTheLast: IPepSmartFilterOperator = {\n    id: 'inTheLast',\n    name: 'IN_THE_LAST',\n    short: 'In the last',\n    componentType: ['date'],\n};\n\nconst Today: IPepSmartFilterOperator = {\n    id: 'today',\n    name: 'TODAY',\n    short: 'Today',\n    componentType: ['date'],\n};\n\nconst ThisWeek: IPepSmartFilterOperator = {\n    id: 'thisWeek',\n    name: 'THIS_WEEK',\n    short: 'This week',\n    componentType: ['date'],\n};\n\nconst ThisMonth: IPepSmartFilterOperator = {\n    id: 'thisMonth',\n    name: 'THIS_MONTH',\n    short: 'This month',\n    componentType: ['date'],\n};\n\nconst DateRange: IPepSmartFilterOperator = {\n    id: 'dateRange',\n    name: 'DATE_RANGE',\n    short: 'Range',\n    componentType: ['date'],\n};\n\nconst DueIn: IPepSmartFilterOperator = {\n    id: 'dueIn',\n    name: 'DUE_IN',\n    short: 'Due in',\n    componentType: ['date'],\n};\n\nconst On: IPepSmartFilterOperator = {\n    id: 'on',\n    name: 'ON',\n    short: 'On',\n    componentType: ['date'],\n};\n\nconst NotInTheLast: IPepSmartFilterOperator = {\n    id: 'notInTheLast',\n    name: 'NOT_IN_THE_LAST',\n    short: 'Not in the last',\n    componentType: ['date'],\n};\n\nconst NotDueIn: IPepSmartFilterOperator = {\n    id: 'notDueIn',\n    name: 'NOT_DUE_IN',\n    short: 'Not due in',\n    componentType: ['date'],\n};\n\nconst IsEmpty: IPepSmartFilterOperator = {\n    id: 'isEmpty',\n    name: 'IS_EMPTY',\n    short: 'Is empty',\n    componentType: ['date'],\n};\n\nconst IsNotEmpty: IPepSmartFilterOperator = {\n    id: 'isNotEmpty',\n    name: 'IS_NOT_EMPTY',\n    short: 'Is not empty',\n    componentType: ['date'],\n};\n\nconst In: IPepSmartFilterOperator = {\n    id: 'in',\n    name: 'IN',\n    short: 'In',\n    componentType: ['multi-select'],\n};\n\nexport const PepSmartFilterOperators = {\n    Equals: Equals,\n    NotEqual: NotEqual,\n    LessThan: LessThan,\n    // LessThanOrEquals: LessThanOrEquals,\n    GreaterThan: GreaterThan,\n    // GreaterThanOrEquals: GreaterThanOrEquals,\n    NumberRange: NumberRange,\n    Contains: Contains,\n    BeginsWith: BeginsWith,\n    EndsWith: EndsWith,\n    // After: After,\n    // Before: Before,\n    InTheLast: InTheLast,\n    Today: Today,\n    ThisWeek: ThisWeek,\n    ThisMonth: ThisMonth,\n    DateRange: DateRange,\n    DueIn: DueIn,\n    On: On,\n    NotInTheLast: NotInTheLast,\n    NotDueIn: NotDueIn,\n    IsEmpty: IsEmpty,\n    IsNotEmpty: IsNotEmpty,\n    In: In,\n};\n\n//additional operators to be added upon input flag\nconst InTheLastCalendar: IPepSmartFilterOperator = {\n    id: 'inTheLastCalendar',\n    name: 'IN_THE_LAST_CALENDAR',\n    short: 'In the last (calendar)',\n    componentType: ['date'],\n}\n\nconst NotInTheLastCalendar: IPepSmartFilterOperator = {\n    id: 'notInTheLastCalendar',\n    name: 'NOT_IN_THE_LAST_CALENDAR',\n    short: 'Not in the last (calendar)',\n    componentType: ['date'],\n}\n\nexport const PepSmartFilterAdditionalOperators = {\n    InTheLastCalendar: InTheLastCalendar,\n    NotInTheLastCalendar: NotInTheLastCalendar\n}\n\n//additional variable operators to be added upon input variable fields\nconst EqualsToVariable: IPepSmartFilterOperator = {\n    id: 'eqv',\n    name: 'EQUAL_TO_VARIABLE',\n    short: '=',\n    componentType: ['text', 'number', 'boolean', 'multi-select']\n}\n\nconst NotEqualsToVariable: IPepSmartFilterOperator = {\n    id: 'neqv',\n    name: 'NOT_EQUAL_TO_VARIABLE',\n    short: '<>',\n    componentType: ['boolean', 'multi-select']\n}\n\nconst LessThanVariable: IPepSmartFilterOperator = {\n    id: 'ltv',\n    name: 'LESS_THAN_VARIABLE',\n    short: '<',\n    componentType: ['number'],\n};\n\nconst GreaterThanVariable: IPepSmartFilterOperator = {\n    id: 'gtv',\n    name: 'GREATER_THAN_VARIABLE',\n    short: '>',\n    componentType: ['number'],\n};\n\nconst DateRangeVariable: IPepSmartFilterOperator = {\n    id: 'dateRangeVariable',\n    name: 'DATE_RANGE_VARIABLE',\n    short: 'Range Variable',\n    componentType: ['date'],\n};\n\nexport const PepSmartFilterVariableOperators = {\n    EqualsToVariable: EqualsToVariable,\n    NotEqualsToVariable: NotEqualsToVariable,\n    LessThanVariable: LessThanVariable,\n    GreaterThanVariable: GreaterThanVariable,\n    DateRangeVariable: DateRangeVariable\n}\n\nexport class IPepSmartFilterOperatorUnit {\n    id: PepSmartFilterOperatorUnitType;\n    name: string;\n    componentType: PepSmartFilterComponentType[];\n}\n\nconst Days: IPepSmartFilterOperatorUnit = {\n    id: 'days',\n    name: 'DAYS',\n    componentType: ['date'],\n};\n\nconst Weeks: IPepSmartFilterOperatorUnit = {\n    id: 'weeks',\n    name: 'WEEKS',\n    componentType: ['date'],\n};\n\nconst Months: IPepSmartFilterOperatorUnit = {\n    id: 'months',\n    name: 'MONTHS',\n    componentType: ['date'],\n};\n\nconst Years: IPepSmartFilterOperatorUnit = {\n    id: 'years',\n    name: 'YEARS',\n    componentType: ['date'],\n};\n\nexport const PepSmartFilterOperatorUnits = {\n    Days: Days,\n    Weeks: Weeks,\n    Months: Months,\n    Years: Years,\n};\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n    selector: 'pep-filter-actions',\n    templateUrl: './filter-actions.component.html',\n    styleUrls: ['./filter-actions.component.scss'],\n})\nexport class PepFilterActionsComponent {\n    @Input() form: FormGroup;\n\n    @Output() clearClick: EventEmitter<void> = new EventEmitter<void>();\n    @Output() applyClick: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    clear() {\n        this.clearClick.emit();\n    }\n\n    apply() {\n        this.applyClick.emit();\n    }\n}\n","<div [formGroup]=\"form\" class=\"filter-actions pep-spacing-element-negative\">\n    <button mat-button class=\"pep-spacing-element pep-button sm weak\" (click)=\"clear()\">\n        {{ 'ACTIONS.CLEAR' | translate }}\n    </button>\n    <button mat-button class=\"pep-spacing-element pep-button sm strong\" (click)=\"apply()\" [disabled]=\"form.invalid\">\n        {{ 'ACTIONS.APPLY' | translate }}\n    </button>\n</div>","import {\n    Directive,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    AfterViewInit,\n    Output,\n    ChangeDetectorRef,\n    Renderer2,\n    TemplateRef,\n    ViewContainerRef,\n    ViewChild,\n    ComponentFactoryResolver,\n    ComponentFactory,\n    ComponentRef,\n    Injector,\n    ElementRef,\n} from '@angular/core';\nimport {\n    AbstractControl,\n    FormBuilder,\n    FormGroup,\n    Validators,\n} from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport {\n    PepValidatorService,\n    IPepOption,\n    PepUtilitiesService\n} from '@pepperi-addons/ngx-lib';\nimport {\n    IPepSmartFilterOperator,\n    IPepSmartFilterOperatorUnit,\n    PepSmartFilterOperators,\n    PepSmartFilterAdditionalOperators,\n    PepSmartFilterVariableOperators,\n    PepSmartFilterOperatorUnits,\n} from './operator';\nimport { forwardRef } from '@angular/core';\nimport { IPepSmartFilterData, IPepSmartFilterDataValue } from './filter';\nimport { PepSmartFilterBaseField } from './field';\nimport { takeUntil } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepFilterActionsComponent } from '../filter-actions.component';\n\n\n@Directive({})\nexport abstract class BaseFilterComponent\n    implements OnInit, OnChanges, OnDestroy {\n    private readonly _destroyed: Subject<void>;\n    private actionsContainerRef: ComponentRef<PepFilterActionsComponent>;\n\n    private _fieldIdWithNoDots = '';\n    private _field: PepSmartFilterBaseField;\n    @Input()\n    set field(value: PepSmartFilterBaseField) {\n        this._field = value;\n        this._fieldIdWithNoDots = value ? value.id.replace(/\\./g, '_') : '';\n        this.setupForm();\n    }\n    get field(): PepSmartFilterBaseField {\n        return this._field;\n    }\n\n    variableFieldOptions: Array<IPepOption> = [];\n    @Input()\n    set variableField(list: any[]) {\n        if (list?.length) {\n            this.variableFieldOptions = list.map(item => {\n                return {\n                    key: item,\n                    value: item\n                }\n            });\n        }\n    }\n    \n\n    private _filter: IPepSmartFilterData;\n    @Input()\n    set filter(value: IPepSmartFilterData) {\n        this._filter = value;\n        this.setupFilter();\n    }\n    get filter(): IPepSmartFilterData {\n        return this._filter;\n    }\n    protected _parentForm: FormGroup;\n    @Input()\n    set parentForm(form: FormGroup) {\n        this._parentForm = form;\n        this.updateParentForm();\n    }\n    @Input() emitOnChange = false;\n    @Input() inline = false;\n    @Input() showActionButtons = true;\n    @Input() renderTitle = true;\n    @Input() showAdditionalOperators = false;\n\n    @Output() filterClear: EventEmitter<void> = new EventEmitter<void>();\n    @Output()\n    filterChange: EventEmitter<IPepSmartFilterData> = new EventEmitter<IPepSmartFilterData>();\n\n    private _operator: IPepSmartFilterOperator;\n    set operator(operator: IPepSmartFilterOperator) {\n        if (operator?.id != this._operator?.id) {\n            // Validate operator\n            const index = this.operators.findIndex((o) => o.id === operator.id);\n            if (index >= 0) {\n                this._operator = this.operators[index];\n            } else {\n                this._operator = this.operators[0];\n            }\n\n            this.form.reset();\n            this.updateValidity();\n        }\n    }\n    get operator(): IPepSmartFilterOperator {\n        return this._operator;\n    }\n\n    private _operatorUnit: IPepSmartFilterOperatorUnit;\n    set operatorUnit(operatorUnit: IPepSmartFilterOperatorUnit) {\n        // Validate operator unit\n        if (operatorUnit) {\n            const index = this.operatorUnits.findIndex(\n                (ou) => ou.id === operatorUnit.id\n            );\n            if (index >= 0) {\n                this._operatorUnit = this.operatorUnits[index];\n            } else {\n                this._operatorUnit = this.operatorUnits[0];\n            }\n        } else {\n            this._operatorUnit = undefined;\n        }\n    }\n    get operatorUnit(): IPepSmartFilterOperatorUnit {\n        return this._operatorUnit;\n    }\n\n    get firstControlKey() {\n        return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';\n    }\n    get firstControl(): AbstractControl {\n        return this.form.get(this.firstControlKey);\n    }\n    get secondControlKey() {\n        return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';\n    }\n    get secondControl(): AbstractControl {\n        return this.form.get(this.secondControlKey);\n    }\n\n    protected operators: IPepSmartFilterOperator[];\n    protected operatorUnits: IPepSmartFilterOperatorUnit[];\n\n    protected readonly OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';\n    protected readonly OPERATOR_UNITS_TRANSLATION_PREFIX =\n        'SMART_FILTERS.OPERATOR_UNITS';\n\n    form: FormGroup;\n\n    constructor(\n        private viewContainerRef: ViewContainerRef,\n        private injector: Injector,\n        private resolver: ComponentFactoryResolver,\n        private builder: FormBuilder,\n        protected translate: TranslateService,\n        protected validator: PepValidatorService,\n        protected utilitiesService: PepUtilitiesService,\n        protected renderer: Renderer2,\n    ) {\n        this._destroyed = new Subject();\n    }\n\n    private createActionsComponent() {\n        const factory: ComponentFactory<PepFilterActionsComponent> = this.resolver.resolveComponentFactory(\n            PepFilterActionsComponent\n        );\n\n        this.actionsContainerRef = factory.create(this.injector);\n        this.actionsContainerRef.instance.form = this.form;\n        this.actionsContainerRef.instance.applyClick.subscribe(() =>\n            this.applyFilter()\n        );\n        this.actionsContainerRef.instance.clearClick.subscribe(() =>\n            this.clearFilter()\n        );\n\n        this.viewContainerRef.insert(this.actionsContainerRef.hostView);\n    }\n\n    private setupForm() {\n        const formValue = {};\n        formValue[this.firstControlKey] = [];\n        formValue[this.secondControlKey] = [];\n        // this.form.patchValue(formValue);        \n        this.form = this.builder.group(formValue);\n        // this.form[this.firstControlKey] = [];\n        // this.form[this.secondControlKey] = [];\n\n        this.setupOperators();\n\n        if (this.showActionButtons) {\n            this.createActionsComponent();\n        }\n    }\n\n    private setupOperators() {\n        // Get the operators by componentType.\n        this.operators = Object.keys(PepSmartFilterOperators)\n            .filter((key) => {\n                return PepSmartFilterOperators[key].componentType.includes(\n                    this.field.componentType\n                );\n            })\n            .map((key) => PepSmartFilterOperators[key]);\n\n        // Add additional operators\n        if (this.showAdditionalOperators) {\n            const additional: IPepSmartFilterOperator[] = Object.keys(PepSmartFilterAdditionalOperators)\n                .filter((key) => {\n                    return PepSmartFilterAdditionalOperators[key].componentType.includes(\n                        this.field.componentType\n                    );\n                })\n                .map((key) => PepSmartFilterAdditionalOperators[key]);\n\n            this.operators = [...this.operators, ...additional];\n        }\n\n        //add variable operators\n        if (this.variableFieldOptions?.length) {\n            const variables: IPepSmartFilterOperator[] = Object.keys(PepSmartFilterVariableOperators)\n                .filter((key) => {\n                    return PepSmartFilterVariableOperators[key].componentType.includes(\n                        this.field.componentType\n                    );\n                })\n                .map((key) => PepSmartFilterVariableOperators[key]);\n\n            this.operators = [...this.operators, ...variables];\n        }\n\n        // Filter by from field.operators input if exist.\n        if (this.field.operators?.length > 0) {\n            this.operators = this.operators.filter((o1) =>\n                this.field.operators.some((o2) => o1.id === o2)\n            );\n        }\n\n\n\n        // Get the operator units by componentType.\n        this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)\n            .filter((key) => {\n                return PepSmartFilterOperatorUnits[key].componentType.includes(\n                    this.field.componentType\n                );\n            })\n            .map((key) => PepSmartFilterOperatorUnits[key]);\n\n        // Filter by from field.operatorsUnits input if exist.\n        if (this.field.operatorUnits?.length > 0) {\n            this.operatorUnits = this.operatorUnits.filter((o1) =>\n                this.field.operatorUnits.some((o2) => o1.id === o2)\n            );\n        }\n\n        // Load translation before get the options in the children.\n        this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {\n            this.loadOperatorsOptions();\n        });\n    }\n\n    private setupFilter() {\n        if (this._filter) {\n            this.operator = this._filter.operator;\n            this.operatorUnit = this._filter.operatorUnit;\n            const formValue = {};\n            formValue[this.firstControlKey] = this._filter.value.first;\n            formValue[this.secondControlKey] = this._filter.value.second;\n            this.form.patchValue(formValue);\n        } else {\n            this.operator = this.getDefaultOperator();\n            this.operatorUnit = this.getDefaultOperatorUnit();\n            this.clearFilter(false);\n        }\n    }\n\n    protected updateParentForm() {\n        this._parentForm.setControl('fieldId', this.builder.control(this.field.id));\n        this._parentForm.setControl('fieldType', this.builder.control(this.field.type));\n        this._parentForm.setControl('operator', this.builder.control(this.operator));\n        this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));\n        this._parentForm.setControl('values', this.builder.group({\n            first: this.firstControl,\n            second: this.secondControl\n        }));\n    }\n\n    protected getDestroyer() {\n        return takeUntil(this._destroyed);\n    }\n\n    private updateValidity() {\n        this.setFieldsStateAndValidators();\n\n        this.firstControl.updateValueAndValidity();\n        this.secondControl.updateValueAndValidity();\n    }\n    // Load the operators options from the translation.\n    protected loadOperatorsOptions(): void {\n        // Not implemented in the base\n    }\n\n    // Set default validators - some childs override this.\n    protected setFieldsStateAndValidators(): void {\n        this.firstControl.setValidators(Validators.required);\n        this.secondControl.setValidators(Validators.required);\n        this.secondControl.disable();\n    }\n\n    // Return undefined - some childs override this.\n    protected getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n        return undefined;\n    }\n\n    protected initFilter() {\n        // Not implemented in the base\n    }\n\n    abstract getDefaultOperator(): IPepSmartFilterOperator;\n    abstract getFilterValue(): IPepSmartFilterDataValue;\n\n    clearFilter(emitEvent = true) {\n        this._filter = null;\n        this.form.reset();\n        this.initFilter();\n\n        if (emitEvent) {\n            this.filterClear.emit();\n        }\n    }\n\n    applyFilter() {\n        const filterValue = this.getFilterValue();\n\n        // If the filter is not null declare it, else - clear it.\n        if (filterValue) {\n            const filter = {\n                fieldId: this.field.id,\n                operator: this.operator,\n                operatorUnit: this.operatorUnit,\n                value: filterValue,\n            };\n            this._filter = filter;\n            this.filterChange.emit(filter);\n        } else {\n            this.clearFilter();\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.form) {\n            this.updateValidity();\n        }\n    }\n\n    ngOnChanges(): void {\n        // if (this.form) {\n        //     this.updateValidity();\n        // }\n    }\n\n    ngOnDestroy(): void {\n        this._destroyed.next();\n        this._destroyed.complete();\n\n        if (this.showActionButtons) {\n            this.actionsContainerRef.destroy();\n        }\n    }\n\n    // writeValue(value: IPepSmartFilterDataValue): void {\n    //     if (value) {\n    //         this.form.setValue(\n    //             {\n    //                 first: value.first,\n    //                 second: value.second || null,\n    //             },\n    //             { emitEvent: false }\n    //         );\n    //     } else {\n    //         this.form.reset();\n    //     }\n    // }\n\n    // registerOnChange(fn: any): void {\n    //     this.form.valueChanges.subscribe(fn);\n    // }\n\n    // onTouched: () => void = () => {\n    //     /* Do nothing */\n    // };\n\n    // registerOnTouched(fn: any): void {\n    //     this.onTouched = fn;\n    // }\n\n    // setDisabledState?(isDisabled: boolean): void {\n    //     isDisabled ? this.form.disable() : this.form.enable();\n    // }\n\n    // validate(control: AbstractControl): ValidationErrors {\n    //     return this.form.valid ? null : { PepFilterIsNotValid: true };\n    // }\n}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n    IPepSmartFilterOperator,\n    PepSmartFilterOperators,\n    PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\n\n@Component({\n    selector: 'pep-text-filter',\n    templateUrl: './text-filter.component.html',\n    styleUrls: ['./text-filter.component.scss'],\n})\nexport class PepTextFilterComponent extends BaseFilterComponent implements OnInit {\n    PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n    chooseTypeOptions: Array<IPepOption> = [];\n    operatorWidth = '38%';\n    firstControlWidth = '62%';\n\n    ngOnInit() {\n        this.firstControl.valueChanges\n            .pipe(this.getDestroyer(), distinctUntilChanged())\n            .subscribe(() => {\n                this.setFieldsStateAndValidators();\n            });\n    }\n\n    // Override\n    getDefaultOperator(): IPepSmartFilterOperator {\n        return PepSmartFilterOperators.Equals;\n    }\n\n    // Override\n    getFilterValue(): IPepSmartFilterDataValue {\n        const filterValue = {\n            first: this.firstControl.value,\n        };\n\n        if (this.operator === PepSmartFilterOperators.NumberRange) {\n            filterValue['second'] = this.secondControl.value;\n        }\n\n        return filterValue;\n    }\n\n    // Override\n    loadOperatorsOptions() {\n        this.chooseTypeOptions = this.operators.map((operator) => {\n            return {\n                key: operator.id,\n                value: this.translate.instant(\n                    `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n                ),\n            };\n        });\n    }\n\n    // Override\n    setFieldsStateAndValidators(): void {\n        if (this.operator === PepSmartFilterOperators.NumberRange) {\n            const firstValidators = [Validators.required];\n            if (this.secondControl.value) {\n                firstValidators.push(this.validator.isLessThan(this.secondControl));\n            }\n            this.firstControl.setValidators(firstValidators);\n            this.firstControl.updateValueAndValidity();\n        } else {\n            super.setFieldsStateAndValidators();\n        }\n    }\n\n    onOperatorChanged(value: string) {\n        const operator = Object.values(this.operators).find(\n            (operator) => operator.id === value\n        );\n        this.operator = operator;\n        if (this._parentForm) {\n            this.updateParentForm();\n        }\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onVariableChanged(value: any) {\n        this.firstControl.setValue(value);\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onValueChanged() {\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n}","<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n    <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n        [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n        [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n    </pep-select>\n    <ng-container *ngIf=\"operator !== PepSmartFilterVariableOperators.EqualsToVariable\">\n        <pep-textbox [fxFlex]=\"inline ? firstControlWidth : null\" [form]=\"form\" [key]=\"firstControlKey\"\n            [label]=\"'SMART_FILTERS.VALUE' | translate\" [renderError]=\"false\" [renderTitle]=\"renderTitle\"\n            [type]=\"field.type\" [value]=\"firstControl?.value || ''\"\n            (valueChange)=\"onValueChanged()\">\n        </pep-textbox>\n    </ng-container>\n    <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.EqualsToVariable\">\n        <pep-select [fxFlex]=\"inline ? firstControlWidth : null\" [key]=\"firstControlKey\"\n            [value]=\"firstControl?.value || ''\" [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\"\n            [emptyOption]=\"false\" [options]=\"variableFieldOptions\" (valueChange)=\"onVariableChanged($event)\">\n        </pep-select>\n    </ng-container>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n    IPepSmartFilterOperator,\n    PepSmartFilterOperators,\n    PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n    selector: 'pep-boolean-filter',\n    templateUrl: './boolean-filter.component.html',\n    styleUrls: ['./boolean-filter.component.scss'],\n})\nexport class PepBooleanFilterComponent extends BaseFilterComponent implements OnInit {\n    @Input() options: IPepOption[] = [];\n\n    PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n    chooseTypeOptions: Array<IPepOption> = [];\n    operatorWidth: string;\n    valueWidth: string;\n\n    ngOnInit() {\n        if (this.inline) {\n            this.setControlsWidth();\n        }\n    }\n\n\n    // Override\n    getDefaultOperator(): IPepSmartFilterOperator {\n        return PepSmartFilterOperators.Equals;\n    }\n\n    // Override\n    getFilterValue(): IPepSmartFilterDataValue {\n        const filterValue = { first: this.firstControl.value || false };\n        return filterValue;\n    }\n\n    // Override\n    loadOperatorsOptions() {\n        this.chooseTypeOptions = this.operators.map((operator) => {\n            return {\n                key: operator.id,\n                value: this.translate.instant(\n                    `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n                ),\n            };\n        });\n    }\n\n    setControlsWidth() {\n        if (this.variableFieldOptions?.length) {\n            this.operatorWidth = '38%';\n            this.valueWidth = '62%';\n\n        } else {\n            this.valueWidth = '100%';\n        }\n    }\n\n    onOperatorChanged(value: string) {\n        const operator = Object.values(this.operators).find(\n            (operator) => operator.id === value\n        );\n        this.operator = operator;\n        if (this._parentForm) {\n            this.updateParentForm();\n        }\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onValueChanged(value) {\n        this.firstControl.setValue(value);\n\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n}\n","<ng-container *ngIf=\"inline; then inlineBlock; else notInlineBlock\"></ng-container>\n<ng-template #inlineBlock>\n    <ng-container *ngIf=\"variableFieldOptions?.length\">\n        <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n            <pep-select [fxFlex]=\"operatorWidth\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n                [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n                [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n            </pep-select>\n            <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.EqualsToVariable || \n                operator === PepSmartFilterVariableOperators.NotEqualsToVariable\">\n                <pep-select [fxFlex]=\"valueWidth\" [key]=\"firstControlKey\" [value]=\"firstControl?.value || ''\"\n                    [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n                    [options]=\"variableFieldOptions\" (valueChange)=\"onValueChanged($event)\">\n                </pep-select>\n            </ng-container>\n            <ng-container *ngIf=\"operator !== PepSmartFilterVariableOperators.EqualsToVariable && \n                operator !== PepSmartFilterVariableOperators.NotEqualsToVariable\">\n                <pep-select [fxFlex]=\"valueWidth\" [value]=\"firstControl?.value || ''\" xAlignment=\"left\"\n                    [options]=\"options\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n                    (valueChange)=\"onValueChanged($event)\">\n                </pep-select>\n            </ng-container>\n        </div>\n    </ng-container>\n    <ng-container *ngIf=\"!variableFieldOptions || !variableFieldOptions.length\">\n        <pep-select [fxFlex]=\"valueWidth\" [value]=\"firstControl?.value || ''\" xAlignment=\"left\" [options]=\"options\"\n            [renderTitle]=\"renderTitle\" [emptyOption]=\"false\" (valueChange)=\"onValueChanged($event)\">\n        </pep-select>\n    </ng-container>\n</ng-template>\n<ng-template #notInlineBlock>\n    <div [formGroup]=\"form\">\n        <mat-radio-group class=\"radio-group\" [formControlName]=\"firstControlKey\">\n            <mat-radio-button class=\"pep-radio-button md pep-input no-default-background\" value=\"true\">\n                {{ 'CHECKBOX.TRUE' | translate }}\n            </mat-radio-button>\n            <mat-radio-button class=\"pep-radio-button md pep-input no-default-background\" value=\"false\">\n                {{ 'CHECKBOX.FALSE' | translate }}\n            </mat-radio-button>\n        </mat-radio-group>\n    </div>\n</ng-template>","import { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n    IPepSmartFilterOperator,\n    IPepSmartFilterOperatorUnit,\n    PepSmartFilterOperators,\n    PepSmartFilterAdditionalOperators,\n    PepSmartFilterVariableOperators,\n    PepSmartFilterOperatorUnits,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n    selector: 'pep-date-filter',\n    templateUrl: './date-filter.component.html',\n    styleUrls: ['./date-filter.component.scss'],\n})\nexport class PepDateFilterComponent extends BaseFilterComponent implements OnInit {\n    PepSmartFilterOperators = PepSmartFilterOperators;\n    PepSmartFilterAdditionalOperators = PepSmartFilterAdditionalOperators;\n    PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n    chooseTimeOptions: Array<IPepOption> = [];\n    chooseTimeUnitOptions: Array<IPepOption> = [];\n    operatorWidth: string;\n    fieldsWidth: string;\n\n    ngOnInit() {\n        if (this.inline) {\n            this.setControlsWidth();\n        }\n    }\n\n    // Override\n    getDefaultOperator(): IPepSmartFilterOperator {\n        return PepSmartFilterOperators.InTheLast;\n    }\n\n    // Override\n    getDefaultOperatorUnit(): IPepSmartFilterOperatorUnit {\n        if (this.operator === PepSmartFilterOperators.InTheLast ||\n            this.operator === PepSmartFilterAdditionalOperators.InTheLastCalendar ||\n            this.operator === PepSmartFilterOperators.NotInTheLast ||\n            this.operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar ||\n            this.operator === PepSmartFilterOperators.DueIn ||\n            this.operator === PepSmartFilterOperators.NotDueIn) {\n            return PepSmartFilterOperatorUnits.Months;\n        } else {\n            return undefined;\n        }\n    }\n\n    // Override\n    getFilterValue(): IPepSmartFilterDataValue {\n        const filterValue = {\n            first: this.firstControl.value,\n        };\n\n        if (this.operator === PepSmartFilterOperators.DateRange ||\n            this.operator === PepSmartFilterVariableOperators.DateRangeVariable) {\n            filterValue['second'] = this.secondControl.value;\n        }\n\n        return filterValue;\n    }\n\n    // Override\n    initFilter() {\n        setTimeout(() => {            \n            if (this.emitOnChange) {\n                this.applyFilter();\n            }\n        }, 0);\n    }\n\n    // Override\n    loadOperatorsOptions() {\n        this.chooseTimeOptions = this.operators.map((operator) => {\n            return {\n                key: operator.id,\n                value: this.translate.instant(\n                    `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n                ),\n            };\n        });\n\n        this.chooseTimeUnitOptions = this.operatorUnits.map((operatorUnit) => {\n            return {\n                key: operatorUnit.id,\n                value: this.translate.instant(\n                    `${this.OPERATOR_UNITS_TRANSLATION_PREFIX}.${operatorUnit.name}`\n                ),\n            };\n        });\n    }\n\n    // Override\n    setFieldsStateAndValidators(): void {\n        this.firstControl.enable();\n\n        if (\n            this.operator === PepSmartFilterOperators.DateRange ||\n            this.operator === PepSmartFilterVariableOperators.DateRangeVariable\n        ) {\n            this.firstControl.setValidators(Validators.required);\n            this.secondControl.enable();\n            this.secondControl.setValidators(Validators.required);\n        } else if (\n            this.operator === PepSmartFilterOperators.InTheLast ||\n            this.operator === PepSmartFilterAdditionalOperators.InTheLastCalendar ||\n            this.operator === PepSmartFilterOperators.NotInTheLast ||\n            this.operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar ||\n            this.operator === PepSmartFilterOperators.DueIn ||\n            this.operator === PepSmartFilterOperators.NotDueIn\n        ) {\n            this.firstControl.setValidators([\n                Validators.required,\n                this.validator.numberValidator(),\n            ]);\n            this.secondControl.disable();\n        } else {\n            // Disable 'first' field.\n            if (\n                this.operator === PepSmartFilterOperators.Today ||\n                this.operator === PepSmartFilterOperators.ThisWeek ||\n                this.operator === PepSmartFilterOperators.ThisMonth ||\n                this.operator === PepSmartFilterOperators.IsEmpty ||\n                this.operator === PepSmartFilterOperators.IsNotEmpty\n            ) {\n                this.firstControl.disable();\n            }\n\n            // Default disable 'second' field.\n            super.setFieldsStateAndValidators();\n        }\n    }\n\n    setControlsWidth() {\n        if (\n            this.operator === PepSmartFilterOperators.Today ||\n            this.operator === PepSmartFilterOperators.ThisWeek ||\n            this.operator === PepSmartFilterOperators.ThisMonth ||\n            this.operator === PepSmartFilterOperators.IsEmpty ||\n            this.operator === PepSmartFilterOperators.IsNotEmpty\n        ) {\n            this.operatorWidth = 'auto';\n            this.fieldsWidth = '0%';\n        } else if (this.operator === PepSmartFilterOperators.On) {\n            this.operatorWidth = '38%';\n            this.fieldsWidth = '62%';\n        } else {\n            this.operatorWidth = '30%';\n            this.fieldsWidth = '70%';\n        }\n    }\n\n    onOperatorChanged(value: string) {\n        const operator = Object.values(this.operators).find(\n            (operator) => operator.id === value\n        );\n\n        this.operator = operator;\n        this.operatorUnit = this.getDefaultOperatorUnit();\n        if (this.inline) {\n            this.setControlsWidth();\n        }\n        if (this._parentForm) {\n            this.updateParentForm();\n        }\n        setTimeout(() => {\n            if (this.emitOnChange) {\n                this.applyFilter();\n            }    \n        }, 0)\n        \n    }\n\n    onTimeUnitChanged(value: string) {\n        const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find(\n            (operatorUnit) => operatorUnit.id === value\n        );\n        this.operatorUnit = operatorUnit;\n        if (this._parentForm) {\n            this.updateParentForm();\n        }\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onVariableChanged(value: any) {\n        this.firstControl.setValue(value);\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onSecondVariableChanged(value: any) {\n        this.secondControl.setValue(value);\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onDateValueChanged() {\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n}\n","<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n    <ng-container>\n        <pep-select [key]=\"'timeOperator'\" [value]=\"operator.id\" [label]=\"'SMART_FILTERS.CHOOSE_TIME' | translate\"\n            [renderTitle]=\"renderTitle\" [emptyOption]=\"false\" [options]=\"chooseTimeOptions\"\n            [fxFlex]=\"inline ? operatorWidth : null\" (valueChange)=\"onOperatorChanged($event)\">\n        </pep-select>\n    </ng-container>\n    <div *ngIf=\"operator === PepSmartFilterOperators.InTheLast ||\n                operator === PepSmartFilterAdditionalOperators.InTheLastCalendar || \n                operator === PepSmartFilterOperators.NotInTheLast ||\n                operator === PepSmartFilterAdditionalOperators.NotInTheLastCalendar || \n                operator === PepSmartFilterOperators.DueIn ||\n                operator === PepSmartFilterOperators.NotDueIn\" fxLayout=\"row\" fxLayout.xs=\"column\"\n        [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n        <!-- Amount -->\n        <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n            [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\" [type]=\"'int'\"\n            [value]=\"firstControl?.value || ''\"\n            (valueChange)=\"onDateValueChanged()\">\n        </pep-textbox>\n        <!-- Time unit -->\n        <pep-select [form]=\"form\" [key]=\"'timeUnit'\" [value]=\"operatorUnit?.id\"\n            [label]=\"'SMART_FILTERS.TIME_UNIT' | translate\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n            [emptyOption]=\"false\" [options]=\"chooseTimeUnitOptions\" (valueChange)=\"onTimeUnitChanged($event)\">\n        </pep-select>\n    </div>\n    <div pepRtlDirection *ngIf=\"operator === PepSmartFilterOperators.DateRange\" fxLayout=\"row\" fxLayout.xs=\"column\"\n        [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\" [fxFlex]=\"inline ? fieldsWidth : null\">\n        <!-- Start date -->\n        <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.START_DATE' | translate\"\n            [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n            [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"firstControl?.value || ''\"\n            [maxDateValue]=\"secondControl?.value\" (valueChange)=\"onDateValueChanged()\">\n        </pep-date>\n        <!-- End date -->\n        <pep-date [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.END_DATE' | translate\"\n            [renderError]=\"false\" [renderTitle]=\"renderTitle\" fxFlex=\"50%\"\n            [type]=\"field.type === 'date' ? 'date' : 'datetime'\" [value]=\"secondControl?.value || ''\"\n            [minDateValue]=\"firstControl?.value\" (valueChange)=\"onDateValueChanged()\">\n        </pep-date>\n    </div>\n    <ng-container *ngIf=\"operator === PepSmartFilterOperators.On\">\n        <!-- Choose a date -->\n        <pep-date [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.CHOOSE_DATE' | translate\"\n            [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type === 'date' ? 'date' : 'datetime'\"\n            [fxFlex]=\"inline ? fieldsWidth : null\" [value]=\"firstControl?.value || ''\"\n            (valueChange)=\"onDateValueChanged()\">\n        </pep-date>\n    </ng-container>\n    <div pepRtlDirection *ngIf=\"operator === PepSmartFilterVariableOperators.DateRangeVariable\" fxLayout=\"row\"\n        fxLayout.xs=\"column\" fxLayoutGap=\".5rem\" fxFlex=\"fieldsWidth\">\n        <pep-select fxFlex=\"50%\" [key]=\"firstControlKey\" [value]=\"firstControl?.value || ''\"\n            [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n            [options]=\"variableFieldOptions\" (valueChange)=\"onVariableChanged($event)\"></pep-select>\n        <pep-select fxFlex=\"50%\" [key]=\"secondControlKey\" [value]=\"secondControl?.value || ''\"\n            [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n            [options]=\"variableFieldOptions\" (valueChange)=\"onSecondVariableChanged($event)\"></pep-select>\n    </div>\n</div>\n","import {\n    AfterViewInit,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    ViewChild,\n} from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n    IPepSmartFilterOperator,\n    PepSmartFilterOperators,\n    PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { IPepSmartFilterFieldOption } from '../common/model/field';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { VirtualScrollerComponent } from 'ngx-virtual-scroller';\n\nclass PepMultiSelectFilterOption implements IPepSmartFilterFieldOption {\n    value: string;\n    count?: number;\n    selected = false;\n}\n\n@Component({\n    selector: 'pep-multi-select-filter',\n    templateUrl: './multi-select-filter.component.html',\n    styleUrls: ['./multi-select-filter.component.scss'],\n})\nexport class PepMultiSelectFilterComponent\n    extends BaseFilterComponent\n    implements OnInit, AfterViewInit {\n    PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n\n    options: PepMultiSelectFilterOption[] = [];\n    filteredOptions$: Observable<any>;\n    chooseTypeOptions: Array<IPepOption> = [];\n    searchControl = new FormControl();\n    //inline props\n    selected = '';\n    inlineOptions: IPepOption[] = [];\n    operatorWidth: string;\n    valueWidth: string;\n\n    @ViewChild('optionsContainer')\n    optionsContainer: ElementRef;\n\n    private readonly MAX_OPTIONS_TO_SHOW = 6.35;\n    @ViewChild(VirtualScrollerComponent)\n    private virtualScroller: VirtualScrollerComponent;\n\n    numberOptionsToShowSearch = 10;\n\n    ngOnInit() {\n        super.ngOnInit;\n\n        if (this.inline) {\n            this.inlineControlInit();\n            this.setControlsWidth();\n        } else {\n            this.noneInlineControlInit();\n        }\n    }\n\n\n    ngAfterViewInit(): void {\n        // Calc for the first time.\n        this.calcOptionsHeight(this.options.length);\n    }\n\n    private inlineControlInit() {\n        //load options from field        \n        this.inlineOptions = this.field?.options?.length > 0 ? this.field.options as IPepOption[] : [];\n\n        // init the selected values from first value.  \n        if (this.firstControl?.value && Array.isArray(this.firstControl.value)) {\n            this.selected = this.firstControl.value.join(';');\n        }\n    }\n\n    private noneInlineControlInit() {\n        if (this.field.options?.length > 0) {\n            this.options = this.field.options.map((opt) => {\n                return { value: opt.value, count: opt.count, selected: false };\n            });\n        } else {\n            this.searchControl.disable();\n        }\n\n        // Init the selected values from first value.\n        const firstControl = this.firstControl;\n        if (firstControl.value) {\n            this.initOptionsSelectedValues(firstControl.value);\n        }\n\n        // Add subscription for the first value change to set the selected options.\n        firstControl.valueChanges\n            .pipe(this.getDestroyer(), distinctUntilChanged())\n            .subscribe((selectedValues: string[]) => {\n                this.initOptionsSelectedValues(selectedValues);\n            });\n\n        // Filter the options by the search control.\n        this.filteredOptions$ = this.searchControl.valueChanges.pipe(\n            this.getDestroyer(),\n            startWith<any>(''),\n            map((option) =>\n                typeof option === 'string' ? option : option && option.value\n            ),\n            map((value) => (value ? this.filterOptions(value) : this.options))\n        );\n\n        // Each time the filter change.\n        this.filteredOptions$.subscribe(\n            (filterdOptions: PepMultiSelectFilterOption[]) => {\n                this.calcOptionsHeight(filterdOptions.length);\n                setTimeout(() => {\n                    // 8 is the padding top of the multi-select-options\n                    this.virtualScroller.scrollToPosition(-8);\n                }, 125);\n            }\n        );\n\n    }\n\n    initOptionsSelectedValues(selectedValues: string[]): void {\n        this.options.forEach((opt) => {\n            const isValueSelected =\n                selectedValues && selectedValues.includes(opt.value);\n            opt.selected = isValueSelected;\n        });\n    }\n\n    private calcOptionsHeight(optionsCount: number) {\n        if (this.optionsContainer) {\n            const optionsToShow =\n                optionsCount > this.MAX_OPTIONS_TO_SHOW\n                    ? this.MAX_OPTIONS_TO_SHOW\n                    : optionsCount;\n            // optionsToShow * 2.25 is 1 option height + 1 is the padding top & bottom of the container.\n            const optionsHeight = optionsToShow * 2.25 + 1 + 'rem';\n\n            this.renderer.setStyle(\n                this.optionsContainer.nativeElement,\n                'height',\n                optionsHeight\n            );\n        }\n    }\n\n    private filterOptions(value: string): any[] {\n        const filterValue = value.toLowerCase();\n        return this.options.filter(\n            (opt) =>\n                opt.value &&\n                opt.value.toLowerCase().includes(filterValue.toLowerCase())\n        );\n    }\n\n    // Override\n    getDefaultOperator(): IPepSmartFilterOperator {\n        return PepSmartFilterOperators.In;\n    }\n\n    // Override\n    getFilterValue(): IPepSmartFilterDataValue {\n        if (this.inline) {\n            return {\n                first: this.firstControl.value\n            };\n        } else {\n            const selectedValues = this.options\n                .filter((opt) => opt.selected)\n                .map((opt) => opt.value);\n            const filterValue = {\n                first: selectedValues,\n            };\n\n            return selectedValues.length > 0 ? filterValue : null;\n        }\n\n    }\n\n    // Override\n    loadOperatorsOptions() {\n        this.chooseTypeOptions = this.operators.map((operator) => {\n            return {\n                key: operator.id,\n                value: this.translate.instant(\n                    `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n                ),\n            };\n        });\n    }\n\n    setControlsWidth() {\n        if (this.variableFieldOptions?.length) {\n            this.operatorWidth = '38%';\n            this.valueWidth = '62%';\n\n        } else {\n            this.valueWidth = '100%';\n        }\n    }\n\n    onOperatorChanged(value: string) {\n        const operator = Object.values(this.operators).find(\n            (operator) => operator.id === value\n        );\n        this.operator = operator;\n        if (this._parentForm) {\n            this.updateParentForm();\n        }\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n\n    // Override\n    initFilter() {\n        this.options.forEach((opt) => (opt.selected = false));\n        this.searchControl.setValue('');\n    }\n\n    onOptionChange(\n        option: PepMultiSelectFilterOption,\n        event: MatCheckboxChange\n    ) {\n        option.selected = event.checked;\n        this.firstControl.setValue(\n            this.options.filter((opt) => opt.selected).map((opt) => opt.value),\n            { emitEvent: false }\n        );\n    }\n\n    onMultiSelectChanged(value: string) {\n        if (value) {\n            const selected: string[] = value.split(';');\n            this.firstControl.setValue(selected);\n        } else {\n            this.firstControl.setValue(null);\n        }\n\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onValueChanged(value) {\n        this.firstControl.setValue(value);\n\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n}\n","<ng-container *ngIf=\"inline\">\n    <ng-container *ngIf=\"variableFieldOptions?.length\">\n        <div fxLayout=\"row\" fxLayoutGap=\".5rem\">\n            <pep-select [fxFlex]=\"operatorWidth\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n                [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n                [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n            </pep-select>\n            <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.EqualsToVariable || \n                operator === PepSmartFilterVariableOperators.NotEqualsToVariable\">\n                <pep-select [fxFlex]=\"valueWidth\" [key]=\"firstControlKey\" [value]=\"firstControl?.value || ''\"\n                    [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n                    [options]=\"variableFieldOptions\" (valueChange)=\"onValueChanged($event)\">\n                </pep-select>\n            </ng-container>\n            <ng-container *ngIf=\"operator !== PepSmartFilterVariableOperators.EqualsToVariable && \n                operator !== PepSmartFilterVariableOperators.NotEqualsToVariable\">\n                <pep-select [fxFlex]=\"valueWidth\" [label]=\"'Pepperi Multi Select'\" [type]=\"'multi'\"\n                    [value]=\"selected\" [xAlignment]=\"'left'\" [renderTitle]=\"renderTitle\" [options]='inlineOptions'\n                    (valueChange)=\"onMultiSelectChanged($event)\">\n                </pep-select>\n            </ng-container>\n        </div>\n    </ng-container>\n    <ng-container *ngIf=\"!variableFieldOptions || !variableFieldOptions.length\">\n        <pep-select [label]=\"'Pepperi Multi Select'\" [type]=\"'multi'\" [value]=\"selected\"\n            [xAlignment]=\"'left'\" [renderTitle]=\"renderTitle\" [options]='inlineOptions'\n            (valueChange)=\"onMultiSelectChanged($event)\">\n        </pep-select>\n    </ng-container>\n</ng-container>\n<div *ngIf=\"!inline\" [formGroup]=\"form\">\n    <pep-search *ngIf=\"options?.length > numberOptionsToShowSearch\" [searchControl]=\"searchControl\"\n        [triggerOn]=\"'keydown'\" shrink=\"never\"></pep-search>\n    <div pepRtlClass class=\"multi-select-options pep-border-top pep-border-bottom\"\n        [ngClass]=\"{'with-no-search': options?.length <= numberOptionsToShowSearch}\">\n        <div #optionsContainer class=\"flip-scroll\" pepRtlClass>\n            <virtual-scroller #scroll [items]=\"filteredOptions$ | async\" [parentScroll]=\"optionsContainer\">\n                <mat-checkbox *ngFor=\"let opt of scroll.viewPortItems\"\n                    class=\"pep-checkbox-container pep-input no-default-background md\" [title]=\"opt.value\"\n                    [checked]=\"opt.selected\" (change)=\"onOptionChange(opt, $event)\">\n                    <div class=\"title\">\n                        <span class=\"body-sm ellipsis\">{{ opt.value }}</span>\n                        <span *ngIf=\"opt.count\" class=\"color-dimmed body-xs ellipsis\">({{opt.count}})</span>\n                    </div>\n                </mat-checkbox>\n                <ng-container *ngIf=\"scroll.viewPortItems?.length === 0\">\n                    <span class=\"no-options body-sm ellipsis\" [title]=\"field.name\">\n                        {{ ( options.length > 0 ? \"SMART_FILTERS.NO_SEARCH_RESULTS\" : \"SMART_FILTERS.NO_OPTIONS\") |\n                        translate }}\n                    </span>\n                </ng-container>\n            </virtual-scroller>\n        </div>\n    </div>\n</div>","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n    IPepSmartFilterOperator,\n    PepSmartFilterOperators,\n    PepSmartFilterVariableOperators\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n    selector: 'pep-number-filter',\n    templateUrl: './number-filter.component.html',\n    styleUrls: ['./number-filter.component.scss'],\n})\nexport class PepNumberFilterComponent extends BaseFilterComponent implements OnInit {\n    PepSmartFilterOperators = PepSmartFilterOperators;\n    PepSmartFilterVariableOperators = PepSmartFilterVariableOperators;\n    chooseTypeOptions: Array<IPepOption> = [];\n    operatorWidth = '38%';\n    fieldsWidth = '70%';\n\n    ngOnInit() {\n        this.firstControl.valueChanges\n            // .pipe(debounceTime(3000), this.getDestroyer(), distinctUntilChanged())\n            // .pipe(this.getDestroyer(), distinctUntilChanged((pre: any, curr: any) => \n            //     this.utilitiesService.isEqualNumber(pre, curr)\n            // ))\n            .pipe(this.getDestroyer(), distinctUntilChanged())\n            .subscribe(() => {\n                console.log(`firstControl.valueChanges - ${this.firstControl.value}`)\n                this.setFieldsStateAndValidators();\n            });\n\n        this.secondControl.valueChanges\n            .pipe(this.getDestroyer(), distinctUntilChanged())\n            // .pipe(debounceTime(3000), this.getDestroyer(), distinctUntilChanged())\n            .subscribe(() => {\n                this.setFieldsStateAndValidators();\n            });\n        this.setControlsWidth();\n    }\n\n    // Override\n    getDefaultOperator(): IPepSmartFilterOperator {\n        return PepSmartFilterOperators.Equals;\n    }\n\n    // Override\n    getFilterValue(): IPepSmartFilterDataValue {\n        const filterValue = {\n            first: this.firstControl.value,\n        };\n\n        if (this.operator === PepSmartFilterOperators.NumberRange) {\n            filterValue['second'] = this.secondControl.value;\n        }\n\n        return filterValue;\n    }\n\n    // Override\n    initFilter() {\n        setTimeout(() => {\n            if (this.emitOnChange) {\n                this.applyFilter();\n            }\n        }, 0);\n    }\n\n    // Override\n    loadOperatorsOptions() {\n        this.chooseTypeOptions = this.operators.map((operator) => {\n            return {\n                key: operator.id,\n                value: this.translate.instant(\n                    `${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`\n                ),\n            };\n        });\n    }\n\n    // Override\n    setFieldsStateAndValidators(): void {\n        if (this.operator === PepSmartFilterOperators.NumberRange) {\n            const firstValidators = [Validators.required];\n            if (this.secondControl.value) {\n                firstValidators.push(this.validator.isLessThan(this.secondControl));\n            }\n            this.firstControl.setValidators(firstValidators);\n            this.firstControl.updateValueAndValidity();\n\n            this.secondControl.enable();\n            const secondValidators = [Validators.required];\n            if (this.firstControl.value) {\n                secondValidators.push(this.validator.isGreaterThan(this.firstControl));\n            }\n            this.secondControl.setValidators(secondValidators);\n            this.secondControl.updateValueAndValidity();\n        } else {\n            super.setFieldsStateAndValidators();\n        }\n    }\n\n    setControlsWidth() {\n        if (this.operator === PepSmartFilterOperators.NumberRange) {\n            this.operatorWidth = '30%';\n            this.fieldsWidth = '70%';\n        } else {\n            this.operatorWidth = '38%';\n            this.fieldsWidth = '62%';\n        }\n    }\n\n    onOperatorChanged(value: string) {\n        const operator = Object.values(this.operators).find(\n            (operator) => operator.id === value\n        );\n        this.operator = operator;\n        if (this._parentForm) {\n            this.updateParentForm();\n        }\n        this.setControlsWidth();\n        setTimeout(() => {\n            if (this.emitOnChange) {\n                this.applyFilter();\n            }\n        }, 0);\n    }\n\n    onVariableChanged(value: any) {\n        this.firstControl.setValue(value);\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n    onValueChanged() {\n        // this.firstControl.setValue(value);\n        console.log(`onValueChanged ${this.firstControl.value}`);\n        if (this.emitOnChange) {\n            this.applyFilter();\n        }\n    }\n\n}\n","<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\n    <ng-container>\n        <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\n            [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n            [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\n        </pep-select>\n    </ng-container>\n    <ng-container *ngIf=\"operator === PepSmartFilterOperators.NumberRange\">\n        <div fxLayout=\"row\" fxLayout.xs=\"column\" [fxLayoutGap]=\"inline ? '.5rem' : '1rem'\"\n            [fxFlex]=\"inline ? fieldsWidth : null\">\n            <!-- Min number -->\n            <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.MIN' | translate\"\n                [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\" fxFlex=\"50%\"\n                [value]=\"firstControl?.value || ''\"\n                [maxValue]=\"secondControl?.value || ''\" (valueChange)=\"onValueChanged()\">\n            </pep-textbox>\n            <!-- Max number -->\n            <pep-textbox [form]=\"form\" [key]=\"secondControlKey\" [label]=\"'SMART_FILTERS.MAX' | translate\"\n                [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\" fxFlex=\"50%\"\n                [value]=\"secondControl?.value || ''\"\n                [minValue]=\"firstControl?.value || ''\" (valueChange)=\"onValueChanged()\">\n            </pep-textbox>\n        </div>\n    </ng-container>\n    <ng-container *ngIf=\"operator === PepSmartFilterVariableOperators.LessThanVariable || \n        operator === PepSmartFilterVariableOperators.GreaterThanVariable || \n        operator === PepSmartFilterVariableOperators.EqualsToVariable\">\n        <pep-select [fxFlex]=\"inline ? fieldsWidth : null\" [key]=\"firstControlKey\" [value]=\"firstControl?.value || ''\"\n            [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\n            [options]=\"variableFieldOptions\" (valueChange)=\"onVariableChanged($event)\">\n        </pep-select>\n    </ng-container>\n    <ng-container *ngIf=\"operator !== PepSmartFilterOperators.NumberRange && operator !== PepSmartFilterVariableOperators.LessThanVariable &&\n        operator !== PepSmartFilterVariableOperators.GreaterThanVariable && \n        operator !== PepSmartFilterVariableOperators.EqualsToVariable\">\n        <div [fxFlex]=\"inline ? fieldsWidth : null\">\n            <!-- Amount -->\n            <pep-textbox [form]=\"form\" [key]=\"firstControlKey\" [label]=\"'SMART_FILTERS.AMOUNT' | translate\"\n                [renderError]=\"false\" [renderTitle]=\"renderTitle\" [type]=\"field.type\"\n                [value]=\"firstControl?.value || ''\" \n                (valueChange)=\"onValueChanged()\">\n            </pep-textbox>\n        </div>\n    </ng-container>\n</div>","import {\n    Component,\n    Input,\n    ChangeDetectionStrategy,\n    Output,\n    EventEmitter,\n    ElementRef,\n} from '@angular/core';\nimport {\n    IPepSmartFilterField,\n    PepSmartFilterBaseField,\n} from './common/model/field';\nimport { PepLayoutService } from '@pepperi-addons/ngx-lib';\nimport { IPepSmartFilterData } from './common/model/filter';\n\n@Component({\n    selector: 'pep-smart-filters',\n    templateUrl: './smart-filters.component.html',\n    styleUrls: ['./smart-filters.component.scss', './smart-filters.component.theme.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepSmartFiltersComponent {\n\n    @Input() title = '';\n\n    filtersDataMap: Map<string, IPepSmartFilterData> = new Map<\n        string,\n        IPepSmartFilterData\n    >();\n\n    private _filters: IPepSmartFilterData[] = [];\n    @Input()\n    set filters(value: IPepSmartFilterData[]) {\n        this._filters = value;\n        this.setupFilters(value);\n    }\n    get filters(): IPepSmartFilterData[] {\n        this._filters = [...this.filtersDataMap.keys()]\n            // .filter((key) => this.filtersDataMap.get(key) !== null)\n            .map((key) => {\n                if (key) {\n                    return this.filtersDataMap.get(key);\n                }\n            });\n\n        return this._filters;\n    }\n\n    private _fields: Array<IPepSmartFilterField> = [];\n    @Input()\n    set fields(value: Array<IPepSmartFilterField>) {\n        this._fields = value;\n    }\n    get fields(): Array<IPepSmartFilterField> {\n        return this._fields;\n    }\n\n    private _useAsWebComponent = false;\n    @Input()\n    set useAsWebComponent(value: boolean) {\n        if (value) {\n            this.exportFunctionsOnHostElement();\n        }\n    }\n    get useAsWebComponent(): boolean {\n        return this._useAsWebComponent;\n    }\n\n    // @Output()\n    // filtersClear: EventEmitter<void> = new EventEmitter<void>();\n    @Output()\n    filtersChange: EventEmitter<IPepSmartFilterData[]> = new EventEmitter<\n        IPepSmartFilterData[]\n    >();\n\n    @Output()\n    fieldToggleChange: EventEmitter<IPepSmartFilterField> = new EventEmitter<IPepSmartFilterField>();\n\n    expansionPanelHeaderHeight = '*';\n\n    constructor(\n        private hostElement: ElementRef,\n        public layoutService: PepLayoutService\n    ) { }\n\n    private exportFunctionsOnHostElement() {\n        // This is for web component usage for use those functions.\n        this.hostElement.nativeElement.clearFilters = this.clearFilters.bind(\n            this\n        );\n        this.hostElement.nativeElement.clearFilter = this.clearFilter.bind(\n            this\n        );\n        this.hostElement.nativeElement.toggleField = this.toggleField.bind(\n            this\n        );\n    }\n\n    private setupFilters(value: IPepSmartFilterData[]) {\n        this.filtersDataMap.clear();\n        if (value) {\n            value.forEach((filter) => {\n                // Validate before add the filter into the map.\n                let currentField = null;\n\n                if (this.fields && this.fields.length > 0) {\n                    currentField = this.fields.find(\n                        (field) => field.id === filter.fieldId\n                    ) as PepSmartFilterBaseField;\n                }\n\n                if (currentField) {\n                    // Only if the operator is from the same type\n                    if (\n                        filter.operator.componentType.includes(\n                            currentField.componentType\n                        )\n                    ) {\n                        let isOperatorUnitValid = true;\n                        if (filter.operatorUnit) {\n                            // Only if the operator unit is not from the same type\n                            if (\n                                !filter.operatorUnit.componentType.includes(\n                                    currentField.componentType\n                                )\n                            ) {\n                                isOperatorUnitValid = false;\n                            }\n                        }\n\n                        // Add the filter.\n                        if (isOperatorUnitValid) {\n                            this.filtersDataMap.set(filter.fieldId, filter);\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n    private raiseFiltersChange(): void {\n        this.filtersChange.emit(this.filters);\n    }\n\n    toggleField(index: number, isOpen: boolean): void {\n        this.fields[index].isOpen = isOpen;\n        this.fieldToggleChange.emit(this.fields[index]);\n    }\n\n    clearFilters() {\n        this.filtersDataMap.clear();\n    }\n\n    clearFilter(fieldId: string) {\n        this.filtersDataMap.delete(fieldId);\n    }\n\n    // Clear all the filters and raise event that filters has change.\n    onFiltersClear() {\n        this.clearFilters();\n        this.raiseFiltersChange();\n    }\n\n    // Clear the filter and raise event that filters has change.\n    onFilterClear(field: IPepSmartFilterField) {\n        this.clearFilter(field.id);\n        this.raiseFiltersChange();\n    }\n\n    // Set the filter and raise event that filters has change.\n    onFilterChange(\n        field: IPepSmartFilterField,\n        filterData: IPepSmartFilterData\n    ) {\n        this.clearFilter(field.id);\n        this.filtersDataMap.set(field.id, filterData);\n        this.raiseFiltersChange();\n    }\n}\n","<div class=\"smart-filters-container\" dir=\"{{ layoutService.isRtl() ? 'rtl' : 'ltr' }}\">\n    <div *ngIf=\"fields?.length > 0\" class=\"title\">\n        <span class=\"body-md bold\">{{ title?.length > 0 ? title : (\"SMART_FILTERS.TITLE\" | translate)}}</span>\n        <mat-chip *ngIf=\"filtersDataMap.size > 0\" [selectable]=\"false\" [removable]=\"true\" (click)=\"onFiltersClear()\"\n            class=\"clear-filter pep-button chip xs weak\">\n            <span class=\"body-xs ellipsis \">\n                {{ \"ACTIONS.CLEAR\" | translate}}\n            </span>\n        </mat-chip>\n    </div>\n\n    <mat-accordion [displayMode]=\"'flat'\" [multi]=\"true\" class=\"pep-accordion2\">\n        <mat-expansion-panel *ngFor=\"let field of fields; let i = index\" hideToggle=\"true\" [expanded]=\"field.isOpen\"\n            (opened)=\"toggleField(i, true)\" (closed)=\"toggleField(i, false)\">\n            <mat-expansion-panel-header [collapsedHeight]=\"expansionPanelHeaderHeight\"\n                [expandedHeight]=\"expansionPanelHeaderHeight\">\n                <mat-panel-title class=\"pep-spacing-element-negative\">\n                    <div class=\"smart-filter-title-container\">\n                        <mat-icon class=\"pep-spacing-element\">\n                            <pep-icon [name]=\"field.isOpen ? 'number_minus' : 'number_plus'\"></pep-icon>\n                        </mat-icon>\n                        <span class=\"body-sm ellipsis\" [title]=\"field.name\">\n                            {{ field.name }}\n                        </span>\n                        <mat-chip *ngIf=\"filtersDataMap.get(field.id)\" [selectable]=\"false\" [removable]=\"true\"\n                            (click)=\"onFilterClear(field)\" class=\"clear-filter pep-button chip xs weak\">\n                            <span *ngIf=\"field.componentType === 'multi-select'\" class=\"body-xs pep-spacing-element\">\n                                {{ filtersDataMap.get(field.id).value?.first?.length }}\n                                <!-- {{ field.componentType === 'multi-select' ?\n                                filtersDataMap.get(field.id).value?.first?.length : 1 }} -->\n                            </span>\n                            <mat-icon>\n                                <pep-icon name=\"system_close\"></pep-icon>\n                            </mat-icon>\n                        </mat-chip>\n                    </div>\n                </mat-panel-title>\n            </mat-expansion-panel-header>\n            <div class=\"expansion-content smart-filter-content\">\n                <ng-container [ngSwitch]=\"field.componentType\">\n                    <ng-container *ngSwitchCase=\"'boolean'\">\n                        <pep-boolean-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n                            (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n                        </pep-boolean-filter>\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'date'\">\n                        <pep-date-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n                            (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n                        </pep-date-filter>\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'multi-select'\">\n                        <pep-multi-select-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n                            (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n                        </pep-multi-select-filter>\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'number'\">\n                        <pep-number-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n                            (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n                        </pep-number-filter>\n                    </ng-container>\n                    <ng-container *ngSwitchCase=\"'text'\">\n                        <pep-text-filter [field]=\"field\" [filter]=\"filtersDataMap.get(field.id)\"\n                            (filterChange)=\"onFilterChange(field, $event)\" (filterClear)=\"onFilterClear(field)\">\n                        </pep-text-filter>\n                    </ng-container>\n                    <!-- <div *ngSwitchDefault>\n                    </div> -->\n                </ng-container>\n            </div>\n        </mat-expansion-panel>\n    </mat-accordion>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { VirtualScrollerModule } from 'ngx-virtual-scroller';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepDateModule } from '@pepperi-addons/ngx-lib/date';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepSearchModule } from '@pepperi-addons/ngx-lib/search';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport {\n    PepIconModule,\n    PepIconRegistry,\n    pepIconNumberMinus,\n    pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\n\n// import { BaseFilterComponent } from './common/model/base-filter-component';\nimport { PepSmartFiltersComponent } from './smart-filters.component';\nimport { PepFilterActionsComponent } from './common/filter-actions.component';\nimport { PepTextFilterComponent } from './text-filter/text-filter.component';\nimport { PepBooleanFilterComponent } from './boolean-filter/boolean-filter.component';\nimport { PepDateFilterComponent } from './date-filter/date-filter.component';\nimport { PepMultiSelectFilterComponent } from './multi-select-filter/multi-select-filter.component';\nimport { PepNumberFilterComponent } from './number-filter/number-filter.component';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        FlexLayoutModule,\n        // Material modules\n        MatCommonModule,\n        MatCheckboxModule,\n        MatChipsModule,\n        MatExpansionModule,\n        MatIconModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatRadioModule,\n        // External modules\n        VirtualScrollerModule,\n        // ngx-lib modules\n        PepNgxLibModule,\n        PepCheckboxModule,\n        PepDateModule,\n        PepSelectModule,\n        PepTextboxModule,\n        PepSearchModule,\n        PepIconModule,\n        PepButtonModule,\n        PepGroupButtonsModule\n    ],\n    exports: [\n        PepSmartFiltersComponent,\n        PepTextFilterComponent,\n        PepBooleanFilterComponent,\n        PepDateFilterComponent,\n        PepMultiSelectFilterComponent,\n        PepNumberFilterComponent\n    ],\n    declarations: [\n        // BaseFilterComponent,\n        PepSmartFiltersComponent,\n        PepFilterActionsComponent,\n        PepTextFilterComponent,\n        PepBooleanFilterComponent,\n        PepDateFilterComponent,\n        PepMultiSelectFilterComponent,\n        PepNumberFilterComponent\n    ],\n    providers: [\n        FormBuilder\n    ]\n})\nexport class PepSmartFiltersModule {\n    constructor(private pepIconRegistry: PepIconRegistry) {\n        this.pepIconRegistry.registerIcons([\n            pepIconNumberMinus,\n            pepIconNumberPlus,\n        ]);\n    }\n}\n","import {\n    IPepSmartFilterOperator,\n    IPepSmartFilterOperatorUnit,\n} from './operator';\nimport {\n    PepSmartFilterComponentType,\n    PepSmartFilterType,\n    PepSmartFilterOperatorType,\n    PepSmartFilterOperatorUnitType,\n} from './type';\n\nexport interface IPepSmartFilterFieldOption {\n    value: string;\n    count?: number;\n}\n\nexport interface IPepSmartFilterField {\n    id: string;\n    name: string;\n    isOpen?: boolean;\n    options?: IPepSmartFilterFieldOption[];\n    operators?: PepSmartFilterOperatorType[];\n    operatorUnits?: PepSmartFilterOperatorUnitType[];\n}\n\n// Base field\n// ------------------------------\nexport abstract class PepSmartFilterBaseField implements IPepSmartFilterField {\n    id: string;\n    name: string;\n    isOpen?: boolean;\n    options?: IPepSmartFilterFieldOption[];\n    operators?: PepSmartFilterOperatorType[];\n    operatorUnits?: PepSmartFilterOperatorUnitType[];\n\n    protected _componentType: PepSmartFilterComponentType;\n    get componentType(): PepSmartFilterComponentType {\n        return this._componentType;\n    }\n\n    private _type: PepSmartFilterType;\n    get type(): PepSmartFilterType {\n        return this._type;\n    }\n\n    constructor(field: IPepSmartFilterField) {\n        this.id = field.id;\n        this.name = field.name;\n        this.isOpen = field.isOpen;\n        this.options = field.options;\n        this.operators = field.operators;\n        this.operatorUnits = field.operatorUnits;\n\n        this._type = this.getType();\n    }\n\n    protected abstract getType(): PepSmartFilterType;\n}\n// Text field\n// ------------------------------\nexport class PepSmartFilterTextField extends PepSmartFilterBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n        this._componentType = 'text';\n    }\n\n    getType(): PepSmartFilterType {\n        return 'text';\n    }\n}\n\n\n// Boolean field\n// ------------------------------\nexport class PepSmartFilterBooleanField extends PepSmartFilterBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n        this._componentType = 'boolean';\n    }\n\n    getType(): PepSmartFilterType {\n        return 'boolean';\n    }\n}\n\n// Date fields\n// ------------------------------\nexport abstract class PepSmartFilterDateBaseField extends PepSmartFilterBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n        this._componentType = 'date';\n    }\n}\nexport class PepSmartFilterDateField extends PepSmartFilterDateBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n    }\n\n    getType(): PepSmartFilterType {\n        return 'date';\n    }\n}\nexport class PepSmartFilterDateTimeField extends PepSmartFilterDateBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n    }\n\n    getType(): PepSmartFilterType {\n        return 'date-time';\n    }\n}\n\n// Multi select field\n// ------------------------------\nexport class PepSmartFilterMultiSelectField extends PepSmartFilterBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n        this._componentType = 'multi-select';\n    }\n\n    getType(): PepSmartFilterType {\n        return 'multi-select';\n    }\n}\n\n// Number fields\n// ------------------------------\nexport abstract class PepSmartFilterNumberBaseField extends PepSmartFilterBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n        this._componentType = 'number';\n    }\n}\nexport class PepSmartFilterIntField extends PepSmartFilterNumberBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n    }\n\n    getType(): PepSmartFilterType {\n        return 'int';\n    }\n}\nexport class PepSmartFilterRealField extends PepSmartFilterNumberBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n    }\n\n    getType(): PepSmartFilterType {\n        return 'real';\n    }\n}\nexport class PepSmartFilterCurrencyField extends PepSmartFilterNumberBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n    }\n\n    getType(): PepSmartFilterType {\n        return 'currency';\n    }\n}\nexport class PepSmartFilterPercentageField extends PepSmartFilterNumberBaseField {\n    constructor(field: IPepSmartFilterField) {\n        super(field);\n    }\n\n    getType(): PepSmartFilterType {\n        return 'percentage';\n    }\n}\n","import {\n    IPepSmartFilterField,\n    PepSmartFilterBaseField,\n    PepSmartFilterTextField,\n    PepSmartFilterBooleanField,\n    PepSmartFilterDateField,\n    PepSmartFilterMultiSelectField,\n    PepSmartFilterIntField,\n    PepSmartFilterDateTimeField,\n    PepSmartFilterPercentageField,\n    PepSmartFilterCurrencyField,\n    PepSmartFilterRealField,\n} from './field';\nimport { IPepSmartFilterData } from './filter';\nimport { IPepSmartFilterOperator, IPepSmartFilterOperatorUnit } from './operator';\nimport { PepSmartFilterType } from './type';\n\nfunction createTextSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterTextField(data);\n}\n\nfunction createBooleanSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterBooleanField(data);\n}\n\nfunction createDateSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterDateField(data);\n}\n\nfunction createDateTimeSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterDateTimeField(data);\n}\n\nfunction createMultiSelectSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterMultiSelectField(data);\n}\n\nfunction createIntSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterIntField(data);\n}\n\nfunction createRealSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterRealField(data);\n}\n\nfunction createCurrencySmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterCurrencyField(data);\n}\n\nfunction createPercentageSmartFilterField(data: IPepSmartFilterField) {\n    return new PepSmartFilterPercentageField(data);\n}\n\nexport function createSmartFilterField(\n    data: IPepSmartFilterField,\n    type: PepSmartFilterType\n): PepSmartFilterBaseField {\n    let field: PepSmartFilterBaseField;\n\n    switch (type) {\n        case 'text':\n            field = createTextSmartFilterField(data);\n            break;\n        case 'boolean':\n            field = createBooleanSmartFilterField(data);\n            break;\n        case 'date':\n            field = createDateSmartFilterField(data);\n            break;\n        case 'date-time':\n            field = createDateTimeSmartFilterField(data);\n            break;\n        case 'multi-select':\n            field = createMultiSelectSmartFilterField(data);\n            break;\n        case 'int':\n            field = createIntSmartFilterField(data);\n            break;\n        case 'real':\n            field = createRealSmartFilterField(data);\n            break;\n        case 'currency':\n            field = createCurrencySmartFilterField(data);\n            break;\n        case 'percentage':\n            field = createPercentageSmartFilterField(data);\n            break;\n        default:\n            field = createMultiSelectSmartFilterField(data);\n            break;\n    }\n\n    return field;\n}\n\nexport function createSmartFilter(\n    fieldId: string,\n    operator: IPepSmartFilterOperator,\n    first: any,\n    second?: any,\n    operatorUnit?: IPepSmartFilterOperatorUnit\n): IPepSmartFilterData {\n    return {\n        fieldId: fieldId,\n        operator: operator,\n        operatorUnit: operatorUnit,\n        value: {\n            first: first,\n            second: second,\n        },\n    };\n}","/*\n * Public API Surface of ngx-lib/smart-filters\n */\nexport * from './smart-filters.module';\nexport * from './smart-filters.component';\nexport * from './common/model/base-filter-component';\nexport * from './common/filter-actions.component';\nexport * from './boolean-filter/boolean-filter.component';\nexport * from './date-filter/date-filter.component';\nexport * from './multi-select-filter/multi-select-filter.component';\nexport * from './number-filter/number-filter.component';\nexport * from './text-filter/text-filter.component';\n\n// Model\nexport * from './common/model/creator';\nexport * from './common/model/field';\nexport * from './common/model/filter';\nexport * from './common/model/operator';\nexport * from './common/model/type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i6","i4","i5","i7","i8","i10","i8.PepTextFilterComponent","i9.PepBooleanFilterComponent","i10.PepDateFilterComponent","i11.PepMultiSelectFilterComponent","i12.PepNumberFilterComponent","i13"],"mappings":"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"}