UNPKG

primeng

Version:

PrimeNG is a premium UI library for Angular featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock,

1 lines 55.7 kB
{"version":3,"file":"primeng-dynamicdialog.mjs","sources":["../../src/dynamicdialog/dynamicdialog-config.ts","../../src/dynamicdialog/dynamicdialog-ref.ts","../../src/dynamicdialog/dynamicdialogcontent.ts","../../src/dynamicdialog/style/dynamicdialogstyle.ts","../../src/dynamicdialog/dynamicdialog.ts","../../src/dynamicdialog/dynamicdialog-injector.ts","../../src/dynamicdialog/dialogservice.ts","../../src/dynamicdialog/primeng-dynamicdialog.ts"],"sourcesContent":["import { Type } from '@angular/core';\nimport type { MotionOptions } from '@primeuix/motion';\nimport type { DialogPassThrough, DialogPosition } from 'primeng/types/dialog';\n\n/**\n * Dialogs can be created dynamically with any component as the content using a DialogService.\n * @group Components\n */\nexport class DynamicDialogConfig<DataType = any, InputValuesType extends Record<string, any> = {}> {\n /**\n * An object to pass to the component loaded inside the Dialog.\n * @group Props\n */\n data?: DataType;\n /**\n * An object to pass to the component loaded inside the Dialog.\n * @group Props\n */\n inputValues?: InputValuesType;\n /**\n * Header text of the dialog.\n * @group Props\n */\n header?: string;\n /**\n * Identifies the element (or elements) that labels the element it is applied to.\n * @group Props\n */\n ariaLabelledBy?: string;\n /**\n * Footer text of the dialog.\n * @group Props\n */\n footer?: string;\n /**\n * Width of the dialog.\n * @group Props\n */\n width?: string;\n /**\n * Height of the dialog.\n * @group Props\n */\n height?: string;\n /**\n * Specifies if pressing escape key should hide the dialog.\n * @group Props\n */\n closeOnEscape?: boolean = false;\n /**\n * Specifies if autofocus should happen on show.\n * @group Props\n */\n focusOnShow?: boolean = true;\n /**\n * When enabled, can only focus on elements inside the dialog.\n * @group Props\n */\n focusTrap?: boolean = true;\n /**\n * Base zIndex value to use in layering.\n * @group Props\n */\n baseZIndex?: number;\n /**\n * Whether to re-enforce layering through applying zIndex.\n * @group Props\n */\n autoZIndex?: boolean = false;\n /**\n * Specifies if clicking the modal background should hide the dialog.\n * @group Props\n */\n dismissableMask?: boolean = false;\n /**\n * Inline style of the component.\n * @group Props\n */\n rtl?: boolean = false;\n /**\n * Inline style of the component.\n * @group Props\n */\n style?: { [klass: string]: any } | null | undefined;\n /**\n * Inline style of the content.\n * @group Props\n */\n contentStyle?: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n * @group Props\n */\n styleClass?: string;\n /**\n * The motion options for the dialog.\n * @group Props\n */\n motionOptions?: MotionOptions;\n /**\n * The motion options for the mask.\n * @group Props\n */\n maskMotionOptions?: MotionOptions;\n /**\n * Adds a close icon to the header to hide the dialog.\n * @group Props\n */\n closable?: boolean = false;\n /**\n * Whether to show the header or not.\n * @group Props\n */\n showHeader?: boolean = false;\n /**\n * Defines if background should be blocked when dialog is displayed.\n * @group Props\n */\n modal?: boolean = false;\n /**\n * Style class of the mask.\n * @group Props\n */\n maskStyleClass?: string;\n /**\n * Enables resizing of the content.\n * @group Props\n */\n resizable?: boolean = false;\n /**\n * Enables dragging to change the position using header.\n * @group Props\n */\n draggable?: boolean = false;\n /**\n * Keeps dialog in the viewport.\n * @group Props\n */\n keepInViewport?: boolean = false;\n /**\n * Minimum value for the left coordinate of dialog in dragging.\n * @group Props\n */\n minX?: number;\n /**\n * Minimum value for the top coordinate of dialog in dragging.\n * @group Props\n */\n minY?: number;\n /**\n * Whether the dialog can be displayed full screen.\n * @group Props\n */\n maximizable?: boolean = false;\n /**\n * Name of the maximize icon.\n * @group Props\n */\n maximizeIcon?: string;\n /**\n * Name of the minimize icon.\n * @group Props\n */\n minimizeIcon?: string;\n /**\n * Position of the dialog.\n * @group Props\n */\n position?: DialogPosition;\n /**\n * Defines a string that labels the close button for accessibility.\n * @group Props\n */\n closeAriaLabel?: string;\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @group Props\n */\n appendTo?: any;\n /**\n * A boolean to determine if it can be duplicate.\n * @group Props\n */\n duplicate?: boolean = false;\n /**\n * Object literal to define widths per screen size.\n * @group Props\n */\n breakpoints?: any;\n /**\n * Dialog templates.\n * @group Props\n */\n templates?: DynamicDialogTemplates;\n /**\n * Used to pass attributes to DOM elements inside the Dialog component.\n * @group Props\n */\n pt?: DialogPassThrough;\n /**\n * Indicates whether the component should be rendered without styles.\n * @group Props\n */\n unstyled?: boolean;\n}\n\n/**\n * Defines valid templates in Dynamic Dialog.\n * Templates are Angular components that will be rendered using ngComponentOutlet.\n * @group Templates\n */\nexport interface DynamicDialogTemplates {\n /**\n * Component to render as the header.\n */\n header?: Type<any>;\n /**\n * Component to render as the content.\n */\n content?: Type<any>;\n /**\n * Component to render as the footer.\n */\n footer?: Type<any>;\n /**\n * Component to render as the minimize icon.\n */\n minimizeicon?: Type<any>;\n /**\n * Component to render as the maximize icon.\n */\n maximizeicon?: Type<any>;\n /**\n * Component to render as the close icon.\n */\n closeicon?: Type<any>;\n}\n","import { Observable, Subject } from 'rxjs';\n/**\n * Dynamic Dialog instance.\n * @group Components\n */\nexport class DynamicDialogRef<ComponentType = any> {\n constructor() {}\n\n /**\n * Closes dialog.\n * @group Method\n */\n close(result?: any) {\n this._onClose.next(result);\n\n setTimeout(() => {\n this._onClose.complete();\n }, 1000);\n }\n /**\n * Destroys the dialog instance.\n * @group Method\n */\n destroy() {\n this._onDestroy.next(null);\n }\n /**\n * Callback to invoke on drag start.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n dragStart(event: MouseEvent) {\n this._onDragStart.next(event);\n }\n /**\n * Callback to invoke on drag end.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n dragEnd(event: MouseEvent) {\n this._onDragEnd.next(event);\n }\n /**\n * Callback to invoke on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n resizeInit(event: MouseEvent) {\n this._onResizeInit.next(event);\n }\n /**\n * Callback to invoke on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Method\n */\n resizeEnd(event: MouseEvent) {\n this._onResizeEnd.next(event);\n }\n /**\n * Callback to invoke on dialog is maximized.\n * @param {*} value - Size value.\n * @group Method\n */\n maximize(value: any) {\n this._onMaximize.next(value);\n }\n\n private readonly _onClose = new Subject<any>();\n /**\n * Event triggered on dialog is closed.\n * @group Events\n */\n onClose: Observable<any> = this._onClose.asObservable();\n\n private readonly _onDestroy = new Subject<any>();\n /**\n * Event triggered on dialog instance is destroyed.\n * @group Events\n */\n onDestroy: Observable<any> = this._onDestroy.asObservable();\n\n private readonly _onDragStart = new Subject<any>();\n /**\n * Event triggered on drag start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragStart: Observable<any> = this._onDragStart.asObservable();\n\n private readonly _onDragEnd = new Subject<any>();\n /**\n * Event triggered on drag end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragEnd: Observable<any> = this._onDragEnd.asObservable();\n\n private readonly _onResizeInit = new Subject<any>();\n /**\n * Event triggered on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeInit: Observable<any> = this._onResizeInit.asObservable();\n\n private readonly _onResizeEnd = new Subject<any>();\n /**\n * Event triggered on resize end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeEnd: Observable<any> = this._onResizeEnd.asObservable();\n\n private readonly _onMaximize = new Subject<any>();\n /**\n * Event triggered on dialog is maximized.\n * @param {*} value - Size value.\n * @group Events\n */\n onMaximize: Observable<any> = this._onMaximize.asObservable();\n\n /**\n * Event triggered on child component load.\n * @param {*} value - Chi.\n * @group Events\n */\n readonly onChildComponentLoaded = new Subject<ComponentType>();\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[pDynamicDialogContent]',\n standalone: true\n})\nexport class DynamicDialogContent {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Injectable } from '@angular/core';\nimport { DialogStyle } from 'primeng/dialog';\n\n@Injectable()\nexport class DynamicDialogStyle extends DialogStyle {\n name = 'dialog';\n}\n\n/**\n *\n * DynamicDialog is a container to display content in an overlay window.\n *\n * [Live Demo](https://www.primeng.org/dynamicdialog)\n *\n * @module dynamicdialogstyle\n *\n */\nexport enum DynamicDialogClasses {\n /**\n * Class name of the mask element\n */\n mask = 'p-dialog-mask',\n /**\n * Class name of the root element\n */\n root = 'p-dialog',\n /**\n * Class name of the header element\n */\n header = 'p-dialog-header',\n /**\n * Class name of the title element\n */\n title = 'p-dialog-title',\n /**\n * Class name of the header actions element\n */\n headerActions = 'p-dialog-header-actions',\n /**\n * Class name of the maximize button element\n */\n pcMaximizeButton = 'p-dialog-maximize-button',\n /**\n * Class name of the close button element\n */\n pcCloseButton = 'p-dialog-close-button',\n /**\n * Class name of the content element\n */\n content = 'p-dialog-content',\n /**\n * Class name of the footer element\n */\n footer = 'p-dialog-footer'\n}\n\nexport interface DynamicDialogStyle {}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ComponentRef, inject, InjectionToken, NgModule, signal, Type, viewChild, ViewEncapsulation } from '@angular/core';\nimport { uuid } from '@primeuix/utils';\nimport { SharedModule, TranslationKeys } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { Dialog, DialogPassThrough } from 'primeng/dialog';\nimport { Nullable } from 'primeng/ts-helpers';\nimport type { ButtonDirectiveOptions } from 'primeng/types/button';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport { DynamicDialogConfig } from './dynamicdialog-config';\nimport { DynamicDialogRef } from './dynamicdialog-ref';\nimport { DynamicDialogContent } from './dynamicdialogcontent';\nimport { DynamicDialogStyle } from './style/dynamicdialogstyle';\n\nconst DYNAMIC_DIALOG_INSTANCE = new InjectionToken<DynamicDialog>('DYNAMIC_DIALOG_INSTANCE');\n\n@Component({\n selector: 'p-dynamicdialog, p-dynamic-dialog',\n standalone: true,\n imports: [NgComponentOutlet, SharedModule, DynamicDialogContent, Dialog, BindModule],\n template: `\n <p-dialog\n [visible]=\"visible()\"\n [header]=\"header\"\n [draggable]=\"draggable\"\n [resizable]=\"resizable\"\n [contentStyle]=\"contentStyle\"\n [modal]=\"modal\"\n [closeOnEscape]=\"closeOnEscape\"\n [dismissableMask]=\"dismissableMask\"\n [rtl]=\"rtl\"\n [closable]=\"closable\"\n [breakpoints]=\"breakpoints\"\n [styleClass]=\"styleClass\"\n [maskStyleClass]=\"maskStyleClass\"\n [showHeader]=\"showHeader\"\n [autoZIndex]=\"autoZIndex\"\n [baseZIndex]=\"baseZIndex\"\n [minX]=\"minX\"\n [minY]=\"minY\"\n [focusOnShow]=\"focusOnShow\"\n [maximizable]=\"maximizable\"\n [keepInViewport]=\"keepInViewport\"\n [focusTrap]=\"focusTrap\"\n [motionOptions]=\"motionOptions\"\n [maskMotionOptions]=\"maskMotionOptions\"\n [closeAriaLabel]=\"closeAriaLabel\"\n [minimizeIcon]=\"minimizeIcon\"\n [maximizeIcon]=\"maximizeIcon\"\n [closeButtonProps]=\"closeButtonProps\"\n [maximizeButtonProps]=\"maximizeButtonProps\"\n [style]=\"dialogStyle\"\n [position]=\"position\"\n (onHide)=\"onDialogHide()\"\n (onMaximize)=\"onDialogMaximize($event)\"\n (onResizeInit)=\"onDialogResizeInit($event)\"\n (onResizeEnd)=\"onDialogResizeEnd($event)\"\n (onDragStart)=\"onDialogDragStart($event)\"\n (onDragEnd)=\"onDialogDragEnd($event)\"\n (visibleChange)=\"onVisibleChange($event)\"\n [pt]=\"ddconfig.pt\"\n appendTo=\"self\"\n hostName=\"DynamicDialog\"\n [unstyled]=\"isUnstyled\"\n >\n @if (headerTemplate) {\n <ng-template #header>\n <ng-container *ngComponentOutlet=\"headerTemplate\"></ng-container>\n </ng-template>\n }\n @if (contentTemplate) {\n <ng-template #content>\n <ng-container *ngComponentOutlet=\"contentTemplate\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate) {\n <ng-template #footer>\n <ng-container *ngComponentOutlet=\"footerTemplate\"></ng-container>\n </ng-template>\n }\n @if (closeIconTemplate) {\n <ng-template #closeicon>\n <ng-container *ngComponentOutlet=\"closeIconTemplate\"></ng-container>\n </ng-template>\n }\n @if (maximizeIconTemplate) {\n <ng-template #maximizeicon>\n <ng-container *ngComponentOutlet=\"maximizeIconTemplate\"></ng-container>\n </ng-template>\n }\n @if (minimizeIconTemplate) {\n <ng-template #minimizeicon>\n <ng-container *ngComponentOutlet=\"minimizeIconTemplate\"></ng-container>\n </ng-template>\n }\n\n @if (!contentTemplate) {\n <ng-template pDynamicDialogContent></ng-template>\n }\n @if (ddconfig.footer && !footerTemplate) {\n <div>{{ ddconfig.footer }}</div>\n }\n </p-dialog>\n `,\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n providers: [DynamicDialogStyle, { provide: DYNAMIC_DIALOG_INSTANCE, useExisting: DynamicDialog }, { provide: PARENT_INSTANCE, useExisting: DynamicDialog }],\n hostDirectives: [Bind]\n})\nexport class DynamicDialog extends BaseComponent<DialogPassThrough> {\n componentName = 'Dialog';\n\n _componentStyle = inject(DynamicDialogStyle);\n\n $pcDynamicDialog: DynamicDialog | undefined = inject(DYNAMIC_DIALOG_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n ddconfig = inject(DynamicDialogConfig);\n\n dialogRef = inject(DynamicDialogRef);\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n visible = signal<boolean>(true);\n\n componentRef: Nullable<ComponentRef<object>>;\n\n id: string = uuid('pn_id_');\n\n insertionPoint = viewChild(DynamicDialogContent);\n\n dialog = viewChild(Dialog);\n\n childComponentType: Nullable<Type<object>>;\n\n inputValues: NonNullable<DynamicDialogConfig['inputValues']> = {};\n\n get draggable(): boolean {\n return this.ddconfig.draggable !== false;\n }\n\n get resizable(): boolean {\n return this.ddconfig.resizable !== false;\n }\n\n get modal(): boolean {\n return this.ddconfig.modal !== false;\n }\n\n get closeOnEscape(): boolean {\n return this.ddconfig.closeOnEscape !== false;\n }\n\n get showHeader(): boolean {\n return this.ddconfig.showHeader !== false;\n }\n\n get autoZIndex(): boolean {\n return this.ddconfig.autoZIndex !== false;\n }\n\n get baseZIndex(): number {\n return this.ddconfig.baseZIndex ?? 0;\n }\n\n get focusOnShow(): boolean {\n return this.ddconfig.focusOnShow !== false;\n }\n\n get focusTrap(): boolean {\n return this.ddconfig.focusTrap !== false;\n }\n\n get closeAriaLabel(): string {\n return this.ddconfig.closeAriaLabel ?? this.defaultCloseAriaLabel;\n }\n\n get rtl(): boolean | undefined {\n return this.ddconfig.rtl;\n }\n\n get styleClass(): string | undefined {\n return this.ddconfig.styleClass;\n }\n\n get maskStyleClass(): string | undefined {\n return this.ddconfig.maskStyleClass;\n }\n\n get dismissableMask(): boolean | undefined {\n return this.ddconfig.dismissableMask;\n }\n\n get contentStyle() {\n return this.ddconfig.contentStyle;\n }\n\n get minX(): number {\n return this.ddconfig.minX ?? 0;\n }\n\n get minY(): number {\n return this.ddconfig.minY ?? 0;\n }\n\n get keepInViewport(): boolean {\n return this.ddconfig.keepInViewport ?? false;\n }\n\n get maximizable(): boolean {\n return this.ddconfig.maximizable ?? false;\n }\n\n get maximizeIcon(): string | undefined {\n return this.ddconfig.maximizeIcon;\n }\n\n get minimizeIcon(): string | undefined {\n return this.ddconfig.minimizeIcon;\n }\n\n get closable(): boolean | undefined {\n return this.ddconfig.closable;\n }\n\n get position() {\n return this.ddconfig.position;\n }\n\n get defaultCloseAriaLabel(): string {\n return this.translate(TranslationKeys.ARIA, 'close');\n }\n\n get breakpoints() {\n return this.ddconfig.breakpoints;\n }\n\n get footerTemplate(): Type<object> | undefined {\n return this.ddconfig?.templates?.footer;\n }\n\n get headerTemplate(): Type<object> | undefined {\n return this.ddconfig?.templates?.header;\n }\n\n get contentTemplate(): Type<object> | undefined {\n return this.ddconfig?.templates?.content;\n }\n\n get minimizeIconTemplate(): Type<object> | undefined {\n return this.ddconfig?.templates?.minimizeicon;\n }\n\n get maximizeIconTemplate(): Type<object> | undefined {\n return this.ddconfig?.templates?.maximizeicon;\n }\n\n get closeIconTemplate(): Type<object> | undefined {\n return this.ddconfig?.templates?.closeicon;\n }\n\n get dialogStyle(): CSSProperties {\n return {\n ...(this.ddconfig?.style || {}),\n ...(this.ddconfig?.width && { width: this.ddconfig.width }),\n ...(this.ddconfig?.height && { height: this.ddconfig.height })\n };\n }\n\n get header(): string | undefined {\n return this.ddconfig.header;\n }\n\n get data() {\n return this.ddconfig.data;\n }\n\n get dialogId(): string {\n return this.$attrSelector;\n }\n\n get isUnstyled(): boolean {\n return this.ddconfig.unstyled || this.$unstyled();\n }\n\n get motionOptions() {\n return this.ddconfig.motionOptions;\n }\n\n get maskMotionOptions() {\n return this.ddconfig.maskMotionOptions;\n }\n\n get closeButtonProps(): ButtonDirectiveOptions {\n return { severity: 'secondary', variant: 'text', rounded: true };\n }\n\n get maximizeButtonProps(): ButtonDirectiveOptions {\n return { severity: 'secondary', variant: 'text', rounded: true };\n }\n\n maximized: boolean | undefined;\n\n dragging: boolean | undefined;\n\n resizing: boolean | undefined;\n\n ariaLabelledBy: string | undefined | null;\n\n lastPageX: number | undefined;\n\n lastPageY: number | undefined;\n\n contentViewChild: HTMLElement | null = null;\n\n footerViewChild: HTMLElement | null = null;\n\n headerViewChild: HTMLElement | null = null;\n\n maskViewChild: HTMLElement | null = null;\n\n maskClickListener: (() => void) | null = null;\n\n documentDragListener: (() => void) | null = null;\n\n documentDragEndListener: (() => void) | null = null;\n\n documentResizeListener: (() => void) | null = null;\n\n documentResizeEndListener: (() => void) | null = null;\n\n documentEscapeListener: (() => void) | null = null;\n\n constructor() {\n super();\n }\n\n onVisibleChange(visible: boolean) {\n if (!visible) {\n this.dialogRef.close();\n }\n }\n\n onAfterViewInit() {\n this.loadChildComponent(this.childComponentType!);\n this.ariaLabelledBy = this.getAriaLabelledBy();\n this.cd.detectChanges();\n }\n\n getAriaLabelledBy() {\n const { header, showHeader } = this.ddconfig;\n\n if (header === null || showHeader === false) {\n return null;\n }\n return uuid('pn_id_') + '_header';\n }\n\n loadChildComponent(componentType: Type<object>) {\n let viewContainerRef = this.insertionPoint()?.viewContainerRef;\n viewContainerRef?.clear();\n\n this.componentRef = viewContainerRef?.createComponent(componentType);\n\n if (this.inputValues && this.componentRef) {\n Object.entries(this.inputValues).forEach(([key, value]) => {\n this.componentRef!.setInput(key, value);\n });\n }\n\n this.dialogRef.onChildComponentLoaded.next(this.componentRef!.instance);\n }\n\n onDialogHide() {\n this.dialogRef.destroy();\n }\n\n onDialogMaximize(event: { maximized: boolean | undefined }) {\n this.maximized = event.maximized;\n this.dialogRef.maximize(event);\n }\n\n onDialogResizeInit(event: MouseEvent) {\n this.resizing = true;\n this.dialogRef.resizeInit(event);\n }\n\n onDialogResizeEnd(event: MouseEvent) {\n this.resizing = false;\n this.dialogRef.resizeEnd(event);\n }\n\n onDialogDragStart(event: MouseEvent) {\n this.dragging = true;\n this.dialogRef.dragStart(event);\n }\n\n onDialogDragEnd(event: DragEvent) {\n this.dragging = false;\n this.dialogRef.dragEnd(event);\n }\n\n close() {\n this.visible.set(false);\n }\n\n hide() {\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n }\n\n container: HTMLElement | null = null;\n\n wrapper: HTMLElement | null = null;\n\n unbindGlobalListeners() {\n this.unbindDocumentEscapeListener();\n this.unbindDocumentResizeListeners();\n this.unbindDocumentDragListener();\n this.unbindDocumentDragEndListener();\n }\n\n onContainerDestroy() {\n this.unbindGlobalListeners();\n if (this.ddconfig.modal) {\n this.disableModality();\n }\n this.container = null;\n }\n\n bindDocumentDragListener() {\n if (!this.documentDragListener) {\n this.documentDragListener = this.renderer.listen(this.document.defaultView, 'mousemove', (event) => {\n this.onDrag(event);\n });\n }\n }\n\n bindDocumentDragEndListener() {\n if (!this.documentDragEndListener) {\n this.documentDragEndListener = this.renderer.listen(this.document.defaultView, 'mouseup', (event) => {\n this.endDrag(event);\n });\n }\n }\n\n unbindDocumentDragEndListener() {\n if (this.documentDragEndListener) {\n this.documentDragEndListener();\n this.documentDragEndListener = null;\n }\n }\n\n unbindDocumentDragListener() {\n if (this.documentDragListener) {\n this.documentDragListener();\n this.documentDragListener = null;\n }\n }\n\n onDrag(event: MouseEvent) {\n if (this.dragging) {\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n\n if (this.ddconfig.keepInViewport && this.container) {\n this.container.style.position = 'fixed';\n }\n }\n }\n\n endDrag(event: MouseEvent) {\n if (this.dragging) {\n this.dragging = false;\n this.dialogRef.dragEnd(event as DragEvent);\n this.cd.detectChanges();\n }\n }\n\n resetPosition() {\n if (this.container) {\n this.container.style.position = '';\n this.container.style.left = '';\n this.container.style.top = '';\n this.container.style.margin = '';\n }\n }\n\n bindDocumentResizeListeners() {\n if (!this.documentResizeListener) {\n this.documentResizeListener = this.renderer.listen(this.document.defaultView, 'mousemove', (event) => {\n this.onResize(event);\n });\n }\n if (!this.documentResizeEndListener) {\n this.documentResizeEndListener = this.renderer.listen(this.document.defaultView, 'mouseup', (event) => {\n this.resizeEnd(event);\n });\n }\n }\n\n unbindDocumentResizeListeners() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n if (this.documentResizeEndListener) {\n this.documentResizeEndListener();\n this.documentResizeEndListener = null;\n }\n }\n\n initResize(event: MouseEvent) {\n this.resizing = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n this.dialogRef.resizeInit(event);\n }\n\n onResize(event: MouseEvent) {\n if (this.resizing) {\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n }\n }\n\n resizeEnd(event: MouseEvent) {\n if (this.resizing) {\n this.resizing = false;\n this.dialogRef.resizeEnd(event);\n }\n }\n\n maximize() {\n this.maximized = !this.maximized;\n this.dialogRef.maximize({ maximized: this.maximized });\n }\n\n enableModality() {\n if (this.ddconfig.dismissableMask && this.wrapper) {\n this.maskClickListener = this.renderer.listen(this.wrapper, 'mousedown', (event: MouseEvent) => {\n if (this.wrapper && this.wrapper.isSameNode(event.target as Node)) {\n this.hide();\n }\n });\n }\n }\n\n disableModality() {\n this.unbindMaskClickListener();\n this.cd.detectChanges();\n }\n\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n\n bindDocumentEscapeListener() {\n if (this.ddconfig.closeOnEscape) {\n this.documentEscapeListener = this.renderer.listen(this.document, 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.container) {\n this.hide();\n }\n });\n }\n }\n\n unbindDocumentEscapeListener() {\n if (this.documentEscapeListener) {\n this.documentEscapeListener();\n this.documentEscapeListener = null;\n }\n }\n\n onDestroy() {\n this.onContainerDestroy();\n if (this.componentRef && typeof this.componentRef.destroy === 'function') {\n this.componentRef.destroy();\n }\n }\n}\n\n@NgModule({\n imports: [DynamicDialog, SharedModule],\n exports: [DynamicDialog, SharedModule]\n})\nexport class DynamicDialogModule {}\n","import { InjectOptions, Injector, ProviderToken } from '@angular/core';\n\nexport class DynamicDialogInjector implements Injector {\n constructor(\n private _parentInjector: Injector,\n private _additionalTokens: WeakMap<any, any>\n ) {}\n\n get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions): T {\n const value = this._additionalTokens.get(token);\n\n if (value) return value;\n\n return this._parentInjector.get<any>(token, notFoundValue);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ApplicationRef, ComponentRef, EmbeddedViewRef, Inject, Injectable, Injector, Type, createComponent } from '@angular/core';\nimport { appendChild } from '@primeuix/utils';\nimport { DynamicDialog } from './dynamicdialog';\nimport { DynamicDialogConfig } from './dynamicdialog-config';\nimport { DynamicDialogInjector } from './dynamicdialog-injector';\nimport { DynamicDialogRef } from './dynamicdialog-ref';\n\n/**\n * Dynamic Dialog component methods.\n * @group Service\n */\n@Injectable()\nexport class DialogService {\n dialogComponentRefMap: Map<DynamicDialogRef<any>, ComponentRef<DynamicDialog>> = new Map();\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector,\n @Inject(DOCUMENT) private document: Document\n ) {}\n /**\n * Displays the dialog using the dynamic dialog object options.\n * @param {*} componentType - Dynamic component for content template.\n * @param {DynamicDialogConfig} config - DynamicDialog object.\n * @returns {DynamicDialogRef} DynamicDialog instance.\n * @group Method\n */\n public open<T, DataType = any, InputValuesType extends Record<string, any> = {}>(componentType: Type<T>, config: DynamicDialogConfig<DataType, InputValuesType>): DynamicDialogRef<T> | null {\n if (!this.duplicationPermission(componentType, config)) {\n return null;\n }\n\n const dialogRef = this.appendDialogComponentToBody<T>(config);\n\n const componentRefInstance = this.dialogComponentRefMap.get(dialogRef);\n if (componentRefInstance) {\n componentRefInstance.instance.childComponentType = componentType as Type<object>;\n componentRefInstance.instance.inputValues = config.inputValues || {};\n }\n\n return dialogRef;\n }\n /**\n * Returns the dynamic dialog component instance.\n * @param {DynamicDialogRef} ref - DynamicDialog instance.\n * @group Method\n */\n public getInstance(ref: DynamicDialogRef<any>) {\n return this.dialogComponentRefMap.get(ref)?.instance;\n }\n\n private appendDialogComponentToBody<T>(config: DynamicDialogConfig): DynamicDialogRef<T> {\n const map = new WeakMap();\n map.set(DynamicDialogConfig, config);\n\n const dialogRef = new DynamicDialogRef<T>();\n map.set(DynamicDialogRef, dialogRef);\n\n const sub = dialogRef.onClose.subscribe(() => {\n this.dialogComponentRefMap.get(dialogRef)?.instance.close();\n });\n\n const destroySub = dialogRef.onDestroy.subscribe(() => {\n this.removeDialogComponentFromBody(dialogRef);\n destroySub.unsubscribe();\n sub.unsubscribe();\n });\n\n const componentRef = createComponent(DynamicDialog, {\n environmentInjector: this.appRef.injector,\n elementInjector: new DynamicDialogInjector(this.injector, map)\n });\n\n this.appRef.attachView(componentRef.hostView);\n\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n if (!config.appendTo || config.appendTo === 'body') {\n this.document.body.appendChild(domElem);\n } else {\n appendChild(config.appendTo, domElem);\n }\n\n this.dialogComponentRefMap.set(dialogRef, componentRef);\n\n return dialogRef;\n }\n\n private removeDialogComponentFromBody(dialogRef: DynamicDialogRef<any>) {\n if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {\n return;\n }\n\n const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);\n if (dialogComponentRef) {\n this.appRef.detachView(dialogComponentRef.hostView);\n dialogComponentRef.destroy();\n dialogComponentRef.changeDetectorRef.detectChanges();\n }\n this.dialogComponentRefMap.delete(dialogRef);\n }\n\n private duplicationPermission(componentType: Type<any>, config: DynamicDialogConfig): boolean {\n if (config.duplicate) {\n return true;\n }\n let permission = true;\n for (const [, value] of this.dialogComponentRefMap) {\n if (value.instance.childComponentType === componentType) {\n permission = false;\n break;\n }\n }\n return permission;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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