@bizdoc/core 1.16.27 → 1.16.28

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 (42) hide show
  1. package/assets/themes/brown.min.css +8 -8
  2. package/assets/themes/dark.min.css +8 -8
  3. package/assets/themes/deep-purple-light-blue.min.css +8 -8
  4. package/assets/themes/deep-purple-teal.min.css +8 -8
  5. package/assets/themes/default.min.css +8 -8
  6. package/assets/themes/green.min.css +8 -8
  7. package/assets/themes/indigo.min.css +8 -8
  8. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +3 -3
  9. package/esm2020/lib/admin/localized-string.component.mjs +52 -0
  10. package/esm2020/lib/core/controls/signature.input.mjs +149 -0
  11. package/esm2020/lib/core/mailbox.service.mjs +11 -2
  12. package/esm2020/lib/core/models.mjs +1 -1
  13. package/esm2020/lib/core/pipes/localized-string.pipe.mjs +24 -0
  14. package/esm2020/lib/core/slots/pane-ref.mjs +3 -2
  15. package/esm2020/lib/core/translations.mjs +45 -4
  16. package/esm2020/lib/reports/report-ref.mjs +1 -1
  17. package/esm2020/lib/reports/report-viewer.component.mjs +5 -2
  18. package/esm2020/lib/shared.module.mjs +11 -8
  19. package/esm2020/lib/system.module.mjs +8 -11
  20. package/esm2020/public-api.mjs +3 -2
  21. package/fesm2015/bizdoc-core.mjs +346 -323
  22. package/fesm2015/bizdoc-core.mjs.map +1 -1
  23. package/fesm2020/bizdoc-core.mjs +346 -320
  24. package/fesm2020/bizdoc-core.mjs.map +1 -1
  25. package/lib/admin/localized-string.component.d.ts +20 -0
  26. package/lib/core/controls/signature.input.d.ts +53 -0
  27. package/lib/core/mailbox.service.d.ts +2 -1
  28. package/lib/core/models.d.ts +7 -0
  29. package/lib/core/pipes/localized-string.pipe.d.ts +11 -0
  30. package/lib/core/slots/pane-ref.d.ts +10 -9
  31. package/lib/core/translations.d.ts +41 -0
  32. package/lib/reports/report-ref.d.ts +2 -0
  33. package/lib/shared.module.d.ts +137 -136
  34. package/lib/system.module.d.ts +31 -32
  35. package/package.json +11 -9
  36. package/public-api.d.ts +3 -2
  37. package/esm2020/lib/admin/configuration-designer/elements/survey-form.component.mjs +0 -44
  38. package/esm2020/lib/admin/form/survey/survey.component.mjs +0 -180
  39. package/esm2020/lib/compose/survey/survey.component.mjs +0 -73
  40. package/lib/admin/configuration-designer/elements/survey-form.component.d.ts +0 -18
  41. package/lib/admin/form/survey/survey.component.d.ts +0 -123
  42. package/lib/compose/survey/survey.component.d.ts +0 -17
@@ -1,73 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Component } from "@angular/core";
3
- import { Validators } from "@angular/forms";
4
- import { BizDoc } from "../../core/decorators";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/forms";
7
- import * as i2 from "../form-ref";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/flex-layout/flex";
10
- import * as i5 from "@syncfusion/ej2-angular-richtexteditor";
11
- import * as i6 from "@angular/material/datepicker";
12
- import * as i7 from "@angular/material/radio";
13
- import * as i8 from "@angular/material/form-field";
14
- import * as i9 from "@angular/material/checkbox";
15
- import * as i10 from "@angular/cdk/text-field";
16
- import * as i11 from "@angular/material/input";
17
- import * as i12 from "../../core/controls/select.input";
18
- import * as i13 from "../../core/controls/auto-complete.input";
19
- import * as i14 from "../../core/controls/address.input";
20
- import * as i15 from "../../core/pipes/calendar.pipe";
21
- import * as i16 from "../../core/pipes/translate.pipe";
22
- import * as i17 from "../../core/pipes/sanitize-html.pipe";
23
- let SurveyFormComponent = class SurveyFormComponent {
24
- constructor(_fb, ref) {
25
- this._fb = _fb;
26
- this.metadata = ref.options;
27
- this.form = _fb.group({});
28
- this.metadata.questions.forEach(q => {
29
- const ctrl = _fb.control(null);
30
- if (q.required)
31
- ctrl.addValidators(Validators.required);
32
- if (q.defaultValue !== undefined)
33
- ctrl.setValue(q.defaultValue);
34
- if (q.type === 'Text') {
35
- if (q.pattern)
36
- ctrl.addValidators(Validators.pattern(q.pattern));
37
- if (q.minLength)
38
- ctrl.addValidators(Validators.minLength(q.minLength));
39
- if (q.maxLength)
40
- ctrl.addValidators(Validators.minLength(q.maxLength));
41
- }
42
- else if (q.type === 'YesNo') {
43
- if (q.defaultValue && q.required)
44
- ctrl.addValidators(Validators.requiredTrue);
45
- }
46
- else if (q.type === 'Checkbox') {
47
- if (q.required)
48
- ctrl.addValidators(Validators.requiredTrue);
49
- }
50
- else if (q.type === 'Number') {
51
- if (q.min)
52
- ctrl.addValidators(Validators.max(q.max));
53
- if (q.min)
54
- ctrl.addValidators(Validators.max(q.max));
55
- }
56
- this.form.addControl(q.name, ctrl);
57
- });
58
- }
59
- onBind(data, version) {
60
- this.data = data;
61
- }
62
- };
63
- SurveyFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.FormRef }], target: i0.ɵɵFactoryTarget.Component });
64
- SurveyFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SurveyFormComponent, selector: "ng-component", ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngSwitchCase=\"'edit'\">\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <mat-form-field *ngSwitchCase=\"'Select'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-select [placeholder]=\"q.placeholder\" [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Autocomplete'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-autocomplete [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Date'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <input matInput\r\n [placeholder]=\"q.placeholder\"\r\n [formControlName]=\"q.name\"\r\n [required]=\"q.required\"\r\n [min]=\"q.min\"\r\n [max]=\"q.max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Text'\" appearance=\"outline\">\r\n <textarea [placeholder]=\"q.placeholder\" matInput [formControlName]=\"q.name\" cdkTextareaAutosize\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></textarea>\r\n </mat-form-field>\r\n <ejs-richtexteditor *ngSwitchCase=\"'Html'\"\r\n [placeholder]=\"q.placeholder\" [formControlName]=\"q.name\"\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></ejs-richtexteditor>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\">\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchCase=\"'Number'\">\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"number\" />\r\n </mat-form-field>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\">\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <bizdoc-address [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchCase=\"'Address'\"></bizdoc-address>\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"tel\" *ngSwitchCase=\"'PhoneNumber'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"email\" *ngSwitchCase=\"'EmailAddress'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"url\" *ngSwitchCase=\"'Url'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"password\" *ngSwitchCase=\"'Password'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchDefault />\r\n </ng-container>\r\n </mat-form-field>\r\n &nbsp;\r\n </ng-container>\r\n </section>\r\n </form>\r\n <div *ngSwitchDefault>\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <div *ngSwitchCase=\"'Select'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Autocomplete'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Date'\">\r\n <span>{{model[q.name] | amCalendar}}</span>\r\n </div>\r\n <p *ngSwitchCase=\"'Text'\" [innerHTML]=\"model[q.name]\"></p>\r\n <p *ngSwitchCase=\"'Html'\" [innerHTML]=\"model[q.name]|sanitizeHtml\"></p>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\" disabled>\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div *ngSwitchCase=\"'Number'\">\r\n <span>{{model[q.name]|number}}</span>\r\n </div>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\" disabled>\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <a *ngSwitchCase=\"'PhoneNumber'\" [href]=\"'tel:'+model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'EmailAddress'\" [href]=\"model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'Url'\" [href]=\"model[q.name]\">\r\n {{model[q.name]}}\r\n </a>\r\n <span *ngSwitchCase=\"'Password'\">\r\n </span>\r\n <span *ngSwitchDefault>{{model[q.name]}}</span>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </section>\r\n </div>\r\n</ng-container>\r\n", styles: ["form{padding:8px}section{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.RichTextEditorComponent, selector: "ejs-richtexteditor", inputs: ["autoSaveOnIdle", "backgroundColor", "bulletFormatList", "cssClass", "editorMode", "enableAutoUrl", "enableHtmlEncode", "enableHtmlSanitizer", "enablePersistence", "enableResize", "enableRtl", "enableTabKey", "enableXhtml", "enabled", "enterKey", "fileManagerSettings", "floatingToolbarOffset", "fontColor", "fontFamily", "fontSize", "format", "formatter", "height", "htmlAttributes", "iframeSettings", "inlineMode", "insertImageSettings", "keyConfig", "locale", "maxLength", "numberFormatList", "pasteCleanupSettings", "placeholder", "quickToolbarSettings", "readonly", "saveInterval", "shiftEnterKey", "showCharCount", "tableSettings", "toolbarSettings", "undoRedoSteps", "undoRedoTimer", "value", "valueTemplate", "width"], outputs: ["actionBegin", "actionComplete", "afterImageDelete", "afterPasteCleanup", "beforeDialogClose", "beforeDialogOpen", "beforeImageDrop", "beforeImageUpload", "beforePasteCleanup", "beforeQuickToolbarOpen", "beforeSanitizeHtml", "blur", "change", "created", "destroyed", "dialogClose", "dialogOpen", "focus", "imageRemoving", "imageSelected", "imageUploadFailed", "imageUploadSuccess", "imageUploading", "quickToolbarClose", "quickToolbarOpen", "resizeStart", "resizeStop", "resizing", "toolbarClick", "toolbarStatusUpdate", "updatedToolbarStatus", "valueChange"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i7.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i7.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i10.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "component", type: i13.TypeAutocomplete, selector: "bizdoc-autocomplete", inputs: ["type", "placeholder", "text", "required", "disabled", "value", "minimumChars", "textFormControlName", "textFormControl"], outputs: ["textChange", "optionSelected"] }, { kind: "component", type: i14.AddressInput, selector: "bizdoc-address", inputs: ["debounce", "location", "country", "placeholder", "required", "disabled", "value"], outputs: ["optionSelected"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i15.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }, { kind: "pipe", type: i17.SanitizeHtmlPipe, name: "sanitizeHtml" }] });
65
- SurveyFormComponent = __decorate([
66
- BizDoc({ selector: 'bizdoc-survey-form' })
67
- ], SurveyFormComponent);
68
- export { SurveyFormComponent };
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyFormComponent, decorators: [{
70
- type: Component,
71
- args: [{ template: "<ng-container [ngSwitch]=\"mode\">\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngSwitchCase=\"'edit'\">\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <mat-form-field *ngSwitchCase=\"'Select'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-select [placeholder]=\"q.placeholder\" [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Autocomplete'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-autocomplete [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Date'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <input matInput\r\n [placeholder]=\"q.placeholder\"\r\n [formControlName]=\"q.name\"\r\n [required]=\"q.required\"\r\n [min]=\"q.min\"\r\n [max]=\"q.max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Text'\" appearance=\"outline\">\r\n <textarea [placeholder]=\"q.placeholder\" matInput [formControlName]=\"q.name\" cdkTextareaAutosize\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></textarea>\r\n </mat-form-field>\r\n <ejs-richtexteditor *ngSwitchCase=\"'Html'\"\r\n [placeholder]=\"q.placeholder\" [formControlName]=\"q.name\"\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></ejs-richtexteditor>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\">\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchCase=\"'Number'\">\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"number\" />\r\n </mat-form-field>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\">\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <bizdoc-address [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchCase=\"'Address'\"></bizdoc-address>\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"tel\" *ngSwitchCase=\"'PhoneNumber'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"email\" *ngSwitchCase=\"'EmailAddress'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"url\" *ngSwitchCase=\"'Url'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"password\" *ngSwitchCase=\"'Password'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchDefault />\r\n </ng-container>\r\n </mat-form-field>\r\n &nbsp;\r\n </ng-container>\r\n </section>\r\n </form>\r\n <div *ngSwitchDefault>\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <div *ngSwitchCase=\"'Select'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Autocomplete'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Date'\">\r\n <span>{{model[q.name] | amCalendar}}</span>\r\n </div>\r\n <p *ngSwitchCase=\"'Text'\" [innerHTML]=\"model[q.name]\"></p>\r\n <p *ngSwitchCase=\"'Html'\" [innerHTML]=\"model[q.name]|sanitizeHtml\"></p>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\" disabled>\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div *ngSwitchCase=\"'Number'\">\r\n <span>{{model[q.name]|number}}</span>\r\n </div>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\" disabled>\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <a *ngSwitchCase=\"'PhoneNumber'\" [href]=\"'tel:'+model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'EmailAddress'\" [href]=\"model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'Url'\" [href]=\"model[q.name]\">\r\n {{model[q.name]}}\r\n </a>\r\n <span *ngSwitchCase=\"'Password'\">\r\n </span>\r\n <span *ngSwitchDefault>{{model[q.name]}}</span>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </section>\r\n </div>\r\n</ng-container>\r\n", styles: ["form{padding:8px}section{display:block}\n"] }]
72
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.FormRef }]; } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9zdXJ2ZXkvc3VydmV5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9zdXJ2ZXkvc3VydmV5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3hDLElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW1CO0lBRzlCLFlBQW9CLEdBQWdCLEVBQ2xDLEdBQWlDO1FBRGYsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUVsQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLFFBQVE7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsSUFBSyxDQUFZLENBQUMsWUFBWSxLQUFLLFNBQVM7Z0JBQzFDLElBQUksQ0FBQyxRQUFRLENBQUUsQ0FBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3JCLElBQUssQ0FBVSxDQUFDLE9BQU87b0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBRSxDQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsSUFBSyxDQUFVLENBQUMsU0FBUztvQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFFLENBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxJQUFLLENBQVUsQ0FBQyxTQUFTO29CQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUUsQ0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDbkU7aUJBQ0ksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxRQUFRO29CQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUMvQztpQkFDSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUM5QixJQUFJLENBQUMsQ0FBQyxRQUFRO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQy9DO2lCQUNJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLElBQUssQ0FBWSxDQUFDLEdBQUc7b0JBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBRSxDQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsSUFBSyxDQUFZLENBQUMsR0FBRztvQkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFFLENBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3pEO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxNQUFNLENBQUMsSUFBd0IsRUFBRSxPQUFhO1FBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7O2dIQTNDVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixvRENiaEMsMjRNQXFHQTtBRHhGYSxtQkFBbUI7SUFEL0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLENBQUM7R0FDOUIsbUJBQW1CLENBK0MvQjtTQS9DWSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFML0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU3VydmV5TWV0YWRhdGEsIFRleHQsIE51bWJlciB9IGZyb20gXCIuLi8uLi9hZG1pbi9mb3JtL3N1cnZleS9zdXJ2ZXkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZvcm1Db21wb25lbnQsIFZpZXdNb2RlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYmFzZVwiO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgRm9ybVJlZiB9IGZyb20gXCIuLi9mb3JtLXJlZlwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICdzdXJ2ZXkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydzdXJ2ZXkuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXN1cnZleS1mb3JtJyB9KVxyXG5leHBvcnQgY2xhc3MgU3VydmV5Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEZvcm1Db21wb25lbnQ8YW55PiB7XHJcbiAgbWV0YWRhdGE6IFN1cnZleU1ldGFkYXRhO1xyXG4gIGRhdGE6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICByZWY6IEZvcm1SZWY8YW55LCBTdXJ2ZXlNZXRhZGF0YT4pIHtcclxuICAgIHRoaXMubWV0YWRhdGEgPSByZWYub3B0aW9ucztcclxuICAgIHRoaXMuZm9ybSA9IF9mYi5ncm91cCh7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubWV0YWRhdGEucXVlc3Rpb25zLmZvckVhY2gocSA9PiB7XHJcbiAgICAgIGNvbnN0IGN0cmwgPSBfZmIuY29udHJvbChudWxsKTtcclxuICAgICAgaWYgKHEucmVxdWlyZWQpXHJcbiAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBpZiAoKHEgYXMgTnVtYmVyKS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZClcclxuICAgICAgICBjdHJsLnNldFZhbHVlKChxIGFzIE51bWJlcikuZGVmYXVsdFZhbHVlKTtcclxuICAgICAgaWYgKHEudHlwZSA9PT0gJ1RleHQnKSB7XHJcbiAgICAgICAgaWYgKChxIGFzIFRleHQpLnBhdHRlcm4pXHJcbiAgICAgICAgICBjdHJsLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5wYXR0ZXJuKChxIGFzIFRleHQpLnBhdHRlcm4pKTtcclxuICAgICAgICBpZiAoKHEgYXMgVGV4dCkubWluTGVuZ3RoKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWluTGVuZ3RoKChxIGFzIFRleHQpLm1pbkxlbmd0aCkpO1xyXG4gICAgICAgIGlmICgocSBhcyBUZXh0KS5tYXhMZW5ndGgpXHJcbiAgICAgICAgICBjdHJsLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5taW5MZW5ndGgoKHEgYXMgVGV4dCkubWF4TGVuZ3RoKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocS50eXBlID09PSAnWWVzTm8nKSB7XHJcbiAgICAgICAgaWYgKHEuZGVmYXVsdFZhbHVlICYmIHEucmVxdWlyZWQpXHJcbiAgICAgICAgICBjdHJsLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHEudHlwZSA9PT0gJ0NoZWNrYm94Jykge1xyXG4gICAgICAgIGlmIChxLnJlcXVpcmVkKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChxLnR5cGUgPT09ICdOdW1iZXInKSB7XHJcbiAgICAgICAgaWYgKChxIGFzIE51bWJlcikubWluKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWF4KChxIGFzIE51bWJlcikubWF4KSk7XHJcbiAgICAgICAgaWYgKChxIGFzIE51bWJlcikubWluKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWF4KChxIGFzIE51bWJlcikubWF4KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2wocS5uYW1lLCBjdHJsKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+O1xyXG4gIG1vZGU6IFZpZXdNb2RlO1xyXG4gIG9uQmluZChkYXRhOiBEb2N1bWVudE1vZGVsPGFueT4sIHZlcnNpb24/OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgfVxyXG4gIC8vICBvblNhdmUoKSB7XHJcbiAgLy8gICAgcmV0dXJuIHRydWU7XHJcbiAgLy8gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtb2RlXCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKm5nU3dpdGNoQ2FzZT1cIidlZGl0J1wiPlxyXG4gICAgPHNlY3Rpb24gKm5nRm9yPVwibGV0IHEgb2YgbWV0YWRhdGEucXVlc3Rpb25zXCI+XHJcbiAgICAgIDxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7cS5sYWJlbH19PC9oMj5cclxuICAgICAgPHAgY2xhc3M9XCJtYXQtYm9keVwiICpuZ0lmPVwicS5kZXNjcmlwdGlvblwiPnt7cS5kZXNjcmlwdGlvbn19PC9wPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJxLnR5cGVcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidTZWxlY3QnXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3txLnBsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxiaXpkb2Mtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCJxLnBsYWNlaG9sZGVyXCIgW3R5cGVdPVwicS5kYXRhVHlwZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgW3JlcXVpcmVkXT1cInEucmVxdWlyZWRcIj48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidBdXRvY29tcGxldGUnXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3txLnBsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxiaXpkb2MtYXV0b2NvbXBsZXRlIFt0eXBlXT1cInEuZGF0YVR5cGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCI+PC9iaXpkb2MtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInRGF0ZSdcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57e3EucGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInEucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCJcclxuICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicS5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgW21pbl09XCJxLm1pblwiXHJcbiAgICAgICAgICAgICAgICAgW21heF09XCJxLm1heFwiXHJcbiAgICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgLz5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2Zvcl09XCJwaWNrZXJcIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInVGV4dCdcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPHRleHRhcmVhIFtwbGFjZWhvbGRlcl09XCJxLnBsYWNlaG9sZGVyXCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiBjZGtUZXh0YXJlYUF1dG9zaXplXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInEucmVxdWlyZWRcIiBbbWlubGVuZ3RoXT1cInEubWluTGVuZ3RoXCIgW21heGxlbmd0aF09XCJxLm1heExlbmd0aFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8ZWpzLXJpY2h0ZXh0ZWRpdG9yICpuZ1N3aXRjaENhc2U9XCInSHRtbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInEucGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicS5yZXF1aXJlZFwiIFttaW5sZW5ndGhdPVwicS5taW5MZW5ndGhcIiBbbWF4bGVuZ3RoXT1cInEubWF4TGVuZ3RoXCI+PC9lanMtcmljaHRleHRlZGl0b3I+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiICpuZ1N3aXRjaENhc2U9XCInQ2hlY2tib3gnXCI+e3txLmxhYmVsfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidDaG9pY2UnXCI+XHJcbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiby5rZXlcIiAqbmdGb3I9XCJsZXQgbyBvZiBxLm9wdGlvbnMgfCBrZXl2YWx1ZVwiPnt7by52YWx1ZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZ4RmxleCAqbmdTd2l0Y2hDYXNlPVwiJ051bWJlcidcIj5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiB0eXBlPVwibnVtYmVyXCIgLz5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ1llc05vJ1wiPlxyXG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cInRydWVcIj57eydZZXMnfHRyYW5zbGF0ZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cImZhbHNlXCI+e3snTm8nfHRyYW5zbGF0ZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZ4RmxleCAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicS5raW5kXCI+XHJcbiAgICAgICAgICAgIDxiaXpkb2MtYWRkcmVzcyBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FkZHJlc3MnXCI+PC9iaXpkb2MtYWRkcmVzcz5cclxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJxLnBsYWNlaG9sZGVyXCIgW3JlcXVpcmVkXT1cInEucmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiIHR5cGU9XCJ0ZWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ1Bob25lTnVtYmVyJ1wiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiB0eXBlPVwiZW1haWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ0VtYWlsQWRkcmVzcydcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInEucGxhY2Vob2xkZXJcIiBbcmVxdWlyZWRdPVwicS5yZXF1aXJlZFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgdHlwZT1cInVybFwiICpuZ1N3aXRjaENhc2U9XCInVXJsJ1wiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiB0eXBlPVwicGFzc3dvcmRcIiAqbmdTd2l0Y2hDYXNlPVwiJ1Bhc3N3b3JkJ1wiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hEZWZhdWx0IC8+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICZuYnNwO1xyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L2Zvcm0+XHJcbiAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgPHNlY3Rpb24gKm5nRm9yPVwibGV0IHEgb2YgbWV0YWRhdGEucXVlc3Rpb25zXCI+XHJcbiAgICAgIDxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7cS5sYWJlbH19PC9oMj5cclxuICAgICAgPHAgY2xhc3M9XCJtYXQtYm9keVwiICpuZ0lmPVwicS5kZXNjcmlwdGlvblwiPnt7cS5kZXNjcmlwdGlvbn19PC9wPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJxLnR5cGVcIj5cclxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInU2VsZWN0J1wiPlxyXG4gICAgICAgICAgPHNwYW4+e3ttb2RlbFtxLm5hbWVdIHwgZGF0YVR5cGU6IHEuZGF0YVR5cGUgfCBhc3luY319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidBdXRvY29tcGxldGUnXCI+XHJcbiAgICAgICAgICA8c3Bhbj57e21vZGVsW3EubmFtZV0gfCBkYXRhVHlwZTogcS5kYXRhVHlwZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0RhdGUnXCI+XHJcbiAgICAgICAgICA8c3Bhbj57e21vZGVsW3EubmFtZV0gfCBhbUNhbGVuZGFyfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgKm5nU3dpdGNoQ2FzZT1cIidUZXh0J1wiIFtpbm5lckhUTUxdPVwibW9kZWxbcS5uYW1lXVwiPjwvcD5cclxuICAgICAgICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ0h0bWwnXCIgW2lubmVySFRNTF09XCJtb2RlbFtxLm5hbWVdfHNhbml0aXplSHRtbFwiPjwvcD5cclxuICAgICAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidDaGVja2JveCdcIj57e3EubGFiZWx9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ0Nob2ljZSdcIiBkaXNhYmxlZD5cclxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJvLmtleVwiICpuZ0Zvcj1cImxldCBvIG9mIHEub3B0aW9ucyB8IGtleXZhbHVlXCI+e3tvLnZhbHVlfX08L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ051bWJlcidcIj5cclxuICAgICAgICAgIDxzcGFuPnt7bW9kZWxbcS5uYW1lXXxudW1iZXJ9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidZZXNObydcIiBkaXNhYmxlZD5cclxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJ0cnVlXCI+e3snWWVzJ3x0cmFuc2xhdGV9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJmYWxzZVwiPnt7J05vJ3x0cmFuc2xhdGV9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICA8ZGl2IGZ4RmxleCAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicS5raW5kXCI+XHJcbiAgICAgICAgICAgIDxhICpuZ1N3aXRjaENhc2U9XCInUGhvbmVOdW1iZXInXCIgW2hyZWZdPVwiJ3RlbDonK21vZGVsW3EubmFtZV1cIj57e21vZGVsW3EubmFtZV19fTwvYT5cclxuICAgICAgICAgICAgPGEgKm5nU3dpdGNoQ2FzZT1cIidFbWFpbEFkZHJlc3MnXCIgW2hyZWZdPVwibW9kZWxbcS5uYW1lXVwiPnt7bW9kZWxbcS5uYW1lXX19PC9hPlxyXG4gICAgICAgICAgICA8YSAqbmdTd2l0Y2hDYXNlPVwiJ1VybCdcIiBbaHJlZl09XCJtb2RlbFtxLm5hbWVdXCI+XHJcbiAgICAgICAgICAgICAge3ttb2RlbFtxLm5hbWVdfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ1Bhc3N3b3JkJ1wiPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3ttb2RlbFtxLm5hbWVdfX08L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -1,18 +0,0 @@
1
- import { ElementRef, OnInit } from "@angular/core";
2
- import { FormBuilder } from "@angular/forms";
3
- import { PanesRouter } from "../../../core/slots/router.service";
4
- import { SurveyMetadata } from "../../form/survey/survey.component";
5
- import { DesignerRef } from "../declarations";
6
- import { DesignerElementComponentBase } from "../designer.base";
7
- import * as i0 from "@angular/core";
8
- export declare class SurveyFormDesignComponent extends DesignerElementComponentBase<SurveyMetadata> implements OnInit {
9
- private _router;
10
- readonly form: import("@angular/forms").FormGroup<{
11
- questions: import("@angular/forms").FormControl<any>;
12
- }>;
13
- constructor(fb: FormBuilder, element: ElementRef<any>, ref: DesignerRef, _router: PanesRouter);
14
- ngOnInit(): void;
15
- design(): void;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<SurveyFormDesignComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<SurveyFormDesignComponent, "ng-component", never, {}, {}, never, never, false>;
18
- }
@@ -1,123 +0,0 @@
1
- import { CdkDragDrop } from "@angular/cdk/drag-drop";
2
- import { ChangeDetectorRef, ElementRef, OnInit } from "@angular/core";
3
- import { FormArray, FormBuilder, FormControl, FormGroup } from "@angular/forms";
4
- import { Cube, FieldKind, Type } from "../../../core/models";
5
- import { PromptService } from "../../../core/prompt.service";
6
- import { SessionService } from "../../../core/session.service";
7
- import { PaneRef } from "../../../core/slots/pane-ref";
8
- import { UtilityRef } from "../../utility-ref";
9
- import * as i0 from "@angular/core";
10
- /** */
11
- export declare class SurveyDesignerComponent implements OnInit {
12
- private _fb;
13
- private _pane;
14
- private _cd;
15
- private _ps;
16
- private _session;
17
- private _el;
18
- private _ref;
19
- loading: boolean;
20
- tools: boolean;
21
- saving: boolean;
22
- model: SurveyMetadata;
23
- readonly history: string[];
24
- historyIndex: number;
25
- readonly datatypes: Type[];
26
- readonly cubes: Cube[];
27
- readonly questions: FormArray<FormControl<unknown>>;
28
- readonly form: FormGroup<{
29
- questions: FormArray<FormControl<unknown>>;
30
- }>;
31
- title: string;
32
- settings: boolean;
33
- private _formId;
34
- constructor(_fb: FormBuilder, _pane: PaneRef<any>, _cd: ChangeDetectorRef, _ps: PromptService, _session: SessionService, _el: ElementRef, _ref: UtilityRef<boolean, {
35
- metadata: SurveyMetadata;
36
- formId: string;
37
- }, SurveyMetadata, string>);
38
- ngOnInit(): void;
39
- private _open;
40
- private _assign;
41
- private _questionform;
42
- add(type: any, evt?: Event): void;
43
- remove(question: FormGroup): void;
44
- private _notifyChange;
45
- undo(): void;
46
- redo(): void;
47
- private _restore;
48
- /**
49
- * Ctrl-s save; Ctrl-z undo
50
- * @param event
51
- */
52
- handleKeyboardEvent(event: KeyboardEvent): void;
53
- drop(event: CdkDragDrop<FormGroup>, collection: FormArray): void;
54
- save(): void;
55
- static ɵfac: i0.ɵɵFactoryDeclaration<SurveyDesignerComponent, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<SurveyDesignerComponent, "ng-component", never, {}, {}, never, never, false>;
57
- }
58
- export interface SurveyMetadata {
59
- questions: Question[];
60
- }
61
- export declare type Question = Text | Html | Date | Number | Select | Choice | YesNo | Checkbox;
62
- interface QuestionBase {
63
- name: string;
64
- label: string;
65
- required?: boolean;
66
- description?: string;
67
- }
68
- export interface Html extends QuestionBase {
69
- type: 'Html';
70
- lines?: number;
71
- placeholder?: string;
72
- }
73
- export interface Text extends QuestionBase {
74
- type: 'Text';
75
- pattern?: string;
76
- minLength?: number;
77
- maxLength?: number;
78
- prefixIcon?: string;
79
- sufixIcon?: string;
80
- lines?: number;
81
- kind?: FieldKind;
82
- placeholder?: string;
83
- }
84
- export interface Checkbox extends QuestionBase {
85
- type: 'Checkbox';
86
- defaultValue?: boolean;
87
- }
88
- export interface YesNo extends QuestionBase {
89
- type: 'YesNo';
90
- defaultValue?: boolean;
91
- }
92
- export interface Date extends QuestionBase {
93
- type: 'Date';
94
- prefixIcon?: string;
95
- sufixIcon?: string;
96
- defaultValue?: Date;
97
- placeholder?: string;
98
- }
99
- export interface Number extends QuestionBase {
100
- type: 'Number';
101
- placeholder?: string;
102
- defaultValue?: number;
103
- prefixIcon?: string;
104
- sufixIcon?: string;
105
- min?: number;
106
- max?: number;
107
- }
108
- export interface Select extends QuestionBase {
109
- type: 'Select';
110
- prefixIcon?: string;
111
- sufixIcon?: string;
112
- dataType?: string;
113
- defaultValue?: string;
114
- multiple?: boolean;
115
- }
116
- export interface Choice extends QuestionBase {
117
- type: 'Choice';
118
- options: {
119
- [name: string]: string;
120
- };
121
- defaultValue?: string;
122
- }
123
- export {};
@@ -1,17 +0,0 @@
1
- import { FormBuilder, FormGroup } from "@angular/forms";
2
- import { SurveyMetadata } from "../../admin/form/survey/survey.component";
3
- import { FormComponent, ViewMode } from "../../core/base";
4
- import { DocumentModel } from "../../core/models";
5
- import { FormRef } from "../form-ref";
6
- import * as i0 from "@angular/core";
7
- export declare class SurveyFormComponent implements FormComponent<any> {
8
- private _fb;
9
- metadata: SurveyMetadata;
10
- data: DocumentModel<any>;
11
- constructor(_fb: FormBuilder, ref: FormRef<any, SurveyMetadata>);
12
- readonly form: FormGroup<any>;
13
- mode: ViewMode;
14
- onBind(data: DocumentModel<any>, version?: any): void;
15
- static ɵfac: i0.ɵɵFactoryDeclaration<SurveyFormComponent, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<SurveyFormComponent, "ng-component", never, {}, {}, never, never, false>;
17
- }