@fundamental-ngx/platform 0.52.2-rc.2 → 0.52.2-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.
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +9 -3
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +2 -2
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +3 -3
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +18 -4
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +4 -4
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +5 -6
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +2 -1
- package/esm2022/variant-management/variant-management.component.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-form.mjs +8 -3
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +25 -11
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -0
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/form/multi-combobox/commons/base-multi-combobox.d.ts +10 -3
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -1
|
@@ -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, resolveTranslationSyncFn } 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 standalone: true,\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 = resolveTranslationSyncFn();\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 'platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle'\n | fdTranslate\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> </div>\n <div class=\"fdp-smart-filter-bar__actions-column\" fdLayoutGridCol>\n <button\n fd-button\n (click)=\"addCondition()\"\n [label]=\"'platformSmartFilterBar.defineConditionsAddConditionButtonLabel' | fdTranslate\"\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 standalone: true,\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 Inject,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal\n} from '@angular/core';\nimport { Observable, Subscription, asyncScheduler, firstValueFrom } 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,\n FdLanguage,\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 standalone: true,\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 constructor(\n private _dialogRef: DialogRef<SmartFilterSettingsDialogConfig, string[]>,\n @Inject(FD_LANGUAGE) private readonly _language$: Observable<FdLanguage>,\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 = await firstValueFrom(this._language$);\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 standalone: true,\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 fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n }\n <fdp-search-field\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 (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\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\" [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@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, resolveTranslationSyncFn } 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 standalone: true,\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 = resolveTranslationSyncFn();\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 'platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle'\n | fdTranslate\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> </div>\n <div class=\"fdp-smart-filter-bar__actions-column\" fdLayoutGridCol>\n <button\n fd-button\n (click)=\"addCondition()\"\n [label]=\"'platformSmartFilterBar.defineConditionsAddConditionButtonLabel' | fdTranslate\"\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 standalone: true,\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 Inject,\n ViewChild,\n ViewEncapsulation,\n inject,\n signal\n} from '@angular/core';\nimport { Observable, Subscription, asyncScheduler, firstValueFrom } 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,\n FdLanguage,\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 standalone: true,\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 constructor(\n private _dialogRef: DialogRef<SmartFilterSettingsDialogConfig, string[]>,\n @Inject(FD_LANGUAGE) private readonly _language$: Observable<FdLanguage>,\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 = await firstValueFrom(this._language$);\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 standalone: true,\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 <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\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 (showFilterBar$()\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\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@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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"}
|