@resolveio/client-lib-core 15.5.2 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/esm2022/lib/account-manager.service.mjs +229 -0
  2. package/esm2022/lib/auth/auth-guard.service.mjs +174 -0
  3. package/esm2022/lib/auth/auth-permissions.service.mjs +23 -0
  4. package/esm2022/lib/auth/auth.service.mjs +251 -0
  5. package/esm2022/lib/auth/auth365.component.mjs +51 -0
  6. package/esm2022/lib/auth/can-deactivate-guard.service.mjs +13 -0
  7. package/esm2022/lib/auth/enroll.component.mjs +88 -0
  8. package/esm2022/lib/auth/forgot-password.component.mjs +89 -0
  9. package/esm2022/lib/core.component.mjs +404 -0
  10. package/esm2022/lib/core.module.mjs +176 -0
  11. package/esm2022/lib/core.service.mjs +88 -0
  12. package/esm2022/lib/directive/focus.mjs +24 -0
  13. package/esm2022/lib/directive/scroll.mjs +54 -0
  14. package/esm2022/lib/home/home.component.mjs +84 -0
  15. package/esm2022/lib/logger/logger.component.mjs +229 -0
  16. package/esm2022/lib/models/app-status.model.mjs +2 -0
  17. package/esm2022/lib/models/collection-document.model.mjs +2 -0
  18. package/esm2022/lib/models/cron-job.model.mjs +2 -0
  19. package/esm2022/lib/models/dialog.model.mjs +2 -0
  20. package/esm2022/lib/models/file.model.mjs +2 -0
  21. package/esm2022/lib/models/log-method-latency.model.mjs +2 -0
  22. package/esm2022/lib/models/navbar-main-tab.model.mjs +2 -0
  23. package/esm2022/lib/models/pagination.model.mjs +2 -0
  24. package/esm2022/lib/models/permission.model.mjs +2 -0
  25. package/esm2022/lib/models/select-data-label.model.mjs +2 -0
  26. package/esm2022/lib/models/subscription.model.mjs +2 -0
  27. package/esm2022/lib/models/support-ticket.model.mjs +2 -0
  28. package/esm2022/lib/models/user-group.model.mjs +2 -0
  29. package/esm2022/lib/models/user.model.mjs +2 -0
  30. package/esm2022/lib/offline-db.mjs +519 -0
  31. package/esm2022/lib/offline-manager.service.mjs +109 -0
  32. package/esm2022/lib/pipes/domsanitizor.pipe.mjs +29 -0
  33. package/esm2022/lib/pipes/filter.pipe.mjs +36 -0
  34. package/esm2022/lib/pipes/json-parse.pipe.mjs +29 -0
  35. package/esm2022/lib/pipes/minus-currency.pipe.mjs +16 -0
  36. package/esm2022/lib/pipes/phone.pipe.mjs +47 -0
  37. package/esm2022/lib/pipes/pipe.module.mjs +54 -0
  38. package/esm2022/lib/pipes/reverse-list.pipe.mjs +17 -0
  39. package/esm2022/lib/pipes/titlecase.pipe.mjs +22 -0
  40. package/esm2022/lib/report-builder.permission.mjs +13 -0
  41. package/esm2022/lib/resolveio-class.mjs +50 -0
  42. package/esm2022/lib/shared/shared.module.mjs +96 -0
  43. package/esm2022/lib/socket-manager.service.mjs +340 -0
  44. package/esm2022/lib/socket.service.mjs +200 -0
  45. package/esm2022/lib/super-admin.permission.mjs +9 -0
  46. package/esm2022/lib/support-ticket/detail/support-ticket-detail.component.mjs +211 -0
  47. package/esm2022/lib/support-ticket/edit/support-ticket-edit.component.mjs +131 -0
  48. package/esm2022/lib/support-ticket/list/support-ticket-list.component.mjs +142 -0
  49. package/esm2022/lib/support-ticket/new/support-ticket-new.component.mjs +121 -0
  50. package/esm2022/lib/support-ticket/support-ticket.component.mjs +67 -0
  51. package/esm2022/lib/support-ticket/support-ticket.module.mjs +50 -0
  52. package/esm2022/lib/support-ticket/support-ticket.routing.mjs +20 -0
  53. package/esm2022/lib/support-ticket/support-ticket.service.mjs +16 -0
  54. package/esm2022/lib/token-manager.service.mjs +25 -0
  55. package/esm2022/lib/user-settings/settings/users-settings.component.mjs +302 -0
  56. package/esm2022/lib/user-settings/user-settings.component.mjs +61 -0
  57. package/esm2022/lib/user-settings/user-settings.module.mjs +41 -0
  58. package/esm2022/lib/user-settings/user-settings.permission.mjs +10 -0
  59. package/esm2022/lib/user-settings/user-settings.routing.mjs +14 -0
  60. package/esm2022/lib/user-settings/user-settings.service.mjs +16 -0
  61. package/esm2022/lib/util/action-name.helper.mjs +9 -0
  62. package/esm2022/lib/util/aws.service.mjs +80 -0
  63. package/esm2022/lib/util/common.helper.mjs +133 -0
  64. package/esm2022/lib/util/validation.service.mjs +185 -0
  65. package/esm2022/lib/util/window-resize.service.mjs +38 -0
  66. package/esm2022/lib/util/window.service.mjs +16 -0
  67. package/esm2022/lib/widgets/alert/alert.model.mjs +2 -0
  68. package/esm2022/lib/widgets/alert/alert.service.mjs +79 -0
  69. package/esm2022/lib/widgets/collapse-table/collapse-table.component.mjs +83 -0
  70. package/esm2022/lib/widgets/collapse-table/collapse-table.module.mjs +34 -0
  71. package/esm2022/lib/widgets/data-table/data-table.component.mjs +84 -0
  72. package/esm2022/lib/widgets/data-table/data-table.model.mjs +2 -0
  73. package/esm2022/lib/widgets/data-table/data-table.module.mjs +41 -0
  74. package/esm2022/lib/widgets/date-shortcut/date-shortcut.component.mjs +198 -0
  75. package/esm2022/lib/widgets/date-shortcut/date-shortcut.module.mjs +32 -0
  76. package/esm2022/lib/widgets/dialog/dialog.confirm.content.mjs +67 -0
  77. package/esm2022/lib/widgets/dialog/dialog.error.content.mjs +60 -0
  78. package/esm2022/lib/widgets/dialog/dialog.input.content.mjs +200 -0
  79. package/esm2022/lib/widgets/dialog/dialog.login.content.mjs +354 -0
  80. package/esm2022/lib/widgets/dialog/dialog.notify.content.mjs +60 -0
  81. package/esm2022/lib/widgets/dialog/dialog.register.content.mjs +333 -0
  82. package/esm2022/lib/widgets/dialog/dialog.select-array-objs.content.mjs +203 -0
  83. package/esm2022/lib/widgets/dialog/dialog.select-array.content.mjs +310 -0
  84. package/esm2022/lib/widgets/dialog/dialog.select-data-labels.content.mjs +196 -0
  85. package/esm2022/lib/widgets/dialog/dialog.select-datetime.content.mjs +191 -0
  86. package/esm2022/lib/widgets/dialog/dialog.select-with-buttons-url.content.mjs +166 -0
  87. package/esm2022/lib/widgets/dialog/dialog.service.mjs +98 -0
  88. package/esm2022/lib/widgets/file/file-upload.component.mjs +433 -0
  89. package/esm2022/lib/widgets/file/file-upload.module.mjs +48 -0
  90. package/esm2022/lib/widgets/form-button/form-button.component.mjs +97 -0
  91. package/esm2022/lib/widgets/form-button/form-button.module.mjs +28 -0
  92. package/esm2022/lib/widgets/navbar-main/navbar-main.component.mjs +222 -0
  93. package/esm2022/lib/widgets/navbar-module/navbar-module.component.mjs +108 -0
  94. package/esm2022/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
  95. package/esm2022/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +41 -0
  96. package/esm2022/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +24 -0
  97. package/esm2022/lib/widgets/scheduler/scheduler.component.mjs +186 -0
  98. package/esm2022/lib/widgets/scheduler/scheduler.module.mjs +37 -0
  99. package/esm2022/lib/widgets/sort-table/sort-table-header.component.mjs +72 -0
  100. package/esm2022/lib/widgets/sort-table/sort-table-ngfor.component.mjs +49 -0
  101. package/esm2022/lib/widgets/sort-table/sort-table.directive.mjs +177 -0
  102. package/esm2022/lib/widgets/sort-table/sort-table.module.mjs +38 -0
  103. package/esm2022/lib/widgets/user-role/user-role.component.mjs +29 -0
  104. package/esm2022/lib/widgets/user-role/user-role.module.mjs +24 -0
  105. package/esm2022/public_api.mjs +91 -0
  106. package/esm2022/resolveio-client-lib-core.mjs +5 -0
  107. package/fesm2022/resolveio-client-lib-core.mjs +9019 -0
  108. package/fesm2022/resolveio-client-lib-core.mjs.map +1 -0
  109. package/index.d.ts +3 -0
  110. package/lib/auth/auth-guard.service.d.ts +2 -2
  111. package/lib/auth/can-deactivate-guard.service.d.ts +1 -2
  112. package/lib/core.component.d.ts +1 -2
  113. package/lib/core.module.d.ts +26 -29
  114. package/lib/directive/focus.d.ts +1 -1
  115. package/lib/directive/scroll.d.ts +1 -1
  116. package/lib/logger/logger.component.d.ts +0 -2
  117. package/lib/models/dialog.model.d.ts +1 -1
  118. package/lib/models/pagination.model.d.ts +1 -0
  119. package/lib/models/user-group.model.d.ts +0 -1
  120. package/lib/offline-db.d.ts +1 -5
  121. package/lib/offline-manager.service.d.ts +1 -4
  122. package/lib/socket-manager.service.d.ts +5 -34
  123. package/lib/socket.service.d.ts +3 -17
  124. package/lib/token-manager.service.d.ts +2 -4
  125. package/lib/util/aws.service.d.ts +1 -2
  126. package/lib/util/common.helper.d.ts +1 -3
  127. package/lib/util/window-resize.service.d.ts +6 -5
  128. package/lib/widgets/collapse-table/collapse-table.component.d.ts +1 -1
  129. package/lib/widgets/data-table/data-table.component.d.ts +1 -1
  130. package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +1 -5
  131. package/lib/widgets/dialog/dialog.confirm.content.d.ts +1 -1
  132. package/lib/widgets/dialog/dialog.error.content.d.ts +1 -1
  133. package/lib/widgets/dialog/dialog.input.content.d.ts +1 -1
  134. package/lib/widgets/dialog/dialog.login.content.d.ts +1 -1
  135. package/lib/widgets/dialog/dialog.notify.content.d.ts +1 -1
  136. package/lib/widgets/dialog/dialog.select-array-objs.content.d.ts +1 -1
  137. package/lib/widgets/dialog/dialog.select-array.content.d.ts +1 -1
  138. package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +1 -1
  139. package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +1 -1
  140. package/lib/widgets/dialog/dialog.select-with-buttons-url.content.d.ts +1 -1
  141. package/lib/widgets/file/file-upload.component.d.ts +1 -1
  142. package/lib/widgets/file/file-upload.module.d.ts +2 -2
  143. package/lib/widgets/form-button/form-button.component.d.ts +1 -1
  144. package/lib/widgets/navbar-main/navbar-main.component.d.ts +1 -2
  145. package/lib/widgets/navbar-module/navbar-module.component.d.ts +1 -1
  146. package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +1 -1
  147. package/lib/widgets/sort-table/sort-table-header.component.d.ts +1 -1
  148. package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +1 -1
  149. package/lib/widgets/sort-table/sort-table.directive.d.ts +8 -1
  150. package/lib/widgets/user-role/user-role.component.d.ts +1 -1
  151. package/package.json +5 -6
  152. package/fesm2020/resolveio-client-lib-core.min.mjs +0 -1
  153. package/lib/logger/diff-viewer.component.d.ts +0 -35
@@ -0,0 +1,200 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
3
+ import { FormControl, FormBuilder } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "../form-button/form-button.component";
8
+ import * as i4 from "@ng-select/ng-select";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "../../directive/focus";
11
+ // tslint:disable-next-line:component-class-suffix
12
+ export class DialogInputContent {
13
+ _activeModal;
14
+ _fb;
15
+ title = '';
16
+ inputFields = [];
17
+ formInput;
18
+ states = [
19
+ 'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine',
20
+ 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio',
21
+ 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
22
+ ];
23
+ constructor(_activeModal, _fb) {
24
+ this._activeModal = _activeModal;
25
+ this._fb = _fb;
26
+ }
27
+ ngOnInit() {
28
+ this.formInput = this._fb.group({});
29
+ for (let i = 0; i < this.inputFields.length; i++) {
30
+ if (this.inputFields[i].validators === null) {
31
+ this.formInput.addControl(this.inputFields[i].form, new FormControl({ value: this.inputFields[i].data, disabled: this.inputFields[i].disabled }));
32
+ }
33
+ else {
34
+ this.formInput.addControl(this.inputFields[i].form, new FormControl({ value: this.inputFields[i].data, disabled: this.inputFields[i].disabled }, this.inputFields[i].validators));
35
+ }
36
+ }
37
+ }
38
+ validateInput(inputField, formInput) {
39
+ if (inputField.disabled) {
40
+ return '';
41
+ }
42
+ let valid = true;
43
+ for (let i = 0; i < inputField.validators.length; i++) {
44
+ if (formInput.controls[inputField.form].hasError([inputField.validatorErrors[i]])) {
45
+ valid = false;
46
+ }
47
+ }
48
+ if (valid && formInput.controls[inputField.form].value !== null) {
49
+ return 'is-valid';
50
+ }
51
+ else if (!inputField.validators.length || (!inputField.required && valid)) {
52
+ return '';
53
+ }
54
+ return 'is-invalid';
55
+ }
56
+ getErrorMessages(inputField, formInput) {
57
+ let res = [];
58
+ for (let i = 0; i < inputField.validators.length; i++) {
59
+ if (formInput.controls[inputField.form].hasError([inputField.validatorErrors[i]])) {
60
+ res.push(inputField.validatorMsg[i]);
61
+ }
62
+ }
63
+ return res;
64
+ }
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogInputContent, deps: [{ token: i1.NgbActiveModal }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogInputContent, selector: "ng-component", inputs: { title: "title", inputFields: "inputFields" }, ngImport: i0, template: `
67
+ <form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">
68
+ <div class="modal-header">
69
+ <h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>
70
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
71
+ <span aria-hidden="true">&times;</span>
72
+ </button>
73
+ </div>
74
+ <div class="modal-body">
75
+ <div *ngFor="let inputField of inputFields; let i = index">
76
+ <div class="form-group">
77
+ <label class="form-control-label">{{inputField.label}}</label>
78
+ <em *ngIf="formInput.controls[inputField.form].hasError('required') && inputField.required">- Required</em>
79
+ <em *ngIf="!formInput.controls[inputField.form].hasError('required') && formInput.controls[inputField.form].invalid">- Invalid</em>
80
+ <div *ngIf="inputField.type !== 'state' && inputField.type !== 'textarea' && inputField.type !== 'number' && inputField.type !== 'select' && inputField.type !== 'boolean'">
81
+ <input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : 'text')">
82
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
83
+ <div class="invalid-feedback">{{errorMsg}}</div>
84
+ </ng-container>
85
+ </div>
86
+ <div *ngIf="inputField.type === 'select'">
87
+ <ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">
88
+ <ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === 'disabled'">{{opt.text}}</ng-option>
89
+ </ng-select>
90
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
91
+ <div class="invalid-feedback">{{errorMsg}}</div>
92
+ </ng-container>
93
+ </div>
94
+ <div *ngIf="inputField.type === 'state'">
95
+ <select [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]">
96
+ <option value="">Select State</option>
97
+ <option *ngFor="let state of states" [value]="state">{{state}}</option>
98
+ </select>
99
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
100
+ <div class="invalid-feedback">{{errorMsg}}</div>
101
+ </ng-container>
102
+ </div>
103
+ <div *ngIf="inputField.type === 'textarea'">
104
+ <textarea rows="4" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]"></textarea>
105
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
106
+ <div class="invalid-feedback">{{errorMsg}}</div>
107
+ </ng-container>
108
+ </div>
109
+ <div *ngIf="inputField.type === 'number'">
110
+ <input [formControlName]="inputField.form" type="number" [ngClass]="['form-control', validateInput(inputField, formInput)]">
111
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
112
+ <div class="invalid-feedback">{{errorMsg}}</div>
113
+ </ng-container>
114
+ </div>
115
+ <div *ngIf="inputField.type === 'boolean'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">
116
+ <i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>
117
+ <i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ <div class="modal-footer">
123
+ <form-button [form]="formInput"></form-button>
124
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
125
+ </div>
126
+ </form>
127
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.FormButtonComponent, selector: "form-button", inputs: ["form", "disabled", "type"] }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.FocusDirective, selector: "[focus]", inputs: ["focus"] }] });
128
+ }
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogInputContent, decorators: [{
130
+ type: Component,
131
+ args: [{
132
+ template: `
133
+ <form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">
134
+ <div class="modal-header">
135
+ <h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>
136
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
137
+ <span aria-hidden="true">&times;</span>
138
+ </button>
139
+ </div>
140
+ <div class="modal-body">
141
+ <div *ngFor="let inputField of inputFields; let i = index">
142
+ <div class="form-group">
143
+ <label class="form-control-label">{{inputField.label}}</label>
144
+ <em *ngIf="formInput.controls[inputField.form].hasError('required') && inputField.required">- Required</em>
145
+ <em *ngIf="!formInput.controls[inputField.form].hasError('required') && formInput.controls[inputField.form].invalid">- Invalid</em>
146
+ <div *ngIf="inputField.type !== 'state' && inputField.type !== 'textarea' && inputField.type !== 'number' && inputField.type !== 'select' && inputField.type !== 'boolean'">
147
+ <input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : 'text')">
148
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
149
+ <div class="invalid-feedback">{{errorMsg}}</div>
150
+ </ng-container>
151
+ </div>
152
+ <div *ngIf="inputField.type === 'select'">
153
+ <ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">
154
+ <ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === 'disabled'">{{opt.text}}</ng-option>
155
+ </ng-select>
156
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
157
+ <div class="invalid-feedback">{{errorMsg}}</div>
158
+ </ng-container>
159
+ </div>
160
+ <div *ngIf="inputField.type === 'state'">
161
+ <select [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]">
162
+ <option value="">Select State</option>
163
+ <option *ngFor="let state of states" [value]="state">{{state}}</option>
164
+ </select>
165
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
166
+ <div class="invalid-feedback">{{errorMsg}}</div>
167
+ </ng-container>
168
+ </div>
169
+ <div *ngIf="inputField.type === 'textarea'">
170
+ <textarea rows="4" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]"></textarea>
171
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
172
+ <div class="invalid-feedback">{{errorMsg}}</div>
173
+ </ng-container>
174
+ </div>
175
+ <div *ngIf="inputField.type === 'number'">
176
+ <input [formControlName]="inputField.form" type="number" [ngClass]="['form-control', validateInput(inputField, formInput)]">
177
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
178
+ <div class="invalid-feedback">{{errorMsg}}</div>
179
+ </ng-container>
180
+ </div>
181
+ <div *ngIf="inputField.type === 'boolean'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">
182
+ <i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>
183
+ <i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>
184
+ </div>
185
+ </div>
186
+ </div>
187
+ </div>
188
+ <div class="modal-footer">
189
+ <form-button [form]="formInput"></form-button>
190
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
191
+ </div>
192
+ </form>
193
+ `
194
+ }]
195
+ }], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.FormBuilder }]; }, propDecorators: { title: [{
196
+ type: Input
197
+ }], inputFields: [{
198
+ type: Input
199
+ }] } });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmlucHV0LmNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLmlucHV0LmNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBeUIsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWtFakYsa0RBQWtEO0FBQ2xELE1BQU0sT0FBTyxrQkFBa0I7SUFXWDtJQUFzQztJQVZoRCxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsV0FBVyxHQUFVLEVBQUUsQ0FBQztJQUVqQyxTQUFTLENBQVk7SUFFckIsTUFBTSxHQUFhO1FBQ2xCLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU87UUFDbk4sVUFBVSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNO1FBQ25OLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTO0tBQUMsQ0FBQztJQUVyTSxZQUFtQixZQUE0QixFQUFVLEdBQWdCO1FBQXRELGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFBRyxDQUFDO0lBRTdFLFFBQVE7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hKO2lCQUNJO2dCQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUNoTDtTQUNEO0lBQ0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUztRQUVsQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUVqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEYsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNkO1NBQ0Q7UUFFRCxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2hFLE9BQU8sVUFBVSxDQUFDO1NBQ2xCO2FBQ0ksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQzFFLE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFNBQVM7UUFDckMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xGLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Q7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUM7d0dBNURXLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDRHQWhFcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2RFQ7OzRGQUdXLGtCQUFrQjtrQkFqRTlCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkRUO2lCQUNEOytIQUdTLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JNb2RhbCwgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG5cdHRlbXBsYXRlOiBgXG5cdFx0PGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtSW5wdXRcIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJfYWN0aXZlTW9kYWwuY2xvc2UodGhpcy5mb3JtSW5wdXQuY29udHJvbHMpXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG5cdFx0XHRcdDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+PGkgY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZVwiIHN0eWxlPVwiY29sb3I6IGdyZWVuOyBmb250LXNpemU6IDAuODVlbVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgdGl0bGUgfX08L2g0PlxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIl9hY3RpdmVNb2RhbC5kaXNtaXNzKClcIj5cblx0XHRcdFx0XHQ8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuXHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cblx0XHRcdFx0PGRpdiAqbmdGb3I9XCJsZXQgaW5wdXRGaWVsZCBvZiBpbnB1dEZpZWxkczsgbGV0IGkgPSBpbmRleFwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj57e2lucHV0RmllbGQubGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8ZW0gKm5nSWY9XCJmb3JtSW5wdXQuY29udHJvbHNbaW5wdXRGaWVsZC5mb3JtXS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBpbnB1dEZpZWxkLnJlcXVpcmVkXCI+LSBSZXF1aXJlZDwvZW0+XG5cdFx0XHRcdFx0XHQ8ZW0gKm5nSWY9XCIhZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0uaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0uaW52YWxpZFwiPi0gSW52YWxpZDwvZW0+XG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiaW5wdXRGaWVsZC50eXBlICE9PSAnc3RhdGUnICYmIGlucHV0RmllbGQudHlwZSAhPT0gJ3RleHRhcmVhJyAmJiBpbnB1dEZpZWxkLnR5cGUgIT09ICdudW1iZXInICYmIGlucHV0RmllbGQudHlwZSAhPT0gJ3NlbGVjdCcgJiYgaW5wdXRGaWVsZC50eXBlICE9PSAnYm9vbGVhbidcIj5cblx0XHRcdFx0XHRcdDxpbnB1dCBbYXV0b2ZvY3VzXT1cImkgPT09IDAgPyB0cnVlIDogZmFsc2VcIiBbZm9jdXNdPVwiaSA9PT0gMCA/IHRydWUgOiBmYWxzZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaW5wdXRGaWVsZC5mb3JtXCIgW25nQ2xhc3NdPVwiWydmb3JtLWNvbnRyb2wnLCB2YWxpZGF0ZUlucHV0KGlucHV0RmllbGQsIGZvcm1JbnB1dCldXCIgW3R5cGVdPVwiKGlucHV0RmllbGQudHlwZSA/IGlucHV0RmllbGQudHlwZSA6ICd0ZXh0JylcIj5cblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3JNc2cgb2YgZ2V0RXJyb3JNZXNzYWdlcyhpbnB1dEZpZWxkLCBmb3JtSW5wdXQpO1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3tlcnJvck1zZ319PC9kaXY+XG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiaW5wdXRGaWVsZC50eXBlID09PSAnc2VsZWN0J1wiPlxuXHRcdFx0XHRcdFx0XHQ8bmctc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiaW5wdXRGaWVsZC5mb3JtXCIgW25nQ2xhc3NdPVwiW3ZhbGlkYXRlSW5wdXQoaW5wdXRGaWVsZCwgZm9ybUlucHV0KV1cIiBbcGxhY2Vob2xkZXJdPVwiaW5wdXRGaWVsZC5wbGFjZWhvbGRlclwiPlxuXHRcdFx0XHRcdFx0XHRcdDxuZy1vcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBpbnB1dEZpZWxkLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0LnZhbHVlXCIgW2Rpc2FibGVkXT1cIm9wdC52YWx1ZSA9PT0gJ2Rpc2FibGVkJ1wiPnt7b3B0LnRleHR9fTwvbmctb3B0aW9uPlxuXHRcdFx0XHRcdFx0XHQ8L25nLXNlbGVjdD5cblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3JNc2cgb2YgZ2V0RXJyb3JNZXNzYWdlcyhpbnB1dEZpZWxkLCBmb3JtSW5wdXQpO1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3tlcnJvck1zZ319PC9kaXY+XG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiaW5wdXRGaWVsZC50eXBlID09PSAnc3RhdGUnXCI+XG5cdFx0XHRcdFx0XHRcdDxzZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJpbnB1dEZpZWxkLmZvcm1cIiBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIHZhbGlkYXRlSW5wdXQoaW5wdXRGaWVsZCwgZm9ybUlucHV0KV1cIj5cblx0XHRcdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IFN0YXRlPC9vcHRpb24+XG5cdFx0XHRcdFx0XHRcdFx0PG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RhdGUgb2Ygc3RhdGVzXCIgW3ZhbHVlXT1cInN0YXRlXCI+e3tzdGF0ZX19PC9vcHRpb24+XG5cdFx0XHRcdFx0XHRcdDwvc2VsZWN0PlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvck1zZyBvZiBnZXRFcnJvck1lc3NhZ2VzKGlucHV0RmllbGQsIGZvcm1JbnB1dCk7XCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57e2Vycm9yTXNnfX08L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnB1dEZpZWxkLnR5cGUgPT09ICd0ZXh0YXJlYSdcIj5cblx0XHRcdFx0XHRcdFx0PHRleHRhcmVhIHJvd3M9XCI0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJpbnB1dEZpZWxkLmZvcm1cIiBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIHZhbGlkYXRlSW5wdXQoaW5wdXRGaWVsZCwgZm9ybUlucHV0KV1cIj48L3RleHRhcmVhPlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvck1zZyBvZiBnZXRFcnJvck1lc3NhZ2VzKGlucHV0RmllbGQsIGZvcm1JbnB1dCk7XCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57e2Vycm9yTXNnfX08L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnB1dEZpZWxkLnR5cGUgPT09ICdudW1iZXInXCI+XG5cdFx0XHRcdFx0XHRcdDxpbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImlucHV0RmllbGQuZm9ybVwiIHR5cGU9XCJudW1iZXJcIiBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIHZhbGlkYXRlSW5wdXQoaW5wdXRGaWVsZCwgZm9ybUlucHV0KV1cIj5cblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3JNc2cgb2YgZ2V0RXJyb3JNZXNzYWdlcyhpbnB1dEZpZWxkLCBmb3JtSW5wdXQpO1wiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3tlcnJvck1zZ319PC9kaXY+XG5cdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiaW5wdXRGaWVsZC50eXBlID09PSAnYm9vbGVhbidcIiAoY2xpY2spPVwiZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0uc2V0VmFsdWUoIWZvcm1JbnB1dC5jb250cm9sc1tpbnB1dEZpZWxkLmZvcm1dLnZhbHVlKVwiPlxuXHRcdFx0XHRcdFx0XHQ8aSAqbmdJZj1cImZvcm1JbnB1dC5jb250cm9sc1tpbnB1dEZpZWxkLmZvcm1dLnZhbHVlXCIgY2xhc3M9XCJmYSBmYS1jaGVja1wiIHN0eWxlPVwiY29sb3I6IGdyZWVuOyBmb250LXNpemU6IDI0cHg7XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdFx0XHQ8aSAqbmdJZj1cIiFmb3JtSW5wdXQuY29udHJvbHNbaW5wdXRGaWVsZC5mb3JtXS52YWx1ZVwiIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBzdHlsZT1cImNvbG9yOiByZWQ7IGZvbnQtc2l6ZTogMjRweDtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cblx0XHRcdFx0PGZvcm0tYnV0dG9uIFtmb3JtXT1cImZvcm1JbnB1dFwiPjwvZm9ybS1idXR0b24+XG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiX2FjdGl2ZU1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9mb3JtPlxuXHRgXG59KVxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBEaWFsb2dJbnB1dENvbnRlbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoKSB0aXRsZSA9ICcnO1xuXHRASW5wdXQoKSBpbnB1dEZpZWxkczogYW55W10gPSBbXTtcblxuXHRmb3JtSW5wdXQ6IEZvcm1Hcm91cDtcblxuXHRzdGF0ZXM6IHN0cmluZ1tdID0gW1xuXHRcdCdBbGFiYW1hJywgJ0FsYXNrYScsICdBcml6b25hJywgJ0Fya2Fuc2FzJywgJ0NhbGlmb3JuaWEnLCAnQ29sb3JhZG8nLCAnQ29ubmVjdGljdXQnLCAnRGVsYXdhcmUnLCAnRmxvcmlkYScsICdHZW9yZ2lhJywgJ0hhd2FpaScsICdJZGFobycsICdJbGxpbm9pcycsICdJbmRpYW5hJywgJ0lvd2EnLCAnS2Fuc2FzJywgJ0tlbnR1Y2t5JywgJ0xvdWlzaWFuYScsICdNYWluZScsXG5cdFx0J01hcnlsYW5kJywgJ01hc3NhY2h1c2V0dHMnLCAnTWljaGlnYW4nLCAnTWlubmVzb3RhJywgJ01pc3Npc3NpcHBpJywgJ01pc3NvdXJpJywgJ01vbnRhbmEnLCAnTmVicmFza2EnLCAnTmV2YWRhJywgJ05ldyBIYW1wc2hpcmUnLCAnTmV3IEplcnNleScsICdOZXcgTWV4aWNvJywgJ05ldyBZb3JrJywgJ05vcnRoIENhcm9saW5hJywgJ05vcnRoIERha290YScsICdPaGlvJyxcblx0XHQnT2tsYWhvbWEnLCAnT3JlZ29uJywgJ1Blbm5zeWx2YW5pYScsICdSaG9kZSBJc2xhbmQnLCAnU291dGggQ2Fyb2xpbmEnLCAnU291dGggRGFrb3RhJywgJ1Rlbm5lc3NlZScsICdUZXhhcycsICdVdGFoJywgJ1Zlcm1vbnQnLCAnVmlyZ2luaWEnLCAnV2FzaGluZ3RvbicsICdXZXN0IFZpcmdpbmlhJywgJ1dpc2NvbnNpbicsICdXeW9taW5nJ107XG5cblx0Y29uc3RydWN0b3IocHVibGljIF9hY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge31cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmZvcm1JbnB1dCA9IHRoaXMuX2ZiLmdyb3VwKHt9KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbnB1dEZpZWxkcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKHRoaXMuaW5wdXRGaWVsZHNbaV0udmFsaWRhdG9ycyA9PT0gbnVsbCkge1xuXHRcdFx0XHR0aGlzLmZvcm1JbnB1dC5hZGRDb250cm9sKHRoaXMuaW5wdXRGaWVsZHNbaV0uZm9ybSwgbmV3IEZvcm1Db250cm9sKHt2YWx1ZTogdGhpcy5pbnB1dEZpZWxkc1tpXS5kYXRhLCBkaXNhYmxlZDogdGhpcy5pbnB1dEZpZWxkc1tpXS5kaXNhYmxlZH0pKTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR0aGlzLmZvcm1JbnB1dC5hZGRDb250cm9sKHRoaXMuaW5wdXRGaWVsZHNbaV0uZm9ybSwgbmV3IEZvcm1Db250cm9sKHt2YWx1ZTogdGhpcy5pbnB1dEZpZWxkc1tpXS5kYXRhLCBkaXNhYmxlZDogdGhpcy5pbnB1dEZpZWxkc1tpXS5kaXNhYmxlZH0sIHRoaXMuaW5wdXRGaWVsZHNbaV0udmFsaWRhdG9ycykpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHZhbGlkYXRlSW5wdXQoaW5wdXRGaWVsZCwgZm9ybUlucHV0KSB7XG5cblx0XHRpZiAoaW5wdXRGaWVsZC5kaXNhYmxlZCkge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblxuXHRcdGxldCB2YWxpZCA9IHRydWU7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0RmllbGQudmFsaWRhdG9ycy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGZvcm1JbnB1dC5jb250cm9sc1tpbnB1dEZpZWxkLmZvcm1dLmhhc0Vycm9yKFtpbnB1dEZpZWxkLnZhbGlkYXRvckVycm9yc1tpXV0pKSB7XG5cdFx0XHRcdHZhbGlkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHZhbGlkICYmIGZvcm1JbnB1dC5jb250cm9sc1tpbnB1dEZpZWxkLmZvcm1dLnZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gJ2lzLXZhbGlkJztcblx0XHR9XG5cdFx0ZWxzZSBpZiAoIWlucHV0RmllbGQudmFsaWRhdG9ycy5sZW5ndGggfHwgKCFpbnB1dEZpZWxkLnJlcXVpcmVkICYmIHZhbGlkKSkge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblx0XHRcblx0XHRyZXR1cm4gJ2lzLWludmFsaWQnO1xuXHR9XG5cblx0Z2V0RXJyb3JNZXNzYWdlcyhpbnB1dEZpZWxkLCBmb3JtSW5wdXQpIHtcblx0XHRsZXQgcmVzID0gW107XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0RmllbGQudmFsaWRhdG9ycy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGZvcm1JbnB1dC5jb250cm9sc1tpbnB1dEZpZWxkLmZvcm1dLmhhc0Vycm9yKFtpbnB1dEZpZWxkLnZhbGlkYXRvckVycm9yc1tpXV0pKSB7XG5cdFx0XHRcdHJlcy5wdXNoKGlucHV0RmllbGQudmFsaWRhdG9yTXNnW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,354 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
3
+ import { FormBuilder, Validators } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "../responsive-button-group/responsive-button-group.component";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "../../directive/focus";
10
+ // tslint:disable-next-line:component-class-suffix
11
+ export class DialogLoginContent {
12
+ _activeModal;
13
+ _fb;
14
+ msAllowed = false;
15
+ showLoginText = true;
16
+ form;
17
+ constructor(_activeModal, _fb) {
18
+ this._activeModal = _activeModal;
19
+ this._fb = _fb;
20
+ }
21
+ ngOnInit() {
22
+ this.form = this._fb.group({
23
+ username: ['', [Validators.required]],
24
+ password: ['', [Validators.required]],
25
+ forgotPassword: [false],
26
+ });
27
+ }
28
+ toggleForgotPassword() {
29
+ this.form.controls.forgotPassword.setValue(!this.form.controls.forgotPassword.value);
30
+ if (!this.form.controls.forgotPassword.value) {
31
+ this.form.controls.password.setValidators([Validators.required]);
32
+ this.form.controls.password.enable();
33
+ }
34
+ else {
35
+ this.form.controls.password.setValue('');
36
+ this.form.controls.password.clearValidators();
37
+ this.form.controls.password.disable();
38
+ }
39
+ this.form.controls.password.updateValueAndValidity();
40
+ }
41
+ close(type) {
42
+ this._activeModal.close({
43
+ form: this.form,
44
+ type: type
45
+ });
46
+ }
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogLoginContent, deps: [{ token: i1.NgbActiveModal }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogLoginContent, selector: "ng-component", inputs: { msAllowed: "msAllowed", showLoginText: "showLoginText" }, ngImport: i0, template: `
49
+ <style>
50
+ collapse-table {
51
+ width: 100%;
52
+ }
53
+
54
+ .navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {
55
+ color: #0b4499;
56
+ }
57
+ .navbar-light .navbar-nav .nav-link {
58
+ color:#333;
59
+ }
60
+ a.nav-link.loginreg {
61
+ background-color: #0b4499;
62
+ color: #fff !important;
63
+ border-radius: 40px;
64
+ }
65
+ a.nav-link.loginreg:hover {
66
+ background: #1668e2;
67
+ }
68
+ .nav-link {
69
+ color: #333333;
70
+ font-size: 150%
71
+ }
72
+ .nav-item a.nav-link.active {
73
+ color: #0b4499;
74
+ }
75
+ .contactimg>img{
76
+ width: 100%;
77
+ }
78
+
79
+ .log-box {
80
+ padding-top: 26px;
81
+ padding-bottom: 26px;
82
+ }
83
+ .loginform .form-control, .register-form .form-control {
84
+ color: #000;
85
+ height: 52px;
86
+ }
87
+ .loginform {
88
+ margin-top: 35px;
89
+ }
90
+ .loginform label {
91
+ font-size: 18px;
92
+ font-weight: 600;
93
+ }
94
+
95
+ .loginbtn {
96
+ background: #0b4499;
97
+ width: 100%;
98
+ margin-top: 44px;
99
+ height: 52px;
100
+ font-size: 22px;
101
+ border-radius: 2px;
102
+ color: #fff !important;
103
+ }
104
+
105
+ .login365btn {
106
+ background: orange;
107
+ width: 100%;
108
+ margin-top: 44px;
109
+ height: 52px;
110
+ font-size: 22px;
111
+ border-radius: 2px;
112
+ color: #fff !important;
113
+ }
114
+
115
+ .contactimg {
116
+ position: relative;
117
+ }
118
+ .login-logo {
119
+ margin-bottom: 20px;
120
+ }
121
+
122
+ .textbox {
123
+ position: absolute;
124
+ top: 50%;
125
+ color: #fff;
126
+ padding: 40px;
127
+ transform: translate(0%, -50%);
128
+ text-align: center;
129
+ }
130
+ .sign-btn {
131
+ background: #0b4499;
132
+ width: 100%;
133
+ margin-top: 14px;
134
+ height: 52px;
135
+ font-size: 22px;
136
+ border-radius: 2px;
137
+ color: #fff !important;
138
+ }
139
+
140
+ button.btn.sign-btn:hover {
141
+ background: #1668e2;
142
+ }
143
+ </style>
144
+ <form [formGroup]="form" novalidate>
145
+ <div class="modal-header">
146
+ <h4 class="modal-title"><b>Login</b></h4>
147
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
148
+ <span aria-hidden="true">&times;</span>
149
+ </button>
150
+ </div>
151
+ <div class="modal-body" *ngIf="form">
152
+ <div class="row justify-content-md-center">
153
+ <div class="col-lg-12">
154
+ <div class="row bg-white">
155
+ <div class="col-lg-6">
156
+ <div class="contactimg">
157
+ <img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">
158
+ <div class="textbox" *ngIf="showLoginText">
159
+ <div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>
160
+ The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!
161
+ </div>
162
+ </div>
163
+ </div>
164
+ <div class="col-lg-6">
165
+ <div class="log-box">
166
+ <div class="loginform">
167
+ <div class="form-group">
168
+ <label>Username/Email</label>
169
+ <em *ngIf="form.controls.username.hasError('required')">- Required</em>
170
+ <input type="email" [ngClass]="['form-control', form.controls.username.valid ? 'is-valid' : 'is-invalid']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">
171
+ </div>
172
+ <div class="form-group">
173
+ <label>Password</label>
174
+ <em *ngIf="form.controls.password.hasError('required')">- Required</em>
175
+ <input type="password" [ngClass]="['form-control', form.controls.password.enabled ? (form.controls.password.valid ? 'is-valid' : 'is-invalid') : '']" formControlName="password" placeholder="Your Password" autocomplete="current-password">
176
+ </div>
177
+ <div class="form-check text-right">
178
+ <label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? 'Forgot Password?' : 'Enter Password'}} </a></label>
179
+ </div>
180
+ <button type="submit" class="btn loginbtn" (click)="close('ResolveIO')">{{!form.controls.forgotPassword.value ? 'Login' : 'Submit'}}</button>
181
+ <button *ngIf="msAllowed" type="submit" class="btn login365btn" (click)="close('MS')">Microsoft Single-Sign-On</button>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ <div class="modal-footer">
190
+ <responsive-button-group>
191
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
192
+ </responsive-button-group>
193
+ </div>
194
+ </form>
195
+ `, isInline: true, styles: ["\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.FocusDirective, selector: "[focus]", inputs: ["focus"] }] });
196
+ }
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogLoginContent, decorators: [{
198
+ type: Component,
199
+ args: [{
200
+ template: `
201
+ <style>
202
+ collapse-table {
203
+ width: 100%;
204
+ }
205
+
206
+ .navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {
207
+ color: #0b4499;
208
+ }
209
+ .navbar-light .navbar-nav .nav-link {
210
+ color:#333;
211
+ }
212
+ a.nav-link.loginreg {
213
+ background-color: #0b4499;
214
+ color: #fff !important;
215
+ border-radius: 40px;
216
+ }
217
+ a.nav-link.loginreg:hover {
218
+ background: #1668e2;
219
+ }
220
+ .nav-link {
221
+ color: #333333;
222
+ font-size: 150%
223
+ }
224
+ .nav-item a.nav-link.active {
225
+ color: #0b4499;
226
+ }
227
+ .contactimg>img{
228
+ width: 100%;
229
+ }
230
+
231
+ .log-box {
232
+ padding-top: 26px;
233
+ padding-bottom: 26px;
234
+ }
235
+ .loginform .form-control, .register-form .form-control {
236
+ color: #000;
237
+ height: 52px;
238
+ }
239
+ .loginform {
240
+ margin-top: 35px;
241
+ }
242
+ .loginform label {
243
+ font-size: 18px;
244
+ font-weight: 600;
245
+ }
246
+
247
+ .loginbtn {
248
+ background: #0b4499;
249
+ width: 100%;
250
+ margin-top: 44px;
251
+ height: 52px;
252
+ font-size: 22px;
253
+ border-radius: 2px;
254
+ color: #fff !important;
255
+ }
256
+
257
+ .login365btn {
258
+ background: orange;
259
+ width: 100%;
260
+ margin-top: 44px;
261
+ height: 52px;
262
+ font-size: 22px;
263
+ border-radius: 2px;
264
+ color: #fff !important;
265
+ }
266
+
267
+ .contactimg {
268
+ position: relative;
269
+ }
270
+ .login-logo {
271
+ margin-bottom: 20px;
272
+ }
273
+
274
+ .textbox {
275
+ position: absolute;
276
+ top: 50%;
277
+ color: #fff;
278
+ padding: 40px;
279
+ transform: translate(0%, -50%);
280
+ text-align: center;
281
+ }
282
+ .sign-btn {
283
+ background: #0b4499;
284
+ width: 100%;
285
+ margin-top: 14px;
286
+ height: 52px;
287
+ font-size: 22px;
288
+ border-radius: 2px;
289
+ color: #fff !important;
290
+ }
291
+
292
+ button.btn.sign-btn:hover {
293
+ background: #1668e2;
294
+ }
295
+ </style>
296
+ <form [formGroup]="form" novalidate>
297
+ <div class="modal-header">
298
+ <h4 class="modal-title"><b>Login</b></h4>
299
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
300
+ <span aria-hidden="true">&times;</span>
301
+ </button>
302
+ </div>
303
+ <div class="modal-body" *ngIf="form">
304
+ <div class="row justify-content-md-center">
305
+ <div class="col-lg-12">
306
+ <div class="row bg-white">
307
+ <div class="col-lg-6">
308
+ <div class="contactimg">
309
+ <img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">
310
+ <div class="textbox" *ngIf="showLoginText">
311
+ <div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>
312
+ The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!
313
+ </div>
314
+ </div>
315
+ </div>
316
+ <div class="col-lg-6">
317
+ <div class="log-box">
318
+ <div class="loginform">
319
+ <div class="form-group">
320
+ <label>Username/Email</label>
321
+ <em *ngIf="form.controls.username.hasError('required')">- Required</em>
322
+ <input type="email" [ngClass]="['form-control', form.controls.username.valid ? 'is-valid' : 'is-invalid']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email" autocomplete="username">
323
+ </div>
324
+ <div class="form-group">
325
+ <label>Password</label>
326
+ <em *ngIf="form.controls.password.hasError('required')">- Required</em>
327
+ <input type="password" [ngClass]="['form-control', form.controls.password.enabled ? (form.controls.password.valid ? 'is-valid' : 'is-invalid') : '']" formControlName="password" placeholder="Your Password" autocomplete="current-password">
328
+ </div>
329
+ <div class="form-check text-right">
330
+ <label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? 'Forgot Password?' : 'Enter Password'}} </a></label>
331
+ </div>
332
+ <button type="submit" class="btn loginbtn" (click)="close('ResolveIO')">{{!form.controls.forgotPassword.value ? 'Login' : 'Submit'}}</button>
333
+ <button *ngIf="msAllowed" type="submit" class="btn login365btn" (click)="close('MS')">Microsoft Single-Sign-On</button>
334
+ </div>
335
+ </div>
336
+ </div>
337
+ </div>
338
+ </div>
339
+ </div>
340
+ </div>
341
+ <div class="modal-footer">
342
+ <responsive-button-group>
343
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
344
+ </responsive-button-group>
345
+ </div>
346
+ </form>
347
+ `
348
+ }]
349
+ }], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.FormBuilder }]; }, propDecorators: { msAllowed: [{
350
+ type: Input
351
+ }], showLoginText: [{
352
+ type: Input
353
+ }] } });
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmxvZ2luLmNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLmxvZ2luLmNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBYSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUF3SnBFLGtEQUFrRDtBQUNsRCxNQUFNLE9BQU8sa0JBQWtCO0lBTVg7SUFBc0M7SUFMaEQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixhQUFhLEdBQUcsSUFBSSxDQUFDO0lBRTlCLElBQUksQ0FBWTtJQUVoQixZQUFtQixZQUE0QixFQUFVLEdBQWdCO1FBQXRELGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFBRyxDQUFDO0lBRTdFLFFBQVE7UUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzFCLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckMsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0I7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRTtZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3JDO2FBQ0k7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdEM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVk7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUk7U0FDVixDQUFDLENBQUM7SUFDSixDQUFDO3dHQXJDVyxrQkFBa0I7NEZBQWxCLGtCQUFrQix3SEF0SnBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSlQ7OzRGQUdXLGtCQUFrQjtrQkF2SjlCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSlQ7aUJBQ0Q7K0hBR1MsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuXHR0ZW1wbGF0ZTogYFxuXHRcdDxzdHlsZT5cblx0XHRcdGNvbGxhcHNlLXRhYmxlIHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cblx0XHRcdC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLmFjdGl2ZT4ubmF2LWxpbmssIC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdz4ubmF2LWxpbmsge1xuXHRcdFx0XHRjb2xvcjogIzBiNDQ5OTtcblx0XHRcdH1cblx0XHRcdC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcblx0XHRcdFx0Y29sb3I6IzMzMztcblx0XHRcdH1cblx0XHRcdGEubmF2LWxpbmsubG9naW5yZWcge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMGI0NDk5O1xuXHRcdFx0XHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA0MHB4O1xuXHRcdFx0fVxuXHRcdFx0YS5uYXYtbGluay5sb2dpbnJlZzpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMxNjY4ZTI7XG5cdFx0XHR9XG5cdFx0XHQubmF2LWxpbmsge1xuXHRcdFx0XHRjb2xvcjogIzMzMzMzMztcblx0XHRcdFx0Zm9udC1zaXplOiAxNTAlXG5cdFx0XHR9XG5cdFx0XHQubmF2LWl0ZW0gYS5uYXYtbGluay5hY3RpdmUge1xuXHRcdFx0XHRjb2xvcjogIzBiNDQ5OTtcblx0XHRcdH1cblx0XHRcdC5jb250YWN0aW1nPmltZ3tcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cblx0XHRcdC5sb2ctYm94IHtcblx0XHRcdFx0cGFkZGluZy10b3A6IDI2cHg7XG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiAyNnB4O1xuXHRcdFx0fVxuXHRcdFx0LmxvZ2luZm9ybSAuZm9ybS1jb250cm9sLCAucmVnaXN0ZXItZm9ybSAuZm9ybS1jb250cm9sIHtcblx0XHRcdFx0Y29sb3I6ICMwMDA7XG5cdFx0XHRcdGhlaWdodDogNTJweDtcblx0XHRcdH1cblx0XHRcdC5sb2dpbmZvcm0ge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAzNXB4O1xuXHRcdFx0fVxuXHRcdFx0LmxvZ2luZm9ybSBsYWJlbCB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdH1cblxuXHRcdFx0LmxvZ2luYnRuIHtcblx0XHRcdFx0YmFja2dyb3VuZDogIzBiNDQ5OTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDQ0cHg7XG5cdFx0XHRcdGhlaWdodDogNTJweDtcblx0XHRcdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0XHRcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC5sb2dpbjM2NWJ0biB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IG9yYW5nZTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDQ0cHg7XG5cdFx0XHRcdGhlaWdodDogNTJweDtcblx0XHRcdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0XHRcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC5jb250YWN0aW1nIHtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0fVxuXHRcdFx0LmxvZ2luLWxvZ28ge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRcdFx0fVxuXG5cdFx0XHQudGV4dGJveCB7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRwYWRkaW5nOiA0MHB4O1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwJSwgLTUwJSk7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdH1cblx0XHRcdC5zaWduLWJ0biB7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMwYjQ0OTk7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHRcdFx0XHRoZWlnaHQ6IDUycHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjJweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdFx0XHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXG5cdFx0XHRidXR0b24uYnRuLnNpZ24tYnRuOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZDogIzE2NjhlMjtcblx0XHRcdH1cblx0XHQ8L3N0eWxlPlxuXHRcdDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIG5vdmFsaWRhdGU+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG5cdFx0XHRcdDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+PGI+TG9naW48L2I+PC9oND5cblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJfYWN0aXZlTW9kYWwuZGlzbWlzcygpXCI+XG5cdFx0XHRcdFx0PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cblx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCIgKm5nSWY9XCJmb3JtXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlclwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cgYmctd2hpdGVcIj5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbnRhY3RpbWdcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvbG9naW5zaWdudXAvZm9ybWltZy5qcGdcIiBhbHQ9XCJpbWFnZXNcIiBjbGFzcz1cImltZy1mbHVpZFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRib3hcIiAqbmdJZj1cInNob3dMb2dpblRleHRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImxvZ2luLWxvZ29cIj48aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2xvZ2luc2lnbnVwL2xvZ2luLWxvZ28ucG5nXCIgYWx0PVwiaW1hZ2VzXCI+PC9kaXY+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFRoZSBBbGwtaW4tT25lIFNvbHV0aW9uIGZvciBUcmFja2luZyBJbnZlbnRvcnksIE9yZGVyaW5nLCBQT3MsIE1hbmFnZW1lbnQsIGFuZCBNdWNoIE1vcmUhXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJsb2ctYm94XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibG9naW5mb3JtXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsPlVzZXJuYW1lL0VtYWlsPC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZW0gKm5nSWY9XCJmb3JtLmNvbnRyb2xzLnVzZXJuYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+LSBSZXF1aXJlZDwvZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJlbWFpbFwiIFtuZ0NsYXNzXT1cIlsnZm9ybS1jb250cm9sJywgZm9ybS5jb250cm9scy51c2VybmFtZS52YWxpZCA/ICdpcy12YWxpZCcgOiAnaXMtaW52YWxpZCddXCIgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIiBbYXV0b2ZvY3VzXT1cInRydWVcIiBbZm9jdXNdPVwidHJ1ZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJlbWFpbEhlbHBcIiBwbGFjZWhvbGRlcj1cIllvdXIgVXNlcm5hbWUvRW1haWxcIiBhdXRvY29tcGxldGU9XCJ1c2VybmFtZVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWw+UGFzc3dvcmQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxlbSAqbmdJZj1cImZvcm0uY29udHJvbHMucGFzc3dvcmQuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj4tIFJlcXVpcmVkPC9lbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgW25nQ2xhc3NdPVwiWydmb3JtLWNvbnRyb2wnLCBmb3JtLmNvbnRyb2xzLnBhc3N3b3JkLmVuYWJsZWQgPyAoZm9ybS5jb250cm9scy5wYXNzd29yZC52YWxpZCA/ICdpcy12YWxpZCcgOiAnaXMtaW52YWxpZCcpIDogJyddXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIllvdXIgUGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJjdXJyZW50LXBhc3N3b3JkXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayB0ZXh0LXJpZ2h0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPjxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwidG9nZ2xlRm9yZ290UGFzc3dvcmQoKVwiPiB7eyFmb3JtLmNvbnRyb2xzLmZvcmdvdFBhc3N3b3JkLnZhbHVlID8gJ0ZvcmdvdCBQYXNzd29yZD8nIDogJ0VudGVyIFBhc3N3b3JkJ319IDwvYT48L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gbG9naW5idG5cIiAoY2xpY2spPVwiY2xvc2UoJ1Jlc29sdmVJTycpXCI+e3shZm9ybS5jb250cm9scy5mb3Jnb3RQYXNzd29yZC52YWx1ZSA/ICdMb2dpbicgOiAnU3VibWl0J319PC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b24gKm5nSWY9XCJtc0FsbG93ZWRcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gbG9naW4zNjVidG5cIiAoY2xpY2spPVwiY2xvc2UoJ01TJylcIj5NaWNyb3NvZnQgU2luZ2xlLVNpZ24tT248L2J1dHRvbj5cblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuXHRcdFx0XHQ8cmVzcG9uc2l2ZS1idXR0b24tZ3JvdXA+XG5cdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJfYWN0aXZlTW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XG5cdFx0XHRcdDwvcmVzcG9uc2l2ZS1idXR0b24tZ3JvdXA+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Zvcm0+XG5cdGBcbn0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIERpYWxvZ0xvZ2luQ29udGVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBJbnB1dCgpIG1zQWxsb3dlZCA9IGZhbHNlO1xuXHRASW5wdXQoKSBzaG93TG9naW5UZXh0ID0gdHJ1ZTtcblxuXHRmb3JtOiBGb3JtR3JvdXA7XG5cblx0Y29uc3RydWN0b3IocHVibGljIF9hY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcikge31cblxuXHRuZ09uSW5pdCgpIHtcdFx0XHRcblx0XHR0aGlzLmZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XG5cdFx0XHR1c2VybmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuXHRcdFx0cGFzc3dvcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcblx0XHRcdGZvcmdvdFBhc3N3b3JkOiBbZmFsc2VdLFxuXHRcdH0pO1xuXHR9XG5cblx0dG9nZ2xlRm9yZ290UGFzc3dvcmQoKSB7XG5cdFx0dGhpcy5mb3JtLmNvbnRyb2xzLmZvcmdvdFBhc3N3b3JkLnNldFZhbHVlKCF0aGlzLmZvcm0uY29udHJvbHMuZm9yZ290UGFzc3dvcmQudmFsdWUpO1xuXG5cdFx0aWYgKCF0aGlzLmZvcm0uY29udHJvbHMuZm9yZ290UGFzc3dvcmQudmFsdWUpIHtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wYXNzd29yZC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMucGFzc3dvcmQuZW5hYmxlKCk7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnBhc3N3b3JkLnNldFZhbHVlKCcnKTtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wYXNzd29yZC5jbGVhclZhbGlkYXRvcnMoKTtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wYXNzd29yZC5kaXNhYmxlKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnBhc3N3b3JkLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblx0fVxuXG5cdGNsb3NlKHR5cGU6IHN0cmluZykge1xuXHRcdHRoaXMuX2FjdGl2ZU1vZGFsLmNsb3NlKHtcblx0XHRcdGZvcm06IHRoaXMuZm9ybSxcblx0XHRcdHR5cGU6IHR5cGVcblx0XHR9KTtcblx0fVxufVxuIl19