tin-spa 10.0.0 → 14.3.11
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/README.md +24 -24
- package/esm2020/lib/classes/Classes.mjs +265 -0
- package/esm2020/lib/classes/TinCore.mjs +401 -0
- package/esm2020/lib/components/accounts/accountDialog.component.mjs +56 -0
- package/esm2020/lib/components/accounts/accounts.component.mjs +70 -0
- package/esm2020/lib/components/activity/activity.component.mjs +24 -0
- package/esm2020/lib/components/alert/alert.component.mjs +29 -0
- package/esm2020/lib/components/attach/attach.component.mjs +86 -0
- package/esm2020/lib/components/bug/bug.component.mjs +14 -0
- package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
- package/esm2020/lib/components/check/check.component.mjs +67 -0
- package/esm2020/lib/components/chips/chips.component.mjs +58 -0
- package/esm2020/lib/components/create-account/create-account.component.mjs +109 -0
- package/esm2020/lib/components/customers/customers.component.mjs +60 -0
- package/esm2020/lib/components/date/date.component.mjs +101 -0
- package/esm2020/lib/components/datetime/datetime.component.mjs +52 -0
- package/esm2020/lib/components/departments/departments.component.mjs +24 -0
- package/esm2020/lib/components/employees/employees.component.mjs +21 -0
- package/esm2020/lib/components/filter/filter.component.mjs +54 -0
- package/esm2020/lib/components/form/form.component.mjs +191 -0
- package/esm2020/lib/components/grades/grades.component.mjs +14 -0
- package/esm2020/lib/components/inventory/inventory.component.mjs +99 -0
- package/esm2020/lib/components/inventory/quantityDialog.component.mjs +53 -0
- package/esm2020/lib/components/invitations/invitations.component.mjs +14 -0
- package/esm2020/lib/components/invitations-table/invitations-table.component.mjs +70 -0
- package/esm2020/lib/components/label/label.component.mjs +25 -0
- package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +68 -0
- package/esm2020/lib/components/loader/loader.component.mjs +25 -0
- package/esm2020/lib/components/login/login.component.mjs +127 -0
- package/esm2020/lib/components/logs/logs.component.mjs +37 -0
- package/esm2020/lib/components/membership/membership.component.mjs +48 -0
- package/esm2020/lib/components/message/messageDialog.component.mjs +33 -0
- package/esm2020/lib/components/money/currency-input-mask.directive.mjs +185 -0
- package/esm2020/lib/components/money/currency-input-mask.module.mjs +28 -0
- package/esm2020/lib/components/money/money.component.mjs +120 -0
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +84 -0
- package/esm2020/lib/components/notifications/notifications.component.mjs +14 -0
- package/esm2020/lib/components/number/number.component.mjs +116 -0
- package/esm2020/lib/components/option/option.component.mjs +67 -0
- package/esm2020/lib/components/plans/plans.component.mjs +47 -0
- package/esm2020/lib/components/positions/positions.component.mjs +21 -0
- package/esm2020/lib/components/profile/profile.component.mjs +92 -0
- package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
- package/esm2020/lib/components/roles/addRoleDialog.component.mjs +60 -0
- package/esm2020/lib/components/roles/roles.component.mjs +91 -0
- package/esm2020/lib/components/search/search.component.mjs +31 -0
- package/esm2020/lib/components/select/select.component.mjs +138 -0
- package/esm2020/lib/components/settings/settings.component.mjs +62 -0
- package/esm2020/lib/components/signup/signup.component.mjs +50 -0
- package/esm2020/lib/components/steps/steps.component.mjs +90 -0
- package/esm2020/lib/components/suppliers/suppliers.component.mjs +50 -0
- package/esm2020/lib/components/table/detailsDialog.component.mjs +232 -0
- package/esm2020/lib/components/table/table.component.mjs +406 -0
- package/esm2020/lib/components/table-action/table-action.component.mjs +46 -0
- package/esm2020/lib/components/table-header/table-header.component.mjs +76 -0
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +226 -0
- package/esm2020/lib/components/table-internal/table-internal.component.mjs +406 -0
- package/esm2020/lib/components/table-row/table-row.component.mjs +58 -0
- package/esm2020/lib/components/tasks/tasks.component.mjs +86 -0
- package/esm2020/lib/components/tenant-settings/inviteDialog.component.mjs +60 -0
- package/esm2020/lib/components/tenant-settings/tenant-settings.component.mjs +155 -0
- package/esm2020/lib/components/tenants/tenants.component.mjs +47 -0
- package/esm2020/lib/components/text/text.component.mjs +181 -0
- package/esm2020/lib/components/tiles/tiles.component.mjs +81 -0
- package/esm2020/lib/components/tin-spa.component.mjs +19 -0
- package/esm2020/lib/components/transactions/transactDialog.component.mjs +80 -0
- package/esm2020/lib/components/transactions/transactions.component.mjs +101 -0
- package/esm2020/lib/components/users/users.component.mjs +118 -0
- package/esm2020/lib/components/viewer/viewer.component.mjs +79 -0
- package/esm2020/lib/components/viewer/viewerDialog.component.mjs +88 -0
- package/esm2020/lib/components/welcome/welcome.component.mjs +86 -0
- package/esm2020/lib/modules/admin/admin-routing.module.mjs +61 -0
- package/esm2020/lib/modules/admin/admin.module.mjs +26 -0
- package/esm2020/lib/modules/index/index-routing.module.mjs +27 -0
- package/esm2020/lib/modules/index/index.module.mjs +26 -0
- package/esm2020/lib/modules/spa-admin.module.mjs +71 -0
- package/esm2020/lib/modules/spa-index.module.mjs +54 -0
- package/esm2020/lib/modules/spa-mat.module.mjs +84 -0
- package/esm2020/lib/modules/spa-user.module.mjs +47 -0
- package/esm2020/lib/modules/user/user-routing.module.mjs +23 -0
- package/esm2020/lib/modules/user/user.module.mjs +26 -0
- package/esm2020/lib/pipes/camelToWords.pipe.mjs +17 -0
- package/esm2020/lib/services/auth.service.mjs +174 -0
- package/esm2020/lib/services/button.service.mjs +102 -0
- package/esm2020/lib/services/condition.service.mjs +32 -0
- package/esm2020/lib/services/datalib.service.mjs +387 -0
- package/esm2020/lib/services/dialog.service.mjs +81 -0
- package/esm2020/lib/services/export.service.mjs +16 -0
- package/esm2020/lib/services/http.service.mjs +79 -0
- package/esm2020/lib/services/loader-interceptor.service.mjs +86 -0
- package/esm2020/lib/services/loader.service.mjs +17 -0
- package/esm2020/lib/services/log.service.mjs +77 -0
- package/esm2020/lib/services/message.service.mjs +59 -0
- package/esm2020/lib/services/storage.service.mjs +34 -0
- package/esm2020/lib/services/table-config.service.mjs +30 -0
- package/esm2020/lib/services/tin-spa.service.mjs +14 -0
- package/esm2020/lib/tin-spa.module.mjs +183 -0
- package/esm2020/public-api.mjs +80 -0
- package/esm2020/tin-spa.mjs +5 -0
- package/fesm2015/tin-spa.mjs +7454 -0
- package/fesm2015/tin-spa.mjs.map +1 -0
- package/fesm2020/tin-spa.mjs +7410 -0
- package/fesm2020/tin-spa.mjs.map +1 -0
- package/index.d.ts +5 -3408
- package/lib/classes/Classes.d.ts +431 -0
- package/lib/classes/TinCore.d.ts +48 -0
- package/lib/components/accounts/accountDialog.component.d.ts +27 -0
- package/lib/components/accounts/accounts.component.d.ts +25 -0
- package/lib/components/activity/activity.component.d.ts +11 -0
- package/lib/components/alert/alert.component.d.ts +14 -0
- package/lib/components/attach/attach.component.d.ts +23 -0
- package/lib/components/bug/bug.component.d.ts +8 -0
- package/lib/components/change-password/change-password.component.d.ts +27 -0
- package/lib/components/check/check.component.d.ts +24 -0
- package/lib/components/chips/chips.component.d.ts +18 -0
- package/lib/components/create-account/create-account.component.d.ts +33 -0
- package/lib/components/customers/customers.component.d.ts +18 -0
- package/lib/components/date/date.component.d.ts +29 -0
- package/lib/components/datetime/datetime.component.d.ts +18 -0
- package/lib/components/departments/departments.component.d.ts +14 -0
- package/lib/components/employees/employees.component.d.ts +12 -0
- package/lib/components/filter/filter.component.d.ts +19 -0
- package/lib/components/form/form.component.d.ts +36 -0
- package/lib/components/grades/grades.component.d.ts +8 -0
- package/lib/components/inventory/inventory.component.d.ts +25 -0
- package/lib/components/inventory/quantityDialog.component.d.ts +23 -0
- package/lib/components/invitations/invitations.component.d.ts +8 -0
- package/lib/components/invitations-table/invitations-table.component.d.ts +19 -0
- package/lib/components/label/label.component.d.ts +11 -0
- package/lib/components/list-dialog/list-dialog.component.d.ts +23 -0
- package/lib/components/loader/loader.component.d.ts +12 -0
- package/lib/components/login/login.component.d.ts +39 -0
- package/lib/components/logs/logs.component.d.ts +18 -0
- package/lib/components/membership/membership.component.d.ts +17 -0
- package/lib/components/message/messageDialog.component.d.ts +15 -0
- package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
- package/lib/components/money/currency-input-mask.module.d.ts +9 -0
- package/lib/components/money/money.component.d.ts +33 -0
- package/lib/components/nav-menu/nav-menu.component.d.ts +34 -0
- package/lib/components/notifications/notifications.component.d.ts +8 -0
- package/lib/components/number/number.component.d.ts +35 -0
- package/lib/components/option/option.component.d.ts +23 -0
- package/lib/components/plans/plans.component.d.ts +17 -0
- package/lib/components/positions/positions.component.d.ts +12 -0
- package/lib/components/profile/profile.component.d.ts +34 -0
- package/lib/components/recover-account/recover-account.component.d.ts +18 -0
- package/lib/components/roles/addRoleDialog.component.d.ts +24 -0
- package/lib/components/roles/roles.component.d.ts +30 -0
- package/lib/components/search/search.component.d.ts +13 -0
- package/lib/components/select/select.component.d.ts +42 -0
- package/lib/components/settings/settings.component.d.ts +19 -0
- package/lib/components/signup/signup.component.d.ts +23 -0
- package/lib/components/steps/steps.component.d.ts +18 -0
- package/lib/components/suppliers/suppliers.component.d.ts +17 -0
- package/lib/components/table/detailsDialog.component.d.ts +64 -0
- package/lib/components/table/table.component.d.ts +82 -0
- package/lib/components/table-action/table-action.component.d.ts +22 -0
- package/lib/components/table-header/table-header.component.d.ts +31 -0
- package/lib/components/table-internal/detailsDialog-internal.component.d.ts +64 -0
- package/lib/components/table-internal/table-internal.component.d.ts +82 -0
- package/lib/components/table-row/table-row.component.d.ts +28 -0
- package/lib/components/tasks/tasks.component.d.ts +27 -0
- package/lib/components/tenant-settings/inviteDialog.component.d.ts +28 -0
- package/lib/components/tenant-settings/tenant-settings.component.d.ts +42 -0
- package/lib/components/tenants/tenants.component.d.ts +17 -0
- package/lib/components/text/text.component.d.ts +46 -0
- package/lib/components/tiles/tiles.component.d.ts +25 -0
- package/lib/components/tin-spa.component.d.ts +5 -0
- package/lib/components/transactions/transactDialog.component.d.ts +26 -0
- package/lib/components/transactions/transactions.component.d.ts +31 -0
- package/lib/components/users/users.component.d.ts +36 -0
- package/lib/components/viewer/viewer.component.d.ts +25 -0
- package/lib/components/viewer/viewerDialog.component.d.ts +22 -0
- package/lib/components/welcome/welcome.component.d.ts +25 -0
- package/lib/modules/admin/admin-routing.module.d.ts +7 -0
- package/lib/modules/admin/admin.module.d.ts +9 -0
- package/lib/modules/index/index-routing.module.d.ts +7 -0
- package/lib/modules/index/index.module.d.ts +9 -0
- package/lib/modules/spa-admin.module.d.ts +15 -0
- package/lib/modules/spa-index.module.d.ts +13 -0
- package/lib/modules/spa-mat.module.d.ts +38 -0
- package/lib/modules/spa-user.module.d.ts +11 -0
- package/lib/modules/user/user-routing.module.d.ts +7 -0
- package/lib/modules/user/user.module.d.ts +9 -0
- package/lib/pipes/camelToWords.pipe.d.ts +7 -0
- package/lib/services/auth.service.d.ts +61 -0
- package/lib/services/button.service.d.ts +27 -0
- package/lib/services/condition.service.d.ts +10 -0
- package/lib/services/datalib.service.d.ts +77 -0
- package/lib/services/dialog.service.d.ts +19 -0
- package/lib/services/export.service.d.ts +6 -0
- package/lib/services/http.service.d.ts +22 -0
- package/lib/services/loader-interceptor.service.d.ts +22 -0
- package/lib/services/loader.service.d.ts +8 -0
- package/lib/services/log.service.d.ts +19 -0
- package/lib/services/message.service.d.ts +16 -0
- package/lib/services/storage.service.d.ts +10 -0
- package/lib/services/table-config.service.d.ts +9 -0
- package/lib/services/tin-spa.service.d.ts +6 -0
- package/lib/tin-spa.module.d.ts +66 -0
- package/package.json +13 -8
- package/public-api.d.ts +69 -0
- package/fesm2022/tin-spa.mjs +0 -12474
- package/fesm2022/tin-spa.mjs.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Directive, HostListener, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { DecimalPipe } from '@angular/common';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export const CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR = {
|
|
7
|
+
provide: NG_VALUE_ACCESSOR,
|
|
8
|
+
useExisting: forwardRef(() => CurrencyInputMaskDirective),
|
|
9
|
+
multi: true
|
|
10
|
+
};
|
|
11
|
+
export class CurrencyInputMaskDirective {
|
|
12
|
+
constructor(elementRef, decimalPipe) {
|
|
13
|
+
this.elementRef = elementRef;
|
|
14
|
+
this.decimalPipe = decimalPipe;
|
|
15
|
+
this.DECIMAL_MARK = '.';
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this.el = this.elementRef.nativeElement;
|
|
19
|
+
}
|
|
20
|
+
handleFocus(event) {
|
|
21
|
+
const strVal = this.getInputValue();
|
|
22
|
+
const unmaskedStr = this.getUnmaskedValue(strVal);
|
|
23
|
+
this.updateInputValue(unmaskedStr);
|
|
24
|
+
}
|
|
25
|
+
handleCut(event) {
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
this.inputUpdated();
|
|
28
|
+
}, 0);
|
|
29
|
+
}
|
|
30
|
+
handleKeypress(event) {
|
|
31
|
+
// Restrict characters
|
|
32
|
+
const newChar = String.fromCharCode(event.which);
|
|
33
|
+
const allowedChars = /^[\d.]+$/;
|
|
34
|
+
if (!allowedChars.test(newChar)) {
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Handle decimal mark input
|
|
39
|
+
const currentValue = event.target.value;
|
|
40
|
+
const separatorIdx = currentValue.indexOf(this.DECIMAL_MARK);
|
|
41
|
+
const hasFractionalPart = (separatorIdx >= 0);
|
|
42
|
+
if (!hasFractionalPart || newChar !== this.DECIMAL_MARK) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const isOutsideSelection = !this.isIdxBetweenSelection(separatorIdx);
|
|
46
|
+
if (isOutsideSelection) {
|
|
47
|
+
const positionAfterMark = separatorIdx + 1;
|
|
48
|
+
this.setCursorPosition(positionAfterMark);
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
handleInput(event) {
|
|
54
|
+
this.inputUpdated();
|
|
55
|
+
}
|
|
56
|
+
handlePaste(event) {
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
this.inputUpdated();
|
|
59
|
+
}, 1);
|
|
60
|
+
}
|
|
61
|
+
handleBlur(event) {
|
|
62
|
+
const strVal = this.getInputValue();
|
|
63
|
+
const numVal = this.convertStrToDecimal(strVal);
|
|
64
|
+
this.maskInput(numVal);
|
|
65
|
+
this.onModelTouched.apply(event);
|
|
66
|
+
}
|
|
67
|
+
registerOnChange(callbackFunction) {
|
|
68
|
+
this.onModelChange = callbackFunction;
|
|
69
|
+
}
|
|
70
|
+
registerOnTouched(callbackFunction) {
|
|
71
|
+
this.onModelTouched = callbackFunction;
|
|
72
|
+
}
|
|
73
|
+
setDisabledState(value) {
|
|
74
|
+
this.el.disabled = value;
|
|
75
|
+
}
|
|
76
|
+
writeValue(numValue) {
|
|
77
|
+
this.maskInput(numValue);
|
|
78
|
+
}
|
|
79
|
+
maskInput(numVal) {
|
|
80
|
+
if (!this.isNumeric(numVal)) {
|
|
81
|
+
this.updateInputValue('');
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const strVal = this.convertDecimalToStr(numVal);
|
|
85
|
+
const newVal = this.transformWithPipe(strVal);
|
|
86
|
+
this.updateInputValue(newVal);
|
|
87
|
+
}
|
|
88
|
+
inputUpdated() {
|
|
89
|
+
this.restrictDecimalValue();
|
|
90
|
+
const strVal = this.getInputValue();
|
|
91
|
+
const unmaskedVal = this.getUnmaskedValue(strVal);
|
|
92
|
+
const numVal = this.convertStrToDecimal(unmaskedVal);
|
|
93
|
+
if (numVal !== this.lastNumVal) {
|
|
94
|
+
this.lastNumVal = numVal;
|
|
95
|
+
this.onModelChange(numVal);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
restrictDecimalValue() {
|
|
99
|
+
const strVal = this.getInputValue();
|
|
100
|
+
const dotIdx = strVal.indexOf(this.DECIMAL_MARK);
|
|
101
|
+
const hasFractionalPart = (dotIdx >= 0);
|
|
102
|
+
if (hasFractionalPart) {
|
|
103
|
+
const fractionalPart = strVal.substring(dotIdx + 1);
|
|
104
|
+
if (fractionalPart.length > 2) {
|
|
105
|
+
const choppedVal = strVal.substring(0, dotIdx + 3);
|
|
106
|
+
this.updateInputValue(choppedVal, true);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
transformWithPipe(str) {
|
|
112
|
+
return this.decimalPipe.transform(str, '1.2-2');
|
|
113
|
+
}
|
|
114
|
+
getUnmaskedValue(value) {
|
|
115
|
+
return value.replace(/[^-\d\\.]/g, '');
|
|
116
|
+
}
|
|
117
|
+
updateInputValue(value, savePosition = false) {
|
|
118
|
+
if (savePosition) {
|
|
119
|
+
this.saveCursorPosition();
|
|
120
|
+
}
|
|
121
|
+
this.el.value = value;
|
|
122
|
+
}
|
|
123
|
+
getInputValue() {
|
|
124
|
+
return this.el.value;
|
|
125
|
+
}
|
|
126
|
+
convertStrToDecimal(str) {
|
|
127
|
+
return (this.isNumeric(str)) ? parseFloat(str) : null;
|
|
128
|
+
}
|
|
129
|
+
convertDecimalToStr(n) {
|
|
130
|
+
return (this.isNumeric(n)) ? n + '' : '';
|
|
131
|
+
}
|
|
132
|
+
isNumeric(n) {
|
|
133
|
+
return !isNaN(parseFloat(n)) && isFinite(n);
|
|
134
|
+
}
|
|
135
|
+
saveCursorPosition() {
|
|
136
|
+
const position = this.el.selectionStart;
|
|
137
|
+
setTimeout(() => {
|
|
138
|
+
this.setCursorPosition(position);
|
|
139
|
+
}, 1);
|
|
140
|
+
}
|
|
141
|
+
setCursorPosition(position) {
|
|
142
|
+
this.el.selectionStart = position;
|
|
143
|
+
this.el.selectionEnd = position;
|
|
144
|
+
}
|
|
145
|
+
isIdxBetweenSelection(idx) {
|
|
146
|
+
if (this.el.selectionStart === this.el.selectionEnd) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
return (idx >= this.el.selectionStart && idx < this.el.selectionEnd);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
CurrencyInputMaskDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CurrencyInputMaskDirective, deps: [{ token: i0.ElementRef }, { token: i1.DecimalPipe }], target: i0.ɵɵFactoryTarget.Directive });
|
|
153
|
+
CurrencyInputMaskDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: CurrencyInputMaskDirective, selector: "[appCurrencyInputMask]", host: { listeners: { "focus": "handleFocus($event)", "cut": "handleCut($event)", "keypress": "handleKeypress($event)", "input": "handleInput($event)", "paste": "handlePaste($event)", "blur": "handleBlur($event)" } }, providers: [
|
|
154
|
+
CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR,
|
|
155
|
+
DecimalPipe
|
|
156
|
+
], ngImport: i0 });
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CurrencyInputMaskDirective, decorators: [{
|
|
158
|
+
type: Directive,
|
|
159
|
+
args: [{
|
|
160
|
+
selector: '[appCurrencyInputMask]',
|
|
161
|
+
providers: [
|
|
162
|
+
CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR,
|
|
163
|
+
DecimalPipe
|
|
164
|
+
]
|
|
165
|
+
}]
|
|
166
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DecimalPipe }]; }, propDecorators: { handleFocus: [{
|
|
167
|
+
type: HostListener,
|
|
168
|
+
args: ['focus', ['$event']]
|
|
169
|
+
}], handleCut: [{
|
|
170
|
+
type: HostListener,
|
|
171
|
+
args: ['cut', ['$event']]
|
|
172
|
+
}], handleKeypress: [{
|
|
173
|
+
type: HostListener,
|
|
174
|
+
args: ['keypress', ['$event']]
|
|
175
|
+
}], handleInput: [{
|
|
176
|
+
type: HostListener,
|
|
177
|
+
args: ['input', ['$event']]
|
|
178
|
+
}], handlePaste: [{
|
|
179
|
+
type: HostListener,
|
|
180
|
+
args: ['paste', ['$event']]
|
|
181
|
+
}], handleBlur: [{
|
|
182
|
+
type: HostListener,
|
|
183
|
+
args: ['blur', ['$event']]
|
|
184
|
+
}] } });
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktaW5wdXQtbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9tb25leS9jdXJyZW5jeS1pbnB1dC1tYXNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDQSxVQUFVLEVBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUU5QyxNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FBUTtJQUMvRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7SUFDekQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBU0YsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLFVBQXNCLEVBQ3RCLFdBQXdCO1FBRHhCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFKMUIsaUJBQVksR0FBRyxHQUFHLENBQUM7SUFLdkIsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFHRCxXQUFXLENBQUMsS0FBVTtRQUNwQixNQUFNLE1BQU0sR0FBVyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBR0QsU0FBUyxD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aXQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBFbGVtZW50UmVmLCBmb3J3YXJkUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IENVUlJFTkNZX0lOUFVUX01BU0tfRElSRUNUSVZFX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XHJcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VycmVuY3lJbnB1dE1hc2tEaXJlY3RpdmUpLFxyXG4gIG11bHRpOiB0cnVlXHJcbn07XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thcHBDdXJyZW5jeUlucHV0TWFza10nLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ1VSUkVOQ1lfSU5QVVRfTUFTS19ESVJFQ1RJVkVfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBEZWNpbWFsUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5SW5wdXRNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBlbDogSFRNTElucHV0RWxlbWVudDtcclxuICBwcml2YXRlIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgbGFzdE51bVZhbDogbnVtYmVyO1xyXG4gIHByaXZhdGUgREVDSU1BTF9NQVJLID0gJy4nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRm9jdXMoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3Qgc3RyVmFsOiBzdHJpbmcgPSB0aGlzLmdldElucHV0VmFsdWUoKTtcclxuICAgIGNvbnN0IHVubWFza2VkU3RyOiBzdHJpbmcgPSB0aGlzLmdldFVubWFza2VkVmFsdWUoc3RyVmFsKTtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSh1bm1hc2tlZFN0cik7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjdXQnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUN1dChldmVudDogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pbnB1dFVwZGF0ZWQoKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5cHJlc3MnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleXByZXNzKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIFJlc3RyaWN0IGNoYXJhY3RlcnNcclxuICAgIGNvbnN0IG5ld0NoYXI6IHN0cmluZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQud2hpY2gpO1xyXG4gICAgY29uc3QgYWxsb3dlZENoYXJzOiBSZWdFeHAgPSAvXltcXGQuXSskLztcclxuICAgIGlmICghYWxsb3dlZENoYXJzLnRlc3QobmV3Q2hhcikpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gSGFuZGxlIGRlY2ltYWwgbWFyayBpbnB1dFxyXG4gICAgY29uc3QgY3VycmVudFZhbHVlOiBzdHJpbmcgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICBjb25zdCBzZXBhcmF0b3JJZHg6IG51bWJlciA9IGN1cnJlbnRWYWx1ZS5pbmRleE9mKHRoaXMuREVDSU1BTF9NQVJLKTtcclxuICAgIGNvbnN0IGhhc0ZyYWN0aW9uYWxQYXJ0OiBib29sZWFuID0gKHNlcGFyYXRvcklkeCA+PSAwKTtcclxuICAgIGlmICghaGFzRnJhY3Rpb25hbFBhcnQgfHwgbmV3Q2hhciAhPT0gdGhpcy5ERUNJTUFMX01BUkspIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNPdXRzaWRlU2VsZWN0aW9uID0gIXRoaXMuaXNJZHhCZXR3ZWVuU2VsZWN0aW9uKHNlcGFyYXRvcklkeCk7XHJcbiAgICBpZiAoaXNPdXRzaWRlU2VsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uQWZ0ZXJNYXJrID0gc2VwYXJhdG9ySWR4ICsgMTtcclxuICAgICAgdGhpcy5zZXRDdXJzb3JQb3NpdGlvbihwb3NpdGlvbkFmdGVyTWFyayk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVJbnB1dChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmlucHV0VXBkYXRlZCgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZVBhc3RlKGV2ZW50OiBhbnkpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlucHV0VXBkYXRlZCgpO1xyXG4gICAgfSwgMSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVCbHVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHN0clZhbDogc3RyaW5nID0gdGhpcy5nZXRJbnB1dFZhbHVlKCk7XHJcbiAgICBjb25zdCBudW1WYWw6IG51bWJlciA9IHRoaXMuY29udmVydFN0clRvRGVjaW1hbChzdHJWYWwpO1xyXG4gICAgdGhpcy5tYXNrSW5wdXQobnVtVmFsKTtcclxuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQuYXBwbHkoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFja0Z1bmN0aW9uOiBGdW5jdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gY2FsbGJhY2tGdW5jdGlvbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGNhbGxiYWNrRnVuY3Rpb246IEZ1bmN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gY2FsbGJhY2tGdW5jdGlvbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZWwuZGlzYWJsZWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUobnVtVmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5tYXNrSW5wdXQobnVtVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXNrSW5wdXQobnVtVmFsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc051bWVyaWMobnVtVmFsKSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoJycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdHJWYWw6IHN0cmluZyA9IHRoaXMuY29udmVydERlY2ltYWxUb1N0cihudW1WYWwpO1xyXG4gICAgY29uc3QgbmV3VmFsOiBzdHJpbmcgPSB0aGlzLnRyYW5zZm9ybVdpdGhQaXBlKHN0clZhbCk7XHJcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUobmV3VmFsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5wdXRVcGRhdGVkKCkge1xyXG4gICAgdGhpcy5yZXN0cmljdERlY2ltYWxWYWx1ZSgpO1xyXG4gICAgY29uc3Qgc3RyVmFsOiBzdHJpbmcgPSB0aGlzLmdldElucHV0VmFsdWUoKTtcclxuICAgIGNvbnN0IHVubWFza2VkVmFsOiBzdHJpbmcgPSB0aGlzLmdldFVubWFza2VkVmFsdWUoc3RyVmFsKTtcclxuICAgIGNvbnN0IG51bVZhbDogbnVtYmVyID0gdGhpcy5jb252ZXJ0U3RyVG9EZWNpbWFsKHVubWFza2VkVmFsKTtcclxuICAgIGlmIChudW1WYWwgIT09IHRoaXMubGFzdE51bVZhbCkge1xyXG4gICAgICB0aGlzLmxhc3ROdW1WYWwgPSBudW1WYWw7XHJcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZShudW1WYWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXN0cmljdERlY2ltYWxWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0clZhbDogc3RyaW5nID0gdGhpcy5nZXRJbnB1dFZhbHVlKCk7XHJcbiAgICBjb25zdCBkb3RJZHg6IG51bWJlciA9IHN0clZhbC5pbmRleE9mKHRoaXMuREVDSU1BTF9NQVJLKTtcclxuICAgIGNvbnN0IGhhc0ZyYWN0aW9uYWxQYXJ0OiBib29sZWFuID0gKGRvdElkeCA+PSAwKTtcclxuICAgIGlmIChoYXNGcmFjdGlvbmFsUGFydCkge1xyXG4gICAgICBjb25zdCBmcmFjdGlvbmFsUGFydDogc3RyaW5nID0gc3RyVmFsLnN1YnN0cmluZyhkb3RJZHggKyAxKTtcclxuICAgICAgaWYgKGZyYWN0aW9uYWxQYXJ0Lmxlbmd0aCA+IDIpIHtcclxuICAgICAgICBjb25zdCBjaG9wcGVkVmFsOiBzdHJpbmcgPSBzdHJWYWwuc3Vic3RyaW5nKDAsIGRvdElkeCArIDMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZShjaG9wcGVkVmFsLCB0cnVlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybVdpdGhQaXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShzdHIsICcxLjItMicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVbm1hc2tlZFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1teLVxcZFxcXFwuXS9nLCAnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZywgc2F2ZVBvc2l0aW9uID0gZmFsc2UpIHtcclxuICAgIGlmIChzYXZlUG9zaXRpb24pIHtcclxuICAgICAgdGhpcy5zYXZlQ3Vyc29yUG9zaXRpb24oKTtcclxuICAgIH1cclxuICAgIHRoaXMuZWwudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZWwudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRTdHJUb0RlY2ltYWwoc3RyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICh0aGlzLmlzTnVtZXJpYyhzdHIpKSA/IHBhcnNlRmxvYXQoc3RyKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnREZWNpbWFsVG9TdHIobjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodGhpcy5pc051bWVyaWMobikpID8gbiArICcnIDogJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzTnVtZXJpYyhuOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhaXNOYU4ocGFyc2VGbG9hdChuKSkgJiYgaXNGaW5pdGUobik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhdmVDdXJzb3JQb3NpdGlvbigpIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uOiBudW1iZXIgPSB0aGlzLmVsLnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0Q3Vyc29yUG9zaXRpb24ocG9zaXRpb24pO1xyXG4gICAgfSwgMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEN1cnNvclBvc2l0aW9uKHBvc2l0aW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZWwuc2VsZWN0aW9uU3RhcnQgPSBwb3NpdGlvbjtcclxuICAgIHRoaXMuZWwuc2VsZWN0aW9uRW5kID0gcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSWR4QmV0d2VlblNlbGVjdGlvbihpZHg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuZWwuc2VsZWN0aW9uU3RhcnQgPT09IHRoaXMuZWwuc2VsZWN0aW9uRW5kKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiAoaWR4ID49IHRoaXMuZWwuc2VsZWN0aW9uU3RhcnQgJiYgaWR4IDwgdGhpcy5lbC5zZWxlY3Rpb25FbmQpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { CurrencyInputMaskDirective } from './currency-input-mask.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class CurrencyInputModule {
|
|
7
|
+
}
|
|
8
|
+
CurrencyInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CurrencyInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
CurrencyInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: CurrencyInputModule, declarations: [CurrencyInputMaskDirective], imports: [CommonModule,
|
|
10
|
+
FormsModule], exports: [CurrencyInputMaskDirective] });
|
|
11
|
+
CurrencyInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CurrencyInputModule, imports: [CommonModule,
|
|
12
|
+
FormsModule] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CurrencyInputModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
imports: [
|
|
17
|
+
CommonModule,
|
|
18
|
+
FormsModule
|
|
19
|
+
],
|
|
20
|
+
declarations: [
|
|
21
|
+
CurrencyInputMaskDirective
|
|
22
|
+
],
|
|
23
|
+
exports: [
|
|
24
|
+
CurrencyInputMaskDirective
|
|
25
|
+
]
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktaW5wdXQtbWFzay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9tb25leS9jdXJyZW5jeS1pbnB1dC1tYXNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBYzdFLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFONUIsMEJBQTBCLGFBSjFCLFlBQVk7UUFDWixXQUFXLGFBTVgsMEJBQTBCO2lIQUdqQixtQkFBbUIsWUFWNUIsWUFBWTtRQUNaLFdBQVc7MkZBU0YsbUJBQW1CO2tCQVovQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDBCQUEwQjtxQkFDM0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEN1cnJlbmN5SW5wdXRNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi9jdXJyZW5jeS1pbnB1dC1tYXNrLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEN1cnJlbmN5SW5wdXRNYXNrRGlyZWN0aXZlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBDdXJyZW5jeUlucHV0TWFza0RpcmVjdGl2ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5SW5wdXRNb2R1bGUge1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
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 "@angular/material/button";
|
|
7
|
+
import * as i4 from "@angular/material/icon";
|
|
8
|
+
import * as i5 from "@angular/material/form-field";
|
|
9
|
+
import * as i6 from "@angular/material/input";
|
|
10
|
+
import * as i7 from "@angular/material/tooltip";
|
|
11
|
+
import * as i8 from "./currency-input-mask.directive";
|
|
12
|
+
export class MoneyComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.readonly = false;
|
|
15
|
+
this.hint = "";
|
|
16
|
+
this.display = "";
|
|
17
|
+
this.placeholder = "";
|
|
18
|
+
this.value = "";
|
|
19
|
+
this.width = "100%";
|
|
20
|
+
this.currency = "";
|
|
21
|
+
this.valueChange = new EventEmitter();
|
|
22
|
+
this.leave = new EventEmitter();
|
|
23
|
+
this.enterPress = new EventEmitter();
|
|
24
|
+
//validation input
|
|
25
|
+
this.required = true;
|
|
26
|
+
this.min = 0;
|
|
27
|
+
this.max = 9000000000000000; //Math.max 9000000000000000
|
|
28
|
+
this.infoClick = new EventEmitter();
|
|
29
|
+
//validation
|
|
30
|
+
this.control = new FormControl(this.value, [Validators.required, Validators.min(this.min), Validators.max(this.max)]);
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
if (this.placeholder == "") {
|
|
34
|
+
this.placeholder = "Enter " + this.display;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ngOnChanges() {
|
|
38
|
+
}
|
|
39
|
+
ngAfterViewInit() {
|
|
40
|
+
this.initControl(this.control);
|
|
41
|
+
}
|
|
42
|
+
initControl(control) {
|
|
43
|
+
if (this.readonly) {
|
|
44
|
+
control.setValidators(null);
|
|
45
|
+
control.updateValueAndValidity();
|
|
46
|
+
}
|
|
47
|
+
if (!this.required && !this.readonly) {
|
|
48
|
+
control.setValidators([Validators.min(this.min), Validators.max(this.max)]);
|
|
49
|
+
this.control.updateValueAndValidity();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
onInfoClick(event) {
|
|
53
|
+
event.stopPropagation();
|
|
54
|
+
this.infoClick.emit();
|
|
55
|
+
}
|
|
56
|
+
changed(x) {
|
|
57
|
+
this.valueChange.emit(x);
|
|
58
|
+
}
|
|
59
|
+
leaved() {
|
|
60
|
+
this.leave.emit();
|
|
61
|
+
}
|
|
62
|
+
enterPressed() {
|
|
63
|
+
this.enterPress.emit();
|
|
64
|
+
}
|
|
65
|
+
validate(control) {
|
|
66
|
+
if (this.required && control.hasError('required')) {
|
|
67
|
+
return `Required`;
|
|
68
|
+
}
|
|
69
|
+
if (parseFloat(this.value) < this.min) {
|
|
70
|
+
return `Minimun value is ${this.min}`;
|
|
71
|
+
}
|
|
72
|
+
if (parseFloat(this.value) > this.max) {
|
|
73
|
+
return `Maximum value is ${this.max}`;
|
|
74
|
+
}
|
|
75
|
+
if (control.hasError('min')) {
|
|
76
|
+
return `Minimun value is ${this.min}`;
|
|
77
|
+
}
|
|
78
|
+
if (control.hasError('max')) {
|
|
79
|
+
return `Maximum value is ${this.max}`;
|
|
80
|
+
}
|
|
81
|
+
return "";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
MoneyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MoneyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
+
MoneyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MoneyComponent, selector: "spa-money", inputs: { readonly: "readonly", hint: "hint", display: "display", placeholder: "placeholder", value: "value", width: "width", currency: "currency", required: "required", min: "min", max: "max", infoMessage: "infoMessage" }, outputs: { valueChange: "valueChange", leave: "leave", enterPress: "enterPress", infoClick: "infoClick" }, usesOnChanges: true, ngImport: i0, template: "\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}} </span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n", styles: ["input.example-right-align{-moz-appearance:textfield}.example-right-align{text-align:right}input.example-right-align::-webkit-outer-spin-button,input.example-right-align::-webkit-inner-spin-button{display:none}.curr{background-color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i6.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: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i8.CurrencyInputMaskDirective, selector: "[appCurrencyInputMask]" }] });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MoneyComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{ selector: 'spa-money', template: "\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}} </span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n", styles: ["input.example-right-align{-moz-appearance:textfield}.example-right-align{text-align:right}input.example-right-align::-webkit-outer-spin-button,input.example-right-align::-webkit-inner-spin-button{display:none}.curr{background-color:red}\n"] }]
|
|
89
|
+
}], ctorParameters: function () { return []; }, propDecorators: { readonly: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], hint: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], display: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], placeholder: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], value: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], width: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], currency: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], valueChange: [{
|
|
104
|
+
type: Output
|
|
105
|
+
}], leave: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}], enterPress: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], required: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], min: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], max: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], infoMessage: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], infoClick: [{
|
|
118
|
+
type: Output
|
|
119
|
+
}] } });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbW9uZXkvbW9uZXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbW9uZXkvbW9uZXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxjQUFjO0lBRXpCO1FBNEJTLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsVUFBSyxHQUFHLE1BQU0sQ0FBQTtRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFYixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0IsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJMUMsa0JBQWtCO1FBQ1QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsUUFBRyxHQUFHLGdCQUFnQixDQUFDLENBQUMsMkJBQTJCO1FBSWxELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBbUIvQyxZQUFZO1FBQ1osWUFBTyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVB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O3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUtFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtbW9uZXknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb25leS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbW9uZXkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb25leUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gXCJFbnRlciBcIiArIHRoaXMuZGlzcGxheTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdENvbnRyb2wodGhpcy5jb250cm9sKVxyXG4gIH1cclxuXHJcbiAgaW5pdENvbnRyb2woY29udHJvbDogRm9ybUNvbnRyb2wpIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucmVxdWlyZWQgJiYgIXRoaXMucmVhZG9ubHkpIHtcclxuXHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW4odGhpcy5taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLm1heCldKTtcclxuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGludCA9IFwiXCI7XHJcbiAgQElucHV0KCkgZGlzcGxheSA9IFwiXCI7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gXCJcIjtcclxuICBASW5wdXQoKSB3aWR0aCA9IFwiMTAwJVwiXHJcbiAgQElucHV0KCkgY3VycmVuY3kgPSBcIlwiO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBlbnRlclByZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcblxyXG4gIC8vdmFsaWRhdGlvbiBpbnB1dFxyXG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBtaW4gPSAwO1xyXG4gIEBJbnB1dCgpIG1heCA9IDkwMDAwMDAwMDAwMDAwMDA7IC8vTWF0aC5tYXggOTAwMDAwMDAwMDAwMDAwMFxyXG5cclxuXHJcbiAgQElucHV0KCkgaW5mb01lc3NhZ2U6IHN0cmluZztcclxuICBAT3V0cHV0KCkgaW5mb0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBvbkluZm9DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmluZm9DbGljay5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VkKHgpe1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHgpO1xyXG4gIH1cclxuXHJcbiAgbGVhdmVkKCkge1xyXG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBlbnRlclByZXNzZWQoKSB7XHJcbiAgICB0aGlzLmVudGVyUHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy92YWxpZGF0aW9uXHJcbiAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLnZhbHVlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4odGhpcy5taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLm1heCldKTtcclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogRm9ybUNvbnRyb2wpOiBzdHJpbmcge1xyXG5cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmIGNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgcmV0dXJuIGBSZXF1aXJlZGA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgPCB0aGlzLm1pbil7XHJcbiAgICAgIHJldHVybiBgTWluaW11biB2YWx1ZSBpcyAke3RoaXMubWlufWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgPiB0aGlzLm1heCkge1xyXG4gICAgICByZXR1cm4gYE1heGltdW0gdmFsdWUgaXMgJHt0aGlzLm1heH1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdtaW4nKSkge1xyXG4gICAgICByZXR1cm4gYE1pbmltdW4gdmFsdWUgaXMgJHt0aGlzLm1pbn1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdtYXgnKSkge1xyXG4gICAgICByZXR1cm4gYE1heGltdW0gdmFsdWUgaXMgJHt0aGlzLm1heH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkIGhpZGVSZXF1aXJlZE1hcmtlcj1cInRydWVcIiBbaGludExhYmVsXT1cImhpbnRcIiBbaGlkZVJlcXVpcmVkTWFya2VyXT1cIiFyZXF1aXJlZFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOndpZHRofVwiIGhpZGVSZXF1aXJlZE1hcmtlcj1cInRydWVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPlxyXG4gIDxtYXQtbGFiZWw+e3tkaXNwbGF5fX08L21hdC1sYWJlbD5cclxuICA8aW5wdXQgbWF0SW5wdXQgYXBwQ3VycmVuY3lJbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIlxyXG4gIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIlxyXG4gIFtuZ01vZGVsXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cImVudGVyUHJlc3NlZCgpXCIgKGJsdXIpPVwibGVhdmVkKClcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIC8+XHJcbiAgPHNwYW4gKm5nSWY9XCJjdXJyZW5jeSE9JydcIiBtYXRQcmVmaXg+e3tjdXJyZW5jeX19Jm5ic3A7PC9zcGFuPlxyXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9sLmludmFsaWRcIj57e3ZhbGlkYXRlKGNvbnRyb2wpfX08L21hdC1lcnJvcj5cclxuICAgICAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJzdWZmaXgtaWNvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cImluZm9NZXNzYWdlXCIgKGNsaWNrKT1cIm9uSW5mb0NsaWNrKCRldmVudClcIiBtYXRUb29sdGlwPVwiSW5mb1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogc3RlZWxibHVlO1wiPmluZm88L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { AppConfig } from './../../classes/Classes';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
import * as i2 from "../../services/auth.service";
|
|
6
|
+
import * as i3 from "../../services/storage.service";
|
|
7
|
+
import * as i4 from "@abacritt/angularx-social-login";
|
|
8
|
+
import * as i5 from "@angular/cdk/layout";
|
|
9
|
+
import * as i6 from "../../services/datalib.service";
|
|
10
|
+
import * as i7 from "@angular/common";
|
|
11
|
+
import * as i8 from "@angular/material/menu";
|
|
12
|
+
import * as i9 from "@angular/material/button";
|
|
13
|
+
import * as i10 from "@angular/material/icon";
|
|
14
|
+
import * as i11 from "@angular/material/list";
|
|
15
|
+
import * as i12 from "@angular/material/divider";
|
|
16
|
+
import * as i13 from "@angular/material/tooltip";
|
|
17
|
+
import * as i14 from "@angular/material/sidenav";
|
|
18
|
+
import * as i15 from "@angular/material/toolbar";
|
|
19
|
+
import * as i16 from "@angular/material/expansion";
|
|
20
|
+
import * as i17 from "../loader/loader.component";
|
|
21
|
+
export class NavMenuComponent {
|
|
22
|
+
constructor(router, authService, storageService, socialService, breakpointObserver, dataService) {
|
|
23
|
+
this.router = router;
|
|
24
|
+
this.authService = authService;
|
|
25
|
+
this.storageService = storageService;
|
|
26
|
+
this.socialService = socialService;
|
|
27
|
+
this.breakpointObserver = breakpointObserver;
|
|
28
|
+
this.dataService = dataService;
|
|
29
|
+
this.isExpanded = false;
|
|
30
|
+
this.nowDate = new Date();
|
|
31
|
+
this.appConfig = new AppConfig();
|
|
32
|
+
this.footer = 'alsquaretech.net | Privacy Policy';
|
|
33
|
+
// detect screen size changes
|
|
34
|
+
this.breakpointObserver.observe(["(max-width: 600px)"]).subscribe((result) => {
|
|
35
|
+
if (result.matches) {
|
|
36
|
+
this.smallScreen = true;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.smallScreen = false;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
ngOnInit() {
|
|
44
|
+
this.authService.loggedUserFullName.subscribe(user => this.loggedUserFullName = user);
|
|
45
|
+
this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);
|
|
46
|
+
this.authService.loggedinObserv.subscribe(obj => this.loggedin = obj);
|
|
47
|
+
this.authService.tenantNameObserv.subscribe(obj => this.tenantName = obj);
|
|
48
|
+
}
|
|
49
|
+
collapse() {
|
|
50
|
+
this.isExpanded = false;
|
|
51
|
+
}
|
|
52
|
+
toggle() {
|
|
53
|
+
this.isExpanded = !this.isExpanded;
|
|
54
|
+
}
|
|
55
|
+
closeSide() {
|
|
56
|
+
this.isExpanded = false;
|
|
57
|
+
}
|
|
58
|
+
logoff() {
|
|
59
|
+
// this.socialService.signOut();
|
|
60
|
+
// this.authService.Updateloggedin(false);
|
|
61
|
+
// this.authService.UpdateAutoLogin(false);
|
|
62
|
+
// this.authService.UpdateRole(new Role());
|
|
63
|
+
// this.storageService.clear();
|
|
64
|
+
// this.router.navigate(["login"]);
|
|
65
|
+
this.authService.logoff();
|
|
66
|
+
}
|
|
67
|
+
redirectTo(link) {
|
|
68
|
+
this.collapse();
|
|
69
|
+
if (link != "") {
|
|
70
|
+
this.router.navigate([link]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
NavMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NavMenuComponent, deps: [{ token: i1.Router }, { token: i2.AuthService }, { token: i3.StorageService }, { token: i4.SocialAuthService }, { token: i5.BreakpointObserver }, { token: i6.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
+
NavMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NavMenuComponent, selector: "spa-nav-menu", inputs: { appConfig: "appConfig", footer: "footer" }, ngImport: i0, template: "<header *ngIf=\"loggedin && dataService.appConfig.navigation == 'top'\">\r\n\r\n <nav class=\"toolbar navbar navbar-expand-sm navbar-toggleable-sm navbar-light border-bottom box-shadow mb-3 \" style=\"padding-right: 10px;\">\r\n\r\n\r\n <div class=\"container-fluid\" style=\"padding-right: 0px;\">\r\n\r\n <img *ngIf=\"appConfig.logo!=''\" [src]=\"appConfig.logo\" style=\"height: 50px; margin-right: 2em\" />\r\n\r\n <div>\r\n <!-- <div style=\"font-size: 20px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px;\">\r\n {{tenantName}}\r\n </div> -->\r\n\r\n <div *ngIf=\"!dataService.appConfig.multitenant\" style=\"font-size: 22px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\" style=\"font-size: 20px; ; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\".navbar-collapse\" aria-label=\"Toggle navigation\" [attr.aria-expanded]=\"isExpanded\" (click)=\"toggle()\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div *ngIf=\"myRole\" class=\" navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse stack-top\" style=\"margin-right: 0px;\" [ngClass]=\"{ show: isExpanded, navitems: isExpanded }\" >\r\n\r\n <button mat-icon-button (click)=\"logoff()\" > <mat-icon>logout</mat-icon> </button>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >support_agent</mat-icon> </button>\r\n\r\n <!-- <button mat-icon-button (click)=\"redirectTo('home/admin/tenants')\"> <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button> -->\r\n </div>\r\n\r\n\r\n <button id=\"btnUser\" mat-button [matMenuTriggerFor]=\"profileMenu\" ><mat-icon style=\"font-size: 24px;\">account_circle</mat-icon> {{loggedUserFullName}}</button>\r\n\r\n <mat-menu #profileMenu=\"matMenu\">\r\n <button id=\"btnProfile\" mat-menu-item (click)=\"redirectTo('home/user/profile')\" >Profile</button>\r\n <button id=\"btnLogOff\" mat-menu-item (click)=\"logoff()\">Log Off</button>\r\n </mat-menu>\r\n\r\n <div *ngFor=\"let item of appConfig.capItems\">\r\n\r\n <!-- Menu Item -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && !item.capSubItems && item.showMenu\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items ignored -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && item.ignoreSubsDisplay\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items to display-->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && !item.ignoreSubsDisplay\" mat-button [matMenuTriggerFor]=\"adminMenu\">{{item.display}}</button>\r\n\r\n\r\n <!-- Sub Menu Items -->\r\n <mat-menu #adminMenu=\"matMenu\">\r\n\r\n <div *ngFor=\"let subItem of item.capSubItems\">\r\n\r\n <button *ngIf=\"myRole[subItem.name] && subItem.showMenu\" mat-menu-item (click)=\"redirectTo(subItem.link)\">{{subItem.display}}</button>\r\n\r\n </div>\r\n\r\n </mat-menu>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </nav>\r\n\r\n</header>\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"dataService.appConfig.navigation == 'top'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- SIDE -->\r\n<mat-toolbar class=\"tin-bg-image-toolbar\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\" style=\"padding: 0px 8px;\">\r\n\r\n <button mat-icon-button (click)=\"toggle()\" matTooltip=\"Menu\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n\r\n <img [src]=\"dataService.appConfig.logo\" style=\"height: 50px;\" />\r\n\r\n <div style=\"padding-left: 10px; \">\r\n\r\n <div style=\"font-size: 20px; height: 25px; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <span class=\"toolbar-item-spacer\"></span>\r\n\r\n <!-- buttons -->\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >help</mat-icon> </button>\r\n\r\n </div>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button matTooltip=\"Notifications\"><mat-icon>notifications</mat-icon></button>\r\n\r\n <button mat-icon-button matTooltip=\"My Account\" [matMenuTriggerFor]=\"userAccountMenu\"><mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"logoff()\"> <mat-icon>logout</mat-icon></button>\r\n\r\n\r\n <!-- my account menu -->\r\n <mat-menu #userAccountMenu [overlapTrigger]=\"false\" yPosition=\"below\">\r\n\r\n <button mat-menu-item routerLink=\"home/user/profile\">\r\n <mat-icon>person</mat-icon><span>Profile</span>\r\n </button>\r\n\r\n <button mat-menu-item routerLink=\"home/admin/bug\" *ngIf=\"dataService.appConfig.multitenant && smallScreen\">\r\n <mat-icon>help</mat-icon> <span>Help</span>\r\n </button>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <button mat-menu-item (click)=\"logoff()\">\r\n <mat-icon>logout</mat-icon>Logout\r\n </button>\r\n\r\n </mat-menu>\r\n\r\n</mat-toolbar>\r\n\r\n\r\n\r\n\r\n<mat-sidenav-container class=\"app-container\" [hasBackdrop]=\"smallScreen\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n\r\n <mat-sidenav #sidenav [mode]=\"smallScreen ? 'over' : 'over'\" [class.mat-elevation-z4]=\"true\" [opened]=\"isExpanded\" class=\"app-sidenav side-color\" style=\"height: 100%;\">\r\n <mat-nav-list >\r\n\r\n <ng-container *ngFor=\"let cap of dataService.appConfig.capItems\" >\r\n\r\n <!-- Menu item -->\r\n <mat-list-item [routerLink]=\"cap.link\" *ngIf=\"myRole[cap.name] && cap.showMenu && (!cap.capSubItems || cap.capSubItems && cap.ignoreSubsDisplay)\" style=\"height: 40px;font-size: 15px;\" (click)=\"toggle()\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon}}</mat-icon>{{cap.display}}\r\n </mat-list-item>\r\n\r\n <!-- Menu With Sub items -->\r\n <mat-expansion-panel class=\"side-color\" [class.mat-elevation-z0]=\"true\" *ngIf=\"myRole[cap.name] && cap.showMenu && cap.capSubItems && !cap.ignoreSubsDisplay\">\r\n\r\n <mat-expansion-panel-header style=\"height: 40px;padding-left: 15px;\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon != 'navigate_next' ? cap.icon : 'fiber_manual_record' }}</mat-icon>{{cap.display}}\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Sub items -->\r\n <mat-nav-list *ngFor=\"let capSub of cap.capSubItems\">\r\n\r\n <mat-list-item [routerLink]=\"capSub.link\" style=\"height: 30px; font-size: 15px;\" (click)=\"toggle()\" *ngIf=\"myRole[cap.name] && cap.showMenu\">\r\n <mat-icon style=\"margin-right: 5px;\">{{capSub.icon}}</mat-icon>{{capSub.display}}\r\n </mat-list-item>\r\n\r\n </mat-nav-list>\r\n\r\n </mat-expansion-panel>\r\n\r\n </ng-container>\r\n\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n\r\n\r\n\r\n <mat-sidenav-content class=\"container-fluid tin-bg-image\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <hr style=\"margin-top: 0px;\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n </mat-sidenav-content>\r\n\r\n</mat-sidenav-container>\r\n\r\n\r\n<!-- footer -->\r\n<div class=\"tin-center\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <label style=\"text-align: center; font-size: 12px;\">© {{nowDate | date : 'yyyy'}} {{footer}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"!loggedin && dataService.appConfig.navigation == 'side'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n", styles: ["a.navbar-brand{white-space:normal;text-align:center;word-break:break-all}html{font-size:14px}.box-shadow{box-shadow:0 .25rem .75rem #0000000d}.toolbar{height:60px;display:flex;align-items:center;background-color:#03a;color:#fff}.stack-top{z-index:9;margin:20px}.navitems{background-color:#03a}.toolbar-item-spacer{flex:1 1 auto}.app-container{height:90%;margin:0}.app-sidenav{width:200px}.side-color{background-color:#def0fc}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i9.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { kind: "component", type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i14.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i14.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i14.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i15.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i16.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i16.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "component", type: i17.LoaderComponent, selector: "spa-loader", inputs: ["logo"] }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NavMenuComponent, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{ selector: 'spa-nav-menu', template: "<header *ngIf=\"loggedin && dataService.appConfig.navigation == 'top'\">\r\n\r\n <nav class=\"toolbar navbar navbar-expand-sm navbar-toggleable-sm navbar-light border-bottom box-shadow mb-3 \" style=\"padding-right: 10px;\">\r\n\r\n\r\n <div class=\"container-fluid\" style=\"padding-right: 0px;\">\r\n\r\n <img *ngIf=\"appConfig.logo!=''\" [src]=\"appConfig.logo\" style=\"height: 50px; margin-right: 2em\" />\r\n\r\n <div>\r\n <!-- <div style=\"font-size: 20px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px;\">\r\n {{tenantName}}\r\n </div> -->\r\n\r\n <div *ngIf=\"!dataService.appConfig.multitenant\" style=\"font-size: 22px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\" style=\"font-size: 20px; ; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\".navbar-collapse\" aria-label=\"Toggle navigation\" [attr.aria-expanded]=\"isExpanded\" (click)=\"toggle()\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div *ngIf=\"myRole\" class=\" navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse stack-top\" style=\"margin-right: 0px;\" [ngClass]=\"{ show: isExpanded, navitems: isExpanded }\" >\r\n\r\n <button mat-icon-button (click)=\"logoff()\" > <mat-icon>logout</mat-icon> </button>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >support_agent</mat-icon> </button>\r\n\r\n <!-- <button mat-icon-button (click)=\"redirectTo('home/admin/tenants')\"> <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button> -->\r\n </div>\r\n\r\n\r\n <button id=\"btnUser\" mat-button [matMenuTriggerFor]=\"profileMenu\" ><mat-icon style=\"font-size: 24px;\">account_circle</mat-icon> {{loggedUserFullName}}</button>\r\n\r\n <mat-menu #profileMenu=\"matMenu\">\r\n <button id=\"btnProfile\" mat-menu-item (click)=\"redirectTo('home/user/profile')\" >Profile</button>\r\n <button id=\"btnLogOff\" mat-menu-item (click)=\"logoff()\">Log Off</button>\r\n </mat-menu>\r\n\r\n <div *ngFor=\"let item of appConfig.capItems\">\r\n\r\n <!-- Menu Item -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && !item.capSubItems && item.showMenu\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items ignored -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && item.ignoreSubsDisplay\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items to display-->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && !item.ignoreSubsDisplay\" mat-button [matMenuTriggerFor]=\"adminMenu\">{{item.display}}</button>\r\n\r\n\r\n <!-- Sub Menu Items -->\r\n <mat-menu #adminMenu=\"matMenu\">\r\n\r\n <div *ngFor=\"let subItem of item.capSubItems\">\r\n\r\n <button *ngIf=\"myRole[subItem.name] && subItem.showMenu\" mat-menu-item (click)=\"redirectTo(subItem.link)\">{{subItem.display}}</button>\r\n\r\n </div>\r\n\r\n </mat-menu>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </nav>\r\n\r\n</header>\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"dataService.appConfig.navigation == 'top'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- SIDE -->\r\n<mat-toolbar class=\"tin-bg-image-toolbar\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\" style=\"padding: 0px 8px;\">\r\n\r\n <button mat-icon-button (click)=\"toggle()\" matTooltip=\"Menu\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n\r\n <img [src]=\"dataService.appConfig.logo\" style=\"height: 50px;\" />\r\n\r\n <div style=\"padding-left: 10px; \">\r\n\r\n <div style=\"font-size: 20px; height: 25px; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <span class=\"toolbar-item-spacer\"></span>\r\n\r\n <!-- buttons -->\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >help</mat-icon> </button>\r\n\r\n </div>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button matTooltip=\"Notifications\"><mat-icon>notifications</mat-icon></button>\r\n\r\n <button mat-icon-button matTooltip=\"My Account\" [matMenuTriggerFor]=\"userAccountMenu\"><mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"logoff()\"> <mat-icon>logout</mat-icon></button>\r\n\r\n\r\n <!-- my account menu -->\r\n <mat-menu #userAccountMenu [overlapTrigger]=\"false\" yPosition=\"below\">\r\n\r\n <button mat-menu-item routerLink=\"home/user/profile\">\r\n <mat-icon>person</mat-icon><span>Profile</span>\r\n </button>\r\n\r\n <button mat-menu-item routerLink=\"home/admin/bug\" *ngIf=\"dataService.appConfig.multitenant && smallScreen\">\r\n <mat-icon>help</mat-icon> <span>Help</span>\r\n </button>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <button mat-menu-item (click)=\"logoff()\">\r\n <mat-icon>logout</mat-icon>Logout\r\n </button>\r\n\r\n </mat-menu>\r\n\r\n</mat-toolbar>\r\n\r\n\r\n\r\n\r\n<mat-sidenav-container class=\"app-container\" [hasBackdrop]=\"smallScreen\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n\r\n <mat-sidenav #sidenav [mode]=\"smallScreen ? 'over' : 'over'\" [class.mat-elevation-z4]=\"true\" [opened]=\"isExpanded\" class=\"app-sidenav side-color\" style=\"height: 100%;\">\r\n <mat-nav-list >\r\n\r\n <ng-container *ngFor=\"let cap of dataService.appConfig.capItems\" >\r\n\r\n <!-- Menu item -->\r\n <mat-list-item [routerLink]=\"cap.link\" *ngIf=\"myRole[cap.name] && cap.showMenu && (!cap.capSubItems || cap.capSubItems && cap.ignoreSubsDisplay)\" style=\"height: 40px;font-size: 15px;\" (click)=\"toggle()\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon}}</mat-icon>{{cap.display}}\r\n </mat-list-item>\r\n\r\n <!-- Menu With Sub items -->\r\n <mat-expansion-panel class=\"side-color\" [class.mat-elevation-z0]=\"true\" *ngIf=\"myRole[cap.name] && cap.showMenu && cap.capSubItems && !cap.ignoreSubsDisplay\">\r\n\r\n <mat-expansion-panel-header style=\"height: 40px;padding-left: 15px;\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon != 'navigate_next' ? cap.icon : 'fiber_manual_record' }}</mat-icon>{{cap.display}}\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Sub items -->\r\n <mat-nav-list *ngFor=\"let capSub of cap.capSubItems\">\r\n\r\n <mat-list-item [routerLink]=\"capSub.link\" style=\"height: 30px; font-size: 15px;\" (click)=\"toggle()\" *ngIf=\"myRole[cap.name] && cap.showMenu\">\r\n <mat-icon style=\"margin-right: 5px;\">{{capSub.icon}}</mat-icon>{{capSub.display}}\r\n </mat-list-item>\r\n\r\n </mat-nav-list>\r\n\r\n </mat-expansion-panel>\r\n\r\n </ng-container>\r\n\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n\r\n\r\n\r\n <mat-sidenav-content class=\"container-fluid tin-bg-image\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <hr style=\"margin-top: 0px;\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n </mat-sidenav-content>\r\n\r\n</mat-sidenav-container>\r\n\r\n\r\n<!-- footer -->\r\n<div class=\"tin-center\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <label style=\"text-align: center; font-size: 12px;\">© {{nowDate | date : 'yyyy'}} {{footer}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"!loggedin && dataService.appConfig.navigation == 'side'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n", styles: ["a.navbar-brand{white-space:normal;text-align:center;word-break:break-all}html{font-size:14px}.box-shadow{box-shadow:0 .25rem .75rem #0000000d}.toolbar{height:60px;display:flex;align-items:center;background-color:#03a;color:#fff}.stack-top{z-index:9;margin:20px}.navitems{background-color:#03a}.toolbar-item-spacer{flex:1 1 auto}.app-container{height:90%;margin:0}.app-sidenav{width:200px}.side-color{background-color:#def0fc}\n"] }]
|
|
79
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AuthService }, { type: i3.StorageService }, { type: i4.SocialAuthService }, { type: i5.BreakpointObserver }, { type: i6.DataServiceLib }]; }, propDecorators: { appConfig: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], footer: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbmF2LW1lbnUvbmF2LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbmF2LW1lbnUvbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWN6RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQW1CLE1BQWMsRUFBUyxXQUF3QixFQUFVLGNBQThCLEVBQVUsYUFBZ0MsRUFBVSxrQkFBc0MsRUFBUyxXQUEyQjtRQUFyTixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBMkJ4TyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLFlBQU8sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO1FBR1gsY0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFXLG1DQUFtQyxDQUFDO1FBaEM1RCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUF1QixFQUFFLEVBQUU7WUFFNUYsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQTthQUN4QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTthQUN6QjtRQUVILENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVGLFFBQVE7UUFFTixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFBO0lBRTNFLENBQUM7SUFpQkQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDckMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTTtRQUNKLGdDQUFnQztRQUNoQywwQ0FBMEM7UUFDMUMsMkNBQTJDO1FBQzNDLDJDQUEyQztRQUMzQywrQkFBK0I7UUFDL0IsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBRXJCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQixJQUFJLElBQUksSUFBRSxFQUFFLEVBQUM7WUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDOUI7SUFFSCxDQUFDOzs2R0FyRVUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsMEdDZjdCLCt1U0FpT0E7MkZEbE5hLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO2tQQXNDZixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcENvbmZpZywgUm9sZSwgQ29uc3RhbnRzIH0gZnJvbSAnLi8uLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgIEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTb2NpYWxBdXRoU2VydmljZSB9IGZyb20gJ0BhYmFjcml0dC9hbmd1bGFyeC1zb2NpYWwtbG9naW4nO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludFN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtbmF2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYtbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmF2LW1lbnUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZNZW51Q29tcG9uZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyLCBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSwgcHJpdmF0ZSBzb2NpYWxTZXJ2aWNlOiBTb2NpYWxBdXRoU2VydmljZSwgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlciwgcHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwpIHtcclxuICAgIC8vIGRldGVjdCBzY3JlZW4gc2l6ZSBjaGFuZ2VzXHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKFtcIihtYXgtd2lkdGg6IDYwMHB4KVwiXSkuc3Vic2NyaWJlKChyZXN1bHQ6IEJyZWFrcG9pbnRTdGF0ZSkgPT4ge1xyXG5cclxuICAgICAgaWYgKHJlc3VsdC5tYXRjaGVzKSB7XHJcbiAgICAgICAgdGhpcy5zbWFsbFNjcmVlbiA9IHRydWVcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nZ2VkVXNlckZ1bGxOYW1lLnN1YnNjcmliZSh1c2VyID0+IHRoaXMubG9nZ2VkVXNlckZ1bGxOYW1lID0gdXNlcilcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubXlSb2xlT2JzZXJ2LnN1YnNjcmliZShyb2wgPT4gdGhpcy5teVJvbGUgPSByb2wpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dnZWRpbk9ic2Vydi5zdWJzY3JpYmUob2JqID0+IHRoaXMubG9nZ2VkaW4gPSBvYmopXHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnRlbmFudE5hbWVPYnNlcnYuc3Vic2NyaWJlKG9iaiA9PiB0aGlzLnRlbmFudE5hbWUgPSBvYmopXHJcblxyXG4gIH1cclxuXHJcbiAgc21hbGxTY3JlZW5cclxuICBteVJvbGU7XHJcbiAgbG9nZ2VkVXNlckZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgdGVuYW50TmFtZSA6IHN0cmluZztcclxuICBsb2dnZWRpbjogYm9vbGVhbjtcclxuICBpc0V4cGFuZGVkID0gZmFsc2U7XHJcblxyXG4gIG5vd0RhdGUgPSBuZXcgRGF0ZSgpXHJcblxyXG5cclxuICBASW5wdXQoKSBhcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKCk7XHJcbiAgQElucHV0KCkgZm9vdGVyOiBzdHJpbmcgPSAnYWxzcXVhcmV0ZWNoLm5ldCB8IFByaXZhY3kgUG9saWN5JztcclxuXHJcblxyXG5cclxuICBjb2xsYXBzZSgpIHtcclxuICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCkge1xyXG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcclxuICB9XHJcblxyXG4gIGNsb3NlU2lkZSgpIHtcclxuICAgIHRoaXMuaXNFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbG9nb2ZmKCkge1xyXG4gICAgLy8gdGhpcy5zb2NpYWxTZXJ2aWNlLnNpZ25PdXQoKTtcclxuICAgIC8vIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlbG9nZ2VkaW4oZmFsc2UpO1xyXG4gICAgLy8gdGhpcy5hdXRoU2VydmljZS5VcGRhdGVBdXRvTG9naW4oZmFsc2UpO1xyXG4gICAgLy8gdGhpcy5hdXRoU2VydmljZS5VcGRhdGVSb2xlKG5ldyBSb2xlKCkpO1xyXG4gICAgLy8gdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhcigpO1xyXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvZmYoKTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG8obGluazogc3RyaW5nKXtcclxuXHJcbiAgICB0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG4gICAgaWYgKGxpbmshPVwiXCIpe1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbGlua10pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxufVxyXG4iLCI8aGVhZGVyICpuZ0lmPVwibG9nZ2VkaW4gJiYgZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm5hdmlnYXRpb24gPT0gJ3RvcCdcIj5cclxuXHJcbiAgPG5hdiBjbGFzcz1cInRvb2xiYXIgbmF2YmFyIG5hdmJhci1leHBhbmQtc20gbmF2YmFyLXRvZ2dsZWFibGUtc20gbmF2YmFyLWxpZ2h0ICBib3JkZXItYm90dG9tIGJveC1zaGFkb3cgbWItMyBcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDtcIj5cclxuXHJcbiAgICAgIDxpbWcgKm5nSWY9XCJhcHBDb25maWcubG9nbyE9JydcIiBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJoZWlnaHQ6IDUwcHg7IG1hcmdpbi1yaWdodDogMmVtXCIgLz5cclxuXHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDtcIj5cclxuICAgICAgICAgICAgICB7e2FwcENvbmZpZy5hcHBOYW1lfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm11bHRpdGVuYW50ICYmIHRlbmFudE5hbWVcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIj5cclxuICAgICAgICAgICAgICB7e3RlbmFudE5hbWV9fVxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm11bHRpdGVuYW50XCIgc3R5bGU9XCJmb250LXNpemU6IDIycHg7XCI+XHJcbiAgICAgICAgICB7e2FwcENvbmZpZy5hcHBOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFTZXJ2aWNlLmFwcENvbmZpZy5tdWx0aXRlbmFudFwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4OyA7IGZvbnQtd2VpZ2h0OiA0MDA7XCIgW25nU3R5bGVdPVwieydtYXJnaW4tdG9wJzogZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm11bHRpdGVuYW50ID8gJzEycHgnIDogJyd9XCI+XHJcbiAgICAgICAgICB7e2FwcENvbmZpZy5hcHBOYW1lfX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFTZXJ2aWNlLmFwcENvbmZpZy5tdWx0aXRlbmFudCAmJiB0ZW5hbnROYW1lXCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IG1hcmdpbi1ib3R0b206IDVweDtcIj5cclxuICAgICAgICAgIHt7dGVuYW50TmFtZX19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLXRhcmdldD1cIi5uYXZiYXItY29sbGFwc2VcIiBhcmlhLWxhYmVsPVwiVG9nZ2xlIG5hdmlnYXRpb25cIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiAoY2xpY2spPVwidG9nZ2xlKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyLWljb25cIj48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPGRpdiAqbmdJZj1cIm15Um9sZVwiIGNsYXNzPVwiIG5hdmJhci1jb2xsYXBzZSBjb2xsYXBzZSBkLXNtLWlubGluZS1mbGV4IGZsZXgtc20tcm93LXJldmVyc2Ugc3RhY2stdG9wXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDBweDtcIiBbbmdDbGFzc109XCJ7IHNob3c6IGlzRXhwYW5kZWQsIG5hdml0ZW1zOiBpc0V4cGFuZGVkIH1cIiA+XHJcblxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJsb2dvZmYoKVwiID4gPG1hdC1pY29uPmxvZ291dDwvbWF0LWljb24+IDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm11bHRpdGVuYW50XCI+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlZGlyZWN0VG8oJ2hvbWUvYWRtaW4vdGVuYW50LXNldHRpbmdzJylcIiA+IDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtaWNvbnMtcm91bmRcIj5hcGFydG1lbnQ8L21hdC1pY29uPiA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVkaXJlY3RUbygnaG9tZS9hZG1pbi9idWcnKVwiPiA8bWF0LWljb24gPnN1cHBvcnRfYWdlbnQ8L21hdC1pY29uPiA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZWRpcmVjdFRvKCdob21lL2FkbWluL3RlbmFudHMnKVwiPiA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLWljb25zLXJvdW5kXCI+YXBhcnRtZW50PC9tYXQtaWNvbj4gPC9idXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBpZD1cImJ0blVzZXJcIiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJwcm9maWxlTWVudVwiICA+PG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiAyNHB4O1wiPmFjY291bnRfY2lyY2xlPC9tYXQtaWNvbj4gICZuYnNwO3t7bG9nZ2VkVXNlckZ1bGxOYW1lfX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPG1hdC1tZW51ICNwcm9maWxlTWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgIDxidXR0b24gaWQ9XCJidG5Qcm9maWxlXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVkaXJlY3RUbygnaG9tZS91c2VyL3Byb2ZpbGUnKVwiID5Qcm9maWxlPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGlkPVwiYnRuTG9nT2ZmXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb2ZmKClcIj5Mb2cgT2ZmPC9idXR0b24+XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhcHBDb25maWcuY2FwSXRlbXNcIj5cclxuXHJcbiAgICAgICAgICA8IS0tIE1lbnUgSXRlbSAtLT5cclxuICAgICAgICAgIDxidXR0b24gaWQ9XCJidG5NZW51XCIgKm5nSWY9XCJteVJvbGVbaXRlbS5uYW1lXSAmJiAhaXRlbS5jYXBTdWJJdGVtcyAmJiBpdGVtLnNob3dNZW51XCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwicmVkaXJlY3RUbyhpdGVtLmxpbmspXCI+e3tpdGVtLmRpc3BsYXl9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDwhLS0gTWVudSBJdGVtIHdpdGggU3ViIGl0ZW1zIGlnbm9yZWQgLS0+XHJcbiAgICAgICAgICA8YnV0dG9uIGlkPVwiYnRuTWVudVwiICpuZ0lmPVwibXlSb2xlW2l0ZW0ubmFtZV0gJiYgaXRlbS5jYXBTdWJJdGVtcyAmJiBpdGVtLnNob3dNZW51ICYmIGl0ZW0uaWdub3JlU3Vic0Rpc3BsYXlcIiBtYXQtYnV0dG9uIChjbGljayk9XCJyZWRpcmVjdFRvKGl0ZW0ubGluaylcIj57e2l0ZW0uZGlzcGxheX19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPCEtLSBNZW51IEl0ZW0gd2l0aCBTdWIgaXRlbXMgdG8gZGlzcGxheS0tPlxyXG4gICAgICAgICAgPGJ1dHRvbiBpZD1cImJ0bk1lbnVcIiAqbmdJZj1cIm15Um9sZVtpdGVtLm5hbWVdICYmIGl0ZW0uY2FwU3ViSXRlbXMgJiYgaXRlbS5zaG93TWVudSAmJiAhaXRlbS5pZ25vcmVTdWJzRGlzcGxheVwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFkbWluTWVudVwiPnt7aXRlbS5kaXNwbGF5fX08L2J1dHRvbj5cclxuXHJcblxyXG4gICAgICAgICAgPCEtLSBTdWIgTWVudSBJdGVtcyAtLT5cclxuICAgICAgICAgIDxtYXQtbWVudSAjYWRtaW5NZW51PVwibWF0TWVudVwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBpdGVtLmNhcFN1Ykl0ZW1zXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJteVJvbGVbc3ViSXRlbS5uYW1lXSAmJiBzdWJJdGVtLnNob3dNZW51XCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicmVkaXJlY3RUbyhzdWJJdGVtLmxpbmspXCI+e3tzdWJJdGVtLmRpc3BsYXl9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvbmF2PlxyXG5cclxuPC9oZWFkZXI+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHRpbi1iZy1pbWFnZVwiICpuZ0lmPVwiZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm5hdmlnYXRpb24gPT0gJ3RvcCdcIj5cclxuICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgPHNwYS1sb2FkZXIgW2xvZ29dPVwidGhpcy5kYXRhU2VydmljZS5hcHBDb25maWcubG9nb1wiPjwvc3BhLWxvYWRlcj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbjwhLS0gU0lERSAtLT5cclxuPG1hdC10b29sYmFyIGNsYXNzPVwidGluLWJnLWltYWdlLXRvb2xiYXJcIiAqbmdJZj1cImxvZ2dlZGluICYmIGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5uYXZpZ2F0aW9uID09ICdzaWRlJ1wiIHN0eWxlPVwicGFkZGluZzogMHB4IDhweDtcIj5cclxuXHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZSgpXCIgbWF0VG9vbHRpcD1cIk1lbnVcIj5cclxuICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPGltZyBbc3JjXT1cImRhdGFTZXJ2aWNlLmFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJoZWlnaHQ6IDUwcHg7XCIgLz5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDsgXCI+XHJcblxyXG4gICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgaGVpZ2h0OiAyNXB4OyBmb250LXdlaWdodDogNDAwO1wiIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6IGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5tdWx0aXRlbmFudCA/ICcxMnB4JyA6ICcnfVwiPlxyXG4gICAgICB7e2FwcENvbmZpZy5hcHBOYW1lfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhU2VydmljZS5hcHBDb25maWcubXVsdGl0ZW5hbnQgJiYgdGVuYW50TmFtZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBtYXJnaW4tYm90dG9tOiA1cHg7XCI+XHJcbiAgICAgIHt7dGVuYW50TmFtZX19XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgPHNwYW4gY2xhc3M9XCJ0b29sYmFyLWl0ZW0tc3BhY2VyXCI+PC9zcGFuPlxyXG5cclxuICA8IS0tIGJ1dHRvbnMgLS0+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJkYXRhU2VydmljZS5hcHBDb25maWcubXVsdGl0ZW5hbnRcIj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVkaXJlY3RUbygnaG9tZS9hZG1pbi90ZW5hbnQtc2V0dGluZ3MnKVwiID4gPG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1pY29ucy1yb3VuZFwiPmFwYXJ0bWVudDwvbWF0LWljb24+IDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gKm5nSWY9XCIhc21hbGxTY3JlZW5cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlZGlyZWN0VG8oJ2hvbWUvYWRtaW4vYnVnJylcIj4gPG1hdC1pY29uID5oZWxwPC9tYXQtaWNvbj4gPC9idXR0b24+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uICpuZ0lmPVwiIXNtYWxsU2NyZWVuXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJOb3RpZmljYXRpb25zXCI+PG1hdC1pY29uPm5vdGlmaWNhdGlvbnM8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTXkgQWNjb3VudFwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJ1c2VyQWNjb3VudE1lbnVcIj48bWF0LWljb24+YWNjb3VudF9jaXJjbGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uICpuZ0lmPVwiIXNtYWxsU2NyZWVuXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJsb2dvZmYoKVwiPiA8bWF0LWljb24+bG9nb3V0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcblxyXG4gIDwhLS0gbXkgYWNjb3VudCBtZW51IC0tPlxyXG4gIDxtYXQtbWVudSAjdXNlckFjY291bnRNZW51IFtvdmVybGFwVHJpZ2dlcl09XCJmYWxzZVwiIHlQb3NpdGlvbj1cImJlbG93XCI+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCJob21lL3VzZXIvcHJvZmlsZVwiPlxyXG4gICAgICA8bWF0LWljb24+cGVyc29uPC9tYXQtaWNvbj48c3Bhbj5Qcm9maWxlPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICByb3V0ZXJMaW5rPVwiaG9tZS9hZG1pbi9idWdcIiAqbmdJZj1cImRhdGFTZXJ2aWNlLmFwcENvbmZpZy5tdWx0aXRlbmFudCAmJiBzbWFsbFNjcmVlblwiPlxyXG4gICAgICA8bWF0LWljb24+aGVscDwvbWF0LWljb24+IDxzcGFuPkhlbHA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImxvZ29mZigpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5sb2dvdXQ8L21hdC1pY29uPkxvZ291dFxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gIDwvbWF0LW1lbnU+XHJcblxyXG48L21hdC10b29sYmFyPlxyXG5cclxuXHJcblxyXG5cclxuPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBjbGFzcz1cImFwcC1jb250YWluZXJcIiBbaGFzQmFja2Ryb3BdPVwic21hbGxTY3JlZW5cIiAqbmdJZj1cImxvZ2dlZGluICYmIGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5uYXZpZ2F0aW9uID09ICdzaWRlJ1wiPlxyXG5cclxuICA8bWF0LXNpZGVuYXYgI3NpZGVuYXYgW21vZGVdPVwic21hbGxTY3JlZW4gPyAnb3ZlcicgOiAnb3ZlcidcIiBbY2xhc3MubWF0LWVsZXZhdGlvbi16NF09XCJ0cnVlXCIgW29wZW5lZF09XCJpc0V4cGFuZGVkXCIgIGNsYXNzPVwiYXBwLXNpZGVuYXYgc2lkZS1jb2xvclwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgPG1hdC1uYXYtbGlzdCA+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYXAgb2YgZGF0YVNlcnZpY2UuYXBwQ29uZmlnLmNhcEl0ZW1zXCIgPlxyXG5cclxuICAgICAgICA8IS0tIE1lbnUgaXRlbSAtLT5cclxuICAgICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109XCJjYXAubGlua1wiICAqbmdJZj1cIm15Um9sZVtjYXAubmFtZV0gJiYgY2FwLnNob3dNZW51ICYmICghY2FwLmNhcFN1Ykl0ZW1zIHx8IGNhcC5jYXBTdWJJdGVtcyAmJiBjYXAuaWdub3JlU3Vic0Rpc3BsYXkpXCIgc3R5bGU9XCJoZWlnaHQ6IDQwcHg7Zm9udC1zaXplOiAxNXB4O1wiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCI+e3tjYXAuaWNvbn19PC9tYXQtaWNvbj57e2NhcC5kaXNwbGF5fX1cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcblxyXG4gICAgICAgIDwhLS0gTWVudSBXaXRoIFN1YiBpdGVtcyAtLT5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cInNpZGUtY29sb3JcIiBbY2xhc3MubWF0LWVsZXZhdGlvbi16MF09XCJ0cnVlXCIgICpuZ0lmPVwibXlSb2xlW2NhcC5uYW1lXSAmJiBjYXAuc2hvd01lbnUgJiYgY2FwLmNhcFN1Ykl0ZW1zICYmICFjYXAuaWdub3JlU3Vic0Rpc3BsYXlcIj5cclxuXHJcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgc3R5bGU9XCJoZWlnaHQ6IDQwcHg7cGFkZGluZy1sZWZ0OiAxNXB4O1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIj57e2NhcC5pY29uICE9ICduYXZpZ2F0ZV9uZXh0JyA/IGNhcC5pY29uIDogJ2ZpYmVyX21hbnVhbF9yZWNvcmQnIH19PC9tYXQtaWNvbj57e2NhcC5kaXNwbGF5fX1cclxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSBTdWIgaXRlbXMgLS0+XHJcbiAgICAgICAgICA8bWF0LW5hdi1saXN0ICpuZ0Zvcj1cImxldCBjYXBTdWIgb2YgY2FwLmNhcFN1Ykl0ZW1zXCI+XHJcblxyXG4gICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109XCJjYXBTdWIubGlua1wiIHN0eWxlPVwiaGVpZ2h0OiAzMHB4OyBmb250LXNpemU6IDE1cHg7XCIgKGNsaWNrKT1cInRvZ2dsZSgpXCIgKm5nSWY9XCJteVJvbGVbY2FwLm5hbWVdICYmIGNhcC5zaG93TWVudVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPnt7Y2FwU3ViLmljb259fTwvbWF0LWljb24+e3tjYXBTdWIuZGlzcGxheX19XHJcbiAgICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuXHJcbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuXHJcbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgPC9tYXQtc2lkZW5hdj5cclxuXHJcblxyXG5cclxuICA8bWF0LXNpZGVuYXYtY29udGVudCBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCB0aW4tYmctaW1hZ2VcIiAqbmdJZj1cImxvZ2dlZGluICYmIGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5uYXZpZ2F0aW9uID09ICdzaWRlJ1wiPlxyXG4gICAgPGhyIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4O1wiPlxyXG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gICAgPHNwYS1sb2FkZXIgW2xvZ29dPVwidGhpcy5kYXRhU2VydmljZS5hcHBDb25maWcubG9nb1wiPjwvc3BhLWxvYWRlcj5cclxuICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcblxyXG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cclxuXHJcblxyXG48IS0tIGZvb3RlciAtLT5cclxuPGRpdiBjbGFzcz1cInRpbi1jZW50ZXJcIiAqbmdJZj1cImxvZ2dlZGluICYmIGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5uYXZpZ2F0aW9uID09ICdzaWRlJ1wiPlxyXG4gIDxsYWJlbCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxMnB4O1wiPiZjb3B5OyB7e25vd0RhdGUgfCBkYXRlIDogJ3l5eXknfX0ge3tmb290ZXJ9fTwvbGFiZWw+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgdGluLWJnLWltYWdlXCIgKm5nSWY9XCIhbG9nZ2VkaW4gJiYgZGF0YVNlcnZpY2UuYXBwQ29uZmlnLm5hdmlnYXRpb24gPT0gJ3NpZGUnXCI+XHJcbiAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gIDxzcGEtbG9hZGVyIFtsb2dvXT1cInRoaXMuZGF0YVNlcnZpY2UuYXBwQ29uZmlnLmxvZ29cIj48L3NwYS1sb2FkZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class NotificationsComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
NotificationsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NotificationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
NotificationsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NotificationsComponent, selector: "spa-notifications", ngImport: i0, template: "<p>notifications works!</p>\n", styles: [""] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NotificationsComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'spa-notifications', template: "<p>notifications works!</p>\n" }]
|
|
13
|
+
}], ctorParameters: function () { return []; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBT2xELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsZ0JBQWdCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7O21IQUxVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHlEQ1BuQywrQkFDQTsyRkRNYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3BhLW5vdGlmaWNhdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25vdGlmaWNhdGlvbnMuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxufVxuIiwiPHA+bm90aWZpY2F0aW9ucyB3b3JrcyE8L3A+XG4iXX0=
|