@covalent/core 4.1.0-develop.9 → 4.1.1-develop.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.
- package/dialogs/prompt-dialog/prompt-dialog.component.d.ts +10 -9
- package/esm2020/dialogs/prompt-dialog/prompt-dialog.component.mjs +45 -16
- package/esm2020/file/directives/file-drop.directive.mjs +30 -34
- package/fesm2015/covalent-core-dialogs.mjs +44 -16
- package/fesm2015/covalent-core-dialogs.mjs.map +1 -1
- package/fesm2015/covalent-core-file.mjs +29 -31
- package/fesm2015/covalent-core-file.mjs.map +1 -1
- package/fesm2020/covalent-core-dialogs.mjs +44 -16
- package/fesm2020/covalent-core-dialogs.mjs.map +1 -1
- package/fesm2020/covalent-core-file.mjs +28 -31
- package/fesm2020/covalent-core-file.mjs.map +1 -1
- package/file/directives/file-drop.directive.d.ts +8 -14
- package/package.json +2 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { Directive, Component, ContentChildren, ViewChild, Injectable, Inject, EventEmitter, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
|
2
|
+
import { Directive, Component, ContentChildren, ElementRef, ViewChild, Injectable, Inject, EventEmitter, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
|
3
3
|
import * as i4 from '@angular/common';
|
4
4
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
5
5
|
import * as i6 from '@angular/forms';
|
@@ -10,9 +10,10 @@ import * as i7 from '@angular/material/input';
|
|
10
10
|
import { MatInputModule } from '@angular/material/input';
|
11
11
|
import * as i3 from '@angular/material/button';
|
12
12
|
import { MatButtonModule } from '@angular/material/button';
|
13
|
+
import { RIGHT_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';
|
14
|
+
import { Subject, fromEvent, takeUntil, merge } from 'rxjs';
|
13
15
|
import * as i3$1 from '@angular/material/form-field';
|
14
16
|
import * as i2 from '@angular/cdk/drag-drop';
|
15
|
-
import { Subject, fromEvent, merge } from 'rxjs';
|
16
17
|
import * as i1$1 from '@angular/material/toolbar';
|
17
18
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
18
19
|
import * as i3$2 from '@angular/material/icon';
|
@@ -111,23 +112,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
111
112
|
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }]; } });
|
112
113
|
|
113
114
|
class TdPromptDialogComponent {
|
114
|
-
constructor(_dialogRef) {
|
115
|
+
constructor(_ngZone, _dialogRef) {
|
116
|
+
this._ngZone = _ngZone;
|
115
117
|
this._dialogRef = _dialogRef;
|
116
118
|
this.cancelButton = 'CANCEL';
|
117
119
|
this.acceptButton = 'ACCEPT';
|
120
|
+
this._destroy$ = new Subject();
|
118
121
|
}
|
119
122
|
ngAfterViewInit() {
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
+
this._ngZone.runOutsideAngular(() => {
|
124
|
+
// Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.
|
125
|
+
// `Promise` is a microtask and microtask are executed within the current rendering frame.
|
126
|
+
// Animation tasks are executed within the next rendering frame.
|
127
|
+
// We focus input once everything is rendered and good to go.
|
128
|
+
requestAnimationFrame(() => this._input.nativeElement.focus());
|
129
|
+
fromEvent(this._input.nativeElement, 'focus')
|
130
|
+
.pipe(takeUntil(this._destroy$))
|
131
|
+
.subscribe(() => {
|
132
|
+
// This is executed when the input is focused, selects all text.
|
133
|
+
this._input.nativeElement.select();
|
134
|
+
});
|
135
|
+
fromEvent(this._closeBtn.nativeElement, 'keydown')
|
136
|
+
.pipe(takeUntil(this._destroy$))
|
137
|
+
.subscribe((event) => {
|
138
|
+
if (event.keyCode === RIGHT_ARROW) {
|
139
|
+
this._acceptBtn.nativeElement.focus();
|
140
|
+
}
|
141
|
+
});
|
142
|
+
fromEvent(this._acceptBtn.nativeElement, 'keydown')
|
143
|
+
.pipe(takeUntil(this._destroy$))
|
144
|
+
.subscribe((event) => {
|
145
|
+
if (event.keyCode === LEFT_ARROW) {
|
146
|
+
this._closeBtn.nativeElement.focus();
|
147
|
+
}
|
148
|
+
});
|
123
149
|
});
|
124
150
|
}
|
125
|
-
|
126
|
-
|
127
|
-
* Selects all text
|
128
|
-
*/
|
129
|
-
handleInputFocus() {
|
130
|
-
this._input.nativeElement.select();
|
151
|
+
ngOnDestroy() {
|
152
|
+
this._destroy$.next();
|
131
153
|
}
|
132
154
|
cancel() {
|
133
155
|
this._dialogRef.close();
|
@@ -136,14 +158,20 @@ class TdPromptDialogComponent {
|
|
136
158
|
this._dialogRef.close(this.value);
|
137
159
|
}
|
138
160
|
}
|
139
|
-
TdPromptDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdPromptDialogComponent, deps: [{ token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
140
|
-
TdPromptDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdPromptDialogComponent, selector: "td-prompt-dialog", viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: "<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n <form #form=\"ngForm\" novalidate>\n <div class=\"td-dialog-input-wrapper\">\n <mat-form-field class=\"td-dialog-input\">\n <input\n matInput\n #input\n (
|
161
|
+
TdPromptDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdPromptDialogComponent, deps: [{ token: i0.NgZone }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
162
|
+
TdPromptDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: TdPromptDialogComponent, selector: "td-prompt-dialog", viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "_closeBtn", first: true, predicate: ["closeBtn"], descendants: true, read: ElementRef, static: true }, { propertyName: "_acceptBtn", first: true, predicate: ["acceptBtn"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n <form #form=\"ngForm\" novalidate>\n <div class=\"td-dialog-input-wrapper\">\n <mat-form-field class=\"td-dialog-input\">\n <input\n matInput\n #input\n (keydown.enter)=\"$event.preventDefault(); form.valid && accept()\"\n [(ngModel)]=\"value\"\n name=\"value\"\n required\n />\n </mat-form-field>\n </div>\n </form>\n </div>\n <div tdDialogActions>\n <button mat-button #closeBtn (click)=\"cancel()\">\n {{ cancelButton }}\n </button>\n <button\n mat-button\n color=\"accent\"\n #acceptBtn\n [disabled]=\"!form.valid\"\n (click)=\"accept()\"\n >\n {{ acceptButton }}\n </button>\n </div>\n</td-dialog>\n", styles: [".td-dialog-input-wrapper{flex-direction:row;box-sizing:border-box;display:flex}.td-dialog-input-wrapper .td-dialog-input{flex:1;box-sizing:border-box}.td-dialog-message{word-break:break-word}\n"], components: [{ type: TdDialogComponent, selector: "td-dialog" }, { type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TdDialogTitleDirective, selector: "[tdDialogTitle]" }, { type: TdDialogContentDirective, selector: "[tdDialogContent]" }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: TdDialogActionsDirective, selector: "[tdDialogActions]" }] });
|
141
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdPromptDialogComponent, decorators: [{
|
142
164
|
type: Component,
|
143
|
-
args: [{ selector: 'td-prompt-dialog', template: "<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n <form #form=\"ngForm\" novalidate>\n <div class=\"td-dialog-input-wrapper\">\n <mat-form-field class=\"td-dialog-input\">\n <input\n matInput\n #input\n (
|
144
|
-
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }]; }, propDecorators: { _input: [{
|
165
|
+
args: [{ selector: 'td-prompt-dialog', template: "<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n <form #form=\"ngForm\" novalidate>\n <div class=\"td-dialog-input-wrapper\">\n <mat-form-field class=\"td-dialog-input\">\n <input\n matInput\n #input\n (keydown.enter)=\"$event.preventDefault(); form.valid && accept()\"\n [(ngModel)]=\"value\"\n name=\"value\"\n required\n />\n </mat-form-field>\n </div>\n </form>\n </div>\n <div tdDialogActions>\n <button mat-button #closeBtn (click)=\"cancel()\">\n {{ cancelButton }}\n </button>\n <button\n mat-button\n color=\"accent\"\n #acceptBtn\n [disabled]=\"!form.valid\"\n (click)=\"accept()\"\n >\n {{ acceptButton }}\n </button>\n </div>\n</td-dialog>\n", styles: [".td-dialog-input-wrapper{flex-direction:row;box-sizing:border-box;display:flex}.td-dialog-input-wrapper .td-dialog-input{flex:1;box-sizing:border-box}.td-dialog-message{word-break:break-word}\n"] }]
|
166
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.MatDialogRef }]; }, propDecorators: { _input: [{
|
145
167
|
type: ViewChild,
|
146
168
|
args: ['input', { static: true }]
|
169
|
+
}], _closeBtn: [{
|
170
|
+
type: ViewChild,
|
171
|
+
args: ['closeBtn', { static: true, read: ElementRef }]
|
172
|
+
}], _acceptBtn: [{
|
173
|
+
type: ViewChild,
|
174
|
+
args: ['acceptBtn', { static: true, read: ElementRef }]
|
147
175
|
}] } });
|
148
176
|
|
149
177
|
class TdDialogService {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"covalent-core-dialogs.mjs","sources":["../../../../libs/angular/dialogs/src/dialog.component.ts","../../../../libs/angular/dialogs/src/dialog.component.html","../../../../libs/angular/dialogs/src/alert-dialog/alert-dialog.component.ts","../../../../libs/angular/dialogs/src/alert-dialog/alert-dialog.component.html","../../../../libs/angular/dialogs/src/confirm-dialog/confirm-dialog.component.ts","../../../../libs/angular/dialogs/src/confirm-dialog/confirm-dialog.component.html","../../../../libs/angular/dialogs/src/prompt-dialog/prompt-dialog.component.ts","../../../../libs/angular/dialogs/src/prompt-dialog/prompt-dialog.component.html","../../../../libs/angular/dialogs/src/services/dialog.service.ts","../../../../libs/angular/dialogs/src/window-dialog/window-dialog.component.ts","../../../../libs/angular/dialogs/src/window-dialog/window-dialog.component.html","../../../../libs/angular/dialogs/src/dialogs.module.ts","../../../../libs/angular/dialogs/src/resizable-draggable-dialog/resizable-draggable-dialog.ts","../../../../libs/angular/dialogs/src/covalent-core-dialogs.ts"],"sourcesContent":["import {\n Component,\n Directive,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from '@angular/core';\n\n@Directive({ selector: '[tdDialogTitle]' })\nexport class TdDialogTitleDirective {}\n\n@Directive({ selector: '[tdDialogContent]' })\nexport class TdDialogContentDirective {}\n\n@Directive({ selector: '[tdDialogActions]' })\nexport class TdDialogActionsDirective {}\n\n@Component({\n selector: 'td-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n})\nexport class TdDialogComponent implements AfterContentInit {\n @ContentChildren(TdDialogTitleDirective, { descendants: true })\n dialogTitle!: QueryList<TdDialogTitleDirective>;\n @ContentChildren(TdDialogContentDirective, { descendants: true })\n dialogContent!: QueryList<TdDialogContentDirective>;\n @ContentChildren(TdDialogActionsDirective, { descendants: true })\n dialogActions!: QueryList<TdDialogActionsDirective>;\n\n ngAfterContentInit(): void {\n if (this.dialogTitle.length > 1) {\n throw new Error('Duplicate td-dialog-title component at in td-dialog.');\n }\n if (this.dialogContent.length > 1) {\n throw new Error('Duplicate td-dialog-content component at in td-dialog.');\n }\n if (this.dialogActions.length > 1) {\n throw new Error('Duplicate td-dialog-actions component at in td-dialog.');\n }\n }\n}\n","<div class=\"td-dialog-wrapper\">\n <h3 class=\"td-dialog-title\" *ngIf=\"dialogTitle.length > 0\">\n <ng-content select=\"[tdDialogTitle]\"></ng-content>\n </h3>\n <div class=\"td-dialog-content\" *ngIf=\"dialogContent.length > 0\">\n <ng-content select=\"[tdDialogContent]\"></ng-content>\n </div>\n <div class=\"td-dialog-actions\" *ngIf=\"dialogActions.length > 0\">\n <span class=\"td-dialog-spacer\"></span>\n <ng-content select=\"[tdDialogActions]\"></ng-content>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss'],\n})\nexport class TdAlertDialogComponent {\n title?: string;\n message?: string;\n closeButton?: string = 'CLOSE';\n\n constructor(private _dialogRef: MatDialogRef<TdAlertDialogComponent>) {}\n\n close(): void {\n this._dialogRef.close();\n }\n}\n","<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n </div>\n <div tdDialogActions>\n <button mat-button color=\"accent\" (click)=\"close()\">\n {{ closeButton }}\n </button>\n </div>\n</td-dialog>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n})\nexport class TdConfirmDialogComponent {\n title?: string;\n message?: string;\n cancelButton = 'CANCEL';\n acceptButton = 'ACCEPT';\n isDestructive = false;\n\n constructor(private _dialogRef: MatDialogRef<TdConfirmDialogComponent>) {}\n\n cancel(): void {\n this._dialogRef.close(false);\n }\n\n accept(): void {\n this._dialogRef.close(true);\n }\n}\n","<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n </div>\n <div tdDialogActions>\n <button\n mat-button\n #closeBtn\n (keydown.arrowright)=\"acceptBtn.focus()\"\n (click)=\"cancel()\"\n >\n {{ cancelButton }}\n </button>\n <button\n mat-button\n [color]=\"isDestructive ? 'warn' : 'accent'\"\n #acceptBtn\n (keydown.arrowleft)=\"closeBtn.focus()\"\n (click)=\"accept()\"\n >\n {{ acceptButton }}\n </button>\n </div>\n</td-dialog>\n","import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-prompt-dialog',\n templateUrl: './prompt-dialog.component.html',\n styleUrls: ['./prompt-dialog.component.scss'],\n})\nexport class TdPromptDialogComponent implements AfterViewInit {\n title?: string;\n message?: string;\n value?: string;\n cancelButton = 'CANCEL';\n acceptButton = 'ACCEPT';\n\n @ViewChild('input', { static: true }) _input!: ElementRef;\n\n constructor(private _dialogRef: MatDialogRef<TdPromptDialogComponent>) {}\n\n ngAfterViewInit(): void {\n // focus input once everything is rendered and good to go\n Promise.resolve().then(() => {\n (<HTMLInputElement>this._input.nativeElement).focus();\n });\n }\n\n /**\n * Method executed when input is focused\n * Selects all text\n */\n handleInputFocus(): void {\n (<HTMLInputElement>this._input.nativeElement).select();\n }\n\n cancel(): void {\n this._dialogRef.close();\n }\n\n accept(): void {\n this._dialogRef.close(this.value);\n }\n}\n","<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n <form #form=\"ngForm\" novalidate>\n <div class=\"td-dialog-input-wrapper\">\n <mat-form-field class=\"td-dialog-input\">\n <input\n matInput\n #input\n (focus)=\"handleInputFocus()\"\n (keydown.enter)=\"$event.preventDefault(); form.valid && accept()\"\n [(ngModel)]=\"value\"\n name=\"value\"\n required\n />\n </mat-form-field>\n </div>\n </form>\n </div>\n <div tdDialogActions>\n <button\n mat-button\n #closeBtn\n (keydown.arrowright)=\"acceptBtn.focus()\"\n (click)=\"cancel()\"\n >\n {{ cancelButton }}\n </button>\n <button\n mat-button\n color=\"accent\"\n #acceptBtn\n (keydown.arrowleft)=\"closeBtn.focus()\"\n [disabled]=\"!form.valid\"\n (click)=\"accept()\"\n >\n {{ acceptButton }}\n </button>\n </div>\n</td-dialog>\n","import { Injectable, Inject, Renderer2, RendererFactory2 } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MatDialogConfig,\n} from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { TdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\nimport { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject } from 'rxjs';\n\nexport interface IDialogConfig extends MatDialogConfig {\n title?: string;\n message: string;\n}\n\nexport interface IAlertConfig extends IDialogConfig {\n closeButton?: string;\n}\n\nexport interface IConfirmConfig extends IDialogConfig {\n acceptButton?: string;\n cancelButton?: string;\n isDestructive?: boolean;\n}\n\nexport interface IPromptConfig extends IConfirmConfig {\n value?: string;\n}\n\nexport interface IDraggableConfig<T> {\n component: ComponentType<T>;\n config?: MatDialogConfig;\n // CSS selectors of element(s) inside the component meant to be drag handle(s)\n dragHandleSelectors?: string[];\n // Class that will be added to the component signifying drag-ability\n draggableClass?: string;\n}\n\nexport interface IDraggableRefs<T> {\n matDialogRef: MatDialogRef<T>;\n dragRefSubject: Subject<DragRef>;\n}\n\n@Injectable()\nexport class TdDialogService {\n private _renderer2: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _dialogService: MatDialog,\n private _dragDrop: DragDrop,\n private rendererFactory: RendererFactory2\n ) {\n this._renderer2 = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * params:\n * - component: ComponentType<T>\n * - config: MatDialogConfig\n * Wrapper function over the open() method in MatDialog.\n * Opens a modal dialog containing the given component.\n */\n public open<T>(\n component: ComponentType<T>,\n config?: MatDialogConfig\n ): MatDialogRef<T> {\n return this._dialogService.open(component, config);\n }\n\n /**\n * Wrapper function over the closeAll() method in MatDialog.\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n this._dialogService.closeAll();\n }\n\n /**\n * params:\n * - config: IAlertConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * closeButton?: string;\n * }\n *\n * Opens an alert dialog with the provided config.\n * Returns an MatDialogRef<TdAlertDialogComponent> object.\n */\n public openAlert(config: IAlertConfig): MatDialogRef<TdAlertDialogComponent> {\n const dialogConfig: MatDialogConfig = this._createConfig(config);\n const dialogRef: MatDialogRef<TdAlertDialogComponent> =\n this._dialogService.open(TdAlertDialogComponent, dialogConfig);\n const alertDialogComponent: TdAlertDialogComponent =\n dialogRef.componentInstance;\n alertDialogComponent.title = config.title;\n alertDialogComponent.message = config.message;\n if (config.closeButton) {\n alertDialogComponent.closeButton = config.closeButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IConfirmConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * isDestructive?: boolean;\n * }\n *\n * Opens a confirm dialog with the provided config.\n * Returns an MatDialogRef<TdConfirmDialogComponent> object.\n */\n public openConfirm(\n config: IConfirmConfig\n ): MatDialogRef<TdConfirmDialogComponent> {\n const dialogConfig: MatDialogConfig = this._createConfig(config);\n const dialogRef: MatDialogRef<TdConfirmDialogComponent> =\n this._dialogService.open(TdConfirmDialogComponent, dialogConfig);\n const confirmDialogComponent: TdConfirmDialogComponent =\n dialogRef.componentInstance;\n confirmDialogComponent.title = config.title;\n confirmDialogComponent.message = config.message;\n if (config.acceptButton) {\n confirmDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.isDestructive) {\n confirmDialogComponent.isDestructive = config.isDestructive;\n }\n if (config.cancelButton) {\n confirmDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IPromptConfig {\n * message: string;\n * title?: string;\n * value?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a prompt dialog with the provided config.\n * Returns an MatDialogRef<TdPromptDialogComponent> object.\n */\n public openPrompt(\n config: IPromptConfig\n ): MatDialogRef<TdPromptDialogComponent> {\n const dialogConfig: MatDialogConfig = this._createConfig(config);\n const dialogRef: MatDialogRef<TdPromptDialogComponent> =\n this._dialogService.open(TdPromptDialogComponent, dialogConfig);\n const promptDialogComponent: TdPromptDialogComponent =\n dialogRef.componentInstance;\n promptDialogComponent.title = config.title;\n promptDialogComponent.message = config.message;\n promptDialogComponent.value = config.value;\n if (config.acceptButton) {\n promptDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n promptDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * Opens a draggable dialog containing the given component.\n */\n public openDraggable<T>({\n component,\n config,\n dragHandleSelectors,\n draggableClass,\n }: IDraggableConfig<T>): IDraggableRefs<T> {\n const matDialogRef: MatDialogRef<T, any> = this._dialogService.open(\n component,\n config\n );\n const dragRefSubject: Subject<DragRef> = new Subject<DragRef>();\n\n const CDK_OVERLAY_PANE_SELECTOR = '.cdk-overlay-pane';\n const CDK_OVERLAY_CONTAINER_SELECTOR = '.cdk-overlay-container';\n\n matDialogRef.afterOpened().subscribe(() => {\n const dialogElement: HTMLElement = <HTMLElement>(\n this._document.getElementById(matDialogRef.id)\n );\n const draggableElement: DragRef =\n this._dragDrop.createDrag(dialogElement);\n\n if (draggableClass) {\n const childComponent = dialogElement.firstElementChild;\n this._renderer2.addClass(childComponent, draggableClass);\n }\n if (dragHandleSelectors && dragHandleSelectors.length) {\n const dragHandles: Element[] = dragHandleSelectors.reduce(\n (acc: Element[], curr: string) => [\n ...acc,\n ...Array.from(dialogElement.querySelectorAll(curr)),\n ],\n []\n );\n if (dragHandles.length > 0) {\n draggableElement.withHandles(<HTMLElement[]>dragHandles);\n }\n }\n const rootElement = dialogElement.closest(CDK_OVERLAY_PANE_SELECTOR);\n if (rootElement) {\n draggableElement.withRootElement(<HTMLElement>rootElement);\n }\n\n const boundaryElement = dialogElement.closest(\n CDK_OVERLAY_CONTAINER_SELECTOR\n );\n if (boundaryElement) {\n draggableElement.withBoundaryElement(<HTMLElement>boundaryElement);\n }\n dragRefSubject.next(draggableElement);\n });\n\n return { matDialogRef, dragRefSubject };\n }\n\n private _createConfig(config: IDialogConfig): MatDialogConfig {\n const dialogConfig: MatDialogConfig = new MatDialogConfig();\n dialogConfig.width = '400px';\n Object.assign(dialogConfig, config);\n return dialogConfig;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n selector: 'td-window-dialog',\n templateUrl: './window-dialog.component.html',\n styleUrls: ['./window-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdWindowDialogComponent {\n @Input() toolbarColor?: ThemePalette;\n @Input() docked? = false;\n\n @Input() title?: string;\n @Input() toggleDockedStateLabel?: string;\n @Input() closeLabel?: string;\n\n @Output() dockToggled: EventEmitter<boolean> = new EventEmitter();\n @Output() closed: EventEmitter<void> = new EventEmitter();\n\n toolbarHeight = 56;\n\n toggleDockedState(): void {\n this.dockToggled.emit(this.docked);\n }\n}\n","<mat-toolbar\n [color]=\"toolbarColor\"\n class=\"td-window-dialog-toolbar\"\n [style.min-height.px]=\"toolbarHeight\"\n [style.cursor]=\"docked ? 'inherit' : 'move'\"\n>\n <mat-toolbar-row [style.height.px]=\"toolbarHeight\">\n <div layout=\"row\" layout-align=\"start center\" flex>\n <span class=\"mat-title td-window-dialog-title truncate\" flex>\n {{ title }}\n </span>\n <!-- TODO: Resizing a drag-and-drop element was not working so removed docking/undocking for now-->\n <!-- <button mat-icon-button [matTooltip]=\"toggleDockedStateLabel\" (click)=\"toggleDockedState()\">\n <mat-icon [attr.aria-label]=\"toggleDockedStateLabel\">\n {{ docked ? 'unfold_more' : 'unfold_less' }}\n </mat-icon>\n </button> -->\n\n <button\n mat-icon-button\n [matTooltip]=\"closeLabel ?? ''\"\n (click)=\"closed.emit()\"\n class=\"td-window-dialog-close\"\n [attr.data-test]=\"'close-button'\"\n >\n <mat-icon [attr.aria-label]=\"closeLabel\">close</mat-icon>\n </button>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n<ng-content></ng-content>\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport {\n TdDialogComponent,\n TdDialogTitleDirective,\n TdDialogActionsDirective,\n TdDialogContentDirective,\n} from './dialog.component';\nimport { TdAlertDialogComponent } from './alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from './prompt-dialog/prompt-dialog.component';\nimport { TdDialogService } from './services/dialog.service';\nimport { TdWindowDialogComponent } from './window-dialog/window-dialog.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\nconst TD_DIALOGS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n TdDialogComponent,\n TdDialogTitleDirective,\n TdDialogActionsDirective,\n TdDialogContentDirective,\n TdWindowDialogComponent,\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatDialogModule,\n MatInputModule,\n MatButtonModule,\n MatToolbarModule,\n MatTooltipModule,\n MatIconModule,\n ],\n declarations: [...TD_DIALOGS],\n exports: [...TD_DIALOGS],\n providers: [TdDialogService],\n})\nexport class CovalentDialogsModule {}\n","import { Renderer2 } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { DragRef } from '@angular/cdk/drag-drop';\nimport { merge, Subscription, fromEvent } from 'rxjs';\nimport { Point } from '@angular/cdk/drag-drop/drag-ref';\n\nenum corners {\n topRight = 'topRight',\n bottomRight = 'bottomRight',\n bottomLeft = 'bottomLeft',\n topLeft = 'topLeft',\n}\nenum cursors {\n nesw = 'nesw-resize',\n nwse = 'nwse-resize',\n}\nenum verticalAlignment {\n top = 'top',\n bottom = 'bottom',\n}\nenum horizontalAlignment {\n right = 'right',\n left = 'left',\n}\n\nconst cornerWidth = '16px';\nconst offset = '0px';\nconst minWidth = 200;\nconst minHeight = 200;\n\nfunction getPixels(sizeString: string): number {\n return parseFloat((sizeString || '').replace('px', ''));\n}\n\nfunction clamp(min: number, num: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n\nexport class ResizableDraggableDialog {\n cornerElements: HTMLElement[] = [];\n pointerDownSubs: Subscription[] = [];\n\n constructor(\n private _document: any,\n private _renderer2: Renderer2,\n private _dialogRef: MatDialogRef<any>,\n private _dragRef: DragRef\n ) {\n this._initialPositionReset();\n this._attachCorners();\n }\n\n public attach(): void {\n this.detach();\n this._attachCorners();\n }\n\n public detach(): void {\n this.pointerDownSubs.forEach((sub: Subscription) => sub.unsubscribe());\n this.pointerDownSubs = [];\n this.cornerElements.forEach((elem: HTMLElement) =>\n this._renderer2.removeChild(this._getDialogWrapper(), elem)\n );\n this.cornerElements = [];\n }\n\n private _getDialogWrapper(): HTMLElement | null {\n return (\n <HTMLElement>this._document.getElementById(this._dialogRef.id) || {}\n ).parentElement;\n }\n\n private _getViewportDimensions(): ClientRect | undefined {\n return this._getDialogWrapper()?.parentElement?.getBoundingClientRect();\n }\n\n private _getDialogWrapperDimensions(): { width: number; height: number } {\n const wrapper = this._getDialogWrapper();\n if (!wrapper) {\n return { width: 0, height: 0 };\n }\n const dimensions: CSSStyleDeclaration = getComputedStyle(wrapper);\n return {\n width: getPixels(dimensions.width),\n height: getPixels(dimensions.height),\n };\n }\n\n private _initialPositionReset(): void {\n const viewportWidth = this._getViewportDimensions()?.right ?? 0;\n const viewportHeight = this._getViewportDimensions()?.bottom ?? 0;\n const { width, height } = this._getDialogWrapperDimensions();\n const wrapperStyle = this._getDialogWrapper()?.style;\n const originalDialogRight = wrapperStyle?.marginRight;\n const originalDialogLeft = wrapperStyle?.marginLeft;\n const originalDialogBottom = wrapperStyle?.marginBottom;\n const originalDialogTop = wrapperStyle?.marginTop;\n let x: number;\n if (originalDialogLeft) {\n x = getPixels(originalDialogLeft);\n } else if (originalDialogRight) {\n x = viewportWidth - getPixels(originalDialogRight) - width;\n } else {\n x = (viewportWidth - width) / 2;\n }\n let y: number;\n if (originalDialogTop) {\n y = getPixels(originalDialogTop);\n } else if (originalDialogBottom) {\n y = viewportHeight - getPixels(originalDialogBottom) - height;\n } else {\n y = (viewportHeight - height) / 2;\n }\n // use drag ref's mechanisms for positioning instead of the dialog's\n this._dialogRef.updatePosition({\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px',\n });\n this._dragRef.setFreeDragPosition({ x, y });\n }\n\n private _attachCorners(): void {\n Object.values(corners).forEach((corner: corners) => {\n const element: HTMLElement = this._renderer2.createElement('div');\n this.cornerElements = [...this.cornerElements, element];\n this._renderer2.setStyle(element, 'position', 'absolute');\n this._renderer2.setStyle(element, 'width', cornerWidth);\n this._renderer2.setStyle(element, 'height', cornerWidth);\n this._renderer2.appendChild(this._getDialogWrapper(), element);\n\n let cursor: cursors;\n let topBottom: verticalAlignment;\n let rightLeft: horizontalAlignment;\n\n if (corner === corners.topRight) {\n cursor = cursors.nesw;\n topBottom = verticalAlignment.top;\n rightLeft = horizontalAlignment.right;\n } else if (corner === corners.bottomRight) {\n cursor = cursors.nwse;\n topBottom = verticalAlignment.bottom;\n rightLeft = horizontalAlignment.right;\n\n const icon: HTMLElement = this._renderer2.createElement('i');\n this._renderer2.addClass(icon, 'material-icons');\n this._renderer2.appendChild(\n icon,\n this._renderer2.createText('filter_list')\n );\n this._renderer2.appendChild(element, icon);\n this._renderer2.setStyle(\n icon,\n 'transform',\n `rotate(${315}deg) translate(0px, ${offset})`\n );\n this._renderer2.setStyle(icon, 'font-size', cornerWidth);\n } else if (corner === corners.bottomLeft) {\n cursor = cursors.nesw;\n topBottom = verticalAlignment.bottom;\n rightLeft = horizontalAlignment.left;\n } else {\n cursor = cursors.nwse;\n topBottom = verticalAlignment.top;\n rightLeft = horizontalAlignment.left;\n }\n this._renderer2.setStyle(element, topBottom, offset);\n this._renderer2.setStyle(element, rightLeft, offset);\n this._renderer2.setStyle(element, 'cursor', cursor);\n\n const pointerDownSub: Subscription = fromEvent<PointerEvent>(\n element,\n 'pointerdown'\n ).subscribe((event: PointerEvent) => {\n this._handleMouseDown(event, corner);\n });\n this.pointerDownSubs = [...this.pointerDownSubs, pointerDownSub];\n });\n }\n\n private _handleMouseDown(event: PointerEvent, corner: corners): void {\n this._renderer2.setStyle(\n <HTMLElement>this._document.body,\n 'user-select',\n 'none'\n );\n const { width: originalWidth, height: originalHeight } =\n this._getDialogWrapperDimensions();\n const originalMouseX: number = event.pageX;\n const originalMouseY: number = event.pageY;\n const { x: currentTransformX, y: currentTransformY }: Point =\n this._dragRef.getFreeDragPosition();\n const wrapper = this._getDialogWrapper()?.getBoundingClientRect();\n const distanceFromBottom = wrapper?.bottom ?? 0;\n const distanceFromRight = wrapper?.right ?? 0;\n const viewportWidth = this._getViewportDimensions()?.right ?? 0;\n const viewportHeight = this._getViewportDimensions()?.bottom ?? 0;\n\n const mouseMoveSub: Subscription = fromEvent<PointerEvent>(\n window,\n 'pointermove'\n ).subscribe((e: PointerEvent) => {\n e.preventDefault(); // prevent highlighting of text when dragging\n\n const yDelta: number = clamp(0, e.pageY, viewportHeight) - originalMouseY;\n const xDelta: number = clamp(0, e.pageX, viewportWidth) - originalMouseX;\n let newHeight: number;\n let newWidth: number;\n let newTransformY = 0;\n let newTransformX = 0;\n\n // top right\n if (corner === corners.topRight) {\n newHeight = clamp(minHeight, originalHeight - yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth + xDelta, viewportWidth);\n newTransformY = clamp(\n 0,\n currentTransformY + yDelta,\n distanceFromBottom - newHeight\n );\n newTransformX = currentTransformX;\n }\n // bottom right\n else if (corner === corners.bottomRight) {\n newHeight = clamp(minHeight, originalHeight + yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth + xDelta, viewportWidth);\n newTransformY = currentTransformY;\n newTransformX = currentTransformX;\n }\n // bottom left\n else if (corner === corners.bottomLeft) {\n newHeight = clamp(minHeight, originalHeight + yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth - xDelta, viewportWidth);\n newTransformY = currentTransformY;\n newTransformX = clamp(\n 0,\n currentTransformX + xDelta,\n distanceFromRight - newWidth\n );\n }\n // top left\n else {\n newHeight = clamp(minHeight, originalHeight - yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth - xDelta, viewportWidth);\n\n newTransformX = clamp(\n 0,\n currentTransformX + xDelta,\n distanceFromRight - newWidth\n );\n newTransformY = clamp(\n 0,\n currentTransformY + yDelta,\n distanceFromBottom - newHeight\n );\n }\n this._dialogRef.updateSize(`${newWidth}px`, `${newHeight}px`);\n this._dragRef.setFreeDragPosition({\n x: newTransformX,\n y: newTransformY,\n });\n });\n\n const mouseUpSub: Subscription = merge(\n fromEvent(window, 'pointerup'),\n fromEvent(window, 'pointercancel')\n ).subscribe(() => {\n this._renderer2.removeStyle(\n <HTMLElement>this._document.body,\n 'user-select'\n );\n mouseMoveSub.unsubscribe();\n mouseUpSub.unsubscribe();\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"covalent-core-dialogs.mjs","sources":["../../../../libs/angular/dialogs/src/dialog.component.ts","../../../../libs/angular/dialogs/src/dialog.component.html","../../../../libs/angular/dialogs/src/alert-dialog/alert-dialog.component.ts","../../../../libs/angular/dialogs/src/alert-dialog/alert-dialog.component.html","../../../../libs/angular/dialogs/src/confirm-dialog/confirm-dialog.component.ts","../../../../libs/angular/dialogs/src/confirm-dialog/confirm-dialog.component.html","../../../../libs/angular/dialogs/src/prompt-dialog/prompt-dialog.component.ts","../../../../libs/angular/dialogs/src/prompt-dialog/prompt-dialog.component.html","../../../../libs/angular/dialogs/src/services/dialog.service.ts","../../../../libs/angular/dialogs/src/window-dialog/window-dialog.component.ts","../../../../libs/angular/dialogs/src/window-dialog/window-dialog.component.html","../../../../libs/angular/dialogs/src/dialogs.module.ts","../../../../libs/angular/dialogs/src/resizable-draggable-dialog/resizable-draggable-dialog.ts","../../../../libs/angular/dialogs/src/covalent-core-dialogs.ts"],"sourcesContent":["import {\n Component,\n Directive,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from '@angular/core';\n\n@Directive({ selector: '[tdDialogTitle]' })\nexport class TdDialogTitleDirective {}\n\n@Directive({ selector: '[tdDialogContent]' })\nexport class TdDialogContentDirective {}\n\n@Directive({ selector: '[tdDialogActions]' })\nexport class TdDialogActionsDirective {}\n\n@Component({\n selector: 'td-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n})\nexport class TdDialogComponent implements AfterContentInit {\n @ContentChildren(TdDialogTitleDirective, { descendants: true })\n dialogTitle!: QueryList<TdDialogTitleDirective>;\n @ContentChildren(TdDialogContentDirective, { descendants: true })\n dialogContent!: QueryList<TdDialogContentDirective>;\n @ContentChildren(TdDialogActionsDirective, { descendants: true })\n dialogActions!: QueryList<TdDialogActionsDirective>;\n\n ngAfterContentInit(): void {\n if (this.dialogTitle.length > 1) {\n throw new Error('Duplicate td-dialog-title component at in td-dialog.');\n }\n if (this.dialogContent.length > 1) {\n throw new Error('Duplicate td-dialog-content component at in td-dialog.');\n }\n if (this.dialogActions.length > 1) {\n throw new Error('Duplicate td-dialog-actions component at in td-dialog.');\n }\n }\n}\n","<div class=\"td-dialog-wrapper\">\n <h3 class=\"td-dialog-title\" *ngIf=\"dialogTitle.length > 0\">\n <ng-content select=\"[tdDialogTitle]\"></ng-content>\n </h3>\n <div class=\"td-dialog-content\" *ngIf=\"dialogContent.length > 0\">\n <ng-content select=\"[tdDialogContent]\"></ng-content>\n </div>\n <div class=\"td-dialog-actions\" *ngIf=\"dialogActions.length > 0\">\n <span class=\"td-dialog-spacer\"></span>\n <ng-content select=\"[tdDialogActions]\"></ng-content>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss'],\n})\nexport class TdAlertDialogComponent {\n title?: string;\n message?: string;\n closeButton?: string = 'CLOSE';\n\n constructor(private _dialogRef: MatDialogRef<TdAlertDialogComponent>) {}\n\n close(): void {\n this._dialogRef.close();\n }\n}\n","<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n </div>\n <div tdDialogActions>\n <button mat-button color=\"accent\" (click)=\"close()\">\n {{ closeButton }}\n </button>\n </div>\n</td-dialog>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss'],\n})\nexport class TdConfirmDialogComponent {\n title?: string;\n message?: string;\n cancelButton = 'CANCEL';\n acceptButton = 'ACCEPT';\n isDestructive = false;\n\n constructor(private _dialogRef: MatDialogRef<TdConfirmDialogComponent>) {}\n\n cancel(): void {\n this._dialogRef.close(false);\n }\n\n accept(): void {\n this._dialogRef.close(true);\n }\n}\n","<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n </div>\n <div tdDialogActions>\n <button\n mat-button\n #closeBtn\n (keydown.arrowright)=\"acceptBtn.focus()\"\n (click)=\"cancel()\"\n >\n {{ cancelButton }}\n </button>\n <button\n mat-button\n [color]=\"isDestructive ? 'warn' : 'accent'\"\n #acceptBtn\n (keydown.arrowleft)=\"closeBtn.focus()\"\n (click)=\"accept()\"\n >\n {{ acceptButton }}\n </button>\n </div>\n</td-dialog>\n","import {\n Component,\n ViewChild,\n ElementRef,\n AfterViewInit,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'td-prompt-dialog',\n templateUrl: './prompt-dialog.component.html',\n styleUrls: ['./prompt-dialog.component.scss'],\n})\nexport class TdPromptDialogComponent implements AfterViewInit, OnDestroy {\n title?: string;\n message?: string;\n value?: string;\n cancelButton = 'CANCEL';\n acceptButton = 'ACCEPT';\n\n /** The native `<input matInput />` element. */\n @ViewChild('input', { static: true }) _input!: ElementRef<HTMLInputElement>;\n\n @ViewChild('closeBtn', { static: true, read: ElementRef })\n _closeBtn!: ElementRef<HTMLButtonElement>;\n\n @ViewChild('acceptBtn', { static: true, read: ElementRef })\n _acceptBtn!: ElementRef<HTMLButtonElement>;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _ngZone: NgZone,\n private _dialogRef: MatDialogRef<TdPromptDialogComponent>\n ) {}\n\n ngAfterViewInit(): void {\n this._ngZone.runOutsideAngular(() => {\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // `Promise` is a microtask and microtask are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n // We focus input once everything is rendered and good to go.\n requestAnimationFrame(() => this._input.nativeElement.focus());\n\n fromEvent(this._input.nativeElement, 'focus')\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n // This is executed when the input is focused, selects all text.\n this._input.nativeElement.select();\n });\n\n fromEvent<KeyboardEvent>(this._closeBtn.nativeElement, 'keydown')\n .pipe(takeUntil(this._destroy$))\n .subscribe((event) => {\n if (event.keyCode === RIGHT_ARROW) {\n this._acceptBtn.nativeElement.focus();\n }\n });\n\n fromEvent<KeyboardEvent>(this._acceptBtn.nativeElement, 'keydown')\n .pipe(takeUntil(this._destroy$))\n .subscribe((event) => {\n if (event.keyCode === LEFT_ARROW) {\n this._closeBtn.nativeElement.focus();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n cancel(): void {\n this._dialogRef.close();\n }\n\n accept(): void {\n this._dialogRef.close(this.value);\n }\n}\n","<td-dialog>\n <div tdDialogTitle *ngIf=\"title\">\n {{ title }}\n </div>\n <div tdDialogContent>\n <span class=\"td-dialog-message\">{{ message }}</span>\n <form #form=\"ngForm\" novalidate>\n <div class=\"td-dialog-input-wrapper\">\n <mat-form-field class=\"td-dialog-input\">\n <input\n matInput\n #input\n (keydown.enter)=\"$event.preventDefault(); form.valid && accept()\"\n [(ngModel)]=\"value\"\n name=\"value\"\n required\n />\n </mat-form-field>\n </div>\n </form>\n </div>\n <div tdDialogActions>\n <button mat-button #closeBtn (click)=\"cancel()\">\n {{ cancelButton }}\n </button>\n <button\n mat-button\n color=\"accent\"\n #acceptBtn\n [disabled]=\"!form.valid\"\n (click)=\"accept()\"\n >\n {{ acceptButton }}\n </button>\n </div>\n</td-dialog>\n","import { Injectable, Inject, Renderer2, RendererFactory2 } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MatDialogConfig,\n} from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { TdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\nimport { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject } from 'rxjs';\n\nexport interface IDialogConfig extends MatDialogConfig {\n title?: string;\n message: string;\n}\n\nexport interface IAlertConfig extends IDialogConfig {\n closeButton?: string;\n}\n\nexport interface IConfirmConfig extends IDialogConfig {\n acceptButton?: string;\n cancelButton?: string;\n isDestructive?: boolean;\n}\n\nexport interface IPromptConfig extends IConfirmConfig {\n value?: string;\n}\n\nexport interface IDraggableConfig<T> {\n component: ComponentType<T>;\n config?: MatDialogConfig;\n // CSS selectors of element(s) inside the component meant to be drag handle(s)\n dragHandleSelectors?: string[];\n // Class that will be added to the component signifying drag-ability\n draggableClass?: string;\n}\n\nexport interface IDraggableRefs<T> {\n matDialogRef: MatDialogRef<T>;\n dragRefSubject: Subject<DragRef>;\n}\n\n@Injectable()\nexport class TdDialogService {\n private _renderer2: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _dialogService: MatDialog,\n private _dragDrop: DragDrop,\n private rendererFactory: RendererFactory2\n ) {\n this._renderer2 = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * params:\n * - component: ComponentType<T>\n * - config: MatDialogConfig\n * Wrapper function over the open() method in MatDialog.\n * Opens a modal dialog containing the given component.\n */\n public open<T>(\n component: ComponentType<T>,\n config?: MatDialogConfig\n ): MatDialogRef<T> {\n return this._dialogService.open(component, config);\n }\n\n /**\n * Wrapper function over the closeAll() method in MatDialog.\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n this._dialogService.closeAll();\n }\n\n /**\n * params:\n * - config: IAlertConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * closeButton?: string;\n * }\n *\n * Opens an alert dialog with the provided config.\n * Returns an MatDialogRef<TdAlertDialogComponent> object.\n */\n public openAlert(config: IAlertConfig): MatDialogRef<TdAlertDialogComponent> {\n const dialogConfig: MatDialogConfig = this._createConfig(config);\n const dialogRef: MatDialogRef<TdAlertDialogComponent> =\n this._dialogService.open(TdAlertDialogComponent, dialogConfig);\n const alertDialogComponent: TdAlertDialogComponent =\n dialogRef.componentInstance;\n alertDialogComponent.title = config.title;\n alertDialogComponent.message = config.message;\n if (config.closeButton) {\n alertDialogComponent.closeButton = config.closeButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IConfirmConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * isDestructive?: boolean;\n * }\n *\n * Opens a confirm dialog with the provided config.\n * Returns an MatDialogRef<TdConfirmDialogComponent> object.\n */\n public openConfirm(\n config: IConfirmConfig\n ): MatDialogRef<TdConfirmDialogComponent> {\n const dialogConfig: MatDialogConfig = this._createConfig(config);\n const dialogRef: MatDialogRef<TdConfirmDialogComponent> =\n this._dialogService.open(TdConfirmDialogComponent, dialogConfig);\n const confirmDialogComponent: TdConfirmDialogComponent =\n dialogRef.componentInstance;\n confirmDialogComponent.title = config.title;\n confirmDialogComponent.message = config.message;\n if (config.acceptButton) {\n confirmDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.isDestructive) {\n confirmDialogComponent.isDestructive = config.isDestructive;\n }\n if (config.cancelButton) {\n confirmDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IPromptConfig {\n * message: string;\n * title?: string;\n * value?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a prompt dialog with the provided config.\n * Returns an MatDialogRef<TdPromptDialogComponent> object.\n */\n public openPrompt(\n config: IPromptConfig\n ): MatDialogRef<TdPromptDialogComponent> {\n const dialogConfig: MatDialogConfig = this._createConfig(config);\n const dialogRef: MatDialogRef<TdPromptDialogComponent> =\n this._dialogService.open(TdPromptDialogComponent, dialogConfig);\n const promptDialogComponent: TdPromptDialogComponent =\n dialogRef.componentInstance;\n promptDialogComponent.title = config.title;\n promptDialogComponent.message = config.message;\n promptDialogComponent.value = config.value;\n if (config.acceptButton) {\n promptDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n promptDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * Opens a draggable dialog containing the given component.\n */\n public openDraggable<T>({\n component,\n config,\n dragHandleSelectors,\n draggableClass,\n }: IDraggableConfig<T>): IDraggableRefs<T> {\n const matDialogRef: MatDialogRef<T, any> = this._dialogService.open(\n component,\n config\n );\n const dragRefSubject: Subject<DragRef> = new Subject<DragRef>();\n\n const CDK_OVERLAY_PANE_SELECTOR = '.cdk-overlay-pane';\n const CDK_OVERLAY_CONTAINER_SELECTOR = '.cdk-overlay-container';\n\n matDialogRef.afterOpened().subscribe(() => {\n const dialogElement: HTMLElement = <HTMLElement>(\n this._document.getElementById(matDialogRef.id)\n );\n const draggableElement: DragRef =\n this._dragDrop.createDrag(dialogElement);\n\n if (draggableClass) {\n const childComponent = dialogElement.firstElementChild;\n this._renderer2.addClass(childComponent, draggableClass);\n }\n if (dragHandleSelectors && dragHandleSelectors.length) {\n const dragHandles: Element[] = dragHandleSelectors.reduce(\n (acc: Element[], curr: string) => [\n ...acc,\n ...Array.from(dialogElement.querySelectorAll(curr)),\n ],\n []\n );\n if (dragHandles.length > 0) {\n draggableElement.withHandles(<HTMLElement[]>dragHandles);\n }\n }\n const rootElement = dialogElement.closest(CDK_OVERLAY_PANE_SELECTOR);\n if (rootElement) {\n draggableElement.withRootElement(<HTMLElement>rootElement);\n }\n\n const boundaryElement = dialogElement.closest(\n CDK_OVERLAY_CONTAINER_SELECTOR\n );\n if (boundaryElement) {\n draggableElement.withBoundaryElement(<HTMLElement>boundaryElement);\n }\n dragRefSubject.next(draggableElement);\n });\n\n return { matDialogRef, dragRefSubject };\n }\n\n private _createConfig(config: IDialogConfig): MatDialogConfig {\n const dialogConfig: MatDialogConfig = new MatDialogConfig();\n dialogConfig.width = '400px';\n Object.assign(dialogConfig, config);\n return dialogConfig;\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n selector: 'td-window-dialog',\n templateUrl: './window-dialog.component.html',\n styleUrls: ['./window-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdWindowDialogComponent {\n @Input() toolbarColor?: ThemePalette;\n @Input() docked? = false;\n\n @Input() title?: string;\n @Input() toggleDockedStateLabel?: string;\n @Input() closeLabel?: string;\n\n @Output() dockToggled: EventEmitter<boolean> = new EventEmitter();\n @Output() closed: EventEmitter<void> = new EventEmitter();\n\n toolbarHeight = 56;\n\n toggleDockedState(): void {\n this.dockToggled.emit(this.docked);\n }\n}\n","<mat-toolbar\n [color]=\"toolbarColor\"\n class=\"td-window-dialog-toolbar\"\n [style.min-height.px]=\"toolbarHeight\"\n [style.cursor]=\"docked ? 'inherit' : 'move'\"\n>\n <mat-toolbar-row [style.height.px]=\"toolbarHeight\">\n <div layout=\"row\" layout-align=\"start center\" flex>\n <span class=\"mat-title td-window-dialog-title truncate\" flex>\n {{ title }}\n </span>\n <!-- TODO: Resizing a drag-and-drop element was not working so removed docking/undocking for now-->\n <!-- <button mat-icon-button [matTooltip]=\"toggleDockedStateLabel\" (click)=\"toggleDockedState()\">\n <mat-icon [attr.aria-label]=\"toggleDockedStateLabel\">\n {{ docked ? 'unfold_more' : 'unfold_less' }}\n </mat-icon>\n </button> -->\n\n <button\n mat-icon-button\n [matTooltip]=\"closeLabel ?? ''\"\n (click)=\"closed.emit()\"\n class=\"td-window-dialog-close\"\n [attr.data-test]=\"'close-button'\"\n >\n <mat-icon [attr.aria-label]=\"closeLabel\">close</mat-icon>\n </button>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n<ng-content></ng-content>\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport {\n TdDialogComponent,\n TdDialogTitleDirective,\n TdDialogActionsDirective,\n TdDialogContentDirective,\n} from './dialog.component';\nimport { TdAlertDialogComponent } from './alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from './prompt-dialog/prompt-dialog.component';\nimport { TdDialogService } from './services/dialog.service';\nimport { TdWindowDialogComponent } from './window-dialog/window-dialog.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\nconst TD_DIALOGS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n TdDialogComponent,\n TdDialogTitleDirective,\n TdDialogActionsDirective,\n TdDialogContentDirective,\n TdWindowDialogComponent,\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatDialogModule,\n MatInputModule,\n MatButtonModule,\n MatToolbarModule,\n MatTooltipModule,\n MatIconModule,\n ],\n declarations: [...TD_DIALOGS],\n exports: [...TD_DIALOGS],\n providers: [TdDialogService],\n})\nexport class CovalentDialogsModule {}\n","import { Renderer2 } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { DragRef } from '@angular/cdk/drag-drop';\nimport { merge, Subscription, fromEvent } from 'rxjs';\nimport { Point } from '@angular/cdk/drag-drop/drag-ref';\n\nenum corners {\n topRight = 'topRight',\n bottomRight = 'bottomRight',\n bottomLeft = 'bottomLeft',\n topLeft = 'topLeft',\n}\nenum cursors {\n nesw = 'nesw-resize',\n nwse = 'nwse-resize',\n}\nenum verticalAlignment {\n top = 'top',\n bottom = 'bottom',\n}\nenum horizontalAlignment {\n right = 'right',\n left = 'left',\n}\n\nconst cornerWidth = '16px';\nconst offset = '0px';\nconst minWidth = 200;\nconst minHeight = 200;\n\nfunction getPixels(sizeString: string): number {\n return parseFloat((sizeString || '').replace('px', ''));\n}\n\nfunction clamp(min: number, num: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n\nexport class ResizableDraggableDialog {\n cornerElements: HTMLElement[] = [];\n pointerDownSubs: Subscription[] = [];\n\n constructor(\n private _document: any,\n private _renderer2: Renderer2,\n private _dialogRef: MatDialogRef<any>,\n private _dragRef: DragRef\n ) {\n this._initialPositionReset();\n this._attachCorners();\n }\n\n public attach(): void {\n this.detach();\n this._attachCorners();\n }\n\n public detach(): void {\n this.pointerDownSubs.forEach((sub: Subscription) => sub.unsubscribe());\n this.pointerDownSubs = [];\n this.cornerElements.forEach((elem: HTMLElement) =>\n this._renderer2.removeChild(this._getDialogWrapper(), elem)\n );\n this.cornerElements = [];\n }\n\n private _getDialogWrapper(): HTMLElement | null {\n return (\n <HTMLElement>this._document.getElementById(this._dialogRef.id) || {}\n ).parentElement;\n }\n\n private _getViewportDimensions(): ClientRect | undefined {\n return this._getDialogWrapper()?.parentElement?.getBoundingClientRect();\n }\n\n private _getDialogWrapperDimensions(): { width: number; height: number } {\n const wrapper = this._getDialogWrapper();\n if (!wrapper) {\n return { width: 0, height: 0 };\n }\n const dimensions: CSSStyleDeclaration = getComputedStyle(wrapper);\n return {\n width: getPixels(dimensions.width),\n height: getPixels(dimensions.height),\n };\n }\n\n private _initialPositionReset(): void {\n const viewportWidth = this._getViewportDimensions()?.right ?? 0;\n const viewportHeight = this._getViewportDimensions()?.bottom ?? 0;\n const { width, height } = this._getDialogWrapperDimensions();\n const wrapperStyle = this._getDialogWrapper()?.style;\n const originalDialogRight = wrapperStyle?.marginRight;\n const originalDialogLeft = wrapperStyle?.marginLeft;\n const originalDialogBottom = wrapperStyle?.marginBottom;\n const originalDialogTop = wrapperStyle?.marginTop;\n let x: number;\n if (originalDialogLeft) {\n x = getPixels(originalDialogLeft);\n } else if (originalDialogRight) {\n x = viewportWidth - getPixels(originalDialogRight) - width;\n } else {\n x = (viewportWidth - width) / 2;\n }\n let y: number;\n if (originalDialogTop) {\n y = getPixels(originalDialogTop);\n } else if (originalDialogBottom) {\n y = viewportHeight - getPixels(originalDialogBottom) - height;\n } else {\n y = (viewportHeight - height) / 2;\n }\n // use drag ref's mechanisms for positioning instead of the dialog's\n this._dialogRef.updatePosition({\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px',\n });\n this._dragRef.setFreeDragPosition({ x, y });\n }\n\n private _attachCorners(): void {\n Object.values(corners).forEach((corner: corners) => {\n const element: HTMLElement = this._renderer2.createElement('div');\n this.cornerElements = [...this.cornerElements, element];\n this._renderer2.setStyle(element, 'position', 'absolute');\n this._renderer2.setStyle(element, 'width', cornerWidth);\n this._renderer2.setStyle(element, 'height', cornerWidth);\n this._renderer2.appendChild(this._getDialogWrapper(), element);\n\n let cursor: cursors;\n let topBottom: verticalAlignment;\n let rightLeft: horizontalAlignment;\n\n if (corner === corners.topRight) {\n cursor = cursors.nesw;\n topBottom = verticalAlignment.top;\n rightLeft = horizontalAlignment.right;\n } else if (corner === corners.bottomRight) {\n cursor = cursors.nwse;\n topBottom = verticalAlignment.bottom;\n rightLeft = horizontalAlignment.right;\n\n const icon: HTMLElement = this._renderer2.createElement('i');\n this._renderer2.addClass(icon, 'material-icons');\n this._renderer2.appendChild(\n icon,\n this._renderer2.createText('filter_list')\n );\n this._renderer2.appendChild(element, icon);\n this._renderer2.setStyle(\n icon,\n 'transform',\n `rotate(${315}deg) translate(0px, ${offset})`\n );\n this._renderer2.setStyle(icon, 'font-size', cornerWidth);\n } else if (corner === corners.bottomLeft) {\n cursor = cursors.nesw;\n topBottom = verticalAlignment.bottom;\n rightLeft = horizontalAlignment.left;\n } else {\n cursor = cursors.nwse;\n topBottom = verticalAlignment.top;\n rightLeft = horizontalAlignment.left;\n }\n this._renderer2.setStyle(element, topBottom, offset);\n this._renderer2.setStyle(element, rightLeft, offset);\n this._renderer2.setStyle(element, 'cursor', cursor);\n\n const pointerDownSub: Subscription = fromEvent<PointerEvent>(\n element,\n 'pointerdown'\n ).subscribe((event: PointerEvent) => {\n this._handleMouseDown(event, corner);\n });\n this.pointerDownSubs = [...this.pointerDownSubs, pointerDownSub];\n });\n }\n\n private _handleMouseDown(event: PointerEvent, corner: corners): void {\n this._renderer2.setStyle(\n <HTMLElement>this._document.body,\n 'user-select',\n 'none'\n );\n const { width: originalWidth, height: originalHeight } =\n this._getDialogWrapperDimensions();\n const originalMouseX: number = event.pageX;\n const originalMouseY: number = event.pageY;\n const { x: currentTransformX, y: currentTransformY }: Point =\n this._dragRef.getFreeDragPosition();\n const wrapper = this._getDialogWrapper()?.getBoundingClientRect();\n const distanceFromBottom = wrapper?.bottom ?? 0;\n const distanceFromRight = wrapper?.right ?? 0;\n const viewportWidth = this._getViewportDimensions()?.right ?? 0;\n const viewportHeight = this._getViewportDimensions()?.bottom ?? 0;\n\n const mouseMoveSub: Subscription = fromEvent<PointerEvent>(\n window,\n 'pointermove'\n ).subscribe((e: PointerEvent) => {\n e.preventDefault(); // prevent highlighting of text when dragging\n\n const yDelta: number = clamp(0, e.pageY, viewportHeight) - originalMouseY;\n const xDelta: number = clamp(0, e.pageX, viewportWidth) - originalMouseX;\n let newHeight: number;\n let newWidth: number;\n let newTransformY = 0;\n let newTransformX = 0;\n\n // top right\n if (corner === corners.topRight) {\n newHeight = clamp(minHeight, originalHeight - yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth + xDelta, viewportWidth);\n newTransformY = clamp(\n 0,\n currentTransformY + yDelta,\n distanceFromBottom - newHeight\n );\n newTransformX = currentTransformX;\n }\n // bottom right\n else if (corner === corners.bottomRight) {\n newHeight = clamp(minHeight, originalHeight + yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth + xDelta, viewportWidth);\n newTransformY = currentTransformY;\n newTransformX = currentTransformX;\n }\n // bottom left\n else if (corner === corners.bottomLeft) {\n newHeight = clamp(minHeight, originalHeight + yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth - xDelta, viewportWidth);\n newTransformY = currentTransformY;\n newTransformX = clamp(\n 0,\n currentTransformX + xDelta,\n distanceFromRight - newWidth\n );\n }\n // top left\n else {\n newHeight = clamp(minHeight, originalHeight - yDelta, viewportHeight);\n newWidth = clamp(minWidth, originalWidth - xDelta, viewportWidth);\n\n newTransformX = clamp(\n 0,\n currentTransformX + xDelta,\n distanceFromRight - newWidth\n );\n newTransformY = clamp(\n 0,\n currentTransformY + yDelta,\n distanceFromBottom - newHeight\n );\n }\n this._dialogRef.updateSize(`${newWidth}px`, `${newHeight}px`);\n this._dragRef.setFreeDragPosition({\n x: newTransformX,\n y: newTransformY,\n });\n });\n\n const mouseUpSub: Subscription = merge(\n fromEvent(window, 'pointerup'),\n fromEvent(window, 'pointercancel')\n ).subscribe(() => {\n this._renderer2.removeStyle(\n <HTMLElement>this._document.body,\n 'user-select'\n );\n mouseMoveSub.unsubscribe();\n mouseUpSub.unsubscribe();\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
@@ -91,9 +91,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
91
91
|
class TdFileDropBase {
|
92
92
|
}
|
93
93
|
class TdFileDropDirective {
|
94
|
-
constructor(_renderer, _element) {
|
94
|
+
constructor(_renderer, _element, _ngZone) {
|
95
95
|
this._renderer = _renderer;
|
96
96
|
this._element = _element;
|
97
|
+
this._ngZone = _ngZone;
|
97
98
|
this._multiple = false;
|
98
99
|
this.disabled = false;
|
99
100
|
/**
|
@@ -123,6 +124,28 @@ class TdFileDropDirective {
|
|
123
124
|
get disabledBinding() {
|
124
125
|
return this.disabled ? '' : undefined;
|
125
126
|
}
|
127
|
+
ngOnInit() {
|
128
|
+
this._ngZone.runOutsideAngular(() => {
|
129
|
+
// Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.
|
130
|
+
// Stops event propagation and default action from browser for 'dragenter' event.
|
131
|
+
this._dragenterListener = this._renderer.listen(this._element.nativeElement, 'dragenter', (event) => {
|
132
|
+
if (!this.disabled) {
|
133
|
+
this._renderer.addClass(this._element.nativeElement, 'drop-zone');
|
134
|
+
}
|
135
|
+
this._stopEvent(event);
|
136
|
+
});
|
137
|
+
// Listens to 'dragleave' host event to remove animation class 'drop-zone'.
|
138
|
+
// Stops event propagation and default action from browser for 'dragleave' event.
|
139
|
+
this._dragleaveListener = this._renderer.listen(this._element.nativeElement, 'dragleave', (event) => {
|
140
|
+
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
141
|
+
this._stopEvent(event);
|
142
|
+
});
|
143
|
+
});
|
144
|
+
}
|
145
|
+
ngOnDestroy() {
|
146
|
+
this._dragenterListener?.();
|
147
|
+
this._dragleaveListener?.();
|
148
|
+
}
|
126
149
|
/**
|
127
150
|
* Listens to 'drop' host event to get validated transfer items.
|
128
151
|
* Emits the 'fileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.
|
@@ -163,24 +186,6 @@ class TdFileDropDirective {
|
|
163
186
|
}
|
164
187
|
this._stopEvent(event);
|
165
188
|
}
|
166
|
-
/**
|
167
|
-
* Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.
|
168
|
-
* Stops event propagation and default action from browser for 'dragenter' event.
|
169
|
-
*/
|
170
|
-
onDragEnter(event) {
|
171
|
-
if (!this.disabled) {
|
172
|
-
this._renderer.addClass(this._element.nativeElement, 'drop-zone');
|
173
|
-
}
|
174
|
-
this._stopEvent(event);
|
175
|
-
}
|
176
|
-
/**
|
177
|
-
* Listens to 'dragleave' host event to remove animation class 'drop-zone'.
|
178
|
-
* Stops event propagation and default action from browser for 'dragleave' event.
|
179
|
-
*/
|
180
|
-
onDragLeave(event) {
|
181
|
-
this._renderer.removeClass(this._element.nativeElement, 'drop-zone');
|
182
|
-
this._stopEvent(event);
|
183
|
-
}
|
184
189
|
/**
|
185
190
|
* Validates if the transfer item types are 'Files'.
|
186
191
|
*/
|
@@ -198,14 +203,12 @@ class TdFileDropDirective {
|
|
198
203
|
event.stopPropagation();
|
199
204
|
}
|
200
205
|
}
|
201
|
-
TdFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
202
|
-
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)"
|
206
|
+
TdFileDropDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
207
|
+
TdFileDropDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.2", type: TdFileDropDirective, selector: "[tdFileDrop]", inputs: { multiple: "multiple", disabled: "disabled" }, outputs: { fileDrop: "fileDrop" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)" }, properties: { "attr.multiple": "this.multipleBinding", "attr.disabled": "this.disabledBinding" } }, ngImport: i0 });
|
203
208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TdFileDropDirective, decorators: [{
|
204
209
|
type: Directive,
|
205
|
-
args: [{
|
206
|
-
|
207
|
-
}]
|
208
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { multiple: [{
|
210
|
+
args: [{ selector: '[tdFileDrop]' }]
|
211
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { multiple: [{
|
209
212
|
type: Input
|
210
213
|
}], disabled: [{
|
211
214
|
type: Input
|
@@ -223,12 +226,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
223
226
|
}], onDragOver: [{
|
224
227
|
type: HostListener,
|
225
228
|
args: ['dragover', ['$event']]
|
226
|
-
}], onDragEnter: [{
|
227
|
-
type: HostListener,
|
228
|
-
args: ['dragenter', ['$event']]
|
229
|
-
}], onDragLeave: [{
|
230
|
-
type: HostListener,
|
231
|
-
args: ['dragleave', ['$event']]
|
232
229
|
}] } });
|
233
230
|
|
234
231
|
class TdFileInputLabelDirective extends TemplatePortalDirective {
|