@pepperi-addons/ngx-lib 0.2.55 → 0.2.58-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/attachment/attachment.component.d.ts +1 -0
- package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +3 -0
- package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-color.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-date.umd.js +4 -1
- package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-form.umd.js +20 -15
- package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-image.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-list.umd.js +4 -2
- package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-select.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js +8 -0
- package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1432 -173
- package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +6 -1
- package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +4 -2
- package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
- package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +1 -1
- package/bundles/pepperi-addons-ngx-lib.umd.js +4 -2
- package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
- package/color/color.component.d.ts +1 -0
- package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
- package/core/customization/customization.service.d.ts +1 -0
- package/esm2015/attachment/attachment.component.js +7 -2
- package/esm2015/checkbox/checkbox.component.js +4 -1
- package/esm2015/color/color.component.js +7 -2
- package/esm2015/core/common/services/translate.service.js +1 -1
- package/esm2015/core/customization/customization.service.js +4 -2
- package/esm2015/date/date.component.js +4 -1
- package/esm2015/form/form.component.js +2 -1
- package/esm2015/form/internal-button.component.js +20 -17
- package/esm2015/form/internal-carusel.component.js +2 -1
- package/esm2015/image/image.component.js +7 -2
- package/esm2015/image/image.service.js +1 -1
- package/esm2015/images-filmstrip/images-filmstrip.component.js +7 -2
- package/esm2015/list/list-total.component.js +5 -3
- package/esm2015/quantity-selector/quantity-selector.component.js +7 -2
- package/esm2015/rich-html-textarea/rich-html-textarea.component.js +7 -2
- package/esm2015/select/select.component.js +7 -2
- package/esm2015/separator/separator.component.js +9 -1
- package/esm2015/signature/signature.component.js +7 -2
- package/esm2015/slider/slider.component.js +1 -1
- package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +12 -2
- package/esm2015/smart-filters/common/model/base-filter-component.js +40 -10
- package/esm2015/smart-filters/common/model/creator.js +8 -2
- package/esm2015/smart-filters/common/model/field.js +12 -1
- package/esm2015/smart-filters/common/model/operator.js +8 -8
- package/esm2015/smart-filters/common/model/type.js +1 -1
- package/esm2015/smart-filters/date-filter/date-filter.component.js +45 -2
- package/esm2015/smart-filters/filter-builder/common/model/filter.js +2 -0
- package/esm2015/smart-filters/filter-builder/common/model/legacy.js +2 -0
- package/esm2015/smart-filters/filter-builder/common/model/operator-unit.js +42 -0
- package/esm2015/smart-filters/filter-builder/common/model/operator.js +207 -0
- package/esm2015/smart-filters/filter-builder/common/model/type-map.js +27 -0
- package/esm2015/smart-filters/filter-builder/common/model/type.js +6 -0
- package/esm2015/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.js +18 -0
- package/esm2015/smart-filters/filter-builder/common/services/output-filter.service.js +132 -0
- package/esm2015/smart-filters/filter-builder/common/services/type-convertor.service.js +44 -0
- package/esm2015/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.js +106 -0
- package/esm2015/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.js +50 -0
- package/esm2015/smart-filters/filter-builder/filter-builder.component.js +65 -0
- package/esm2015/smart-filters/filter-builder/filter-builder.service.js +261 -0
- package/esm2015/smart-filters/index.js +5 -0
- package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +53 -14
- package/esm2015/smart-filters/number-filter/number-filter.component.js +25 -2
- package/esm2015/smart-filters/pepperi-addons-ngx-lib-smart-filters.js +8 -1
- package/esm2015/smart-filters/public-api.js +2 -1
- package/esm2015/smart-filters/smart-filters.module.js +14 -2
- package/esm2015/smart-filters/text-filter/text-filter.component.js +79 -0
- package/esm2015/textarea/textarea.component.js +7 -2
- package/esm2015/textbox/textbox.component.js +5 -3
- package/esm2015/top-bar/top-bar.component.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +3 -0
- package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-date.js +3 -0
- package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-form.js +20 -15
- package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.js +4 -2
- package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-separator.js +8 -0
- package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1293 -128
- package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textarea.js +6 -1
- package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js +4 -2
- package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.js +3 -1
- package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
- package/form/internal-button.component.d.ts +0 -1
- package/image/image.component.d.ts +1 -0
- package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
- package/images-filmstrip/images-filmstrip.component.d.ts +1 -0
- package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
- package/list/list-total.component.d.ts +2 -0
- package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
- package/package.json +4 -4
- package/pepperi-addons-ngx-lib.metadata.json +1 -1
- package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
- package/quantity-selector/quantity-selector.component.d.ts +1 -0
- package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
- package/rich-html-textarea/rich-html-textarea.component.d.ts +1 -0
- package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
- package/select/select.component.d.ts +1 -0
- package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
- package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
- package/signature/signature.component.d.ts +1 -0
- package/smart-filters/boolean-filter/boolean-filter.component.d.ts +5 -1
- package/smart-filters/common/model/base-filter-component.d.ts +10 -1
- package/smart-filters/common/model/field.d.ts +4 -0
- package/smart-filters/common/model/operator.d.ts +1 -0
- package/smart-filters/common/model/type.d.ts +2 -2
- package/smart-filters/date-filter/date-filter.component.d.ts +8 -1
- package/smart-filters/filter-builder/common/model/filter.d.ts +6 -0
- package/smart-filters/filter-builder/common/model/legacy.d.ts +23 -0
- package/smart-filters/filter-builder/common/model/operator-unit.d.ts +13 -0
- package/smart-filters/filter-builder/common/model/operator.d.ts +21 -0
- package/smart-filters/filter-builder/common/model/type-map.d.ts +12 -0
- package/smart-filters/filter-builder/common/model/type.d.ts +4 -0
- package/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.d.ts +5 -0
- package/smart-filters/filter-builder/common/services/output-filter.service.d.ts +52 -0
- package/smart-filters/filter-builder/common/services/type-convertor.service.d.ts +10 -0
- package/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.d.ts +32 -0
- package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.d.ts +22 -0
- package/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.theme.scss +6 -0
- package/smart-filters/filter-builder/filter-builder.component.d.ts +22 -0
- package/smart-filters/filter-builder/filter-builder.service.d.ts +90 -0
- package/smart-filters/index.d.ts +1 -0
- package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +6 -0
- package/smart-filters/number-filter/number-filter.component.d.ts +5 -0
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +7 -0
- package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
- package/smart-filters/public-api.d.ts +1 -0
- package/smart-filters/text-filter/text-filter.component.d.ts +17 -0
- package/src/assets/i18n/en.ngx-lib.json +2 -1
- package/src/core/style/components/general.scss +4 -2
- package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
- package/textarea/textarea.component.d.ts +1 -0
- package/theming.scss +4 -0
- package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pepperi-addons-ngx-lib-smart-filters.js","sources":["../../../projects/ngx-lib/smart-filters/smart-filters.component.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.ts","../../../projects/ngx-lib/smart-filters/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/common/model/base-filter-component.ts","../../../projects/ngx-lib/smart-filters/boolean-filter/boolean-filter.component.ts","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.ts","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.ts","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.ts","../../../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 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'],\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","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","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\n// const Contains: Operator = {\n// id: 'contains',\n// name: 'Contains',\n// short: 'Contains',\n// type: ['text'],\n// };\n\n// const BeginsWith: Operator = {\n// id: 'beginsWith',\n// name: 'Begins With',\n// short: 'Begins With',\n// type: ['text'],\n// };\n\n// const EndsWith: Operator = {\n// id: 'endsWith',\n// name: 'Ends With',\n// short: 'End With',\n// type: ['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\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 {\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 NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { PepValidatorService } from '@pepperi-addons/ngx-lib';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\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@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 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\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 === undefined) {\n this._operatorUnit = undefined;\n } else {\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 }\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 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\n this.form = this.builder.group(formValue);\n // this.form[this.firstControlKey] = [];\n // this.form[this.secondControlKey] = [];\n\n this.setupOperators();\n\n this.createActionsComponent();\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 // 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 // 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 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 this.actionsContainerRef.destroy();\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, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\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 {\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 // setFieldsStateAndValidators(): void {\n // this.secondControl.disable();\n // }\n}\n","import { Component } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\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 {\n PepSmartFilterOperators = PepSmartFilterOperators;\n chooseTimeOptions: Array<IPepOption> = [];\n chooseTimeUnitOptions: Array<IPepOption> = [];\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 === PepSmartFilterOperators.NotInTheLast ||\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 filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\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 (this.operator === PepSmartFilterOperators.DateRange) {\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 === PepSmartFilterOperators.NotInTheLast ||\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 onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).find(\n (operator) => operator.id === value\n );\n\n this.operator = operator;\n this.operatorUnit = this.getDefaultOperatorUnit();\n }\n\n onTimeUnitChanged(value: string) {\n const operatorUnit = Object.values(PepSmartFilterOperatorUnits).find(\n (operatorUnit) => operatorUnit.id === value\n );\n this.operatorUnit = operatorUnit;\n }\n}\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} from '../common/model/operator';\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 options: PepMultiSelectFilterOption[] = [];\n filteredOptions$: Observable<any>;\n searchControl = new FormControl();\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.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 ngAfterViewInit(): void {\n // Calc for the first time.\n this.calcOptionsHeight(this.options.length);\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 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 // 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","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { 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 chooseTypeOptions: Array<IPepOption> = [];\n\n ngOnInit() {\n this.firstControl.valueChanges\n .pipe(this.getDestroyer(), distinctUntilChanged())\n .subscribe(() => {\n this.setFieldsStateAndValidators();\n });\n\n this.secondControl.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\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 } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).find(\n (operator) => operator.id === value\n );\n this.operator = operator;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { 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 {\n PepIconModule,\n PepIconRegistry,\n pepIconNumberMinus,\n pepIconNumberPlus,\n} from '@pepperi-addons/ngx-lib/icon';\n\n// import { BaseFilterComponent } from './common/model/base-filter-component';\nimport { PepSmartFiltersComponent } from './smart-filters.component';\nimport { PepFilterActionsComponent } from './common/filter-actions.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@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 ],\n exports: [PepSmartFiltersComponent],\n declarations: [\n // BaseFilterComponent,\n PepSmartFiltersComponent,\n PepFilterActionsComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent,\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\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 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 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 '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\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';\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":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pepperi-addons-ngx-lib-smart-filters.js","sources":["../../../projects/ngx-lib/smart-filters/smart-filters.component.ts","../../../projects/ngx-lib/smart-filters/common/filter-actions.component.ts","../../../projects/ngx-lib/smart-filters/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/filter-builder/common/services/type-convertor.service.ts","../../../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/boolean-filter/boolean-filter.component.ts","../../../projects/ngx-lib/smart-filters/date-filter/date-filter.component.ts","../../../projects/ngx-lib/smart-filters/multi-select-filter/multi-select-filter.component.ts","../../../projects/ngx-lib/smart-filters/number-filter/number-filter.component.ts","../../../projects/ngx-lib/smart-filters/common/model/field.ts","../../../projects/ngx-lib/smart-filters/common/model/creator.ts","../../../projects/ngx-lib/smart-filters/filter-builder/common/model/operator.ts","../../../projects/ngx-lib/smart-filters/filter-builder/common/model/type.ts","../../../projects/ngx-lib/smart-filters/filter-builder/filter-builder-section/filter-builder-section.component.ts","../../../projects/ngx-lib/smart-filters/filter-builder/filter-builder-item/filter-builder-item.component.ts","../../../projects/ngx-lib/smart-filters/filter-builder/common/model/type-map.ts","../../../projects/ngx-lib/smart-filters/filter-builder/common/model/operator-unit.ts","../../../projects/ngx-lib/smart-filters/filter-builder/common/services/output-filter.service.ts","../../../projects/ngx-lib/smart-filters/filter-builder/filter-builder.service.ts","../../../projects/ngx-lib/smart-filters/filter-builder/filter-builder.component.ts","../../../projects/ngx-lib/smart-filters/filter-builder/common/pipes/filter-item-counter.pipe.ts","../../../projects/ngx-lib/smart-filters/smart-filters.module.ts","../../../projects/ngx-lib/smart-filters/public-api.ts","../../../projects/ngx-lib/smart-filters/pepperi-addons-ngx-lib-smart-filters.ts"],"sourcesContent":["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'],\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","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","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\n// const BeginsWith: Operator = {\n// id: 'beginsWith',\n// name: 'Begins With',\n// short: 'Begins With',\n// type: ['text'],\n// };\n\n// const EndsWith: Operator = {\n// id: 'endsWith',\n// name: 'Ends With',\n// short: 'End With',\n// type: ['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\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 { Injectable } from '@angular/core';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PepTypeConvertorService {\n private readonly _operators: IPepOption[] = [];\n private readonly _booleans: IPepOption[] = [];\n\n public get operators(): IPepOption[] {\n return this._operators;\n }\n\n public get booleans(): IPepOption[] {\n return this._booleans;\n }\n\n constructor() {\n this.initOperators();\n this.initBooleans();\n }\n\n private initOperators() {\n this._operators.push({\n key: 'AND',\n value: 'And'\n });\n this._operators.push({\n key: 'OR',\n value: 'Or'\n });\n }\n\n private initBooleans() {\n this._booleans.push({\n key: 'True',\n value: 'True'\n });\n this._booleans.push({\n key: 'False',\n value: 'False'\n });\n }\n\n}","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 NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { PepValidatorService } from '@pepperi-addons/ngx-lib';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\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';\nimport { PepTypeConvertorService } from '../../filter-builder/common/services/type-convertor.service';\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 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\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 renderer: Renderer2,\n public typeConvertorService: PepTypeConvertorService\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 // 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 // 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} 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 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 } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).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() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\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\n ngOnInit() {\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 onRadioChanged() {\n\n }\n\n onValueChanged(value) {\n this.firstControl.setValue(value);\n\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n // // Override\n // setFieldsStateAndValidators(): void {\n // this.secondControl.disable();\n // }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n IPepSmartFilterOperatorUnit,\n PepSmartFilterOperators,\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 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 === PepSmartFilterOperators.NotInTheLast ||\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 filterValue['second'] = this.secondControl.value;\n }\n\n return filterValue;\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 (this.operator === PepSmartFilterOperators.DateRange) {\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 === PepSmartFilterOperators.NotInTheLast ||\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(PepSmartFilterOperators).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 if (this.emitOnChange) {\n this.applyFilter();\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 onDateValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\n }\n\n}\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} 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 options: PepMultiSelectFilterOption[] = [];\n filteredOptions$: Observable<any>;\n searchControl = new FormControl();\n //inline props\n selected: string = '';\n inlineOptions: IPepOption[] = [];\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 } 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?.length > 0) {\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 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}\n","import { Component, OnChanges, OnInit } from '@angular/core';\nimport { BaseFilterComponent } from '../common/model/base-filter-component';\nimport {\n IPepSmartFilterOperator,\n PepSmartFilterOperators,\n} from '../common/model/operator';\nimport { IPepSmartFilterDataValue } from '../common/model/filter';\nimport { Validators } from '@angular/forms';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { 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 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 this.secondControl.valueChanges\n .pipe(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 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\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 } else {\n super.setFieldsStateAndValidators();\n }\n }\n\n setControlsWidth() {\n if (this.operator === PepSmartFilterOperators.NumberRange) {\n this.operatorWidth = '30%';\n } else {\n this.operatorWidth = '38%';\n }\n }\n\n onOperatorChanged(value: string) {\n const operator = Object.values(PepSmartFilterOperators).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 this.setControlsWidth();\n }\n\n onValueChanged() {\n if (this.emitOnChange) {\n this.applyFilter();\n }\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}","import { PepSmartFilterOperators, IPepSmartFilterOperator } from '../../../common/model/operator';\nimport { PepSmartFilterType } from '../../../common/model/type';\n\nexport interface IPepFilterBuilderOperator {\n legacy: string, //legacy Operator \n smartFilter: IPepSmartFilterOperator, //smart filter operator \n type: PepSmartFilterType[] | null //smart filter type\n}\n\nconst Equals: IPepFilterBuilderOperator = {\n legacy: 'IsEqual',\n smartFilter: PepSmartFilterOperators.Equals,\n type: ['boolean', 'int', 'text']\n};\n\nconst NotEqual: IPepFilterBuilderOperator = {\n legacy: 'IsNotEqual',\n smartFilter: PepSmartFilterOperators.NotEqual,\n type: null\n};\n\nconst LessThan: IPepFilterBuilderOperator = {\n legacy: '<',\n smartFilter: PepSmartFilterOperators.LessThan,\n type: null\n};\n\nconst GreaterThan: IPepFilterBuilderOperator = {\n legacy: '>',\n smartFilter: PepSmartFilterOperators.GreaterThan,\n type: null\n};\n\n/*\nconst GreaterThanOrEquals: IPepFilterBuilderOperator = {\n legacy: {\n operator: '>=',\n type: 'Integer'\n },\n smartFilter: {\n item: PepSmartFilterOperators.GreaterThanOrEquals,\n type: 'int'\n }\n};\n\nconst LessThanOrEquals: IPepFilterBuilderOperator = {\n legacy: {\n operator: '<=',\n type: 'Integer'\n },\n smartFilter: {\n item: PepSmartFilterOperators.LessThanOrEquals,\n type: 'int',\n type: 'Integer'\n }\n}; */\n\nconst NumberRange: IPepFilterBuilderOperator = {\n legacy: 'Between',\n smartFilter: PepSmartFilterOperators.NumberRange,\n type: ['int']\n};\n\nconst Contains: IPepFilterBuilderOperator = {\n legacy: 'Contains',\n smartFilter: PepSmartFilterOperators.Contains,\n type: null\n};\n\n/*\nconst BeginsWith: IPepFilterBuilderOperator = {\n legacy: {\n operator: 'BeginsWith',\n type: 'String'\n },\n smartFilter: {\n item: PepSmartFilterOperators.BeginsWith,\n type: 'text'\n }\n};\n\nconst EndsWith: IPepFilterBuilderOperator = {\n legacy: {\n operator: 'EndsWith',\n type: 'String'\n },\n smartFilter: {\n item: PepSmartFilterOperators.EndsWith,\n type: 'text'\n }\n};\n\nconst Before: IPepFilterBuilderOperator = {\n legacy: {\n operator: 'Before',\n type: 'Date'\n },\n smartFilter: {\n item: PepSmartFilterOperators.Before,\n type: 'date'\n }\n};\n\nconst After: IPepFilterBuilderOperator = {\n legacy: {\n operator: 'After',\n type: 'Date'\n },\n smartFilter: {\n item: PepSmartFilterOperators.After,\n type: 'date'\n }\n}; */\n\nconst InTheLast: IPepFilterBuilderOperator = {\n legacy: 'InTheLast',\n smartFilter: PepSmartFilterOperators.InTheLast,\n type: null\n};\n\nconst NotInTheLast: IPepFilterBuilderOperator = {\n legacy: 'NotInTheLast',\n smartFilter: PepSmartFilterOperators.NotInTheLast,\n type: null\n};\n\nconst Today: IPepFilterBuilderOperator = {\n legacy: 'Today',\n smartFilter: PepSmartFilterOperators.Today,\n type: null\n};\n\nconst ThisWeek: IPepFilterBuilderOperator = {\n legacy: 'ThisWeek',\n smartFilter: PepSmartFilterOperators.ThisWeek,\n type: null\n};\n\nconst ThisMonth: IPepFilterBuilderOperator = {\n legacy: 'ThisMonth',\n smartFilter: PepSmartFilterOperators.ThisMonth,\n type: null\n};\n\nconst DateRange: IPepFilterBuilderOperator = {\n legacy: 'Between',\n smartFilter: PepSmartFilterOperators.DateRange,\n type: ['date-time']\n};\n\nconst DueIn: IPepFilterBuilderOperator = {\n legacy: 'DueIn',\n smartFilter: PepSmartFilterOperators.DueIn,\n type: null\n};\n\nconst NotDueIn: IPepFilterBuilderOperator = {\n legacy: 'NotDueIn',\n smartFilter: PepSmartFilterOperators.NotDueIn,\n type: null\n};\n\nconst On: IPepFilterBuilderOperator = {\n legacy: 'On',\n smartFilter: PepSmartFilterOperators.On,\n type: null\n};\n\nconst IsEmpty: IPepFilterBuilderOperator = {\n legacy: 'IsEmpty',\n smartFilter: PepSmartFilterOperators.IsEmpty,\n type: null\n};\n\nconst IsNotEmpty: IPepFilterBuilderOperator = {\n legacy: 'IsNotEmpty',\n smartFilter: PepSmartFilterOperators.IsNotEmpty,\n type: null\n};\n\nconst In: IPepFilterBuilderOperator = {\n legacy: 'IsEqual',\n smartFilter: PepSmartFilterOperators.In,\n type: ['multi-select']\n};\n\n\nconst PepFilterBuilderOperators = [\n Equals,\n NotEqual,\n LessThan,\n // LessThanOrEquals,\n GreaterThan,\n // GreaterThanOrEquals,\n NumberRange,\n Contains,\n // BeginsWith,\n // EndsWith,\n // After,\n // Before,\n InTheLast,\n NotInTheLast,\n Today,\n ThisWeek,\n ThisMonth,\n DateRange,\n DueIn,\n NotDueIn,\n On,\n IsEmpty,\n IsNotEmpty,\n In\n]\n\n/**\n * gets a smart filter operator item\n * @param operator legacy operator\n * @param type smart filter's type\n * @returns smart filter operator item\n */\nexport function getSmartBuilderOperator(operator: string, type: PepSmartFilterType): IPepSmartFilterOperator | null {\n const smartFilterOperator = PepFilterBuilderOperators.find(item =>\n item.legacy === operator &&\n (item.type === null || item.type.includes(type))\n );\n return smartFilterOperator ? smartFilterOperator.smartFilter : null;\n}\n\n/**\n * gets a legacy operator value\n * @param operator smart filter operator item\n * @param type smart filter's type\n * @returns legacy operator value\n */\nexport function getLegacyOperator(operator: IPepSmartFilterOperator, type: PepSmartFilterType): string | null {\n const legacyOperator = PepFilterBuilderOperators.find(item =>\n item.smartFilter === operator &&\n (item.type === null || item.type.includes(type))\n );\n return legacyOperator ? legacyOperator.legacy : null;\n}\n","export enum PepOperatorTypes {\n And = 'AND',\n Or = 'OR'\n}\n\n\n\n\n\n\n\n","import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FilterBuilderService } from '../filter-builder.service';\nimport { PepOperatorTypes } from '../common/model/type';\nimport { PepTypeConvertorService } from '../common/services/type-convertor.service';\n\n\n@Component({\n selector: 'pep-filter-builder-section',\n templateUrl: './filter-builder-section.component.html',\n styleUrls: ['./filter-builder-section.component.scss'],\n})\nexport class FilterBuilderSectionComponent {\n @Input() form: FormGroup;\n @Input() depth: number;\n\n @Output()\n remove = new EventEmitter();\n @Output()\n operatorChange = new EventEmitter();\n\n @ViewChild('sectionContainer', { read: ViewContainerRef, static: true }) sectionContainer: ViewContainerRef;\n\n constructor(\n public filterBuilderService: FilterBuilderService,\n public typeConvertorService: PepTypeConvertorService\n ) {\n }\n\n ngOnInit() {\n }\n\n get f() {\n return this.form.controls;\n }\n\n onOperatorChanged(value) {\n this.f.operator.setValue(value);\n this.operatorChange.emit();\n }\n\n onAddRuleClicked() {\n this.filterBuilderService.createItem(null, this.sectionContainer, this.form);\n }\n\n onAddRuleSetClicked() {\n const result = this.filterBuilderService.createSection(PepOperatorTypes.And, this.sectionContainer, this.form, this.depth + 1);\n this.filterBuilderService.createItem(null, result.containerRef, result.parentForm);\n }\n\n onDeleteSectionClicked() {\n this.remove.emit();\n }\n\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Form, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FilterBuilderService } from '../filter-builder.service';\nimport { PepSmartFilterType } from '../../common/model/type';\nimport { PepSmartFilterBaseField, IPepSmartFilterField } from '../../common/model/field';\nimport { IPepSmartFilterData } from '../../common/model/filter';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-filter-builder-item',\n templateUrl: './filter-builder-item.component.html',\n styleUrls: ['./filter-builder-item.component.scss'],\n})\nexport class FilterBuilderItemComponent {\n @Input() formKey: string;\n _fields: Array<any> = [];\n _options: IPepOption[] = [];\n @Input()\n set fields(list: Array<IPepSmartFilterField>) {\n if (list?.length > 0) {\n this._fields = list;\n this._options = list.map(field => {\n return {\n key: field.id,\n value: field.name\n }\n })\n }\n };\n _selectedField: PepSmartFilterBaseField = null;\n @Input()\n set selected(value: any) {\n if (value) {\n this._selectedField = value;\n }\n }\n _filter: IPepSmartFilterData;\n @Input()\n set filter(value: IPepSmartFilterData) {\n if (value) {\n this._filter = value;\n }\n };\n _parentForm: FormGroup;\n @Input()\n set parentForm(value: FormGroup) {\n if (value) {\n this._parentForm = value;\n this.addToParentForm();\n }\n };\n\n @Output()\n filterChange = new EventEmitter();\n @Output()\n remove = new EventEmitter();\n\n\n test: any = {};\n\n _form: FormGroup;\n fieldWidth = 26;\n filterWidth = 67.5;\n binWidth = 6.5;\n\n constructor(private _fb: FormBuilder) {\n this.setupForm();\n }\n\n ngOnInit() {\n\n }\n\n setupForm() {\n this._form = this._fb.group({\n fieldId: this._fb.control(null),\n fieldType: this._fb.control(null),\n operator: this._fb.control(null),\n operatorUnit: this._fb.control(null),\n values: this._fb.group({\n first: this._fb.control(null),\n second: this._fb.control(null)\n }),\n });\n }\n\n addToParentForm() {\n this._parentForm.setControl(this.formKey, this._form);\n }\n\n onFieldChanged(key) {\n let item = this._fields.find(field => field.id === key);\n\n this.setupForm();\n this.addToParentForm();\n\n /**\n * hack due to angular's change detection bug -\n * ERROR Error: There is no FormControl instance attached to form control element with name: [formControlName]\n */\n this._selectedField = null;\n setTimeout(() => {\n this._selectedField = item ? item : null;\n }, 0);\n\n this._filter = null;\n }\n\n onFilterChanged() {\n if (this._form.valid) {\n this.filterChange.emit();\n }\n }\n\n onDeleteItemClicked() {\n this.remove.emit();\n }\n\n\n\n}\n","import { PepSmartFilterType } from '../../../common/model/type';\n\nexport class PepFilterBuilderTypeMap {\n private map: Map<string, PepSmartFilterType>;\n\n constructor() {\n this.loadTypes();\n }\n\n private loadTypes() {\n this.map = new Map<string, PepSmartFilterType>();\n this.map.set('Bool', 'boolean');\n this.map.set('JsonBool', 'boolean');\n this.map.set('Integer', 'int');\n this.map.set('Double', 'int');\n this.map.set('String', 'text');\n this.map.set('Guid', 'text');\n this.map.set('Date', 'date');\n this.map.set('DateTime', 'date-time');\n this.map.set('MultipleStringValues', 'multi-select');\n }\n\n /**\n * Converts legacy field type to smart builder type\n * @param type legacy type\n * @returns smart builder field type\n */\n getSmartBuilderType(key: string): PepSmartFilterType | null {\n let item = this.map.get(key);\n return item ? item : null;\n }\n\n}\n\n","\nimport { IPepSmartFilterOperatorUnit, PepSmartFilterOperatorUnits } from '../../../common/model/operator';\n\ninterface IPepFilterBuilderOperationUnit {\n legacy: string,\n smartFilter: IPepSmartFilterOperatorUnit,\n}\n\nconst Days: IPepFilterBuilderOperationUnit = {\n legacy: 'Days',\n smartFilter: PepSmartFilterOperatorUnits.Days\n};\n\nconst Weeks: IPepFilterBuilderOperationUnit = {\n legacy: 'Weeks',\n smartFilter: PepSmartFilterOperatorUnits.Weeks\n};\n\nconst Months: IPepFilterBuilderOperationUnit = {\n legacy: 'Months',\n smartFilter: PepSmartFilterOperatorUnits.Months\n};\n\nconst Years: IPepFilterBuilderOperationUnit = {\n legacy: 'Years',\n smartFilter: PepSmartFilterOperatorUnits.Years\n};\n\nconst PepFilterBuilderOperationUnit = [\n Days,\n Weeks,\n Months,\n Years,\n];\n\n/**\n * gets a smart filter operation unit item\n * @param operationUnit legacy operation unit\n * @returns smart filter operation unit item\n */\nexport function getSmartBuilderOperationUnit(operationUnit: string): IPepSmartFilterOperatorUnit | null {\n const smartFilterOperationUnit: IPepFilterBuilderOperationUnit = PepFilterBuilderOperationUnit.find(unit => unit.legacy === operationUnit);\n return smartFilterOperationUnit ? smartFilterOperationUnit.smartFilter : null;\n}\n\n/**\n * gets a legacy operation unit value\n * @param operationUnit smart filter operation unit item\n * @returns legacy operation unit value\n */\nexport function getLegacyOperationUnit(operationUnit: IPepSmartFilterOperatorUnit): string | null {\n const legacyOperationUnit: IPepFilterBuilderOperationUnit = PepFilterBuilderOperationUnit.find(unit => unit.smartFilter === operationUnit);\n return legacyOperationUnit ? legacyOperationUnit.legacy : null;\n}\n","import { Injectable } from '@angular/core';\nimport { IPepJSONItem } from '../model/legacy';\nimport { getLegacyOperator } from '../model/operator';\nimport { getLegacyOperationUnit } from '../model/operator-unit';\nimport { PepSmartFilterOperators, IPepSmartFilterOperator } from '../../../common/model/operator';\nimport { IPepSmartFilterField } from 'projects/ngx-lib/smart-filters';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PepOutputFilterService {\n private _json: any;\n private _fields: Array<IPepSmartFilterField>;\n private _firstItem: any;\n private _complexIdCounter: number;\n private _expressionIdCounter: number;\n\n constructor() {\n\n }\n\n /**\n * generates a legacy JSON \n * @param json UI smart filters structure\n * @param fields smart filter field\n * @returns legacy JSON\n */\n generateJson(json: any, fields: Array<IPepSmartFilterField>) {\n this.initProperties();\n this._fields = fields;\n this.treeWalk(json);\n return this._json ? this._json : this._firstItem ? this._firstItem : null;\n }\n\n /**\n * reset properties\n */\n private initProperties() {\n this._json = undefined;\n this._firstItem = undefined;\n this._complexIdCounter = 1;\n this._expressionIdCounter = 1;\n }\n\n /**\n * a recursive function dynamically builds legacy JSON structure\n * @param current UI object represents either a section or filter component\n */\n private treeWalk(current: any) {\n Object.keys(current).forEach(key => {\n if (key.includes('item')) {\n this.createItem({\n ExpressionId: (this._expressionIdCounter++).toString(),\n ApiName: current[key].fieldId,\n Operation: getLegacyOperator(current[key].operator, current[key].fieldType),\n Values: this.getItemValues(current[key])\n } as IPepJSONItem, current.operator);\n } else if (key.includes('section')) {\n this.treeWalk(current[key]);\n }\n });\n }\n\n /**\n * adds a filter to json and wrap it with complex operator\n * @param item expression item\n * @param operator complex operator \n */\n private createItem(item: any, operator: string) {\n if (this._json) {\n this._json = this.createSection(this._json, item, operator);\n } else if (this._firstItem) {\n this._json = this.createSection(this._firstItem, item, operator);\n } else {\n this._firstItem = item;\n }\n\n }\n\n /**\n * creates a legacy complex object\n * @param left LeftNode object\n * @param right RightNode object\n * @param operator AND/OR operator\n * @returns complex object\n */\n private createSection(left: any, right: any, operator: string) {\n return {\n ComplexId: (this._complexIdCounter++).toString(),\n LeftNode: left,\n RightNode: right,\n Operation: operator\n }\n }\n\n /**\n * gets legacy filter values object\n * @param current UI filter object's values\n * @returns an array represents legacy values\n */\n private getItemValues(current: any) {\n let values: any[] = [];\n\n if (current?.values?.first) {\n if (current.operator === PepSmartFilterOperators.In) { //multi select \n values = current.values.first;\n } else if (\n current.operator === PepSmartFilterOperators.InTheLast ||\n current.operator === PepSmartFilterOperators.NotInTheLast ||\n current.operator === PepSmartFilterOperators.DueIn ||\n current.operator === PepSmartFilterOperators.NotDueIn\n ) { //operation unit \n values.push(current.values.first);\n if (current.operatorUnit) {\n values.push(getLegacyOperationUnit(current.operatorUnit));\n }\n } else {\n values.push(current.values.first);\n if (current.values.second) {\n values.push(current.values.second);\n }\n }\n }\n\n return values;\n }\n\n /**\n * generates an array of keys of multi-select control\n * @param values an array of the selected values\n * @param id filter's selected field\n * @returns an array of keys\n */\n private getFieldKeys(values: any[], id: string) {\n let keys: any[] = [];\n\n let field = this._fields.find(item => item.id === id);\n if (field) {\n keys = field?.options.filter(item => values.includes(item.value)).map((option: any) => option.key);\n }\n\n return keys;\n }\n}","import {\n Injectable, ViewContainerRef, ComponentFactoryResolver,\n ComponentFactory, ComponentRef\n} from '@angular/core';\nimport { FormBuilder, FormGroup, AbstractControl, Validators } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { } from 'lodash';\nimport { PepSmartFiltersModule } from '../smart-filters.module';\nimport { IPepField, IPepJSONSection, IPepJSONItem } from './common/model/legacy';\nimport { PepSmartFilterBaseField, IPepSmartFilterField, IPepSmartFilterFieldOption } from '../common/model/field';\nimport { IPepSmartFilterData } from '../common/model/filter';\nimport { PepSmartFilterOperators, IPepSmartFilterOperator } from '../common/model/operator';\nimport { PepSmartFilterType } from '../common/model/type'\nimport { createSmartFilter, createSmartFilterField } from '../common/model/creator';\n//import { getSmartBuilderType } from './common/model/type';\n//import { convertToSmartFilterFields } from './common/model/field';\nimport { getSmartBuilderOperator } from './common/model/operator';\nimport { FilterBuilderSectionComponent } from './filter-builder-section/filter-builder-section.component';\nimport { FilterBuilderItemComponent } from './filter-builder-item/filter-builder-item.component';\nimport { PepFilterBuilderTypeMap } from './common/model/type-map';\nimport { getSmartBuilderOperationUnit } from './common/model/operator-unit';\n//import { PepFilterBuilderOperatorUnitMap } from './common/model/operator-unit-map';\nimport { PepOutputFilterService } from './common/services/output-filter.service';\nimport { IPepFilterBuilderValues } from './common/model/filter';\nimport { PepOperatorTypes } from './common/model/type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilterBuilderService {\n private readonly MAX_STRUCTURE_DEPTH: number = 3;\n\n private _outputJsonSubject = new BehaviorSubject<any>(null);\n\n private _smartFilterFields: Array<IPepSmartFilterField>;\n private _form: FormGroup;\n\n public triggerOutputJson = this._outputJsonSubject.asObservable();\n\n constructor(private _fb: FormBuilder, private _resolver: ComponentFactoryResolver, private _outputJsonService: PepOutputFilterService) {\n\n }\n\n get maxDepth(): number {\n return this.MAX_STRUCTURE_DEPTH;\n }\n\n /**\n * creates a dynamic filter structure\n * might has a different structure than the input's due to merge of parent-child elements\n * @param json legacy JSON\n * @param fields an array of legacy fields \n * @param containerRef reference to root element\n */\n createFilterTree(\n json: IPepJSONSection | null,\n fields: Array<IPepField>,\n form: FormGroup,\n containerRef: ViewContainerRef\n ) {\n this._form = form;\n this._smartFilterFields = this.convertToSmartFilterFields(fields);\n const result = this.createSection(json?.Operation ? json.Operation : PepOperatorTypes.And, containerRef, this._form, 0);\n if (json) {\n this.flatten(json, json.LeftNode, result.containerRef, result.parentForm, 1);\n this.flatten(json, json.RightNode, result.containerRef, result.parentForm, 1);\n }\n }\n\n /**\n * checks if the object contains property\n * @param obj object\n * @param prop property name\n * @returns true if contains, false otherwise\n */\n private hasProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n /**\n * a recursive function dynamically builds filters structure\n * @param parent legacy complex object\n * @param current child legacy object (either another complex or expression type)\n * @param containerRef parent element\n * @param parentForm parent form\n */\n private flatten(parent: IPepJSONSection, current: IPepJSONSection | IPepJSONItem, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\n if (this.hasProperty(current, 'ComplexId')) {\n const section = current as IPepJSONSection;\n if (parent.Operation === current.Operation) {\n this.flatten(parent, section.LeftNode, containerRef, parentForm, depth);\n this.flatten(parent, section.RightNode, containerRef, parentForm, depth);\n } else {\n const result = this.createSection(section.Operation, containerRef, parentForm, depth);\n this.flatten(section, section.LeftNode, result.containerRef, result.parentForm, depth + 1);\n this.flatten(section, section.RightNode, result.containerRef, result.parentForm, depth + 1);\n }\n } else if (this.hasProperty(current, 'ExpressionId')) {\n this.createItem(current as IPepJSONItem, containerRef, parentForm);\n }\n }\n\n /**\n * creates a container object of two or more child filter items\n * @param operator AND/OR operator\n * @param containerRef parent element\n * @param parentForm parent form\n * @param depth\n * @returns an object containing the current element and current form\n */\n createSection(operator: PepOperatorTypes, containerRef: ViewContainerRef, parentForm: FormGroup, depth: number) {\n const factory = this._resolver.resolveComponentFactory(FilterBuilderSectionComponent);\n let componentRef = containerRef.createComponent(factory);\n\n let sectionGroup = this._fb.group({\n operator: this._fb.control(operator)\n });\n let counter = 1;\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) { counter++; } });\n let formKey: string = `section${counter}`;\n parentForm.addControl(formKey, sectionGroup);\n\n componentRef.instance.depth = depth;\n componentRef.instance.form = sectionGroup;\n componentRef.instance.remove.subscribe(() => {\n parentForm.removeControl(formKey);\n componentRef.destroy();\n this.createOutputJson();\n });\n componentRef.instance.operatorChange.subscribe(() => {\n this.createOutputJson();\n });\n\n return {\n containerRef: componentRef.instance.sectionContainer,\n parentForm: sectionGroup\n };\n }\n\n /**\n * creates a component represents filter item (leaf element - has no childs)\n * @param current filter legacy element\n * @param containerRef parent element\n * @param parentForm parent form\n */\n createItem(current: IPepJSONItem, containerRef: ViewContainerRef, parentForm: FormGroup) {\n const factory = this._resolver.resolveComponentFactory(FilterBuilderItemComponent);\n let componentRef = containerRef.createComponent(factory);\n\n let counter = 1;\n Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) { counter++; } });\n let formKey: string = `item${counter}`;\n\n componentRef.instance.formKey = formKey;\n componentRef.instance.fields = this._smartFilterFields;\n const selectedField = this.getSelectedField(current);\n if (selectedField) {\n componentRef.instance.selected = selectedField;\n if (current) {\n componentRef.instance.filter = this.getFilter(current, selectedField);\n }\n }\n componentRef.instance.parentForm = parentForm;\n componentRef.instance.filterChange.subscribe(() => {\n this.createOutputJson();\n });\n componentRef.instance.remove.subscribe(() => {\n parentForm.removeControl(formKey);\n componentRef.destroy();\n this.createOutputJson();\n });\n }\n\n /**\n * creates a smart filter object\n * @param current filter legacy element\n * @param field filter's selected field\n * @returns smart filter object\n */\n private getFilter(current: IPepJSONItem, field: any): IPepSmartFilterData | null {\n let operator: IPepSmartFilterOperator = getSmartBuilderOperator(current.Operation, field.type);\n if (operator) {\n let filterValues: IPepFilterBuilderValues = this.getFilterValues(current, operator, field);\n return createSmartFilter(\n current.ApiName,\n operator,\n filterValues.first,\n filterValues.second,\n filterValues.operationUnit\n );\n } else {\n return null;\n }\n }\n\n /**\n * get smart filter field\n * @param current filter legacy element\n * @returns smart filter field, if not found returns the first fields\n */\n private getSelectedField(current: IPepJSONItem): IPepSmartFilterField | null {\n if (current) {\n let item = this._smartFilterFields.find(field => field.id === current.ApiName);\n return item ? item : this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\n } else {\n return this._smartFilterFields?.length > 0 ? this._smartFilterFields[0] : null;\n }\n }\n\n /**\n * gets smart filter's values data\n * @param current filter legacy element\n * @param operator smart filter operator\n * @param field filter's selected field\n * @returns object contains the filter values data\n */\n private getFilterValues(current: IPepJSONItem, operator: IPepSmartFilterOperator, field: any) {\n let data: IPepFilterBuilderValues = {\n first: null,\n second: null,\n operationUnit: null\n };\n\n if (operator === PepSmartFilterOperators.In) { //multi select \n //filter keys don't exist on field options\n data.first = current?.Values?.length > 0 ? current.Values.filter(item => {\n return field.options.find(option => option.key === item);\n }) : null;\n } else if (\n operator === PepSmartFilterOperators.InTheLast ||\n operator === PepSmartFilterOperators.NotInTheLast ||\n operator === PepSmartFilterOperators.DueIn ||\n operator === PepSmartFilterOperators.NotDueIn\n ) { //operation unit\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\n if (current?.Values?.length === 2) {\n data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);\n }\n } else {\n data.first = current?.Values?.length > 0 ? current.Values[0] : null;\n data.second = current?.Values?.length === 2 ? current.Values[1] : null;\n }\n\n return data;\n }\n\n /**\n * converts legacy fields to smart filter fields\n * @param fields legacy fields array\n * @returns smart filter fields array\n */\n private convertToSmartFilterFields(fields: Array<IPepField>) {\n if (fields?.length > 0) {\n const typeMapper = new PepFilterBuilderTypeMap();\n return fields.map((field) => {\n return createSmartFilterField(\n {\n id: field.FieldID,\n name: field.Title,\n options: field.OptionalValues?.map(option => {\n return {\n key: option.Key,\n value: option.Value\n }\n })\n } as IPepSmartFilterField\n , typeMapper.getSmartBuilderType(field.FieldType) as PepSmartFilterType)\n })\n } else {\n return [];\n }\n }\n\n /**\n * creates a legacy output JSON \n */\n private createOutputJson() {\n if (this._form.valid) {\n const json = this._outputJsonService.generateJson(this._form.value, this._smartFilterFields);\n this._outputJsonSubject.next(json);\n }\n }\n\n\n\n}","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit,\n AfterViewInit,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n ChangeDetectorRef\n\n} from '@angular/core';\nimport { IPepField, IPepJSONSection } from './common/model/legacy';\nimport { FilterBuilderService } from './filter-builder.service';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'pep-filter-builder',\n templateUrl: './filter-builder.component.html',\n styleUrls: ['./filter-builder.component.scss'],\n})\nexport class FilterBuilderComponent implements OnInit, OnDestroy {\n @Input() json: IPepJSONSection = null;\n @Input() fields: Array<IPepField> = new Array<IPepField>();\n\n @Output()\n filters: EventEmitter<any> = new EventEmitter<any>();\n @Output()\n formValidationChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild('filterRoot', { read: ViewContainerRef, static: true }) filterRoot: ViewContainerRef;\n\n _formSubscription$: Subscription;\n _outputJsonSubscription$: Subscription;\n\n _isFormValid: boolean = true;\n\n form: FormGroup;\n\n constructor(\n private _fb: FormBuilder,\n private _filterBuilderService: FilterBuilderService\n ) {\n this.setupForm();\n this._formSubscription$ = this.form.valueChanges.subscribe((val) => {\n if (this.form.valid !== this._isFormValid) {\n this._isFormValid = this.form.valid;\n this.formValidationChange.emit(this._isFormValid);\n }\n });\n this._outputJsonSubscription$ = this._filterBuilderService.triggerOutputJson.subscribe((outputJson) => {\n this.filters.emit(outputJson);\n });\n }\n\n setupForm() {\n this.form = this._fb.group({})\n }\n ngOnInit() {\n this._filterBuilderService.createFilterTree(this.json, this.fields, this.form, this.filterRoot);\n }\n\n /*\n ngAfterViewInit() {\n //this._filterBuilderService.createFilterTree(this.json, this.fields, this.form, this.filterRoot);\n }\n\n ngAfterViewChecked() {\n //this._changeDetectionRef.detectChanges();\n } */\n\n ngOnDestroy() {\n if (this._formSubscription$) {\n this._formSubscription$.unsubscribe();\n }\n if (this._outputJsonSubscription$) {\n this._outputJsonSubscription$.unsubscribe();\n }\n }\n\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Pipe({\n name: 'filterItemCounter'\n})\nexport class FilterItemCounterPipe implements PipeTransform {\n transform(container: FormGroup): number {\n console.log('init filter', container);\n let counter = 0;\n Object.keys(container.controls).forEach(item => { if (item.includes('item') || item.includes('section')) { counter++; } });\n console.log('filter counter', counter);\n return counter;\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { 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';\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';\nimport { FilterBuilderComponent } from './filter-builder/filter-builder.component';\nimport { FilterBuilderSectionComponent } from './filter-builder/filter-builder-section/filter-builder-section.component';\nimport { FilterBuilderItemComponent } from './filter-builder/filter-builder-item/filter-builder-item.component';\n\nimport { FilterItemCounterPipe } from './filter-builder/common/pipes/filter-item-counter.pipe';\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 ],\n exports: [PepSmartFiltersComponent, FilterBuilderComponent],\n declarations: [\n // BaseFilterComponent,\n PepSmartFiltersComponent,\n PepFilterActionsComponent,\n PepTextFilterComponent,\n PepBooleanFilterComponent,\n PepDateFilterComponent,\n PepMultiSelectFilterComponent,\n PepNumberFilterComponent,\n FilterBuilderComponent,\n FilterBuilderSectionComponent,\n FilterBuilderItemComponent,\n FilterItemCounterPipe\n ],\n})\nexport class PepSmartFiltersModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconNumberMinus,\n pepIconNumberPlus,\n ]);\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 './filter-builder/filter-builder.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\nexport {FilterItemCounterPipe as ɵg} from './filter-builder/common/pipes/filter-item-counter.pipe';\nexport {PepOutputFilterService as ɵb} from './filter-builder/common/services/output-filter.service';\nexport {PepTypeConvertorService as ɵd} from './filter-builder/common/services/type-convertor.service';\nexport {FilterBuilderItemComponent as ɵf} from './filter-builder/filter-builder-item/filter-builder-item.component';\nexport {FilterBuilderSectionComponent as ɵe} from './filter-builder/filter-builder-section/filter-builder-section.component';\nexport {FilterBuilderService as ɵa} from './filter-builder/filter-builder.service';\nexport {PepTextFilterComponent as ɵc} from './text-filter/text-filter.component';"],"names":["Equals","NotEqual","LessThan","GreaterThan","NumberRange","Contains","InTheLast","Today","ThisWeek","ThisMonth","DateRange","DueIn","On","NotInTheLast","NotDueIn","IsEmpty","IsNotEmpty","In","Days","Weeks","Months","Years"],"mappings":"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"}
|