import * as i0 from '@angular/core'; import { TemplateRef, ElementRef, OnDestroy, OnInit, DestroyRef, ChangeDetectorRef, Type, AfterViewInit, Injector, EventEmitter, Signal, ModuleWithProviders } from '@angular/core'; import { FdkAsyncProperty, Nullable, HasElementRef } from '@fundamental-ngx/cdk/utils'; import * as i1 from '@fundamental-ngx/platform/form'; import { BaseDynamicFormFieldItem, AnyDynamicFormFieldItem, DynamicFormItem, FormGeneratorComponent, FormGeneratorService, BaseDynamicFormGeneratorControl } from '@fundamental-ngx/platform/form'; import { ListAvatarConfig, ListIconConfig } from '@fundamental-ngx/platform/list'; import { Observable, BehaviorSubject, Subject } from 'rxjs'; import * as _fundamental_ngx_platform_settings_generator from '@fundamental-ngx/platform/settings-generator'; import { TabConfig, IconTabBarItem } from '@fundamental-ngx/platform/icon-tab-bar'; /** * Form generator control to render theme list. */ interface ThemeSelectorDynamicFormItem extends BaseDynamicFormFieldItem { type: 'theme-list'; } type SettingsGeneratorDynamicFormItem = DynamicFormItem, ThemeSelectorDynamicFormItem | TAdditionalControlTypes>; type SettingsModel = BaseSettingsModel> = SidebarSettingsModel | TAdditionalLayoutType; interface BaseSettingsModel { /** Appearance type. */ appearance: string; /** Settings items. */ items: SettingsItem[]; } interface SidebarSettingsModel extends BaseSettingsModel { appearance: 'sidebar'; /** * Sidebar width configuration. */ sidebarWidth: string | SidebarWidthConfiguration; /** * Sidebar title text. If not provided, defaults to translated 'Settings' label. */ sidebarTitle?: string; /** * Heading level for the sidebar title (1-6, corresponding to h1-h6). * Defaults to 5 (h5) if not provided. */ sidebarTitleHeadingLevel?: 1 | 2 | 3 | 4 | 5 | 6; } interface SettingsFormTab { /** Title of the tab. */ title: FdkAsyncProperty; /** @hidden */ template?: never; /** ID of the tab. Will be used as a key in resulting form object. */ id: string; /** Items array. */ items: SettingsGeneratorDynamicFormItem[]; } interface SettingsTemplateTab { /** Title of the tab. */ title: FdkAsyncProperty; /** @hidden */ items?: never; /** @hidden */ id?: never; /** Template Reference for tab content. */ template: TemplateRef; } interface BaseSettingsItem { /** Settings item title. */ title: FdkAsyncProperty; /** Settings item icon. */ thumbnail?: ThumbnailSettingsItem; /** Settings item description. */ description?: FdkAsyncProperty; /** Settings section title. */ sectionTitle?: FdkAsyncProperty; /** Whether to wrap the title text in the main section content. By default, the text will be truncated. */ wrapSectionTitle?: boolean; /** Heading level for the section title (1-6, corresponding to h1-h6). Defaults to 5 (h5) if not provided. */ sectionTitleHeadingLevel?: 1 | 2 | 3 | 4 | 5 | 6; } interface IconBaseSettingsItem { /** Settings item icon configuration. */ icon: Partial | string | Observable | string>; /** @hidden */ avatar?: never; } interface AvatarBaseSettingsItem { /** Settings item avatar configuration. */ avatar: Partial | string | Observable | string>; /** @hidden */ icon?: never; } type ThumbnailSettingsItem = AvatarBaseSettingsItem | IconBaseSettingsItem; type SettingsItem = FormSettingsItem | TemplateSettingsItem | GroupedFormSettingsItem | GroupedTemplateSettingsItem; interface FormSettingsItem extends BaseSettingsItem { /** Settings item form controls. */ items: SettingsGeneratorDynamicFormItem[]; /** @hidden */ template?: never; /** ID Of the section. Will be used as a key in resulting form object. */ id: string; } interface GroupedFormSettingsItem extends BaseSettingsItem { /** @hidden */ items?: never; /** @hidden */ template?: never; /** ID if the group. Will be used as a key in resulting form object. */ id: string; /** Groups array. */ groups: SettingsFormTab[]; } interface TemplateSettingsItem extends BaseSettingsItem { /** @hidden */ items?: never; /** @hidden */ id?: string; /** Template reference to be rendered as section content. */ template: TemplateRef; } interface GroupedTemplateSettingsItem extends BaseSettingsItem { /** @hidden */ id?: string; /** @hidden */ items?: never; /** @hidden */ template?: never; /** Groups array. */ groups: SettingsTemplateTab[]; } interface SidebarWidthConfiguration { /** Min width. */ minWidth?: string; /** Max width. */ maxWidth?: string; /** Width. */ width?: string; /** Whether to wrap the title text in the sidebar. By default, the text will truncate. */ wrapSidebarTitle?: boolean; /** Whether to wrap the description text in the sidebar. By default, the text will truncate. */ wrapSidebarDescription?: boolean; } interface BaseSettingsGeneratorConfig { defaultLayout?: TAdditionalLayouts; } interface SidebarSettingsGeneratorConfig extends BaseSettingsGeneratorConfig<'sidebar'> { /** * Sidebar configuration. */ sidebar: { /** * Maximum width in pixels of Settings Generator Component, when sidebar should be rendered as toggleable with absolute positioning. */ mobileBreakpoint: number; /** * Sidebar width configuration. */ width: string | SidebarWidthConfiguration; }; } type SettingsConfig = Record> = SidebarSettingsGeneratorConfig | (BaseSettingsGeneratorConfig & TAdditionalProperties); interface SettingsGenerator { elementRef: ElementRef; } type SettingsGeneratorReturnValue = Record; declare class SettingsGeneratorService implements OnDestroy { /** * Settings configuration subject. */ readonly settings: BehaviorSubject>; /** * Stream emitted when user clicked on message popover error entry. */ readonly onItemFocus: Subject<{ path: string; element: ElementRef; }>; /** * Stream emitted when mobile state has been changed. */ readonly mobileState$: BehaviorSubject; /** * @hidden * Form generators collected from all items and groups. */ private readonly _formGenerators; /** @hidden */ private readonly _messagePopover; /** @hidden */ private readonly _destroyRef; /** @hidden */ constructor(); /** @hidden */ _addFormGenerator(path: string[], formGenerator: FormGeneratorComponent): void; /** @hidden */ _removeFormGenerator(path: string[]): void; /** * Submits registered forms and emits result if submission status was successful (no errors). */ submit(): Observable; /** * Sets mobile state. * @param isMobile Whether mobile state should be applied. */ setMobileState(isMobile: boolean): void; /** @hidden */ ngOnDestroy(): void; /** * @hidden * Subscribes to click events from message popover and tries to open the section where invalid input is located. */ private _listenToMessagePopoverItemClick; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare abstract class BaseSettingsGeneratorLayout implements OnInit { /** * Subject to notify subscriptions to unsubscribe when component destroys. */ protected abstract _destroyRef: DestroyRef; /** * Method for focusing inner form control. * It is responsible for activating the section and placing focus on the element. * @param path path of the control joined by dot(.). Usually represents section ID and inner group ID. * @param element ElementRef of native element to focus. */ abstract focusElementByPath(path: string, element: ElementRef): void; /** * Settings schema. */ settings: Nullable; /** * Settings generator service. */ protected readonly _settingsGeneratorService: SettingsGeneratorService; /** * Change detector ref. */ protected readonly _cdr: ChangeDetectorRef; /** * Settings generator component ref. */ protected _settingsGenerator: _fundamental_ngx_platform_settings_generator.SettingsGenerator; /** @hidden */ ngOnInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } /** * Service, used as a registry of the available layouts for Settings Generator Component. */ declare class SettingsGeneratorLayoutAccessorService { /** @hidden */ private readonly _layouts; /** * Adds custom layout component to layouts registry for later usage with Settings Generator component. * @param layoutName Name of the Layout * @param layoutComponent Component type to be used for defined layout. */ addLayout(layoutName: string, layoutComponent: Type): void; /** * Gets Component type for defined layout. * @param layoutName */ getLayout(layoutName: string): Nullable>; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class SettingsGeneratorComponent implements SettingsGenerator, AfterViewInit, OnDestroy, HasElementRef { private readonly _fgService; private readonly _settingsLayoutService; private readonly _injector; private readonly _cdr; private readonly _destroyRef; private readonly _config; /** @hidden */ protected readonly _initialClass = "fdp-settings-generator"; /** @hidden */ private readonly _viewRef; /** * Settings Generator Element Ref. */ readonly elementRef: ElementRef; /** * Settings configuration. */ set settings(value: Nullable); get settings(): Nullable; /** * Container height. */ height: i0.InputSignal; /** * Container width. */ width: i0.InputSignal; /** @hidden */ private _settings; /** @hidden */ private readonly _settingsGeneratorService; /** @hidden */ private _currentLayout; /** @hidden */ private readonly _viewReady; /** @hidden */ private _viewReadySub; /** @hidden */ private _layoutComponentRef; /** @hidden */ constructor(_fgService: FormGeneratorService, _settingsLayoutService: SettingsGeneratorLayoutAccessorService, _injector: Injector, _cdr: ChangeDetectorRef, _destroyRef: DestroyRef, _config: SettingsConfig); /** @hidden */ ngAfterViewInit(): void; /** @hidden */ ngOnDestroy(): void; /** * Programmatically submit inner forms of the settings generator. * @returns Observable with settings value grouped by main sections and inner sections. */ submit(): Observable; /** @hidden */ private _setLayout; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class SettingsGeneratorSidebarLayoutComponent extends BaseSettingsGeneratorLayout implements OnInit, AfterViewInit { /** @hidden */ _isMobile: boolean; /** @hidden */ protected readonly _initialClass = "fdp-settings-generator__sidebar-layout"; /** @hidden */ private readonly _settingsGeneratorContent; /** @hidden */ private _listElement; /** @hidden */ searchTerm: string; /** * Selected settings section. */ _selectedIndex: number; /** @hidden */ _sidebarWidth: SidebarWidthConfiguration; /** @hidden */ protected readonly sidebarTitle: i0.Signal; /** @hidden */ protected readonly headingLevel: i0.Signal<4 | 1 | 2 | 3 | 5 | 6>; /** @hidden */ protected _destroyRef: DestroyRef; /** @hidden */ private readonly _config; /** @hidden */ private _sidebarVisible; /** @hidden */ private _initialSelectedItemSet; /** @hidden */ get _mobileSidebarVisible(): boolean; /** @hidden */ constructor(); /** @hidden */ ngOnInit(): void; /** @hidden */ focusElementByPath(path: string, element: ElementRef): void; /** @hidden */ ngAfterViewInit(): void; /** @hidden */ _displaySettingsSearchInput(): boolean; /** @hidden */ _setSelectedIndex(index: number): void; /** @Hidden */ _goBack(): void; /** @hidden */ private _getNormalizedSidebarWidth; /** @hidden */ private _isSidebarSettings; /** @hidden */ private _isFormGeneratorSection; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class SettingsGeneratorContentComponent { /** @hidden */ set settings(value: Nullable); get settings(): Nullable; /** Whether to render content component in mobile view. */ mobile: boolean; /** Event emits when user needs to be moved back to navigation screen. */ goBack: EventEmitter; /** @hidden */ protected readonly _initialClass = "fdp-settings-generator__content-section"; /** @hidden */ private readonly _tabPanels; /** Optional alternative text for the settings generator dialog back button. */ backButtonLabel: i0.InputSignal; /** @hidden */ _id: Nullable; /** @hidden */ _renderer$: Signal<"form" | "template">; /** @hidden */ _contentLayout$: Signal<"form" | "tabs">; /** @hidden */ _groups$: Signal<(SettingsTemplateTab | SettingsFormTab)[]>; /** @hidden */ _tabs$: Signal; /** @hidden */ _index: number; /** @hidden */ readonly _activeTab$: i0.WritableSignal; /** @hidden */ readonly _settings$: i0.WritableSignal>; /** @hidden */ private _settings; /** @hidden */ isTemplateLayout(settings: Nullable): settings is TemplateSettingsItem; /** @hidden */ isGroupedSettings(settings: any): settings is GroupedFormSettingsItem | GroupedTemplateSettingsItem; /** @hidden */ changeTab(item: IconTabBarItem): void; /** * Activates tab by group ID. * @param id ID of the group. */ setActiveTab(id: string): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } type SettingsSectionItemsModel = SettingsTemplateTab | SettingsFormTab | SettingsItem; declare class SettingsGeneratorSectionComponent { /** * Group name. Used to define full path of the inner form. */ groupName: Nullable; /** * Section items. * @param value {Nullable} Can be either a template Ref, or Form generator items. */ set items(value: Nullable); get items(): Nullable; /** @hidden */ _renderer: 'form' | 'template'; /** @hidden */ _templateRef: TemplateRef | null; /** @hidden */ _formItems: DynamicFormItem[]; /** @hidden */ private readonly _settingsGeneratorService; /** @hidden */ private _items; /** @hidden */ private set _formGeneratorCmp(value); /** @hidden */ _isTemplateLayout(settings: any): settings is TemplateSettingsItem; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class ThemeSelectorListComponent extends BaseDynamicFormGeneratorControl implements OnInit { /** @hidden */ currentTheme: string; /** @hidden */ private readonly _themingService; /** @hidden */ ngOnInit(): void; /** @hidden */ setTheme(value: string): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class ThemeSelectorListIconComponent { /** @hidden */ size: number; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class SettingsGeneratorSidebarIconComponent { /** Thumbnail configuration. */ set thumbnail(value: ThumbnailSettingsItem); get thumbnail(): ThumbnailSettingsItem; /** @hidden */ _avatarConfig: ListAvatarConfig | undefined; /** @hidden */ _iconConfig: ListIconConfig | undefined; /** @hidden */ private _thumbnail; /** @hidden */ private readonly _destroyRef; /** @hidden */ private readonly _cdr; /** @hidden */ private _transformAvatarConfig; /** @Hidden */ private _transformIconConfig; /** @hidden */ private _getConfigFromObservable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * @deprecated * Use direct imports of components and directives. */ declare class SettingsGeneratorModule { /** * Allows configuring module on a global level with custom configuration. * @param config User's custom configuration. */ static withConfig(config: Partial): ModuleWithProviders; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } declare const FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG: SidebarSettingsGeneratorConfig; export { BaseSettingsGeneratorLayout, FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG, SettingsGeneratorComponent, SettingsGeneratorContentComponent, SettingsGeneratorLayoutAccessorService, SettingsGeneratorModule, SettingsGeneratorSectionComponent, SettingsGeneratorService, SettingsGeneratorSidebarIconComponent, SettingsGeneratorSidebarLayoutComponent, ThemeSelectorListComponent, ThemeSelectorListIconComponent }; export type { AvatarBaseSettingsItem, BaseSettingsGeneratorConfig, BaseSettingsItem, BaseSettingsModel, FormSettingsItem, GroupedFormSettingsItem, GroupedTemplateSettingsItem, IconBaseSettingsItem, SettingsConfig, SettingsFormTab, SettingsGenerator, SettingsGeneratorDynamicFormItem, SettingsGeneratorReturnValue, SettingsItem, SettingsModel, SettingsSectionItemsModel, SettingsTemplateTab, SidebarSettingsGeneratorConfig, SidebarSettingsModel, SidebarWidthConfiguration, TemplateSettingsItem, ThemeSelectorDynamicFormItem, ThumbnailSettingsItem };