@fundamental-ngx/platform 0.43.0-rc.9 → 0.43.0
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/esm2020/dynamic-page/dynamic-page.component.mjs +1 -1
- package/esm2020/form/combobox/combobox/combobox.component.mjs +1 -1
- package/esm2020/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +2 -2
- package/esm2020/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +1 -1
- package/esm2020/form/multi-input/multi-input.component.mjs +7 -4
- package/esm2020/form/step-input/number/number-step-input.component.mjs +1 -1
- package/esm2020/settings-generator/settings-generator-content/settings-generator-content.component.mjs +1 -1
- package/esm2020/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +4 -3
- package/esm2020/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +1 -1
- package/esm2020/smart-filter-bar/smart-filter-bar.component.mjs +3 -3
- package/esm2020/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +3 -3
- package/esm2020/table/components/table-header-row/table-header-row.component.mjs +8 -4
- package/esm2020/table/components/table-p13-dialog/sorting/sorting.component.mjs +3 -3
- package/esm2020/table/components/table-row/table-row.component.mjs +4 -3
- package/esm2020/table/table.component.mjs +29 -11
- package/esm2020/table-helpers/constants/index.mjs +3 -2
- package/esm2020/table-helpers/directives/table-scrollable.directive.mjs +9 -1
- package/esm2020/table-helpers/directives/table-virtual-scroll.directive.mjs +6 -2
- package/esm2020/table-helpers/interfaces/table-state.interface.mjs +1 -1
- package/esm2020/table-helpers/services/table-scroll-dispatcher.service.mjs +1 -1
- package/esm2020/table-helpers/services/table.service.mjs +3 -2
- package/esm2020/upload-collection/upload-collection/upload-collection.component.mjs +1 -1
- package/esm2020/value-help-dialog/components/define-tab/define-tab.component.mjs +1 -1
- package/esm2020/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-form.mjs +9 -7
- package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-settings-generator.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs +5 -5
- package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +14 -3
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table.mjs +41 -19
- package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-upload-collection.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-form.mjs +10 -7
- package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-settings-generator.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs +5 -5
- package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +17 -3
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table.mjs +41 -19
- package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-upload-collection.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/form/multi-input/multi-input.component.d.ts +3 -1
- package/fundamental-ngx-platform-v0.43.0.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/table/components/table-header-row/table-header-row.component.d.ts +3 -1
- package/table/table.component.d.ts +7 -1
- package/table-helpers/directives/table-scrollable.directive.d.ts +2 -0
- package/table-helpers/interfaces/table-state.interface.d.ts +1 -0
- package/table-helpers/services/table-scroll-dispatcher.service.d.ts +2 -0
- package/fundamental-ngx-platform-v0.43.0-rc.9.tgz +0 -0
|
@@ -252,7 +252,7 @@ class SettingsGeneratorContentComponent {
|
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
254
|
SettingsGeneratorContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SettingsGeneratorContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
255
|
-
SettingsGeneratorContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SettingsGeneratorContentComponent, selector: "fdp-settings-generator-content", inputs: { settings: "settings", mobile: "mobile" }, outputs: { goBack: "goBack" }, host: { properties: { "class": "this._initialClass" } }, viewQueries: [{ propertyName: "_tabPanels", predicate: TabPanelComponent, descendants: true }], ngImport: i0, template: "<h2 fd-title class=\"fdp-settings-generator__title\">\n <button *ngIf=\"mobile\" fd-button glyph=\"menu2\" fdType=\"transparent\" (click)=\"goBack.emit()\"></button>\n <ng-container *ngIf=\"settings?.title | fdkAsyncOrSync as settingsTitle; else loadingBlock\">\n {{ settingsTitle }}\n </ng-container>\n <ng-template #loadingBlock>\n <fd-skeleton height=\"40px\" type=\"rectangle\" width=\"40%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n</h2>\n\n<ng-template #tabbedLayout>\n <fd-tab-list size=\"s\">\n <fd-tab *ngFor=\"let group of _groups\" [title]=\"group.title | fdkAsyncOrSync\">\n <fdp-settings-generator-section\n [groupName]=\"$any(settings).id\"\n [items]=\"group\"\n ></fdp-settings-generator-section>\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n\n<ng-template #formLayout>\n <fdp-settings-generator-section [items]=\"settings!\"></fdp-settings-generator-section>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"_contentLayout === 'tabs' ? tabbedLayout : formLayout\"></ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i3$1.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3$1.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "component", type: i4.SkeletonComponent, selector: "fd-skeleton", inputs: ["animated", "type", "textLines", "width", "height"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: SettingsGeneratorSectionComponent, selector: "fdp-settings-generator-section", inputs: ["groupName", "items"] }, { kind: "pipe", type: i3.AsyncOrSyncPipe, name: "fdkAsyncOrSync" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
255
|
+
SettingsGeneratorContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SettingsGeneratorContentComponent, selector: "fdp-settings-generator-content", inputs: { settings: "settings", mobile: "mobile" }, outputs: { goBack: "goBack" }, host: { properties: { "class": "this._initialClass" } }, viewQueries: [{ propertyName: "_tabPanels", predicate: TabPanelComponent, descendants: true }], ngImport: i0, template: "<h2 fd-title class=\"fdp-settings-generator__title\">\n <button *ngIf=\"mobile\" fd-button glyph=\"menu2\" fdType=\"transparent\" (click)=\"goBack.emit()\"></button>\n <ng-container *ngIf=\"settings?.title | fdkAsyncOrSync as settingsTitle; else loadingBlock\">\n {{ settingsTitle }}\n </ng-container>\n <ng-template #loadingBlock>\n <fd-skeleton height=\"40px\" type=\"rectangle\" width=\"40%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n</h2>\n\n<ng-template #tabbedLayout>\n <fd-tab-list size=\"s\">\n <fd-tab *ngFor=\"let group of _groups\" [title]=\"group.title | fdkAsyncOrSync\">\n <fdp-settings-generator-section\n [groupName]=\"$any(settings).id\"\n [items]=\"group\"\n ></fdp-settings-generator-section>\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n\n<ng-template #formLayout>\n <fdp-settings-generator-section [items]=\"settings!\"></fdp-settings-generator-section>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"_contentLayout === 'tabs' ? tabbedLayout : formLayout\"></ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i3$1.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "expandOverflowText", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3$1.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "component", type: i4.SkeletonComponent, selector: "fd-skeleton", inputs: ["animated", "type", "textLines", "width", "height"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: SettingsGeneratorSectionComponent, selector: "fdp-settings-generator-section", inputs: ["groupName", "items"] }, { kind: "pipe", type: i3.AsyncOrSyncPipe, name: "fdkAsyncOrSync" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
256
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SettingsGeneratorContentComponent, decorators: [{
|
|
257
257
|
type: Component,
|
|
258
258
|
args: [{ selector: 'fdp-settings-generator-content', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<h2 fd-title class=\"fdp-settings-generator__title\">\n <button *ngIf=\"mobile\" fd-button glyph=\"menu2\" fdType=\"transparent\" (click)=\"goBack.emit()\"></button>\n <ng-container *ngIf=\"settings?.title | fdkAsyncOrSync as settingsTitle; else loadingBlock\">\n {{ settingsTitle }}\n </ng-container>\n <ng-template #loadingBlock>\n <fd-skeleton height=\"40px\" type=\"rectangle\" width=\"40%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n</h2>\n\n<ng-template #tabbedLayout>\n <fd-tab-list size=\"s\">\n <fd-tab *ngFor=\"let group of _groups\" [title]=\"group.title | fdkAsyncOrSync\">\n <fdp-settings-generator-section\n [groupName]=\"$any(settings).id\"\n [items]=\"group\"\n ></fdp-settings-generator-section>\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n\n<ng-template #formLayout>\n <fdp-settings-generator-section [items]=\"settings!\"></fdp-settings-generator-section>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"_contentLayout === 'tabs' ? tabbedLayout : formLayout\"></ng-container>\n" }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-platform-settings-generator.mjs","sources":["../../../../libs/platform/src/lib/settings-generator/default-config.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator.service.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.html","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-content.component.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-content.component.html","../../../../libs/platform/src/lib/settings-generator/tokens.ts","../../../../libs/platform/src/lib/settings-generator/layouts/base-settings-generator-layout.ts","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.ts","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.html","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.ts","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.html","../../../../libs/platform/src/lib/settings-generator/settings-generator-layout-accessor.service.ts","../../../../libs/platform/src/lib/settings-generator/controls/theme-selector-list/theme-selector-list.component.ts","../../../../libs/platform/src/lib/settings-generator/controls/theme-selector-list/theme-selector-list.component.html","../../../../libs/platform/src/lib/settings-generator/controls/theme-selector-list/icon.html","../../../../libs/platform/src/lib/settings-generator/settings-generator.component.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator.component.html","../../../../libs/platform/src/lib/settings-generator/settings-generator.module.ts","../../../../libs/platform/src/lib/settings-generator/fundamental-ngx-platform-settings-generator.ts"],"sourcesContent":["import { SidebarSettingsGeneratorConfig } from './models/settings-config.model';\n\nexport const FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG: SidebarSettingsGeneratorConfig = {\n defaultLayout: 'sidebar',\n sidebar: {\n mobileBreakpoint: 700,\n width: '25%'\n }\n};\n","import { Injectable, OnDestroy, inject, ElementRef } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n delay,\n filter,\n map,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs';\nimport { SettingsModel } from './models/settings.model';\nimport { DynamicFormValue, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport { MessagePopoverFormWrapperComponent } from '@fundamental-ngx/platform/message-popover';\nimport { set } from 'lodash-es';\n\nexport type SettingsGeneratorReturnValue = Record<string, unknown>;\n\n@Injectable()\nexport class SettingsGeneratorService implements OnDestroy {\n /**\n * Settings configuration subject.\n */\n readonly settings = new BehaviorSubject<Nullable<SettingsModel>>(null);\n\n /**\n * Stream emitted when user clicked on message popover error entry.\n */\n readonly onItemFocus = new Subject<{ path: string; element: ElementRef<HTMLElement> }>();\n\n /**\n * Stream emitted when mobile state has been changed.\n */\n readonly mobileState$ = new BehaviorSubject<boolean>(false);\n\n /**\n * @hidden\n * Form generators collected from all items and groups.\n */\n private readonly _formGenerators = new Map<string, FormGeneratorComponent>();\n\n /** @hidden */\n private readonly _messagePopover = inject(MessagePopoverFormWrapperComponent, {\n optional: true\n });\n\n /** @hidden */\n private readonly _destroy$ = new Subject<void>();\n\n /** @hidden */\n constructor() {\n this._listenToMessagePopoverItemClick();\n }\n\n /** @hidden */\n _addFormGenerator(path: string[], formGenerator: FormGeneratorComponent): void {\n const joinedPath = path.join('.');\n this._formGenerators.set(joinedPath, formGenerator);\n formGenerator.loading$\n .pipe(\n filter((loading) => !loading),\n take(1),\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n this._messagePopover?.addForms(formGenerator.formGroup);\n this._messagePopover?.addFormFields(formGenerator.formFields);\n });\n }\n\n /** @hidden */\n _removeFormGenerator(path: string[]): void {\n const joinedPath = path.join('.');\n this._formGenerators.delete(joinedPath);\n }\n\n /**\n * Submits registered forms and emits result if submission status was successful (no errors).\n */\n submit(): Observable<SettingsGeneratorReturnValue> {\n const joinedEvents: Record<string, Observable<DynamicFormValue>> = {};\n this._formGenerators.forEach((formGenerator, key) => {\n joinedEvents[key] = formGenerator.loading$.pipe(\n filter((result) => !result),\n delay(50),\n tap(() => formGenerator.submit()),\n switchMap(() => formGenerator.formSubmittedStatus$),\n filter((status) => status.success),\n take(1),\n map((result) => result.value as DynamicFormValue),\n takeUntil(this._destroy$)\n );\n });\n\n return combineLatest(joinedEvents).pipe(\n map((result) => Object.entries(result).reduce((a, b) => set(a, b[0], b[1]), {})),\n take(1),\n takeUntil(this._destroy$)\n );\n }\n\n /**\n * Sets mobile state.\n * @param isMobile Whether mobile state should be applied.\n */\n setMobileState(isMobile: boolean): void {\n this.mobileState$.next(isMobile);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._formGenerators.clear();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * @hidden\n * Subscribes to click events from message popover and tries to open the section where invalid input is located.\n */\n private _listenToMessagePopoverItemClick(): void {\n this._messagePopover?.messagePopover$\n ?.pipe(\n switchMap((messagePopover) => messagePopover.focusItem),\n filter((entry) => !!entry.formField),\n takeUntil(this._destroy$)\n )\n .subscribe((entry) => {\n this._formGenerators.forEach((formGenerator, path) => {\n const formFields = formGenerator.formFields;\n // We already filtered entries with present form field.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (formFields.includes(entry.formField!)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.onItemFocus.next({ path, element: entry.formField!.elementRef });\n return false;\n }\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport {\n FormSettingsItem,\n SettingsFormTab,\n SettingsItem,\n SettingsTemplateTab,\n TemplateSettingsItem\n} from '../../models/settings.model';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { SettingsGeneratorService } from '../../settings-generator.service';\n\nexport type SettingsSectionItemsModel = SettingsTemplateTab | SettingsFormTab | SettingsItem;\n\n@Component({\n selector: 'fdp-settings-generator-section',\n templateUrl: './settings-generator-section.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsGeneratorSectionComponent {\n /**\n * Group name. Used to define full path of the inner form.\n */\n @Input()\n groupName: Nullable<string>;\n\n /**\n * Section items.\n * @param value {Nullable<SettingsSectionItemsModel>} Can be either a template Ref, or Form generator items.\n */\n @Input()\n set items(value: Nullable<SettingsSectionItemsModel>) {\n this._items = value;\n\n if (this._isTemplateLayout(value)) {\n this._renderer = 'template';\n this._templateRef = value.template;\n } else {\n this._renderer = 'form';\n this._formItems = value?.items || [];\n }\n }\n\n get items(): Nullable<SettingsSectionItemsModel> {\n return this._items;\n }\n\n /** @hidden */\n private readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n /** @hidden */\n private _items: Nullable<SettingsSectionItemsModel>;\n\n /** @hidden */\n @ViewChild(FormGeneratorComponent)\n private set _formGeneratorCmp(component: FormGeneratorComponent | undefined) {\n this._formGenerator = component;\n\n if (!this.items) {\n return;\n }\n\n const config = this.items as SettingsFormTab | FormSettingsItem;\n\n const path = [this.groupName, config.id].filter((v) => !!v) as string[];\n\n if (component) {\n this._settingsGeneratorService._addFormGenerator(path, component);\n } else {\n this._settingsGeneratorService._removeFormGenerator(path);\n }\n }\n\n /** @hidden */\n private _formGenerator: FormGeneratorComponent | undefined;\n\n /** @hidden */\n _renderer: 'form' | 'template' = 'form';\n\n /** @hidden */\n _templateRef: TemplateRef<any> | null = null;\n\n /** @hidden */\n _formItems: DynamicFormItem[] = [];\n\n /** @hidden */\n _isTemplateLayout(settings: any): settings is TemplateSettingsItem {\n return !!settings?.template;\n }\n}\n","<fdp-form-generator\n *ngIf=\"_renderer === 'form'\"\n [noAdditionalContent]=\"true\"\n [mainTitle]=\"items?.title | fdkAsyncOrSync\"\n [hideMainTItle]=\"true\"\n [formItems]=\"_formItems\"\n [unifiedLayout]=\"false\"\n></fdp-form-generator>\n\n<ng-container *ngIf=\"_renderer === 'template' && items?.template\" [ngTemplateOutlet]=\"_templateRef\"></ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n Output,\n QueryList,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { TabPanelComponent } from '@fundamental-ngx/core/tabs';\nimport {\n GroupedFormSettingsItem,\n GroupedTemplateSettingsItem,\n SettingsFormTab,\n SettingsItem,\n SettingsTemplateTab,\n TemplateSettingsItem\n} from '../models/settings.model';\n\n@Component({\n selector: 'fdp-settings-generator-content',\n templateUrl: './settings-generator-content.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsGeneratorContentComponent {\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _settings: Nullable<SettingsItem>;\n\n /** @hidden */\n _groups: (SettingsTemplateTab | SettingsFormTab)[] = [];\n\n /** @hidden */\n _index: number;\n\n /** @hidden */\n @Input()\n set settings(value: Nullable<SettingsItem>) {\n this._settings = value;\n\n this._renderer = this.isTemplateLayout(this._settings) ? 'template' : 'form';\n if (this.isGroupedSettings(this._settings)) {\n this._contentLayout = 'tabs';\n this._groups = this._settings.groups;\n } else {\n this._contentLayout = 'form';\n }\n }\n\n get settings(): Nullable<SettingsItem> {\n return this._settings;\n }\n\n /** Whether to render content component in mobile view. */\n @Input()\n mobile = false;\n\n /** Event emits when user needs to be moved back to navigation screen. */\n @Output()\n goBack = new EventEmitter<void>();\n\n /** @hidden */\n _id: Nullable<string>;\n\n /** @hidden */\n _renderer: 'form' | 'template' = 'form';\n\n /** @hidden */\n _contentLayout: 'form' | 'tabs' = 'form';\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fdp-settings-generator__content-section';\n\n /** @hidden */\n @ViewChildren(TabPanelComponent)\n private readonly _tabPanels: QueryList<TabPanelComponent>;\n\n /** @hidden */\n isTemplateLayout(settings: Nullable<SettingsItem>): settings is TemplateSettingsItem {\n return !!settings?.template;\n }\n\n /** @hidden */\n isGroupedSettings(settings: any): settings is GroupedFormSettingsItem | GroupedTemplateSettingsItem {\n return settings?.groups?.length > 0;\n }\n\n /**\n * Activates tab by group ID.\n * @param id ID of the group.\n */\n setActiveTab(id: string): void {\n if (!this.isGroupedSettings(this._settings)) {\n return;\n }\n this._tabPanels?.forEach((tab, index) => {\n const group = this._groups[index];\n\n if (group.id === id) {\n tab.open(true);\n return false;\n }\n });\n }\n}\n","<h2 fd-title class=\"fdp-settings-generator__title\">\n <button *ngIf=\"mobile\" fd-button glyph=\"menu2\" fdType=\"transparent\" (click)=\"goBack.emit()\"></button>\n <ng-container *ngIf=\"settings?.title | fdkAsyncOrSync as settingsTitle; else loadingBlock\">\n {{ settingsTitle }}\n </ng-container>\n <ng-template #loadingBlock>\n <fd-skeleton height=\"40px\" type=\"rectangle\" width=\"40%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n</h2>\n\n<ng-template #tabbedLayout>\n <fd-tab-list size=\"s\">\n <fd-tab *ngFor=\"let group of _groups\" [title]=\"group.title | fdkAsyncOrSync\">\n <fdp-settings-generator-section\n [groupName]=\"$any(settings).id\"\n [items]=\"group\"\n ></fdp-settings-generator-section>\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n\n<ng-template #formLayout>\n <fdp-settings-generator-section [items]=\"settings!\"></fdp-settings-generator-section>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"_contentLayout === 'tabs' ? tabbedLayout : formLayout\"></ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsGenerator } from './models/settings-generator.model';\n\nexport const FDP_SETTINGS_GENERATOR_CONFIG = new InjectionToken<SettingsConfig>('FdpSettingsGeneratorConfig');\nexport const FDP_SETTINGS_GENERATOR = new InjectionToken<SettingsGenerator>('FdpSettingsGenerator');\n","import { ChangeDetectorRef, Directive, ElementRef, inject, OnInit } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { SettingsGeneratorService } from '../settings-generator.service';\nimport { Subject } from 'rxjs';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { SettingsModel } from '../models/settings.model';\nimport { FDP_SETTINGS_GENERATOR } from '../tokens';\n\n@Directive()\nexport abstract class BaseSettingsGeneratorLayout implements OnInit {\n /**\n * Settings generator service.\n */\n protected readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n /**\n * Change detector ref.\n */\n protected readonly _cdr = inject(ChangeDetectorRef);\n\n /**\n * Settings generator component ref.\n */\n protected _settingsGenerator = inject(FDP_SETTINGS_GENERATOR);\n\n /**\n * Subject to notify subscriptions to unsubscribe when component destroys.\n */\n protected abstract _destroy$: Subject<void>;\n\n /**\n * Settings schema.\n */\n settings: Nullable<SettingsModel>;\n\n /** @hidden */\n ngOnInit(): void {\n this._settingsGeneratorService.settings.pipe(takeUntil(this._destroy$)).subscribe((settings) => {\n this.settings = settings;\n this._cdr.detectChanges();\n });\n }\n\n /**\n * Method for focusing inner form control.\n * It is responsible for activating the section and placing focus on the element.\n * @param path path of the control joined by dot(.). Usually represents section ID and inner group ID.\n * @param element ElementRef of native element to focus.\n */\n abstract focusElementByPath(path: string, element: ElementRef<HTMLElement>): void;\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ThumbnailSettingsItem } from '../../../models/settings.model';\nimport { ListAvatarConfig, ListIconConfig } from '@fundamental-ngx/platform/list';\nimport { merge } from 'lodash-es';\nimport { Observable, takeUntil } from 'rxjs';\nimport { DestroyedService, isSubscribable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-settings-generator-sidebar-icon',\n templateUrl: './settings-generator-sidebar-icon.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DestroyedService]\n})\nexport class SettingsGeneratorSidebarIconComponent {\n /** Thumbnail configuration. */\n @Input()\n set thumbnail(value: ThumbnailSettingsItem) {\n this._thumbnail = value;\n if (this.thumbnail.avatar) {\n this._transformAvatarConfig(this.thumbnail.avatar);\n }\n\n if (this.thumbnail.icon) {\n this._transformIconConfig(this.thumbnail.icon);\n }\n }\n\n get thumbnail(): ThumbnailSettingsItem {\n return this._thumbnail;\n }\n\n /** @hidden */\n private _thumbnail: ThumbnailSettingsItem;\n\n /** @hidden */\n _avatarConfig: ListAvatarConfig | undefined;\n\n /** @hidden */\n _iconConfig: ListIconConfig | undefined;\n\n /** @hidden */\n private readonly _destroy$ = inject(DestroyedService);\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _transformAvatarConfig(\n config$: Partial<ListAvatarConfig> | string | Observable<Partial<ListAvatarConfig> | string>\n ): void {\n this._getConfigFromObservable(config$, (parsedConfig) => {\n const avatarConfig = typeof parsedConfig === 'string' ? { image: parsedConfig } : parsedConfig;\n this._avatarConfig = merge(new ListAvatarConfig(), avatarConfig);\n this._cdr.detectChanges();\n });\n }\n\n /** @Hidden */\n private _transformIconConfig(\n config$: Partial<ListIconConfig> | string | Observable<Partial<ListIconConfig> | string>\n ): void {\n this._getConfigFromObservable(config$, (parsedConfig) => {\n const iconConfig = typeof parsedConfig === 'string' ? { glyph: parsedConfig } : parsedConfig;\n this._iconConfig = merge(new ListIconConfig(), iconConfig);\n this._cdr.detectChanges();\n });\n }\n\n /** @hidden */\n private _getConfigFromObservable<T>(config: T | Observable<T>, callback: (config: T) => void): void {\n if (isSubscribable(config)) {\n config.pipe(takeUntil(this._destroy$)).subscribe((_config) => {\n callback(_config);\n });\n\n return;\n }\n\n callback(config);\n }\n}\n","<ng-container *ngIf=\"!_iconConfig && !_avatarConfig; else iconBlock\">\n <fd-skeleton type=\"rectangle\" width=\"48px\" height=\"48px\"></fd-skeleton>\n</ng-container>\n<ng-template #iconBlock>\n <fd-icon\n *ngIf=\"_iconConfig && _iconConfig.glyph\"\n [glyph]=\"_iconConfig.glyph\"\n [ariaLabel]=\"_iconConfig.ariaLabel\"\n [font]=\"_iconConfig.font\"\n ></fd-icon>\n <fd-avatar\n *ngIf=\"_avatarConfig && (_avatarConfig.image || _avatarConfig.glyph || _avatarConfig.zoomGlyph)\"\n [size]=\"_avatarConfig.size\"\n [glyph]=\"_avatarConfig.glyph\"\n [zoomGlyph]=\"_avatarConfig.zoomGlyph\"\n [label]=\"_avatarConfig.label\"\n [circle]=\"_avatarConfig.circle\"\n [placeholder]=\"_avatarConfig.placeholder\"\n [tile]=\"_avatarConfig.tile\"\n [colorAccent]=\"_avatarConfig.colorAccent\"\n [image]=\"_avatarConfig.image\"\n [transparent]=\"_avatarConfig.transparent\"\n [random]=\"_avatarConfig.random\"\n [class]=\"'fd-list__icon ' + _avatarConfig.class\"\n [ariaLabel]=\"_avatarConfig.ariaLabel\"\n [ariaLabelledby]=\"_avatarConfig.ariaLabelledby\"\n [contain]=\"_avatarConfig.contain\"\n [border]=\"_avatarConfig.border\"\n [alterIcon]=\"_avatarConfig.alterIcon\"\n [backupImage]=\"_avatarConfig.backupImage\"\n [clickable]=\"_avatarConfig.clickable\"\n [attr.alt]=\"_avatarConfig.ariaLabel\"\n role=\"img\"\n ></fd-avatar>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n inject,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DestroyedService, Nullable, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime, distinctUntilChanged, startWith, takeUntil } from 'rxjs';\nimport { SidebarSettingsGeneratorConfig } from '../../models/settings-config.model';\nimport {\n FormSettingsItem,\n GroupedFormSettingsItem,\n SettingsItem,\n SidebarSettingsModel,\n SidebarWidthConfiguration\n} from '../../models/settings.model';\nimport { SettingsGeneratorContentComponent } from '../../settings-generator-content/settings-generator-content.component';\nimport { FDP_SETTINGS_GENERATOR_CONFIG } from '../../tokens';\nimport { BaseSettingsGeneratorLayout } from '../base-settings-generator-layout';\n\n@Component({\n selector: 'fdp-settings-generator-sidebar-layout',\n templateUrl: './settings-generator-sidebar-layout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [DestroyedService]\n})\nexport class SettingsGeneratorSidebarLayoutComponent\n extends BaseSettingsGeneratorLayout\n implements OnInit, AfterViewInit\n{\n /** @hidden */\n @ViewChild('settingsGeneratorContent')\n private readonly settingsGeneratorContent: SettingsGeneratorContentComponent;\n /** @hidden */\n protected _destroy$ = inject(DestroyedService);\n\n /** @hidden */\n private readonly _config = inject<SidebarSettingsGeneratorConfig>(FDP_SETTINGS_GENERATOR_CONFIG);\n\n /**\n * Selected settings section.\n */\n _selectedIndex = -1;\n\n /** @hidden */\n _sidebarWidth: SidebarWidthConfiguration;\n\n /** @hidden */\n @HostBinding('class.fdp-settings-generator__sidebar-layout--mobile')\n _isMobile: boolean;\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fdp-settings-generator__sidebar-layout';\n\n /** @hidden */\n private _sidebarVisible = true;\n\n /** @hidden */\n private _initialSelectedItemSet = false;\n\n /** @hidden */\n get _mobileSidebarVisible(): boolean {\n return this._isMobile && this._sidebarVisible;\n }\n\n /** @hidden */\n constructor() {\n super();\n this._sidebarWidth = this._getNormalizedSidebarWidth(this._config.sidebar?.width);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n this._settingsGeneratorService.settings.pipe(takeUntil(this._destroy$)).subscribe((settings) => {\n if (this._isSidebarSettings(settings) && settings.sidebarWidth) {\n this._sidebarWidth = this._getNormalizedSidebarWidth(settings.sidebarWidth);\n this._cdr.detectChanges();\n }\n });\n }\n\n /** @hidden */\n focusElementByPath(path: string, element: ElementRef<HTMLElement>): void {\n const pathArray = path.split('.');\n // We are interested only in sections with ID.\n const sectionIndex =\n this.settings?.items.findIndex((section) => {\n if (!this._isFormGeneratorSection(section)) {\n return;\n }\n return section.id === pathArray[0];\n }) ?? -1;\n\n // Focus on section.\n if (sectionIndex > -1) {\n this._setSelectedIndex(sectionIndex);\n }\n\n // Currently we support only 2 level nesting of form groups.\n if (pathArray.length > 0) {\n this.settingsGeneratorContent.setActiveTab(pathArray[1]);\n }\n\n setTimeout(() => {\n element.nativeElement.focus();\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this._settingsGenerator.elementRef.nativeElement && this._config.sidebar?.mobileBreakpoint) {\n resizeObservable(this._settingsGenerator.elementRef.nativeElement)\n .pipe(startWith(null), debounceTime(30), distinctUntilChanged(), takeUntil(this._destroy$))\n .subscribe(() => {\n const { width } = this._settingsGenerator.elementRef.nativeElement.getBoundingClientRect();\n const isMobile = width <= this._config.sidebar.mobileBreakpoint;\n if (this._isMobile === isMobile) {\n return;\n }\n this._settingsGeneratorService.setMobileState(isMobile);\n this._isMobile = isMobile;\n\n // User opened section previously, so focus on that section\n if (this._isMobile && this._selectedIndex >= 0) {\n this._sidebarVisible = false;\n }\n\n // In mobile view, we don't need to set initial index, since the section won't be visible to the end user.\n if (!this._initialSelectedItemSet && !this._isMobile) {\n this._setSelectedIndex(this._selectedIndex > -1 ? this._selectedIndex : 0);\n this._initialSelectedItemSet = true;\n }\n this._cdr.detectChanges();\n });\n }\n }\n\n /** @hidden */\n _setSelectedIndex(index: number): void {\n this._selectedIndex = index;\n this._sidebarVisible = index === -1;\n this._cdr.detectChanges();\n }\n\n /** @Hidden */\n _goBack(): void {\n this._setSelectedIndex(-1);\n }\n\n /** @hidden */\n private _getNormalizedSidebarWidth(width: string | SidebarWidthConfiguration): SidebarWidthConfiguration {\n return typeof width === 'string' ? { minWidth: width, maxWidth: width, width } : width;\n }\n\n /** @hidden */\n private _isSidebarSettings(settings: Nullable<any>): settings is SidebarSettingsModel<any> {\n return settings?.appearance === 'sidebar';\n }\n\n /** @hidden */\n private _isFormGeneratorSection(section: SettingsItem): section is FormSettingsItem | GroupedFormSettingsItem {\n return !!(section as any).id;\n }\n}\n","<div\n class=\"fdp-settings-generator__sidebar\"\n [class.fdp-settings-generator__sidebar--hidden]=\"!_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : _sidebarWidth.width\"\n [style.min-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.minWidth\"\n [style.max-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.maxWidth\"\n>\n <ul fd-list [byline]=\"true\" [navigationIndicator]=\"true\">\n <li\n (click)=\"_setSelectedIndex(i)\"\n fd-list-item\n [selected]=\"i === _selectedIndex\"\n *ngFor=\"let item of settings?.items; let i = index\"\n >\n <a fd-list-link [navigated]=\"i === _selectedIndex\">\n <span fd-list-thumbnail *ngIf=\"item.thumbnail\">\n <fdp-settings-generator-sidebar-icon\n [thumbnail]=\"item.thumbnail\"\n ></fdp-settings-generator-sidebar-icon>\n </span>\n <div fd-list-content>\n <ng-container *ngIf=\"item.title | fdkAsyncOrSync as titleValue; else titleElseBlock\">\n <div fd-list-title>{{ titleValue }}</div>\n </ng-container>\n <ng-template #titleElseBlock>\n <div fd-list-title>\n <fd-skeleton\n height=\"16px\"\n type=\"rectangle\"\n width=\"40%\"\n textLines=\"1\"\n style=\"margin: auto 0\"\n ></fd-skeleton>\n </div>\n </ng-template>\n <div fd-list-byline *ngIf=\"item.description\">\n <ng-container\n *ngIf=\"item.description | fdkAsyncOrSync as descriptionValue; else descriptionElseBlock\"\n >\n {{ descriptionValue }}\n </ng-container>\n <ng-template #descriptionElseBlock>\n <fd-skeleton type=\"text\" width=\"60%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n </div>\n </div>\n </a>\n </li>\n </ul>\n</div>\n<div\n class=\"fdp-settings-generator__content\"\n [class.fdp-settings-generator__content--hidden]=\"_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.width + ')'\"\n [style.min-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.minWidth + ')'\"\n [style.max-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.maxWidth + ')'\"\n>\n <ng-container *ngFor=\"let item of settings?.items; let i = index\">\n <fdp-settings-generator-content\n [attr.hidden]=\"i !== _selectedIndex ? true : null\"\n [settings]=\"item\"\n [mobile]=\"_isMobile\"\n (goBack)=\"_goBack()\"\n #settingsGeneratorContent\n ></fdp-settings-generator-content>\n </ng-container>\n</div>\n","import { Injectable, Type } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseSettingsGeneratorLayout } from './layouts/base-settings-generator-layout';\n\n/**\n * Service, used as a registry of the available layouts for Settings Generator Component.\n */\n@Injectable()\nexport class SettingsGeneratorLayoutAccessorService {\n /** @hidden */\n private readonly _layouts = new Map<string, Type<BaseSettingsGeneratorLayout>>();\n\n /**\n * Adds custom layout component to layouts registry for later usage with Settings Generator component.\n * @param layoutName Name of the Layout\n * @param layoutComponent Component type to be used for defined layout.\n */\n addLayout(layoutName: string, layoutComponent: Type<BaseSettingsGeneratorLayout>): void {\n this._layouts.set(layoutName, layoutComponent);\n }\n\n /**\n * Gets Component type for defined layout.\n * @param layoutName\n */\n getLayout(layoutName: string): Nullable<Type<BaseSettingsGeneratorLayout>> {\n return this._layouts.get(layoutName);\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n BaseDynamicFormGeneratorControl,\n dynamicFormFieldProvider,\n dynamicFormGroupChildProvider\n} from '@fundamental-ngx/platform/form';\n\n@Component({\n selector: 'fdp-theme-selector-list',\n templateUrl: './theme-selector-list.component.html',\n styleUrls: ['./theme-selector-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class ThemeSelectorListComponent extends BaseDynamicFormGeneratorControl implements OnInit {\n /** @hidden */\n currentTheme: string;\n\n /** @hidden */\n ngOnInit(): void {\n this.currentTheme = this.formItem.default;\n }\n\n /** @hidden */\n setTheme(value: string): void {\n const control = this.form.get([this.formGroupName, this.name]);\n this.currentTheme = value;\n control?.setValue(value);\n }\n}\n\n@Component({\n selector: 'fdp-theme-selector-list-icon',\n templateUrl: './icon.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThemeSelectorListIconComponent {\n /** @hidden */\n @Input()\n size = 40;\n}\n","<ul fd-list [byline]=\"true\">\n <li fd-list-item *ngFor=\"let item of formItem.choices\" [selected]=\"currentTheme === item.value\">\n <a fd-list-link (fdkClicked)=\"setTheme(item.value)\">\n <ng-container *ngIf=\"!item.template\">\n <div fd-list-thumbnail class=\"settings-selector-list__theme--{{ item.value }}\">\n <fdp-theme-selector-list-icon></fdp-theme-selector-list-icon>\n </div>\n <div fd-list-content>\n <div fd-list-title>{{ item.label }}</div>\n <div fd-list-byline>{{ item.description }}</div>\n </div>\n </ng-container>\n <ng-template\n [ngIf]=\"item.template\"\n [ngTemplateOutlet]=\"item.template!\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </a>\n </li>\n</ul>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 200\" [style.width.px]=\"size\" [style.height.px]=\"size\">\n <defs>\n <style>\n .settings-selector-list-icon__cls-1 {\n fill: #1c2228;\n }\n\n .settings-selector-list-icon__cls-2 {\n fill: #424f5e;\n }\n\n .settings-selector-list-icon__cls-3 {\n fill: #29313a;\n }\n\n .settings-selector-list-icon__cls-4 {\n fill: #3a4552;\n }\n\n .settings-selector-list-icon__cls-5 {\n fill: #91c8f6;\n }\n\n .settings-selector-list-icon__cls-6 {\n fill: #d3d7d9;\n }\n\n .settings-selector-list-icon__cls-7 {\n fill: #354a5f;\n }\n\n .settings-selector-list-icon__cls-8 {\n fill: #7996b4;\n }\n\n .settings-selector-list-icon__cls-9 {\n fill: #fff;\n }\n </style>\n </defs>\n <rect class=\"settings-selector-list-icon__cls-1\" y=\"88\" width=\"200\" height=\"112\" />\n <path class=\"settings-selector-list-icon__cls-2\" d=\"M200,105v95H59V110a5,5,0,0,1,5-5Z\" />\n <path class=\"settings-selector-list-icon__cls-3\" d=\"M64,106H200v94H60V110A4,4,0,0,1,64,106Z\" />\n <rect class=\"settings-selector-list-icon__cls-3\" y=\"44\" width=\"200\" height=\"44\" />\n <rect class=\"settings-selector-list-icon__cls-4\" y=\"87\" width=\"200\" height=\"1\" />\n <path\n class=\"settings-selector-list-icon__cls-5\"\n d=\"M64,63h46a5,5,0,0,1,5,5h0a5,5,0,0,1-5,5H64a5,5,0,0,1-5-5h0A5,5,0,0,1,64,63Z\"\n />\n <path class=\"settings-selector-list-icon__cls-6\" d=\"M153,63h47V73H153a5,5,0,0,1-5-5h0A5,5,0,0,1,153,63Z\" />\n <path class=\"settings-selector-list-icon__cls-5\" d=\"M62,85h50a3,3,0,0,1,3,3H59A3,3,0,0,1,62,85Z\" />\n <rect class=\"settings-selector-list-icon__cls-7\" width=\"200\" height=\"44\" />\n <path\n class=\"settings-selector-list-icon__cls-8\"\n d=\"M68.459,13a1,1,0,0,1,.714,1.707l-16.155,16A1.01,1.01,0,0,1,52.3,31H33.539a1,1,0,0,1-1.01-.99V14a1,1,0,0,1,1-1h34.93m0-3H33.539A4.024,4.024,0,0,0,29.5,14V30a4.024,4.024,0,0,0,4.039,4H52.3a4.033,4.033,0,0,0,2.857-1.172l16.154-16a3.961,3.961,0,0,0,.876-4.359A4.027,4.027,0,0,0,68.459,10Z\"\n />\n <rect class=\"settings-selector-list-icon__cls-9\" x=\"82.121\" y=\"16.949\" width=\"75.758\" height=\"10.101\" rx=\"5\" />\n <path class=\"settings-selector-list-icon__cls-9\" d=\"M170,18h30v8H170a4,4,0,0,1-4-4h0A4,4,0,0,1,170,18Z\" />\n</svg>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n HostBinding,\n Inject,\n inject,\n Injector,\n Input,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { DestroyedService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormGeneratorService } from '@fundamental-ngx/platform/form';\nimport { BaseSettingsGeneratorLayout } from './layouts/base-settings-generator-layout';\nimport { SettingsGeneratorSidebarLayoutComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsModel } from './models/settings.model';\nimport { SettingsGeneratorLayoutAccessorService } from './settings-generator-layout-accessor.service';\nimport { SettingsGeneratorReturnValue, SettingsGeneratorService } from './settings-generator.service';\nimport { ThemeSelectorListComponent } from './controls/theme-selector-list/theme-selector-list.component';\nimport { BehaviorSubject, filter, Observable, Subscription, takeUntil } from 'rxjs';\nimport { FDP_SETTINGS_GENERATOR, FDP_SETTINGS_GENERATOR_CONFIG } from './tokens';\nimport { SettingsGenerator } from './models/settings-generator.model';\n\n@Component({\n selector: 'fdp-settings-generator',\n templateUrl: './settings-generator.component.html',\n styleUrls: ['./settings-generator.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n SettingsGeneratorService,\n DestroyedService,\n {\n provide: FDP_SETTINGS_GENERATOR,\n useExisting: SettingsGeneratorComponent\n }\n ]\n})\nexport class SettingsGeneratorComponent implements SettingsGenerator, AfterViewInit, OnDestroy {\n /**\n * Settings Generator Element Ref.\n */\n elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * Settings configuration.\n */\n @Input()\n set settings(value: Nullable<SettingsModel>) {\n if (value) {\n value.appearance = value.appearance || (this._config.defaultLayout as string);\n }\n this._settings = value;\n this._settingsGeneratorService.settings.next(value);\n this._setLayout();\n }\n\n get settings(): Nullable<SettingsModel> {\n return this._settings;\n }\n\n /** @hidden */\n private _settings: Nullable<SettingsModel>;\n\n /** @hidden */\n private readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fdp-settings-generator';\n\n /** @hidden */\n @ViewChild('renderer', { read: ViewContainerRef })\n private readonly _viewRef: ViewContainerRef;\n\n /** @hidden */\n private _currentLayout: string;\n\n /** @hidden */\n private readonly _viewReady = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _viewReadySub: Subscription;\n\n /** @hidden */\n private _layoutComponentRef: ComponentRef<BaseSettingsGeneratorLayout>;\n\n /** @hidden */\n constructor(\n private readonly _fgService: FormGeneratorService,\n private readonly _settingsLayoutService: SettingsGeneratorLayoutAccessorService,\n private readonly _injector: Injector,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _destroy$: DestroyedService,\n @Inject(FDP_SETTINGS_GENERATOR_CONFIG) private readonly _config: SettingsConfig\n ) {\n this._settingsLayoutService.addLayout('sidebar', SettingsGeneratorSidebarLayoutComponent);\n this._fgService.addComponent(ThemeSelectorListComponent, ['theme-list']);\n this._settingsGeneratorService.onItemFocus.subscribe((entry) => {\n this._layoutComponentRef.instance.focusElementByPath(entry.path, entry.element);\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewReady.next(true);\n\n // We need to notify children components to update their classes.\n this._settingsGeneratorService.mobileState$.pipe(takeUntil(this._destroy$)).subscribe(() => {\n this._cdr.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewReady.complete();\n this._viewReadySub?.unsubscribe();\n this._layoutComponentRef?.destroy();\n this._viewRef?.clear();\n }\n\n /**\n * Programmatically submit inner forms of the settings generator.\n * @returns Observable with settings value grouped by main sections and inner sections.\n */\n submit(): Observable<SettingsGeneratorReturnValue> {\n return this._settingsGeneratorService.submit();\n }\n\n /** @hidden */\n private _setLayout(): void {\n this._viewReadySub?.unsubscribe();\n\n this._viewReadySub = this._viewReady.pipe(filter((ready) => ready)).subscribe(() => {\n if (!this.settings?.appearance || this._currentLayout === this.settings.appearance) {\n return;\n }\n\n const layoutComponent = this._settingsLayoutService.getLayout(this.settings.appearance);\n\n if (!layoutComponent) {\n return;\n }\n\n const injector = Injector.create({\n providers: [],\n parent: this._injector\n });\n\n this._layoutComponentRef?.destroy();\n this._viewRef.clear();\n this._layoutComponentRef = this._viewRef.createComponent(layoutComponent, { injector });\n\n this._currentLayout = this.settings.appearance;\n\n this._cdr.detectChanges();\n });\n }\n}\n","<ng-container #renderer></ng-container>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { AvatarModule } from '@fundamental-ngx/core/avatar';\nimport { ScrollbarModule } from '@fundamental-ngx/core/scrollbar';\nimport { SplitterModule } from '@fundamental-ngx/core/splitter';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { TitleModule } from '@fundamental-ngx/core/title';\nimport { PlatformFormGeneratorModule } from '@fundamental-ngx/platform/form';\nimport { TabsModule } from '@fundamental-ngx/core/tabs';\nimport { ClickedBehaviorModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { SkeletonModule } from '@fundamental-ngx/core/skeleton';\n\nimport { FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG } from './default-config';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsGeneratorComponent } from './settings-generator.component';\nimport { SettingsGeneratorSidebarLayoutComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component';\nimport { SettingsGeneratorContentComponent } from './settings-generator-content/settings-generator-content.component';\nimport { SettingsGeneratorSectionComponent } from './settings-generator-content/settings-generator-section/settings-generator-section.component';\nimport {\n ThemeSelectorListComponent,\n ThemeSelectorListIconComponent\n} from './controls/theme-selector-list/theme-selector-list.component';\nimport { SettingsGeneratorSidebarIconComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component';\nimport { SettingsGeneratorLayoutAccessorService } from './settings-generator-layout-accessor.service';\nimport { FDP_SETTINGS_GENERATOR_CONFIG } from './tokens';\n\n@NgModule({\n imports: [\n CommonModule,\n ListModule,\n IconModule,\n AvatarModule,\n SplitterModule,\n PortalModule,\n TitleModule,\n PlatformFormGeneratorModule,\n TabsModule,\n ClickedBehaviorModule.forRoot(),\n PipeModule,\n SkeletonModule,\n ButtonModule,\n ScrollbarModule\n ],\n declarations: [\n SettingsGeneratorComponent,\n SettingsGeneratorSidebarLayoutComponent,\n SettingsGeneratorContentComponent,\n SettingsGeneratorSectionComponent,\n ThemeSelectorListComponent,\n ThemeSelectorListIconComponent,\n SettingsGeneratorSidebarIconComponent\n ],\n exports: [\n SettingsGeneratorComponent,\n SettingsGeneratorSidebarLayoutComponent,\n SettingsGeneratorContentComponent,\n SettingsGeneratorSectionComponent,\n ThemeSelectorListIconComponent\n ],\n providers: [\n SettingsGeneratorLayoutAccessorService,\n {\n provide: FDP_SETTINGS_GENERATOR_CONFIG,\n useValue: FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG\n }\n ]\n})\nexport class SettingsGeneratorModule {\n /**\n * Allows configuring module on a global level with custom configuration.\n * @param config User's custom configuration.\n */\n static withConfig(config: Partial<SettingsConfig>): ModuleWithProviders<SettingsGeneratorModule> {\n return {\n ngModule: SettingsGeneratorModule,\n providers: [\n {\n provide: FDP_SETTINGS_GENERATOR_CONFIG,\n useValue: { ...FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG, ...config }\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i6.SettingsGeneratorSectionComponent","i7","takeUntil","i4.SettingsGeneratorContentComponent","i5.SettingsGeneratorSidebarIconComponent","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-platform-settings-generator.mjs","sources":["../../../../libs/platform/src/lib/settings-generator/default-config.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator.service.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.html","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-content.component.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator-content/settings-generator-content.component.html","../../../../libs/platform/src/lib/settings-generator/tokens.ts","../../../../libs/platform/src/lib/settings-generator/layouts/base-settings-generator-layout.ts","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.ts","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.html","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.ts","../../../../libs/platform/src/lib/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.html","../../../../libs/platform/src/lib/settings-generator/settings-generator-layout-accessor.service.ts","../../../../libs/platform/src/lib/settings-generator/controls/theme-selector-list/theme-selector-list.component.ts","../../../../libs/platform/src/lib/settings-generator/controls/theme-selector-list/theme-selector-list.component.html","../../../../libs/platform/src/lib/settings-generator/controls/theme-selector-list/icon.html","../../../../libs/platform/src/lib/settings-generator/settings-generator.component.ts","../../../../libs/platform/src/lib/settings-generator/settings-generator.component.html","../../../../libs/platform/src/lib/settings-generator/settings-generator.module.ts","../../../../libs/platform/src/lib/settings-generator/fundamental-ngx-platform-settings-generator.ts"],"sourcesContent":["import { SidebarSettingsGeneratorConfig } from './models/settings-config.model';\n\nexport const FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG: SidebarSettingsGeneratorConfig = {\n defaultLayout: 'sidebar',\n sidebar: {\n mobileBreakpoint: 700,\n width: '25%'\n }\n};\n","import { Injectable, OnDestroy, inject, ElementRef } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n delay,\n filter,\n map,\n switchMap,\n take,\n takeUntil,\n tap\n} from 'rxjs';\nimport { SettingsModel } from './models/settings.model';\nimport { DynamicFormValue, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport { MessagePopoverFormWrapperComponent } from '@fundamental-ngx/platform/message-popover';\nimport { set } from 'lodash-es';\n\nexport type SettingsGeneratorReturnValue = Record<string, unknown>;\n\n@Injectable()\nexport class SettingsGeneratorService implements OnDestroy {\n /**\n * Settings configuration subject.\n */\n readonly settings = new BehaviorSubject<Nullable<SettingsModel>>(null);\n\n /**\n * Stream emitted when user clicked on message popover error entry.\n */\n readonly onItemFocus = new Subject<{ path: string; element: ElementRef<HTMLElement> }>();\n\n /**\n * Stream emitted when mobile state has been changed.\n */\n readonly mobileState$ = new BehaviorSubject<boolean>(false);\n\n /**\n * @hidden\n * Form generators collected from all items and groups.\n */\n private readonly _formGenerators = new Map<string, FormGeneratorComponent>();\n\n /** @hidden */\n private readonly _messagePopover = inject(MessagePopoverFormWrapperComponent, {\n optional: true\n });\n\n /** @hidden */\n private readonly _destroy$ = new Subject<void>();\n\n /** @hidden */\n constructor() {\n this._listenToMessagePopoverItemClick();\n }\n\n /** @hidden */\n _addFormGenerator(path: string[], formGenerator: FormGeneratorComponent): void {\n const joinedPath = path.join('.');\n this._formGenerators.set(joinedPath, formGenerator);\n formGenerator.loading$\n .pipe(\n filter((loading) => !loading),\n take(1),\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n this._messagePopover?.addForms(formGenerator.formGroup);\n this._messagePopover?.addFormFields(formGenerator.formFields);\n });\n }\n\n /** @hidden */\n _removeFormGenerator(path: string[]): void {\n const joinedPath = path.join('.');\n this._formGenerators.delete(joinedPath);\n }\n\n /**\n * Submits registered forms and emits result if submission status was successful (no errors).\n */\n submit(): Observable<SettingsGeneratorReturnValue> {\n const joinedEvents: Record<string, Observable<DynamicFormValue>> = {};\n this._formGenerators.forEach((formGenerator, key) => {\n joinedEvents[key] = formGenerator.loading$.pipe(\n filter((result) => !result),\n delay(50),\n tap(() => formGenerator.submit()),\n switchMap(() => formGenerator.formSubmittedStatus$),\n filter((status) => status.success),\n take(1),\n map((result) => result.value as DynamicFormValue),\n takeUntil(this._destroy$)\n );\n });\n\n return combineLatest(joinedEvents).pipe(\n map((result) => Object.entries(result).reduce((a, b) => set(a, b[0], b[1]), {})),\n take(1),\n takeUntil(this._destroy$)\n );\n }\n\n /**\n * Sets mobile state.\n * @param isMobile Whether mobile state should be applied.\n */\n setMobileState(isMobile: boolean): void {\n this.mobileState$.next(isMobile);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._formGenerators.clear();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n /**\n * @hidden\n * Subscribes to click events from message popover and tries to open the section where invalid input is located.\n */\n private _listenToMessagePopoverItemClick(): void {\n this._messagePopover?.messagePopover$\n ?.pipe(\n switchMap((messagePopover) => messagePopover.focusItem),\n filter((entry) => !!entry.formField),\n takeUntil(this._destroy$)\n )\n .subscribe((entry) => {\n this._formGenerators.forEach((formGenerator, path) => {\n const formFields = formGenerator.formFields;\n // We already filtered entries with present form field.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (formFields.includes(entry.formField!)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.onItemFocus.next({ path, element: entry.formField!.elementRef });\n return false;\n }\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport {\n FormSettingsItem,\n SettingsFormTab,\n SettingsItem,\n SettingsTemplateTab,\n TemplateSettingsItem\n} from '../../models/settings.model';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { SettingsGeneratorService } from '../../settings-generator.service';\n\nexport type SettingsSectionItemsModel = SettingsTemplateTab | SettingsFormTab | SettingsItem;\n\n@Component({\n selector: 'fdp-settings-generator-section',\n templateUrl: './settings-generator-section.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsGeneratorSectionComponent {\n /**\n * Group name. Used to define full path of the inner form.\n */\n @Input()\n groupName: Nullable<string>;\n\n /**\n * Section items.\n * @param value {Nullable<SettingsSectionItemsModel>} Can be either a template Ref, or Form generator items.\n */\n @Input()\n set items(value: Nullable<SettingsSectionItemsModel>) {\n this._items = value;\n\n if (this._isTemplateLayout(value)) {\n this._renderer = 'template';\n this._templateRef = value.template;\n } else {\n this._renderer = 'form';\n this._formItems = value?.items || [];\n }\n }\n\n get items(): Nullable<SettingsSectionItemsModel> {\n return this._items;\n }\n\n /** @hidden */\n private readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n /** @hidden */\n private _items: Nullable<SettingsSectionItemsModel>;\n\n /** @hidden */\n @ViewChild(FormGeneratorComponent)\n private set _formGeneratorCmp(component: FormGeneratorComponent | undefined) {\n this._formGenerator = component;\n\n if (!this.items) {\n return;\n }\n\n const config = this.items as SettingsFormTab | FormSettingsItem;\n\n const path = [this.groupName, config.id].filter((v) => !!v) as string[];\n\n if (component) {\n this._settingsGeneratorService._addFormGenerator(path, component);\n } else {\n this._settingsGeneratorService._removeFormGenerator(path);\n }\n }\n\n /** @hidden */\n private _formGenerator: FormGeneratorComponent | undefined;\n\n /** @hidden */\n _renderer: 'form' | 'template' = 'form';\n\n /** @hidden */\n _templateRef: TemplateRef<any> | null = null;\n\n /** @hidden */\n _formItems: DynamicFormItem[] = [];\n\n /** @hidden */\n _isTemplateLayout(settings: any): settings is TemplateSettingsItem {\n return !!settings?.template;\n }\n}\n","<fdp-form-generator\n *ngIf=\"_renderer === 'form'\"\n [noAdditionalContent]=\"true\"\n [mainTitle]=\"items?.title | fdkAsyncOrSync\"\n [hideMainTItle]=\"true\"\n [formItems]=\"_formItems\"\n [unifiedLayout]=\"false\"\n></fdp-form-generator>\n\n<ng-container *ngIf=\"_renderer === 'template' && items?.template\" [ngTemplateOutlet]=\"_templateRef\"></ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n Output,\n QueryList,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { TabPanelComponent } from '@fundamental-ngx/core/tabs';\nimport {\n GroupedFormSettingsItem,\n GroupedTemplateSettingsItem,\n SettingsFormTab,\n SettingsItem,\n SettingsTemplateTab,\n TemplateSettingsItem\n} from '../models/settings.model';\n\n@Component({\n selector: 'fdp-settings-generator-content',\n templateUrl: './settings-generator-content.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsGeneratorContentComponent {\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _settings: Nullable<SettingsItem>;\n\n /** @hidden */\n _groups: (SettingsTemplateTab | SettingsFormTab)[] = [];\n\n /** @hidden */\n _index: number;\n\n /** @hidden */\n @Input()\n set settings(value: Nullable<SettingsItem>) {\n this._settings = value;\n\n this._renderer = this.isTemplateLayout(this._settings) ? 'template' : 'form';\n if (this.isGroupedSettings(this._settings)) {\n this._contentLayout = 'tabs';\n this._groups = this._settings.groups;\n } else {\n this._contentLayout = 'form';\n }\n }\n\n get settings(): Nullable<SettingsItem> {\n return this._settings;\n }\n\n /** Whether to render content component in mobile view. */\n @Input()\n mobile = false;\n\n /** Event emits when user needs to be moved back to navigation screen. */\n @Output()\n goBack = new EventEmitter<void>();\n\n /** @hidden */\n _id: Nullable<string>;\n\n /** @hidden */\n _renderer: 'form' | 'template' = 'form';\n\n /** @hidden */\n _contentLayout: 'form' | 'tabs' = 'form';\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fdp-settings-generator__content-section';\n\n /** @hidden */\n @ViewChildren(TabPanelComponent)\n private readonly _tabPanels: QueryList<TabPanelComponent>;\n\n /** @hidden */\n isTemplateLayout(settings: Nullable<SettingsItem>): settings is TemplateSettingsItem {\n return !!settings?.template;\n }\n\n /** @hidden */\n isGroupedSettings(settings: any): settings is GroupedFormSettingsItem | GroupedTemplateSettingsItem {\n return settings?.groups?.length > 0;\n }\n\n /**\n * Activates tab by group ID.\n * @param id ID of the group.\n */\n setActiveTab(id: string): void {\n if (!this.isGroupedSettings(this._settings)) {\n return;\n }\n this._tabPanels?.forEach((tab, index) => {\n const group = this._groups[index];\n\n if (group.id === id) {\n tab.open(true);\n return false;\n }\n });\n }\n}\n","<h2 fd-title class=\"fdp-settings-generator__title\">\n <button *ngIf=\"mobile\" fd-button glyph=\"menu2\" fdType=\"transparent\" (click)=\"goBack.emit()\"></button>\n <ng-container *ngIf=\"settings?.title | fdkAsyncOrSync as settingsTitle; else loadingBlock\">\n {{ settingsTitle }}\n </ng-container>\n <ng-template #loadingBlock>\n <fd-skeleton height=\"40px\" type=\"rectangle\" width=\"40%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n</h2>\n\n<ng-template #tabbedLayout>\n <fd-tab-list size=\"s\">\n <fd-tab *ngFor=\"let group of _groups\" [title]=\"group.title | fdkAsyncOrSync\">\n <fdp-settings-generator-section\n [groupName]=\"$any(settings).id\"\n [items]=\"group\"\n ></fdp-settings-generator-section>\n </fd-tab>\n </fd-tab-list>\n</ng-template>\n\n<ng-template #formLayout>\n <fdp-settings-generator-section [items]=\"settings!\"></fdp-settings-generator-section>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"_contentLayout === 'tabs' ? tabbedLayout : formLayout\"></ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsGenerator } from './models/settings-generator.model';\n\nexport const FDP_SETTINGS_GENERATOR_CONFIG = new InjectionToken<SettingsConfig>('FdpSettingsGeneratorConfig');\nexport const FDP_SETTINGS_GENERATOR = new InjectionToken<SettingsGenerator>('FdpSettingsGenerator');\n","import { ChangeDetectorRef, Directive, ElementRef, inject, OnInit } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { SettingsGeneratorService } from '../settings-generator.service';\nimport { Subject } from 'rxjs';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { SettingsModel } from '../models/settings.model';\nimport { FDP_SETTINGS_GENERATOR } from '../tokens';\n\n@Directive()\nexport abstract class BaseSettingsGeneratorLayout implements OnInit {\n /**\n * Settings generator service.\n */\n protected readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n /**\n * Change detector ref.\n */\n protected readonly _cdr = inject(ChangeDetectorRef);\n\n /**\n * Settings generator component ref.\n */\n protected _settingsGenerator = inject(FDP_SETTINGS_GENERATOR);\n\n /**\n * Subject to notify subscriptions to unsubscribe when component destroys.\n */\n protected abstract _destroy$: Subject<void>;\n\n /**\n * Settings schema.\n */\n settings: Nullable<SettingsModel>;\n\n /** @hidden */\n ngOnInit(): void {\n this._settingsGeneratorService.settings.pipe(takeUntil(this._destroy$)).subscribe((settings) => {\n this.settings = settings;\n this._cdr.detectChanges();\n });\n }\n\n /**\n * Method for focusing inner form control.\n * It is responsible for activating the section and placing focus on the element.\n * @param path path of the control joined by dot(.). Usually represents section ID and inner group ID.\n * @param element ElementRef of native element to focus.\n */\n abstract focusElementByPath(path: string, element: ElementRef<HTMLElement>): void;\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ThumbnailSettingsItem } from '../../../models/settings.model';\nimport { ListAvatarConfig, ListIconConfig } from '@fundamental-ngx/platform/list';\nimport { merge } from 'lodash-es';\nimport { Observable, takeUntil } from 'rxjs';\nimport { DestroyedService, isSubscribable } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n selector: 'fdp-settings-generator-sidebar-icon',\n templateUrl: './settings-generator-sidebar-icon.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DestroyedService]\n})\nexport class SettingsGeneratorSidebarIconComponent {\n /** Thumbnail configuration. */\n @Input()\n set thumbnail(value: ThumbnailSettingsItem) {\n this._thumbnail = value;\n if (this.thumbnail.avatar) {\n this._transformAvatarConfig(this.thumbnail.avatar);\n }\n\n if (this.thumbnail.icon) {\n this._transformIconConfig(this.thumbnail.icon);\n }\n }\n\n get thumbnail(): ThumbnailSettingsItem {\n return this._thumbnail;\n }\n\n /** @hidden */\n private _thumbnail: ThumbnailSettingsItem;\n\n /** @hidden */\n _avatarConfig: ListAvatarConfig | undefined;\n\n /** @hidden */\n _iconConfig: ListIconConfig | undefined;\n\n /** @hidden */\n private readonly _destroy$ = inject(DestroyedService);\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _transformAvatarConfig(\n config$: Partial<ListAvatarConfig> | string | Observable<Partial<ListAvatarConfig> | string>\n ): void {\n this._getConfigFromObservable(config$, (parsedConfig) => {\n const avatarConfig = typeof parsedConfig === 'string' ? { image: parsedConfig } : parsedConfig;\n this._avatarConfig = merge(new ListAvatarConfig(), avatarConfig);\n this._cdr.detectChanges();\n });\n }\n\n /** @Hidden */\n private _transformIconConfig(\n config$: Partial<ListIconConfig> | string | Observable<Partial<ListIconConfig> | string>\n ): void {\n this._getConfigFromObservable(config$, (parsedConfig) => {\n const iconConfig = typeof parsedConfig === 'string' ? { glyph: parsedConfig } : parsedConfig;\n this._iconConfig = merge(new ListIconConfig(), iconConfig);\n this._cdr.detectChanges();\n });\n }\n\n /** @hidden */\n private _getConfigFromObservable<T>(config: T | Observable<T>, callback: (config: T) => void): void {\n if (isSubscribable(config)) {\n config.pipe(takeUntil(this._destroy$)).subscribe((_config) => {\n callback(_config);\n });\n\n return;\n }\n\n callback(config);\n }\n}\n","<ng-container *ngIf=\"!_iconConfig && !_avatarConfig; else iconBlock\">\n <fd-skeleton type=\"rectangle\" width=\"48px\" height=\"48px\"></fd-skeleton>\n</ng-container>\n<ng-template #iconBlock>\n <fd-icon\n *ngIf=\"_iconConfig && _iconConfig.glyph\"\n [glyph]=\"_iconConfig.glyph\"\n [ariaLabel]=\"_iconConfig.ariaLabel\"\n [font]=\"_iconConfig.font\"\n ></fd-icon>\n <fd-avatar\n *ngIf=\"_avatarConfig && (_avatarConfig.image || _avatarConfig.glyph || _avatarConfig.zoomGlyph)\"\n [size]=\"_avatarConfig.size\"\n [glyph]=\"_avatarConfig.glyph\"\n [zoomGlyph]=\"_avatarConfig.zoomGlyph\"\n [label]=\"_avatarConfig.label\"\n [circle]=\"_avatarConfig.circle\"\n [placeholder]=\"_avatarConfig.placeholder\"\n [tile]=\"_avatarConfig.tile\"\n [colorAccent]=\"_avatarConfig.colorAccent\"\n [image]=\"_avatarConfig.image\"\n [transparent]=\"_avatarConfig.transparent\"\n [random]=\"_avatarConfig.random\"\n [class]=\"'fd-list__icon ' + _avatarConfig.class\"\n [ariaLabel]=\"_avatarConfig.ariaLabel\"\n [ariaLabelledby]=\"_avatarConfig.ariaLabelledby\"\n [contain]=\"_avatarConfig.contain\"\n [border]=\"_avatarConfig.border\"\n [alterIcon]=\"_avatarConfig.alterIcon\"\n [backupImage]=\"_avatarConfig.backupImage\"\n [clickable]=\"_avatarConfig.clickable\"\n [attr.alt]=\"_avatarConfig.ariaLabel\"\n role=\"img\"\n ></fd-avatar>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n inject,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DestroyedService, Nullable, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime, distinctUntilChanged, startWith, takeUntil } from 'rxjs';\nimport { SidebarSettingsGeneratorConfig } from '../../models/settings-config.model';\nimport {\n FormSettingsItem,\n GroupedFormSettingsItem,\n SettingsItem,\n SidebarSettingsModel,\n SidebarWidthConfiguration\n} from '../../models/settings.model';\nimport { SettingsGeneratorContentComponent } from '../../settings-generator-content/settings-generator-content.component';\nimport { FDP_SETTINGS_GENERATOR_CONFIG } from '../../tokens';\nimport { BaseSettingsGeneratorLayout } from '../base-settings-generator-layout';\n\n@Component({\n selector: 'fdp-settings-generator-sidebar-layout',\n templateUrl: './settings-generator-sidebar-layout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [DestroyedService]\n})\nexport class SettingsGeneratorSidebarLayoutComponent\n extends BaseSettingsGeneratorLayout\n implements OnInit, AfterViewInit\n{\n /** @hidden */\n @ViewChild('settingsGeneratorContent')\n private readonly settingsGeneratorContent: SettingsGeneratorContentComponent;\n /** @hidden */\n protected _destroy$ = inject(DestroyedService);\n\n /** @hidden */\n private readonly _config = inject<SidebarSettingsGeneratorConfig>(FDP_SETTINGS_GENERATOR_CONFIG);\n\n /**\n * Selected settings section.\n */\n _selectedIndex = -1;\n\n /** @hidden */\n _sidebarWidth: SidebarWidthConfiguration;\n\n /** @hidden */\n @HostBinding('class.fdp-settings-generator__sidebar-layout--mobile')\n _isMobile: boolean;\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fdp-settings-generator__sidebar-layout';\n\n /** @hidden */\n private _sidebarVisible = true;\n\n /** @hidden */\n private _initialSelectedItemSet = false;\n\n /** @hidden */\n get _mobileSidebarVisible(): boolean {\n return this._isMobile && this._sidebarVisible;\n }\n\n /** @hidden */\n constructor() {\n super();\n this._sidebarWidth = this._getNormalizedSidebarWidth(this._config.sidebar?.width);\n }\n\n /** @hidden */\n ngOnInit(): void {\n super.ngOnInit();\n this._settingsGeneratorService.settings.pipe(takeUntil(this._destroy$)).subscribe((settings) => {\n if (this._isSidebarSettings(settings) && settings.sidebarWidth) {\n this._sidebarWidth = this._getNormalizedSidebarWidth(settings.sidebarWidth);\n this._cdr.detectChanges();\n }\n });\n }\n\n /** @hidden */\n focusElementByPath(path: string, element: ElementRef<HTMLElement>): void {\n const pathArray = path.split('.');\n // We are interested only in sections with ID.\n const sectionIndex =\n this.settings?.items.findIndex((section) => {\n if (!this._isFormGeneratorSection(section)) {\n return;\n }\n return section.id === pathArray[0];\n }) ?? -1;\n\n // Focus on section.\n if (sectionIndex > -1) {\n this._setSelectedIndex(sectionIndex);\n }\n\n // Currently we support only 2 level nesting of form groups.\n if (pathArray.length > 0) {\n this.settingsGeneratorContent.setActiveTab(pathArray[1]);\n }\n\n setTimeout(() => {\n element.nativeElement.focus();\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this._settingsGenerator.elementRef.nativeElement && this._config.sidebar?.mobileBreakpoint) {\n resizeObservable(this._settingsGenerator.elementRef.nativeElement)\n .pipe(startWith(null), debounceTime(30), distinctUntilChanged(), takeUntil(this._destroy$))\n .subscribe(() => {\n const { width } = this._settingsGenerator.elementRef.nativeElement.getBoundingClientRect();\n const isMobile = width <= this._config.sidebar.mobileBreakpoint;\n if (this._isMobile === isMobile) {\n return;\n }\n this._settingsGeneratorService.setMobileState(isMobile);\n this._isMobile = isMobile;\n\n // User opened section previously, so focus on that section\n if (this._isMobile && this._selectedIndex >= 0) {\n this._sidebarVisible = false;\n }\n\n // In mobile view, we don't need to set initial index, since the section won't be visible to the end user.\n if (!this._initialSelectedItemSet && !this._isMobile) {\n this._setSelectedIndex(this._selectedIndex > -1 ? this._selectedIndex : 0);\n this._initialSelectedItemSet = true;\n }\n this._cdr.detectChanges();\n });\n }\n }\n\n /** @hidden */\n _setSelectedIndex(index: number): void {\n this._selectedIndex = index;\n this._sidebarVisible = index === -1;\n this._cdr.detectChanges();\n }\n\n /** @Hidden */\n _goBack(): void {\n this._setSelectedIndex(-1);\n }\n\n /** @hidden */\n private _getNormalizedSidebarWidth(width: string | SidebarWidthConfiguration): SidebarWidthConfiguration {\n return typeof width === 'string' ? { minWidth: width, maxWidth: width, width } : width;\n }\n\n /** @hidden */\n private _isSidebarSettings(settings: Nullable<any>): settings is SidebarSettingsModel<any> {\n return settings?.appearance === 'sidebar';\n }\n\n /** @hidden */\n private _isFormGeneratorSection(section: SettingsItem): section is FormSettingsItem | GroupedFormSettingsItem {\n return !!(section as any).id;\n }\n}\n","<div\n class=\"fdp-settings-generator__sidebar\"\n [class.fdp-settings-generator__sidebar--hidden]=\"!_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : _sidebarWidth.width\"\n [style.min-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.minWidth\"\n [style.max-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.maxWidth\"\n>\n <ul fd-list [byline]=\"true\" [navigationIndicator]=\"true\">\n <li\n (click)=\"_setSelectedIndex(i)\"\n fd-list-item\n [selected]=\"i === _selectedIndex\"\n *ngFor=\"let item of settings?.items; let i = index\"\n >\n <a fd-list-link [navigated]=\"i === _selectedIndex\">\n <span fd-list-thumbnail *ngIf=\"item.thumbnail\">\n <fdp-settings-generator-sidebar-icon\n [thumbnail]=\"item.thumbnail\"\n ></fdp-settings-generator-sidebar-icon>\n </span>\n <div fd-list-content>\n <ng-container *ngIf=\"item.title | fdkAsyncOrSync as titleValue; else titleElseBlock\">\n <div fd-list-title>{{ titleValue }}</div>\n </ng-container>\n <ng-template #titleElseBlock>\n <div fd-list-title>\n <fd-skeleton\n height=\"16px\"\n type=\"rectangle\"\n width=\"40%\"\n textLines=\"1\"\n style=\"margin: auto 0\"\n ></fd-skeleton>\n </div>\n </ng-template>\n <div fd-list-byline *ngIf=\"item.description\">\n <ng-container\n *ngIf=\"item.description | fdkAsyncOrSync as descriptionValue; else descriptionElseBlock\"\n >\n {{ descriptionValue }}\n </ng-container>\n <ng-template #descriptionElseBlock>\n <fd-skeleton type=\"text\" width=\"60%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n </div>\n </div>\n </a>\n </li>\n </ul>\n</div>\n<div\n class=\"fdp-settings-generator__content\"\n [class.fdp-settings-generator__content--hidden]=\"_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.width + ')'\"\n [style.min-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.minWidth + ')'\"\n [style.max-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.maxWidth + ')'\"\n>\n <ng-container *ngFor=\"let item of settings?.items; let i = index\">\n <fdp-settings-generator-content\n [attr.hidden]=\"i !== _selectedIndex ? true : null\"\n [settings]=\"item\"\n [mobile]=\"_isMobile\"\n (goBack)=\"_goBack()\"\n #settingsGeneratorContent\n ></fdp-settings-generator-content>\n </ng-container>\n</div>\n","import { Injectable, Type } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseSettingsGeneratorLayout } from './layouts/base-settings-generator-layout';\n\n/**\n * Service, used as a registry of the available layouts for Settings Generator Component.\n */\n@Injectable()\nexport class SettingsGeneratorLayoutAccessorService {\n /** @hidden */\n private readonly _layouts = new Map<string, Type<BaseSettingsGeneratorLayout>>();\n\n /**\n * Adds custom layout component to layouts registry for later usage with Settings Generator component.\n * @param layoutName Name of the Layout\n * @param layoutComponent Component type to be used for defined layout.\n */\n addLayout(layoutName: string, layoutComponent: Type<BaseSettingsGeneratorLayout>): void {\n this._layouts.set(layoutName, layoutComponent);\n }\n\n /**\n * Gets Component type for defined layout.\n * @param layoutName\n */\n getLayout(layoutName: string): Nullable<Type<BaseSettingsGeneratorLayout>> {\n return this._layouts.get(layoutName);\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport {\n BaseDynamicFormGeneratorControl,\n dynamicFormFieldProvider,\n dynamicFormGroupChildProvider\n} from '@fundamental-ngx/platform/form';\n\n@Component({\n selector: 'fdp-theme-selector-list',\n templateUrl: './theme-selector-list.component.html',\n styleUrls: ['./theme-selector-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider]\n})\nexport class ThemeSelectorListComponent extends BaseDynamicFormGeneratorControl implements OnInit {\n /** @hidden */\n currentTheme: string;\n\n /** @hidden */\n ngOnInit(): void {\n this.currentTheme = this.formItem.default;\n }\n\n /** @hidden */\n setTheme(value: string): void {\n const control = this.form.get([this.formGroupName, this.name]);\n this.currentTheme = value;\n control?.setValue(value);\n }\n}\n\n@Component({\n selector: 'fdp-theme-selector-list-icon',\n templateUrl: './icon.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThemeSelectorListIconComponent {\n /** @hidden */\n @Input()\n size = 40;\n}\n","<ul fd-list [byline]=\"true\">\n <li fd-list-item *ngFor=\"let item of formItem.choices\" [selected]=\"currentTheme === item.value\">\n <a fd-list-link (fdkClicked)=\"setTheme(item.value)\">\n <ng-container *ngIf=\"!item.template\">\n <div fd-list-thumbnail class=\"settings-selector-list__theme--{{ item.value }}\">\n <fdp-theme-selector-list-icon></fdp-theme-selector-list-icon>\n </div>\n <div fd-list-content>\n <div fd-list-title>{{ item.label }}</div>\n <div fd-list-byline>{{ item.description }}</div>\n </div>\n </ng-container>\n <ng-template\n [ngIf]=\"item.template\"\n [ngTemplateOutlet]=\"item.template!\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </a>\n </li>\n</ul>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 200\" [style.width.px]=\"size\" [style.height.px]=\"size\">\n <defs>\n <style>\n .settings-selector-list-icon__cls-1 {\n fill: #1c2228;\n }\n\n .settings-selector-list-icon__cls-2 {\n fill: #424f5e;\n }\n\n .settings-selector-list-icon__cls-3 {\n fill: #29313a;\n }\n\n .settings-selector-list-icon__cls-4 {\n fill: #3a4552;\n }\n\n .settings-selector-list-icon__cls-5 {\n fill: #91c8f6;\n }\n\n .settings-selector-list-icon__cls-6 {\n fill: #d3d7d9;\n }\n\n .settings-selector-list-icon__cls-7 {\n fill: #354a5f;\n }\n\n .settings-selector-list-icon__cls-8 {\n fill: #7996b4;\n }\n\n .settings-selector-list-icon__cls-9 {\n fill: #fff;\n }\n </style>\n </defs>\n <rect class=\"settings-selector-list-icon__cls-1\" y=\"88\" width=\"200\" height=\"112\" />\n <path class=\"settings-selector-list-icon__cls-2\" d=\"M200,105v95H59V110a5,5,0,0,1,5-5Z\" />\n <path class=\"settings-selector-list-icon__cls-3\" d=\"M64,106H200v94H60V110A4,4,0,0,1,64,106Z\" />\n <rect class=\"settings-selector-list-icon__cls-3\" y=\"44\" width=\"200\" height=\"44\" />\n <rect class=\"settings-selector-list-icon__cls-4\" y=\"87\" width=\"200\" height=\"1\" />\n <path\n class=\"settings-selector-list-icon__cls-5\"\n d=\"M64,63h46a5,5,0,0,1,5,5h0a5,5,0,0,1-5,5H64a5,5,0,0,1-5-5h0A5,5,0,0,1,64,63Z\"\n />\n <path class=\"settings-selector-list-icon__cls-6\" d=\"M153,63h47V73H153a5,5,0,0,1-5-5h0A5,5,0,0,1,153,63Z\" />\n <path class=\"settings-selector-list-icon__cls-5\" d=\"M62,85h50a3,3,0,0,1,3,3H59A3,3,0,0,1,62,85Z\" />\n <rect class=\"settings-selector-list-icon__cls-7\" width=\"200\" height=\"44\" />\n <path\n class=\"settings-selector-list-icon__cls-8\"\n d=\"M68.459,13a1,1,0,0,1,.714,1.707l-16.155,16A1.01,1.01,0,0,1,52.3,31H33.539a1,1,0,0,1-1.01-.99V14a1,1,0,0,1,1-1h34.93m0-3H33.539A4.024,4.024,0,0,0,29.5,14V30a4.024,4.024,0,0,0,4.039,4H52.3a4.033,4.033,0,0,0,2.857-1.172l16.154-16a3.961,3.961,0,0,0,.876-4.359A4.027,4.027,0,0,0,68.459,10Z\"\n />\n <rect class=\"settings-selector-list-icon__cls-9\" x=\"82.121\" y=\"16.949\" width=\"75.758\" height=\"10.101\" rx=\"5\" />\n <path class=\"settings-selector-list-icon__cls-9\" d=\"M170,18h30v8H170a4,4,0,0,1-4-4h0A4,4,0,0,1,170,18Z\" />\n</svg>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n HostBinding,\n Inject,\n inject,\n Injector,\n Input,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { DestroyedService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormGeneratorService } from '@fundamental-ngx/platform/form';\nimport { BaseSettingsGeneratorLayout } from './layouts/base-settings-generator-layout';\nimport { SettingsGeneratorSidebarLayoutComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsModel } from './models/settings.model';\nimport { SettingsGeneratorLayoutAccessorService } from './settings-generator-layout-accessor.service';\nimport { SettingsGeneratorReturnValue, SettingsGeneratorService } from './settings-generator.service';\nimport { ThemeSelectorListComponent } from './controls/theme-selector-list/theme-selector-list.component';\nimport { BehaviorSubject, filter, Observable, Subscription, takeUntil } from 'rxjs';\nimport { FDP_SETTINGS_GENERATOR, FDP_SETTINGS_GENERATOR_CONFIG } from './tokens';\nimport { SettingsGenerator } from './models/settings-generator.model';\n\n@Component({\n selector: 'fdp-settings-generator',\n templateUrl: './settings-generator.component.html',\n styleUrls: ['./settings-generator.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n SettingsGeneratorService,\n DestroyedService,\n {\n provide: FDP_SETTINGS_GENERATOR,\n useExisting: SettingsGeneratorComponent\n }\n ]\n})\nexport class SettingsGeneratorComponent implements SettingsGenerator, AfterViewInit, OnDestroy {\n /**\n * Settings Generator Element Ref.\n */\n elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * Settings configuration.\n */\n @Input()\n set settings(value: Nullable<SettingsModel>) {\n if (value) {\n value.appearance = value.appearance || (this._config.defaultLayout as string);\n }\n this._settings = value;\n this._settingsGeneratorService.settings.next(value);\n this._setLayout();\n }\n\n get settings(): Nullable<SettingsModel> {\n return this._settings;\n }\n\n /** @hidden */\n private _settings: Nullable<SettingsModel>;\n\n /** @hidden */\n private readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fdp-settings-generator';\n\n /** @hidden */\n @ViewChild('renderer', { read: ViewContainerRef })\n private readonly _viewRef: ViewContainerRef;\n\n /** @hidden */\n private _currentLayout: string;\n\n /** @hidden */\n private readonly _viewReady = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _viewReadySub: Subscription;\n\n /** @hidden */\n private _layoutComponentRef: ComponentRef<BaseSettingsGeneratorLayout>;\n\n /** @hidden */\n constructor(\n private readonly _fgService: FormGeneratorService,\n private readonly _settingsLayoutService: SettingsGeneratorLayoutAccessorService,\n private readonly _injector: Injector,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _destroy$: DestroyedService,\n @Inject(FDP_SETTINGS_GENERATOR_CONFIG) private readonly _config: SettingsConfig\n ) {\n this._settingsLayoutService.addLayout('sidebar', SettingsGeneratorSidebarLayoutComponent);\n this._fgService.addComponent(ThemeSelectorListComponent, ['theme-list']);\n this._settingsGeneratorService.onItemFocus.subscribe((entry) => {\n this._layoutComponentRef.instance.focusElementByPath(entry.path, entry.element);\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewReady.next(true);\n\n // We need to notify children components to update their classes.\n this._settingsGeneratorService.mobileState$.pipe(takeUntil(this._destroy$)).subscribe(() => {\n this._cdr.markForCheck();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewReady.complete();\n this._viewReadySub?.unsubscribe();\n this._layoutComponentRef?.destroy();\n this._viewRef?.clear();\n }\n\n /**\n * Programmatically submit inner forms of the settings generator.\n * @returns Observable with settings value grouped by main sections and inner sections.\n */\n submit(): Observable<SettingsGeneratorReturnValue> {\n return this._settingsGeneratorService.submit();\n }\n\n /** @hidden */\n private _setLayout(): void {\n this._viewReadySub?.unsubscribe();\n\n this._viewReadySub = this._viewReady.pipe(filter((ready) => ready)).subscribe(() => {\n if (!this.settings?.appearance || this._currentLayout === this.settings.appearance) {\n return;\n }\n\n const layoutComponent = this._settingsLayoutService.getLayout(this.settings.appearance);\n\n if (!layoutComponent) {\n return;\n }\n\n const injector = Injector.create({\n providers: [],\n parent: this._injector\n });\n\n this._layoutComponentRef?.destroy();\n this._viewRef.clear();\n this._layoutComponentRef = this._viewRef.createComponent(layoutComponent, { injector });\n\n this._currentLayout = this.settings.appearance;\n\n this._cdr.detectChanges();\n });\n }\n}\n","<ng-container #renderer></ng-container>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { AvatarModule } from '@fundamental-ngx/core/avatar';\nimport { ScrollbarModule } from '@fundamental-ngx/core/scrollbar';\nimport { SplitterModule } from '@fundamental-ngx/core/splitter';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { TitleModule } from '@fundamental-ngx/core/title';\nimport { PlatformFormGeneratorModule } from '@fundamental-ngx/platform/form';\nimport { TabsModule } from '@fundamental-ngx/core/tabs';\nimport { ClickedBehaviorModule, PipeModule } from '@fundamental-ngx/cdk/utils';\nimport { SkeletonModule } from '@fundamental-ngx/core/skeleton';\n\nimport { FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG } from './default-config';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsGeneratorComponent } from './settings-generator.component';\nimport { SettingsGeneratorSidebarLayoutComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component';\nimport { SettingsGeneratorContentComponent } from './settings-generator-content/settings-generator-content.component';\nimport { SettingsGeneratorSectionComponent } from './settings-generator-content/settings-generator-section/settings-generator-section.component';\nimport {\n ThemeSelectorListComponent,\n ThemeSelectorListIconComponent\n} from './controls/theme-selector-list/theme-selector-list.component';\nimport { SettingsGeneratorSidebarIconComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component';\nimport { SettingsGeneratorLayoutAccessorService } from './settings-generator-layout-accessor.service';\nimport { FDP_SETTINGS_GENERATOR_CONFIG } from './tokens';\n\n@NgModule({\n imports: [\n CommonModule,\n ListModule,\n IconModule,\n AvatarModule,\n SplitterModule,\n PortalModule,\n TitleModule,\n PlatformFormGeneratorModule,\n TabsModule,\n ClickedBehaviorModule.forRoot(),\n PipeModule,\n SkeletonModule,\n ButtonModule,\n ScrollbarModule\n ],\n declarations: [\n SettingsGeneratorComponent,\n SettingsGeneratorSidebarLayoutComponent,\n SettingsGeneratorContentComponent,\n SettingsGeneratorSectionComponent,\n ThemeSelectorListComponent,\n ThemeSelectorListIconComponent,\n SettingsGeneratorSidebarIconComponent\n ],\n exports: [\n SettingsGeneratorComponent,\n SettingsGeneratorSidebarLayoutComponent,\n SettingsGeneratorContentComponent,\n SettingsGeneratorSectionComponent,\n ThemeSelectorListIconComponent\n ],\n providers: [\n SettingsGeneratorLayoutAccessorService,\n {\n provide: FDP_SETTINGS_GENERATOR_CONFIG,\n useValue: FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG\n }\n ]\n})\nexport class SettingsGeneratorModule {\n /**\n * Allows configuring module on a global level with custom configuration.\n * @param config User's custom configuration.\n */\n static withConfig(config: Partial<SettingsConfig>): ModuleWithProviders<SettingsGeneratorModule> {\n return {\n ngModule: SettingsGeneratorModule,\n providers: [\n {\n provide: FDP_SETTINGS_GENERATOR_CONFIG,\n useValue: { ...FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG, ...config }\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i6.SettingsGeneratorSectionComponent","i7","takeUntil","i4.SettingsGeneratorContentComponent","i5.SettingsGeneratorSidebarIconComponent","i6"],"mappings":"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"}
|
|
@@ -226,7 +226,7 @@ class SmartFilterBarSettingsDialogComponent {
|
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
SmartFilterBarSettingsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SmartFilterBarSettingsDialogComponent, deps: [{ token: i1.DialogRef }, { token: FD_LANGUAGE }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
229
|
-
SmartFilterBarSettingsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SmartFilterBarSettingsDialogComponent, selector: "fdp-smart-filter-bar-settings-dialog", providers: [{ provide: RESETTABLE_TOKEN, useExisting: SmartFilterBarSettingsDialogComponent }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: "<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\n <fd-dialog-body>\n <fdp-table\n *ngIf=\"loaded; else loadingTpl\"\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 <fd-icon *ngIf=\"item.active\" glyph=\"accept\"></fd-icon>\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-dialog-footer-button>\n <fdp-button\n (click)=\"_confirm()\"\n buttonType=\"emphasized\"\n [label]=\"'platformSmartFilterBar.selectFiltersSubmitButtonLabel' | fdTranslate\"\n ></fdp-button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <fdp-button\n (click)=\"_cancel()\"\n buttonType=\"transparent\"\n [label]=\"'platformSmartFilterBar.selectFiltersCancelButton' | fdTranslate\"\n ></fdp-button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <div style=\"text-align: center; margin: 1rem\">\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i4.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i6.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i6.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i6.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i7.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i4$1.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i9.TableComponent, selector: "fdp-table", inputs: ["name", "id", "enableDragResize", "fixed", "freezeColumnsTo", "freezeEndColumnsTo", "pageScrolling", "pageSize", "pageScrollingThreshold", "bodyHeight", "emptyTableMessage", "noHorizontalBorders", "noVerticalBorders", "noBorders", "noBodyBorders", "noOuterBorders", "noBorderX", "noBorderY", "relationKey", "expandedStateKey", "hasChildrenKey", "rowNavigatable", "highlightNavigatedRow", "rowsActivable", "selectedKey", "selectableKey", "trackBy", "rowComparator", "rowsClass", "editableRowSkeleton", "expandOnInit", "rowHeight", "loadPagesBefore", "selectionMode", "enableTristateMode", "semanticHighlighting", "forceCheckedAllState", "loading"], outputs: ["presetChanged", "rowSelectionChange", "sortChange", "filterChange", "groupChange", "columnsChange", "pageChange", "columnFreeze", "rowToggleOpenState", "rowActivate", "rowNavigate", "emptyRowAdded", "save", "cancel", "tableScrolled", "tableRowsSet", "allRowsExpanded", "allRowsCollapsed"] }, { kind: "component", type: i9.TableColumnComponent, selector: "fdp-column", inputs: ["name", "key", "label", "align", "sortable", "filterable", "visible", "dataType", "groupable", "freezable", "endFreezable", "width", "noWrap", "applyText", "role"] }, { kind: "component", type: i9.TableToolbarComponent, selector: "fdp-table-toolbar", inputs: ["shouldOverflow", "title", "hideItemCount", "hideSearchInput", "showExpandCollapseButtons", "searchSuggestions", "editMode"] }, { kind: "component", type: i9.TableToolbarActionsComponent, selector: "fdp-table-toolbar-actions" }, { kind: "component", type: i9.ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "directive", type: i10.TableInitialStateDirective, selector: "[fdpTableInitialState], fdp-table", inputs: ["initialVisibleColumns", "initialSortBy", "initialFilterBy", "initialGroupBy", "initialPage", "state"] }, { kind: "directive", type: i10.FdpTableCell, selector: "fdp-table-cell" }, { kind: "directive", type: i10.FdpCellDef, selector: "[fdpCellDef]", inputs: ["fdpCellDefAs"] }, { kind: "component", type: i3$1.SelectComponent, selector: "fdp-select", inputs: ["selectState", "value", "inline"] }, { kind: "pipe", type: i12.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
229
|
+
SmartFilterBarSettingsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SmartFilterBarSettingsDialogComponent, selector: "fdp-smart-filter-bar-settings-dialog", providers: [{ provide: RESETTABLE_TOKEN, useExisting: SmartFilterBarSettingsDialogComponent }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: "<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\n <fd-dialog-body>\n <fdp-table\n *ngIf=\"loaded; else loadingTpl\"\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 <fd-icon *ngIf=\"item.active\" glyph=\"accept\"></fd-icon>\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-dialog-footer-button>\n <fdp-button\n (click)=\"_confirm()\"\n buttonType=\"emphasized\"\n [label]=\"'platformSmartFilterBar.selectFiltersSubmitButtonLabel' | fdTranslate\"\n ></fdp-button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <fdp-button\n (click)=\"_cancel()\"\n buttonType=\"transparent\"\n [label]=\"'platformSmartFilterBar.selectFiltersCancelButton' | fdTranslate\"\n ></fdp-button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <div style=\"text-align: center; margin: 1rem\">\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i4.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5$1.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i6.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i6.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i6.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i7.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i4$1.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i9.TableComponent, selector: "fdp-table", inputs: ["name", "id", "enableDragResize", "fixed", "freezeColumnsTo", "freezeEndColumnsTo", "pageScrolling", "pageSize", "pageScrollingThreshold", "bodyHeight", "emptyTableMessage", "noVisibleColumnsMessage", "noHorizontalBorders", "noVerticalBorders", "noBorders", "noBodyBorders", "noOuterBorders", "noBorderX", "noBorderY", "relationKey", "expandedStateKey", "hasChildrenKey", "rowNavigatable", "highlightNavigatedRow", "rowsActivable", "selectedKey", "selectableKey", "trackBy", "rowComparator", "rowsClass", "editableRowSkeleton", "expandOnInit", "rowHeight", "loadPagesBefore", "selectionMode", "enableTristateMode", "semanticHighlighting", "forceCheckedAllState", "loading"], outputs: ["presetChanged", "rowSelectionChange", "sortChange", "filterChange", "groupChange", "columnsChange", "pageChange", "columnFreeze", "rowToggleOpenState", "rowActivate", "rowNavigate", "emptyRowAdded", "save", "cancel", "tableScrolled", "tableRowsSet", "allRowsExpanded", "allRowsCollapsed"] }, { kind: "component", type: i9.TableColumnComponent, selector: "fdp-column", inputs: ["name", "key", "label", "align", "sortable", "filterable", "visible", "dataType", "groupable", "freezable", "endFreezable", "width", "noWrap", "applyText", "role"] }, { kind: "component", type: i9.TableToolbarComponent, selector: "fdp-table-toolbar", inputs: ["shouldOverflow", "title", "hideItemCount", "hideSearchInput", "showExpandCollapseButtons", "searchSuggestions", "editMode"] }, { kind: "component", type: i9.TableToolbarActionsComponent, selector: "fdp-table-toolbar-actions" }, { kind: "component", type: i9.ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "directive", type: i10.TableInitialStateDirective, selector: "[fdpTableInitialState], fdp-table", inputs: ["initialVisibleColumns", "initialSortBy", "initialFilterBy", "initialGroupBy", "initialPage", "state"] }, { kind: "directive", type: i10.FdpTableCell, selector: "fdp-table-cell" }, { kind: "directive", type: i10.FdpCellDef, selector: "[fdpCellDef]", inputs: ["fdpCellDefAs"] }, { kind: "component", type: i3$1.SelectComponent, selector: "fdp-select", inputs: ["selectState", "value", "inline"] }, { kind: "pipe", type: i12.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
230
230
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SmartFilterBarSettingsDialogComponent, decorators: [{
|
|
231
231
|
type: Component,
|
|
232
232
|
args: [{ selector: 'fdp-smart-filter-bar-settings-dialog', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: RESETTABLE_TOKEN, useExisting: SmartFilterBarSettingsDialogComponent }], template: "<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\n <fd-dialog-body>\n <fdp-table\n *ngIf=\"loaded; else loadingTpl\"\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 <fd-icon *ngIf=\"item.active\" glyph=\"accept\"></fd-icon>\n </fdp-table-cell>\n </fdp-column>\n </fdp-table>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-dialog-footer-button>\n <fdp-button\n (click)=\"_confirm()\"\n buttonType=\"emphasized\"\n [label]=\"'platformSmartFilterBar.selectFiltersSubmitButtonLabel' | fdTranslate\"\n ></fdp-button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <fdp-button\n (click)=\"_cancel()\"\n buttonType=\"transparent\"\n [label]=\"'platformSmartFilterBar.selectFiltersCancelButton' | fdTranslate\"\n ></fdp-button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <div style=\"text-align: center; margin: 1rem\">\n <fd-busy-indicator [loading]=\"true\"></fd-busy-indicator>\n </div>\n</ng-template>\n" }]
|
|
@@ -874,10 +874,10 @@ class SmartFilterBarConditionFieldComponent extends BaseSmartFilterBarConditionF
|
|
|
874
874
|
}
|
|
875
875
|
}
|
|
876
876
|
SmartFilterBarConditionFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SmartFilterBarConditionFieldComponent, deps: [{ token: i1.DialogService }, { token: SmartFilterBar }, { token: SmartFilterBarService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
877
|
-
SmartFilterBarConditionFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SmartFilterBarConditionFieldComponent, selector: "fdp-smart-filter-bar-condition-field", usesInheritance: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [addOnButtonClickFn]=\"openConditionsDialog\"\n [autofocus]=\"true\"\n [dataSource]=\"formItem.choices || []\"\n [formControlName]=\"name\"\n [name]=\"name\"\n [placeholder]=\"formItem.placeholder || formItem.message\"\n displayKey=\"displayValue\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i3$1.PlatformMultiInputComponent, selector: "fdp-multi-input", inputs: ["tokenHiddenId", "type", "autofocus", "selected", "selectionMode", "hasByLine", "disabled", "fillControlMode", "triggers", "closeOnOutsideClick", "addOnButtonClickFn", "displayFn"], outputs: ["selectionChange"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
877
|
+
SmartFilterBarConditionFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SmartFilterBarConditionFieldComponent, selector: "fdp-smart-filter-bar-condition-field", usesInheritance: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [addOnButtonClickFn]=\"openConditionsDialog\"\n [autofocus]=\"true\"\n [dataSource]=\"formItem.choices || []\"\n [formControlName]=\"name\"\n [name]=\"name\"\n [placeholder]=\"formItem.placeholder || formItem.message\"\n displayKey=\"displayValue\"\n [glyphAriaLabel]=\"'platformSmartFilterBar.manageFieldConditions' | fdTranslate\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i3$1.PlatformMultiInputComponent, selector: "fdp-multi-input", inputs: ["tokenHiddenId", "type", "autofocus", "glyphAriaLabel", "selected", "selectionMode", "hasByLine", "disabled", "fillControlMode", "triggers", "closeOnOutsideClick", "addOnButtonClickFn", "displayFn"], outputs: ["selectionChange"] }, { kind: "pipe", type: i12.FdTranslatePipe, name: "fdTranslate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
878
878
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SmartFilterBarConditionFieldComponent, decorators: [{
|
|
879
879
|
type: Component,
|
|
880
|
-
args: [{ selector: 'fdp-smart-filter-bar-condition-field', encapsulation: ViewEncapsulation.None, template: "<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [addOnButtonClickFn]=\"openConditionsDialog\"\n [autofocus]=\"true\"\n [dataSource]=\"formItem.choices || []\"\n [formControlName]=\"name\"\n [name]=\"name\"\n [placeholder]=\"formItem.placeholder || formItem.message\"\n displayKey=\"displayValue\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n" }]
|
|
880
|
+
args: [{ selector: 'fdp-smart-filter-bar-condition-field', encapsulation: ViewEncapsulation.None, template: "<ng-container [formGroup]=\"form\">\n <ng-container [formGroupName]=\"formGroupName\">\n <fdp-multi-input\n [id]=\"id\"\n [addOnButtonClickFn]=\"openConditionsDialog\"\n [autofocus]=\"true\"\n [dataSource]=\"formItem.choices || []\"\n [formControlName]=\"name\"\n [name]=\"name\"\n [placeholder]=\"formItem.placeholder || formItem.message\"\n displayKey=\"displayValue\"\n [glyphAriaLabel]=\"'platformSmartFilterBar.manageFieldConditions' | fdTranslate\"\n >\n </fdp-multi-input>\n </ng-container>\n</ng-container>\n" }]
|
|
881
881
|
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: SmartFilterBar }, { type: SmartFilterBarService }, { type: i0.Injector }]; } });
|
|
882
882
|
|
|
883
883
|
const defaultColumnsLayout = 'XL4-L3-M2-S1';
|
|
@@ -1335,7 +1335,7 @@ SmartFilterBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
1335
1335
|
provide: FDP_PRESET_MANAGED_COMPONENT,
|
|
1336
1336
|
useExisting: SmartFilterBarComponent
|
|
1337
1337
|
}
|
|
1338
|
-
], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <fd-toolbar [hasTitle]=\"true\" fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button
|
|
1338
|
+
], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <fd-toolbar [hasTitle]=\"true\" fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n filtersLabel\n ? filtersLabel + ' (' + _selectedFilters.length + ')'\n : ('platformSmartFilterBar.filtersButtonLabel'\n | fdTranslate : { filtersCount: _selectedFilters.length })\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.FormGeneratorComponent, selector: "fdp-form-generator", inputs: ["formName", "formItems", "mainTitle", "hideMainTItle", "hint", "columnLayout", "labelLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "unifiedLayout", "inlineColumnLayout", "noAdditionalContent"], outputs: ["formCreated", "formSubmitted", "formSubmittedStatus"] }, { kind: "component", type: i6$1.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i6$1.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i6$1.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i6$1.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: i3.ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "component", type: i8.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "pipe", type: i12.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1339
1339
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SmartFilterBarComponent, decorators: [{
|
|
1340
1340
|
type: Component,
|
|
1341
1341
|
args: [{ selector: 'fdp-smart-filter-bar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -1348,7 +1348,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
1348
1348
|
], host: {
|
|
1349
1349
|
class: 'fdp-smart-filter-bar',
|
|
1350
1350
|
'[class.fdp-smart-filter-bar--transparent]': 'transparent'
|
|
1351
|
-
}, template: "<div>\n <fd-toolbar [hasTitle]=\"true\" fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button
|
|
1351
|
+
}, template: "<div>\n <fd-toolbar [hasTitle]=\"true\" fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n filtersLabel\n ? filtersLabel + ' (' + _selectedFilters.length + ')'\n : ('platformSmartFilterBar.filtersButtonLabel'\n | fdTranslate : { filtersCount: _selectedFilters.length })\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"] }]
|
|
1352
1352
|
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }, { type: SmartFilterBarService }, { type: i3$1.FormGeneratorService }, { type: i0.Injector }, { type: i4$1.DestroyedService }]; }, propDecorators: { subject: [{
|
|
1353
1353
|
type: Input
|
|
1354
1354
|
}], showFiltersLabel: [{
|