@ng-formworks/material 17.2.7 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/assets/material-design-themes.scss +34 -16
  3. package/esm2022/lib/material-design-cssframework.mjs +23 -0
  4. package/esm2022/lib/material-design-framework.component.mjs +119 -0
  5. package/esm2022/lib/material-design-framework.module.mjs +117 -0
  6. package/esm2022/lib/material-design.framework.mjs +61 -0
  7. package/esm2022/lib/widgets/flex-layout-root.component.mjs +75 -0
  8. package/esm2022/lib/widgets/flex-layout-section.component.mjs +347 -0
  9. package/esm2022/lib/widgets/material-add-reference.component.mjs +66 -0
  10. package/esm2022/lib/widgets/material-button-group.component.mjs +90 -0
  11. package/esm2022/lib/widgets/material-button.component.mjs +80 -0
  12. package/esm2022/lib/widgets/material-checkbox.component.mjs +166 -0
  13. package/esm2022/lib/widgets/material-checkboxes.component.mjs +129 -0
  14. package/esm2022/lib/widgets/material-chip-list.component.mjs +35 -0
  15. package/esm2022/lib/widgets/material-datepicker.component.mjs +141 -0
  16. package/esm2022/lib/widgets/material-file.component.mjs +35 -0
  17. package/esm2022/lib/widgets/material-input.component.mjs +149 -0
  18. package/esm2022/lib/widgets/material-number.component.mjs +145 -0
  19. package/esm2022/lib/widgets/material-one-of.component.mjs +35 -0
  20. package/esm2022/lib/widgets/material-radios.component.mjs +122 -0
  21. package/esm2022/lib/widgets/material-select.component.mjs +186 -0
  22. package/esm2022/lib/widgets/material-slider.component.mjs +91 -0
  23. package/esm2022/lib/widgets/material-stepper.component.mjs +35 -0
  24. package/esm2022/lib/widgets/material-tabs.component.mjs +92 -0
  25. package/esm2022/lib/widgets/material-textarea.component.mjs +134 -0
  26. package/esm2022/lib/widgets/public_api.mjs +52 -0
  27. package/esm2022/ng-formworks-material.mjs +5 -0
  28. package/esm2022/public_api.mjs +8 -0
  29. package/fesm2022/ng-formworks-material.mjs +2357 -0
  30. package/fesm2022/ng-formworks-material.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/material-design-cssframework.d.ts +1 -0
  33. package/lib/material-design-framework.component.d.ts +35 -0
  34. package/lib/material-design-framework.module.d.ts +61 -0
  35. package/lib/material-design.framework.d.ts +46 -0
  36. package/lib/widgets/flex-layout-root.component.d.ts +15 -0
  37. package/lib/widgets/flex-layout-section.component.d.ts +25 -0
  38. package/lib/widgets/material-add-reference.component.d.ts +20 -0
  39. package/lib/widgets/material-button-group.component.d.ts +23 -0
  40. package/lib/widgets/material-button.component.d.ts +24 -0
  41. package/lib/widgets/material-checkbox.component.d.ts +25 -0
  42. package/lib/widgets/material-checkboxes.component.d.ts +27 -0
  43. package/lib/widgets/material-chip-list.component.d.ts +21 -0
  44. package/lib/widgets/material-datepicker.component.d.ts +22 -0
  45. package/lib/widgets/material-file.component.d.ts +21 -0
  46. package/lib/widgets/material-input.component.d.ts +23 -0
  47. package/lib/widgets/material-number.component.d.ts +26 -0
  48. package/lib/widgets/material-one-of.component.d.ts +21 -0
  49. package/lib/widgets/material-radios.component.d.ts +23 -0
  50. package/lib/widgets/material-select.component.d.ts +24 -0
  51. package/lib/widgets/material-slider.component.d.ts +25 -0
  52. package/lib/widgets/material-stepper.component.d.ts +21 -0
  53. package/lib/widgets/material-tabs.component.d.ts +20 -0
  54. package/lib/widgets/material-textarea.component.d.ts +22 -0
  55. package/{src/lib/widgets/public_api.ts → lib/widgets/public_api.d.ts} +41 -54
  56. package/package.json +64 -48
  57. package/{src/public_api.ts → public_api.d.ts} +4 -9
  58. package/karma.conf.js +0 -46
  59. package/ng-package.json +0 -13
  60. package/src/lib/flexlayout-replacement-styles.scss +0 -95
  61. package/src/lib/material-design-cssframework.ts +0 -20
  62. package/src/lib/material-design-framework.component.html +0 -13
  63. package/src/lib/material-design-framework.component.scss +0 -58
  64. package/src/lib/material-design-framework.component.spec.ts +0 -39
  65. package/src/lib/material-design-framework.component.ts +0 -143
  66. package/src/lib/material-design-framework.module.ts +0 -81
  67. package/src/lib/material-design-themes.scss +0 -71
  68. package/src/lib/material-design.framework.ts +0 -83
  69. package/src/lib/tailwind-output.scss +0 -622
  70. package/src/lib/widgets/flex-layout-root.component.html +0 -4
  71. package/src/lib/widgets/flex-layout-root.component.ts +0 -52
  72. package/src/lib/widgets/flex-layout-section.component.ts +0 -216
  73. package/src/lib/widgets/material-add-reference.component.ts +0 -56
  74. package/src/lib/widgets/material-button-group.component.ts +0 -68
  75. package/src/lib/widgets/material-button.component.ts +0 -66
  76. package/src/lib/widgets/material-checkbox.component.ts +0 -112
  77. package/src/lib/widgets/material-checkboxes.component.ts +0 -108
  78. package/src/lib/widgets/material-chip-list.component.ts +0 -35
  79. package/src/lib/widgets/material-datepicker.component.ts +0 -89
  80. package/src/lib/widgets/material-file.component.ts +0 -35
  81. package/src/lib/widgets/material-input.component.ts +0 -97
  82. package/src/lib/widgets/material-number.component.ts +0 -95
  83. package/src/lib/widgets/material-one-of.component.ts +0 -35
  84. package/src/lib/widgets/material-radios.component.ts +0 -91
  85. package/src/lib/widgets/material-select.component.ts +0 -118
  86. package/src/lib/widgets/material-slider.component.ts +0 -65
  87. package/src/lib/widgets/material-stepper.component.ts +0 -35
  88. package/src/lib/widgets/material-tabs.component.ts +0 -72
  89. package/src/lib/widgets/material-textarea.component.ts +0 -88
  90. package/src/test.ts +0 -17
  91. package/tailwind-input.css +0 -3
  92. package/tailwind.config.js +0 -12
  93. package/tsconfig.lib.json +0 -25
  94. package/tsconfig.lib.prod.json +0 -9
  95. package/tsconfig.spec.json +0 -17
  96. package/tslint.json +0 -11
@@ -0,0 +1,347 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ng-formworks/core";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/material/card";
6
+ import * as i4 from "@angular/material/expansion";
7
+ import * as i5 from "@angular/material/form-field";
8
+ import * as i6 from "./flex-layout-root.component";
9
+ export class FlexLayoutSectionComponent {
10
+ constructor(jsf) {
11
+ this.jsf = jsf;
12
+ this.controlDisabled = false;
13
+ this.boundControl = false;
14
+ this.expanded = true;
15
+ this.containerType = 'div';
16
+ }
17
+ get sectionTitle() {
18
+ return this.options.notitle ? null : this.jsf.setItemTitle(this);
19
+ }
20
+ ngOnInit() {
21
+ this.jsf.initializeControl(this);
22
+ this.options = this.layoutNode.options || {};
23
+ this.expanded = typeof this.options.expanded === 'boolean' ?
24
+ this.options.expanded : !this.options.expandable;
25
+ switch (this.layoutNode.type) {
26
+ case 'section':
27
+ case 'array':
28
+ case 'fieldset':
29
+ case 'advancedfieldset':
30
+ case 'authfieldset':
31
+ case 'optionfieldset':
32
+ case 'selectfieldset':
33
+ this.containerType = 'fieldset';
34
+ break;
35
+ case 'card':
36
+ this.containerType = 'card';
37
+ break;
38
+ case 'expansion-panel':
39
+ this.containerType = 'expansion-panel';
40
+ break;
41
+ default: // 'div', 'flex', 'tab', 'conditional', 'actions'
42
+ this.containerType = 'div';
43
+ }
44
+ }
45
+ toggleExpanded() {
46
+ if (this.options.expandable) {
47
+ this.expanded = !this.expanded;
48
+ }
49
+ }
50
+ // Set attributes for flexbox container
51
+ // (child attributes are set in flex-layout-root.component)
52
+ getFlexAttribute(attribute) {
53
+ const flexActive = this.layoutNode.type === 'flex' ||
54
+ !!this.options.displayFlex ||
55
+ this.options.display === 'flex';
56
+ // if (attribute !== 'flex' && !flexActive) { return null; }
57
+ switch (attribute) {
58
+ case 'is-flex':
59
+ return flexActive;
60
+ case 'display':
61
+ return flexActive ? 'flex' : 'initial';
62
+ case 'flex-direction':
63
+ case 'flex-wrap':
64
+ const index = ['flex-direction', 'flex-wrap'].indexOf(attribute);
65
+ return (this.options['flex-flow'] || '').split(/\s+/)[index] ||
66
+ this.options[attribute] || ['column', 'nowrap'][index];
67
+ case 'justify-content':
68
+ case 'align-items':
69
+ case 'align-content':
70
+ return this.options[attribute];
71
+ case 'layout':
72
+ return (this.options.fxLayout || 'row') +
73
+ this.options.fxLayoutWrap ? ' ' + this.options.fxLayoutWrap : '';
74
+ }
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FlexLayoutSectionComponent, deps: [{ token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FlexLayoutSectionComponent, selector: "flex-layout-section-widget", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `
78
+ <div *ngIf="containerType === 'div'"
79
+ [class]="options?.htmlClass || ''"
80
+ [class.expandable]="options?.expandable && !expanded"
81
+ [class.expanded]="options?.expandable && expanded">
82
+ <label *ngIf="sectionTitle"
83
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
84
+ [innerHTML]="sectionTitle"
85
+ (click)="toggleExpanded()"></label>
86
+ <flex-layout-root-widget *ngIf="expanded"
87
+ [layout]="layoutNode.items"
88
+ [dataIndex]="dataIndex"
89
+ [layoutIndex]="layoutIndex"
90
+ [isFlexItem]="getFlexAttribute('is-flex')"
91
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
92
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
93
+ [style.display]="getFlexAttribute('display')"
94
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
95
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
96
+ [style.justify-content]="getFlexAttribute('justify-content')"
97
+ [style.align-items]="getFlexAttribute('align-items')"
98
+ [style.align-content]="getFlexAttribute('align-content')"
99
+ [attr.fxLayout]="getFlexAttribute('layout')"
100
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
101
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
102
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
103
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
104
+ [innerHTML]="options?.errorMessage"></mat-error>
105
+ </div>
106
+
107
+ <fieldset *ngIf="containerType === 'fieldset'"
108
+ [class]="options?.htmlClass || ''"
109
+ [class.expandable]="options?.expandable && !expanded"
110
+ [class.expanded]="options?.expandable && expanded"
111
+ [disabled]="options?.readonly">
112
+ <legend *ngIf="sectionTitle"
113
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
114
+ [innerHTML]="sectionTitle"
115
+ (click)="toggleExpanded()"></legend>
116
+ <flex-layout-root-widget *ngIf="expanded"
117
+ [layout]="layoutNode.items"
118
+ [dataIndex]="dataIndex"
119
+ [layoutIndex]="layoutIndex"
120
+ [isFlexItem]="getFlexAttribute('is-flex')"
121
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
122
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
123
+ [style.display]="getFlexAttribute('display')"
124
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
125
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
126
+ [style.justify-content]="getFlexAttribute('justify-content')"
127
+ [style.align-items]="getFlexAttribute('align-items')"
128
+ [style.align-content]="getFlexAttribute('align-content')"
129
+ [attr.fxLayout]="getFlexAttribute('layout')"
130
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
131
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
132
+ [attr.attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
133
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
134
+ [innerHTML]="options?.errorMessage"></mat-error>
135
+ </fieldset>
136
+
137
+ <mat-card appearance="outlined" *ngIf="containerType === 'card'"
138
+ [ngClass]="options?.htmlClass || ''"
139
+ [class.expandable]="options?.expandable && !expanded"
140
+ [class.expanded]="options?.expandable && expanded">
141
+ <mat-card-header *ngIf="sectionTitle">
142
+ <legend
143
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
144
+ [innerHTML]="sectionTitle"
145
+ (click)="toggleExpanded()"></legend>
146
+ </mat-card-header>
147
+ <mat-card-content *ngIf="expanded">
148
+ <fieldset [disabled]="options?.readonly">
149
+ <flex-layout-root-widget *ngIf="expanded"
150
+ [layout]="layoutNode.items"
151
+ [dataIndex]="dataIndex"
152
+ [layoutIndex]="layoutIndex"
153
+ [isFlexItem]="getFlexAttribute('is-flex')"
154
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
155
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
156
+ [style.display]="getFlexAttribute('display')"
157
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
158
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
159
+ [style.justify-content]="getFlexAttribute('justify-content')"
160
+ [style.align-items]="getFlexAttribute('align-items')"
161
+ [style.align-content]="getFlexAttribute('align-content')"
162
+ [attr.fxLayout]="getFlexAttribute('layout')"
163
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
164
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
165
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
166
+ </fieldset>
167
+ </mat-card-content>
168
+ <mat-card-footer>
169
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
170
+ [innerHTML]="options?.errorMessage"></mat-error>
171
+ </mat-card-footer>
172
+ </mat-card>
173
+
174
+ <mat-expansion-panel *ngIf="containerType === 'expansion-panel'"
175
+ [expanded]="expanded"
176
+ [hideToggle]="!options?.expandable">
177
+ <mat-expansion-panel-header>
178
+ <mat-panel-title>
179
+ <legend *ngIf="sectionTitle"
180
+ [class]="options?.labelHtmlClass"
181
+ [innerHTML]="sectionTitle"
182
+ (click)="toggleExpanded()"></legend>
183
+ </mat-panel-title>
184
+ </mat-expansion-panel-header>
185
+ <fieldset [disabled]="options?.readonly">
186
+ <flex-layout-root-widget *ngIf="expanded"
187
+ [layout]="layoutNode.items"
188
+ [dataIndex]="dataIndex"
189
+ [layoutIndex]="layoutIndex"
190
+ [isFlexItem]="getFlexAttribute('is-flex')"
191
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
192
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
193
+ [style.display]="getFlexAttribute('display')"
194
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
195
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
196
+ [style.justify-content]="getFlexAttribute('justify-content')"
197
+ [style.align-items]="getFlexAttribute('align-items')"
198
+ [style.align-content]="getFlexAttribute('align-content')"
199
+ [attr.fxLayout]="getFlexAttribute('layout')"
200
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
201
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
202
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
203
+ </fieldset>
204
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
205
+ [innerHTML]="options?.errorMessage"></mat-error>
206
+ </mat-expansion-panel>`, isInline: true, styles: ["fieldset{border:0;margin:0;padding:0}.legend{font-weight:700}.expandable>.legend:before{content:\"\\25b6\";padding-right:.3em}.expanded>.legend:before{content:\"\\25bc\";padding-right:.2em}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i3.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i6.FlexLayoutRootComponent, selector: "flex-layout-root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isFlexItem"] }] }); }
207
+ }
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FlexLayoutSectionComponent, decorators: [{
209
+ type: Component,
210
+ args: [{ selector: 'flex-layout-section-widget', template: `
211
+ <div *ngIf="containerType === 'div'"
212
+ [class]="options?.htmlClass || ''"
213
+ [class.expandable]="options?.expandable && !expanded"
214
+ [class.expanded]="options?.expandable && expanded">
215
+ <label *ngIf="sectionTitle"
216
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
217
+ [innerHTML]="sectionTitle"
218
+ (click)="toggleExpanded()"></label>
219
+ <flex-layout-root-widget *ngIf="expanded"
220
+ [layout]="layoutNode.items"
221
+ [dataIndex]="dataIndex"
222
+ [layoutIndex]="layoutIndex"
223
+ [isFlexItem]="getFlexAttribute('is-flex')"
224
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
225
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
226
+ [style.display]="getFlexAttribute('display')"
227
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
228
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
229
+ [style.justify-content]="getFlexAttribute('justify-content')"
230
+ [style.align-items]="getFlexAttribute('align-items')"
231
+ [style.align-content]="getFlexAttribute('align-content')"
232
+ [attr.fxLayout]="getFlexAttribute('layout')"
233
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
234
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
235
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
236
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
237
+ [innerHTML]="options?.errorMessage"></mat-error>
238
+ </div>
239
+
240
+ <fieldset *ngIf="containerType === 'fieldset'"
241
+ [class]="options?.htmlClass || ''"
242
+ [class.expandable]="options?.expandable && !expanded"
243
+ [class.expanded]="options?.expandable && expanded"
244
+ [disabled]="options?.readonly">
245
+ <legend *ngIf="sectionTitle"
246
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
247
+ [innerHTML]="sectionTitle"
248
+ (click)="toggleExpanded()"></legend>
249
+ <flex-layout-root-widget *ngIf="expanded"
250
+ [layout]="layoutNode.items"
251
+ [dataIndex]="dataIndex"
252
+ [layoutIndex]="layoutIndex"
253
+ [isFlexItem]="getFlexAttribute('is-flex')"
254
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
255
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
256
+ [style.display]="getFlexAttribute('display')"
257
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
258
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
259
+ [style.justify-content]="getFlexAttribute('justify-content')"
260
+ [style.align-items]="getFlexAttribute('align-items')"
261
+ [style.align-content]="getFlexAttribute('align-content')"
262
+ [attr.fxLayout]="getFlexAttribute('layout')"
263
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
264
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
265
+ [attr.attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
266
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
267
+ [innerHTML]="options?.errorMessage"></mat-error>
268
+ </fieldset>
269
+
270
+ <mat-card appearance="outlined" *ngIf="containerType === 'card'"
271
+ [ngClass]="options?.htmlClass || ''"
272
+ [class.expandable]="options?.expandable && !expanded"
273
+ [class.expanded]="options?.expandable && expanded">
274
+ <mat-card-header *ngIf="sectionTitle">
275
+ <legend
276
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
277
+ [innerHTML]="sectionTitle"
278
+ (click)="toggleExpanded()"></legend>
279
+ </mat-card-header>
280
+ <mat-card-content *ngIf="expanded">
281
+ <fieldset [disabled]="options?.readonly">
282
+ <flex-layout-root-widget *ngIf="expanded"
283
+ [layout]="layoutNode.items"
284
+ [dataIndex]="dataIndex"
285
+ [layoutIndex]="layoutIndex"
286
+ [isFlexItem]="getFlexAttribute('is-flex')"
287
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
288
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
289
+ [style.display]="getFlexAttribute('display')"
290
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
291
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
292
+ [style.justify-content]="getFlexAttribute('justify-content')"
293
+ [style.align-items]="getFlexAttribute('align-items')"
294
+ [style.align-content]="getFlexAttribute('align-content')"
295
+ [attr.fxLayout]="getFlexAttribute('layout')"
296
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
297
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
298
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
299
+ </fieldset>
300
+ </mat-card-content>
301
+ <mat-card-footer>
302
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
303
+ [innerHTML]="options?.errorMessage"></mat-error>
304
+ </mat-card-footer>
305
+ </mat-card>
306
+
307
+ <mat-expansion-panel *ngIf="containerType === 'expansion-panel'"
308
+ [expanded]="expanded"
309
+ [hideToggle]="!options?.expandable">
310
+ <mat-expansion-panel-header>
311
+ <mat-panel-title>
312
+ <legend *ngIf="sectionTitle"
313
+ [class]="options?.labelHtmlClass"
314
+ [innerHTML]="sectionTitle"
315
+ (click)="toggleExpanded()"></legend>
316
+ </mat-panel-title>
317
+ </mat-expansion-panel-header>
318
+ <fieldset [disabled]="options?.readonly">
319
+ <flex-layout-root-widget *ngIf="expanded"
320
+ [layout]="layoutNode.items"
321
+ [dataIndex]="dataIndex"
322
+ [layoutIndex]="layoutIndex"
323
+ [isFlexItem]="getFlexAttribute('is-flex')"
324
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
325
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
326
+ [style.display]="getFlexAttribute('display')"
327
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
328
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
329
+ [style.justify-content]="getFlexAttribute('justify-content')"
330
+ [style.align-items]="getFlexAttribute('align-items')"
331
+ [style.align-content]="getFlexAttribute('align-content')"
332
+ [attr.fxLayout]="getFlexAttribute('layout')"
333
+ [attr.fxLayoutGap]="options?.fxLayoutGap"
334
+ [attr.fxLayoutAlign]="options?.fxLayoutAlign"
335
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
336
+ </fieldset>
337
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
338
+ [innerHTML]="options?.errorMessage"></mat-error>
339
+ </mat-expansion-panel>`, styles: ["fieldset{border:0;margin:0;padding:0}.legend{font-weight:700}.expandable>.legend:before{content:\"\\25b6\";padding-right:.3em}.expanded>.legend:before{content:\"\\25bc\";padding-right:.2em}\n"] }]
340
+ }], ctorParameters: () => [{ type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
341
+ type: Input
342
+ }], layoutIndex: [{
343
+ type: Input
344
+ }], dataIndex: [{
345
+ type: Input
346
+ }] } });
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1sYXlvdXQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtbWF0ZXJpYWwvc3JjL2xpYi93aWRnZXRzL2ZsZXgtbGF5b3V0LXNlY3Rpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQWdKekQsTUFBTSxPQUFPLDBCQUEwQjtJQWFyQyxZQUNVLEdBQTBCO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBVnBDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFPbEIsQ0FBQztJQUVMLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUNuRCxRQUFRLElBQUksQ0FBQyxVQUFV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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQWlJZTswRkFpQmhCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSnNvblNjaGVtYUZvcm1TZXJ2aWNlIH0gZnJvbSAnQG5nLWZvcm13b3Jrcy9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2ZsZXgtbGF5b3V0LXNlY3Rpb24td2lkZ2V0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAqbmdJZj1cImNvbnRhaW5lclR5cGUgPT09ICdkaXYnXCJcclxuICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRhYmxlXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgIWV4cGFuZGVkXCJcclxuICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgZXhwYW5kZWRcIj5cclxuICAgICAgPGxhYmVsICpuZ0lmPVwic2VjdGlvblRpdGxlXCJcclxuICAgICAgICBbY2xhc3NdPVwiJ2xlZ2VuZCAnICsgKG9wdGlvbnM/LmxhYmVsSHRtbENsYXNzIHx8ICcnKVwiXHJcbiAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uVGl0bGVcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmRlZCgpXCI+PC9sYWJlbD5cclxuICAgICAgPGZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0ICpuZ0lmPVwiZXhwYW5kZWRcIlxyXG4gICAgICAgIFtsYXlvdXRdPVwibGF5b3V0Tm9kZS5pdGVtc1wiXHJcbiAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXhcIlxyXG4gICAgICAgIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiXHJcbiAgICAgICAgW2lzRmxleEl0ZW1dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnaXMtZmxleCcpXCJcclxuICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXHJcbiAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1yb3ddPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ3JvdydcIlxyXG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2Rpc3BsYXknKVwiXHJcbiAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxyXG4gICAgICAgIFtzdHlsZS5mbGV4LXdyYXBdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC13cmFwJylcIlxyXG4gICAgICAgIFtzdHlsZS5qdXN0aWZ5LWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnanVzdGlmeS1jb250ZW50JylcIlxyXG4gICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcclxuICAgICAgICBbc3R5bGUuYWxpZ24tY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1jb250ZW50JylcIlxyXG4gICAgICAgIFthdHRyLmZ4TGF5b3V0XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2xheW91dCcpXCJcclxuICAgICAgICBbYXR0ci5meExheW91dEdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXHJcbiAgICAgICAgW2F0dHIuZnhMYXlvdXRBbGlnbl09XCJvcHRpb25zPy5meExheW91dEFsaWduXCJcclxuICAgICAgICBbYXR0ci5meEZsZXhGaWxsXT1cIm9wdGlvbnM/LmZ4TGF5b3V0QWxpZ25cIj48L2ZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0PlxyXG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwib3B0aW9ucz8uc2hvd0Vycm9ycyAmJiBvcHRpb25zPy5lcnJvck1lc3NhZ2VcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8uZXJyb3JNZXNzYWdlXCI+PC9tYXQtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZmllbGRzZXQgKm5nSWY9XCJjb250YWluZXJUeXBlID09PSAnZmllbGRzZXQnXCJcclxuICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRhYmxlXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgIWV4cGFuZGVkXCJcclxuICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgZXhwYW5kZWRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIj5cclxuICAgICAgPGxlZ2VuZCAqbmdJZj1cInNlY3Rpb25UaXRsZVwiXHJcbiAgICAgICAgW2NsYXNzXT1cIidsZWdlbmQgJyArIChvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJylcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwic2VjdGlvblRpdGxlXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxyXG4gICAgICA8ZmxleC1sYXlvdXQtcm9vdC13aWRnZXQgKm5nSWY9XCJleHBhbmRlZFwiXHJcbiAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcclxuICAgICAgICBbZGF0YUluZGV4XT1cImRhdGFJbmRleFwiXHJcbiAgICAgICAgW2xheW91dEluZGV4XT1cImxheW91dEluZGV4XCJcclxuICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxyXG4gICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtY29sdW1uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdjb2x1bW4nXCJcclxuICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LXJvd109XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAncm93J1wiXHJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcclxuICAgICAgICBbc3R5bGUuZmxleC1kaXJlY3Rpb25dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKVwiXHJcbiAgICAgICAgW3N0eWxlLmZsZXgtd3JhcF09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LXdyYXAnKVwiXHJcbiAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXHJcbiAgICAgICAgW3N0eWxlLmFsaWduLWl0ZW1zXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWl0ZW1zJylcIlxyXG4gICAgICAgIFtzdHlsZS5hbGlnbi1jb250ZW50XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWNvbnRlbnQnKVwiXHJcbiAgICAgICAgW2F0dHIuZnhMYXlvdXRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnbGF5b3V0JylcIlxyXG4gICAgICAgIFthdHRyLmZ4TGF5b3V0R2FwXT1cIm9wdGlvbnM/LmZ4TGF5b3V0R2FwXCJcclxuICAgICAgICBbYXR0ci5meExheW91dEFsaWduXT1cIm9wdGlvbnM/LmZ4TGF5b3V0QWxpZ25cIlxyXG4gICAgICAgIFthdHRyLmF0dHIuZnhGbGV4RmlsbF09XCJvcHRpb25zPy5meExheW91dEFsaWduXCI+PC9mbGV4LWxheW91dC1yb290LXdpZGdldD5cclxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvbWF0LWVycm9yPlxyXG4gICAgPC9maWVsZHNldD5cclxuXHJcbiAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgKm5nSWY9XCJjb250YWluZXJUeXBlID09PSAnY2FyZCdcIlxyXG4gICAgICBbbmdDbGFzc109XCJvcHRpb25zPy5odG1sQ2xhc3MgfHwgJydcIlxyXG4gICAgICBbY2xhc3MuZXhwYW5kYWJsZV09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmICFleHBhbmRlZFwiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmIGV4cGFuZGVkXCI+XHJcbiAgICAgIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJzZWN0aW9uVGl0bGVcIj5cclxuICAgICAgICA8bGVnZW5kXHJcbiAgICAgICAgICBbY2xhc3NdPVwiJ2xlZ2VuZCAnICsgKG9wdGlvbnM/LmxhYmVsSHRtbENsYXNzIHx8ICcnKVwiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlY3Rpb25UaXRsZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgKm5nSWY9XCJleHBhbmRlZFwiPlxyXG4gICAgICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIj5cclxuICAgICAgICAgIDxmbGV4LWxheW91dC1yb290LXdpZGdldCAqbmdJZj1cImV4cGFuZGVkXCJcclxuICAgICAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcclxuICAgICAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXhcIlxyXG4gICAgICAgICAgICBbbGF5b3V0SW5kZXhdPVwibGF5b3V0SW5kZXhcIlxyXG4gICAgICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtcm93XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdyb3cnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZmxleC13cmFwXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtd3JhcCcpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmFsaWduLWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24tY29udGVudCcpXCJcclxuICAgICAgICAgICAgW2F0dHIuZnhMYXlvdXRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnbGF5b3V0JylcIlxyXG4gICAgICAgICAgICBbYXR0ci5meExheW91dEdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXHJcbiAgICAgICAgICAgIFthdHRyLmZ4TGF5b3V0QWxpZ25dPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiXHJcbiAgICAgICAgICAgIFthdHRyLmZ4RmxleEZpbGxdPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiPjwvZmxleC1sYXlvdXQtcm9vdC13aWRnZXQ+XHJcbiAgICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxtYXQtY2FyZC1mb290ZXI+XHJcbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8uZXJyb3JNZXNzYWdlXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG4gICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cImNvbnRhaW5lclR5cGUgPT09ICdleHBhbnNpb24tcGFuZWwnXCJcclxuICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcclxuICAgICAgW2hpZGVUb2dnbGVdPVwiIW9wdGlvbnM/LmV4cGFuZGFibGVcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICA8bGVnZW5kICpuZ0lmPVwic2VjdGlvblRpdGxlXCJcclxuICAgICAgICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/LmxhYmVsSHRtbENsYXNzXCJcclxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uVGl0bGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxyXG4gICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cIm9wdGlvbnM/LnJlYWRvbmx5XCI+XHJcbiAgICAgICAgPGZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0ICpuZ0lmPVwiZXhwYW5kZWRcIlxyXG4gICAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcclxuICAgICAgICAgIFtkYXRhSW5kZXhdPVwiZGF0YUluZGV4XCJcclxuICAgICAgICAgIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiXHJcbiAgICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxyXG4gICAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1jb2x1bW5dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ2NvbHVtbidcIlxyXG4gICAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1yb3ddPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ3JvdydcIlxyXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcclxuICAgICAgICAgIFtzdHlsZS5mbGV4LWRpcmVjdGlvbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpXCJcclxuICAgICAgICAgIFtzdHlsZS5mbGV4LXdyYXBdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC13cmFwJylcIlxyXG4gICAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXHJcbiAgICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24taXRlbXMnKVwiXHJcbiAgICAgICAgICBbc3R5bGUuYWxpZ24tY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1jb250ZW50JylcIlxyXG4gICAgICAgICAgW2F0dHIuZnhMYXlvdXRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnbGF5b3V0JylcIlxyXG4gICAgICAgICAgW2F0dHIuZnhMYXlvdXRHYXBdPVwib3B0aW9ucz8uZnhMYXlvdXRHYXBcIlxyXG4gICAgICAgICAgW2F0dHIuZnhMYXlvdXRBbGlnbl09XCJvcHRpb25zPy5meExheW91dEFsaWduXCJcclxuICAgICAgICAgIFthdHRyLmZ4RmxleEZpbGxdPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiPjwvZmxleC1sYXlvdXQtcm9vdC13aWRnZXQ+XHJcbiAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvcHRpb25zPy5zaG93RXJyb3JzICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXHJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5gLFxyXG4gIHN0eWxlczogW2BcclxuICAgIGZpZWxkc2V0IHsgYm9yZGVyOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH1cclxuICAgIC5sZWdlbmQgeyBmb250LXdlaWdodDogYm9sZDsgfVxyXG4gICAgLmV4cGFuZGFibGUgPiAubGVnZW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICfilrYnOyBwYWRkaW5nLXJpZ2h0OiAuM2VtOyB9XHJcbiAgICAuZXhwYW5kZWQgPiAubGVnZW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICfilrwnOyBwYWRkaW5nLXJpZ2h0OiAuMmVtOyB9XHJcbiAgYF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGV4TGF5b3V0U2VjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBjb250cm9sTmFtZTogc3RyaW5nO1xyXG4gIGNvbnRyb2xWYWx1ZTogYW55O1xyXG4gIGNvbnRyb2xEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGJvdW5kQ29udHJvbCA9IGZhbHNlO1xyXG4gIG9wdGlvbnM6IGFueTtcclxuICBleHBhbmRlZCA9IHRydWU7XHJcbiAgY29udGFpbmVyVHlwZSA9ICdkaXYnO1xyXG4gIEBJbnB1dCgpIGxheW91dE5vZGU6IGFueTtcclxuICBASW5wdXQoKSBsYXlvdXRJbmRleDogbnVtYmVyW107XHJcbiAgQElucHV0KCkgZGF0YUluZGV4OiBudW1iZXJbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGpzZjogSnNvblNjaGVtYUZvcm1TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgZ2V0IHNlY3Rpb25UaXRsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubm90aXRsZSA/IG51bGwgOiB0aGlzLmpzZi5zZXRJdGVtVGl0bGUodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuanNmLmluaXRpYWxpemVDb250cm9sKHRoaXMpO1xyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5sYXlvdXROb2RlLm9wdGlvbnMgfHwge307XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gdHlwZW9mIHRoaXMub3B0aW9ucy5leHBhbmRlZCA9PT0gJ2Jvb2xlYW4nID9cclxuICAgICAgdGhpcy5vcHRpb25zLmV4cGFuZGVkIDogIXRoaXMub3B0aW9ucy5leHBhbmRhYmxlO1xyXG4gICAgc3dpdGNoICh0aGlzLmxheW91dE5vZGUudHlwZSkge1xyXG4gICAgICBjYXNlICdzZWN0aW9uJzogY2FzZSAnYXJyYXknOiBjYXNlICdmaWVsZHNldCc6IGNhc2UgJ2FkdmFuY2VkZmllbGRzZXQnOlxyXG4gICAgICBjYXNlICdhdXRoZmllbGRzZXQnOiBjYXNlICdvcHRpb25maWVsZHNldCc6IGNhc2UgJ3NlbGVjdGZpZWxkc2V0JzpcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnZmllbGRzZXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXJkJzpcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnY2FyZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V4cGFuc2lvbi1wYW5lbCc6XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJUeXBlID0gJ2V4cGFuc2lvbi1wYW5lbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6IC8vICdkaXYnLCAnZmxleCcsICd0YWInLCAnY29uZGl0aW9uYWwnLCAnYWN0aW9ucydcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnZGl2JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUV4cGFuZGVkKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5leHBhbmRhYmxlKSB7IHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDsgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGF0dHJpYnV0ZXMgZm9yIGZsZXhib3ggY29udGFpbmVyXHJcbiAgLy8gKGNoaWxkIGF0dHJpYnV0ZXMgYXJlIHNldCBpbiBmbGV4LWxheW91dC1yb290LmNvbXBvbmVudClcclxuICBnZXRGbGV4QXR0cmlidXRlKGF0dHJpYnV0ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmbGV4QWN0aXZlOiBib29sZWFuID1cclxuICAgICAgdGhpcy5sYXlvdXROb2RlLnR5cGUgPT09ICdmbGV4JyB8fFxyXG4gICAgICAhIXRoaXMub3B0aW9ucy5kaXNwbGF5RmxleCB8fFxyXG4gICAgICB0aGlzLm9wdGlvbnMuZGlzcGxheSA9PT0gJ2ZsZXgnO1xyXG4gICAgLy8gaWYgKGF0dHJpYnV0ZSAhPT0gJ2ZsZXgnICYmICFmbGV4QWN0aXZlKSB7IHJldHVybiBudWxsOyB9XHJcbiAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICBjYXNlICdpcy1mbGV4JzpcclxuICAgICAgICByZXR1cm4gZmxleEFjdGl2ZTtcclxuICAgICAgY2FzZSAnZGlzcGxheSc6XHJcbiAgICAgICAgcmV0dXJuIGZsZXhBY3RpdmUgPyAnZmxleCcgOiAnaW5pdGlhbCc7XHJcbiAgICAgIGNhc2UgJ2ZsZXgtZGlyZWN0aW9uJzogY2FzZSAnZmxleC13cmFwJzpcclxuICAgICAgICBjb25zdCBpbmRleCA9IFsnZmxleC1kaXJlY3Rpb24nLCAnZmxleC13cmFwJ10uaW5kZXhPZihhdHRyaWJ1dGUpO1xyXG4gICAgICAgIHJldHVybiAodGhpcy5vcHRpb25zWydmbGV4LWZsb3cnXSB8fCAnJykuc3BsaXQoL1xccysvKVtpbmRleF0gfHxcclxuICAgICAgICAgIHRoaXMub3B0aW9uc1thdHRyaWJ1dGVdIHx8IFsnY29sdW1uJywgJ25vd3JhcCddW2luZGV4XTtcclxuICAgICAgY2FzZSAnanVzdGlmeS1jb250ZW50JzogY2FzZSAnYWxpZ24taXRlbXMnOiBjYXNlICdhbGlnbi1jb250ZW50JzpcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2F0dHJpYnV0ZV07XHJcbiAgICAgIGNhc2UgJ2xheW91dCc6XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbnMuZnhMYXlvdXQgfHwgJ3JvdycpICtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5meExheW91dFdyYXAgPyAnICcgKyB0aGlzLm9wdGlvbnMuZnhMYXlvdXRXcmFwIDogJyc7XHJcblxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,66 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ng-formworks/core";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/material/button";
6
+ export class MaterialAddReferenceComponent {
7
+ constructor(jsf) {
8
+ this.jsf = jsf;
9
+ }
10
+ ngOnInit() {
11
+ this.options = this.layoutNode.options || {};
12
+ }
13
+ get showAddButton() {
14
+ return !this.layoutNode.arrayItem ||
15
+ this.layoutIndex[this.layoutIndex.length - 1] < this.options.maxItems;
16
+ }
17
+ addItem(event) {
18
+ event.preventDefault();
19
+ this.jsf.addItem(this);
20
+ }
21
+ get buttonText() {
22
+ const parent = {
23
+ dataIndex: this.dataIndex.slice(0, -1),
24
+ layoutIndex: this.layoutIndex.slice(0, -1),
25
+ layoutNode: this.jsf.getParentNode(this),
26
+ };
27
+ return parent.layoutNode.add ||
28
+ this.jsf.setArrayItemTitle(parent, this.layoutNode, this.itemCount);
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MaterialAddReferenceComponent, deps: [{ token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: MaterialAddReferenceComponent, selector: "material-add-reference-widget", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `
32
+ <section [class]="options?.htmlClass || ''" align="end">
33
+ <button mat-raised-button *ngIf="showAddButton"
34
+ [color]="options?.color || 'accent'"
35
+ [disabled]="options?.readonly"
36
+ (click)="addItem($event)">
37
+ <span *ngIf="options?.icon" [class]="options?.icon"></span>
38
+ <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
39
+ </button>
40
+ </section>`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MaterialAddReferenceComponent, decorators: [{
43
+ type: Component,
44
+ args: [{
45
+ // tslint:disable-next-line:component-selector
46
+ selector: 'material-add-reference-widget',
47
+ template: `
48
+ <section [class]="options?.htmlClass || ''" align="end">
49
+ <button mat-raised-button *ngIf="showAddButton"
50
+ [color]="options?.color || 'accent'"
51
+ [disabled]="options?.readonly"
52
+ (click)="addItem($event)">
53
+ <span *ngIf="options?.icon" [class]="options?.icon"></span>
54
+ <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
55
+ </button>
56
+ </section>`,
57
+ changeDetection: ChangeDetectionStrategy.Default,
58
+ }]
59
+ }], ctorParameters: () => [{ type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
60
+ type: Input
61
+ }], layoutIndex: [{
62
+ type: Input
63
+ }], dataIndex: [{
64
+ type: Input
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYWRkLXJlZmVyZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtbWF0ZXJpYWwvc3JjL2xpYi93aWRnZXRzL21hdGVyaWFsLWFkZC1yZWZlcmVuY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQW1CbEYsTUFBTSxPQUFPLDZCQUE2QjtJQVN4QyxZQUNVLEdBQTBCO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQXVCO0lBQ2hDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMxRSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUs7UUFDWCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1NBQ3pDLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDOzhHQW5DVSw2QkFBNkI7a0dBQTdCLDZCQUE2QiwrSkFaOUI7Ozs7Ozs7OztlQVNHOzsyRkFHRiw2QkFBNkI7a0JBZnpDLFNBQVM7bUJBQUM7b0JBQ1QsOENBQThDO29CQUM5QyxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxRQUFRLEVBQUU7Ozs7Ozs7OztlQVNHO29CQUNiLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPO2lCQUNqRDswRkFNVSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSnNvblNjaGVtYUZvcm1TZXJ2aWNlIH0gZnJvbSAnQG5nLWZvcm13b3Jrcy9jb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdtYXRlcmlhbC1hZGQtcmVmZXJlbmNlLXdpZGdldCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxzZWN0aW9uIFtjbGFzc109XCJvcHRpb25zPy5odG1sQ2xhc3MgfHwgJydcIiBhbGlnbj1cImVuZFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uICpuZ0lmPVwic2hvd0FkZEJ1dHRvblwiXHJcbiAgICAgICAgW2NvbG9yXT1cIm9wdGlvbnM/LmNvbG9yIHx8ICdhY2NlbnQnXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIlxyXG4gICAgICAgIChjbGljayk9XCJhZGRJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbnM/Lmljb25cIiBbY2xhc3NdPVwib3B0aW9ucz8uaWNvblwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbnM/LnRpdGxlXCIgW2lubmVySFRNTF09XCJidXR0b25UZXh0XCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvc2VjdGlvbj5gLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsQWRkUmVmZXJlbmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBvcHRpb25zOiBhbnk7XHJcbiAgaXRlbUNvdW50OiBudW1iZXI7XHJcbiAgcHJldmlvdXNMYXlvdXRJbmRleDogbnVtYmVyW107XHJcbiAgcHJldmlvdXNEYXRhSW5kZXg6IG51bWJlcltdO1xyXG4gIEBJbnB1dCgpIGxheW91dE5vZGU6IGFueTtcclxuICBASW5wdXQoKSBsYXlvdXRJbmRleDogbnVtYmVyW107XHJcbiAgQElucHV0KCkgZGF0YUluZGV4OiBudW1iZXJbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGpzZjogSnNvblNjaGVtYUZvcm1TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmxheW91dE5vZGUub3B0aW9ucyB8fCB7fTtcclxuICB9XHJcblxyXG4gIGdldCBzaG93QWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmxheW91dE5vZGUuYXJyYXlJdGVtIHx8XHJcbiAgICAgIHRoaXMubGF5b3V0SW5kZXhbdGhpcy5sYXlvdXRJbmRleC5sZW5ndGggLSAxXSA8IHRoaXMub3B0aW9ucy5tYXhJdGVtcztcclxuICB9XHJcblxyXG4gIGFkZEl0ZW0oZXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmpzZi5hZGRJdGVtKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJ1dHRvblRleHQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcmVudDogYW55ID0ge1xyXG4gICAgICBkYXRhSW5kZXg6IHRoaXMuZGF0YUluZGV4LnNsaWNlKDAsIC0xKSxcclxuICAgICAgbGF5b3V0SW5kZXg6IHRoaXMubGF5b3V0SW5kZXguc2xpY2UoMCwgLTEpLFxyXG4gICAgICBsYXlvdXROb2RlOiB0aGlzLmpzZi5nZXRQYXJlbnROb2RlKHRoaXMpLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBwYXJlbnQubGF5b3V0Tm9kZS5hZGQgfHxcclxuICAgICAgdGhpcy5qc2Yuc2V0QXJyYXlJdGVtVGl0bGUocGFyZW50LCB0aGlzLmxheW91dE5vZGUsIHRoaXMuaXRlbUNvdW50KTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,90 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { buildTitleMap } from '@ng-formworks/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ng-formworks/core";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/material/button-toggle";
7
+ import * as i4 from "@angular/material/form-field";
8
+ export class MaterialButtonGroupComponent {
9
+ constructor(jsf) {
10
+ this.jsf = jsf;
11
+ this.controlDisabled = false;
12
+ this.boundControl = false;
13
+ this.radiosList = [];
14
+ this.vertical = false;
15
+ }
16
+ ngOnInit() {
17
+ this.options = this.layoutNode.options || {};
18
+ this.radiosList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, true);
19
+ this.jsf.initializeControl(this);
20
+ }
21
+ updateValue(value) {
22
+ this.options.showErrors = true;
23
+ this.jsf.updateValue(this, value);
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MaterialButtonGroupComponent, deps: [{ token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: MaterialButtonGroupComponent, selector: "material-button-group-widget", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `
27
+ <div>
28
+ <div *ngIf="options?.title">
29
+ <label
30
+ [attr.for]="'control' + layoutNode?._id"
31
+ [class]="options?.labelHtmlClass || ''"
32
+ [style.display]="options?.notitle ? 'none' : ''"
33
+ [innerHTML]="options?.title"></label>
34
+ </div>
35
+ <mat-button-toggle-group
36
+ [attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
37
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
38
+ [attr.required]="options?.required"
39
+ [disabled]="controlDisabled || options?.readonly"
40
+ [name]="controlName"
41
+ [value]="controlValue"
42
+ [vertical]="!!options.vertical">
43
+ <mat-button-toggle *ngFor="let radioItem of radiosList"
44
+ [id]="'control' + layoutNode?._id + '/' + radioItem?.name"
45
+ [value]="radioItem?.value"
46
+ (click)="updateValue(radioItem?.value)">
47
+ <span [innerHTML]="radioItem?.name"></span>
48
+ </mat-button-toggle>
49
+ </mat-button-toggle-group>
50
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
51
+ [innerHTML]="options?.errorMessage"></mat-error>
52
+ </div>`, isInline: true, styles: ["mat-error{font-size:75%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MaterialButtonGroupComponent, decorators: [{
55
+ type: Component,
56
+ args: [{ selector: 'material-button-group-widget', template: `
57
+ <div>
58
+ <div *ngIf="options?.title">
59
+ <label
60
+ [attr.for]="'control' + layoutNode?._id"
61
+ [class]="options?.labelHtmlClass || ''"
62
+ [style.display]="options?.notitle ? 'none' : ''"
63
+ [innerHTML]="options?.title"></label>
64
+ </div>
65
+ <mat-button-toggle-group
66
+ [attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
67
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
68
+ [attr.required]="options?.required"
69
+ [disabled]="controlDisabled || options?.readonly"
70
+ [name]="controlName"
71
+ [value]="controlValue"
72
+ [vertical]="!!options.vertical">
73
+ <mat-button-toggle *ngFor="let radioItem of radiosList"
74
+ [id]="'control' + layoutNode?._id + '/' + radioItem?.name"
75
+ [value]="radioItem?.value"
76
+ (click)="updateValue(radioItem?.value)">
77
+ <span [innerHTML]="radioItem?.name"></span>
78
+ </mat-button-toggle>
79
+ </mat-button-toggle-group>
80
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
81
+ [innerHTML]="options?.errorMessage"></mat-error>
82
+ </div>`, styles: ["mat-error{font-size:75%}\n"] }]
83
+ }], ctorParameters: () => [{ type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
84
+ type: Input
85
+ }], layoutIndex: [{
86
+ type: Input
87
+ }], dataIndex: [{
88
+ type: Input
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWZvcm13b3Jrcy1tYXRlcmlhbC9zcmMvbGliL3dpZGdldHMvbWF0ZXJpYWwtYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQXlCLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFtQzFFLE1BQU0sT0FBTyw0QkFBNEI7SUFhdkMsWUFDVSxHQUEwQjtRQUExQixRQUFHLEdBQUgsR0FBRyxDQUF1QjtRQVZwQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFPYixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUN4QixDQUFDO1FBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBN0JVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDhKQTdCN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBMEJEOzsyRkFHRSw0QkFBNEI7a0JBaEN4QyxTQUFTOytCQUVFLDhCQUE4QixZQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0EwQkQ7MEZBWUEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBKc29uU2NoZW1hRm9ybVNlcnZpY2UsIGJ1aWxkVGl0bGVNYXAgfSBmcm9tICdAbmctZm9ybXdvcmtzL2NvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ21hdGVyaWFsLWJ1dHRvbi1ncm91cC13aWRnZXQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucz8udGl0bGVcIj5cclxuICAgICAgICA8bGFiZWxcclxuICAgICAgICAgIFthdHRyLmZvcl09XCInY29udHJvbCcgKyBsYXlvdXROb2RlPy5faWRcIlxyXG4gICAgICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/LmxhYmVsSHRtbENsYXNzIHx8ICcnXCJcclxuICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIm9wdGlvbnM/Lm5vdGl0bGUgPyAnbm9uZScgOiAnJ1wiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LnRpdGxlXCI+PC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxyXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkICsgJ1N0YXR1cydcIlxyXG4gICAgICAgIFthdHRyLnJlYWRvbmx5XT1cIm9wdGlvbnM/LnJlYWRvbmx5ID8gJ3JlYWRvbmx5JyA6IG51bGxcIlxyXG4gICAgICAgIFthdHRyLnJlcXVpcmVkXT1cIm9wdGlvbnM/LnJlcXVpcmVkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbERpc2FibGVkIHx8IG9wdGlvbnM/LnJlYWRvbmx5XCJcclxuICAgICAgICBbbmFtZV09XCJjb250cm9sTmFtZVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2xWYWx1ZVwiXHJcbiAgICAgICAgW3ZlcnRpY2FsXT1cIiEhb3B0aW9ucy52ZXJ0aWNhbFwiPlxyXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdGb3I9XCJsZXQgcmFkaW9JdGVtIG9mIHJhZGlvc0xpc3RcIlxyXG4gICAgICAgICAgW2lkXT1cIidjb250cm9sJyArIGxheW91dE5vZGU/Ll9pZCArICcvJyArIHJhZGlvSXRlbT8ubmFtZVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwicmFkaW9JdGVtPy52YWx1ZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWUocmFkaW9JdGVtPy52YWx1ZSlcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicmFkaW9JdGVtPy5uYW1lXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvcHRpb25zPy5zaG93RXJyb3JzICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXHJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cclxuICAgIDwvZGl2PmAsXHJcbiAgICBzdHlsZXM6IFtgIG1hdC1lcnJvciB7IGZvbnQtc2l6ZTogNzUlOyB9IGBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxCdXR0b25Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBjb250cm9sTmFtZTogc3RyaW5nO1xyXG4gIGNvbnRyb2xWYWx1ZTogYW55O1xyXG4gIGNvbnRyb2xEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGJvdW5kQ29udHJvbCA9IGZhbHNlO1xyXG4gIG9wdGlvbnM6IGFueTtcclxuICByYWRpb3NMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHZlcnRpY2FsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGF5b3V0Tm9kZTogYW55O1xyXG4gIEBJbnB1dCgpIGxheW91dEluZGV4OiBudW1iZXJbXTtcclxuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUganNmOiBKc29uU2NoZW1hRm9ybVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMubGF5b3V0Tm9kZS5vcHRpb25zIHx8IHt9O1xyXG4gICAgdGhpcy5yYWRpb3NMaXN0ID0gYnVpbGRUaXRsZU1hcChcclxuICAgICAgdGhpcy5vcHRpb25zLnRpdGxlTWFwIHx8IHRoaXMub3B0aW9ucy5lbnVtTmFtZXMsXHJcbiAgICAgIHRoaXMub3B0aW9ucy5lbnVtLCB0cnVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5qc2YuaW5pdGlhbGl6ZUNvbnRyb2wodGhpcyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWx1ZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3dFcnJvcnMgPSB0cnVlO1xyXG4gICAgdGhpcy5qc2YudXBkYXRlVmFsdWUodGhpcywgdmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=