@testgorilla/tgo-ui 1.1.1 → 1.2.2

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 (172) hide show
  1. package/components/alert-banner/alert-banner.component.d.ts +1 -1
  2. package/components/autocomplete/autocomplete.component.d.ts +106 -0
  3. package/components/autocomplete/autocomplete.component.module.d.ts +19 -0
  4. package/components/autocomplete/autocomplete.model.d.ts +13 -0
  5. package/components/autocomplete/includes.pipe.d.ts +12 -0
  6. package/components/autocomplete/transform-Item.pipe.d.ts +11 -0
  7. package/components/avatar/avatar.component.d.ts +1 -1
  8. package/components/banner-action/banner-action.component.d.ts +1 -1
  9. package/components/button/button.component.d.ts +1 -1
  10. package/components/card/card.component.d.ts +1 -1
  11. package/components/checkbox/checkbox.component.d.ts +1 -1
  12. package/components/create-account/create-account.component.d.ts +1 -1
  13. package/components/create-password/create-password.component.d.ts +1 -1
  14. package/components/datepicker/datepicker.component.d.ts +1 -1
  15. package/components/dialog/dialog.component.d.ts +1 -1
  16. package/components/dropdown/dropdown.component.d.ts +1 -1
  17. package/components/elevation-shadow/elevation-shadow.component.d.ts +1 -1
  18. package/components/field/field.component.d.ts +1 -1
  19. package/components/file-upload/file-upload.component.d.ts +1 -1
  20. package/components/forgot-password/forgot-password.component.d.ts +1 -1
  21. package/components/icon/icon.component.d.ts +1 -1
  22. package/components/icon-label/icon-label.component.d.ts +1 -1
  23. package/components/label/label.component.d.ts +1 -1
  24. package/components/login/login.component.d.ts +1 -1
  25. package/components/logo/logo.component.d.ts +1 -1
  26. package/components/navbar/navbar.component.d.ts +1 -1
  27. package/components/navigation/navigation.component.d.ts +1 -1
  28. package/components/paginator/paginator.component.d.ts +1 -1
  29. package/components/progress-bar/progress-bar.component.d.ts +1 -1
  30. package/components/radio-button/radio-button.component.d.ts +1 -1
  31. package/components/rating/rating.component.d.ts +1 -1
  32. package/components/snackbar/snackbar.component.d.ts +1 -1
  33. package/components/table/directives/dynamic-component.directive.d.ts +1 -1
  34. package/components/table/table.component.d.ts +1 -1
  35. package/components/tag/tag.component.d.ts +1 -1
  36. package/components/toggle/toggle.component.d.ts +1 -1
  37. package/components/tooltip/tooltip.component.d.ts +1 -1
  38. package/directives/digits-only.directive.d.ts +1 -1
  39. package/directives/select-text.directive.d.ts +19 -0
  40. package/esm2022/components/alert-banner/alert-banner.component.mjs +98 -0
  41. package/{esm2020 → esm2022}/components/alert-banner/alert-banner.component.module.mjs +5 -5
  42. package/esm2022/components/autocomplete/autocomplete.component.mjs +288 -0
  43. package/esm2022/components/autocomplete/autocomplete.component.module.mjs +81 -0
  44. package/esm2022/components/autocomplete/autocomplete.model.mjs +16 -0
  45. package/esm2022/components/autocomplete/includes.pipe.mjs +21 -0
  46. package/esm2022/components/autocomplete/transform-Item.pipe.mjs +29 -0
  47. package/{esm2020 → esm2022}/components/avatar/avatar.component.mjs +4 -4
  48. package/{esm2020 → esm2022}/components/avatar/avatar.component.module.mjs +5 -5
  49. package/{esm2020 → esm2022}/components/banner-action/banner-action.component.mjs +4 -4
  50. package/{esm2020 → esm2022}/components/banner-action/banner-action.component.module.mjs +5 -5
  51. package/{esm2020 → esm2022}/components/button/button.component.mjs +4 -4
  52. package/{esm2020 → esm2022}/components/button/button.component.module.mjs +5 -5
  53. package/{esm2020 → esm2022}/components/card/card.component.mjs +4 -4
  54. package/{esm2020 → esm2022}/components/card/card.component.module.mjs +5 -5
  55. package/esm2022/components/checkbox/checkbox.component.mjs +151 -0
  56. package/{esm2020 → esm2022}/components/checkbox/checkbox.component.module.mjs +5 -5
  57. package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  58. package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.component.module.mjs +8 -8
  59. package/{esm2020 → esm2022}/components/create-account/create-account.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/components/create-account/create-account.component.module.mjs +19 -19
  61. package/{esm2020 → esm2022}/components/create-password/create-password.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/components/create-password/create-password.component.module.mjs +17 -17
  63. package/esm2022/components/datepicker/datepicker.component.mjs +179 -0
  64. package/{esm2020 → esm2022}/components/datepicker/datepicker.component.module.mjs +19 -19
  65. package/{esm2020 → esm2022}/components/dialog/dialog.component.mjs +4 -4
  66. package/{esm2020 → esm2022}/components/dialog/dialog.component.module.mjs +5 -5
  67. package/{esm2020 → esm2022}/components/dialog/dialog.service.mjs +4 -4
  68. package/esm2022/components/dropdown/dropdown.component.mjs +158 -0
  69. package/{esm2020 → esm2022}/components/dropdown/dropdown.component.module.mjs +19 -19
  70. package/{esm2020 → esm2022}/components/elevation-shadow/elevation-shadow.component.mjs +4 -4
  71. package/{esm2020 → esm2022}/components/elevation-shadow/elevation-shadow.component.module.mjs +5 -5
  72. package/esm2022/components/field/field.component.mjs +212 -0
  73. package/{esm2020 → esm2022}/components/field/field.component.module.mjs +17 -17
  74. package/esm2022/components/file-upload/file-upload.component.mjs +191 -0
  75. package/{esm2020 → esm2022}/components/file-upload/file-upload.component.module.mjs +5 -5
  76. package/{esm2020 → esm2022}/components/forgot-password/forgot-password.component.mjs +4 -4
  77. package/{esm2020 → esm2022}/components/forgot-password/forgot-password.component.module.mjs +17 -17
  78. package/{esm2020 → esm2022}/components/icon/icon.component.mjs +4 -4
  79. package/{esm2020 → esm2022}/components/icon/icon.component.module.mjs +5 -5
  80. package/{esm2020 → esm2022}/components/icon-label/icon-label.component.mjs +4 -4
  81. package/{esm2020 → esm2022}/components/icon-label/icon-label.component.module.mjs +5 -5
  82. package/{esm2020 → esm2022}/components/label/label.component.mjs +4 -4
  83. package/{esm2020 → esm2022}/components/label/label.component.module.mjs +5 -5
  84. package/{esm2020 → esm2022}/components/login/login.component.mjs +4 -4
  85. package/{esm2020 → esm2022}/components/login/login.component.module.mjs +17 -17
  86. package/{esm2020 → esm2022}/components/logo/logo.component.mjs +4 -4
  87. package/{esm2020 → esm2022}/components/logo/logo.component.module.mjs +5 -5
  88. package/{esm2020 → esm2022}/components/navbar/navbar.component.mjs +4 -4
  89. package/{esm2020 → esm2022}/components/navbar/navbar.component.module.mjs +19 -19
  90. package/{esm2020 → esm2022}/components/navigation/navigation.component.mjs +4 -4
  91. package/{esm2020 → esm2022}/components/navigation/navigation.component.module.mjs +5 -5
  92. package/{esm2020 → esm2022}/components/paginator/paginator.component.mjs +4 -4
  93. package/{esm2020 → esm2022}/components/paginator/paginator.component.module.mjs +5 -5
  94. package/{esm2020 → esm2022}/components/progress-bar/progress-bar.component.mjs +4 -4
  95. package/{esm2020 → esm2022}/components/progress-bar/progress-bar.component.module.mjs +5 -5
  96. package/{esm2020 → esm2022}/components/radio-button/radio-button.component.mjs +4 -4
  97. package/{esm2020 → esm2022}/components/radio-button/radio-button.component.module.mjs +5 -5
  98. package/{esm2020 → esm2022}/components/rating/rating.component.mjs +4 -4
  99. package/{esm2020 → esm2022}/components/rating/rating.component.module.mjs +5 -5
  100. package/esm2022/components/snackbar/snackbar.component.mjs +148 -0
  101. package/esm2022/components/snackbar/snackbar.component.module.mjs +44 -0
  102. package/{esm2020 → esm2022}/components/snackbar/snackbar.service.mjs +4 -4
  103. package/{esm2020 → esm2022}/components/spinner/spinner.component.mjs +4 -4
  104. package/{esm2020 → esm2022}/components/spinner/spinner.module.mjs +5 -5
  105. package/{esm2020 → esm2022}/components/table/directives/dynamic-component.directive.mjs +4 -4
  106. package/{esm2020 → esm2022}/components/table/pipes/data-property-getter.mjs +4 -4
  107. package/esm2022/components/table/table.component.mjs +158 -0
  108. package/{esm2020 → esm2022}/components/table/table.component.module.mjs +5 -5
  109. package/{esm2020 → esm2022}/components/tag/tag.component.mjs +4 -4
  110. package/{esm2020 → esm2022}/components/tag/tag.component.module.mjs +5 -5
  111. package/esm2022/components/toggle/toggle.component.mjs +78 -0
  112. package/{esm2020 → esm2022}/components/toggle/toggle.component.module.mjs +5 -5
  113. package/{esm2020 → esm2022}/components/tooltip/tooltip.component.mjs +4 -4
  114. package/{esm2020 → esm2022}/components/tooltip/tooltip.component.module.mjs +5 -5
  115. package/{esm2020 → esm2022}/directives/digits-only.directive.mjs +4 -4
  116. package/{esm2020 → esm2022}/directives/drag-drop.directive.mjs +4 -4
  117. package/esm2022/directives/select-text.directive.mjs +37 -0
  118. package/{esm2020 → esm2022}/pipes/name-initials.pipe.mjs +4 -4
  119. package/{esm2020 → esm2022}/public-api.mjs +5 -1
  120. package/esm2022/utils/autocomplete-utils.mjs +61 -0
  121. package/esm2022/utils/localization/language.service.mjs +78 -0
  122. package/{fesm2020 → fesm2022}/testgorilla-tgo-ui.mjs +961 -466
  123. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -0
  124. package/package.json +17 -23
  125. package/public-api.d.ts +3 -0
  126. package/src/assets/i18n/en.json +9 -1
  127. package/utils/autocomplete-utils.d.ts +11 -0
  128. package/esm2020/components/alert-banner/alert-banner.component.mjs +0 -98
  129. package/esm2020/components/checkbox/checkbox.component.mjs +0 -151
  130. package/esm2020/components/datepicker/datepicker.component.mjs +0 -179
  131. package/esm2020/components/dropdown/dropdown.component.mjs +0 -158
  132. package/esm2020/components/field/field.component.mjs +0 -212
  133. package/esm2020/components/file-upload/file-upload.component.mjs +0 -191
  134. package/esm2020/components/snackbar/snackbar.component.mjs +0 -148
  135. package/esm2020/components/snackbar/snackbar.component.module.mjs +0 -44
  136. package/esm2020/components/table/table.component.mjs +0 -158
  137. package/esm2020/components/toggle/toggle.component.mjs +0 -78
  138. package/esm2020/utils/localization/language.service.mjs +0 -78
  139. package/fesm2015/testgorilla-tgo-ui.mjs +0 -4290
  140. package/fesm2015/testgorilla-tgo-ui.mjs.map +0 -1
  141. package/fesm2020/testgorilla-tgo-ui.mjs.map +0 -1
  142. /package/{esm2020 → esm2022}/components/alert-banner/alert-banner.model.mjs +0 -0
  143. /package/{esm2020 → esm2022}/components/avatar/avatar.model.mjs +0 -0
  144. /package/{esm2020 → esm2022}/components/button/button.model.mjs +0 -0
  145. /package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.constants.mjs +0 -0
  146. /package/{esm2020 → esm2022}/components/confirm-dialog/confirm-dialog.model.mjs +0 -0
  147. /package/{esm2020 → esm2022}/components/create-account/create-account.constant.mjs +0 -0
  148. /package/{esm2020 → esm2022}/components/create-account/create-account.model.mjs +0 -0
  149. /package/{esm2020 → esm2022}/components/create-password/create-password.constant.mjs +0 -0
  150. /package/{esm2020 → esm2022}/components/create-password/create-password.model.mjs +0 -0
  151. /package/{esm2020 → esm2022}/components/dropdown/dropdown.model.mjs +0 -0
  152. /package/{esm2020 → esm2022}/components/elevation-shadow/elevation-shadow.constant.mjs +0 -0
  153. /package/{esm2020 → esm2022}/components/field/field.model.mjs +0 -0
  154. /package/{esm2020 → esm2022}/components/forgot-password/forgot-password.constant.mjs +0 -0
  155. /package/{esm2020 → esm2022}/components/forgot-password/forgot-password.model.mjs +0 -0
  156. /package/{esm2020 → esm2022}/components/icon/icon.config.mjs +0 -0
  157. /package/{esm2020 → esm2022}/components/icon/icon.model.mjs +0 -0
  158. /package/{esm2020 → esm2022}/components/label/label.model.mjs +0 -0
  159. /package/{esm2020 → esm2022}/components/login/login.constant.mjs +0 -0
  160. /package/{esm2020 → esm2022}/components/login/login.model.mjs +0 -0
  161. /package/{esm2020 → esm2022}/components/logo/logo.model.mjs +0 -0
  162. /package/{esm2020 → esm2022}/components/navbar/navbar.model.mjs +0 -0
  163. /package/{esm2020 → esm2022}/components/radio-button/radio-button.model.mjs +0 -0
  164. /package/{esm2020 → esm2022}/components/snackbar/snackbar.model.mjs +0 -0
  165. /package/{esm2020 → esm2022}/components/table/table.model.mjs +0 -0
  166. /package/{esm2020 → esm2022}/components/tag/tag.model.mjs +0 -0
  167. /package/{esm2020 → esm2022}/components/toggle/toggle.model.mjs +0 -0
  168. /package/{esm2020 → esm2022}/components/tooltip/tooltip.model.mjs +0 -0
  169. /package/{esm2020 → esm2022}/testgorilla-tgo-ui.mjs +0 -0
  170. /package/{esm2020 → esm2022}/utils/alert-bar.model.mjs +0 -0
  171. /package/{esm2020 → esm2022}/utils/alert-bars.utils.mjs +0 -0
  172. /package/{esm2020 → esm2022}/utils/validators.utils.mjs +0 -0
@@ -1,212 +0,0 @@
1
- /* eslint-disable no-underscore-dangle */
2
- import { ChangeDetectionStrategy, Component, forwardRef, HostBinding, Input, ViewEncapsulation, } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/material/form-field";
7
- import * as i3 from "@angular/material/input";
8
- import * as i4 from "../icon/icon.component";
9
- import * as i5 from "../button/button.component";
10
- import * as i6 from "../../directives/digits-only.directive";
11
- export class FieldComponent {
12
- /**
13
- * Input field errors
14
- *
15
- * @type {string}
16
- * @memberof FieldComponent
17
- */
18
- set errors(errors) {
19
- this._errors = errors;
20
- this.errorsLength = this.setErrorsLength();
21
- }
22
- constructor() {
23
- this.class = 'ui-field';
24
- /**
25
- * Form field label
26
- *
27
- * @type {string}
28
- * @memberof FieldComponent
29
- */
30
- this.label = '';
31
- /**
32
- * Input placeholder
33
- *
34
- * @type {string}
35
- * @memberof FieldComponent
36
- */
37
- this.placeholder = '';
38
- /**
39
- * Input id
40
- *
41
- * @type {string}
42
- * @memberof FieldComponent
43
- */
44
- this.id = '';
45
- /**
46
- * Input value
47
- *
48
- * @type {string}
49
- * @memberof FieldComponent
50
- */
51
- this.value = '';
52
- /**
53
- * Hint text
54
- *
55
- * @type {string}
56
- * @memberof FieldComponent
57
- */
58
- this.hintMessage = '';
59
- /**
60
- * Input type
61
- *
62
- * @type {FieldType}
63
- * @memberof FieldComponent
64
- */
65
- this.type = 'text';
66
- /**
67
- * Input is update only on blur
68
- *
69
- * @type {Boolean}
70
- * @memberof FieldComponent
71
- */
72
- this.updateOnBlur = false;
73
- /**
74
- * allow only digits in input
75
- *
76
- * @type {Boolean}
77
- * @memberof FieldComponent
78
- */
79
- this.allowOnlyDigits = false;
80
- /**
81
- * @ignore
82
- */
83
- this.onChange = (_) => { };
84
- /**
85
- * @ignore
86
- */
87
- this.onTouch = () => { };
88
- }
89
- ngOnInit() {
90
- this.setSearchInput();
91
- this.currentType = this.getType();
92
- }
93
- //set search input initial value
94
- setSearchInput() {
95
- if (this.type === 'search') {
96
- this.showSearch = true;
97
- }
98
- else {
99
- this.showClose = false;
100
- this.showSearch = false;
101
- }
102
- }
103
- //change type for reveal password
104
- getType() {
105
- if (this.type === 'password' && this.showPassword) {
106
- return 'text';
107
- }
108
- return this.type;
109
- }
110
- //Clear input value
111
- clearValue() {
112
- this.value = '';
113
- this.onChangeInputSearch();
114
- }
115
- //toggle for password
116
- showPasswordClick() {
117
- this.showPassword = !this.showPassword;
118
- this.currentType = this.getType();
119
- }
120
- //Set options for search input
121
- onChangeInputSearch() {
122
- if (this.type === 'search') {
123
- if (!this.value) {
124
- this.showClose = false;
125
- this.showSearch = true;
126
- }
127
- if (this.value) {
128
- this.showClose = true;
129
- this.showSearch = false;
130
- }
131
- }
132
- }
133
- // Set errors length for validation
134
- // Consider only those errors which which are not empty
135
- setErrorsLength() {
136
- if (!!this._errors) {
137
- return this._errors.filter(err => !!err).length > 0 ? true : false;
138
- }
139
- return false;
140
- }
141
- //Save input value
142
- onInput(event) {
143
- this.value = event.target.value;
144
- this.errorsLength = this.setErrorsLength();
145
- if (!this.updateOnBlur) {
146
- this.onTouch();
147
- }
148
- this.onChange(this.value);
149
- }
150
- writeValue(value) {
151
- if (value) {
152
- this.value = value || '';
153
- }
154
- else {
155
- this.value = '';
156
- }
157
- }
158
- registerOnChange(fn) {
159
- this.onChange = fn;
160
- }
161
- registerOnTouched(fn) {
162
- this.onTouch = fn;
163
- }
164
- setDisabledState(isDisabled) {
165
- this.disabled = isDisabled;
166
- }
167
- }
168
- FieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
169
- FieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FieldComponent, selector: "ui-field", inputs: { label: "label", fieldName: "fieldName", placeholder: "placeholder", id: "id", value: "value", errors: "errors", disabled: "disabled", required: "required", hintMessage: "hintMessage", type: "type", updateOnBlur: "updateOnBlur", allowOnlyDigits: "allowOnlyDigits" }, host: { properties: { "class": "this.class" } }, providers: [
170
- {
171
- provide: NG_VALUE_ACCESSOR,
172
- useExisting: forwardRef(() => FieldComponent),
173
- multi: true,
174
- },
175
- ], ngImport: i0, template: "<mat-form-field #uiField appearance=\"outline\" [color]=\"errorsLength ? 'warn' : 'accent'\">\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <input\n matInput\n (blur)=\"onTouch()\"\n (input)=\"onInput($event)\"\n [id]=\"id!\"\n (keyup)=\"onChangeInputSearch()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [type]=\"currentType\"\n [name]=\"fieldName!\"\n digitsOnly\n [allowOnlyDigits]=\"allowOnlyDigits\"\n />\n <div class=\"options\" *ngIf=\"type === 'search' || type === 'password'\">\n <div class=\"options-container\">\n <ui-button\n *ngIf=\"showClose\"\n type=\"secondary\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n label=\"Clear\"\n (buttonClickEvent)=\"clearValue()\"\n ></ui-button>\n <ui-icon *ngIf=\"showSearch\" size=\"24\" class=\"search\" name=\"Search\"></ui-icon>\n <ui-button\n *ngIf=\"type === 'password'\"\n type=\"secondary\"\n [justIcon]=\"true\"\n class=\"password\"\n [iconName]=\"showPassword ? 'Eye-hide' : 'Eye-view'\"\n label=\"View password\"\n (buttonClickEvent)=\"showPasswordClick()\"\n ></ui-button>\n </div>\n </div>\n <mat-hint class=\"info\" *ngIf=\"hintMessage && !_errors\">{{ hintMessage }}</mat-hint>\n <mat-hint class=\"error\" *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors\"><ui-icon name=\"Error\"></ui-icon>{{ error }}</div>\n </mat-hint>\n</mat-form-field>\n", styles: [".ui-field input[type=search]::-webkit-search-decoration,.ui-field input[type=search]::-webkit-search-cancel-button,.ui-field input[type=search]::-webkit-search-results-button,.ui-field input[type=search]::-webkit-search-results-decoration{display:none}.ui-field .mat-mdc-form-field{margin-top:0;width:100%}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-text-field-wrapper{height:48px}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mdc-notched-outline{color:#888}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mdc-notched-outline .mdc-floating-label--float-above{transform:translateY(-30px) scale(.75)}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-infix{min-height:48px;padding:4px 0;line-height:22px;display:inline-flex;align-items:center}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-subscript-wrapper{padding:0 0 12px;margin-top:4px;font-size:12px;line-height:16px;position:relative}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-subscript-wrapper .mat-form-field-hint-spacer{display:none}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.info{color:#888;width:100%;text-align:right}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-bottom-align:before{height:0}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint-wrapper{padding:0}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error,.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error svg{color:#cb7b7a}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error{display:flex}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error ui-icon{margin-right:9px}.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline:not(.mdc-text-field--disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline .mdc-notched-outline__leading,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline:not(.mdc-text-field--disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline .mdc-notched-outline__trailing,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline:not(.mdc-text-field--disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline .mdc-notched-outline__notch{border-color:#cb7b7a}.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline .mdc-notched-outline .mdc-notched-outline__leading,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline .mdc-notched-outline .mdc-notched-outline__trailing,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline .mdc-notched-outline .mdc-notched-outline__notch{border-color:#cb7b7a}.ui-field .mat-mdc-form-field.mat-warn.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mat-form-field-label mat-label{color:#cb7b7a}.ui-field .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}.ui-field .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}.ui-field .mat-mdc-form-field.mat-accent.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-mdc-form-field-flex:hover .options .options-container ui-button.search svg,.ui-field .mat-mdc-form-field.mat-accent.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-mdc-form-field-flex:hover .options .options-container ui-button.password svg{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mat-form-field-label mat-label{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-focused .options .options-container ui-button svg,.ui-field .mat-mdc-form-field.mat-accent.mat-focused .options .options-container ui-icon svg{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-focused .options .options-container ui-button.close svg{color:#888}.ui-field .mat-mdc-form-field .options{position:inline-flex}.ui-field .mat-mdc-form-field .options .options-container{display:flex;column-gap:8px;padding-left:8px}.ui-field .mat-mdc-form-field .options .options-container ui-button,.ui-field .mat-mdc-form-field .options .options-container ui-icon{display:flex}.ui-field .mat-mdc-form-field .options .options-container ui-button svg,.ui-field .mat-mdc-form-field .options .options-container ui-icon svg{color:#888}.ui-field .mat-mdc-form-field .options ui-button button.secondary.only-icon{padding:0;height:auto;background:transparent}.ui-field .mat-mdc-form-field .options ui-button button.secondary.only-icon:hover,.ui-field .mat-mdc-form-field .options ui-button button.secondary.only-icon:focus{background:transparent;color:inherit;border:none;outline:none}.ui-field .mat-mdc-form-field.mat-form-field-disabled.mat-form-field-appearance-outline .mdc-notched-outline{color:#e0e0e0}.ui-field .mat-mdc-form-field.mat-form-field-disabled .options .options-container ui-button svg,.ui-field .mat-mdc-form-field.mat-form-field-disabled .options .options-container ui-icon svg{color:#e0e0e0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color"] }, { kind: "component", type: i5.ButtonComponent, selector: "ui-button", inputs: ["size", "type", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: i6.DigitsOnlyDirective, selector: "[digitsOnly]", inputs: ["allowNegative", "allowDecimal", "allowOnlyDigits"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FieldComponent, decorators: [{
177
- type: Component,
178
- args: [{ selector: 'ui-field', encapsulation: ViewEncapsulation.None, providers: [
179
- {
180
- provide: NG_VALUE_ACCESSOR,
181
- useExisting: forwardRef(() => FieldComponent),
182
- multi: true,
183
- },
184
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field #uiField appearance=\"outline\" [color]=\"errorsLength ? 'warn' : 'accent'\">\n <mat-label *ngIf=\"label\">{{ label }} <span *ngIf=\"required\">*</span></mat-label>\n <input\n matInput\n (blur)=\"onTouch()\"\n (input)=\"onInput($event)\"\n [id]=\"id!\"\n (keyup)=\"onChangeInputSearch()\"\n [placeholder]=\"placeholder!\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [type]=\"currentType\"\n [name]=\"fieldName!\"\n digitsOnly\n [allowOnlyDigits]=\"allowOnlyDigits\"\n />\n <div class=\"options\" *ngIf=\"type === 'search' || type === 'password'\">\n <div class=\"options-container\">\n <ui-button\n *ngIf=\"showClose\"\n type=\"secondary\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n label=\"Clear\"\n (buttonClickEvent)=\"clearValue()\"\n ></ui-button>\n <ui-icon *ngIf=\"showSearch\" size=\"24\" class=\"search\" name=\"Search\"></ui-icon>\n <ui-button\n *ngIf=\"type === 'password'\"\n type=\"secondary\"\n [justIcon]=\"true\"\n class=\"password\"\n [iconName]=\"showPassword ? 'Eye-hide' : 'Eye-view'\"\n label=\"View password\"\n (buttonClickEvent)=\"showPasswordClick()\"\n ></ui-button>\n </div>\n </div>\n <mat-hint class=\"info\" *ngIf=\"hintMessage && !_errors\">{{ hintMessage }}</mat-hint>\n <mat-hint class=\"error\" *ngIf=\"errorsLength\">\n <div class=\"errors\" *ngFor=\"let error of _errors\"><ui-icon name=\"Error\"></ui-icon>{{ error }}</div>\n </mat-hint>\n</mat-form-field>\n", styles: [".ui-field input[type=search]::-webkit-search-decoration,.ui-field input[type=search]::-webkit-search-cancel-button,.ui-field input[type=search]::-webkit-search-results-button,.ui-field input[type=search]::-webkit-search-results-decoration{display:none}.ui-field .mat-mdc-form-field{margin-top:0;width:100%}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-text-field-wrapper{height:48px}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mdc-notched-outline{color:#888}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mdc-notched-outline .mdc-floating-label--float-above{transform:translateY(-30px) scale(.75)}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-infix{min-height:48px;padding:4px 0;line-height:22px;display:inline-flex;align-items:center}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-subscript-wrapper{padding:0 0 12px;margin-top:4px;font-size:12px;line-height:16px;position:relative}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-subscript-wrapper .mat-form-field-hint-spacer{display:none}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.info{color:#888;width:100%;text-align:right}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-bottom-align:before{height:0}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint-wrapper{padding:0}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error,.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error svg{color:#cb7b7a}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error{display:flex}.ui-field .mat-mdc-form-field.mat-form-field-appearance-outline .mat-mdc-form-field-hint.error ui-icon{margin-right:9px}.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline:not(.mdc-text-field--disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline .mdc-notched-outline__leading,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline:not(.mdc-text-field--disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline .mdc-notched-outline__trailing,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline:not(.mdc-text-field--disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline .mdc-notched-outline__notch{border-color:#cb7b7a}.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline .mdc-notched-outline .mdc-notched-outline__leading,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline .mdc-notched-outline .mdc-notched-outline__trailing,.ui-field .mat-mdc-form-field.mat-warn.mat-form-field-appearance-outline .mdc-notched-outline .mdc-notched-outline__notch{border-color:#cb7b7a}.ui-field .mat-mdc-form-field.mat-warn.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mat-form-field-label mat-label{color:#cb7b7a}.ui-field .mat-mdc-form-field .mat-mdc-form-field-hint.error{display:flex;flex-flow:column;row-gap:4px}.ui-field .mat-mdc-form-field .mat-mdc-form-field-hint.error .errors{display:flex}.ui-field .mat-mdc-form-field.mat-accent.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-mdc-form-field-flex:hover .mdc-notched-outline{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-mdc-form-field-flex:hover .options .options-container ui-button.search svg,.ui-field .mat-mdc-form-field.mat-accent.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-mdc-form-field-flex:hover .options .options-container ui-button.password svg{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix .mat-form-field-label mat-label{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-focused .options .options-container ui-button svg,.ui-field .mat-mdc-form-field.mat-accent.mat-focused .options .options-container ui-icon svg{color:#276678}.ui-field .mat-mdc-form-field.mat-accent.mat-focused .options .options-container ui-button.close svg{color:#888}.ui-field .mat-mdc-form-field .options{position:inline-flex}.ui-field .mat-mdc-form-field .options .options-container{display:flex;column-gap:8px;padding-left:8px}.ui-field .mat-mdc-form-field .options .options-container ui-button,.ui-field .mat-mdc-form-field .options .options-container ui-icon{display:flex}.ui-field .mat-mdc-form-field .options .options-container ui-button svg,.ui-field .mat-mdc-form-field .options .options-container ui-icon svg{color:#888}.ui-field .mat-mdc-form-field .options ui-button button.secondary.only-icon{padding:0;height:auto;background:transparent}.ui-field .mat-mdc-form-field .options ui-button button.secondary.only-icon:hover,.ui-field .mat-mdc-form-field .options ui-button button.secondary.only-icon:focus{background:transparent;color:inherit;border:none;outline:none}.ui-field .mat-mdc-form-field.mat-form-field-disabled.mat-form-field-appearance-outline .mdc-notched-outline{color:#e0e0e0}.ui-field .mat-mdc-form-field.mat-form-field-disabled .options .options-container ui-button svg,.ui-field .mat-mdc-form-field.mat-form-field-disabled .options .options-container ui-icon svg{color:#e0e0e0}\n"] }]
185
- }], ctorParameters: function () { return []; }, propDecorators: { class: [{
186
- type: HostBinding
187
- }], label: [{
188
- type: Input
189
- }], fieldName: [{
190
- type: Input
191
- }], placeholder: [{
192
- type: Input
193
- }], id: [{
194
- type: Input
195
- }], value: [{
196
- type: Input
197
- }], errors: [{
198
- type: Input
199
- }], disabled: [{
200
- type: Input
201
- }], required: [{
202
- type: Input
203
- }], hintMessage: [{
204
- type: Input
205
- }], type: [{
206
- type: Input
207
- }], updateOnBlur: [{
208
- type: Input
209
- }], allowOnlyDigits: [{
210
- type: Input
211
- }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZmllbGQvZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZmllbGQvZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUVMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBaUJ6RSxNQUFNLE9BQU8sY0FBYztJQTRDekI7Ozs7O09BS0c7SUFDSCxJQUFhLE1BQU0sQ0FBQyxNQUFnQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBNEREO1FBaEhlLFVBQUssR0FBRyxVQUFVLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxVQUFLLEdBQUksRUFBRSxDQUFDO1FBVXJCOzs7OztXQUtHO1FBQ00sZ0JBQVcsR0FBSSxFQUFFLENBQUM7UUFFM0I7Ozs7O1dBS0c7UUFDTSxPQUFFLEdBQUksRUFBRSxDQUFDO1FBRWxCOzs7OztXQUtHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQThCcEI7Ozs7O1dBS0c7UUFDTSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUUxQjs7Ozs7V0FLRztRQUNNLFNBQUksR0FBYyxNQUFNLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU5Qjs7Ozs7V0FLRztRQUNNLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRWpDOztXQUVH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ZSAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZmllbGQvZmllbGQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmllbGRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpZWxkJztcblxuICAvKipcbiAgICogRm9ybSBmaWVsZCBsYWJlbFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsPyA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBuYW1lIGF0dHJpYnV0ZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGZpZWxkTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgcGxhY2Vob2xkZXJcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcj8gPSAnJztcblxuICAvKipcbiAgICogSW5wdXQgaWRcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBpZD8gPSAnJztcblxuICAvKipcbiAgICogSW5wdXQgdmFsdWVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuXG4gIF9lcnJvcnM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogSW5wdXQgZmllbGQgZXJyb3JzXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IGVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzO1xuICAgIHRoaXMuZXJyb3JzTGVuZ3RoID0gdGhpcy5zZXRFcnJvcnNMZW5ndGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGlucHV0IGlzIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBpcyByZXF1aXJlZCBvciBub3RcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEhpbnQgdGV4dFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGhpbnRNZXNzYWdlID0gJyc7XG5cbiAgLyoqXG4gICAqIElucHV0IHR5cGVcbiAgICpcbiAgICogQHR5cGUge0ZpZWxkVHlwZX1cbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBGaWVsZFR5cGUgPSAndGV4dCc7XG5cbiAgLyoqXG4gICAqIElucHV0IGlzIHVwZGF0ZSBvbmx5IG9uIGJsdXJcbiAgICpcbiAgICogQHR5cGUge0Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdXBkYXRlT25CbHVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIGFsbG93IG9ubHkgZGlnaXRzIGluIGlucHV0XG4gICAqXG4gICAqIEB0eXBlIHtCb29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFsbG93T25seURpZ2l0cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHNob3dTZWFyY2g6IGJvb2xlYW47XG4gIHNob3dDbG9zZTogYm9vbGVhbjtcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuO1xuICBjdXJyZW50VHlwZTogc3RyaW5nO1xuICBlcnJvcnNMZW5ndGg6IGJvb2xlYW47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTZWFyY2hJbnB1dCgpO1xuICAgIHRoaXMuY3VycmVudFR5cGUgPSB0aGlzLmdldFR5cGUoKTtcbiAgfVxuXG4gIC8vc2V0IHNlYXJjaCBpbnB1dCBpbml0aWFsIHZhbHVlXG4gIHNldFNlYXJjaElucHV0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdzZWFyY2gnKSB7XG4gICAgICB0aGlzLnNob3dTZWFyY2ggPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dDbG9zZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93U2VhcmNoID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy9jaGFuZ2UgdHlwZSBmb3IgcmV2ZWFsIHBhc3N3b3JkXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAncGFzc3dvcmQnICYmIHRoaXMuc2hvd1Bhc3N3b3JkKSB7XG4gICAgICByZXR1cm4gJ3RleHQnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgLy9DbGVhciBpbnB1dCB2YWx1ZVxuICBjbGVhclZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB0aGlzLm9uQ2hhbmdlSW5wdXRTZWFyY2goKTtcbiAgfVxuXG4gIC8vdG9nZ2xlIGZvciBwYXNzd29yZFxuICBzaG93UGFzc3dvcmRDbGljaygpIHtcbiAgICB0aGlzLnNob3dQYXNzd29yZCA9ICF0aGlzLnNob3dQYXNzd29yZDtcbiAgICB0aGlzLmN1cnJlbnRUeXBlID0gdGhpcy5nZXRUeXBlKCk7XG4gIH1cblxuICAvL1NldCBvcHRpb25zIGZvciBzZWFyY2ggaW5wdXRcbiAgb25DaGFuZ2VJbnB1dFNlYXJjaCgpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnc2VhcmNoJykge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NlYXJjaCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICB0aGlzLnNob3dDbG9zZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd1NlYXJjaCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBlcnJvcnMgbGVuZ3RoIGZvciB2YWxpZGF0aW9uXG4gIC8vIENvbnNpZGVyIG9ubHkgdGhvc2UgZXJyb3JzIHdoaWNoIHdoaWNoIGFyZSBub3QgZW1wdHlcbiAgc2V0RXJyb3JzTGVuZ3RoKCk6IGJvb2xlYW4ge1xuICAgIGlmICghIXRoaXMuX2Vycm9ycykge1xuICAgICAgcmV0dXJuIHRoaXMuX2Vycm9ycy5maWx0ZXIoZXJyID0+ICEhZXJyKS5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvL1NhdmUgaW5wdXQgdmFsdWVcbiAgb25JbnB1dChldmVudDogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmVycm9yc0xlbmd0aCA9IHRoaXMuc2V0RXJyb3JzTGVuZ3RoKCk7XG4gICAgaWYgKCF0aGlzLnVwZGF0ZU9uQmx1cikge1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkICN1aUZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgW2NvbG9yXT1cImVycm9yc0xlbmd0aCA/ICd3YXJuJyA6ICdhY2NlbnQnXCI+XG4gIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19IDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbWF0LWxhYmVsPlxuICA8aW5wdXRcbiAgICBtYXRJbnB1dFxuICAgIChibHVyKT1cIm9uVG91Y2goKVwiXG4gICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgW2lkXT1cImlkIVwiXG4gICAgKGtleXVwKT1cIm9uQ2hhbmdlSW5wdXRTZWFyY2goKVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIVwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFt0eXBlXT1cImN1cnJlbnRUeXBlXCJcbiAgICBbbmFtZV09XCJmaWVsZE5hbWUhXCJcbiAgICBkaWdpdHNPbmx5XG4gICAgW2FsbG93T25seURpZ2l0c109XCJhbGxvd09ubHlEaWdpdHNcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwib3B0aW9uc1wiICpuZ0lmPVwidHlwZSA9PT0gJ3NlYXJjaCcgfHwgdHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zLWNvbnRhaW5lclwiPlxuICAgICAgPHVpLWJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dDbG9zZVwiXG4gICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwiY2xvc2VcIlxuICAgICAgICBpY29uTmFtZT1cIkNsb3NlXCJcbiAgICAgICAgbGFiZWw9XCJDbGVhclwiXG4gICAgICAgIChidXR0b25DbGlja0V2ZW50KT1cImNsZWFyVmFsdWUoKVwiXG4gICAgICA+PC91aS1idXR0b24+XG4gICAgICA8dWktaWNvbiAqbmdJZj1cInNob3dTZWFyY2hcIiBzaXplPVwiMjRcIiBjbGFzcz1cInNlYXJjaFwiIG5hbWU9XCJTZWFyY2hcIj48L3VpLWljb24+XG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiXG4gICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwicGFzc3dvcmRcIlxuICAgICAgICBbaWNvbk5hbWVdPVwic2hvd1Bhc3N3b3JkID8gJ0V5ZS1oaWRlJyA6ICdFeWUtdmlldydcIlxuICAgICAgICBsYWJlbD1cIlZpZXcgcGFzc3dvcmRcIlxuICAgICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJzaG93UGFzc3dvcmRDbGljaygpXCJcbiAgICAgID48L3VpLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxtYXQtaGludCBjbGFzcz1cImluZm9cIiAqbmdJZj1cImhpbnRNZXNzYWdlICYmICFfZXJyb3JzXCI+e3sgaGludE1lc3NhZ2UgfX08L21hdC1oaW50PlxuICA8bWF0LWhpbnQgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZXJyb3JzTGVuZ3RoXCI+XG4gICAgPGRpdiBjbGFzcz1cImVycm9yc1wiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBfZXJyb3JzXCI+PHVpLWljb24gbmFtZT1cIkVycm9yXCI+PC91aS1pY29uPnt7IGVycm9yIH19PC9kaXY+XG4gIDwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
@@ -1,191 +0,0 @@
1
- import { animate, style, transition, trigger } from '@angular/animations';
2
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation, forwardRef, } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "../icon/icon.component";
7
- import * as i3 from "../progress-bar/progress-bar.component";
8
- import * as i4 from "../../directives/drag-drop.directive";
9
- export class FileUploadComponent {
10
- constructor() {
11
- this.class = 'ui-file-upload';
12
- /**
13
- * Existing file information
14
- *
15
- * @type {(File | null)}
16
- * @memberof FileUploadComponent
17
- */
18
- this.file = null;
19
- this.OnDrop = new EventEmitter();
20
- /**
21
- * @ignore
22
- */
23
- this.onChange = (_) => { };
24
- /**
25
- * @ignore
26
- */
27
- this.onTouch = () => { };
28
- this.progress = false;
29
- this.success = false;
30
- }
31
- ngOnInit() {
32
- this.browse = true;
33
- }
34
- //When file is dropped
35
- onFileDropped(files) {
36
- this.emitFile(files);
37
- }
38
- //When input changes
39
- onChangeUpload(event) {
40
- const element = event.currentTarget;
41
- this.emitFile(element.files || new FileList());
42
- }
43
- //Emit drop file
44
- emitFile(files) {
45
- const [file] = Array.from(files);
46
- this.file = file;
47
- this.errors = null;
48
- this.onTouch();
49
- this.onChange(this.file);
50
- this.OnDrop.emit(file);
51
- }
52
- //Show progress-bar
53
- showProgress() {
54
- this.browse = false;
55
- return this.file && !this.errors ? true : false;
56
- }
57
- //Show success elements
58
- showSuccess() {
59
- return this.file && this.uploadProgress === 100 && !this.errors ? true : false;
60
- }
61
- //Show browse when there are error
62
- showBrowse() {
63
- return this.errors ? true : false;
64
- }
65
- ngOnChanges(changes) {
66
- if (changes['uploadProgress'] || changes['file']) {
67
- this.progress = this.showProgress();
68
- this.success = this.showSuccess();
69
- this.browse = this.showBrowse();
70
- }
71
- if (changes['errors']) {
72
- this.progress = this.showProgress();
73
- this.success = this.showSuccess();
74
- this.browse = this.showBrowse();
75
- }
76
- }
77
- writeValue(value) {
78
- if (value) {
79
- this.file = value || null;
80
- }
81
- else {
82
- this.file = null;
83
- }
84
- }
85
- registerOnChange(fn) {
86
- this.onChange = fn;
87
- }
88
- registerOnTouched(fn) {
89
- this.onTouch = fn;
90
- }
91
- setDisabledState(isDisabled) {
92
- this.disabled = isDisabled;
93
- }
94
- }
95
- FileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
96
- FileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FileUploadComponent, selector: "ui-file-upload", inputs: { maxFileSizeMB: "maxFileSizeMB", supportedFileTypes: "supportedFileTypes", uploadProgress: "uploadProgress", errors: "errors", disabled: "disabled", file: "file" }, outputs: { OnDrop: "OnDrop" }, host: { properties: { "class": "this.class" } }, providers: [
97
- {
98
- provide: NG_VALUE_ACCESSOR,
99
- useExisting: forwardRef(() => FileUploadComponent),
100
- multi: true,
101
- },
102
- ], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"upload-file-container\"\n uiDragDrop\n [ngClass]=\"{ 'upload-errors': !!errors }\"\n (fileDropped)=\"onFileDropped($event)\"\n>\n <div *ngIf=\"browse && !(!!success && !!file && !!progress)\" [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ui-icon class=\"upload-icon\" name=\"File-upload\"></ui-icon>\n <div class=\"errors\" *ngIf=\"!!errors\">\n <span *ngFor=\"let error of errors\"> <ui-icon name=\"Error\"></ui-icon> {{ error }} </span>\n </div>\n <input\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n [accept]=\"supportedFileTypes\"\n id=\"fileDrop\"\n (change)=\"onChangeUpload($event)\"\n />\n <p>Drag and drop or <label for=\"fileDrop\" class=\"semibold\">browse</label> your files</p>\n <span class=\"upload-text\">{{ maxFileSizeMB }}MB max file size.</span>\n </div>\n </div>\n <div class=\"upload-change\" [@inOutAnimationChange] *ngIf=\"!!success && !!file && !!progress\">\n <ui-icon class=\"upload-icon\" name=\"File-upload\"></ui-icon>\n <input\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileDrop\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <p>Drag and drop or <label for=\"fileDrop\" class=\"semibold\">change</label> your files</p>\n <span class=\"upload-text\"\n ><strong>{{ file.name }}</strong></span\n >\n </div>\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\n <p>{{ file.name }}</p>\n <ui-progress-bar [progress]=\"uploadProgress\"></ui-progress-bar>\n <p class=\"upload-text\">\n Uploading <span>{{ uploadProgress }}</span\n >%\n </p>\n </div>\n</div>\n<div class=\"upload-supported-files\" *ngIf=\"!!supportedFileTypes\">\n <span>Supported file types:</span>{{ supportedFileTypes }}\n</div>\n", styles: [".upload-file-container{border-radius:8px;border:1px dashed #888888;background:#F6F6F6;display:flex;justify-content:center;align-items:center;height:196px;flex-flow:column;position:relative;max-width:563px}.upload-file-container.upload-errors{border:1px dashed #cb7b7a}.upload-file-container .upload-files{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;height:196px}.upload-file-container .upload-change,.upload-file-container .upload-browse{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;position:relative;height:196px}.upload-file-container .upload-change ui-icon.upload-icon,.upload-file-container .upload-browse ui-icon.upload-icon{margin-bottom:16px}.upload-file-container .upload-change ui-icon.upload-icon mat-icon.size-16 svg,.upload-file-container .upload-browse ui-icon.upload-icon mat-icon.size-16 svg{width:32px;height:32px}.upload-file-container .upload-change input,.upload-file-container .upload-browse input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;cursor:pointer}.upload-file-container .upload-change .upload-text,.upload-file-container .upload-browse .upload-text{margin-top:20px}.upload-file-container .upload-change p,.upload-file-container .upload-browse p{margin:0}.upload-file-container .upload-change p .semibold,.upload-file-container .upload-browse p .semibold{font-weight:400;text-decoration:underline}.upload-file-container .upload-change .errors,.upload-file-container .upload-browse .errors{width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:20px;font-size:12px;line-height:16px;color:#cb7b7a}.upload-file-container .upload-change .errors span,.upload-file-container .upload-browse .errors span{display:flex;align-items:center;margin-bottom:5px}.upload-file-container .upload-change .errors span:last-child,.upload-file-container .upload-browse .errors span:last-child{margin-bottom:0}.upload-file-container .upload-change .errors ui-icon,.upload-file-container .upload-browse .errors ui-icon{margin-right:4px}.upload-file-container .upload-change .errors ui-icon mat-icon.size-16 svg,.upload-file-container .upload-browse .errors ui-icon mat-icon.size-16 svg{width:16px;height:16px;color:#cb7b7a}.upload-file-container .upload-progress{padding:0 32px;width:100%}.upload-file-container .upload-text{text-align:right}.upload-supported-files{font-size:12px;line-height:16px;margin-top:8px;display:flex}.upload-supported-files span{font-weight:700;margin-right:5px}@media (max-width: 600px){.upload-file-container{max-width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color"] }, { kind: "component", type: i3.ProgressBarComponent, selector: "ui-progress-bar", inputs: ["color", "progress", "mode", "buffer"] }, { kind: "directive", type: i4.DragDropDirective, selector: "[uiDragDrop]", outputs: ["fileDropped"] }], animations: [
103
- trigger('inOutAnimation', [
104
- transition(':enter', [
105
- style({ opacity: 0, height: 0 }),
106
- animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),
107
- ]),
108
- transition(':leave', [
109
- style({ opacity: 1, height: '196px' }),
110
- animate('0.2s ease-in', style({ opacity: 0, height: 0 })),
111
- ]),
112
- ]),
113
- trigger('inOutAnimationProgress', [
114
- transition(':enter', [
115
- style({ opacity: 0, height: 0 }),
116
- animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),
117
- ]),
118
- transition(':leave', [
119
- style({ opacity: 1, height: '196px' }),
120
- animate('0.2s ease-in', style({ opacity: 0, height: 0 })),
121
- ]),
122
- ]),
123
- trigger('inOutAnimationChange', [
124
- transition(':enter', [
125
- style({ opacity: 0, height: 0 }),
126
- animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),
127
- ]),
128
- transition(':leave', [
129
- style({ opacity: 1, height: '196px' }),
130
- animate('0.2s ease-in', style({ opacity: 0, height: 0 })),
131
- ]),
132
- ]),
133
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FileUploadComponent, decorators: [{
135
- type: Component,
136
- args: [{ selector: 'ui-file-upload', encapsulation: ViewEncapsulation.None, providers: [
137
- {
138
- provide: NG_VALUE_ACCESSOR,
139
- useExisting: forwardRef(() => FileUploadComponent),
140
- multi: true,
141
- },
142
- ], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
143
- trigger('inOutAnimation', [
144
- transition(':enter', [
145
- style({ opacity: 0, height: 0 }),
146
- animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),
147
- ]),
148
- transition(':leave', [
149
- style({ opacity: 1, height: '196px' }),
150
- animate('0.2s ease-in', style({ opacity: 0, height: 0 })),
151
- ]),
152
- ]),
153
- trigger('inOutAnimationProgress', [
154
- transition(':enter', [
155
- style({ opacity: 0, height: 0 }),
156
- animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),
157
- ]),
158
- transition(':leave', [
159
- style({ opacity: 1, height: '196px' }),
160
- animate('0.2s ease-in', style({ opacity: 0, height: 0 })),
161
- ]),
162
- ]),
163
- trigger('inOutAnimationChange', [
164
- transition(':enter', [
165
- style({ opacity: 0, height: 0 }),
166
- animate('0.2s ease-out', style({ opacity: 1, height: '196px' })),
167
- ]),
168
- transition(':leave', [
169
- style({ opacity: 1, height: '196px' }),
170
- animate('0.2s ease-in', style({ opacity: 0, height: 0 })),
171
- ]),
172
- ]),
173
- ], template: "<div\n class=\"upload-file-container\"\n uiDragDrop\n [ngClass]=\"{ 'upload-errors': !!errors }\"\n (fileDropped)=\"onFileDropped($event)\"\n>\n <div *ngIf=\"browse && !(!!success && !!file && !!progress)\" [@inOutAnimation] class=\"upload-files\">\n <div class=\"upload-browse\">\n <ui-icon class=\"upload-icon\" name=\"File-upload\"></ui-icon>\n <div class=\"errors\" *ngIf=\"!!errors\">\n <span *ngFor=\"let error of errors\"> <ui-icon name=\"Error\"></ui-icon> {{ error }} </span>\n </div>\n <input\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n [accept]=\"supportedFileTypes\"\n id=\"fileDrop\"\n (change)=\"onChangeUpload($event)\"\n />\n <p>Drag and drop or <label for=\"fileDrop\" class=\"semibold\">browse</label> your files</p>\n <span class=\"upload-text\">{{ maxFileSizeMB }}MB max file size.</span>\n </div>\n </div>\n <div class=\"upload-change\" [@inOutAnimationChange] *ngIf=\"!!success && !!file && !!progress\">\n <ui-icon class=\"upload-icon\" name=\"File-upload\"></ui-icon>\n <input\n class=\"form-control\"\n #fileDrop\n type=\"file\"\n id=\"fileDrop\"\n [accept]=\"supportedFileTypes\"\n (change)=\"onChangeUpload($event)\"\n [disabled]=\"disabled\"\n />\n <p>Drag and drop or <label for=\"fileDrop\" class=\"semibold\">change</label> your files</p>\n <span class=\"upload-text\"\n ><strong>{{ file.name }}</strong></span\n >\n </div>\n <div class=\"upload-progress\" [@inOutAnimationProgress] *ngIf=\"!!progress && !!file && !success\">\n <p>{{ file.name }}</p>\n <ui-progress-bar [progress]=\"uploadProgress\"></ui-progress-bar>\n <p class=\"upload-text\">\n Uploading <span>{{ uploadProgress }}</span\n >%\n </p>\n </div>\n</div>\n<div class=\"upload-supported-files\" *ngIf=\"!!supportedFileTypes\">\n <span>Supported file types:</span>{{ supportedFileTypes }}\n</div>\n", styles: [".upload-file-container{border-radius:8px;border:1px dashed #888888;background:#F6F6F6;display:flex;justify-content:center;align-items:center;height:196px;flex-flow:column;position:relative;max-width:563px}.upload-file-container.upload-errors{border:1px dashed #cb7b7a}.upload-file-container .upload-files{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;height:196px}.upload-file-container .upload-change,.upload-file-container .upload-browse{display:flex;flex-flow:column;align-items:center;justify-content:center;width:100%;position:relative;height:196px}.upload-file-container .upload-change ui-icon.upload-icon,.upload-file-container .upload-browse ui-icon.upload-icon{margin-bottom:16px}.upload-file-container .upload-change ui-icon.upload-icon mat-icon.size-16 svg,.upload-file-container .upload-browse ui-icon.upload-icon mat-icon.size-16 svg{width:32px;height:32px}.upload-file-container .upload-change input,.upload-file-container .upload-browse input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;cursor:pointer}.upload-file-container .upload-change .upload-text,.upload-file-container .upload-browse .upload-text{margin-top:20px}.upload-file-container .upload-change p,.upload-file-container .upload-browse p{margin:0}.upload-file-container .upload-change p .semibold,.upload-file-container .upload-browse p .semibold{font-weight:400;text-decoration:underline}.upload-file-container .upload-change .errors,.upload-file-container .upload-browse .errors{width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:20px;font-size:12px;line-height:16px;color:#cb7b7a}.upload-file-container .upload-change .errors span,.upload-file-container .upload-browse .errors span{display:flex;align-items:center;margin-bottom:5px}.upload-file-container .upload-change .errors span:last-child,.upload-file-container .upload-browse .errors span:last-child{margin-bottom:0}.upload-file-container .upload-change .errors ui-icon,.upload-file-container .upload-browse .errors ui-icon{margin-right:4px}.upload-file-container .upload-change .errors ui-icon mat-icon.size-16 svg,.upload-file-container .upload-browse .errors ui-icon mat-icon.size-16 svg{width:16px;height:16px;color:#cb7b7a}.upload-file-container .upload-progress{padding:0 32px;width:100%}.upload-file-container .upload-text{text-align:right}.upload-supported-files{font-size:12px;line-height:16px;margin-top:8px;display:flex}.upload-supported-files span{font-weight:700;margin-right:5px}@media (max-width: 600px){.upload-file-container{max-width:100%}}\n"] }]
174
- }], ctorParameters: function () { return []; }, propDecorators: { class: [{
175
- type: HostBinding
176
- }], maxFileSizeMB: [{
177
- type: Input
178
- }], supportedFileTypes: [{
179
- type: Input
180
- }], uploadProgress: [{
181
- type: Input
182
- }], errors: [{
183
- type: Input
184
- }], disabled: [{
185
- type: Input
186
- }], file: [{
187
- type: Input
188
- }], OnDrop: [{
189
- type: Output
190
- }] } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBZ0R6RSxNQUFNLE9BQU8sbUJBQW1CO0lBa0U5QjtRQWpFZSxVQUFLLEdBQUcsZ0JBQWdCLENBQUM7UUF5Q3hDOzs7OztXQUtHO1FBQ00sU0FBSSxHQUFnQixJQUFJLENBQUM7UUFFeEIsV0FBTSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWhFOztXQUVHO1FBQ0gsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFMUI7O1dBRUc7UUFDSCxZQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRW5CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUdELENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsYUFBYSxDQUFDLEtBQWU7UUFDM0IsSUFBSSxDQUFDLFFB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NEJBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0NBQ3RDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDMUQsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzBFQUdjLEtBQUs7c0JBQW5CLFdBQVc7Z0JBT0gsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBUUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxNQUFNO3NCQUFkLEtBQUs7Z0JBUUcsUUFBUTtzQkFBaEIsS0FBSztnQkFRRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWxlVXBsb2FkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb24nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnMTk2cHgnIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvblByb2dyZXNzJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnMTk2cHgnIH0pKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb25DaGFuZ2UnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgaGVpZ2h0OiAnMTk2cHgnIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAsIGhlaWdodDogMCB9KSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpbGUtdXBsb2FkJztcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICogU3VwcG9ydGVkIGZpbGVzIGZvciBpbnB1dCBmaWVsZFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc3VwcG9ydGVkRmlsZVR5cGVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGxvYWQgcHJvZ3Jlc3NcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVwbG9hZFByb2dyZXNzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBlcnJvcnM/OiBzdHJpbmdbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFeGlzdGluZyBmaWxlIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIEB0eXBlIHsoRmlsZSB8IG51bGwpfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZmlsZTogRmlsZSB8IG51bGwgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSBPbkRyb3A6IEV2ZW50RW1pdHRlcjxGaWxlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub3VjaCA9ICgpID0+IHt9O1xuXG4gIHByb2dyZXNzID0gZmFsc2U7XG4gIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgYnJvd3NlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJyb3dzZSA9IHRydWU7XG4gIH1cblxuICAvL1doZW4gZmlsZSBpcyBkcm9wcGVkXG4gIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgdGhpcy5lbWl0RmlsZShmaWxlcyk7XG4gIH1cblxuICAvL1doZW4gaW5wdXQgY2hhbmdlc1xuICBvbkNoYW5nZVVwbG9hZChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuZW1pdEZpbGUoZWxlbWVudC5maWxlcyB8fCBuZXcgRmlsZUxpc3QoKSk7XG4gIH1cblxuICAvL0VtaXQgZHJvcCBmaWxlXG4gIGVtaXRGaWxlKGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IFtmaWxlXSA9IEFycmF5LmZyb20oZmlsZXMpO1xuICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5maWxlKTtcbiAgICB0aGlzLk9uRHJvcC5lbWl0KGZpbGUpO1xuICB9XG5cbiAgLy9TaG93IHByb2dyZXNzLWJhclxuICBzaG93UHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5icm93c2UgPSBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5maWxlICYmICF0aGlzLmVycm9ycyA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIC8vU2hvdyBzdWNjZXNzIGVsZW1lbnRzXG4gIHNob3dTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGUgJiYgdGhpcy51cGxvYWRQcm9ncmVzcyA9PT0gMTAwICYmICF0aGlzLmVycm9ycyA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIC8vU2hvdyBicm93c2Ugd2hlbiB0aGVyZSBhcmUgZXJyb3JcbiAgc2hvd0Jyb3dzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3VwbG9hZFByb2dyZXNzJ10gfHwgY2hhbmdlc1snZmlsZSddKSB7XG4gICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5zaG93UHJvZ3Jlc3MoKTtcbiAgICAgIHRoaXMuc3VjY2VzcyA9IHRoaXMuc2hvd1N1Y2Nlc3MoKTtcbiAgICAgIHRoaXMuYnJvd3NlID0gdGhpcy5zaG93QnJvd3NlKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydlcnJvcnMnXSkge1xuICAgICAgdGhpcy5wcm9ncmVzcyA9IHRoaXMuc2hvd1Byb2dyZXNzKCk7XG4gICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XG4gICAgICB0aGlzLmJyb3dzZSA9IHRoaXMuc2hvd0Jyb3dzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU/OiBGaWxlKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZpbGUgPSB2YWx1ZSB8fCBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwidXBsb2FkLWZpbGUtY29udGFpbmVyXCJcbiAgdWlEcmFnRHJvcFxuICBbbmdDbGFzc109XCJ7ICd1cGxvYWQtZXJyb3JzJzogISFlcnJvcnMgfVwiXG4gIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIlxuPlxuICA8ZGl2ICpuZ0lmPVwiYnJvd3NlICYmICEoISFzdWNjZXNzICYmICEhZmlsZSAmJiAhIXByb2dyZXNzKVwiIFtAaW5PdXRBbmltYXRpb25dIGNsYXNzPVwidXBsb2FkLWZpbGVzXCI+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1icm93c2VcIj5cbiAgICAgIDx1aS1pY29uIGNsYXNzPVwidXBsb2FkLWljb25cIiBuYW1lPVwiRmlsZS11cGxvYWRcIj48L3VpLWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nSWY9XCIhIWVycm9yc1wiPlxuICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+IDx1aS1pY29uIG5hbWU9XCJFcnJvclwiPjwvdWktaWNvbj4ge3sgZXJyb3IgfX0gPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAjZmlsZURyb3BcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBbYWNjZXB0XT1cInN1cHBvcnRlZEZpbGVUeXBlc1wiXG4gICAgICAgIGlkPVwiZmlsZURyb3BcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlVXBsb2FkKCRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxwPkRyYWcgYW5kIGRyb3Agb3IgPGxhYmVsIGZvcj1cImZpbGVEcm9wXCIgY2xhc3M9XCJzZW1pYm9sZFwiPmJyb3dzZTwvbGFiZWw+IHlvdXIgZmlsZXM8L3A+XG4gICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC10ZXh0XCI+e3sgbWF4RmlsZVNpemVNQiB9fU1CIG1heCBmaWxlIHNpemUuPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInVwbG9hZC1jaGFuZ2VcIiBbQGluT3V0QW5pbWF0aW9uQ2hhbmdlXSAqbmdJZj1cIiEhc3VjY2VzcyAmJiAhIWZpbGUgJiYgISFwcm9ncmVzc1wiPlxuICAgIDx1aS1pY29uIGNsYXNzPVwidXBsb2FkLWljb25cIiBuYW1lPVwiRmlsZS11cGxvYWRcIj48L3VpLWljb24+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAjZmlsZURyb3BcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgIGlkPVwiZmlsZURyb3BcIlxuICAgICAgW2FjY2VwdF09XCJzdXBwb3J0ZWRGaWxlVHlwZXNcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVVwbG9hZCgkZXZlbnQpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgLz5cbiAgICA8cD5EcmFnIGFuZCBkcm9wIG9yIDxsYWJlbCBmb3I9XCJmaWxlRHJvcFwiIGNsYXNzPVwic2VtaWJvbGRcIj5jaGFuZ2U8L2xhYmVsPiB5b3VyIGZpbGVzPC9wPlxuICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIlxuICAgICAgPjxzdHJvbmc+e3sgZmlsZS5uYW1lIH19PC9zdHJvbmc+PC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInVwbG9hZC1wcm9ncmVzc1wiIFtAaW5PdXRBbmltYXRpb25Qcm9ncmVzc10gKm5nSWY9XCIhIXByb2dyZXNzICYmICEhZmlsZSAmJiAhc3VjY2Vzc1wiPlxuICAgIDxwPnt7IGZpbGUubmFtZSB9fTwvcD5cbiAgICA8dWktcHJvZ3Jlc3MtYmFyIFtwcm9ncmVzc109XCJ1cGxvYWRQcm9ncmVzc1wiPjwvdWktcHJvZ3Jlc3MtYmFyPlxuICAgIDxwIGNsYXNzPVwidXBsb2FkLXRleHRcIj5cbiAgICAgIFVwbG9hZGluZyA8c3Bhbj57eyB1cGxvYWRQcm9ncmVzcyB9fTwvc3BhblxuICAgICAgPiVcbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidXBsb2FkLXN1cHBvcnRlZC1maWxlc1wiICpuZ0lmPVwiISFzdXBwb3J0ZWRGaWxlVHlwZXNcIj5cbiAgPHNwYW4+U3VwcG9ydGVkIGZpbGUgdHlwZXM6PC9zcGFuPnt7IHN1cHBvcnRlZEZpbGVUeXBlcyB9fVxuPC9kaXY+XG4iXX0=