import * as _angular_core from '@angular/core'; import { EventEmitter, TemplateRef, InjectionToken, OnDestroy, OnInit, ElementRef, Signal, ViewContainerRef, Injector, Binding, Type, ComponentRef, AfterViewInit, EnvironmentProviders, OnChanges, SimpleChanges, NgZone, QueryList, TrackByFunction, KeyValueChangeRecord, OutputEmitterRef, WritableSignal, AfterContentInit, PipeTransform } from '@angular/core'; import * as rxjs from 'rxjs'; import { Observable, Subject } from 'rxjs'; import { DialogPosition, MatDialogRef, MatDialogState } from '@angular/material/dialog'; import { ScrollStrategy } from '@angular/cdk/overlay'; import * as _acontplus_ng_components from '@acontplus/ng-components'; import { FormControl, ControlValueAccessor, FormGroup } from '@angular/forms'; import { SelectOption, IconDefinition, ButtonVariant, ButtonType, MaterialButtonStyle, REPORT_FORMAT } from '@acontplus/ui-kit'; import { SafeHtml } from '@angular/platform-browser'; import { MatChipInputEvent, MatChipEditedEvent } from '@angular/material/chips'; import { LiveAnnouncer, FocusOrigin } from '@angular/cdk/a11y'; import { Tabulator } from 'tabulator-tables'; import { MatTable, MatRowDef, MatHeaderRowDef, MatFooterRowDef, MatTableDataSource } from '@angular/material/table'; import { MatPaginator, PageEvent } from '@angular/material/paginator'; import { SortDirection, MatSort, Sort } from '@angular/material/sort'; import { SelectionModel } from '@angular/cdk/collections'; import { MatBadgePosition, MatBadgeSize } from '@angular/material/badge'; import { MatButtonAppearance } from '@angular/material/button'; import { ThemePalette } from '@angular/material/core'; import { TooltipPosition, TooltipTouchGestures } from '@angular/material/tooltip'; import { CdkDragDrop } from '@angular/cdk/drag-drop'; import { MatMenu, MatMenuTrigger } from '@angular/material/menu'; import { NgxDatexLocale, NgxDatexTheme, NgxDatexValue } from 'ngx-datex'; export { MATERIAL_LIGHT_THEME, NgxDatex, NgxDatexConfig, NgxDatexLocale, NgxDatexRange, NgxDatexTheme, NgxDatexValue, SPANISH_LOCALE } from 'ngx-datex'; import { ComponentType } from '@angular/cdk/portal'; import { Direction } from '@angular/cdk/bidi'; import { DialogRole, CdkDialogContainer, DialogRef } from '@angular/cdk/dialog'; import { DateRange, MatCalendar } from '@angular/material/datepicker'; import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox'; import { MatSidenav, MatSidenavContent } from '@angular/material/sidenav'; import { RouterLinkActive } from '@angular/router'; type AcpAlertType = 'default' | 'info' | 'success' | 'warning' | 'danger'; declare class AcpAlert { private _changeDetectorRef; get hostClassList(): string; /** The alert's type. Can be `default`, `info`, `success`, `warning` or `danger`. */ type: AcpAlertType; /** Whether to display an inline close button. */ dismissible: boolean; /** The alert's elevation (0~24). */ elevation: number; /** Event emitted when the alert closed. */ closed: EventEmitter; _onClosed(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; static ngAcceptInputType_dismissible: unknown; } type AcpBadgeColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral' | 'custom'; type AcpBadgeVariant = 'filled' | 'outlined' | 'soft' | 'tonal' | 'text'; type AcpBadgeSize = 'xs' | 'sm' | 'md' | 'lg'; type AcpBadgeShape = 'rounded' | 'pill' | 'square'; type AcpBadgeTrend = 'up' | 'down' | 'neutral' | 'none'; interface AcpBadgeTrendConfig { value: string; icon: string; color: AcpBadgeColor; } declare class AcpBadge { label: _angular_core.InputSignal; value: _angular_core.InputSignal; variant: _angular_core.InputSignal; color: _angular_core.InputSignal; size: _angular_core.InputSignal; shape: _angular_core.InputSignal; icon: _angular_core.InputSignal; trailingIcon: _angular_core.InputSignal; svgIcon: _angular_core.InputSignal; trailingSvgIcon: _angular_core.InputSignal; trend: _angular_core.InputSignal; clickable: _angular_core.InputSignalWithTransform; disabled: _angular_core.InputSignalWithTransform; loading: _angular_core.InputSignalWithTransform; selected: _angular_core.InputSignalWithTransform; highlighted: _angular_core.InputSignalWithTransform; removable: _angular_core.InputSignalWithTransform; routerLink: _angular_core.InputSignal; href: _angular_core.InputSignal; ariaLabelOverride: _angular_core.InputSignal; clicked: _angular_core.OutputEmitterRef; removed: _angular_core.OutputEmitterRef; iconTemplate: _angular_core.Signal | undefined>; trailingIconTemplate: _angular_core.Signal | undefined>; private isTrending; private trendConfig; effectiveColor: _angular_core.Signal; effectiveIcon: _angular_core.Signal; effectiveSvgIcon: _angular_core.Signal; effectiveTrailingIcon: _angular_core.Signal; effectiveTrailingSvgIcon: _angular_core.Signal; effectiveValue: _angular_core.Signal; isLink: _angular_core.Signal; isInteractive: _angular_core.Signal; isDisabled: _angular_core.Signal; isHighlighted: _angular_core.Signal; chipClasses: _angular_core.Signal; hostClasses: _angular_core.Signal; ariaLabel: _angular_core.Signal; onChipClick(event: MouseEvent): void; onRemove(_event: any): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare const ACP_BADGE_COLORS: AcpBadgeColor[]; declare const ACP_BADGE_VARIANTS: AcpBadgeVariant[]; declare const ACP_BADGE_SIZES: AcpBadgeSize[]; declare const ACP_BADGE_SHAPES: AcpBadgeShape[]; declare const TREND_CONFIGS: Record; /** * A versatile card component that wraps Angular Material's mat-card with additional functionality * and customization options. This component provides a consistent card layout with configurable * header, content, and action areas. */ declare class DynamicCard { /** * The title text to display in the card header. * @default null */ cardTitle: _angular_core.InputSignal; /** * The subtitle text to display in the card header. * @default null */ cardSubtitle: _angular_core.InputSignal; /** * URL for the avatar image to display in the card header. * @default null */ avatarImageUrl: _angular_core.InputSignal; /** * Whether to show the card header section. * @default false */ isHeaderVisible: _angular_core.InputSignalWithTransform; /** * CSS padding value for the card content area. * @default '1rem' */ contentPadding: _angular_core.InputSignal; /** * Whether to show a divider between the header and content sections. * @default false */ hasDivider: _angular_core.InputSignalWithTransform; /** * Whether to show the action buttons section. * @default false */ areActionsVisible: _angular_core.InputSignalWithTransform; /** * Text for the primary action button. * @default 'Confirm' */ primaryButtonText: _angular_core.InputSignal; /** * Text for the secondary action button. * @default 'Cancel' */ secondaryButtonText: _angular_core.InputSignal; /** * Material icon name for the primary button. * @default null */ primaryButtonIcon: _angular_core.InputSignal; /** * Material icon name for the secondary button. * @default null */ secondaryButtonIcon: _angular_core.InputSignal; /** * Alignment of the action buttons. * @default 'end' */ buttonsPosition: _angular_core.InputSignal<"start" | "end">; /** * Event emitted when the primary button is clicked. */ primaryButtonClicked: _angular_core.OutputEmitterRef; /** * Event emitted when the secondary button is clicked. */ secondaryButtonClicked: _angular_core.OutputEmitterRef; /** * Event emitted when the card is clicked. */ cardClicked: _angular_core.OutputEmitterRef; /** * Event emitted when a key is pressed down on the card. */ keyDown: _angular_core.OutputEmitterRef; /** * Event emitted when a key is released on the card. */ keyUp: _angular_core.OutputEmitterRef; /** * Event emitted when a key is pressed on the card. */ keyPress: _angular_core.OutputEmitterRef; /** * Handles the primary button click event. * Stops event propagation and emits the primaryButtonClicked event. * @param event The click event */ handlePrimaryButtonClick(event: Event): void; /** * Handles the secondary button click event. * Stops event propagation and emits the secondaryButtonClicked event. * @param event The click event */ handleSecondaryButtonClick(event: Event): void; /** * Handles the card click event. * Emits the cardClicked event with the original event. * @param event The click event */ handleCardClick(event: Event): void; /** * Handles the key down event on the card. * Emits the keyDown event with the original keyboard event. * @param event The keyboard event */ handleKeyDown(event: KeyboardEvent): void; /** * Handles the key up event on the card. * Emits the keyUp event with the original keyboard event. * @param event The keyboard event */ handleKeyUp(event: KeyboardEvent): void; /** * Handles the key press event on the card. * Emits the keyPress event with the original keyboard event. * @param event The keyboard event */ handleKeyPress(event: KeyboardEvent): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Context Menu Types and Interfaces * Defines the API contract for the ContextMenu component */ /** * Represents a single item in the context menu */ interface AcpContextMenuItem { /** Unique identifier for the menu item */ id?: string; /** Display label for the menu item (not required for separators) */ label?: string; /** Material Icon name or SVG icon identifier */ icon?: string; /** Badge text or number to display */ badge?: string | number; /** Keyboard shortcut text to display (e.g., 'Ctrl+S') */ shortcut?: string; /** Whether the menu item is disabled */ disabled?: boolean; /** Whether the menu item is visible */ visible?: boolean; /** Whether this is a separator line (ignores other properties) */ separator?: boolean; /** Nested menu items for submenu support */ children?: AcpContextMenuItem[]; /** Callback function when item is clicked */ command?: (context: AcpContextMenuItemContext) => void; /** Router link for navigation */ routerLink?: any; /** External URL to navigate to */ url?: string; /** Target for URL navigation (_blank, _self, etc) */ target?: string; /** Whether this is a dangerous action (e.g., delete) */ danger?: boolean; /** Whether the item is in loading state */ loading?: boolean; /** Tooltip text for the menu item */ tooltip?: string; /** Custom data associated with the menu item */ data?: unknown; /** CSS class to apply to the menu item */ class?: string; /** Whether to close menu after executing command */ closeOnClick?: boolean; } /** * Context passed to the command callback */ interface AcpContextMenuItemContext { /** The menu item that was clicked */ item: AcpContextMenuItem; /** The event that triggered the action */ event: MouseEvent | KeyboardEvent; /** The element that triggered the context menu */ element?: HTMLElement; /** Custom data passed to the context menu */ data?: unknown; /** Row data (for DataGrid integration) */ row?: unknown; /** Column data (for DataGrid integration) */ column?: unknown; /** Row index (for DataGrid integration) */ index?: number; } /** * Configuration for opening a context menu */ interface AcpContextMenuOpenConfig { /** X coordinate for menu position */ x: number; /** Y coordinate for menu position */ y: number; /** Element to position relative to (if not using x/y) */ element?: HTMLElement; /** Custom data to pass to menu items */ data?: unknown; /** Close menu when clicking outside */ closeOnOutsideClick?: boolean; /** Close menu when pressing Escape */ closeOnEscape?: boolean; /** Custom CSS classes for the menu panel */ panelClass?: string | string[]; /** Z-index for the menu overlay */ zIndex?: number; } /** * Configuration for the context menu trigger */ interface AcpContextMenuTriggerConfig { /** Trigger on right-click (contextmenu event) */ rightClick?: boolean; /** Trigger on left-click */ leftClick?: boolean; /** Trigger on hover */ hover?: boolean; /** Delay before opening on hover (ms) */ hoverDelay?: number; /** Delay before closing on hover leave (ms) */ hoverLeaveDelay?: number; /** Custom data to pass to menu items */ data?: unknown; /** Close menu when clicking outside */ closeOnOutsideClick?: boolean; /** Close menu when pressing Escape */ closeOnEscape?: boolean; } /** * Position strategy for the context menu */ type AcpContextMenuPosition = 'auto' | 'above' | 'below' | 'left' | 'right'; /** * Reference to an open context menu */ interface AcpContextMenuRef { /** Close the context menu */ close(): void; /** Update menu items */ updateItems(items: AcpContextMenuItem[]): void; /** Get current menu items */ getItems(): AcpContextMenuItem[]; /** Update context data */ updateData(data: unknown): void; /** Get current context data */ getData(): unknown; /** Check if menu is open */ isOpen(): boolean; } declare const CONTEXT_MENU_ITEMS: InjectionToken; declare const CONTEXT_MENU_DATA: InjectionToken; /** * Service to manage context menu instances * Handles overlay creation, positioning, and lifecycle management */ declare class AcpContextMenuService { private readonly overlay; private readonly ngZone; private readonly document; private readonly injector; private readonly openMenuRef; private readonly menuItems; private readonly contextData; private readonly itemSelected$; constructor(); /** * Open a context menu at the specified position */ open(items: AcpContextMenuItem[], config: AcpContextMenuOpenConfig): Promise; /** * Close all open context menus */ closeAll(): void; /** * Check if any menu is open */ isOpen(): boolean; /** * Get the item selection subject */ getItemSelected$(): rxjs.Observable; /** * Emit item selection */ selectItem(context: AcpContextMenuItemContext): void; /** * Create overlay reference with position strategy */ private createOverlay; /** * Create position strategy for the overlay */ private createPositionStrategy; /** * Create injector for the menu component */ private createInjector; /** * Create menu reference object */ private createMenuRef; /** * Setup handler for closing menu on outside click */ private setupOutsideClickHandler; /** * Check if click is inside the menu */ private isClickInsideMenu; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Directive to attach a context menu to any element * * @example * ```html *
* Right-click me *
* ``` * * @example * ```html *
* Left-click me *
* ``` */ declare class AcpContextMenuDirective implements OnDestroy { private readonly elementRef; private readonly contextMenuService; private destroy$; private menuRef; private hoverTimeout; /** Menu items to display */ acpContextMenu: AcpContextMenuItem[]; /** Custom data to pass to menu items */ contextMenuData?: unknown; /** Trigger configuration */ contextMenuTrigger: AcpContextMenuTriggerConfig; /** Emitted when a menu item is selected */ contextMenuItemSelected: EventEmitter; /** Emitted when menu is opened */ contextMenuOpened: EventEmitter; /** Emitted when menu is closed */ contextMenuClosed: EventEmitter; constructor(); ngOnDestroy(): void; /** * Handle right-click */ onContextMenu(event: MouseEvent): void; /** * Handle left-click */ onClick(event: MouseEvent): void; /** * Handle mouse enter for hover trigger */ onMouseEnter(): void; /** * Handle mouse leave for hover trigger */ onMouseLeave(): void; /** * Open the context menu */ openMenu(x: number, y: number, _event: MouseEvent | KeyboardEvent, rowData?: unknown): void; /** * Close the context menu */ closeMenu(): void; /** * Update menu items */ updateItems(items: AcpContextMenuItem[]): void; /** * Update context data */ updateData(data: unknown): void; /** * Check if menu is open */ isOpen(): boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * Internal component that renders the context menu panel * Not meant to be used directly - use ContextMenuService or ngContextMenu directive */ declare class AcpContextMenuPanel implements OnInit, OnDestroy { private readonly contextMenuService; private readonly ngZone; private readonly elementRef; menuContainer?: ElementRef; items: _angular_core.WritableSignal; contextData: _angular_core.WritableSignal; selectedIndex: _angular_core.WritableSignal; expandedIndex: _angular_core.WritableSignal; private destroy$; visibleItems: _angular_core.Signal; ngOnInit(): void; ngOnDestroy(): void; /** * Handle keyboard navigation */ onKeyDown(event: KeyboardEvent): void; /** * Handle item click */ onItemClick(item: AcpContextMenuItem, event: MouseEvent): void; /** * Handle item hover */ onItemHover(index: number): void; /** * Check if item has children */ hasChildren(item: AcpContextMenuItem): boolean; /** * Get item classes */ getItemClasses(item: AcpContextMenuItem, index: number): Record; /** * Select next item */ private selectNext; /** * Select previous item */ private selectPrevious; /** * Select first item */ private selectFirst; /** * Select last item */ private selectLast; /** * Expand selected item */ private expandSelected; /** * Collapse selected item */ private collapseSelected; /** * Activate selected item */ private activateSelected; /** * Track by function for items */ trackByIndex(index: number): number; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Declarative context menu component * * @example * ```html *
Right-click here
* * * * ``` * * @example * ```html * * * * ``` */ declare class AcpContextMenu implements OnDestroy { private readonly contextMenuService; private destroy$; private menuRef; /** Menu items to display */ readonly model: _angular_core.InputSignal; /** Target element to attach the context menu to */ readonly target: _angular_core.InputSignal; /** Emitted when menu is hidden/closed */ readonly hide: _angular_core.OutputEmitterRef; /** Emitted when a menu item is selected */ readonly itemSelected: _angular_core.OutputEmitterRef; constructor(); ngOnDestroy(): void; /** * Show the context menu at the specified position * * @param event - Mouse event or custom event with clientX/clientY * @param data - Optional data to pass to menu items (e.g., row data) */ show(event: MouseEvent | { clientX: number; clientY: number; }, data?: unknown): void; /** * Show the context menu positioned relative to an element * * @param element - Element to position the menu relative to * @param data - Optional data to pass to menu items */ showForElement(element: HTMLElement, data?: unknown): void; /** * Close the context menu */ close(): void; /** * Check if the menu is currently open */ isOpen(): boolean; /** * Update the menu items */ updateItems(items: AcpContextMenuItem[]): void; /** * Update the context data */ updateData(data: unknown): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Declarative dialog structure wrapper. Use it inside a dialog content template * to group the titlebar, body and actions sections. * * @example * ```html * * * *

Dialog body

*
* * * * *
* ``` */ declare class AcpDialog { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Declarative dialog content body. Use it inside `` or any dialog * content template to mark the scrollable body section. * * @example * ```html * *

Dialog body

*
* ``` */ declare class AcpDialogContent { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** Layout direction for a dialog's content. Mirrors `Direction` from `@angular/cdk/bidi`. */ type AcpDialogDirection = 'ltr' | 'rtl'; /** * Focus restoration behavior. Mirrors `RestoreFocusValue` from `@angular/cdk/dialog`. * - `boolean`: restore focus to the previously-focused element. * - `string`: restore focus to the first element matching the CSS selector. * - `HTMLElement`: restore focus to the specific element. */ type AcpDialogRestoreFocus = boolean | string | HTMLElement; /** * Named width presets for dialogs opened through {@link AcpDialogService}. * `full` forces a full-screen dialog regardless of the viewport. */ type AcpDialogSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'full'; /** * Header configuration. When `header` is present in {@link AcpDialogConfig}, * the content is rendered inside the branded shell: a draggable * title bar with an optional icon and a close button. * * As a shortcut, {@link AcpDialogConfig.title} can be used instead of * `header.title`. */ interface AcpDialogHeaderConfig { /** Title text shown in the header. */ title: string; /** Optional subtitle shown below the title. */ subtitle?: string; /** Optional Material icon name displayed before the title. */ icon?: string; /** Whether the header shows a close button. @default true */ closable?: boolean; /** Accessible label for the close button. @default 'Close dialog' */ closeLabel?: string; /** Whether the dialog can be dragged by its header. @default true */ draggable?: boolean; /** Predefined color theme for the header. */ color?: AcpButtonColor$1; /** Additional CSS class names to apply to the header for custom styling. */ colorClass?: string; /** Color of the close icon. Defaults to a contrasting value based on `color`. */ closeColor?: 'dark' | 'light'; } /** * Outlet used by the declarative `` component to register * its content with `AcpDialogContainer`. The container then renders that * content inside `` instead of the configured `actions` list. */ interface AcpDialogActionsOutlet { /** Registers the declarative action template and its desired alignment. */ register(template: TemplateRef, align?: 'start' | 'center' | 'end'): void; /** Whether a declarative actions template has been registered. */ readonly hasActions: Signal; } /** * Outlet used by the declarative `` component to register * its template with `AcpDialogContainer`. The container renders it in the * header area, outside the scrollable content. */ interface AcpDialogTitlebarOutlet { /** Registers the declarative titlebar template and its title. */ register(template: TemplateRef, title?: string): void; /** Whether a declarative titlebar template has been registered. */ readonly hasTitlebar: Signal; } /** * Which gestures are allowed to close the dialog. Both default to `true`. */ interface AcpDialogCloseConfig { /** Whether clicking the backdrop closes the dialog. @default true */ backdropClick?: boolean; /** Whether pressing Escape closes the dialog. @default true */ escapeKey?: boolean; } /** Reactive state that can be bound to an action button. */ type AcpDialogActionState = boolean | Signal | Observable; /** Payload emitted when a configured footer action is clicked. */ interface AcpDialogActionClick { /** The action that was clicked. */ action: AcpDialogAction; /** The original click event. Callers may call `event.preventDefault()` to stop the default close. */ event: MouseEvent; } /** Color variants supported by `acp-button`. */ type AcpButtonColor$1 = 'primary' | 'secondary' | 'accent' | 'error' | 'danger' | 'success' | 'warning' | 'info' | 'dark'; /** Button variants supported by `acp-button`. */ type AcpButtonVariant$1 = 'basic' | 'icon' | 'fab' | 'mini-fab'; /** Button appearances supported by `acp-button`. */ type AcpButtonAppearance$1 = 'text' | 'filled' | 'elevated' | 'outlined' | 'tonal'; /** Button types supported by `acp-button`. */ type AcpButtonType$1 = 'button' | 'submit' | 'reset'; /** Button sizes supported by `acp-button`. */ type AcpButtonSize = 'small' | 'medium' | 'large'; /** * Action button rendered in the dialog footer. * Uses the same property names as `acp-button`. */ interface AcpDialogAction { /** Label shown in the button. */ text: string; /** Unique key to identify this action in `actionClicked` or `afterClosed`. */ key?: string; /** Color variant. */ color?: AcpButtonColor$1; /** Button variant. @default 'basic' */ variant?: AcpButtonVariant$1; /** Button appearance. @default 'filled' */ appearance?: AcpButtonAppearance$1; /** Optional Material icon name. */ icon?: string; /** Optional Material icon name displayed after the text. */ suffixIcon?: string; /** Whether the action is disabled. Accepts a boolean, a signal or an observable. @default false */ disabled?: AcpDialogActionState; /** Whether the action shows a loading state. Accepts a boolean, a signal or an observable. @default false */ loading?: AcpDialogActionState; /** Accessible label for the button. */ ariaLabel?: string; /** Button size. @default 'large' */ size?: AcpButtonSize; /** Whether the button spans the full width. @default false */ block?: boolean; /** Whether the FAB button is extended. @default false */ extended?: boolean; /** HTML button type. @default 'button' */ type?: AcpButtonType$1; /** ID of the form the button is associated with. */ form?: string; /** Value returned when the dialog closes after clicking this action. */ result?: R; } /** * Lazy loader for a dialog content component. Lets callers split the component * into its own bundle and only load it when the dialog is actually opened. * * Usage: * ```ts * this.dialogs.open({ loadComponent: () => import('./edit-form').then(m => m.EditForm) }, { * title: 'Edit', * data: { id: 5 }, * }); * ``` * @template C Type of the content component class. */ interface AcpDialogComponentLoader { loadComponent: () => Promise>; } /** * Factory that returns dialog content (a component class, a `TemplateRef`, * a string, another factory, or a lazy loader). */ type AcpDialogContentFunction = (data?: unknown) => AcpDialogContentInput | Promise>; /** * Accepted `content` values for {@link AcpDialogService.open}. * * - `Type`: a component class to render inside the dialog. * - `AcpDialogComponentLoader`: a lazy loader that resolves to a component. * - `TemplateRef`: an inline template rendered with dialog context. * - `string`: a plain text/HTML message rendered in the content area. * - `AcpDialogContentFunction`: a function returning any of the above. */ type AcpDialogContentInput = Type | AcpDialogComponentLoader | TemplateRef | string | AcpDialogContentFunction; /** * Content after {@link AcpDialogService} has resolved lazy loaders and factories. * @internal */ type AcpDialogResolvedContent = Type | TemplateRef | string; /** * Main configuration object for {@link AcpDialogService.open}. * * `content` can also be supplied here when calling `open()` with a single * config object. * * @template D Type of the data delivered to the content component. */ interface AcpDialogConfig { /** ID for the dialog. If omitted, a unique one will be generated. */ id?: string; /** * Data delivered to the content component. The component always reads it by * injecting `ACP_DIALOG_DATA`, whether it renders bare or inside the shell. */ data?: D; /** Optional header. When present, the content renders inside the shell. */ header?: AcpDialogHeaderConfig; /** Shortcut for `header.title`. Ignored when `header` is provided. */ title?: string; /** Whether to show the branded header/titlebar. Set to `false` to hide it. @default true */ showHeader?: boolean; /** Optional footer actions rendered as `acp-button` instances. */ actions?: AcpDialogAction[]; /** Whether to show the configured footer actions. Set to `false` to hide them. @default true */ showActions?: boolean; /** Alignment of the footer actions. @default 'end' */ actionsAlign?: 'start' | 'center' | 'end'; /** Named size preset. Ignored when `width` is set. @default 'md' */ size?: AcpDialogSize; /** Explicit width, takes precedence over `size`. Numbers are treated as pixels. */ width?: string | number; /** Dialog height. Numbers are treated as pixels. */ height?: string | number; /** Minimum width. Numbers are treated as pixels. */ minWidth?: string | number; /** Minimum height. Numbers are treated as pixels. */ minHeight?: string | number; /** @default '95vw' */ maxWidth?: string | number; /** Maximum height. Numbers are treated as pixels. */ maxHeight?: string | number; /** Whether the dialog goes full-screen on handset viewports. @default false */ fullScreenOnMobile?: boolean; position?: DialogPosition; /** Extra panel classes. `acp-dialog` and `acp-dialog-{size}` are always added. */ panelClass?: string | string[]; backdropClass?: string | string[]; /** @default true */ hasBackdrop?: boolean; /** * Whether the user can use Escape or backdrop click to close the dialog. * When set, it overrides `closeOn` for both gestures. */ disableClose?: boolean; /** Independent close gestures. @default { backdropClick: true, escapeKey: true } */ closeOn?: AcpDialogCloseConfig; /** Whether the dialog closes on browser back/forward navigation. @default true */ closeOnNavigation?: boolean; /** Layout direction for the dialog's content. @default 'ltr' */ direction?: AcpDialogDirection; /** * Function used to determine whether the dialog is allowed to close. * Receives the attempted result, the config and the component instance. */ closePredicate?: (result: Result | undefined, config: Config, componentInstance: Component | null) => boolean; /** * Where the dialog component should live in Angular's logical component tree. * Forwarded to `MatDialogConfig.viewContainerRef`; use this when the dialog * needs access to providers scoped to a lazy-loaded feature or route. */ viewContainerRef?: ViewContainerRef; /** Injector used to instantiate the content component. Takes precedence over `viewContainerRef`. */ injector?: Injector; /** Bindings to apply to a component rendered inside the dialog. Does nothing for template-based content. */ bindings?: Binding[]; /** @default 'first-tabbable' */ autoFocus?: boolean | 'first-tabbable' | 'dialog' | 'first-heading'; /** Whether to wait for the opening animation before trapping focus. @default false */ delayFocusTrap?: boolean; /** @default true */ restoreFocus?: AcpDialogRestoreFocus; ariaLabel?: string; ariaLabelledBy?: string; ariaDescribedBy?: string; /** Whether to set `aria-modal` on the dialog element. @default false */ ariaModal?: boolean; role?: 'dialog' | 'alertdialog'; /** Scroll behavior: a CDK ScrollStrategy or a shortcut name ('block', 'close', 'noop'). */ scrollStrategy?: ScrollStrategy | 'block' | 'close' | 'noop'; /** @default '300ms' */ enterAnimationDuration?: number | string; /** @default '200ms' */ exitAnimationDuration?: number | string; } /** * Payload delivered through `MAT_DIALOG_DATA` to {@link AcpDialogContainer}. * @internal Not part of the public API contract. */ interface AcpDialogContainerData { /** The resolved content rendered inside the shell. */ content: AcpDialogResolvedContent; /** The public configuration provided by the caller. */ config: AcpDialogConfig; /** Shared action-click stream so the caller and content observe the same events. */ actionClicks?: Subject; } /** * Reference to a dialog opened via `AcpDialogService`. Mirrors the public surface * of `MatDialogRef` so consumers can subscribe to `afterClosed()`, close manually, * inspect the component instance, etc. * * It is both the value returned by `AcpDialogService.open()` and an injectable * token: content components can `inject(AcpDialogRef)` to close themselves. */ declare class AcpDialogRef { private readonly matDialogRef; /** Emits every time a configured dialog action is clicked, before it closes. */ clickedResult: Subject>; /** Observable mirror of {@link clickedResult}. */ get actionClicked$(): Observable>; constructor(matDialogRef: MatDialogRef | Promise>, clickedResult?: Subject>); /** The instance of the component opened into the dialog. */ get componentInstance(): unknown; /** `ComponentRef` of the component opened into the dialog. */ get componentRef(): ComponentRef | null; /** Whether the user is allowed to close the dialog. */ get disableClose(): boolean | undefined; /** Unique ID for the dialog. */ get id(): string; /** Gets an observable that is notified when the dialog is finished closing. */ afterClosed(): Observable; /** Gets an observable that is notified when the dialog is finished opening. */ afterOpened(): Observable; /** Gets an observable that is notified when the dialog has started closing. */ beforeClosed(): Observable; /** Gets an observable that emits when the overlay's backdrop has been clicked. */ backdropClick(): Observable; /** Gets an observable that emits when keydown events are targeted on the overlay. */ keydownEvents(): Observable; /** Gets the current lifecycle state of the dialog. */ getState(): MatDialogState | undefined; /** Resolves with the result once the dialog finishes closing. */ get closed(): Promise; /** Observable that emits the result once the dialog finishes closing. */ get closed$(): Observable; /** Closes the dialog, optionally returning a result. */ close(result?: R): void; /** Updates the dialog's position. */ updatePosition(position?: { left?: string; top?: string; right?: string; bottom?: string; }): this; /** Updates the dialog's width and height. */ updateSize(width?: string, height?: string): this; /** Add a CSS class or an array of classes to the overlay pane. */ addPanelClass(classes: string | string[]): this; /** Remove a CSS class or an array of classes from the overlay pane. */ removePanelClass(classes: string | string[]): this; private fromRef; private readRef; private withRef; } /** * Reusable dialog service — a branded alternative to `MatDialog`. Every dialog * renders inside `AcpDialogContainer`, so content always works the same way: * * - read data with `inject(ACP_DIALOG_DATA)`, * - close the dialog with `inject(AcpDialogRef).close(result)`. * * Usage: * ```ts * private dialogs = inject(AcpDialogService); * * this.dialogs.open(UserForm, { * title: 'Edit user', * actions: [ * { text: 'Cancel' }, * { text: 'Save', color: 'success', result: user }, * ], * size: 'lg', * data: { userId: 5 }, * }).afterClosed().subscribe(saved => { * // handle result * }); * * // or with a single config object: * this.dialogs.open({ * content: UserForm, * title: 'Edit user', * actions: [{ text: 'Save', color: 'success' }], * data: { userId: 5 }, * }).afterClosed().subscribe(saved => { * // handle result * }); * ``` */ declare class AcpDialogService { private readonly dialog; private readonly overlay; private readonly breakpointObserver; private readonly defaults; /** Stream that emits when all open dialogs have finished closing. */ get afterAllClosed(): Observable; /** Stream that emits when a dialog has been opened. */ get afterOpened(): Observable>; /** Keeps track of the currently-open dialogs. */ get openDialogs(): MatDialogRef[]; /** * Opens a dialog with a component class. * @param component The content component to render. * @param config Dialog configuration (merged over `provideAcpDialogDefaults`). * @returns An {@link AcpDialogRef}; subscribe to `ref.afterClosed()` for the result. */ open(component: Type, config?: AcpDialogConfig): AcpDialogRef; /** * Opens a dialog with a `TemplateRef`. * @param template The inline template to render. * @param config Dialog configuration (merged over `provideAcpDialogDefaults`). * @returns An {@link AcpDialogRef}; subscribe to `ref.afterClosed()` for the result. */ open(template: TemplateRef, config?: AcpDialogConfig): AcpDialogRef; /** * Opens a dialog from a single config object. * @param config Dialog configuration that includes the `content` to render. * @returns An {@link AcpDialogRef}; subscribe to `ref.afterClosed()` for the result. */ open(config: AcpDialogConfig & { content: AcpDialogContentInput; }): AcpDialogRef; /** Closes all currently open dialogs. */ closeAll(): void; /** Finds an open dialog by its id. */ getDialogById(id: string): AcpDialogRef | undefined; private openWithContent; private createMatRef; private resolveContent; private mergeDefaults; private buildMatConfig; private normalizeCloseOn; private toMatSize; private resolveScrollStrategy; private wireCloseGestures; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Shell that hosts any content inside an `AcpDialog`. Renders the optional * branded header (draggable title bar with icon, title and close button) and * optional footer actions. * * Content can be a component class, a `TemplateRef`, or a plain string. It is * created with a child `Injector` that provides `ACP_DIALOG_DATA` (the caller's * `config.data`) and `AcpDialogRef` (a typed handle to close the dialog). * * Opened exclusively through `AcpDialogService`; not meant to be used in templates. */ declare class AcpDialogContainer implements AfterViewInit { private readonly parentInjector; private readonly containerData; private readonly actionClicks; private readonly dialogRef; /** Outlet where the configured content is rendered. */ private readonly contentHost; /** Outlet where declarative `acp-dialog-actions` content is rendered. */ private readonly actionOutlet; /** Outlet where declarative `acp-dialog-titlebar` content is rendered. */ private readonly titlebarOutletRef; /** Template used to render a plain string content. */ private readonly stringTemplate; /** Whether the content has registered a declarative `acp-dialog-actions` template. */ protected readonly hasDeclarativeActions: _angular_core.WritableSignal; /** Whether the content has registered a declarative `acp-dialog-titlebar` template. */ protected readonly hasDeclarativeTitlebar: _angular_core.WritableSignal; /** Pending declarative actions template, captured before the outlet is ready. */ private readonly pendingActionTemplate; /** Pending declarative titlebar template, captured before the outlet is ready. */ private readonly pendingTitlebarTemplate; /** Alignment requested by a declarative actions template. */ protected readonly declarativeActionsAlign: _angular_core.WritableSignal<"start" | "end" | "center" | undefined>; /** Title requested by a declarative titlebar template. */ protected readonly declarativeTitle: _angular_core.WritableSignal; /** Outlet object provided to content so `acp-dialog-actions` can register itself. */ private readonly actionsOutlet; /** Outlet object provided to content so `acp-dialog-titlebar` can register itself. */ private readonly titlebarOutlet; /** Exposed header configuration, including the `title` shortcut. */ protected readonly headerConfig: Signal; /** Title used for the actions footer label. */ protected readonly resolvedDialogTitle: Signal; /** Alignment used for the actions footer. */ protected readonly resolvedActionsAlign: Signal<"start" | "end" | "center">; /** Whether the current content is a plain string. */ protected readonly isStringContent: _angular_core.WritableSignal; get config(): _acontplus_ng_components.AcpDialogConfig; get content(): _acontplus_ng_components.AcpDialogResolvedContent; constructor(); ngAfterViewInit(): void; private createContentInjector; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Dialog title bar. Use it inside a dialog content template for a declarative * header, or let `AcpDialogContainer` instantiate it from `config.header`. * * @example * ```html * * * * * * * ``` */ declare class AcpDialogTitlebar implements AfterViewInit { private readonly elementRef; private readonly matDialogRef; private readonly outlet; private readonly titlebarTemplateRef; protected readonly renderInline: _angular_core.WritableSignal; protected readonly hostDisplay: _angular_core.WritableSignal; /** CSS classes applied to the header element. */ protected readonly headerClasses: Signal; /** Close-button color resolved from `closeColor` or the header background. */ protected readonly resolvedCloseColor: Signal<"dark" | "light">; /** Title text shown in the header. */ title: _angular_core.InputSignal; /** Optional subtitle shown below the title. */ subtitle: _angular_core.InputSignal; /** Optional Material icon name displayed before the title. */ icon: _angular_core.InputSignal; /** Whether the close button is shown. @default true */ closable: _angular_core.InputSignal; /** Accessible label for the close button. @default 'Close dialog' */ closeLabel: _angular_core.InputSignal; /** Whether the dialog can be dragged by its header. @default true */ draggable: _angular_core.InputSignal; /** Predefined header color theme. */ color: _angular_core.InputSignal; /** Additional CSS class names to apply to the header. */ colorClass: _angular_core.InputSignal; /** Explicit close icon color. If omitted, it is chosen from the header `color`. */ closeColor: _angular_core.InputSignal<"dark" | "light" | undefined>; /** Emitted when the close button is clicked and no `MatDialogRef` is available. */ closed: _angular_core.OutputEmitterRef; close(): void; bringToFront(): void; ngAfterViewInit(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Dialog actions container. Use it declaratively inside a dialog content * template, or let `AcpDialogContainer` instantiate it from `config.actions`. * * @example * ```html * * * * * ``` */ declare class AcpDialogActions implements AfterViewInit { private readonly outlet; private readonly matDialogRef; private readonly containerData; private readonly injector; private readonly actionsTemplateRef; private readonly actionStateSignals; protected readonly renderInline: _angular_core.WritableSignal; protected readonly hostDisplay: _angular_core.WritableSignal; /** Alignment of the action buttons. @default 'end' */ align: _angular_core.InputSignal<"start" | "end" | "center">; /** Configured footer actions. When omitted, the component works as a declarative slot. */ actions: _angular_core.InputSignal[] | undefined>; /** Optional title used to label the actions footer. */ dialogTitle: _angular_core.InputSignal; /** Accessible label for the actions footer. Falls back to a generated one. */ ariaLabel: Signal; ngAfterViewInit(): void; /** Resolves an action's boolean state (boolean, signal or observable). */ protected resolveActionState(state: AcpDialogActionState | undefined): boolean; /** Broadcasts the click and closes the dialog unless the event is prevented. */ protected handleActionClick(event: MouseEvent, action: AcpDialogAction): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Token used to deliver `AcpDialogConfig.data` to the content component. * Content components read it with `inject(ACP_DIALOG_DATA)` (typed as `D`). * This is the single data channel, used identically for bare and shell dialogs. */ declare const ACP_DIALOG_DATA: InjectionToken; /** * Application-wide defaults for every dialog opened through `AcpDialogService`. * Mirrors `MAT_DIALOG_DEFAULT_OPTIONS` from Angular Material. * Per-call config always wins over these defaults. */ declare const ACP_DIALOG_DEFAULT_OPTIONS: InjectionToken>; /** * Token used by the declarative `` component to register * its action buttons with the hosting `AcpDialogContainer`. */ declare const ACP_DIALOG_ACTIONS: InjectionToken; /** * Token used by the declarative `` component to register * its template with the hosting `AcpDialogContainer`. */ declare const ACP_DIALOG_TITLEBAR: InjectionToken; /** * Registers application-wide dialog defaults, e.g.: * `provideAcpDialogDefaults({ fullScreenOnMobile: true })`. */ declare function provideAcpDialogDefaults(defaults: AcpDialogConfig): EnvironmentProviders; type DialogSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'full'; /** * @interface MatCustomDialogConfig * This is the main configuration object for any dialog opened through the service. * It extends the standard MatDialogConfig with custom properties for convenience. */ interface MatCustomDialogConfig { data?: T; size?: DialogSize; width?: string; height?: string; minWidth?: string; minHeight?: string; maxWidth?: string; maxHeight?: string; position?: { top?: string; bottom?: string; left?: string; right?: string; }; panelClass?: string | string[]; backdropClass?: string | string[]; hasBackdrop?: boolean; /** * Whether clicking the backdrop closes the dialog. * @default true */ backdropClickClosable?: boolean; /** * Whether pressing Escape closes the dialog. Handled independently from * `backdropClickClosable`. * @default true */ escapeKeyClosable?: boolean; isMobileFullScreen?: boolean; autoFocus?: boolean | 'first-tabbable' | 'dialog' | 'first-heading'; restoreFocus?: boolean; ariaLabel?: string; ariaLabelledBy?: string; ariaDescribedBy?: string; role?: 'dialog' | 'alertdialog'; scrollStrategy?: ScrollStrategy; enterAnimationDuration?: number | string; exitAnimationDuration?: number | string; } /** * Configuration interface for opening a dialog inside the custom `DialogWrapper`. * This interface defines the properties needed to configure the dialog wrapper. * * @interface DialogWrapperConfig * @template T The type of data to pass to the content component */ interface DialogWrapperConfig { /** * The component type to render inside the dialog wrapper. * This component will be dynamically created and inserted into the dialog. */ component: Type; /** * The title text to display in the dialog header. */ title: string; /** * Optional Material icon name to display in the dialog header. */ icon?: string; /** * Optional data to pass to the content component's instance. * This will be accessible via the `data` property on the component instance. */ data?: T; /** * Whether to hide the dialog header section. * If true, the title, icon, and close button will not be displayed. * @default false */ hideHeader?: boolean; /** * Whether to show the close button in the dialog header. * If false, follows Angular Material's default behavior (no close button). * @default true */ showCloseButton?: boolean; /** * Accessible label for the header close button. * Useful to provide a localized label for screen readers. * @default 'Close dialog' */ closeAriaLabel?: string; } declare class AdvancedDialogService { private readonly dialog; private readonly overlay; private readonly breakpointObserver; private readonly zIndexService; private readonly isMobile$; /** * Main method to open any component in a dialog. * This provides maximum flexibility. * @param component The component to render. * @param config The detailed configuration for the dialog. * @returns A MatDialogRef instance. */ open(component: ComponentType, config?: MatCustomDialogConfig): Promise>; /** * A powerful helper to open a component inside our standard, branded "wrapper". * This provides maximum consistency. * @param wrapperConfig Configuration for the title, icon, and the content component. * @param matDialogConfig Standard MatDialog configuration (size, position, etc.). * @returns A MatDialogRef instance pointing to the wrapper. */ openInWrapper(wrapperConfig: DialogWrapperConfig, matDialogConfig?: MatCustomDialogConfig): Promise>; /** * Helper to open a dialog and only get an observable of the result. */ openAndGetResult(component: ComponentType, config?: MatCustomDialogConfig): Promise; /** * Closes all currently open dialogs. */ closeAll(): void; private buildDialogConfig; private applyFullScreenConfig; private applyStandardConfig; private applyCommonConfig; /** * Re-enables a single close gesture (backdrop click or Escape) when the other * one is disabled, since MatDialog's `disableClose` blocks both at once. */ private wireCloseBehavior; private getDialogWidth; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } type DialogType = 'normal' | 'alert'; /** * Centralized service that manages z-index stacking for all dialogs. * Ensures dialogs always appear in the correct order. * Alert dialogs always take priority over regular dialogs. */ declare class DialogZIndexService { private static readonly Z_INDEX_RANGES; private static readonly Z_INDEX_INCREMENT; /** * Gets the next available z-index for a specific dialog type. * @param type Dialog type (normal, alert) * @returns The next z-index to use */ getNextZIndex(type?: DialogType): number; /** * Gets the highest z-index currently in use for a specific type. * @param type Dialog type * @returns The highest z-index currently in use for that type */ getCurrentZIndex(type?: DialogType): number; /** * Gets the highest z-index across all dialog types. * @returns The highest z-index of all dialogs */ getHighestZIndex(): number; /** * Resets the z-index counter (useful for testing). * @param type Specific type to reset, or undefined to reset all */ reset(type?: DialogType): void; /** * Applies a z-index to a specific dialog. * @param dialogRef Dialog reference * @param type Dialog type (determines the z-index range) * @param zIndex Specific z-index to apply (optional) */ applyZIndex(dialogRef: MatDialogRef, type?: DialogType, zIndex?: number): void; /** * Brings a dialog to the front (used by the drag functionality). * @param element Dialog element to bring to the front * @param type Dialog type */ bringToFront(element: HTMLElement, type?: DialogType): void; /** * Forces a dialog to stay above every other dialog. * Useful for critical alerts that must have maximum priority. * @param dialogRef Dialog reference */ forceToTop(dialogRef: MatDialogRef): void; private getOverlayRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class OverlayService { private readonly overlay; private overlayRef; showSpinner(): void; hideSpinner(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class ThemeSwitcher { private readonly _darkMode; private readonly platformId; isDarkMode$: rxjs.Observable; constructor(); loadMode(): void; toggleDarkMode(): void; private applyTheme; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * A wrapper component for Angular Material dialogs that provides a consistent look and feel, * including a draggable header and the ability to dynamically create components inside the dialog. * * This component is typically used with the AdvancedDialogService's openInWrapper method. */ declare class DialogWrapper implements AfterViewInit { dialogRef: MatDialogRef; config: DialogWrapperConfig; private zIndexService; /** * A template reference that acts as an anchor for dynamic content. * This is where the component specified in the config will be rendered. */ readonly contentHost: Signal; /** * A reference to the header element for the z-index focus logic. * Used to bring the dialog to the front when clicked. */ readonly header: Signal; /** * Lifecycle hook that initializes the dynamic content after the view is ready. * Creates the component specified in the config and passes data to it. */ ngAfterViewInit(): void; /** * Closes the dialog. * Called when the close button in the header is clicked. */ onClose(): void; /** * Brings the dialog to the front by adjusting its z-index. * Uses the centralized DialogZIndexService for consistent z-index management. * Called when the dialog header is clicked. */ bringToFront(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type SelectValue = string | number | null; declare class DynamicSelect implements OnInit, OnDestroy { label: _angular_core.InputSignal; options: _angular_core.InputSignal; selectedValue: _angular_core.InputSignal; className: _angular_core.InputSignal; placeholder: _angular_core.InputSignal; disabled: _angular_core.InputSignal; clearable: _angular_core.InputSignal; searchable: _angular_core.InputSignal; virtualScroll: _angular_core.InputSignal; dropdownPosition: _angular_core.InputSignal<"auto" | "top" | "bottom">; closeOnSelect: _angular_core.InputSignal; hideSelected: _angular_core.InputSignal; multiple: _angular_core.InputSignal; selectOnTab: _angular_core.InputSignal; openOnEnter: _angular_core.InputSignal; selectableGroup: _angular_core.InputSignal; selectableGroupAsModel: _angular_core.InputSignal; clearOnBackspace: _angular_core.InputSignal; readonly: _angular_core.InputSignal; searchWhileComposing: _angular_core.InputSignal; minTermLength: _angular_core.InputSignal; editableSearchTerm: _angular_core.InputSignal; typeToSearchText: _angular_core.InputSignal; addTagText: _angular_core.InputSignal; loadingText: _angular_core.InputSignal; clearAllText: _angular_core.InputSignal; notFoundText: _angular_core.InputSignal; selectionChange: _angular_core.OutputEmitterRef; selectControl: FormControl; filteredOptions: SelectOption[]; loading: boolean; private readonly _onDestroy; constructor(); ngOnInit(): void; onSelectionChange(selectedItem: any): void; ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class UserIcon { size: _angular_core.InputSignal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class SvgIcon { private readonly iconRegistry; /** * Icon name from the registry */ name: _angular_core.InputSignal; /** * Icon size (applies to both width and height) */ size: _angular_core.InputSignal; /** * Custom width (overrides size) */ width: _angular_core.InputSignal; /** * Custom height (overrides size) */ height: _angular_core.InputSignal; /** * Icon color (uses CSS currentColor by default) */ color: _angular_core.InputSignal; /** * Show fallback icon instead of empty space when icon is not found */ useFallback: _angular_core.InputSignal; /** * Computed width value */ protected computedWidth: _angular_core.Signal; /** * Computed height value */ protected computedHeight: _angular_core.Signal; /** * Get the icon SVG from the registry */ protected iconSvg: _angular_core.Signal; constructor(); static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface IconRegistryConfig { /** * Fallback icon to show when requested icon is not found */ fallbackIcon?: string; /** * Show console warnings when icons are not found */ showWarnings?: boolean; /** * Base URL for loading icons from external sources */ iconBaseUrl?: string; } declare class IconRegistryService { private readonly sanitizer; private readonly http; private readonly registry; private readonly pendingLoads; private config; /** * Configure the icon registry */ configure(config: IconRegistryConfig): void; /** * Register a single icon */ registerIcon(name: string, svgData: string): void; /** * Register multiple icons at once */ registerIcons(icons: IconDefinition[]): void; /** * Load an icon from a URL */ loadIconFromUrl(name: string, url: string): Promise; /** * Load multiple icons from URLs */ loadIconsFromUrls(icons: { name: string; url: string; }[]): Promise; /** * Get a sanitized icon by name * If icon is not found, attempts to load from configured base URL or returns fallback */ getIcon(name: string): SafeHtml | null; /** * Get icon with automatic online loading if not found */ getIconAsync(name: string): Promise; /** * Check if an icon exists in the registry */ hasIcon(name: string): boolean; /** * Get all registered icon names */ getRegisteredIcons(): string[]; /** * Clear all registered icons */ clearRegistry(): void; /** * Remove a specific icon from the registry */ removeIcon(name: string): boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class InputChip { chips: _angular_core.InputSignal; labelText: _angular_core.InputSignal; placelholder: _angular_core.InputSignal; addOnBlur: boolean; readonly separatorKeysCodes: readonly [13, 188]; announcer: LiveAnnouncer; add(event: MatChipInputEvent): void; remove(value: string): void; edit(inputRaw: string, event: MatChipEditedEvent): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class Button { variant: _angular_core.InputSignal; text: _angular_core.InputSignal; icon: _angular_core.InputSignal; disabled: _angular_core.InputSignal; type: _angular_core.InputSignal; matStyle: _angular_core.InputSignal; customClass: _angular_core.InputSignal; reportFormat: _angular_core.InputSignal; extended: _angular_core.InputSignal; title: _angular_core.InputSignal; ariaLabel: _angular_core.InputSignal; name: _angular_core.InputSignal; id: _angular_core.InputSignal; form: _angular_core.InputSignal; tabIndex: _angular_core.InputSignal; testId: _angular_core.InputSignal; handleClick: _angular_core.OutputEmitterRef; /** * Gets the icon to display. If reportFormat is provided and no explicit icon is set, * returns the appropriate icon for the report format. */ getIcon(): string; /** * Gets the variant to use. If reportFormat is provided and variant is still 'primary' (default), * returns the appropriate variant for the report format. */ getVariant(): ButtonVariant; /** * Gets the title to display. If reportFormat is provided, automatically appends * the format name to the title (e.g., "Export PDF", "Download Excel"). */ getTitle(): string; /** * Maps report format to appropriate icon */ private getReportIcon; /** * Maps report format to appropriate button variant/color */ private getReportVariant; /** * Maps report format to human-readable name */ private getReportFormatName; getButtonClasses(): Record; getDisplayText(): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type AcpButtonVariant = 'basic' | 'icon' | 'fab' | 'mini-fab'; type AcpButtonAppearance = 'text' | 'filled' | 'elevated' | 'outlined' | 'tonal'; type AcpButtonType = 'button' | 'submit' | 'reset'; type AcpButtonColor = 'primary' | 'secondary' | 'accent' | 'error' | 'danger' | 'success' | 'warning' | 'info' | 'dark' | 'light'; declare abstract class BaseButton { color: _angular_core.InputSignal; square: _angular_core.InputSignalWithTransform; icon: _angular_core.InputSignal; suffixIcon: _angular_core.InputSignal; loading: _angular_core.InputSignalWithTransform; showProgress: _angular_core.InputSignalWithTransform; progressType: _angular_core.InputSignal<"text" | "spinner">; progressText: _angular_core.InputSignal; disabled: _angular_core.InputSignalWithTransform; disableRipple: _angular_core.InputSignalWithTransform; variant: _angular_core.InputSignal; appearance: _angular_core.InputSignal; type: _angular_core.InputSignal; extended: _angular_core.InputSignalWithTransform; block: _angular_core.InputSignalWithTransform; size: _angular_core.InputSignal<"small" | "medium" | "large">; text: _angular_core.InputSignal; ariaLabel: _angular_core.InputSignal; form: _angular_core.InputSignal; hasText: _angular_core.Signal; clicked: _angular_core.OutputEmitterRef; focused: _angular_core.OutputEmitterRef; blurred: _angular_core.OutputEmitterRef; colorClass: _angular_core.Signal; sizeClass: _angular_core.Signal; squareClass: _angular_core.Signal<"" | "acp-square">; blockClass: _angular_core.Signal<"" | "acp-block">; isDisabled: _angular_core.Signal; pointerEvents: _angular_core.Signal<"none" | "auto">; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class AcpButton extends BaseButton { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class Spinner { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface TabulatorColumn { title: string; field: string; width?: number | string; minWidth?: number; maxWidth?: number; resizable?: boolean; sortable?: boolean; headerSort?: boolean; editor?: string | boolean; formatter?: string; formatterParams?: Record; validator?: string | string[]; headerFilter?: string | boolean; headerFilterParams?: Record; frozen?: boolean; responsive?: number; tooltip?: string | boolean; cssClass?: string; headerCssClass?: string; mutator?: string; accessor?: string; download?: boolean; titleDownload?: string; visible?: boolean; clipboard?: boolean; } interface TabulatorTheme { name: 'default' | 'modern' | 'midnight' | 'simple' | 'site' | 'site-dark'; cssPath?: string; } interface TabulatorConfig { data?: any[]; columns?: TabulatorColumn[]; height?: string | number | false; minHeight?: number; maxHeight?: number; layout?: 'fitData' | 'fitColumns' | 'fitDataFill' | 'fitDataStretch'; layoutColumnsOnNewData?: boolean; responsiveLayout?: boolean | 'hide' | 'collapse'; responsiveLayoutCollapseStartOpen?: boolean; columnMinWidth?: number; resizableColumns?: boolean; movableColumns?: boolean; columnHeaderVertAlign?: 'top' | 'middle' | 'bottom'; placeholder?: string; footerElement?: string; tooltips?: boolean | ((cell: any) => string); tooltipGenerationMode?: 'load' | 'hover'; history?: boolean; keybindings?: Record; reactiveData?: boolean; autoResize?: boolean; tableBuilding?: () => void; tableBuilt?: () => void; renderStarted?: () => void; renderComplete?: () => void; htmlImporting?: () => void; htmlImported?: () => void; dataLoading?: (data: any[]) => void; dataLoaded?: (data: any[]) => void; dataChanged?: (data: any[]) => void; pageLoaded?: (pageno: number) => void; dataSorting?: (sorters: any[]) => void; dataSorted?: (sorters: any[], rows: any[]) => void; dataFiltering?: (filters: any[]) => void; dataFiltered?: (filters: any[], rows: any[]) => void; validationFailed?: (cell: any, value: any, validators: any[]) => void; clipboardCopyStyled?: (clipboard: string) => string; clipboardCopyConfig?: Record; clipboardPasteParser?: string | ((clipboard: string) => any[][]); clipboardPasteAction?: 'insert' | 'update' | 'replace'; printAsHtml?: boolean; printFormatter?: (tableHtml: string, table: any) => string; printHeader?: string; printFooter?: string; tabEndNewRow?: boolean | ((row: any) => any); } interface TabulatorEventHandlers { onCellEdited?: (cell: any) => void; onRowClick?: (e: Event, row: any) => void; onRowSelected?: (row: any) => void; onRowDeselected?: (row: any) => void; onDataChanged?: (data: any[]) => void; onTableReady?: (tabulator: any) => void; } interface DataGridColumn { field: string; header?: string | Observable; hide?: boolean; show?: boolean; disabled?: boolean; pinned?: DataGridColumnPinValue; left?: string; right?: string; width?: string; resizable?: boolean; minWidth?: number; maxWidth?: number; sortable?: boolean | string; sortProp?: DataGridSortProp; type?: DataGridColumnType; typeParameter?: DataGridColumnTypeParameter; tag?: DataGridColumnTag; buttons?: DataGridColumnButton[] | ((rowData: T) => DataGridColumnButton[]); formatter?: (rowData: T, colDef?: DataGridColumn) => any; cellTemplate?: TemplateRef | null; showExpand?: boolean; description?: string; summary?: ((data: T[], colDef?: DataGridColumn) => any) | string; class?: string | ((rowData?: T, colDef?: DataGridColumn) => string); headerCellTemplate?: TemplateRef; } declare type DataGridColumnPinValue = 'left' | 'right' | null; interface DataGridColumnPinOption { label: string | Observable; value: DataGridColumnPinValue; } declare type DataGridColumnType = 'button' | 'tag' | 'link' | 'image' | 'boolean' | 'number' | 'currency' | 'percent' | 'date'; interface DataGridColumnTypeParameter { currencyCode?: string; display?: string | boolean; digitsInfo?: string; format?: string; locale?: string; timezone?: string; } interface DataGridSortProp { arrowPosition?: 'before' | 'after'; disableClear?: boolean; id?: string; start?: 'asc' | 'desc'; } interface DataGridColumnTag { [key: number]: DataGridColumnTagValue; [key: string]: DataGridColumnTagValue; } interface DataGridColumnTagValue { text?: string; color?: string; } interface DataGridColumnButton { type?: DataGridButtonType; text?: string | Observable; icon?: string; fontIcon?: string; svgIcon?: string; color?: ThemePalette; class?: string; disabled?: boolean | ((rowData: T) => boolean); click?: (rowData: T, event: Event) => void; iif?: (rowData: T) => boolean; pop?: string | Observable | DataGridColumnButtonPop; tooltip?: string | Observable | DataGridColumnButtonTooltip; badge?: number | string | Observable | DataGridColumnButtonBadge; children?: DataGridMenuItem[]; } interface DataGridColumnButtonPop { title: string | Observable; description?: string | Observable; okColor?: ThemePalette; okText?: string | Observable; closeColor?: ThemePalette; closeText?: string | Observable; } interface DataGridColumnButtonTooltip { message: string | Observable; position?: TooltipPosition; positionAtOrigin?: boolean; class?: any; hideDelay?: number; showDelay?: number; touchGestures?: TooltipTouchGestures; disabled?: boolean; } interface DataGridColumnButtonBadge { content: number | string | Observable; description?: string | Observable; color?: ThemePalette; position?: MatBadgePosition; size?: MatBadgeSize; overlap?: boolean; disabled?: boolean; hidden?: boolean; } type DataGridCellTemplate = Record>; interface DataGridRowSelectionFormatter { disabled?: (rowData: T, index: number) => boolean; hideCheckbox?: (rowData: T, index: number) => boolean; } type DataGridRowClassFormatter = Record boolean>; type DataGridButtonType = MatButtonAppearance | 'icon'; /** * Represents the default options for the grid that can be configured * using the `DATA_GRID_DEFAULT_OPTIONS` injection token. */ interface DataGridDefaultOptions { columnResizable?: boolean; emptyValuePlaceholder?: string; pageOnFront?: boolean; showPaginator?: boolean; pageDisabled?: boolean; showFirstLastButtons?: boolean; pageIndex?: number; pageSize?: number; pageSizeOptions?: number[]; hidePageSize?: boolean; sortOnFront?: boolean; sortActive?: string; sortDirection?: SortDirection; sortDisableClear?: boolean; sortDisabled?: boolean; sortStart?: 'asc' | 'desc'; rowHover?: boolean; rowStriped?: boolean; multiSelectable?: boolean; multiSelectionWithClick?: boolean; rowSelectable?: boolean; hideRowSelectionCheckbox?: boolean; disableRowClickSelection?: boolean; cellSelectable?: boolean; showToolbar?: boolean; toolbarTitle?: string; columnHideable?: boolean; columnHideableChecked?: 'show' | 'hide'; columnSortable?: boolean; columnPinnable?: boolean; columnPinOptions?: DataGridColumnPinOption[]; showColumnMenuButton?: boolean; columnMenuButtonText?: string; columnMenuButtonType?: DataGridButtonType; columnMenuButtonColor?: ThemePalette; columnMenuButtonClass?: string; columnMenuButtonIcon?: string; columnMenuButtonFontIcon?: string; columnMenuButtonSvgIcon?: string; showColumnMenuHeader?: boolean; columnMenuHeaderText?: string; showColumnMenuFooter?: boolean; columnMenuFooterText?: string; noResultText?: string; } interface DataGridMenuItem { text: string | Observable; icon?: string; fontIcon?: string; svgIcon?: string; class?: string; disabled?: boolean | ((rowData: T) => boolean); click?: (rowData: T, event: Event) => void; iif?: (rowData: T) => boolean; children?: DataGridMenuItem[]; } declare class TabulatorTable implements OnChanges, AfterViewInit, OnDestroy { readonly data: _angular_core.InputSignal; readonly columns: _angular_core.InputSignal; readonly height: _angular_core.InputSignal; readonly layout: _angular_core.InputSignal<"fitData" | "fitColumns" | "fitDataFill" | "fitDataStretch">; readonly dataTree: _angular_core.InputSignal; readonly dataTreeChildField: _angular_core.InputSignal; readonly dataTreeStartExpanded: _angular_core.InputSignal; readonly dataTreeSelectPropagate: _angular_core.InputSignal; readonly selectable: _angular_core.InputSignal; readonly reactiveData: _angular_core.InputSignal; readonly placeholder: _angular_core.InputSignal; readonly autoResize: _angular_core.InputSignal; readonly selectableRows: _angular_core.InputSignal; readonly theme: _angular_core.InputSignal; readonly customClass: _angular_core.InputSignal; readonly rowFormatter: _angular_core.InputSignal<((row: any) => void | null) | undefined>; readonly options: _angular_core.InputSignal>; readonly rowDeleted: _angular_core.OutputEmitterRef; readonly cellEdited: _angular_core.OutputEmitterRef; readonly rowClick: _angular_core.OutputEmitterRef; readonly rowSelected: _angular_core.OutputEmitterRef; readonly tableReady: _angular_core.OutputEmitterRef; private _tabulator; private static instanceCounter; containerId: string; ngAfterViewInit(): void; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; private initializeTable; private applyTheme; private applyCustomClass; private registerEvents; private updateData; private updateColumns; private destroyTable; private updateRowFormatter; getInstance(): Tabulator; redraw(): void; private getRowFormatter; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class AcpGridSelectableCell { ctrlKeyPressed: boolean; shiftKeyPressed: boolean; get selected(): boolean; private _selected; cellSelectable: boolean; cellSelectedChange: EventEmitter; onClick(event: MouseEvent): void; select(): void; deselect(): void; toggle(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** Indicates the width of a column. */ interface ColumnSize { /** The ID/name of the column, as defined in CdkColumnDef. */ readonly columnId: string; /** The width in pixels of the column. */ readonly size: number; /** The width in pixels of the column prior to this update, if known. */ readonly previousSize?: number; } /** Interface describing column size changes. */ interface ColumnSizeAction extends ColumnSize { /** * Whether the resize action should be applied instantaneously. False for events triggered during * a UI-triggered resize (such as with the mouse) until the mouse button is released. True * for all programmatically triggered resizes. */ readonly completeImmediately?: boolean; /** * Whether the resize action is being applied to a sticky/stickyEnd column. */ readonly isStickyColumn?: boolean; } /** * Originating source of column resize events within a table. * @docs-private */ declare class ColumnResizeNotifierSource { /** Emits when an in-progress resize is canceled. */ readonly resizeCanceled: Subject; /** Emits when a resize is applied. */ readonly resizeCompleted: Subject; /** Triggers a resize action. */ readonly triggerResize: Subject; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** Service for triggering column resizes imperatively or being notified of them. */ declare class ColumnResizeNotifier { private readonly _source; /** Emits whenever a column is resized. */ readonly resizeCompleted: Observable; /** Instantly resizes the specified column. */ resize(columnId: string, size: number): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** Coordinates events between the column resize directives. */ declare class HeaderRowEventDispatcher { private readonly _ngZone; /** * Emits the currently hovered header cell or null when no header cells are hovered. * Exposed publicly for events to feed in, but subscribers should use headerCellHoveredDistinct, * defined below. */ readonly headerCellHovered: Subject; /** * Emits the header cell for which a user-triggered resize is active or null * when no resize is in progress. */ readonly overlayHandleActiveForCell: Subject; /** Distinct and shared version of headerCellHovered. */ readonly headerCellHoveredDistinct: Observable; /** * Emits the header that is currently hovered or hosting an active resize event (with active * taking precedence). */ readonly headerRowHoveredOrActiveDistinct: Observable; private readonly _headerRowHoveredOrActiveDistinctReenterZone; private _lastSeenRow; private _lastSeenRowHover; /** * Emits whether the specified row should show its overlay controls. * Emission occurs within the NgZone. */ resizeOverlayVisibleForHeaderRow(row: Element): Observable; private _enterZone; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Base class for ColumnResize directives which attach to mat-table elements to * provide common events and services for column resizing. */ declare abstract class ColumnResize implements AfterViewInit, OnDestroy { private _renderer; private _eventCleanups; protected readonly destroyed: Subject; abstract readonly columnResizeNotifier: ColumnResizeNotifier; abstract readonly elementRef: ElementRef; protected abstract readonly eventDispatcher: HeaderRowEventDispatcher; protected abstract readonly ngZone: NgZone; protected abstract readonly notifier: ColumnResizeNotifierSource; /** Unique ID for this table instance. */ protected readonly selectorId: string; /** The id attribute of the table, if specified. */ id?: string; /** @docs-private Whether a call to updateStickyColumnStyles is pending after a resize. */ _flushPending: boolean; /** * Whether to update the column's width continuously as the mouse position * changes, or to wait until mouseup to apply the new size. */ liveResizeUpdates: boolean; ngAfterViewInit(): void; ngOnDestroy(): void; /** Gets the unique CSS class name for this table instance. */ getUniqueCssClass(): string; /** Gets the ID for this table used for column size persistance. */ getTableId(): string; /** Called when a column in the table is resized. Applies a css class to the table element. */ setResized(): void; private _listenForRowHoverEvents; private _listenForResizeActivity; private _listenForHoverActivity; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class AcpGridColumnMenu { menuPanel: MatMenu; menuTrigger: MatMenuTrigger; columns: DataGridColumn[]; selectable: boolean; selectableChecked: 'show' | 'hide'; sortable: boolean; pinnable: boolean; get buttonText(): string; set buttonText(value: string); private _buttonText; buttonType: DataGridButtonType; buttonColor: ThemePalette; buttonClass: string; buttonIcon: string; buttonFontIcon: string; buttonSvgIcon: string; showHeader: boolean; headerText: string; headerTemplate: TemplateRef; showFooter: boolean; footerText: string; footerTemplate: TemplateRef; columnChange: EventEmitter[]>; get pinOptions(): DataGridColumnPinOption[]; set pinOptions(value: DataGridColumnPinOption[]); private _pinOptions; _handleDroped(e: CdkDragDrop): void; _handleChecked(col: DataGridColumn): void; _handlePinSelect(col: DataGridColumn, val: DataGridColumnPinValue): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class AcpGridExpansionToggle { private _opened; private _row; private _tplRef; get opened(): boolean; set opened(newValue: boolean); openedChange: _angular_core.OutputEmitterRef; set expandableRow(value: any); set expansionRowTpl(value: TemplateRef); toggleChange: _angular_core.OutputEmitterRef; onClick(event: MouseEvent): void; toggle(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare const DATA_GRID_DEFAULT_OPTIONS: InjectionToken; declare class DataGrid implements AfterViewInit, OnChanges { size: _angular_core.InputSignal<"small" | "medium" | "normal">; protected _animationsDisabled: boolean; private readonly _utils; private readonly _changeDetectorRef; private readonly _defaultOptions; table: MatTable; paginator: MatPaginator; sort: MatSort; rowDefs: QueryList>; headerRowDefs: QueryList; footerRowDefs: QueryList; columnResize?: ColumnResize; columnMenu: AcpGridColumnMenu; tableContainer: ElementRef; dataSource: MatTableDataSource; /** The grid's displayed columns. */ displayedColumns: string[]; /** The grid's columns. */ columns: DataGridColumn[]; /** The grid's data. */ data: any[]; /** The total number of the data. */ length: number; /** Whether the grid is loading. */ loading: boolean; /** Tracking function that will be used to check the differences in data changes. */ trackBy: TrackByFunction; /** Whether the column is resizable. */ columnResizable: boolean; /** Placeholder for the empty value (`null`, `''`, `[]`). */ emptyValuePlaceholder: string; /** Whether to paginate the data on front end. */ pageOnFront: boolean; /** Whether to show the paginator. */ showPaginator: boolean; /** Whether the paginator is disabled. */ pageDisabled: boolean; /** Whether to show the first/last buttons UI to the user. */ showFirstLastButtons: boolean; /** The zero-based page index of the displayed list of items. */ pageIndex: number; /** Number of items to display on a page. */ pageSize: number; /** The set of provided page size options to display to the user. */ pageSizeOptions: number[]; /** Whether to hide the page size selection UI from the user. */ hidePageSize: boolean; /** Event emitted when the paginator changes the page size or page index. */ page: _angular_core.OutputEmitterRef; /** The template for the pagination. */ paginationTemplate: TemplateRef; /** Whether to sort the data on front end. */ sortOnFront: boolean; /** The id of the most recently sorted MatSortable. */ sortActive: string; /** The sort direction of the currently active MatSortable. */ sortDirection: SortDirection; /** * Whether to disable the user from clearing the sort by finishing the sort direction cycle. * May be overriden by the column's `disableClear` in `sortProp`. */ sortDisableClear: boolean; /** Whether the sort is disabled. */ sortDisabled: boolean; /** * The direction to set when an MatSortable is initially sorted. * May be overriden by the column's `start` in `sortProp`. */ sortStart: 'asc' | 'desc'; /** Event emitted when the user changes either the active sort or sort direction. */ sortChange: _angular_core.OutputEmitterRef; /** Whether to use the row hover style. */ rowHover: boolean; /** Whether to use the row striped style. */ rowStriped: boolean; /** Event emitted when the user clicks the row. */ rowClick: _angular_core.OutputEmitterRef; /** Event emitted when the user attempts to open a context menu. */ rowContextMenu: _angular_core.OutputEmitterRef; expansionRowStates: any[]; /** Whether the row is expandable. */ expandable: boolean; /** The template for the expandable row. */ expansionTemplate: TemplateRef; /** Event emitted when the user toggles the expandable row. */ expansionChange: _angular_core.OutputEmitterRef; closeOthersOnExpand: _angular_core.InputSignal; rowSelection: SelectionModel; /** Whether to support multiple row/cell selection. */ multiSelectable: boolean; /** Whether the user can select multiple rows with click. */ multiSelectionWithClick: boolean; /** Whether the row is selectable. */ rowSelectable: boolean; /** Whether to hide the row selection checkbox. */ hideRowSelectionCheckbox: boolean; /** Whether disable rows to be selected when clicked. */ disableRowClickSelection: boolean; /** The formatter to disable the row selection or hide the row's checkbox. */ rowSelectionFormatter: DataGridRowSelectionFormatter; /** The formatter to set the row's class. */ rowClassFormatter?: DataGridRowClassFormatter; /** The selected row items. */ rowSelected: any[]; /** Event emitted when the row is selected. */ rowSelectedChange: _angular_core.OutputEmitterRef; checkboxKeyDown: _angular_core.OutputEmitterRef; checkboxKeyUp: _angular_core.OutputEmitterRef; checkboxKeyPress: _angular_core.OutputEmitterRef; rowKeyDown: _angular_core.OutputEmitterRef<{ event: KeyboardEvent; row: Record; index: number; }>; rowKeyUp: _angular_core.OutputEmitterRef<{ event: KeyboardEvent; row: Record; index: number; }>; rowKeyPress: _angular_core.OutputEmitterRef<{ event: KeyboardEvent; row: Record; index: number; }>; cellSelection: any[]; /** Whether the cell is selectable. */ cellSelectable: boolean; /** Event emitted when the cell is selected. */ cellSelectedChange: _angular_core.OutputEmitterRef; private _selectedCell?; /** Whether to show the toolbar. */ showToolbar: boolean; /** The text of the toolbar's title. */ toolbarTitle: string; /** The template for the toolbar. */ toolbarTemplate: TemplateRef; /** Whether the column is hideable. */ columnHideable: boolean; /** Hide or show when the column's checkbox is checked. */ columnHideableChecked: 'show' | 'hide'; /** Whether the column is sortable. */ columnSortable: boolean; /** Whether the column is pinnable. */ columnPinnable: boolean; /** Event emitted when the column is hided or is sorted. */ columnChange: _angular_core.OutputEmitterRef[]>; /** The options for the column pin list. */ columnPinOptions: DataGridColumnPinOption[]; /** Whether to show the column menu button. */ showColumnMenuButton: boolean; /** The text for the column menu button. */ columnMenuButtonText: string; /** The type for the column menu button. */ columnMenuButtonType: DataGridButtonType; /** The color for the column menu button. */ columnMenuButtonColor: ThemePalette; /** The class for the column menu button. */ columnMenuButtonClass: string; /** The icon for the column menu button. */ columnMenuButtonIcon: string; /** The font icon for the column menu button. */ columnMenuButtonFontIcon: string; /** The svg icon for the column menu button. */ columnMenuButtonSvgIcon: string; /** Whether to show the column-menu's header. */ showColumnMenuHeader: boolean; /** The text for the column-menu's header. */ columnMenuHeaderText: string; /** The template for the column-menu's header. */ columnMenuHeaderTemplate: TemplateRef; /** Whether to show the the column-menu's footer. */ showColumnMenuFooter: boolean; /** The text for the column-menu's footer. */ columnMenuFooterText: string; /** The template for the column-menu's footer. */ columnMenuFooterTemplate: TemplateRef; /** The displayed text for the empty data. */ noResultText: string; /** The template for the empty data. */ noResultTemplate: TemplateRef; keyboardNavigation: _angular_core.InputSignal; highlightedRowIndex: _angular_core.InputSignal; focusedRowChange: _angular_core.OutputEmitterRef<{ row: any; index: number; }>; get _hasNoResult(): boolean; /** The header's cell template for the grid. */ headerTemplate: TemplateRef | DataGridCellTemplate; /** The header's cell template for the grid exclude sort. */ headerExtraTemplate: TemplateRef | DataGridCellTemplate; /** The cell template for the grid. */ cellTemplate: TemplateRef | DataGridCellTemplate; /** Whether to use custom row template. If true, you should define a matRowDef. */ useContentRowTemplate: boolean; useContentHeaderRowTemplate: boolean; useContentFooterRowTemplate: boolean; /** Whether to show the summary. */ showSummary: boolean; /** The template for the summary. */ summaryTemplate: TemplateRef | DataGridCellTemplate; get _whetherShowSummary(): boolean; /** Whether to show the sidebar. */ showSidebar: boolean; /** The template for the sidebar. */ sidebarTemplate: TemplateRef; /** Whether to show the status bar. */ showStatusbar: boolean; /** The template for the status bar. */ statusbarTemplate: TemplateRef; /** The changed record of row data. */ rowChangeRecord?: KeyValueChangeRecord; detectChanges(): void; _getColData(data: any[], colDef: DataGridColumn): any[]; _isColumnHide(item: DataGridColumn): boolean; ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; _countPinnedPosition(): void; _getIndex(index: number | undefined, dataIndex: number): number; _onSortChange(sort: Sort): void; _onRowDataChange(record: KeyValueChangeRecord): void; /** Expansion change event */ _onExpansionChange(expansionRef: AcpGridExpansionToggle, rowData: Record, column: DataGridColumn, index: number): void; /** Cell select event */ _selectCell(cellRef: AcpGridSelectableCell, rowData: Record, colDef: DataGridColumn): void; /** Row select event */ _selectRow(event: MouseEvent, rowData: Record, index: number): void; /** Whether the number of selected elements matches the total number of rows. */ _isAllSelected(): boolean; /** Select all rows if they are not all selected; otherwise clear selection. */ _toggleMasterCheckbox(): void; /** Select normal row */ _toggleNormalCheckbox(row: Record): void; _onCheckboxKeyDown(event: KeyboardEvent): void; _onCheckboxKeyUp(event: KeyboardEvent): void; _onCheckboxKeyPress(event: KeyboardEvent): void; _onRowKeyDown(event: KeyboardEvent, row: Record, index: number): void; _onRowKeyUp(event: KeyboardEvent, row: Record, index: number): void; _onRowKeyPress(event: KeyboardEvent, row: Record, index: number): void; /** Column change event */ _onColumnChange(columns: DataGridColumn[]): void; getDisplayedColumnFields(columns: DataGridColumn[]): string[]; /** Customize expansion event */ toggleExpansion(index: number): any; /** Scroll to top when turn to the next page. */ _onPage(e: PageEvent): void; scrollTop(value?: number): number | void; scrollLeft(value?: number): number | void; _contextmenu(event: MouseEvent, rowData: Record, index: number): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; static ngAcceptInputType_loading: unknown; static ngAcceptInputType_columnResizable: unknown; static ngAcceptInputType_pageOnFront: unknown; static ngAcceptInputType_showPaginator: unknown; static ngAcceptInputType_pageDisabled: unknown; static ngAcceptInputType_showFirstLastButtons: unknown; static ngAcceptInputType_hidePageSize: unknown; static ngAcceptInputType_sortOnFront: unknown; static ngAcceptInputType_sortDisableClear: unknown; static ngAcceptInputType_sortDisabled: unknown; static ngAcceptInputType_rowHover: unknown; static ngAcceptInputType_rowStriped: unknown; static ngAcceptInputType_expandable: unknown; static ngAcceptInputType_multiSelectable: unknown; static ngAcceptInputType_multiSelectionWithClick: unknown; static ngAcceptInputType_rowSelectable: unknown; static ngAcceptInputType_hideRowSelectionCheckbox: unknown; static ngAcceptInputType_disableRowClickSelection: unknown; static ngAcceptInputType_cellSelectable: unknown; static ngAcceptInputType_showToolbar: unknown; static ngAcceptInputType_columnHideable: unknown; static ngAcceptInputType_columnSortable: unknown; static ngAcceptInputType_columnPinnable: unknown; static ngAcceptInputType_showColumnMenuButton: unknown; static ngAcceptInputType_showColumnMenuHeader: unknown; static ngAcceptInputType_showColumnMenuFooter: unknown; static ngAcceptInputType_useContentRowTemplate: unknown; static ngAcceptInputType_useContentHeaderRowTemplate: unknown; static ngAcceptInputType_useContentFooterRowTemplate: unknown; static ngAcceptInputType_showSummary: unknown; static ngAcceptInputType_showSidebar: unknown; static ngAcceptInputType_showStatusbar: unknown; } /** * Interfaz que define un elemento que puede recibir el foco y participar en la navegación por teclado. */ interface FocusableElement { /** El ElementRef del elemento DOM */ element: ElementRef; /** Un nombre único para identificar el elemento en el sistema de navegación */ name: string; /** Callback opcional que se ejecuta cuando se presiona la flecha arriba y no hay más elementos arriba */ onArrowUp?: () => void; /** Callback opcional que se ejecuta cuando se presiona la flecha abajo y no hay más elementos abajo */ onArrowDown?: () => void; /** Callback opcional que se ejecuta cuando se presiona la flecha izquierda */ onArrowLeft?: () => void; /** Callback opcional que se ejecuta cuando se presiona la flecha derecha */ onArrowRight?: () => void; /** Callback opcional que se ejecuta cuando el elemento recibe el foco */ onFocus?: (index?: number) => void; /** Callback opcional que se ejecuta cuando el índice enfocado dentro del elemento cambia (ej: una fila en una tabla) */ onFocusedChange?: (index: number) => void; } /** * Servicio que gestiona la navegación por teclado entre componentes registrados. * Permite mover el foco entre elementos usando las teclas de flecha y centraliza el estado del foco. */ declare class KeyboardNavigationService { /** Array privado que contiene todos los elementos registrados para la navegación */ private readonly focusableElements; /** Signal que mantiene el índice del elemento actualmente enfocado en el array `focusableElements` */ private readonly currentFocusIndex; /** Subject para notificar la destrucción del servicio y limpiar suscripciones */ private readonly destroy$; /** * Signal público que expone el índice de la fila enfocada (usado por componentes como DataGrid). * Es un signal escribible porque el componente hijo (DataGrid) es quien actualiza su valor. */ focusedRowIndex: _angular_core.WritableSignal; /** * Signal público que expone el nombre del elemento actualmente enfocado. * Es un signal `computed` que se deriva automáticamente del `currentFocusIndex` privado. */ focusedElementName: _angular_core.Signal; /** * Registra un nuevo elemento en el sistema de navegación por teclado. * @param element El objeto FocusableElement a registrar. */ registerElement(element: FocusableElement): void; /** * Elimina un elemento del sistema de navegación por teclado. * @param element El ElementRef del elemento a desregistrar. */ unregisterElement(element: ElementRef): void; /** * Mueve el foco a un elemento específico por su nombre. * @param name El nombre único del elemento al que se quiere mover el foco. * @param index Opcional: el índice interno a enfocar (ej: el índice de una fila en una tabla). */ focusElement(name: string, index?: number): void; /** * Actualiza el índice enfocado (usado por componentes internos como una tabla). * @param index El nuevo índice enfocado. */ updateFocusedIndex(index: number): void; /** * Maneja la lógica de navegación basada en la tecla presionada. * @param key La tecla presionada ('ArrowUp', 'ArrowDown', etc.). */ private handleKeyNavigation; /** * Resetea el índice de la fila enfocada a -1. * Útil cuando los datos de un componente cambian y el foco anterior ya no es válido. */ resetFocusedRowIndex(): void; /** * Método de limpieza para ser llamado cuando el servicio se destruye. * Cierra el Subject `destroy$` para completar todas las suscripciones activas. */ onDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } interface DateRangePickerOptions { presetTheme?: 'default' | 'bootstrap' | 'material' | 'custom'; locale?: NgxDatexLocale; theme?: NgxDatexTheme; ranges?: Record; minDate?: Date | null; maxDate?: Date | null; singleDatePicker?: boolean; timePicker?: boolean; timePicker24Hour?: boolean; timePickerSeconds?: boolean; timePickerIncrement?: number; autoApply?: boolean; showDropdowns?: boolean; linkedCalendars?: boolean; alwaysShowCalendars?: boolean; } type DateValue = AsString extends true ? string : Date; interface DateRangeValue { from: DateValue; to: DateValue; label?: string; } declare class DateRangePicker implements OnInit, OnChanges, OnDestroy, ControlValueAccessor { options: _angular_core.InputSignal; placeholderText: _angular_core.InputSignal; isDisabled: _angular_core.InputSignal; inputReadonly: _angular_core.InputSignal; label: _angular_core.InputSignal; appearance: _angular_core.InputSignal<"fill" | "outline">; formatOutputAsString: _angular_core.InputSignal; calendarIcon: _angular_core.InputSignal; showCalendarButton: _angular_core.InputSignal; showCheckbox: _angular_core.InputSignal; checkboxChecked: _angular_core.ModelSignal; checkboxPosition: _angular_core.InputSignal<"prefix" | "suffix">; startDate: _angular_core.InputSignal; endDate: _angular_core.InputSignal; singleDatePicker: _angular_core.InputSignal; timePicker: _angular_core.InputSignal; timePicker24Hour: _angular_core.InputSignal; timePickerSeconds: _angular_core.InputSignal; timePickerIncrement: _angular_core.InputSignal; autoApply: _angular_core.InputSignal; showDropdowns: _angular_core.InputSignal; linkedCalendars: _angular_core.InputSignal; alwaysShowCalendars: _angular_core.InputSignal; minDate: _angular_core.InputSignal; maxDate: _angular_core.InputSignal; dateRangeSelected: OutputEmitterRef>; pickerShow: OutputEmitterRef; pickerHide: OutputEmitterRef; pickerApply: OutputEmitterRef; pickerCancel: OutputEmitterRef; checkboxChange: OutputEmitterRef; dateRangeValue: NgxDatexValue | null; predefinedRanges: Record; locale: NgxDatexLocale; theme: NgxDatexTheme; private currentDate; private readonly stateChanges; private onChange; private onTouched; effectiveMinDate: WritableSignal; effectiveMaxDate: WritableSignal; get minDateForTemplate(): any; get maxDateForTemplate(): any; ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; private mapDate; private initializeConfiguration; private getDefaultRanges; private getLocale; private getTheme; onDateChange(value: NgxDatexValue | null): void; onRangeChange(range: { startDate: Date; endDate: Date | null; }): void; onPickerShow(): void; onPickerHide(): void; onCheckboxToggle(checked: boolean): void; writeValue(value: any): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState(_isDisabled: boolean): void; show(): void; hide(): void; toggle(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration, "acp-date-range-picker", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholderText": { "alias": "placeholderText"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "inputReadonly": { "alias": "inputReadonly"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "formatOutputAsString": { "alias": "formatOutputAsString"; "required": false; "isSignal": true; }; "calendarIcon": { "alias": "calendarIcon"; "required": false; "isSignal": true; }; "showCalendarButton": { "alias": "showCalendarButton"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "checkboxChecked": { "alias": "checkboxChecked"; "required": false; "isSignal": true; }; "checkboxPosition": { "alias": "checkboxPosition"; "required": false; "isSignal": true; }; "startDate": { "alias": "startDate"; "required": false; "isSignal": true; }; "endDate": { "alias": "endDate"; "required": false; "isSignal": true; }; "singleDatePicker": { "alias": "singleDatePicker"; "required": false; "isSignal": true; }; "timePicker": { "alias": "timePicker"; "required": false; "isSignal": true; }; "timePicker24Hour": { "alias": "timePicker24Hour"; "required": false; "isSignal": true; }; "timePickerSeconds": { "alias": "timePickerSeconds"; "required": false; "isSignal": true; }; "timePickerIncrement": { "alias": "timePickerIncrement"; "required": false; "isSignal": true; }; "autoApply": { "alias": "autoApply"; "required": false; "isSignal": true; }; "showDropdowns": { "alias": "showDropdowns"; "required": false; "isSignal": true; }; "linkedCalendars": { "alias": "linkedCalendars"; "required": false; "isSignal": true; }; "alwaysShowCalendars": { "alias": "alwaysShowCalendars"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, { "checkboxChecked": "checkboxCheckedChange"; "dateRangeSelected": "dateRangeSelected"; "pickerShow": "pickerShow"; "pickerHide": "pickerHide"; "pickerApply": "pickerApply"; "pickerCancel": "pickerCancel"; "checkboxChange": "checkboxChange"; }, never, never, true, never>; } /** Options for where to set focus to automatically on dialog open. */ type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading'; /** Possible overrides for a drawer's position. */ type DrawerPosition = 'top' | 'bottom' | 'left' | 'right'; /** * Configuration used when opening a drawer. * * This class provides all the configuration options available when opening * a drawer, including positioning, sizing, behavior, and accessibility options. * * @template D The type of data to be injected into the drawer component * * @example * ```typescript * const config: AcpDrawerConfig = { * position: 'right', * width: '400px', * hasBackdrop: true, * disableClose: false, * data: { message: 'Hello from drawer!' }, * ariaLabel: 'Settings drawer' * }; * * this.drawer.open(MyDrawerComponent, config); * ``` */ declare class AcpDrawerConfig { /** The view container to place the overlay for the drawer into. */ viewContainerRef?: ViewContainerRef; /** ID for the drawer. If omitted, a unique one will be generated. */ id?: string; /** The ARIA role of the dialog element. */ role?: DialogRole; /** Extra CSS classes to be added to the drawer container. */ panelClass?: string | string[]; /** Text layout direction for the drawer. */ direction?: Direction; /** Data being injected into the child component. */ data?: D | null; /** Whether the drawer has a backdrop. */ hasBackdrop?: boolean; /** Custom class for the backdrop. */ backdropClass?: string; /** Whether the user can use escape or clicking outside to close the drawer. */ disableClose?: boolean; /** Aria label to assign to the drawer element. */ ariaLabel?: string | null; /** * Whether this is a modal dialog. Used to set the `aria-modal` attribute. Off by default, * because it can interfere with other overlay-based components (e.g. `mat-select`) and because * it is redundant since the dialog marks all outside content as `aria-hidden` anyway. */ ariaModal?: boolean; /** * Whether the drawer should close when the user goes backwards/forwards in history. * Note that this usually doesn't include clicking on links (unless the user is using * the `HashLocationStrategy`). */ closeOnNavigation?: boolean; /** * Where the drawer should focus on open. * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or * AutoFocusTarget instead. */ autoFocus?: AutoFocusTarget | string | boolean; /** * Whether the drawer should restore focus to the * previously-focused element, after it's closed. */ restoreFocus?: boolean; /** Scroll strategy to be used for the drawer. */ scrollStrategy?: ScrollStrategy; /** Position of the drawer. */ position?: DrawerPosition; /** Width of the drawer. */ width?: string; /** Height of the drawer. */ height?: string; /** Whether the drawer should take the full screen. */ fullScreen?: boolean; /** Min-width of the drawer. If a number is provided, assumes pixel units. */ minWidth?: number | string; /** Min-height of the drawer. If a number is provided, assumes pixel units. */ minHeight?: number | string; /** Max-width of the drawer. If a number is provided, assumes pixel units. */ maxWidth?: number | string; /** Max-height of the drawer. If a number is provided, assumes pixel units. */ maxHeight?: number | string; } /** * Internal component that wraps user-provided drawer content. * * This component handles the drawer's animations, positioning, and lifecycle. * It extends the CDK's DialogContainer to provide drawer-specific behavior * including slide-in/slide-out animations and proper focus management. * * @docs-private */ declare class AcpDrawerContainer extends CdkDialogContainer implements OnDestroy { /** Whether animations are disabled in the current environment. */ protected _animationsDisabled: boolean; /** The state of the drawer animations. */ _animationState: 'void' | 'visible' | 'hidden'; /** Emits whenever the state of the animation changes. */ _animationStateChanged: EventEmitter<{ toState: "visible" | "hidden"; phase: "start" | "done"; }>; /** Whether the component has been destroyed. */ private _destroyed; /** * Gets the CSS class for the drawer position. * @returns CSS class name based on the drawer's position */ get _drawerPosition(): string; /** * Called when content is attached to the container. * Initializes the dialog container and starts the entrance animation. */ protected _contentAttached(): void; /** * Begin animation of drawer entrance into view. * Sets the animation state to visible and triggers change detection. */ enter(): void; /** * Begin animation of the drawer exiting from view. * Sets the animation state to hidden and triggers the exit animation. */ exit(): void; /** * Lifecycle hook called when the component is destroyed. * Marks the component as destroyed and calls the parent's ngOnDestroy. */ ngOnDestroy(): void; /** * Simulates animation events when animations are disabled. * @param name The animation name to simulate */ private _simulateAnimation; /** * Handles animation events for both start and end phases. * @param isStart Whether this is the start or end of the animation * @param animationName The name of the animation */ protected _handleAnimationEvent(isStart: boolean, animationName: string): void; /** * Override to prevent automatic focus capture. * Focus is handled by the enter animation instead. */ protected _captureInitialFocus(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Reference to a drawer dispatched from the drawer service. * * This class provides methods and properties to interact with an open drawer, * including dismissing it, accessing its component instance, and subscribing * to lifecycle events like opening and closing. * * @template T The type of the component opened in the drawer * @template R The type of the result returned when the drawer is dismissed * * @example * ```typescript * const drawerRef = this.drawer.open(MyComponent); * * // Access component instance * drawerRef.instance.someProperty = 'value'; * * // Listen for dismissal * drawerRef.afterDismissed().subscribe(result => { * console.log('Drawer dismissed with:', result); * }); * * // Dismiss programmatically * drawerRef.dismiss('some result'); * ``` */ declare class AcpDrawerRef { private _ref; /** Instance of the component making up the content of the drawer. */ get instance(): T; /** * `ComponentRef` of the component opened into the drawer. Will be * null when the drawer is opened using a `TemplateRef`. */ get componentRef(): ComponentRef | null; /** * Instance of the component into which the drawer content is projected. * @docs-private */ containerInstance: AcpDrawerContainer; /** Whether the user is allowed to close the drawer. */ disableClose: boolean | undefined; /** Unique ID for the drawer. */ id: string; /** Subject for notifying the user that the drawer has been dismissed. */ private readonly _afterDismissed; /** Subject for notifying the user that the drawer has opened and appeared. */ private readonly _afterOpened; /** Result to be passed down to the `afterDismissed` stream. */ private _result; /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */ private _closeFallbackTimeout; /** * Creates a new drawer reference. * @param _ref The underlying CDK dialog reference * @param config Configuration options for the drawer * @param containerInstance The drawer container instance */ constructor(_ref: DialogRef, config: AcpDrawerConfig, containerInstance: AcpDrawerContainer); /** * Dismisses the drawer. * @param result Data to be passed back to the drawer opener. */ dismiss(result?: R): void; /** * Gets an observable that is notified when the drawer is finished closing. * @returns Observable that emits the result passed to dismiss() or undefined */ afterDismissed(): Observable; /** * Gets an observable that is notified when the drawer has opened and appeared. * @returns Observable that emits when the drawer is fully visible */ afterOpened(): Observable; /** * Gets an observable that emits when the overlay's backdrop has been clicked. * @returns Observable that emits mouse events from backdrop clicks */ backdropClick(): Observable; /** * Gets an observable that emits when keydown events are targeted on the overlay. * @returns Observable that emits keyboard events */ keydownEvents(): Observable; } /** Injection token that can be used to access the data that was passed in to a drawer. */ declare const ACP_DRAWER_DATA: InjectionToken; /** Injection token that can be used to specify default drawer options. */ declare const ACP_DRAWER_DEFAULT_OPTIONS: InjectionToken>; /** * Service to trigger ACP drawer components. * * The AcpDrawer service provides methods to open, manage, and dismiss drawer panels * that slide in from any side of the screen. It's built on top of Angular CDK Dialog * and provides a flexible way to display additional content without navigating away * from the current page. * * @example * ```typescript * constructor(private drawer: AcpDrawer) {} * * openDrawer() { * const drawerRef = this.drawer.open(MyDrawerComponent, { * position: 'right', * width: '400px', * data: { message: 'Hello from drawer!' } * }); * * drawerRef.afterDismissed().subscribe(result => { * console.log('Drawer closed with result:', result); * }); * } * ``` */ declare class AcpDrawer implements OnDestroy { private _overlay; private _parentDrawer; private _defaultOptions; private readonly _openDrawersAtThisLevel; private readonly _afterAllDismissedAtThisLevel; private readonly _afterOpenedAtThisLevel; private _dialog; /** Keeps track of the currently-open dialogs. */ get openDrawers(): AcpDrawerRef[]; /** Stream that emits when a drawer has been opened. */ get afterOpened(): Subject>; /** * Gets the subject for tracking when all drawers are dismissed. * @returns Subject that emits when all drawers at this level are closed */ private _getAfterAllDismissed; /** * Stream that emits when all open drawer have finished closing. * Will emit on subscribe if there are no open drawers to begin with. */ readonly afterAllDismissed: Observable; /** * Opens a drawer containing the given component. * @param component Type of the component to load into the drawer. * @param config Extra configuration options. * @returns Reference to the newly-opened drawer. */ open(component: ComponentType, config?: AcpDrawerConfig): AcpDrawerRef; /** * Opens a drawer containing the given template. * @param template TemplateRef to instantiate as the drawer content. * @param config Extra configuration options. * @returns Reference to the newly-opened drawer. */ open(template: TemplateRef, config?: AcpDrawerConfig): AcpDrawerRef; /** * Dismisses all of the currently-open drawers. * This will close all drawers at the current level and emit the afterAllDismissed event. */ dismissAll(): void; /** * Finds an open drawer by its id. * @param id ID to use when looking up the drawer. * @returns The drawer reference if found, undefined otherwise. */ getDrawerById(id: string): AcpDrawerRef | undefined; /** * Lifecycle hook that is called when the service is destroyed. * Dismisses all drawers at this level and completes observables. */ ngOnDestroy(): void; /** * Dismisses multiple drawers. * @param drawers Array of drawer references to dismiss */ private _dismissDrawers; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } /** * Injection token that can be used to reference instances of `AcpPopoverContent`. It serves * as alternative token to the actual `AcpPopoverContent` class which could cause unnecessary * retention of the class and its directive metadata. */ declare const ACP_POPOVER_CONTENT: InjectionToken; declare abstract class _AcpPopoverContentBase implements OnDestroy { private _template; private _appRef; private _injector; private _viewContainerRef; private _document; private _changeDetectorRef; private _portal; private _outlet; /** Emits when the popover content has been attached. */ readonly _attached: Subject; /** * Attaches the content with a particular context. * @docs-private */ attach(context?: any): void; /** * Detaches the content. * @docs-private */ detach(): void; ngOnDestroy(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration<_AcpPopoverContentBase, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration<_AcpPopoverContentBase, never, never, {}, {}, never, never, true, never>; } /** * Popover content that will be rendered lazily once the popover is opened. */ declare class AcpPopoverContent extends _AcpPopoverContentBase { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** First value of popover's position. */ type AcpPopoverPositionStart = 'above' | 'below' | 'before' | 'after'; /** Second value of popover's position. */ type AcpPopoverPositionEnd = AcpPopoverPositionStart | 'center'; /** Popover's position. */ type AcpPopoverPosition = [AcpPopoverPositionStart, AcpPopoverPositionEnd]; /** Popover's trigger event. */ type AcpPopoverTriggerEvent = 'click' | 'hover' | 'none'; /** Reason why the popover was closed. */ type PopoverCloseReason = void | 'click' | 'keydown' | 'tab' | 'programmatic'; /** * Interface for a custom popover panel that can be used with `acpPopoverTriggerFor`. * @docs-private */ interface AcpPopoverPanel { triggerEvent: AcpPopoverTriggerEvent; enterDelay: number; leaveDelay: number; position: AcpPopoverPosition; xOffset: number; yOffset: number; closeOnPanelClick: boolean; closeOnBackdropClick: boolean; closeDisabled: boolean; backdropClass?: string; overlayPanelClass?: string | string[]; hasBackdrop?: boolean; templateRef: TemplateRef; lazyContent?: any; direction?: Direction; readonly panelId?: string; readonly closed: EventEmitter; setCurrentStyles: (pos?: AcpPopoverPosition) => void; setPositionClasses: (pos?: AcpPopoverPosition) => void; setElevation: () => void; } /** Default `acp-popover` options that can be overridden. */ interface AcpPopoverDefaultOptions { triggerEvent?: AcpPopoverTriggerEvent; enterDelay?: number; leaveDelay?: number; position?: AcpPopoverPosition; xOffset?: number; yOffset?: number; arrowWidth?: number; arrowHeight?: number; arrowOffsetX?: number; arrowOffsetY?: number; hideArrow?: boolean; closeOnPanelClick?: boolean; closeOnBackdropClick?: boolean; overlayPanelClass?: string; backdropClass?: string; hasBackdrop?: boolean; focusTrapEnabled?: boolean; focusTrapAutoCaptureEnabled?: boolean; } /** Injection token to be used to override the default options for `acp-popover`. */ declare const ACP_POPOVER_DEFAULT_OPTIONS: InjectionToken; /** * ACP Popover component that displays content in an overlay panel. * * The popover can be triggered by hover or click events and supports * various positioning options. It's built on top of Angular CDK Overlay * and provides a flexible way to display contextual information. * * ## Basic Usage * @example * ```html * *
Popover content goes here
*
* * * ``` * * ## Closing Explicitly * * ### 1. Close from within popover content: * @example * ```html * *
*

Popover content

* * *
*
* ``` * * ### 2. Close from component using ViewChild: * @example * ```typescript * @Component({ * template: ` * *
Content with external close
*
* * * ` * }) * export class MyComponent { * @ViewChild('popover') popover!: AcpPopover; * * closePopover() { * this.popover.close('programmatic'); * } * } * ``` * * ### 3. Close using trigger reference: * @example * ```html * *
Popover content
*
* * * * * ``` * * ## Automatic Closing * The popover automatically closes on: * - ESC key press * - Click outside (backdrop) when `closeOnBackdropClick` is true * - Mouse leave after delay when `triggerEvent` is 'hover' * - Click on panel when `closeOnPanelClick` is true */ declare class AcpPopover implements AcpPopoverPanel, OnInit, OnDestroy { private _changeDetectorRef; private _elementRef; private _unusedNgZone; private _defaultOptions; private _previousElevation?; private _elevationPrefix; private _baseElevation; private _exitFallbackTimeout; /** Whether animations are currently disabled. */ protected _animationsDisabled: boolean; /** Config object to be passed into the popover's class. */ _classList: Record; /** Current state of the panel animation. */ _panelAnimationState: 'void' | 'enter'; /** Emits whenever an animation on the popover completes. */ readonly _animationDone: Subject<"void" | "enter">; /** Whether the popover is animating. */ _isAnimating: boolean; /** Closing disabled on popover */ closeDisabled: boolean; /** Config object to be passed into the popover's arrow style */ arrowStyles?: Record; /** Layout direction of the popover. */ direction?: Direction; /** Class or list of classes to be added to the overlay panel. */ overlayPanelClass: string | string[]; /** Class to be added to the backdrop element. */ backdropClass: string | undefined; /** aria-label for the popover panel. */ ariaLabel?: string; /** aria-labelledby for the popover panel. */ ariaLabelledby?: string; /** aria-describedby for the popover panel. */ ariaDescribedby?: string; /** Popover's trigger event. */ triggerEvent: AcpPopoverTriggerEvent; /** Popover's enter delay. */ enterDelay: number; /** Popover's leave delay. */ leaveDelay: number; /** Popover's position. */ get position(): AcpPopoverPosition; set position(value: AcpPopoverPosition); private _position; /** Popover-panel's X offset. */ xOffset: number; /** Popover-panel's Y offset. */ yOffset: number; /** Popover-arrow's width. */ arrowWidth: number; /** Popover-arrow's height. */ arrowHeight: number; /** Popover-arrow's X offset. */ arrowOffsetX: number; /** Popover-arrow's Y offset. */ arrowOffsetY: number; /** Whether the popover arrow should be hidden. */ hideArrow: boolean; /** Whether popover can be closed when click the popover-panel. */ closeOnPanelClick: boolean; /** Whether popover can be closed when click the backdrop. */ closeOnBackdropClick: boolean; /** Whether enable focus trap using `cdkTrapFocus`. */ focusTrapEnabled: boolean; /** Whether enable focus trap auto capture using `cdkTrapFocusAutoCapture`. */ focusTrapAutoCaptureEnabled: boolean; /** Whether the popover has a backdrop. It will always be false if the trigger event is hover. */ hasBackdrop: boolean | undefined; /** * This method takes classes set on the host acp-popover element and applies them on the * popover template that displays in the overlay container. Otherwise, it's difficult * to style the containing popover from outside the component. * @param classes list of class names */ set panelClass(classes: string); private _previousPanelClass?; /** Event emitted when the popover is closed. */ closed: EventEmitter; /** @docs-private */ templateRef: TemplateRef; /** * Popover content that will be rendered lazily. * @docs-private */ lazyContent?: AcpPopoverContent; readonly panelId: string; ngOnInit(): void; ngOnDestroy(): void; /** Handle a keyboard event from the popover, delegating to the appropriate action. */ _handleKeydown(event: KeyboardEvent): void; /** Close popover on click if `closeOnPanelClick` is true. */ _handleClick(): void; /** Disables close of popover when leaving trigger element and mouse over the popover. */ _handleMouseOver(): void; /** Enables close of popover when mouse leaving popover element. */ _handleMouseLeave(): void; /** Sets the current styles for the popover to allow for dynamically changing settings. */ setCurrentStyles(pos?: AcpPopoverPosition): void; /** * It's necessary to set position-based classes to ensure the popover panel animation * folds out from the correct direction. */ setPositionClasses(pos?: AcpPopoverPosition): void; /** Sets the popover-panel's elevation. */ setElevation(): void; /** Callback that is invoked when the panel animation completes. */ protected _onAnimationDone(state: string): void; protected _onAnimationStart(state: string): void; _setIsOpen(isOpen: boolean): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; static ngAcceptInputType_hideArrow: unknown; static ngAcceptInputType_closeOnPanelClick: unknown; static ngAcceptInputType_closeOnBackdropClick: unknown; static ngAcceptInputType_focusTrapEnabled: unknown; static ngAcceptInputType_focusTrapAutoCaptureEnabled: unknown; static ngAcceptInputType_hasBackdrop: unknown; } /** * Directive that marks an element as a popover target. * * This directive provides a reference to an element that can be used * as the target for popover positioning. It's useful when you want * the popover to appear relative to a different element than the trigger. * * @example * ```html *
Target element
* * ``` */ declare class AcpPopoverTarget { /** Reference to the target element. */ elementRef: ElementRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** Injection token that determines the scroll handling while the popover is open. */ declare const ACP_POPOVER_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>; declare class AcpPopoverTrigger implements AfterContentInit, OnDestroy { private _overlay; private _elementRef; private _viewContainerRef; private _dir; private _changeDetectorRef; private _focusMonitor; private _portal?; private _overlayRef; private _popoverOpen; private _halt; private _positionSubscription; private _popoverCloseSubscription; private _pendingRemoval; private _closingActionsSubscription; private _scrollStrategy; private _mouseoverTimer; _openedBy: Exclude | undefined; /** References the popover instance that the trigger is associated with. */ get popover(): AcpPopoverPanel; set popover(popover: AcpPopoverPanel); private _popover; /** Data to be passed along to any lazily-rendered content. */ popoverData: any; /** References the popover target instance that the trigger is associated with. */ targetElement?: AcpPopoverTarget; /** Popover trigger event */ triggerEvent?: AcpPopoverTriggerEvent; /** Event emitted when the associated popover is opened. */ popoverOpened: EventEmitter; /** Event emitted when the associated popover is closed. */ popoverClosed: EventEmitter; ngAfterContentInit(): void; ngOnDestroy(): void; private _setCurrentConfig; /** Whether the popover is open. */ get popoverOpen(): boolean; /** The text direction of the containing app. */ get dir(): Direction; /** Handles mouse click on the trigger. */ _handleClick(_event: MouseEvent): void; /** Handles mouse enter on the trigger. */ _handleMouseEnter(_event: MouseEvent): void; /** Handles mouse leave on the trigger. */ _handleMouseLeave(_event: MouseEvent): void; /** Handles mouse presses on the trigger. */ _handleMousedown(event: MouseEvent): void; /** Handles key presses on the trigger. */ _handleKeydown(event: KeyboardEvent): void; /** Toggles the popover between the open and closed states. */ togglePopover(): void; /** Opens the popover. */ openPopover(): void; /** Closes the popover. */ closePopover(): void; /** * Focuses the popover trigger. * @param origin Source of the popover trigger's focus. */ focus(origin?: FocusOrigin, options?: FocusOptions): void; /** Removes the popover from the DOM. */ private _destroyPopover; /** * This method sets the popover state to open. */ private _initPopover; private _setIsPopoverOpen; /** * This method checks that a valid instance of MdPopover has been passed into * `acpPopoverTriggerFor`. If not, an exception is thrown. */ private _checkPopover; /** * This method creates the overlay from the provided popover's template and saves its * OverlayRef so that it can be attached to the DOM when openPopover is called. */ private _createOverlay; /** * This method builds the configuration object needed to create the overlay, the OverlayConfig. * @returns OverlayConfig */ private _getOverlayConfig; private _getTargetElement; /** * Listens to changes in the position of the overlay and sets the correct classes * on the popover based on the new position. This ensures the animation origin is always * correct, even if a fallback position is used for the overlay. */ private _subscribeToPositions; /** * Sets the appropriate positions on a position strategy * so the overlay connects with the trigger correctly. * @param positionStrategy Strategy whose position to update. */ private _setPosition; /** Returns a stream that emits whenever an action that should close the popover occurs. */ private _popoverClosingActions; /** Gets the portal that should be attached to the overlay. */ private _getPortal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare const ACP_ACTIVE_DATE_DEBOUNCE = 100; declare enum ACP_DATE_OPTION_TYPE { DATE_DIFF = 1, LAST_MONTH = 2, THIS_MONTH = 3, YEAR_TO_DATE = 4, CUSTOM = 5, MONTH_TO_DATE = 6, WEEK_TO_DATE = 7 } interface IAcpSelectDateOption { /** * Etiqueta mostrada en la lista desplegable para esta opción. * Ejemplo: "Últimos 7 días", "Hoy", "Personalizado". */ optionLabel: string; /** * Tipo de opción que indica cómo se determina la fecha. * Por defecto es DATE_DIFF si no se proporciona. */ optionType?: ACP_DATE_OPTION_TYPE; /** * Número de días de desplazamiento desde hoy. * * - Números positivos indican fechas futuras. * - Números negativos indican fechas pasadas. * - Se utiliza solo cuando optionType es DATE_DIFF y no hay callback. * * Ejemplo: -7 → "Últimos 7 días" */ dateDiff?: number; /** * Indica si esta opción está actualmente seleccionada. */ isSelected: boolean; /** * Indica si esta opción debe mostrarse en la lista desplegable. */ isVisible: boolean; /** * Función personalizada para calcular y retornar un DateRange. * Se utiliza cuando optionType requiere manejo especial más allá de dateDiff. */ callBackFunction?: () => DateRange; /** * Expresión de fecha-matemática/relativa opcional mostrada para el inicio del rango * cuando los inputs editables están habilitados (ej: `now-7d`). * Anula el valor derivado de `dateDiff`. Debe estar emparejada con {@link endExpr}. */ startExpr?: string; /** * Expresión de fecha-matemática/relativa opcional mostrada para el fin del rango * cuando los inputs editables están habilitados (ej: `now`). * Debe estar emparejada con {@link startExpr}. */ endExpr?: string; } /** * Implementación por defecto de una opción de fecha seleccionable. * Proporciona valores por defecto para todos los campos. */ declare class AcpSelectDateOption implements IAcpSelectDateOption { optionLabel: string; optionType: ACP_DATE_OPTION_TYPE; dateDiff: number; isSelected: boolean; isVisible: boolean; callBackFunction: () => DateRange; } declare class AcpDateRangeCalendar implements AfterViewInit { firstViewStartDate: _angular_core.WritableSignal; secondViewStartDate: _angular_core.WritableSignal; secondViewMinDate: _angular_core.WritableSignal; minDate: Date; maxDate: Date; /** Emits when the user changes the selection by clicking dates in the views. */ selectedDatesChange: EventEmitter>; firstCalendarView: MatCalendar; secondCalendarView: MatCalendar; private _selectedDates; private isAllowHoverEvent; private cdref; private el; private renderer; /** * Updates the selected date range and synchronizes both calendar views. */ set selectedDates(selectedDates: DateRange | null); get selectedDates(): DateRange | null; /** * Lifecycle hook that is called after Angular has fully initialized * the component's view (and child views). * * Used here to attach hover events and register active date change * listeners once the calendar views are available in the DOM. */ ngAfterViewInit(): void; /** * Handles month selection in the first view. * * @param event - Selected month date */ monthSelected(viewName: string): void; /** * Updates the selected date range when a date is clicked. * * @param date - Date clicked by the user */ updateDateRangeSelection(date: Date | null): void; /** * Registers event handlers for active date changes on both calendar views. * * This method overrides the default `activeDate` property setter of each * calendar view to ensure custom handlers are executed whenever the * active date changes. */ private registerActiveDateChangeEvents; /** * Handles the event when the active date of the first calendar view changes. * * @param activeDate - Object containing `previous` and `current` date values. */ private onFirstViewActiveDateChange; /** * Handles the event when the active date of the second calendar view changes. * * @param activeDate - Object containing `previous` and `current` date values. */ private onSecondViewActiveDateChange; /** * Handles the "next" navigation event for the first calendar view. * * @param currDate - The currently active date in the first calendar view. * @param force - Optional flag that can be used to enforce updates (not used in current logic). */ private handleFirstViewNextEvent; /** * Handles the "previous" navigation event for the first calendar view. * * @param activeDate - Object containing `previous` and `current` date values. */ private handleFirstViewPrevEvent; /** * Checks whether the previous date is greater than the current date. * * @param activeDate - Object containing `previous` and `current` date values. * @returns `true` if the previous date is later than the current date, otherwise `false`. */ private isPrevious; /** * Attaches hover events to all date cells in the first view. */ private attachHoverEvent; /** * Removes active focus from the second view. * * @param classRef - Reference to this component */ private removeDefaultFocus; /** * Updates the selection range dynamically on hover. * * @param date - Hovered date */ private updateSelectionOnMouseHover; /** * Attaches hover events to given nodes to update range selection. * * @param nodes - Date cell nodes */ private addHoverEvents; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface AcpSelectedDateEvent { /** Rango de fechas seleccionado, o null si se limpió la selección. */ range: DateRange | null; /** Opción de fecha seleccionada, o null si se limpió la selección. */ selectedOption: IAcpSelectDateOption | null; /** * Expresión legible para el inicio del rango: la entrada del usuario (ej: `now-7d`) * cuando se edita, la forma relativa de una opción de diferencia de días, * o la fecha formateada absoluta. `null` cuando se limpia la selección. */ startExpr: string | null; /** Expresión legible para el fin del rango. Ver {@link startExpr}. */ endExpr: string | null; } declare class AcpDateRangeInput implements OnInit, AfterViewInit { isDateOptionList: boolean; isCustomRange: boolean; inputLabel: string; showClearButton: _angular_core.InputSignal; showCalendarIcon: _angular_core.InputSignal; showRangeRequired: _angular_core.InputSignal; isRangeRequired: _angular_core.InputSignal; staticOptionId: string; dynamicOptionId: string; calendarId: string; enableDefaultOptions: boolean; selectedDates: DateRange | null; dateFormat: string; isShowStaticDefaultOptions: boolean; hideDefaultOptions: boolean; cdkConnectedOverlayOffsetX: number; cdkConnectedOverlayOffsetY: number; listCdkConnectedOverlayOffsetY: number; listCdkConnectedOverlayOffsetX: number; selectedOptionIndex: number; displaySelectedLabel: boolean; /** * When true, the main input shows the human-readable expressions * (e.g. `now-7d - now`) instead of the absolute date range. If * `displaySelectedLabel` is also true, the label takes priority. */ displaySelectedExpression: boolean; /** * When true, the custom-range footer shows two editable Material inputs * (start / end) that accept dates in `dateFormat`, ISO 8601 durations * (`p7d`), or date math (`now-7d`). When false, a read-only label is shown. */ enableEditableDates: boolean; cdkConnectedOverlayPush: boolean; cdkConnectedOverlayPositions: never[]; allowSingleDateSelection: boolean; /** * When true, automatically selects the preset option whose computed date range * matches the provided selectedDates (works with both default and custom options). * Falls back to "Custom Range" if no option matches. */ autoSelectOption: boolean; minDate: Date; maxDate: Date; dateSelectionChanged: _angular_core.OutputEmitterRef; dateListOptions: _angular_core.OutputEmitterRef; rangeRequiredChange: _angular_core.OutputEmitterRef; private cdref; private el; calendar?: AcpDateRangeCalendar; private _dateOptions; visibleOptions: _angular_core.Signal; /** * Reactive form backing the editable start/end inputs. Each control accepts * a `dateFormat` date, an ISO 8601 duration, or a date-math expression; the * group is invalid when either value is unparseable or start is after end. */ editableForm: FormGroup<{ start: FormControl; end: FormControl; }>; private editableExpr; set dateDropDownOptions(defaultDateList: IAcpSelectDateOption[]); get dateDropDownOptions(): IAcpSelectDateOption[]; ngOnInit(): void; ngAfterViewInit(): void; /** * Alterna la visibilidad de la lista de opciones de fecha predeterminada. * Si el panel de rango personalizado está abierto, lo cierra en su lugar. * Si el dropdown ya está abierto y se hace clic en el input, no lo cierra. * * @param event MouseEvent opcional que activa el alternador. */ toggleRangeSelection(event: MouseEvent): void; toggleDateOptionSelectionList(event?: MouseEvent): void; /** * Actualiza la selección de rango de fecha personalizado desde la entrada. * * @param input El elemento de entrada HTML asociado con el selector de fecha. * @param selectedDates El rango de fechas seleccionado. */ updateCustomRange(input: HTMLInputElement, selectedDates: DateRange | null): void; /** * Actualiza la selección cuando se hace clic en una opción de fecha específica. * * @param option La opción de fecha seleccionada. * @param input El elemento de entrada HTML a actualizar con fechas seleccionadas. */ updateSelection(option: IAcpSelectDateOption, input: HTMLInputElement): void; /** * Re-emite la señal de opciones después de un cambio de selección en el lugar para que * las vistas OnPush (vinculadas a `visibleOptions` calculado) reflejen de manera confiable * el nuevo estado `isSelected` - la misma notificación que proporciona el `set` de señal inicial. */ private syncOptionSelection; /** * Alterna la visibilidad de la vista de selección de rango de fecha personalizado. */ toggleCustomDateRangeView(): void; /** * Analiza un único valor de entrada editable, aceptando una fecha `dateFormat` * o uno de los formatos humanos (duración ISO 8601, matemática de fecha). * * @param value - La cadena de entrada sin procesar. * @returns La fecha analizada, o `null` si no se puede analizar. */ private parseInputValue; /** * Validador para un único control de fecha editable: válido cuando el valor se analiza * como una fecha. Los valores vacíos se dejan al validador `required`. */ private validateDateControl; /** * Validador de grupo que asegura que la fecha de inicio analizada no sea posterior a la fecha de fin. */ private validateRange; /** * Confirma las entradas editables en el calendario para que las vistas y la acción * Aplicar reflejen los valores escritos. No-op cuando la edición está deshabilitada o * el formulario es inválido. * * @param calendar - La instancia del componente de calendario desde la plantilla. */ commitEditableDates(calendar: AcpDateRangeCalendar): void; /** * Refleja una selección de calendario (clic de fecha) en las entradas editables como * fechas absolutas. Una selección de calendario es una selección absoluta explícita, por lo que * cualquier expresión recordada se borra y las entradas muestran fechas formateadas. * * @param range - El rango emitido por el calendario. */ onCalendarSelectionChange(range: DateRange): void; /** * Confirma las entradas editables y aplica el rango, cerrando el panel - * lo mismo que hacer clic en Aplicar. Se usa para la tecla Intro. No-op cuando la edición está * deshabilitada o el formulario es inválido, por lo que Intro nunca cierra con entrada incorrecta. * * @param input - El elemento de entrada de fecha principal a actualizar. * @param calendar - La instancia del componente de calendario desde la plantilla. */ applyEditableDates(input: HTMLInputElement, _calendar: AcpDateRangeCalendar): void; /** * Rellena previamente las entradas editables desde la selección actual: expresiones relativas * para una opción de diferencia de días (ej: `now-7d` .. `now`), de lo contrario las * fechas formateadas absolutas. */ private populateEditableForm; /** * Resuelve las expresiones legibles de inicio/fin para un rango. Prefiere la * expresión comprometida del usuario (cuando aún se resuelve a este rango), * luego la forma relativa de una opción de diferencia de días, y finalmente las * fechas formateadas absolutas. Compartido por las entradas editables y el evento emitido. * * @param start - Fecha de inicio del rango. * @param end - Fecha de fin del rango. * @param opt - La opción de fecha asociada, si la hay. * @returns Las cadenas de expresión de inicio y fin. */ private resolveDisplayExpr; /** * Checks whether a saved expression still resolves (to day precision) to the * given dates, so a stale expression is not reused after the range changed * by other means. */ private exprMatchesDates; /** * Clears the currently selected dates and resets all related properties. * * @param event The MouseEvent triggering the clear action. */ clearSelection(event: MouseEvent): void; /** * Clears the input field value for the date picker. */ private clearDateInput; /** * Updates selected dates based on a selected option and input element. * * @param option The selected date option. * @param input The HTML input element to update. */ private updateDateOnOptionSelect; /** * Calculates and updates the start and end dates based on the selected option. * * @param option The selected date option. * @param input The HTML input element to update. */ private updateDateWithSelectedOption; /** * Updates the date range and input display. * * @param input The HTML input element. * @param start Start date of the range. * @param end End date of the range. * @param opt Optional selected date option. */ private updateSelectedDates; /** * Updates the input and internal state with default dates on initialization. * When autoSelectOption is true and selectedDates is provided, attempts to * match against existing options before falling back to Custom Range. */ private updateDefaultDatesValues; /** * Maneja cambios manuales en el input principal de fecha. * Cuando el usuario escribe directamente, deselecciona todas las opciones * predefinidas y marca "Rango personalizado" como seleccionado. * * @param input El elemento de entrada HTML que cambió. */ onMainInputChange(input: HTMLInputElement): void; /** * Iterates over all non-custom options and returns the first one whose * computed date range matches the provided selectedDates (day-level comparison). * Works for both default options and consumer-provided options with callBackFunction. * * @param selectedDates The date range to match against * @returns The matching ISelectDateOption, or null if none found */ private findMatchingOption; /** * Updates the input and selected dates based on a selected option from the list. * * @param selectedOption The selected date option. * @param input The HTML input element to update. */ private updatedFromListValueSelection; /** * Checks whether default initialization of options is required. * * @returns True if default options need to be initialized, otherwise false. */ private isDefaultInitRequired; /** * Initializes the default date options with the selected index. */ private initDefaultOptions; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare const ACP_DEFAULT_DATE_OPTIONS: IAcpSelectDateOption[]; interface AcpCheckboxGroupOption { ariaDescribedby?: string; ariaLabel?: string; ariaLabelledby?: string; label?: any; value?: any; color?: string; checked?: boolean; disabled?: boolean; disableRipple?: boolean; indeterminate?: boolean; labelPosition?: 'before' | 'after'; id?: string; name?: string | null; required?: boolean; [k: string]: any; } declare class AcpCheckboxBase { label?: any | undefined; value?: any | undefined; constructor(label?: any | undefined, value?: any | undefined); } declare class AcpCheckboxGroup implements AfterViewInit, OnDestroy, ControlValueAccessor { private _changeDetectorRef; private _focusMonitor; private _elementRef; _checkboxes: QueryList; get trackBy(): TrackByFunction | undefined; set trackBy(fn: TrackByFunction | undefined); private _trackByFn?; get items(): any[]; set items(value: any[]); private _items; private _originalItems; private _itemsAreUsed; bindLabel: _angular_core.InputSignal; bindValue: _angular_core.InputSignal; showSelectAll: boolean; selectAllLabel: string; get compareWith(): ((o1: any, o2: any) => boolean) | undefined; set compareWith(fn: ((o1: any, o2: any) => boolean) | undefined); private _compareWith?; disabled: boolean; selectionChange: _angular_core.OutputEmitterRef<{ model: AcpCheckboxGroupOption[]; index: number; }>; selectAll: boolean; selectAllIndeterminate: boolean; selectedItems: AcpCheckboxGroupOption[]; _onChange: (value: AcpCheckboxGroupOption[]) => void; _onTouched: () => void; ngAfterViewInit(): void; private _setItemsFromContentCheckboxes; ngOnDestroy(): void; /** * Finds and selects and option based on its value. * @returns Option that has the corresponding value. */ private _selectValue; /** * Sets the model value. Implemented as part of ControlValueAccessor. * @param value New value to be written to the model. */ writeValue(value: any[]): void; /** * Registers a callback to be triggered when the model value changes. * Implemented as part of ControlValueAccessor. * @param fn Callback to be registered. */ registerOnChange(fn: (value: AcpCheckboxGroupOption[]) => Record): void; /** * Registers a callback to be triggered when the control is touched. * Implemented as part of ControlValueAccessor. * @param fn Callback to be registered. */ registerOnTouched(fn: () => Record): void; /** * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor. * @param isDisabled Whether the control should be disabled. */ setDisabledState(isDisabled: boolean): void; private _checkMasterCheckboxState; private _getSelectedItems; /** Handle normal checkbox toggle */ _updateNormalCheckboxState(e: MatCheckboxChange, index: number): void; /** Handle master checkbox toggle */ _updateMasterCheckboxState(e: MatCheckboxChange, index: number): void; _trackBy: (index: number, item: any) => any; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; static ngAcceptInputType_showSelectAll: unknown; static ngAcceptInputType_disabled: unknown; } /** * Card appearance variants */ type AcpCardAppearance = 'default' | 'outlined' | 'elevated' | 'filled' | 'interactive' | 'compact'; /** * Card elevation levels (Material Design) */ type AcpCardElevation = 0 | 1 | 2 | 3 | 4 | 5; /** * Card padding options */ type AcpCardPadding = 'none' | 'small' | 'medium' | 'large'; /** * Card background color variants (Material Design) */ type AcpCardBackgroundColor = 'primary' | 'primary-container' | 'secondary' | 'secondary-container' | 'error' | 'error-container' | 'surface' | 'surface-variant' | 'surface-container-highest' | 'surface-container-high' | 'surface-container' | 'surface-container-low' | 'surface-container-lowest' | 'inverse-surface' | 'disabled-bg'; /** * Card image aspect ratio */ type AcpCardImageRatio = '1:1' | '4:3' | '16:9' | '21:9' | '3:2' | '3:4'; /** * Card configuration interface */ interface AcpCardConfig { appearance?: AcpCardAppearance; elevation?: AcpCardElevation; rounded?: boolean | number; hover?: boolean; clickable?: boolean; outlined?: boolean; loading?: boolean; disabled?: boolean; padding?: AcpCardPadding; imageRatio?: AcpCardImageRatio; fullHeight?: boolean; fullWidth?: boolean; } /** * Card badge configuration */ interface AcpCardBadge { content: string | number; color?: 'primary' | 'secondary' | 'accent' | 'error' | 'success' | 'warning' | 'info'; position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; } /** * Pass Through options for card sections * Allows customization of classes, styles, and attributes for each section */ interface AcpCardPassThroughSection { class?: string | string[] | Record; style?: Record; [key: string]: any; } interface AcpCardPassThroughOptions { root?: AcpCardPassThroughSection | undefined; header?: AcpCardPassThroughSection | undefined; media?: AcpCardPassThroughSection | undefined; avatar?: AcpCardPassThroughSection | undefined; title?: AcpCardPassThroughSection | undefined; subtitle?: AcpCardPassThroughSection | undefined; content?: AcpCardPassThroughSection | undefined; actions?: AcpCardPassThroughSection | undefined; footer?: AcpCardPassThroughSection | undefined; } declare class AcpCard { readonly appearance: _angular_core.InputSignal; readonly elevation: _angular_core.InputSignal; readonly rounded: _angular_core.InputSignal; readonly hover: _angular_core.InputSignalWithTransform; readonly clickable: _angular_core.InputSignalWithTransform; readonly outlined: _angular_core.InputSignalWithTransform; readonly disabled: _angular_core.InputSignalWithTransform; readonly padding: _angular_core.InputSignal; readonly imageRatio: _angular_core.InputSignal; readonly fullHeight: _angular_core.InputSignalWithTransform; readonly fullWidth: _angular_core.InputSignalWithTransform; readonly backgroundColor: _angular_core.InputSignal; readonly passThrough: _angular_core.InputSignal; headerTemplate: TemplateRef; mediaTemplate: TemplateRef; avatarTemplate: TemplateRef; titleTemplate: TemplateRef; subtitleTemplate: TemplateRef; actionsTemplate: TemplateRef; footerTemplate: TemplateRef; get role(): string; get tabindex(): string | null; get ariaDisabled(): string | null; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } type AcpKpiCardColor = 'primary' | 'secondary' | 'success' | 'success-light' | 'warning' | 'warning-light' | 'error' | 'error-light' | 'info' | 'info-light' | 'neutral' | 'white' | 'custom'; type AcpKpiCardVariant = 'default' | 'elevated' | 'outlined' | 'filled' | 'tonal'; type AcpKpiCardSize = 'xs' | 'sm' | 'md' | 'lg'; type AcpKpiCardTrend = 'up' | 'down' | 'neutral' | 'none'; interface AcpKpiCardTrendConfig { icon: string; color: AcpKpiCardColor; ariaLabel: string; } interface AcpKpiCardLayout { title: boolean; subtitle: boolean; value: boolean; description: boolean; trend: boolean; percentage: boolean; icon: boolean; avatar: boolean; actions: boolean; footer: boolean; progress: boolean; } declare class AcpKpiCard { title: _angular_core.InputSignal; subtitle: _angular_core.InputSignal; value: _angular_core.InputSignal; description: _angular_core.InputSignal; footer: _angular_core.InputSignal; variant: _angular_core.InputSignal; color: _angular_core.InputSignal; size: _angular_core.InputSignal; icon: _angular_core.InputSignal; svgIcon: _angular_core.InputSignal; avatar: _angular_core.InputSignal; avatarInitials: _angular_core.InputSignal; trend: _angular_core.InputSignal; percentage: _angular_core.InputSignal; percentageFormat: _angular_core.InputSignal<"number" | "percent">; progress: _angular_core.InputSignal; progressColor: _angular_core.InputSignal; loading: _angular_core.InputSignalWithTransform; disabled: _angular_core.InputSignalWithTransform; clickable: _angular_core.InputSignalWithTransform; selected: _angular_core.InputSignalWithTransform; routerLink: _angular_core.InputSignal; href: _angular_core.InputSignal; ariaLabel: _angular_core.InputSignal; tooltip: _angular_core.InputSignal; clicked: _angular_core.OutputEmitterRef; actionClicked: _angular_core.OutputEmitterRef; isHovered: _angular_core.WritableSignal; iconTemplate: _angular_core.Signal | undefined>; avatarTemplate: _angular_core.Signal | undefined>; footerTemplate: _angular_core.Signal | undefined>; actionsTemplate: _angular_core.Signal | undefined>; isTrending: _angular_core.Signal; trendConfig: _angular_core.Signal<_acontplus_ng_components.AcpKpiCardTrendConfig>; effectiveIcon: _angular_core.Signal; trendColor: _angular_core.Signal; hasHeader: _angular_core.Signal; hasFooter: _angular_core.Signal; hasActions: _angular_core.Signal; hostClasses: _angular_core.Signal; onCardClick(): void; onActionClick(action: string, event: Event): void; onMouseEnter(): void; onMouseLeave(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare const KPI_CARD_TREND_CONFIGS: Record; declare function formatValue(value: number | string, format?: string): string; declare const KPI_CARD_TOKENS: { SIZE_SM: string; SIZE_MD: string; SIZE_LG: string; VARIANT_DEFAULT: string; VARIANT_ELEVATED: string; VARIANT_OUTLINED: string; VARIANT_FILLED: string; VARIANT_TONAL: string; COLOR_PRIMARY: string; COLOR_SECONDARY: string; COLOR_SUCCESS: string; COLOR_SUCCESS_LIGHT: string; COLOR_WARNING: string; COLOR_WARNING_LIGHT: string; COLOR_ERROR: string; COLOR_ERROR_LIGHT: string; COLOR_INFO: string; COLOR_INFO_LIGHT: string; COLOR_NEUTRAL: string; COLOR_CUSTOM: string; TREND_UP: string; TREND_DOWN: string; TREND_NEUTRAL: string; TREND_NONE: string; }; declare class Branding { readonly logo: _angular_core.InputSignal; readonly name: _angular_core.InputSignal; readonly showName: _angular_core.InputSignal; readonly link: _angular_core.InputSignal; readonly brandingClick: _angular_core.OutputEmitterRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpHeader Component * * Enterprise-grade header component following compound components pattern. * This is a layout-only component that provides structure for header regions. * * @example * ```html * * * * * * * Center content * * * * * * * ``` */ declare class AcpHeader { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpHeaderStart Component * * Left region of the header. Typically contains navigation toggle, * back button, or other primary actions. * * @example * ```html * * * * ``` */ declare class AcpHeaderStart { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpHeaderBranding Component * * Branding region of the header. Renders logo and/or app name. * * @example * ```html * * ``` */ declare class AcpHeaderBranding { /** * URL or path to the logo image. */ readonly logo: _angular_core.InputSignal; /** * Brand name to display. */ readonly name: _angular_core.InputSignal; /** * Whether to show the brand name. * @default true */ readonly showName: _angular_core.InputSignal; /** * URL to navigate to when branding is clicked. * @default '/' */ readonly link: _angular_core.InputSignal; /** * Event emitted when branding is selected. */ readonly selected: _angular_core.OutputEmitterRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpHeaderCenter Component * * Center region of the header. Typically contains breadcrumb, * workspace selector, or page title. * * @example * ```html * * * * ``` */ declare class AcpHeaderCenter { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpHeaderEnd Component * * Right region of the header. Typically contains search, notifications, * user menu, theme switcher, and other secondary actions. * * @example * ```html * * * * * * ``` */ declare class AcpHeaderEnd { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpHeader Component Types * * Type definitions for the AcpHeader component following SOLID principles * and Clean Architecture for enterprise-grade component libraries. */ /** * Main configuration object for the AcpHeader component. * All configuration is centralized in this single interface to follow * Interface Segregation Principle and keep the API small and scalable. */ interface AcpHeaderConfig { /** * Array of actions to display in the header. * Actions are rendered in their specified position (left or right). */ actions?: AcpHeaderAction[]; /** * Branding configuration for the header. * If not provided, no branding is displayed. */ branding?: AcpHeaderBrandingConfig; /** * User menu configuration. * If not provided, no user menu is displayed. */ userMenu?: AcpHeaderUserMenuConfig; /** * Whether to show elevation/shadow on the header. * @default false */ elevation?: boolean; /** * Whether the header should stick to the top of the viewport. * @default false */ sticky?: boolean; /** * Theme variant for the header. * @default 'auto' */ theme?: 'light' | 'dark' | 'auto'; } /** * Represents an action button in the header. * Actions can be placed in the left or right region of the header. */ interface AcpHeaderAction { /** * Unique identifier for the action. * Used in event emissions to identify which action was clicked. */ id: string; /** * Material Design icon name to display. * If not provided, the label is used instead. */ icon?: string; /** * Text label for the action. * Used when icon is not provided or for accessibility. */ label?: string; /** * Tooltip text to display on hover. */ tooltip?: string; /** * Position where the action should be rendered. * @default 'right' */ position?: 'left' | 'right'; /** * Whether the action is disabled. * @default false */ disabled?: boolean; /** * Whether the action is visible. * @default true */ visible?: boolean; /** * Optional badge to display on the action button. * Can be a number (for notification count) or a string. */ badge?: number | string; click?: ($event?: MouseEvent, action?: AcpHeaderAction) => void; } /** * Configuration for the branding section of the header. */ interface AcpHeaderBrandingConfig { /** * URL or path to the logo image. */ logo?: string; /** * Brand name to display. */ name?: string; /** * Whether to show the brand name. * @default true */ showName?: boolean; /** * URL to navigate to when branding is clicked. * @default '/' */ link?: string; } /** * Configuration for the user menu section of the header. */ interface AcpHeaderUserMenuConfig { /** * URL or path to the user avatar image. */ avatar?: string; /** * User's display name. */ name?: string; /** * User's email address. */ email?: string; /** * Menu items to display in the user menu dropdown. */ items?: AcpHeaderUserMenuItem[]; } /** * Represents a single item in the user menu. */ interface AcpHeaderUserMenuItem { /** * Unique identifier for the menu item. */ id: string; /** * Display label for the menu item. */ label: string; /** * Material Design icon name to display. */ icon?: string; /** * Whether the menu item is disabled. * @default false */ disabled?: boolean; /** * Whether to display a divider below this item. * @default false */ divider?: boolean; /** * Callback function to execute when the item is clicked. * If provided, the item click event is not emitted. */ action?: () => void; } /** * Event payload emitted when a header action is clicked. */ interface AcpHeaderActionEvent { /** * The ID of the action that was clicked. */ actionId: string; /** * The event name associated with the action. */ event: string; /** * Optional data associated with the action. */ data?: any; } /** * Event payload emitted when a user menu item is clicked. */ interface AcpHeaderUserMenuItemEvent { /** * The ID of the menu item that was clicked. */ itemId: string; /** * The menu item that was clicked. */ item: AcpHeaderUserMenuItem; } /** * AcpHeaderActions Component * * Helper component for rendering action buttons. * * @example * ```html * * ``` */ declare class AcpHeaderActions { /** * Array of actions to display. Can be a signal or a plain array. */ readonly actions: _angular_core.InputSignal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Notification item interface */ interface AcpNotificationItem { id: string; title: string; message?: string; timestamp?: Date; read?: boolean; icon?: string; } /** * AcpHeaderNotifications Component * * Notification center for the header with badge and dropdown menu. * * @example * ```html * * ``` */ declare class AcpHeaderNotifications { /** * Array of notification items. */ readonly notifications: _angular_core.InputSignal; /** * Number of unread notifications. */ readonly unreadCount: _angular_core.InputSignal; /** * Event emitted when a notification is clicked. */ readonly notificationClick: _angular_core.OutputEmitterRef; handleNotificationClick(notification: AcpNotificationItem): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Workspace item interface */ interface AcpWorkspaceItem { id: string; name: string; icon?: string; active?: boolean; } /** * AcpHeaderWorkspace Component * * Workspace selector for the header. * * @example * ```html * * ``` */ declare class AcpHeaderWorkspace { /** * Array of available workspaces. */ readonly workspaces: _angular_core.InputSignal; /** * Currently selected workspace. */ readonly currentWorkspace: _angular_core.InputSignal; /** * Event emitted when workspace is changed. */ readonly workspaceChange: _angular_core.OutputEmitterRef; handleWorkspaceChange(workspace: AcpWorkspaceItem): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Language item interface */ interface AcpLanguageItem { code: string; name: string; flag?: string; active?: boolean; } /** * AcpHeaderLanguage Component * * Language selector for the header. * * @example * ```html * * ``` */ declare class AcpHeaderLanguage { /** * Array of available languages. */ readonly languages: _angular_core.InputSignal; /** * Currently selected language. */ readonly currentLanguage: _angular_core.InputSignal; /** * Event emitted when language is changed. */ readonly languageChange: _angular_core.OutputEmitterRef; handleLanguageChange(language: AcpLanguageItem): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Theme variant */ type AcpThemeVariant = 'light' | 'dark' | 'auto'; /** * AcpHeaderTheme Component * * Theme switcher for the header. * * @example * ```html * * ``` */ declare class AcpHeaderTheme { /** * Currently selected theme. */ readonly currentTheme: _angular_core.InputSignal; /** * Event emitted when theme is changed. */ readonly themeChange: _angular_core.OutputEmitterRef; private readonly themeCycle; getThemeIcon: _angular_core.Signal<"light_mode" | "dark_mode" | "contrast">; toggleTheme(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * A theme toggle button component that allows users to switch between * light and dark modes. Follows WAI-ARIA best practices for toggle buttons. */ declare class ThemeToggle { private readonly themeSwitcher; /** Icon to display when in dark mode (clicking will switch to light) */ readonly lightModeIcon: _angular_core.InputSignal; /** Icon to display when in light mode (clicking will switch to dark) */ readonly darkModeIcon: _angular_core.InputSignal; /** Accessible label for when in dark mode */ readonly lightModeLabel: _angular_core.InputSignal; /** Accessible label for when in light mode */ readonly darkModeLabel: _angular_core.InputSignal; /** Test ID for automated testing */ readonly testId: _angular_core.InputSignal; /** Current dark mode state as a signal */ protected readonly isDarkMode: _angular_core.Signal; /** Computed icon based on current theme */ protected readonly currentIcon: _angular_core.Signal; /** Computed accessible label based on current theme */ protected readonly currentLabel: _angular_core.Signal; /** Toggle between dark and light mode */ toggleDarkMode(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Represents a single item in the user menu. */ interface UserMenuItem { /** * Unique identifier for the menu item. */ id: string; /** * Display label for the menu item. */ label: string; /** * Material Design icon name. */ icon: string; /** * Optional badge number (e.g., notification count). */ badge?: number; /** * Optional router link for navigation. */ routerLink?: string; /** * Whether this item represents a dangerous action (e.g., logout). * Affects styling (red color). */ danger?: boolean; /** * Optional click handler for custom actions. */ click?: (event: MouseEvent, item: UserMenuItem) => void; } /** * User profile information displayed in the menu header. */ interface UserProfile { /** * User's full name. */ name: string; /** * User's email address. */ email: string; /** * URL to user's avatar image. */ avatar: string; /** * User's plan/subscription tier (e.g., 'Pro', 'Free'). */ plan?: string; } /** * Event emitted when a menu item is selected. */ interface UserMenuSelectedEvent { /** * The selected menu item. */ item: UserMenuItem; } declare class UserMenu { /** * User profile information to display in the menu header. */ readonly user: _angular_core.InputSignal; /** * Menu items to display. */ readonly items: _angular_core.InputSignal; imageUrl: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class UserPanel { readonly avatar: _angular_core.InputSignal; readonly name: _angular_core.InputSignal; readonly email: _angular_core.InputSignal; readonly profileLink: _angular_core.InputSignal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface MenuTag { color: string; value: string; } interface MenuPermissions { only?: string | string[]; except?: string | string[]; } interface MenuItem { route: string; name: string; type: 'link' | 'sub' | 'extLink' | 'extTabLink'; icon?: string; label?: MenuTag; badge?: MenuTag; children?: MenuItem[]; permissions?: MenuPermissions; } declare class NavAccordionItemDirective implements OnInit, OnDestroy { private readonly nav; readonly route: _angular_core.InputSignal; expanded: _angular_core.WritableSignal; ngOnInit(): void; ngOnDestroy(): void; toggle(): void; setExpanded(value: boolean): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class NavAccordionDirective { private readonly router; private navItems; constructor(); addItem(item: NavAccordionItemDirective): void; removeItem(item: NavAccordionItemDirective): void; closeOtherItems(openedItem: NavAccordionItemDirective): void; checkOpenedItems(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class NavAccordionToggleDirective { private readonly navItem; onClick(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class SidemenuComponent { readonly menuItems: _angular_core.InputSignal; buildRoute(routeArr: string[]): string; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpSidebar Component * * Enterprise-grade sidebar component following compound components pattern. * This is a layout-only component that provides structure for sidebar regions. * * @example * ```html * * * * * * * * * * * * * * * * * ``` */ declare class AcpSidebar { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpSidebarHeader Component * * Top region of the sidebar. Typically contains branding, toggle button, * and close button for mobile. * * @example * ```html * * * * * * * ``` */ declare class AcpSidebarHeader { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class AcpSidebarBranding { readonly showName: _angular_core.InputSignal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class AcpSidebarUserPanel { /** * User avatar URL. * @default '' */ readonly avatar: _angular_core.InputSignal; /** * User name. * @default '' */ readonly name: _angular_core.InputSignal; /** * User email. * @default '' */ readonly email: _angular_core.InputSignal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * AcpSidebarContent Component * * Main content region of the sidebar. Typically contains the sidemenu * with navigation items. * * @example * ```html * * * * ``` */ declare class AcpSidebarContent { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class AcpSidebarToggle { readonly showToggle: _angular_core.InputSignal; readonly toggleChecked: _angular_core.InputSignal; readonly toggleCollapsed: _angular_core.OutputEmitterRef; readonly closeSidenav: _angular_core.OutputEmitterRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * `acpShellHeader` — replaces the entire header region. * * @example * ```html * * * * * * ``` */ declare class AcpShellSlotHeader { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * `acpShellSidebar` — replaces the entire sidebar region. * * @example * ```html * * * * * * ``` */ declare class AcpShellSlotSidebar { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * `acpShellSidebarFooter` — projects content at the bottom of the sidebar * without replacing the whole sidebar (e.g. version badge, help link). * * @example * ```html * * * * * * ``` */ declare class AcpShellSlotSidebarFooter { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * `acpShellToolbar` — projects extra content into the header toolbar * alongside the default actions (e.g. breadcrumb, search bar). * * @example * ```html * * * * * * ``` */ declare class AcpShellSlotToolbar { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * `acpShellTopmenu` — projects horizontal top navigation into the page content. * * @example * ```html * * * * * * ``` */ declare class AcpShellSlotTopmenu { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * Navigation position of the sidenav. * - `side`: sidebar always visible alongside content * - `top`: navigation rendered in a top menu bar instead */ type AcpNavPos = 'side' | 'top'; /** * Position of the header relative to the sidenav container. * - `above`: header spans full width above the sidenav container * - `fixed`: header is sticky inside the content area * - `below`: header scrolls with content */ type AcpHeaderPos = 'above' | 'fixed' | 'below' | 'static'; /** * Layout direction (RTL/LTR support). */ type AcpDir = 'ltr' | 'rtl'; /** * AcpShellLayout * * Pure structural shell — provides the layout skeleton (header region, * sidenav, content area) with named ng-content slots so the host app * can project any component into any region without modifying the shell. * * ## Slot directives * - `acpShellHeader` — replaces the entire header bar * - `acpShellSidebar` — replaces the entire sidebar body * - `acpShellSidebarFooter` — appended at the bottom of the sidebar * - `acpShellToolbar` — injected inside the header center region * * ## Default content slot * Plain children (e.g. ``) are projected into the * main page-content area. * * @example * ```html * * * * * * * * * * * * * * * * * * * * ``` */ declare class AcpShellLayout { /** Reference to the primary MatSidenav — exposed so the app can toggle it. */ readonly sidenav: _angular_core.Signal; /** Reference to the MatSidenavContent — exposed for scroll control. */ readonly content: _angular_core.Signal; /** Custom header projected by the app. Falls back to empty when absent. */ readonly headerSlot: _angular_core.Signal; /** Custom sidebar body projected by the app. Falls back to empty when absent. */ readonly sidebarSlot: _angular_core.Signal; /** Optional footer appended inside the sidebar. */ readonly sidebarFooterSlot: _angular_core.Signal; /** Optional toolbar content injected into the header center. */ readonly toolbarSlot: _angular_core.Signal; /** Optional top navigation projected above the main page content. */ readonly topmenuSlot: _angular_core.Signal; /** Optional secondary sidenav (e.g. notifications panel, position end). */ /** Navigation position. @default 'side' */ readonly navPos: _angular_core.InputSignal; /** Header position relative to the sidenav. @default 'fixed' */ readonly headerPos: _angular_core.InputSignal; /** Whether the sidenav is open. @default true */ readonly sidenavOpened: _angular_core.InputSignal; /** Whether the sidenav is in collapsed/narrow mode. @default false */ readonly sidenavCollapsed: _angular_core.InputSignal; /** Whether the viewport is in mobile mode (switches sidenav to "over"). @default false */ readonly isMobile: _angular_core.InputSignal; /** Layout direction for RTL support. @default 'ltr' */ readonly dir: _angular_core.InputSignal; /** Emitted when the sidenav opened/closed state changes internally. */ readonly sidenavOpenedChange: _angular_core.OutputEmitterRef; /** 'over' on mobile so the sidebar floats above content. */ readonly sidenavMode: _angular_core.Signal<"side" | "over">; /** * Whether to render the header-above zone. * True when `headerPos === 'above'` — spans full width outside the sidenav container. */ readonly showHeaderAbove: _angular_core.Signal; /** * Whether to render the header inside the content area. * True for 'fixed' and 'below' positions. */ readonly showHeaderInContent: _angular_core.Signal; /** CSS modifier classes bound to the root container element. */ readonly containerClasses: _angular_core.Signal<{ 'acontplus-sidenav-collapsed': boolean; 'acontplus-navbar-side': boolean; 'acontplus-navbar-top': boolean; 'acontplus-header-above': boolean; 'acontplus-header-fixed': boolean; }>; /** Toggle the primary sidenav. Callable from parent via template ref. */ toggleSidenav(): void; /** Close the primary sidenav. */ closeSidenav(): void; /** Scroll the content area back to the top. */ scrollToTop(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface AcpTopmenuTag { color: string; value: string; } interface AcpTopmenuPermissions { only?: string | string[]; except?: string | string[]; } interface AcpTopmenuChildItem { route: string; name: string; type: 'link' | 'sub' | 'extLink' | 'extTabLink'; children?: AcpTopmenuChildItem[]; permissions?: AcpTopmenuPermissions; active?: WritableSignal; } interface AcpTopmenuItem { route: string; name: string; type: 'link' | 'sub' | 'extLink' | 'extTabLink'; icon: string; label?: AcpTopmenuTag; badge?: AcpTopmenuTag; children?: AcpTopmenuChildItem[]; permissions?: AcpTopmenuPermissions; active?: WritableSignal; } declare class AcpTopmenu { private readonly router; private readonly destroyRef; readonly items: _angular_core.InputSignal; readonly buildRoute: _angular_core.InputSignal<(routeArr: string[]) => string>; readonly routeChange: _angular_core.OutputEmitterRef<{ rla: RouterLinkActive; item: AcpTopmenuItem | AcpTopmenuChildItem; }>; constructor(); onRouteChange(rla: RouterLinkActive, menuItem: AcpTopmenuItem): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class AcpTopmenuPanel { private readonly router; private readonly destroyRef; readonly menuPanel: _angular_core.Signal; readonly items: _angular_core.InputSignal; readonly parentRoute: _angular_core.InputSignal; readonly level: _angular_core.InputSignal; readonly buildRoute: _angular_core.InputSignal<(routeArr: string[]) => string>; readonly routeChange: _angular_core.OutputEmitterRef<{ rla: RouterLinkActive; item: AcpTopmenuChildItem; }>; constructor(); onRouterLinkClick(rla: RouterLinkActive): void; onRouteChange(rla: RouterLinkActive, menuItem: AcpTopmenuChildItem): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class ToUpperCase implements ControlValueAccessor { private readonly el; private readonly renderer; onInput(): void; onChange: (_value: string) => void; onTouched: () => void; writeValue(value: string): void; registerOnChange(fn: (value: string) => void): void; registerOnTouched(fn: () => void): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } interface PaginationOptions { hidePageSize?: boolean; showPageSizeOptions?: boolean; showFirstLastButtons?: boolean; disabled?: boolean; } declare class Pagination { totalRecords: number; pageSize: number; pageIndex: number; pageSizeOptions: number[]; hidePageSize: boolean; showPageSizeOptions: boolean; showFirstLastButtons: boolean; disabled: boolean; /** * @param pageIndex Current page index (0-based for MatPaginator compatibility) * @param pageSize Number of records per page * @param totalRecords Total number of records * @param pageSizeOptions Available page size options * @param options Display and behavior options */ constructor(pageIndex?: number, // MatPaginator starts at 0 pageSize?: number, totalRecords?: number, pageSizeOptions?: number[], options?: PaginationOptions); /** * Calculates the total number of pages. */ getTotalPages(): number; /** * Handles page event similar to Angular Material example. * @param event MatPaginator PageEvent */ handlePageEvent(event: PageEvent): void; } declare class GetTotalPipe implements PipeTransform { transform(colName: string, dataSource: any[]): any; /** * Calculate and return the total (sum) of all the column --> the column must be number */ getTotal(colName: string, dataSource: any[]): number; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵpipe: _angular_core.ɵɵPipeDeclaration; } type StatusGender = 'male' | 'female' | 'neutral'; interface StatusOptions { gender?: StatusGender; showIcon?: boolean; customActiveText?: string; customInactiveText?: string; textClass?: string; iconClass?: string; } declare class StatusDisplayPipe implements PipeTransform { private readonly sanitizer; private readonly transloco; transform(isActive: boolean, options?: StatusOptions): SafeHtml; private getStatusText; private getTranslationKey; private getFallbackText; private sanitizeClassName; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵpipe: _angular_core.ɵɵPipeDeclaration; } export { ACP_ACTIVE_DATE_DEBOUNCE, ACP_BADGE_COLORS, ACP_BADGE_SHAPES, ACP_BADGE_SIZES, ACP_BADGE_VARIANTS, ACP_DATE_OPTION_TYPE, ACP_DEFAULT_DATE_OPTIONS, ACP_DIALOG_ACTIONS, ACP_DIALOG_DATA, ACP_DIALOG_DEFAULT_OPTIONS, ACP_DIALOG_TITLEBAR, ACP_DRAWER_DATA, ACP_DRAWER_DEFAULT_OPTIONS, ACP_POPOVER_CONTENT, ACP_POPOVER_DEFAULT_OPTIONS, ACP_POPOVER_SCROLL_STRATEGY, AcpAlert, AcpBadge, AcpButton, AcpCard, AcpCheckboxBase, AcpCheckboxGroup, AcpContextMenu, AcpContextMenuDirective, AcpContextMenuPanel, AcpContextMenuService, AcpDateRangeInput, AcpDialog, AcpDialogActions, AcpDialogContainer, AcpDialogContent, AcpDialogRef, AcpDialogService, AcpDialogTitlebar, AcpDrawer, AcpDrawerConfig, AcpDrawerContainer, AcpDrawerRef, AcpHeader, AcpHeaderActions, AcpHeaderBranding, AcpHeaderCenter, AcpHeaderEnd, AcpHeaderLanguage, AcpHeaderNotifications, AcpHeaderStart, AcpHeaderTheme, AcpHeaderWorkspace, AcpKpiCard, AcpPopover, AcpPopoverContent, AcpPopoverTarget, AcpPopoverTrigger, AcpSelectDateOption, AcpShellLayout, AcpShellSlotHeader, AcpShellSlotSidebar, AcpShellSlotSidebarFooter, AcpShellSlotToolbar, AcpShellSlotTopmenu, AcpSidebar, AcpSidebarBranding, AcpSidebarContent, AcpSidebarHeader, AcpSidebarToggle, AcpSidebarUserPanel, AcpTopmenu, AcpTopmenuPanel, AdvancedDialogService, Branding, Button, CONTEXT_MENU_DATA, CONTEXT_MENU_ITEMS, DATA_GRID_DEFAULT_OPTIONS, DataGrid, DateRangePicker, DialogWrapper, DialogZIndexService, DynamicCard, DynamicSelect, GetTotalPipe, IconRegistryService, InputChip, KPI_CARD_TOKENS, KPI_CARD_TREND_CONFIGS, KeyboardNavigationService, NavAccordionDirective, NavAccordionItemDirective, NavAccordionToggleDirective, OverlayService, Pagination, SidemenuComponent, Spinner, StatusDisplayPipe, SvgIcon, TREND_CONFIGS, TabulatorTable, ThemeSwitcher, ThemeToggle, ToUpperCase, UserIcon, UserMenu, UserPanel, _AcpPopoverContentBase, formatValue, provideAcpDialogDefaults }; export type { AcpAlertType, AcpBadgeColor, AcpBadgeShape, AcpBadgeSize, AcpBadgeTrend, AcpBadgeTrendConfig, AcpBadgeVariant, AcpButtonAppearance$1 as AcpButtonAppearance, AcpButtonColor$1 as AcpButtonColor, AcpButtonSize, AcpButtonType$1 as AcpButtonType, AcpButtonVariant$1 as AcpButtonVariant, AcpCardAppearance, AcpCardBackgroundColor, AcpCardBadge, AcpCardConfig, AcpCardElevation, AcpCardImageRatio, AcpCardPadding, AcpCardPassThroughOptions, AcpCardPassThroughSection, AcpCheckboxGroupOption, AcpContextMenuItem, AcpContextMenuItemContext, AcpContextMenuOpenConfig, AcpContextMenuPosition, AcpContextMenuRef, AcpContextMenuTriggerConfig, AcpDialogAction, AcpDialogActionClick, AcpDialogActionState, AcpDialogActionsOutlet, AcpDialogCloseConfig, AcpDialogComponentLoader, AcpDialogConfig, AcpDialogContainerData, AcpDialogContentFunction, AcpDialogContentInput, AcpDialogDirection, AcpDialogHeaderConfig, AcpDialogResolvedContent, AcpDialogRestoreFocus, AcpDialogSize, AcpDialogTitlebarOutlet, AcpDir, AcpHeaderAction, AcpHeaderActionEvent, AcpHeaderBrandingConfig, AcpHeaderConfig, AcpHeaderPos, AcpHeaderUserMenuConfig, AcpHeaderUserMenuItem, AcpHeaderUserMenuItemEvent, AcpKpiCardColor, AcpKpiCardLayout, AcpKpiCardSize, AcpKpiCardTrend, AcpKpiCardTrendConfig, AcpKpiCardVariant, AcpLanguageItem, AcpNavPos, AcpNotificationItem, AcpPopoverDefaultOptions, AcpPopoverPanel, AcpPopoverPosition, AcpPopoverPositionEnd, AcpPopoverPositionStart, AcpPopoverTriggerEvent, AcpSelectedDateEvent, AcpThemeVariant, AcpTopmenuChildItem, AcpTopmenuItem, AcpTopmenuPermissions, AcpTopmenuTag, AcpWorkspaceItem, AutoFocusTarget, DataGridButtonType, DataGridCellTemplate, DataGridColumn, DataGridColumnButton, DataGridColumnButtonBadge, DataGridColumnButtonPop, DataGridColumnButtonTooltip, DataGridColumnPinOption, DataGridColumnPinValue, DataGridColumnTag, DataGridColumnTagValue, DataGridColumnType, DataGridColumnTypeParameter, DataGridDefaultOptions, DataGridMenuItem, DataGridRowClassFormatter, DataGridRowSelectionFormatter, DataGridSortProp, DateRangePickerOptions, DateRangeValue, DialogSize, DialogType, DialogWrapperConfig, DrawerPosition, FocusableElement, IAcpSelectDateOption, IconRegistryConfig, MatCustomDialogConfig, MenuItem, MenuPermissions, MenuTag, PaginationOptions, PopoverCloseReason, TabulatorColumn, TabulatorConfig, TabulatorEventHandlers, TabulatorTheme, UserMenuItem, UserMenuSelectedEvent, UserProfile };