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,97 @@
1
+ import { Component } from '@angular/core';
2
+ import { MaterialNestedComponent } from '../MaterialNestedComponent';
3
+ import TableComponent from 'formiojs/components/table/Table.js';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/flex-layout/extended";
7
+ export class MaterialTableComponent extends MaterialNestedComponent {
8
+ setInstance(instance) {
9
+ super.setInstance(instance);
10
+ instance.viewContainer = (component) => {
11
+ return this.viewContainers ?
12
+ this.viewContainers[(component.tableRow * this.instance.component.numCols) + component.tableColumn] :
13
+ null;
14
+ };
15
+ }
16
+ getTableColClasses() {
17
+ if (!this.instance) {
18
+ return;
19
+ }
20
+ const { condensed, cellAlignment } = this.instance.component;
21
+ return {
22
+ 'is-condensed': condensed,
23
+ ...(cellAlignment && { [cellAlignment]: true })
24
+ };
25
+ }
26
+ }
27
+ MaterialTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28
+ MaterialTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialTableComponent, selector: "mat-formio-table", usesInheritance: true, ngImport: i0, template: `
29
+ <table class="mat-table" style="width: 100%;" [ngClass]="{'is-bordered' : instance.component.bordered}">
30
+ <thead>
31
+ <tr class="mat-header-row">
32
+ <th *ngFor="let header of instance.component.header"
33
+ class="mat-header-cell"
34
+ >
35
+ {{ instance.t(header) }}
36
+ </th>
37
+ </tr>
38
+ </thead>
39
+
40
+ <tbody>
41
+ <tr *ngFor="let row of instance.table; let i = index"
42
+ role="row"
43
+ class="mat-row"
44
+ [ngClass]="{
45
+ 'is-hover': instance.component.hover,
46
+ 'is-striped': instance.component.striped && i % 2 === 0
47
+ }"
48
+ >
49
+ <td *ngFor="let col of row"
50
+ role="gridcell"
51
+ class="mat-cell"
52
+ [ngClass]="getTableColClasses()"
53
+ >
54
+ <ng-template #components></ng-template>
55
+ </td>
56
+ </tr>
57
+ </tbody>
58
+ </table>
59
+ `, isInline: true, styles: [".mat-table.is-bordered{border:1px solid #ddd}.mat-row.is-hover:hover{background-color:#f5f5f5}.mat-cell{padding:8px}.mat-cell.is-condensed{padding:3px}.mat-row.is-striped{background-color:#eee}.mat-cell.center{text-align:center}.mat-cell.right{text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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"] }] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTableComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'mat-formio-table', template: `
63
+ <table class="mat-table" style="width: 100%;" [ngClass]="{'is-bordered' : instance.component.bordered}">
64
+ <thead>
65
+ <tr class="mat-header-row">
66
+ <th *ngFor="let header of instance.component.header"
67
+ class="mat-header-cell"
68
+ >
69
+ {{ instance.t(header) }}
70
+ </th>
71
+ </tr>
72
+ </thead>
73
+
74
+ <tbody>
75
+ <tr *ngFor="let row of instance.table; let i = index"
76
+ role="row"
77
+ class="mat-row"
78
+ [ngClass]="{
79
+ 'is-hover': instance.component.hover,
80
+ 'is-striped': instance.component.striped && i % 2 === 0
81
+ }"
82
+ >
83
+ <td *ngFor="let col of row"
84
+ role="gridcell"
85
+ class="mat-cell"
86
+ [ngClass]="getTableColClasses()"
87
+ >
88
+ <ng-template #components></ng-template>
89
+ </td>
90
+ </tr>
91
+ </tbody>
92
+ </table>
93
+ `, styles: [".mat-table.is-bordered{border:1px solid #ddd}.mat-row.is-hover:hover{background-color:#f5f5f5}.mat-cell{padding:8px}.mat-cell.is-condensed{padding:3px}.mat-row.is-striped{background-color:#eee}.mat-cell.center{text-align:center}.mat-cell.right{text-align:right}\n"] }]
94
+ }] });
95
+ TableComponent.MaterialComponent = MaterialTableComponent;
96
+ export { TableComponent };
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxjQUFjLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFzQ2hFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx1QkFBdUI7SUFFakUsV0FBVyxDQUFDLFFBQWE7UUFDdkIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixRQUFRLENBQUMsYUFBYSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNyRyxJQUFJLENBQUM7UUFDVCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELE1BQU0sRUFBQyxTQUFTLEVBQUUsYUFBYSxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDM0QsT0FBTztZQUNMLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBQyxDQUFDO1NBQzlDLENBQUE7SUFDSCxDQUFDOzttSEFwQlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsK0VBakN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDsyRkFFVSxzQkFBc0I7a0JBcENsQyxTQUFTOytCQUNFLGtCQUFrQixZQUVsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDs7QUF3QkgsY0FBYyxDQUFDLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxOZXN0ZWRDb21wb25lbnQgfSBmcm9tICcuLi9NYXRlcmlhbE5lc3RlZENvbXBvbmVudCc7XG5pbXBvcnQgVGFibGVDb21wb25lbnQgZnJvbSAnZm9ybWlvanMvY29tcG9uZW50cy90YWJsZS9UYWJsZS5qcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tdGFibGUnLFxuICBzdHlsZVVybHM6IFsgJy4vdGFibGUuY29tcG9uZW50LmNzcycgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDx0YWJsZSBjbGFzcz1cIm1hdC10YWJsZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW25nQ2xhc3NdPVwieydpcy1ib3JkZXJlZCcgOiBpbnN0YW5jZS5jb21wb25lbnQuYm9yZGVyZWR9XCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyIGNsYXNzPVwibWF0LWhlYWRlci1yb3dcIj5cbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGhlYWRlciBvZiBpbnN0YW5jZS5jb21wb25lbnQuaGVhZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGluc3RhbmNlLnQoaGVhZGVyKSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBpbnN0YW5jZS50YWJsZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICByb2xlPVwicm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0LXJvd1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2lzLWhvdmVyJzogaW5zdGFuY2UuY29tcG9uZW50LmhvdmVyLFxuICAgICAgICAgICAgICAgICdpcy1zdHJpcGVkJzogaW5zdGFuY2UuY29tcG9uZW50LnN0cmlwZWQgJiYgaSAlIDIgPT09IDBcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiByb3dcIlxuICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1jZWxsXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0VGFibGVDb2xDbGFzc2VzKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50cz48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGFibGVDb21wb25lbnQgZXh0ZW5kcyBNYXRlcmlhbE5lc3RlZENvbXBvbmVudCB7XG5cbiAgc2V0SW5zdGFuY2UoaW5zdGFuY2U6IGFueSkge1xuICAgIHN1cGVyLnNldEluc3RhbmNlKGluc3RhbmNlKTtcbiAgICBpbnN0YW5jZS52aWV3Q29udGFpbmVyID0gKGNvbXBvbmVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmlld0NvbnRhaW5lcnMgP1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJzWyhjb21wb25lbnQudGFibGVSb3cgKiB0aGlzLmluc3RhbmNlLmNvbXBvbmVudC5udW1Db2xzKSArIGNvbXBvbmVudC50YWJsZUNvbHVtbl0gOlxuICAgICAgICBudWxsO1xuICAgIH07XG4gIH1cblxuICBnZXRUYWJsZUNvbENsYXNzZXMoKSB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHtjb25kZW5zZWQsIGNlbGxBbGlnbm1lbnR9ID0gdGhpcy5pbnN0YW5jZS5jb21wb25lbnQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICdpcy1jb25kZW5zZWQnOiBjb25kZW5zZWQsXG4gICAgICAuLi4oY2VsbEFsaWdubWVudCAmJiB7W2NlbGxBbGlnbm1lbnRdOiB0cnVlfSlcbiAgICB9XG4gIH1cbn1cblRhYmxlQ29tcG9uZW50Lk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxUYWJsZUNvbXBvbmVudDtcbmV4cG9ydCB7IFRhYmxlQ29tcG9uZW50IH07XG4iXX0=
@@ -0,0 +1,43 @@
1
+ import { Component } from '@angular/core';
2
+ import { MaterialNestedComponent } from '../MaterialNestedComponent';
3
+ import TabsComponent from 'formiojs/components/tabs/Tabs.js';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/material/tabs";
7
+ import * as i3 from "@angular/flex-layout/flex";
8
+ export class MaterialTabsComponent extends MaterialNestedComponent {
9
+ setInstance(instance) {
10
+ super.setInstance(instance);
11
+ instance.viewContainer = (component) => {
12
+ return this.viewContainers ? this.viewContainers[component.tab] : null;
13
+ };
14
+ }
15
+ }
16
+ MaterialTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
17
+ MaterialTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialTabsComponent, selector: "mat-formio-tabs", usesInheritance: true, ngImport: i0, template: `
18
+ <mat-tab-group>
19
+ <mat-tab *ngFor="let tab of instance.component.components" [label]="tab.label">
20
+ <div fxLayout="column" fxLayoutGap="1em" style="border: 1px dotted rgba(0, 0, 0, 0.125)">
21
+ <ng-template #components></ng-template>
22
+ </div>
23
+ </mat-tab>
24
+ </mat-tab-group>
25
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "directive", type: i3.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: i3.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"] }] });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTabsComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ selector: 'mat-formio-tabs',
30
+ template: `
31
+ <mat-tab-group>
32
+ <mat-tab *ngFor="let tab of instance.component.components" [label]="tab.label">
33
+ <div fxLayout="column" fxLayoutGap="1em" style="border: 1px dotted rgba(0, 0, 0, 0.125)">
34
+ <ng-template #components></ng-template>
35
+ </div>
36
+ </mat-tab>
37
+ </mat-tab-group>
38
+ `
39
+ }]
40
+ }] });
41
+ TabsComponent.MaterialComponent = MaterialTabsComponent;
42
+ export { TabsComponent };
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxhQUFhLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBYzdELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx1QkFBdUI7SUFDaEUsV0FBVyxDQUFDLFFBQWE7UUFDdkIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixRQUFRLENBQUMsYUFBYSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pFLENBQUMsQ0FBQztJQUNKLENBQUM7O2tIQU5VLHFCQUFxQjtzR0FBckIscUJBQXFCLDhFQVZ0Qjs7Ozs7Ozs7R0FRVDsyRkFFVSxxQkFBcUI7a0JBWmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7OztHQVFUO2lCQUNGOztBQVNELGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdGVyaWFsTmVzdGVkQ29tcG9uZW50IH0gZnJvbSAnLi4vTWF0ZXJpYWxOZXN0ZWRDb21wb25lbnQnO1xuaW1wb3J0IFRhYnNDb21wb25lbnQgZnJvbSAnZm9ybWlvanMvY29tcG9uZW50cy90YWJzL1RhYnMuanMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybWlvLXRhYnMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtdGFiLWdyb3VwPlxuICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBpbnN0YW5jZS5jb21wb25lbnQuY29tcG9uZW50c1wiIFtsYWJlbF09XCJ0YWIubGFiZWxcIj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMWVtXCIgc3R5bGU9XCJib3JkZXI6IDFweCBkb3R0ZWQgcmdiYSgwLCAwLCAwLCAwLjEyNSlcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudHM+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGFic0NvbXBvbmVudCBleHRlbmRzIE1hdGVyaWFsTmVzdGVkQ29tcG9uZW50IHtcbiAgc2V0SW5zdGFuY2UoaW5zdGFuY2U6IGFueSkge1xuICAgIHN1cGVyLnNldEluc3RhbmNlKGluc3RhbmNlKTtcbiAgICBpbnN0YW5jZS52aWV3Q29udGFpbmVyID0gKGNvbXBvbmVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmlld0NvbnRhaW5lcnMgPyB0aGlzLnZpZXdDb250YWluZXJzW2NvbXBvbmVudC50YWJdIDogbnVsbDtcbiAgICB9O1xuICB9XG59XG5UYWJzQ29tcG9uZW50Lk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxUYWJzQ29tcG9uZW50O1xuZXhwb3J0IHsgVGFic0NvbXBvbmVudCB9O1xuIl19
@@ -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.2", ngImport: i0, type: MaterialTagsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
51
+ MaterialTagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", 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.2", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy90YWdzL3RhZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7OztBQW1DekQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQWhDNUQ7O1FBaUNXLHVCQUFrQixHQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELFNBQUksR0FBYSxFQUFFLENBQUM7S0FpQ3JCO0lBaENDLEdBQUcsQ0FBQyxLQUF3QjtRQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlHLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDOUM7UUFDRCxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbEMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakI7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDOztrSEFsQ1UscUJBQXFCO3NHQUFyQixxQkFBcUIsOEVBOUJ0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDsyRkFFVSxxQkFBcUI7a0JBaENqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCVDtpQkFDRjs7QUFxQ0EsYUFBcUIsQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgVGFnc0NvbXBvbmVudCBmcm9tICdmb3JtaW9qcy9jb21wb25lbnRzL3RhZ3MvVGFncy5qcyc7XG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4uL01hdGVyaWFsQ29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybWlvLXRhZ3MnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtZm9ybWlvLWZvcm0tZmllbGQgW2luc3RhbmNlXT1cImluc3RhbmNlXCIgW2NvbXBvbmVudFRlbXBsYXRlXT1cImNvbXBvbmVudFRlbXBsYXRlXCI+PC9tYXQtZm9ybWlvLWZvcm0tZmllbGQ+XG4gICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRUZW1wbGF0ZSBsZXQtaGFzTGFiZWw+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWNoaXAtbGlzdFwiIGZ4RmlsbD5cblxuICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwiaGFzTGFiZWxcIj5cbiAgICAgICAgICA8c3BhbiBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIiBtYXRGb3JtaW9MYWJlbD48L3NwYW4+XG4gICAgICAgIDwvbWF0LWxhYmVsPlxuXG4gICAgICAgIDxtYXQtY2hpcC1saXN0ICNjaGlwTGlzdCBbYXR0ci5hcmlhLWxhYmVsXT1cImluc3RhbmNlLmNvbXBvbmVudC5sYWJlbFwiPlxuICAgICAgICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3M7IGluZGV4IGFzIGk7XCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZShpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3t0YWd9fVxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L21hdC1jaGlwPlxuXG4gICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiXG4gICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIlxuICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGFnc0NvbXBvbmVudCBleHRlbmRzIE1hdGVyaWFsQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xuICB0YWdzOiBzdHJpbmdbXSA9IFtdO1xuICBhZGQoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC5pbnB1dDtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgIGlmICgodmFsdWUgfHwgJycpLnRyaW0oKSkge1xuICAgICAgdGhpcy50YWdzLnB1c2godmFsdWUudHJpbSgpKTtcbiAgICB9XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKCk7XG4gIH1cblxuICByZW1vdmUoaW5kZXgpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMudGFncy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudGFncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpIHtcbiAgICByZXR1cm4gKHRoaXMuaW5zdGFuY2UuY29tcG9uZW50LnN0b3JlYXMgPT09ICdzdHJpbmcnKSA/IHRoaXMudGFncy5qb2luKHRoaXMuaW5zdGFuY2UuZGVsaW1pdGVyKSA6IHRoaXMudGFncztcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQodGhpcy5pbnN0YW5jZS5kZWxpbWl0ZXIpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gICAgfVxuICAgIHRoaXMudGFncyA9IHZhbHVlO1xuICB9XG59XG4oVGFnc0NvbXBvbmVudCBhcyBhbnkpLk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxUYWdzQ29tcG9uZW50O1xuZXhwb3J0IHsgVGFnc0NvbXBvbmVudCB9O1xuIl19
@@ -0,0 +1,82 @@
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
+ // Attach the element so the wysiwyg will work.
17
+ this.instance.attachElement(this.textarea.nativeElement);
18
+ }
19
+ getValue() {
20
+ return isNil(this.control.value) ? '' : this.control.value;
21
+ }
22
+ }
23
+ MaterialTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
24
+ MaterialTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MaterialTextareaComponent, selector: "mat-formio-textarea", viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
25
+ <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
26
+ <ng-template #componentTemplate let-hasLabel>
27
+ <mat-form-field class="mat-formio-textarea"
28
+ [ngClass]="{'editor-enabled': !!instance.component.editor}"
29
+ fxFill
30
+ fxFlexAlign="center"
31
+ >
32
+ <mat-label fxFill *ngIf="hasLabel">
33
+ <span [instance]="instance" matFormioLabel></span>
34
+ </mat-label>
35
+ <span *ngIf="instance.component.prefix" matPrefix>{{ instance.component.prefix }}&nbsp;</span>
36
+ <textarea matInput
37
+ [placeholder]="instance.component.placeholder"
38
+ [formControl]="control"
39
+ [rows]="(instance.component.rows || 3)"
40
+ (input)="onChange()"
41
+ #textarea
42
+ >
43
+ </textarea>
44
+ <span *ngIf="instance.component.suffix" matSuffix>{{ instance.component.suffix }}</span>
45
+ <mat-error *ngIf="instance.error">{{ instance.error.message }}</mat-error>
46
+ </mat-form-field>
47
+ </ng-template>
48
+ `, 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"] }] });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTextareaComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'mat-formio-textarea', 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="mat-formio-textarea"
55
+ [ngClass]="{'editor-enabled': !!instance.component.editor}"
56
+ fxFill
57
+ fxFlexAlign="center"
58
+ >
59
+ <mat-label fxFill *ngIf="hasLabel">
60
+ <span [instance]="instance" matFormioLabel></span>
61
+ </mat-label>
62
+ <span *ngIf="instance.component.prefix" matPrefix>{{ instance.component.prefix }}&nbsp;</span>
63
+ <textarea matInput
64
+ [placeholder]="instance.component.placeholder"
65
+ [formControl]="control"
66
+ [rows]="(instance.component.rows || 3)"
67
+ (input)="onChange()"
68
+ #textarea
69
+ >
70
+ </textarea>
71
+ <span *ngIf="instance.component.suffix" matSuffix>{{ instance.component.suffix }}</span>
72
+ <mat-error *ngIf="instance.error">{{ instance.error.message }}</mat-error>
73
+ </mat-form-field>
74
+ </ng-template>
75
+ `, styles: [".mat-input-element{min-height:16px}\n"] }]
76
+ }], propDecorators: { textarea: [{
77
+ type: ViewChild,
78
+ args: ['textarea']
79
+ }] } });
80
+ TextAreaComponent.MaterialComponent = MaterialTextareaComponent;
81
+ export { TextAreaComponent };
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlbmRlci1tYXRlcmlhbC1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLGlCQUFpQixNQUFNLDBDQUEwQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQStCakMsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGlCQUFpQjtJQUc5RCxlQUFlO1FBQ2IsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzdELENBQUM7O3NIQVZVLHlCQUF5QjswR0FBekIseUJBQXlCLHdMQTFCMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDsyRkFFVSx5QkFBeUI7a0JBN0JyQyxTQUFTOytCQUNFLHFCQUFxQixZQUVyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUOzhCQUdzQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7O0FBV3ZCLGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdGVyaWFsQ29tcG9uZW50IH0gZnJvbSAnLi4vTWF0ZXJpYWxDb21wb25lbnQnO1xuaW1wb3J0IFRleHRBcmVhQ29tcG9uZW50IGZyb20gJ2Zvcm1pb2pzL2NvbXBvbmVudHMvdGV4dGFyZWEvVGV4dEFyZWEuanMnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tdGV4dGFyZWEnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS5jb21wb25lbnQuY3NzJ10sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1mb3JtaW8tZm9ybS1maWVsZCBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIiBbY29tcG9uZW50VGVtcGxhdGVdPVwiY29tcG9uZW50VGVtcGxhdGVcIj48L21hdC1mb3JtaW8tZm9ybS1maWVsZD5cbiAgICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudFRlbXBsYXRlIGxldC1oYXNMYWJlbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mb3JtaW8tdGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZWRpdG9yLWVuYWJsZWQnOiAhIWluc3RhbmNlLmNvbXBvbmVudC5lZGl0b3J9XCJcbiAgICAgICAgICAgICAgICAgICAgICBmeEZpbGxcbiAgICAgICAgICAgICAgICAgICAgICBmeEZsZXhBbGlnbj1cImNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtbGFiZWwgZnhGaWxsICpuZ0lmPVwiaGFzTGFiZWxcIj5cbiAgICAgICAgICA8c3BhbiBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIiBtYXRGb3JtaW9MYWJlbD48L3NwYW4+XG4gICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImluc3RhbmNlLmNvbXBvbmVudC5wcmVmaXhcIiBtYXRQcmVmaXg+e3sgaW5zdGFuY2UuY29tcG9uZW50LnByZWZpeCB9fSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaW5zdGFuY2UuY29tcG9uZW50LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIihpbnN0YW5jZS5jb21wb25lbnQucm93cyB8fCAzKVwiXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgI3RleHRhcmVhXG4gICAgICAgID5cbiAgICAgICAgPC90ZXh0YXJlYT5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbnN0YW5jZS5jb21wb25lbnQuc3VmZml4XCIgbWF0U3VmZml4Pnt7IGluc3RhbmNlLmNvbXBvbmVudC5zdWZmaXggfX08L3NwYW4+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpbnN0YW5jZS5lcnJvclwiPnt7IGluc3RhbmNlLmVycm9yLm1lc3NhZ2UgfX08L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRleHRhcmVhQ29tcG9uZW50IGV4dGVuZHMgTWF0ZXJpYWxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgndGV4dGFyZWEnKSB0ZXh0YXJlYTogRWxlbWVudFJlZjtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gQXR0YWNoIHRoZSBlbGVtZW50IHNvIHRoZSB3eXNpd3lnIHdpbGwgd29yay5cbiAgICB0aGlzLmluc3RhbmNlLmF0dGFjaEVsZW1lbnQodGhpcy50ZXh0YXJlYS5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIHJldHVybiBpc05pbCh0aGlzLmNvbnRyb2wudmFsdWUpID8gJycgOiB0aGlzLmNvbnRyb2wudmFsdWU7XG4gIH1cbn1cblRleHRBcmVhQ29tcG9uZW50Lk1hdGVyaWFsQ29tcG9uZW50ID0gTWF0ZXJpYWxUZXh0YXJlYUNvbXBvbmVudDtcbmV4cG9ydCB7IFRleHRBcmVhQ29tcG9uZW50IH07XG4iXX0=
@@ -0,0 +1,108 @@
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 "../formio-form-field/formio-form-field.component";
11
+ import * as i7 from "../label/label.component";
12
+ export const TEXTFIELD_TEMPLATE = `
13
+ <mat-formio-form-field [instance]="instance" [componentTemplate]="componentTemplate"></mat-formio-form-field>
14
+ <ng-template #componentTemplate let-hasLabel>
15
+ <mat-form-field [appearance]="getFormFieldAppearance()" fxFill>
16
+
17
+ <mat-label *ngIf="hasLabel">
18
+ <span [instance]="instance" matFormioLabel></span>
19
+ </mat-label>
20
+
21
+ <span *ngIf="instance.component.prefix && instance.type !== 'currency'"
22
+ matPrefix
23
+ >
24
+ {{ instance.component.prefix }}&nbsp;
25
+ </span>
26
+ <input matInput
27
+ type="{{ inputType }}"
28
+ [formControl]="control"
29
+ [placeholder]="instance.component.placeholder"
30
+ (input)="onChange()" #input
31
+ >
32
+ <span *ngIf="instance.component.suffix" matSuffix>{{ instance.component.suffix }}</span>
33
+
34
+ <mat-hint *ngIf="instance.component.showWordCount || instance.component.showCharCount">
35
+ {{ getHint() }}
36
+ </mat-hint>
37
+
38
+ <br/>
39
+ <mat-error *ngIf="isError()" >{{ getErrorMessage() }}</mat-error>
40
+ </mat-form-field>
41
+ </ng-template>
42
+ `;
43
+ export class MaterialTextfieldComponent extends MaterialComponent {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.inputType = 'text';
47
+ }
48
+ ngAfterContentInit() {
49
+ if (this.instance && this.control && this.instance.component.disabled) {
50
+ this.control.disable();
51
+ }
52
+ }
53
+ getHint() {
54
+ if (!this.instance || !this.control || !this.control.value) {
55
+ return '';
56
+ }
57
+ const { showWordCount, showCharCount } = this.instance.component;
58
+ if (showWordCount && showCharCount) {
59
+ return `${this.getWordsCount()} words, ${this.control.value.length} characters`;
60
+ }
61
+ else if (showWordCount) {
62
+ return `${this.getWordsCount()} words`;
63
+ }
64
+ else {
65
+ return `${this.control.value.length} characters`;
66
+ }
67
+ }
68
+ getWordsCount() {
69
+ const matches = this.control.value ? this.control.value.match(/[\w\d’'-]+/gi) : [];
70
+ return matches ? matches.length : 0;
71
+ }
72
+ getFormFieldAppearance() {
73
+ const appearances = ['legacy', 'standard', 'fill', 'outline'];
74
+ const appearance = this.instance.component.appearance ? this.instance.component.appearance.toLowerCase() : '';
75
+ return appearances.includes(appearance) ? appearance : undefined;
76
+ }
77
+ isError() {
78
+ if (this.instance.error) {
79
+ this.control.setErrors(this.instance.component.validate);
80
+ return true;
81
+ }
82
+ else {
83
+ return false;
84
+ }
85
+ }
86
+ getErrorMessage() {
87
+ if (this.instance.error && this.instance.error.messages) {
88
+ const { messages } = this.instance.error;
89
+ for (const msg of messages) {
90
+ if (msg.context && this.control.hasError(msg.context.validator)) {
91
+ return this.instance.error.message;
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ MaterialTextfieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTextfieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
98
+ MaterialTextfieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", 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 >\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"] }] });
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MaterialTextfieldComponent, decorators: [{
100
+ type: Component,
101
+ args: [{
102
+ selector: 'mat-formio-textfield',
103
+ template: TEXTFIELD_TEMPLATE
104
+ }]
105
+ }] });
106
+ TextFieldComponent.MaterialComponent = MaterialTextfieldComponent;
107
+ export { TextFieldComponent };
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZW5kZXItbWF0ZXJpYWwtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL3RleHRmaWVsZC90ZXh0ZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sa0JBQWtCLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7OztBQUV6RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBOEJqQyxDQUFDO0FBTUYsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGlCQUFpQjtJQUpqRTs7UUFLUyxjQUFTLEdBQUcsTUFBTSxDQUFDO0tBd0QzQjtJQXREQyxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzFELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLEVBQUMsYUFBYSxFQUFFLGFBQWEsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBRS9ELElBQUksYUFBYSxJQUFJLGFBQWEsRUFBRTtZQUNsQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sYUFBYSxDQUFDO1NBQ2pGO2FBQU0sSUFBSSxhQUFhLEVBQUU7WUFDeEIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDO1NBQ3hDO2FBQU07WUFDTCxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlHLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkUsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFDSTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3ZELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUV6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQy9ELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2lCQUNwQzthQUNGO1NBQ0Y7SUFDSCxDQUFDOzt1SEF4RFUsMEJBQTBCOzJHQUExQiwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjs7QUEyREQsa0JBQWtCLENBQUMsaUJBQWlCLEdBQUcsMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFRleHRGaWVsZENvbXBvbmVudCBmcm9tICdmb3JtaW9qcy9jb21wb25lbnRzL3RleHRmaWVsZC9UZXh0RmllbGQuanMnO1xuaW1wb3J0IHsgTWF0ZXJpYWxDb21wb25lbnQgfSBmcm9tICcuLi9NYXRlcmlhbENvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBURVhURklFTERfVEVNUExBVEUgPSBgXG4gIDxtYXQtZm9ybWlvLWZvcm0tZmllbGQgW2luc3RhbmNlXT1cImluc3RhbmNlXCIgW2NvbXBvbmVudFRlbXBsYXRlXT1cImNvbXBvbmVudFRlbXBsYXRlXCI+PC9tYXQtZm9ybWlvLWZvcm0tZmllbGQ+XG4gIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50VGVtcGxhdGUgbGV0LWhhc0xhYmVsPlxuICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJnZXRGb3JtRmllbGRBcHBlYXJhbmNlKClcIiBmeEZpbGw+XG5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJoYXNMYWJlbFwiPlxuICAgICAgICAgIDxzcGFuIFtpbnN0YW5jZV09XCJpbnN0YW5jZVwiIG1hdEZvcm1pb0xhYmVsPjwvc3Bhbj5cbiAgICAgIDwvbWF0LWxhYmVsPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImluc3RhbmNlLmNvbXBvbmVudC5wcmVmaXggJiYgaW5zdGFuY2UudHlwZSAhPT0gJ2N1cnJlbmN5J1wiXG4gICAgICAgICAgICBtYXRQcmVmaXhcbiAgICAgID5cbiAgICAgICAge3sgaW5zdGFuY2UuY29tcG9uZW50LnByZWZpeCB9fSZuYnNwO1xuICAgICAgPC9zcGFuPlxuICAgICAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICAgICB0eXBlPVwie3sgaW5wdXRUeXBlIH19XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpbnN0YW5jZS5jb21wb25lbnQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlKClcIiAjaW5wdXRcbiAgICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaW5zdGFuY2UuY29tcG9uZW50LnN1ZmZpeFwiIG1hdFN1ZmZpeD57eyBpbnN0YW5jZS5jb21wb25lbnQuc3VmZml4IH19PC9zcGFuPlxuXG4gICAgICA8bWF0LWhpbnQgKm5nSWY9XCJpbnN0YW5jZS5jb21wb25lbnQuc2hvd1dvcmRDb3VudCB8fCBpbnN0YW5jZS5jb21wb25lbnQuc2hvd0NoYXJDb3VudFwiPlxuICAgICAgICB7eyBnZXRIaW50KCkgfX1cbiAgICAgIDwvbWF0LWhpbnQ+XG5cbiAgICAgIDxici8+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNFcnJvcigpXCIgPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9uZy10ZW1wbGF0ZT5cbmA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb3JtaW8tdGV4dGZpZWxkJyxcbiAgdGVtcGxhdGU6IFRFWFRGSUVMRF9URU1QTEFURVxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRleHRmaWVsZENvbXBvbmVudCBleHRlbmRzIE1hdGVyaWFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHB1YmxpYyBpbnB1dFR5cGUgPSAndGV4dCc7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLmluc3RhbmNlICYmIHRoaXMuY29udHJvbCAmJiB0aGlzLmluc3RhbmNlLmNvbXBvbmVudC5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRIaW50KCkge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSB8fCAhdGhpcy5jb250cm9sIHx8ICF0aGlzLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB7c2hvd1dvcmRDb3VudCwgc2hvd0NoYXJDb3VudH0gPSB0aGlzLmluc3RhbmNlLmNvbXBvbmVudDtcblxuICAgIGlmIChzaG93V29yZENvdW50ICYmIHNob3dDaGFyQ291bnQpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmdldFdvcmRzQ291bnQoKX0gd29yZHMsICR7dGhpcy5jb250cm9sLnZhbHVlLmxlbmd0aH0gY2hhcmFjdGVyc2A7XG4gICAgfSBlbHNlIGlmIChzaG93V29yZENvdW50KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5nZXRXb3Jkc0NvdW50KCl9IHdvcmRzYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke3RoaXMuY29udHJvbC52YWx1ZS5sZW5ndGh9IGNoYXJhY3RlcnNgO1xuICAgIH1cbiAgfVxuXG4gIGdldFdvcmRzQ291bnQoKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuY29udHJvbC52YWx1ZSA/IHRoaXMuY29udHJvbC52YWx1ZS5tYXRjaCgvW1xcd1xcZOKAmSctXSsvZ2kpIDogW107XG4gICAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzLmxlbmd0aCA6IDA7XG4gIH1cblxuICBnZXRGb3JtRmllbGRBcHBlYXJhbmNlKCkge1xuICAgIGNvbnN0IGFwcGVhcmFuY2VzID0gWydsZWdhY3knLCAnc3RhbmRhcmQnLCAnZmlsbCcsICdvdXRsaW5lJ107XG4gICAgY29uc3QgYXBwZWFyYW5jZSA9IHRoaXMuaW5zdGFuY2UuY29tcG9uZW50LmFwcGVhcmFuY2UgPyB0aGlzLmluc3RhbmNlLmNvbXBvbmVudC5hcHBlYXJhbmNlLnRvTG93ZXJDYXNlKCkgOiAnJztcbiAgICByZXR1cm4gYXBwZWFyYW5jZXMuaW5jbHVkZXMoYXBwZWFyYW5jZSkgPyBhcHBlYXJhbmNlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNFcnJvcigpIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZS5lcnJvcikge1xuICAgICAgdGhpcy5jb250cm9sLnNldEVycm9ycyh0aGlzLmluc3RhbmNlLmNvbXBvbmVudC52YWxpZGF0ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLmluc3RhbmNlLmVycm9yICYmIHRoaXMuaW5zdGFuY2UuZXJyb3IubWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZXMgfSA9IHRoaXMuaW5zdGFuY2UuZXJyb3I7XG5cbiAgICAgIGZvciAoY29uc3QgbXNnIG9mIG1lc3NhZ2VzKSB7XG4gICAgICAgIGlmIChtc2cuY29udGV4dCAmJiB0aGlzLmNvbnRyb2wuaGFzRXJyb3IobXNnLmNvbnRleHQudmFsaWRhdG9yKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlLmVycm9yLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblRleHRGaWVsZENvbXBvbmVudC5NYXRlcmlhbENvbXBvbmVudCA9IE1hdGVyaWFsVGV4dGZpZWxkQ29tcG9uZW50O1xuZXhwb3J0IHsgVGV4dEZpZWxkQ29tcG9uZW50IH07XG4iXX0=