ngx-render-material-forms 0.0.1

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 (109) hide show
  1. package/README.md +24 -0
  2. package/esm2020/lib/FormioControl.mjs +36 -0
  3. package/esm2020/lib/components/Base.mjs +32 -0
  4. package/esm2020/lib/components/MaterialComponent.mjs +145 -0
  5. package/esm2020/lib/components/MaterialNestedComponent.mjs +38 -0
  6. package/esm2020/lib/components/Webform.mjs +19 -0
  7. package/esm2020/lib/components/button/button.component.mjs +91 -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/container/container.component.mjs +25 -0
  12. package/esm2020/lib/components/content/content.component.mjs +18 -0
  13. package/esm2020/lib/components/currency/currency.component.mjs +35 -0
  14. package/esm2020/lib/components/datagrid/datagrid.component.mjs +244 -0
  15. package/esm2020/lib/components/date/date.component.mjs +325 -0
  16. package/esm2020/lib/components/day/day.component.mjs +154 -0
  17. package/esm2020/lib/components/editgrid/editgrid.component.mjs +243 -0
  18. package/esm2020/lib/components/email/email.component.mjs +29 -0
  19. package/esm2020/lib/components/fieldset/fieldset.component.mjs +50 -0
  20. package/esm2020/lib/components/formio-form-field/formio-form-field.component.mjs +57 -0
  21. package/esm2020/lib/components/formio.wizard.mjs +88 -0
  22. package/esm2020/lib/components/hidden/hidden.component.mjs +20 -0
  23. package/esm2020/lib/components/html/html.component.mjs +29 -0
  24. package/esm2020/lib/components/index.mjs +125 -0
  25. package/esm2020/lib/components/label/label.component.mjs +17 -0
  26. package/esm2020/lib/components/number/number.component.mjs +66 -0
  27. package/esm2020/lib/components/panel/panel.component.mjs +57 -0
  28. package/esm2020/lib/components/password/password.component.mjs +29 -0
  29. package/esm2020/lib/components/phonenumber/phonenumber.component.mjs +29 -0
  30. package/esm2020/lib/components/radio/radio.component.mjs +96 -0
  31. package/esm2020/lib/components/select/select.component.mjs +186 -0
  32. package/esm2020/lib/components/selectboxes/selectboxes.component.mjs +102 -0
  33. package/esm2020/lib/components/signature/signature.component.mjs +103 -0
  34. package/esm2020/lib/components/survey/survey.component.mjs +167 -0
  35. package/esm2020/lib/components/table/table.component.mjs +97 -0
  36. package/esm2020/lib/components/tabs/tabs.component.mjs +43 -0
  37. package/esm2020/lib/components/tags/tags.component.mjs +117 -0
  38. package/esm2020/lib/components/textarea/textarea.component.mjs +82 -0
  39. package/esm2020/lib/components/textfield/textfield.component.mjs +108 -0
  40. package/esm2020/lib/components/time/time.component.mjs +206 -0
  41. package/esm2020/lib/components/url/url.component.mjs +29 -0
  42. package/esm2020/lib/components/well/well.component.mjs +43 -0
  43. package/esm2020/lib/const/ButtonsThemes.mjs +17 -0
  44. package/esm2020/lib/const/LabelPositions.mjs +10 -0
  45. package/esm2020/lib/directives/mask.directive.mjs +65 -0
  46. package/esm2020/lib/formio.component.mjs +80 -0
  47. package/esm2020/lib/ngx-render-material-forms.component.mjs +22 -0
  48. package/esm2020/lib/ngx-render-material-forms.module.mjs +344 -0
  49. package/esm2020/lib/ngx-render-material-forms.service.mjs +14 -0
  50. package/esm2020/lib/renderer.mjs +13 -0
  51. package/esm2020/ngx-render-material-forms.mjs +5 -0
  52. package/esm2020/public-api.mjs +7 -0
  53. package/fesm2015/ngx-render-material-forms - Copy.mjs +3787 -0
  54. package/fesm2015/ngx-render-material-forms.js +3787 -0
  55. package/fesm2015/ngx-render-material-forms.mjs.map +1 -0
  56. package/fesm2020/ngx-render-material-forms.mjs +3788 -0
  57. package/fesm2020/ngx-render-material-forms.mjs.map +1 -0
  58. package/index.d.ts +5 -0
  59. package/lib/FormioControl.d.ts +7 -0
  60. package/lib/components/Base.d.ts +2 -0
  61. package/lib/components/MaterialComponent.d.ts +30 -0
  62. package/lib/components/MaterialNestedComponent.d.ts +13 -0
  63. package/lib/components/Webform.d.ts +1 -0
  64. package/lib/components/button/button.component.d.ts +23 -0
  65. package/lib/components/calendar/calendar.component.d.ts +34 -0
  66. package/lib/components/checkbox/checkbox.component.d.ts +9 -0
  67. package/lib/components/columns/columns.component.d.ts +12 -0
  68. package/lib/components/container/container.component.d.ts +8 -0
  69. package/lib/components/content/content.component.d.ts +8 -0
  70. package/lib/components/currency/currency.component.d.ts +10 -0
  71. package/lib/components/datagrid/datagrid.component.d.ts +22 -0
  72. package/lib/components/date/date.component.d.ts +40 -0
  73. package/lib/components/day/day.component.d.ts +16 -0
  74. package/lib/components/editgrid/editgrid.component.d.ts +50 -0
  75. package/lib/components/email/email.component.d.ts +9 -0
  76. package/lib/components/fieldset/fieldset.component.d.ts +8 -0
  77. package/lib/components/formio-form-field/formio-form-field.component.d.ts +18 -0
  78. package/lib/components/formio.wizard.d.ts +19 -0
  79. package/lib/components/hidden/hidden.component.d.ts +8 -0
  80. package/lib/components/html/html.component.d.ts +11 -0
  81. package/lib/components/index.d.ts +2 -0
  82. package/lib/components/label/label.component.d.ts +6 -0
  83. package/lib/components/number/number.component.d.ts +18 -0
  84. package/lib/components/panel/panel.component.d.ts +8 -0
  85. package/lib/components/password/password.component.d.ts +9 -0
  86. package/lib/components/phonenumber/phonenumber.component.d.ts +9 -0
  87. package/lib/components/radio/radio.component.d.ts +12 -0
  88. package/lib/components/select/select.component.d.ts +25 -0
  89. package/lib/components/selectboxes/selectboxes.component.d.ts +15 -0
  90. package/lib/components/signature/signature.component.d.ts +12 -0
  91. package/lib/components/survey/survey.component.d.ts +14 -0
  92. package/lib/components/table/table.component.d.ts +12 -0
  93. package/lib/components/tabs/tabs.component.d.ts +9 -0
  94. package/lib/components/tags/tags.component.d.ts +15 -0
  95. package/lib/components/textarea/textarea.component.d.ts +12 -0
  96. package/lib/components/textfield/textfield.component.d.ts +17 -0
  97. package/lib/components/time/time.component.d.ts +27 -0
  98. package/lib/components/url/url.component.d.ts +9 -0
  99. package/lib/components/well/well.component.d.ts +8 -0
  100. package/lib/const/ButtonsThemes.d.ts +14 -0
  101. package/lib/const/LabelPositions.d.ts +8 -0
  102. package/lib/directives/mask.directive.d.ts +17 -0
  103. package/lib/formio.component.d.ts +15 -0
  104. package/lib/ngx-render-material-forms.component.d.ts +8 -0
  105. package/lib/ngx-render-material-forms.module.d.ts +106 -0
  106. package/lib/ngx-render-material-forms.service.d.ts +6 -0
  107. package/lib/renderer.d.ts +8 -0
  108. package/package.json +38 -0
  109. package/public-api.d.ts +3 -0
@@ -0,0 +1,243 @@
1
+ import { Component, ViewChild, ViewChildren } from '@angular/core';
2
+ import { MaterialNestedComponent } from '../MaterialNestedComponent';
3
+ import EditGridComponent from 'formiojs/components/editgrid/EditGrid.js';
4
+ import Components from 'formiojs/components/Components';
5
+ import isString from 'lodash/isString';
6
+ import * as i0 from "@angular/core";
7
+ var EditRowState;
8
+ (function (EditRowState) {
9
+ EditRowState["NEW"] = "new";
10
+ EditRowState["EDITING"] = "editing";
11
+ EditRowState["SAVED"] = "saved";
12
+ EditRowState["REMOVED"] = "removed";
13
+ EditRowState["DRAFT"] = "draft";
14
+ })(EditRowState || (EditRowState = {}));
15
+ ;
16
+ /* tslint:disable no-bitwise only-arrow-functions */
17
+ const hashCode = function (str) {
18
+ let hash = 0;
19
+ let i = 0;
20
+ let chr;
21
+ str = str.replace(/\s/g, '');
22
+ if (str.length === 0) {
23
+ return hash;
24
+ }
25
+ for (i = 0; i < str.length; i++) {
26
+ chr = str.charCodeAt(i);
27
+ hash = ((hash << 5) - hash) + chr;
28
+ hash |= 0; // Convert to 32bit integer
29
+ }
30
+ return hash;
31
+ };
32
+ /* tslint:enable no-bitwise only-arrow-functions */
33
+ // Do nothing to createRowComponents, let mat-formio handle it.
34
+ /* tslint:disable only-arrow-functions */
35
+ EditGridComponent.prototype.createRowComponents = function () {
36
+ return [];
37
+ };
38
+ const checkRow = EditGridComponent.prototype.checkRow;
39
+ EditGridComponent.prototype.checkRow = function (data, editRow, flags = {}) {
40
+ if (flags.checkRow) {
41
+ return checkRow.call(this, data, editRow, flags);
42
+ }
43
+ else {
44
+ return true;
45
+ }
46
+ };
47
+ /* tslint:enable only-arrow-functions */
48
+ const DEFAULT_HEADER_TEMPLATES = [
49
+ hashCode(EditGridComponent.defaultHeaderTemplate),
50
+ hashCode(`
51
+ <div class="row">
52
+ {% (components || []).forEach(function(component) { %}
53
+ <div class="col-sm-2">{{ component.label }}</div>
54
+ {% }) %}
55
+ </div>`)
56
+ ];
57
+ const DEFAULT_ROW_TEMPLATES = [
58
+ hashCode(EditGridComponent.defaultRowTemplate),
59
+ hashCode(`<div class="row">
60
+ {% util.eachComponent(components, function(component) { %}
61
+ <div class="col-sm-2">
62
+ {{ getView(component, row[component.key]) }}
63
+ </div>
64
+ {% }) %}
65
+ {% if (!instance.options.readOnly) { %}
66
+ <div class="col-sm-2">
67
+ <div class="btn-group pull-right">
68
+ <button class="btn btn-default btn-sm editRow">Edit</button>
69
+ <button class="btn btn-danger btn-sm removeRow">Delete</button>
70
+ </div>
71
+ </div>
72
+ {% } %}
73
+ </div>`)
74
+ ];
75
+ export class MaterialEditGridComponent extends MaterialNestedComponent {
76
+ constructor() {
77
+ super(...arguments);
78
+ this.columns = {};
79
+ this.colWidth = 0;
80
+ this.valid = true;
81
+ this.RowStates = EditRowState;
82
+ }
83
+ getRowTemplate(content) {
84
+ return `<mat-list style="display: flex;">
85
+ {% (components || []).forEach(function(component) { %}
86
+ {% if (!component.hasOwnProperty('tableView') || component.tableView) { %}
87
+ <mat-list-item style="width: {{ colWidth }}%; margin: 0 0.8rem">${content}</mat-list-item>
88
+ {% } %}
89
+ {% }) %}
90
+ </mat-list>`;
91
+ }
92
+ validate(index) {
93
+ if (!this.forms) {
94
+ return;
95
+ }
96
+ const forms = this.forms.toArray();
97
+ if (!forms[index]) {
98
+ return;
99
+ }
100
+ const formioComponent = forms[index];
101
+ const { data } = formioComponent.formio.submission;
102
+ const isInvalid = Object.keys(data).some(value => isString(data[value]) && data[value].length === 0);
103
+ if (isInvalid) {
104
+ this.valid = false;
105
+ }
106
+ else {
107
+ this.valid = true;
108
+ }
109
+ }
110
+ setInstance(instance) {
111
+ if (instance.component.templates.header &&
112
+ (DEFAULT_HEADER_TEMPLATES.indexOf(hashCode(instance.component.templates.header)) !== -1)) {
113
+ instance.component.templates.header = this.getRowTemplate('{{ component.label }}');
114
+ }
115
+ if (instance.component.templates.row &&
116
+ (DEFAULT_ROW_TEMPLATES.indexOf(hashCode(instance.component.templates.row)) !== -1)) {
117
+ instance.component.templates.row = this.getRowTemplate('{{ getView(component, row[component.key]) }}');
118
+ }
119
+ this.displayedColumns = instance.component.components.map((comp) => {
120
+ if (comp.hasOwnProperty('tableView') && !comp.tableView) {
121
+ return false;
122
+ }
123
+ this.columns[comp.key] = comp;
124
+ return comp.key;
125
+ }).filter(name => !!name);
126
+ const dataValue = instance.dataValue || [];
127
+ this.colWidth = instance.component.components.length ? Math.floor(100 / instance.component.components.length) : 100;
128
+ if (instance.component.templates && instance.component.templates.header) {
129
+ this.header = instance.renderString(instance.component.templates.header, {
130
+ components: instance.component.components,
131
+ value: dataValue,
132
+ colWidth: this.colWidth
133
+ });
134
+ }
135
+ if (instance.component.templates && instance.component.templates.footer) {
136
+ this.footer = instance.renderString(instance.component.templates.footer, {
137
+ components: instance.component.components,
138
+ value: dataValue,
139
+ colWidth: this.colWidth
140
+ });
141
+ }
142
+ setTimeout(() => {
143
+ this.renderTemplate(this.headerElement, this.header);
144
+ this.renderTemplate(this.footerElement, this.footer);
145
+ }, 0);
146
+ super.setInstance(instance);
147
+ }
148
+ addAnother() {
149
+ const row = this.instance.addRow();
150
+ }
151
+ editRow(row, index) {
152
+ const { state } = row;
153
+ const { NEW, REMOVED } = this.RowStates;
154
+ if (state === NEW || state === REMOVED) {
155
+ return;
156
+ }
157
+ this.instance.editRow(index);
158
+ const forms = this.forms.toArray();
159
+ if (forms[index]) {
160
+ forms[index].formio.submission = { data: JSON.parse(JSON.stringify(row.data)) };
161
+ }
162
+ }
163
+ /**
164
+ * Updates the row template.
165
+ *
166
+ * @param row
167
+ * @param index
168
+ */
169
+ updateRowTemplate(rowElement, index, comps) {
170
+ const self = this;
171
+ const editRow = { ...this.instance.editRows[index] };
172
+ if (editRow.state !== this.RowStates.NEW) {
173
+ this.renderTemplate(rowElement, this.instance.renderString(this.instance.component.templates.row, {
174
+ row: this.instance.dataValue[index] || {},
175
+ data: this.instance.data,
176
+ rowIndex: index,
177
+ colWidth: this.colWidth,
178
+ components: this.instance.component.components,
179
+ getView: function getView(component, data) {
180
+ if (!comps[component.type]) {
181
+ comps[component.type] = Components.create(component, {}, {}, true);
182
+ }
183
+ return comps[component.type] ? comps[component.type].getView(data) : '';
184
+ }
185
+ }));
186
+ }
187
+ }
188
+ /**
189
+ * Saves a row.
190
+ *
191
+ * @param row - The edit grid row.
192
+ * @param index - The index for this row.
193
+ */
194
+ saveRow(row, index) {
195
+ const forms = this.forms.toArray();
196
+ if (forms[index]) {
197
+ const formioComponent = forms[index];
198
+ row.data = JSON.parse(JSON.stringify(formioComponent.formio.submission.data));
199
+ this.instance.saveRow(index);
200
+ const rows = this.rowElements.toArray();
201
+ if (rows && rows[index]) {
202
+ this.updateRowTemplate(rows[index], index, {});
203
+ }
204
+ }
205
+ }
206
+ cancelRow(index) {
207
+ this.instance.cancelRow(index);
208
+ this.valid = true;
209
+ }
210
+ renderTemplate(element, template) {
211
+ if (!element || !element.nativeElement) {
212
+ return;
213
+ }
214
+ element.nativeElement.innerHTML = template;
215
+ }
216
+ ngAfterViewInit() {
217
+ this.rowElements.changes.subscribe((rows) => {
218
+ const rowCache = {};
219
+ rows.forEach((row, index) => this.updateRowTemplate(row, index, rowCache));
220
+ });
221
+ }
222
+ }
223
+ MaterialEditGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialEditGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
224
+ MaterialEditGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialEditGridComponent, selector: "mat-formio-editgrid", viewQueries: [{ propertyName: "headerElement", first: true, predicate: ["header"], descendants: true }, { propertyName: "footerElement", first: true, predicate: ["footer"], descendants: true }, { propertyName: "rowElements", predicate: ["rows"], descendants: true }, { propertyName: "forms", predicate: ["forms"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\" [labelTemplate]=\"labelTemplate\">\n</mat-formio-form-field>\n<ng-template #componentTemplate let-hasLabel>\n\n <span fxLayout=\"column\" fxLayoutGap=\"1em\" fxFill>\n <ng-container *ngIf=\"hasLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n </ng-container>\n <mat-accordion>\n <mat-expansion-panel *ngIf=\"header\" disabled=\"true\">\n <mat-expansion-panel-header>\n <span #header fxFill></span>\n </mat-expansion-panel-header>\n </mat-expansion-panel>\n\n <mat-expansion-panel *ngFor=\"let row of instance.editRows; index as i;\" [expanded]=\"instance.isOpen(row)\">\n <mat-expansion-panel-header (click)=\"editRow(row, i)\">\n <span *ngIf=\"row.state !== RowStates.NEW\" #rows fxFill></span>\n </mat-expansion-panel-header>\n\n <mat-formio [form]=\"instance.component\" #forms (change)=\"validate(i)\"></mat-formio>\n\n <span fxLayout=\"row\" fxLayoutGap=\"1em\">\n <button mat-raised-button color=\"primary\" [disabled]=\"!valid\" (click)=\"saveRow(row, i)\">Save</button>\n <button mat-raised-button color=\"secondary\" (click)=\"cancelRow(i)\">Cancel</button>\n <button mat-raised-button color=\"warn\" (click)=\"instance.removeRow(i)\" class=\"delete-button\">\n <mat-icon>delete</mat-icon>\n </button>\n </span>\n </mat-expansion-panel>\n\n <mat-expansion-panel *ngIf=\"footer\" disabled=\"true\">\n <mat-expansion-panel-header>\n <span #footer></span>\n </mat-expansion-panel-header>\n </mat-expansion-panel>\n </mat-accordion>\n\n <span fxFill=\"none\" *ngIf=\"instance.hasAddButton()\">\n <button mat-raised-button color=\"primary\" (click)=\"addAnother()\">\n <mat-icon>add</mat-icon> Add Another\n </button>\n </span>\n </span>\n</ng-template>\n\n<ng-template #labelTemplate>\n <mat-card-title>\n <span [instance]=\"instance\" matFormioLabel></span>\n </mat-card-title>\n</ng-template> -->\n", styles: [":host .delete-button{margin-left:auto;order:2}\n"] });
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialEditGridComponent, decorators: [{
226
+ type: Component,
227
+ args: [{ selector: 'mat-formio-editgrid', template: "<!-- <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\" [labelTemplate]=\"labelTemplate\">\n</mat-formio-form-field>\n<ng-template #componentTemplate let-hasLabel>\n\n <span fxLayout=\"column\" fxLayoutGap=\"1em\" fxFill>\n <ng-container *ngIf=\"hasLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n </ng-container>\n <mat-accordion>\n <mat-expansion-panel *ngIf=\"header\" disabled=\"true\">\n <mat-expansion-panel-header>\n <span #header fxFill></span>\n </mat-expansion-panel-header>\n </mat-expansion-panel>\n\n <mat-expansion-panel *ngFor=\"let row of instance.editRows; index as i;\" [expanded]=\"instance.isOpen(row)\">\n <mat-expansion-panel-header (click)=\"editRow(row, i)\">\n <span *ngIf=\"row.state !== RowStates.NEW\" #rows fxFill></span>\n </mat-expansion-panel-header>\n\n <mat-formio [form]=\"instance.component\" #forms (change)=\"validate(i)\"></mat-formio>\n\n <span fxLayout=\"row\" fxLayoutGap=\"1em\">\n <button mat-raised-button color=\"primary\" [disabled]=\"!valid\" (click)=\"saveRow(row, i)\">Save</button>\n <button mat-raised-button color=\"secondary\" (click)=\"cancelRow(i)\">Cancel</button>\n <button mat-raised-button color=\"warn\" (click)=\"instance.removeRow(i)\" class=\"delete-button\">\n <mat-icon>delete</mat-icon>\n </button>\n </span>\n </mat-expansion-panel>\n\n <mat-expansion-panel *ngIf=\"footer\" disabled=\"true\">\n <mat-expansion-panel-header>\n <span #footer></span>\n </mat-expansion-panel-header>\n </mat-expansion-panel>\n </mat-accordion>\n\n <span fxFill=\"none\" *ngIf=\"instance.hasAddButton()\">\n <button mat-raised-button color=\"primary\" (click)=\"addAnother()\">\n <mat-icon>add</mat-icon> Add Another\n </button>\n </span>\n </span>\n</ng-template>\n\n<ng-template #labelTemplate>\n <mat-card-title>\n <span [instance]=\"instance\" matFormioLabel></span>\n </mat-card-title>\n</ng-template> -->\n", styles: [":host .delete-button{margin-left:auto;order:2}\n"] }]
228
+ }], propDecorators: { headerElement: [{
229
+ type: ViewChild,
230
+ args: ['header']
231
+ }], footerElement: [{
232
+ type: ViewChild,
233
+ args: ['footer']
234
+ }], rowElements: [{
235
+ type: ViewChildren,
236
+ args: ['rows']
237
+ }], forms: [{
238
+ type: ViewChildren,
239
+ args: ['forms']
240
+ }] } });
241
+ EditGridComponent.MaterialComponent = MaterialEditGridComponent;
242
+ export { EditGridComponent };
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZWRpdGdyaWQvZWRpdGdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZWRpdGdyaWQvZWRpdGdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUliLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8saUJBQWlCLE1BQU0sMENBQTBDLENBQUM7QUFFekUsT0FBTyxVQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxRQUFRLE1BQU0saUJBQWlCLENBQUM7O0FBRXZDLElBQUssWUFNSjtBQU5ELFdBQUssWUFBWTtJQUNmLDJCQUFXLENBQUE7SUFDWCxtQ0FBa0IsQ0FBQTtJQUNsQiwrQkFBZSxDQUFBO0lBQ2YsbUNBQW1CLENBQUE7SUFDbkIsK0JBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTkksWUFBWSxLQUFaLFlBQVksUUFNaEI7QUFBQSxDQUFDO0FBRUYsb0RBQW9EO0FBQ3BELE1BQU0sUUFBUSxHQUFHLFVBQVMsR0FBRztJQUMzQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixJQUFJLEdBQUcsQ0FBQztJQUNSLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3BC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QXlCO2tCQUxyQyxTQUFTOytCQUNFLHFCQUFxQjs4QkFLVixhQUFhO3NCQUFqQyxTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsYUFBYTtzQkFBakMsU0FBUzt1QkFBQyxRQUFRO2dCQUNHLFdBQVc7c0JBQWhDLFlBQVk7dUJBQUMsTUFBTTtnQkFDRyxLQUFLO3NCQUEzQixZQUFZO3VCQUFDLE9BQU87O0FBdUt2QixpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdGVyaWFsTmVzdGVkQ29tcG9uZW50IH0gZnJvbSAnLi4vTWF0ZXJpYWxOZXN0ZWRDb21wb25lbnQnO1xuaW1wb3J0IEVkaXRHcmlkQ29tcG9uZW50IGZyb20gJ2Zvcm1pb2pzL2NvbXBvbmVudHMvZWRpdGdyaWQvRWRpdEdyaWQuanMnO1xuaW1wb3J0IHsgRm9ybWlvQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybWlvLmNvbXBvbmVudCc7XG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tICdmb3JtaW9qcy9jb21wb25lbnRzL0NvbXBvbmVudHMnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5cbmVudW0gRWRpdFJvd1N0YXRlIHtcbiAgTkVXID0gJ25ldycsXG4gIEVESVRJTkcgPSdlZGl0aW5nJyxcbiAgU0FWRUQgPSAnc2F2ZWQnLFxuICBSRU1PVkVEID0gJ3JlbW92ZWQnLFxuICBEUkFGVCA9ICdkcmFmdCdcbn07XG5cbi8qIHRzbGludDpkaXNhYmxlIG5vLWJpdHdpc2Ugb25seS1hcnJvdy1mdW5jdGlvbnMgKi9cbmNvbnN0IGhhc2hDb2RlID0gZnVuY3Rpb24oc3RyKSB7XG4gIGxldCBoYXNoID0gMDtcbiAgbGV0IGkgPSAwO1xuICBsZXQgY2hyO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgaWYgKHN0ci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaGFzaDtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hyICAgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoICA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgY2hyO1xuICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gIH1cbiAgcmV0dXJuIGhhc2g7XG59O1xuLyogdHNsaW50OmVuYWJsZSBuby1iaXR3aXNlIG9ubHktYXJyb3ctZnVuY3Rpb25zICovXG5cbi8vIERvIG5vdGhpbmcgdG8gY3JlYXRlUm93Q29tcG9uZW50cywgbGV0IG1hdC1mb3JtaW8gaGFuZGxlIGl0LlxuLyogdHNsaW50OmRpc2FibGUgb25seS1hcnJvdy1mdW5jdGlvbnMgKi9cbkVkaXRHcmlkQ29tcG9uZW50LnByb3RvdHlwZS5jcmVhdGVSb3dDb21wb25lbnRzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBbXTtcbn07XG5cbmNvbnN0IGNoZWNrUm93ID0gRWRpdEdyaWRDb21wb25lbnQucHJvdG90eXBlLmNoZWNrUm93O1xuRWRpdEdyaWRDb21wb25lbnQucHJvdG90eXBlLmNoZWNrUm93ID0gZnVuY3Rpb24oZGF0YSwgZWRpdFJvdywgZmxhZ3M6IGFueSA9IHt9KSB7XG4gIGlmIChmbGFncy5jaGVja1Jvdykge1xuICAgIHJldHVybiBjaGVja1Jvdy5jYWxsKHRoaXMsIGRhdGEsIGVkaXRSb3csIGZsYWdzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbi8qIHRzbGludDplbmFibGUgb25seS1hcnJvdy1mdW5jdGlvbnMgKi9cblxuY29uc3QgREVGQVVMVF9IRUFERVJfVEVNUExBVEVTID0gW1xuICBoYXNoQ29kZSgoRWRpdEdyaWRDb21wb25lbnQgYXMgYW55KS5kZWZhdWx0SGVhZGVyVGVtcGxhdGUpLFxuICBoYXNoQ29kZShgXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICB7JSAoY29tcG9uZW50cyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHsgJX1cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPnt7IGNvbXBvbmVudC5sYWJlbCB9fTwvZGl2PlxuICAgIHslIH0pICV9XG4gIDwvZGl2PmApXG5dO1xuXG5jb25zdCBERUZBVUxUX1JPV19URU1QTEFURVMgPSBbXG4gIGhhc2hDb2RlKChFZGl0R3JpZENvbXBvbmVudCBhcyBhbnkpLmRlZmF1bHRSb3dUZW1wbGF0ZSksXG4gIGhhc2hDb2RlKGA8ZGl2IGNsYXNzPVwicm93XCI+XG4gIHslIHV0aWwuZWFjaENvbXBvbmVudChjb21wb25lbnRzLCBmdW5jdGlvbihjb21wb25lbnQpIHsgJX1cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5cbiAgICAgIHt7IGdldFZpZXcoY29tcG9uZW50LCByb3dbY29tcG9uZW50LmtleV0pIH19XG4gICAgPC9kaXY+XG4gIHslIH0pICV9XG4gIHslIGlmICghaW5zdGFuY2Uub3B0aW9ucy5yZWFkT25seSkgeyAlfVxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBwdWxsLXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIGVkaXRSb3dcIj5FZGl0PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tc20gcmVtb3ZlUm93XCI+RGVsZXRlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgeyUgfSAlfVxuPC9kaXY+YClcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tZWRpdGdyaWQnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0Z3JpZC5jb21wb25lbnQuY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0Z3JpZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxFZGl0R3JpZENvbXBvbmVudCBleHRlbmRzIE1hdGVyaWFsTmVzdGVkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcicpIGhlYWRlckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpIGZvb3RlckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGRyZW4oJ3Jvd3MnKSByb3dFbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBAVmlld0NoaWxkcmVuKCdmb3JtcycpIGZvcm1zOiBRdWVyeUxpc3Q8Rm9ybWlvQ29tcG9uZW50PjtcbiAgcHVibGljIGhlYWRlcjogc3RyaW5nO1xuICBwdWJsaWMgZm9vdGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXTtcbiAgcHVibGljIGNvbHVtbnM6IGFueSA9IHt9O1xuICBwdWJsaWMgY29sV2lkdGggPSAwO1xuICBwdWJsaWMgdmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgUm93U3RhdGVzID0gRWRpdFJvd1N0YXRlO1xuXG4gIGdldFJvd1RlbXBsYXRlKGNvbnRlbnQpIHtcbiAgICByZXR1cm4gYDxtYXQtbGlzdCBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgICB7JSAoY29tcG9uZW50cyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihjb21wb25lbnQpIHsgJX1cbiAgICAgICAgeyUgaWYgKCFjb21wb25lbnQuaGFzT3duUHJvcGVydHkoJ3RhYmxlVmlldycpIHx8IGNvbXBvbmVudC50YWJsZVZpZXcpIHsgJX1cbiAgICAgICAgICA8bWF0LWxpc3QtaXRlbSBzdHlsZT1cIndpZHRoOiB7eyBjb2xXaWR0aCB9fSU7IG1hcmdpbjogMCAwLjhyZW1cIj4ke2NvbnRlbnR9PC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICB7JSB9ICV9XG4gICAgICB7JSB9KSAlfVxuICAgIDwvbWF0LWxpc3Q+YDtcbn1cblxuICB2YWxpZGF0ZShpbmRleCkge1xuICAgIGlmICghdGhpcy5mb3Jtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtcyA9IHRoaXMuZm9ybXMudG9BcnJheSgpO1xuICAgIGlmICghZm9ybXNbaW5kZXhdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZvcm1pb0NvbXBvbmVudCA9IGZvcm1zW2luZGV4XTtcbiAgICBjb25zdCB7ZGF0YX0gPSBmb3JtaW9Db21wb25lbnQuZm9ybWlvLnN1Ym1pc3Npb247XG4gICAgY29uc3QgaXNJbnZhbGlkID0gT2JqZWN0LmtleXMoZGF0YSkuc29tZShcbiAgICAgIHZhbHVlID0+IGlzU3RyaW5nKGRhdGFbdmFsdWVdKSAmJiBkYXRhW3ZhbHVlXS5sZW5ndGggPT09IDBcbiAgICApO1xuXG4gICAgaWYgKGlzSW52YWxpZCkge1xuICAgICAgdGhpcy52YWxpZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbGlkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXRJbnN0YW5jZShpbnN0YW5jZSkge1xuICAgIGlmIChcbiAgICAgIGluc3RhbmNlLmNvbXBvbmVudC50ZW1wbGF0ZXMuaGVhZGVyICYmXG4gICAgICAoREVGQVVMVF9IRUFERVJfVEVNUExBVEVTLmluZGV4T2YoaGFzaENvZGUoaW5zdGFuY2UuY29tcG9uZW50LnRlbXBsYXRlcy5oZWFkZXIpKSAhPT0gLTEpXG4gICAgKSB7XG4gICAgICBpbnN0YW5jZS5jb21wb25lbnQudGVtcGxhdGVzLmhlYWRlciA9IHRoaXMuZ2V0Um93VGVtcGxhdGUoJ3t7IGNvbXBvbmVudC5sYWJlbCB9fScpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5jb21wb25lbnQudGVtcGxhdGVzLnJvdyAmJlxuICAgICAgKERFRkFVTFRfUk9XX1RFTVBMQVRFUy5pbmRleE9mKGhhc2hDb2RlKGluc3RhbmNlLmNvbXBvbmVudC50ZW1wbGF0ZXMucm93KSkgIT09IC0xKVxuICAgICkge1xuICAgICAgaW5zdGFuY2UuY29tcG9uZW50LnRlbXBsYXRlcy5yb3cgPSB0aGlzLmdldFJvd1RlbXBsYXRlKCd7eyBnZXRWaWV3KGNvbXBvbmVudCwgcm93W2NvbXBvbmVudC5rZXldKSB9fScpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IGluc3RhbmNlLmNvbXBvbmVudC5jb21wb25lbnRzLm1hcCgoY29tcCkgPT4ge1xuICAgICAgaWYgKGNvbXAuaGFzT3duUHJvcGVydHkoJ3RhYmxlVmlldycpICYmICFjb21wLnRhYmxlVmlldykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29sdW1uc1tjb21wLmtleV0gPSBjb21wO1xuICAgICAgcmV0dXJuIGNvbXAua2V5O1xuICAgIH0pLmZpbHRlcihuYW1lID0+ICEhbmFtZSk7XG4gICAgY29uc3QgZGF0YVZhbHVlID0gaW5zdGFuY2UuZGF0YVZhbHVlIHx8IFtdO1xuICAgIHRoaXMuY29sV2lkdGggPSBpbnN0YW5jZS5jb21wb25lbnQuY29tcG9uZW50cy5sZW5ndGggPyBNYXRoLmZsb29yKDEwMCAvIGluc3RhbmNlLmNvbXBvbmVudC5jb21wb25lbnRzLmxlbmd0aCkgOiAxMDA7XG4gICAgaWYgKGluc3RhbmNlLmNvbXBvbmVudC50ZW1wbGF0ZXMgJiYgaW5zdGFuY2UuY29tcG9uZW50LnRlbXBsYXRlcy5oZWFkZXIpIHtcbiAgICAgIHRoaXMuaGVhZGVyID0gaW5zdGFuY2UucmVuZGVyU3RyaW5nKGluc3RhbmNlLmNvbXBvbmVudC50ZW1wbGF0ZXMuaGVhZGVyLCB7XG4gICAgICAgIGNvbXBvbmVudHM6IGluc3RhbmNlLmNvbXBvbmVudC5jb21wb25lbnRzLFxuICAgICAgICB2YWx1ZTogZGF0YVZhbHVlLFxuICAgICAgICBjb2xXaWR0aDogdGhpcy5jb2xXaWR0aFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpbnN0YW5jZS5jb21wb25lbnQudGVtcGxhdGVzICYmIGluc3RhbmNlLmNvbXBvbmVudC50ZW1wbGF0ZXMuZm9vdGVyKSB7XG4gICAgICB0aGlzLmZvb3RlciA9IGluc3RhbmNlLnJlbmRlclN0cmluZyhpbnN0YW5jZS5jb21wb25lbnQudGVtcGxhdGVzLmZvb3Rlciwge1xuICAgICAgICBjb21wb25lbnRzOiBpbnN0YW5jZS5jb21wb25lbnQuY29tcG9uZW50cyxcbiAgICAgICAgdmFsdWU6IGRhdGFWYWx1ZSxcbiAgICAgICAgY29sV2lkdGg6IHRoaXMuY29sV2lkdGhcbiAgICAgIH0pO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyVGVtcGxhdGUodGhpcy5oZWFkZXJFbGVtZW50LCB0aGlzLmhlYWRlcik7XG4gICAgICB0aGlzLnJlbmRlclRlbXBsYXRlKHRoaXMuZm9vdGVyRWxlbWVudCwgdGhpcy5mb290ZXIpO1xuICAgIH0sIDApO1xuICAgIHN1cGVyLnNldEluc3RhbmNlKGluc3RhbmNlKTtcbiAgfVxuXG4gIGFkZEFub3RoZXIoKSB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5pbnN0YW5jZS5hZGRSb3coKTtcbiAgfVxuXG4gIGVkaXRSb3cocm93LCBpbmRleCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHJvdztcbiAgICBjb25zdCB7IE5FVywgUkVNT1ZFRCB9ID0gdGhpcy5Sb3dTdGF0ZXM7XG5cbiAgICBpZiAoc3RhdGUgPT09IE5FVyB8fCBzdGF0ZSA9PT0gUkVNT1ZFRCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluc3RhbmNlLmVkaXRSb3coaW5kZXgpO1xuICAgIGNvbnN0IGZvcm1zID0gdGhpcy5mb3Jtcy50b0FycmF5KCk7XG4gICAgaWYgKGZvcm1zW2luZGV4XSkge1xuICAgICAgZm9ybXNbaW5kZXhdLmZvcm1pby5zdWJtaXNzaW9uID0ge2RhdGE6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm93LmRhdGEpKX07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJvdyB0ZW1wbGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHJvd1xuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHVwZGF0ZVJvd1RlbXBsYXRlKHJvd0VsZW1lbnQ6IEVsZW1lbnRSZWYsIGluZGV4LCBjb21wcykge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGVkaXRSb3c6IGFueSA9IHsuLi50aGlzLmluc3RhbmNlLmVkaXRSb3dzW2luZGV4XX07XG4gICAgaWYgKGVkaXRSb3cuc3RhdGUgIT09IHRoaXMuUm93U3RhdGVzLk5FVykge1xuICAgICAgdGhpcy5yZW5kZXJUZW1wbGF0ZShyb3dFbGVtZW50LCB0aGlzLmluc3RhbmNlLnJlbmRlclN0cmluZyh0aGlzLmluc3RhbmNlLmNvbXBvbmVudC50ZW1wbGF0ZXMucm93LCB7XG4gICAgICAgIHJvdzogdGhpcy5pbnN0YW5jZS5kYXRhVmFsdWVbaW5kZXhdIHx8IHt9LFxuICAgICAgICBkYXRhOiB0aGlzLmluc3RhbmNlLmRhdGEsXG4gICAgICAgIHJvd0luZGV4OiBpbmRleCxcbiAgICAgICAgY29sV2lkdGg6IHRoaXMuY29sV2lkdGgsXG4gICAgICAgIGNvbXBvbmVudHM6IHRoaXMuaW5zdGFuY2UuY29tcG9uZW50LmNvbXBvbmVudHMsXG4gICAgICAgIGdldFZpZXc6IGZ1bmN0aW9uIGdldFZpZXcoY29tcG9uZW50LCBkYXRhKSB7XG4gICAgICAgICAgaWYgKCFjb21wc1tjb21wb25lbnQudHlwZV0pIHtcbiAgICAgICAgICAgIGNvbXBzW2NvbXBvbmVudC50eXBlXSA9IENvbXBvbmVudHMuY3JlYXRlKGNvbXBvbmVudCwge30sIHt9LCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbXBzW2NvbXBvbmVudC50eXBlXSA/IGNvbXBzW2NvbXBvbmVudC50eXBlXS5nZXRWaWV3KGRhdGEpIDogJyc7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSByb3cuXG4gICAqXG4gICAqIEBwYXJhbSByb3cgLSBUaGUgZWRpdCBncmlkIHJvdy5cbiAgICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IGZvciB0aGlzIHJvdy5cbiAgICovXG4gIHNhdmVSb3cocm93LCBpbmRleCkge1xuICAgIGNvbnN0IGZvcm1zID0gdGhpcy5mb3Jtcy50b0FycmF5KCk7XG4gICAgaWYgKGZvcm1zW2luZGV4XSkge1xuICAgICAgY29uc3QgZm9ybWlvQ29tcG9uZW50ID0gZm9ybXNbaW5kZXhdO1xuICAgICAgcm93LmRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZvcm1pb0NvbXBvbmVudC5mb3JtaW8uc3VibWlzc2lvbi5kYXRhKSk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNhdmVSb3coaW5kZXgpO1xuICAgICAgY29uc3Qgcm93cyA9IHRoaXMucm93RWxlbWVudHMudG9BcnJheSgpO1xuICAgICAgaWYgKHJvd3MgJiYgcm93c1tpbmRleF0pIHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dUZW1wbGF0ZShyb3dzW2luZGV4XSwgaW5kZXgsIHt9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYW5jZWxSb3coaW5kZXgpIHtcbiAgICB0aGlzLmluc3RhbmNlLmNhbmNlbFJvdyhpbmRleCk7XG4gICAgdGhpcy52YWxpZCA9IHRydWU7XG4gIH1cblxuICByZW5kZXJUZW1wbGF0ZShlbGVtZW50OiBFbGVtZW50UmVmLCB0ZW1wbGF0ZSkge1xuICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnJvd0VsZW1lbnRzLmNoYW5nZXMuc3Vic2NyaWJlKChyb3dzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4pID0+IHtcbiAgICAgIGNvbnN0IHJvd0NhY2hlID0ge307XG4gICAgICByb3dzLmZvckVhY2goKHJvdzogRWxlbWVudFJlZiwgaW5kZXgpID0+IHRoaXMudXBkYXRlUm93VGVtcGxhdGUocm93LCBpbmRleCwgcm93Q2FjaGUpKTtcbiAgICB9KTtcbiAgfVxufVxuRWRpdEdyaWRDb21wb25lbnQuTWF0ZXJpYWxDb21wb25lbnQgPSBNYXRlcmlhbEVkaXRHcmlkQ29tcG9uZW50O1xuZXhwb3J0IHsgRWRpdEdyaWRDb21wb25lbnQgfTtcbiIsIjwhLS0gPG1hdC1mb3JtaW8tZm9ybS1maWVsZCBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIiBbY29tcG9uZW50VGVtcGxhdGVdPVwiY29tcG9uZW50VGVtcGxhdGVcIiBbbGFiZWxUZW1wbGF0ZV09XCJsYWJlbFRlbXBsYXRlXCI+XG48L21hdC1mb3JtaW8tZm9ybS1maWVsZD5cbjxuZy10ZW1wbGF0ZSAjY29tcG9uZW50VGVtcGxhdGUgbGV0LWhhc0xhYmVsPlxuXG4gIDxzcGFuIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIxZW1cIiBmeEZpbGw+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0xhYmVsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxtYXQtYWNjb3JkaW9uPlxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nSWY9XCJoZWFkZXJcIiBkaXNhYmxlZD1cInRydWVcIj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIDxzcGFuICNoZWFkZXIgZnhGaWxsPjwvc3Bhbj5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IHJvdyBvZiBpbnN0YW5jZS5lZGl0Um93czsgaW5kZXggYXMgaTtcIiBbZXhwYW5kZWRdPVwiaW5zdGFuY2UuaXNPcGVuKHJvdylcIj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIChjbGljayk9XCJlZGl0Um93KHJvdywgaSlcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5zdGF0ZSAhPT0gUm93U3RhdGVzLk5FV1wiICNyb3dzIGZ4RmlsbD48L3NwYW4+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cbiAgICAgICAgPG1hdC1mb3JtaW8gW2Zvcm1dPVwiaW5zdGFuY2UuY29tcG9uZW50XCIgI2Zvcm1zIChjaGFuZ2UpPVwidmFsaWRhdGUoaSlcIj48L21hdC1mb3JtaW8+XG5cbiAgICAgICAgPHNwYW4gZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjFlbVwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiF2YWxpZFwiIChjbGljayk9XCJzYXZlUm93KHJvdywgaSlcIj5TYXZlPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInNlY29uZGFyeVwiIChjbGljayk9XCJjYW5jZWxSb3coaSlcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJpbnN0YW5jZS5yZW1vdmVSb3coaSlcIiBjbGFzcz1cImRlbGV0ZS1idXR0b25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICpuZ0lmPVwiZm9vdGVyXCIgZGlzYWJsZWQ9XCJ0cnVlXCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8c3BhbiAjZm9vdGVyPjwvc3Bhbj5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L21hdC1hY2NvcmRpb24+XG5cbiAgICA8c3BhbiBmeEZpbGw9XCJub25lXCIgKm5nSWY9XCJpbnN0YW5jZS5oYXNBZGRCdXR0b24oKVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiYWRkQW5vdGhlcigpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPiBBZGQgQW5vdGhlclxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xhYmVsVGVtcGxhdGU+XG4gIDxtYXQtY2FyZC10aXRsZT5cbiAgICA8c3BhbiBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIiBtYXRGb3JtaW9MYWJlbD48L3NwYW4+XG4gIDwvbWF0LWNhcmQtdGl0bGU+XG48L25nLXRlbXBsYXRlPiAtLT5cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { Component } from '@angular/core';
2
+ import { MaterialTextfieldComponent, TEXTFIELD_TEMPLATE } from '../textfield/textfield.component';
3
+ import EmailComponent from 'formiojs/components/email/Email.js';
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 "../formio-form-field/formio-form-field.component";
11
+ import * as i7 from "../label/label.component";
12
+ export class MaterialEmailComponent extends MaterialTextfieldComponent {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.inputType = 'email';
16
+ }
17
+ }
18
+ MaterialEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialEmailComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
19
+ MaterialEmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialEmailComponent, selector: "mat-formio-email", 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 >\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.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: "component", type: i6.FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: ["labelTemplate", "renderTopLabel", "showDescription", "renderElementOnly", "instance", "componentTemplate"] }, { kind: "component", type: i7.LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialEmailComponent, decorators: [{
21
+ type: Component,
22
+ args: [{
23
+ selector: 'mat-formio-email',
24
+ template: TEXTFIELD_TEMPLATE
25
+ }]
26
+ }] });
27
+ EmailComponent.MaterialComponent = MaterialEmailComponent;
28
+ export { EmailComponent };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZW1haWwvZW1haWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEcsT0FBTyxjQUFjLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7OztBQUtoRSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMEJBQTBCO0lBSnRFOztRQUtTLGNBQVMsR0FBRyxPQUFPLENBQUM7S0FDNUI7O21IQUZZLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7O0FBSUQsY0FBYyxDQUFDLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxUZXh0ZmllbGRDb21wb25lbnQsIFRFWFRGSUVMRF9URU1QTEFURSB9IGZyb20gJy4uL3RleHRmaWVsZC90ZXh0ZmllbGQuY29tcG9uZW50JztcbmltcG9ydCBFbWFpbENvbXBvbmVudCBmcm9tICdmb3JtaW9qcy9jb21wb25lbnRzL2VtYWlsL0VtYWlsLmpzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tZW1haWwnLFxuICB0ZW1wbGF0ZTogVEVYVEZJRUxEX1RFTVBMQVRFXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsRW1haWxDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbFRleHRmaWVsZENvbXBvbmVudCB7XG4gIHB1YmxpYyBpbnB1dFR5cGUgPSAnZW1haWwnO1xufVxuRW1haWxDb21wb25lbnQuTWF0ZXJpYWxDb21wb25lbnQgPSBNYXRlcmlhbEVtYWlsQ29tcG9uZW50O1xuZXhwb3J0IHsgRW1haWxDb21wb25lbnQgfTtcbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { Component } from '@angular/core';
2
+ import FieldsetComponent from 'formiojs/components/fieldset/Fieldset.js';
3
+ import { MaterialNestedComponent } from '../MaterialNestedComponent';
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/tooltip";
8
+ import * as i4 from "@angular/material/icon";
9
+ import * as i5 from "@angular/flex-layout/flex";
10
+ export class MaterialFieldsetComponent extends MaterialNestedComponent {
11
+ }
12
+ MaterialFieldsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialFieldsetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
13
+ MaterialFieldsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialFieldsetComponent, selector: "mat-formio-fieldset", usesInheritance: true, ngImport: i0, template: `
14
+ <fieldset>
15
+ <legend [attr.ref]="'header'">
16
+ {{ instance.component.legend }}
17
+ <mat-icon *ngIf="instance.component.tooltip"
18
+ matSuffix
19
+ matTooltip="{{ instance.component.tooltip }}"
20
+ >
21
+ info
22
+ </mat-icon>
23
+ </legend>
24
+ <div class="fieldset-body" [attr.ref]="instance.component.key" fxLayout="column" fxLayoutGap="1em">
25
+ <ng-template #components></ng-template>
26
+ </div>
27
+ </fieldset>
28
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.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: i5.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"] }] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialFieldsetComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'mat-formio-fieldset', template: `
32
+ <fieldset>
33
+ <legend [attr.ref]="'header'">
34
+ {{ instance.component.legend }}
35
+ <mat-icon *ngIf="instance.component.tooltip"
36
+ matSuffix
37
+ matTooltip="{{ instance.component.tooltip }}"
38
+ >
39
+ info
40
+ </mat-icon>
41
+ </legend>
42
+ <div class="fieldset-body" [attr.ref]="instance.component.key" fxLayout="column" fxLayoutGap="1em">
43
+ <ng-template #components></ng-template>
44
+ </div>
45
+ </fieldset>
46
+ ` }]
47
+ }] });
48
+ FieldsetComponent.MaterialComponent = MaterialFieldsetComponent;
49
+ export { FieldsetComponent };
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxpQkFBaUIsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQXFCckUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHVCQUF1Qjs7c0hBQXpELHlCQUF5QjswR0FBekIseUJBQXlCLGtGQWxCMUI7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzJGQUdVLHlCQUF5QjtrQkFwQnJDLFNBQVM7K0JBQ0UscUJBQXFCLFlBQ3JCOzs7Ozs7Ozs7Ozs7Ozs7R0FlVDs7QUFJSCxpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IEZpZWxkc2V0Q29tcG9uZW50IGZyb20gJ2Zvcm1pb2pzL2NvbXBvbmVudHMvZmllbGRzZXQvRmllbGRzZXQuanMnO1xuaW1wb3J0IHsgTWF0ZXJpYWxOZXN0ZWRDb21wb25lbnQgfSBmcm9tICcuLi9NYXRlcmlhbE5lc3RlZENvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybWlvLWZpZWxkc2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmllbGRzZXQ+XG4gICAgICA8bGVnZW5kIFthdHRyLnJlZl09XCInaGVhZGVyJ1wiPlxuICAgICAgICB7eyBpbnN0YW5jZS5jb21wb25lbnQubGVnZW5kIH19XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImluc3RhbmNlLmNvbXBvbmVudC50b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IGluc3RhbmNlLmNvbXBvbmVudC50b29sdGlwIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIGluZm9cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkc2V0LWJvZHlcIiBbYXR0ci5yZWZdPVwiaW5zdGFuY2UuY29tcG9uZW50LmtleVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIxZW1cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRzPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICBgLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsRmllbGRzZXRDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbE5lc3RlZENvbXBvbmVudCB7fVxuRmllbGRzZXRDb21wb25lbnQuTWF0ZXJpYWxDb21wb25lbnQgPSBNYXRlcmlhbEZpZWxkc2V0Q29tcG9uZW50O1xuZXhwb3J0IHsgRmllbGRzZXRDb21wb25lbnQgfTtcbiJdfQ==
@@ -0,0 +1,57 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { LabelPositions } from '../../const/LabelPositions';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/material/form-field";
6
+ import * as i3 from "@angular/flex-layout/extended";
7
+ import * as i4 from "../label/label.component";
8
+ export class FormioFormFieldComponent {
9
+ constructor() {
10
+ this.labelPositions = LabelPositions;
11
+ this.renderTopLabel = false;
12
+ this.showDescription = true;
13
+ this.renderElementOnly = false;
14
+ }
15
+ set instance(instance) {
16
+ this._instance = instance;
17
+ if (instance) {
18
+ this.componentTemplateContext = { $implicit: this.hasLabel(['top']) };
19
+ }
20
+ }
21
+ get instance() {
22
+ return this._instance;
23
+ }
24
+ hasLabel(labelPositions) {
25
+ const { component } = this.instance;
26
+ const hasNoLabel = !component.label || component.hideLabel;
27
+ const labelPositionIsNotSpecified = !labelPositions ||
28
+ !labelPositions.length ||
29
+ !component.labelPosition;
30
+ if (hasNoLabel || labelPositionIsNotSpecified || this.renderElementOnly) {
31
+ return false;
32
+ }
33
+ if (labelPositions.includes(component.labelPosition)) {
34
+ return true;
35
+ }
36
+ }
37
+ }
38
+ FormioFormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FormioFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
+ FormioFormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: FormioFormFieldComponent, selector: "mat-formio-form-field", inputs: { labelTemplate: "labelTemplate", renderTopLabel: "renderTopLabel", showDescription: "showDescription", renderElementOnly: "renderElementOnly", instance: "instance", componentTemplate: "componentTemplate" }, ngImport: i0, template: "<div class=\"mat-formio-component-wrapper\" *ngIf=\"instance && !renderElementOnly\"\n [ngClass]=\"{\n 'mat-formio-label-right': hasLabel([labelPositions.RIGHT_RIGHT, labelPositions.RIGHT_LEFT]),\n 'mat-formio-label-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.LEFT_RIGHT])\n }\"\n>\n <span *ngIf=\"renderTopLabel && hasLabel([labelPositions.TOP])\"\n class=\"mat-formio-label\"\n [ngClass]=\"{\n 'mat-formio-label-align-right': hasLabel([labelPositions.LEFT_RIGHT, labelPositions.RIGHT_RIGHT]),\n 'mat-formio-label-align-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.RIGHT_LEFT])\n }\"\n >\n <ng-container *ngTemplateOutlet=\"labelTemplate || defaultLabel\"></ng-container>\n </span>\n\n <div class=\"mat-formio-component\" *ngTemplateOutlet=\"componentTemplate; context: componentTemplateContext\"></div>\n\n <span *ngIf=\"hasLabel([\n labelPositions.BOTTOM,\n labelPositions.RIGHT_RIGHT,\n labelPositions.RIGHT_LEFT,\n labelPositions.LEFT_LEFT,\n labelPositions.LEFT_RIGHT\n ])\"\n class=\"mat-formio-label\"\n [ngClass]=\"{\n 'mat-formio-label-align-right': hasLabel([labelPositions.LEFT_RIGHT, labelPositions.RIGHT_RIGHT]),\n 'mat-formio-label-align-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.RIGHT_LEFT])\n }\"\n >\n <ng-container *ngTemplateOutlet=\"labelTemplate || defaultLabel\"></ng-container>\n </span>\n\n <mat-hint *ngIf=\"showDescription && instance.component.description\" class=\"mat-formio-component-description\">\n {{ instance.component.description }}\n </mat-hint>\n</div>\n\n<div class=\"mat-formio-component-wrapper\" *ngIf=\"renderElementOnly\">\n <div class=\"mat-formio-component\" *ngTemplateOutlet=\"componentTemplate; context: componentTemplateContext\"></div>\n</div>\n\n<ng-template #defaultLabel>\n <mat-label>\n <span style=\"display: block;\"\n [instance]=\"instance\" matFormioLabel>\n </span>\n </mat-label>\n</ng-template>\n", styles: [".mat-formio-component-description{display:block;grid-area:description}.mat-formio-component{grid-area:component}.mat-formio-label{grid-area:label}.mat-formio-label.mat-formio-label-align-right{margin-left:auto}.mat-formio-label.mat-formio-label-align-left{margin-right:auto}.mat-formio-component-wrapper.mat-formio-label-left,.mat-formio-component-wrapper.mat-formio-label-right{display:grid;grid-template-columns:auto auto;grid-column-gap:1em}.mat-formio-component-wrapper.mat-formio-label-right{grid-template-areas:\"component label\" \"description label\"}.mat-formio-component-wrapper.mat-formio-label-left{grid-template-areas:\"label component\" \"label description\"}\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.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: i4.LabelComponent, selector: "span[matFormioLabel]", inputs: ["instance"] }] });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FormioFormFieldComponent, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: 'mat-formio-form-field', template: "<div class=\"mat-formio-component-wrapper\" *ngIf=\"instance && !renderElementOnly\"\n [ngClass]=\"{\n 'mat-formio-label-right': hasLabel([labelPositions.RIGHT_RIGHT, labelPositions.RIGHT_LEFT]),\n 'mat-formio-label-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.LEFT_RIGHT])\n }\"\n>\n <span *ngIf=\"renderTopLabel && hasLabel([labelPositions.TOP])\"\n class=\"mat-formio-label\"\n [ngClass]=\"{\n 'mat-formio-label-align-right': hasLabel([labelPositions.LEFT_RIGHT, labelPositions.RIGHT_RIGHT]),\n 'mat-formio-label-align-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.RIGHT_LEFT])\n }\"\n >\n <ng-container *ngTemplateOutlet=\"labelTemplate || defaultLabel\"></ng-container>\n </span>\n\n <div class=\"mat-formio-component\" *ngTemplateOutlet=\"componentTemplate; context: componentTemplateContext\"></div>\n\n <span *ngIf=\"hasLabel([\n labelPositions.BOTTOM,\n labelPositions.RIGHT_RIGHT,\n labelPositions.RIGHT_LEFT,\n labelPositions.LEFT_LEFT,\n labelPositions.LEFT_RIGHT\n ])\"\n class=\"mat-formio-label\"\n [ngClass]=\"{\n 'mat-formio-label-align-right': hasLabel([labelPositions.LEFT_RIGHT, labelPositions.RIGHT_RIGHT]),\n 'mat-formio-label-align-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.RIGHT_LEFT])\n }\"\n >\n <ng-container *ngTemplateOutlet=\"labelTemplate || defaultLabel\"></ng-container>\n </span>\n\n <mat-hint *ngIf=\"showDescription && instance.component.description\" class=\"mat-formio-component-description\">\n {{ instance.component.description }}\n </mat-hint>\n</div>\n\n<div class=\"mat-formio-component-wrapper\" *ngIf=\"renderElementOnly\">\n <div class=\"mat-formio-component\" *ngTemplateOutlet=\"componentTemplate; context: componentTemplateContext\"></div>\n</div>\n\n<ng-template #defaultLabel>\n <mat-label>\n <span style=\"display: block;\"\n [instance]=\"instance\" matFormioLabel>\n </span>\n </mat-label>\n</ng-template>\n", styles: [".mat-formio-component-description{display:block;grid-area:description}.mat-formio-component{grid-area:component}.mat-formio-label{grid-area:label}.mat-formio-label.mat-formio-label-align-right{margin-left:auto}.mat-formio-label.mat-formio-label-align-left{margin-right:auto}.mat-formio-component-wrapper.mat-formio-label-left,.mat-formio-component-wrapper.mat-formio-label-right{display:grid;grid-template-columns:auto auto;grid-column-gap:1em}.mat-formio-component-wrapper.mat-formio-label-right{grid-template-areas:\"component label\" \"description label\"}.mat-formio-component-wrapper.mat-formio-label-left{grid-template-areas:\"label component\" \"label description\"}\n"] }]
43
+ }], propDecorators: { labelTemplate: [{
44
+ type: Input
45
+ }], renderTopLabel: [{
46
+ type: Input
47
+ }], showDescription: [{
48
+ type: Input
49
+ }], renderElementOnly: [{
50
+ type: Input
51
+ }], instance: [{
52
+ type: Input,
53
+ args: ['instance']
54
+ }], componentTemplate: [{
55
+ type: Input
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWlvLWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybWlvLWZvcm0tZmllbGQvZm9ybWlvLWZvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybWlvLWZvcm0tZmllbGQvZm9ybWlvLWZvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFPNUQsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQU9TLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRTlCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztLQWdDcEM7SUE5QkMsSUFDSSxRQUFRLENBQUMsUUFBUTtRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBS0QsUUFBUSxDQUFDLGNBQXlCO1FBQ2hDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQzNELE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxjQUFjO1lBQ2YsQ0FBQyxjQUFjLENBQUMsTUFBTTtZQUN0QixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFFN0QsSUFBSSxVQUFVLElBQUksMkJBQTJCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3ZFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDOztxSEFyQ1Usd0JBQXdCO3lHQUF4Qix3QkFBd0IscVJDUnJDLDJvRUFrREE7MkZEMUNhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx1QkFBdUI7OEJBT3hCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7dUJBQUMsVUFBVTtnQkFZUixpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFiZWxQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi9jb25zdC9MYWJlbFBvc2l0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tZm9ybS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtaW8tZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm1pby1mb3JtLWZpZWxkLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtaW9Gb3JtRmllbGRDb21wb25lbnQge1xuICBwcml2YXRlIF9pbnN0YW5jZTtcbiAgcHVibGljIGxhYmVsUG9zaXRpb25zID0gTGFiZWxQb3NpdGlvbnM7XG4gIEBJbnB1dCgpIGxhYmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHJlbmRlclRvcExhYmVsID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dEZXNjcmlwdGlvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHJlbmRlckVsZW1lbnRPbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KCdpbnN0YW5jZScpXG4gIHNldCBpbnN0YW5jZShpbnN0YW5jZSkge1xuICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFRlbXBsYXRlQ29udGV4dCA9IHskaW1wbGljaXQ6IHRoaXMuaGFzTGFiZWwoWyd0b3AnXSl9O1xuICAgIH1cbiAgfVxuXG4gIGdldCBpbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gIH1cblxuICBASW5wdXQoKSBjb21wb25lbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY29tcG9uZW50VGVtcGxhdGVDb250ZXh0O1xuXG4gIGhhc0xhYmVsKGxhYmVsUG9zaXRpb25zPzogc3RyaW5nW10pIHtcbiAgICBjb25zdCB7IGNvbXBvbmVudCB9ID0gdGhpcy5pbnN0YW5jZTtcbiAgICBjb25zdCBoYXNOb0xhYmVsID0gIWNvbXBvbmVudC5sYWJlbCB8fCBjb21wb25lbnQuaGlkZUxhYmVsO1xuICAgIGNvbnN0IGxhYmVsUG9zaXRpb25Jc05vdFNwZWNpZmllZCA9ICFsYWJlbFBvc2l0aW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsYWJlbFBvc2l0aW9ucy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY29tcG9uZW50LmxhYmVsUG9zaXRpb247XG5cbiAgICBpZiAoaGFzTm9MYWJlbCB8fCBsYWJlbFBvc2l0aW9uSXNOb3RTcGVjaWZpZWQgfHwgdGhpcy5yZW5kZXJFbGVtZW50T25seSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsYWJlbFBvc2l0aW9ucy5pbmNsdWRlcyhjb21wb25lbnQubGFiZWxQb3NpdGlvbikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1hdC1mb3JtaW8tY29tcG9uZW50LXdyYXBwZXJcIiAqbmdJZj1cImluc3RhbmNlICYmICFyZW5kZXJFbGVtZW50T25seVwiXG4gICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ21hdC1mb3JtaW8tbGFiZWwtcmlnaHQnOiBoYXNMYWJlbChbbGFiZWxQb3NpdGlvbnMuUklHSFRfUklHSFQsIGxhYmVsUG9zaXRpb25zLlJJR0hUX0xFRlRdKSxcbiAgICAgICAgJ21hdC1mb3JtaW8tbGFiZWwtbGVmdCc6IGhhc0xhYmVsKFtsYWJlbFBvc2l0aW9ucy5MRUZUX0xFRlQsIGxhYmVsUG9zaXRpb25zLkxFRlRfUklHSFRdKVxuICAgICB9XCJcbj5cbiAgPHNwYW4gKm5nSWY9XCJyZW5kZXJUb3BMYWJlbCAmJiBoYXNMYWJlbChbbGFiZWxQb3NpdGlvbnMuVE9QXSlcIlxuICAgICAgICBjbGFzcz1cIm1hdC1mb3JtaW8tbGFiZWxcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ21hdC1mb3JtaW8tbGFiZWwtYWxpZ24tcmlnaHQnOiBoYXNMYWJlbChbbGFiZWxQb3NpdGlvbnMuTEVGVF9SSUdIVCwgbGFiZWxQb3NpdGlvbnMuUklHSFRfUklHSFRdKSxcbiAgICAgICAgICAnbWF0LWZvcm1pby1sYWJlbC1hbGlnbi1sZWZ0JzogaGFzTGFiZWwoW2xhYmVsUG9zaXRpb25zLkxFRlRfTEVGVCwgbGFiZWxQb3NpdGlvbnMuUklHSFRfTEVGVF0pXG4gICAgICAgIH1cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGUgfHwgZGVmYXVsdExhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cblxuICA8ZGl2IGNsYXNzPVwibWF0LWZvcm1pby1jb21wb25lbnRcIiAqbmdUZW1wbGF0ZU91dGxldD1cImNvbXBvbmVudFRlbXBsYXRlOyBjb250ZXh0OiBjb21wb25lbnRUZW1wbGF0ZUNvbnRleHRcIj48L2Rpdj5cblxuICA8c3BhbiAqbmdJZj1cImhhc0xhYmVsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxQb3NpdGlvbnMuQk9UVE9NLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFBvc2l0aW9ucy5SSUdIVF9SSUdIVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxQb3NpdGlvbnMuUklHSFRfTEVGVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxQb3NpdGlvbnMuTEVGVF9MRUZULFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbFBvc2l0aW9ucy5MRUZUX1JJR0hUXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVwiXG4gICAgICAgIGNsYXNzPVwibWF0LWZvcm1pby1sYWJlbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbWF0LWZvcm1pby1sYWJlbC1hbGlnbi1yaWdodCc6IGhhc0xhYmVsKFtsYWJlbFBvc2l0aW9ucy5MRUZUX1JJR0hULCBsYWJlbFBvc2l0aW9ucy5SSUdIVF9SSUdIVF0pLFxuICAgICAgICAgICdtYXQtZm9ybWlvLWxhYmVsLWFsaWduLWxlZnQnOiBoYXNMYWJlbChbbGFiZWxQb3NpdGlvbnMuTEVGVF9MRUZULCBsYWJlbFBvc2l0aW9ucy5SSUdIVF9MRUZUXSlcbiAgICAgICAgfVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxUZW1wbGF0ZSB8fCBkZWZhdWx0TGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9zcGFuPlxuXG4gIDxtYXQtaGludCAqbmdJZj1cInNob3dEZXNjcmlwdGlvbiAmJiBpbnN0YW5jZS5jb21wb25lbnQuZGVzY3JpcHRpb25cIiBjbGFzcz1cIm1hdC1mb3JtaW8tY29tcG9uZW50LWRlc2NyaXB0aW9uXCI+XG4gICAge3sgaW5zdGFuY2UuY29tcG9uZW50LmRlc2NyaXB0aW9uIH19XG4gIDwvbWF0LWhpbnQ+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1hdC1mb3JtaW8tY29tcG9uZW50LXdyYXBwZXJcIiAqbmdJZj1cInJlbmRlckVsZW1lbnRPbmx5XCI+XG4gIDxkaXYgY2xhc3M9XCJtYXQtZm9ybWlvLWNvbXBvbmVudFwiICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29tcG9uZW50VGVtcGxhdGU7IGNvbnRleHQ6IGNvbXBvbmVudFRlbXBsYXRlQ29udGV4dFwiPjwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdExhYmVsPlxuICA8bWF0LWxhYmVsPlxuICAgIDxzcGFuIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7XCJcbiAgICAgICAgICBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIiBtYXRGb3JtaW9MYWJlbD5cbiAgICA8L3NwYW4+XG4gIDwvbWF0LWxhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,88 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import Wizard from 'formiojs/Wizard';
3
+ import Displays from 'formiojs/displays/Displays';
4
+ import { MaterialNestedComponent } from './MaterialNestedComponent';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/material/button";
8
+ import * as i3 from "@angular/material/stepper";
9
+ export class MaterialWizardComponent extends MaterialNestedComponent {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.isLinear = true;
13
+ this.prevNumOfPages = 0;
14
+ }
15
+ setInstance(instance) {
16
+ this.isLinear = (instance.options &&
17
+ instance.options.breadcrumbSettings &&
18
+ instance.options.breadcrumbSettings.clickable) ? false : true;
19
+ this.updatePages(instance);
20
+ instance.on('pagesChanged', () => this.updatePages());
21
+ super.setInstance(instance);
22
+ }
23
+ updatePages(instance = this.instance) {
24
+ if (this.prevNumOfPages !== instance.pages.length) {
25
+ instance.pages.forEach((page, pageIndex) => {
26
+ page.viewContainer = () => {
27
+ return this.viewContainers ? this.viewContainers[pageIndex] : null;
28
+ };
29
+ });
30
+ this.prevNumOfPages = instance.pages.length;
31
+ }
32
+ }
33
+ resetWizard() {
34
+ this.instance.cancel();
35
+ this.stepper.reset();
36
+ }
37
+ nextPage() {
38
+ this.instance.nextPage().then(() => this.stepper.next());
39
+ }
40
+ prevPage() {
41
+ this.instance.prevPage().then(() => this.stepper.previous());
42
+ }
43
+ submit() {
44
+ this.instance.submit();
45
+ }
46
+ renderComponents() {
47
+ if (this.instance.renderComponents && this.instance.pages) {
48
+ this.instance.renderComponents(this.instance.pages.reduce((comps, page) => {
49
+ return comps.concat(page.components);
50
+ }, []));
51
+ }
52
+ }
53
+ }
54
+ MaterialWizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialWizardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
55
+ MaterialWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialWizardComponent, selector: "mat-formio-wizard", viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
56
+ <mat-horizontal-stepper [linear]="isLinear" #stepper>
57
+ <mat-step *ngFor="let page of instance.pages" [label]="page.component.title">
58
+ <ng-template #components></ng-template>
59
+ <div class="navigation-button-row">
60
+ <button *ngIf="instance.hasButton('cancel')" mat-raised-button (click)="resetWizard()">Cancel</button>
61
+ <button *ngIf="instance.hasButton('previous')" mat-raised-button color="primary" (click)="prevPage()">Previous</button>
62
+ <button *ngIf="instance.hasButton('next')" mat-raised-button color="primary" (click)="nextPage()">Next</button>
63
+ <button *ngIf="instance.hasButton('submit')" mat-raised-button color="primary" (click)="submit()">Submit</button>
64
+ </div>
65
+ </mat-step>
66
+ </mat-horizontal-stepper>`, isInline: true, styles: [":host .navigation-button-row{margin-top:8px}\n", ":host .navigation-button-row button{margin-right:8px}\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.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }] });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialWizardComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'mat-formio-wizard', template: `
70
+ <mat-horizontal-stepper [linear]="isLinear" #stepper>
71
+ <mat-step *ngFor="let page of instance.pages" [label]="page.component.title">
72
+ <ng-template #components></ng-template>
73
+ <div class="navigation-button-row">
74
+ <button *ngIf="instance.hasButton('cancel')" mat-raised-button (click)="resetWizard()">Cancel</button>
75
+ <button *ngIf="instance.hasButton('previous')" mat-raised-button color="primary" (click)="prevPage()">Previous</button>
76
+ <button *ngIf="instance.hasButton('next')" mat-raised-button color="primary" (click)="nextPage()">Next</button>
77
+ <button *ngIf="instance.hasButton('submit')" mat-raised-button color="primary" (click)="submit()">Submit</button>
78
+ </div>
79
+ </mat-step>
80
+ </mat-horizontal-stepper>`, styles: [":host .navigation-button-row{margin-top:8px}\n", ":host .navigation-button-row button{margin-right:8px}\n"] }]
81
+ }], propDecorators: { stepper: [{
82
+ type: ViewChild,
83
+ args: ['stepper', { static: true }]
84
+ }] } });
85
+ Wizard.MaterialComponent = MaterialWizardComponent;
86
+ Displays.addDisplay('wizard', Wizard);
87
+ export { Wizard };
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWlvLndpemFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1pby53aXphcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBcUJwRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsdUJBQXVCO0lBbkJwRTs7UUFxQlMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNmLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO0tBa0Q1QjtJQWhEQyxXQUFXLENBQUMsUUFBYTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQ2QsUUFBUSxDQUFDLE9BQU87WUFDaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0I7WUFDbkMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQzlDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRWpCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsUUFBUSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFdEQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUTtRQUNsQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDakQsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO29CQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckUsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3hFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7O29IQXBEVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixrTUFieEI7Ozs7Ozs7Ozs7OzhCQVdrQjsyRkFFakIsdUJBQXVCO2tCQW5CbkMsU0FBUzsrQkFDRSxtQkFBbUIsWUFLbkI7Ozs7Ozs7Ozs7OzhCQVdrQjs4QkFHVSxPQUFPO3NCQUE1QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7O0FBcUR0QyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFDbkQsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFN0ZXBwZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcbmltcG9ydCBXaXphcmQgZnJvbSAnZm9ybWlvanMvV2l6YXJkJztcbmltcG9ydCBEaXNwbGF5cyBmcm9tICdmb3JtaW9qcy9kaXNwbGF5cy9EaXNwbGF5cyc7XG5pbXBvcnQgeyBNYXRlcmlhbE5lc3RlZENvbXBvbmVudCB9IGZyb20gJy4vTWF0ZXJpYWxOZXN0ZWRDb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybWlvLXdpemFyZCcsXG4gIHN0eWxlczogW1xuICAgICc6aG9zdCAubmF2aWdhdGlvbi1idXR0b24tcm93IHsgbWFyZ2luLXRvcDogOHB4OyB9JyxcbiAgICAnOmhvc3QgLm5hdmlnYXRpb24tYnV0dG9uLXJvdyBidXR0b24geyBtYXJnaW4tcmlnaHQ6IDhweDsgfSdcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWhvcml6b250YWwtc3RlcHBlciBbbGluZWFyXT1cImlzTGluZWFyXCIgI3N0ZXBwZXI+XG4gICAgICA8bWF0LXN0ZXAgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgaW5zdGFuY2UucGFnZXNcIiBbbGFiZWxdPVwicGFnZS5jb21wb25lbnQudGl0bGVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRzPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXZpZ2F0aW9uLWJ1dHRvbi1yb3dcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zdGFuY2UuaGFzQnV0dG9uKCdjYW5jZWwnKVwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZXNldFdpemFyZCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluc3RhbmNlLmhhc0J1dHRvbigncHJldmlvdXMnKVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJwcmV2UGFnZSgpXCI+UHJldmlvdXM8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zdGFuY2UuaGFzQnV0dG9uKCduZXh0JylcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwibmV4dFBhZ2UoKVwiPk5leHQ8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zdGFuY2UuaGFzQnV0dG9uKCdzdWJtaXQnKVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXQoKVwiPlN1Ym1pdDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXN0ZXA+XG4gICAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPmBcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxXaXphcmRDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbE5lc3RlZENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBwZXInLCB7c3RhdGljOiB0cnVlfSkgc3RlcHBlcjogTWF0U3RlcHBlcjtcbiAgcHVibGljIGlzTGluZWFyID0gdHJ1ZTtcbiAgcHJpdmF0ZSBwcmV2TnVtT2ZQYWdlcyA9IDA7XG5cbiAgc2V0SW5zdGFuY2UoaW5zdGFuY2U6IGFueSkge1xuICAgIHRoaXMuaXNMaW5lYXIgPSAoXG4gICAgICBpbnN0YW5jZS5vcHRpb25zICYmXG4gICAgICBpbnN0YW5jZS5vcHRpb25zLmJyZWFkY3J1bWJTZXR0aW5ncyAmJlxuICAgICAgaW5zdGFuY2Uub3B0aW9ucy5icmVhZGNydW1iU2V0dGluZ3MuY2xpY2thYmxlXG4gICAgKSA/IGZhbHNlIDogdHJ1ZTtcblxuICAgIHRoaXMudXBkYXRlUGFnZXMoaW5zdGFuY2UpO1xuICAgIGluc3RhbmNlLm9uKCdwYWdlc0NoYW5nZWQnLCAoKSA9PiB0aGlzLnVwZGF0ZVBhZ2VzKCkpO1xuXG4gICAgc3VwZXIuc2V0SW5zdGFuY2UoaW5zdGFuY2UpO1xuICB9XG5cbiAgdXBkYXRlUGFnZXMoaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlKSB7XG4gICAgaWYgKHRoaXMucHJldk51bU9mUGFnZXMgIT09IGluc3RhbmNlLnBhZ2VzLmxlbmd0aCkge1xuICAgICAgaW5zdGFuY2UucGFnZXMuZm9yRWFjaCgocGFnZSwgcGFnZUluZGV4KSA9PiB7XG4gICAgICAgIHBhZ2Uudmlld0NvbnRhaW5lciA9ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVycyA/IHRoaXMudmlld0NvbnRhaW5lcnNbcGFnZUluZGV4XSA6IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJldk51bU9mUGFnZXMgPSBpbnN0YW5jZS5wYWdlcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRXaXphcmQoKSB7XG4gICAgdGhpcy5pbnN0YW5jZS5jYW5jZWwoKTtcbiAgICB0aGlzLnN0ZXBwZXIucmVzZXQoKTtcbiAgfVxuXG4gIG5leHRQYWdlKCkge1xuICAgIHRoaXMuaW5zdGFuY2UubmV4dFBhZ2UoKS50aGVuKCgpID0+IHRoaXMuc3RlcHBlci5uZXh0KCkpO1xuICB9XG5cbiAgcHJldlBhZ2UoKSB7XG4gICAgdGhpcy5pbnN0YW5jZS5wcmV2UGFnZSgpLnRoZW4oKCkgPT4gdGhpcy5zdGVwcGVyLnByZXZpb3VzKCkpO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuaW5zdGFuY2Uuc3VibWl0KCk7XG4gIH1cblxuICByZW5kZXJDb21wb25lbnRzKCkge1xuICAgIGlmICh0aGlzLmluc3RhbmNlLnJlbmRlckNvbXBvbmVudHMgJiYgdGhpcy5pbnN0YW5jZS5wYWdlcykge1xuICAgICAgdGhpcy5pbnN0YW5jZS5yZW5kZXJDb21wb25lbnRzKHRoaXMuaW5zdGFuY2UucGFnZXMucmVkdWNlKChjb21wcywgcGFnZSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tcHMuY29uY2F0KHBhZ2UuY29tcG9uZW50cyk7XG4gICAgICB9LCBbXSkpO1xuICAgIH1cbiAgfVxufVxuV2l6YXJkLk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxXaXphcmRDb21wb25lbnQ7XG5EaXNwbGF5cy5hZGREaXNwbGF5KCd3aXphcmQnLCBXaXphcmQpO1xuZXhwb3J0IHsgV2l6YXJkIH07XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { Component } from '@angular/core';
2
+ import { MaterialComponent } from '../MaterialComponent';
3
+ import HiddenComponent from 'formiojs/components/hidden/Hidden.js';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@angular/material/input";
7
+ export class MaterialHiddenComponent extends MaterialComponent {
8
+ }
9
+ MaterialHiddenComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialHiddenComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
+ MaterialHiddenComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialHiddenComponent, selector: "mat-formio-hidden", usesInheritance: true, ngImport: i0, template: `<input matInput type="hidden" [formControl]="control" #input>`, isInline: true, dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.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"] }] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialHiddenComponent, decorators: [{
12
+ type: Component,
13
+ args: [{
14
+ selector: 'mat-formio-hidden',
15
+ template: `<input matInput type="hidden" [formControl]="control" #input>`
16
+ }]
17
+ }] });
18
+ HiddenComponent.MaterialComponent = MaterialHiddenComponent;
19
+ export { HiddenComponent };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlkZGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2hpZGRlbi9oaWRkZW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxlQUFlLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFLbkUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjs7b0hBQWpELHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGdGQUZ4QiwrREFBK0Q7MkZBRTlELHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsK0RBQStEO2lCQUMxRTs7QUFFRCxlQUFlLENBQUMsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4uL01hdGVyaWFsQ29tcG9uZW50JztcbmltcG9ydCBIaWRkZW5Db21wb25lbnQgZnJvbSAnZm9ybWlvanMvY29tcG9uZW50cy9oaWRkZW4vSGlkZGVuLmpzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8taGlkZGVuJyxcbiAgdGVtcGxhdGU6IGA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgI2lucHV0PmBcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxIaWRkZW5Db21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbENvbXBvbmVudCB7fVxuSGlkZGVuQ29tcG9uZW50Lk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxIaWRkZW5Db21wb25lbnQ7XG5leHBvcnQgeyBIaWRkZW5Db21wb25lbnQgfTtcbiJdfQ==