@ajsf/material 0.5.1-beta.1 → 0.5.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 (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -2
  3. package/ajsf-material.d.ts +4 -0
  4. package/ajsf-material.metadata.json +1 -0
  5. package/bundles/ajsf-material.umd.js +1422 -0
  6. package/bundles/ajsf-material.umd.js.map +1 -0
  7. package/esm2015/ajsf-material.js +5 -0
  8. package/esm2015/lib/angular-flex-monkey-patch.js +12 -0
  9. package/esm2015/lib/material-design-framework.component.js +101 -0
  10. package/esm2015/lib/material-design-framework.module.js +80 -0
  11. package/esm2015/lib/material-design.framework.js +54 -0
  12. package/esm2015/lib/widgets/flex-layout-root.component.js +55 -0
  13. package/esm2015/lib/widgets/flex-layout-section.component.js +221 -0
  14. package/esm2015/lib/widgets/material-add-reference.component.js +53 -0
  15. package/esm2015/lib/widgets/material-button-group.component.js +63 -0
  16. package/esm2015/lib/widgets/material-button.component.js +60 -0
  17. package/esm2015/lib/widgets/material-checkbox.component.js +109 -0
  18. package/esm2015/lib/widgets/material-checkboxes.component.js +101 -0
  19. package/esm2015/lib/widgets/material-chip-list.component.js +33 -0
  20. package/esm2015/lib/widgets/material-datepicker.component.js +90 -0
  21. package/esm2015/lib/widgets/material-file.component.js +33 -0
  22. package/esm2015/lib/widgets/material-input.component.js +95 -0
  23. package/esm2015/lib/widgets/material-number.component.js +97 -0
  24. package/esm2015/lib/widgets/material-one-of.component.js +33 -0
  25. package/esm2015/lib/widgets/material-radios.component.js +84 -0
  26. package/esm2015/lib/widgets/material-select.component.js +115 -0
  27. package/esm2015/lib/widgets/material-slider.component.js +60 -0
  28. package/esm2015/lib/widgets/material-stepper.component.js +33 -0
  29. package/esm2015/lib/widgets/material-tabs.component.js +69 -0
  30. package/esm2015/lib/widgets/material-textarea.component.js +88 -0
  31. package/esm2015/lib/widgets/public_api.js +52 -0
  32. package/esm2015/public_api.js +8 -0
  33. package/fesm2015/ajsf-material.js +1710 -0
  34. package/fesm2015/ajsf-material.js.map +1 -0
  35. package/lib/angular-flex-monkey-patch.d.ts +1 -0
  36. package/lib/material-design-framework.component.d.ts +25 -0
  37. package/lib/material-design-framework.module.d.ts +12 -0
  38. package/lib/material-design.framework.d.ts +41 -0
  39. package/lib/widgets/flex-layout-root.component.d.ts +12 -0
  40. package/lib/widgets/flex-layout-section.component.d.ts +22 -0
  41. package/lib/widgets/material-add-reference.component.d.ts +17 -0
  42. package/lib/widgets/material-button-group.component.d.ts +20 -0
  43. package/lib/widgets/material-button.component.d.ts +18 -0
  44. package/lib/widgets/material-checkbox.component.d.ts +22 -0
  45. package/lib/widgets/material-checkboxes.component.d.ts +24 -0
  46. package/lib/widgets/material-chip-list.component.d.ts +18 -0
  47. package/lib/widgets/material-datepicker.component.d.ts +19 -0
  48. package/lib/widgets/material-file.component.d.ts +18 -0
  49. package/lib/widgets/material-input.component.d.ts +20 -0
  50. package/lib/widgets/material-number.component.d.ts +23 -0
  51. package/lib/widgets/material-one-of.component.d.ts +18 -0
  52. package/lib/widgets/material-radios.component.d.ts +20 -0
  53. package/lib/widgets/material-select.component.d.ts +21 -0
  54. package/lib/widgets/material-slider.component.d.ts +22 -0
  55. package/lib/widgets/material-stepper.component.d.ts +18 -0
  56. package/lib/widgets/material-tabs.component.d.ts +17 -0
  57. package/lib/widgets/material-textarea.component.d.ts +19 -0
  58. package/{src/lib/widgets/public_api.ts → lib/widgets/public_api.d.ts} +1 -14
  59. package/package.json +12 -4
  60. package/{src/public_api.ts → public_api.d.ts} +0 -4
  61. package/karma.conf.js +0 -37
  62. package/ng-package.json +0 -16
  63. package/src/lib/angular-flex-monkey-patch.ts +0 -13
  64. package/src/lib/material-design-framework.component.html +0 -20
  65. package/src/lib/material-design-framework.component.scss +0 -51
  66. package/src/lib/material-design-framework.component.spec.ts +0 -37
  67. package/src/lib/material-design-framework.component.ts +0 -121
  68. package/src/lib/material-design-framework.module.ts +0 -84
  69. package/src/lib/material-design.framework.ts +0 -75
  70. package/src/lib/widgets/flex-layout-root.component.html +0 -11
  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 -59
  76. package/src/lib/widgets/material-checkbox.component.ts +0 -112
  77. package/src/lib/widgets/material-checkboxes.component.ts +0 -109
  78. package/src/lib/widgets/material-chip-list.component.ts +0 -35
  79. package/src/lib/widgets/material-datepicker.component.ts +0 -103
  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 -89
  85. package/src/lib/widgets/material-select.component.ts +0 -118
  86. package/src/lib/widgets/material-slider.component.ts +0 -61
  87. package/src/lib/widgets/material-stepper.component.ts +0 -35
  88. package/src/lib/widgets/material-tabs.component.ts +0 -69
  89. package/src/lib/widgets/material-textarea.component.ts +0 -88
  90. package/src/test.ts +0 -21
  91. package/tsconfig.lib.json +0 -26
  92. package/tsconfig.lib.prod.json +0 -9
  93. package/tsconfig.spec.json +0 -17
  94. package/tslint.json +0 -11
@@ -0,0 +1,54 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Framework } from '@ajsf/core';
3
+ import { FlexLayoutRootComponent, FlexLayoutSectionComponent, MaterialAddReferenceComponent, MaterialButtonComponent, MaterialButtonGroupComponent, MaterialCheckboxComponent, MaterialCheckboxesComponent, MaterialChipListComponent, MaterialDatepickerComponent, MaterialDesignFrameworkComponent, MaterialFileComponent, MaterialInputComponent, MaterialNumberComponent, MaterialOneOfComponent, MaterialRadiosComponent, MaterialSelectComponent, MaterialSliderComponent, MaterialStepperComponent, MaterialTabsComponent, MaterialTextareaComponent } from './widgets/public_api';
4
+ // Material Design Framework
5
+ // https://github.com/angular/material2
6
+ export class MaterialDesignFramework extends Framework {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.name = 'material-design';
10
+ this.framework = MaterialDesignFrameworkComponent;
11
+ this.stylesheets = [
12
+ '//fonts.googleapis.com/icon?family=Material+Icons',
13
+ '//fonts.googleapis.com/css?family=Roboto:300,400,500,700',
14
+ ];
15
+ this.widgets = {
16
+ 'root': FlexLayoutRootComponent,
17
+ 'section': FlexLayoutSectionComponent,
18
+ '$ref': MaterialAddReferenceComponent,
19
+ 'button': MaterialButtonComponent,
20
+ 'button-group': MaterialButtonGroupComponent,
21
+ 'checkbox': MaterialCheckboxComponent,
22
+ 'checkboxes': MaterialCheckboxesComponent,
23
+ 'chip-list': MaterialChipListComponent,
24
+ 'date': MaterialDatepickerComponent,
25
+ 'file': MaterialFileComponent,
26
+ 'number': MaterialNumberComponent,
27
+ 'one-of': MaterialOneOfComponent,
28
+ 'radios': MaterialRadiosComponent,
29
+ 'select': MaterialSelectComponent,
30
+ 'slider': MaterialSliderComponent,
31
+ 'stepper': MaterialStepperComponent,
32
+ 'tabs': MaterialTabsComponent,
33
+ 'text': MaterialInputComponent,
34
+ 'textarea': MaterialTextareaComponent,
35
+ 'alt-date': 'date',
36
+ 'any-of': 'one-of',
37
+ 'card': 'section',
38
+ 'color': 'text',
39
+ 'expansion-panel': 'section',
40
+ 'hidden': 'none',
41
+ 'image': 'none',
42
+ 'integer': 'number',
43
+ 'radiobuttons': 'button-group',
44
+ 'range': 'slider',
45
+ 'submit': 'button',
46
+ 'tagsinput': 'chip-list',
47
+ 'wizard': 'stepper',
48
+ };
49
+ }
50
+ }
51
+ MaterialDesignFramework.decorators = [
52
+ { type: Injectable }
53
+ ];
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtZGVzaWduLmZyYW1ld29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fqc2YtbWF0ZXJpYWwvc3JjL2xpYi9tYXRlcmlhbC1kZXNpZ24uZnJhbWV3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1Qix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IsZ0NBQWdDLEVBQ2hDLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLDRCQUE0QjtBQUM1Qix1Q0FBdUM7QUFHdkMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFEdEQ7O1FBRUUsU0FBSSxHQUFHLGlCQUFpQixDQUFDO1FBRXpCLGNBQVMsR0FBRyxnQ0FBZ0MsQ0FBQztRQUU3QyxnQkFBVyxHQUFHO1lBQ1osbURBQW1EO1lBQ25ELDBEQUEwRDtTQUMzRCxDQUFDO1FBRUYsWUFBTyxHQUFHO1lBQ1IsTUFBTSxFQUFFLHVCQUF1QjtZQUMvQixTQUFTLEVBQUUsMEJBQTBCO1lBQ3JDLE1BQU0sRUFBRSw2QkFBNkI7WUFDckMsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxjQUFjLEVBQUUsNEJBQTRCO1lBQzVDLFVBQVUsRUFBRSx5QkFBeUI7WUFDckMsWUFBWSxFQUFFLDJCQUEyQjtZQUN6QyxXQUFXLEVBQUUseUJBQXlCO1lBQ3RDLE1BQU0sRUFBRSwyQkFBMkI7WUFDbkMsTUFBTSxFQUFFLHFCQUFxQjtZQUM3QixRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLFFBQVEsRUFBRSx1QkFBdUI7WUFDakMsU0FBUyxFQUFFLHdCQUF3QjtZQUNuQyxNQUFNLEVBQUUscUJBQXFCO1lBQzdCLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsVUFBVSxFQUFFLHlCQUF5QjtZQUNyQyxVQUFVLEVBQUUsTUFBTTtZQUNsQixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsU0FBUztZQUNqQixPQUFPLEVBQUUsTUFBTTtZQUNmLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsUUFBUSxFQUFFLE1BQU07WUFDaEIsT0FBTyxFQUFFLE1BQU07WUFDZixTQUFTLEVBQUUsUUFBUTtZQUNuQixjQUFjLEVBQUUsY0FBYztZQUM5QixPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixXQUFXLEVBQUUsV0FBVztZQUN4QixRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDO0lBQ0osQ0FBQzs7O1lBN0NBLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGcmFtZXdvcmt9IGZyb20gJ0BhanNmL2NvcmUnO1xuaW1wb3J0IHtcbiAgRmxleExheW91dFJvb3RDb21wb25lbnQsXG4gIEZsZXhMYXlvdXRTZWN0aW9uQ29tcG9uZW50LFxuICBNYXRlcmlhbEFkZFJlZmVyZW5jZUNvbXBvbmVudCxcbiAgTWF0ZXJpYWxCdXR0b25Db21wb25lbnQsXG4gIE1hdGVyaWFsQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gIE1hdGVyaWFsQ2hlY2tib3hDb21wb25lbnQsXG4gIE1hdGVyaWFsQ2hlY2tib3hlc0NvbXBvbmVudCxcbiAgTWF0ZXJpYWxDaGlwTGlzdENvbXBvbmVudCxcbiAgTWF0ZXJpYWxEYXRlcGlja2VyQ29tcG9uZW50LFxuICBNYXRlcmlhbERlc2lnbkZyYW1ld29ya0NvbXBvbmVudCxcbiAgTWF0ZXJpYWxGaWxlQ29tcG9uZW50LFxuICBNYXRlcmlhbElucHV0Q29tcG9uZW50LFxuICBNYXRlcmlhbE51bWJlckNvbXBvbmVudCxcbiAgTWF0ZXJpYWxPbmVPZkNvbXBvbmVudCxcbiAgTWF0ZXJpYWxSYWRpb3NDb21wb25lbnQsXG4gIE1hdGVyaWFsU2VsZWN0Q29tcG9uZW50LFxuICBNYXRlcmlhbFNsaWRlckNvbXBvbmVudCxcbiAgTWF0ZXJpYWxTdGVwcGVyQ29tcG9uZW50LFxuICBNYXRlcmlhbFRhYnNDb21wb25lbnQsXG4gIE1hdGVyaWFsVGV4dGFyZWFDb21wb25lbnRcbn0gZnJvbSAnLi93aWRnZXRzL3B1YmxpY19hcGknO1xuXG5cbi8vIE1hdGVyaWFsIERlc2lnbiBGcmFtZXdvcmtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMlxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxEZXNpZ25GcmFtZXdvcmsgZXh0ZW5kcyBGcmFtZXdvcmsge1xuICBuYW1lID0gJ21hdGVyaWFsLWRlc2lnbic7XG5cbiAgZnJhbWV3b3JrID0gTWF0ZXJpYWxEZXNpZ25GcmFtZXdvcmtDb21wb25lbnQ7XG5cbiAgc3R5bGVzaGVldHMgPSBbXG4gICAgJy8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnMnLFxuICAgICcvL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvOjMwMCw0MDAsNTAwLDcwMCcsXG4gIF07XG5cbiAgd2lkZ2V0cyA9IHtcbiAgICAncm9vdCc6IEZsZXhMYXlvdXRSb290Q29tcG9uZW50LFxuICAgICdzZWN0aW9uJzogRmxleExheW91dFNlY3Rpb25Db21wb25lbnQsXG4gICAgJyRyZWYnOiBNYXRlcmlhbEFkZFJlZmVyZW5jZUNvbXBvbmVudCxcbiAgICAnYnV0dG9uJzogTWF0ZXJpYWxCdXR0b25Db21wb25lbnQsXG4gICAgJ2J1dHRvbi1ncm91cCc6IE1hdGVyaWFsQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgJ2NoZWNrYm94JzogTWF0ZXJpYWxDaGVja2JveENvbXBvbmVudCxcbiAgICAnY2hlY2tib3hlcyc6IE1hdGVyaWFsQ2hlY2tib3hlc0NvbXBvbmVudCxcbiAgICAnY2hpcC1saXN0JzogTWF0ZXJpYWxDaGlwTGlzdENvbXBvbmVudCxcbiAgICAnZGF0ZSc6IE1hdGVyaWFsRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICAnZmlsZSc6IE1hdGVyaWFsRmlsZUNvbXBvbmVudCxcbiAgICAnbnVtYmVyJzogTWF0ZXJpYWxOdW1iZXJDb21wb25lbnQsXG4gICAgJ29uZS1vZic6IE1hdGVyaWFsT25lT2ZDb21wb25lbnQsXG4gICAgJ3JhZGlvcyc6IE1hdGVyaWFsUmFkaW9zQ29tcG9uZW50LFxuICAgICdzZWxlY3QnOiBNYXRlcmlhbFNlbGVjdENvbXBvbmVudCxcbiAgICAnc2xpZGVyJzogTWF0ZXJpYWxTbGlkZXJDb21wb25lbnQsXG4gICAgJ3N0ZXBwZXInOiBNYXRlcmlhbFN0ZXBwZXJDb21wb25lbnQsXG4gICAgJ3RhYnMnOiBNYXRlcmlhbFRhYnNDb21wb25lbnQsXG4gICAgJ3RleHQnOiBNYXRlcmlhbElucHV0Q29tcG9uZW50LFxuICAgICd0ZXh0YXJlYSc6IE1hdGVyaWFsVGV4dGFyZWFDb21wb25lbnQsXG4gICAgJ2FsdC1kYXRlJzogJ2RhdGUnLFxuICAgICdhbnktb2YnOiAnb25lLW9mJyxcbiAgICAnY2FyZCc6ICdzZWN0aW9uJyxcbiAgICAnY29sb3InOiAndGV4dCcsXG4gICAgJ2V4cGFuc2lvbi1wYW5lbCc6ICdzZWN0aW9uJyxcbiAgICAnaGlkZGVuJzogJ25vbmUnLFxuICAgICdpbWFnZSc6ICdub25lJyxcbiAgICAnaW50ZWdlcic6ICdudW1iZXInLFxuICAgICdyYWRpb2J1dHRvbnMnOiAnYnV0dG9uLWdyb3VwJyxcbiAgICAncmFuZ2UnOiAnc2xpZGVyJyxcbiAgICAnc3VibWl0JzogJ2J1dHRvbicsXG4gICAgJ3RhZ3NpbnB1dCc6ICdjaGlwLWxpc3QnLFxuICAgICd3aXphcmQnOiAnc3RlcHBlcicsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,55 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { JsonSchemaFormService } from '@ajsf/core';
3
+ export class FlexLayoutRootComponent {
4
+ constructor(jsf) {
5
+ this.jsf = jsf;
6
+ this.isFlexItem = false;
7
+ }
8
+ removeItem(item) {
9
+ this.jsf.removeItem(item);
10
+ }
11
+ // Set attributes for flexbox child
12
+ // (container attributes are set in flex-layout-section.component)
13
+ getFlexAttribute(node, attribute) {
14
+ const index = ['flex-grow', 'flex-shrink', 'flex-basis'].indexOf(attribute);
15
+ return ((node.options || {}).flex || '').split(/\s+/)[index] ||
16
+ (node.options || {})[attribute] || ['1', '1', 'auto'][index];
17
+ }
18
+ showWidget(layoutNode) {
19
+ return this.jsf.evaluateCondition(layoutNode, this.dataIndex);
20
+ }
21
+ }
22
+ FlexLayoutRootComponent.decorators = [
23
+ { type: Component, args: [{
24
+ // tslint:disable-next-line:component-selector
25
+ selector: 'flex-layout-root-widget',
26
+ template: `
27
+ <div *ngFor="let layoutNode of layout; let i = index"
28
+ [class.form-flex-item]="isFlexItem"
29
+ [style.flex-grow]="getFlexAttribute(layoutNode, 'flex-grow')"
30
+ [style.flex-shrink]="getFlexAttribute(layoutNode, 'flex-shrink')"
31
+ [style.flex-basis]="getFlexAttribute(layoutNode, 'flex-basis')"
32
+ [style.align-self]="(layoutNode?.options || {})['align-self']"
33
+ [style.order]="layoutNode?.options?.order"
34
+ [fxFlex]="layoutNode?.options?.fxFlex"
35
+ [fxFlexOrder]="layoutNode?.options?.fxFlexOrder"
36
+ [fxFlexOffset]="layoutNode?.options?.fxFlexOffset"
37
+ [fxFlexAlign]="layoutNode?.options?.fxFlexAlign">
38
+ <select-framework-widget *ngIf="showWidget(layoutNode)"
39
+ [dataIndex]="layoutNode?.arrayItem ? (dataIndex || []).concat(i) : (dataIndex || [])"
40
+ [layoutIndex]="(layoutIndex || []).concat(i)"
41
+ [layoutNode]="layoutNode"></select-framework-widget>
42
+ <div>`,
43
+ changeDetection: ChangeDetectionStrategy.Default
44
+ },] }
45
+ ];
46
+ FlexLayoutRootComponent.ctorParameters = () => [
47
+ { type: JsonSchemaFormService }
48
+ ];
49
+ FlexLayoutRootComponent.propDecorators = {
50
+ dataIndex: [{ type: Input }],
51
+ layoutIndex: [{ type: Input }],
52
+ layout: [{ type: Input }],
53
+ isFlexItem: [{ type: Input }]
54
+ };
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1sYXlvdXQtcm9vdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hanNmLW1hdGVyaWFsL3NyYy9saWIvd2lkZ2V0cy9mbGV4LWxheW91dC1yb290LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUF5Qm5ELE1BQU0sT0FBTyx1QkFBdUI7SUFNbEMsWUFDVSxHQUEwQjtRQUExQixRQUFHLEdBQUgsR0FBRyxDQUF1QjtRQUgzQixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBSXhCLENBQUM7SUFFTCxVQUFVLENBQUMsSUFBSTtRQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsa0VBQWtFO0lBQ2xFLGdCQUFnQixDQUFDLElBQVMsRUFBRSxTQUFpQjtRQUMzQyxNQUFNLEtBQUssR0FBRyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDMUQsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7O1lBOUNGLFNBQVMsU0FBQztnQkFDVCw4Q0FBOEM7Z0JBQzlDLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7OztVQWdCRjtnQkFDUixlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTzthQUNqRDs7O1lBeEJRLHFCQUFxQjs7O3dCQTBCM0IsS0FBSzswQkFDTCxLQUFLO3FCQUNMLEtBQUs7eUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKc29uU2NoZW1hRm9ybVNlcnZpY2UgfSBmcm9tICdAYWpzZi9jb3JlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2ZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBsYXlvdXROb2RlIG9mIGxheW91dDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICBbY2xhc3MuZm9ybS1mbGV4LWl0ZW1dPVwiaXNGbGV4SXRlbVwiXG4gICAgICBbc3R5bGUuZmxleC1ncm93XT1cImdldEZsZXhBdHRyaWJ1dGUobGF5b3V0Tm9kZSwgJ2ZsZXgtZ3JvdycpXCJcbiAgICAgIFtzdHlsZS5mbGV4LXNocmlua109XCJnZXRGbGV4QXR0cmlidXRlKGxheW91dE5vZGUsICdmbGV4LXNocmluaycpXCJcbiAgICAgIFtzdHlsZS5mbGV4LWJhc2lzXT1cImdldEZsZXhBdHRyaWJ1dGUobGF5b3V0Tm9kZSwgJ2ZsZXgtYmFzaXMnKVwiXG4gICAgICBbc3R5bGUuYWxpZ24tc2VsZl09XCIobGF5b3V0Tm9kZT8ub3B0aW9ucyB8fCB7fSlbJ2FsaWduLXNlbGYnXVwiXG4gICAgICBbc3R5bGUub3JkZXJdPVwibGF5b3V0Tm9kZT8ub3B0aW9ucz8ub3JkZXJcIlxuICAgICAgW2Z4RmxleF09XCJsYXlvdXROb2RlPy5vcHRpb25zPy5meEZsZXhcIlxuICAgICAgW2Z4RmxleE9yZGVyXT1cImxheW91dE5vZGU/Lm9wdGlvbnM/LmZ4RmxleE9yZGVyXCJcbiAgICAgIFtmeEZsZXhPZmZzZXRdPVwibGF5b3V0Tm9kZT8ub3B0aW9ucz8uZnhGbGV4T2Zmc2V0XCJcbiAgICAgIFtmeEZsZXhBbGlnbl09XCJsYXlvdXROb2RlPy5vcHRpb25zPy5meEZsZXhBbGlnblwiPlxuICAgICAgPHNlbGVjdC1mcmFtZXdvcmstd2lkZ2V0ICpuZ0lmPVwic2hvd1dpZGdldChsYXlvdXROb2RlKVwiXG4gICAgICAgIFtkYXRhSW5kZXhdPVwibGF5b3V0Tm9kZT8uYXJyYXlJdGVtID8gKGRhdGFJbmRleCB8fCBbXSkuY29uY2F0KGkpIDogKGRhdGFJbmRleCB8fCBbXSlcIlxuICAgICAgICBbbGF5b3V0SW5kZXhdPVwiKGxheW91dEluZGV4IHx8IFtdKS5jb25jYXQoaSlcIlxuICAgICAgICBbbGF5b3V0Tm9kZV09XCJsYXlvdXROb2RlXCI+PC9zZWxlY3QtZnJhbWV3b3JrLXdpZGdldD5cbiAgICA8ZGl2PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgRmxleExheW91dFJvb3RDb21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xuICBASW5wdXQoKSBsYXlvdXRJbmRleDogbnVtYmVyW107XG4gIEBJbnB1dCgpIGxheW91dDogYW55W107XG4gIEBJbnB1dCgpIGlzRmxleEl0ZW0gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGpzZjogSnNvblNjaGVtYUZvcm1TZXJ2aWNlXG4gICkgeyB9XG5cbiAgcmVtb3ZlSXRlbShpdGVtKSB7XG4gICAgdGhpcy5qc2YucmVtb3ZlSXRlbShpdGVtKTtcbiAgfVxuXG4gIC8vIFNldCBhdHRyaWJ1dGVzIGZvciBmbGV4Ym94IGNoaWxkXG4gIC8vIChjb250YWluZXIgYXR0cmlidXRlcyBhcmUgc2V0IGluIGZsZXgtbGF5b3V0LXNlY3Rpb24uY29tcG9uZW50KVxuICBnZXRGbGV4QXR0cmlidXRlKG5vZGU6IGFueSwgYXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmRleCA9IFsnZmxleC1ncm93JywgJ2ZsZXgtc2hyaW5rJywgJ2ZsZXgtYmFzaXMnXS5pbmRleE9mKGF0dHJpYnV0ZSk7XG4gICAgcmV0dXJuICgobm9kZS5vcHRpb25zIHx8IHt9KS5mbGV4IHx8ICcnKS5zcGxpdCgvXFxzKy8pW2luZGV4XSB8fFxuICAgICAgKG5vZGUub3B0aW9ucyB8fCB7fSlbYXR0cmlidXRlXSB8fCBbJzEnLCAnMScsICdhdXRvJ11baW5kZXhdO1xuICB9XG5cbiAgc2hvd1dpZGdldChsYXlvdXROb2RlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5qc2YuZXZhbHVhdGVDb25kaXRpb24obGF5b3V0Tm9kZSwgdGhpcy5kYXRhSW5kZXgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,221 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { JsonSchemaFormService } from '@ajsf/core';
3
+ export class FlexLayoutSectionComponent {
4
+ constructor(jsf) {
5
+ this.jsf = jsf;
6
+ this.controlDisabled = false;
7
+ this.boundControl = false;
8
+ this.expanded = true;
9
+ this.containerType = 'div';
10
+ }
11
+ get sectionTitle() {
12
+ return this.options.notitle ? null : this.jsf.setItemTitle(this);
13
+ }
14
+ ngOnInit() {
15
+ this.jsf.initializeControl(this);
16
+ this.options = this.layoutNode.options || {};
17
+ this.expanded = typeof this.options.expanded === 'boolean' ?
18
+ this.options.expanded : !this.options.expandable;
19
+ switch (this.layoutNode.type) {
20
+ case 'section':
21
+ case 'array':
22
+ case 'fieldset':
23
+ case 'advancedfieldset':
24
+ case 'authfieldset':
25
+ case 'optionfieldset':
26
+ case 'selectfieldset':
27
+ this.containerType = 'fieldset';
28
+ break;
29
+ case 'card':
30
+ this.containerType = 'card';
31
+ break;
32
+ case 'expansion-panel':
33
+ this.containerType = 'expansion-panel';
34
+ break;
35
+ default: // 'div', 'flex', 'tab', 'conditional', 'actions'
36
+ this.containerType = 'div';
37
+ }
38
+ }
39
+ toggleExpanded() {
40
+ if (this.options.expandable) {
41
+ this.expanded = !this.expanded;
42
+ }
43
+ }
44
+ // Set attributes for flexbox container
45
+ // (child attributes are set in flex-layout-root.component)
46
+ getFlexAttribute(attribute) {
47
+ const flexActive = this.layoutNode.type === 'flex' ||
48
+ !!this.options.displayFlex ||
49
+ this.options.display === 'flex';
50
+ // if (attribute !== 'flex' && !flexActive) { return null; }
51
+ switch (attribute) {
52
+ case 'is-flex':
53
+ return flexActive;
54
+ case 'display':
55
+ return flexActive ? 'flex' : 'initial';
56
+ case 'flex-direction':
57
+ case 'flex-wrap':
58
+ const index = ['flex-direction', 'flex-wrap'].indexOf(attribute);
59
+ return (this.options['flex-flow'] || '').split(/\s+/)[index] ||
60
+ this.options[attribute] || ['column', 'nowrap'][index];
61
+ case 'justify-content':
62
+ case 'align-items':
63
+ case 'align-content':
64
+ return this.options[attribute];
65
+ case 'layout':
66
+ return (this.options.fxLayout || 'row') +
67
+ this.options.fxLayoutWrap ? ' ' + this.options.fxLayoutWrap : '';
68
+ }
69
+ }
70
+ }
71
+ FlexLayoutSectionComponent.decorators = [
72
+ { type: Component, args: [{
73
+ // tslint:disable-next-line:component-selector
74
+ selector: 'flex-layout-section-widget',
75
+ template: `
76
+ <div *ngIf="containerType === 'div'"
77
+ [class]="options?.htmlClass || ''"
78
+ [class.expandable]="options?.expandable && !expanded"
79
+ [class.expanded]="options?.expandable && expanded">
80
+ <label *ngIf="sectionTitle"
81
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
82
+ [innerHTML]="sectionTitle"
83
+ (click)="toggleExpanded()"></label>
84
+ <flex-layout-root-widget *ngIf="expanded"
85
+ [layout]="layoutNode.items"
86
+ [dataIndex]="dataIndex"
87
+ [layoutIndex]="layoutIndex"
88
+ [isFlexItem]="getFlexAttribute('is-flex')"
89
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
90
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
91
+ [style.display]="getFlexAttribute('display')"
92
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
93
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
94
+ [style.justify-content]="getFlexAttribute('justify-content')"
95
+ [style.align-items]="getFlexAttribute('align-items')"
96
+ [style.align-content]="getFlexAttribute('align-content')"
97
+ [fxLayout]="getFlexAttribute('layout')"
98
+ [fxLayoutGap]="options?.fxLayoutGap"
99
+ [fxLayoutAlign]="options?.fxLayoutAlign"
100
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
101
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
102
+ [innerHTML]="options?.errorMessage"></mat-error>
103
+ </div>
104
+
105
+ <fieldset *ngIf="containerType === 'fieldset'"
106
+ [class]="options?.htmlClass || ''"
107
+ [class.expandable]="options?.expandable && !expanded"
108
+ [class.expanded]="options?.expandable && expanded"
109
+ [disabled]="options?.readonly">
110
+ <legend *ngIf="sectionTitle"
111
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
112
+ [innerHTML]="sectionTitle"
113
+ (click)="toggleExpanded()"></legend>
114
+ <flex-layout-root-widget *ngIf="expanded"
115
+ [layout]="layoutNode.items"
116
+ [dataIndex]="dataIndex"
117
+ [layoutIndex]="layoutIndex"
118
+ [isFlexItem]="getFlexAttribute('is-flex')"
119
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
120
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
121
+ [style.display]="getFlexAttribute('display')"
122
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
123
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
124
+ [style.justify-content]="getFlexAttribute('justify-content')"
125
+ [style.align-items]="getFlexAttribute('align-items')"
126
+ [style.align-content]="getFlexAttribute('align-content')"
127
+ [fxLayout]="getFlexAttribute('layout')"
128
+ [fxLayoutGap]="options?.fxLayoutGap"
129
+ [fxLayoutAlign]="options?.fxLayoutAlign"
130
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
131
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
132
+ [innerHTML]="options?.errorMessage"></mat-error>
133
+ </fieldset>
134
+
135
+ <mat-card *ngIf="containerType === 'card'"
136
+ [ngClass]="options?.htmlClass || ''"
137
+ [class.expandable]="options?.expandable && !expanded"
138
+ [class.expanded]="options?.expandable && expanded">
139
+ <mat-card-header *ngIf="sectionTitle">
140
+ <legend
141
+ [class]="'legend ' + (options?.labelHtmlClass || '')"
142
+ [innerHTML]="sectionTitle"
143
+ (click)="toggleExpanded()"></legend>
144
+ </mat-card-header>
145
+ <mat-card-content *ngIf="expanded">
146
+ <fieldset [disabled]="options?.readonly">
147
+ <flex-layout-root-widget *ngIf="expanded"
148
+ [layout]="layoutNode.items"
149
+ [dataIndex]="dataIndex"
150
+ [layoutIndex]="layoutIndex"
151
+ [isFlexItem]="getFlexAttribute('is-flex')"
152
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
153
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
154
+ [style.display]="getFlexAttribute('display')"
155
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
156
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
157
+ [style.justify-content]="getFlexAttribute('justify-content')"
158
+ [style.align-items]="getFlexAttribute('align-items')"
159
+ [style.align-content]="getFlexAttribute('align-content')"
160
+ [fxLayout]="getFlexAttribute('layout')"
161
+ [fxLayoutGap]="options?.fxLayoutGap"
162
+ [fxLayoutAlign]="options?.fxLayoutAlign"
163
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
164
+ </fieldset>
165
+ </mat-card-content>
166
+ <mat-card-footer>
167
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
168
+ [innerHTML]="options?.errorMessage"></mat-error>
169
+ </mat-card-footer>
170
+ </mat-card>
171
+
172
+ <mat-expansion-panel *ngIf="containerType === 'expansion-panel'"
173
+ [expanded]="expanded"
174
+ [hideToggle]="!options?.expandable">
175
+ <mat-expansion-panel-header>
176
+ <mat-panel-title>
177
+ <legend *ngIf="sectionTitle"
178
+ [class]="options?.labelHtmlClass"
179
+ [innerHTML]="sectionTitle"
180
+ (click)="toggleExpanded()"></legend>
181
+ </mat-panel-title>
182
+ </mat-expansion-panel-header>
183
+ <fieldset [disabled]="options?.readonly">
184
+ <flex-layout-root-widget *ngIf="expanded"
185
+ [layout]="layoutNode.items"
186
+ [dataIndex]="dataIndex"
187
+ [layoutIndex]="layoutIndex"
188
+ [isFlexItem]="getFlexAttribute('is-flex')"
189
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
190
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
191
+ [style.display]="getFlexAttribute('display')"
192
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
193
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
194
+ [style.justify-content]="getFlexAttribute('justify-content')"
195
+ [style.align-items]="getFlexAttribute('align-items')"
196
+ [style.align-content]="getFlexAttribute('align-content')"
197
+ [fxLayout]="getFlexAttribute('layout')"
198
+ [fxLayoutGap]="options?.fxLayoutGap"
199
+ [fxLayoutAlign]="options?.fxLayoutAlign"
200
+ [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
201
+ </fieldset>
202
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
203
+ [innerHTML]="options?.errorMessage"></mat-error>
204
+ </mat-expansion-panel>`,
205
+ styles: [`
206
+ fieldset { border: 0; margin: 0; padding: 0; }
207
+ .legend { font-weight: bold; }
208
+ .expandable > .legend:before { content: '▶'; padding-right: .3em; }
209
+ .expanded > .legend:before { content: '▼'; padding-right: .2em; }
210
+ `]
211
+ },] }
212
+ ];
213
+ FlexLayoutSectionComponent.ctorParameters = () => [
214
+ { type: JsonSchemaFormService }
215
+ ];
216
+ FlexLayoutSectionComponent.propDecorators = {
217
+ layoutNode: [{ type: Input }],
218
+ layoutIndex: [{ type: Input }],
219
+ dataIndex: [{ type: Input }]
220
+ };
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1sYXlvdXQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hanNmLW1hdGVyaWFsL3NyYy9saWIvd2lkZ2V0cy9mbGV4LWxheW91dC1zZWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUE4SW5ELE1BQU0sT0FBTywwQkFBMEI7SUFhckMsWUFDVSxHQUEwQjtRQUExQixRQUFHLEdBQUgsR0FBRyxDQUF1QjtRQVZwQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBT2xCLENBQUM7SUFFTCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDbkQsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRTtZQUM1QixLQUFLLFNBQVMsQ0FBQztZQUFDLEtBQUssT0FBTyxDQUFDO1lBQUMsS0FBSyxVQUFVLENBQUM7WUFBQyxLQUFLLGtCQUFrQixDQUFDO1lBQ3ZFLEtBQUssY0FBYyxDQUFDO1lBQUMsS0FBSyxnQkFBZ0IsQ0FBQztZQUFDLEtBQUssZ0JBQWdCO2dCQUMvRCxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFDNUIsTUFBTTtZQUNSLEtBQUssaUJBQWlCO2dCQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDO2dCQUN2QyxNQUFNO1lBQ1IsU0FBUyxpREFBaUQ7Z0JBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FBRTtJQUNsRSxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLDJEQUEyRDtJQUMzRCxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxNQUFNLFVBQVUsR0FDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxNQUFNO1lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDO1FBQ2xDLDREQUE0RDtRQUM1RCxRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxVQUFVLENBQUM7WUFDcEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6QyxLQUFLLGdCQUFnQixDQUFDO1lBQUMsS0FBSyxXQUFXO2dCQUNyQyxNQUFNLEtBQUssR0FBRyxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxLQUFLLGlCQUFpQixDQUFDO1lBQUMsS0FBSyxhQUFhLENBQUM7WUFBQyxLQUFLLGVBQWU7Z0JBQzlELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqQyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztvQkFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBRXRFO0lBQ0gsQ0FBQzs7O1lBbE5GLFNBQVMsU0FBQztnQkFDVCw4Q0FBOEM7Z0JBQzlDLFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQWlJZTt5QkFDaEI7Ozs7O0dBS1I7YUFDRjs7O1lBN0lRLHFCQUFxQjs7O3lCQXVKM0IsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpzb25TY2hlbWFGb3JtU2VydmljZSB9IGZyb20gJ0BhanNmL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2ZsZXgtbGF5b3V0LXNlY3Rpb24td2lkZ2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICpuZ0lmPVwiY29udGFpbmVyVHlwZSA9PT0gJ2RpdidcIlxuICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXG4gICAgICBbY2xhc3MuZXhwYW5kYWJsZV09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmICFleHBhbmRlZFwiXG4gICAgICBbY2xhc3MuZXhwYW5kZWRdPVwib3B0aW9ucz8uZXhwYW5kYWJsZSAmJiBleHBhbmRlZFwiPlxuICAgICAgPGxhYmVsICpuZ0lmPVwic2VjdGlvblRpdGxlXCJcbiAgICAgICAgW2NsYXNzXT1cIidsZWdlbmQgJyArIChvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJylcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cInNlY3Rpb25UaXRsZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmRlZCgpXCI+PC9sYWJlbD5cbiAgICAgIDxmbGV4LWxheW91dC1yb290LXdpZGdldCAqbmdJZj1cImV4cGFuZGVkXCJcbiAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcbiAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXhcIlxuICAgICAgICBbbGF5b3V0SW5kZXhdPVwibGF5b3V0SW5kZXhcIlxuICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxuICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXG4gICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtcm93XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdyb3cnXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcbiAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxuICAgICAgICBbc3R5bGUuZmxleC13cmFwXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtd3JhcCcpXCJcbiAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXG4gICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcbiAgICAgICAgW3N0eWxlLmFsaWduLWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24tY29udGVudCcpXCJcbiAgICAgICAgW2Z4TGF5b3V0XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2xheW91dCcpXCJcbiAgICAgICAgW2Z4TGF5b3V0R2FwXT1cIm9wdGlvbnM/LmZ4TGF5b3V0R2FwXCJcbiAgICAgICAgW2Z4TGF5b3V0QWxpZ25dPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiXG4gICAgICAgIFthdHRyLmZ4RmxleEZpbGxdPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiPjwvZmxleC1sYXlvdXQtcm9vdC13aWRnZXQ+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwib3B0aW9ucz8uc2hvd0Vycm9ycyAmJiBvcHRpb25zPy5lcnJvck1lc3NhZ2VcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvbWF0LWVycm9yPlxuICAgIDwvZGl2PlxuXG4gICAgPGZpZWxkc2V0ICpuZ0lmPVwiY29udGFpbmVyVHlwZSA9PT0gJ2ZpZWxkc2V0J1wiXG4gICAgICBbY2xhc3NdPVwib3B0aW9ucz8uaHRtbENsYXNzIHx8ICcnXCJcbiAgICAgIFtjbGFzcy5leHBhbmRhYmxlXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgIWV4cGFuZGVkXCJcbiAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmIGV4cGFuZGVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHRpb25zPy5yZWFkb25seVwiPlxuICAgICAgPGxlZ2VuZCAqbmdJZj1cInNlY3Rpb25UaXRsZVwiXG4gICAgICAgIFtjbGFzc109XCInbGVnZW5kICcgKyAob3B0aW9ucz8ubGFiZWxIdG1sQ2xhc3MgfHwgJycpXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uVGl0bGVcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxuICAgICAgPGZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0ICpuZ0lmPVwiZXhwYW5kZWRcIlxuICAgICAgICBbbGF5b3V0XT1cImxheW91dE5vZGUuaXRlbXNcIlxuICAgICAgICBbZGF0YUluZGV4XT1cImRhdGFJbmRleFwiXG4gICAgICAgIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiXG4gICAgICAgIFtpc0ZsZXhJdGVtXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2lzLWZsZXgnKVwiXG4gICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtY29sdW1uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdjb2x1bW4nXCJcbiAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1yb3ddPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ3JvdydcIlxuICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJnZXRGbGV4QXR0cmlidXRlKCdkaXNwbGF5JylcIlxuICAgICAgICBbc3R5bGUuZmxleC1kaXJlY3Rpb25dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKVwiXG4gICAgICAgIFtzdHlsZS5mbGV4LXdyYXBdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC13cmFwJylcIlxuICAgICAgICBbc3R5bGUuanVzdGlmeS1jb250ZW50XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2p1c3RpZnktY29udGVudCcpXCJcbiAgICAgICAgW3N0eWxlLmFsaWduLWl0ZW1zXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWl0ZW1zJylcIlxuICAgICAgICBbc3R5bGUuYWxpZ24tY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1jb250ZW50JylcIlxuICAgICAgICBbZnhMYXlvdXRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnbGF5b3V0JylcIlxuICAgICAgICBbZnhMYXlvdXRHYXBdPVwib3B0aW9ucz8uZnhMYXlvdXRHYXBcIlxuICAgICAgICBbZnhMYXlvdXRBbGlnbl09XCJvcHRpb25zPy5meExheW91dEFsaWduXCJcbiAgICAgICAgW2F0dHIuZnhGbGV4RmlsbF09XCJvcHRpb25zPy5meExheW91dEFsaWduXCI+PC9mbGV4LWxheW91dC1yb290LXdpZGdldD5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvcHRpb25zPy5zaG93RXJyb3JzICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8uZXJyb3JNZXNzYWdlXCI+PC9tYXQtZXJyb3I+XG4gICAgPC9maWVsZHNldD5cblxuICAgIDxtYXQtY2FyZCAqbmdJZj1cImNvbnRhaW5lclR5cGUgPT09ICdjYXJkJ1wiXG4gICAgICBbbmdDbGFzc109XCJvcHRpb25zPy5odG1sQ2xhc3MgfHwgJydcIlxuICAgICAgW2NsYXNzLmV4cGFuZGFibGVdPVwib3B0aW9ucz8uZXhwYW5kYWJsZSAmJiAhZXhwYW5kZWRcIlxuICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgZXhwYW5kZWRcIj5cbiAgICAgIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJzZWN0aW9uVGl0bGVcIj5cbiAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgIFtjbGFzc109XCInbGVnZW5kICcgKyAob3B0aW9ucz8ubGFiZWxIdG1sQ2xhc3MgfHwgJycpXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlY3Rpb25UaXRsZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKClcIj48L2xlZ2VuZD5cbiAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgKm5nSWY9XCJleHBhbmRlZFwiPlxuICAgICAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cIm9wdGlvbnM/LnJlYWRvbmx5XCI+XG4gICAgICAgICAgPGZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0ICpuZ0lmPVwiZXhwYW5kZWRcIlxuICAgICAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcbiAgICAgICAgICAgIFtkYXRhSW5kZXhdPVwiZGF0YUluZGV4XCJcbiAgICAgICAgICAgIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiXG4gICAgICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxuICAgICAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1jb2x1bW5dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ2NvbHVtbidcIlxuICAgICAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1yb3ddPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ3JvdydcIlxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcbiAgICAgICAgICAgIFtzdHlsZS5mbGV4LWRpcmVjdGlvbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpXCJcbiAgICAgICAgICAgIFtzdHlsZS5mbGV4LXdyYXBdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC13cmFwJylcIlxuICAgICAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXG4gICAgICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24taXRlbXMnKVwiXG4gICAgICAgICAgICBbc3R5bGUuYWxpZ24tY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1jb250ZW50JylcIlxuICAgICAgICAgICAgW2Z4TGF5b3V0XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2xheW91dCcpXCJcbiAgICAgICAgICAgIFtmeExheW91dEdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXG4gICAgICAgICAgICBbZnhMYXlvdXRBbGlnbl09XCJvcHRpb25zPy5meExheW91dEFsaWduXCJcbiAgICAgICAgICAgIFthdHRyLmZ4RmxleEZpbGxdPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiPjwvZmxleC1sYXlvdXQtcm9vdC13aWRnZXQ+XG4gICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxtYXQtY2FyZC1mb290ZXI+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvcHRpb25zPy5zaG93RXJyb3JzICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxuICAgIDwvbWF0LWNhcmQ+XG5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cImNvbnRhaW5lclR5cGUgPT09ICdleHBhbnNpb24tcGFuZWwnXCJcbiAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgICBbaGlkZVRvZ2dsZV09XCIhb3B0aW9ucz8uZXhwYW5kYWJsZVwiPlxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgIDxsZWdlbmQgKm5nSWY9XCJzZWN0aW9uVGl0bGVcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/LmxhYmVsSHRtbENsYXNzXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic2VjdGlvblRpdGxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmRlZCgpXCI+PC9sZWdlbmQ+XG4gICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIj5cbiAgICAgICAgPGZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0ICpuZ0lmPVwiZXhwYW5kZWRcIlxuICAgICAgICAgIFtsYXlvdXRdPVwibGF5b3V0Tm9kZS5pdGVtc1wiXG4gICAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXhcIlxuICAgICAgICAgIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleFwiXG4gICAgICAgICAgW2lzRmxleEl0ZW1dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnaXMtZmxleCcpXCJcbiAgICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXG4gICAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1yb3ddPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ3JvdydcIlxuICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2Rpc3BsYXknKVwiXG4gICAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxuICAgICAgICAgIFtzdHlsZS5mbGV4LXdyYXBdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC13cmFwJylcIlxuICAgICAgICAgIFtzdHlsZS5qdXN0aWZ5LWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnanVzdGlmeS1jb250ZW50JylcIlxuICAgICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcbiAgICAgICAgICBbc3R5bGUuYWxpZ24tY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1jb250ZW50JylcIlxuICAgICAgICAgIFtmeExheW91dF09XCJnZXRGbGV4QXR0cmlidXRlKCdsYXlvdXQnKVwiXG4gICAgICAgICAgW2Z4TGF5b3V0R2FwXT1cIm9wdGlvbnM/LmZ4TGF5b3V0R2FwXCJcbiAgICAgICAgICBbZnhMYXlvdXRBbGlnbl09XCJvcHRpb25zPy5meExheW91dEFsaWduXCJcbiAgICAgICAgICBbYXR0ci5meEZsZXhGaWxsXT1cIm9wdGlvbnM/LmZ4TGF5b3V0QWxpZ25cIj48L2ZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0PlxuICAgICAgPC9maWVsZHNldD5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvcHRpb25zPy5zaG93RXJyb3JzICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8uZXJyb3JNZXNzYWdlXCI+PC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPmAsXG4gIHN0eWxlczogW2BcbiAgICBmaWVsZHNldCB7IGJvcmRlcjogMDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9XG4gICAgLmxlZ2VuZCB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gICAgLmV4cGFuZGFibGUgPiAubGVnZW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICfilrYnOyBwYWRkaW5nLXJpZ2h0OiAuM2VtOyB9XG4gICAgLmV4cGFuZGVkID4gLmxlZ2VuZDpiZWZvcmUgeyBjb250ZW50OiAn4pa8JzsgcGFkZGluZy1yaWdodDogLjJlbTsgfVxuICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmxleExheW91dFNlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBjb250cm9sTmFtZTogc3RyaW5nO1xuICBjb250cm9sVmFsdWU6IGFueTtcbiAgY29udHJvbERpc2FibGVkID0gZmFsc2U7XG4gIGJvdW5kQ29udHJvbCA9IGZhbHNlO1xuICBvcHRpb25zOiBhbnk7XG4gIGV4cGFuZGVkID0gdHJ1ZTtcbiAgY29udGFpbmVyVHlwZSA9ICdkaXYnO1xuICBASW5wdXQoKSBsYXlvdXROb2RlOiBhbnk7XG4gIEBJbnB1dCgpIGxheW91dEluZGV4OiBudW1iZXJbXTtcbiAgQElucHV0KCkgZGF0YUluZGV4OiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGpzZjogSnNvblNjaGVtYUZvcm1TZXJ2aWNlXG4gICkgeyB9XG5cbiAgZ2V0IHNlY3Rpb25UaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5vdGl0bGUgPyBudWxsIDogdGhpcy5qc2Yuc2V0SXRlbVRpdGxlKHRoaXMpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5qc2YuaW5pdGlhbGl6ZUNvbnRyb2wodGhpcyk7XG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5sYXlvdXROb2RlLm9wdGlvbnMgfHwge307XG4gICAgdGhpcy5leHBhbmRlZCA9IHR5cGVvZiB0aGlzLm9wdGlvbnMuZXhwYW5kZWQgPT09ICdib29sZWFuJyA/XG4gICAgICB0aGlzLm9wdGlvbnMuZXhwYW5kZWQgOiAhdGhpcy5vcHRpb25zLmV4cGFuZGFibGU7XG4gICAgc3dpdGNoICh0aGlzLmxheW91dE5vZGUudHlwZSkge1xuICAgICAgY2FzZSAnc2VjdGlvbic6IGNhc2UgJ2FycmF5JzogY2FzZSAnZmllbGRzZXQnOiBjYXNlICdhZHZhbmNlZGZpZWxkc2V0JzpcbiAgICAgIGNhc2UgJ2F1dGhmaWVsZHNldCc6IGNhc2UgJ29wdGlvbmZpZWxkc2V0JzogY2FzZSAnc2VsZWN0ZmllbGRzZXQnOlxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnZmllbGRzZXQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhcmQnOlxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnY2FyZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXhwYW5zaW9uLXBhbmVsJzpcbiAgICAgICAgdGhpcy5jb250YWluZXJUeXBlID0gJ2V4cGFuc2lvbi1wYW5lbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogLy8gJ2RpdicsICdmbGV4JywgJ3RhYicsICdjb25kaXRpb25hbCcsICdhY3Rpb25zJ1xuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnZGl2JztcbiAgICB9XG4gIH1cblxuICB0b2dnbGVFeHBhbmRlZCgpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmV4cGFuZGFibGUpIHsgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkOyB9XG4gIH1cblxuICAvLyBTZXQgYXR0cmlidXRlcyBmb3IgZmxleGJveCBjb250YWluZXJcbiAgLy8gKGNoaWxkIGF0dHJpYnV0ZXMgYXJlIHNldCBpbiBmbGV4LWxheW91dC1yb290LmNvbXBvbmVudClcbiAgZ2V0RmxleEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIGNvbnN0IGZsZXhBY3RpdmU6IGJvb2xlYW4gPVxuICAgICAgdGhpcy5sYXlvdXROb2RlLnR5cGUgPT09ICdmbGV4JyB8fFxuICAgICAgISF0aGlzLm9wdGlvbnMuZGlzcGxheUZsZXggfHxcbiAgICAgIHRoaXMub3B0aW9ucy5kaXNwbGF5ID09PSAnZmxleCc7XG4gICAgLy8gaWYgKGF0dHJpYnV0ZSAhPT0gJ2ZsZXgnICYmICFmbGV4QWN0aXZlKSB7IHJldHVybiBudWxsOyB9XG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcbiAgICAgIGNhc2UgJ2lzLWZsZXgnOlxuICAgICAgICByZXR1cm4gZmxleEFjdGl2ZTtcbiAgICAgIGNhc2UgJ2Rpc3BsYXknOlxuICAgICAgICByZXR1cm4gZmxleEFjdGl2ZSA/ICdmbGV4JyA6ICdpbml0aWFsJztcbiAgICAgIGNhc2UgJ2ZsZXgtZGlyZWN0aW9uJzogY2FzZSAnZmxleC13cmFwJzpcbiAgICAgICAgY29uc3QgaW5kZXggPSBbJ2ZsZXgtZGlyZWN0aW9uJywgJ2ZsZXgtd3JhcCddLmluZGV4T2YoYXR0cmlidXRlKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbnNbJ2ZsZXgtZmxvdyddIHx8ICcnKS5zcGxpdCgvXFxzKy8pW2luZGV4XSB8fFxuICAgICAgICAgIHRoaXMub3B0aW9uc1thdHRyaWJ1dGVdIHx8IFsnY29sdW1uJywgJ25vd3JhcCddW2luZGV4XTtcbiAgICAgIGNhc2UgJ2p1c3RpZnktY29udGVudCc6IGNhc2UgJ2FsaWduLWl0ZW1zJzogY2FzZSAnYWxpZ24tY29udGVudCc6XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbYXR0cmlidXRlXTtcbiAgICAgIGNhc2UgJ2xheW91dCc6XG4gICAgICAgIHJldHVybiAodGhpcy5vcHRpb25zLmZ4TGF5b3V0IHx8ICdyb3cnKSArXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmZ4TGF5b3V0V3JhcCA/ICcgJyArIHRoaXMub3B0aW9ucy5meExheW91dFdyYXAgOiAnJztcblxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,53 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { JsonSchemaFormService } from '@ajsf/core';
3
+ export class MaterialAddReferenceComponent {
4
+ constructor(jsf) {
5
+ this.jsf = jsf;
6
+ }
7
+ ngOnInit() {
8
+ this.options = this.layoutNode.options || {};
9
+ }
10
+ get showAddButton() {
11
+ return !this.layoutNode.arrayItem ||
12
+ this.layoutIndex[this.layoutIndex.length - 1] < this.options.maxItems;
13
+ }
14
+ addItem(event) {
15
+ event.preventDefault();
16
+ this.jsf.addItem(this);
17
+ }
18
+ get buttonText() {
19
+ const parent = {
20
+ dataIndex: this.dataIndex.slice(0, -1),
21
+ layoutIndex: this.layoutIndex.slice(0, -1),
22
+ layoutNode: this.jsf.getParentNode(this),
23
+ };
24
+ return parent.layoutNode.add ||
25
+ this.jsf.setArrayItemTitle(parent, this.layoutNode, this.itemCount);
26
+ }
27
+ }
28
+ MaterialAddReferenceComponent.decorators = [
29
+ { type: Component, args: [{
30
+ // tslint:disable-next-line:component-selector
31
+ selector: 'material-add-reference-widget',
32
+ template: `
33
+ <section [class]="options?.htmlClass || ''" align="end">
34
+ <button mat-raised-button *ngIf="showAddButton"
35
+ [color]="options?.color || 'accent'"
36
+ [disabled]="options?.readonly"
37
+ (click)="addItem($event)">
38
+ <span *ngIf="options?.icon" [class]="options?.icon"></span>
39
+ <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
40
+ </button>
41
+ </section>`,
42
+ changeDetection: ChangeDetectionStrategy.Default
43
+ },] }
44
+ ];
45
+ MaterialAddReferenceComponent.ctorParameters = () => [
46
+ { type: JsonSchemaFormService }
47
+ ];
48
+ MaterialAddReferenceComponent.propDecorators = {
49
+ layoutNode: [{ type: Input }],
50
+ layoutIndex: [{ type: Input }],
51
+ dataIndex: [{ type: Input }]
52
+ };
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYWRkLXJlZmVyZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hanNmLW1hdGVyaWFsL3NyYy9saWIvd2lkZ2V0cy9tYXRlcmlhbC1hZGQtcmVmZXJlbmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFrQm5ELE1BQU0sT0FBTyw2QkFBNkI7SUFTeEMsWUFDVSxHQUEwQjtRQUExQixRQUFHLEdBQUgsR0FBRyxDQUF1QjtJQUNoQyxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO1lBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDMUUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLO1FBQ1gsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixNQUFNLE1BQU0sR0FBUTtZQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztTQUN6QyxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQzs7O1lBbERGLFNBQVMsU0FBQztnQkFDVCw4Q0FBOEM7Z0JBQzlDLFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLFFBQVEsRUFBRTs7Ozs7Ozs7O2VBU0c7Z0JBQ2IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87YUFDakQ7OztZQWpCUSxxQkFBcUI7Ozt5QkF1QjNCLEtBQUs7MEJBQ0wsS0FBSzt3QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnNvblNjaGVtYUZvcm1TZXJ2aWNlIH0gZnJvbSAnQGFqc2YvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdtYXRlcmlhbC1hZGQtcmVmZXJlbmNlLXdpZGdldCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNlY3Rpb24gW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiIGFsaWduPVwiZW5kXCI+XG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uICpuZ0lmPVwic2hvd0FkZEJ1dHRvblwiXG4gICAgICAgIFtjb2xvcl09XCJvcHRpb25zPy5jb2xvciB8fCAnYWNjZW50J1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb25zPy5yZWFkb25seVwiXG4gICAgICAgIChjbGljayk9XCJhZGRJdGVtKCRldmVudClcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb25zPy5pY29uXCIgW2NsYXNzXT1cIm9wdGlvbnM/Lmljb25cIj48L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwib3B0aW9ucz8udGl0bGVcIiBbaW5uZXJIVE1MXT1cImJ1dHRvblRleHRcIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NlY3Rpb24+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbEFkZFJlZmVyZW5jZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG9wdGlvbnM6IGFueTtcbiAgaXRlbUNvdW50OiBudW1iZXI7XG4gIHByZXZpb3VzTGF5b3V0SW5kZXg6IG51bWJlcltdO1xuICBwcmV2aW91c0RhdGFJbmRleDogbnVtYmVyW107XG4gIEBJbnB1dCgpIGxheW91dE5vZGU6IGFueTtcbiAgQElucHV0KCkgbGF5b3V0SW5kZXg6IG51bWJlcltdO1xuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUganNmOiBKc29uU2NoZW1hRm9ybVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmxheW91dE5vZGUub3B0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIGdldCBzaG93QWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sYXlvdXROb2RlLmFycmF5SXRlbSB8fFxuICAgICAgdGhpcy5sYXlvdXRJbmRleFt0aGlzLmxheW91dEluZGV4Lmxlbmd0aCAtIDFdIDwgdGhpcy5vcHRpb25zLm1heEl0ZW1zO1xuICB9XG5cbiAgYWRkSXRlbShldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5qc2YuYWRkSXRlbSh0aGlzKTtcbiAgfVxuXG4gIGdldCBidXR0b25UZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyZW50OiBhbnkgPSB7XG4gICAgICBkYXRhSW5kZXg6IHRoaXMuZGF0YUluZGV4LnNsaWNlKDAsIC0xKSxcbiAgICAgIGxheW91dEluZGV4OiB0aGlzLmxheW91dEluZGV4LnNsaWNlKDAsIC0xKSxcbiAgICAgIGxheW91dE5vZGU6IHRoaXMuanNmLmdldFBhcmVudE5vZGUodGhpcyksXG4gICAgfTtcbiAgICByZXR1cm4gcGFyZW50LmxheW91dE5vZGUuYWRkIHx8XG4gICAgICB0aGlzLmpzZi5zZXRBcnJheUl0ZW1UaXRsZShwYXJlbnQsIHRoaXMubGF5b3V0Tm9kZSwgdGhpcy5pdGVtQ291bnQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { JsonSchemaFormService, buildTitleMap } from '@ajsf/core';
3
+ export class MaterialButtonGroupComponent {
4
+ constructor(jsf) {
5
+ this.jsf = jsf;
6
+ this.controlDisabled = false;
7
+ this.boundControl = false;
8
+ this.radiosList = [];
9
+ this.vertical = false;
10
+ }
11
+ ngOnInit() {
12
+ this.options = this.layoutNode.options || {};
13
+ this.radiosList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, true);
14
+ this.jsf.initializeControl(this);
15
+ }
16
+ updateValue(value) {
17
+ this.options.showErrors = true;
18
+ this.jsf.updateValue(this, value);
19
+ }
20
+ }
21
+ MaterialButtonGroupComponent.decorators = [
22
+ { type: Component, args: [{
23
+ // tslint:disable-next-line:component-selector
24
+ selector: 'material-button-group-widget',
25
+ template: `
26
+ <div>
27
+ <div *ngIf="options?.title">
28
+ <label
29
+ [attr.for]="'control' + layoutNode?._id"
30
+ [class]="options?.labelHtmlClass || ''"
31
+ [style.display]="options?.notitle ? 'none' : ''"
32
+ [innerHTML]="options?.title"></label>
33
+ </div>
34
+ <mat-button-toggle-group
35
+ [attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
36
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
37
+ [attr.required]="options?.required"
38
+ [disabled]="controlDisabled || options?.readonly"
39
+ [name]="controlName"
40
+ [value]="controlValue"
41
+ [vertical]="!!options.vertical">
42
+ <mat-button-toggle *ngFor="let radioItem of radiosList"
43
+ [id]="'control' + layoutNode?._id + '/' + radioItem?.name"
44
+ [value]="radioItem?.value"
45
+ (click)="updateValue(radioItem?.value)">
46
+ <span [innerHTML]="radioItem?.name"></span>
47
+ </mat-button-toggle>
48
+ </mat-button-toggle-group>
49
+ <mat-error *ngIf="options?.showErrors && options?.errorMessage"
50
+ [innerHTML]="options?.errorMessage"></mat-error>
51
+ </div>`,
52
+ styles: [` mat-error { font-size: 75%; } `]
53
+ },] }
54
+ ];
55
+ MaterialButtonGroupComponent.ctorParameters = () => [
56
+ { type: JsonSchemaFormService }
57
+ ];
58
+ MaterialButtonGroupComponent.propDecorators = {
59
+ layoutNode: [{ type: Input }],
60
+ layoutIndex: [{ type: Input }],
61
+ dataIndex: [{ type: Input }]
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fqc2YtbWF0ZXJpYWwvc3JjL2xpYi93aWRnZXRzL21hdGVyaWFsLWJ1dHRvbi1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQW1DbEUsTUFBTSxPQUFPLDRCQUE0QjtJQWF2QyxZQUNVLEdBQTBCO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBVnBDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFHLEtBQUssQ0FBQztJQU9iLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7O1lBN0RGLFNBQVMsU0FBQztnQkFDVCw4Q0FBOEM7Z0JBQzlDLFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0EwQkQ7eUJBQ0UsaUNBQWlDO2FBQzdDOzs7WUFsQ1EscUJBQXFCOzs7eUJBNEMzQixLQUFLOzBCQUNMLEtBQUs7d0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnNvblNjaGVtYUZvcm1TZXJ2aWNlLCBidWlsZFRpdGxlTWFwIH0gZnJvbSAnQGFqc2YvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdtYXRlcmlhbC1idXR0b24tZ3JvdXAtd2lkZ2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnM/LnRpdGxlXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIFthdHRyLmZvcl09XCInY29udHJvbCcgKyBsYXlvdXROb2RlPy5faWRcIlxuICAgICAgICAgIFtjbGFzc109XCJvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJ1wiXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwib3B0aW9ucz8ubm90aXRsZSA/ICdub25lJyA6ICcnXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LnRpdGxlXCI+PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkICsgJ1N0YXR1cydcIlxuICAgICAgICBbYXR0ci5yZWFkb25seV09XCJvcHRpb25zPy5yZWFkb25seSA/ICdyZWFkb25seScgOiBudWxsXCJcbiAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwib3B0aW9ucz8ucmVxdWlyZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbERpc2FibGVkIHx8IG9wdGlvbnM/LnJlYWRvbmx5XCJcbiAgICAgICAgW25hbWVdPVwiY29udHJvbE5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwiY29udHJvbFZhbHVlXCJcbiAgICAgICAgW3ZlcnRpY2FsXT1cIiEhb3B0aW9ucy52ZXJ0aWNhbFwiPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgKm5nRm9yPVwibGV0IHJhZGlvSXRlbSBvZiByYWRpb3NMaXN0XCJcbiAgICAgICAgICBbaWRdPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkICsgJy8nICsgcmFkaW9JdGVtPy5uYW1lXCJcbiAgICAgICAgICBbdmFsdWVdPVwicmFkaW9JdGVtPy52YWx1ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlKHJhZGlvSXRlbT8udmFsdWUpXCI+XG4gICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyYWRpb0l0ZW0/Lm5hbWVcIj48L3NwYW4+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5gLFxuICAgIHN0eWxlczogW2AgbWF0LWVycm9yIHsgZm9udC1zaXplOiA3NSU7IH0gYF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsQnV0dG9uR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBjb250cm9sTmFtZTogc3RyaW5nO1xuICBjb250cm9sVmFsdWU6IGFueTtcbiAgY29udHJvbERpc2FibGVkID0gZmFsc2U7XG4gIGJvdW5kQ29udHJvbCA9IGZhbHNlO1xuICBvcHRpb25zOiBhbnk7XG4gIHJhZGlvc0xpc3Q6IGFueVtdID0gW107XG4gIHZlcnRpY2FsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxheW91dE5vZGU6IGFueTtcbiAgQElucHV0KCkgbGF5b3V0SW5kZXg6IG51bWJlcltdO1xuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUganNmOiBKc29uU2NoZW1hRm9ybVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmxheW91dE5vZGUub3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLnJhZGlvc0xpc3QgPSBidWlsZFRpdGxlTWFwKFxuICAgICAgdGhpcy5vcHRpb25zLnRpdGxlTWFwIHx8IHRoaXMub3B0aW9ucy5lbnVtTmFtZXMsXG4gICAgICB0aGlzLm9wdGlvbnMuZW51bSwgdHJ1ZVxuICAgICk7XG4gICAgdGhpcy5qc2YuaW5pdGlhbGl6ZUNvbnRyb2wodGhpcyk7XG4gIH1cblxuICB1cGRhdGVWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMub3B0aW9ucy5zaG93RXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmpzZi51cGRhdGVWYWx1ZSh0aGlzLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,60 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { JsonSchemaFormService, hasOwn } from '@ajsf/core';
3
+ export class MaterialButtonComponent {
4
+ constructor(jsf) {
5
+ this.jsf = jsf;
6
+ this.controlDisabled = false;
7
+ this.boundControl = false;
8
+ }
9
+ ngOnInit() {
10
+ this.options = this.layoutNode.options || {};
11
+ this.jsf.initializeControl(this);
12
+ if (hasOwn(this.options, 'disabled')) {
13
+ this.controlDisabled = this.options.disabled;
14
+ }
15
+ else if (this.jsf.formOptions.disableInvalidSubmit) {
16
+ this.controlDisabled = !this.jsf.isValid;
17
+ this.jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
18
+ }
19
+ }
20
+ updateValue(event) {
21
+ if (typeof this.options.onClick === 'function') {
22
+ this.options.onClick(event);
23
+ }
24
+ else {
25
+ this.jsf.updateValue(this, event.target.value);
26
+ }
27
+ }
28
+ }
29
+ MaterialButtonComponent.decorators = [
30
+ { type: Component, args: [{
31
+ // tslint:disable-next-line:component-selector
32
+ selector: 'material-button-widget',
33
+ template: `
34
+ <div class="button-row" [class]="options?.htmlClass || ''">
35
+ <button mat-raised-button
36
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
37
+ [attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
38
+ [color]="options?.color || 'primary'"
39
+ [disabled]="controlDisabled || options?.readonly"
40
+ [id]="'control' + layoutNode?._id"
41
+ [name]="controlName"
42
+ [type]="layoutNode?.type"
43
+ [value]="controlValue"
44
+ (click)="updateValue($event)">
45
+ <mat-icon *ngIf="options?.icon" class="mat-24">{{options?.icon}}</mat-icon>
46
+ <span *ngIf="options?.title" [innerHTML]="options?.title"></span>
47
+ </button>
48
+ </div>`,
49
+ styles: [` button { margin-top: 10px; } `]
50
+ },] }
51
+ ];
52
+ MaterialButtonComponent.ctorParameters = () => [
53
+ { type: JsonSchemaFormService }
54
+ ];
55
+ MaterialButtonComponent.propDecorators = {
56
+ layoutNode: [{ type: Input }],
57
+ layoutIndex: [{ type: Input }],
58
+ dataIndex: [{ type: Input }]
59
+ };
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fqc2YtbWF0ZXJpYWwvc3JjL2xpYi93aWRnZXRzL21hdGVyaWFsLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQXVCM0QsTUFBTSxPQUFPLHVCQUF1QjtJQVdsQyxZQUNVLEdBQTBCO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBUnBDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBUWpCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDOUM7YUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFO1lBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0U7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7OztZQXJERixTQUFTLFNBQUM7Z0JBQ1QsOENBQThDO2dCQUM5QyxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztXQWVEO3lCQUNFLGdDQUFnQzthQUM1Qzs7O1lBdEJRLHFCQUFxQjs7O3lCQThCM0IsS0FBSzswQkFDTCxLQUFLO3dCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpzb25TY2hlbWFGb3JtU2VydmljZSwgaGFzT3duIH0gZnJvbSAnQGFqc2YvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbWF0ZXJpYWwtYnV0dG9uLXdpZGdldCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1yb3dcIiBbY2xhc3NdPVwib3B0aW9ucz8uaHRtbENsYXNzIHx8ICcnXCI+XG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIFthdHRyLnJlYWRvbmx5XT1cIm9wdGlvbnM/LnJlYWRvbmx5ID8gJ3JlYWRvbmx5JyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidjb250cm9sJyArIGxheW91dE5vZGU/Ll9pZCArICdTdGF0dXMnXCJcbiAgICAgICAgW2NvbG9yXT1cIm9wdGlvbnM/LmNvbG9yIHx8ICdwcmltYXJ5J1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sRGlzYWJsZWQgfHwgb3B0aW9ucz8ucmVhZG9ubHlcIlxuICAgICAgICBbaWRdPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkXCJcbiAgICAgICAgW25hbWVdPVwiY29udHJvbE5hbWVcIlxuICAgICAgICBbdHlwZV09XCJsYXlvdXROb2RlPy50eXBlXCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2xWYWx1ZVwiXG4gICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9wdGlvbnM/Lmljb25cIiBjbGFzcz1cIm1hdC0yNFwiPnt7b3B0aW9ucz8uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb25zPy50aXRsZVwiIFtpbm5lckhUTUxdPVwib3B0aW9ucz8udGl0bGVcIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5gLFxuICAgIHN0eWxlczogW2AgYnV0dG9uIHsgbWFyZ2luLXRvcDogMTBweDsgfSBgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBjb250cm9sTmFtZTogc3RyaW5nO1xuICBjb250cm9sVmFsdWU6IGFueTtcbiAgY29udHJvbERpc2FibGVkID0gZmFsc2U7XG4gIGJvdW5kQ29udHJvbCA9IGZhbHNlO1xuICBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpIGxheW91dE5vZGU6IGFueTtcbiAgQElucHV0KCkgbGF5b3V0SW5kZXg6IG51bWJlcltdO1xuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUganNmOiBKc29uU2NoZW1hRm9ybVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmxheW91dE5vZGUub3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLmpzZi5pbml0aWFsaXplQ29udHJvbCh0aGlzKTtcbiAgICBpZiAoaGFzT3duKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVkJykpIHtcbiAgICAgIHRoaXMuY29udHJvbERpc2FibGVkID0gdGhpcy5vcHRpb25zLmRpc2FibGVkO1xuICAgIH0gZWxzZSBpZiAodGhpcy5qc2YuZm9ybU9wdGlvbnMuZGlzYWJsZUludmFsaWRTdWJtaXQpIHtcbiAgICAgIHRoaXMuY29udHJvbERpc2FibGVkID0gIXRoaXMuanNmLmlzVmFsaWQ7XG4gICAgICB0aGlzLmpzZi5pc1ZhbGlkQ2hhbmdlcy5zdWJzY3JpYmUoaXNWYWxpZCA9PiB0aGlzLmNvbnRyb2xEaXNhYmxlZCA9ICFpc1ZhbGlkKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWYWx1ZShldmVudCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLm9uQ2xpY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5vbkNsaWNrKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qc2YudXBkYXRlVmFsdWUodGhpcywgZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==