@huntsman-cancer-institute/dialog 12.11.9-SNAPSHOT → 12.11.9-SNAPSHOT-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -569,8 +569,17 @@
569
569
  // set up a default if needed
570
570
  if (!config) {
571
571
  config = new dialog.MatDialogConfig();
572
+ }
573
+ // if the config doesn't have these values set, set defaults
574
+ // but config can exist without them if want to pass message(s) without
575
+ // overriding defaults
576
+ if (!config.width) {
572
577
  config.width = '33vw';
578
+ }
579
+ if (!config.minWidth) {
573
580
  config.minWidth = '300px';
581
+ }
582
+ if (!config.disableClose) {
574
583
  config.disableClose = true;
575
584
  }
576
585
  if (config.data) {
@@ -1 +1 @@
1
- {"version":3,"file":"huntsman-cancer-institute-dialog.umd.js","sources":["ng://@huntsman-cancer-institute/dialog/model/dialog-type.model.ts","ng://@huntsman-cancer-institute/dialog/model/generic-dialog-action.model.ts","ng://@huntsman-cancer-institute/dialog/alert/alert-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/spinner/spinner-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/spinner/spinner-dialog.component.html","ng://@huntsman-cancer-institute/dialog/custom/custom-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/generic/generic-container-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/generic/generic-container-dialog.component.html","ng://@huntsman-cancer-institute/dialog/model/confirm-type.model.ts","ng://@huntsman-cancer-institute/dialog/model/base-generic-container-dialog.ts","ng://@huntsman-cancer-institute/dialog/confirm/confirm-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/service/dialog.service.ts","ng://@huntsman-cancer-institute/dialog/save-footer/save-footer.component.ts","ng://@huntsman-cancer-institute/dialog/dialog.module.ts"],"sourcesContent":["\r\n\r\nexport enum DialogType {\r\n ERROR = 'Error',\r\n WARNING = 'Warning',\r\n ALERT = 'Alert',\r\n SUCCESS = 'Succeed',\r\n FAILED = 'Failed',\r\n CONFIRM = 'Confirm',\r\n INFO = 'Info',\r\n VALIDATION = 'Validation Error',\r\n}\r\n","import {MatDialogRef} from '@angular/material/dialog';\r\nimport {FormGroup} from '@angular/forms';\r\n\r\nexport enum ActionType {\r\n PRIMARY = 'primary',\r\n SECONDARY = 'accent'\r\n}\r\nexport interface GDActionConfig {\r\n formSource?: FormGroup;\r\n actions: GDAction[];\r\n}\r\nexport interface GDAction {\r\n type: ActionType;\r\n internalAction?: string;\r\n internalActionReturnValue?: boolean | any;\r\n externalAction?: (dialogRef?: MatDialogRef<any>) => void | string;\r\n icon?: string;\r\n name: string;\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject, OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {DialogPosition, MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {DialogType} from '../model/dialog-type.model';\r\nimport {ActionType} from '../model/generic-dialog-action.model';\r\n\r\n@Component({\r\n selector: 'hci-alert-dialog',\r\n template: `\r\n <div class=\"full-height full-width d-flex flex-column\">\r\n <div class=\"full-width dialog-header-colors no-margin no-padding\">\r\n <div #topmostLeftmost mat-dialog-title (mousedown)=\"onMouseDownHeader($event)\"\r\n class=\"force-flex-container-row align-center full-width padding {{ movingDialog ? 'grabbed' : 'grabbable' }}\">\r\n <div class=\"d-flex flex-row align-items-center padded\">\r\n <img *ngIf=\"icon\" class=\"icon\" [src]=\"this.icon\">\r\n <div *ngIf=\"!icon\">\r\n <i *ngIf=\"dialogType === type.ALERT\" class=\"fa fa-exclamation fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.SUCCESS\" class=\"fa fa-check-circle fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.FAILED || dialogType === type.ERROR\" class=\"fa fa-exclamation-triangle fa-2x i-margin i-color-red\"></i>\r\n <i *ngIf=\"dialogType === type.WARNING || dialogType === type.VALIDATION\" class=\"fa fa-exclamation-triangle fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.INFO\" class=\"fa fa-info-circle fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.CONFIRM\" class=\"fa fa-check fa-2x i-margin i-color-blue\"></i>\r\n </div>\r\n <h1 *ngIf=\"dialogType !== type.ERROR\"\r\n style=\"margin:0;\">{{this.title ? this.title : defaultTitle}}</h1>\r\n <h1 *ngIf=\"dialogType === type.ERROR\"\r\n style=\"margin:0; color: Red\">{{this.title ? this.title : defaultTitle}}</h1>\r\n </div>\r\n </div>\r\n </div>\r\n <mat-dialog-content class=\"flex-grow-1 no-margin no-padding\">\r\n <hr>\r\n <div class=\"flex-grow-1 full-width extra-padded message\">\r\n <div *ngFor=\"let line of message\" class=\"full-width\"\r\n [innerHTML]=\"line\" style=\"white-space: pre-line\">\r\n </div>\r\n </div>\r\n <br>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"d-flex justify-content-center no-margin no-padding\">\r\n <save-footer *ngIf=\"dialogType !== type.CONFIRM\" class=\"centered-text large-size\"\r\n (saveClicked)=\"onClickOk()\" name=\"Ok\"></save-footer>\r\n <save-footer *ngIf=\"dialogType === type.CONFIRM\" class=\"centered-text large-size\"\r\n (saveClicked)=\"onClickYes()\" name=\"Yes\"></save-footer>\r\n <save-footer *ngIf=\"dialogType === type.CONFIRM\" [actionType]=\"actionType\"\r\n class=\"centered-text large-size\" (saveClicked)=\"onClickNo()\"\r\n name=\"No\"></save-footer>\r\n </mat-dialog-actions>\r\n </div>\r\n `,\r\n styles: [`\r\n hr {\r\n width: 98%;\r\n }\r\n\r\n .i-margin {\r\n margin-left: 0.3em;\r\n margin-right: 0.3em;\r\n }\r\n .i-color-blue {\r\n color: #0077B3FF;\r\n }\r\n .i-color-red {\r\n color: red;\r\n }\r\n\r\n .centered-text { text-align: center; }\r\n\r\n .no-padding{\r\n padding:0;\r\n\r\n }\r\n\r\n .no-margin{\r\n margin: 0;\r\n }\r\n\r\n .grabbable {\r\n cursor: move;\r\n cursor: grab;\r\n cursor: -moz-grab;\r\n cursor: -webkit-grab;\r\n }\r\n .grabbed {\r\n cursor: move;\r\n cursor: grabbing;\r\n cursor: -moz-grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n\r\n .force-flex-container-row{\r\n display:flex !important;\r\n }\r\n .extra-padded {\r\n padding: 0.6em 0.9em 0.6em 0.9em;\r\n }\r\n .large-size {\r\n font-size: large;\r\n }\r\n .primary-action {\r\n font-size: large;\r\n }\r\n .secondary-action {\r\n font-size: large;\r\n }\r\n .message {\r\n color: #0F244DFF;\r\n }\r\n `]\r\n}) export class AlertDialogComponent implements OnInit {\r\n public type: any = DialogType;\r\n\r\n @ViewChild('topmostLeftmost', {static: false}) topmostLeftmost: ElementRef;\r\n\r\n public message: string[] = null;\r\n public title = '';\r\n public icon = '';\r\n public dialogType = '';\r\n public defaultTitle = '';\r\n public actionType: any = ActionType.SECONDARY;\r\n\r\n originalXClick = 0;\r\n originalYClick = 0;\r\n protected positionX = 0;\r\n protected positionY = 0;\r\n movingDialog = false;\r\n\r\n constructor(public dialogRef: MatDialogRef<AlertDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data,\r\n private changeDetector: ChangeDetectorRef) {\r\n if (data) {\r\n this.message = Array.isArray(data.message) ? data.message : [data.message];\r\n this.title = data.title;\r\n this.icon = data.icon;\r\n this.dialogType = data.dialogType;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.dialogType) {\r\n this.defaultTitle = this.dialogType;\r\n }\r\n for (let i = 0; i < this.message.length; i++) {\r\n this.message[i] = this.message[i].replace(/\\n/g, '<br>') + '<br>';\r\n }\r\n }\r\n\r\n onClickOk(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onClickYes(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onClickNo(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n onMouseDownHeader(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n this.positionX = this.topmostLeftmost.nativeElement.offsetLeft;\r\n this.positionY = this.topmostLeftmost.nativeElement.offsetTop;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n this.movingDialog = true;\r\n this.changeDetector.detach();\r\n }\r\n @HostListener('window:mousemove', ['$event'])\r\n onMouseMove(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n if (this.movingDialog) {\r\n this.positionX += event.screenX - this.originalXClick;\r\n this.positionY += event.screenY - this.originalYClick;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n const newDialogPosition: DialogPosition = {\r\n left: '' + this.positionX + 'px',\r\n top: '' + this.positionY + 'px',\r\n };\r\n\r\n this.dialogRef.updatePosition(newDialogPosition);\r\n }\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n onMouseUp(): void {\r\n this.movingDialog = false;\r\n this.changeDetector.reattach();\r\n }\r\n}\r\n","import {Component, Inject, Input} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'hci-spinner-dialog',\r\n templateUrl: 'spinner-dialog.component.html',\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .full-height { height: 100%; }\r\n .full-width { width: 100%; }\r\n\r\n .vertical-center { vertical-align: middle; }\r\n\r\n .padded {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n }\r\n\r\n .not-rendered {\r\n padding: 0;\r\n margin: 0;\r\n\r\n min-height: 0;\r\n max-height: 0;\r\n height: 0;\r\n }\r\n\r\n `]\r\n})\r\nexport class SpinnerDialogComponent {\r\n @Input() strokeWidth = 3;\r\n @Input() diameter = 30;\r\n\r\n @Input() message = 'Loading...';\r\n\r\n constructor(private dialogRef: MatDialogRef<SpinnerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data) {\r\n if (this.data) {\r\n if (!!this.data.message) {\r\n this.message = this.data.message;\r\n }\r\n if (!!this.data.diameter) {\r\n this.diameter = this.data.diameter;\r\n }\r\n if (!!this.data.strokeWidth) {\r\n this.strokeWidth = this.data.strokeWidth;\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div mat-dialog-title class=\"not-rendered\">\r\n<!--<div mat-dialog-title>-->\r\n</div>\r\n<div mat-dialog-content class=\"full-height padded\">\r\n <div class=\"full-width full-height t\">\r\n <div class=\"tr\">\r\n <div class=\"td vertical-center\" [style.height.px]=\"diameter + 5\">\r\n <mat-spinner [hidden]=\"false\" strokeWidth=\"{{strokeWidth}}\" [diameter]=\"diameter\"></mat-spinner>\r\n </div>\r\n <div class=\"td vertical-center\">\r\n {{message}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"not-rendered\">\r\n<!--<div mat-dialog-actions>-->\r\n</div>\r\n","import {DialogPosition, MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {\r\n ChangeDetectorRef,\r\n Component, ElementRef,\r\n HostListener,\r\n Inject, OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport {ActionType, GDAction, GDActionConfig} from '../model/generic-dialog-action.model';\r\nimport {FormGroup} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'hci-custom-dialog',\r\n template: `\r\n <div class=\"d-flex full-height full-width flex-column\">\r\n <div *ngIf=\"this.title\" class=\"full-width generic-dialog-header-colors no-margin no-padding\">\r\n <div #topmostLeftmost mat-dialog-title (mousedown)=\"onMouseDownHeader($event)\"\r\n class=\"force-flex-container-row align-items-center full-width p-2 {{ movingDialog ? 'grabbed' : 'grabbable' }}\">\r\n <div class=\"-flex flex-row align-items-center padded\">\r\n <img *ngIf=\"icon\" class=\"icon\" [src]=\"this.icon\">\r\n <div *ngIf=\"icon && icon.substr(0, 2) === '<i'\" class=\"i-class\" [innerHTML]=\"icon\" ></div>\r\n <h3 style=\"margin:0;\">{{this.title}}</h3>\r\n </div>\r\n <div class=\"flex-grow-1\"></div>\r\n <div class=\"padded\" (click)=\"onClose()\">\r\n <i class=\"exit fas fa-times\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <mat-dialog-content class=\"flex-grow-1 full-width no-margin p-2\" style=\"min-height: 6em;\">\r\n <div #anchor></div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions *ngIf=\"actions && actions.length > 0\"\r\n class=\"d-flex flex-row justify-content-end no-margin no-padding generic-dialog-footer-colors\">\r\n <div *ngFor=\"let action of actions\">\r\n <save-footer *ngIf=\"action.type === actionType.PRIMARY;else secondary\"\r\n [actionType]=\"action.type\"\r\n [icon]=\"action.icon\"\r\n [disableSave]=\"primaryDisable\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [name]=\"action.name\">\r\n </save-footer>\r\n <!-- to avoid issue with multiple spinner or dirty notes-->\r\n <ng-template #secondary>\r\n <save-footer [actionType]=\"action.type\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [icon]=\"action.icon\"\r\n [disableSave]=\"secondaryDisable\"\r\n [name]=\"action.name\">\r\n </save-footer>\r\n </ng-template>\r\n </div>\r\n </mat-dialog-actions>\r\n </div>\r\n `,\r\n styles: [`\r\n .centered-text { text-align: center; }\r\n\r\n .no-padding{\r\n padding:0;\r\n\r\n }\r\n\r\n .no-margin{\r\n margin: 0;\r\n }\r\n\r\n .grabbable {\r\n cursor: move;\r\n cursor: grab;\r\n cursor: -moz-grab;\r\n cursor: -webkit-grab;\r\n }\r\n .grabbed:active {\r\n cursor: grabbing;\r\n cursor: -moz-grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n\r\n .force-flex-container-row{\r\n display:flex !important;\r\n }\r\n\r\n .exit{\r\n max-width: 20px;\r\n cursor: pointer;\r\n }\r\n\r\n .i-class {\r\n margin-left: 0.3em;\r\n margin-right: 0.3em;\r\n }\r\n mat-dialog-content {\r\n max-height: 100vh !important;\r\n max-width: 100vw !important ;\r\n }\r\n `]\r\n})\r\n\r\nexport class CustomDialogComponent implements OnInit {\r\n @ViewChild('anchor', { read: ViewContainerRef, static : true }) vcr: ViewContainerRef;\r\n @ViewChild('topmostLeftmost', {static: false}) topmostLeftmost: ElementRef;\r\n public title = '';\r\n public icon = '';\r\n\r\n public actionType: any = ActionType;\r\n\r\n originalXClick = 0;\r\n originalYClick = 0;\r\n movingDialog = false;\r\n protected positionX = 0;\r\n protected positionY = 0;\r\n context: any;\r\n\r\n private tempRef: TemplateRef<any>;\r\n public actions: GDAction[] = [];\r\n public form: FormGroup;\r\n public get primaryDisable(): boolean {\r\n return this.form && this.form.invalid;\r\n }\r\n // todo need make this customizable\r\n public get secondaryDisable(): boolean {\r\n return false;\r\n }\r\n\r\n constructor(public dialogRef: MatDialogRef<CustomDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private changeDetector: ChangeDetectorRef) {\r\n this.title = data.title;\r\n this.tempRef = data.templateRef;\r\n this.icon = data.icon;\r\n this.context = data.context;\r\n const actionConfig: GDActionConfig = data.actionConfig ? data.actionConfig as GDActionConfig : null;\r\n this.actions = actionConfig ? actionConfig.actions : [];\r\n this.form = actionConfig && actionConfig.formSource ? actionConfig.formSource : null;\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.context.dialog = this.dialogRef;\r\n this.vcr.createEmbeddedView<any>(this.tempRef, this.context);\r\n\r\n }\r\n\r\n onClose() {\r\n this.dialogRef.close();\r\n }\r\n\r\n onMouseDownHeader(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n this.positionX = this.topmostLeftmost.nativeElement.offsetLeft;\r\n this.positionY = this.topmostLeftmost.nativeElement.offsetTop;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n this.movingDialog = true;\r\n this.changeDetector.detach();\r\n }\r\n @HostListener('window:mousemove', ['$event'])\r\n onMouseMove(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n if (this.movingDialog) {\r\n this.positionX += event.screenX - this.originalXClick;\r\n this.positionY += event.screenY - this.originalYClick;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n const newDialogPosition: DialogPosition = {\r\n left: '' + this.positionX + 'px',\r\n top: '' + this.positionY + 'px',\r\n };\r\n\r\n this.dialogRef.updatePosition(newDialogPosition);\r\n }\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n onMouseUp(): void {\r\n this.movingDialog = false;\r\n this.changeDetector.reattach();\r\n }\r\n\r\n executeAction(action: GDAction): void {\r\n if (action.externalAction) {\r\n action.externalAction(this.dialogRef);\r\n }\r\n if (action.internalAction && action.internalAction === 'onClose') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild, ComponentRef, ChangeDetectorRef, HostBinding\r\n} from '@angular/core';\r\nimport {MatDialogRef, MatDialog, MAT_DIALOG_DATA, DialogPosition} from '@angular/material/dialog';\r\n\r\nimport {Router} from '@angular/router';\r\nimport {BaseGenericContainerDialog} from '../model/base-generic-container-dialog';\r\nimport {ActionType, GDAction} from '../model/generic-dialog-action.model';\r\n\r\n@Component({\r\n selector: 'hci-generic-container-dialog',\r\n templateUrl: './generic-container-dialog.component.html',\r\n styles: [`\r\n\r\n .no-padding{\r\n padding:0;\r\n }\r\n .no-margin{\r\n margin: 0;\r\n }\r\n .grabbable {\r\n cursor: move;\r\n cursor: grab;\r\n cursor: -moz-grab;\r\n cursor: -webkit-grab;\r\n }\r\n .grabbed:active {\r\n cursor: move;\r\n cursor: grabbing;\r\n cursor: -moz-grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n .exit{\r\n max-width: 20px;\r\n cursor: pointer;\r\n }\r\n .i-class {\r\n margin-left: 0.3em;\r\n margin-right: 0.3em;\r\n }\r\n mat-dialog-content {\r\n max-height: 100% !important;\r\n }\r\n\r\n `]\r\n})\r\nexport class GenericContainerDialogComponent implements OnInit, OnDestroy {\r\n\r\n @HostBinding('class') classList = 'd-flex flex-column flex-grow-1 flex-shrink-1';\r\n\r\n @ViewChild('topmostLeftmost', {static: false}) topmostLeftmost: ElementRef;\r\n\r\n type = ActionType;\r\n title: string;\r\n icon: string;\r\n dialogContentBluePrint: any;\r\n actions: GDAction[] = [];\r\n originalXClick = 0;\r\n originalYClick = 0;\r\n dialogContent: BaseGenericContainerDialog;\r\n\r\n protected positionX = 0;\r\n protected positionY = 0;\r\n movingDialog = false;\r\n useSaveFooter: boolean;\r\n\r\n\r\n constructor(private dialog: MatDialog,\r\n private router: Router,\r\n private changeDetector: ChangeDetectorRef,\r\n private dialogRef: MatDialogRef<GenericContainerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data) {\r\n if (data) {\r\n this.dialogContentBluePrint = data.dialogContent;\r\n this.icon = data.icon;\r\n this.title = data.title;\r\n this.useSaveFooter = data.actionConfig ? data.actionConfig.useSaveFooter : false;\r\n this.actions = data.actionConfig ? data.actionConfig.actions as GDAction[] : [];\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n createdComponent(event: ComponentRef<any>) {\r\n this.dialogContent = (event.instance as BaseGenericContainerDialog);\r\n }\r\n\r\n executeAction(action: GDAction): void {\r\n if (action.externalAction) {\r\n action.externalAction();\r\n }\r\n if (action.internalAction) {\r\n const internalAction: string = action.internalAction;\r\n if (action.internalAction === 'cancel' || action.internalAction === 'onClose') {\r\n if (this.dialogContent[internalAction]) {\r\n this.dialogContent[internalAction]();\r\n } else {\r\n this.onClose();\r\n }\r\n } else {\r\n if (typeof action.internalActionReturnValue !== 'undefined') {\r\n if (action.internalActionReturnValue){\r\n this.dialogContent[internalAction](action.internalActionReturnValue);\r\n }\r\n }else {\r\n this.dialogContent[internalAction]();\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n onMouseDownHeader(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n this.positionX = this.topmostLeftmost.nativeElement.offsetLeft;\r\n this.positionY = this.topmostLeftmost.nativeElement.offsetTop;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n this.movingDialog = true;\r\n this.changeDetector.detach();\r\n }\r\n @HostListener('window:mousemove', ['$event'])\r\n onMouseMove(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n if (this.movingDialog) {\r\n this.positionX += event.screenX - this.originalXClick;\r\n this.positionY += event.screenY - this.originalYClick;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n const newDialogPosition: DialogPosition = {\r\n left: '' + this.positionX + 'px',\r\n top: '' + this.positionY + 'px',\r\n };\r\n\r\n this.dialogRef.updatePosition(newDialogPosition);\r\n }\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n onMouseUp(): void {\r\n this.movingDialog = false;\r\n this.changeDetector.reattach();\r\n }\r\n\r\n onClose() {\r\n this.dialogRef.close();\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}\r\n","<div class=\"full-height full-width d-flex flex-column\" style=\"height: 100%;\">\r\n <div class=\"full-width generic-dialog-header-colors no-margin no-padding\">\r\n <div #topmostLeftmost mat-dialog-title (mousedown)=\"onMouseDownHeader($event)\"\r\n class=\"d-flex align-items-center full-width\" [ngClass]=\"{'grabbed':movingDialog, 'grabbable': !movingDialog}\">\r\n <div class=\"d-flex flex-row align-items-center p-2\">\r\n <img class=\"icon\" *ngIf=\"icon && icon.substr(0, 2) !== '<i'\" [src]=\"icon\">\r\n <div *ngIf=\"icon && icon.substr(0, 2) === '<i'\" class=\"i-class\" [innerHTML]=\"icon\" ></div>\r\n <h3 style=\"margin:0;\">{{this.title ? this.title : this.dialogContent.innerTitle}}</h3>\r\n </div>\r\n <div class=\"flex-grow-1\"></div>\r\n <div class=\"padded\" (click)=\"onClose()\">\r\n <i class=\"exit fas fa-times\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-dialog-content class=\"flex-grow-1 no-margin no-padding\">\r\n <div class=\"flex-grow-1 full-height full-width padded\">\r\n <ndc-dynamic [ndcDynamicComponent]=\"this.dialogContentBluePrint\"\r\n [ndcDynamicInputs]=\"this.data\"\r\n (ndcDynamicCreated)=\"createdComponent($event)\">\r\n </ndc-dynamic>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions *ngIf=\"actions && actions.length > 0\"\r\n class=\"d-flex flex-row justify-content-end no-margin no-padding generic-dialog-footer-colors\">\r\n <div *ngFor=\"let action of actions\">\r\n <save-footer *ngIf=\"action.type === type.PRIMARY;else secondary\"\r\n [actionType]=\"action.type\"\r\n [icon]=\"action.icon\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [disableSave]=\"this.dialogContent.primaryDisable(action)\"\r\n [dirty]=\"this.dialogContent.dirty()\"\r\n [name]=\"action.name\"\r\n [showSpinner]=\"this.dialogContent.showSpinner\">\r\n </save-footer>\r\n <!-- to avoid issue with multiple spinner or dirty notes-->\r\n <ng-template #secondary>\r\n <save-footer [actionType]=\"action.type\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [icon]=\"action.icon\"\r\n [disableSave]=\"this.dialogContent.secondaryDisable(action)\"\r\n [name]=\"action.name\">\r\n\r\n </save-footer>\r\n </ng-template>\r\n </div>\r\n </mat-dialog-actions>\r\n</div>\r\n","\r\nexport enum ConfirmType {\r\n DELETE = 'delete',\r\n DELETE_W_MESSAGE = 'deleteMessage',\r\n DELETE_W_PROMPT = 'deletePrompt',\r\n DISCARD = 'discard',\r\n CONFIRM_AND_CLOSE = 'confirmAndClose',\r\n ADD = 'add',\r\n ALERT = 'alert',\r\n GENERIC = 'generic',\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {GDAction} from './generic-dialog-action.model';\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseGenericContainerDialog {\r\n @Input() inputData: any;\r\n public showSpinner: boolean = false;\r\n public innerTitle: string = '';\r\n\r\n public primaryDisable: (action?: GDAction) => boolean = (action) => {\r\n return false;\r\n }\r\n\r\n public secondaryDisable: (action?: GDAction) => boolean = (action) => {\r\n return false;\r\n }\r\n\r\n public dirty: () => boolean = () => { return false; };\r\n\r\n protected constructor() {\r\n }\r\n}\r\n","import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {Component, Inject} from '@angular/core';\r\nimport {BaseGenericContainerDialog} from '../model/base-generic-container-dialog';\r\nimport {ConfirmType} from '../model/confirm-type.model';\r\n\r\n@Component({\r\n selector: 'hci-confirm-dialog',\r\n template: `\r\n <div class=\"ri-confirm-body\">\r\n\r\n <div *ngIf=\"confirmType !== ConfirmType.ALERT; else alertBlock\">\r\n {{prompt}}\r\n <div class=\"ri-confirm-text-delete\">{{ message1 }}</div>\r\n {{message2}}\r\n </div>\r\n\r\n\r\n <div #alertBlock>\r\n <p>We are working to correct it. Contact CODE support if the error persists.</p>\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <strong>Show details</strong>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div>{{ message1 }}</div>\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n </div>\r\n `,\r\n styles: [`\r\n\r\n `]\r\n})\r\nexport class ConfirmDialogComponent extends BaseGenericContainerDialog {\r\n\r\n public ConfirmType = ConfirmType; // make enum available in template\r\n\r\n prompt = '';\r\n message1 = '';\r\n message2 = '';\r\n\r\n confirmType: ConfirmType = ConfirmType.GENERIC;\r\n\r\n constructor(private dialogRef: MatDialogRef<ConfirmDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data: any) {\r\n super();\r\n\r\n const temp = data.confirmType ? data.confirmType : ConfirmType.GENERIC;\r\n if (Object.values(ConfirmType).includes(temp as ConfirmType)){\r\n this.confirmType = temp;\r\n }\r\n\r\n this.prompt = data.prompt ? data.prompt : '';\r\n this.message1 = data.message1 ? data.message1 : '';\r\n this.message2 = data.message2 ? data.message2 : '';\r\n\r\n this.setupMessagesByType();\r\n }\r\n\r\n setupMessagesByType(){\r\n\r\n // by enum type, setup the messages/prompt\r\n switch (this.confirmType) {\r\n case ConfirmType.DELETE:\r\n this.prompt = 'The following will be deleted:';\r\n this.message2 = 'Continue?';\r\n break;\r\n case ConfirmType.DELETE_W_MESSAGE:\r\n this.prompt = 'The following will be deleted:';\r\n break;\r\n case ConfirmType.DELETE_W_PROMPT:\r\n // noop, take all of what was passed in\r\n break;\r\n case ConfirmType.DISCARD:\r\n this.prompt = '';\r\n this.message2 = 'Continue?';\r\n break;\r\n case ConfirmType.CONFIRM_AND_CLOSE:\r\n this.prompt = '';\r\n this.message2 = '';\r\n break;\r\n case ConfirmType.ADD:\r\n this.prompt = 'The following will be added:';\r\n this.message2 = 'Continue?';\r\n break;\r\n case ConfirmType.ALERT:\r\n // noop, will only use the message1 in a special template, and just ignore rest\r\n break;\r\n case ConfirmType.GENERIC:\r\n // TODO: either only use message 1 or just take all passed in...\r\n this.prompt = '';\r\n this.message2 = '';\r\n break;\r\n default:\r\n throw new Error('Confirm type doesn\\'t exist');\r\n }\r\n\r\n\r\n }\r\n\r\n onConfirmClick(value: boolean | any){\r\n this.dialogRef.close(value);\r\n }\r\n}\r\n","import {Injectable, TemplateRef} from '@angular/core';\r\nimport { MatDialogRef, MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AlertDialogComponent } from '../alert/alert-dialog.component';\r\nimport { SpinnerDialogComponent } from '../spinner/spinner-dialog.component';\r\nimport {CustomDialogComponent} from '../custom/custom-dialog.component';\r\nimport {GenericContainerDialogComponent} from '../generic/generic-container-dialog.component';\r\nimport {ActionType, GDActionConfig} from '../model/generic-dialog-action.model';\r\nimport {DialogType} from '../model/dialog-type.model';\r\nimport {ConfirmType} from '../model/confirm-type.model';\r\nimport {ConfirmDialogComponent} from '../confirm/confirm-dialog.component';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class DialogService {\r\n\r\n private _spinnerDialogIsOpen = false;\r\n private spinnerWorkItemCount = 0;\r\n private checkingSpinnerWorkItems = false;\r\n\r\n public spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n public get spinnerDialogIsOpen(): boolean {\r\n return this._spinnerDialogIsOpen;\r\n }\r\n\r\n constructor(private dialog: MatDialog) {\r\n }\r\n\r\n public alert(message: string | string[], title?: string,\r\n dialogType?: DialogType, icon?: string,\r\n config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, dialogType ? dialogType : DialogType.ALERT, icon, config);\r\n }\r\n\r\n public confirm(message: string | string[], title?: string,\r\n icon?: string, config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, DialogType.CONFIRM, icon, config);\r\n\r\n }\r\n\r\n /**\r\n * Creates a ConfirmDialogComponent with different display depending on\r\n * the ConfirmType.\r\n * @param title defaults to 'Confirm'\r\n * @param icon defaults to 'fa fa-info-circle'\r\n * @param config config.data can contain a prompt, message1 and/or\r\n * message2 according to the ConfirmType chosen\r\n * @param actionConfig sets up the dialog buttons and actions if you want\r\n * to override the defaults\r\n */\r\n public confirmByType(confirmType: ConfirmType, title?: string,\r\n icon?: string, config?: MatDialogConfig,\r\n actionConfig?: GDActionConfig): Observable<boolean> {\r\n if (!title){\r\n title = 'Confirm';\r\n }\r\n\r\n if (!icon){\r\n icon = 'fa fa-info-circle';\r\n }\r\n\r\n // set up a default if needed\r\n if (!config){\r\n config = new MatDialogConfig<any>();\r\n config.width = '33vw';\r\n config.minWidth = '300px';\r\n config.disableClose = true;\r\n }\r\n\r\n if (config.data){\r\n config.data.confirmType = confirmType;\r\n }else {\r\n config.data = {\r\n confirmType\r\n };\r\n }\r\n\r\n // if no actions passed in, set up the defaults\r\n if (!actionConfig){\r\n\r\n // default actions\r\n let primary = {type: ActionType.PRIMARY, name: 'YES',\r\n internalAction: 'onConfirmClick', internalActionReturnValue: true};\r\n let secondary = {type: ActionType.SECONDARY, name: 'GO BACK',\r\n internalAction: 'onClose'};\r\n\r\n // by enum type, setup the messages/prompt\r\n // only two need different defaults than generic defaults\r\n switch (confirmType) {\r\n case ConfirmType.CONFIRM_AND_CLOSE:\r\n primary = {type: ActionType.PRIMARY, name: 'CONFIRM AND CLOSE',\r\n internalAction: 'onConfirmClick', internalActionReturnValue: true};\r\n break;\r\n case ConfirmType.ALERT:\r\n primary = undefined;\r\n secondary = {type: ActionType.SECONDARY, name: 'CLOSE',\r\n internalAction: 'onClose'};\r\n break;\r\n // case ConfirmType.DELETE:\r\n // case ConfirmType.DELETE_W_MESSAGE:\r\n // case ConfirmType.DELETE_W_PROMPT:\r\n // case ConfirmType.DISCARD:\r\n // case ConfirmType.ADD:\r\n // case ConfirmType.GENERIC:\r\n default:\r\n throw new Error('Confirm type doesn\\'t exist');\r\n }\r\n\r\n const actions = [];\r\n if (primary){\r\n actions.push(primary);\r\n }\r\n if (secondary){\r\n actions.push(secondary);\r\n }\r\n\r\n actionConfig = {\r\n actions\r\n };\r\n }\r\n\r\n return this.genericDialogContainer(ConfirmDialogComponent,\r\n title, icon, config, actionConfig);\r\n }\r\n\r\n public error(message: string | string[], title?: string,\r\n icon?: string, config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, DialogType.ERROR, icon, config);\r\n }\r\n\r\n public info(message: string | string[], title?: string,\r\n icon?: string, config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, DialogType.INFO, icon, config);\r\n }\r\n\r\n public createCustomDialog(tempRef: TemplateRef<any>, context?: any, title?: string,\r\n icon?: string, config?: MatDialogConfig,\r\n actionConfig?: GDActionConfig) {\r\n let configuration: MatDialogConfig = null;\r\n if (!config) {\r\n configuration = new MatDialogConfig();\r\n } else {\r\n configuration = config;\r\n }\r\n\r\n configuration.data = configuration.data ? configuration.data : {};\r\n configuration.data.templateRef = tempRef;\r\n configuration.data.title = title ? title : '';\r\n configuration.data.icon = icon ? icon : '';\r\n configuration.data.context = context;\r\n if (actionConfig) {\r\n configuration.data.actionConfig = actionConfig;\r\n }\r\n\r\n configuration.minWidth = configuration.minWidth ? configuration.minWidth : '10em';\r\n configuration.width = configuration.width ? configuration.width : '30em';\r\n\r\n configuration.panelClass = ['mx-sized-dialog', 'no-padding'];\r\n configuration.disableClose = true;\r\n configuration.hasBackdrop = true;\r\n\r\n const dialogRef = this.dialog.open(CustomDialogComponent, configuration);\r\n\r\n return dialogRef;\r\n }\r\n\r\n public startDefaultSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n return this.startSpinnerDialog('Please wait...', 3, 30);\r\n }\r\n\r\n public startSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n const configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message,\r\n strokeWidth,\r\n diameter\r\n };\r\n configuration.width = '13em';\r\n configuration.disableClose = true;\r\n\r\n const dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n public startNonModalSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n const configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message,\r\n strokeWidth,\r\n diameter\r\n };\r\n configuration.width = '13em';\r\n configuration.disableClose = true;\r\n configuration.hasBackdrop = false;\r\n\r\n const dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n // Let there be an alternative, global way to stop all active spinner dialogs.\r\n public stopAllSpinnerDialogs(): void {\r\n this.spinnerWorkItemCount = 0;\r\n for (const dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\r\n public addSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount++;\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n public removeSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount--;\r\n if (this.spinnerWorkItemCount < 0) {\r\n this.spinnerWorkItemCount = 0;\r\n }\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n private checkSpinnerWorkItems(): void {\r\n this.checkingSpinnerWorkItems = false;\r\n if (this.spinnerWorkItemCount) {\r\n if (!this._spinnerDialogIsOpen) {\r\n this.startDefaultSpinnerDialog();\r\n }\r\n } else if (this._spinnerDialogIsOpen) {\r\n this.stopAllSpinnerDialogs();\r\n }\r\n }\r\n\r\n public genericDialogContainer(dialogContent: any, title: string,\r\n icon?: string, config?: MatDialogConfig,\r\n actionConfig?: GDActionConfig): Observable<any> {\r\n let configuration: MatDialogConfig = null;\r\n\r\n\r\n if (!config) {\r\n configuration = new MatDialogConfig();\r\n } else {\r\n configuration = config;\r\n }\r\n configuration.data = configuration.data ? configuration.data : {};\r\n configuration.data.dialogContent = dialogContent;\r\n configuration.data.title = title;\r\n if (icon) {\r\n configuration.data.icon = icon;\r\n }\r\n if (actionConfig) {\r\n configuration.data.actionConfig = actionConfig;\r\n }\r\n configuration.panelClass = ['mx-sized-dialog', 'no-padding'];\r\n configuration.disableClose = true;\r\n configuration.hasBackdrop = true;\r\n const dialogRef = this.dialog.open(GenericContainerDialogComponent, configuration);\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n private openDialog(message: string | string[], title?: string,\r\n type?: DialogType, icon?: string, config?: MatDialogConfig): Observable<any> {\r\n let configuration: MatDialogConfig = null;\r\n if (!config) {\r\n configuration = new MatDialogConfig();\r\n } else {\r\n configuration = config;\r\n }\r\n\r\n configuration.data = configuration.data ? configuration.data : {};\r\n configuration.data.message = message;\r\n configuration.data.title = title ? title : '';\r\n configuration.data.icon = icon ? icon : '';\r\n configuration.data.dialogType = type ? type : '';\r\n\r\n configuration.maxWidth = configuration.maxWidth ? configuration.maxWidth : '80vw';\r\n configuration.maxHeight = configuration.maxHeight ? configuration.maxHeight : '80vh';\r\n configuration.minWidth = configuration.minWidth ? configuration.minWidth : '30em';\r\n\r\n configuration.panelClass = 'no-padding';\r\n configuration.disableClose = true;\r\n configuration.autoFocus = false;\r\n configuration.hasBackdrop = false;\r\n\r\n let dialogRef: MatDialogRef<AlertDialogComponent>;\r\n\r\n dialogRef = this.dialog.open(AlertDialogComponent, configuration);\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {DialogService} from '../service/dialog.service';\r\nimport {ActionType} from '../model/generic-dialog-action.model';\r\n\r\n\r\n@Component({\r\n selector: 'hci-save-footer',\r\n template: `\r\n <div class=\"full-height full-width\" style=\"margin-bottom: 8px;\">\r\n <div class=\"d-flex flex-row align-items-center right-align padded\">\r\n <div *ngIf=\"dirty\" class=\"warning-background padded\">\r\n {{ message }}\r\n </div>\r\n <div class=\"major-left-right-margin\">\r\n <button mat-raised-button [disabled]=\"disableSave\"\r\n [color]=\"actionType\" (click)=\"notifySave()\"\r\n [ngClass]=\"{'primary-action': actionType === type.PRIMARY,\r\n 'secondary-action': actionType === type.SECONDARY && !disableSave }\">\r\n <img *ngIf=\"icon\" [src]=\"icon\" alt=\"\">\r\n {{ name }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .primary-action{\r\n background-color: #0077B3FF;\r\n font-weight: bolder;\r\n color: white;\r\n }\r\n .secondary-action{\r\n background-color: #DEF4FFFF;\r\n font-weight: bolder;\r\n color: #0077B3FF;\r\n border: #0077B3FF solid 1px;\r\n }\r\n\r\n .major-left-right-margin {\r\n margin-left: 0.5em;\r\n margin-right: 0.5em;\r\n }\r\n\r\n .right-align {\r\n text-align: right;\r\n justify-content: flex-end;\r\n }\r\n\r\n\r\n .warning-background { background:#feec89; }\r\n\r\n `]\r\n})\r\nexport class SaveFooterComponent implements OnInit, OnDestroy {\r\n\r\n private _dirty: boolean;\r\n\r\n\r\n @Input() actionType: ActionType = ActionType.PRIMARY;\r\n @Input() icon: string;\r\n @Input() message = 'Your changes have not been saved';\r\n @Input() name = 'Save';\r\n @Input() set dirty(data: any){\r\n if (data){\r\n this._dirty = data;\r\n }else{\r\n this._dirty = false;\r\n }\r\n\r\n }\r\n get dirty(){\r\n return this._dirty;\r\n }\r\n\r\n\r\n @Input() set showSpinner(showSpinner: boolean) {\r\n setTimeout( () => {\r\n if (showSpinner) {\r\n this.dialogService.startDefaultSpinnerDialog();\r\n } else {\r\n this.dialogService.stopAllSpinnerDialogs();\r\n }\r\n });\r\n\r\n }\r\n\r\n @Input() disableSave = false;\r\n @Output() saveClicked = new EventEmitter<any>();\r\n type = ActionType;\r\n\r\n constructor(private dialogService: DialogService) { }\r\n\r\n ngOnInit(){\r\n // console.log(this.disableSave);\r\n }\r\n notifySave(): void{\r\n this.saveClicked.emit();\r\n }\r\n ngOnDestroy(){\r\n this.saveClicked.unsubscribe();\r\n }\r\n\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {DialogService} from './service/dialog.service';\r\nimport {AlertDialogComponent} from './alert/alert-dialog.component';\r\nimport {CustomDialogComponent} from './custom/custom-dialog.component';\r\nimport {GenericContainerDialogComponent} from './generic/generic-container-dialog.component';\r\nimport {SaveFooterComponent} from './save-footer/save-footer.component';\r\nimport {SpinnerDialogComponent} from './spinner/spinner-dialog.component';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\r\nimport {DynamicModule} from 'ng-dynamic-component';\r\nimport {ConfirmDialogComponent} from './confirm/confirm-dialog.component';\r\nimport {MatExpansionModule} from '@angular/material/expansion';\r\n// import {RouterModule} from \"@angular/router\";\r\n// import {MatButtonToggleModule} from \"@angular/material/button-toggle\";\r\n// import {MatInputModule} from \"@angular/material/input\";\r\n// import {MatIconModule} from \"@angular/material/icon\";\r\n// import {TreeModule} from \"@circlon/angular-tree-component\";\r\n// import {MatDatepickerModule} from \"@angular/material/datepicker\";\r\n// import {MatSelectModule} from \"@angular/material/select\";\r\n// import {NgbModule, NgbNavModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n// import {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\n// import { MatNativeDateModule } from \"@angular/material/core\";\r\n// import { MatCheckboxModule } from '@angular/material/checkbox';\r\n\r\n\r\n/**\r\n * The main @huntsman-cancer-institute/dialog module. The module exports all components that an implementation might use\r\n * and the forRoot() provides a global service for an implementing application.\r\n *\r\n * @since 1.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n DynamicModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatExpansionModule,\r\n MatProgressSpinnerModule\r\n // RouterModule,\r\n // MiscModule,\r\n // NgbModule,\r\n // MatButtonToggleModule,\r\n // MatInputModule,\r\n // MatIconModule,\r\n // MatDatepickerModule,\r\n // MatNativeDateModule,\r\n // MatCheckboxModule,\r\n // MatRadioModule,\r\n // MatSelectModule,\r\n // TreeModule,\r\n // NgbNavModule\r\n ],\r\n providers: [\r\n // MatDatepickerModule,\r\n ],\r\n declarations: [\r\n AlertDialogComponent,\r\n ConfirmDialogComponent,\r\n CustomDialogComponent,\r\n GenericContainerDialogComponent,\r\n SaveFooterComponent,\r\n SpinnerDialogComponent\r\n ],\r\n entryComponents: [\r\n AlertDialogComponent,\r\n ConfirmDialogComponent,\r\n CustomDialogComponent,\r\n GenericContainerDialogComponent,\r\n SaveFooterComponent,\r\n SpinnerDialogComponent\r\n ],\r\n exports: [\r\n AlertDialogComponent,\r\n ConfirmDialogComponent,\r\n CustomDialogComponent,\r\n GenericContainerDialogComponent,\r\n SaveFooterComponent,\r\n SpinnerDialogComponent\r\n ]\r\n})\r\nexport class DialogModule {\r\n static forRoot(): ModuleWithProviders<DialogModule> {\r\n return {\r\n providers: [\r\n DialogService\r\n ],\r\n ngModule: DialogModule\r\n };\r\n }\r\n}\r\n"],"names":["DialogType","ActionType","MAT_DIALOG_DATA","Component","Inject","ViewChild","HostListener","Input","ViewContainerRef","HostBinding","ConfirmType","MatDialogConfig","Injectable","EventEmitter","Output","CommonModule","FormsModule","DynamicModule","MatButtonModule","MatDialogModule","MatExpansionModule","MatProgressSpinnerModule","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"huntsman-cancer-institute-dialog.umd.js","sources":["ng://@huntsman-cancer-institute/dialog/model/dialog-type.model.ts","ng://@huntsman-cancer-institute/dialog/model/generic-dialog-action.model.ts","ng://@huntsman-cancer-institute/dialog/alert/alert-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/spinner/spinner-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/spinner/spinner-dialog.component.html","ng://@huntsman-cancer-institute/dialog/custom/custom-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/generic/generic-container-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/generic/generic-container-dialog.component.html","ng://@huntsman-cancer-institute/dialog/model/confirm-type.model.ts","ng://@huntsman-cancer-institute/dialog/model/base-generic-container-dialog.ts","ng://@huntsman-cancer-institute/dialog/confirm/confirm-dialog.component.ts","ng://@huntsman-cancer-institute/dialog/service/dialog.service.ts","ng://@huntsman-cancer-institute/dialog/save-footer/save-footer.component.ts","ng://@huntsman-cancer-institute/dialog/dialog.module.ts"],"sourcesContent":["\r\n\r\nexport enum DialogType {\r\n ERROR = 'Error',\r\n WARNING = 'Warning',\r\n ALERT = 'Alert',\r\n SUCCESS = 'Succeed',\r\n FAILED = 'Failed',\r\n CONFIRM = 'Confirm',\r\n INFO = 'Info',\r\n VALIDATION = 'Validation Error',\r\n}\r\n","import {MatDialogRef} from '@angular/material/dialog';\r\nimport {FormGroup} from '@angular/forms';\r\n\r\nexport enum ActionType {\r\n PRIMARY = 'primary',\r\n SECONDARY = 'accent'\r\n}\r\nexport interface GDActionConfig {\r\n formSource?: FormGroup;\r\n actions: GDAction[];\r\n}\r\nexport interface GDAction {\r\n type: ActionType;\r\n internalAction?: string;\r\n internalActionReturnValue?: boolean | any;\r\n externalAction?: (dialogRef?: MatDialogRef<any>) => void | string;\r\n icon?: string;\r\n name: string;\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject, OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {DialogPosition, MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {DialogType} from '../model/dialog-type.model';\r\nimport {ActionType} from '../model/generic-dialog-action.model';\r\n\r\n@Component({\r\n selector: 'hci-alert-dialog',\r\n template: `\r\n <div class=\"full-height full-width d-flex flex-column\">\r\n <div class=\"full-width dialog-header-colors no-margin no-padding\">\r\n <div #topmostLeftmost mat-dialog-title (mousedown)=\"onMouseDownHeader($event)\"\r\n class=\"force-flex-container-row align-center full-width padding {{ movingDialog ? 'grabbed' : 'grabbable' }}\">\r\n <div class=\"d-flex flex-row align-items-center padded\">\r\n <img *ngIf=\"icon\" class=\"icon\" [src]=\"this.icon\">\r\n <div *ngIf=\"!icon\">\r\n <i *ngIf=\"dialogType === type.ALERT\" class=\"fa fa-exclamation fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.SUCCESS\" class=\"fa fa-check-circle fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.FAILED || dialogType === type.ERROR\" class=\"fa fa-exclamation-triangle fa-2x i-margin i-color-red\"></i>\r\n <i *ngIf=\"dialogType === type.WARNING || dialogType === type.VALIDATION\" class=\"fa fa-exclamation-triangle fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.INFO\" class=\"fa fa-info-circle fa-2x i-margin i-color-blue\"></i>\r\n <i *ngIf=\"dialogType === type.CONFIRM\" class=\"fa fa-check fa-2x i-margin i-color-blue\"></i>\r\n </div>\r\n <h1 *ngIf=\"dialogType !== type.ERROR\"\r\n style=\"margin:0;\">{{this.title ? this.title : defaultTitle}}</h1>\r\n <h1 *ngIf=\"dialogType === type.ERROR\"\r\n style=\"margin:0; color: Red\">{{this.title ? this.title : defaultTitle}}</h1>\r\n </div>\r\n </div>\r\n </div>\r\n <mat-dialog-content class=\"flex-grow-1 no-margin no-padding\">\r\n <hr>\r\n <div class=\"flex-grow-1 full-width extra-padded message\">\r\n <div *ngFor=\"let line of message\" class=\"full-width\"\r\n [innerHTML]=\"line\" style=\"white-space: pre-line\">\r\n </div>\r\n </div>\r\n <br>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"d-flex justify-content-center no-margin no-padding\">\r\n <save-footer *ngIf=\"dialogType !== type.CONFIRM\" class=\"centered-text large-size\"\r\n (saveClicked)=\"onClickOk()\" name=\"Ok\"></save-footer>\r\n <save-footer *ngIf=\"dialogType === type.CONFIRM\" class=\"centered-text large-size\"\r\n (saveClicked)=\"onClickYes()\" name=\"Yes\"></save-footer>\r\n <save-footer *ngIf=\"dialogType === type.CONFIRM\" [actionType]=\"actionType\"\r\n class=\"centered-text large-size\" (saveClicked)=\"onClickNo()\"\r\n name=\"No\"></save-footer>\r\n </mat-dialog-actions>\r\n </div>\r\n `,\r\n styles: [`\r\n hr {\r\n width: 98%;\r\n }\r\n\r\n .i-margin {\r\n margin-left: 0.3em;\r\n margin-right: 0.3em;\r\n }\r\n .i-color-blue {\r\n color: #0077B3FF;\r\n }\r\n .i-color-red {\r\n color: red;\r\n }\r\n\r\n .centered-text { text-align: center; }\r\n\r\n .no-padding{\r\n padding:0;\r\n\r\n }\r\n\r\n .no-margin{\r\n margin: 0;\r\n }\r\n\r\n .grabbable {\r\n cursor: move;\r\n cursor: grab;\r\n cursor: -moz-grab;\r\n cursor: -webkit-grab;\r\n }\r\n .grabbed {\r\n cursor: move;\r\n cursor: grabbing;\r\n cursor: -moz-grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n\r\n .force-flex-container-row{\r\n display:flex !important;\r\n }\r\n .extra-padded {\r\n padding: 0.6em 0.9em 0.6em 0.9em;\r\n }\r\n .large-size {\r\n font-size: large;\r\n }\r\n .primary-action {\r\n font-size: large;\r\n }\r\n .secondary-action {\r\n font-size: large;\r\n }\r\n .message {\r\n color: #0F244DFF;\r\n }\r\n `]\r\n}) export class AlertDialogComponent implements OnInit {\r\n public type: any = DialogType;\r\n\r\n @ViewChild('topmostLeftmost', {static: false}) topmostLeftmost: ElementRef;\r\n\r\n public message: string[] = null;\r\n public title = '';\r\n public icon = '';\r\n public dialogType = '';\r\n public defaultTitle = '';\r\n public actionType: any = ActionType.SECONDARY;\r\n\r\n originalXClick = 0;\r\n originalYClick = 0;\r\n protected positionX = 0;\r\n protected positionY = 0;\r\n movingDialog = false;\r\n\r\n constructor(public dialogRef: MatDialogRef<AlertDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data,\r\n private changeDetector: ChangeDetectorRef) {\r\n if (data) {\r\n this.message = Array.isArray(data.message) ? data.message : [data.message];\r\n this.title = data.title;\r\n this.icon = data.icon;\r\n this.dialogType = data.dialogType;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.dialogType) {\r\n this.defaultTitle = this.dialogType;\r\n }\r\n for (let i = 0; i < this.message.length; i++) {\r\n this.message[i] = this.message[i].replace(/\\n/g, '<br>') + '<br>';\r\n }\r\n }\r\n\r\n onClickOk(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onClickYes(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onClickNo(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n onMouseDownHeader(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n this.positionX = this.topmostLeftmost.nativeElement.offsetLeft;\r\n this.positionY = this.topmostLeftmost.nativeElement.offsetTop;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n this.movingDialog = true;\r\n this.changeDetector.detach();\r\n }\r\n @HostListener('window:mousemove', ['$event'])\r\n onMouseMove(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n if (this.movingDialog) {\r\n this.positionX += event.screenX - this.originalXClick;\r\n this.positionY += event.screenY - this.originalYClick;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n const newDialogPosition: DialogPosition = {\r\n left: '' + this.positionX + 'px',\r\n top: '' + this.positionY + 'px',\r\n };\r\n\r\n this.dialogRef.updatePosition(newDialogPosition);\r\n }\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n onMouseUp(): void {\r\n this.movingDialog = false;\r\n this.changeDetector.reattach();\r\n }\r\n}\r\n","import {Component, Inject, Input} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'hci-spinner-dialog',\r\n templateUrl: 'spinner-dialog.component.html',\r\n styles: [`\r\n .t { display: table; }\r\n .tr { display: table-row; }\r\n .td { display: table-cell; }\r\n\r\n .full-height { height: 100%; }\r\n .full-width { width: 100%; }\r\n\r\n .vertical-center { vertical-align: middle; }\r\n\r\n .padded {\r\n padding-top: 0.4em;\r\n padding-bottom: 0.4em;\r\n }\r\n\r\n .not-rendered {\r\n padding: 0;\r\n margin: 0;\r\n\r\n min-height: 0;\r\n max-height: 0;\r\n height: 0;\r\n }\r\n\r\n `]\r\n})\r\nexport class SpinnerDialogComponent {\r\n @Input() strokeWidth = 3;\r\n @Input() diameter = 30;\r\n\r\n @Input() message = 'Loading...';\r\n\r\n constructor(private dialogRef: MatDialogRef<SpinnerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data) {\r\n if (this.data) {\r\n if (!!this.data.message) {\r\n this.message = this.data.message;\r\n }\r\n if (!!this.data.diameter) {\r\n this.diameter = this.data.diameter;\r\n }\r\n if (!!this.data.strokeWidth) {\r\n this.strokeWidth = this.data.strokeWidth;\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div mat-dialog-title class=\"not-rendered\">\r\n<!--<div mat-dialog-title>-->\r\n</div>\r\n<div mat-dialog-content class=\"full-height padded\">\r\n <div class=\"full-width full-height t\">\r\n <div class=\"tr\">\r\n <div class=\"td vertical-center\" [style.height.px]=\"diameter + 5\">\r\n <mat-spinner [hidden]=\"false\" strokeWidth=\"{{strokeWidth}}\" [diameter]=\"diameter\"></mat-spinner>\r\n </div>\r\n <div class=\"td vertical-center\">\r\n {{message}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"not-rendered\">\r\n<!--<div mat-dialog-actions>-->\r\n</div>\r\n","import {DialogPosition, MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {\r\n ChangeDetectorRef,\r\n Component, ElementRef,\r\n HostListener,\r\n Inject, OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport {ActionType, GDAction, GDActionConfig} from '../model/generic-dialog-action.model';\r\nimport {FormGroup} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'hci-custom-dialog',\r\n template: `\r\n <div class=\"d-flex full-height full-width flex-column\">\r\n <div *ngIf=\"this.title\" class=\"full-width generic-dialog-header-colors no-margin no-padding\">\r\n <div #topmostLeftmost mat-dialog-title (mousedown)=\"onMouseDownHeader($event)\"\r\n class=\"force-flex-container-row align-items-center full-width p-2 {{ movingDialog ? 'grabbed' : 'grabbable' }}\">\r\n <div class=\"-flex flex-row align-items-center padded\">\r\n <img *ngIf=\"icon\" class=\"icon\" [src]=\"this.icon\">\r\n <div *ngIf=\"icon && icon.substr(0, 2) === '<i'\" class=\"i-class\" [innerHTML]=\"icon\" ></div>\r\n <h3 style=\"margin:0;\">{{this.title}}</h3>\r\n </div>\r\n <div class=\"flex-grow-1\"></div>\r\n <div class=\"padded\" (click)=\"onClose()\">\r\n <i class=\"exit fas fa-times\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <mat-dialog-content class=\"flex-grow-1 full-width no-margin p-2\" style=\"min-height: 6em;\">\r\n <div #anchor></div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions *ngIf=\"actions && actions.length > 0\"\r\n class=\"d-flex flex-row justify-content-end no-margin no-padding generic-dialog-footer-colors\">\r\n <div *ngFor=\"let action of actions\">\r\n <save-footer *ngIf=\"action.type === actionType.PRIMARY;else secondary\"\r\n [actionType]=\"action.type\"\r\n [icon]=\"action.icon\"\r\n [disableSave]=\"primaryDisable\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [name]=\"action.name\">\r\n </save-footer>\r\n <!-- to avoid issue with multiple spinner or dirty notes-->\r\n <ng-template #secondary>\r\n <save-footer [actionType]=\"action.type\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [icon]=\"action.icon\"\r\n [disableSave]=\"secondaryDisable\"\r\n [name]=\"action.name\">\r\n </save-footer>\r\n </ng-template>\r\n </div>\r\n </mat-dialog-actions>\r\n </div>\r\n `,\r\n styles: [`\r\n .centered-text { text-align: center; }\r\n\r\n .no-padding{\r\n padding:0;\r\n\r\n }\r\n\r\n .no-margin{\r\n margin: 0;\r\n }\r\n\r\n .grabbable {\r\n cursor: move;\r\n cursor: grab;\r\n cursor: -moz-grab;\r\n cursor: -webkit-grab;\r\n }\r\n .grabbed:active {\r\n cursor: grabbing;\r\n cursor: -moz-grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n\r\n .force-flex-container-row{\r\n display:flex !important;\r\n }\r\n\r\n .exit{\r\n max-width: 20px;\r\n cursor: pointer;\r\n }\r\n\r\n .i-class {\r\n margin-left: 0.3em;\r\n margin-right: 0.3em;\r\n }\r\n mat-dialog-content {\r\n max-height: 100vh !important;\r\n max-width: 100vw !important ;\r\n }\r\n `]\r\n})\r\n\r\nexport class CustomDialogComponent implements OnInit {\r\n @ViewChild('anchor', { read: ViewContainerRef, static : true }) vcr: ViewContainerRef;\r\n @ViewChild('topmostLeftmost', {static: false}) topmostLeftmost: ElementRef;\r\n public title = '';\r\n public icon = '';\r\n\r\n public actionType: any = ActionType;\r\n\r\n originalXClick = 0;\r\n originalYClick = 0;\r\n movingDialog = false;\r\n protected positionX = 0;\r\n protected positionY = 0;\r\n context: any;\r\n\r\n private tempRef: TemplateRef<any>;\r\n public actions: GDAction[] = [];\r\n public form: FormGroup;\r\n public get primaryDisable(): boolean {\r\n return this.form && this.form.invalid;\r\n }\r\n // todo need make this customizable\r\n public get secondaryDisable(): boolean {\r\n return false;\r\n }\r\n\r\n constructor(public dialogRef: MatDialogRef<CustomDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data: any,\r\n private changeDetector: ChangeDetectorRef) {\r\n this.title = data.title;\r\n this.tempRef = data.templateRef;\r\n this.icon = data.icon;\r\n this.context = data.context;\r\n const actionConfig: GDActionConfig = data.actionConfig ? data.actionConfig as GDActionConfig : null;\r\n this.actions = actionConfig ? actionConfig.actions : [];\r\n this.form = actionConfig && actionConfig.formSource ? actionConfig.formSource : null;\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.context.dialog = this.dialogRef;\r\n this.vcr.createEmbeddedView<any>(this.tempRef, this.context);\r\n\r\n }\r\n\r\n onClose() {\r\n this.dialogRef.close();\r\n }\r\n\r\n onMouseDownHeader(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n this.positionX = this.topmostLeftmost.nativeElement.offsetLeft;\r\n this.positionY = this.topmostLeftmost.nativeElement.offsetTop;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n this.movingDialog = true;\r\n this.changeDetector.detach();\r\n }\r\n @HostListener('window:mousemove', ['$event'])\r\n onMouseMove(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n if (this.movingDialog) {\r\n this.positionX += event.screenX - this.originalXClick;\r\n this.positionY += event.screenY - this.originalYClick;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n const newDialogPosition: DialogPosition = {\r\n left: '' + this.positionX + 'px',\r\n top: '' + this.positionY + 'px',\r\n };\r\n\r\n this.dialogRef.updatePosition(newDialogPosition);\r\n }\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n onMouseUp(): void {\r\n this.movingDialog = false;\r\n this.changeDetector.reattach();\r\n }\r\n\r\n executeAction(action: GDAction): void {\r\n if (action.externalAction) {\r\n action.externalAction(this.dialogRef);\r\n }\r\n if (action.internalAction && action.internalAction === 'onClose') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild, ComponentRef, ChangeDetectorRef, HostBinding\r\n} from '@angular/core';\r\nimport {MatDialogRef, MatDialog, MAT_DIALOG_DATA, DialogPosition} from '@angular/material/dialog';\r\n\r\nimport {Router} from '@angular/router';\r\nimport {BaseGenericContainerDialog} from '../model/base-generic-container-dialog';\r\nimport {ActionType, GDAction} from '../model/generic-dialog-action.model';\r\n\r\n@Component({\r\n selector: 'hci-generic-container-dialog',\r\n templateUrl: './generic-container-dialog.component.html',\r\n styles: [`\r\n\r\n .no-padding{\r\n padding:0;\r\n }\r\n .no-margin{\r\n margin: 0;\r\n }\r\n .grabbable {\r\n cursor: move;\r\n cursor: grab;\r\n cursor: -moz-grab;\r\n cursor: -webkit-grab;\r\n }\r\n .grabbed:active {\r\n cursor: move;\r\n cursor: grabbing;\r\n cursor: -moz-grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n .exit{\r\n max-width: 20px;\r\n cursor: pointer;\r\n }\r\n .i-class {\r\n margin-left: 0.3em;\r\n margin-right: 0.3em;\r\n }\r\n mat-dialog-content {\r\n max-height: 100% !important;\r\n }\r\n\r\n `]\r\n})\r\nexport class GenericContainerDialogComponent implements OnInit, OnDestroy {\r\n\r\n @HostBinding('class') classList = 'd-flex flex-column flex-grow-1 flex-shrink-1';\r\n\r\n @ViewChild('topmostLeftmost', {static: false}) topmostLeftmost: ElementRef;\r\n\r\n type = ActionType;\r\n title: string;\r\n icon: string;\r\n dialogContentBluePrint: any;\r\n actions: GDAction[] = [];\r\n originalXClick = 0;\r\n originalYClick = 0;\r\n dialogContent: BaseGenericContainerDialog;\r\n\r\n protected positionX = 0;\r\n protected positionY = 0;\r\n movingDialog = false;\r\n useSaveFooter: boolean;\r\n\r\n\r\n constructor(private dialog: MatDialog,\r\n private router: Router,\r\n private changeDetector: ChangeDetectorRef,\r\n private dialogRef: MatDialogRef<GenericContainerDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data) {\r\n if (data) {\r\n this.dialogContentBluePrint = data.dialogContent;\r\n this.icon = data.icon;\r\n this.title = data.title;\r\n this.useSaveFooter = data.actionConfig ? data.actionConfig.useSaveFooter : false;\r\n this.actions = data.actionConfig ? data.actionConfig.actions as GDAction[] : [];\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n createdComponent(event: ComponentRef<any>) {\r\n this.dialogContent = (event.instance as BaseGenericContainerDialog);\r\n }\r\n\r\n executeAction(action: GDAction): void {\r\n if (action.externalAction) {\r\n action.externalAction();\r\n }\r\n if (action.internalAction) {\r\n const internalAction: string = action.internalAction;\r\n if (action.internalAction === 'cancel' || action.internalAction === 'onClose') {\r\n if (this.dialogContent[internalAction]) {\r\n this.dialogContent[internalAction]();\r\n } else {\r\n this.onClose();\r\n }\r\n } else {\r\n if (typeof action.internalActionReturnValue !== 'undefined') {\r\n if (action.internalActionReturnValue){\r\n this.dialogContent[internalAction](action.internalActionReturnValue);\r\n }\r\n }else {\r\n this.dialogContent[internalAction]();\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n onMouseDownHeader(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n this.positionX = this.topmostLeftmost.nativeElement.offsetLeft;\r\n this.positionY = this.topmostLeftmost.nativeElement.offsetTop;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n this.movingDialog = true;\r\n this.changeDetector.detach();\r\n }\r\n @HostListener('window:mousemove', ['$event'])\r\n onMouseMove(event: any): void {\r\n if (!event) {\r\n return;\r\n }\r\n\r\n if (this.movingDialog) {\r\n this.positionX += event.screenX - this.originalXClick;\r\n this.positionY += event.screenY - this.originalYClick;\r\n\r\n this.originalXClick = event.screenX;\r\n this.originalYClick = event.screenY;\r\n\r\n const newDialogPosition: DialogPosition = {\r\n left: '' + this.positionX + 'px',\r\n top: '' + this.positionY + 'px',\r\n };\r\n\r\n this.dialogRef.updatePosition(newDialogPosition);\r\n }\r\n }\r\n @HostListener('window:mouseup', ['$event'])\r\n onMouseUp(): void {\r\n this.movingDialog = false;\r\n this.changeDetector.reattach();\r\n }\r\n\r\n onClose() {\r\n this.dialogRef.close();\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}\r\n","<div class=\"full-height full-width d-flex flex-column\" style=\"height: 100%;\">\r\n <div class=\"full-width generic-dialog-header-colors no-margin no-padding\">\r\n <div #topmostLeftmost mat-dialog-title (mousedown)=\"onMouseDownHeader($event)\"\r\n class=\"d-flex align-items-center full-width\" [ngClass]=\"{'grabbed':movingDialog, 'grabbable': !movingDialog}\">\r\n <div class=\"d-flex flex-row align-items-center p-2\">\r\n <img class=\"icon\" *ngIf=\"icon && icon.substr(0, 2) !== '<i'\" [src]=\"icon\">\r\n <div *ngIf=\"icon && icon.substr(0, 2) === '<i'\" class=\"i-class\" [innerHTML]=\"icon\" ></div>\r\n <h3 style=\"margin:0;\">{{this.title ? this.title : this.dialogContent.innerTitle}}</h3>\r\n </div>\r\n <div class=\"flex-grow-1\"></div>\r\n <div class=\"padded\" (click)=\"onClose()\">\r\n <i class=\"exit fas fa-times\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-dialog-content class=\"flex-grow-1 no-margin no-padding\">\r\n <div class=\"flex-grow-1 full-height full-width padded\">\r\n <ndc-dynamic [ndcDynamicComponent]=\"this.dialogContentBluePrint\"\r\n [ndcDynamicInputs]=\"this.data\"\r\n (ndcDynamicCreated)=\"createdComponent($event)\">\r\n </ndc-dynamic>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions *ngIf=\"actions && actions.length > 0\"\r\n class=\"d-flex flex-row justify-content-end no-margin no-padding generic-dialog-footer-colors\">\r\n <div *ngFor=\"let action of actions\">\r\n <save-footer *ngIf=\"action.type === type.PRIMARY;else secondary\"\r\n [actionType]=\"action.type\"\r\n [icon]=\"action.icon\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [disableSave]=\"this.dialogContent.primaryDisable(action)\"\r\n [dirty]=\"this.dialogContent.dirty()\"\r\n [name]=\"action.name\"\r\n [showSpinner]=\"this.dialogContent.showSpinner\">\r\n </save-footer>\r\n <!-- to avoid issue with multiple spinner or dirty notes-->\r\n <ng-template #secondary>\r\n <save-footer [actionType]=\"action.type\"\r\n (saveClicked)=\"executeAction(action)\"\r\n [icon]=\"action.icon\"\r\n [disableSave]=\"this.dialogContent.secondaryDisable(action)\"\r\n [name]=\"action.name\">\r\n\r\n </save-footer>\r\n </ng-template>\r\n </div>\r\n </mat-dialog-actions>\r\n</div>\r\n","\r\nexport enum ConfirmType {\r\n DELETE = 'delete',\r\n DELETE_W_MESSAGE = 'deleteMessage',\r\n DELETE_W_PROMPT = 'deletePrompt',\r\n DISCARD = 'discard',\r\n CONFIRM_AND_CLOSE = 'confirmAndClose',\r\n ADD = 'add',\r\n ALERT = 'alert',\r\n GENERIC = 'generic',\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {GDAction} from './generic-dialog-action.model';\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport abstract class BaseGenericContainerDialog {\r\n @Input() inputData: any;\r\n public showSpinner: boolean = false;\r\n public innerTitle: string = '';\r\n\r\n public primaryDisable: (action?: GDAction) => boolean = (action) => {\r\n return false;\r\n }\r\n\r\n public secondaryDisable: (action?: GDAction) => boolean = (action) => {\r\n return false;\r\n }\r\n\r\n public dirty: () => boolean = () => { return false; };\r\n\r\n protected constructor() {\r\n }\r\n}\r\n","import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {Component, Inject} from '@angular/core';\r\nimport {BaseGenericContainerDialog} from '../model/base-generic-container-dialog';\r\nimport {ConfirmType} from '../model/confirm-type.model';\r\n\r\n@Component({\r\n selector: 'hci-confirm-dialog',\r\n template: `\r\n <div class=\"ri-confirm-body\">\r\n\r\n <div *ngIf=\"confirmType !== ConfirmType.ALERT; else alertBlock\">\r\n {{prompt}}\r\n <div class=\"ri-confirm-text-delete\">{{ message1 }}</div>\r\n {{message2}}\r\n </div>\r\n\r\n\r\n <div #alertBlock>\r\n <p>We are working to correct it. Contact CODE support if the error persists.</p>\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <strong>Show details</strong>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div>{{ message1 }}</div>\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n </div>\r\n `,\r\n styles: [`\r\n\r\n `]\r\n})\r\nexport class ConfirmDialogComponent extends BaseGenericContainerDialog {\r\n\r\n public ConfirmType = ConfirmType; // make enum available in template\r\n\r\n prompt = '';\r\n message1 = '';\r\n message2 = '';\r\n\r\n confirmType: ConfirmType = ConfirmType.GENERIC;\r\n\r\n constructor(private dialogRef: MatDialogRef<ConfirmDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) private data: any) {\r\n super();\r\n\r\n const temp = data.confirmType ? data.confirmType : ConfirmType.GENERIC;\r\n if (Object.values(ConfirmType).includes(temp as ConfirmType)){\r\n this.confirmType = temp;\r\n }\r\n\r\n this.prompt = data.prompt ? data.prompt : '';\r\n this.message1 = data.message1 ? data.message1 : '';\r\n this.message2 = data.message2 ? data.message2 : '';\r\n\r\n this.setupMessagesByType();\r\n }\r\n\r\n setupMessagesByType(){\r\n\r\n // by enum type, setup the messages/prompt\r\n switch (this.confirmType) {\r\n case ConfirmType.DELETE:\r\n this.prompt = 'The following will be deleted:';\r\n this.message2 = 'Continue?';\r\n break;\r\n case ConfirmType.DELETE_W_MESSAGE:\r\n this.prompt = 'The following will be deleted:';\r\n break;\r\n case ConfirmType.DELETE_W_PROMPT:\r\n // noop, take all of what was passed in\r\n break;\r\n case ConfirmType.DISCARD:\r\n this.prompt = '';\r\n this.message2 = 'Continue?';\r\n break;\r\n case ConfirmType.CONFIRM_AND_CLOSE:\r\n this.prompt = '';\r\n this.message2 = '';\r\n break;\r\n case ConfirmType.ADD:\r\n this.prompt = 'The following will be added:';\r\n this.message2 = 'Continue?';\r\n break;\r\n case ConfirmType.ALERT:\r\n // noop, will only use the message1 in a special template, and just ignore rest\r\n break;\r\n case ConfirmType.GENERIC:\r\n // TODO: either only use message 1 or just take all passed in...\r\n this.prompt = '';\r\n this.message2 = '';\r\n break;\r\n default:\r\n throw new Error('Confirm type doesn\\'t exist');\r\n }\r\n\r\n\r\n }\r\n\r\n onConfirmClick(value: boolean | any){\r\n this.dialogRef.close(value);\r\n }\r\n}\r\n","import {Injectable, TemplateRef} from '@angular/core';\r\nimport { MatDialogRef, MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AlertDialogComponent } from '../alert/alert-dialog.component';\r\nimport { SpinnerDialogComponent } from '../spinner/spinner-dialog.component';\r\nimport {CustomDialogComponent} from '../custom/custom-dialog.component';\r\nimport {GenericContainerDialogComponent} from '../generic/generic-container-dialog.component';\r\nimport {ActionType, GDActionConfig} from '../model/generic-dialog-action.model';\r\nimport {DialogType} from '../model/dialog-type.model';\r\nimport {ConfirmType} from '../model/confirm-type.model';\r\nimport {ConfirmDialogComponent} from '../confirm/confirm-dialog.component';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class DialogService {\r\n\r\n private _spinnerDialogIsOpen = false;\r\n private spinnerWorkItemCount = 0;\r\n private checkingSpinnerWorkItems = false;\r\n\r\n public spinnerDialogRefs: MatDialogRef<SpinnerDialogComponent>[] = [];\r\n\r\n public get spinnerDialogIsOpen(): boolean {\r\n return this._spinnerDialogIsOpen;\r\n }\r\n\r\n constructor(private dialog: MatDialog) {\r\n }\r\n\r\n public alert(message: string | string[], title?: string,\r\n dialogType?: DialogType, icon?: string,\r\n config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, dialogType ? dialogType : DialogType.ALERT, icon, config);\r\n }\r\n\r\n public confirm(message: string | string[], title?: string,\r\n icon?: string, config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, DialogType.CONFIRM, icon, config);\r\n\r\n }\r\n\r\n /**\r\n * Creates a ConfirmDialogComponent with different display depending on\r\n * the ConfirmType.\r\n * @param title defaults to 'Confirm'\r\n * @param icon defaults to 'fa fa-info-circle'\r\n * @param config config.data can contain a prompt, message1 and/or\r\n * message2 according to the ConfirmType chosen\r\n * @param actionConfig sets up the dialog buttons and actions if you want\r\n * to override the defaults\r\n */\r\n public confirmByType(confirmType: ConfirmType, title?: string,\r\n icon?: string, config?: MatDialogConfig,\r\n actionConfig?: GDActionConfig): Observable<boolean> {\r\n if (!title){\r\n title = 'Confirm';\r\n }\r\n\r\n if (!icon){\r\n icon = 'fa fa-info-circle';\r\n }\r\n\r\n // set up a default if needed\r\n if (!config){\r\n config = new MatDialogConfig<any>();\r\n }\r\n\r\n // if the config doesn't have these values set, set defaults\r\n // but config can exist without them if want to pass message(s) without\r\n // overriding defaults\r\n if (!config.width) {\r\n config.width = '33vw';\r\n }\r\n if (!config.minWidth){\r\n config.minWidth = '300px';\r\n }\r\n if (!config.disableClose){\r\n config.disableClose = true;\r\n }\r\n\r\n if (config.data){\r\n config.data.confirmType = confirmType;\r\n }else {\r\n config.data = {\r\n confirmType\r\n };\r\n }\r\n\r\n // if no actions passed in, set up the defaults\r\n if (!actionConfig){\r\n\r\n // default actions\r\n let primary = {type: ActionType.PRIMARY, name: 'YES',\r\n internalAction: 'onConfirmClick', internalActionReturnValue: true};\r\n let secondary = {type: ActionType.SECONDARY, name: 'GO BACK',\r\n internalAction: 'onClose'};\r\n\r\n // by enum type, setup the messages/prompt\r\n // only two need different defaults than generic defaults\r\n switch (confirmType) {\r\n case ConfirmType.CONFIRM_AND_CLOSE:\r\n primary = {type: ActionType.PRIMARY, name: 'CONFIRM AND CLOSE',\r\n internalAction: 'onConfirmClick', internalActionReturnValue: true};\r\n break;\r\n case ConfirmType.ALERT:\r\n primary = undefined;\r\n secondary = {type: ActionType.SECONDARY, name: 'CLOSE',\r\n internalAction: 'onClose'};\r\n break;\r\n // case ConfirmType.DELETE:\r\n // case ConfirmType.DELETE_W_MESSAGE:\r\n // case ConfirmType.DELETE_W_PROMPT:\r\n // case ConfirmType.DISCARD:\r\n // case ConfirmType.ADD:\r\n // case ConfirmType.GENERIC:\r\n default:\r\n throw new Error('Confirm type doesn\\'t exist');\r\n }\r\n\r\n const actions = [];\r\n if (primary){\r\n actions.push(primary);\r\n }\r\n if (secondary){\r\n actions.push(secondary);\r\n }\r\n\r\n actionConfig = {\r\n actions\r\n };\r\n }\r\n\r\n return this.genericDialogContainer(ConfirmDialogComponent,\r\n title, icon, config, actionConfig);\r\n }\r\n\r\n public error(message: string | string[], title?: string,\r\n icon?: string, config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, DialogType.ERROR, icon, config);\r\n }\r\n\r\n public info(message: string | string[], title?: string,\r\n icon?: string, config?: MatDialogConfig): Observable<boolean> {\r\n return this.openDialog(message, title, DialogType.INFO, icon, config);\r\n }\r\n\r\n public createCustomDialog(tempRef: TemplateRef<any>, context?: any, title?: string,\r\n icon?: string, config?: MatDialogConfig,\r\n actionConfig?: GDActionConfig) {\r\n let configuration: MatDialogConfig = null;\r\n if (!config) {\r\n configuration = new MatDialogConfig();\r\n } else {\r\n configuration = config;\r\n }\r\n\r\n configuration.data = configuration.data ? configuration.data : {};\r\n configuration.data.templateRef = tempRef;\r\n configuration.data.title = title ? title : '';\r\n configuration.data.icon = icon ? icon : '';\r\n configuration.data.context = context;\r\n if (actionConfig) {\r\n configuration.data.actionConfig = actionConfig;\r\n }\r\n\r\n configuration.minWidth = configuration.minWidth ? configuration.minWidth : '10em';\r\n configuration.width = configuration.width ? configuration.width : '30em';\r\n\r\n configuration.panelClass = ['mx-sized-dialog', 'no-padding'];\r\n configuration.disableClose = true;\r\n configuration.hasBackdrop = true;\r\n\r\n const dialogRef = this.dialog.open(CustomDialogComponent, configuration);\r\n\r\n return dialogRef;\r\n }\r\n\r\n public startDefaultSpinnerDialog(): MatDialogRef<SpinnerDialogComponent> {\r\n return this.startSpinnerDialog('Please wait...', 3, 30);\r\n }\r\n\r\n public startSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n const configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message,\r\n strokeWidth,\r\n diameter\r\n };\r\n configuration.width = '13em';\r\n configuration.disableClose = true;\r\n\r\n const dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n public startNonModalSpinnerDialog(message: string, strokeWidth: number, diameter: number): MatDialogRef<SpinnerDialogComponent> {\r\n if (this._spinnerDialogIsOpen) {\r\n return null;\r\n }\r\n\r\n this._spinnerDialogIsOpen = true;\r\n\r\n const configuration: MatDialogConfig = new MatDialogConfig();\r\n configuration.data = {\r\n message,\r\n strokeWidth,\r\n diameter\r\n };\r\n configuration.width = '13em';\r\n configuration.disableClose = true;\r\n configuration.hasBackdrop = false;\r\n\r\n const dialogRef: MatDialogRef<SpinnerDialogComponent> = this.dialog.open(SpinnerDialogComponent, configuration);\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n this._spinnerDialogIsOpen = false;\r\n });\r\n\r\n this.spinnerDialogRefs.push(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n // Let there be an alternative, global way to stop all active spinner dialogs.\r\n public stopAllSpinnerDialogs(): void {\r\n this.spinnerWorkItemCount = 0;\r\n for (const dialogRef of this.spinnerDialogRefs) {\r\n setTimeout(() => {\r\n dialogRef.close();\r\n });\r\n }\r\n this.spinnerDialogRefs = [];\r\n }\r\n\r\n public addSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount++;\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n public removeSpinnerWorkItem(): void {\r\n this.spinnerWorkItemCount--;\r\n if (this.spinnerWorkItemCount < 0) {\r\n this.spinnerWorkItemCount = 0;\r\n }\r\n if (!this.checkingSpinnerWorkItems) {\r\n this.checkingSpinnerWorkItems = true;\r\n setTimeout(() => {\r\n this.checkSpinnerWorkItems();\r\n });\r\n }\r\n }\r\n\r\n private checkSpinnerWorkItems(): void {\r\n this.checkingSpinnerWorkItems = false;\r\n if (this.spinnerWorkItemCount) {\r\n if (!this._spinnerDialogIsOpen) {\r\n this.startDefaultSpinnerDialog();\r\n }\r\n } else if (this._spinnerDialogIsOpen) {\r\n this.stopAllSpinnerDialogs();\r\n }\r\n }\r\n\r\n public genericDialogContainer(dialogContent: any, title: string,\r\n icon?: string, config?: MatDialogConfig,\r\n actionConfig?: GDActionConfig): Observable<any> {\r\n let configuration: MatDialogConfig = null;\r\n\r\n\r\n if (!config) {\r\n configuration = new MatDialogConfig();\r\n } else {\r\n configuration = config;\r\n }\r\n configuration.data = configuration.data ? configuration.data : {};\r\n configuration.data.dialogContent = dialogContent;\r\n configuration.data.title = title;\r\n if (icon) {\r\n configuration.data.icon = icon;\r\n }\r\n if (actionConfig) {\r\n configuration.data.actionConfig = actionConfig;\r\n }\r\n configuration.panelClass = ['mx-sized-dialog', 'no-padding'];\r\n configuration.disableClose = true;\r\n configuration.hasBackdrop = true;\r\n const dialogRef = this.dialog.open(GenericContainerDialogComponent, configuration);\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n private openDialog(message: string | string[], title?: string,\r\n type?: DialogType, icon?: string, config?: MatDialogConfig): Observable<any> {\r\n let configuration: MatDialogConfig = null;\r\n if (!config) {\r\n configuration = new MatDialogConfig();\r\n } else {\r\n configuration = config;\r\n }\r\n\r\n configuration.data = configuration.data ? configuration.data : {};\r\n configuration.data.message = message;\r\n configuration.data.title = title ? title : '';\r\n configuration.data.icon = icon ? icon : '';\r\n configuration.data.dialogType = type ? type : '';\r\n\r\n configuration.maxWidth = configuration.maxWidth ? configuration.maxWidth : '80vw';\r\n configuration.maxHeight = configuration.maxHeight ? configuration.maxHeight : '80vh';\r\n configuration.minWidth = configuration.minWidth ? configuration.minWidth : '30em';\r\n\r\n configuration.panelClass = 'no-padding';\r\n configuration.disableClose = true;\r\n configuration.autoFocus = false;\r\n configuration.hasBackdrop = false;\r\n\r\n let dialogRef: MatDialogRef<AlertDialogComponent>;\r\n\r\n dialogRef = this.dialog.open(AlertDialogComponent, configuration);\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport {DialogService} from '../service/dialog.service';\r\nimport {ActionType} from '../model/generic-dialog-action.model';\r\n\r\n\r\n@Component({\r\n selector: 'hci-save-footer',\r\n template: `\r\n <div class=\"full-height full-width\" style=\"margin-bottom: 8px;\">\r\n <div class=\"d-flex flex-row align-items-center right-align padded\">\r\n <div *ngIf=\"dirty\" class=\"warning-background padded\">\r\n {{ message }}\r\n </div>\r\n <div class=\"major-left-right-margin\">\r\n <button mat-raised-button [disabled]=\"disableSave\"\r\n [color]=\"actionType\" (click)=\"notifySave()\"\r\n [ngClass]=\"{'primary-action': actionType === type.PRIMARY,\r\n 'secondary-action': actionType === type.SECONDARY && !disableSave }\">\r\n <img *ngIf=\"icon\" [src]=\"icon\" alt=\"\">\r\n {{ name }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .primary-action{\r\n background-color: #0077B3FF;\r\n font-weight: bolder;\r\n color: white;\r\n }\r\n .secondary-action{\r\n background-color: #DEF4FFFF;\r\n font-weight: bolder;\r\n color: #0077B3FF;\r\n border: #0077B3FF solid 1px;\r\n }\r\n\r\n .major-left-right-margin {\r\n margin-left: 0.5em;\r\n margin-right: 0.5em;\r\n }\r\n\r\n .right-align {\r\n text-align: right;\r\n justify-content: flex-end;\r\n }\r\n\r\n\r\n .warning-background { background:#feec89; }\r\n\r\n `]\r\n})\r\nexport class SaveFooterComponent implements OnInit, OnDestroy {\r\n\r\n private _dirty: boolean;\r\n\r\n\r\n @Input() actionType: ActionType = ActionType.PRIMARY;\r\n @Input() icon: string;\r\n @Input() message = 'Your changes have not been saved';\r\n @Input() name = 'Save';\r\n @Input() set dirty(data: any){\r\n if (data){\r\n this._dirty = data;\r\n }else{\r\n this._dirty = false;\r\n }\r\n\r\n }\r\n get dirty(){\r\n return this._dirty;\r\n }\r\n\r\n\r\n @Input() set showSpinner(showSpinner: boolean) {\r\n setTimeout( () => {\r\n if (showSpinner) {\r\n this.dialogService.startDefaultSpinnerDialog();\r\n } else {\r\n this.dialogService.stopAllSpinnerDialogs();\r\n }\r\n });\r\n\r\n }\r\n\r\n @Input() disableSave = false;\r\n @Output() saveClicked = new EventEmitter<any>();\r\n type = ActionType;\r\n\r\n constructor(private dialogService: DialogService) { }\r\n\r\n ngOnInit(){\r\n // console.log(this.disableSave);\r\n }\r\n notifySave(): void{\r\n this.saveClicked.emit();\r\n }\r\n ngOnDestroy(){\r\n this.saveClicked.unsubscribe();\r\n }\r\n\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {DialogService} from './service/dialog.service';\r\nimport {AlertDialogComponent} from './alert/alert-dialog.component';\r\nimport {CustomDialogComponent} from './custom/custom-dialog.component';\r\nimport {GenericContainerDialogComponent} from './generic/generic-container-dialog.component';\r\nimport {SaveFooterComponent} from './save-footer/save-footer.component';\r\nimport {SpinnerDialogComponent} from './spinner/spinner-dialog.component';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\r\nimport {DynamicModule} from 'ng-dynamic-component';\r\nimport {ConfirmDialogComponent} from './confirm/confirm-dialog.component';\r\nimport {MatExpansionModule} from '@angular/material/expansion';\r\n// import {RouterModule} from \"@angular/router\";\r\n// import {MatButtonToggleModule} from \"@angular/material/button-toggle\";\r\n// import {MatInputModule} from \"@angular/material/input\";\r\n// import {MatIconModule} from \"@angular/material/icon\";\r\n// import {TreeModule} from \"@circlon/angular-tree-component\";\r\n// import {MatDatepickerModule} from \"@angular/material/datepicker\";\r\n// import {MatSelectModule} from \"@angular/material/select\";\r\n// import {NgbModule, NgbNavModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n// import {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\n// import { MatNativeDateModule } from \"@angular/material/core\";\r\n// import { MatCheckboxModule } from '@angular/material/checkbox';\r\n\r\n\r\n/**\r\n * The main @huntsman-cancer-institute/dialog module. The module exports all components that an implementation might use\r\n * and the forRoot() provides a global service for an implementing application.\r\n *\r\n * @since 1.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n DynamicModule,\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatExpansionModule,\r\n MatProgressSpinnerModule\r\n // RouterModule,\r\n // MiscModule,\r\n // NgbModule,\r\n // MatButtonToggleModule,\r\n // MatInputModule,\r\n // MatIconModule,\r\n // MatDatepickerModule,\r\n // MatNativeDateModule,\r\n // MatCheckboxModule,\r\n // MatRadioModule,\r\n // MatSelectModule,\r\n // TreeModule,\r\n // NgbNavModule\r\n ],\r\n providers: [\r\n // MatDatepickerModule,\r\n ],\r\n declarations: [\r\n AlertDialogComponent,\r\n ConfirmDialogComponent,\r\n CustomDialogComponent,\r\n GenericContainerDialogComponent,\r\n SaveFooterComponent,\r\n SpinnerDialogComponent\r\n ],\r\n entryComponents: [\r\n AlertDialogComponent,\r\n ConfirmDialogComponent,\r\n CustomDialogComponent,\r\n GenericContainerDialogComponent,\r\n SaveFooterComponent,\r\n SpinnerDialogComponent\r\n ],\r\n exports: [\r\n AlertDialogComponent,\r\n ConfirmDialogComponent,\r\n CustomDialogComponent,\r\n GenericContainerDialogComponent,\r\n SaveFooterComponent,\r\n SpinnerDialogComponent\r\n ]\r\n})\r\nexport class DialogModule {\r\n static forRoot(): ModuleWithProviders<DialogModule> {\r\n return {\r\n providers: [\r\n DialogService\r\n ],\r\n ngModule: DialogModule\r\n };\r\n }\r\n}\r\n"],"names":["DialogType","ActionType","MAT_DIALOG_DATA","Component","Inject","ViewChild","HostListener","Input","ViewContainerRef","HostBinding","ConfirmType","MatDialogConfig","Injectable","EventEmitter","Output","CommonModule","FormsModule","DynamicModule","MatButtonModule","MatDialogModule","MatExpansionModule","MatProgressSpinnerModule","NgModule"],"mappings":"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"}