ngx-render-material-forms 2.5.19 → 2.5.21

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 (157) hide show
  1. package/esm2020/lib/FormioControl.mjs +36 -0
  2. package/esm2020/lib/components/Base.mjs +32 -0
  3. package/esm2020/lib/components/MaterialComponent.mjs +145 -0
  4. package/esm2020/lib/components/MaterialNestedComponent.mjs +38 -0
  5. package/esm2020/lib/components/Webform.mjs +18 -0
  6. package/esm2020/lib/components/add-on-products/add-on-products.component.mjs +842 -0
  7. package/esm2020/lib/components/button/button.component.mjs +102 -0
  8. package/esm2020/lib/components/calendar/calendar.component.mjs +129 -0
  9. package/esm2020/lib/components/checkbox/checkbox.component.mjs +54 -0
  10. package/esm2020/lib/components/columns/columns.component.mjs +69 -0
  11. package/esm2020/lib/components/common.service.mjs +256 -0
  12. package/esm2020/lib/components/confirmation-dialog/confirmation-dialog.component.mjs +25 -0
  13. package/esm2020/lib/components/container/container.component.mjs +25 -0
  14. package/{esm2022 → esm2020}/lib/components/content/content.component.mjs +18 -18
  15. package/esm2020/lib/components/currency/currency.component.mjs +43 -0
  16. package/esm2020/lib/components/datagrid/datagrid.component.mjs +707 -0
  17. package/esm2020/lib/components/date/date.component.mjs +363 -0
  18. package/{esm2022 → esm2020}/lib/components/day/day.component.mjs +75 -75
  19. package/esm2020/lib/components/editgrid/editgrid.component.mjs +243 -0
  20. package/esm2020/lib/components/email/email.component.mjs +30 -0
  21. package/esm2020/lib/components/fieldset/fieldset.component.mjs +50 -0
  22. package/esm2020/lib/components/formio-form-field/formio-form-field.component.mjs +57 -0
  23. package/esm2020/lib/components/formio.wizard.mjs +88 -0
  24. package/{esm2022 → esm2020}/lib/components/hidden/hidden.component.mjs +20 -20
  25. package/esm2020/lib/components/html/html.component.mjs +29 -0
  26. package/esm2020/lib/components/index.mjs +125 -0
  27. package/{esm2022 → esm2020}/lib/components/label/label.component.mjs +17 -17
  28. package/esm2020/lib/components/number/number.component.mjs +67 -0
  29. package/esm2020/lib/components/panel/panel.component.mjs +57 -0
  30. package/esm2020/lib/components/password/password.component.mjs +30 -0
  31. package/esm2020/lib/components/phonenumber/phonenumber.component.mjs +30 -0
  32. package/esm2020/lib/components/radio/radio.component.mjs +96 -0
  33. package/esm2020/lib/components/select/select.component.mjs +593 -0
  34. package/esm2020/lib/components/selectboxes/selectboxes.component.mjs +102 -0
  35. package/esm2020/lib/components/signature/signature.component.mjs +103 -0
  36. package/esm2020/lib/components/survey/survey.component.mjs +167 -0
  37. package/esm2020/lib/components/table/table.component.mjs +97 -0
  38. package/esm2020/lib/components/tabs/tabs.component.mjs +43 -0
  39. package/esm2020/lib/components/tags/tags.component.mjs +117 -0
  40. package/esm2020/lib/components/textarea/textarea.component.mjs +98 -0
  41. package/esm2020/lib/components/textfield/textfield.component.mjs +124 -0
  42. package/esm2020/lib/components/time/time.component.mjs +206 -0
  43. package/esm2020/lib/components/url/url.component.mjs +30 -0
  44. package/esm2020/lib/components/well/well.component.mjs +43 -0
  45. package/{esm2022 → esm2020}/lib/const/ButtonsThemes.mjs +16 -16
  46. package/{esm2022 → esm2020}/lib/const/LabelPositions.mjs +9 -9
  47. package/esm2020/lib/directives/mask.directive.mjs +65 -0
  48. package/esm2020/lib/formio.component.mjs +80 -0
  49. package/{esm2022 → esm2020}/lib/ngx-render-material-forms.component.mjs +15 -15
  50. package/esm2020/lib/ngx-render-material-forms.module.mjs +378 -0
  51. package/{esm2022 → esm2020}/lib/ngx-render-material-forms.service.mjs +14 -14
  52. package/{esm2022 → esm2020}/lib/renderer.mjs +12 -12
  53. package/{esm2022 → esm2020}/ngx-render-material-forms.js +4 -4
  54. package/{esm2022 → esm2020}/public-api.mjs +6 -6
  55. package/fesm2015/ngx-render-material-forms.js +5888 -0
  56. package/fesm2015/ngx-render-material-forms.mjs.map +1 -0
  57. package/{fesm2022 → fesm2020}/ngx-render-material-forms.js +4360 -4320
  58. package/fesm2020/ngx-render-material-forms.mjs.map +1 -0
  59. package/index.d.ts +5 -5
  60. package/lib/FormioControl.d.ts +7 -7
  61. package/lib/components/Base.d.ts +2 -2
  62. package/lib/components/MaterialComponent.d.ts +30 -30
  63. package/lib/components/MaterialNestedComponent.d.ts +13 -13
  64. package/lib/components/Webform.d.ts +1 -1
  65. package/lib/components/add-on-products/add-on-products.component.d.ts +142 -142
  66. package/lib/components/button/button.component.d.ts +30 -30
  67. package/lib/components/calendar/calendar.component.d.ts +34 -34
  68. package/lib/components/checkbox/checkbox.component.d.ts +9 -9
  69. package/lib/components/columns/columns.component.d.ts +12 -12
  70. package/lib/components/common.service.d.ts +86 -86
  71. package/lib/components/confirmation-dialog/confirmation-dialog.component.d.ts +11 -11
  72. package/lib/components/container/container.component.d.ts +8 -8
  73. package/lib/components/content/content.component.d.ts +8 -8
  74. package/lib/components/currency/currency.component.d.ts +10 -10
  75. package/lib/components/datagrid/datagrid.component.d.ts +81 -81
  76. package/lib/components/date/date.component.d.ts +45 -43
  77. package/lib/components/day/day.component.d.ts +16 -16
  78. package/lib/components/editgrid/editgrid.component.d.ts +50 -50
  79. package/lib/components/email/email.component.d.ts +9 -9
  80. package/lib/components/fieldset/fieldset.component.d.ts +8 -8
  81. package/lib/components/formio-form-field/formio-form-field.component.d.ts +18 -18
  82. package/lib/components/formio.wizard.d.ts +19 -19
  83. package/lib/components/hidden/hidden.component.d.ts +8 -8
  84. package/lib/components/html/html.component.d.ts +11 -11
  85. package/lib/components/index.d.ts +2 -2
  86. package/lib/components/label/label.component.d.ts +6 -6
  87. package/lib/components/number/number.component.d.ts +18 -25
  88. package/lib/components/panel/panel.component.d.ts +8 -8
  89. package/lib/components/password/password.component.d.ts +9 -9
  90. package/lib/components/phonenumber/phonenumber.component.d.ts +9 -9
  91. package/lib/components/radio/radio.component.d.ts +12 -12
  92. package/lib/components/select/select.component.d.ts +77 -77
  93. package/lib/components/selectboxes/selectboxes.component.d.ts +15 -15
  94. package/lib/components/signature/signature.component.d.ts +12 -12
  95. package/lib/components/survey/survey.component.d.ts +14 -14
  96. package/lib/components/table/table.component.d.ts +12 -12
  97. package/lib/components/tabs/tabs.component.d.ts +9 -9
  98. package/lib/components/tags/tags.component.d.ts +15 -15
  99. package/lib/components/textarea/textarea.component.d.ts +13 -13
  100. package/lib/components/textfield/textfield.component.d.ts +18 -18
  101. package/lib/components/time/time.component.d.ts +27 -27
  102. package/lib/components/url/url.component.d.ts +9 -9
  103. package/lib/components/well/well.component.d.ts +8 -8
  104. package/lib/const/ButtonsThemes.d.ts +14 -14
  105. package/lib/const/LabelPositions.d.ts +8 -8
  106. package/lib/directives/mask.directive.d.ts +17 -17
  107. package/lib/formio.component.d.ts +15 -15
  108. package/lib/ngx-render-material-forms.component.d.ts +8 -8
  109. package/lib/ngx-render-material-forms.module.d.ts +112 -110
  110. package/lib/ngx-render-material-forms.service.d.ts +6 -6
  111. package/lib/renderer.d.ts +8 -8
  112. package/package.json +11 -5
  113. package/public-api.d.ts +3 -3
  114. package/esm2022/lib/FormioControl.mjs +0 -36
  115. package/esm2022/lib/components/Base.mjs +0 -32
  116. package/esm2022/lib/components/MaterialComponent.mjs +0 -148
  117. package/esm2022/lib/components/MaterialNestedComponent.mjs +0 -38
  118. package/esm2022/lib/components/Webform.mjs +0 -18
  119. package/esm2022/lib/components/add-on-products/add-on-products.component.mjs +0 -841
  120. package/esm2022/lib/components/button/button.component.mjs +0 -101
  121. package/esm2022/lib/components/calendar/calendar.component.mjs +0 -127
  122. package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -53
  123. package/esm2022/lib/components/columns/columns.component.mjs +0 -58
  124. package/esm2022/lib/components/common.service.mjs +0 -255
  125. package/esm2022/lib/components/confirmation-dialog/confirmation-dialog.component.mjs +0 -24
  126. package/esm2022/lib/components/container/container.component.mjs +0 -24
  127. package/esm2022/lib/components/currency/currency.component.mjs +0 -41
  128. package/esm2022/lib/components/datagrid/datagrid.component.mjs +0 -693
  129. package/esm2022/lib/components/date/date.component.mjs +0 -354
  130. package/esm2022/lib/components/editgrid/editgrid.component.mjs +0 -243
  131. package/esm2022/lib/components/email/email.component.mjs +0 -28
  132. package/esm2022/lib/components/fieldset/fieldset.component.mjs +0 -49
  133. package/esm2022/lib/components/formio-form-field/formio-form-field.component.mjs +0 -56
  134. package/esm2022/lib/components/formio.wizard.mjs +0 -88
  135. package/esm2022/lib/components/html/html.component.mjs +0 -29
  136. package/esm2022/lib/components/index.mjs +0 -125
  137. package/esm2022/lib/components/number/number.component.mjs +0 -114
  138. package/esm2022/lib/components/panel/panel.component.mjs +0 -56
  139. package/esm2022/lib/components/password/password.component.mjs +0 -28
  140. package/esm2022/lib/components/phonenumber/phonenumber.component.mjs +0 -28
  141. package/esm2022/lib/components/radio/radio.component.mjs +0 -93
  142. package/esm2022/lib/components/select/select.component.mjs +0 -592
  143. package/esm2022/lib/components/selectboxes/selectboxes.component.mjs +0 -99
  144. package/esm2022/lib/components/signature/signature.component.mjs +0 -99
  145. package/esm2022/lib/components/survey/survey.component.mjs +0 -166
  146. package/esm2022/lib/components/table/table.component.mjs +0 -96
  147. package/esm2022/lib/components/tabs/tabs.component.mjs +0 -42
  148. package/esm2022/lib/components/tags/tags.component.mjs +0 -114
  149. package/esm2022/lib/components/textarea/textarea.component.mjs +0 -94
  150. package/esm2022/lib/components/textfield/textfield.component.mjs +0 -122
  151. package/esm2022/lib/components/time/time.component.mjs +0 -205
  152. package/esm2022/lib/components/url/url.component.mjs +0 -28
  153. package/esm2022/lib/components/well/well.component.mjs +0 -41
  154. package/esm2022/lib/directives/mask.directive.mjs +0 -65
  155. package/esm2022/lib/formio.component.mjs +0 -77
  156. package/esm2022/lib/ngx-render-material-forms.module.mjs +0 -332
  157. package/fesm2022/ngx-render-material-forms.mjs.map +0 -1
@@ -0,0 +1,117 @@
1
+ import { Component } from '@angular/core';
2
+ import { COMMA, ENTER } from '@angular/cdk/keycodes';
3
+ import TagsComponent from 'formiojs/components/tags/Tags.js';
4
+ import { MaterialComponent } from '../MaterialComponent';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "@angular/material/form-field";
9
+ import * as i4 from "@angular/material/chips";
10
+ import * as i5 from "@angular/material/icon";
11
+ import * as i6 from "@angular/flex-layout/flex";
12
+ import * as i7 from "../formio-form-field/formio-form-field.component";
13
+ import * as i8 from "../label/label.component";
14
+ export class MaterialTagsComponent extends MaterialComponent {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.separatorKeysCodes = [ENTER, COMMA];
18
+ this.tags = [];
19
+ }
20
+ add(event) {
21
+ const input = event.input;
22
+ const value = event.value;
23
+ if ((value || '').trim()) {
24
+ this.tags.push(value.trim());
25
+ }
26
+ if (input) {
27
+ input.value = '';
28
+ }
29
+ this.onChange();
30
+ }
31
+ remove(index) {
32
+ if (index >= 0 && index < this.tags.length) {
33
+ this.tags.splice(index, 1);
34
+ }
35
+ this.onChange();
36
+ }
37
+ getValue() {
38
+ return (this.instance.component.storeas === 'string') ? this.tags.join(this.instance.delimiter) : this.tags;
39
+ }
40
+ setValue(value) {
41
+ if (typeof value === 'string') {
42
+ value = value.split(this.instance.delimiter);
43
+ }
44
+ if (value && !Array.isArray(value)) {
45
+ value = [value];
46
+ }
47
+ this.tags = value;
48
+ }
49
+ }
50
+ MaterialTagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTagsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
51
+ MaterialTagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialTagsComponent, selector: "mat-formio-tags", usesInheritance: true, ngImport: i0, template: `
52
+ <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
53
+ <ng-template #componentTemplate let-hasLabel>
54
+ <mat-form-field class="example-chip-list" fxFill>
55
+
56
+ <mat-label *ngIf="hasLabel">
57
+ <span [instance]="instance" matFormioLabel></span>
58
+ </mat-label>
59
+
60
+ <mat-chip-list #chipList [attr.aria-label]="instance.component.label">
61
+ <mat-chip *ngFor="let tag of tags; index as i;"
62
+ [selectable]="true"
63
+ [removable]="true"
64
+ (removed)="remove(i)"
65
+ >
66
+ {{tag}}
67
+ <mat-icon matChipRemove>cancel</mat-icon>
68
+ </mat-chip>
69
+
70
+ <input [formControl]="control"
71
+ [matChipInputFor]="chipList"
72
+ [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
73
+ [matChipInputAddOnBlur]="true"
74
+ (matChipInputTokenEnd)="add($event)"
75
+ >
76
+ </mat-chip-list>
77
+ </mat-form-field>
78
+ </ng-template>
79
+ `, isInline: true, 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: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i7.FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: i8.LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTagsComponent, decorators: [{
81
+ type: Component,
82
+ args: [{
83
+ selector: 'mat-formio-tags',
84
+ template: `
85
+ <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
86
+ <ng-template #componentTemplate let-hasLabel>
87
+ <mat-form-field class="example-chip-list" fxFill>
88
+
89
+ <mat-label *ngIf="hasLabel">
90
+ <span [instance]="instance" matFormioLabel></span>
91
+ </mat-label>
92
+
93
+ <mat-chip-list #chipList [attr.aria-label]="instance.component.label">
94
+ <mat-chip *ngFor="let tag of tags; index as i;"
95
+ [selectable]="true"
96
+ [removable]="true"
97
+ (removed)="remove(i)"
98
+ >
99
+ {{tag}}
100
+ <mat-icon matChipRemove>cancel</mat-icon>
101
+ </mat-chip>
102
+
103
+ <input [formControl]="control"
104
+ [matChipInputFor]="chipList"
105
+ [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
106
+ [matChipInputAddOnBlur]="true"
107
+ (matChipInputTokenEnd)="add($event)"
108
+ >
109
+ </mat-chip-list>
110
+ </mat-form-field>
111
+ </ng-template>
112
+ `
113
+ }]
114
+ }] });
115
+ TagsComponent.MaterialComponent = MaterialTagsComponent;
116
+ export { TagsComponent };
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy90YWdzL3RhZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7OztBQW1DekQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQWhDNUQ7O1FBaUNXLHVCQUFrQixHQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELFNBQUksR0FBYSxFQUFFLENBQUM7S0FpQ3JCO0lBaENDLEdBQUcsQ0FBQyxLQUF3QjtRQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlHLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDOUM7UUFDRCxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbEMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakI7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDOztrSEFsQ1UscUJBQXFCO3NHQUFyQixxQkFBcUIsOEVBOUJ0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDsyRkFFVSxxQkFBcUI7a0JBaENqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDtpQkFDRjs7QUFxQ0EsYUFBcUIsQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IFRhZ3NDb21wb25lbnQgZnJvbSAnZm9ybWlvanMvY29tcG9uZW50cy90YWdzL1RhZ3MuanMnO1xyXG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4uL01hdGVyaWFsQ29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Q2hpcElucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tdGFncycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtZm9ybWlvLWZvcm0tZmllbGQgW2luc3RhbmNlXT1cImluc3RhbmNlXCIgW2NvbXBvbmVudFRlbXBsYXRlXT1cImNvbXBvbmVudFRlbXBsYXRlXCI+PC9tYXQtZm9ybWlvLWZvcm0tZmllbGQ+XHJcbiAgICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudFRlbXBsYXRlIGxldC1oYXNMYWJlbD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZXhhbXBsZS1jaGlwLWxpc3RcIiBmeEZpbGw+XHJcblxyXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJoYXNMYWJlbFwiPlxyXG4gICAgICAgICAgPHNwYW4gW2luc3RhbmNlXT1cImluc3RhbmNlXCIgbWF0Rm9ybWlvTGFiZWw+PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG5cclxuICAgICAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3QgW2F0dHIuYXJpYS1sYWJlbF09XCJpbnN0YW5jZS5jb21wb25lbnQubGFiZWxcIj5cclxuICAgICAgICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3M7IGluZGV4IGFzIGk7XCJcclxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZShpKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7dGFnfX1cclxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvbWF0LWNoaXA+XHJcblxyXG4gICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCJcclxuICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGQoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRhZ3NDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbENvbXBvbmVudCB7XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG4gIHRhZ3M6IHN0cmluZ1tdID0gW107XHJcbiAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC5pbnB1dDtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudmFsdWU7XHJcbiAgICBpZiAoKHZhbHVlIHx8ICcnKS50cmltKCkpIHtcclxuICAgICAgdGhpcy50YWdzLnB1c2godmFsdWUudHJpbSgpKTtcclxuICAgIH1cclxuICAgIGlmIChpbnB1dCkge1xyXG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGluZGV4KTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMudGFncy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy50YWdzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiAodGhpcy5pbnN0YW5jZS5jb21wb25lbnQuc3RvcmVhcyA9PT0gJ3N0cmluZycpID8gdGhpcy50YWdzLmpvaW4odGhpcy5pbnN0YW5jZS5kZWxpbWl0ZXIpIDogdGhpcy50YWdzO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUodmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQodGhpcy5pbnN0YW5jZS5kZWxpbWl0ZXIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICB2YWx1ZSA9IFt2YWx1ZV07XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhZ3MgPSB2YWx1ZTtcclxuICB9XHJcbn1cclxuKFRhZ3NDb21wb25lbnQgYXMgYW55KS5NYXRlcmlhbENvbXBvbmVudCA9IE1hdGVyaWFsVGFnc0NvbXBvbmVudDtcclxuZXhwb3J0IHsgVGFnc0NvbXBvbmVudCB9O1xyXG4iXX0=
@@ -0,0 +1,98 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { MaterialComponent } from '../MaterialComponent';
3
+ import TextAreaComponent from 'formiojs/components/textarea/TextArea.js';
4
+ import isNil from 'lodash/isNil';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "@angular/material/form-field";
9
+ import * as i4 from "@angular/material/input";
10
+ import * as i5 from "@angular/flex-layout/flex";
11
+ import * as i6 from "@angular/flex-layout/extended";
12
+ import * as i7 from "../formio-form-field/formio-form-field.component";
13
+ import * as i8 from "../label/label.component";
14
+ export class MaterialTextareaComponent extends MaterialComponent {
15
+ ngAfterViewInit() {
16
+ if (this.element && this.element.nativeElement && this.instance) {
17
+ // Add custom classes to elements.
18
+ if (this.instance.component.customClass) {
19
+ this.element.nativeElement.classList.add(this.instance.component.customClass);
20
+ }
21
+ }
22
+ // Attach the element so the wysiwyg will work.
23
+ this.instance.attachElement(this.textarea.nativeElement);
24
+ }
25
+ getErrorMessage() {
26
+ // Check if instance and necessary properties exist
27
+ if (this.instance && this.instance.parent && this.instance.parent._data) {
28
+ if (this.instance.parent._data.submit) {
29
+ this.control.markAllAsTouched();
30
+ }
31
+ }
32
+ // Return the error message if it exists
33
+ return this.instance.error ? this.instance.error.message : '';
34
+ }
35
+ getValue() {
36
+ return isNil(this.control.value) ? '' : this.control.value;
37
+ }
38
+ }
39
+ MaterialTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
40
+ MaterialTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialTextareaComponent, selector: "mat-formio-textarea", viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
41
+ <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
42
+ <ng-template #componentTemplate let-hasLabel>
43
+ <mat-form-field class="mat-formio-textarea"
44
+ [ngClass]="{'editor-enabled': !!instance.component.editor}"
45
+ fxFill
46
+ fxFlexAlign="center"
47
+ >
48
+ <mat-label fxFill *ngIf="hasLabel">
49
+ <span [instance]="instance" matFormioLabel></span>
50
+ </mat-label>
51
+ <span *ngIf="instance.component.prefix" matPrefix>{{ instance.component.prefix }}&nbsp;</span>
52
+ <textarea matInput
53
+ [placeholder]="instance.component.placeholder"
54
+ [formControl]="control"
55
+ [rows]="(instance.component.rows || 3)"
56
+ (input)="onChange()"
57
+ #textarea
58
+ >
59
+ </textarea>
60
+ <span *ngIf="instance.component.suffix" matSuffix>{{ instance.component.suffix }}</span>
61
+ <mat-error *ngIf="instance.error">{{ getErrorMessage() }}</mat-error>
62
+ </mat-form-field>
63
+ </ng-template>
64
+ `, isInline: true, styles: [".mat-input-element{min-height:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i7.FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: i8.LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTextareaComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'mat-formio-textarea', template: `
68
+ <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
69
+ <ng-template #componentTemplate let-hasLabel>
70
+ <mat-form-field class="mat-formio-textarea"
71
+ [ngClass]="{'editor-enabled': !!instance.component.editor}"
72
+ fxFill
73
+ fxFlexAlign="center"
74
+ >
75
+ <mat-label fxFill *ngIf="hasLabel">
76
+ <span [instance]="instance" matFormioLabel></span>
77
+ </mat-label>
78
+ <span *ngIf="instance.component.prefix" matPrefix>{{ instance.component.prefix }}&nbsp;</span>
79
+ <textarea matInput
80
+ [placeholder]="instance.component.placeholder"
81
+ [formControl]="control"
82
+ [rows]="(instance.component.rows || 3)"
83
+ (input)="onChange()"
84
+ #textarea
85
+ >
86
+ </textarea>
87
+ <span *ngIf="instance.component.suffix" matSuffix>{{ instance.component.suffix }}</span>
88
+ <mat-error *ngIf="instance.error">{{ getErrorMessage() }}</mat-error>
89
+ </mat-form-field>
90
+ </ng-template>
91
+ `, styles: [".mat-input-element{min-height:16px}\n"] }]
92
+ }], propDecorators: { textarea: [{
93
+ type: ViewChild,
94
+ args: ['textarea']
95
+ }] } });
96
+ TextAreaComponent.MaterialComponent = MaterialTextareaComponent;
97
+ export { TextAreaComponent };
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLGlCQUFpQixNQUFNLDBDQUEwQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQStCakMsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGlCQUFpQjtJQUc5RCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0Qsa0NBQWtDO1lBQ2xDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQy9FO1NBQ0Y7UUFDRCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsZUFBZTtRQUNiLG1EQUFtRDtRQUNuRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3ZFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ2pDO1NBQ0Y7UUFFRCx3Q0FBd0M7UUFDeEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUdELFFBQVE7UUFDTixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzdELENBQUM7O3NIQTdCVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qix3TEExQjFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlQ7MkZBRVUseUJBQXlCO2tCQTdCckMsU0FBUzsrQkFDRSxxQkFBcUIsWUFFckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDs4QkFHc0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVOztBQThCdkIsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcseUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4uL01hdGVyaWFsQ29tcG9uZW50JztcclxuaW1wb3J0IFRleHRBcmVhQ29tcG9uZW50IGZyb20gJ2Zvcm1pb2pzL2NvbXBvbmVudHMvdGV4dGFyZWEvVGV4dEFyZWEuanMnO1xyXG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWF0LWZvcm1pby10ZXh0YXJlYScsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dGFyZWEuY29tcG9uZW50LmNzcyddLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWZvcm1pby1mb3JtLWZpZWxkIFtpbnN0YW5jZV09XCJpbnN0YW5jZVwiIFtjb21wb25lbnRUZW1wbGF0ZV09XCJjb21wb25lbnRUZW1wbGF0ZVwiPjwvbWF0LWZvcm1pby1mb3JtLWZpZWxkPlxyXG4gICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRUZW1wbGF0ZSBsZXQtaGFzTGFiZWw+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mb3JtaW8tdGV4dGFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlZGl0b3ItZW5hYmxlZCc6ICEhaW5zdGFuY2UuY29tcG9uZW50LmVkaXRvcn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZnhGaWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmeEZsZXhBbGlnbj1cImNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWxhYmVsIGZ4RmlsbCAqbmdJZj1cImhhc0xhYmVsXCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIiBtYXRGb3JtaW9MYWJlbD48L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbnN0YW5jZS5jb21wb25lbnQucHJlZml4XCIgbWF0UHJlZml4Pnt7IGluc3RhbmNlLmNvbXBvbmVudC5wcmVmaXggfX0mbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnN0YW5jZS5jb21wb25lbnQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIihpbnN0YW5jZS5jb21wb25lbnQucm93cyB8fCAzKVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICN0ZXh0YXJlYVxyXG4gICAgICAgID5cclxuICAgICAgICA8L3RleHRhcmVhPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaW5zdGFuY2UuY29tcG9uZW50LnN1ZmZpeFwiIG1hdFN1ZmZpeD57eyBpbnN0YW5jZS5jb21wb25lbnQuc3VmZml4IH19PC9zcGFuPlxyXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpbnN0YW5jZS5lcnJvclwiPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGV4dGFyZWFDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ3RleHRhcmVhJykgdGV4dGFyZWE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmVsZW1lbnQgJiYgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5pbnN0YW5jZSkge1xyXG4gICAgICAvLyBBZGQgY3VzdG9tIGNsYXNzZXMgdG8gZWxlbWVudHMuXHJcbiAgICAgIGlmICh0aGlzLmluc3RhbmNlLmNvbXBvbmVudC5jdXN0b21DbGFzcykge1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5pbnN0YW5jZS5jb21wb25lbnQuY3VzdG9tQ2xhc3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBBdHRhY2ggdGhlIGVsZW1lbnQgc28gdGhlIHd5c2l3eWcgd2lsbCB3b3JrLlxyXG4gICAgdGhpcy5pbnN0YW5jZS5hdHRhY2hFbGVtZW50KHRoaXMudGV4dGFyZWEubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2UoKSB7XHJcbiAgICAvLyBDaGVjayBpZiBpbnN0YW5jZSBhbmQgbmVjZXNzYXJ5IHByb3BlcnRpZXMgZXhpc3RcclxuICAgIGlmICh0aGlzLmluc3RhbmNlICYmIHRoaXMuaW5zdGFuY2UucGFyZW50ICYmIHRoaXMuaW5zdGFuY2UucGFyZW50Ll9kYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmluc3RhbmNlLnBhcmVudC5fZGF0YS5zdWJtaXQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlIGlmIGl0IGV4aXN0c1xyXG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuZXJyb3IgPyB0aGlzLmluc3RhbmNlLmVycm9yLm1lc3NhZ2UgOiAnJztcclxuICB9XHJcblxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiBpc05pbCh0aGlzLmNvbnRyb2wudmFsdWUpID8gJycgOiB0aGlzLmNvbnRyb2wudmFsdWU7XHJcbiAgfVxyXG59XHJcblRleHRBcmVhQ29tcG9uZW50Lk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxUZXh0YXJlYUNvbXBvbmVudDtcclxuZXhwb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfTtcclxuIl19
@@ -0,0 +1,124 @@
1
+ import { Component } from '@angular/core';
2
+ import TextFieldComponent from 'formiojs/components/textfield/TextField.js';
3
+ import { MaterialComponent } from '../MaterialComponent';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/form-field";
8
+ import * as i4 from "@angular/material/input";
9
+ import * as i5 from "@angular/flex-layout/flex";
10
+ import * as i6 from "@angular/flex-layout/extended";
11
+ import * as i7 from "../formio-form-field/formio-form-field.component";
12
+ import * as i8 from "../label/label.component";
13
+ export const TEXTFIELD_TEMPLATE = `
14
+ <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
15
+ <ng-template #componentTemplate let-hasLabel>
16
+ <mat-form-field [appearance]="getFormFieldAppearance()" fxFill>
17
+
18
+ <mat-label *ngIf="hasLabel">
19
+ <span [instance]="instance" matFormioLabel></span>
20
+ </mat-label>
21
+
22
+ <span *ngIf="instance.component.prefix && instance.type !== 'currency'"
23
+ matPrefix
24
+ >
25
+ {{ instance.component.prefix }}&nbsp;
26
+ </span>
27
+ <input matInput
28
+ type="{{ inputType }}"
29
+ [formControl]="control"
30
+ [placeholder]="instance.component.placeholder"
31
+ (input)="onChange()" #input
32
+ [ngClass]="{ 'show-invalid': inputType=='email' }"
33
+ >
34
+ <span *ngIf="instance.component.suffix" matSuffix>{{ instance.component.suffix }}</span>
35
+
36
+ <mat-hint *ngIf="instance.component.showWordCount || instance.component.showCharCount">
37
+ {{ getHint() }}
38
+ </mat-hint>
39
+
40
+ <br/>
41
+ <mat-error *ngIf="isError()" >{{ getErrorMessage() }}</mat-error>
42
+ </mat-form-field>
43
+ </ng-template>
44
+ `;
45
+ export class MaterialTextfieldComponent extends MaterialComponent {
46
+ constructor() {
47
+ super(...arguments);
48
+ this.inputType = 'text';
49
+ }
50
+ ngAfterContentInit() {
51
+ if (this.instance && this.control && this.instance.component.disabled) {
52
+ this.control.disable();
53
+ }
54
+ }
55
+ getHint() {
56
+ if (!this.instance || !this.control || !this.control.value) {
57
+ return '';
58
+ }
59
+ const { showWordCount, showCharCount } = this.instance.component;
60
+ if (showWordCount && showCharCount) {
61
+ return `${this.getWordsCount()} words, ${this.control.value.length} characters`;
62
+ }
63
+ else if (showWordCount) {
64
+ return `${this.getWordsCount()} words`;
65
+ }
66
+ else {
67
+ return `${this.control.value.length} characters`;
68
+ }
69
+ }
70
+ getWordsCount() {
71
+ const matches = this.control.value ? this.control.value.match(/[\w\d’'-]+/gi) : [];
72
+ return matches ? matches.length : 0;
73
+ }
74
+ getFormFieldAppearance() {
75
+ const appearances = ['legacy', 'standard', 'fill', 'outline'];
76
+ const appearance = this.instance.component.appearance ? this.instance.component.appearance.toLowerCase() : '';
77
+ return appearances.includes(appearance) ? appearance : undefined;
78
+ }
79
+ isError() {
80
+ if (this.instance.error) {
81
+ this.control.setErrors(this.instance.component.validate);
82
+ return true;
83
+ }
84
+ else {
85
+ return false;
86
+ }
87
+ }
88
+ getErrorMessage() {
89
+ if (this.instance.error && this.instance.error.messages) {
90
+ const { messages } = this.instance.error;
91
+ if (messages.length) {
92
+ for (const msg of messages) {
93
+ //this.control.hasError(msg.context.validator)
94
+ if (this.instance.type == 'phoneNumber' || this.instance.type == 'email') {
95
+ this.controlHasError = true;
96
+ }
97
+ else {
98
+ this.controlHasError = this.control.hasError(msg.context.validator);
99
+ }
100
+ if (msg.context && this.controlHasError) {
101
+ if (this.instance && this.instance.parent && this.instance.parent._data) {
102
+ if (this.instance.parent._data.submit) {
103
+ this.control.markAllAsTouched();
104
+ }
105
+ }
106
+ return this.instance.error ? this.instance.error.message : '';
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ MaterialTextfieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTextfieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
114
+ MaterialTextfieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialTextfieldComponent, selector: "mat-formio-textfield", usesInheritance: true, ngImport: i0, template: "\n <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\n <ng-template #componentTemplate let-hasLabel>\n <mat-form-field [appearance]=\"getFormFieldAppearance()\" fxFill>\n\n <mat-label *ngIf=\"hasLabel\">\n <span [instance]=\"instance\" matFormioLabel></span>\n </mat-label>\n\n <span *ngIf=\"instance.component.prefix && instance.type !== 'currency'\"\n matPrefix\n >\n {{ instance.component.prefix }}&nbsp;\n </span>\n <input matInput\n type=\"{{ inputType }}\"\n [formControl]=\"control\"\n [placeholder]=\"instance.component.placeholder\"\n (input)=\"onChange()\" #input\n [ngClass]=\"{ 'show-invalid': inputType=='email' }\"\n >\n <span *ngIf=\"instance.component.suffix\" matSuffix>{{ instance.component.suffix }}</span>\n\n <mat-hint *ngIf=\"instance.component.showWordCount || instance.component.showCharCount\">\n {{ getHint() }}\n </mat-hint>\n\n <br/>\n <mat-error *ngIf=\"isError()\" >{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n </ng-template>\n", isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i6.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i7.FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: i8.LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTextfieldComponent, decorators: [{
116
+ type: Component,
117
+ args: [{
118
+ selector: 'mat-formio-textfield',
119
+ template: TEXTFIELD_TEMPLATE
120
+ }]
121
+ }] });
122
+ TextFieldComponent.MaterialComponent = MaterialTextfieldComponent;
123
+ export { TextFieldComponent };
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL3RleHRmaWVsZC90ZXh0ZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sa0JBQWtCLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFFekQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErQmpDLENBQUM7QUFNRixNQUFNLE9BQU8sMEJBQTJCLFNBQVEsaUJBQWlCO0lBSmpFOztRQUtTLGNBQVMsR0FBRyxNQUFNLENBQUM7S0FzRTNCO0lBbkVDLGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDMUQsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFFakUsSUFBSSxhQUFhLElBQUksYUFBYSxFQUFFO1lBQ2xDLE9BQU8sR0FBRyxJQUFJLENBQUMs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Q0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUMvRDtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDOzt1SEF0RVUsMEJBQTBCOzJHQUExQiwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjs7QUF5RUQsa0JBQWtCLENBQUMsaUJBQWlCLEdBQUcsMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgVGV4dEZpZWxkQ29tcG9uZW50IGZyb20gJ2Zvcm1pb2pzL2NvbXBvbmVudHMvdGV4dGZpZWxkL1RleHRGaWVsZC5qcyc7XHJcbmltcG9ydCB7IE1hdGVyaWFsQ29tcG9uZW50IH0gZnJvbSAnLi4vTWF0ZXJpYWxDb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRFWFRGSUVMRF9URU1QTEFURSA9IGBcclxuICA8bWF0LWZvcm1pby1mb3JtLWZpZWxkIFtpbnN0YW5jZV09XCJpbnN0YW5jZVwiIFtjb21wb25lbnRUZW1wbGF0ZV09XCJjb21wb25lbnRUZW1wbGF0ZVwiPjwvbWF0LWZvcm1pby1mb3JtLWZpZWxkPlxyXG4gIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50VGVtcGxhdGUgbGV0LWhhc0xhYmVsPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIFthcHBlYXJhbmNlXT1cImdldEZvcm1GaWVsZEFwcGVhcmFuY2UoKVwiIGZ4RmlsbD5cclxuXHJcbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJoYXNMYWJlbFwiPlxyXG4gICAgICAgICAgPHNwYW4gW2luc3RhbmNlXT1cImluc3RhbmNlXCIgbWF0Rm9ybWlvTGFiZWw+PC9zcGFuPlxyXG4gICAgICA8L21hdC1sYWJlbD5cclxuXHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiaW5zdGFuY2UuY29tcG9uZW50LnByZWZpeCAmJiBpbnN0YW5jZS50eXBlICE9PSAnY3VycmVuY3knXCJcclxuICAgICAgICAgICAgbWF0UHJlZml4XHJcbiAgICAgID5cclxuICAgICAgICB7eyBpbnN0YW5jZS5jb21wb25lbnQucHJlZml4IH19Jm5ic3A7XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0IG1hdElucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ7eyBpbnB1dFR5cGUgfX1cIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnN0YW5jZS5jb21wb25lbnQucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2UoKVwiICNpbnB1dFxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzaG93LWludmFsaWQnOiBpbnB1dFR5cGU9PSdlbWFpbCcgfVwiXHJcbiAgICAgID5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJpbnN0YW5jZS5jb21wb25lbnQuc3VmZml4XCIgbWF0U3VmZml4Pnt7IGluc3RhbmNlLmNvbXBvbmVudC5zdWZmaXggfX08L3NwYW4+XHJcblxyXG4gICAgICA8bWF0LWhpbnQgKm5nSWY9XCJpbnN0YW5jZS5jb21wb25lbnQuc2hvd1dvcmRDb3VudCB8fCBpbnN0YW5jZS5jb21wb25lbnQuc2hvd0NoYXJDb3VudFwiPlxyXG4gICAgICAgIHt7IGdldEhpbnQoKSB9fVxyXG4gICAgICA8L21hdC1oaW50PlxyXG5cclxuICAgICAgPGJyLz5cclxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRXJyb3IoKVwiID57eyBnZXRFcnJvck1lc3NhZ2UoKSB9fTwvbWF0LWVycm9yPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5gO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybWlvLXRleHRmaWVsZCcsXHJcbiAgdGVtcGxhdGU6IFRFWFRGSUVMRF9URU1QTEFURVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUZXh0ZmllbGRDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gIHB1YmxpYyBpbnB1dFR5cGUgPSAndGV4dCc7XHJcbiAgY29udHJvbEhhc0Vycm9yOiBib29sZWFuO1xyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pbnN0YW5jZSAmJiB0aGlzLmNvbnRyb2wgJiYgdGhpcy5pbnN0YW5jZS5jb21wb25lbnQuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEhpbnQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaW5zdGFuY2UgfHwgIXRoaXMuY29udHJvbCB8fCAhdGhpcy5jb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IHNob3dXb3JkQ291bnQsIHNob3dDaGFyQ291bnQgfSA9IHRoaXMuaW5zdGFuY2UuY29tcG9uZW50O1xyXG5cclxuICAgIGlmIChzaG93V29yZENvdW50ICYmIHNob3dDaGFyQ291bnQpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0V29yZHNDb3VudCgpfSB3b3JkcywgJHt0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RofSBjaGFyYWN0ZXJzYDtcclxuICAgIH0gZWxzZSBpZiAoc2hvd1dvcmRDb3VudCkge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5nZXRXb3Jkc0NvdW50KCl9IHdvcmRzYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RofSBjaGFyYWN0ZXJzYDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFdvcmRzQ291bnQoKSB7XHJcbiAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5jb250cm9sLnZhbHVlID8gdGhpcy5jb250cm9sLnZhbHVlLm1hdGNoKC9bXFx3XFxk4oCZJy1dKy9naSkgOiBbXTtcclxuICAgIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlcy5sZW5ndGggOiAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUZpZWxkQXBwZWFyYW5jZSgpIHtcclxuICAgIGNvbnN0IGFwcGVhcmFuY2VzID0gWydsZWdhY3knLCAnc3RhbmRhcmQnLCAnZmlsbCcsICdvdXRsaW5lJ107XHJcbiAgICBjb25zdCBhcHBlYXJhbmNlID0gdGhpcy5pbnN0YW5jZS5jb21wb25lbnQuYXBwZWFyYW5jZSA/IHRoaXMuaW5zdGFuY2UuY29tcG9uZW50LmFwcGVhcmFuY2UudG9Mb3dlckNhc2UoKSA6ICcnO1xyXG4gICAgcmV0dXJuIGFwcGVhcmFuY2VzLmluY2x1ZGVzKGFwcGVhcmFuY2UpID8gYXBwZWFyYW5jZSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGlzRXJyb3IoKSB7XHJcbiAgICBpZiAodGhpcy5pbnN0YW5jZS5lcnJvcikge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKHRoaXMuaW5zdGFuY2UuY29tcG9uZW50LnZhbGlkYXRlKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UuZXJyb3IgJiYgdGhpcy5pbnN0YW5jZS5lcnJvci5tZXNzYWdlcykge1xyXG4gICAgICBjb25zdCB7IG1lc3NhZ2VzIH0gPSB0aGlzLmluc3RhbmNlLmVycm9yO1xyXG5cclxuICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgbXNnIG9mIG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAvL3RoaXMuY29udHJvbC5oYXNFcnJvcihtc2cuY29udGV4dC52YWxpZGF0b3IpXHJcbiAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZS50eXBlID09ICdwaG9uZU51bWJlcicgfHwgdGhpcy5pbnN0YW5jZS50eXBlID09ICdlbWFpbCcpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sSGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sSGFzRXJyb3IgPSB0aGlzLmNvbnRyb2wuaGFzRXJyb3IobXNnLmNvbnRleHQudmFsaWRhdG9yKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG1zZy5jb250ZXh0ICYmIHRoaXMuY29udHJvbEhhc0Vycm9yKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmluc3RhbmNlICYmIHRoaXMuaW5zdGFuY2UucGFyZW50ICYmIHRoaXMuaW5zdGFuY2UucGFyZW50Ll9kYXRhKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UucGFyZW50Ll9kYXRhLnN1Ym1pdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuZXJyb3IgPyB0aGlzLmluc3RhbmNlLmVycm9yLm1lc3NhZ2UgOiAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuVGV4dEZpZWxkQ29tcG9uZW50Lk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxUZXh0ZmllbGRDb21wb25lbnQ7XHJcbmV4cG9ydCB7IFRleHRGaWVsZENvbXBvbmVudCB9O1xyXG4iXX0=
@@ -0,0 +1,206 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { MaterialComponent } from '../MaterialComponent';
4
+ import TimeComponent from 'formiojs/components/time/Time.js';
5
+ import * as moment_ from 'moment';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@angular/material/form-field";
10
+ import * as i4 from "@angular/flex-layout/flex";
11
+ import * as i5 from "../formio-form-field/formio-form-field.component";
12
+ import * as i6 from "../label/label.component";
13
+ export class MaterialTimeComponent extends MaterialComponent {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.disabled = false;
17
+ this.period = 'AM';
18
+ this.hourControl = new FormControl();
19
+ this.minuteControl = new FormControl();
20
+ this.secondControl = new FormControl();
21
+ this.selectedEvent = new EventEmitter();
22
+ this.hourStep = 1;
23
+ this.minuteStep = 1;
24
+ this.secondStep = 1;
25
+ this.renderElementOnly = false;
26
+ }
27
+ setDisabled(disabled) {
28
+ if (disabled) {
29
+ this.hourControl.disable();
30
+ this.minuteControl.disable();
31
+ this.secondControl.disable();
32
+ }
33
+ }
34
+ get dataFormat() {
35
+ let format = this.instance.component.dataFormat;
36
+ format = format ? format : 'HH:mm';
37
+ return format;
38
+ }
39
+ setInstance(instance) {
40
+ super.setInstance(instance);
41
+ // this.control.setValue('00:00:00');
42
+ this.onChange();
43
+ }
44
+ onChange() {
45
+ const hours = this.hourControl.value;
46
+ const minutes = this.minuteControl.value || '00';
47
+ const seconds = this.secondControl.value || '';
48
+ const rawValue = `${hours || '00'}:${minutes}${seconds ? ':' + seconds : ''} ${this.period}`;
49
+ let value = this.getTwentyFourHourTime(rawValue);
50
+ if (!hours) {
51
+ value = this.instance.emptyValue;
52
+ }
53
+ this.control.setValue(value);
54
+ if (this.instance) {
55
+ super.onChange();
56
+ }
57
+ this.selectedEvent.emit(this.control);
58
+ }
59
+ setValue(value) {
60
+ if (!value) {
61
+ return;
62
+ }
63
+ super.setValue(value);
64
+ const [hourValue, minuteValue, period] = value.split(':');
65
+ this.hourControl.setValue(hourValue);
66
+ this.minuteControl.setValue(minuteValue);
67
+ // fix for default value with seconds instead of period
68
+ this.period = period === ('AM' || 'PM') ? period : this.period;
69
+ }
70
+ getTwentyFourHourTime(amPmString) {
71
+ const moment = moment_;
72
+ return moment(amPmString, ['h:mm:ss A']).format(this.dataFormat);
73
+ }
74
+ changePeriod() {
75
+ this.period = this.period === 'AM' ? 'PM' : 'AM';
76
+ this.onChange();
77
+ }
78
+ }
79
+ MaterialTimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTimeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
80
+ MaterialTimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: MaterialTimeComponent, selector: "mat-formio-time", inputs: { hourStep: "hourStep", minuteStep: "minuteStep", secondStep: "secondStep", renderElementOnly: "renderElementOnly" }, outputs: { selectedEvent: "selectedEvent" }, usesInheritance: true, ngImport: i0, template: `
81
+ <mat-formio-form-field
82
+ [instance]="instance"
83
+ [componentTemplate]="componentTemplate"
84
+ [renderElementOnly]="renderElementOnly"
85
+ ></mat-formio-form-field>
86
+ <ng-template #componentTemplate let-hasLabel>
87
+ <mat-label fxFill *ngIf="hasLabel">
88
+ <span [instance]="instance" matFormioLabel></span>
89
+ </mat-label>
90
+
91
+ <div style="display: block">
92
+ <div fxLayout="row" fxLayoutGap="5%">
93
+ <input
94
+ [formControl]="hourControl"
95
+ [step]="hourStep"
96
+ [min]="0"
97
+ [max]="12"
98
+ type="number"
99
+ fxFlex="25%"
100
+ (input)="onChange()"
101
+ >
102
+ <input
103
+ [formControl]="minuteControl"
104
+ [step]="minuteStep"
105
+ [min]="0"
106
+ [max]="59"
107
+ type="number"
108
+ fxFlex="25%"
109
+ (input)="onChange()"
110
+ >
111
+ <input
112
+ [formControl]="secondControl"
113
+ [step]="secondStep"
114
+ [min]="0"
115
+ [max]="59"
116
+ type="number"
117
+ fxFlex="25%"
118
+ (input)="onChange()"
119
+ *ngIf="instance?.component?.dataFormat === 'HH:mm:ss' ||
120
+ instance?.component?.dataFormat === 'HH:mm:ss.SSS'"
121
+ >
122
+ <button
123
+ [disabled]="instance?.component?.disabled"
124
+ fxFlex="25%"
125
+ (click)="changePeriod()"
126
+ >
127
+ {{period}}
128
+ </button>
129
+ </div>
130
+ <mat-error *ngIf="instance.error">{{ instance.error.message }}</mat-error>
131
+ </div>
132
+ </ng-template>
133
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: i6.LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: MaterialTimeComponent, decorators: [{
135
+ type: Component,
136
+ args: [{
137
+ selector: 'mat-formio-time',
138
+ template: `
139
+ <mat-formio-form-field
140
+ [instance]="instance"
141
+ [componentTemplate]="componentTemplate"
142
+ [renderElementOnly]="renderElementOnly"
143
+ ></mat-formio-form-field>
144
+ <ng-template #componentTemplate let-hasLabel>
145
+ <mat-label fxFill *ngIf="hasLabel">
146
+ <span [instance]="instance" matFormioLabel></span>
147
+ </mat-label>
148
+
149
+ <div style="display: block">
150
+ <div fxLayout="row" fxLayoutGap="5%">
151
+ <input
152
+ [formControl]="hourControl"
153
+ [step]="hourStep"
154
+ [min]="0"
155
+ [max]="12"
156
+ type="number"
157
+ fxFlex="25%"
158
+ (input)="onChange()"
159
+ >
160
+ <input
161
+ [formControl]="minuteControl"
162
+ [step]="minuteStep"
163
+ [min]="0"
164
+ [max]="59"
165
+ type="number"
166
+ fxFlex="25%"
167
+ (input)="onChange()"
168
+ >
169
+ <input
170
+ [formControl]="secondControl"
171
+ [step]="secondStep"
172
+ [min]="0"
173
+ [max]="59"
174
+ type="number"
175
+ fxFlex="25%"
176
+ (input)="onChange()"
177
+ *ngIf="instance?.component?.dataFormat === 'HH:mm:ss' ||
178
+ instance?.component?.dataFormat === 'HH:mm:ss.SSS'"
179
+ >
180
+ <button
181
+ [disabled]="instance?.component?.disabled"
182
+ fxFlex="25%"
183
+ (click)="changePeriod()"
184
+ >
185
+ {{period}}
186
+ </button>
187
+ </div>
188
+ <mat-error *ngIf="instance.error">{{ instance.error.message }}</mat-error>
189
+ </div>
190
+ </ng-template>
191
+ `
192
+ }]
193
+ }], propDecorators: { selectedEvent: [{
194
+ type: Output
195
+ }], hourStep: [{
196
+ type: Input
197
+ }], minuteStep: [{
198
+ type: Input
199
+ }], secondStep: [{
200
+ type: Input
201
+ }], renderElementOnly: [{
202
+ type: Input
203
+ }] } });
204
+ TimeComponent.MaterialComponent = MaterialTimeComponent;
205
+ export { TimeComponent };
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy90aW1lL3RpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sYUFBYSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDOzs7Ozs7OztBQTJEbEMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQTFENUQ7O1FBMkRTLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFDN0Msa0JBQWEsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMvQyxrQkFBYSxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzVDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6QyxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixzQkFBaUIsR0FBRyxLQUFLLENBQUM7S0E2RHBDO0lBM0RDLFdBQVcsQ0FBQyxRQUFRO1FBQ2xCLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFD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Ozs7Ozs7Ozs7Ozs7O0dBcURUOzJGQUdVLHFCQUFxQjtrQkExRGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFEVDtpQkFDRjs4QkFRVyxhQUFhO3NCQUF0QixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSzs7QUErRFIsYUFBYSxDQUFDLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxDb21wb25lbnQgfSBmcm9tICcuLi9NYXRlcmlhbENvbXBvbmVudCc7XHJcbmltcG9ydCBUaW1lQ29tcG9uZW50IGZyb20gJ2Zvcm1pb2pzL2NvbXBvbmVudHMvdGltZS9UaW1lLmpzJztcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tdGltZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtYXQtZm9ybWlvLWZvcm0tZmllbGRcclxuICAgICAgW2luc3RhbmNlXT1cImluc3RhbmNlXCJcclxuICAgICAgW2NvbXBvbmVudFRlbXBsYXRlXT1cImNvbXBvbmVudFRlbXBsYXRlXCJcclxuICAgICAgW3JlbmRlckVsZW1lbnRPbmx5XT1cInJlbmRlckVsZW1lbnRPbmx5XCJcclxuICAgID48L21hdC1mb3JtaW8tZm9ybS1maWVsZD5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50VGVtcGxhdGUgbGV0LWhhc0xhYmVsPlxyXG4gICAgICA8bWF0LWxhYmVsIGZ4RmlsbCAqbmdJZj1cImhhc0xhYmVsXCI+XHJcbiAgICAgICAgPHNwYW4gW2luc3RhbmNlXT1cImluc3RhbmNlXCIgbWF0Rm9ybWlvTGFiZWw+PC9zcGFuPlxyXG4gICAgICA8L21hdC1sYWJlbD5cclxuXHJcbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBibG9ja1wiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjUlXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImhvdXJDb250cm9sXCJcclxuICAgICAgICAgICAgW3N0ZXBdPVwiaG91clN0ZXBcIlxyXG4gICAgICAgICAgICBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICBbbWF4XT1cIjEyXCJcclxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIGZ4RmxleD1cIjI1JVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibWludXRlQ29udHJvbFwiXHJcbiAgICAgICAgICAgIFtzdGVwXT1cIm1pbnV0ZVN0ZXBcIlxyXG4gICAgICAgICAgICBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICBbbWF4XT1cIjU5XCJcclxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIGZ4RmxleD1cIjI1JVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2Vjb25kQ29udHJvbFwiXHJcbiAgICAgICAgICAgIFtzdGVwXT1cInNlY29uZFN0ZXBcIlxyXG4gICAgICAgICAgICBbbWluXT1cIjBcIlxyXG4gICAgICAgICAgICBbbWF4XT1cIjU5XCJcclxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgIGZ4RmxleD1cIjI1JVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZSgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJpbnN0YW5jZT8uY29tcG9uZW50Py5kYXRhRm9ybWF0ID09PSAnSEg6bW06c3MnIHx8XHJcbiAgICAgICAgICAgICBpbnN0YW5jZT8uY29tcG9uZW50Py5kYXRhRm9ybWF0ID09PSAnSEg6bW06c3MuU1NTJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbnN0YW5jZT8uY29tcG9uZW50Py5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIGZ4RmxleD1cIjI1JVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQZXJpb2QoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7cGVyaW9kfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpbnN0YW5jZS5lcnJvclwiPnt7IGluc3RhbmNlLmVycm9yLm1lc3NhZ2UgfX08L21hdC1lcnJvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGBcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRpbWVDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbENvbXBvbmVudCB7XHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIHBlcmlvZCA9ICdBTSc7XHJcbiAgcHVibGljIGhvdXJDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyBtaW51dGVDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyBzZWNvbmRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQElucHV0KCkgaG91clN0ZXAgPSAxO1xyXG4gIEBJbnB1dCgpIG1pbnV0ZVN0ZXAgPSAxO1xyXG4gIEBJbnB1dCgpIHNlY29uZFN0ZXAgPSAxO1xyXG4gIEBJbnB1dCgpIHJlbmRlckVsZW1lbnRPbmx5ID0gZmFsc2U7XHJcblxyXG4gIHNldERpc2FibGVkKGRpc2FibGVkKSB7XHJcbiAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5ob3VyQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMubWludXRlQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZGF0YUZvcm1hdCgpIHtcclxuICAgIGxldCBmb3JtYXQgPSB0aGlzLmluc3RhbmNlLmNvbXBvbmVudC5kYXRhRm9ybWF0O1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogJ0hIOm1tJztcclxuICAgIHJldHVybiBmb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBzZXRJbnN0YW5jZShpbnN0YW5jZSkge1xyXG4gICAgc3VwZXIuc2V0SW5zdGFuY2UoaW5zdGFuY2UpO1xyXG4gICAgLy8gdGhpcy5jb250cm9sLnNldFZhbHVlKCcwMDowMDowMCcpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBob3VycyA9IHRoaXMuaG91ckNvbnRyb2wudmFsdWU7XHJcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5taW51dGVDb250cm9sLnZhbHVlIHx8ICcwMCc7XHJcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5zZWNvbmRDb250cm9sLnZhbHVlIHx8ICcnO1xyXG4gICAgY29uc3QgcmF3VmFsdWUgPSBgJHtob3VycyB8fCAnMDAnfToke21pbnV0ZXN9JHtzZWNvbmRzID8gJzonICsgc2Vjb25kcyA6ICcnfSAke3RoaXMucGVyaW9kfWA7XHJcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFR3ZW50eUZvdXJIb3VyVGltZShyYXdWYWx1ZSk7XHJcblxyXG4gICAgaWYgKCFob3Vycykge1xyXG4gICAgICB2YWx1ZSA9IHRoaXMuaW5zdGFuY2UuZW1wdHlWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcclxuICAgICAgc3VwZXIub25DaGFuZ2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRFdmVudC5lbWl0KHRoaXMuY29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZSh2YWx1ZSkge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzdXBlci5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICBjb25zdCBbaG91clZhbHVlLCBtaW51dGVWYWx1ZSwgcGVyaW9kXSA9IHZhbHVlLnNwbGl0KCc6Jyk7XHJcbiAgICB0aGlzLmhvdXJDb250cm9sLnNldFZhbHVlKGhvdXJWYWx1ZSk7XHJcbiAgICB0aGlzLm1pbnV0ZUNvbnRyb2wuc2V0VmFsdWUobWludXRlVmFsdWUpO1xyXG4gICAgLy8gZml4IGZvciBkZWZhdWx0IHZhbHVlIHdpdGggc2Vjb25kcyBpbnN0ZWFkIG9mIHBlcmlvZFxyXG4gICAgdGhpcy5wZXJpb2QgPSBwZXJpb2QgPT09ICgnQU0nIHx8ICdQTScpID8gcGVyaW9kIDogdGhpcy5wZXJpb2Q7XHJcbiAgfVxyXG5cclxuICBnZXRUd2VudHlGb3VySG91clRpbWUoYW1QbVN0cmluZykge1xyXG4gICAgY29uc3QgbW9tZW50ID0gbW9tZW50XztcclxuICAgIHJldHVybiBtb21lbnQoYW1QbVN0cmluZywgWydoOm1tOnNzIEEnXSkuZm9ybWF0KHRoaXMuZGF0YUZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQZXJpb2QoKSB7XHJcbiAgICB0aGlzLnBlcmlvZCA9IHRoaXMucGVyaW9kID09PSAnQU0nID8gJ1BNJyA6ICdBTSc7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5UaW1lQ29tcG9uZW50Lk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxUaW1lQ29tcG9uZW50O1xyXG5leHBvcnQgeyBUaW1lQ29tcG9uZW50IH07XHJcbiJdfQ==