import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core'; import { TsWindowService } from '@terminus/ngx-tools/browser'; import { TsStyleThemeTypes } from '@terminus/ui/utilities'; /** * Define the allowed {@link TsButtonComponent} action types */ export declare type TsButtonActionTypes = 'Button' | 'Submit' | 'Menu' | 'Reset'; /** * Define the allowed {@link TsButtonComponent} action types */ export declare type TsButtonFunctionTypes = 'button' | 'search' | 'submit'; /** * Define the allowed {@link TsButtonComponent} format types */ export declare type TsButtonFormatTypes = 'filled' | 'hollow' | 'collapsable' | 'collapsible'; /** * @internal */ export declare const tsButtonFormatTypesArray: string[]; /** * A presentational component to render a button * * #### QA CSS CLASSES * - `qa-button`: Placed on the button element used for this component * * @example * Click Me! * * https://getterminus.github.io/ui-demos-release/components/button */ export declare class TsButtonComponent implements OnInit, OnDestroy { private changeDetectorRef; private windowService; private renderer; /** * Store a reference to the timeout needed for collapsible buttons */ private collapseTimeoutId; /** * Define the delay before the rounded button automatically collapses */ collapseDelay: number | undefined; /** * The flag that defines if the button is collapsed or expanded */ isCollapsed: boolean; /** * A flag to determine if click events should be intercepted. * * Set by {@link TsConfirmationDirective} */ interceptClick: boolean; /** * Store the original event from a click (used when `interceptClick` is true) * * @internal * * Used by {@link TsConfirmationDirective} */ originalClickEvent: MouseEvent; /** * Define the default component ID */ readonly uid: string; /** * Getter returning a boolean based on both the component `isDisabled` flag and the FormControl's disabled status */ get shouldBeDisabled(): boolean; /** * Provide access to the inner button element */ button: ElementRef; /** * Define the action for the aria-label. {@link TsButtonActionTypes} */ actionName: TsButtonActionTypes; /** * Define the button type. {@link TsButtonFunctionTypes} */ buttonType: TsButtonFunctionTypes; /** * Define the collapsed value and trigger the delay if needed * * @param value */ set collapsed(value: boolean); /** * Define the button format. {@link TsButtonFormatTypes} * * @param value */ set format(value: TsButtonFormatTypes); get format(): TsButtonFormatTypes; private _format; /** * Define a Material icon to include */ iconName: string | undefined; /** * Define if the button is disabled */ isDisabled: boolean; /** * Define an ID for the component * * @param value */ set id(value: string); get id(): string; protected _id: string; /** * Define if the progress indicator should show */ showProgress: boolean; /** * Define the tabindex for the button */ tabIndex: number; /** * Define the theme * * @param value */ set theme(value: TsStyleThemeTypes); get theme(): TsStyleThemeTypes; private _theme; /** * Pass the click event through to the parent */ readonly clicked: EventEmitter; constructor(changeDetectorRef: ChangeDetectorRef, windowService: TsWindowService, renderer: Renderer2); /** * Collapse after delay (if set) */ ngOnInit(): void; /** * Clear any existing timeout */ ngOnDestroy(): void; /** * Handle button clicks * * @internal * * @param event - The MouseEvent */ clickedButton(event: MouseEvent): void; /** * Collapse the button after a delay * * NOTE: I'm not entirely sure why this `detectChanges` is needed. Supposedly zone.js should be patching setTimeout automatically. * * @param delay - The time to delay before collapsing the button * @returns The ID of the timeout */ private collapseWithDelay; /** * Update button classes (theme|format) * * @param classname - The classname to add to the button */ private updateClasses; }