carbon-components-angular
Version:
Next generation components
124 lines (120 loc) • 4.56 kB
TypeScript
/**
*
* carbon-angular v0.0.0 | dialog.component.d.ts
*
* Copyright 2014, 2025 IBM
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { EventEmitter, ElementRef, OnInit, AfterViewInit, OnDestroy } from "@angular/core";
import { Subscription } from "rxjs";
import { AbsolutePosition, Positions } from "@carbon/utils-position";
import { CloseMeta, DialogConfig } from "./dialog-config.interface";
import { AnimationFrameService, ElementService } from "carbon-components-angular/utils";
import * as i0 from "@angular/core";
/**
* Implements a `Dialog` that can be positioned anywhere on the page.
* Used to implement a popover or tooltip.
*/
export declare class Dialog implements OnInit, AfterViewInit, OnDestroy {
protected elementRef: ElementRef;
protected elementService: ElementService;
protected animationFrameService: AnimationFrameService;
/**
* Emits event that handles the closing of a `Dialog` object.
*/
close: EventEmitter<CloseMeta>;
/**
* Receives `DialogConfig` interface object with properties of `Dialog`
* explicitly defined.
*/
dialogConfig: DialogConfig;
/**
* Maintains a reference to the view DOM element of the `Dialog`.
*/
dialog: ElementRef;
/**
* Stores the data received from `dialogConfig`.
*/
data: {};
/**
* The placement of the `Dialog` is received from the `Position` service.
*/
placement: string;
protected visibilitySubscription: Subscription;
protected animationFrameSubscription: Subscription;
/**
* Handles offsetting the `Dialog` item based on the defined position
* to not obscure the content beneath.
*/
protected addGap: {
left: (pos: any) => AbsolutePosition;
right: (pos: any) => AbsolutePosition;
top: (pos: any) => AbsolutePosition;
bottom: (pos: any) => AbsolutePosition;
"left-bottom": (pos: any) => AbsolutePosition;
"right-bottom": (pos: any) => AbsolutePosition;
};
/**
* Extra placements. Child classes can add to this for use in `placeDialog`.
*/
protected placements: Positions;
/**
* Creates an instance of `Dialog`.
* @param elementRef
* @param elementService
*/
constructor(elementRef: ElementRef, elementService: ElementService, animationFrameService?: AnimationFrameService);
/**
* Initialize the `Dialog`, set the placement and gap, and add a `Subscription` to resize events.
*/
ngOnInit(): void;
/**
* After the DOM is ready, focus is set and dialog is placed
* in respect to the parent element.
*/
ngAfterViewInit(): void;
/**
* Empty method to be overridden by consuming classes to run any additional initialization code.
*/
onDialogInit(): void;
/**
* Empty method to be overridden by consuming classes to run any additional initialization code after the view is available.
* NOTE: this does _not_ guarantee the dialog will be positioned, simply that it will exist in the DOM
*/
afterDialogViewInit(): void;
/**
* Uses the position service to position the `Dialog` in screen space
*/
placeDialog(): void;
/**
* Sets up a KeyboardEvent to close `Dialog` with Escape key.
* @param event
*/
escapeClose(event: KeyboardEvent): void;
/**
* Sets up a event Listener to close `Dialog` if click event occurs outside
* `Dialog` object.
* @param event
*/
clickClose(event: any): void;
/**
* Closes `Dialog` object by emitting the close event upwards to parents.
*/
doClose(meta?: CloseMeta): void;
/**
* At destruction of component, `Dialog` unsubscribes from all the subscriptions.
*/
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<Dialog, [null, null, { optional: true; }]>;
static ɵcmp: i0.ɵɵComponentDeclaration<Dialog, "cds-dialog, ibm-dialog", never, { "dialogConfig": "dialogConfig"; }, { "close": "close"; }, never, never, false>;
}