@jooler/inputs 0.0.50 → 0.0.52
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/{esm2020 → esm2022}/inputs.mjs +4 -4
- package/esm2022/lib/add-asterisk.directive.mjs +42 -0
- package/esm2022/lib/ag-grid-select-mixin.mjs +73 -0
- package/esm2022/lib/choose-enum/choose-enum.component.mjs +205 -0
- package/esm2022/lib/choose-enum-renderer/choose-enum-renderer.component.mjs +45 -0
- package/esm2022/lib/choose-general-item/choose-general-item.component.mjs +149 -0
- package/esm2022/lib/choose-general-item/choose-general-item.service.mjs +45 -0
- package/esm2022/lib/choose-general-item-renderer/choose-general-item-renderer.component.mjs +37 -0
- package/esm2022/lib/choose-line-type/choose-line-type.component.mjs +53 -0
- package/esm2022/lib/choose-yes-or-no/choose-yes-or-no.component.mjs +69 -0
- package/esm2022/lib/choose-yes-or-no-renderer/choose-yes-or-no-renderer.component.mjs +33 -0
- package/{esm2020 → esm2022}/lib/dropdown-actions/dropdown-action-type.model.mjs +5 -5
- package/esm2022/lib/dropdown-actions/dropdown-actions.component.mjs +75 -0
- package/{esm2020 → esm2022}/lib/dropdown-actions/label-and-route.model.mjs +1 -1
- package/{esm2020 → esm2022}/lib/editable-savable-input/dynamicPipe.mjs +20 -20
- package/{esm2020 → esm2022}/lib/editable-savable-input/dynamicPipeMapping.mjs +4 -4
- package/esm2022/lib/editable-savable-input/editable-savable-input.component.mjs +128 -0
- package/esm2022/lib/enum-helper.model.mjs +14 -0
- package/esm2022/lib/formcontrol-validation-msg.directive.mjs +150 -0
- package/esm2022/lib/general-input-renderer/custom-decimal-point-two-digits.directive.mjs +63 -0
- package/esm2022/lib/general-input-renderer/general-input-renderer.component.mjs +50 -0
- package/{esm2020 → esm2022}/lib/inputs.module.mjs +122 -122
- package/{esm2020 → esm2022}/lib/models/label-and-field.model.mjs +5 -3
- package/esm2022/lib/models/line-type-model-helper.mjs +51 -0
- package/{esm2020 → esm2022}/lib/models/line-type.model.mjs +5 -5
- package/esm2022/lib/models/yes-or-no.model.mjs +6 -0
- package/esm2022/lib/primary-colors.mjs +12 -0
- package/esm2022/lib/services/validation-message.service.mjs +111 -0
- package/esm2022/lib/show-table-errors/show-table-errors.component.mjs +25 -0
- package/{esm2020 → esm2022}/public-api.mjs +23 -23
- package/fesm2022/inputs.mjs +1494 -0
- package/fesm2022/inputs.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/add-asterisk.directive.d.ts +12 -12
- package/lib/ag-grid-select-mixin.d.ts +22 -0
- package/lib/choose-enum/choose-enum.component.d.ts +57 -51
- package/lib/choose-enum-renderer/choose-enum-renderer.component.d.ts +13 -15
- package/lib/choose-general-item/choose-general-item.component.d.ts +49 -49
- package/lib/choose-general-item/choose-general-item.service.d.ts +18 -18
- package/lib/choose-general-item-renderer/choose-general-item-renderer.component.d.ts +15 -15
- package/lib/choose-line-type/choose-line-type.component.d.ts +19 -19
- package/lib/choose-yes-or-no/choose-yes-or-no.component.d.ts +24 -24
- package/lib/choose-yes-or-no-renderer/choose-yes-or-no-renderer.component.d.ts +16 -16
- package/lib/dropdown-actions/dropdown-action-type.model.d.ts +4 -4
- package/lib/dropdown-actions/dropdown-actions.component.d.ts +22 -22
- package/lib/dropdown-actions/label-and-route.model.d.ts +4 -4
- package/lib/editable-savable-input/dynamicPipe.d.ts +7 -7
- package/lib/editable-savable-input/dynamicPipeMapping.d.ts +5 -5
- package/lib/editable-savable-input/editable-savable-input.component.d.ts +37 -37
- package/lib/enum-helper.model.d.ts +8 -0
- package/lib/formcontrol-validation-msg.directive.d.ts +25 -25
- package/lib/general-input-renderer/custom-decimal-point-two-digits.directive.d.ts +13 -13
- package/lib/general-input-renderer/general-input-renderer.component.d.ts +15 -15
- package/lib/inputs.module.d.ts +29 -29
- package/lib/models/label-and-field.model.d.ts +4 -4
- package/lib/models/line-type-model-helper.d.ts +12 -12
- package/lib/models/line-type.model.d.ts +4 -4
- package/lib/models/yes-or-no.model.d.ts +5 -5
- package/lib/primary-colors.d.ts +11 -11
- package/lib/services/validation-message.service.d.ts +50 -50
- package/lib/show-table-errors/show-table-errors.component.d.ts +11 -11
- package/package.json +10 -16
- package/public-api.d.ts +20 -20
- package/esm2020/lib/add-asterisk.directive.mjs +0 -41
- package/esm2020/lib/choose-enum/choose-enum.component.mjs +0 -176
- package/esm2020/lib/choose-enum-renderer/choose-enum-renderer.component.mjs +0 -26
- package/esm2020/lib/choose-general-item/choose-general-item.component.mjs +0 -133
- package/esm2020/lib/choose-general-item/choose-general-item.service.mjs +0 -43
- package/esm2020/lib/choose-general-item-renderer/choose-general-item-renderer.component.mjs +0 -32
- package/esm2020/lib/choose-line-type/choose-line-type.component.mjs +0 -52
- package/esm2020/lib/choose-yes-or-no/choose-yes-or-no.component.mjs +0 -69
- package/esm2020/lib/choose-yes-or-no-renderer/choose-yes-or-no-renderer.component.mjs +0 -27
- package/esm2020/lib/custom-theme.mjs +0 -104
- package/esm2020/lib/dropdown-actions/dropdown-actions.component.mjs +0 -72
- package/esm2020/lib/editable-savable-input/editable-savable-input.component.mjs +0 -123
- package/esm2020/lib/formcontrol-validation-msg.directive.mjs +0 -144
- package/esm2020/lib/general-input-renderer/custom-decimal-point-two-digits.directive.mjs +0 -61
- package/esm2020/lib/general-input-renderer/general-input-renderer.component.mjs +0 -45
- package/esm2020/lib/models/enum-helper-functions.mjs +0 -57
- package/esm2020/lib/models/enum-helper.model.mjs +0 -2
- package/esm2020/lib/models/line-type-model-helper.mjs +0 -47
- package/esm2020/lib/models/yes-or-no.model.mjs +0 -3
- package/esm2020/lib/primary-colors.mjs +0 -12
- package/esm2020/lib/services/validation-message.service.mjs +0 -106
- package/esm2020/lib/show-table-errors/show-table-errors.component.mjs +0 -23
- package/fesm2015/inputs.mjs +0 -1475
- package/fesm2015/inputs.mjs.map +0 -1
- package/fesm2020/inputs.mjs +0 -1471
- package/fesm2020/inputs.mjs.map +0 -1
- package/lib/custom-theme.d.ts +0 -8
- package/lib/models/enum-helper-functions.d.ts +0 -5
- package/lib/models/enum-helper.model.d.ts +0 -6
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import { PIPEMAPPINGS } from './dynamicPipeMapping';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class DynamicPipe {
|
|
5
|
-
transform(value, args) {
|
|
6
|
-
for (let val of PIPEMAPPINGS) {
|
|
7
|
-
if (val.value === args) {
|
|
8
|
-
return val.pipe.transform(value);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return '';
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
17
|
-
type: Pipe,
|
|
18
|
-
args: [{ name: 'dynamicPipe' }]
|
|
19
|
-
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { PIPEMAPPINGS } from './dynamicPipeMapping';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class DynamicPipe {
|
|
5
|
+
transform(value, args) {
|
|
6
|
+
for (let val of PIPEMAPPINGS) {
|
|
7
|
+
if (val.value === args) {
|
|
8
|
+
return val.pipe.transform(value);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
14
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DynamicPipe, name: "dynamicPipe" });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DynamicPipe, decorators: [{
|
|
17
|
+
type: Pipe,
|
|
18
|
+
args: [{ name: 'dynamicPipe' }]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY1BpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2xpYi9lZGl0YWJsZS1zYXZhYmxlLWlucHV0L2R5bmFtaWNQaXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHcEQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFTO1FBQ3RCLEtBQUssSUFBSSxHQUFHLElBQUksWUFBWSxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEM7U0FDSjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQzt3R0FSUSxXQUFXO3NHQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQSVBFTUFQUElOR1MgfSBmcm9tICcuL2R5bmFtaWNQaXBlTWFwcGluZyc7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdkeW5hbWljUGlwZScgfSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWUsIGFyZ3M6IGFueSk6IGFueSB7XHJcbiAgICAgICAgZm9yIChsZXQgdmFsIG9mIFBJUEVNQVBQSU5HUykge1xyXG4gICAgICAgICAgICBpZiAodmFsLnZhbHVlID09PSBhcmdzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsLnBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CurrencyPipe } from '@angular/common';
|
|
2
|
-
export const PIPEMAPPINGS = [
|
|
3
|
-
{ value: '$', pipe: new CurrencyPipe('en-US') }
|
|
4
|
-
];
|
|
1
|
+
import { CurrencyPipe } from '@angular/common';
|
|
2
|
+
export const PIPEMAPPINGS = [
|
|
3
|
+
{ value: '$', pipe: new CurrencyPipe('en-US') }
|
|
4
|
+
];
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY1BpcGVNYXBwaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC9keW5hbWljUGlwZU1hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0NBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBJUEVNQVBQSU5HUyA9IFtcclxuICAgIHsgdmFsdWU6ICckJywgcGlwZTogbmV3IEN1cnJlbmN5UGlwZSgnZW4tVVMnKSB9XHJcbl07Il19
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { DynamicPipe } from './dynamicPipe';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "@angular/material/button";
|
|
8
|
+
import * as i4 from "./dynamicPipe";
|
|
9
|
+
export class EditableSavableInputComponent {
|
|
10
|
+
saveWasClicked = new EventEmitter();
|
|
11
|
+
defaultvalue;
|
|
12
|
+
inputType;
|
|
13
|
+
newLabel;
|
|
14
|
+
headerLabel;
|
|
15
|
+
showUnit = false;
|
|
16
|
+
unit;
|
|
17
|
+
unitType;
|
|
18
|
+
isEditable = true;
|
|
19
|
+
showHeader = true;
|
|
20
|
+
value = "";
|
|
21
|
+
isAddClickedOn = false;
|
|
22
|
+
isUpdated = false;
|
|
23
|
+
showEdit = false;
|
|
24
|
+
constructor() { }
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.initialize();
|
|
27
|
+
}
|
|
28
|
+
initialize() {
|
|
29
|
+
if (this.value == "") {
|
|
30
|
+
this.isUpdated = false;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.isUpdated = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
onClickAdd() {
|
|
37
|
+
this.isAddClickedOn = true;
|
|
38
|
+
}
|
|
39
|
+
onClickCancel() {
|
|
40
|
+
this.isAddClickedOn = false;
|
|
41
|
+
}
|
|
42
|
+
onClickSave(input) {
|
|
43
|
+
this.isAddClickedOn = false;
|
|
44
|
+
let value = input.value;
|
|
45
|
+
if (value.trim().length == 0) {
|
|
46
|
+
this.isUpdated = false;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.isUpdated = true;
|
|
50
|
+
}
|
|
51
|
+
this.value = value;
|
|
52
|
+
this.saveWasClicked.emit(value);
|
|
53
|
+
this.propagateChange(this.value);
|
|
54
|
+
}
|
|
55
|
+
onClickEdit() {
|
|
56
|
+
this.isAddClickedOn = true;
|
|
57
|
+
}
|
|
58
|
+
onMouseEnter() {
|
|
59
|
+
this.showEdit = true;
|
|
60
|
+
}
|
|
61
|
+
onMouseLeave() {
|
|
62
|
+
this.showEdit = false;
|
|
63
|
+
}
|
|
64
|
+
writeValue(value) {
|
|
65
|
+
if (value) {
|
|
66
|
+
this.value = value;
|
|
67
|
+
this.isUpdated = true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// registers 'fn' that will be fired wheb changes are made
|
|
71
|
+
// this is how we emit the changes back to the form
|
|
72
|
+
registerOnChange(fn) {
|
|
73
|
+
this.propagateChange = fn;
|
|
74
|
+
}
|
|
75
|
+
registerOnTouched(fn) {
|
|
76
|
+
this.propogateTouch = fn;
|
|
77
|
+
}
|
|
78
|
+
// the method set in registerOnChange to emit changes back to the form
|
|
79
|
+
propagateChange = (_) => { };
|
|
80
|
+
propogateTouch = () => { };
|
|
81
|
+
onChange($event) {
|
|
82
|
+
//this.propagateChange(this.value);
|
|
83
|
+
}
|
|
84
|
+
updateBlur() {
|
|
85
|
+
this.propogateTouch();
|
|
86
|
+
}
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditableSavableInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
88
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EditableSavableInputComponent, selector: "editable-savable-input", inputs: { defaultvalue: "defaultvalue", inputType: "inputType", newLabel: "newLabel", headerLabel: "headerLabel", showUnit: "showUnit", unit: "unit", unitType: "unitType", isEditable: "isEditable", showHeader: "showHeader", value: "value" }, outputs: { saveWasClicked: "saveWasClicked" }, providers: [DynamicPipe,
|
|
89
|
+
{
|
|
90
|
+
provide: NG_VALUE_ACCESSOR,
|
|
91
|
+
useExisting: forwardRef(() => EditableSavableInputComponent),
|
|
92
|
+
multi: true
|
|
93
|
+
}
|
|
94
|
+
], ngImport: i0, template: "<div *ngIf=\"showHeader\" class=\"header\">\r\n {{headerLabel}}\r\n</div>\r\n<div class=\"container\" [ngClass]=\"{'closed':!isAddClickedOn, 'open': isAddClickedOn}\">\r\n <div class=\"content\">\r\n <div class=\"default-content\" *ngIf=\"!isAddClickedOn && !isUpdated && isEditable\">\r\n <div class=\"add\" (click)=\"onClickAdd()\">\r\n {{defaultvalue}} </div>\r\n </div>\r\n <div class=\"edit-content\" *ngIf=\"isAddClickedOn\">\r\n <label class=\"input-label\" for=\"input\">{{newLabel}}</label>\r\n <div class=\"input \" [ngClass]=\"{'input-with-appended-unit': showUnit}\">\r\n <span *ngIf=\"showUnit\">{{unit}}</span>\r\n <input (change)=\"onChange($event)\" (blur)=\"updateBlur()\" [ngModel]=\"value\" [value]=\"value\" id=\"input\" #input\r\n class=\"form-control\" [ngClass]=\"{'input-box': showUnit}\" [type]=\"inputType\">\r\n </div>\r\n <div class=\"edit-actions\">\r\n <button type=\"button\" class=\"btn cancel\" (click)=\"onClickCancel()\" mat-raised-button>Cancel</button>\r\n <button type=\"button\" class=\"save\" (click)=\"onClickSave(input)\" mat-raised-button color=\"primary\">Save</button>\r\n </div>\r\n </div>\r\n <div class=\"updated-content closed\" *ngIf=\"!isAddClickedOn && isUpdated\" (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"edit-icon-container\" *ngIf=\"showEdit && isEditable\" (click)=\"onClickEdit()\">\r\n <i class=\"fas fa-pencil-alt\"></i>\r\n </div>\r\n <div class=\"updated\">\r\n <span class=\"updated-label\">\r\n <label for=\"input\">{{newLabel}}</label>\r\n </span>\r\n <span *ngIf=\"!showUnit\">{{value}}</span>\r\n <span *ngIf=\"showUnit\" class=\"updated-value\">\r\n {{value | dynamicPipe: unitType}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".container{display:block;width:100%}.open{height:120px}.closed{height:40px}.edit-icon-container{position:absolute;right:0%;transform:translate(0);top:0;cursor:pointer}.edit-icon-container:hover{background-color:gray;color:#fff;padding:2px}label,.updated-label{color:gray;margin-right:5px}#input{display:inline}.cancel{grid-column:1;grid-row:2;height:80%;width:80px}.save{grid-column:2;grid-row:2;height:80%;width:80px}.default-content{position:absolute}.input{width:280px;grid-column:2;grid-row:1}.input-box{width:200px}.input-label{grid-column:1;grid-row:1}.updated{position:absolute}.add{color:#00f}.add:hover{text-decoration:underline;cursor:pointer}.content{position:relative}.btn:focus{outline:none!important}.edit-content{position:absolute;left:50%;transform:translate(-50%);display:grid;grid-template-columns:150px 200px;grid-template-rows:50px 50px}.updated-content{display:block}.header{color:gray;border-bottom:1px solid grey;height:30px;font-size:20px;margin-bottom:10px;margin-top:10px}.input-with-appended-unit input{padding-left:20px;text-align:left}.input-with-appended-unit span{position:relative;left:20px;color:gray}.edit-actions{grid-column:2;grid-row:2;display:grid;grid-template-columns:50% 50%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i4.DynamicPipe, name: "dynamicPipe" }] });
|
|
95
|
+
}
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditableSavableInputComponent, decorators: [{
|
|
97
|
+
type: Component,
|
|
98
|
+
args: [{ selector: 'editable-savable-input', providers: [DynamicPipe,
|
|
99
|
+
{
|
|
100
|
+
provide: NG_VALUE_ACCESSOR,
|
|
101
|
+
useExisting: forwardRef(() => EditableSavableInputComponent),
|
|
102
|
+
multi: true
|
|
103
|
+
}
|
|
104
|
+
], template: "<div *ngIf=\"showHeader\" class=\"header\">\r\n {{headerLabel}}\r\n</div>\r\n<div class=\"container\" [ngClass]=\"{'closed':!isAddClickedOn, 'open': isAddClickedOn}\">\r\n <div class=\"content\">\r\n <div class=\"default-content\" *ngIf=\"!isAddClickedOn && !isUpdated && isEditable\">\r\n <div class=\"add\" (click)=\"onClickAdd()\">\r\n {{defaultvalue}} </div>\r\n </div>\r\n <div class=\"edit-content\" *ngIf=\"isAddClickedOn\">\r\n <label class=\"input-label\" for=\"input\">{{newLabel}}</label>\r\n <div class=\"input \" [ngClass]=\"{'input-with-appended-unit': showUnit}\">\r\n <span *ngIf=\"showUnit\">{{unit}}</span>\r\n <input (change)=\"onChange($event)\" (blur)=\"updateBlur()\" [ngModel]=\"value\" [value]=\"value\" id=\"input\" #input\r\n class=\"form-control\" [ngClass]=\"{'input-box': showUnit}\" [type]=\"inputType\">\r\n </div>\r\n <div class=\"edit-actions\">\r\n <button type=\"button\" class=\"btn cancel\" (click)=\"onClickCancel()\" mat-raised-button>Cancel</button>\r\n <button type=\"button\" class=\"save\" (click)=\"onClickSave(input)\" mat-raised-button color=\"primary\">Save</button>\r\n </div>\r\n </div>\r\n <div class=\"updated-content closed\" *ngIf=\"!isAddClickedOn && isUpdated\" (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"edit-icon-container\" *ngIf=\"showEdit && isEditable\" (click)=\"onClickEdit()\">\r\n <i class=\"fas fa-pencil-alt\"></i>\r\n </div>\r\n <div class=\"updated\">\r\n <span class=\"updated-label\">\r\n <label for=\"input\">{{newLabel}}</label>\r\n </span>\r\n <span *ngIf=\"!showUnit\">{{value}}</span>\r\n <span *ngIf=\"showUnit\" class=\"updated-value\">\r\n {{value | dynamicPipe: unitType}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".container{display:block;width:100%}.open{height:120px}.closed{height:40px}.edit-icon-container{position:absolute;right:0%;transform:translate(0);top:0;cursor:pointer}.edit-icon-container:hover{background-color:gray;color:#fff;padding:2px}label,.updated-label{color:gray;margin-right:5px}#input{display:inline}.cancel{grid-column:1;grid-row:2;height:80%;width:80px}.save{grid-column:2;grid-row:2;height:80%;width:80px}.default-content{position:absolute}.input{width:280px;grid-column:2;grid-row:1}.input-box{width:200px}.input-label{grid-column:1;grid-row:1}.updated{position:absolute}.add{color:#00f}.add:hover{text-decoration:underline;cursor:pointer}.content{position:relative}.btn:focus{outline:none!important}.edit-content{position:absolute;left:50%;transform:translate(-50%);display:grid;grid-template-columns:150px 200px;grid-template-rows:50px 50px}.updated-content{display:block}.header{color:gray;border-bottom:1px solid grey;height:30px;font-size:20px;margin-bottom:10px;margin-top:10px}.input-with-appended-unit input{padding-left:20px;text-align:left}.input-with-appended-unit span{position:relative;left:20px;color:gray}.edit-actions{grid-column:2;grid-row:2;display:grid;grid-template-columns:50% 50%}\n"] }]
|
|
105
|
+
}], ctorParameters: function () { return []; }, propDecorators: { saveWasClicked: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}], defaultvalue: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], inputType: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], newLabel: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], headerLabel: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], showUnit: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], unit: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], unitType: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], isEditable: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], showHeader: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], value: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}] } });
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtc2F2YWJsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2xpYi9lZGl0YWJsZS1zYXZhYmxlLWlucHV0L2VkaXRhYmxlLXNhdmFibGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC9lZGl0YWJsZS1zYXZhYmxlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFhNUMsTUFBTSxPQUFPLDZCQUE2QjtJQUM5QixjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNyQyxZQUFZLENBQVM7SUFDckIsU0FBUyxDQUFTO0lBQ2xCLFFBQVEsQ0FBUztJQUNqQixXQUFXLENBQVM7SUFDcEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixJQUFJLENBQVM7SUFDYixRQUFRLENBQVM7SUFDakIsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixVQUFVLEdBQVksSUFBSSxDQUFDO0lBQzNCLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDNUIsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUNoQyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFMUIsZ0JBQWdCLENBQUM7SUFFakIsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVTtR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QkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIGZvcndhcmRSZWYsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY1BpcGUgfSBmcm9tICcuL2R5bmFtaWNQaXBlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlZGl0YWJsZS1zYXZhYmxlLWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdGFibGUtc2F2YWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdGFibGUtc2F2YWJsZS1pbnB1dC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbRHluYW1pY1BpcGUsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFZGl0YWJsZVNhdmFibGVJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdGFibGVTYXZhYmxlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBAT3V0cHV0KCkgc2F2ZVdhc0NsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgZGVmYXVsdHZhbHVlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5wdXRUeXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbmV3TGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBoZWFkZXJMYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dVbml0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdW5pdDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVuaXRUeXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXNFZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgaXNBZGRDbGlja2VkT246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1VwZGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpIHtcclxuICAgIGlmICh0aGlzLnZhbHVlID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5pc1VwZGF0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlzVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQWRkKCkge1xyXG4gICAgdGhpcy5pc0FkZENsaWNrZWRPbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5pc0FkZENsaWNrZWRPbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja1NhdmUoaW5wdXQpIHtcclxuICAgIHRoaXMuaXNBZGRDbGlja2VkT24gPSBmYWxzZTtcclxuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xyXG4gICAgaWYgKHZhbHVlLnRyaW0oKS5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLmlzVXBkYXRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNVcGRhdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2F2ZVdhc0NsaWNrZWQuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tFZGl0KCkge1xyXG4gICAgdGhpcy5pc0FkZENsaWNrZWRPbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlRW50ZXIoKSB7XHJcbiAgICB0aGlzLnNob3dFZGl0ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uTW91c2VMZWF2ZSgpIHtcclxuICAgIHRoaXMuc2hvd0VkaXQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5pc1VwZGF0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZWIgY2hhbmdlcyBhcmUgbWFkZVxyXG4gIC8vIHRoaXMgaXMgaG93IHdlIGVtaXQgdGhlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5wcm9wb2dhdGVUb3VjaCA9IGZuO1xyXG4gIH1cclxuICAvLyB0aGUgbWV0aG9kIHNldCBpbiByZWdpc3Rlck9uQ2hhbmdlIHRvIGVtaXQgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcbiAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgcHJpdmF0ZSBwcm9wb2dhdGVUb3VjaCA9ICgpID0+IHsgfTtcclxuXHJcbiAgb25DaGFuZ2UoJGV2ZW50KSB7XHJcbiAgICAvL3RoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQmx1cigpIHtcclxuICAgIHRoaXMucHJvcG9nYXRlVG91Y2goKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cInNob3dIZWFkZXJcIiBjbGFzcz1cImhlYWRlclwiPlxyXG4gIHt7aGVhZGVyTGFiZWx9fVxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnY2xvc2VkJzohaXNBZGRDbGlja2VkT24sICdvcGVuJzogaXNBZGRDbGlja2VkT259XCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWNvbnRlbnRcIiAqbmdJZj1cIiFpc0FkZENsaWNrZWRPbiAmJiAhaXNVcGRhdGVkICYmIGlzRWRpdGFibGVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFkZFwiIChjbGljayk9XCJvbkNsaWNrQWRkKClcIj5cclxuICAgICAgICB7e2RlZmF1bHR2YWx1ZX19IDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZWRpdC1jb250ZW50XCIgKm5nSWY9XCJpc0FkZENsaWNrZWRPblwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJpbnB1dC1sYWJlbFwiIGZvcj1cImlucHV0XCI+e3tuZXdMYWJlbH19PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0IFwiIFtuZ0NsYXNzXT1cInsnaW5wdXQtd2l0aC1hcHBlbmRlZC11bml0Jzogc2hvd1VuaXR9XCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93VW5pdFwiPnt7dW5pdH19PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAoYmx1cik9XCJ1cGRhdGVCbHVyKClcIiBbbmdNb2RlbF09XCJ2YWx1ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIGlkPVwiaW5wdXRcIiAjaW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpbnB1dC1ib3gnOiBzaG93VW5pdH1cIiBbdHlwZV09XCJpbnB1dFR5cGVcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LWFjdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBjYW5jZWxcIiAoY2xpY2spPVwib25DbGlja0NhbmNlbCgpXCIgbWF0LXJhaXNlZC1idXR0b24+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzYXZlXCIgKGNsaWNrKT1cIm9uQ2xpY2tTYXZlKGlucHV0KVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGRhdGVkLWNvbnRlbnQgY2xvc2VkXCIgKm5nSWY9XCIhaXNBZGRDbGlja2VkT24gJiYgaXNVcGRhdGVkXCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1pY29uLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd0VkaXQgJiYgaXNFZGl0YWJsZVwiIChjbGljayk9XCJvbkNsaWNrRWRpdCgpXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGVuY2lsLWFsdFwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGRhdGVkXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGRhdGVkLWxhYmVsXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiaW5wdXRcIj57e25ld0xhYmVsfX08L2xhYmVsPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFzaG93VW5pdFwiPnt7dmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dVbml0XCIgY2xhc3M9XCJ1cGRhdGVkLXZhbHVlXCI+XHJcbiAgICAgICAgICB7e3ZhbHVlIHwgZHluYW1pY1BpcGU6IHVuaXRUeXBlfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class EnumOption {
|
|
2
|
+
value;
|
|
3
|
+
label;
|
|
4
|
+
color;
|
|
5
|
+
description;
|
|
6
|
+
disabled;
|
|
7
|
+
constructor(value, label, color, disabled = false) {
|
|
8
|
+
this.value = value;
|
|
9
|
+
this.label = label;
|
|
10
|
+
this.color = color;
|
|
11
|
+
this.disabled = disabled;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1oZWxwZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2xpYi9lbnVtLWhlbHBlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNyQixLQUFLLENBQVM7SUFDZCxLQUFLLENBQVM7SUFDZCxLQUFLLENBQVM7SUFDZCxXQUFXLENBQVU7SUFDckIsUUFBUSxDQUFXO0lBRW5CLFlBQVksS0FBYSxFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsV0FBb0IsS0FBSztRQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRW51bU9wdGlvbiB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IG51bWJlciwgbGFiZWw6IHN0cmluZywgY29sb3I6IHN0cmluZywgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Directive, Input, HostListener } from '@angular/core';
|
|
2
|
+
import { NgModel } from '@angular/forms';
|
|
3
|
+
import { ValidationError } from './services/validation-message.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
export class FormControlValidationMsgDirectiveForInput {
|
|
7
|
+
elRef;
|
|
8
|
+
control;
|
|
9
|
+
errorMessage;
|
|
10
|
+
errorNgSelectMessage;
|
|
11
|
+
showBoxError = true;
|
|
12
|
+
errorDivId;
|
|
13
|
+
beforeBegin = false;
|
|
14
|
+
afterEnd = false;
|
|
15
|
+
validationError = ValidationError;
|
|
16
|
+
statusChangeSubscription;
|
|
17
|
+
constructor(elRef, control) {
|
|
18
|
+
this.elRef = elRef;
|
|
19
|
+
this.control = control;
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
this.statusChangeSubscription = this.control.statusChanges.subscribe((status) => {
|
|
23
|
+
if (status == 'INVALID') {
|
|
24
|
+
this.showError();
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.removeError();
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
this.control.valueChanges.subscribe({
|
|
31
|
+
next: (response) => {
|
|
32
|
+
if (this.control.errors) {
|
|
33
|
+
this.showError();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
ngOnDestroy() {
|
|
39
|
+
this.statusChangeSubscription.unsubscribe();
|
|
40
|
+
}
|
|
41
|
+
handleBlurEvent(event) {
|
|
42
|
+
if (this.control.errors) {
|
|
43
|
+
this.showError();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.removeError();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
showError() {
|
|
50
|
+
this.removeError();
|
|
51
|
+
const valErrors = this.control.errors;
|
|
52
|
+
const keys = Object.keys(valErrors);
|
|
53
|
+
for (let i = 0; i < keys.length; i++) {
|
|
54
|
+
switch (keys[i]) {
|
|
55
|
+
case 'minlength': {
|
|
56
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors.minlength.requiredLength);
|
|
57
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case 'required': {
|
|
61
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors);
|
|
62
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
63
|
+
this.control.control.setErrors({ 'required': true, 'message': message }, { emitEvent: false });
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'maxlength': {
|
|
67
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors.maxlength.requiredLength);
|
|
68
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
69
|
+
this.control.control.setErrors({ 'maxlength': { 'requiredLength': valErrors.maxlength.requiredLength }, 'message': message }, { emitEvent: false });
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case 'max': {
|
|
73
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors.max.max);
|
|
74
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
75
|
+
this.control.control.setErrors({ 'message': message, 'max': { 'max': valErrors.max.max } }, { emitEvent: false });
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case 'min': {
|
|
79
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors.min.min);
|
|
80
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case 'pattern': {
|
|
84
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors.pattern.requiredPattern);
|
|
85
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
case 'email': {
|
|
89
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors);
|
|
90
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
case 'invalidIntegerNumber': {
|
|
94
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors);
|
|
95
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
case 'invalidPositiveInteger': {
|
|
99
|
+
let message = this.validationError.getRelevantError(keys[i], valErrors);
|
|
100
|
+
this.errorMessage += ` ${this.errorMessage ? "<br>" : ""}${"\u25CF " + message}`;
|
|
101
|
+
this.control.control.setErrors({ 'invalidPositiveInteger': true, 'message': message }, { emitEvent: false });
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (this.showBoxError) {
|
|
107
|
+
const errDiv = '<div style="color:#C34243; width=100%; background-color: #FFDBDB; padding: 1rem; border-radius: .5rem; border: .1rem solid #A80002 ;border-left: .75rem solid #A80002; margin-top:.5rem; font-size: 1.2rem; " id="' + this.errorDivId + '">' + '<h3 style= " font-size: 1.3rem; margin-bottom:.5rem; margin:0; color: #A80002; font-weight: 700; line-height: 1.6rem;">' + 'Please Complete all details' + '</h3>' + this.errorMessage + '</div>';
|
|
108
|
+
if (!this.beforeBegin && !this.afterEnd)
|
|
109
|
+
this.elRef.nativeElement.parentElement.parentElement.parentElement.parentElement.insertAdjacentHTML('afterend', errDiv);
|
|
110
|
+
else if (this.beforeBegin)
|
|
111
|
+
this.elRef.nativeElement.insertAdjacentHTML('beforebegin', errDiv);
|
|
112
|
+
else if (this.afterEnd)
|
|
113
|
+
this.elRef.nativeElement.insertAdjacentHTML('afterend', errDiv);
|
|
114
|
+
else
|
|
115
|
+
throw Error("Adjustment not specified ");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
removeError() {
|
|
119
|
+
this.errorMessage = "";
|
|
120
|
+
const errorElement = document.getElementById(this.errorDivId);
|
|
121
|
+
if (errorElement) {
|
|
122
|
+
errorElement.remove();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormControlValidationMsgDirectiveForInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
|
|
126
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FormControlValidationMsgDirectiveForInput, selector: "[appFormControlValidationMsgForInputs]", inputs: { showBoxError: "showBoxError", errorDivId: "errorDivId", beforeBegin: "beforeBegin", afterEnd: "afterEnd" }, host: { listeners: { "blur": "handleBlurEvent($event)" } }, providers: [NgModel], ngImport: i0 });
|
|
127
|
+
}
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormControlValidationMsgDirectiveForInput, decorators: [{
|
|
129
|
+
type: Directive,
|
|
130
|
+
args: [{
|
|
131
|
+
selector: '[appFormControlValidationMsgForInputs]',
|
|
132
|
+
providers: [NgModel],
|
|
133
|
+
}]
|
|
134
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgControl }]; }, propDecorators: { showBoxError: [{
|
|
135
|
+
type: Input,
|
|
136
|
+
args: ['showBoxError']
|
|
137
|
+
}], errorDivId: [{
|
|
138
|
+
type: Input,
|
|
139
|
+
args: ['errorDivId']
|
|
140
|
+
}], beforeBegin: [{
|
|
141
|
+
type: Input,
|
|
142
|
+
args: ['beforeBegin']
|
|
143
|
+
}], afterEnd: [{
|
|
144
|
+
type: Input,
|
|
145
|
+
args: ['afterEnd']
|
|
146
|
+
}], handleBlurEvent: [{
|
|
147
|
+
type: HostListener,
|
|
148
|
+
args: ['blur', ["$event"]]
|
|
149
|
+
}] } });
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvZm9ybWNvbnRyb2wtdmFsaWRhdGlvbi1tc2cuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBdUQsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFhLE9BQU8sRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQU14RSxNQUFNLE9BQU8seUNBQXlDO0lBVzFDO0lBQ0E7SUFYVCxZQUFZLENBQU07SUFDbkIsb0JBQW9CLENBQU07SUFDSCxZQUFZLEdBQVUsSUFBSSxDQUFDO0lBQzdCLFVBQVUsQ0FBTTtJQUNmLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFDaEMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUM3QyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ2xDLHdCQUF3QixDQUFlO0lBRXZDLFlBQ1UsS0FBaUIsRUFDakIsT0FBa0I7UUFEbEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFXO0lBQ3hCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDbEUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNULElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBRWxCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMs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QztvQkFDVCxRQUFRLEVBQUUsd0NBQXdDO29CQUNsRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ3JCO3lIQUl3QixZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ0EsVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNHLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDRCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBa0NqQixlQUFlO3NCQURkLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBPbkluaXQsIE9uRGVzdHJveSwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBOZ01vZGVsLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi9zZXJ2aWNlcy92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dGb3JJbnB1dHNdJyxcclxuICBwcm92aWRlcnM6IFtOZ01vZGVsXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sVmFsaWRhdGlvbk1zZ0RpcmVjdGl2ZUZvcklucHV0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICBlcnJvck1lc3NhZ2U6IGFueTtcclxuICBlcnJvck5nU2VsZWN0TWVzc2FnZTogYW55O1xyXG4gIEBJbnB1dCgnc2hvd0JveEVycm9yJykgc2hvd0JveEVycm9yOiBib29sZWFuPXRydWU7XHJcbiAgQElucHV0KCdlcnJvckRpdklkJykgZXJyb3JEaXZJZDogYW55O1xyXG4gIEBJbnB1dCgnYmVmb3JlQmVnaW4nKSBiZWZvcmVCZWdpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnYWZ0ZXJFbmQnKSBhZnRlckVuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25FcnJvciA9IFZhbGlkYXRpb25FcnJvcjtcclxuICBzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKHN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ0lOVkFMSUQnKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcigpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmVycm9ycykge1xyXG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFtcIiRldmVudFwiXSlcclxuICBoYW5kbGVCbHVyRXZlbnQoZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgc2hvd0Vycm9yKCkge1xyXG4gICAgdGhpcy5yZW1vdmVFcnJvcigpO1xyXG4gICAgY29uc3QgdmFsRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gdGhpcy5jb250cm9sLmVycm9ycztcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWxFcnJvcnMpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHN3aXRjaCAoa2V5c1tpXSkge1xyXG4gICAgICAgIGNhc2UgJ21pbmxlbmd0aCc6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/IFwiPGJyPlwiIDogXCJcIn0ke1wiXFx1MjVDRiBcIiArIG1lc3NhZ2V9YDtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVkJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoeyAncmVxdWlyZWQnOiB0cnVlLCAnbWVzc2FnZSc6IG1lc3NhZ2UgfSx7IGVtaXRFdmVudDpmYWxzZX0pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGgpO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gXCI8YnI+XCIgOiBcIlwifSR7XCJcXHUyNUNGIFwiICsgbWVzc2FnZX1gO1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0RXJyb3JzKHsgJ21heGxlbmd0aCc6IHsgJ3JlcXVpcmVkTGVuZ3RoJzogdmFsRXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aCB9LCAnbWVzc2FnZSc6IG1lc3NhZ2V9LCB7IGVtaXRFdmVudDogZmFsc2UgfSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdtYXgnOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzLm1heC5tYXhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoeyAnbWVzc2FnZSc6IG1lc3NhZ2UsICdtYXgnOiB7ICdtYXgnOiB2YWxFcnJvcnMubWF4Lm1heCB9IH0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ21pbic6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMubWluLm1pblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/IFwiPGJyPlwiIDogXCJcIn0ke1wiXFx1MjVDRiBcIiArIG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSAncGF0dGVybic6IHtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy52YWxpZGF0aW9uRXJyb3IuZ2V0UmVsZXZhbnRFcnJvcihrZXlzW2ldLCB2YWxFcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm4pO1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgKz0gYCAke3RoaXMuZXJyb3JNZXNzYWdlID8gXCI8YnI+XCIgOiBcIlwifSR7XCJcXHUyNUNGIFwiICsgbWVzc2FnZX1gO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ2VtYWlsJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnaW52YWxpZEludGVnZXJOdW1iZXInOiB7XHJcbiAgICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbkVycm9yLmdldFJlbGV2YW50RXJyb3Ioa2V5c1tpXSwgdmFsRXJyb3JzKTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlICs9IGAgJHt0aGlzLmVycm9yTWVzc2FnZSA/IFwiPGJyPlwiIDogXCJcIn0ke1wiXFx1MjVDRiBcIiArIG1lc3NhZ2V9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdpbnZhbGlkUG9zaXRpdmVJbnRlZ2VyJzoge1xyXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLnZhbGlkYXRpb25FcnJvci5nZXRSZWxldmFudEVycm9yKGtleXNbaV0sIHZhbEVycm9ycyk7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSArPSBgICR7dGhpcy5lcnJvck1lc3NhZ2UgPyBcIjxicj5cIiA6IFwiXCJ9JHtcIlxcdTI1Q0YgXCIgKyBtZXNzYWdlfWA7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoeyAnaW52YWxpZFBvc2l0aXZlSW50ZWdlcic6IHRydWUsICdtZXNzYWdlJzogbWVzc2FnZSB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNob3dCb3hFcnJvcil7XHJcbiAgICBjb25zdCBlcnJEaXYgPSAnPGRpdiBzdHlsZT1cImNvbG9yOiNDMzQyNDM7IHdpZHRoPTEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNGRkRCREI7IHBhZGRpbmc6IDFyZW07IGJvcmRlci1yYWRpdXM6IC41cmVtOyBib3JkZXI6IC4xcmVtIHNvbGlkICNBODAwMDIgO2JvcmRlci1sZWZ0OiAuNzVyZW0gc29saWQgI0E4MDAwMjsgIG1hcmdpbi10b3A6LjVyZW07ICBmb250LXNpemU6IDEuMnJlbTsgXCIgaWQ9XCInICsgdGhpcy5lcnJvckRpdklkICsgJ1wiPicgKyAnPGgzICAgc3R5bGU9IFwiIGZvbnQtc2l6ZTogMS4zcmVtOyAgbWFyZ2luLWJvdHRvbTouNXJlbTsgbWFyZ2luOjA7ICBjb2xvcjogI0E4MDAwMjsgZm9udC13ZWlnaHQ6IDcwMDsgbGluZS1oZWlnaHQ6IDEuNnJlbTtcIj4nICsgJ1BsZWFzZSBDb21wbGV0ZSBhbGwgZGV0YWlscycgKyAnPC9oMz4nICsgdGhpcy5lcnJvck1lc3NhZ2UgKyAnPC9kaXY+JztcclxuICAgIGlmICghdGhpcy5iZWZvcmVCZWdpbiAmJiAhdGhpcy5hZnRlckVuZClcclxuICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGVyckRpdik7XHJcbiAgICBlbHNlIGlmICh0aGlzLmJlZm9yZUJlZ2luKVxyXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmViZWdpbicsIGVyckRpdik7XHJcbiAgICBlbHNlIGlmICh0aGlzLmFmdGVyRW5kKVxyXG4gICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIGVyckRpdik7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRocm93IEVycm9yKFwiQWRqdXN0bWVudCBub3Qgc3BlY2lmaWVkIFwiKTtcclxuICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVtb3ZlRXJyb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IFwiXCI7XHJcbiAgICBjb25zdCBlcnJvckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmVycm9yRGl2SWQpO1xyXG4gICAgaWYgKGVycm9yRWxlbWVudCkge1xyXG4gICAgICBlcnJvckVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { DecimalPipe } from '@angular/common';
|
|
2
|
+
import { Directive, HostListener } from '@angular/core';
|
|
3
|
+
import { NgModel } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
export class CustomDecimalPointTwoDigitsDirective {
|
|
7
|
+
control;
|
|
8
|
+
valueSubscription;
|
|
9
|
+
constructor(control) {
|
|
10
|
+
this.control = control;
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
if (this.control.value) {
|
|
14
|
+
this.control.valueAccessor.writeValue(this.transformToCommasAndPoint(this.control.value));
|
|
15
|
+
}
|
|
16
|
+
this.valueSubscription = this.control.control.valueChanges.subscribe(value => {
|
|
17
|
+
if (value.length > 0) {
|
|
18
|
+
let removeCommas = this.control.value.replace(/,/g, '');
|
|
19
|
+
this.control.control.setValue(removeCommas, { emitEvent: false, emitModelToViewChange: false });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.control.control.setValue(null, { emitEvent: false, emitModelToViewChange: false });
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
onEvent($event) {
|
|
27
|
+
if (this.control.value) {
|
|
28
|
+
const item = $event.target;
|
|
29
|
+
item.value = this.transformToCommasAndPoint(this.control.value);
|
|
30
|
+
let removeCommas = this.control.value.replace(/,/g, '');
|
|
31
|
+
this.control.control.setValue(removeCommas, { emitEvent: false, emitModelToViewChange: false });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
transformToCommasAndPoint(value) {
|
|
35
|
+
if (value.indexOf(".") == -1) {
|
|
36
|
+
value = value.toString().replace(/\D/g, "")
|
|
37
|
+
.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
let val = value.split(".");
|
|
42
|
+
let valueBeforeDecimal = val[0];
|
|
43
|
+
let valueAfterDecimal = val[1];
|
|
44
|
+
valueBeforeDecimal = valueBeforeDecimal.toString().replace(/\D/g, "")
|
|
45
|
+
.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
46
|
+
let newValue = `${valueBeforeDecimal}.${valueAfterDecimal}`;
|
|
47
|
+
return newValue;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomDecimalPointTwoDigitsDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive });
|
|
51
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: CustomDecimalPointTwoDigitsDirective, selector: "[customDecimalPointTwoDigits]", host: { listeners: { "input": "onEvent($event)" } }, providers: [NgModel, DecimalPipe], ngImport: i0 });
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomDecimalPointTwoDigitsDirective, decorators: [{
|
|
54
|
+
type: Directive,
|
|
55
|
+
args: [{
|
|
56
|
+
selector: '[customDecimalPointTwoDigits]',
|
|
57
|
+
providers: [NgModel, DecimalPipe],
|
|
58
|
+
}]
|
|
59
|
+
}], ctorParameters: function () { return [{ type: i1.NgControl }]; }, propDecorators: { onEvent: [{
|
|
60
|
+
type: HostListener,
|
|
61
|
+
args: ["input", ["$event"]]
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRlY2ltYWwtcG9pbnQtdHdvLWRpZ2l0cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2xpYi9nZW5lcmFsLWlucHV0LXJlbmRlcmVyL2N1c3RvbS1kZWNpbWFsLXBvaW50LXR3by1kaWdpdHMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQWEsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU9wRCxNQUFNLE9BQU8sb0NBQW9DO0lBR3JDO0lBRlYsaUJBQWlCLENBQU07SUFDdkIsWUFDVSxPQUFrQjtRQUFsQixZQUFPLEdBQVAsT0FBTyxDQUFXO0lBQ3hCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMzRjtRQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUNsRSxLQUFLLENBQUMsRUFBRTtZQUNOLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDakc7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUN6RjtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVrQyxPQUFPLENBQUMsTUFBTTtRQUMvQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDakc7SUFDSCxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBSztRQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztpQkFDeEMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sS0FBSyxDQUFBO1NBQ2I7YUFBTTtZQUNMLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0Isa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7aUJBQ2xFLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN6QyxJQUFJLFFBQVEsR0FBRyxHQUFHLGtCQUFrQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDNUQsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDO3dHQTlDVSxvQ0FBb0M7NEZBQXBDLG9DQUFvQyw2R0FGcEMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDOzs0RkFFdEIsb0NBQW9DO2tCQUpoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7aUJBQ2xDO2dHQXdCb0MsT0FBTztzQkFBekMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2N1c3RvbURlY2ltYWxQb2ludFR3b0RpZ2l0c10nLFxyXG4gIHByb3ZpZGVyczogW05nTW9kZWwsIERlY2ltYWxQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbURlY2ltYWxQb2ludFR3b0RpZ2l0c0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdmFsdWVTdWJzY3JpcHRpb246IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29udHJvbDogTmdDb250cm9sLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHRoaXMudHJhbnNmb3JtVG9Db21tYXNBbmRQb2ludCh0aGlzLmNvbnRyb2wudmFsdWUpKTtcclxuICAgIH1cclxuICAgIHRoaXMudmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2wuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICB2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCByZW1vdmVDb21tYXMgPSB0aGlzLmNvbnRyb2wudmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShyZW1vdmVDb21tYXMsIHsgZW1pdEV2ZW50OiBmYWxzZSwgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UsIGVtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImlucHV0XCIsIFtcIiRldmVudFwiXSkgb25FdmVudCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgY29uc3QgaXRlbSA9ICRldmVudC50YXJnZXQ7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLnRyYW5zZm9ybVRvQ29tbWFzQW5kUG9pbnQodGhpcy5jb250cm9sLnZhbHVlKTtcclxuICAgICAgbGV0IHJlbW92ZUNvbW1hcyA9IHRoaXMuY29udHJvbC52YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcclxuICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0VmFsdWUocmVtb3ZlQ29tbWFzLCB7IGVtaXRFdmVudDogZmFsc2UsIGVtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1Ub0NvbW1hc0FuZFBvaW50KHZhbHVlKSB7XHJcbiAgICBpZiAodmFsdWUuaW5kZXhPZihcIi5cIikgPT0gLTEpIHtcclxuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1xcRC9nLCBcIlwiKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIik7XHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHZhbCA9IHZhbHVlLnNwbGl0KFwiLlwiKTtcclxuICAgICAgbGV0IHZhbHVlQmVmb3JlRGVjaW1hbCA9IHZhbFswXTtcclxuICAgICAgbGV0IHZhbHVlQWZ0ZXJEZWNpbWFsID0gdmFsWzFdO1xyXG4gICAgICB2YWx1ZUJlZm9yZURlY2ltYWwgPSB2YWx1ZUJlZm9yZURlY2ltYWwudG9TdHJpbmcoKS5yZXBsYWNlKC9cXEQvZywgXCJcIilcclxuICAgICAgICAucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpO1xyXG4gICAgICBsZXQgbmV3VmFsdWUgPSBgJHt2YWx1ZUJlZm9yZURlY2ltYWx9LiR7dmFsdWVBZnRlckRlY2ltYWx9YDtcclxuICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { DecimalPipe } from '@angular/common';
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "./custom-decimal-point-two-digits.directive";
|
|
7
|
+
import * as i4 from "../show-table-errors/show-table-errors.component";
|
|
8
|
+
import * as i5 from "../formcontrol-validation-msg.directive";
|
|
9
|
+
export class GeneralInputRendererComponent {
|
|
10
|
+
params;
|
|
11
|
+
key;
|
|
12
|
+
value;
|
|
13
|
+
formGroup;
|
|
14
|
+
formControlName;
|
|
15
|
+
constructor() { }
|
|
16
|
+
agInit(params) {
|
|
17
|
+
this.params = params;
|
|
18
|
+
this.formGroup = this.params.context.formGroup.get('entries').at(params.node.rowIndex);
|
|
19
|
+
this.key = params.context.createKey(params.columnApi, params.column);
|
|
20
|
+
if (params.isTypeNumber) {
|
|
21
|
+
if (params.value) {
|
|
22
|
+
this.value = new DecimalPipe("en-US").transform(+params.value, "1.0-0");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.value = params.value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onCellDataChanged($event) {
|
|
30
|
+
let value = $event.target.value;
|
|
31
|
+
let newAndOldValue = {
|
|
32
|
+
newValue: value,
|
|
33
|
+
oldValue: this.params?.value
|
|
34
|
+
};
|
|
35
|
+
if (this.params.allowUpdateRowData) {
|
|
36
|
+
this.params.onChange(newAndOldValue);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
refresh(params) {
|
|
40
|
+
this.formGroup = this.params.context.formGroup.get('entries').at(params.node.rowIndex);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeneralInputRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GeneralInputRendererComponent, selector: "general-input-renderer-test", ngImport: i0, template: "<div *ngIf=\"formGroup\" [formGroup]=\"formGroup\">\r\n <div *ngIf=\"params.isTypeText\">\r\n <input [placeholder]=\"params.fieldLabel\"appFormControlValidationMsgForInputs [showBoxError]=\"false\"\r\n [errorDivId]=\"'text'\" \r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\"\r\n style=\"margin-left:-20px ;\">{{params.symbol}}</span>\r\n <show-table-errors\r\n *ngIf=\"formGroup.get(this.key).errors && formGroup.get(this.key) && formGroup.get(this.key).touched\"\r\n [message]=\"formGroup.get(this.key).errors.message\"></show-table-errors>\r\n </div>\r\n <div *ngIf=\"params.isTypeNumber\">\r\n <input customDecimalPointTwoDigits appFormControlValidationMsgForInputs [showBoxError]=\"false\"\r\n [errorDivId]=\"'number'\" [placeholder]=\"params.fieldLabel\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\"\r\n style=\"margin-left:-20px ;\">{{params.symbol}}</span>\r\n <show-table-errors\r\n *ngIf=\"formGroup.get(this.key).errors && formGroup.get(this.key).touched\"\r\n [message]=\"formGroup.get(this.key).errors.message\"></show-table-errors>\r\n </div>\r\n <div *ngIf=\"params.isTypeIntegerNumber\">\r\n <input appFormControlValidationMsgForInputs [showBoxError]=\"false\"type=\"number\"\r\n [errorDivId]=\"'integer'\" [placeholder]=\"params.fieldLabel\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\"\r\n style=\"margin-left:-20px ;\">{{params.symbol}}</span>\r\n <show-table-errors\r\n *ngIf=\"formGroup.get(this.key).errors && formGroup.get(this.key).touched\"\r\n [message]=\"formGroup.get(this.key).errors.message\"></show-table-errors>\r\n </div>\r\n <div *ngIf=\"params.isTypeTextArea\">\r\n <textarea class=\"text-area\" (change)=\"onCellDataChanged($event)\"\r\n [placeholder]=\"params.fieldLabel\" class=\"main-height\"\r\n [formControlName]=\"key\"></textarea>\r\n </div>\r\n</div>", styles: ["textarea{padding-left:.5rem;border-radius:.3rem;height:3.5rem;font-size:1.2rem;border:solid #BEBEBE .1rem}textarea:focus{outline:none}textarea::placeholder{color:#676767}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.CustomDecimalPointTwoDigitsDirective, selector: "[customDecimalPointTwoDigits]" }, { kind: "component", type: i4.ShowTableErrorsComponent, selector: "show-table-errors", inputs: ["message"] }, { kind: "directive", type: i5.FormControlValidationMsgDirectiveForInput, selector: "[appFormControlValidationMsgForInputs]", inputs: ["showBoxError", "errorDivId", "beforeBegin", "afterEnd"] }] });
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GeneralInputRendererComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{ selector: 'general-input-renderer-test', template: "<div *ngIf=\"formGroup\" [formGroup]=\"formGroup\">\r\n <div *ngIf=\"params.isTypeText\">\r\n <input [placeholder]=\"params.fieldLabel\"appFormControlValidationMsgForInputs [showBoxError]=\"false\"\r\n [errorDivId]=\"'text'\" \r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\"\r\n style=\"margin-left:-20px ;\">{{params.symbol}}</span>\r\n <show-table-errors\r\n *ngIf=\"formGroup.get(this.key).errors && formGroup.get(this.key) && formGroup.get(this.key).touched\"\r\n [message]=\"formGroup.get(this.key).errors.message\"></show-table-errors>\r\n </div>\r\n <div *ngIf=\"params.isTypeNumber\">\r\n <input customDecimalPointTwoDigits appFormControlValidationMsgForInputs [showBoxError]=\"false\"\r\n [errorDivId]=\"'number'\" [placeholder]=\"params.fieldLabel\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\"\r\n style=\"margin-left:-20px ;\">{{params.symbol}}</span>\r\n <show-table-errors\r\n *ngIf=\"formGroup.get(this.key).errors && formGroup.get(this.key).touched\"\r\n [message]=\"formGroup.get(this.key).errors.message\"></show-table-errors>\r\n </div>\r\n <div *ngIf=\"params.isTypeIntegerNumber\">\r\n <input appFormControlValidationMsgForInputs [showBoxError]=\"false\"type=\"number\"\r\n [errorDivId]=\"'integer'\" [placeholder]=\"params.fieldLabel\"\r\n (change)=\"onCellDataChanged($event)\" [formControlName]=\"key\" />\r\n <span *ngIf=\"params.showSymbol\"\r\n style=\"margin-left:-20px ;\">{{params.symbol}}</span>\r\n <show-table-errors\r\n *ngIf=\"formGroup.get(this.key).errors && formGroup.get(this.key).touched\"\r\n [message]=\"formGroup.get(this.key).errors.message\"></show-table-errors>\r\n </div>\r\n <div *ngIf=\"params.isTypeTextArea\">\r\n <textarea class=\"text-area\" (change)=\"onCellDataChanged($event)\"\r\n [placeholder]=\"params.fieldLabel\" class=\"main-height\"\r\n [formControlName]=\"key\"></textarea>\r\n </div>\r\n</div>", styles: ["textarea{padding-left:.5rem;border-radius:.3rem;height:3.5rem;font-size:1.2rem;border:solid #BEBEBE .1rem}textarea:focus{outline:none}textarea::placeholder{color:#676767}\n"] }]
|
|
49
|
+
}], ctorParameters: function () { return []; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1pbnB1dC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnB1dHMvc3JjL2xpYi9nZW5lcmFsLWlucHV0LXJlbmRlcmVyL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvZ2VuZXJhbC1pbnB1dC1yZW5kZXJlci9nZW5lcmFsLWlucHV0LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBUzFDLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsTUFBTSxDQUFNO0lBQ1osR0FBRyxDQUFDO0lBQ0osS0FBSyxDQUFDO0lBQ04sU0FBUyxDQUFNO0lBQ2YsZUFBZSxDQUFDO0lBRWhCLGdCQUFnQixDQUFDO0lBRWpCLE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQWMsQ0FBQztRQUNwRyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtZQUN2QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUM3QyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQ2IsT0FBTyxDQUNSLENBQUM7YUFDSDtTQUNGO2FBQ0k7WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBTTtRQUN0QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLGNBQWMsR0FBRztZQUNuQixRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUs7U0FDN0IsQ0FBQTtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsTUFBVztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO3dHQXhDVSw2QkFBNkI7NEZBQTdCLDZCQUE2QixtRUNWMUMscXZFQW9DTTs7NEZEMUJPLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNpbWFsUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dlbmVyYWwtaW5wdXQtcmVuZGVyZXItdGVzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJhbElucHV0UmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAge1xyXG4gIHBhcmFtczogYW55O1xyXG4gIGtleTtcclxuICB2YWx1ZTtcclxuICBmb3JtR3JvdXA6IGFueTtcclxuICBmb3JtQ29udHJvbE5hbWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGFnSW5pdChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMucGFyYW1zLmNvbnRleHQuZm9ybUdyb3VwLmdldCgnZW50cmllcycpLmF0KHBhcmFtcy5ub2RlLnJvd0luZGV4KSBhcyBGb3JtR3JvdXA7XHJcbiAgICB0aGlzLmtleSA9IHBhcmFtcy5jb250ZXh0LmNyZWF0ZUtleShwYXJhbXMuY29sdW1uQXBpLCBwYXJhbXMuY29sdW1uKTtcclxuICAgIGlmIChwYXJhbXMuaXNUeXBlTnVtYmVyKSB7XHJcbiAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERlY2ltYWxQaXBlKFwiZW4tVVNcIikudHJhbnNmb3JtKFxyXG4gICAgICAgICAgK3BhcmFtcy52YWx1ZSxcclxuICAgICAgICAgIFwiMS4wLTBcIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gcGFyYW1zLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DZWxsRGF0YUNoYW5nZWQoJGV2ZW50KSB7XHJcbiAgICBsZXQgdmFsdWUgPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgbGV0IG5ld0FuZE9sZFZhbHVlID0ge1xyXG4gICAgICBuZXdWYWx1ZTogdmFsdWUsXHJcbiAgICAgIG9sZFZhbHVlOiB0aGlzLnBhcmFtcz8udmFsdWVcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBhcmFtcy5hbGxvd1VwZGF0ZVJvd0RhdGEpIHtcclxuICAgICAgdGhpcy5wYXJhbXMub25DaGFuZ2UobmV3QW5kT2xkVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChwYXJhbXM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLnBhcmFtcy5jb250ZXh0LmZvcm1Hcm91cC5nZXQoJ2VudHJpZXMnKS5hdChwYXJhbXMubm9kZS5yb3dJbmRleCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJwYXJhbXMuaXNUeXBlVGV4dFwiPlxyXG4gICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwicGFyYW1zLmZpZWxkTGFiZWxcImFwcEZvcm1Db250cm9sVmFsaWRhdGlvbk1zZ0ZvcklucHV0cyBbc2hvd0JveEVycm9yXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Vycm9yRGl2SWRdPVwiJ3RleHQnXCIgXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DZWxsRGF0YUNoYW5nZWQoJGV2ZW50KVwiIFtmb3JtQ29udHJvbE5hbWVdPVwia2V5XCIgLz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInBhcmFtcy5zaG93U3ltYm9sXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDotMjBweCA7XCI+e3twYXJhbXMuc3ltYm9sfX08L3NwYW4+XHJcbiAgICAgICAgPHNob3ctdGFibGUtZXJyb3JzXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldCh0aGlzLmtleSkuZXJyb3JzICYmIGZvcm1Hcm91cC5nZXQodGhpcy5rZXkpICYmIGZvcm1Hcm91cC5nZXQodGhpcy5rZXkpLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICBbbWVzc2FnZV09XCJmb3JtR3JvdXAuZ2V0KHRoaXMua2V5KS5lcnJvcnMubWVzc2FnZVwiPjwvc2hvdy10YWJsZS1lcnJvcnM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJwYXJhbXMuaXNUeXBlTnVtYmVyXCI+XHJcbiAgICAgICAgPGlucHV0IGN1c3RvbURlY2ltYWxQb2ludFR3b0RpZ2l0cyAgYXBwRm9ybUNvbnRyb2xWYWxpZGF0aW9uTXNnRm9ySW5wdXRzIFtzaG93Qm94RXJyb3JdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbZXJyb3JEaXZJZF09XCInbnVtYmVyJ1wiIFtwbGFjZWhvbGRlcl09XCJwYXJhbXMuZmllbGRMYWJlbFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DZWxsRGF0YUNoYW5nZWQoJGV2ZW50KVwiIFtmb3JtQ29udHJvbE5hbWVdPVwia2V5XCIgLz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInBhcmFtcy5zaG93U3ltYm9sXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDotMjBweCA7XCI+e3twYXJhbXMuc3ltYm9sfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c2hvdy10YWJsZS1lcnJvcnNcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm1Hcm91cC5nZXQodGhpcy5rZXkpLmVycm9ycyAmJiBmb3JtR3JvdXAuZ2V0KHRoaXMua2V5KS50b3VjaGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJmb3JtR3JvdXAuZ2V0KHRoaXMua2V5KS5lcnJvcnMubWVzc2FnZVwiPjwvc2hvdy10YWJsZS1lcnJvcnM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJwYXJhbXMuaXNUeXBlSW50ZWdlck51bWJlclwiPlxyXG4gICAgICAgIDxpbnB1dCBhcHBGb3JtQ29udHJvbFZhbGlkYXRpb25Nc2dGb3JJbnB1dHMgW3Nob3dCb3hFcnJvcl09XCJmYWxzZVwidHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIFtlcnJvckRpdklkXT1cIidpbnRlZ2VyJ1wiIFtwbGFjZWhvbGRlcl09XCJwYXJhbXMuZmllbGRMYWJlbFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DZWxsRGF0YUNoYW5nZWQoJGV2ZW50KVwiIFtmb3JtQ29udHJvbE5hbWVdPVwia2V5XCIgLz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInBhcmFtcy5zaG93U3ltYm9sXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDotMjBweCA7XCI+e3twYXJhbXMuc3ltYm9sfX08L3NwYW4+XHJcbiAgICAgICAgPHNob3ctdGFibGUtZXJyb3JzXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldCh0aGlzLmtleSkuZXJyb3JzICYmIGZvcm1Hcm91cC5nZXQodGhpcy5rZXkpLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICBbbWVzc2FnZV09XCJmb3JtR3JvdXAuZ2V0KHRoaXMua2V5KS5lcnJvcnMubWVzc2FnZVwiPjwvc2hvdy10YWJsZS1lcnJvcnM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJwYXJhbXMuaXNUeXBlVGV4dEFyZWFcIj5cclxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJ0ZXh0LWFyZWFcIiAoY2hhbmdlKT1cIm9uQ2VsbERhdGFDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGFyYW1zLmZpZWxkTGFiZWxcIiBjbGFzcz1cIm1haW4taGVpZ2h0XCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJrZXlcIj48L3RleHRhcmVhPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|