angular-confirmation-popover
Version:
An angular 15.0+ bootstrap confirmation popover
165 lines (164 loc) • 5.78 kB
TypeScript
import { EventEmitter, ViewContainerRef, ComponentRef, OnDestroy, ElementRef, OnChanges, OnInit, Renderer2, TemplateRef, SimpleChanges } from '@angular/core';
import { ConfirmationPopoverWindowComponent } from './confirmation-popover-window.component';
import { ConfirmationPopoverOptions } from './confirmation-popover-options.provider';
import * as i0 from "@angular/core";
/**
* @internal
*/
export interface ConfirmCancelEvent {
clickEvent: MouseEvent;
}
/**
All properties can be set on the directive as attributes like so (use `ConfirmationPopoverModule.forRoot()` to configure them globally):
```html
<button
class="btn btn-outline-secondary"
mwlConfirmationPopover
[popoverTitle]="popoverTitle"
[popoverMessage]="popoverMessage"
placement="left"
(confirm)="confirmClicked = true"
(cancel)="cancelClicked = true"
[(isOpen)]="isOpen">
Show confirm popover!
</button>
```
*/
export declare class ConfirmationPopoverDirective implements OnDestroy, OnChanges, OnInit {
private viewContainerRef;
private elm;
private defaultOptions;
private renderer;
/**
* The title of the popover
*/
popoverTitle: string;
/**
* The body text of the popover.
*/
popoverMessage: string;
/**
* The text of the confirm button. Default `Confirm`
*/
confirmText: string;
/**
* The text of the cancel button. Default `Cancel`
*/
cancelText: string;
/**
* The placement of the popover. It can be either `top`, `right`, `bottom` or `left`. Default `top`
*/
placement: string;
/**
* The bootstrap button type of the confirm button. It can be any supported bootstrap color type
* e.g. `default`, `warning`, `danger` etc. Default `success`
*/
confirmButtonType: string;
/**
* The bootstrap button type of the cancel button. It can be any supported bootstrap color type
* e.g. `default`, `warning`, `danger` etc. Default `default`
*/
cancelButtonType: string;
/**
* Set to either `confirm` or `cancel` to focus the confirm or cancel button.
* If omitted, by default it will not focus either button.
*/
focusButton: string;
/**
* Whether to hide the confirm button. Default `false`.
*/
hideConfirmButton: boolean;
/**
* Whether to hide the cancel button. Default `false`.
*/
hideCancelButton: boolean;
/**
* Whether to disable showing the popover. Default `false`.
*/
isDisabled: boolean;
/**
* Will open or show the popover when changed.
* Can be sugared with `isOpenChange` to emulate 2-way binding like so `[(isOpen)]="isOpen"`
*/
isOpen: boolean;
/**
* A reference to a <ng-template> tag that if set will override the popovers template. Use like so:
* ```html
* <ng-template #customTemplate let-options="options">
* <div [class]="'popover ' + options.placement" style="display: block">
* My custom template
* </div>
* </ng-template>
* ```
*
* Then pass customTemplate to the mwlConfirmationPopover directive like so `[customTemplate]="customTemplate"`
*/
customTemplate: TemplateRef<any>;
/**
* Will emit when the popover is opened or closed
*/
isOpenChange: EventEmitter<boolean>;
/**
* An expression that is called when the confirm button is clicked.
*/
confirm: EventEmitter<ConfirmCancelEvent>;
/**
* An expression that is called when the cancel button is clicked.
*/
cancel: EventEmitter<ConfirmCancelEvent>;
/**
* A custom CSS class to be added to the popover
*/
popoverClass: string;
/**
* Append the element to the document body rather than the trigger element
*/
appendToBody: boolean;
/**
* Swap the order of the confirm and cancel buttons
*/
reverseButtonOrder: boolean;
/**
* Determines whether or not the popover should stay open even when clicking outside of it
*/
closeOnOutsideClick: boolean;
/**
* @internal
*/
popover?: ComponentRef<ConfirmationPopoverWindowComponent>;
private eventListeners;
/**
* @internal
*/
constructor(viewContainerRef: ViewContainerRef, elm: ElementRef, defaultOptions: ConfirmationPopoverOptions, renderer: Renderer2);
/**
* @internal
*/
ngOnInit(): void;
/**
* @internal
*/
ngOnChanges(changes: SimpleChanges): void;
/**
* @internal
*/
ngOnDestroy(): void;
/**
* @internal
*/
onConfirm(event: ConfirmCancelEvent): void;
/**
* @internal
*/
onCancel(event: ConfirmCancelEvent): void;
/**
* @internal
*/
togglePopover(): void;
private onDocumentClick;
private showPopover;
private positionPopover;
private hidePopover;
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmationPopoverDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<ConfirmationPopoverDirective, "[mwlConfirmationPopover]", never, { "popoverTitle": "popoverTitle"; "popoverMessage": "popoverMessage"; "confirmText": "confirmText"; "cancelText": "cancelText"; "placement": "placement"; "confirmButtonType": "confirmButtonType"; "cancelButtonType": "cancelButtonType"; "focusButton": "focusButton"; "hideConfirmButton": "hideConfirmButton"; "hideCancelButton": "hideCancelButton"; "isDisabled": "isDisabled"; "isOpen": "isOpen"; "customTemplate": "customTemplate"; "popoverClass": "popoverClass"; "appendToBody": "appendToBody"; "reverseButtonOrder": "reverseButtonOrder"; "closeOnOutsideClick": "closeOnOutsideClick"; }, { "isOpenChange": "isOpenChange"; "confirm": "confirm"; "cancel": "cancel"; }, never, never, false, never>;
}