UNPKG

@syncfusion/ej2-popups

Version:

A package of Essential JS 2 popup components such as Dialog and Tooltip that is used to display information or messages in separate pop-ups.

302 lines (267 loc) 11.3 kB
import { Component, Property, ChildProperty, Event, BaseEventArgs, append, compile } from '@syncfusion/ej2-base';import { EventHandler, EmitType, Touch, TapEventArgs, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';import { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';import { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';import { NotifyPropertyChanges, INotifyPropertyChanged, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';import { Popup } from '../popup/popup';import { OffsetPosition, calculatePosition } from '../common/position';import { isCollide, fit, destroy as collisionDestroy } from '../common/collision'; import {TooltipAnimationSettings,Position,TipPointerPosition,TooltipEventArgs} from "./tooltip"; import {ComponentModel} from '@syncfusion/ej2-base'; /** * Interface for a class Animation */ export interface AnimationModel { /** * Animation settings to be applied on the Tooltip, while it is being shown over the target. */ open?: TooltipAnimationSettings; /** * Animation settings to be applied on the Tooltip, when it is closed. */ close?: TooltipAnimationSettings; } /** * Interface for a class Tooltip */ export interface TooltipModel extends ComponentModel{ /** * It is used to set the width of Tooltip component which accepts both string and number values. * When set to auto, the Tooltip width gets auto adjusted to display its content within the viewable screen. * * @default 'auto' */ width?: string | number; /** * It is used to set the height of Tooltip component which accepts both string and number values. * When Tooltip content gets overflow due to height value then the scroll mode will be enabled. * Refer the documentation [here](https://ej2.syncfusion.com/documentation/tooltip/setting-dimension/) * to know more about this property with demo. * * @default 'auto' */ height?: string | number; /** * It is used to display the content of Tooltip which can be both string and HTML Elements. * Refer the documentation [here](https://ej2.syncfusion.com/documentation/tooltip/content/) * to know more about this property with demo. * * {% codeBlock src="tooltip/content-api/index.ts" %}{% endcodeBlock %} * * @aspType string */ content?: string | HTMLElement | Function; /** * It is used to set the container element in which the Tooltip’s pop-up will be appended. It accepts value as both string and HTML Element. * It's default value is `body`, in which the Tooltip’s pop-up will be appended. * */ container?: string | HTMLElement; /** * It is used to denote the target selector where the Tooltip need to be displayed. * The target element is considered as parent container. * * {% codeBlock src="tooltip/target-api/index.ts" %}{% endcodeBlock %} */ target?: string; /** * It is used to set the position of Tooltip element, with respect to Target element. * * {% codeBlock src="tooltip/position-api/index.ts" %}{% endcodeBlock %} * */ position?: Position; /** * It sets the space between the target and Tooltip element in X axis. * * {% codeBlock src="tooltip/offsetX-api/index.ts" %}{% endcodeBlock %} * {% codeBlock src="tooltip/offsetx/index.md" %}{% endcodeBlock %} * * @default 0 */ offsetX?: number; /** * It sets the space between the target and Tooltip element in Y axis. * * {% codeBlock src="tooltip/offsetX-api/index.ts" %}{% endcodeBlock %} * {% codeBlock src="tooltip/offsety/index.md" %}{% endcodeBlock %} * * @default 0 */ offsetY?: number; /** * It is used to show or hide the tip pointer of Tooltip. * * {% codeBlock src="tooltip/offsetX-api/index.ts" %}{% endcodeBlock %} * {% codeBlock src="tooltip/showtippointer/index.md" %}{% endcodeBlock %} * * @default true */ showTipPointer?: boolean; /** * It enables or disables the parsing of HTML string content into HTML DOM elements for Tooltip. * If the value of the property is set to false, the tooltip content will be displayed as HTML string instead of HTML DOM elements. * * @default true */ enableHtmlParse?: boolean; /** * It is used to set the collision target element as page viewport (window) or Tooltip element, when using the target. * If this property is enabled, tooltip will perform the collision calculation between the target elements * and viewport(window) instead of Tooltip element. * * @default false */ windowCollision?: boolean; /** * It is used to set the position of tip pointer on tooltip. * When it sets to auto, the tip pointer auto adjusts within the space of target's length * and does not point outside. * Refer the documentation * [here](https://ej2.syncfusion.com/documentation/tooltip/position.html?lang=typescript#tip-pointer-positioning) * to know more about this property with demo. * * {% codeBlock src="tooltip/tippointerposition/index.md" %}{% endcodeBlock %} * * @default 'Auto' */ tipPointerPosition?: TipPointerPosition; /** * It is used to determine the device mode to display the Tooltip content. * If it is in desktop, it will show the Tooltip content when hovering on the target element. * If it is in touch device, it will show the Tooltip content when tap and holding on the target element. * * {% codeBlock src="tooltip/openson/index.md" %}{% endcodeBlock %} * {% codeBlock src="tooltip/opensOn-api/index.ts" %}{% endcodeBlock %} * * @default 'Auto' */ opensOn?: string; /** * It allows the Tooltip to follow the mouse pointer movement over the specified target element. * Refer the documentation [here](https://ej2.syncfusion.com/documentation/tooltip/position/#mouse-trailing) * to know more about this property with demo. * * {% codeBlock src="tooltip/mousetrail/index.md" %}{% endcodeBlock %} * {% codeBlock src="tooltip/offsetX-api/index.ts" %}{% endcodeBlock %} * * @default false */ mouseTrail?: boolean; /** * It is used to display the Tooltip in an open state until closed by manually. * Refer the documentation [here](https://ej2.syncfusion.com/documentation/tooltip/open-mode/#sticky-mode) * to know more about this property with demo. * * {% codeBlock src="tooltip/issticky/index.md" %}{% endcodeBlock %} * * @default false */ isSticky?: boolean; /** * We can set the same or different animation option to Tooltip while it is in open or close state. * Refer the documentation [here](https://ej2.syncfusion.com/documentation/tooltip/animation/) * to know more about this property with demo. * * {% codeBlock src="tooltip/animation/index.md" %}{% endcodeBlock %} * {% codeBlock src="tooltip/animation-api/index.ts" %}{% endcodeBlock %} * * @default { open: { effect: 'FadeIn', duration: 150, delay: 0 }, close: { effect: 'FadeOut', duration: 150, delay: 0 } } */ animation?: AnimationModel; /** * It is used to open the Tooltip after the specified delay in milliseconds. * * @default 0 */ openDelay?: number; /** * It is used to close the Tooltip after a specified delay in milliseconds. * * @default 0 */ closeDelay?: number; /** * It is used to customize the Tooltip which accepts custom CSS class names that * defines specific user-defined styles and themes to be applied on the Tooltip element. * * @default null */ cssClass?: string; /** * Specifies whether to display or remove the untrusted HTML values in the Tooltip component. * If 'enableHtmlSanitizer' set to true, the component will sanitize any suspected untrusted strings and scripts before rendering them. * * @default true */ enableHtmlSanitizer?: boolean; /** * Allows additional HTML attributes such as tabindex, title, name, etc. to root element of the Tooltip popup, and * accepts n number of attributes in a key-value pair format. * * {% codeBlock src='tooltip/htmlAttributes/index.md' %}{% endcodeBlock %} * * @default {} */ htmlAttributes?: { [key: string]: string }; /** * We can trigger `beforeRender` event before the Tooltip and its contents are added to the DOM. * When one of its arguments `cancel` is set to true, the Tooltip can be prevented from rendering on the page. * This event is mainly used for the purpose of customizing the Tooltip before it shows up on the screen. * For example, to load the AJAX content or to set new animation effects on the Tooltip, this event can be opted. * Refer the documentation * [here](https://ej2.syncfusion.com/documentation/tooltip/content/#dynamic-content-via-ajax) * to know more about this property with demo. * * @event beforeRender */ beforeRender?: EmitType<TooltipEventArgs>; /** * We can trigger `beforeOpen` event before the Tooltip is displayed over the target element. * When one of its arguments `cancel` is set to true, the Tooltip display can be prevented. * This event is mainly used for the purpose of refreshing the Tooltip positions dynamically or to * set customized styles in it and so on. * * {% codeBlock src="tooltip/beforeOpen/index.md" %}{% endcodeBlock %} * * @event beforeOpen */ beforeOpen?: EmitType<TooltipEventArgs>; /** * We can trigger `afterOpen` event after the Tooltip Component gets opened. * * {% codeBlock src="tooltip/afterOpen/index.md" %}{% endcodeBlock %} * * @event afterOpen */ afterOpen?: EmitType<TooltipEventArgs>; /** * We can trigger `beforeClose` event before the Tooltip hides from the screen. If returned false, then the Tooltip is no more hidden. * * {% codeBlock src="tooltip/beforeClose/index.md" %}{% endcodeBlock %} * * @event beforeClose */ beforeClose?: EmitType<TooltipEventArgs>; /** * We can trigger `afterClose` event when the Tooltip Component gets closed. * * {% codeBlock src="tooltip/afterClose/index.md" %}{% endcodeBlock %} * * @event afterClose */ afterClose?: EmitType<TooltipEventArgs>; /** * We can trigger `beforeCollision` event for every collision fit calculation. * * {% codeBlock src="tooltip/beforeCollision/index.md" %}{% endcodeBlock %} * * @event beforeCollision */ beforeCollision?: EmitType<TooltipEventArgs>; /** * We can trigger `created` event after the Tooltip component is created. * * @event created */ created?: EmitType<Object>; /** * We can trigger `destroyed` event when the Tooltip component is destroyed. * * @event destroyed */ destroyed?: EmitType<Object>; }