@fundamental-ngx/platform 0.62.0-rc.2 → 0.62.0-rc.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-smart-filter-bar.mjs","sources":["../../../../libs/platform/smart-filter-bar/smart-filter-bar.service.ts","../../../../libs/platform/smart-filter-bar/helpers.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.html","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.html","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-settings-dialog/data-provider.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.html","../../../../libs/platform/smart-filter-bar/constants.ts","../../../../libs/platform/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.ts","../../../../libs/platform/smart-filter-bar/directives/smart-filter-bar-subject.directive.ts","../../../../libs/platform/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.class.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.component.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.component.html","../../../../libs/platform/smart-filter-bar/providers/smart-filter-bar.provider.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.module.ts","../../../../libs/platform/smart-filter-bar/fundamental-ngx-platform-smart-filter-bar.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\nimport { FdDate } from '@fundamental-ngx/core/datetime';\nimport {\n BaseDynamicFormGeneratorControl,\n FormGeneratorService,\n PreparedDynamicFormFieldItem\n} from '@fundamental-ngx/platform/form';\nimport { SelectItem, isSelectItem } from '@fundamental-ngx/platform/shared';\nimport {\n CollectionFilterGroup,\n FilterAllStrategy,\n FilterableColumnDataType,\n getFilterStrategiesBasedOnDataType\n} from '@fundamental-ngx/platform/table';\n\nimport { selectStrategy } from '@fundamental-ngx/cdk/utils';\nimport { SmartFilterBarCondition } from './interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarCustomFilterConfig } from './interfaces/smart-filter-bar-custom-filter-config';\n\n@Injectable()\nexport class SmartFilterBarService {\n /** @hidden */\n private _customFilterConditions: Map<Type<BaseDynamicFormGeneratorControl>, SmartFilterBarCustomFilterConfig> =\n new Map<Type<BaseDynamicFormGeneratorControl>, SmartFilterBarCustomFilterConfig>();\n\n /** @hidden */\n constructor(private _fgService: FormGeneratorService) {}\n\n /**\n * Adds custom filter type to the smart filter bar.\n * @param options Configuration options.\n * @returns true if component was added successfully.\n */\n addCustomFilter(options: SmartFilterBarCustomFilterConfig): boolean {\n if (!options.conditionComponent && options.rendererComponent) {\n options.conditionComponent = options.rendererComponent;\n }\n\n if (!options.conditionComponent) {\n return false;\n }\n\n const result = this._fgService.addComponent(options.conditionComponent, options.types);\n\n if (result) {\n this._customFilterConditions.set(options.conditionComponent, options);\n }\n\n if (result && options.rendererComponent) {\n this._fgService.addComponent(\n options.rendererComponent,\n options.types.map((t) => `${t}-renderer`)\n );\n }\n\n return result;\n }\n\n /**\n * Returns provided configuration object of the custom filter.\n * @param type Filter type.\n * @returns Configuration object.\n */\n getCustomFilterConfiguration(type: string): SmartFilterBarCustomFilterConfig | undefined {\n const componentDefinition = this._fgService.getComponentDefinitionByType(type);\n\n if (!componentDefinition) {\n return undefined;\n }\n\n return this._customFilterConditions.get(componentDefinition.component);\n }\n\n /**\n * Returns applicable condition options of the filter.\n * @param type Filter type.\n * @param dataType Filter data type.\n * @returns Array of applicable condition options.\n */\n getApplicableFilterConditions(\n type: string,\n dataType: FilterableColumnDataType = FilterableColumnDataType.STRING\n ): FilterAllStrategy[] {\n const componentDefinition = this._fgService.getComponentDefinitionByType(type);\n\n const defaultConditions: FilterAllStrategy[] = getFilterStrategiesBasedOnDataType(\n dataType\n ) as FilterAllStrategy[];\n\n if (!componentDefinition) {\n return defaultConditions;\n }\n\n const filterDefinition = this._customFilterConditions.get(componentDefinition.component);\n\n return filterDefinition?.filterStrategies || defaultConditions;\n }\n\n /** @hidden */\n async getDisplayValue(condition: SmartFilterBarCondition, filterType: string): Promise<string> {\n const configuration = this.getCustomFilterConfiguration(filterType);\n\n if (configuration?.valueRenderer) {\n const obj = configuration?.valueRenderer(condition);\n const strategy = selectStrategy(obj);\n\n let returnValue!: string;\n\n await strategy.createSubscription(obj, (value) => {\n returnValue = value;\n });\n\n return returnValue;\n }\n\n const value1 = this._normalizeValue(condition.value);\n const value2 = this._normalizeValue(condition.value2);\n\n switch (condition.operator) {\n case 'equalTo':\n return `=${value1}`;\n case 'contains':\n return `*${value1}*`;\n case 'between':\n return `${value1}...${value2}`;\n case 'beginsWith':\n return `${value1}*`;\n case 'endsWith':\n return `*${value1}`;\n case 'greaterThan':\n return `>${value1}`;\n case 'greaterThanOrEqualTo':\n return `>=${value1}`;\n case 'lessThan':\n return `<${value1}`;\n case 'lessThanOrEqualTo':\n return `<=${value1}`;\n case 'after':\n return `>${value1}`;\n case 'onOrAfter':\n return `>=${value1}`;\n case 'before':\n return `<${value1}`;\n case 'beforeOrOn':\n return `<=${value1}`;\n default:\n return `${value1}`;\n }\n }\n\n /**\n * Method for normalizing generated conditions to display in human-readable format.\n * @returns Formatted array of conditions.\n * @param formItem\n * @param conditions\n */\n async normalizeConditions(\n formItem: PreparedDynamicFormFieldItem,\n conditions: SmartFilterBarCondition[]\n ): Promise<SmartFilterBarCondition[]> {\n const normalizedConditions: SmartFilterBarCondition[] = [];\n\n for (const condition of conditions) {\n const newCondition = Object.assign({}, condition);\n\n newCondition.displayValue = await this.getDisplayValue(\n newCondition,\n formItem.guiOptions?.additionalData.type\n );\n\n normalizedConditions.push(newCondition);\n }\n\n return normalizedConditions;\n }\n\n /**\n * Returns formatted condition variants.\n */\n async getConditionFieldSelectedVariants(\n formItem: PreparedDynamicFormFieldItem,\n conditions: SmartFilterBarCondition[]\n ): Promise<SelectItem[]> {\n return (await this.normalizeConditions(formItem, conditions)).map((c: any) => {\n if (isSelectItem(c)) {\n return c;\n }\n\n const condition: SelectItem = {\n label: c.displayValue,\n value: c\n };\n\n return condition;\n });\n }\n\n /**\n * Transforms collection filter into smart filter bar condition.\n */\n transformCollectionFilter(filterGroup: CollectionFilterGroup): SmartFilterBarCondition[] {\n return filterGroup.filters.map((filter) => {\n const condition: SmartFilterBarCondition = {\n operator: filter.strategy,\n value: filter.value,\n value2: filter.value2\n };\n\n return condition;\n });\n }\n\n /**\n * @hidden\n * Normalizes condition value.\n * @param value\n * @returns\n */\n private _normalizeValue(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this._normalizeValue(v)).join(', ');\n }\n\n if (isSelectItem(value)) {\n return value.label;\n }\n\n if (value instanceof FdDate) {\n return value.toDateString();\n }\n\n return value;\n }\n}\n","import { isSelectItem } from '@fundamental-ngx/platform/shared';\n\n/** @hidden */\nexport function getSelectItemValue(item: any): any {\n if (Array.isArray(item)) {\n item = item.map((i) => getSelectItemValue(i));\n }\n\n return isSelectItem(item) ? item.value : item;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n QueryList,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarLeftDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogRef\n} from '@fundamental-ngx/core/dialog';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe, resolveTranslationSignalFn } from '@fundamental-ngx/i18n';\nimport { DynamicFormControl, DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport { FILTER_STRATEGY, FilterAllStrategy } from '@fundamental-ngx/platform/table';\nimport { getSelectItemValue } from '../../helpers';\nimport { SmartFilterBarCondition, SmartFilterBarConditionBuilder } from '../../interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarStrategy, SmartFilterBarStrategyLabels } from '../../interfaces/strategy-labels.type';\nimport { SmartFilterBarService } from '../../smart-filter-bar.service';\n\n@Component({\n selector: 'fdp-smart-filter-bar-conditions-dialog',\n templateUrl: './smart-filter-bar-conditions-dialog.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n FormsModule,\n LayoutGridComponent,\n LayoutGridRowDirective,\n LayoutGridColDirective,\n FormGeneratorComponent,\n ButtonComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n BusyIndicatorComponent,\n FdTranslatePipe\n ]\n})\nexport class SmartFilterBarConditionsDialogComponent {\n /**\n * Generated condition forms.\n */\n @ViewChildren(FormGeneratorComponent)\n formGenerators!: QueryList<FormGeneratorComponent>;\n\n /** Condition builder config. */\n config: SmartFilterBarConditionBuilder;\n\n /** Available condition operator options. */\n conditionOperatorOptions: SelectItem[] = [];\n\n /** @hidden */\n _formItems: DynamicFormItem[][] = [];\n\n /** @hidden */\n loaded = false;\n\n /** @hidden */\n private readonly _conditionLabelKeys: SmartFilterBarStrategyLabels = {\n contains: 'filterConditionContains',\n equalTo: 'filterConditionEqualTo',\n between: 'filterConditionBetween',\n beginsWith: 'filterConditionBeginsWith',\n endsWith: 'filterConditionEndsWith',\n lessThan: 'filterConditionLessThan',\n lessThanOrEqualTo: 'filterConditionLessThanOrEqualTo',\n greaterThan: 'filterConditionGreaterThan',\n greaterThanOrEqualTo: 'filterConditionGreaterThanOrEqualTo',\n after: 'filterConditionAfter',\n onOrAfter: 'filterConditionOnOrAfter',\n before: 'filterConditionBefore',\n beforeOrOn: 'filterConditionBeforeOrOn'\n };\n\n /** @hidden */\n private _submittedForms: any[] = [];\n\n /** @hidden */\n private resolveTranslation = resolveTranslationSignalFn();\n\n /** @hidden */\n constructor(\n private _dialogRef: DialogRef<SmartFilterBarConditionBuilder, SmartFilterBarCondition[]>,\n private readonly _cdr: ChangeDetectorRef,\n private _smartFilterBarService: SmartFilterBarService\n ) {\n this._init();\n }\n\n /**\n * Adds empty condition.\n */\n addCondition(): void {\n this._formItems.push(this._generateFormGeneratorItems());\n }\n\n /**\n * Removes condition at defined index\n * @param index Index of the condition in the array.\n */\n removeCondition(index: number): void {\n this._formItems.splice(index, 1);\n\n if (this._formItems.length === 0) {\n this.addCondition();\n }\n }\n\n /**\n * Submits all condition forms.\n */\n applyConditions(): void {\n this._cdr.detectChanges();\n this._submittedForms = [];\n this.formGenerators.toArray().forEach((formGenerator) => formGenerator.submit());\n }\n\n /**\n * @hidden\n * Callback function when form generator form has been submitted.\n * Will close dialog in case if all forms are valid.\n * @param form Form generator form value.\n */\n _onFormSubmitted(form: SmartFilterBarCondition): void {\n this._submittedForms.push(form);\n\n if (this._submittedForms.length !== this.formGenerators.length) {\n return;\n }\n\n const formsResult = this._submittedForms.map((f) => {\n f.value = f.value1 !== undefined ? f.value1 : f.value;\n return f;\n });\n\n this._dialogRef.close(\n formsResult.filter((c: SmartFilterBarCondition) => c.value !== undefined && c.value !== null)\n );\n }\n\n /** @hidden */\n _cancel(): void {\n this._dialogRef.dismiss();\n }\n\n /** @hidden */\n private _init(): void {\n this.config = this._dialogRef.data;\n\n this.conditionOperatorOptions = this._getApplicableConditionOperators();\n\n this._addExistingConditions(getSelectItemValue(this.config.conditions));\n\n if (this.config.conditions.length === 0) {\n // Add first empty condition\n this.addCondition();\n }\n this.loaded = true;\n this._cdr.markForCheck();\n }\n\n /**\n * @hidden\n * Returns applicable condition options of the filter.\n * @returns Array of applicable condition options.\n */\n private _getApplicableConditionOperators(): SelectItem[] {\n const strategy = this._smartFilterBarService.getApplicableFilterConditions(\n this.config.filterType,\n this.config.dataType\n );\n\n const labelsConfig: Record<SmartFilterBarStrategy, string> = { ...this._conditionLabelKeys };\n for (const strategyItem of Object.keys(this._conditionLabelKeys) as SmartFilterBarStrategy[]) {\n const translationKey = 'platformSmartFilterBar.' + labelsConfig[strategyItem];\n labelsConfig[strategyItem] = this.resolveTranslation(\n translationKey as `platformSmartFilterBar.${SmartFilterBarStrategyLabels[SmartFilterBarStrategy]}`\n )();\n }\n\n return strategy.map((s: FilterAllStrategy) => ({\n label: labelsConfig![s],\n value: s\n }));\n }\n\n /**\n * Transforms filter conditions into form generator form items array.\n * @param conditions existing smart filter bar filter conditions.\n */\n private _addExistingConditions(conditions: SmartFilterBarCondition[]): void {\n conditions.forEach((condition) => {\n const conditionGroup = this._generateFormGeneratorItems(condition);\n\n this._formItems.push(conditionGroup);\n });\n }\n\n /** @hidden */\n private _generateFormGeneratorItems(condition?: SmartFilterBarCondition): DynamicFormItem[] {\n return [\n {\n name: 'operator',\n message: 'operator',\n default: condition\n ? this.conditionOperatorOptions.find((o) => o.value === condition.operator)?.value\n : this.conditionOperatorOptions[0].value,\n type: 'select',\n choices: this.conditionOperatorOptions,\n required: true,\n guiOptions: {\n inline: false,\n column: 1,\n noLabelLayout: true\n }\n },\n {\n name: 'value',\n message: 'value',\n default: condition?.value,\n type: this.config.filterType,\n choices: this.config.choices,\n placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValuePlaceholder')(),\n controlType: this.config.controlType,\n when: (value) => value.operator !== FILTER_STRATEGY.BETWEEN,\n onchange: (value, _, control: DynamicFormControl) => {\n control.parent?.get('value1')?.setValue(value, { emitEvent: false });\n },\n guiOptions: {\n inline: false,\n column: 2,\n noLabelLayout: true\n }\n },\n {\n name: 'value1',\n message: 'value1',\n default: condition?.value,\n type: this.config.filterType,\n choices: this.config.choices,\n placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValueFromPlaceholder')(),\n controlType: this.config.controlType,\n when: (value) => value.operator === FILTER_STRATEGY.BETWEEN,\n onchange: (value, _, control: DynamicFormControl) => {\n control.parent?.get('value')?.setValue(value, { emitEvent: false });\n },\n guiOptions: {\n inline: false,\n column: 2,\n noLabelLayout: true\n }\n },\n {\n name: 'value2',\n message: 'value2',\n default: condition?.value2,\n type: this.config.filterType,\n choices: this.config.choices,\n placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValueToPlaceholder')(),\n required: true,\n controlType: this.config.controlType,\n when: (value) => value?.operator === FILTER_STRATEGY.BETWEEN,\n guiOptions: {\n inline: false,\n column: 3,\n noLabelLayout: true\n }\n }\n ];\n }\n}\n","<fd-dialog class=\"fdp-smart-filter-bar__conditions-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 [headerSize]=\"4\" fd-title>{{ config.header }}</h4>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (loaded) {\n <form>\n @for (condition of _formItems; track condition; let i = $index) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <div colGrow fdLayoutGridCol>\n <!-- wrapping \"formSubmitted\" event payload as any, because it's type is more generic than we're expecting -->\n <fdp-form-generator\n (formSubmitted)=\"_onFormSubmitted($any($event))\"\n [formItems]=\"condition\"\n [unifiedLayout]=\"false\"\n columnLayout=\"XL3-L3-M3-S3\"\n [noAdditionalContent]=\"true\"\n ></fdp-form-generator>\n </div>\n <div class=\"fdp-smart-filter-bar__actions-column\" colGrow fdLayoutGridCol>\n <button\n fd-button\n (click)=\"removeCondition(i)\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"\n (\n 'platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle'\n | fdTranslate\n )()\n \"\n type=\"button\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n }\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <div colGrow fdLayoutGridCol>&nbsp;</div>\n <div class=\"fdp-smart-filter-bar__actions-column\" fdLayoutGridCol>\n <button\n fd-button\n (click)=\"addCondition()\"\n [label]=\"\n ('platformSmartFilterBar.defineConditionsAddConditionButtonLabel' | fdTranslate)()\n \"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n </form>\n } @else {\n <div [style.text-align]=\"'center'\" [style.margin.rem]=\"1\">\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\n </div>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n (click)=\"applyConditions()\"\n fdType=\"emphasized\"\n [label]=\"('platformSmartFilterBar.defineConditionsSubmitButtonLabel' | fdTranslate)()\"\n >\n </fd-button-bar>\n <fd-button-bar\n (click)=\"_cancel()\"\n fdType=\"transparent\"\n [label]=\"('platformSmartFilterBar.defineConditionsCancelButton' | fdTranslate)()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { Directive, Injector, inject } from '@angular/core';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { BaseDynamicFormGeneratorControl, DynamicFormControl } from '@fundamental-ngx/platform/form';\nimport { take } from 'rxjs/operators';\nimport { SmartFilterBarCondition, SmartFilterBarConditionBuilder } from '../../interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarService } from '../../smart-filter-bar.service';\nimport { SmartFilterBarConditionsDialogComponent } from '../smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component';\n\n@Directive()\nexport abstract class BaseSmartFilterBarConditionField extends BaseDynamicFormGeneratorControl {\n protected readonly _dialogService = inject(DialogService);\n protected readonly _smartFilterBarService = inject(SmartFilterBarService);\n protected readonly _injector = inject(Injector);\n /**\n * Method for opening conditions configuration dialog.\n */\n openConditionsDialog: () => void = () => {\n const currentValue = this.getField().value;\n\n const dialogData: SmartFilterBarConditionBuilder = {\n header: this.formItem.message as string,\n dataType: this.formItem.guiOptions?.additionalData.dataType,\n filterType: this.formItem.guiOptions?.additionalData.type,\n conditions: currentValue || [],\n choices: this.formItem.guiOptions?.additionalData.choices,\n controlType: this.formItem.guiOptions?.additionalData.controlType\n };\n\n const dialogRef = this._dialogService.open(\n SmartFilterBarConditionsDialogComponent,\n {\n data: dialogData,\n width: '67.5rem',\n minHeight: '30%'\n },\n this._injector\n );\n\n dialogRef.afterClosed.pipe(take(1)).subscribe({\n next: async (conditions: SmartFilterBarCondition[]) => {\n const field = this.getField();\n const normalizedConditions = await this._smartFilterBarService.getConditionFieldSelectedVariants(\n this.formItem,\n conditions\n );\n field.setValue(normalizedConditions);\n },\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n error: (_) => {}\n });\n };\n\n /**\n * Method for retrieving current form control of the generated form.\n * @returns Found form control.\n */\n getField(): DynamicFormControl {\n return this.form.get(`${this.formGroupName}.${this.name}`) as DynamicFormControl;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { PlatformMultiInputComponent } from '@fundamental-ngx/platform/form';\nimport { BaseSmartFilterBarConditionField } from './base-smart-filter-bar-condition-field';\n\n@Component({\n selector: 'fdp-smart-filter-bar-condition-field',\n templateUrl: './smart-filter-bar-condition-field.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [FormsModule, ReactiveFormsModule, PlatformMultiInputComponent, FdTranslatePipe]\n})\nexport class SmartFilterBarConditionFieldComponent extends BaseSmartFilterBarConditionField {}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [addOnButtonClickFn]=\"openConditionsDialog\"\n [dataSource]=\"formItem.choices || []\"\n [formControlName]=\"name\"\n [name]=\"name\"\n [placeholder]=\"formItem.placeholder || formItem.message\"\n [validationStrategy]=\"['submitted']\"\n displayKey=\"displayValue\"\n [glyphAriaLabel]=\"('platformSmartFilterBar.manageFieldConditions' | fdTranslate)()\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n","import { ArrayTableDataProvider } from '@fundamental-ngx/platform/table';\nimport { FieldFilterItem } from '../../interfaces/smart-filter-bar-field-filter-item';\nimport { SmartFilterBarVisibilityCategory } from '../../interfaces/smart-filter-bar-visibility-category';\n\nexport class SmartFilterBarOptionsDataProvider extends ArrayTableDataProvider<FieldFilterItem> {\n /** @hidden */\n constructor(items: FieldFilterItem[]) {\n super(items);\n }\n\n /**\n * Filters rows depending on applied filter.\n * @param option filter visibility category.\n */\n filter(option: SmartFilterBarVisibilityCategory): void {\n let items: FieldFilterItem[];\n\n switch (option) {\n case 'visible':\n items = this._getVisibleItems();\n break;\n case 'active':\n items = this._getActiveItems();\n break;\n case 'visibleAndActive':\n items = this._getVisibleAndActiveItems();\n break;\n case 'mandatory':\n items = this._getMandatoryItems();\n break;\n case 'all':\n default:\n items = this._getAllItems();\n break;\n }\n\n this.items$.next(items);\n }\n\n /** @hidden */\n private _getAllItems(): FieldFilterItem[] {\n return this.items;\n }\n\n /** @hidden */\n private _getVisibleItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.visible);\n }\n\n /** @hidden */\n private _getActiveItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.active);\n }\n\n /** @hidden */\n private _getVisibleAndActiveItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.visible || i.active);\n }\n\n /** @hidden */\n private _getMandatoryItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.mandatory);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal\n} from '@angular/core';\nimport { Subscription, asyncScheduler } from 'rxjs';\nimport { observeOn } from 'rxjs/operators';\n\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogRef\n} from '@fundamental-ngx/core/dialog';\nimport { FdpSelectionChangeEvent, SelectComponent } from '@fundamental-ngx/platform/form';\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport {\n RESETTABLE_TOKEN,\n ResetButtonComponent,\n Resettable,\n Table,\n TableColumnComponent,\n TableComponent,\n TableDataSource,\n TableRowSelectionChangeEvent,\n TableToolbarActionsComponent,\n TableToolbarComponent\n} from '@fundamental-ngx/platform/table';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport {\n FD_LANGUAGE_SIGNAL,\n FdLanguageKeyIdentifier,\n FdTranslatePipe,\n TranslationResolver\n} from '@fundamental-ngx/i18n';\nimport {\n FdpCellDef,\n FdpTableCell,\n TableDataSourceDirective,\n TableHeaderResizerDirective,\n TableInitialStateDirective\n} from '@fundamental-ngx/platform/table-helpers';\nimport { SmartFilterBarFieldDefinition } from '../../interfaces/smart-filter-bar-field-definition';\nimport { FieldFilterItem } from '../../interfaces/smart-filter-bar-field-filter-item';\nimport { SmartFilterSettingsDialogConfig } from '../../interfaces/smart-filter-bar-settings-dialog-config';\nimport { SmartFilterBarVisibilityCategoryLabels } from '../../interfaces/smart-filter-bar-visibility-category';\nimport { SmartFilterBarOptionsDataProvider } from './data-provider';\n\n@Component({\n selector: 'fdp-smart-filter-bar-settings-dialog',\n templateUrl: './smart-filter-bar-settings-dialog.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: SmartFilterBarSettingsDialogComponent }],\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n TableDataSourceDirective,\n TableHeaderResizerDirective,\n TableComponent,\n TableInitialStateDirective,\n TableToolbarComponent,\n TableToolbarActionsComponent,\n SelectComponent,\n TableColumnComponent,\n FdpCellDef,\n FdpTableCell,\n IconComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n BusyIndicatorComponent,\n FdTranslatePipe\n ]\n})\nexport class SmartFilterBarSettingsDialogComponent implements Resettable, AfterViewInit {\n /**\n * Table instance\n */\n @ViewChild('table') table!: Table;\n\n /**\n * Table data source.\n */\n source!: TableDataSource<FieldFilterItem>;\n\n /** @hidden */\n _availableFields!: FieldFilterItem[];\n\n /** @hidden */\n _filterVisibilityOptions: SelectItem[] = [];\n\n /** @hidden */\n loaded = false;\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n private readonly _categoryLabelKeys: SmartFilterBarVisibilityCategoryLabels = {\n all: 'settingsCategoryAll',\n visible: 'settingsCategoryVisible',\n active: 'settingsCategoryActive',\n visibleAndActive: 'settingsCategoryVisibleAndActive',\n mandatory: 'settingsCategoryMandatory'\n };\n\n /** @hidden */\n private _sourceSubscription!: Subscription;\n\n /** @hidden */\n private _selectedFilters: string[] = [];\n\n /**\n * @hidden\n * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n /** @hidden */\n constructor(\n private _dialogRef: DialogRef<SmartFilterSettingsDialogConfig, string[]>,\n private readonly _cdr: ChangeDetectorRef\n ) {\n this.setInitialTableState();\n this._init();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.setSelectedFilters();\n }\n\n /**\n * Checks the checkbox in the table row if the field is selected.\n */\n setSelectedFilters(): void {\n this._sourceSubscription?.unsubscribe();\n this._sourceSubscription = this.source\n .open()\n .pipe(observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => {\n items.forEach((field, index) => {\n if (field.visible) {\n this.table.toggleSelectableRow(index);\n }\n });\n });\n }\n\n /**\n * Resets filters selection.\n */\n reset(): void {\n this.setInitialTableState();\n this.setSelectedFilters();\n }\n\n /**\n * Sets initial state of the table.\n */\n setInitialTableState(): void {\n this._availableFields = this._dialogRef.data.fields\n .filter((c: SmartFilterBarFieldDefinition) => c.filterable)\n .map((c: SmartFilterBarFieldDefinition) => ({\n label: c.label,\n active: !!this._dialogRef.data.filterBy.find((f) => f.field === c.name),\n mandatory: c.required,\n visible: this._dialogRef.data.selectedFilters.includes(c.name),\n key: c.key,\n name: c.name\n }));\n\n this.source = new TableDataSource(new SmartFilterBarOptionsDataProvider(this._availableFields));\n }\n\n /** @hidden */\n _cancel(): void {\n this._dialogRef.dismiss();\n }\n\n /** @hidden */\n _confirm(): void {\n this._dialogRef.close(this._selectedFilters);\n }\n\n /** @hidden */\n _onRowSelectionChange(event: TableRowSelectionChangeEvent<FieldFilterItem>): void {\n this._selectedFilters = event.selection.map((c) => c.name);\n this.isResetAvailable$.set(true);\n }\n\n /** @hidden */\n _onFilterVisibilityChange(event: FdpSelectionChangeEvent): void {\n if (!this.table) {\n return;\n }\n (this.source.dataProvider as SmartFilterBarOptionsDataProvider).filter(event.payload);\n this.source.fetch(this.table.getTableState());\n }\n\n /** @hidden */\n private async _init(): Promise<void> {\n await this._transformVisibilityLabels();\n this.loaded = true;\n this._cdr.markForCheck();\n }\n\n /**\n * Transforms visibility options into appropriate select item object.\n */\n private async _transformVisibilityLabels(): Promise<void> {\n const lang = this._langSignal();\n const labels = { ...this._categoryLabelKeys };\n for (const strategyItem in labels) {\n if (Object.prototype.hasOwnProperty.call(labels, strategyItem)) {\n const translationKey = ('platformSmartFilterBar.' +\n labels[strategyItem as keyof SmartFilterBarVisibilityCategoryLabels]) as FdLanguageKeyIdentifier;\n labels[strategyItem] = this._translationResolver.resolve(lang, translationKey);\n }\n }\n for (const [selectValue, selectLabel] of Object.entries(labels)) {\n this._filterVisibilityOptions.push({\n label: selectLabel,\n value: selectValue\n });\n }\n }\n}\n","<fd-dialog class=\"fdp-table-p13-filtering-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 [headerSize]=\"4\" fd-title>\n {{ ('platformSmartFilterBar.selectFiltersHeader' | fdTranslate)() }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (loaded) {\n <fdp-table\n #table\n (rowSelectionChange)=\"_onRowSelectionChange($event)\"\n [dataSource]=\"source\"\n selectionMode=\"multiple\"\n >\n <fdp-table-toolbar\n [hideItemCount]=\"false\"\n [title]=\"('platformSmartFilterBar.selectFiltersAvailableFiltersText' | fdTranslate)()\"\n >\n <fdp-table-toolbar-actions>\n <fdp-select\n (selectionChange)=\"_onFilterVisibilityChange($event)\"\n [list]=\"_filterVisibilityOptions\"\n [value]=\"_filterVisibilityOptions[0].value\"\n >\n </fdp-select>\n </fdp-table-toolbar-actions>\n </fdp-table-toolbar>\n <fdp-column\n align=\"start\"\n key=\"label\"\n [label]=\"('platformSmartFilterBar.selectFiltersFilterColumnLabel' | fdTranslate)()\"\n name=\"label\"\n ></fdp-column>\n <fdp-column\n align=\"center\"\n key=\"active\"\n [label]=\"('platformSmartFilterBar.selectFiltersActiveColumnLabel' | fdTranslate)()\"\n name=\"active\"\n width=\"150px\"\n >\n <fdp-table-cell *fdpCellDef=\"let item\">\n @if (item.active) {\n <fd-icon glyph=\"accept\"></fd-icon>\n }\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n } @else {\n <div [style.text-align]=\"'center'\" [style.margin.rem]=\"1\">\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\n </div>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n (click)=\"_confirm()\"\n fdType=\"emphasized\"\n [label]=\"('platformSmartFilterBar.selectFiltersSubmitButtonLabel' | fdTranslate)()\"\n ></fd-button-bar>\n <fd-button-bar\n (click)=\"_cancel()\"\n fdType=\"transparent\"\n [label]=\"('platformSmartFilterBar.selectFiltersCancelButton' | fdTranslate)()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","export const SMART_FILTER_BAR_RENDERER_COMPONENT = 'smart-filter-condition-renderer';\n","import { Directive, Input, booleanAttribute } from '@angular/core';\nimport { CollectionFilterGroupStrategy, FilterType, FilterableColumnDataType } from '@fundamental-ngx/platform/table';\n\n@Directive({\n selector: '[fdpSmartFilterBarFieldDefinition], [fdp-smart-filter-bar-field-definition]',\n standalone: true\n})\nexport class SmartFilterBarFieldDefinitionDirective {\n /** Field data accessor key. */\n @Input()\n key!: string;\n\n /** Unique field identifier. */\n @Input()\n name!: string;\n\n /** Field label. */\n @Input()\n label!: string;\n /** Field filter type */\n @Input()\n filterType!: FilterType;\n /** Field data type */\n @Input()\n dataType!: FilterableColumnDataType;\n /** Field custom filter type */\n @Input()\n customFilterType!: string;\n\n /** Condition strategy */\n @Input()\n conditionStrategy: CollectionFilterGroupStrategy = 'or';\n\n /** Whether this field can be filtered. Default value is true. */\n @Input({ transform: booleanAttribute })\n smartFilterBarFilterable = true;\n\n /** Whether this field filter is mandatory. */\n @Input({ transform: booleanAttribute })\n required = false;\n\n /** Whether this field filter is selected by default. */\n @Input({ transform: booleanAttribute })\n defaultSelected = false;\n\n /** Whether this field has autocomplete options */\n @Input({ transform: booleanAttribute })\n hasOptions = false;\n}\n","import { AfterViewInit, ContentChildren, DestroyRef, Directive, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport { Table, TableDataSource, TableState } from '@fundamental-ngx/platform/table';\nimport { BehaviorSubject, Observable, startWith } from 'rxjs';\nimport { SmartFilterBarFieldDefinition } from '../interfaces/smart-filter-bar-field-definition';\nimport { SmartFilterBarFieldDefinitionDirective } from './smart-filter-bar-field-definition.directive';\n\n@Directive({\n selector: '[fdpSmartFilterBarSubject], [fdp-smart-filter-bar-subject]',\n exportAs: 'fdp-smart-filter-bar-subject',\n standalone: true\n})\nexport class SmartFilterBarSubjectDirective implements AfterViewInit {\n /** @hidden */\n @ContentChildren(SmartFilterBarFieldDefinitionDirective)\n _fieldDefinitions!: QueryList<SmartFilterBarFieldDefinitionDirective>;\n\n /** @hidden */\n _fieldDefinitionsSubject = new BehaviorSubject<SmartFilterBarFieldDefinition[]>([]);\n\n /**\n * Observable of available fields.\n */\n readonly fieldsStream = this._fieldDefinitionsSubject.asObservable();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(private _subject: Table) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._fieldDefinitions.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._fieldDefinitionsSubject.next(this._fieldDefinitions.map((d) => this._transformSubjectField(d)));\n });\n }\n\n /**\n * Retrieves data source of the subject.\n * @returns Subject's data source.\n */\n getDataSource(): TableDataSource<any> {\n return this._subject.getDataSource();\n }\n\n /**\n * Retrieves available fields of the subject.\n * @returns Available fields of the subject.\n */\n getSubjectFields(): SmartFilterBarFieldDefinition[] {\n return this._fieldDefinitions.toArray().map((f) => this._transformSubjectField(f));\n }\n\n /** Get available field variants */\n getFieldVariants(field: string): Observable<SelectItem[]> {\n return this.getDataSource().dataProvider.getFieldOptions(field);\n }\n\n /** @hidden */\n getDefaultFields(): string[] {\n return this.getSubjectFields()\n ?.filter((f) => f.filterable && f.defaultSelected)\n .map((f) => f.name);\n }\n\n /** Get subject state */\n getState(): TableState {\n return this._subject.getTableState();\n }\n\n /**\n * @returns Subject component.\n */\n getSubject(): Table {\n return this._subject;\n }\n\n /** @hidden */\n private _transformSubjectField(column: SmartFilterBarFieldDefinitionDirective): SmartFilterBarFieldDefinition {\n return {\n key: column.key,\n name: column.name,\n label: column.label,\n filterType: column.filterType,\n filterable: column.smartFilterBarFilterable,\n dataType: column.dataType,\n required: column.required,\n customFilterType: column.customFilterType,\n defaultSelected: column.defaultSelected,\n hasOptions: column.hasOptions,\n conditionStrategy: column.conditionStrategy\n };\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdpSmartFilterBarToolbarItem]',\n standalone: true\n})\nexport class SmartFilterBarToolbarItemDirective {\n /** @hidden */\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\nimport { PresetManagedComponent } from '@fundamental-ngx/platform/shared';\nimport { CollectionFilterGroup } from '@fundamental-ngx/platform/table';\nimport { SmartFilterBarManagedPreset } from './interfaces/smart-filter-bar-change';\nimport { SmartFilterBarCondition } from './interfaces/smart-filter-bar-condition';\n\n@Directive()\nexport abstract class SmartFilterBar implements PresetManagedComponent<SmartFilterBarManagedPreset> {\n abstract search: SearchInput | undefined;\n\n /** @hidden */\n abstract getDisplayValue(condition: SmartFilterBarCondition, filterType: string): Promise<string>;\n\n /** Method for setting predefined configuration preset. */\n abstract setPreset(data: SmartFilterBarManagedPreset): void;\n\n /** Returns current preset configuration. */\n abstract getCurrentPreset(): SmartFilterBarManagedPreset;\n\n abstract getFormattedConditions(): Promise<CollectionFilterGroup[]>;\n\n /** Component name used in Preset managed component. */\n @Input()\n name = 'platformSmartFilterBar';\n\n /** Event emitted when smart filter bar configuration has been changed. */\n @Output()\n presetChanged = new EventEmitter<SmartFilterBarManagedPreset>();\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChildren,\n DestroyRef,\n EventEmitter,\n forwardRef,\n inject,\n Injector,\n Input,\n OnDestroy,\n Output,\n Provider,\n QueryList,\n signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Validators } from '@angular/forms';\n\nimport { BehaviorSubject, debounceTime, filter, firstValueFrom, Observable, Subject, Subscription } from 'rxjs';\nimport { map, startWith, take, takeUntil } from 'rxjs/operators';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig, DialogService } from '@fundamental-ngx/core/dialog';\nimport {\n DynamicFormFieldItem,\n DynamicFormItem,\n FormGeneratorComponent,\n FormGeneratorService,\n PreparedDynamicFormFieldItem\n} from '@fundamental-ngx/platform/form';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\nimport { FDP_PRESET_MANAGED_COMPONENT, SelectItem } from '@fundamental-ngx/platform/shared';\nimport { CollectionFilterGroup, FilterableColumnDataType, FilterType } from '@fundamental-ngx/platform/table';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n ToolbarComponent,\n ToolbarItemDirective,\n ToolbarSeparatorComponent,\n ToolbarSpacerDirective\n} from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { SmartFilterBarConditionFieldComponent } from './components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component';\nimport { SmartFilterBarSettingsDialogComponent } from './components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component';\nimport { SMART_FILTER_BAR_RENDERER_COMPONENT } from './constants';\nimport { SmartFilterBarSubjectDirective } from './directives/smart-filter-bar-subject.directive';\nimport { SmartFilterBarToolbarItemDirective } from './directives/smart-filter-bar-toolbar-item.directive';\nimport { getSelectItemValue } from './helpers';\nimport { SmartFilterBarManagedPreset, SmartFilterChangeObject } from './interfaces/smart-filter-bar-change';\nimport { SmartFilterBarCondition } from './interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarFieldDefinition } from './interfaces/smart-filter-bar-field-definition';\nimport { SmartFilterSettingsDialogConfig } from './interfaces/smart-filter-bar-settings-dialog-config';\nimport { SmartFilterBarDynamicFormFieldItem } from './interfaces/smart-filter-dynamic-form-item';\nimport { SmartFilterBar } from './smart-filter-bar.class';\nimport { SmartFilterBarService } from './smart-filter-bar.service';\n\nconst defaultColumnsLayout = 'XL4-L3-M2-S1';\n\nfunction getColumnsNumber(layout: string): number {\n return Math.max(\n ...layout.split('-').map((part) => {\n const matchArray = part.match(/\\d+/);\n\n return matchArray ? parseInt(matchArray[0], 10) : 1;\n })\n );\n}\n\n/**\n * Default dialog configuration.\n */\nconst dialogConfig: DialogConfig = {\n responsivePadding: true,\n verticalPadding: true,\n minWidth: '30rem',\n /** 88px it's the header + footer height */\n bodyMinHeight: 'calc(50vh - 5.5rem)'\n};\n\nconst smartFilterBarProvider: Provider = {\n provide: SmartFilterBar,\n useExisting: forwardRef(() => SmartFilterBarComponent)\n};\n\n@Component({\n selector: 'fdp-smart-filter-bar',\n templateUrl: './smart-filter-bar.component.html',\n styleUrl: './smart-filter-bar.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n smartFilterBarProvider,\n SmartFilterBarService,\n FormGeneratorService,\n {\n provide: FDP_PRESET_MANAGED_COMPONENT,\n useExisting: SmartFilterBarComponent\n }\n ],\n host: {\n class: 'fdp-smart-filter-bar',\n '[class.fdp-smart-filter-bar--transparent]': 'transparent'\n },\n imports: [\n ToolbarComponent,\n NgTemplateOutlet,\n ToolbarSeparatorComponent,\n SearchFieldComponent,\n ToolbarSpacerDirective,\n ButtonComponent,\n ToolbarItemDirective,\n FormGeneratorComponent,\n FdTranslatePipe\n ]\n})\nexport class SmartFilterBarComponent extends SmartFilterBar implements AfterViewInit, OnDestroy {\n /**\n * @hidden\n * Form generator component instance.\n */\n @ViewChild(FormGeneratorComponent) _formGenerator!: FormGeneratorComponent;\n\n /**\n * Subject which will provide configuration data: data source, columns definitions, etc.\n */\n @Input()\n set subject(value: SmartFilterBarSubjectDirective) {\n this._setSubject(value);\n }\n\n get subject(): SmartFilterBarSubjectDirective {\n return this._subject;\n }\n /**\n * Whether smart filter bar background should be transparent.\n */\n @Input({ transform: booleanAttribute })\n transparent = false;\n\n /**\n * Columns layout.\n */\n @Input()\n filtersColumnLayout: Nullable<string> = defaultColumnsLayout;\n\n /**\n * Whether to update filters when they are selected. Otherwise, filters will be applied only by pressing \"Go\" button.\n */\n @Input({ transform: booleanAttribute })\n liveUpdate = false;\n\n /**\n * Whether to hide Toolbar.\n */\n @Input({ transform: booleanAttribute })\n hideToolbar = false;\n\n /**\n * Event emitted when the selected filters have been changed.\n */\n @Output()\n smartFiltersChanged: EventEmitter<SmartFilterChangeObject> = new EventEmitter<SmartFilterChangeObject>();\n\n /**\n * Event emitted when selected filters has been applied (User clicked on Go button).\n */\n @Output()\n smartFiltersApplied: EventEmitter<SmartFilterChangeObject> = new EventEmitter<SmartFilterChangeObject>();\n\n /**\n * Event emitted when search input field value has been changed.\n */\n @Output()\n searchInputChanged: EventEmitter<SearchInput> = new EventEmitter<SearchInput>();\n /** @hidden */\n @ContentChildren(SmartFilterBarToolbarItemDirective)\n private readonly _toolbarItemRefs: QueryList<SmartFilterBarToolbarItemDirective>;\n\n /**\n * Calculated array of filters to apply for the subject's data source.\n */\n filterBy: CollectionFilterGroup[] = [];\n\n /** Whether the filters section should be shown. */\n showFilterBar$ = signal(true);\n\n /**\n * Search field value to apply for the subject's data source.\n */\n search: SearchInput | undefined;\n /** @Hidden */\n _toolbarItems: TemplateRef<any>[] = [];\n /** @hidden */\n _formItems = signal<DynamicFormItem[] | null>(null);\n /** Selected filters. */\n selectedFilters$ = signal<string[]>([]);\n\n /** Selected filters count. */\n selectedFiltersCount$ = computed(() => this.selectedFilters$().length);\n\n /** Loading state. */\n get loading(): boolean {\n return this._subject?.getDataSource() ? this._subject.getDataSource().isDataLoading : true;\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _subjectSubscriptions = new Subscription();\n\n /** @hidden */\n private readonly _formGeneratorReady = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _ignorePresetChange = false;\n\n /** @hidden */\n private _subject!: SmartFilterBarSubjectDirective;\n\n /** @hidden */\n private _refresh$ = new Subject<void>();\n\n /**\n * @hidden\n * Smart filter bar service may be provided by parent component that adds custom configuration, so we need to check if it's provided.\n */\n private readonly _smartFilterBarService =\n inject(SmartFilterBarService, { optional: true, skipSelf: true }) ??\n inject(SmartFilterBarService, { self: true });\n\n /** @hidden */\n constructor(\n private _dialogService: DialogService,\n private _fgService: FormGeneratorService,\n private _injector: Injector,\n private readonly _destroyRef: DestroyRef\n ) {\n super();\n this._fgService.addComponent(SmartFilterBarConditionFieldComponent, [SMART_FILTER_BAR_RENDERER_COMPONENT]);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscriptions.add(\n this._toolbarItemRefs.changes.pipe(startWith(null)).subscribe(() => {\n this._toolbarItems = this._toolbarItemRefs.toArray().map((ref) => ref.templateRef);\n })\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._unsubscribeFromSubject();\n this._refresh$.next();\n this._refresh$.complete();\n }\n\n /**\n * Transforms condition value into human-readable text.\n * @param condition Smart filter bar condition.\n * @param filterType Condition filter type.\n */\n async getDisplayValue(condition: SmartFilterBarCondition, filterType: string): Promise<string> {\n return this._smartFilterBarService.getDisplayValue(condition, filterType);\n }\n\n /** Open Filtering Settings Dialog */\n showFilteringSettings(): void {\n const columns = this._getSubjectDefinitions();\n const dialogData: SmartFilterSettingsDialogConfig = {\n fields: columns,\n filterBy: this.filterBy,\n selectedFilters: this.selectedFilters$()\n };\n\n const dialogRef = this._dialogService.open(\n SmartFilterBarSettingsDialogComponent,\n {\n ...dialogConfig,\n disablePaddings: true,\n width: '50rem',\n data: dialogData\n },\n this._injector\n );\n\n dialogRef.afterClosed.pipe(take(1)).subscribe({\n next: (selectedFilters: string[]) => {\n this._setSelectedFilters(selectedFilters);\n },\n error: () => {}\n });\n }\n\n /** Callback function when search query changed. */\n onSearchInputChange(event: SearchInput): void {\n this.search = event;\n this.searchInputChanged.emit(event);\n }\n\n /** Clear search query. */\n cancelSearch(): void {\n this.search = undefined;\n\n if (this.liveUpdate) {\n this.submitForm();\n }\n }\n\n /**\n * Submits filters and search form.\n */\n submitForm(): void {\n this._formGenerator.submit();\n }\n\n /** Method for setting predefined configuration. */\n async setPreset(data: SmartFilterBarManagedPreset): Promise<void> {\n this._ignorePresetChange = true;\n data.filterBy = data.filterBy || [];\n this.filterBy = data.filterBy;\n this.search = data.search;\n\n this._refresh$.next();\n this._refresh$.complete();\n this._refresh$ = new Subject<void>();\n\n this._formGeneratorReady\n .pipe(\n filter((value) => value),\n takeUntil(this._refresh$)\n )\n .subscribe(async () => {\n // Reset form\n this._fgService.resetForm(this._formGenerator.form);\n\n // Set new data\n for (const filterBy of this.filterBy) {\n const control = this._fgService.getFormControl(this._formGenerator.form, filterBy.field);\n\n if (!control) {\n continue;\n }\n\n const formItem = control.formItem as PreparedDynamicFormFieldItem;\n\n const condition = this._smartFilterBarService.transformCollectionFilter(filterBy);\n\n const selectedConditions = await this._smartFilterBarService.getConditionFieldSelectedVariants(\n formItem,\n condition\n );\n control?.setValue(selectedConditions);\n }\n\n this._setSelectedFilters(this.filterBy.map((filterBy) => filterBy.field));\n\n const source = this.subject.getDataSource();\n source.dataProvider.setFilters(this.filterBy, this.search);\n this.subject.getSubject().fetch();\n });\n }\n\n /** Returns current preset configuration. */\n getCurrentPreset(): SmartFilterBarManagedPreset {\n return {\n search: this.search,\n filterBy: this.filterBy\n };\n }\n\n /**\n * @hidden\n * Callback function when form generator form has been successfully validated and submitted.\n */\n _onFormSubmitted(event: any): void {\n const conditions = this._generateCollectionFilterGroups(event);\n this._applyFiltering(conditions);\n }\n\n /**\n * @hidden\n * Callback method when form has been created.\n * Populates selected filters array with user-defined default filters.\n */\n _onFormCreated(): void {\n if (this.subject) {\n this._setSelectedFilters([...this.subject.getDefaultFields(), ...this.selectedFilters$()]);\n }\n\n this._formGenerator.form.valueChanges\n .pipe(debounceTime(50), takeUntilDestroyed(this._destroyRef))\n .subscribe(async () => {\n const conditions = await this.getFormattedConditions();\n this.smartFiltersChanged.emit({ filterBy: conditions, search: this.search, subject: this.subject });\n\n if (!this.liveUpdate) {\n return;\n }\n this._applyFiltering(conditions);\n });\n\n this._formGeneratorReady.next(true);\n }\n\n /**\n * Toggles Smart Filter Bar filters section.\n */\n toggleFilterBar(): void {\n this.showFilterBar$.update((show) => !show);\n }\n\n /**\n * Formats raw filters object into array of grouped filters.\n * @returns Array of grouped filters.\n */\n async getFormattedConditions(): Promise<CollectionFilterGroup[]> {\n const formValue = await this._fgService.getFormValue(this._formGenerator.form);\n return this._generateCollectionFilterGroups(formValue);\n }\n\n /** @hidden */\n private _generateCollectionFilterGroups(value: {\n [key: string]: SmartFilterBarCondition[];\n }): CollectionFilterGroup[] {\n const collectionFilterGroups: CollectionFilterGroup[] = [];\n\n const columns = this._getSubjectDefinitions();\n\n Object.entries(value)\n .filter(([, fieldConditions]) => !!fieldConditions)\n .forEach(([fieldName, fieldConditions]) => {\n const column = columns.find((c) => c.name === fieldName) as SmartFilterBarFieldDefinition;\n const filterGroup: CollectionFilterGroup = {\n filters: [],\n strategy: column.conditionStrategy,\n field: column.key\n };\n fieldConditions.forEach((condition) => {\n filterGroup.filters.push({\n strategy: condition.operator,\n field: column.key,\n value: condition.value,\n value2: condition.value2,\n type: column.dataType\n });\n });\n\n collectionFilterGroups.push(filterGroup);\n });\n\n // Remove empty filter objects.\n return collectionFilterGroups.filter((filterGroup) => filterGroup.filters?.length > 0);\n }\n\n /** @hidden */\n private _setSubject(subject: SmartFilterBarSubjectDirective): void {\n if (!subject) {\n return;\n }\n\n this._subject = subject;\n this.unsubscribeFromSubject();\n this._listenToSubjectColumns();\n }\n\n /** @hidden */\n private unsubscribeFromSubject(): void {\n if (!this._subject) {\n return;\n }\n this._subjectSubscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _listenToSubjectColumns(): void {\n this._subjectSubscriptions = new Subscription();\n this._subjectSubscriptions.add(\n this._subject.fieldsStream.subscribe(async (columns: SmartFilterBarFieldDefinition[]) => {\n await this._generateForm(columns.filter((c) => c.filterable));\n })\n );\n }\n\n /**\n * @hidden\n * Generates form items to be consumed by form generator component.\n * @param columns columns definition\n */\n private async _generateForm(columns: SmartFilterBarFieldDefinition[]): Promise<void> {\n const items: DynamicFormFieldItem[] = [];\n const columnsNumber = getColumnsNumber(this.filtersColumnLayout ?? '');\n let currentColumn = 1;\n\n if (columns.length === 0) {\n return;\n }\n\n columns.forEach((column) => {\n let item: SmartFilterBarDynamicFormFieldItem = this._generateBaseFieldItem(column);\n\n if (column.required) {\n this.selectedFilters$.update((filters) => {\n filters.push(column.name);\n return filters;\n });\n }\n\n switch (column.filterType) {\n case FilterType.SINGLE:\n case FilterType.CATEGORY:\n item.guiOptions.additionalData.type = 'select';\n item.guiOptions.inline = false;\n break;\n case FilterType.MULTI:\n item.guiOptions.additionalData.type = 'multi-input';\n break;\n case FilterType.CUSTOM:\n item = this._generateCustomFilterFieldItem(column, item);\n break;\n case FilterType.INPUT:\n default:\n item = this._generateInputFieldItem(column, item);\n break;\n }\n\n item.guiOptions.column = currentColumn;\n currentColumn += 1;\n\n if (currentColumn > columnsNumber) {\n currentColumn = 1;\n }\n\n items.push(item);\n });\n\n this._formItems.set(items);\n }\n\n /** @hidden */\n private _generateCustomFilterFieldItem(\n column: SmartFilterBarFieldDefinition,\n item: SmartFilterBarDynamicFormFieldItem\n ): SmartFilterBarDynamicFormFieldItem {\n if (!column.customFilterType) {\n return item;\n }\n item.guiOptions.additionalData.type = column.customFilterType;\n item.guiOptions.additionalData = Object.assign(\n item.guiOptions.additionalData,\n this._smartFilterBarService.getCustomFilterConfiguration(column.customFilterType)\n );\n\n item.type = item.guiOptions.additionalData.rendererComponent\n ? `${item.guiOptions.additionalData.type}-renderer`\n : item.type;\n item.transformer = item.guiOptions.additionalData.valueTransformer;\n\n return item;\n }\n\n /**\n * @hidden\n * Generates form item based on data type.\n * @param column\n * @param item\n * @returns\n */\n private _generateInputFieldItem(\n column: SmartFilterBarFieldDefinition,\n item: SmartFilterBarDynamicFormFieldItem\n ): SmartFilterBarDynamicFormFieldItem {\n switch (column.dataType) {\n case FilterableColumnDataType.DATE:\n item.guiOptions.additionalData.type = 'datepicker';\n break;\n case FilterableColumnDataType.NUMBER:\n item.guiOptions.additionalData.controlType = 'number';\n break;\n case FilterableColumnDataType.BOOLEAN:\n case FilterableColumnDataType.STRING:\n default:\n item.guiOptions.additionalData.controlType = 'text';\n break;\n }\n\n return item;\n }\n\n /**\n * @hidden\n * Generates base form item object to be consumed by form generator component.\n * @param column column definition\n * @returns base form item object.\n */\n private _generateBaseFieldItem(column: SmartFilterBarFieldDefinition): SmartFilterBarDynamicFormFieldItem {\n return {\n name: column.name,\n message: column.label,\n required: column.required,\n type: SMART_FILTER_BAR_RENDERER_COMPONENT,\n placeholder: ' ',\n validators: column.required ? [Validators.required] : [],\n choices: column.hasOptions ? this._getFilterDefaultOptions(column.key, column.filterType) : undefined,\n transformer: (itemValue) => getSelectItemValue(itemValue),\n guiOptions: {\n additionalData: {\n type: 'input',\n dataType: column.dataType,\n filterType: column.filterType,\n controlType: 'text',\n choices: column.hasOptions ? this._getFilterAvailableOptions(column.key) : undefined\n }\n },\n when: () => this.selectedFilters$().includes(column.name)\n } as SmartFilterBarDynamicFormFieldItem;\n }\n\n /**\n * @hidden\n * Retrieves available options for particular column by using data source method.\n * @param column property name of the data source items.\n * @returns {Observable<SelectItem[]>} Observable with the array of available options.\n */\n private _getFilterAvailableOptions(column: string): () => Observable<SelectItem[]> {\n return () => this._getFieldVariants(column);\n }\n\n /** @hidden */\n private _getFilterDefaultOptions(column: string, filterType: FilterType): () => Promise<any[]> {\n return async () => {\n const variants = await firstValueFrom(this._getFieldVariants(column).pipe(take(1)));\n\n const availableDefaultConditions: SmartFilterBarCondition[] = [];\n\n for (const option of variants) {\n const condition: SmartFilterBarCondition = {\n value: option.value,\n operator: 'equalTo'\n };\n\n condition.displayValue = await this.getDisplayValue(condition, filterType);\n\n availableDefaultConditions.push(condition);\n }\n\n return availableDefaultConditions;\n };\n }\n\n /** @hidden */\n private _getFieldVariants(column: string): Observable<SelectItem[]> {\n return this.subject.getFieldVariants(column).pipe(\n take(1),\n map((data) => data.filter((item, index) => data.findIndex((_item) => _item.value === item.value) === index))\n );\n }\n\n /** @hidden */\n private _getSubjectDefinitions(): SmartFilterBarFieldDefinition[] {\n return this.subject?.getSubjectFields() || [];\n }\n\n /**\n * @hidden\n * Sets provided filters directly to the data source.\n * @param filters array of filters.\n */\n private _applyFiltering(filters: CollectionFilterGroup[]): void {\n // Apply outside filtering and force subject to fetch new data.\n const source = this.subject.getDataSource();\n this.filterBy = filters;\n source.dataProvider.setFilters(filters, this.search);\n this.subject.getSubject().fetch();\n const emittedValue: SmartFilterBarManagedPreset = { search: this.search, filterBy: this.filterBy };\n this.smartFiltersApplied.emit({ ...emittedValue, subject: this._subject });\n\n if (!this._ignorePresetChange) {\n this.presetChanged.emit(emittedValue);\n }\n this._ignorePresetChange = false;\n }\n\n /** @hidden */\n private _unsubscribeFromSubject(): void {\n this._subjectSubscriptions.unsubscribe();\n this._subjectSubscriptions = new Subscription();\n }\n\n /** @hidden */\n private _setSelectedFilters(filters: string[]): void {\n this.selectedFilters$.set(filters.filter((f: string, i: number) => filters.indexOf(f) === i));\n this._formGenerator.refreshStepsVisibility();\n }\n}\n","@if (!hideToolbar) {\n <fd-toolbar [shouldOverflow]=\"true\" fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <div fd-toolbar-item>\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n </div>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <fdp-search-field\n fd-toolbar-item\n (inputChange)=\"onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"cancelSearch()\"\n [disabled]=\"loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"('platformSmartFilterBar.searchPlaceholder' | fdTranslate)()\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <button\n fd-button\n (click)=\"submitForm()\"\n fdType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"loading\"\n [label]=\"('platformSmartFilterBar.submitButtonLabel' | fdTranslate)()\"\n ></button>\n }\n <button\n fd-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"loading\"\n [ariaLabel]=\"('platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate)()\"\n ></button>\n <button\n fd-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n ('platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: selectedFiltersCount$() })()\n \"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n <button\n fd-button\n (click)=\"toggleFilterBar()\"\n [label]=\"\n (\n (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n )()\n \"\n fdType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n </fd-toolbar>\n}\n@if (_formItems(); as formItems) {\n <div class=\"fdp-smart-filter-bar__filters\" fd-toolbar-item [hidden]=\"!showFilterBar$()\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n </div>\n}\n","import { forwardRef, Provider } from '@angular/core';\nimport { SmartFilterBar } from '../smart-filter-bar.class';\nimport { SmartFilterBarComponent } from '../smart-filter-bar.component';\n\nexport const smartFilterBarProvider: Provider = {\n provide: SmartFilterBar,\n useExisting: forwardRef(() => SmartFilterBarComponent)\n};\n","import { NgModule } from '@angular/core';\n\nimport { SmartFilterBarComponent } from './smart-filter-bar.component';\n\nimport { SmartFilterBarConditionFieldComponent } from './components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component';\nimport { SmartFilterBarConditionsDialogComponent } from './components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component';\nimport { SmartFilterBarSettingsDialogComponent } from './components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component';\nimport { SmartFilterBarFieldDefinitionDirective } from './directives/smart-filter-bar-field-definition.directive';\nimport { SmartFilterBarSubjectDirective } from './directives/smart-filter-bar-subject.directive';\nimport { SmartFilterBarToolbarItemDirective } from './directives/smart-filter-bar-toolbar-item.directive';\n\nconst components = [\n SmartFilterBarComponent,\n SmartFilterBarSettingsDialogComponent,\n SmartFilterBarFieldDefinitionDirective,\n SmartFilterBarSubjectDirective,\n SmartFilterBarConditionsDialogComponent,\n SmartFilterBarConditionFieldComponent,\n SmartFilterBarToolbarItemDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformSmartFilterBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.SmartFilterBarService","smartFilterBarProvider","startWith","i2"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-platform-smart-filter-bar.mjs","sources":["../../../../libs/platform/smart-filter-bar/smart-filter-bar.service.ts","../../../../libs/platform/smart-filter-bar/helpers.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.html","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.html","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-settings-dialog/data-provider.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts","../../../../libs/platform/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.html","../../../../libs/platform/smart-filter-bar/constants.ts","../../../../libs/platform/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.ts","../../../../libs/platform/smart-filter-bar/directives/smart-filter-bar-subject.directive.ts","../../../../libs/platform/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.class.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.component.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.component.html","../../../../libs/platform/smart-filter-bar/providers/smart-filter-bar.provider.ts","../../../../libs/platform/smart-filter-bar/smart-filter-bar.module.ts","../../../../libs/platform/smart-filter-bar/fundamental-ngx-platform-smart-filter-bar.ts"],"sourcesContent":["import { Injectable, Type } from '@angular/core';\nimport { FdDate } from '@fundamental-ngx/core/datetime';\nimport {\n BaseDynamicFormGeneratorControl,\n FormGeneratorService,\n PreparedDynamicFormFieldItem\n} from '@fundamental-ngx/platform/form';\nimport { SelectItem, isSelectItem } from '@fundamental-ngx/platform/shared';\nimport {\n CollectionFilterGroup,\n FilterAllStrategy,\n FilterableColumnDataType,\n getFilterStrategiesBasedOnDataType\n} from '@fundamental-ngx/platform/table';\n\nimport { selectStrategy } from '@fundamental-ngx/cdk/utils';\nimport { SmartFilterBarCondition } from './interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarCustomFilterConfig } from './interfaces/smart-filter-bar-custom-filter-config';\n\n@Injectable()\nexport class SmartFilterBarService {\n /** @hidden */\n private _customFilterConditions: Map<Type<BaseDynamicFormGeneratorControl>, SmartFilterBarCustomFilterConfig> =\n new Map<Type<BaseDynamicFormGeneratorControl>, SmartFilterBarCustomFilterConfig>();\n\n /** @hidden */\n constructor(private _fgService: FormGeneratorService) {}\n\n /**\n * Adds custom filter type to the smart filter bar.\n * @param options Configuration options.\n * @returns true if component was added successfully.\n */\n addCustomFilter(options: SmartFilterBarCustomFilterConfig): boolean {\n if (!options.conditionComponent && options.rendererComponent) {\n options.conditionComponent = options.rendererComponent;\n }\n\n if (!options.conditionComponent) {\n return false;\n }\n\n const result = this._fgService.addComponent(options.conditionComponent, options.types);\n\n if (result) {\n this._customFilterConditions.set(options.conditionComponent, options);\n }\n\n if (result && options.rendererComponent) {\n this._fgService.addComponent(\n options.rendererComponent,\n options.types.map((t) => `${t}-renderer`)\n );\n }\n\n return result;\n }\n\n /**\n * Returns provided configuration object of the custom filter.\n * @param type Filter type.\n * @returns Configuration object.\n */\n getCustomFilterConfiguration(type: string): SmartFilterBarCustomFilterConfig | undefined {\n const componentDefinition = this._fgService.getComponentDefinitionByType(type);\n\n if (!componentDefinition) {\n return undefined;\n }\n\n return this._customFilterConditions.get(componentDefinition.component);\n }\n\n /**\n * Returns applicable condition options of the filter.\n * @param type Filter type.\n * @param dataType Filter data type.\n * @returns Array of applicable condition options.\n */\n getApplicableFilterConditions(\n type: string,\n dataType: FilterableColumnDataType = FilterableColumnDataType.STRING\n ): FilterAllStrategy[] {\n const componentDefinition = this._fgService.getComponentDefinitionByType(type);\n\n const defaultConditions: FilterAllStrategy[] = getFilterStrategiesBasedOnDataType(\n dataType\n ) as FilterAllStrategy[];\n\n if (!componentDefinition) {\n return defaultConditions;\n }\n\n const filterDefinition = this._customFilterConditions.get(componentDefinition.component);\n\n return filterDefinition?.filterStrategies || defaultConditions;\n }\n\n /** @hidden */\n async getDisplayValue(condition: SmartFilterBarCondition, filterType: string): Promise<string> {\n const configuration = this.getCustomFilterConfiguration(filterType);\n\n if (configuration?.valueRenderer) {\n const obj = configuration?.valueRenderer(condition);\n const strategy = selectStrategy(obj);\n\n let returnValue!: string;\n\n await strategy.createSubscription(obj, (value) => {\n returnValue = value;\n });\n\n return returnValue;\n }\n\n const value1 = this._normalizeValue(condition.value);\n const value2 = this._normalizeValue(condition.value2);\n\n switch (condition.operator) {\n case 'equalTo':\n return `=${value1}`;\n case 'contains':\n return `*${value1}*`;\n case 'between':\n return `${value1}...${value2}`;\n case 'beginsWith':\n return `${value1}*`;\n case 'endsWith':\n return `*${value1}`;\n case 'greaterThan':\n return `>${value1}`;\n case 'greaterThanOrEqualTo':\n return `>=${value1}`;\n case 'lessThan':\n return `<${value1}`;\n case 'lessThanOrEqualTo':\n return `<=${value1}`;\n case 'after':\n return `>${value1}`;\n case 'onOrAfter':\n return `>=${value1}`;\n case 'before':\n return `<${value1}`;\n case 'beforeOrOn':\n return `<=${value1}`;\n default:\n return `${value1}`;\n }\n }\n\n /**\n * Method for normalizing generated conditions to display in human-readable format.\n * @returns Formatted array of conditions.\n * @param formItem\n * @param conditions\n */\n async normalizeConditions(\n formItem: PreparedDynamicFormFieldItem,\n conditions: SmartFilterBarCondition[]\n ): Promise<SmartFilterBarCondition[]> {\n const normalizedConditions: SmartFilterBarCondition[] = [];\n\n for (const condition of conditions) {\n const newCondition = Object.assign({}, condition);\n\n newCondition.displayValue = await this.getDisplayValue(\n newCondition,\n formItem.guiOptions?.additionalData.type\n );\n\n normalizedConditions.push(newCondition);\n }\n\n return normalizedConditions;\n }\n\n /**\n * Returns formatted condition variants.\n */\n async getConditionFieldSelectedVariants(\n formItem: PreparedDynamicFormFieldItem,\n conditions: SmartFilterBarCondition[]\n ): Promise<SelectItem[]> {\n return (await this.normalizeConditions(formItem, conditions)).map((c: any) => {\n if (isSelectItem(c)) {\n return c;\n }\n\n const condition: SelectItem = {\n label: c.displayValue,\n value: c\n };\n\n return condition;\n });\n }\n\n /**\n * Transforms collection filter into smart filter bar condition.\n */\n transformCollectionFilter(filterGroup: CollectionFilterGroup): SmartFilterBarCondition[] {\n return filterGroup.filters.map((filter) => {\n const condition: SmartFilterBarCondition = {\n operator: filter.strategy,\n value: filter.value,\n value2: filter.value2\n };\n\n return condition;\n });\n }\n\n /**\n * @hidden\n * Normalizes condition value.\n * @param value\n * @returns\n */\n private _normalizeValue(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this._normalizeValue(v)).join(', ');\n }\n\n if (isSelectItem(value)) {\n return value.label;\n }\n\n if (value instanceof FdDate) {\n return value.toDateString();\n }\n\n return value;\n }\n}\n","import { isSelectItem } from '@fundamental-ngx/platform/shared';\n\n/** @hidden */\nexport function getSelectItemValue(item: any): any {\n if (Array.isArray(item)) {\n item = item.map((i) => getSelectItemValue(i));\n }\n\n return isSelectItem(item) ? item.value : item;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n QueryList,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { FormsModule } from '@angular/forms';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarElementDirective, BarLeftDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogRef\n} from '@fundamental-ngx/core/dialog';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe, resolveTranslationSignalFn } from '@fundamental-ngx/i18n';\nimport { DynamicFormControl, DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport { FILTER_STRATEGY, FilterAllStrategy } from '@fundamental-ngx/platform/table';\nimport { getSelectItemValue } from '../../helpers';\nimport { SmartFilterBarCondition, SmartFilterBarConditionBuilder } from '../../interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarStrategy, SmartFilterBarStrategyLabels } from '../../interfaces/strategy-labels.type';\nimport { SmartFilterBarService } from '../../smart-filter-bar.service';\n\n@Component({\n selector: 'fdp-smart-filter-bar-conditions-dialog',\n templateUrl: './smart-filter-bar-conditions-dialog.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n FormsModule,\n LayoutGridComponent,\n LayoutGridRowDirective,\n LayoutGridColDirective,\n FormGeneratorComponent,\n ButtonComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n BusyIndicatorComponent,\n FdTranslatePipe\n ]\n})\nexport class SmartFilterBarConditionsDialogComponent {\n /**\n * Generated condition forms.\n */\n @ViewChildren(FormGeneratorComponent)\n formGenerators!: QueryList<FormGeneratorComponent>;\n\n /** Condition builder config. */\n config: SmartFilterBarConditionBuilder;\n\n /** Available condition operator options. */\n conditionOperatorOptions: SelectItem[] = [];\n\n /** @hidden */\n _formItems: DynamicFormItem[][] = [];\n\n /** @hidden */\n loaded = false;\n\n /** @hidden */\n private readonly _conditionLabelKeys: SmartFilterBarStrategyLabels = {\n contains: 'filterConditionContains',\n equalTo: 'filterConditionEqualTo',\n between: 'filterConditionBetween',\n beginsWith: 'filterConditionBeginsWith',\n endsWith: 'filterConditionEndsWith',\n lessThan: 'filterConditionLessThan',\n lessThanOrEqualTo: 'filterConditionLessThanOrEqualTo',\n greaterThan: 'filterConditionGreaterThan',\n greaterThanOrEqualTo: 'filterConditionGreaterThanOrEqualTo',\n after: 'filterConditionAfter',\n onOrAfter: 'filterConditionOnOrAfter',\n before: 'filterConditionBefore',\n beforeOrOn: 'filterConditionBeforeOrOn'\n };\n\n /** @hidden */\n private _submittedForms: any[] = [];\n\n /** @hidden */\n private resolveTranslation = resolveTranslationSignalFn();\n\n /** @hidden */\n constructor(\n private _dialogRef: DialogRef<SmartFilterBarConditionBuilder, SmartFilterBarCondition[]>,\n private readonly _cdr: ChangeDetectorRef,\n private _smartFilterBarService: SmartFilterBarService\n ) {\n this._init();\n }\n\n /**\n * Adds empty condition.\n */\n addCondition(): void {\n this._formItems.push(this._generateFormGeneratorItems());\n }\n\n /**\n * Removes condition at defined index\n * @param index Index of the condition in the array.\n */\n removeCondition(index: number): void {\n this._formItems.splice(index, 1);\n\n if (this._formItems.length === 0) {\n this.addCondition();\n }\n }\n\n /**\n * Submits all condition forms.\n */\n applyConditions(): void {\n this._cdr.detectChanges();\n this._submittedForms = [];\n this.formGenerators.toArray().forEach((formGenerator) => formGenerator.submit());\n }\n\n /**\n * @hidden\n * Callback function when form generator form has been submitted.\n * Will close dialog in case if all forms are valid.\n * @param form Form generator form value.\n */\n _onFormSubmitted(form: SmartFilterBarCondition): void {\n this._submittedForms.push(form);\n\n if (this._submittedForms.length !== this.formGenerators.length) {\n return;\n }\n\n const formsResult = this._submittedForms.map((f) => {\n f.value = f.value1 !== undefined ? f.value1 : f.value;\n return f;\n });\n\n this._dialogRef.close(\n formsResult.filter((c: SmartFilterBarCondition) => c.value !== undefined && c.value !== null)\n );\n }\n\n /** @hidden */\n _cancel(): void {\n this._dialogRef.dismiss();\n }\n\n /** @hidden */\n private _init(): void {\n this.config = this._dialogRef.data;\n\n this.conditionOperatorOptions = this._getApplicableConditionOperators();\n\n this._addExistingConditions(getSelectItemValue(this.config.conditions));\n\n if (this.config.conditions.length === 0) {\n // Add first empty condition\n this.addCondition();\n }\n this.loaded = true;\n this._cdr.markForCheck();\n }\n\n /**\n * @hidden\n * Returns applicable condition options of the filter.\n * @returns Array of applicable condition options.\n */\n private _getApplicableConditionOperators(): SelectItem[] {\n const strategy = this._smartFilterBarService.getApplicableFilterConditions(\n this.config.filterType,\n this.config.dataType\n );\n\n const labelsConfig: Record<SmartFilterBarStrategy, string> = { ...this._conditionLabelKeys };\n for (const strategyItem of Object.keys(this._conditionLabelKeys) as SmartFilterBarStrategy[]) {\n const translationKey = 'platformSmartFilterBar.' + labelsConfig[strategyItem];\n labelsConfig[strategyItem] = this.resolveTranslation(\n translationKey as `platformSmartFilterBar.${SmartFilterBarStrategyLabels[SmartFilterBarStrategy]}`\n )();\n }\n\n return strategy.map((s: FilterAllStrategy) => ({\n label: labelsConfig![s],\n value: s\n }));\n }\n\n /**\n * Transforms filter conditions into form generator form items array.\n * @param conditions existing smart filter bar filter conditions.\n */\n private _addExistingConditions(conditions: SmartFilterBarCondition[]): void {\n conditions.forEach((condition) => {\n const conditionGroup = this._generateFormGeneratorItems(condition);\n\n this._formItems.push(conditionGroup);\n });\n }\n\n /** @hidden */\n private _generateFormGeneratorItems(condition?: SmartFilterBarCondition): DynamicFormItem[] {\n return [\n {\n name: 'operator',\n message: 'operator',\n default: condition\n ? this.conditionOperatorOptions.find((o) => o.value === condition.operator)?.value\n : this.conditionOperatorOptions[0].value,\n type: 'select',\n choices: this.conditionOperatorOptions,\n required: true,\n guiOptions: {\n inline: false,\n column: 1,\n noLabelLayout: true\n }\n },\n {\n name: 'value',\n message: 'value',\n default: condition?.value,\n type: this.config.filterType,\n choices: this.config.choices,\n placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValuePlaceholder')(),\n controlType: this.config.controlType,\n when: (value) => value.operator !== FILTER_STRATEGY.BETWEEN,\n onchange: (value, _, control: DynamicFormControl) => {\n control.parent?.get('value1')?.setValue(value, { emitEvent: false });\n },\n guiOptions: {\n inline: false,\n column: 2,\n noLabelLayout: true\n }\n },\n {\n name: 'value1',\n message: 'value1',\n default: condition?.value,\n type: this.config.filterType,\n choices: this.config.choices,\n placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValueFromPlaceholder')(),\n controlType: this.config.controlType,\n when: (value) => value.operator === FILTER_STRATEGY.BETWEEN,\n onchange: (value, _, control: DynamicFormControl) => {\n control.parent?.get('value')?.setValue(value, { emitEvent: false });\n },\n guiOptions: {\n inline: false,\n column: 2,\n noLabelLayout: true\n }\n },\n {\n name: 'value2',\n message: 'value2',\n default: condition?.value2,\n type: this.config.filterType,\n choices: this.config.choices,\n placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValueToPlaceholder')(),\n required: true,\n controlType: this.config.controlType,\n when: (value) => value?.operator === FILTER_STRATEGY.BETWEEN,\n guiOptions: {\n inline: false,\n column: 3,\n noLabelLayout: true\n }\n }\n ];\n }\n}\n","<fd-dialog class=\"fdp-smart-filter-bar__conditions-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 [headerSize]=\"4\" fd-title>{{ config.header }}</h4>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (loaded) {\n <form>\n @for (condition of _formItems; track condition; let i = $index) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <div colGrow fdLayoutGridCol>\n <!-- wrapping \"formSubmitted\" event payload as any, because it's type is more generic than we're expecting -->\n <fdp-form-generator\n (formSubmitted)=\"_onFormSubmitted($any($event))\"\n [formItems]=\"condition\"\n [unifiedLayout]=\"false\"\n columnLayout=\"XL3-L3-M3-S3\"\n [noAdditionalContent]=\"true\"\n ></fdp-form-generator>\n </div>\n <div class=\"fdp-smart-filter-bar__actions-column\" colGrow fdLayoutGridCol>\n <button\n fd-button\n (click)=\"removeCondition(i)\"\n fdType=\"transparent\"\n glyph=\"decline\"\n [title]=\"\n (\n 'platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle'\n | fdTranslate\n )()\n \"\n type=\"button\"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n }\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <div colGrow fdLayoutGridCol>&nbsp;</div>\n <div class=\"fdp-smart-filter-bar__actions-column\" fdLayoutGridCol>\n <button\n fd-button\n (click)=\"addCondition()\"\n [label]=\"\n ('platformSmartFilterBar.defineConditionsAddConditionButtonLabel' | fdTranslate)()\n \"\n ></button>\n </div>\n </div>\n </fd-layout-grid>\n </form>\n } @else {\n <div [style.text-align]=\"'center'\" [style.margin.rem]=\"1\">\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\n </div>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n (click)=\"applyConditions()\"\n fdType=\"emphasized\"\n [label]=\"('platformSmartFilterBar.defineConditionsSubmitButtonLabel' | fdTranslate)()\"\n >\n </fd-button-bar>\n <fd-button-bar\n (click)=\"_cancel()\"\n fdType=\"transparent\"\n [label]=\"('platformSmartFilterBar.defineConditionsCancelButton' | fdTranslate)()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","import { Directive, Injector, inject } from '@angular/core';\nimport { DialogService } from '@fundamental-ngx/core/dialog';\nimport { BaseDynamicFormGeneratorControl, DynamicFormControl } from '@fundamental-ngx/platform/form';\nimport { take } from 'rxjs/operators';\nimport { SmartFilterBarCondition, SmartFilterBarConditionBuilder } from '../../interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarService } from '../../smart-filter-bar.service';\nimport { SmartFilterBarConditionsDialogComponent } from '../smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component';\n\n@Directive()\nexport abstract class BaseSmartFilterBarConditionField extends BaseDynamicFormGeneratorControl {\n protected readonly _dialogService = inject(DialogService);\n protected readonly _smartFilterBarService = inject(SmartFilterBarService);\n protected readonly _injector = inject(Injector);\n /**\n * Method for opening conditions configuration dialog.\n */\n openConditionsDialog: () => void = () => {\n const currentValue = this.getField().value;\n\n const dialogData: SmartFilterBarConditionBuilder = {\n header: this.formItem.message as string,\n dataType: this.formItem.guiOptions?.additionalData.dataType,\n filterType: this.formItem.guiOptions?.additionalData.type,\n conditions: currentValue || [],\n choices: this.formItem.guiOptions?.additionalData.choices,\n controlType: this.formItem.guiOptions?.additionalData.controlType\n };\n\n const dialogRef = this._dialogService.open(\n SmartFilterBarConditionsDialogComponent,\n {\n data: dialogData,\n width: '67.5rem',\n minHeight: '30%'\n },\n this._injector\n );\n\n dialogRef.afterClosed.pipe(take(1)).subscribe({\n next: async (conditions: SmartFilterBarCondition[]) => {\n const field = this.getField();\n const normalizedConditions = await this._smartFilterBarService.getConditionFieldSelectedVariants(\n this.formItem,\n conditions\n );\n field.setValue(normalizedConditions);\n },\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n error: (_) => {}\n });\n };\n\n /**\n * Method for retrieving current form control of the generated form.\n * @returns Found form control.\n */\n getField(): DynamicFormControl {\n return this.form.get(`${this.formGroupName}.${this.name}`) as DynamicFormControl;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { PlatformMultiInputComponent } from '@fundamental-ngx/platform/form';\nimport { BaseSmartFilterBarConditionField } from './base-smart-filter-bar-condition-field';\n\n@Component({\n selector: 'fdp-smart-filter-bar-condition-field',\n templateUrl: './smart-filter-bar-condition-field.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [FormsModule, ReactiveFormsModule, PlatformMultiInputComponent, FdTranslatePipe]\n})\nexport class SmartFilterBarConditionFieldComponent extends BaseSmartFilterBarConditionField {}\n","<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [addOnButtonClickFn]=\"openConditionsDialog\"\n [dataSource]=\"formItem.choices || []\"\n [formControlName]=\"name\"\n [name]=\"name\"\n [placeholder]=\"formItem.placeholder || formItem.message\"\n [validationStrategy]=\"['submitted']\"\n displayKey=\"displayValue\"\n [glyphAriaLabel]=\"('platformSmartFilterBar.manageFieldConditions' | fdTranslate)()\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n","import { ArrayTableDataProvider } from '@fundamental-ngx/platform/table';\nimport { FieldFilterItem } from '../../interfaces/smart-filter-bar-field-filter-item';\nimport { SmartFilterBarVisibilityCategory } from '../../interfaces/smart-filter-bar-visibility-category';\n\nexport class SmartFilterBarOptionsDataProvider extends ArrayTableDataProvider<FieldFilterItem> {\n /** @hidden */\n constructor(items: FieldFilterItem[]) {\n super(items);\n }\n\n /**\n * Filters rows depending on applied filter.\n * @param option filter visibility category.\n */\n filter(option: SmartFilterBarVisibilityCategory): void {\n let items: FieldFilterItem[];\n\n switch (option) {\n case 'visible':\n items = this._getVisibleItems();\n break;\n case 'active':\n items = this._getActiveItems();\n break;\n case 'visibleAndActive':\n items = this._getVisibleAndActiveItems();\n break;\n case 'mandatory':\n items = this._getMandatoryItems();\n break;\n case 'all':\n default:\n items = this._getAllItems();\n break;\n }\n\n this.items$.next(items);\n }\n\n /** @hidden */\n private _getAllItems(): FieldFilterItem[] {\n return this.items;\n }\n\n /** @hidden */\n private _getVisibleItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.visible);\n }\n\n /** @hidden */\n private _getActiveItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.active);\n }\n\n /** @hidden */\n private _getVisibleAndActiveItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.visible || i.active);\n }\n\n /** @hidden */\n private _getMandatoryItems(): FieldFilterItem[] {\n return this.items.filter((i) => i.mandatory);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal\n} from '@angular/core';\nimport { Subscription, asyncScheduler } from 'rxjs';\nimport { observeOn } from 'rxjs/operators';\n\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogRef\n} from '@fundamental-ngx/core/dialog';\nimport { FdpSelectionChangeEvent, SelectComponent } from '@fundamental-ngx/platform/form';\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport {\n RESETTABLE_TOKEN,\n ResetButtonComponent,\n Resettable,\n Table,\n TableColumnComponent,\n TableComponent,\n TableDataSource,\n TableRowSelectionChangeEvent,\n TableToolbarActionsComponent,\n TableToolbarComponent\n} from '@fundamental-ngx/platform/table';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport {\n FD_LANGUAGE_SIGNAL,\n FdLanguageKeyIdentifier,\n FdTranslatePipe,\n TranslationResolver\n} from '@fundamental-ngx/i18n';\nimport {\n FdpCellDef,\n FdpTableCell,\n TableDataSourceDirective,\n TableHeaderResizerDirective,\n TableInitialStateDirective\n} from '@fundamental-ngx/platform/table-helpers';\nimport { SmartFilterBarFieldDefinition } from '../../interfaces/smart-filter-bar-field-definition';\nimport { FieldFilterItem } from '../../interfaces/smart-filter-bar-field-filter-item';\nimport { SmartFilterSettingsDialogConfig } from '../../interfaces/smart-filter-bar-settings-dialog-config';\nimport { SmartFilterBarVisibilityCategoryLabels } from '../../interfaces/smart-filter-bar-visibility-category';\nimport { SmartFilterBarOptionsDataProvider } from './data-provider';\n\n@Component({\n selector: 'fdp-smart-filter-bar-settings-dialog',\n templateUrl: './smart-filter-bar-settings-dialog.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: RESETTABLE_TOKEN, useExisting: SmartFilterBarSettingsDialogComponent }],\n imports: [\n DialogComponent,\n DialogHeaderComponent,\n TemplateDirective,\n BarLeftDirective,\n BarElementDirective,\n TitleComponent,\n BarRightDirective,\n ResetButtonComponent,\n CdkScrollable,\n ScrollbarDirective,\n DialogBodyComponent,\n TableDataSourceDirective,\n TableHeaderResizerDirective,\n TableComponent,\n TableInitialStateDirective,\n TableToolbarComponent,\n TableToolbarActionsComponent,\n SelectComponent,\n TableColumnComponent,\n FdpCellDef,\n FdpTableCell,\n IconComponent,\n DialogFooterComponent,\n ButtonBarComponent,\n BusyIndicatorComponent,\n FdTranslatePipe\n ]\n})\nexport class SmartFilterBarSettingsDialogComponent implements Resettable, AfterViewInit {\n /**\n * Table instance\n */\n @ViewChild('table') table!: Table;\n\n /**\n * Table data source.\n */\n source!: TableDataSource<FieldFilterItem>;\n\n /** @hidden */\n _availableFields!: FieldFilterItem[];\n\n /** @hidden */\n _filterVisibilityOptions: SelectItem[] = [];\n\n /** @hidden */\n loaded = false;\n\n /** Indicates when reset command is available */\n readonly isResetAvailable$ = signal(false);\n\n /** @hidden */\n private readonly _categoryLabelKeys: SmartFilterBarVisibilityCategoryLabels = {\n all: 'settingsCategoryAll',\n visible: 'settingsCategoryVisible',\n active: 'settingsCategoryActive',\n visibleAndActive: 'settingsCategoryVisibleAndActive',\n mandatory: 'settingsCategoryMandatory'\n };\n\n /** @hidden */\n private _sourceSubscription!: Subscription;\n\n /** @hidden */\n private _selectedFilters: string[] = [];\n\n /**\n * @hidden\n * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n /** @hidden */\n constructor(\n private _dialogRef: DialogRef<SmartFilterSettingsDialogConfig, string[]>,\n private readonly _cdr: ChangeDetectorRef\n ) {\n this.setInitialTableState();\n this._init();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.setSelectedFilters();\n }\n\n /**\n * Checks the checkbox in the table row if the field is selected.\n */\n setSelectedFilters(): void {\n this._sourceSubscription?.unsubscribe();\n this._sourceSubscription = this.source\n .open()\n .pipe(observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => {\n items.forEach((field, index) => {\n if (field.visible) {\n this.table.toggleSelectableRow(index);\n }\n });\n });\n }\n\n /**\n * Resets filters selection.\n */\n reset(): void {\n this.setInitialTableState();\n this.setSelectedFilters();\n }\n\n /**\n * Sets initial state of the table.\n */\n setInitialTableState(): void {\n this._availableFields = this._dialogRef.data.fields\n .filter((c: SmartFilterBarFieldDefinition) => c.filterable)\n .map((c: SmartFilterBarFieldDefinition) => ({\n label: c.label,\n active: !!this._dialogRef.data.filterBy.find((f) => f.field === c.name),\n mandatory: c.required,\n visible: this._dialogRef.data.selectedFilters.includes(c.name),\n key: c.key,\n name: c.name\n }));\n\n this.source = new TableDataSource(new SmartFilterBarOptionsDataProvider(this._availableFields));\n }\n\n /** @hidden */\n _cancel(): void {\n this._dialogRef.dismiss();\n }\n\n /** @hidden */\n _confirm(): void {\n this._dialogRef.close(this._selectedFilters);\n }\n\n /** @hidden */\n _onRowSelectionChange(event: TableRowSelectionChangeEvent<FieldFilterItem>): void {\n this._selectedFilters = event.selection.map((c) => c.name);\n this.isResetAvailable$.set(true);\n }\n\n /** @hidden */\n _onFilterVisibilityChange(event: FdpSelectionChangeEvent): void {\n if (!this.table) {\n return;\n }\n (this.source.dataProvider as SmartFilterBarOptionsDataProvider).filter(event.payload);\n this.source.fetch(this.table.getTableState());\n }\n\n /** @hidden */\n private async _init(): Promise<void> {\n await this._transformVisibilityLabels();\n this.loaded = true;\n this._cdr.markForCheck();\n }\n\n /**\n * Transforms visibility options into appropriate select item object.\n */\n private async _transformVisibilityLabels(): Promise<void> {\n const lang = this._langSignal();\n const labels = { ...this._categoryLabelKeys };\n for (const strategyItem in labels) {\n if (Object.prototype.hasOwnProperty.call(labels, strategyItem)) {\n const translationKey = ('platformSmartFilterBar.' +\n labels[strategyItem as keyof SmartFilterBarVisibilityCategoryLabels]) as FdLanguageKeyIdentifier;\n labels[strategyItem] = this._translationResolver.resolve(lang, translationKey);\n }\n }\n for (const [selectValue, selectLabel] of Object.entries(labels)) {\n this._filterVisibilityOptions.push({\n label: selectLabel,\n value: selectValue\n });\n }\n }\n}\n","<fd-dialog class=\"fdp-table-p13-filtering-dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 [headerSize]=\"4\" fd-title>\n {{ ('platformSmartFilterBar.selectFiltersHeader' | fdTranslate)() }}\n </h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n @if (loaded) {\n <fdp-table\n #table\n (rowSelectionChange)=\"_onRowSelectionChange($event)\"\n [dataSource]=\"source\"\n selectionMode=\"multiple\"\n >\n <fdp-table-toolbar\n [hideItemCount]=\"false\"\n [title]=\"('platformSmartFilterBar.selectFiltersAvailableFiltersText' | fdTranslate)()\"\n >\n <fdp-table-toolbar-actions>\n <fdp-select\n (selectionChange)=\"_onFilterVisibilityChange($event)\"\n [list]=\"_filterVisibilityOptions\"\n [value]=\"_filterVisibilityOptions[0].value\"\n >\n </fdp-select>\n </fdp-table-toolbar-actions>\n </fdp-table-toolbar>\n <fdp-column\n align=\"start\"\n key=\"label\"\n [label]=\"('platformSmartFilterBar.selectFiltersFilterColumnLabel' | fdTranslate)()\"\n name=\"label\"\n ></fdp-column>\n <fdp-column\n align=\"center\"\n key=\"active\"\n [label]=\"('platformSmartFilterBar.selectFiltersActiveColumnLabel' | fdTranslate)()\"\n name=\"active\"\n width=\"150px\"\n >\n <fdp-table-cell *fdpCellDef=\"let item\">\n @if (item.active) {\n <fd-icon glyph=\"accept\"></fd-icon>\n }\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n } @else {\n <div [style.text-align]=\"'center'\" [style.margin.rem]=\"1\">\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\n </div>\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n (click)=\"_confirm()\"\n fdType=\"emphasized\"\n [label]=\"('platformSmartFilterBar.selectFiltersSubmitButtonLabel' | fdTranslate)()\"\n ></fd-button-bar>\n <fd-button-bar\n (click)=\"_cancel()\"\n fdType=\"transparent\"\n [label]=\"('platformSmartFilterBar.selectFiltersCancelButton' | fdTranslate)()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n","export const SMART_FILTER_BAR_RENDERER_COMPONENT = 'smart-filter-condition-renderer';\n","import { Directive, Input, booleanAttribute } from '@angular/core';\nimport { CollectionFilterGroupStrategy, FilterType, FilterableColumnDataType } from '@fundamental-ngx/platform/table';\n\n@Directive({\n selector: '[fdpSmartFilterBarFieldDefinition], [fdp-smart-filter-bar-field-definition]',\n standalone: true\n})\nexport class SmartFilterBarFieldDefinitionDirective {\n /** Field data accessor key. */\n @Input()\n key!: string;\n\n /** Unique field identifier. */\n @Input()\n name!: string;\n\n /** Field label. */\n @Input()\n label!: string;\n /** Field filter type */\n @Input()\n filterType!: FilterType;\n /** Field data type */\n @Input()\n dataType!: FilterableColumnDataType;\n /** Field custom filter type */\n @Input()\n customFilterType!: string;\n\n /** Condition strategy */\n @Input()\n conditionStrategy: CollectionFilterGroupStrategy = 'or';\n\n /** Whether this field can be filtered. Default value is true. */\n @Input({ transform: booleanAttribute })\n smartFilterBarFilterable = true;\n\n /** Whether this field filter is mandatory. */\n @Input({ transform: booleanAttribute })\n required = false;\n\n /** Whether this field filter is selected by default. */\n @Input({ transform: booleanAttribute })\n defaultSelected = false;\n\n /** Whether this field has autocomplete options */\n @Input({ transform: booleanAttribute })\n hasOptions = false;\n}\n","import { AfterViewInit, ContentChildren, DestroyRef, Directive, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SelectItem } from '@fundamental-ngx/platform/shared';\nimport { Table, TableDataSource, TableState } from '@fundamental-ngx/platform/table';\nimport { BehaviorSubject, Observable, startWith } from 'rxjs';\nimport { SmartFilterBarFieldDefinition } from '../interfaces/smart-filter-bar-field-definition';\nimport { SmartFilterBarFieldDefinitionDirective } from './smart-filter-bar-field-definition.directive';\n\n@Directive({\n selector: '[fdpSmartFilterBarSubject], [fdp-smart-filter-bar-subject]',\n exportAs: 'fdp-smart-filter-bar-subject',\n standalone: true\n})\nexport class SmartFilterBarSubjectDirective implements AfterViewInit {\n /** @hidden */\n @ContentChildren(SmartFilterBarFieldDefinitionDirective)\n _fieldDefinitions!: QueryList<SmartFilterBarFieldDefinitionDirective>;\n\n /** @hidden */\n _fieldDefinitionsSubject = new BehaviorSubject<SmartFilterBarFieldDefinition[]>([]);\n\n /**\n * Observable of available fields.\n */\n readonly fieldsStream = this._fieldDefinitionsSubject.asObservable();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(private _subject: Table) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._fieldDefinitions.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._fieldDefinitionsSubject.next(this._fieldDefinitions.map((d) => this._transformSubjectField(d)));\n });\n }\n\n /**\n * Retrieves data source of the subject.\n * @returns Subject's data source.\n */\n getDataSource(): TableDataSource<any> {\n return this._subject.getDataSource();\n }\n\n /**\n * Retrieves available fields of the subject.\n * @returns Available fields of the subject.\n */\n getSubjectFields(): SmartFilterBarFieldDefinition[] {\n return this._fieldDefinitions.toArray().map((f) => this._transformSubjectField(f));\n }\n\n /** Get available field variants */\n getFieldVariants(field: string): Observable<SelectItem[]> {\n return this.getDataSource().dataProvider.getFieldOptions(field);\n }\n\n /** @hidden */\n getDefaultFields(): string[] {\n return this.getSubjectFields()\n ?.filter((f) => f.filterable && f.defaultSelected)\n .map((f) => f.name);\n }\n\n /** Get subject state */\n getState(): TableState {\n return this._subject.getTableState();\n }\n\n /**\n * @returns Subject component.\n */\n getSubject(): Table {\n return this._subject;\n }\n\n /** @hidden */\n private _transformSubjectField(column: SmartFilterBarFieldDefinitionDirective): SmartFilterBarFieldDefinition {\n return {\n key: column.key,\n name: column.name,\n label: column.label,\n filterType: column.filterType,\n filterable: column.smartFilterBarFilterable,\n dataType: column.dataType,\n required: column.required,\n customFilterType: column.customFilterType,\n defaultSelected: column.defaultSelected,\n hasOptions: column.hasOptions,\n conditionStrategy: column.conditionStrategy\n };\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdpSmartFilterBarToolbarItem]',\n standalone: true\n})\nexport class SmartFilterBarToolbarItemDirective {\n /** @hidden */\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\nimport { PresetManagedComponent } from '@fundamental-ngx/platform/shared';\nimport { CollectionFilterGroup } from '@fundamental-ngx/platform/table';\nimport { SmartFilterBarManagedPreset } from './interfaces/smart-filter-bar-change';\nimport { SmartFilterBarCondition } from './interfaces/smart-filter-bar-condition';\n\n@Directive()\nexport abstract class SmartFilterBar implements PresetManagedComponent<SmartFilterBarManagedPreset> {\n abstract search: SearchInput | undefined;\n\n /** @hidden */\n abstract getDisplayValue(condition: SmartFilterBarCondition, filterType: string): Promise<string>;\n\n /** Method for setting predefined configuration preset. */\n abstract setPreset(data: SmartFilterBarManagedPreset): void;\n\n /** Returns current preset configuration. */\n abstract getCurrentPreset(): SmartFilterBarManagedPreset;\n\n abstract getFormattedConditions(): Promise<CollectionFilterGroup[]>;\n\n /** Component name used in Preset managed component. */\n @Input()\n name = 'platformSmartFilterBar';\n\n /** Event emitted when smart filter bar configuration has been changed. */\n @Output()\n presetChanged = new EventEmitter<SmartFilterBarManagedPreset>();\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChildren,\n DestroyRef,\n EventEmitter,\n forwardRef,\n inject,\n Injector,\n Input,\n OnDestroy,\n Output,\n Provider,\n QueryList,\n signal,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Validators } from '@angular/forms';\n\nimport { BehaviorSubject, debounceTime, filter, firstValueFrom, Observable, Subject, Subscription } from 'rxjs';\nimport { map, startWith, take, takeUntil } from 'rxjs/operators';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig, DialogService } from '@fundamental-ngx/core/dialog';\nimport {\n DynamicFormFieldItem,\n DynamicFormItem,\n FormGeneratorComponent,\n FormGeneratorService,\n PreparedDynamicFormFieldItem\n} from '@fundamental-ngx/platform/form';\nimport { SearchInput } from '@fundamental-ngx/platform/search-field';\nimport { FDP_PRESET_MANAGED_COMPONENT, SelectItem } from '@fundamental-ngx/platform/shared';\nimport { CollectionFilterGroup, FilterableColumnDataType, FilterType } from '@fundamental-ngx/platform/table';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n ToolbarComponent,\n ToolbarItemDirective,\n ToolbarSeparatorComponent,\n ToolbarSpacerDirective\n} from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SearchFieldComponent } from '@fundamental-ngx/platform/search-field';\nimport { SmartFilterBarConditionFieldComponent } from './components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component';\nimport { SmartFilterBarSettingsDialogComponent } from './components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component';\nimport { SMART_FILTER_BAR_RENDERER_COMPONENT } from './constants';\nimport { SmartFilterBarSubjectDirective } from './directives/smart-filter-bar-subject.directive';\nimport { SmartFilterBarToolbarItemDirective } from './directives/smart-filter-bar-toolbar-item.directive';\nimport { getSelectItemValue } from './helpers';\nimport { SmartFilterBarManagedPreset, SmartFilterChangeObject } from './interfaces/smart-filter-bar-change';\nimport { SmartFilterBarCondition } from './interfaces/smart-filter-bar-condition';\nimport { SmartFilterBarFieldDefinition } from './interfaces/smart-filter-bar-field-definition';\nimport { SmartFilterSettingsDialogConfig } from './interfaces/smart-filter-bar-settings-dialog-config';\nimport { SmartFilterBarDynamicFormFieldItem } from './interfaces/smart-filter-dynamic-form-item';\nimport { SmartFilterBar } from './smart-filter-bar.class';\nimport { SmartFilterBarService } from './smart-filter-bar.service';\n\nconst defaultColumnsLayout = 'XL4-L3-M2-S1';\n\nfunction getColumnsNumber(layout: string): number {\n return Math.max(\n ...layout.split('-').map((part) => {\n const matchArray = part.match(/\\d+/);\n\n return matchArray ? parseInt(matchArray[0], 10) : 1;\n })\n );\n}\n\n/**\n * Default dialog configuration.\n */\nconst dialogConfig: DialogConfig = {\n responsivePadding: true,\n verticalPadding: true,\n minWidth: '30rem',\n /** 88px it's the header + footer height */\n bodyMinHeight: 'calc(50vh - 5.5rem)'\n};\n\nconst smartFilterBarProvider: Provider = {\n provide: SmartFilterBar,\n useExisting: forwardRef(() => SmartFilterBarComponent)\n};\n\n@Component({\n selector: 'fdp-smart-filter-bar',\n templateUrl: './smart-filter-bar.component.html',\n styleUrl: './smart-filter-bar.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n smartFilterBarProvider,\n SmartFilterBarService,\n FormGeneratorService,\n {\n provide: FDP_PRESET_MANAGED_COMPONENT,\n useExisting: SmartFilterBarComponent\n }\n ],\n host: {\n class: 'fdp-smart-filter-bar',\n '[class.fdp-smart-filter-bar--transparent]': 'transparent'\n },\n imports: [\n ToolbarComponent,\n NgTemplateOutlet,\n ToolbarSeparatorComponent,\n SearchFieldComponent,\n ToolbarSpacerDirective,\n ButtonComponent,\n ToolbarItemDirective,\n FormGeneratorComponent,\n FdTranslatePipe\n ]\n})\nexport class SmartFilterBarComponent extends SmartFilterBar implements AfterViewInit, OnDestroy {\n /**\n * @hidden\n * Form generator component instance.\n */\n @ViewChild(FormGeneratorComponent) _formGenerator!: FormGeneratorComponent;\n\n /**\n * Subject which will provide configuration data: data source, columns definitions, etc.\n */\n @Input()\n set subject(value: SmartFilterBarSubjectDirective) {\n this._setSubject(value);\n }\n\n get subject(): SmartFilterBarSubjectDirective {\n return this._subject;\n }\n /**\n * Whether smart filter bar background should be transparent.\n */\n @Input({ transform: booleanAttribute })\n transparent = false;\n\n /**\n * Columns layout.\n */\n @Input()\n filtersColumnLayout: Nullable<string> = defaultColumnsLayout;\n\n /**\n * Whether to update filters when they are selected. Otherwise, filters will be applied only by pressing \"Go\" button.\n */\n @Input({ transform: booleanAttribute })\n liveUpdate = false;\n\n /**\n * Whether to hide Toolbar.\n */\n @Input({ transform: booleanAttribute })\n hideToolbar = false;\n\n /**\n * Event emitted when the selected filters have been changed.\n */\n @Output()\n smartFiltersChanged: EventEmitter<SmartFilterChangeObject> = new EventEmitter<SmartFilterChangeObject>();\n\n /**\n * Event emitted when selected filters has been applied (User clicked on Go button).\n */\n @Output()\n smartFiltersApplied: EventEmitter<SmartFilterChangeObject> = new EventEmitter<SmartFilterChangeObject>();\n\n /**\n * Event emitted when search input field value has been changed.\n */\n @Output()\n searchInputChanged: EventEmitter<SearchInput> = new EventEmitter<SearchInput>();\n /** @hidden */\n @ContentChildren(SmartFilterBarToolbarItemDirective)\n private readonly _toolbarItemRefs: QueryList<SmartFilterBarToolbarItemDirective>;\n\n /**\n * Calculated array of filters to apply for the subject's data source.\n */\n filterBy: CollectionFilterGroup[] = [];\n\n /** Whether the filters section should be shown. */\n showFilterBar$ = signal(true);\n\n /**\n * Search field value to apply for the subject's data source.\n */\n search: SearchInput | undefined;\n /** @Hidden */\n _toolbarItems: TemplateRef<any>[] = [];\n /** @hidden */\n _formItems = signal<DynamicFormItem[] | null>(null);\n /** Selected filters. */\n selectedFilters$ = signal<string[]>([]);\n\n /** Selected filters count. */\n selectedFiltersCount$ = computed(() => this.selectedFilters$().length);\n\n /** Loading state. */\n get loading(): boolean {\n return this._subject?.getDataSource() ? this._subject.getDataSource().isDataLoading : true;\n }\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _subjectSubscriptions = new Subscription();\n\n /** @hidden */\n private readonly _formGeneratorReady = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _ignorePresetChange = false;\n\n /** @hidden */\n private _subject!: SmartFilterBarSubjectDirective;\n\n /** @hidden */\n private _refresh$ = new Subject<void>();\n\n /**\n * @hidden\n * Smart filter bar service may be provided by parent component that adds custom configuration, so we need to check if it's provided.\n */\n private readonly _smartFilterBarService =\n inject(SmartFilterBarService, { optional: true, skipSelf: true }) ??\n inject(SmartFilterBarService, { self: true });\n\n /** @hidden */\n constructor(\n private _dialogService: DialogService,\n private _fgService: FormGeneratorService,\n private _injector: Injector,\n private readonly _destroyRef: DestroyRef\n ) {\n super();\n this._fgService.addComponent(SmartFilterBarConditionFieldComponent, [SMART_FILTER_BAR_RENDERER_COMPONENT]);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscriptions.add(\n this._toolbarItemRefs.changes.pipe(startWith(null)).subscribe(() => {\n this._toolbarItems = this._toolbarItemRefs.toArray().map((ref) => ref.templateRef);\n })\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._unsubscribeFromSubject();\n this._refresh$.next();\n this._refresh$.complete();\n }\n\n /**\n * Transforms condition value into human-readable text.\n * @param condition Smart filter bar condition.\n * @param filterType Condition filter type.\n */\n async getDisplayValue(condition: SmartFilterBarCondition, filterType: string): Promise<string> {\n return this._smartFilterBarService.getDisplayValue(condition, filterType);\n }\n\n /** Open Filtering Settings Dialog */\n showFilteringSettings(): void {\n const columns = this._getSubjectDefinitions();\n const dialogData: SmartFilterSettingsDialogConfig = {\n fields: columns,\n filterBy: this.filterBy,\n selectedFilters: this.selectedFilters$()\n };\n\n const dialogRef = this._dialogService.open(\n SmartFilterBarSettingsDialogComponent,\n {\n ...dialogConfig,\n disablePaddings: true,\n width: '50rem',\n data: dialogData\n },\n this._injector\n );\n\n dialogRef.afterClosed.pipe(take(1)).subscribe({\n next: (selectedFilters: string[]) => {\n this._setSelectedFilters(selectedFilters);\n },\n error: () => {}\n });\n }\n\n /** Callback function when search query changed. */\n onSearchInputChange(event: SearchInput): void {\n this.search = event;\n this.searchInputChanged.emit(event);\n }\n\n /** Clear search query. */\n cancelSearch(): void {\n this.search = undefined;\n\n if (this.liveUpdate) {\n this.submitForm();\n }\n }\n\n /**\n * Submits filters and search form.\n */\n submitForm(): void {\n this._formGenerator.submit();\n }\n\n /** Method for setting predefined configuration. */\n async setPreset(data: SmartFilterBarManagedPreset): Promise<void> {\n this._ignorePresetChange = true;\n data.filterBy = data.filterBy || [];\n this.filterBy = data.filterBy;\n this.search = data.search;\n\n this._refresh$.next();\n this._refresh$.complete();\n this._refresh$ = new Subject<void>();\n\n this._formGeneratorReady\n .pipe(\n filter((value) => value),\n takeUntil(this._refresh$)\n )\n .subscribe(async () => {\n // Reset form\n this._fgService.resetForm(this._formGenerator.form);\n\n // Set new data\n for (const filterBy of this.filterBy) {\n const control = this._fgService.getFormControl(this._formGenerator.form, filterBy.field);\n\n if (!control) {\n continue;\n }\n\n const formItem = control.formItem as PreparedDynamicFormFieldItem;\n\n const condition = this._smartFilterBarService.transformCollectionFilter(filterBy);\n\n const selectedConditions = await this._smartFilterBarService.getConditionFieldSelectedVariants(\n formItem,\n condition\n );\n control?.setValue(selectedConditions);\n }\n\n this._setSelectedFilters(this.filterBy.map((filterBy) => filterBy.field));\n\n const source = this.subject.getDataSource();\n source.dataProvider.setFilters(this.filterBy, this.search);\n this.subject.getSubject().fetch();\n });\n }\n\n /** Returns current preset configuration. */\n getCurrentPreset(): SmartFilterBarManagedPreset {\n return {\n search: this.search,\n filterBy: this.filterBy\n };\n }\n\n /**\n * @hidden\n * Callback function when form generator form has been successfully validated and submitted.\n */\n _onFormSubmitted(event: any): void {\n const conditions = this._generateCollectionFilterGroups(event);\n this._applyFiltering(conditions);\n }\n\n /**\n * @hidden\n * Callback method when form has been created.\n * Populates selected filters array with user-defined default filters.\n */\n _onFormCreated(): void {\n if (this.subject) {\n this._setSelectedFilters([...this.subject.getDefaultFields(), ...this.selectedFilters$()]);\n }\n\n this._formGenerator.form.valueChanges\n .pipe(debounceTime(50), takeUntilDestroyed(this._destroyRef))\n .subscribe(async () => {\n const conditions = await this.getFormattedConditions();\n this.smartFiltersChanged.emit({ filterBy: conditions, search: this.search, subject: this.subject });\n\n if (!this.liveUpdate) {\n return;\n }\n this._applyFiltering(conditions);\n });\n\n this._formGeneratorReady.next(true);\n }\n\n /**\n * Toggles Smart Filter Bar filters section.\n */\n toggleFilterBar(): void {\n this.showFilterBar$.update((show) => !show);\n }\n\n /**\n * Formats raw filters object into array of grouped filters.\n * @returns Array of grouped filters.\n */\n async getFormattedConditions(): Promise<CollectionFilterGroup[]> {\n const formValue = await this._fgService.getFormValue(this._formGenerator.form);\n return this._generateCollectionFilterGroups(formValue);\n }\n\n /** @hidden */\n private _generateCollectionFilterGroups(value: {\n [key: string]: SmartFilterBarCondition[];\n }): CollectionFilterGroup[] {\n const collectionFilterGroups: CollectionFilterGroup[] = [];\n\n const columns = this._getSubjectDefinitions();\n\n Object.entries(value)\n .filter(([, fieldConditions]) => !!fieldConditions)\n .forEach(([fieldName, fieldConditions]) => {\n const column = columns.find((c) => c.name === fieldName) as SmartFilterBarFieldDefinition;\n const filterGroup: CollectionFilterGroup = {\n filters: [],\n strategy: column.conditionStrategy,\n field: column.key\n };\n fieldConditions.forEach((condition) => {\n filterGroup.filters.push({\n strategy: condition.operator,\n field: column.key,\n value: condition.value,\n value2: condition.value2,\n type: column.dataType\n });\n });\n\n collectionFilterGroups.push(filterGroup);\n });\n\n // Remove empty filter objects.\n return collectionFilterGroups.filter((filterGroup) => filterGroup.filters?.length > 0);\n }\n\n /** @hidden */\n private _setSubject(subject: SmartFilterBarSubjectDirective): void {\n if (!subject) {\n return;\n }\n\n this._subject = subject;\n this.unsubscribeFromSubject();\n this._listenToSubjectColumns();\n }\n\n /** @hidden */\n private unsubscribeFromSubject(): void {\n if (!this._subject) {\n return;\n }\n this._subjectSubscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _listenToSubjectColumns(): void {\n this._subjectSubscriptions = new Subscription();\n this._subjectSubscriptions.add(\n this._subject.fieldsStream.subscribe(async (columns: SmartFilterBarFieldDefinition[]) => {\n await this._generateForm(columns.filter((c) => c.filterable));\n })\n );\n }\n\n /**\n * @hidden\n * Generates form items to be consumed by form generator component.\n * @param columns columns definition\n */\n private async _generateForm(columns: SmartFilterBarFieldDefinition[]): Promise<void> {\n const items: DynamicFormFieldItem[] = [];\n const columnsNumber = getColumnsNumber(this.filtersColumnLayout ?? '');\n let currentColumn = 1;\n\n if (columns.length === 0) {\n return;\n }\n\n columns.forEach((column) => {\n let item: SmartFilterBarDynamicFormFieldItem = this._generateBaseFieldItem(column);\n\n if (column.required) {\n this.selectedFilters$.update((filters) => {\n filters.push(column.name);\n return filters;\n });\n }\n\n switch (column.filterType) {\n case FilterType.SINGLE:\n case FilterType.CATEGORY:\n item.guiOptions.additionalData.type = 'select';\n item.guiOptions.inline = false;\n break;\n case FilterType.MULTI:\n item.guiOptions.additionalData.type = 'multi-input';\n break;\n case FilterType.CUSTOM:\n item = this._generateCustomFilterFieldItem(column, item);\n break;\n case FilterType.INPUT:\n default:\n item = this._generateInputFieldItem(column, item);\n break;\n }\n\n item.guiOptions.column = currentColumn;\n currentColumn += 1;\n\n if (currentColumn > columnsNumber) {\n currentColumn = 1;\n }\n\n items.push(item);\n });\n\n this._formItems.set(items);\n }\n\n /** @hidden */\n private _generateCustomFilterFieldItem(\n column: SmartFilterBarFieldDefinition,\n item: SmartFilterBarDynamicFormFieldItem\n ): SmartFilterBarDynamicFormFieldItem {\n if (!column.customFilterType) {\n return item;\n }\n item.guiOptions.additionalData.type = column.customFilterType;\n item.guiOptions.additionalData = Object.assign(\n item.guiOptions.additionalData,\n this._smartFilterBarService.getCustomFilterConfiguration(column.customFilterType)\n );\n\n item.type = item.guiOptions.additionalData.rendererComponent\n ? `${item.guiOptions.additionalData.type}-renderer`\n : item.type;\n item.transformer = item.guiOptions.additionalData.valueTransformer;\n\n return item;\n }\n\n /**\n * @hidden\n * Generates form item based on data type.\n * @param column\n * @param item\n * @returns\n */\n private _generateInputFieldItem(\n column: SmartFilterBarFieldDefinition,\n item: SmartFilterBarDynamicFormFieldItem\n ): SmartFilterBarDynamicFormFieldItem {\n switch (column.dataType) {\n case FilterableColumnDataType.DATE:\n item.guiOptions.additionalData.type = 'datepicker';\n break;\n case FilterableColumnDataType.NUMBER:\n item.guiOptions.additionalData.controlType = 'number';\n break;\n case FilterableColumnDataType.BOOLEAN:\n case FilterableColumnDataType.STRING:\n default:\n item.guiOptions.additionalData.controlType = 'text';\n break;\n }\n\n return item;\n }\n\n /**\n * @hidden\n * Generates base form item object to be consumed by form generator component.\n * @param column column definition\n * @returns base form item object.\n */\n private _generateBaseFieldItem(column: SmartFilterBarFieldDefinition): SmartFilterBarDynamicFormFieldItem {\n return {\n name: column.name,\n message: column.label,\n required: column.required,\n type: SMART_FILTER_BAR_RENDERER_COMPONENT,\n placeholder: ' ',\n validators: column.required ? [Validators.required] : [],\n choices: column.hasOptions ? this._getFilterDefaultOptions(column.key, column.filterType) : undefined,\n transformer: (itemValue) => getSelectItemValue(itemValue),\n guiOptions: {\n additionalData: {\n type: 'input',\n dataType: column.dataType,\n filterType: column.filterType,\n controlType: 'text',\n choices: column.hasOptions ? this._getFilterAvailableOptions(column.key) : undefined\n }\n },\n when: () => this.selectedFilters$().includes(column.name)\n } as SmartFilterBarDynamicFormFieldItem;\n }\n\n /**\n * @hidden\n * Retrieves available options for particular column by using data source method.\n * @param column property name of the data source items.\n * @returns {Observable<SelectItem[]>} Observable with the array of available options.\n */\n private _getFilterAvailableOptions(column: string): () => Observable<SelectItem[]> {\n return () => this._getFieldVariants(column);\n }\n\n /** @hidden */\n private _getFilterDefaultOptions(column: string, filterType: FilterType): () => Promise<any[]> {\n return async () => {\n const variants = await firstValueFrom(this._getFieldVariants(column).pipe(take(1)));\n\n const availableDefaultConditions: SmartFilterBarCondition[] = [];\n\n for (const option of variants) {\n const condition: SmartFilterBarCondition = {\n value: option.value,\n operator: 'equalTo'\n };\n\n condition.displayValue = await this.getDisplayValue(condition, filterType);\n\n availableDefaultConditions.push(condition);\n }\n\n return availableDefaultConditions;\n };\n }\n\n /** @hidden */\n private _getFieldVariants(column: string): Observable<SelectItem[]> {\n return this.subject.getFieldVariants(column).pipe(\n take(1),\n map((data) => data.filter((item, index) => data.findIndex((_item) => _item.value === item.value) === index))\n );\n }\n\n /** @hidden */\n private _getSubjectDefinitions(): SmartFilterBarFieldDefinition[] {\n return this.subject?.getSubjectFields() || [];\n }\n\n /**\n * @hidden\n * Sets provided filters directly to the data source.\n * @param filters array of filters.\n */\n private _applyFiltering(filters: CollectionFilterGroup[]): void {\n // Apply outside filtering and force subject to fetch new data.\n const source = this.subject.getDataSource();\n this.filterBy = filters;\n source.dataProvider.setFilters(filters, this.search);\n this.subject.getSubject().fetch();\n const emittedValue: SmartFilterBarManagedPreset = { search: this.search, filterBy: this.filterBy };\n this.smartFiltersApplied.emit({ ...emittedValue, subject: this._subject });\n\n if (!this._ignorePresetChange) {\n this.presetChanged.emit(emittedValue);\n }\n this._ignorePresetChange = false;\n }\n\n /** @hidden */\n private _unsubscribeFromSubject(): void {\n this._subjectSubscriptions.unsubscribe();\n this._subjectSubscriptions = new Subscription();\n }\n\n /** @hidden */\n private _setSelectedFilters(filters: string[]): void {\n this.selectedFilters$.set(filters.filter((f: string, i: number) => filters.indexOf(f) === i));\n this._formGenerator.refreshStepsVisibility();\n }\n}\n","@if (!hideToolbar) {\n <fd-toolbar [shouldOverflow]=\"true\" fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <div fd-toolbar-item>\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n </div>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <fdp-search-field\n fd-toolbar-item\n (inputChange)=\"onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"cancelSearch()\"\n [disabled]=\"loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"('platformSmartFilterBar.searchPlaceholder' | fdTranslate)()\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <button\n fd-button\n (click)=\"submitForm()\"\n fdType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"loading\"\n [label]=\"('platformSmartFilterBar.submitButtonLabel' | fdTranslate)()\"\n ></button>\n }\n <button\n fd-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"loading\"\n [ariaLabel]=\"('platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate)()\"\n ></button>\n <button\n fd-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n ('platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: selectedFiltersCount$() })()\n \"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n <button\n fd-button\n (click)=\"toggleFilterBar()\"\n [label]=\"\n (\n (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n )()\n \"\n fdType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"loading\"\n ></button>\n </fd-toolbar>\n}\n@if (_formItems(); as formItems) {\n <div class=\"fdp-smart-filter-bar__filters\" fd-toolbar-item [hidden]=\"!showFilterBar$()\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n </div>\n}\n","import { forwardRef, Provider } from '@angular/core';\nimport { SmartFilterBar } from '../smart-filter-bar.class';\nimport { SmartFilterBarComponent } from '../smart-filter-bar.component';\n\nexport const smartFilterBarProvider: Provider = {\n provide: SmartFilterBar,\n useExisting: forwardRef(() => SmartFilterBarComponent)\n};\n","import { NgModule } from '@angular/core';\n\nimport { SmartFilterBarComponent } from './smart-filter-bar.component';\n\nimport { SmartFilterBarConditionFieldComponent } from './components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component';\nimport { SmartFilterBarConditionsDialogComponent } from './components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component';\nimport { SmartFilterBarSettingsDialogComponent } from './components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component';\nimport { SmartFilterBarFieldDefinitionDirective } from './directives/smart-filter-bar-field-definition.directive';\nimport { SmartFilterBarSubjectDirective } from './directives/smart-filter-bar-subject.directive';\nimport { SmartFilterBarToolbarItemDirective } from './directives/smart-filter-bar-toolbar-item.directive';\n\nconst components = [\n SmartFilterBarComponent,\n SmartFilterBarSettingsDialogComponent,\n SmartFilterBarFieldDefinitionDirective,\n SmartFilterBarSubjectDirective,\n SmartFilterBarConditionsDialogComponent,\n SmartFilterBarConditionFieldComponent,\n SmartFilterBarToolbarItemDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformSmartFilterBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.SmartFilterBarService","smartFilterBarProvider","startWith","i2"],"mappings":"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"}