UNPKG

@deepkit/desktop-ui

Version:

Library for desktop UI widgets in Angular 10+

926 lines (907 loc) 146 kB
import * as _angular_core from '@angular/core'; import { ChangeDetectorRef, Type, OnDestroy, Injector, EventEmitter, ApplicationRef, Renderer2, RendererFactory2, TemplateRef, ViewContainerRef, EmbeddedViewRef, Signal, ElementRef, OnInit, OnChanges, WritableSignal, OutputEmitterRef, AfterViewInit, SimpleChanges, OutputRefSubscription, PendingTasks, PipeTransform, ComponentRef, ComponentFactoryResolver, QueryList } from '@angular/core'; import { FormGroup, NgControl, ControlValueAccessor } from '@angular/forms'; import { Subscription, Observable } from 'rxjs'; import { TemplatePortal } from '@angular/cdk/portal'; import { ConnectedPosition, Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay'; import * as i1 from '@angular/router'; import { Router, RouterLinkActive, RouterLink } from '@angular/router'; import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; import { Excluded, Type as Type$1 } from '@deepkit/type'; import { TypeAnnotation, ClassType } from '@deepkit/core'; import { Progress } from '@deepkit/rpc'; import { ProgressTracker } from '@deepkit/core-rxjs'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; declare class BrowserText { fontSize: number; fontFamily: string; protected canvas: HTMLCanvasElement; protected context: CanvasRenderingContext2D; constructor(fontSize?: number, fontFamily?: string); destroy(): void; getDimensions(text: string): { width: number; height: number; }; } declare class FormRowComponent { label: _angular_core.InputSignal<string>; description: _angular_core.InputSignal<string>; labelWidth: _angular_core.InputSignal<number | undefined>; left: _angular_core.InputSignalWithTransform<boolean, unknown>; ngControl?: NgControl; isString(v: any): v is string; static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormRowComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormRowComponent, "dui-form-row", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "left": { "alias": "left"; "required": false; "isSignal": true; }; }, {}, ["ngControl"], ["*"], true, never>; } declare class FormComponent { protected cd: ChangeDetectorRef; protected cdParent: ChangeDetectorRef; formGroup: _angular_core.InputSignal<FormGroup<any>>; disabled: _angular_core.InputSignal<boolean>; submit: _angular_core.InputSignal<(() => Promise<any> | any) | undefined>; success: _angular_core.OutputEmitterRef<void>; error: _angular_core.OutputEmitterRef<void>; errorText: _angular_core.WritableSignal<string>; submitting: _angular_core.WritableSignal<boolean>; constructor(cd: ChangeDetectorRef, cdParent: ChangeDetectorRef); onEnter(event: KeyboardEvent): void; get invalid(): boolean; submitForm(): Promise<void>; static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormComponent, [null, { skipSelf: true; }]>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormComponent, "dui-form", never, { "formGroup": { "alias": "formGroup"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "submit": { "alias": "submit"; "required": false; "isSignal": true; }; }, { "success": "success"; "error": "error"; }, never, ["*"], true, never>; } declare function ngValueAccessor<T>(clazz: Type<T>): { provide: _angular_core.InjectionToken<readonly ControlValueAccessor[]>; useExisting: Type<any>; multi: boolean; }; declare class ValueAccessorBase<T> implements ControlValueAccessor, OnDestroy { private _ngControl?; private _ngControlFetched; value: _angular_core.ModelSignal<T | undefined>; disabled: _angular_core.ModelSignal<boolean>; valid?: boolean; error?: boolean; protected formComponent?: FormComponent; protected _changedCallback: ((value: T | undefined) => void)[]; protected _touchedCallback: (() => void)[]; get isDisabled(): boolean; get isValid(): boolean; get isError(): boolean | null | undefined; required: _angular_core.InputSignal<boolean>; protected injector: Injector; get ngControl(): NgControl | undefined; setDisabledState(isDisabled: boolean): void; ngOnDestroy(): void; /** * This is called whenever value() needs to update. Either through Angular forms or through setValue(). * Do not call this method in UI code, use setValue() instead so that angular forms informed about the change. * * This is a good place to normalize values whenever they change. (like clamping a number to a range) */ writeValue(value?: T): void; /** * Set the value from UI code. */ setValue(value: T | undefined): void; /** * Call this method to signal Angular's form or other users that this widget has been touched. */ touch(): void; registerOnChange(fn: (value: T | undefined) => void): void; registerOnTouched(fn: () => void): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<ValueAccessorBase<any>, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ValueAccessorBase<any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "valid": { "alias": "valid"; "required": false; }; "error": { "alias": "error"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>; } /** * @reflection never */ type ElectronOrBrowserWindow = Window & { setVibrancy?: (vibrancy: string) => void; addListener?: (event: string, listener: (...args: any[]) => void) => void; removeListener?: (event: string, listener: (...args: any[]) => void) => void; }; declare class BrowserWindow { private window?; constructor(window?: ElectronOrBrowserWindow | undefined); isElectron(): boolean; getWindow(): ElectronOrBrowserWindow | undefined; setVibrancy(vibrancy: string): void; addListener(event: string, listener: (...args: any[]) => void): void; removeListener(event: string, listener: (...args: any[]) => void): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrowserWindow, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<BrowserWindow>; } declare class Electron { static getRemote(): any; static getIpc(): any; static isAvailable(): any; static getRemoteOrUndefined(): any; static getProcess(): any; static ɵfac: _angular_core.ɵɵFactoryDeclaration<Electron, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<Electron>; } declare class AsyncEventEmitter<T> extends EventEmitter<T> { emit(value?: T): void; subscribe(generatorOrNext?: any, error?: any, complete?: any): Subscription; } declare class ExecutionState { protected readonly cd: ChangeDetectorRef; protected readonly func: (...args: any[]) => Promise<any> | any; running: boolean; error: string; constructor(cd: ChangeDetectorRef, func: (...args: any[]) => Promise<any> | any); execute(...args: any[]): Promise<any>; } /** * Checks if `target` is children of `parent` or if `target` is `parent`. */ declare function isTargetChildOf(target: HTMLElement | EventTarget | null, parent: HTMLElement): boolean; declare function isMacOs(): boolean; declare function isWindows(): boolean; /** * Checks if `target` is children of `parent` or if `target` is `parent`. */ declare function findParentWithClass(start: HTMLElement, className: string): HTMLElement | undefined; declare function triggerResize(): void; type FocusWatcherUnsubscribe = () => void; /** * Observes focus changes on target elements and emits when focus is lost. * * This is used to track multi-element focus changes, such as when a user clicks from a dropdown toggle into the dropdown menu. */ declare function focusWatcher(target: Element, allowedFocuses: Element[] | undefined, onBlur: (event: FocusEvent) => void, customChecker?: (currentlyFocused: Element | null) => boolean): FocusWatcherUnsubscribe; declare function redirectScrollableParentsToWindowResize(node: Element, passive?: boolean): () => void; declare function getScrollableParents(node: Element): Element[]; declare function trackByIndex(index: number): number; declare type __ΩElectronOrBrowserWindow = any[]; declare type __ΩFocusWatcherUnsubscribe = any[]; declare class DuiDocument implements OnDestroy { document: Document | null; activeElement: _angular_core.WritableSignal<Element | undefined>; onFocus: () => void; constructor(); ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<DuiDocument, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<DuiDocument>; } declare class BaseComponent { disabled: _angular_core.InputSignal<boolean | undefined>; get isDisabled(): boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseComponent, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseComponent, never, never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class UiComponentComponent extends BaseComponent { name: _angular_core.InputSignal<string>; static ɵfac: _angular_core.ɵɵFactoryDeclaration<UiComponentComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<UiComponentComponent, "ui-component", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class OverlayStackItem { level: number; host: HTMLElement; component: any; close: () => void; protected stack: OverlayStackItem[]; release: () => void; constructor(level: number, host: HTMLElement, component: any, close: () => void, stack: OverlayStackItem[], release: () => void); getAllAfter(): OverlayStackItem[]; getPrevious(): OverlayStackItem | undefined; isLast(): boolean; getAllBefore(): OverlayStackItem[]; } declare class OverlayStack { stack: OverlayStackItem[]; register(host: HTMLElement, component: any, onClose: () => void): OverlayStackItem; forEach(callback: (item: OverlayStackItem) => void): void; getCurrentLevel(): number; getLevel(item: OverlayStackItem): number; getForComponent(component: any): OverlayStackItem | undefined; static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverlayStack, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<OverlayStack>; } declare class Storage { getItem(key: string): any; setItem(key: string, value: any): void; removeItem(key: string): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<Storage, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<Storage>; } declare class DuiApp { protected app: ApplicationRef; protected document: Document; protected storage: Storage; protected windowRegistry?: WindowRegistry | undefined; protected router?: Router | undefined; darkMode: _angular_core.WritableSignal<boolean | undefined>; platform: _angular_core.WritableSignal<"web" | "darwin" | "linux" | "win32">; themeDetection: boolean; protected render: Renderer2; constructor(app: ApplicationRef, document: Document, rendererFactory: RendererFactory2, storage: Storage, windowRegistry?: WindowRegistry | undefined, router?: Router | undefined); start(): void; setPlatform(platform: 'web' | 'darwin' | 'linux' | 'win32'): void; getPlatform(): string; isDarkMode(): boolean; setAutoDarkMode(): void; get theme(): 'auto' | 'light' | 'dark'; set theme(theme: 'auto' | 'light' | 'dark'); isDarkModeOverwritten(): boolean; setGlobalDarkMode(darkMode: boolean): void; getVibrancy(): 'ultra-dark' | 'light'; disableThemeDetection(): void; setDarkMode(darkMode?: boolean): void; protected isPreferDarkColorSchema(): boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration<DuiApp, [null, null, null, null, { optional: true; }, { optional: true; }]>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<DuiApp>; } type BuiltTemplateItem = { [name: string]: any; }; declare abstract class MenuBase implements ActiveComponent, OnDestroy { destroy: _angular_core.OutputEmitterRef<void>; label: _angular_core.InputSignal<string | undefined>; sublabel: _angular_core.InputSignal<string | undefined>; icon: _angular_core.InputSignal<string | undefined>; disabled: _angular_core.InputSignal<boolean>; accelerator: _angular_core.InputSignal<string | undefined>; role: _angular_core.InputSignal<string | undefined>; hotkey: _angular_core.InputSignal<string>; visible: _angular_core.InputSignal<boolean>; onlyMacOs: _angular_core.InputSignalWithTransform<boolean, unknown>; noMacOs: _angular_core.InputSignalWithTransform<boolean, unknown>; id: _angular_core.InputSignal<string | undefined>; before: _angular_core.InputSignal<string | undefined>; after: _angular_core.InputSignal<string | undefined>; beforeGroupContaining: _angular_core.InputSignal<string | undefined>; afterGroupContaining: _angular_core.InputSignal<string | undefined>; template: _angular_core.Signal<TemplateRef<any> | undefined>; registeredHotkey: _angular_core.WritableSignal<string>; click: _angular_core.OutputEmitterRef<void>; checkboxStyle: boolean; type: string; level: _angular_core.WritableSignal<number>; children: _angular_core.Signal<readonly MenuBase[]>; active: _angular_core.WritableSignal<boolean>; ngOnDestroy(): void; buildTemplate(item: BuiltTemplateItem): void; activate(): void; constructor(); validOs(): boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuBase, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuBase, never, never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "sublabel": { "alias": "sublabel"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "accelerator": { "alias": "accelerator"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "hotkey": { "alias": "hotkey"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "onlyMacOs": { "alias": "onlyMacOs"; "required": false; "isSignal": true; }; "noMacOs": { "alias": "noMacOs"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "before": { "alias": "before"; "required": false; "isSignal": true; }; "after": { "alias": "after"; "required": false; "isSignal": true; }; "beforeGroupContaining": { "alias": "beforeGroupContaining"; "required": false; "isSignal": true; }; "afterGroupContaining": { "alias": "afterGroupContaining"; "required": false; "isSignal": true; }; }, { "destroy": "destroy"; "click": "click"; }, ["children"], never, true, never>; } declare class MenuItemComponent extends MenuBase { type: string; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemComponent, "dui-menu-item", never, {}, {}, never, ["*"], true, never>; } declare class MenuDivComponent extends MenuBase { type: string; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuDivComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuDivComponent, "dui-menu-div", never, {}, {}, never, ["*"], true, never>; } declare class MenuCheckboxDirective extends MenuBase { checked: _angular_core.InputSignal<boolean>; type: string; buildTemplate(item: BuiltTemplateItem): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuCheckboxDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuCheckboxDirective, "dui-menu-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class MenuRadioComponent extends MenuBase { checked: _angular_core.InputSignal<boolean>; type: string; buildTemplate(item: BuiltTemplateItem): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuRadioComponent, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuRadioComponent, "dui-menu-radio", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class MenuSeparatorComponent extends MenuBase { type: string; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuSeparatorComponent, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuSeparatorComponent, "dui-menu-separator", never, {}, {}, never, never, true, never>; } declare class MenuRenderDirective implements OnDestroy { duiMenuRender: _angular_core.InputSignal<readonly MenuBase[]>; template: _angular_core.InputSignal<TemplateRef<{ $implicit: MenuBase; }>>; rootAsButton: _angular_core.InputSignalWithTransform<boolean, unknown>; protected elementRef: _angular_core.ElementRef<HTMLElement>; protected viewContainerRef: ViewContainerRef; protected createdViews: EmbeddedViewRef<any>[]; protected renderer: Renderer2; constructor(); ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuRenderDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuRenderDirective, "[duiMenuRender]", never, { "duiMenuRender": { "alias": "duiMenuRender"; "required": true; "isSignal": true; }; "template": { "alias": "template"; "required": true; "isSignal": true; }; "rootAsButton": { "alias": "rootAsButton"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } interface TemplateContext { $implicit: MenuBase; } declare class MenuItemTemplate { static ngTemplateContextGuard(directive: unknown, context: unknown): context is TemplateContext; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemTemplate, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuItemTemplate, "[menuItemTemplate]", never, {}, {}, never, never, true, never>; } declare class MenuComponent implements OnDestroy { /** * If true, this menu is used for the application menu bar (only works in Electron). */ forApp: _angular_core.InputSignalWithTransform<boolean, unknown>; moreLabel: _angular_core.InputSignal<string>; children: _angular_core.Signal<readonly MenuBase[]>; adaptiveContainer: _angular_core.Signal<AdaptiveContainerComponent>; dropdownPositionsRoot: ConnectedPosition[]; dropdownPositions: ConnectedPosition[]; protected overlayStack: OverlayStack; protected windowMenuState: WindowMenuState | null; protected dropdowns: Map<number, DropdownComponent>; protected hotkeyRegistry: HotkeyRegistry; protected active: _angular_core.WritableSignal<boolean>; protected dropdownItemsMap: WeakMap<Element, MenuBase>; registerDropdownItem(item: Element, menu: MenuBase): void; selected(item: MenuBase): boolean; constructor(); activate(item: MenuBase): void; close(): void; lostFocus(event: FocusEvent): void; protected hideSiblingsAndAbove(item: MenuBase): void; dropdownHidden(dropdown: DropdownComponent, level: number): void; dropdownShown(dropdown: DropdownComponent, level: number): void; ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "dui-menu", never, { "forApp": { "alias": "forApp"; "required": false; "isSignal": true; }; "moreLabel": { "alias": "moreLabel"; "required": false; "isSignal": true; }; }, {}, ["children"], never, true, never>; } declare type __ΩTemplateContext = any[]; declare class WindowMenuState { menus: MenuComponent[]; addMenu(menu: MenuComponent): void; removeMenu(menu: MenuComponent): void; build(): void; protected _build(): void; focus(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowMenuState, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<WindowMenuState>; } interface WinHeader { getBottomPosition(): number; } interface Win { id: number; browserWindow: BrowserWindow; getClosestNonDialogWindow(): Win | undefined; header: Signal<WinHeader | undefined>; viewContainerRef: ViewContainerRef; } declare class WindowRegistry { id: number; registry: Map<Win, { state: WindowState; menu: WindowMenuState; viewContainerRef: ViewContainerRef; }>; windowHistory: Win[]; activeWindow?: Win; getAllElectronWindows(): BrowserWindow[]; register(win: Win, state: WindowState, menu: WindowMenuState, viewContainerRef: ViewContainerRef): void; /** * Finds the activeWindow and returns its most outer parent. */ getOuterActiveWindow(): Win | undefined; getCurrentViewContainerRef(): ViewContainerRef; focus(win: Win): void; blur(win: Win): void; unregister(win: Win): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowRegistry, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<WindowRegistry>; } interface AlignedButtonGroup { activateOneTimeAnimation: () => void; } declare class WindowState { buttonGroupAlignedToSidebar: _angular_core.WritableSignal<AlignedButtonGroup | undefined>; focus: _angular_core.WritableSignal<boolean>; disableInputs: _angular_core.WritableSignal<boolean>; toolbars: _angular_core.WritableSignal<{ [name: string]: TemplateRef<any>[]; }>; addToolbarContainer(forName: string, template: TemplateRef<any>): void; removeToolbarContainer(forName: string, template: TemplateRef<any>): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowState, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<WindowState>; } declare type __ΩWinHeader = any[]; declare type __ΩWin = any[]; declare type __ΩAlignedButtonGroup = any[]; interface WinSidebar { template: TemplateRef<any>; } declare class WindowContentComponent { private windowState; transparent: _angular_core.InputSignalWithTransform<boolean, unknown>; sidebarVisible: _angular_core.InputSignal<boolean>; class: _angular_core.InputSignal<string>; sidebarWidth: _angular_core.ModelSignal<number>; sidebarMaxWidth: _angular_core.InputSignal<number>; sidebarMinWidth: _angular_core.InputSignal<number>; toolbar: _angular_core.WritableSignal<WinSidebar | undefined>; sidebar: _angular_core.Signal<ElementRef<any> | undefined>; sidebarContainer: _angular_core.Signal<ElementRef<any> | undefined>; content: _angular_core.Signal<ElementRef<any> | undefined>; withAnimation: _angular_core.WritableSignal<boolean>; constructor(windowState: WindowState); protected transitionEnded(): void; unregisterSidebar(sidebar: WinSidebar): void; registerSidebar(sidebar: WinSidebar): void; protected handleSidebarVisibility(withAnimation?: boolean): void; isSidebarVisible(): boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowContentComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<WindowContentComponent, "dui-window-content", never, { "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "sidebarVisible": { "alias": "sidebarVisible"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "sidebarWidth": { "alias": "sidebarWidth"; "required": false; "isSignal": true; }; "sidebarMaxWidth": { "alias": "sidebarMaxWidth"; "required": false; "isSignal": true; }; "sidebarMinWidth": { "alias": "sidebarMinWidth"; "required": false; "isSignal": true; }; }, { "sidebarWidth": "sidebarWidthChange"; }, never, ["*"], true, never>; } declare type __ΩWinSidebar = any[]; declare class WindowHeaderComponent implements WinHeader { windowState: WindowState; protected element: ElementRef; size: _angular_core.InputSignal<"small" | "default">; protected get withToolbar(): number; constructor(windowState: WindowState, element: ElementRef); getBottomPosition(): number; maximize(): void; minimize(): void; close(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowHeaderComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<WindowHeaderComponent, "dui-window-header", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>; } declare class WindowToolbarComponent implements OnDestroy, OnInit { protected windowState: WindowState; for: _angular_core.InputSignal<string>; template?: TemplateRef<any>; constructor(windowState: WindowState); ngOnInit(): void; ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowToolbarComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<WindowToolbarComponent, "dui-window-toolbar", never, { "for": { "alias": "for"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>; } declare class WindowToolbarContainerComponent { name: _angular_core.InputSignal<string>; windowState: WindowState; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowToolbarContainerComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<WindowToolbarContainerComponent, "dui-window-toolbar-container", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } /** * This is only for documentation purposes. */ declare class WindowFrameComponent { height: _angular_core.InputSignal<number>; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowFrameComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<WindowFrameComponent, "dui-window-frame", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>; } declare class WindowComponent implements OnInit, OnDestroy, Win { id: number; content: _angular_core.Signal<WindowContentComponent | undefined>; header: _angular_core.Signal<WindowHeaderComponent | undefined>; closable: _angular_core.InputSignal<boolean>; maximizable: _angular_core.InputSignal<boolean>; minimizable: _angular_core.InputSignal<boolean>; dialog: _angular_core.InputSignal<boolean>; normalizeStyle: _angular_core.InputSignalWithTransform<boolean, unknown>; protected onBlur: () => void; protected onFocus: () => void; protected registry: WindowRegistry; protected app: DuiApp; protected parentWindow: WindowComponent | null; protected windowMenuState: WindowMenuState; windowState: WindowState; viewContainerRef: ViewContainerRef; browserWindow: BrowserWindow; constructor(); ngOnInit(): void; ngOnDestroy(): void; getClosestNonDialogWindow(): WindowComponent | undefined; static ɵfac: _angular_core.ɵɵFactoryDeclaration<WindowComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<WindowComponent, "dui-window", never, { "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "maximizable": { "alias": "maximizable"; "required": false; "isSignal": true; }; "minimizable": { "alias": "minimizable"; "required": false; "isSignal": true; }; "dialog": { "alias": "dialog"; "required": false; "isSignal": true; }; "normalizeStyle": { "alias": "normalize-style"; "required": false; "isSignal": true; }; }, {}, ["content", "header"], ["*"], true, never>; } declare function injectDocument(): Document | undefined; declare function injectElementRef(): ElementRef<HTMLElement>; declare function clamp(value: number, min: number, max: number): number; declare class OpenExternalDirective implements OnChanges { private element; openExternal: _angular_core.InputSignal<string>; href: _angular_core.InputSignal<string>; constructor(element: ElementRef); ngOnChanges(): void; getLink(): string; onClick(event: Event): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<OpenExternalDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OpenExternalDirective, "[openExternal], a[href]", never, { "openExternal": { "alias": "openExternal"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare function scheduleWindowResizeEvent(): void; declare class TemplateContextTypeDirective<T> { protected templateType: T; static ngTemplateContextGuard<T>(dir: TemplateContextTypeDirective<T>, ctx: unknown): ctx is T; static ɵfac: _angular_core.ɵɵFactoryDeclaration<TemplateContextTypeDirective<any>, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TemplateContextTypeDirective<any>, "ng-template[templateType]", never, { "templateType": { "alias": "templateType"; "required": false; }; }, {}, never, never, true, never>; } declare class OnDomCreationDirective implements OnInit, OnDestroy { onDomCreation: _angular_core.OutputEmitterRef<Element>; onDomCreationDestroy: _angular_core.OutputEmitterRef<Element>; private element; ngOnInit(): void; ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnDomCreationDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OnDomCreationDirective, "[onDomCreation]", never, {}, { "onDomCreation": "onDomCreation"; "onDomCreationDestroy": "onDomCreationDestroy"; }, never, never, true, never>; } type RegisterEventListenerRemove = () => void; declare function registerEventListener<T extends Element | Document | Window, K extends keyof KeyMap, KeyMap extends GlobalEventHandlersEventMap = T extends Document ? DocumentEventMap : T extends Window ? WindowEventMap : HTMLElementEventMap>(element: T, type: K, listener: (ev: KeyMap[K]) => any, options?: AddEventListenerOptions): RegisterEventListenerRemove; declare type __ΩRegisterEventListenerRemove = any[]; declare abstract class ActiveComponent { abstract active: WritableSignal<boolean>; abstract registeredHotkey?: WritableSignal<string>; abstract showHotkey?: WritableSignal<boolean>; abstract destroy: OutputEmitterRef<void>; abstract activate(): void; } /** * hotkey has format of "ctrl+shift+alt+key", e.g "ctrl+s" or "shift+o" * and supports more than one, e.g. "ctrl+s,ctrl+o" */ type HotKey = string; declare function hotKeySize(hotkey: HotKey): number; declare class ButtonHotkeyComponent implements OnChanges, OnInit { hotkey: _angular_core.InputSignal<string>; protected isMac: boolean; protected metaKey: boolean; protected ctrlKey: boolean; protected shiftKey: boolean; protected altKey: boolean; protected key: string; ngOnInit(): void; ngOnChanges(): void; protected parse(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonHotkeyComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonHotkeyComponent, "dui-button-hotkey", never, { "hotkey": { "alias": "hotkey"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class ButtonComponent implements OnInit, ActiveComponent, OnDestroy { hotKeySize: typeof hotKeySize; destroy: OutputEmitterRef<void>; /** * The icon for this button. Either a icon name same as for dui-icon, or an image path. */ icon: _angular_core.InputSignal<string | undefined>; /** * Change in the icon size. Should not be necessary usually. */ iconSize: _angular_core.InputSignal<number | undefined>; iconRight: _angular_core.InputSignalWithTransform<boolean, unknown>; iconColor: _angular_core.InputSignal<string | undefined>; showHotkey: _angular_core.ModelSignal<boolean>; registeredHotkey: WritableSignal<string>; /** * Whether the button is active (pressed) */ active: _angular_core.ModelSignal<boolean>; /** * Whether the button has no padding and smaller font size */ small: _angular_core.InputSignalWithTransform<boolean, unknown>; /** * Whether the button has smaller padding. Better for button with icons. */ tight: _angular_core.InputSignalWithTransform<boolean, unknown>; /** * Whether the button is highlighted. */ highlighted: _angular_core.InputSignalWithTransform<boolean, unknown>; /** * Whether the button is primary. */ primary: _angular_core.InputSignalWithTransform<boolean, unknown>; /** * Whether the button is focused on initial loading. */ autoFocus: _angular_core.InputSignalWithTransform<boolean, unknown>; /** * The form to submit when this button is clicked. */ submitForm: _angular_core.InputSignal<FormComponent | undefined>; disabled: _angular_core.InputSignalWithTransform<boolean, unknown>; square: _angular_core.InputSignalWithTransform<boolean, unknown>; textured: _angular_core.InputSignalWithTransform<boolean, unknown>; iconOnly: _angular_core.Signal<boolean>; protected element: ElementRef<HTMLElement>; protected formComponent: FormComponent | null; protected routerLinkActive: RouterLinkActive; isDisabled: _angular_core.Signal<boolean>; constructor(); ngOnDestroy(): void; protected isActive(): boolean; activate(): void; ngOnInit(): void; protected onClick(): Promise<void>; static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "dui-button", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "iconRight": { "alias": "icon-right"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "showHotkey": { "alias": "showHotkey"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "small": { "alias": "small"; "required": false; "isSignal": true; }; "tight": { "alias": "tight"; "required": false; "isSignal": true; }; "highlighted": { "alias": "highlighted"; "required": false; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "autoFocus": { "alias": "auto-focus"; "required": false; "isSignal": true; }; "submitForm": { "alias": "submitForm"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "square": { "alias": "square"; "required": false; "isSignal": true; }; "textured": { "alias": "textured"; "required": false; "isSignal": true; }; }, { "destroy": "destroy"; "showHotkey": "showHotkeyChange"; "active": "activeChange"; }, never, ["*"], true, [{ directive: typeof i1.RouterLinkActive; inputs: { "routerLinkActiveOptions": "routerLinkActiveOptions"; }; outputs: {}; }]>; } declare class HotkeyRegistry implements OnDestroy { active: { key: HotKey; component: ActiveComponent; }[]; protected document: Document; protected removeKeyDown?: RegisterEventListenerRemove; protected removeKeyUp?: RegisterEventListenerRemove; protected knownComponents: Set<ActiveComponent>; showHotKeyOn: string; constructor(); activate(component: ActiveComponent): void; ngOnDestroy(): void; unregister(component: ActiveComponent): void; register(key: HotKey, component: ActiveComponent): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<HotkeyRegistry, never>; static ɵprov: _angular_core.ɵɵInjectableDeclaration<HotkeyRegistry>; } /** * Adds a hotkey to a button. * * ```html * <dui-button hotkey="escape">Cancel</dui-button> * <dui-button hotkey="cmd+s">Save</dui-button> * ``` */ declare class HotkeyDirective implements OnDestroy { hotkey: _angular_core.InputSignal<string>; protected oldButtonActive?: boolean; protected hotkeyRegistry: HotkeyRegistry; protected activeComponent: ActiveComponent | null; protected element: ElementRef<HTMLElement>; registeredHotkey: WritableSignal<string>; active: WritableSignal<boolean>; destroy: OutputEmitterRef<void>; ngOnDestroy(): void; constructor(); activate(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<HotkeyDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HotkeyDirective, "[hotkey]", never, { "hotkey": { "alias": "hotkey"; "required": true; "isSignal": true; }; }, { "destroy": "destroy"; }, never, never, true, never>; } /** * Used to group buttons together. */ declare class ButtonGroupComponent implements AfterViewInit, OnDestroy, AlignedButtonGroup { private element; protected cd: ChangeDetectorRef; private windowState?; private windowComponent?; /** * How the button should behave. * `sidebar` means it aligns with the sidebar. Is the sidebar open, this button-group has a left margin. * Is it closed, the margin is gone. */ float: _angular_core.InputSignal<"static" | "right" | "sidebar" | "float">; /** * If set to none, buttons inside this group will be tightly packed together without any padding. */ padding: _angular_core.InputSignal<"none" | "normal">; get isPaddingNone(): boolean; constructor(element: ElementRef<HTMLElement>, cd: ChangeDetectorRef, windowState?: WindowState | undefined, windowComponent?: WindowComponent | undefined); /** * @hidden */ activateOneTimeAnimation(): void; ngOnDestroy(): void; protected transitionEnded(): void; ngAfterViewInit(): void; protected updatePaddingLeft(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonGroupComponent, [null, { skipSelf: true; }, { optional: true; }, { optional: true; }]>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonGroupComponent, "dui-button-group", never, { "float": { "alias": "float"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>; } declare class ButtonGroupsComponent { align: _angular_core.InputSignal<"center" | "left" | "right">; static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonGroupsComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonGroupsComponent, "dui-button-groups", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>; } /** * Directive to open the native file chooser dialog. * Can be used wth FormsModule (ngModel). * * ```html * <dui-button duiFileChooser duiFileChooserChange="open($event)">Open File</dui-button> * ``` */ declare class FileChooserDirective extends ValueAccessorBase<File[]> implements OnDestroy, OnChanges { duiFileMultiple: _angular_core.InputSignalWithTransform<boolean, unknown>; duiFileDirectory: _angular_core.InputSignalWithTransform<boolean, unknown>; duiFileChooserChange: OutputEmitterRef<File[]>; protected input: HTMLInputElement; constructor(); ngOnDestroy(): void; ngOnChanges(): void; protected onClick(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileChooserDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FileChooserDirective, "[duiFileChooser]", never, { "duiFileMultiple": { "alias": "duiFileMultiple"; "required": false; "isSignal": true; }; "duiFileDirectory": { "alias": "duiFileDirectory"; "required": false; "isSignal": true; }; }, { "duiFileChooserChange": "duiFileChooserChange"; }, never, never, true, never>; } interface FilePickerItem { data: Uint8Array; name: string; mimeType: string; } /** * Directive to open the native file picker dialog and return the selected files as Uint8Array. * Can be used wth FormsModule (ngModel). * * ```html * <dui-button duiFilePicker duiFilePickerChange="open($event)">Open File</dui-button> * ``` */ declare class FilePickerDirective extends ValueAccessorBase<FilePickerItem[]> implements OnDestroy, AfterViewInit { duiFileMultiple: _angular_core.InputSignalWithTransform<boolean, unknown>; duiFileAutoOpen: _angular_core.InputSignal<boolean>; duiFilePickerChange: OutputEmitterRef<FilePickerItem[]>; protected input: HTMLInputElement; constructor(); ngOnDestroy(): void; ngAfterViewInit(): void; protected onClick(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilePickerDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FilePickerDirective, "[duiFilePicker]", never, { "duiFileMultiple": { "alias": "duiFileMultiple"; "required": false; "isSignal": true; }; "duiFileAutoOpen": { "alias": "duiFileAutoOpen"; "required": false; "isSignal": true; }; }, { "duiFilePickerChange": "duiFilePickerChange"; }, never, never, true, never>; } /** * Directive to allow dropping files into an area. * Can be used wth FormsModule (ngModel). * * ```html * <div duiFileDrop (duiFileDropChange)="onFilesDropped($event)"> * Drop files here * </div> * ``` */ declare class FileDropDirective extends ValueAccessorBase<FilePickerItem[]> implements OnDestroy { duiFileDropMultiple: _angular_core.InputSignalWithTransform<boolean, unknown>; duiFileDropChange: OutputEmitterRef<FilePickerItem[]>; i: WritableSignal<number>; protected onDragEnter(ev: any): void; protected onDragOver(ev: any): void; protected onDragLeave(ev: any): void; protected onDrop(ev: any): Promise<void>; ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileDropDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FileDropDirective, "[duiFileDrop]", never, { "duiFileDropMultiple": { "alias": "duiFileDropMultiple"; "required": false; "isSignal": true; }; }, { "duiFileDropChange": "duiFileDropChange"; }, never, never, true, never>; } declare type __ΩHotKey = any[]; declare type __ΩFilePickerItem = any[]; type PositionObserverDisconnect = () => void; declare function observePosition(element: Element, callback: (entry: DOMRectReadOnly) => void, debugPosition?: boolean): PositionObserverDisconnect; declare class PositionChangeDirective implements OnInit, OnDestroy { duiPositionChange: _angular_core.OutputEmitterRef<any>; elementRef: _angular_core.ElementRef<HTMLElement>; observer: PositionObserverDisconnect; ngOnInit(): void; ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<PositionChangeDirective, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PositionChangeDirective, "[duiPositionChange]", never, {}, { "duiPositionChange": "duiPositionChange"; }, never, never, true, never>; } declare type __ΩPositionObserverDisconnect = any[]; /** * A dropdown component that can be used to display a list of items or content in a popup. * * It can be opened and closed programmatically or via user interaction. * * By monitoring the focused elements, it is possible to add interactive elements inside the dropdown. */ declare class DropdownComponent implements OnChanges, OnDestroy, AfterViewInit { protected overlayService: Overlay; protected injector: Injector; protected overlayStack: OverlayStack; protected viewContainerRef: ViewContainerRef; isOpen: _angular_core.WritableSignal<boolean>; overlayRef?: OverlayRef; protected portalViewRef?: EmbeddedViewRef<any>; protected lastFocusWatcher?: ReturnType<typeof focusWatcher>; /** * If open() is called without a target, the host element is used as the target. * THe target elements is allowed to have focus without closing the dropdown. */ host: _angular_core.InputSignal<Element | ElementRef<any> | undefined>; /** * Additional elements that are allowed to have focus without closing the dropdown.cdk-global-overlay-wrapper */ allowedFocus: _angular_core.InputSignal<Element | ElementRef<any> | (Element | ElementRef<any>)[]>; normalizeStyle: _angular_core.InputSignalWithTransform<boolean, unknown>; /** * Keeps the dropdown open when it should be closed, ideal for debugging purposes. */ keepOpen: _angular_core.InputSignal<boolean | undefined>; height: _angular_core.InputSignal<string | number | undefined>; width: _angular_core.InputSignal<string | number | undefined>; minWidth: _angular_core.InputSignal<string | number | undefined>; minHeight: _angular_core.InputSignal<string | number | undefined>; maxWidth: _angular_core.InputSignal<string | number | undefined>; maxHeight: _angular_core.InputSignal<string | number | undefined>; /** * Whether the dropdown should allow scrollbars. */ scrollbars: _angular_core.InputSignal<boolean>; /** * Whether the dropdown aligns to the horizontal center. */ center: _angular_core.InputSignal<boolean>; dropdownClass: _angular_core.InputSignal<string>; /** * Whether is styled as overlay */ overlay: _angular_core.InputSignalWithTransform<boolean, unknown>; hasBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>; show: _angular_core.InputSignal<boolean | undefined>; /** * Additional positions to connect the dropdown to the target element. */ connectedPositions: _angular_core.InputSignal<ConnectedPosition[]>; /** * Triggered when the dropdown is opened or closed. */ showChange: _angular_core.OutputEmitterRef<boolean>; /** * Triggered when the dropdown is opened. */ shown: _angular_core.OutputEmitterRef<void>; /** * Triggered when the dropdown is closed. */ hidden: _angular_core.OutputEmitterRef<void>; /** * Triggered when the dropdown loses focus and is about to close. */ lostFocus: _angular_core.OutputEmitterRef<FocusEvent>; dropdownTemplate?: TemplateRef<any>; protected dropdown?: ElementRef<HTMLElement>; protected container: _angular_core.WritableSignal<TemplateRef<any> | undefined>; protected positionObserver?: PositionObserverDisconnect; protected relativeToInitiator?: HTMLElement; protected lastOverlayStackItem?: OverlayStackItem; protected positionStrategy?: PositionStrategy; protected templatePortal?: TemplatePortal; protected openForElement?: Element; protected windowComponent: WindowComponent | null; constructor(overlayService: Overlay, injector: Injector, overlayStack: OverlayStack, viewContainerRef: ViewContainerRef); ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; ngOnDestroy(): void; protected key(event: KeyboardEvent): void; /** * Toggles the dropdown open or closed. */ toggle(target?: Element | ElementRef | MouseEvent | EventTarget | 'center' | null): boolean; /** * Sets the container template for the dropdown. */ setContainer(container: TemplateRef<any> | undefined): void; /** * Opens the dropdown at the given target element or mouse position. */ open(target?: Element | ElementRef | MouseEvent | EventTarget | 'center' | null, initiator?: HTMLElement | ElementRef | { x: number; y: number; width: number; height: number; }): void; protected watchOpen(overlayRef: OverlayRef, target: Element | ElementRef | MouseEvent | EventTarget | 'center' | null): void; protected createPositionStrategy(target: Element | ElementRef | MouseEvent | EventTarget | 'center' | null): PositionStrategy; setInitiator(initiator?: HTMLElement | ElementRef | { x: number; y: number; width: number; height: number; }): void; protected getInitiatorRelativeRect(): { x: number; y: number; width: number; height: number; }; /** * Focuses the dropdown element. */ focus(): void; /** * Closes the dropdown if it is open. */ close(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "dui-dropdown", never, { "host": { "alias": "host"; "required": false; "isSignal": true; }; "allowedFocus": { "alias": "allowedFocus"; "required": false; "isSignal": true; }; "normalizeStyle": { "alias": "normalize-style"; "required": false; "isSignal": true; }; "keepOpen": { "alias": "keepOpen"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "scrollbars": { "alias": "scrollbars"; "required": false; "isSignal": true; }; "center": { "alias": "center"; "required": false; "isSignal": true; }; "dropdownClass": { "alias": "dropdownClass"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "show": { "alias": "show"; "required": false; "isSignal": true; }; "connectedPositions": { "alias": "connectedPositions"; "r