import * as i0 from '@angular/core'; import { TemplateRef, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy } from '@angular/core'; import * as _fundamental_ngx_platform_dynamic_page from '@fundamental-ngx/platform/dynamic-page'; import { Nullable } from '@fundamental-ngx/cdk/utils'; import { DialogService, DialogRef } from '@fundamental-ngx/core/dialog'; import { DynamicPage } from '@fundamental-ngx/core/dynamic-page'; import { TriggerConfig, PopoverComponent } from '@fundamental-ngx/core/popover'; import { HeaderSizes } from '@fundamental-ngx/core/title'; import { SearchInput } from '@fundamental-ngx/platform/search-field'; import { BehaviorSubject } from 'rxjs'; import { FormGroup, ValidatorFn, FormBuilder } from '@angular/forms'; import { TableDataSource } from '@fundamental-ngx/platform/table'; /** * Directive used to change dirty label of Variant Management component. * * Usage: * * ``` * html * * I'm dirty * * ``` */ declare class VariantManagementDirtyLabelDirective { templateRef: TemplateRef; /** @hidden */ constructor(templateRef: TemplateRef); static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } type VariantAccess = 'private' | 'public'; /** Base Variant interface. */ interface Variant { /** Variant ID. */ id?: string; /** Variant name to be displayed in popover list. */ name: string; /** Variant's author name. */ createdBy: string; /** Whether variant is editable. */ readonly: boolean; /** Whether variant is marked as favourite. */ favourite: boolean; /** Whether to apply variant automatically. */ isDefault: boolean; /** Visibility of the variant. If public, available for everyone. */ access: VariantAccess; /** Variant data. Can contain any type of data. */ data: T; /** Whether to automatically apply changes in preset managed component. */ applyAutomatically?: boolean; } type NewVariant = Partial>; interface VariantManagement { activeVariantChangeSubject: BehaviorSubject; activeVariant: Variant; updateActivePreset(data: T, componentName: string | null): void; getActiveVariantData(): T; getOriginalActiveVariantData(): T; } declare class VariantItem implements Variant { /** Visibility of the variant. If public, available for everyone. */ access: VariantAccess; /** Whether to automatically apply changes in preset managed component. */ applyAutomatically?: boolean | undefined; /** Variant's author name. */ createdBy: string; /** Variant data. Can contain any type of data. */ data: T; /** Whether variant is marked as favourite. */ favourite: boolean; /** Variant ID. */ id: string; /** Whether to apply variant automatically. */ isDefault: boolean; /** Variant name to be displayed in popover list. */ name: string; /** Whether variant is editable. */ readonly: boolean; /** @hidden */ constructor(config: Partial); /** * Clones current variant and applies new config on top of it. * @param newVariantData New config. * @param refreshId Whether to assign new ID to the new variant. */ clone(newVariantData?: NewVariant, refreshId?: boolean): VariantItem; } declare class VariantManagementComponent implements VariantManagement { private readonly _dialogService; private readonly _cdr; /** Initial variants array. */ set variants(items: Variant[]); /** Header size. */ headerSize: HeaderSizes; /** Popover trigger events. */ popoverTriggers: (string | TriggerConfig)[]; /** User's name which will be applied to all new variants user creates. */ userName: string; /** Whether to display search field for variants list. */ displaySearch: boolean; /** Whether the variant management component is in readonly mode. */ readonly: boolean; /** Event emitted when variants data has been updated. */ variantsChange: EventEmitter[]>; /** Event emitted when new variant selected. */ activeVariantChange: EventEmitter>; /** * Custom dirty label directive. */ dirtyLabel: VariantManagementDirtyLabelDirective; /** @hidden */ _popover: PopoverComponent; /** @hidden */ protected readonly _initialClass = "fd-variant-management"; /** * Used internally for communicating with wrapper component. */ activeVariantChangeSubject: BehaviorSubject | null>; /** @hidden */ _variantChanged: boolean; /** Selected variant. */ activeVariant: VariantItem; /** @hidden */ _variants: VariantItem[]; /** @Hidden */ _filterPhrase: Nullable; /** @hidden */ get _dynamicPage(): DynamicPage | null; /** @hidden */ protected _dynamicPageCollapsed$: BehaviorSubject; /** @hidden */ protected _coreDynamicPage: DynamicPage | null; /** @hidden */ protected _platformDynamicPage: _fundamental_ngx_platform_dynamic_page.PlatformDynamicPage | null; /** @Hidden */ private _originalActiveVariant; /** @hidden */ constructor(_dialogService: DialogService, _cdr: ChangeDetectorRef); /** * Manually select variant. * @param variant Variant to select. */ selectVariant(variant: VariantItem): void; /** Returns original variant data. */ getOriginalActiveVariantData(): Variant['data']; /** Returns current active variant data with applied changes. */ getActiveVariantData(): Variant['data']; /** * Saves current variant with its configuration. */ saveCurrentVariant(): void; /** @hidden */ _openSaveDialog(): void; /** * Updates current active preset with new configuration. * @param preset Preset configuration. * @param componentName component to which this preset belongs to. */ updateActivePreset(preset: T, componentName: string): void; /** @hidden */ _openManageDialog(): void; /** @hidden */ _onSearchSubmit(search: SearchInput): void; /** @hidden */ _cancelSearch(): void; /** @Hidden */ _trackFn(index: number, item: VariantItem): string; /** @hidden */ private _transformVariants; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵcmp: i0.ɵɵComponentDeclaration, "fdp-variant-management", never, { "variants": { "alias": "variants"; "required": false; }; "headerSize": { "alias": "headerSize"; "required": false; }; "popoverTriggers": { "alias": "popoverTriggers"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "displaySearch": { "alias": "displaySearch"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "variantsChange": "variantsChange"; "activeVariantChange": "activeVariantChange"; }, ["dirtyLabel"], never, true, never>; static ngAcceptInputType_displaySearch: unknown; static ngAcceptInputType_readonly: unknown; } interface SaveDialogContext { currentVariantName: string; existingVariantNames: string[]; } declare class ManageVariantItemComponent { dialog: DialogRef; private readonly _formBuilder; /** @hidden */ private readonly _formContainer; /** @Hidden */ _form: FormGroup; /** @hidden */ _nameValidator: ValidatorFn[]; /** @hidden */ private readonly _dialogConfig; /** @hidden */ constructor(dialog: DialogRef, _formBuilder: FormBuilder); /** @Hidden */ _submitForm(): void; /** @hidden */ private _variantNameValidator; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * Wrapper component used to wrap components that implement `PresetManagedComponent`. * It automatically bounds existing presets from `Variant Management` component to `PresetManagedComponent`. * Wrapper component supports two ways of providing Variant Management component. * First one is to pass reference via Input property. * Second one is to put Variant Management component inside wrapper component so it would be accessible via @ContentChild. * Usage example: * * ```html * Usage outside wrapper component: * * * ... * ... * * * Usage inside wrapper component: * * * ... * ... * * ``` */ declare class VariantManagementWrapperComponent implements AfterViewInit, OnDestroy { /** Variant management component. */ variantManager: VariantManagement; /** @hidden */ private readonly _managedComponents; /** @hidden */ private set _projectedVariantManager(value); private get _projectedVariantManager(); /** @hidden */ private get _variantManagement(); /** @hidden */ private _variantManager; /** @hidden */ private _activeVariantSubscription; /** @hidden */ private _componentsPresetChangeSubscription; /** @hidden */ private _destroyRef; /** @hidden */ ngAfterViewInit(): void; /** @hidden */ ngOnDestroy(): void; /** * @hidden * Listens to the preset change in Variant Management component and applies new configuration across projected components. */ private _setPresets; /** * @hidden * Listens to preset configuration changes in projected components and sends updated config to Variant Management component. */ private _listenToPresetChanges; /** @hidden */ private _getComponentPreset; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class ManageVariantsDialogComponent { dialog: DialogRef; private readonly _cdr; /** @hidden */ _source: TableDataSource; /** * @hidden * Used to apply typings in template. */ _variantModel: VariantItem; /** @hidden */ private readonly _variants; /** @hidden */ private readonly _dataProvider; /** @hidden */ constructor(dialog: DialogRef, _cdr: ChangeDetectorRef); /** @Hidden */ _markAsFavourite(item: VariantItem): void; /** @hidden */ _removeVariant(item: VariantItem): void; /** * @hidden * Closes dialog with updated variants array. */ _saveVariants(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * @deprecated * Use direct imports of components and directives. */ declare class VariantManagementModule { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { ManageVariantItemComponent, ManageVariantsDialogComponent, VariantManagementComponent, VariantManagementDirtyLabelDirective, VariantManagementModule, VariantManagementWrapperComponent }; export type { NewVariant, Variant, VariantAccess };