turbogui-angular 15.3.0 → 17.0.0
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/fesm2022/turbogui-angular.mjs +136 -315
- package/fesm2022/turbogui-angular.mjs.map +1 -1
- package/main/controller/dialog.service.d.ts +3 -1
- package/main/controller/dialog.service.d.ts.map +1 -1
- package/main/controller/globalerror.service.d.ts +1 -1
- package/main/controller/locales.service.d.ts +4 -2
- package/main/controller/locales.service.d.ts.map +1 -1
- package/main/controller/turbo-api-caller.service.d.ts +18 -0
- package/main/controller/turbo-api-caller.service.d.ts.map +1 -1
- package/main/model/classes/View.d.ts +9 -2
- package/main/model/classes/View.d.ts.map +1 -1
- package/main/view/components/busy-state-base/busy-state-base.component.d.ts.map +1 -1
- package/main/view/components/button-base/button-base.component.d.ts +1 -1
- package/main/view/components/button-container/button-container.component.d.ts.map +1 -1
- package/main/view/components/button-image/button-image.component.d.ts.map +1 -1
- package/main/view/components/dialog-base/dialog-base.component.d.ts.map +1 -1
- package/main/view/components/dialog-date-selection/dialog-date-selection.component.d.ts.map +1 -1
- package/main/view/components/dialog-error/dialog-error.component.d.ts.map +1 -1
- package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts.map +1 -1
- package/main/view/components/dialog-single-input/dialog-single-input.component.d.ts.map +1 -1
- package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts.map +1 -1
- package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts.map +1 -1
- package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts.map +1 -1
- package/main/view/directives/AutoFocusOnDisplayDirective.d.ts.map +1 -1
- package/main/view/directives/AutoSelectTextOnFocusDirective.d.ts.map +1 -1
- package/main/view/directives/ElementCreatedDirective.d.ts.map +1 -1
- package/main/view/directives/ElementDestroyedDirective.d.ts.map +1 -1
- package/package.json +1 -3
- package/public_api.d.ts +0 -2
- package/public_api.d.ts.map +1 -1
- package/esm2022/main/controller/browser.service.mjs +0 -51
- package/esm2022/main/controller/dialog.service.mjs +0 -406
- package/esm2022/main/controller/globalerror.service.mjs +0 -73
- package/esm2022/main/controller/http.service.mjs +0 -71
- package/esm2022/main/controller/httpservice/HTTPServiceGetRequest.mjs +0 -15
- package/esm2022/main/controller/httpservice/HTTPServicePostRequest.mjs +0 -15
- package/esm2022/main/controller/locales.service.mjs +0 -492
- package/esm2022/main/controller/notification.service.mjs +0 -61
- package/esm2022/main/controller/turbo-api-caller.service.mjs +0 -424
- package/esm2022/main/controller/views.service.mjs +0 -148
- package/esm2022/main/managers/DelayedMethodCallManager.mjs +0 -70
- package/esm2022/main/model/classes/GUINotification.mjs +0 -32
- package/esm2022/main/model/classes/SingletoneStrictClass.mjs +0 -24
- package/esm2022/main/model/classes/View.mjs +0 -24
- package/esm2022/main/model/classes/ViewService.mjs +0 -15
- package/esm2022/main/model/modules/turbogui-angular.module.mjs +0 -48
- package/esm2022/main/view/animations/fade.animation.mjs +0 -35
- package/esm2022/main/view/components/busy-state-base/busy-state-base.component.mjs +0 -38
- package/esm2022/main/view/components/button-base/button-base.component.mjs +0 -180
- package/esm2022/main/view/components/button-container/button-container.component.mjs +0 -34
- package/esm2022/main/view/components/button-image/button-image.component.mjs +0 -47
- package/esm2022/main/view/components/dialog-base/dialog-base.component.mjs +0 -56
- package/esm2022/main/view/components/dialog-date-selection/dialog-date-selection.component.mjs +0 -39
- package/esm2022/main/view/components/dialog-error/dialog-error.component.mjs +0 -48
- package/esm2022/main/view/components/dialog-multiple-option/dialog-multiple-option.component.mjs +0 -42
- package/esm2022/main/view/components/dialog-single-input/dialog-single-input.component.mjs +0 -84
- package/esm2022/main/view/components/dialog-single-option/dialog-single-option.component.mjs +0 -45
- package/esm2022/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.mjs +0 -138
- package/esm2022/main/view/components/dialog-two-option/dialog-two-option.component.mjs +0 -46
- package/esm2022/main/view/components/views-container/views-container.component.mjs +0 -70
- package/esm2022/main/view/directives/AutoFocusOnDisplayDirective.mjs +0 -39
- package/esm2022/main/view/directives/AutoSelectTextOnFocusDirective.mjs +0 -39
- package/esm2022/main/view/directives/ElementCreatedDirective.mjs +0 -42
- package/esm2022/main/view/directives/ElementDestroyedDirective.mjs +0 -42
- package/esm2022/main/view/forms/ValidatorsPlus.mjs +0 -39
- package/esm2022/public_api.mjs +0 -47
- package/esm2022/turbogui-angular.mjs +0 -5
- package/main/controller/views.service.d.ts +0 -71
- package/main/controller/views.service.d.ts.map +0 -1
- package/main/view/components/views-container/views-container.component.d.ts +0 -46
- package/main/view/components/views-container/views-container.component.d.ts.map +0 -1
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
-
*
|
|
4
|
-
* Website : -> http://www.turbogui.org
|
|
5
|
-
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
-
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
-
*/
|
|
9
|
-
import { Component, Inject } from '@angular/core';
|
|
10
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
11
|
-
import { DialogBaseComponent } from '../dialog-base/dialog-base.component';
|
|
12
|
-
import { MatInputModule } from '@angular/material/input';
|
|
13
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
14
|
-
import { CommonModule } from '@angular/common';
|
|
15
|
-
import { FormsModule } from '@angular/forms';
|
|
16
|
-
import { TurboGuiAngularModule } from '../../../model/modules/turbogui-angular.module';
|
|
17
|
-
import { StringUtils } from 'turbocommons-ts';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
import * as i1 from "@angular/material/dialog";
|
|
20
|
-
import * as i2 from "@angular/common";
|
|
21
|
-
import * as i3 from "@angular/material/button";
|
|
22
|
-
import * as i4 from "@angular/material/input";
|
|
23
|
-
import * as i5 from "@angular/material/form-field";
|
|
24
|
-
import * as i6 from "@angular/forms";
|
|
25
|
-
import * as i7 from "../../directives/AutoFocusOnDisplayDirective";
|
|
26
|
-
import * as i8 from "../../directives/AutoSelectTextOnFocusDirective";
|
|
27
|
-
/**
|
|
28
|
-
* A dialog component with a single input element and an accept button, to be used with dialog service
|
|
29
|
-
* It lets us easily ask the user for any arbitrary text we may need.
|
|
30
|
-
*
|
|
31
|
-
* 1st text is the dialog title
|
|
32
|
-
* 2nd text is the dialog subtitle (leave it empty to hide the subtitle)
|
|
33
|
-
* 3rd text is the input prompt caption
|
|
34
|
-
* 4rd text is the default value of the input contents
|
|
35
|
-
*
|
|
36
|
-
* 1st option will be the text on the unique save button that exists on the dialog
|
|
37
|
-
*/
|
|
38
|
-
export class DialogSingleInputComponent extends DialogBaseComponent {
|
|
39
|
-
static { this.DIALOG_CLASS_NAME = 'DialogSingleInputComponent'; }
|
|
40
|
-
constructor(elementRef, dialogRef, data) {
|
|
41
|
-
super(elementRef, dialogRef);
|
|
42
|
-
this.elementRef = elementRef;
|
|
43
|
-
this.dialogRef = dialogRef;
|
|
44
|
-
this.data = data;
|
|
45
|
-
/**
|
|
46
|
-
* Contains the text that the user types on the dialog input
|
|
47
|
-
*/
|
|
48
|
-
this.inputText = '';
|
|
49
|
-
/**
|
|
50
|
-
* Contains the default text that's been specified for the input
|
|
51
|
-
*/
|
|
52
|
-
this.defaultTextValue = '';
|
|
53
|
-
if (data.texts.length < 1) {
|
|
54
|
-
throw new Error('DialogSingleInputComponent expects 1 text: The dialog title');
|
|
55
|
-
}
|
|
56
|
-
if (data.options.length !== 1) {
|
|
57
|
-
throw new Error('DialogSingleInputComponent expects only one option');
|
|
58
|
-
}
|
|
59
|
-
if (data.texts.length > 3) {
|
|
60
|
-
this.inputText = data.texts[3];
|
|
61
|
-
this.defaultTextValue = data.texts[3];
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
isButtonDisabled() {
|
|
65
|
-
if (this.defaultTextValue !== '' && this.inputText === this.defaultTextValue) {
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
return StringUtils.isEmpty(this.inputText);
|
|
69
|
-
}
|
|
70
|
-
closeDialog() {
|
|
71
|
-
super.closeDialog(0, this.inputText);
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogSingleInputComponent, deps: [{ token: i0.ElementRef }, { token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogSingleInputComponent, isStandalone: true, selector: "tg-dialog-single-input", providers: [], usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 && data.texts[1] !== ''\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field>\r\n\r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay autoSelectTextOnFocus\r\n (keyup.enter)=\"closeDialog()\"\r\n [(ngModel)]=\"inputText\">\r\n \r\n</mat-form-field>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"isButtonDisabled()\"\r\n (click)=\"closeDialog()\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:1vh;margin-bottom:3vh}p{margin-top:0;margin-bottom:5vh}button{min-height:5vh}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", 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]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TurboGuiAngularModule }, { kind: "directive", type: i7.AutoFocusOnDisplayDirective, selector: "[autoFocusOnDisplay]" }, { kind: "directive", type: i8.AutoSelectTextOnFocusDirective, selector: "[autoSelectTextOnFocus]" }] }); }
|
|
75
|
-
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogSingleInputComponent, decorators: [{
|
|
77
|
-
type: Component,
|
|
78
|
-
args: [{ selector: 'tg-dialog-single-input', standalone: true, imports: [CommonModule, MatButtonModule, MatInputModule, FormsModule,
|
|
79
|
-
TurboGuiAngularModule], providers: [], template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1 && data.texts[1] !== ''\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field>\r\n\r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay autoSelectTextOnFocus\r\n (keyup.enter)=\"closeDialog()\"\r\n [(ngModel)]=\"inputText\">\r\n \r\n</mat-form-field>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"isButtonDisabled()\"\r\n (click)=\"closeDialog()\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:1vh;margin-bottom:3vh}p{margin-top:0;margin-bottom:5vh}button{min-height:5vh}\n"] }]
|
|
80
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
81
|
-
type: Inject,
|
|
82
|
-
args: [MAT_DIALOG_DATA]
|
|
83
|
-
}] }] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbmdsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLWlucHV0L2RpYWxvZy1zaW5nbGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1pbnB1dC9kaWFsb2ctc2luZ2xlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFjOUM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxtQkFBbUI7YUFHL0Msc0JBQWlCLEdBQUcsNEJBQTRCLEFBQS9CLENBQWdDO0lBZWpFLFlBQW1CLFVBQXNCLEVBQVMsU0FBNEMsRUFBa0MsSUFBUztRQUVySSxLQUFLLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRmQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQW1DO1FBQWtDLFNBQUksR0FBSixJQUFJLENBQUs7UUFaekk7O1dBRUc7UUFDSCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR2Y7O1VBRUU7UUFDRixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFPbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFFdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1NBQ2xGO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFFM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFFdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQztJQUdELGdCQUFnQjtRQUVaLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUUxRSxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsV0FBVztRQUVQLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQXREUSwwQkFBMEIsd0VBa0JxRSxlQUFlO2tHQWxCOUcsMEJBQTBCLHFFQWpCM0IsRUFBRSxpREN6QmQsZ2tCQXVCUyw2S0RBRSxZQUFZLGtJQUFFLGVBQWUsMk5BQUUsY0FBYyxzbkJBQUUsV0FBVyw4bUJBQ3ZELHFCQUFxQjs7MkZBa0J0QiwwQkFBMEI7a0JBdEJ0QyxTQUFTOytCQUNHLHdCQUF3QixjQUN0QixJQUFJLFdBQ1QsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxXQUFXO3dCQUN2RCxxQkFBcUIsQ0FBQyxhQUN4QixFQUFFOzswQkFtQ3VGLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFR1cmJvR3VpQW5ndWxhck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL21vZHVsZXMvdHVyYm9ndWktYW5ndWxhci5tb2R1bGUnO1xuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBcdHNlbGVjdG9yOiAndGctZGlhbG9nLXNpbmdsZS1pbnB1dCcsXHJcbiAgXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgICAgICAgIFR1cmJvR3VpQW5ndWxhck1vZHVsZV0sXHJcblx0cHJvdmlkZXJzOiBbXSxcclxuICBcdHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctc2luZ2xlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBcdHN0eWxlVXJsczogWycuL2RpYWxvZy1zaW5nbGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuXHJcbi8qKlxyXG4gKiBBIGRpYWxvZyBjb21wb25lbnQgd2l0aCBhIHNpbmdsZSBpbnB1dCBlbGVtZW50IGFuZCBhbiBhY2NlcHQgYnV0dG9uLCB0byBiZSB1c2VkIHdpdGggZGlhbG9nIHNlcnZpY2VcclxuICogSXQgbGV0cyB1cyBlYXNpbHkgYXNrIHRoZSB1c2VyIGZvciBhbnkgYXJiaXRyYXJ5IHRleHQgd2UgbWF5IG5lZWQuXHJcbiAqIFxyXG4gKiAxc3QgdGV4dCBpcyB0aGUgZGlhbG9nIHRpdGxlXHJcbiAqIDJuZCB0ZXh0IGlzIHRoZSBkaWFsb2cgc3VidGl0bGUgKGxlYXZlIGl0IGVtcHR5IHRvIGhpZGUgdGhlIHN1YnRpdGxlKVxyXG4gKiAzcmQgdGV4dCBpcyB0aGUgaW5wdXQgcHJvbXB0IGNhcHRpb25cclxuICogNHJkIHRleHQgaXMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGlucHV0IGNvbnRlbnRzXHJcbiAqIFxyXG4gKiAxc3Qgb3B0aW9uIHdpbGwgYmUgdGhlIHRleHQgb24gdGhlIHVuaXF1ZSBzYXZlIGJ1dHRvbiB0aGF0IGV4aXN0cyBvbiB0aGUgZGlhbG9nXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2luZ2xlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBEaWFsb2dCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgICBcclxuICAgIHN0YXRpYyByZWFkb25seSBESUFMT0dfQ0xBU1NfTkFNRSA9ICdEaWFsb2dTaW5nbGVJbnB1dENvbXBvbmVudCc7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyB0aGUgdGV4dCB0aGF0IHRoZSB1c2VyIHR5cGVzIG9uIHRoZSBkaWFsb2cgaW5wdXRcclxuICAgICAqL1xyXG4gICAgaW5wdXRUZXh0ID0gJyc7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAqIENvbnRhaW5zIHRoZSBkZWZhdWx0IHRleHQgdGhhdCdzIGJlZW4gc3BlY2lmaWVkIGZvciB0aGUgaW5wdXRcclxuICAgICovXHJcbiAgICBkZWZhdWx0VGV4dFZhbHVlID0gJyc7XHJcbiAgICBcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ0Jhc2VDb21wb25lbnQ+LCBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG5cclxuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBkaWFsb2dSZWYpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChkYXRhLnRleHRzLmxlbmd0aCA8IDEpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nU2luZ2xlSW5wdXRDb21wb25lbnQgZXhwZWN0cyAxIHRleHQ6IFRoZSBkaWFsb2cgdGl0bGUnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhLm9wdGlvbnMubGVuZ3RoICE9PSAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NpbmdsZUlucHV0Q29tcG9uZW50IGV4cGVjdHMgb25seSBvbmUgb3B0aW9uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChkYXRhLnRleHRzLmxlbmd0aCA+IDMpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gZGF0YS50ZXh0c1szXTsgXHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFRleHRWYWx1ZSA9IGRhdGEudGV4dHNbM107IFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBpc0J1dHRvbkRpc2FibGVkKCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFRleHRWYWx1ZSAhPT0gJycgJiYgdGhpcy5pbnB1dFRleHQgPT09IHRoaXMuZGVmYXVsdFRleHRWYWx1ZSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBTdHJpbmdVdGlscy5pc0VtcHR5KHRoaXMuaW5wdXRUZXh0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBjbG9zZURpYWxvZygpe1xyXG4gICAgXHJcbiAgICAgICAgc3VwZXIuY2xvc2VEaWFsb2coMCwgdGhpcy5pbnB1dFRleHQpOyAgICAgICBcclxuICAgIH1cclxufSIsIjxoMz5cclxuICAgIHt7ZGF0YS50ZXh0c1swXX19XHJcbjwvaDM+XHJcblxyXG48cCAqbmdJZj1cImRhdGEudGV4dHMubGVuZ3RoID4gMSAmJiBkYXRhLnRleHRzWzFdICE9PSAnJ1wiPlxyXG4gICAge3tkYXRhLnRleHRzWzFdfX1cclxuPC9wPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxtYXQtbGFiZWw+e3tkYXRhLnRleHRzWzJdfX08L21hdC1sYWJlbD5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBhdXRvRm9jdXNPbkRpc3BsYXkgYXV0b1NlbGVjdFRleHRPbkZvY3VzXHJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImNsb3NlRGlhbG9nKClcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgXHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiaXNCdXR0b25EaXNhYmxlZCgpXCJcclxuICAgIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICBcclxuICAgIHt7ZGF0YS5vcHRpb25zWzBdfX1cclxuICAgIFxyXG48L2J1dHRvbj4iXX0=
|
package/esm2022/main/view/components/dialog-single-option/dialog-single-option.component.mjs
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
-
*
|
|
4
|
-
* Website : -> http://www.turbogui.org
|
|
5
|
-
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
-
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
-
*/
|
|
9
|
-
import { Component, Inject } from '@angular/core';
|
|
10
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
11
|
-
import { DialogBaseComponent } from '../dialog-base/dialog-base.component';
|
|
12
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
13
|
-
import { CommonModule } from '@angular/common';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "@angular/material/dialog";
|
|
16
|
-
import * as i2 from "@angular/common";
|
|
17
|
-
import * as i3 from "@angular/material/button";
|
|
18
|
-
/**
|
|
19
|
-
* A dialog component with a single option button, to be used with dialog service
|
|
20
|
-
*/
|
|
21
|
-
export class DialogSingleOptionComponent extends DialogBaseComponent {
|
|
22
|
-
static { this.DIALOG_CLASS_NAME = 'DialogSingleOptionComponent'; }
|
|
23
|
-
constructor(elementRef, dialogRef, data) {
|
|
24
|
-
super(elementRef, dialogRef);
|
|
25
|
-
this.elementRef = elementRef;
|
|
26
|
-
this.dialogRef = dialogRef;
|
|
27
|
-
this.data = data;
|
|
28
|
-
if (data.texts.length < 1) {
|
|
29
|
-
throw new Error('DialogSingleOptionComponent expects 2 texts: The title and optionally a description');
|
|
30
|
-
}
|
|
31
|
-
if (data.options.length !== 1) {
|
|
32
|
-
throw new Error('DialogSingleOptionComponent expects only one option');
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogSingleOptionComponent, deps: [{ token: i0.ElementRef }, { token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogSingleOptionComponent, isStandalone: true, selector: "tg-dialog-single-option", providers: [], usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n (click)=\"closeDialog(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}button{float:right}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogSingleOptionComponent, decorators: [{
|
|
39
|
-
type: Component,
|
|
40
|
-
args: [{ selector: 'tg-dialog-single-option', standalone: true, imports: [CommonModule, MatButtonModule], providers: [], template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n (click)=\"closeDialog(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}button{float:right}\n"] }]
|
|
41
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
42
|
-
type: Inject,
|
|
43
|
-
args: [MAT_DIALOG_DATA]
|
|
44
|
-
}] }] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbmdsZS1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1vcHRpb24vZGlhbG9nLXNpbmdsZS1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1vcHRpb24vZGlhbG9nLXNpbmdsZS1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFHL0M7O0dBRUc7QUFXSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsbUJBQW1CO2FBR2hELHNCQUFpQixHQUFHLDZCQUE2QixBQUFoQyxDQUFpQztJQUdsRSxZQUFtQixVQUFzQixFQUFTLFNBQTRDLEVBQWtDLElBQVM7UUFFckksS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUZkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFLO1FBSXJJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBRXZCLE1BQU0sSUFBSSxLQUFLLENBQUMscUZBQXFGLENBQUMsQ0FBQztTQUMxRztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBRTNCLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztTQUMxRTtJQUNMLENBQUM7OEdBbkJRLDJCQUEyQix3RUFNb0UsZUFBZTtrR0FOOUcsMkJBQTJCLHNFQU41QixFQUFFLGlEQ3ZCZCxrUUFhUyxnSkRTRSxZQUFZLGtJQUFFLGVBQWU7OzJGQU8zQiwyQkFBMkI7a0JBVnZDLFNBQVM7K0JBQ0cseUJBQXlCLGNBQ3ZCLElBQUksV0FDVCxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsYUFDN0IsRUFBRTs7MEJBWXVGLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXHJcblxyXG4vKipcclxuICogQSBkaWFsb2cgY29tcG9uZW50IHdpdGggYSBzaW5nbGUgb3B0aW9uIGJ1dHRvbiwgdG8gYmUgdXNlZCB3aXRoIGRpYWxvZyBzZXJ2aWNlXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBcdHNlbGVjdG9yOiAndGctZGlhbG9nLXNpbmdsZS1vcHRpb24nLFxyXG4gIFx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdLFxyXG5cdHByb3ZpZGVyczogW10sXHJcbiAgXHR0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXNpbmdsZS1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIFx0c3R5bGVVcmxzOiBbJy4vZGlhbG9nLXNpbmdsZS1vcHRpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTaW5nbGVPcHRpb25Db21wb25lbnQgZXh0ZW5kcyBEaWFsb2dCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgICBcclxuICAgIHN0YXRpYyByZWFkb25seSBESUFMT0dfQ0xBU1NfTkFNRSA9ICdEaWFsb2dTaW5nbGVPcHRpb25Db21wb25lbnQnO1xyXG4gICAgXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dCYXNlQ29tcG9uZW50PiwgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnkpIHtcclxuXHJcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nUmVmKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoZGF0YS50ZXh0cy5sZW5ndGggPCAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NpbmdsZU9wdGlvbkNvbXBvbmVudCBleHBlY3RzIDIgdGV4dHM6IFRoZSB0aXRsZSBhbmQgb3B0aW9uYWxseSBhIGRlc2NyaXB0aW9uJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YS5vcHRpb25zLmxlbmd0aCAhPT0gMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTaW5nbGVPcHRpb25Db21wb25lbnQgZXhwZWN0cyBvbmx5IG9uZSBvcHRpb24nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGgzPlxyXG4gICAge3tkYXRhLnRleHRzWzBdfX1cclxuPC9oMz5cclxuXHJcbjxwICpuZ0lmPVwiZGF0YS50ZXh0cy5sZW5ndGggPiAxXCI+XHJcbiAgICB7e2RhdGEudGV4dHNbMV19fVxyXG48L3A+XHJcblxyXG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAoY2xpY2spPVwiY2xvc2VEaWFsb2coMClcIj5cclxuICAgIFxyXG4gICAge3tkYXRhLm9wdGlvbnNbMF19fVxyXG4gICAgXHJcbjwvYnV0dG9uPiJdfQ==
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
-
*
|
|
4
|
-
* Website : -> http://www.turbogui.org
|
|
5
|
-
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
-
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
-
*/
|
|
9
|
-
import { Component, Inject } from '@angular/core';
|
|
10
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
11
|
-
import { DialogBaseComponent } from '../dialog-base/dialog-base.component';
|
|
12
|
-
import { StringUtils } from 'turbocommons-ts';
|
|
13
|
-
import { CommonModule } from '@angular/common';
|
|
14
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
15
|
-
import { MatInputModule } from '@angular/material/input';
|
|
16
|
-
import { TurboGuiAngularModule } from '../../../model/modules/turbogui-angular.module';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "@angular/material/dialog";
|
|
19
|
-
import * as i2 from "../../../controller/browser.service";
|
|
20
|
-
import * as i3 from "@angular/common";
|
|
21
|
-
import * as i4 from "@angular/material/input";
|
|
22
|
-
import * as i5 from "@angular/material/form-field";
|
|
23
|
-
import * as i6 from "../../directives/AutoFocusOnDisplayDirective";
|
|
24
|
-
/**
|
|
25
|
-
* A dialog component which allows us to select one single item from a list. The elements on that list are displayed on a table
|
|
26
|
-
* which may show a scroll if necessary when there are many elements on the list.
|
|
27
|
-
*
|
|
28
|
-
* It also allows us to filter inside the list with a custom text that we can type into a search input, which is optional.
|
|
29
|
-
*
|
|
30
|
-
* texts parameter must contain the title, the description (optional), the filter input title (optional), and the submit button caption.
|
|
31
|
-
* If that caption is not provided, the selection will be automatically performed once user clicks on an element on the list. Otherwise,
|
|
32
|
-
* the element will be selected on the list and the selection will be performed once the user clicks on the submit button.
|
|
33
|
-
*
|
|
34
|
-
* options parameter must contain the list of elements that will be displayed to the user
|
|
35
|
-
*/
|
|
36
|
-
export class DialogSingleSelectionListComponent extends DialogBaseComponent {
|
|
37
|
-
static { this.DIALOG_CLASS_NAME = 'DialogSingleSelectionListComponent'; }
|
|
38
|
-
constructor(elementRef, dialogRef, browserService, data) {
|
|
39
|
-
super(elementRef, dialogRef);
|
|
40
|
-
this.elementRef = elementRef;
|
|
41
|
-
this.dialogRef = dialogRef;
|
|
42
|
-
this.browserService = browserService;
|
|
43
|
-
this.data = data;
|
|
44
|
-
/**
|
|
45
|
-
* Declare a reference to the string utils class so it can be used on the html part
|
|
46
|
-
*/
|
|
47
|
-
this.stringUtils = StringUtils;
|
|
48
|
-
/**
|
|
49
|
-
* Contains the list of elements that will be directly shown to the user at the component list.
|
|
50
|
-
* It may be filtered or not depending on this component setup and the user input
|
|
51
|
-
*/
|
|
52
|
-
this.filteredOptions = [];
|
|
53
|
-
/**
|
|
54
|
-
* Stores the number of options that are currently visible to the user
|
|
55
|
-
*/
|
|
56
|
-
this.filteredOptionsCount = 0;
|
|
57
|
-
/**
|
|
58
|
-
* Contains the original list of elements that are provided to be listed on this component before
|
|
59
|
-
* being possibly filtered. It is only used as a backup, not shown to the user
|
|
60
|
-
*/
|
|
61
|
-
this.originalOptions = [];
|
|
62
|
-
/**
|
|
63
|
-
* The same list as the originally provided but processed for a better text search.
|
|
64
|
-
* It will be used to perform the search, but not shown to the user.
|
|
65
|
-
*/
|
|
66
|
-
this.originalOptionsFullTextSearch = [];
|
|
67
|
-
/**
|
|
68
|
-
* Stores the index for the element that's been selected by the user
|
|
69
|
-
*/
|
|
70
|
-
this.selectedItemIndex = -1;
|
|
71
|
-
/**
|
|
72
|
-
* This method is used to greatly improve ngFor performance with arrays of primitive values. It tells the refresh
|
|
73
|
-
* function to work by index instead of by value. The change in performance when refreshing the list is massive.
|
|
74
|
-
*/
|
|
75
|
-
this.trackByFn = (index, _value) => index;
|
|
76
|
-
if (data.texts.length < 1) {
|
|
77
|
-
throw new Error('DialogSingleSelectionListComponent expects 4 texts: The title, the description (optional), the filter input title (optional), and the submit button caption');
|
|
78
|
-
}
|
|
79
|
-
if (data.options.length < 1) {
|
|
80
|
-
throw new Error('DialogSingleSelectionListComponent expects one or more options');
|
|
81
|
-
}
|
|
82
|
-
this.originalOptions = data.options;
|
|
83
|
-
this.filteredOptionsCount = this.originalOptions.length;
|
|
84
|
-
for (let option of this.originalOptions) {
|
|
85
|
-
this.filteredOptions.push(option);
|
|
86
|
-
this.originalOptionsFullTextSearch.push(StringUtils.formatForFullTextSearch(option));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Method to calculate the max possible height that the list items container is allowed to have
|
|
91
|
-
*/
|
|
92
|
-
getListItemsContainerMaxheight() {
|
|
93
|
-
return (this.browserService.getWindowHeight() * 0.6) + 'px';
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* If the user presses enter key and there's only one element filtered in the list, we will close this dialog
|
|
97
|
-
* setting that element as the selected.
|
|
98
|
-
*/
|
|
99
|
-
onIntroKeyPress() {
|
|
100
|
-
if (this.filteredOptionsCount === 1) {
|
|
101
|
-
for (let i = 0; i < this.originalOptionsFullTextSearch.length; i++) {
|
|
102
|
-
if (this.filteredOptions[i] !== '') {
|
|
103
|
-
this.closeDialog(i);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* When the user types a value on the input element to filter the list, this method will perform
|
|
111
|
-
* that filtering and refresh the list
|
|
112
|
-
*/
|
|
113
|
-
onSearchChange(input) {
|
|
114
|
-
this.selectedItemIndex = -1;
|
|
115
|
-
this.filteredOptionsCount = 0;
|
|
116
|
-
let inputValue = StringUtils.formatForFullTextSearch(input.value);
|
|
117
|
-
for (let i = 0; i < this.originalOptionsFullTextSearch.length; i++) {
|
|
118
|
-
if (inputValue === '' ||
|
|
119
|
-
this.originalOptionsFullTextSearch[i].indexOf(inputValue) >= 0) {
|
|
120
|
-
this.filteredOptions[i] = this.originalOptions[i];
|
|
121
|
-
this.filteredOptionsCount++;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
this.filteredOptions[i] = '';
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogSingleSelectionListComponent, deps: [{ token: i0.ElementRef }, { token: i1.MatDialogRef }, { token: i2.BrowserService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
129
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogSingleSelectionListComponent, isStandalone: true, selector: "tg-dialog-single-selection-list", providers: [], usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<!-- Here goes the dialog subtitle. Leave it blank if you don't need it -->\r\n<p *ngIf=\"data.texts.length > 1 && !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 && !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay\r\n (keyup.enter)=\"onIntroKeyPress()\"\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<!-- here goes the list of elements that will be shown to the user -->\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? closeDialog(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"closeDialog(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: TurboGuiAngularModule }, { kind: "directive", type: i6.AutoFocusOnDisplayDirective, selector: "[autoFocusOnDisplay]" }] }); }
|
|
130
|
-
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogSingleSelectionListComponent, decorators: [{
|
|
132
|
-
type: Component,
|
|
133
|
-
args: [{ selector: 'tg-dialog-single-selection-list', standalone: true, imports: [CommonModule, MatInputModule, MatFormFieldModule, TurboGuiAngularModule], providers: [], template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<!-- Here goes the dialog subtitle. Leave it blank if you don't need it -->\r\n<p *ngIf=\"data.texts.length > 1 && !stringUtils.isEmpty(data.texts[1])\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<mat-form-field *ngIf=\"data.texts.length > 2 && !stringUtils.isEmpty(data.texts[2])\"\r\n class=\"searchItemInputContainer\">\r\n \r\n <mat-label>{{data.texts[2]}}</mat-label>\r\n <input matInput autoFocusOnDisplay\r\n (keyup.enter)=\"onIntroKeyPress()\"\r\n (input)=\"onSearchChange($event.target)\">\r\n \r\n</mat-form-field>\r\n\r\n<!-- here goes the list of elements that will be shown to the user -->\r\n<div class=\"listItemsContainer\"\r\n [style.max-height]=\"getListItemsContainerMaxheight()\">\r\n\r\n <div class=\"listItemContainer\"\r\n [style.background-color]=\"selectedItemIndex === i ? '#90d1ffad' : (i % 2 === 0 ? 'initial' : '#00000009')\"\r\n *ngFor=\"let item of filteredOptions; let i = index; trackBy: trackByFn\"\r\n (click)=\"data.texts.length < 4 ? closeDialog(i) : selectedItemIndex = i\">\r\n \r\n <p *ngIf=\"item !== ''\">\r\n {{item}}\r\n </p>\r\n \r\n </div>\r\n\r\n</div>\r\n\r\n<button mat-raised-button color=\"primary\"\r\n [disabled]=\"selectedItemIndex < 0\"\r\n (click)=\"closeDialog(selectedItemIndex)\"\r\n *ngIf=\"data.texts.length > 3\">\r\n\r\n {{data.texts[3]}}\r\n \r\n</button>", styles: [":host{min-height:300px}h3{margin-top:0;margin-bottom:10px}p{margin-top:0;margin-bottom:5px}.searchItemInputContainer{width:100%;margin-top:0;margin-bottom:0}.listItemsContainer{overflow-y:auto;border:1px solid rgba(0,0,0,.2);border-radius:4px;margin-bottom:5px}.listItemContainer p{line-height:36px;width:calc(100% - 12px);margin:0 0 0 6px}button{float:right}\n"] }]
|
|
134
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatDialogRef }, { type: i2.BrowserService }, { type: undefined, decorators: [{
|
|
135
|
-
type: Inject,
|
|
136
|
-
args: [MAT_DIALOG_DATA]
|
|
137
|
-
}] }] });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0L2RpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7OztBQUd2Rjs7Ozs7Ozs7Ozs7R0FXRztBQVdILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxtQkFBbUI7YUFHdkQsc0JBQWlCLEdBQUcsb0NBQW9DLEFBQXZDLENBQXdDO0lBeUN6RSxZQUFtQixVQUFzQixFQUMvQixTQUE0QyxFQUNuQyxjQUE4QixFQUNMLElBQVM7UUFFakQsS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUxkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDL0IsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBSztRQXpDckQ7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQjs7O1dBR0c7UUFDSCxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUc5Qjs7V0FFRztRQUNILHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUd6Qjs7O1dBR0c7UUFDSyxvQkFBZSxHQUFZLEVBQUUsQ0FBQztRQUd0Qzs7O1dBR0c7UUFDSyxrQ0FBNkIsR0FBWSxFQUFFLENBQUM7UUFHcEQ7O1dBRUc7UUFDSCxzQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQXVGdkI7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBakZqRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV2QixNQUFNLElBQUksS0FBSyxDQUFDLDZKQUE2SixDQUFDLENBQUM7U0FDbEw7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV6QixNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7U0FDckY7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBRXhELEtBQUksSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBQztZQUVuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3hGO0lBQ0wsQ0FBQztJQUdEOztPQUVHO0lBQ0gsOEJBQThCO1FBRTFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNoRSxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsZUFBZTtRQUVYLElBQUcsSUFBSSxDQUFDLG9CQUFvQixLQUFLLENBQUMsRUFBQztZQUUvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFFL0QsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBQztvQkFFOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFcEIsT0FBTztpQkFDVjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLEtBQXNCO1FBRWpDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFFL0QsSUFBRyxVQUFVLEtBQUssRUFBRTtnQkFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUM7Z0JBRTlELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLG9CQUFvQixFQUFHLENBQUM7YUFFaEM7aUJBQUk7Z0JBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7OEdBOUhRLGtDQUFrQyxzR0ErQ3ZCLGVBQWU7a0dBL0MxQixrQ0FBa0MsOEVBTm5DLEVBQUUsaURDcENkLGs5Q0EyQ1Msa2FEUkUsWUFBWSwrUEFBRSxjQUFjLHNuQkFBRSxrQkFBa0IsOEJBQUUscUJBQXFCOzsyRkFPckUsa0NBQWtDO2tCQVY5QyxTQUFTOytCQUNHLGlDQUFpQyxjQUMvQixJQUFJLFdBQ1QsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDLGFBQ3ZFLEVBQUU7OzBCQXFERyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpYWxvZ0Jhc2VDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2ctYmFzZS9kaWFsb2ctYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xsZXIvYnJvd3Nlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICd0dXJib2NvbW1vbnMtdHMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IFR1cmJvR3VpQW5ndWxhck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL21vZHVsZXMvdHVyYm9ndWktYW5ndWxhci5tb2R1bGUnO1xuXHJcblxyXG4vKipcclxuICogQSBkaWFsb2cgY29tcG9uZW50IHdoaWNoIGFsbG93cyB1cyB0byBzZWxlY3Qgb25lIHNpbmdsZSBpdGVtIGZyb20gYSBsaXN0LiBUaGUgZWxlbWVudHMgb24gdGhhdCBsaXN0IGFyZSBkaXNwbGF5ZWQgb24gYSB0YWJsZVxyXG4gKiB3aGljaCBtYXkgc2hvdyBhIHNjcm9sbCBpZiBuZWNlc3Nhcnkgd2hlbiB0aGVyZSBhcmUgbWFueSBlbGVtZW50cyBvbiB0aGUgbGlzdC5cclxuICogXHJcbiAqIEl0IGFsc28gYWxsb3dzIHVzIHRvIGZpbHRlciBpbnNpZGUgdGhlIGxpc3Qgd2l0aCBhIGN1c3RvbSB0ZXh0IHRoYXQgd2UgY2FuIHR5cGUgaW50byBhIHNlYXJjaCBpbnB1dCwgd2hpY2ggaXMgb3B0aW9uYWwuXHJcbiAqXHJcbiAqIHRleHRzIHBhcmFtZXRlciBtdXN0IGNvbnRhaW4gdGhlIHRpdGxlLCB0aGUgZGVzY3JpcHRpb24gKG9wdGlvbmFsKSwgdGhlIGZpbHRlciBpbnB1dCB0aXRsZSAob3B0aW9uYWwpLCBhbmQgdGhlIHN1Ym1pdCBidXR0b24gY2FwdGlvbi5cclxuICogSWYgdGhhdCBjYXB0aW9uIGlzIG5vdCBwcm92aWRlZCwgdGhlIHNlbGVjdGlvbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcGVyZm9ybWVkIG9uY2UgdXNlciBjbGlja3Mgb24gYW4gZWxlbWVudCBvbiB0aGUgbGlzdC4gT3RoZXJ3aXNlLCBcclxuICogdGhlIGVsZW1lbnQgd2lsbCBiZSBzZWxlY3RlZCBvbiB0aGUgbGlzdCBhbmQgdGhlIHNlbGVjdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBvbmNlIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgc3VibWl0IGJ1dHRvbi5cclxuICpcclxuICogb3B0aW9ucyBwYXJhbWV0ZXIgbXVzdCBjb250YWluIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgIFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgXHRzZWxlY3RvcjogJ3RnLWRpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QnLFxyXG4gIFx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBUdXJib0d1aUFuZ3VsYXJNb2R1bGVdLFxyXG5cdHByb3ZpZGVyczogW10sXHJcbiAgXHR0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgXHRzdHlsZVVybHM6IFsnLi9kaWFsb2ctc2luZ2xlLXNlbGVjdGlvbi1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCBleHRlbmRzIERpYWxvZ0Jhc2VDb21wb25lbnQge1xyXG4gICAgXHJcbiAgICBcclxuICAgIHN0YXRpYyByZWFkb25seSBESUFMT0dfQ0xBU1NfTkFNRSA9ICdEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50JztcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERlY2xhcmUgYSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyB1dGlscyBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBvbiB0aGUgaHRtbCBwYXJ0XHJcbiAgICAgKi9cclxuICAgIHN0cmluZ1V0aWxzID0gU3RyaW5nVXRpbHM7XHJcbiAgICBcclxuICAgIC8qKiBcclxuICAgICAqIENvbnRhaW5zIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSBkaXJlY3RseSBzaG93biB0byB0aGUgdXNlciBhdCB0aGUgY29tcG9uZW50IGxpc3QuXHJcbiAgICAgKiBJdCBtYXkgYmUgZmlsdGVyZWQgb3Igbm90IGRlcGVuZGluZyBvbiB0aGlzIGNvbXBvbmVudCBzZXR1cCBhbmQgdGhlIHVzZXIgaW5wdXRcclxuICAgICAqL1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOnN0cmluZ1tdID0gW107XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9yZXMgdGhlIG51bWJlciBvZiBvcHRpb25zIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlIHRvIHRoZSB1c2VyXHJcbiAgICAgKi9cclxuICAgIGZpbHRlcmVkT3B0aW9uc0NvdW50ID0gMDtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5zIHRoZSBvcmlnaW5hbCBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgYXJlIHByb3ZpZGVkIHRvIGJlIGxpc3RlZCBvbiB0aGlzIGNvbXBvbmVudCBiZWZvcmVcclxuICAgICAqIGJlaW5nIHBvc3NpYmx5IGZpbHRlcmVkLiBJdCBpcyBvbmx5IHVzZWQgYXMgYSBiYWNrdXAsIG5vdCBzaG93biB0byB0aGUgdXNlclxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9yaWdpbmFsT3B0aW9uczpzdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNhbWUgbGlzdCBhcyB0aGUgb3JpZ2luYWxseSBwcm92aWRlZCBidXQgcHJvY2Vzc2VkIGZvciBhIGJldHRlciB0ZXh0IHNlYXJjaC5cclxuICAgICAqIEl0IHdpbGwgYmUgdXNlZCB0byBwZXJmb3JtIHRoZSBzZWFyY2gsIGJ1dCBub3Qgc2hvd24gdG8gdGhlIHVzZXIuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2g6c3RyaW5nW10gPSBbXTtcclxuICAgICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlcyB0aGUgaW5kZXggZm9yIHRoZSBlbGVtZW50IHRoYXQncyBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdGVkSXRlbUluZGV4ID0gLTE7XHJcbiAgICBcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBcdFx0XHRwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nQmFzZUNvbXBvbmVudD4sXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgYnJvd3NlclNlcnZpY2U6IEJyb3dzZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnkpIHtcclxuXHJcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgaWYgKGRhdGEudGV4dHMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50IGV4cGVjdHMgNCB0ZXh0czogVGhlIHRpdGxlLCB0aGUgZGVzY3JpcHRpb24gKG9wdGlvbmFsKSwgdGhlIGZpbHRlciBpbnB1dCB0aXRsZSAob3B0aW9uYWwpLCBhbmQgdGhlIHN1Ym1pdCBidXR0b24gY2FwdGlvbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoZGF0YS5vcHRpb25zLmxlbmd0aCA8IDEpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCBleHBlY3RzIG9uZSBvciBtb3JlIG9wdGlvbnMnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmxlbmd0aDtcclxuICAgICAgICBcclxuICAgICAgICBmb3IobGV0IG9wdGlvbiBvZiB0aGlzLm9yaWdpbmFsT3B0aW9ucyl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2gucHVzaChTdHJpbmdVdGlscy5mb3JtYXRGb3JGdWxsVGV4dFNlYXJjaChvcHRpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSBtYXggcG9zc2libGUgaGVpZ2h0IHRoYXQgdGhlIGxpc3QgaXRlbXMgY29udGFpbmVyIGlzIGFsbG93ZWQgdG8gaGF2ZVxyXG4gICAgICovXHJcbiAgICBnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKXtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gKHRoaXMuYnJvd3NlclNlcnZpY2UuZ2V0V2luZG93SGVpZ2h0KCkgKiAwLjYpICsgJ3B4JztcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIElmIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIga2V5IGFuZCB0aGVyZSdzIG9ubHkgb25lIGVsZW1lbnQgZmlsdGVyZWQgaW4gdGhlIGxpc3QsIHdlIHdpbGwgY2xvc2UgdGhpcyBkaWFsb2dcclxuICAgICAqIHNldHRpbmcgdGhhdCBlbGVtZW50IGFzIHRoZSBzZWxlY3RlZC5cclxuICAgICAqL1xyXG4gICAgb25JbnRyb0tleVByZXNzKCl7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuZmlsdGVyZWRPcHRpb25zQ291bnQgPT09IDEpe1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5maWx0ZXJlZE9wdGlvbnNbaV0gIT09ICcnKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRGlhbG9nKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIHRoZSB1c2VyIHR5cGVzIGEgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gZmlsdGVyIHRoZSBsaXN0LCB0aGlzIG1ldGhvZCB3aWxsIHBlcmZvcm1cclxuICAgICAqIHRoYXQgZmlsdGVyaW5nIGFuZCByZWZyZXNoIHRoZSBsaXN0XHJcbiAgICAgKi9cclxuICAgIG9uU2VhcmNoQ2hhbmdlKGlucHV0OkhUTUxJbnB1dEVsZW1lbnQpe1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gLTE7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCA9IDA7XHJcbiAgICAgICBcclxuICAgICAgICBsZXQgaW5wdXRWYWx1ZSA9IFN0cmluZ1V0aWxzLmZvcm1hdEZvckZ1bGxUZXh0U2VhcmNoKGlucHV0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9yaWdpbmFsT3B0aW9uc0Z1bGxUZXh0U2VhcmNoLmxlbmd0aDsgaSsrKXtcclxuXHJcbiAgICAgICAgICAgIGlmKGlucHV0VmFsdWUgPT09ICcnIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zRnVsbFRleHRTZWFyY2hbaV0uaW5kZXhPZihpbnB1dFZhbHVlKSA+PSAwKXtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1tpXSA9IHRoaXMub3JpZ2luYWxPcHRpb25zW2ldO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCArKztcclxuXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zW2ldID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBncmVhdGx5IGltcHJvdmUgbmdGb3IgcGVyZm9ybWFuY2Ugd2l0aCBhcnJheXMgb2YgcHJpbWl0aXZlIHZhbHVlcy4gSXQgdGVsbHMgdGhlIHJlZnJlc2hcclxuICAgICAqIGZ1bmN0aW9uIHRvIHdvcmsgYnkgaW5kZXggaW5zdGVhZCBvZiBieSB2YWx1ZS4gVGhlIGNoYW5nZSBpbiBwZXJmb3JtYW5jZSB3aGVuIHJlZnJlc2hpbmcgdGhlIGxpc3QgaXMgbWFzc2l2ZS4gXHJcbiAgICAgKi9cclxuICAgIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCBfdmFsdWU6IHN0cmluZykgPT4gaW5kZXg7XHJcbn1cclxuIiwiPGgzPlxyXG4gICAge3tkYXRhLnRleHRzWzBdfX1cclxuPC9oMz5cclxuXHJcbjwhLS0gSGVyZSBnb2VzIHRoZSBkaWFsb2cgc3VidGl0bGUuIExlYXZlIGl0IGJsYW5rIGlmIHlvdSBkb24ndCBuZWVkIGl0IC0tPlxyXG48cCAqbmdJZj1cImRhdGEudGV4dHMubGVuZ3RoID4gMSAmYW1wOyZhbXA7ICFzdHJpbmdVdGlscy5pc0VtcHR5KGRhdGEudGV4dHNbMV0pXCI+XHJcbiAgICB7e2RhdGEudGV4dHNbMV19fVxyXG48L3A+XHJcblxyXG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDIgJmFtcDsmYW1wOyAhc3RyaW5nVXRpbHMuaXNFbXB0eShkYXRhLnRleHRzWzJdKVwiXHJcbiAgICBjbGFzcz1cInNlYXJjaEl0ZW1JbnB1dENvbnRhaW5lclwiPlxyXG4gICAgXHJcbiAgICA8bWF0LWxhYmVsPnt7ZGF0YS50ZXh0c1syXX19PC9tYXQtbGFiZWw+XHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgYXV0b0ZvY3VzT25EaXNwbGF5XHJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uSW50cm9LZXlQcmVzcygpXCJcclxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50LnRhcmdldClcIj5cclxuICAgICAgICBcclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjwhLS0gaGVyZSBnb2VzIHRoZSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgd2lsbCBiZSBzaG93biB0byB0aGUgdXNlciAtLT5cclxuPGRpdiBjbGFzcz1cImxpc3RJdGVtc0NvbnRhaW5lclwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJnZXRMaXN0SXRlbXNDb250YWluZXJNYXhoZWlnaHQoKVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJsaXN0SXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRJdGVtSW5kZXggPT09IGkgPyAnIzkwZDFmZmFkJyA6IChpICUgMiA9PT0gMCA/ICdpbml0aWFsJyA6ICcjMDAwMDAwMDknKVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRPcHRpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIChjbGljayk9XCJkYXRhLnRleHRzLmxlbmd0aCA8IDQgPyBjbG9zZURpYWxvZyhpKSA6IHNlbGVjdGVkSXRlbUluZGV4ID0gaVwiPlxyXG4gICAgXHJcbiAgICAgICAgPHAgKm5nSWY9XCJpdGVtICE9PSAnJ1wiPlxyXG4gICAgICAgICAgICB7e2l0ZW19fVxyXG4gICAgICAgIDwvcD5cclxuICAgIFxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcclxuICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZEl0ZW1JbmRleCA8IDBcIlxyXG4gICAgKGNsaWNrKT1cImNsb3NlRGlhbG9nKHNlbGVjdGVkSXRlbUluZGV4KVwiXHJcbiAgICAqbmdJZj1cImRhdGEudGV4dHMubGVuZ3RoID4gM1wiPlxyXG5cclxuICAgIHt7ZGF0YS50ZXh0c1szXX19XHJcbiAgICBcclxuPC9idXR0b24+Il19
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
-
*
|
|
4
|
-
* Website : -> http://www.turbogui.org
|
|
5
|
-
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
-
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
-
*/
|
|
9
|
-
import { Component, Inject } from '@angular/core';
|
|
10
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
11
|
-
import { DialogBaseComponent } from '../dialog-base/dialog-base.component';
|
|
12
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
13
|
-
import { CommonModule } from '@angular/common';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "@angular/material/dialog";
|
|
16
|
-
import * as i2 from "@angular/common";
|
|
17
|
-
import * as i3 from "@angular/material/button";
|
|
18
|
-
/**
|
|
19
|
-
* A dialog component with two option buttons, to be used with dialog service.
|
|
20
|
-
* The first of the options is considered to be the primary one and will therefore have more visual accent
|
|
21
|
-
*/
|
|
22
|
-
export class DialogTwoOptionComponent extends DialogBaseComponent {
|
|
23
|
-
static { this.DIALOG_CLASS_NAME = 'DialogTwoOptionComponent'; }
|
|
24
|
-
constructor(elementRef, dialogRef, data) {
|
|
25
|
-
super(elementRef, dialogRef);
|
|
26
|
-
this.elementRef = elementRef;
|
|
27
|
-
this.dialogRef = dialogRef;
|
|
28
|
-
this.data = data;
|
|
29
|
-
if (data.texts.length < 1) {
|
|
30
|
-
throw new Error('DialogTwoOptionComponent expects 2 texts: The title and optionally a description');
|
|
31
|
-
}
|
|
32
|
-
if (data.options.length !== 2) {
|
|
33
|
-
throw new Error('DialogTwoOptionComponent expects only two options');
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogTwoOptionComponent, deps: [{ token: i0.ElementRef }, { token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogTwoOptionComponent, isStandalone: true, selector: "tg-dialog-two-option", providers: [], usesInheritance: true, ngImport: i0, template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<div class=\"buttonsContainer\">\r\n\r\n <button mat-raised-button color=\"primary\" class=\"primaryButton\"\r\n (click)=\"closeDialog(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n </button>\r\n \r\n <button mat-button\r\n (click)=\"closeDialog(1)\">\r\n \r\n {{data.options[1]}}\r\n \r\n </button>\r\n \r\n</div>\r\n", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}.buttonsContainer{width:100%;max-width:530px;display:flex;flex-direction:row-reverse;float:right}button{width:50%;padding:0}.primaryButton{margin-left:2%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogTwoOptionComponent, decorators: [{
|
|
40
|
-
type: Component,
|
|
41
|
-
args: [{ selector: 'tg-dialog-two-option', standalone: true, imports: [CommonModule, MatButtonModule], providers: [], template: "<h3>\r\n {{data.texts[0]}}\r\n</h3>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<div class=\"buttonsContainer\">\r\n\r\n <button mat-raised-button color=\"primary\" class=\"primaryButton\"\r\n (click)=\"closeDialog(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n </button>\r\n \r\n <button mat-button\r\n (click)=\"closeDialog(1)\">\r\n \r\n {{data.options[1]}}\r\n \r\n </button>\r\n \r\n</div>\r\n", styles: [":host{min-height:300px}h3{margin-bottom:25px}p{margin-bottom:52px}.buttonsContainer{width:100%;max-width:530px;display:flex;flex-direction:row-reverse;float:right}button{width:50%;padding:0}.primaryButton{margin-left:2%}\n"] }]
|
|
42
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
43
|
-
type: Inject,
|
|
44
|
-
args: [MAT_DIALOG_DATA]
|
|
45
|
-
}] }] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXR3by1vcHRpb24vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLXR3by1vcHRpb24vZGlhbG9nLXR3by1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFHL0M7OztHQUdHO0FBV0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLG1CQUFtQjthQUc3QyxzQkFBaUIsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7SUFHL0QsWUFBbUIsVUFBc0IsRUFBUyxTQUE0QyxFQUFrQyxJQUFTO1FBRXJJLEtBQUssQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFGZCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFBa0MsU0FBSSxHQUFKLElBQUksQ0FBSztRQUlySSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUV2QixNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUUzQixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDeEU7SUFDTCxDQUFDOzhHQW5CUSx3QkFBd0Isd0VBTXVFLGVBQWU7a0dBTjlHLHdCQUF3QixtRUFOekIsRUFBRSxpREN4QmQsaWdCQXlCQSx1UkRGVyxZQUFZLGtJQUFFLGVBQWU7OzJGQU8zQix3QkFBd0I7a0JBVnBDLFNBQVM7K0JBQ0csc0JBQXNCLGNBQ3BCLElBQUksV0FDVCxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsYUFDN0IsRUFBRTs7MEJBWXVGLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXHJcblxyXG4vKipcclxuICogQSBkaWFsb2cgY29tcG9uZW50IHdpdGggdHdvIG9wdGlvbiBidXR0b25zLCB0byBiZSB1c2VkIHdpdGggZGlhbG9nIHNlcnZpY2UuXHJcbiAqIFRoZSBmaXJzdCBvZiB0aGUgb3B0aW9ucyBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBwcmltYXJ5IG9uZSBhbmQgd2lsbCB0aGVyZWZvcmUgaGF2ZSBtb3JlIHZpc3VhbCBhY2NlbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIFx0c2VsZWN0b3I6ICd0Zy1kaWFsb2ctdHdvLW9wdGlvbicsXHJcbiAgXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV0sXHJcblx0cHJvdmlkZXJzOiBbXSxcclxuICBcdHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctdHdvLW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgXHRzdHlsZVVybHM6IFsnLi9kaWFsb2ctdHdvLW9wdGlvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERpYWxvZ1R3b09wdGlvbkNvbXBvbmVudCBleHRlbmRzIERpYWxvZ0Jhc2VDb21wb25lbnQge1xyXG5cclxuXHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgRElBTE9HX0NMQVNTX05BTUUgPSAnRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50JztcclxuICAgIFxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nQmFzZUNvbXBvbmVudD4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XHJcblxyXG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGRpYWxvZ1JlZik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGRhdGEudGV4dHMubGVuZ3RoIDwgMSkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dUd29PcHRpb25Db21wb25lbnQgZXhwZWN0cyAyIHRleHRzOiBUaGUgdGl0bGUgYW5kIG9wdGlvbmFsbHkgYSBkZXNjcmlwdGlvbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEub3B0aW9ucy5sZW5ndGggIT09IDIpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50IGV4cGVjdHMgb25seSB0d28gb3B0aW9ucycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8aDM+XHJcbiAgICB7e2RhdGEudGV4dHNbMF19fVxyXG48L2gzPlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDFcIj5cclxuICAgIHt7ZGF0YS50ZXh0c1sxXX19XHJcbjwvcD5cclxuXHJcbjxkaXYgY2xhc3M9XCJidXR0b25zQ29udGFpbmVyXCI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cInByaW1hcnlCdXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJjbG9zZURpYWxvZygwKVwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIHt7ZGF0YS5vcHRpb25zWzBdfX1cclxuICAgICAgICBcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b25cclxuICAgICAgICAoY2xpY2spPVwiY2xvc2VEaWFsb2coMSlcIj5cclxuICAgICAgICBcclxuICAgICAgICB7e2RhdGEub3B0aW9uc1sxXX19XHJcbiAgICAgICAgXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIFxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
-
*
|
|
4
|
-
* Website : -> http://www.turbogui.org
|
|
5
|
-
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
-
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
-
*/
|
|
9
|
-
import { Component, ViewContainerRef, Input, ViewChild } from '@angular/core';
|
|
10
|
-
import { ViewsService } from '../../../controller/views.service';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
/**
|
|
13
|
-
* Component that is used as a container for application views.
|
|
14
|
-
* We must create only one views container in our application and pass to it a reference to our main
|
|
15
|
-
* viewsService instance. For example:
|
|
16
|
-
*
|
|
17
|
-
* <tg-views-container [viewsService]="viewsService" [initialView]="HomeViewComponent"></tg-views-container>
|
|
18
|
-
*/
|
|
19
|
-
export class ViewsContainerComponent {
|
|
20
|
-
constructor() {
|
|
21
|
-
/**
|
|
22
|
-
* If we want to load a view by default when this component is loaded for the first time, we can
|
|
23
|
-
* set here the respective class view and it will be automatically added.
|
|
24
|
-
*/
|
|
25
|
-
this.initialView = null;
|
|
26
|
-
/**
|
|
27
|
-
* A reference to the views service that is used to operate with this views container.
|
|
28
|
-
* This must be specified when this component is added to the application
|
|
29
|
-
*/
|
|
30
|
-
this.viewsService = null;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Check that the service reference has been correctly passed
|
|
34
|
-
*/
|
|
35
|
-
ngOnInit() {
|
|
36
|
-
if (!(this.viewsService instanceof ViewsService)) {
|
|
37
|
-
throw new Error('ViewService instance must be referenced on a views container');
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.viewsService.viewContainerRef = this.viewContainerRef;
|
|
41
|
-
}
|
|
42
|
-
// Set the initial view if defined
|
|
43
|
-
if (this.initialView !== null) {
|
|
44
|
-
this.viewsService.pushView(this.initialView);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Clear the current view from the service when this component is deleted
|
|
49
|
-
*/
|
|
50
|
-
ngOnDestroy() {
|
|
51
|
-
if (this.viewsService instanceof ViewsService) {
|
|
52
|
-
this.viewsService.popView();
|
|
53
|
-
this.viewsService.viewContainerRef = null;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ViewsContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ViewsContainerComponent, isStandalone: true, selector: "tg-views-container", inputs: { initialView: "initialView", viewsService: "viewsService" }, providers: [], viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["viewContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\r\n This is a dummy template component that will be used as the anchor point where the views will be loaded\r\n-->\r\n<ng-template #viewContainerRef></ng-template>", styles: [""] }); }
|
|
58
|
-
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ViewsContainerComponent, decorators: [{
|
|
60
|
-
type: Component,
|
|
61
|
-
args: [{ selector: 'tg-views-container', standalone: true, imports: [], providers: [], template: "<!--\r\n This is a dummy template component that will be used as the anchor point where the views will be loaded\r\n-->\r\n<ng-template #viewContainerRef></ng-template>" }]
|
|
62
|
-
}], propDecorators: { initialView: [{
|
|
63
|
-
type: Input
|
|
64
|
-
}], viewsService: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}], viewContainerRef: [{
|
|
67
|
-
type: ViewChild,
|
|
68
|
-
args: ['viewContainerRef', { read: ViewContainerRef, static: true }]
|
|
69
|
-
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL3ZpZXdzLWNvbnRhaW5lci92aWV3cy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvdmlld3MtY29udGFpbmVyL3ZpZXdzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBSWpFOzs7Ozs7R0FNRztBQVdILE1BQU0sT0FBTyx1QkFBdUI7SUFWcEM7UUFhSTs7O1dBR0c7UUFDTSxnQkFBVyxHQUFzQixJQUFJLENBQUM7UUFHL0M7OztXQUdHO1FBQ00saUJBQVksR0FBd0IsSUFBSSxDQUFDO0tBMENyRDtJQWpDRzs7T0FFRztJQUNILFFBQVE7UUFFSixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLFlBQVksQ0FBQyxFQUFFO1lBRTlDLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztTQUVuRjthQUFNO1lBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDOUQ7UUFFRCxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUUzQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEQ7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxXQUFXO1FBRVAsSUFBSSxJQUFJLENBQUMsWUFBWSxZQUFZLFlBQVksRUFBRTtZQUUzQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzdDO0lBQ0wsQ0FBQzs4R0F2RFEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsdUlBTnhCLEVBQUUsMkhBMEI2QixnQkFBZ0IsMkNDbkQzRCw2S0FHNkM7OzJGRDRCaEMsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNHLG9CQUFvQixjQUNsQixJQUFJLFdBQ1QsRUFBRSxhQUNBLEVBQUU7OEJBYUQsV0FBVztzQkFBbkIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1tRSxnQkFBZ0I7c0JBQXhGLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NvbnRhaW5lclJlZiwgSW5wdXQsIFZpZXdDaGlsZCwgT25Jbml0LCBUeXBlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmlld3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29udHJvbGxlci92aWV3cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlldyB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2NsYXNzZXMvVmlldyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudCB0aGF0IGlzIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIGFwcGxpY2F0aW9uIHZpZXdzLlxyXG4gKiBXZSBtdXN0IGNyZWF0ZSBvbmx5IG9uZSB2aWV3cyBjb250YWluZXIgaW4gb3VyIGFwcGxpY2F0aW9uIGFuZCBwYXNzIHRvIGl0IGEgcmVmZXJlbmNlIHRvIG91ciBtYWluXHJcbiAqIHZpZXdzU2VydmljZSBpbnN0YW5jZS4gRm9yIGV4YW1wbGU6XHJcbiAqXHJcbiAqIDx0Zy12aWV3cy1jb250YWluZXIgW3ZpZXdzU2VydmljZV09XCJ2aWV3c1NlcnZpY2VcIiBbaW5pdGlhbFZpZXddPVwiSG9tZVZpZXdDb21wb25lbnRcIj48L3RnLXZpZXdzLWNvbnRhaW5lcj5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIFx0c2VsZWN0b3I6ICd0Zy12aWV3cy1jb250YWluZXInLFxyXG4gIFx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbXSxcclxuXHRwcm92aWRlcnM6IFtdLFxyXG4gIFx0dGVtcGxhdGVVcmw6ICcuL3ZpZXdzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgXHRzdHlsZVVybHM6IFsnLi92aWV3cy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBWaWV3c0NvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiB3ZSB3YW50IHRvIGxvYWQgYSB2aWV3IGJ5IGRlZmF1bHQgd2hlbiB0aGlzIGNvbXBvbmVudCBpcyBsb2FkZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCB3ZSBjYW5cclxuICAgICAqIHNldCBoZXJlIHRoZSByZXNwZWN0aXZlIGNsYXNzIHZpZXcgYW5kIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaW5pdGlhbFZpZXc6IFR5cGU8Vmlldz4gfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgdmlld3Mgc2VydmljZSB0aGF0IGlzIHVzZWQgdG8gb3BlcmF0ZSB3aXRoIHRoaXMgdmlld3MgY29udGFpbmVyLlxyXG4gICAgICogVGhpcyBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGFkZGVkIHRvIHRoZSBhcHBsaWNhdGlvblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB2aWV3c1NlcnZpY2U6IFZpZXdzU2VydmljZSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBuZy10ZW1wbGF0ZSBpbnNpZGUgdGhpcyBjb21wb25lbnQgdGhhdCBpcyB1c2VkIGFzIHRoZSBhbmNob3IgcG9pbnQgdG8gbG9hZCB2aWV3c1xyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCd2aWV3Q29udGFpbmVyUmVmJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayB0aGF0IHRoZSBzZXJ2aWNlIHJlZmVyZW5jZSBoYXMgYmVlbiBjb3JyZWN0bHkgcGFzc2VkXHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG5cclxuICAgICAgICBpZiAoISh0aGlzLnZpZXdzU2VydmljZSBpbnN0YW5jZW9mIFZpZXdzU2VydmljZSkpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVmlld1NlcnZpY2UgaW5zdGFuY2UgbXVzdCBiZSByZWZlcmVuY2VkIG9uIGEgdmlld3MgY29udGFpbmVyJyk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnZpZXdzU2VydmljZS52aWV3Q29udGFpbmVyUmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBpbml0aWFsIHZpZXcgaWYgZGVmaW5lZFxyXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxWaWV3ICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnZpZXdzU2VydmljZS5wdXNoVmlldyh0aGlzLmluaXRpYWxWaWV3KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xlYXIgdGhlIGN1cnJlbnQgdmlldyBmcm9tIHRoZSBzZXJ2aWNlIHdoZW4gdGhpcyBjb21wb25lbnQgaXMgZGVsZXRlZFxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudmlld3NTZXJ2aWNlIGluc3RhbmNlb2YgVmlld3NTZXJ2aWNlKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnZpZXdzU2VydmljZS5wb3BWaWV3KCk7XHJcbiAgICAgICAgICAgIHRoaXMudmlld3NTZXJ2aWNlLnZpZXdDb250YWluZXJSZWYgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8IS0tXHJcbiAgICBUaGlzIGlzIGEgZHVtbXkgdGVtcGxhdGUgY29tcG9uZW50IHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBhbmNob3IgcG9pbnQgd2hlcmUgdGhlIHZpZXdzIHdpbGwgYmUgbG9hZGVkXHJcbi0tPlxyXG48bmctdGVtcGxhdGUgI3ZpZXdDb250YWluZXJSZWY+PC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
-
*
|
|
4
|
-
* Website : -> http://www.turbogui.org
|
|
5
|
-
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
-
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
-
*/
|
|
9
|
-
import { Directive } from '@angular/core';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
/** This directive is used to perform an autofocus on an element every time it is displayed */
|
|
12
|
-
/**
|
|
13
|
-
* This directive is used to perform an autofocus on an element every time it is displayed
|
|
14
|
-
* If we set the autoFocusOnDisplay tag to the html element, it will be automatically focused after it is shown.
|
|
15
|
-
*/
|
|
16
|
-
export class AutoFocusOnDisplayDirective {
|
|
17
|
-
constructor(el, zone, renderer) {
|
|
18
|
-
this.el = el;
|
|
19
|
-
this.zone = zone;
|
|
20
|
-
this.renderer = renderer;
|
|
21
|
-
if (!el.nativeElement['focus']) {
|
|
22
|
-
throw new Error('Element does not accept focus');
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
ngAfterContentInit() {
|
|
26
|
-
this.zone.runOutsideAngular(() => setTimeout(() => {
|
|
27
|
-
this.renderer.selectRootElement(this.el.nativeElement).focus();
|
|
28
|
-
}, 0));
|
|
29
|
-
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AutoFocusOnDisplayDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
31
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: AutoFocusOnDisplayDirective, selector: "[autoFocusOnDisplay]", ngImport: i0 }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AutoFocusOnDisplayDirective, decorators: [{
|
|
34
|
-
type: Directive,
|
|
35
|
-
args: [{
|
|
36
|
-
selector: '[autoFocusOnDisplay]'
|
|
37
|
-
}]
|
|
38
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b0ZvY3VzT25EaXNwbGF5RGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2RpcmVjdGl2ZXMvQXV0b0ZvY3VzT25EaXNwbGF5RGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFtRCxNQUFNLGVBQWUsQ0FBQzs7QUFHM0YsOEZBQThGO0FBTTlGOzs7R0FHRztBQUNILE1BQU0sT0FBTywyQkFBMkI7SUFHcEMsWUFBb0IsRUFBYyxFQUFVLElBQVksRUFBVSxRQUFtQjtRQUFqRSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFFakYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFFNUIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUVkLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUU5QyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOzhHQWxCUSwyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFUdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgTmdab25lLCBSZW5kZXJlcjIsIEFmdGVyQ29udGVudEluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG4vKiogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCB0byBwZXJmb3JtIGFuIGF1dG9mb2N1cyBvbiBhbiBlbGVtZW50IGV2ZXJ5IHRpbWUgaXQgaXMgZGlzcGxheWVkICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2F1dG9Gb2N1c09uRGlzcGxheV0nXHJcbn0pXHJcblxyXG5cclxuLyoqXHJcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIHVzZWQgdG8gcGVyZm9ybSBhbiBhdXRvZm9jdXMgb24gYW4gZWxlbWVudCBldmVyeSB0aW1lIGl0IGlzIGRpc3BsYXllZFxyXG4gKiBJZiB3ZSBzZXQgdGhlIGF1dG9Gb2N1c09uRGlzcGxheSB0YWcgdG8gdGhlIGh0bWwgZWxlbWVudCwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGZvY3VzZWQgYWZ0ZXIgaXQgaXMgc2hvd24uXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXV0b0ZvY3VzT25EaXNwbGF5RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgICBcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gICAgXHJcbiAgICAgICAgaWYgKCFlbC5uYXRpdmVFbGVtZW50Wydmb2N1cyddKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRWxlbWVudCBkb2VzIG5vdCBhY2NlcHQgZm9jdXMnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgMCkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
-
*
|
|
4
|
-
* Website : -> http://www.turbogui.org
|
|
5
|
-
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
-
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
-
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
-
*/
|
|
9
|
-
import { Directive, HostListener } from '@angular/core';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
/** This directive is used to perform an automatic select all text on an element every time it is focused */
|
|
12
|
-
/**
|
|
13
|
-
* This directive is used to perform an an automatic select all text on an element every time it is focused.
|
|
14
|
-
* If we set the autoSelectTextOnFocus tag to the html element, its text will be automatically selected after it gets the focus.
|
|
15
|
-
*/
|
|
16
|
-
export class AutoSelectTextOnFocusDirective {
|
|
17
|
-
constructor(el, renderer) {
|
|
18
|
-
this.el = el;
|
|
19
|
-
this.renderer = renderer;
|
|
20
|
-
if (!el.nativeElement['select']) {
|
|
21
|
-
throw new Error('Element does not accept select');
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
onFocus() {
|
|
25
|
-
this.renderer.selectRootElement(this.el.nativeElement).select();
|
|
26
|
-
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AutoSelectTextOnFocusDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
28
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: AutoSelectTextOnFocusDirective, selector: "[autoSelectTextOnFocus]", host: { listeners: { "focus": "onFocus($event)" } }, ngImport: i0 }); }
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AutoSelectTextOnFocusDirective, decorators: [{
|
|
31
|
-
type: Directive,
|
|
32
|
-
args: [{
|
|
33
|
-
selector: '[autoSelectTextOnFocus]'
|
|
34
|
-
}]
|
|
35
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { onFocus: [{
|
|
36
|
-
type: HostListener,
|
|
37
|
-
args: ['focus', ['$event']]
|
|
38
|
-
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b1NlbGVjdFRleHRPbkZvY3VzRGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2RpcmVjdGl2ZXMvQXV0b1NlbGVjdFRleHRPbkZvY3VzRGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUF5QixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRy9FLDRHQUE0RztBQU01Rzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sOEJBQThCO0lBR3ZDLFlBQW9CLEVBQWMsRUFBVSxRQUFtQjtRQUEzQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUUzRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUU3QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDckQ7SUFDTCxDQUFDO0lBR2tDLE9BQU87UUFFdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3BFLENBQUM7OEdBZlEsOEJBQThCO2tHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBVDFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtpQkFDcEM7dUdBbUJzQyxPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG4vKiogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCB0byBwZXJmb3JtIGFuIGF1dG9tYXRpYyBzZWxlY3QgYWxsIHRleHQgb24gYW4gZWxlbWVudCBldmVyeSB0aW1lIGl0IGlzIGZvY3VzZWQgKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXV0b1NlbGVjdFRleHRPbkZvY3VzXSdcclxufSlcclxuXHJcblxyXG4vKipcclxuICogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCB0byBwZXJmb3JtIGFuIGFuIGF1dG9tYXRpYyBzZWxlY3QgYWxsIHRleHQgb24gYW4gZWxlbWVudCBldmVyeSB0aW1lIGl0IGlzIGZvY3VzZWQuXHJcbiAqIElmIHdlIHNldCB0aGUgYXV0b1NlbGVjdFRleHRPbkZvY3VzIHRhZyB0byB0aGUgaHRtbCBlbGVtZW50LCBpdHMgdGV4dCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgYWZ0ZXIgaXQgZ2V0cyB0aGUgZm9jdXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXV0b1NlbGVjdFRleHRPbkZvY3VzRGlyZWN0aXZlIHtcclxuICAgIFxyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICAgIFxyXG4gICAgICAgIGlmICghZWwubmF0aXZlRWxlbWVudFsnc2VsZWN0J10pIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbGVtZW50IGRvZXMgbm90IGFjY2VwdCBzZWxlY3QnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnLCBbJyRldmVudCddKSBvbkZvY3VzKCkge1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLnNlbGVjdCgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|