ag-grid-community
Version:
Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
60 lines (59 loc) • 3.48 kB
TypeScript
import { Direction } from '../constants/direction';
import { AgBeanStub } from '../core/agBeanStub';
import type { AgCoreBeanCollection } from '../interfaces/agCoreBeanCollection';
import type { BaseEvents } from '../interfaces/baseEvents';
import type { BaseProperties } from '../interfaces/baseProperties';
import type { AddPopupParams, AddPopupResult, AgComponentPopupPositionParams, AgMenuPopupPositionParams, AgMousePopupPositionParams, AgPopupPositionParams, PopupEventParams } from '../interfaces/iPopup';
import type { IPopupService } from '../interfaces/iPopupService';
import type { IPropertiesService } from '../interfaces/iProperties';
import { AgPromise } from '../utils/promise';
interface AgPopup {
element: HTMLElement;
wrapper: HTMLElement;
hideFunc: (params?: PopupEventParams) => void;
isAnchored: boolean;
instanceId: number;
alignedToElement?: HTMLElement;
stopAnchoringPromise?: AgPromise<() => void>;
}
export declare abstract class BasePopupService<TBeanCollection extends AgCoreBeanCollection<TProperties, TGlobalEvents, TCommon, TPropertiesService>, TProperties extends BaseProperties, TGlobalEvents extends BaseEvents, TCommon, TPropertiesService extends IPropertiesService<TProperties, TCommon>, TPopupPositionParams> extends AgBeanStub<TBeanCollection, TProperties, TGlobalEvents, TCommon, TPropertiesService> implements IPopupService<TPopupPositionParams> {
beanName: "popupSvc";
protected popupList: AgPopup[];
postConstruct(): void;
getPopupParent(): HTMLElement;
protected abstract getDefaultPopupParent(): HTMLElement;
positionPopupUnderMouseEvent(params: AgMousePopupPositionParams<TPopupPositionParams>): void;
private calculatePointerAlign;
positionPopupByComponent(params: AgComponentPopupPositionParams<TPopupPositionParams>): void;
positionPopupForMenu(params: AgMenuPopupPositionParams<TPopupPositionParams>): void;
private shouldRenderUnderOrAbove;
protected setAlignedStyles(ePopup: HTMLElement, positioned: 'right' | 'left' | 'over' | 'above' | 'under' | null): void;
protected setAlignedTo(eventSource: HTMLElement, ePopup: HTMLElement): void;
abstract callPostProcessPopup(params: TPopupPositionParams | undefined, type: string, ePopup: HTMLElement, eventSource?: HTMLElement | null, mouseEvent?: MouseEvent | Touch | null): void;
positionPopup(params: AgPopupPositionParams<TPopupPositionParams>): void;
getParentRect(): {
top: number;
left: number;
right: number;
bottom: number;
};
protected keepXYWithinBounds(ePopup: HTMLElement, position: number, direction: Direction): number;
addPopup<TContainerType extends string>(params: AddPopupParams<TContainerType>): AddPopupResult;
private initialisePopupPosition;
private createPopupWrapper;
protected abstract isStopPropagation(event: Event): boolean;
private addEventListenersToPopup;
private addPopupToPopupList;
private getPopupIndex;
setPopupPositionRelatedToElement(popupEl: HTMLElement, relativeElement?: HTMLElement | null): AgPromise<() => void> | undefined;
private removePopupFromPopupList;
private keepPopupPositionedRelativeTo;
private isEventFromCurrentPopup;
isElementWithinCustomPopup(el: HTMLElement): boolean;
private getWrapper;
private setAlwaysOnTop;
/** @returns true if moved */
bringPopupToFront(ePopup: HTMLElement): void;
private handleThemeChange;
}
export {};