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.

421 lines (373 loc) 12.9 kB
import { Component, Property, Event, Collection, L10n, EmitType, Complex, compile, createElement, animationMode } from '@syncfusion/ej2-base';import { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';import { NotifyPropertyChanges, INotifyPropertyChanged, ChildProperty, isBlazor } from '@syncfusion/ej2-base';import { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';import { BlazorDragEventArgs, SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';import { Button, ButtonModel } from '@syncfusion/ej2-buttons';import { Popup, PositionData, getZindexPartial } from '../popup/popup';import { PositionDataModel } from '../popup/popup-model';import { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight, resizeDestroy } from '../common/resize'; import {ButtonType,DialogEffect,ResizeDirections,BeforeSanitizeHtmlArgs,BeforeOpenEventArgs,OpenEventArgs,BeforeCloseEventArgs,CloseEventArgs} from "./dialog"; import {ComponentModel} from '@syncfusion/ej2-base'; /** * Interface for a class ButtonProps */ export interface ButtonPropsModel { /** * Specifies the flat appearance of the dialog buttons * * @default true */ isFlat?: boolean; /** * Specifies the button component properties to render the dialog buttons. */ buttonModel?: ButtonModel; /** * Specify the type of the button. * Possible values are Button, Submit and Reset. * * @default 'Button' * @aspType string * @blazorType string */ type?: ButtonType | string; /** * Event triggers when `click` the dialog button. * * @event 'object' * @blazorProperty 'OnClick' */ click?: EmitType<Object>; } /** * Interface for a class AnimationSettings */ export interface AnimationSettingsModel { /** * Specifies the animation name that should be applied on open and close the dialog. * If user sets Fade animation, the dialog will open with `FadeIn` effect and close with `FadeOut` effect. * The following are the list of animation effects available to configure to the dialog: * 1. Fade * 2. FadeZoom * 3. FlipLeftDown * 4. FlipLeftUp * 5. FlipRightDown * 6. FlipRightUp * 7. FlipXDown * 8. FlipXUp * 9. FlipYLeft * 10. FlipYRight * 11. SlideBottom * 12. SlideLeft * 13. SlideRight * 14. SlideTop * 15. Zoom * 16. None * * @default 'Fade' */ effect?: DialogEffect; /** * Specifies the duration in milliseconds that the animation takes to open or close the dialog. * * @default 400 */ duration?: number; /** * Specifies the delay in milliseconds to start animation. * * @default 0 */ delay?: number; } /** * Interface for a class Dialog */ export interface DialogModel extends ComponentModel{ /** * Specifies the value that can be displayed in dialog's content area. * It can be information, list, or other HTML elements. * The content of dialog can be loaded with dynamic data such as database, AJAX content, and more. * * {% codeBlock src="dialog/content-api/index.ts" %}{% endcodeBlock %} * * {% codeBlock src="dialog/content-api/index.html" %}{% endcodeBlock %} * * @default '' * @blazorType string * @aspType string */ content?: string | HTMLElement | Function; /** * Defines whether to allow the cross-scripting site or not. * * @default true */ enableHtmlSanitizer?: boolean; /** * Enables or disables the persistence of the dialog's dimensions and position state between page reloads. * * @default false */ enablePersistence?: boolean; /** * Specifies the value that represents whether the close icon is shown in the dialog component. * * @default false */ showCloseIcon?: boolean; /** * Specifies the Boolean value whether the dialog can be displayed as modal or non-modal. * * `Modal`: It creates overlay that disable interaction with the parent application and user should * respond with modal before continuing with other applications. * * `Modeless`: It does not prevent user interaction with parent application. * * @default false */ isModal?: boolean; /** * Specifies the value that can be displayed in the dialog's title area that can be configured with plain text or HTML elements. * This is optional property and the dialog can be displayed without header, if the header property is null. * * @default '' * @blazorType string * @aspType string */ header?: string | HTMLElement | Function; /** * Specifies the value that represents whether the dialog component is visible. * * @default true */ visible?: boolean; /** * Specifies the value whether the dialog component can be resized by the end-user. * If enableResize is true, the dialog component creates grip to resize it diagonal direction. * * @default false */ enableResize?: boolean; /** * Specifies the resize handles direction in the dialog component that can be resized by the end-user. * * @default ['South-East'] */ resizeHandles?: ResizeDirections[]; /** * Specifies the height of the dialog component. * * @default 'auto' * @blazorType string */ height?: string | number; /** * Specify the min-height of the dialog component. * * @default '' * @blazorType string */ minHeight?: string | number; /** * Specifies the width of the dialog. * * @default '100%' * @blazorType string */ width?: string | number; /** * Specifies the CSS class name that can be appended with root element of the dialog. * One or more custom CSS classes can be added to a dialog. * * @default '' */ cssClass?: string; /** * Specifies the z-order for rendering that determines whether the dialog is displayed in front or behind of another component. * * @default 1000 */ zIndex?: number; /** * Specifies the target element in which to display the dialog. * The default value is null, which refers the `document.body` element. * * @default null * @blazorType string */ target?: HTMLElement | string; /** * Specifies the template value that can be displayed with dialog's footer area. * This is optional property and can be used only when the footer is occupied with information or custom components. * By default, the footer is configured with action [buttons](#buttons). * If footer template is configured to dialog, the action buttons property will be disabled. * * > More information on the footer template configuration can be found on this [documentation](../../dialog/template/#footer) section. * * @default '' * @blazorType string * @aspType string */ footerTemplate?: HTMLElement | string | Function; /** * Specifies the value whether the dialog component can be dragged by the end-user. * The dialog allows to drag by selecting the header and dragging it for re-position the dialog. * * > More information on the draggable behavior can be found on this [documentation](../../dialog/getting-started/#draggable) section. * * {% codeBlock src='dialog/allowDragging/index.md' %}{% endcodeBlock %} * * @default false */ allowDragging?: boolean; /** * Configures the action `buttons` that contains button properties with primary attributes and click events. * One or more action buttons can be configured to the dialog. * * > More information on the button configuration can be found on this * [documentation](../../dialog/getting-started/#enable-footer) section. * * {% codeBlock src="dialog/buttons-api/index.ts" %}{% endcodeBlock %} * * {% codeBlock src="dialog/buttons-api/index.html" %}{% endcodeBlock %} * * {% codeBlock src='dialog/buttons/index.md' %}{% endcodeBlock %} * * @default [{}] */ buttons?: ButtonPropsModel[]; /** * Specifies the boolean value whether the dialog can be closed with the escape key * that is used to control the dialog's closing behavior. * * @default true */ closeOnEscape?: boolean; /** * Specifies the animation settings of the dialog component. * The animation effect can be applied on open and close the dialog with duration and delay. * * > More information on the animation settings in dialog can be found on this [documentation](../../dialog/animation/) section. * * {% codeBlock src="dialog/animation-api/index.ts" %}{% endcodeBlock %} * * {% codeBlock src="dialog/animation-api/index.html" %}{% endcodeBlock %} * * {% codeBlock src='dialog/animationSettings/index.md' %}{% endcodeBlock %} * * @default { effect: 'Fade', duration: 400, delay:0 } */ animationSettings?: AnimationSettingsModel; /** * Specifies the value where the dialog can be positioned within the document or target. * The position can be represented with pre-configured positions or specific X and Y values. * * `X value`: left, center, right, or offset value. * * `Y value`: top, center, bottom, or offset value. * * > More information on the positioning in dialog can be found on this [documentation](../../dialog/getting-started/#positioning) section. * * {% codeBlock src='dialog/position/index.md' %}{% endcodeBlock %} * * @default { X: 'center', Y: 'center' } */ position?: PositionDataModel; /** * Event triggers when the dialog is created. * * @event 'object' * @blazorProperty 'Created' */ created?: EmitType<Object>; /** * Event triggers when a dialog is opened. * * @event 'object' * @blazorProperty 'Opened' * @blazorType OpenEventArgs */ open?: EmitType<Object>; /** * Event triggers before sanitize the value. * * @event 'object' * @blazorProperty 'OnSanitizeHtml' */ beforeSanitizeHtml?: EmitType<BeforeSanitizeHtmlArgs>; /** * Event triggers when the dialog is being opened. * If you cancel this event, the dialog remains closed. * Set the cancel argument to true to cancel the open of a dialog. * * @event 'object' * @blazorProperty 'OnOpen' */ beforeOpen?: EmitType<BeforeOpenEventArgs>; /** * Event triggers after the dialog has been closed. * * @event 'object' * @blazorProperty 'Closed' * @blazorType CloseEventArgs */ close?: EmitType<Object>; /** * Event triggers before the dialog is closed. * If you cancel this event, the dialog remains opened. * Set the cancel argument to true to cancel the closure of a dialog. * * @event 'object' * @blazorProperty 'OnClose' */ beforeClose?: EmitType<BeforeCloseEventArgs>; /** * Event triggers when the user begins dragging the dialog. * * @event 'object' * @blazorProperty 'OnDragStart' * @blazorType DragStartEventArgs */ dragStart?: EmitType<Object>; /** * Event triggers when the user stop dragging the dialog. * * @event 'object' * @blazorProperty 'OnDragStop' * @blazorType DragStopEventArgs */ dragStop?: EmitType<Object>; /** * Event triggers when the user drags the dialog. * * @event 'object' * @blazorProperty 'OnDrag' * @blazorType DragEventArgs */ drag?: EmitType<Object>; /** * Event triggers when the overlay of dialog is clicked. * * @event 'object' * @blazorProperty 'OnOverlayClick' */ overlayClick?: EmitType<Object>; /** * Event triggers when the user begins to resize a dialog. * * @event 'object' * @blazorProperty 'OnResizeStart' */ resizeStart?: EmitType<Object>; /** * Event triggers when the user resize the dialog. * * @event 'object' * @blazorProperty 'Resizing' */ resizing?: EmitType<Object>; /** * Event triggers when the user stop to resize a dialog. * * @event 'object' * @blazorProperty 'OnResizeStop' */ resizeStop?: EmitType<Object>; /** * Event triggers when the dialog is destroyed. * * @event 'object' * @blazorProperty 'Destroyed' */ destroyed?: EmitType<Event>; }