@obliczeniowo/elementary
Version:
Library made in Angular version 19
1 lines • 22.9 kB
Source Map (JSON)
{"version":3,"file":"obliczeniowo-elementary-dialogs.mjs","sources":["../../../../projects/components/dialogs/class/dialog-overlay-ref.ts","../../../../projects/components/dialogs/components/dialog/dialog.component.ts","../../../../projects/components/dialogs/components/dialog/dialog.component.html","../../../../projects/components/dialogs/components/dialog-header/dialog-header.component.ts","../../../../projects/components/dialogs/components/dialog-header/dialog-header.component.html","../../../../projects/components/dialogs/services/dialog.service.ts","../../../../projects/components/dialogs/components/dialog-wrapper/dialog-wrapper.component.ts","../../../../projects/components/dialogs/components/dialog-wrapper/dialog-wrapper.component.html","../../../../projects/components/dialogs/components/message-dialog/message-dialog.component.ts","../../../../projects/components/dialogs/components/message-dialog/message-dialog.component.html","../../../../projects/components/dialogs/dialogs.module.ts","../../../../projects/components/dialogs/obliczeniowo-elementary-dialogs.ts"],"sourcesContent":["import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplateRef, Type } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { DialogComponent } from '../components/dialog/dialog.component';\r\nimport { OverlayCloseEvent } from '../interfaces/dialog-close-event';\r\n\r\nexport class DialogOverlayRef<R = any, T = any> {\r\n afterClosed = new Subject<OverlayCloseEvent<R | undefined>>();\r\n\r\n constructor(\r\n public overlay: OverlayRef,\r\n public content: string | TemplateRef<any> | Type<any>,\r\n public data: T | undefined // pass data to modal\r\n ) {\r\n overlay.backdropClick().subscribe(() => this._close('backdropClick', undefined));\r\n }\r\n\r\n close(data?: R | undefined): void {\r\n this._close('close', data);\r\n }\r\n\r\n private _close(type: 'backdropClick' | 'close', data: R | undefined): void {\r\n const overlayContainer = this.overlay.hostElement?.parentElement;\r\n if (overlayContainer) {\r\n DialogComponent.onClose(overlayContainer);\r\n }\r\n\r\n this.overlay.dispose();\r\n this.afterClosed.next({\r\n type,\r\n data\r\n });\r\n\r\n this.afterClosed.complete();\r\n }\r\n}\r\n","import { OverlayContainer } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { DialogOverlayRef } from '../../class/dialog-overlay-ref';\r\n\r\n@Component({\r\n selector: 'obl-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class DialogComponent implements OnInit {\r\n private static dialogsCount: number = 0;\r\n\r\n private static onOpen() {\r\n DialogComponent.dialogsCount++;\r\n }\r\n\r\n static onClose(overlayContainer: HTMLElement) {\r\n if (DialogComponent.dialogsCount) {\r\n DialogComponent.dialogsCount--;\r\n }\r\n if (!DialogComponent.dialogsCount) {\r\n overlayContainer.classList.remove('modal');\r\n }\r\n }\r\n\r\n @Output() closed = new EventEmitter();\r\n\r\n afterClosed = new Subject<any>();\r\n\r\n contentType!: 'template' | 'string' | 'component';\r\n content!: string | TemplateRef<any> | Type<any>;\r\n context: any;\r\n\r\n @ViewChild('viewContainerRef', { read: ViewContainerRef })\r\n viewContainerRef!: ViewContainerRef;\r\n\r\n protected component: any;\r\n\r\n constructor(\r\n private readonly ref: DialogOverlayRef,\r\n private readonly overlayContainer: OverlayContainer\r\n ) {\r\n DialogComponent.onOpen();\r\n }\r\n\r\n close(): void {\r\n this._close('close', undefined);\r\n this.closed.emit()\r\n }\r\n\r\n ngOnInit(): void {\r\n this.content = this.ref.content;\r\n\r\n if (typeof this.content === 'string') {\r\n this.contentType = 'string';\r\n } else if (this.content instanceof TemplateRef) {\r\n this.contentType = 'template';\r\n this.context = {\r\n close: this.close.bind(this.ref)\r\n };\r\n } else {\r\n this.contentType = 'component';\r\n this.createComponent(this.content);\r\n }\r\n\r\n this.overlayContainer.getContainerElement().classList.add('modal');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._close('close');\r\n this.ref?.close();\r\n }\r\n\r\n get template(): TemplateRef<any> {\r\n return this.content as unknown as TemplateRef<any>;\r\n }\r\n\r\n private createComponent(component: Type<any>): ComponentRef<any> {\r\n this.component = this.viewContainerRef.createComponent<any>(\r\n component,\r\n {\r\n injector: this.viewContainerRef.injector\r\n }\r\n );\r\n return this.component;\r\n }\r\n\r\n private _close(type: 'backdropClick' | 'close', data?: any): void {\r\n DialogComponent.onClose(this.overlayContainer.getContainerElement());\r\n this.closed.emit();\r\n\r\n this.ref.overlay.dispose();\r\n this.afterClosed.next({\r\n type,\r\n data\r\n });\r\n\r\n this.afterClosed.complete();\r\n }\r\n}\r\n","<div class=\"dialog modal-content\">\r\n <ng-container #viewContainerRef></ng-container>\r\n\r\n @if (contentType === 'template') {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n ></ng-container>\r\n } @else if(contentType === 'string') {\r\n {{ content }}\r\n }\r\n</div>\r\n","import { Component, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'obl-dialog-header',\r\n templateUrl: './dialog-header.component.html',\r\n styleUrls: ['./dialog-header.component.scss'],\r\n standalone: false\r\n})\r\nexport class DialogHeaderComponent {\r\n @Output() closeAction: EventEmitter<void> = new EventEmitter<void>();\r\n}\r\n","<h2>\r\n <ng-content select=\"title\"></ng-content>\r\n</h2>\r\n<button oblButton (click)=\"closeAction.emit()\">\r\n <obl-icon name=\"cancel\"></obl-icon>\r\n</button>\r\n","import { GlobalPositionStrategy, Overlay, OverlayConfig } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector, TemplateRef, Type } from '@angular/core';\r\nimport { DialogOverlayRef } from '../class/dialog-overlay-ref';\r\nimport { DialogComponent } from '../components/dialog/dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n constructor(private readonly overlay: Overlay, private readonly injector: Injector) { }\r\n\r\n open<R = any, T = any>(\r\n content: string | TemplateRef<any> | Type<any>,\r\n options?: {\r\n data?: T,\r\n config?: OverlayConfig\r\n }\r\n ): DialogOverlayRef<R> {\r\n const configs = new OverlayConfig({\r\n ...{\r\n hasBackdrop: true,\r\n panelClass: ['modal', 'is-active'],\r\n backdropClass: 'modal-background',\r\n width: '500px',\r\n maxHeight: '100vh',\r\n maxWidth: '100vw',\r\n positionStrategy: new GlobalPositionStrategy(),\r\n },\r\n ...options?.config\r\n });\r\n\r\n const overlayRef = this.overlay.create(configs);\r\n\r\n const dialogOverlayRef = new DialogOverlayRef<R, T>(overlayRef, content, options?.data);\r\n\r\n const injector = this.createInjector(dialogOverlayRef, this.injector);\r\n overlayRef.attach(new ComponentPortal(DialogComponent, null, injector));\r\n\r\n return dialogOverlayRef;\r\n }\r\n\r\n createInjector(ref: DialogOverlayRef, inj: Injector): Injector {\r\n return Injector.create({\r\n providers: [\r\n {\r\n provide: Overlay,\r\n useValue: this.overlay\r\n },\r\n {\r\n provide: DialogOverlayRef,\r\n useValue: ref\r\n }\r\n ],\r\n parent: inj\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, TemplateRef, ViewChild, Output, EventEmitter, input } from '@angular/core';\r\n\r\nimport { DialogOverlayRef } from './../../class/dialog-overlay-ref';\r\nimport { DialogService } from './../../services/dialog.service';\r\nimport { OverlayConfigExt } from '../../interfaces/config-ext';\r\n\r\n/**\r\n * A simple dialog wrapper to use with ng-content to make a job done\r\n *\r\n * @example\r\n *\r\n * <obl-dialog-wrapper header=\"I want to play a game\" #dialogWrapper>\r\n * <div style=\"padding: 10px\">Life or die make your choice</div>\r\n * <div style=\"display: flex; justify-content: flex-end; padding: 10px; background-color: aliceblue;\">\r\n * <button oblButton (click)=\"dialogWrapper.close()\">Life</button>\r\n * <button oblButton (click)=\"dialogWrapper.close()\">Die</button>\r\n * </div>\r\n * </obl-dialog-wrapper>\r\n *\r\n * <button (click)=\"dialogWrapper.open()\" oblButton>Open dialog things</button>\r\n */\r\n@Component({\r\n selector: 'obl-dialog-wrapper',\r\n templateUrl: './dialog-wrapper.component.html',\r\n styleUrls: ['./dialog-wrapper.component.scss'],\r\n standalone: false\r\n})\r\nexport class DialogWrapperComponent implements OnInit {\r\n header = input.required<string>();\r\n\r\n @Output() closed = new EventEmitter();\r\n\r\n @Output() cancel = new EventEmitter();\r\n\r\n @ViewChild('dialog') template!: TemplateRef<any>;\r\n\r\n data: any;\r\n\r\n protected opened = false;\r\n protected dialogRef: DialogOverlayRef<any, any> | undefined;\r\n\r\n constructor(private readonly dialog: DialogService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dialogRef?.close();\r\n }\r\n\r\n open(config?: OverlayConfigExt): void {\r\n this.dialogRef = this.dialog.open(this.template, {\r\n config: {\r\n ...{\r\n width: '400px'\r\n },\r\n ...config\r\n }\r\n });\r\n this.opened = true;\r\n this.data = config?.data;\r\n }\r\n\r\n close(): void {\r\n this.dialogRef?.close();\r\n this.closed.emit();\r\n }\r\n}\r\n","<ng-template #dialog>\r\n <div class=\"content\">\r\n <obl-dialog-header (closeAction)=\"close(); cancel.emit()\">\r\n <ng-container ngProjectAs=\"title\">\r\n {{ header() }}\r\n </ng-container>\r\n </obl-dialog-header>\r\n <ng-content></ng-content>\r\n </div>\r\n</ng-template>\r\n","import { OverlayConfigExt } from '../../interfaces/config-ext';\r\nimport { DialogWrapperComponent } from './../dialog-wrapper/dialog-wrapper.component';\r\nimport { Component, input, ViewChild } from '@angular/core';\r\n\r\n/**\r\n * Just message dialog that you can use by HTML:\r\n *\r\n * @example\r\n *\r\n * <obl-message-dialog header=\"I want to play a game\" #message>\r\n * <ng-container message>\r\n * Live or die make your choice\r\n * </ng-container>\r\n * <ng-container buttons>\r\n * <button oblButton (click)=\"message.close()\">Live</button>\r\n * <button oblButton (click)=\"message.close()\">Die</button>\r\n * </ng-container>\r\n * </obl-message-dialog>\r\n *\r\n * <button (click)=\"message.open({ width: '600px' })\" oblButton>Open dialog things</button>\r\n */\r\n@Component({\r\n selector: 'obl-message-dialog',\r\n templateUrl: './message-dialog.component.html',\r\n styleUrls: ['./message-dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class MessageDialogComponent {\r\n header = input.required<string>();\r\n\r\n @ViewChild(DialogWrapperComponent) protected dialog!: DialogWrapperComponent;\r\n\r\n data: any;\r\n\r\n open(config?: OverlayConfigExt | undefined): void {\r\n this.dialog.open(config);\r\n this.data = config?.data;\r\n }\r\n\r\n close(): void {\r\n this.dialog.close();\r\n }\r\n}\r\n","<obl-dialog-wrapper [header]=\"header()\" #dialogWrapper>\r\n <div class=\"obl-dialog-message\" style=\"padding: 20px 10px 10px 10px;\">\r\n <ng-content select=\"[message]\"></ng-content>\r\n </div>\r\n <div class=\"obl-dialog-buttons\">\r\n <ng-content select=\"[buttons]\"></ng-content>\r\n </div>\r\n</obl-dialog-wrapper>","import { IconsModule } from '@obliczeniowo/elementary/icons';\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogComponent } from './components/dialog/dialog.component';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { DialogHeaderComponent } from './components/dialog-header/dialog-header.component';\r\nimport { DialogWrapperComponent } from './components/dialog-wrapper/dialog-wrapper.component';\r\nimport { MessageDialogComponent } from './components/message-dialog/message-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n DialogComponent,\r\n DialogHeaderComponent,\r\n DialogWrapperComponent,\r\n MessageDialogComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n ButtonsModule,\r\n IconsModule\r\n ],\r\n exports: [\r\n DialogComponent,\r\n DialogHeaderComponent,\r\n DialogWrapperComponent,\r\n MessageDialogComponent,\r\n ],\r\n})\r\nexport class DialogsModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DialogOverlayRef","i2","i1","i1.DialogService","i2.DialogHeaderComponent","i1.DialogWrapperComponent"],"mappings":"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"}