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