@ajf/material 15.3.13 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/barcode/barcode-module.mjs +19 -19
- package/{esm2020 → esm2022}/barcode/barcode.mjs +4 -4
- package/{esm2020 → esm2022}/calendar/calendar-module.mjs +5 -5
- package/{esm2020 → esm2022}/calendar/calendar.mjs +4 -4
- package/{esm2020 → esm2022}/checkbox-group/checkbox-group-item.mjs +4 -4
- package/{esm2020 → esm2022}/checkbox-group/checkbox-group-module.mjs +5 -5
- package/esm2022/form-builder/branch-line.mjs +69 -0
- package/{esm2020 → esm2022}/form-builder/choices-origin-editor-dialog.mjs +7 -7
- package/{esm2020 → esm2022}/form-builder/choices-origin-editor.mjs +5 -5
- package/{esm2020 → esm2022}/form-builder/condition-editor-dialog.mjs +7 -7
- package/{esm2020 → esm2022}/form-builder/condition-editor.mjs +9 -9
- package/{esm2020 → esm2022}/form-builder/form-builder-module.mjs +64 -64
- package/esm2022/form-builder/form-builder-service.mjs +923 -0
- package/esm2022/form-builder/form-builder.mjs +183 -0
- package/esm2022/form-builder/node-entry.mjs +267 -0
- package/{esm2020 → esm2022}/form-builder/node-properties-name-validator.mjs +4 -4
- package/esm2022/form-builder/node-properties.mjs +1030 -0
- package/{esm2020 → esm2022}/form-builder/node-type-entry.mjs +7 -7
- package/{esm2020 → esm2022}/form-builder/string-identifier-dialog.mjs +4 -4
- package/{esm2020 → esm2022}/form-builder/validation-condition-editor-dialog.mjs +7 -7
- package/{esm2020 → esm2022}/form-builder/warning-condition-editor-dialog.mjs +7 -7
- package/{esm2020 → esm2022}/forms/barcode-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/boolean-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/date-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/date-input-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/empty-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/field-service.mjs +4 -4
- package/{esm2020 → esm2022}/forms/field-warning-dialog.mjs +4 -4
- package/{esm2020 → esm2022}/forms/field.mjs +4 -4
- package/esm2022/forms/form.mjs +58 -0
- package/{esm2020 → esm2022}/forms/forms-module.mjs +81 -81
- package/{esm2020 → esm2022}/forms/geolocation-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/input-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/multiple-choice-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/range-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/signature-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/single-choice-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/table-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/text-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/time-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/video-url-field.mjs +4 -4
- package/{esm2020 → esm2022}/forms/warning-alert-service.mjs +4 -4
- package/{esm2020 → esm2022}/geolocation/geolocation-module.mjs +15 -15
- package/{esm2020 → esm2022}/geolocation/geolocation.mjs +4 -4
- package/{esm2020 → esm2022}/image/image-module.mjs +5 -5
- package/{esm2020 → esm2022}/image/image.mjs +4 -4
- package/{esm2020 → esm2022}/node-icon/node-icon-module.mjs +5 -5
- package/{esm2020 → esm2022}/node-icon/node-icon.mjs +4 -4
- package/{esm2020 → esm2022}/page-slider/page-slider-module.mjs +5 -5
- package/{esm2020 → esm2022}/page-slider/page-slider.mjs +4 -4
- package/{esm2020 → esm2022}/reports/chart-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/filter-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/formula-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/graph-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/heat-map-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/image-container-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/image-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/map-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/page-break-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/report.mjs +4 -4
- package/{esm2020 → esm2022}/reports/reports-module.mjs +50 -50
- package/{esm2020 → esm2022}/reports/table-widget.mjs +4 -4
- package/{esm2020 → esm2022}/reports/text-widget.mjs +4 -4
- package/esm2022/reports/widget.mjs +368 -0
- package/{esm2020 → esm2022}/signature/signature-module.mjs +15 -15
- package/{esm2020 → esm2022}/signature/signature.mjs +4 -4
- package/{esm2020 → esm2022}/time/time-module.mjs +5 -5
- package/{esm2020 → esm2022}/time/time.mjs +4 -4
- package/{fesm2020 → fesm2022}/ajf-material-barcode.mjs +21 -21
- package/{fesm2020 → fesm2022}/ajf-material-barcode.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/ajf-material-calendar.mjs +7 -7
- package/{fesm2015 → fesm2022}/ajf-material-calendar.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/ajf-material-checkbox-group.mjs +7 -7
- package/{fesm2015 → fesm2022}/ajf-material-checkbox-group.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/ajf-material-form-builder.mjs +284 -284
- package/fesm2022/ajf-material-form-builder.mjs.map +1 -0
- package/fesm2022/ajf-material-forms.mjs +1102 -0
- package/fesm2022/ajf-material-forms.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/ajf-material-geolocation.mjs +17 -17
- package/{fesm2015 → fesm2022}/ajf-material-geolocation.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/ajf-material-image.mjs +7 -7
- package/{fesm2020 → fesm2022}/ajf-material-image.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/ajf-material-node-icon.mjs +7 -7
- package/{fesm2020 → fesm2022}/ajf-material-node-icon.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/ajf-material-page-slider.mjs +7 -7
- package/{fesm2015 → fesm2022}/ajf-material-page-slider.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/ajf-material-reports.mjs +135 -135
- package/{fesm2015 → fesm2022}/ajf-material-reports.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/ajf-material-signature.mjs +17 -17
- package/{fesm2020 → fesm2022}/ajf-material-signature.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/ajf-material-time.mjs +7 -7
- package/{fesm2020 → fesm2022}/ajf-material-time.mjs.map +1 -1
- package/form-builder/branch-line.d.ts +1 -1
- package/form-builder/choices-origin-data-source.d.ts +1 -1
- package/form-builder/choices-origin-editor.d.ts +1 -1
- package/form-builder/condition-editor.d.ts +1 -1
- package/form-builder/form-builder-service.d.ts +2 -2
- package/form-builder/form-builder.d.ts +1 -1
- package/form-builder/node-entry.d.ts +1 -1
- package/form-builder/node-type-entry.d.ts +1 -1
- package/forms/form.d.ts +1 -1
- package/package.json +49 -79
- package/esm2020/form-builder/branch-line.mjs +0 -69
- package/esm2020/form-builder/form-builder-service.mjs +0 -923
- package/esm2020/form-builder/form-builder.mjs +0 -183
- package/esm2020/form-builder/node-entry.mjs +0 -267
- package/esm2020/form-builder/node-properties.mjs +0 -1030
- package/esm2020/forms/form.mjs +0 -58
- package/esm2020/reports/widget.mjs +0 -368
- package/fesm2015/ajf-material-barcode.mjs +0 -170
- package/fesm2015/ajf-material-barcode.mjs.map +0 -1
- package/fesm2015/ajf-material-calendar.mjs +0 -116
- package/fesm2015/ajf-material-checkbox-group.mjs +0 -120
- package/fesm2015/ajf-material-form-builder.mjs +0 -3120
- package/fesm2015/ajf-material-form-builder.mjs.map +0 -1
- package/fesm2015/ajf-material-forms.mjs +0 -1134
- package/fesm2015/ajf-material-forms.mjs.map +0 -1
- package/fesm2015/ajf-material-image.mjs.map +0 -1
- package/fesm2015/ajf-material-node-icon.mjs.map +0 -1
- package/fesm2015/ajf-material-page-slider.mjs +0 -109
- package/fesm2015/ajf-material-reports.mjs +0 -943
- package/fesm2015/ajf-material-signature.mjs +0 -164
- package/fesm2015/ajf-material-signature.mjs.map +0 -1
- package/fesm2015/ajf-material-time.mjs.map +0 -1
- package/fesm2020/ajf-material-calendar.mjs.map +0 -1
- package/fesm2020/ajf-material-checkbox-group.mjs.map +0 -1
- package/fesm2020/ajf-material-form-builder.mjs.map +0 -1
- package/fesm2020/ajf-material-forms.mjs +0 -1102
- package/fesm2020/ajf-material-forms.mjs.map +0 -1
- package/fesm2020/ajf-material-geolocation.mjs +0 -136
- package/fesm2020/ajf-material-geolocation.mjs.map +0 -1
- package/fesm2020/ajf-material-image.mjs +0 -105
- package/fesm2020/ajf-material-node-icon.mjs +0 -149
- package/fesm2020/ajf-material-page-slider.mjs.map +0 -1
- package/fesm2020/ajf-material-reports.mjs.map +0 -1
- package/fesm2020/ajf-material-time.mjs +0 -111
- package/fesm2020/ajf-material.mjs +0 -28
- package/fesm2020/ajf-material.mjs.map +0 -1
- /package/{esm2020 → esm2022}/ajf-material.mjs +0 -0
- /package/{esm2020 → esm2022}/barcode/ajf-material-barcode.mjs +0 -0
- /package/{esm2020 → esm2022}/barcode/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar/ajf-material-calendar.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/checkbox-group/ajf-material-checkbox-group.mjs +0 -0
- /package/{esm2020 → esm2022}/checkbox-group/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/form-builder/ajf-material-form-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/form-builder/choices-origin-data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/form-builder/form-builder-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/form-builder/operations.mjs +0 -0
- /package/{esm2020 → esm2022}/form-builder/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/ajf-material-forms.mjs +0 -0
- /package/{esm2020 → esm2022}/forms/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/geolocation/ajf-material-geolocation.mjs +0 -0
- /package/{esm2020 → esm2022}/geolocation/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/image/ajf-material-image.mjs +0 -0
- /package/{esm2020 → esm2022}/image/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/node-icon/ajf-material-node-icon.mjs +0 -0
- /package/{esm2020 → esm2022}/node-icon/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/page-slider/ajf-material-page-slider.mjs +0 -0
- /package/{esm2020 → esm2022}/page-slider/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/reports/ajf-material-reports.mjs +0 -0
- /package/{esm2020 → esm2022}/reports/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/ajf-material-signature.mjs +0 -0
- /package/{esm2020 → esm2022}/signature/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/time/ajf-material-time.mjs +0 -0
- /package/{esm2020 → esm2022}/time/public_api.mjs +0 -0
- /package/{fesm2015 → fesm2022}/ajf-material.mjs +0 -0
- /package/{fesm2015 → fesm2022}/ajf-material.mjs.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ajf-material-form-builder.mjs","sources":["../../../projects/material/form-builder/src/branch-line.ts","../../../projects/material/form-builder/src/branch-line.html","../../../projects/material/form-builder/src/choices-origin-data-source.ts","../../../projects/material/form-builder/src/choices-origin-editor.ts","../../../projects/material/form-builder/src/choices-origin-editor.html","../../../projects/material/form-builder/src/form-builder-service.ts","../../../projects/material/form-builder/src/choices-origin-editor-dialog.ts","../../../projects/material/form-builder/src/choices-origin-editor-dialog.html","../../../projects/material/form-builder/src/condition-editor.ts","../../../projects/material/form-builder/src/fb-condition-editor.html","../../../projects/material/form-builder/src/condition-editor-dialog.ts","../../../projects/material/form-builder/src/condition-editor-dialog.html","../../../projects/material/form-builder/src/form-builder-utils.ts","../../../projects/material/form-builder/src/string-identifier-dialog.ts","../../../projects/material/form-builder/src/string-identifier-dialog.html","../../../projects/material/form-builder/src/node-entry.ts","../../../projects/material/form-builder/src/node-entry.html","../../../projects/material/form-builder/src/validation-condition-editor-dialog.ts","../../../projects/material/form-builder/src/validation-condition-editor-dialog.html","../../../projects/material/form-builder/src/warning-condition-editor-dialog.ts","../../../projects/material/form-builder/src/warning-condition-editor-dialog.html","../../../projects/material/form-builder/src/node-properties-name-validator.ts","../../../projects/material/form-builder/src/node-properties.ts","../../../projects/material/form-builder/src/node-properties.html","../../../projects/material/form-builder/src/node-type-entry.ts","../../../projects/material/form-builder/src/node-type-entry.html","../../../projects/material/form-builder/src/form-builder.ts","../../../projects/material/form-builder/src/form-builder.html","../../../projects/material/form-builder/src/form-builder-module.ts","../../../projects/material/form-builder/src/public_api.ts","../../../projects/material/form-builder/src/ajf-material-form-builder.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ajf-fb-branch-line',\n templateUrl: 'branch-line.html',\n styleUrls: ['branch-line.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbBranchLine {\n private _offset = 0;\n @Input()\n set offset(offset: number) {\n this._offset = offset;\n this._updateOffset();\n }\n\n private _color: string = '';\n @Input()\n set color(color: string) {\n this._color = color;\n this._updateColor();\n }\n\n private _height = 0;\n @Input()\n set height(height: number) {\n this._height = height;\n this._updateHeight();\n }\n\n constructor(private _el: ElementRef, private _renderer: Renderer2) {}\n\n private _updateHeight(): void {\n const height = `${Math.max(0, this._height - 25)}px`;\n this._renderer.setStyle(this._el.nativeElement, 'height', height);\n }\n\n private _updateOffset(): void {\n const margin = `${this._offset * 4}px`;\n this._renderer.setStyle(this._el.nativeElement, 'margin-top', margin);\n this._renderer.setStyle(this._el.nativeElement, 'margin-left', margin);\n }\n\n private _updateColor(): void {\n this._renderer.setStyle(this._el.nativeElement, 'border-color', this._color);\n }\n}\n","","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {DataSource} from '@angular/cdk/collections';\n\nimport {BehaviorSubject, Observable} from 'rxjs';\n\nexport type ChoicesOriginChoiceEntry = {\n label: string;\n value: string;\n};\n\nexport class ChoicesOriginDataSource extends DataSource<ChoicesOriginChoiceEntry> {\n private _choices: BehaviorSubject<ChoicesOriginChoiceEntry[]> = new BehaviorSubject<\n ChoicesOriginChoiceEntry[]\n >([]);\n private _choicesObs: Observable<ChoicesOriginChoiceEntry[]>;\n\n constructor() {\n super();\n this._choicesObs = this._choices as Observable<ChoicesOriginChoiceEntry[]>;\n }\n\n connect(): Observable<ChoicesOriginChoiceEntry[]> {\n return this._choicesObs;\n }\n\n disconnect() {}\n\n updateChoices(choices: ChoicesOriginChoiceEntry[]) {\n this._choices.next(choices);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfChoicesOrigin, isChoicesFixedOrigin} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\n\nimport {ChoicesOriginChoiceEntry, ChoicesOriginDataSource} from './choices-origin-data-source';\n\n@Component({\n selector: 'ajf-fb-choices-origin-editor',\n templateUrl: 'choices-origin-editor.html',\n styleUrls: ['choices-origin-editor.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbChoicesOriginEditor {\n private _displayedColumns: string[] = ['label', 'value', 'delete'];\n get displayedColumns(): string[] {\n return this._displayedColumns;\n }\n\n private _choicesOrigin: AjfChoicesOrigin<any> | undefined;\n get choicesOrigin(): AjfChoicesOrigin<any> | undefined {\n return this._choicesOrigin;\n }\n @Input()\n set choicesOrigin(choicesOrigin: AjfChoicesOrigin<any> | undefined) {\n this._choicesOrigin = choicesOrigin;\n if (choicesOrigin != null) {\n this.name = choicesOrigin.name;\n this.label = choicesOrigin.label;\n this.canEditChoices = isChoicesFixedOrigin(choicesOrigin);\n this._choicesArr = choicesOrigin.choices;\n } else {\n this.name = '';\n this.label = '';\n this.canEditChoices = false;\n this._choicesArr = [];\n }\n this._choices.updateChoices(this._choicesArr);\n }\n\n editing: {[key: string]: boolean} = {};\n name: string = '';\n label: string = '';\n canEditChoices: boolean = false;\n\n private _choices: ChoicesOriginDataSource = new ChoicesOriginDataSource();\n get choices(): ChoicesOriginDataSource {\n return this._choices;\n }\n\n private _choicesArr: ChoicesOriginChoiceEntry[] = [];\n get choicesArr(): ChoicesOriginChoiceEntry[] {\n return this._choicesArr;\n }\n\n updateValue(evt: any, cell: string, _value: any, rowIdx: number): void {\n this.editing[rowIdx + '-' + cell] = false;\n (this._choicesArr[rowIdx] as any)[cell] = evt.target.value;\n this._choices.updateChoices(this._choicesArr);\n }\n\n deleteRow(rowIdx: number): void {\n this._choicesArr.splice(rowIdx, 1);\n this._choices.updateChoices(this._choicesArr);\n }\n\n addRow(): void {\n this._choicesArr.push({label: '', value: ''});\n this._choices.updateChoices(this._choicesArr);\n }\n}\n","<div>\n <mat-form-field>\n <input matInput [(ngModel)]=\"name\" [placeholder]=\"'Name' | transloco\" />\n </mat-form-field>\n <mat-form-field>\n <input matInput [(ngModel)]=\"label\" [placeholder]=\"'Label' | transloco\" />\n </mat-form-field>\n <ng-template [ngIf]=\"canEditChoices\">\n <button (click)=\"addRow()\" mat-button>\n <mat-icon>add</mat-icon>\n <span>{{'Add value'|transloco}}</span>\n </button>\n <mat-table [dataSource]=\"choices\">\n <ng-container matColumnDef=\"label\">\n <mat-header-cell *matHeaderCellDef\n >{{'Label'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <input matInput [(ngModel)]=\"row.label\" type=\"text\" />\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef\n >{{'Value'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <input matInput [(ngModel)]=\"row.value\" type=\"text\" />\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef\n >{{'Delete'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-icon (click)=\"deleteRow(idx)\">delete</mat-icon>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n </mat-table>\n </ng-template>\n</div>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfAttachmentsOrigin,\n AjfChoicesOrigin,\n AjfField,\n AjfFieldType,\n AjfForm,\n AjfFormStringIdentifier,\n AjfNode,\n AjfNodeGroup,\n AjfNodesOperation,\n AjfNodeType,\n AjfRepeatingSlide,\n AjfSlide,\n createChoicesFixedOrigin,\n createContainerNode,\n createField,\n createForm,\n createValidation,\n createValidationGroup,\n createWarning,\n createWarningGroup,\n isChoicesFixedOrigin,\n isContainerNode,\n isField,\n isFieldWithChoices,\n isRangeField,\n isRepeatingContainerNode,\n isSlidesNode,\n isTableField,\n maxDigitsValidation,\n maxValidation,\n minDigitsValidation,\n minValidation,\n notEmptyValidation,\n notEmptyWarning,\n} from '@ajf/core/forms';\nimport {AjfCondition, alwaysCondition, createCondition, createFormula} from '@ajf/core/models';\nimport {deepCopy} from '@ajf/core/utils';\nimport {moveItemInArray} from '@angular/cdk/drag-drop';\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, of as obsOf, Subject, Subscription} from 'rxjs';\nimport {filter, map, shareReplay, scan, withLatestFrom} from 'rxjs/operators';\n\nimport {\n AjfAttachmentsOriginsOperation,\n AjfChoicesOriginsOperation,\n AjfFormStringIdentifierOperation,\n} from './operations';\n\nexport interface AjfFormBuilderNodeTypeEntry {\n label: string;\n nodeType: {node: AjfNodeType; field?: AjfFieldType};\n isSlide?: boolean;\n}\n\nexport interface AjfFormBuilderNodeEntry {\n node: AjfNode;\n container: AjfContainerNode | null;\n children: AjfFormBuilderNodeEntry[];\n content: AjfFormBuilderNodeEntry[];\n}\n\nexport interface AjfFormBuilderEmptySlot {\n parent: AjfNode;\n parentNode: number;\n}\n\n/**\n * Represents a node's position change in the formbuilder.\n */\nexport interface AjfFormBuilderMoveEvent {\n /**\n * The node being moved.\n */\n nodeEntry: AjfFormBuilderNode;\n\n /**\n * The index of the node previous position.\n */\n fromIndex: number;\n\n /**\n * The index of the node new position.\n */\n toIndex: number;\n}\n\nexport type AjfFormBuilderNode = AjfFormBuilderNodeEntry | AjfFormBuilderEmptySlot;\nexport type AjfContainerNode = AjfSlide | AjfRepeatingSlide | AjfNodeGroup;\n\nfunction getNodeContainer(c: {nodes: AjfNode[]}, node: AjfNode): {nodes: AjfNode[]} | null {\n if (c.nodes.indexOf(node) > -1 || c.nodes.map(n => n.id).indexOf(node?.id) > -1) {\n return c;\n }\n const cns = c.nodes.filter(n => isContainerNode(n));\n const len = cns.length;\n for (let i = 0; i < len; i++) {\n const cn = getNodeContainer(<AjfContainerNode>cns[i], node);\n if (cn != null) {\n return cn;\n }\n }\n return null;\n}\n\nfunction getDefaultValue(\n value: any,\n node: AjfField<any>,\n): string | string[] | number | boolean | null {\n let defaultValue = value && (value as string).trim() != '' ? (value as string) : null;\n if (defaultValue) {\n switch (node.fieldType) {\n case AjfFieldType.Boolean:\n return defaultValue === 'true' || defaultValue === '1';\n case AjfFieldType.MultipleChoice:\n return [defaultValue];\n case AjfFieldType.Number:\n const v = +defaultValue;\n return isNaN(v) ? 0 : v;\n }\n }\n return defaultValue;\n}\n\nfunction buildFormBuilderNodesSubtree(\n nodes: AjfNode[],\n parent: AjfNode,\n ignoreConditionalBranches = false,\n): AjfFormBuilderNode[] {\n const entries: AjfFormBuilderNode[] = nodes\n .filter(n => n.parent === parent.id)\n .sort((n1, n2) => n1.parentNode - n2.parentNode)\n .map(n => {\n const children = buildFormBuilderNodesSubtree(nodes, n);\n if (children.length === 0) {\n children.push({parent: n, parentNode: 0});\n }\n return <AjfFormBuilderNodeEntry>{\n node: n,\n children,\n content: buildFormBuilderNodesContent(nodes, n),\n };\n });\n if (!ignoreConditionalBranches) {\n const entriesNum = entries.length;\n const cbs = parent.conditionalBranches.length;\n for (let i = entriesNum; i < cbs; i++) {\n entries.push({parent: parent, parentNode: i});\n }\n }\n return entries;\n}\n\nfunction buildFormBuilderNodesContent(_nodes: AjfNode[], node: AjfNode): AjfFormBuilderNode[] {\n if (isContainerNode(node)) {\n return buildFormBuilderNodesSubtree((<AjfContainerNode>node).nodes, node, true);\n }\n return [];\n}\n\nexport function flattenNodes(nodes: AjfNode[]): AjfNode[] {\n let flatNodes: AjfNode[] = [];\n\n nodes.forEach((node: AjfNode) => {\n if (isContainerNode(node)) {\n flatNodes = flatNodes.concat(flattenNodes((<AjfContainerNode>node).nodes));\n }\n flatNodes.push(node);\n });\n\n return flatNodes;\n}\n\nfunction getDescendants(\n flatNodes: AjfNode[],\n parentNode: AjfNode,\n branch: number | null = null,\n): AjfNode[] {\n return branch != null\n ? flatNodes.filter(n => n.parent === parentNode.id && n.parentNode === branch)\n : flatNodes.filter(n => n.parent === parentNode.id);\n}\n\nfunction removeNodes(nodes: AjfNode[], ids: number[]): AjfNode[] {\n const len = nodes.length;\n for (let i = 0; i < len; i++) {\n const node = nodes[i];\n if (isContainerNode(node)) {\n const container = <AjfContainerNode>node;\n container.nodes = removeNodes(container.nodes, ids);\n }\n }\n return nodes.filter(n => ids.indexOf(n.id) === -1);\n}\n\nfunction deleteNodeSubtree(\n nodes: AjfNode[],\n parentNode: AjfNode,\n branch: number | null = null,\n): AjfNode[] {\n const flatNodes = flattenNodes(nodes);\n let delNodes: AjfNode[] = [];\n let descendants = getDescendants(flatNodes, parentNode, branch);\n const len = descendants.length;\n for (let i = 0; i < len; i++) {\n delNodes = delNodes.concat(getDescendants(flatNodes, descendants[i]));\n }\n delNodes = delNodes.concat(descendants);\n return removeNodes(\n nodes,\n delNodes.map(n => n.id),\n );\n}\n\nlet nodeUniqueId = 0;\n\n@Injectable()\nexport class AjfFormBuilderService {\n private _availableNodeTypes: AjfFormBuilderNodeTypeEntry[] = [\n {\n label: 'Slide',\n nodeType: {node: AjfNodeType.AjfSlide},\n isSlide: true,\n },\n {\n label: 'Repeating slide',\n nodeType: {node: AjfNodeType.AjfRepeatingSlide},\n isSlide: true,\n },\n {\n label: 'String',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.String},\n },\n {\n label: 'Text',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Text},\n },\n {\n label: 'Number',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Number},\n },\n {\n label: 'Boolean',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Boolean},\n },\n {\n label: 'Single choice',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.SingleChoice},\n },\n {\n label: 'Multiple choice',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.MultipleChoice},\n },\n {\n label: 'Formula',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Formula},\n },\n {\n label: 'Date',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Date},\n },\n {\n label: 'Date input',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.DateInput},\n },\n {\n label: 'Time',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Time},\n },\n {\n label: 'Table',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Table},\n },\n {\n label: 'Geolocation',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Geolocation},\n },\n {\n label: 'Barcode',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Barcode},\n },\n {\n label: 'Signature',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Signature},\n },\n {\n label: 'File',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.File},\n },\n {\n label: 'Image',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Image},\n },\n {\n label: 'Range',\n nodeType: {node: AjfNodeType.AjfField, field: AjfFieldType.Range},\n },\n ];\n /**\n * Available node types\n *\n * @readonly\n * @memberOf AjfFormBuilderService\n */\n get availableNodeTypes(): AjfFormBuilderNodeTypeEntry[] {\n return this._availableNodeTypes;\n }\n\n private _form: BehaviorSubject<AjfForm | null> = new BehaviorSubject<AjfForm | null>(null);\n private _formObs: Observable<AjfForm | null> = this._form as Observable<AjfForm | null>;\n\n /**\n * Current edited form stream\n *\n * @readonly\n * @memberOf AjfFormBuilderService\n */\n get form(): Observable<AjfForm | null> {\n return this._formObs;\n }\n\n private _attachmentsOrigins: Observable<AjfAttachmentsOrigin<any>[]> = obsOf([]);\n get attachmentsOrigins(): Observable<AjfAttachmentsOrigin<any>[]> {\n return this._attachmentsOrigins;\n }\n\n private _choicesOrigins: Observable<AjfChoicesOrigin<any>[]> = obsOf([]);\n get choicesOrigins(): Observable<AjfChoicesOrigin<any>[]> {\n return this._choicesOrigins;\n }\n\n private _stringIdentifier: Observable<AjfFormStringIdentifier[]> = obsOf([]);\n get stringIdentifier(): Observable<AjfFormStringIdentifier[]> {\n return this._stringIdentifier;\n }\n\n private _nodesWithoutChoiceOrigins: Observable<AjfSlide[]> = obsOf([]);\n private _nodes: Observable<AjfNode[]> = obsOf([]);\n get nodes(): Observable<AjfNode[]> {\n return this._nodes;\n }\n\n private _flatNodes: Observable<AjfNode[]> | undefined;\n get flatNodes(): Observable<AjfNode[]> | undefined {\n return this._flatNodes;\n }\n\n private _flatFields: Observable<AjfField[]> = obsOf([]);\n get flatFields(): Observable<AjfField[]> {\n return this._flatFields;\n }\n\n private _nodeEntriesTree: Observable<AjfFormBuilderNodeEntry[]> = obsOf([]);\n get nodeEntriesTree(): Observable<AjfFormBuilderNodeEntry[]> {\n return this._nodeEntriesTree;\n }\n\n /**\n * A list of the ids of the dropLists connected to the source list.\n */\n private _connectedDropLists: BehaviorSubject<string[]> = new BehaviorSubject<string[]>([]);\n get connectedDropLists(): BehaviorSubject<string[]> {\n return this._connectedDropLists;\n }\n\n /**\n * A dictionary of the 'expanded' status of all nodeEntries in the tree {node.name: boolean}\n */\n private _nodeEntriesTreeExpandedStatus: BehaviorSubject<{[name: string]: boolean}> =\n new BehaviorSubject<{[name: string]: boolean}>({});\n get nodeEntriesTreeExpandedStatus(): BehaviorSubject<{[name: string]: boolean}> {\n return this._nodeEntriesTreeExpandedStatus;\n }\n\n /**\n * Determines the default expanded state of nodeEntries when the FormBuilder loads\n */\n private _defaultExpanded: boolean = false;\n\n private _editedNodeEntry: BehaviorSubject<AjfFormBuilderNodeEntry | null> =\n new BehaviorSubject<AjfFormBuilderNodeEntry | null>(null);\n private _editedNodeEntryObs: Observable<AjfFormBuilderNodeEntry | null> = this\n ._editedNodeEntry as Observable<AjfFormBuilderNodeEntry | null>;\n get editedNodeEntry(): Observable<AjfFormBuilderNodeEntry | null> {\n return this._editedNodeEntryObs;\n }\n\n private _editedCondition: BehaviorSubject<AjfCondition | null> =\n new BehaviorSubject<AjfCondition | null>(null);\n private _editedConditionObs: Observable<AjfCondition | null> = this\n ._editedCondition as Observable<AjfCondition | null>;\n get editedCondition(): Observable<AjfCondition | null> {\n return this._editedConditionObs;\n }\n\n private _editedChoicesOrigin: BehaviorSubject<AjfChoicesOrigin<any> | null> =\n new BehaviorSubject<AjfChoicesOrigin<any> | null>(null);\n private _editedChoicesOriginObs: Observable<AjfChoicesOrigin<any> | null> = this\n ._editedChoicesOrigin as Observable<AjfChoicesOrigin<any> | null>;\n get editedChoicesOrigin(): Observable<AjfChoicesOrigin<any> | null> {\n return this._editedChoicesOriginObs;\n }\n\n private _beforeNodesUpdate: EventEmitter<void> = new EventEmitter<void>();\n private _beforeNodesUpdateObs: Observable<void> = this._beforeNodesUpdate as Observable<void>;\n get beforeNodesUpdate(): Observable<void> {\n return this._beforeNodesUpdateObs;\n }\n private _afterNodeUpdate: EventEmitter<void> = new EventEmitter<void>();\n private _afterNodeUpdateObs: Observable<void> = this._afterNodeUpdate as Observable<void>;\n get afterNodeUpdate(): Observable<void> {\n return this._afterNodeUpdateObs;\n }\n\n private _nodesUpdates: Subject<AjfNodesOperation> = new Subject<AjfNodesOperation>();\n private _attachmentsOriginsUpdates: Subject<AjfAttachmentsOriginsOperation> =\n new Subject<AjfAttachmentsOriginsOperation>();\n private _choicesOriginsUpdates: Subject<AjfChoicesOriginsOperation> =\n new Subject<AjfChoicesOriginsOperation>();\n private _stringIdentifierUpdates: Subject<AjfFormStringIdentifierOperation> =\n new Subject<AjfFormStringIdentifierOperation>();\n\n private _saveNodeEntryEvent: EventEmitter<any> = new EventEmitter<any>();\n private _deleteNodeEntryEvent: EventEmitter<AjfFormBuilderNodeEntry> =\n new EventEmitter<AjfFormBuilderNodeEntry>();\n /**\n * Event fired when the position of a node in a tree changes.\n */\n private _moveNodeEntryEvent: EventEmitter<AjfFormBuilderMoveEvent> =\n new EventEmitter<AjfFormBuilderMoveEvent>();\n\n /**\n * Subscribes to the moveNodeEntryEvent event emitter;\n */\n private _moveNodeSub: Subscription = Subscription.EMPTY;\n\n /**\n * Counters for default name assigned to inserted fields/slides\n */\n private _emptyFieldCounter: number = 1;\n private _emptySlideCounter: number = 1;\n\n constructor() {\n this._initChoicesOriginsStreams();\n this._initAttachmentsOriginsStreams();\n this._initStringIdentifierStreams();\n this._initNodesStreams();\n this._initFormStreams();\n this._initSaveNode();\n this._initMoveNode();\n this._initDeleteNode();\n }\n\n /**\n * Sets the current edited form\n *\n * @param form\n *\n * @memberOf AjfFormBuilderService\n */\n setForm(form: AjfForm | null): void {\n if (form !== this._form.getValue()) {\n this._form.next(form);\n }\n }\n\n editNodeEntry(nodeEntry: AjfFormBuilderNodeEntry): void {\n this._editedNodeEntry.next(nodeEntry);\n }\n\n editCondition(condition: AjfCondition): void {\n this._editedCondition.next(condition);\n }\n\n saveCurrentCondition(condition: string): void {\n let c = this._editedCondition.getValue();\n if (c == null) {\n return;\n }\n c.condition = condition;\n this._editedCondition.next(null);\n }\n\n cancelConditionEdit(): void {\n this._editedChoicesOrigin.next(null);\n }\n\n assignListId(node: AjfNode, empty: boolean = false): string {\n if (node.nodeType === AjfNodeType.AjfSlide || node.nodeType === AjfNodeType.AjfRepeatingSlide) {\n const listId = empty ? `empty_fields_list_${node.id}` : `fields_list_${node.id}`;\n if (this._connectedDropLists.value.indexOf(listId) == -1) {\n this._connectDropList(listId);\n }\n return listId;\n }\n return '';\n }\n\n insertNode(\n nodeType: AjfFormBuilderNodeTypeEntry,\n parent: AjfNode,\n parentNode: number,\n inContent = false,\n insertInIndex = 0,\n ): void {\n let node: AjfNode | AjfField;\n const id = ++nodeUniqueId;\n const isFieldNode = nodeType.nodeType?.field != null;\n if (isFieldNode) {\n node = createField({\n id,\n nodeType: AjfNodeType.AjfField,\n fieldType: nodeType.nodeType.field!,\n parent: parent.id,\n parentNode,\n name: `new_field_${this._emptyFieldCounter}`,\n label: `New ${AjfFieldType[nodeType.nodeType.field!]} field ${this._emptyFieldCounter}`,\n });\n this._emptyFieldCounter++;\n } else {\n node = createContainerNode({\n id,\n nodeType: nodeType.nodeType.node,\n parent: 0,\n parentNode,\n name: `new_slide_${this._emptySlideCounter}`,\n label: `New Slide ${this._emptySlideCounter}`,\n nodes: [],\n });\n this._emptySlideCounter++;\n }\n this._beforeNodesUpdate.emit();\n this._nodesUpdates.next((nodes: AjfNode[]): AjfNode[] => {\n const cn =\n isContainerNode(parent) && inContent\n ? <AjfContainerNode>parent\n : (getNodeContainer({nodes}, parent) as AjfContainerNode);\n if (!isFieldNode) {\n let newNodes = nodes.slice(0);\n newNodes.splice(insertInIndex, 0, node);\n newNodes = this._updateNodesList(0, newNodes);\n return newNodes;\n } else {\n let newNodes = cn.nodes.slice(0);\n newNodes.splice(insertInIndex, 0, node);\n newNodes = this._updateNodesList(cn.id, newNodes);\n cn.nodes = newNodes;\n }\n return nodes;\n });\n this.cancelNodeEntryEdit();\n }\n\n saveNodeEntry(properties: any): void {\n this._saveNodeEntryEvent.emit(properties);\n }\n\n cancelNodeEntryEdit(): void {\n this._editedNodeEntry.next(null);\n }\n\n deleteNodeEntry(nodeEntry: AjfFormBuilderNodeEntry): void {\n this._deleteNodeEntryEvent.next(nodeEntry);\n }\n\n /**\n * Triggers the moveNode event when a node is moved in the formbuilder.\n * @param nodeEntry The node to be moved.\n */\n moveNodeEntry(nodeEntry: AjfFormBuilderNodeEntry, from: number, to: number): void {\n const moveEvent: AjfFormBuilderMoveEvent = {nodeEntry: nodeEntry, fromIndex: from, toIndex: to};\n this._moveNodeEntryEvent.next(moveEvent);\n this.cancelNodeEntryEdit();\n }\n\n getCurrentForm(): Observable<AjfForm> {\n return combineLatest([\n this.form,\n this._nodesWithoutChoiceOrigins,\n this.attachmentsOrigins,\n this.choicesOrigins,\n this.stringIdentifier,\n ]).pipe(\n filter(([form]) => form != null),\n map(([form, nodes, attachmentsOrigins, choicesOrigins, stringIdentifier]) => {\n const supplementaryInformations = (form || {}).supplementaryInformations;\n return createForm({\n choicesOrigins: [...choicesOrigins],\n attachmentsOrigins: [...attachmentsOrigins],\n stringIdentifier: [...(stringIdentifier || [])],\n nodes: [...nodes],\n supplementaryInformations,\n });\n }),\n );\n }\n\n editChoicesOrigin(choicesOrigin: AjfChoicesOrigin<any>): void {\n this._editedChoicesOrigin.next(choicesOrigin);\n }\n\n createChoicesOrigin(): void {\n this._editedChoicesOrigin.next(createChoicesFixedOrigin<any>({name: ''}));\n }\n\n cancelChoicesOriginEdit(): void {\n this._editedChoicesOrigin.next(null);\n }\n\n saveChoicesOrigin(params: {label: string; name: string; choices: any[]}): void {\n const choicesOrigin = this._editedChoicesOrigin.getValue();\n const choicesOriginPreviousName: string | undefined = choicesOrigin?.name;\n if (choicesOrigin != null) {\n choicesOrigin.label = params.label;\n choicesOrigin.name = params.name;\n if (isChoicesFixedOrigin(choicesOrigin)) {\n choicesOrigin.choices = params.choices;\n }\n this._updateChoicesOriginRefInNodes(choicesOriginPreviousName, params.name);\n this._choicesOriginsUpdates.next(choicesOrigins => {\n const idx = choicesOrigins.indexOf(choicesOrigin);\n if (idx > -1) {\n choicesOrigins = [\n ...choicesOrigins.slice(0, idx),\n choicesOrigin,\n ...choicesOrigins.slice(idx + 1),\n ];\n } else {\n choicesOrigins = [...choicesOrigins, choicesOrigin];\n }\n return choicesOrigins;\n });\n }\n this._editedChoicesOrigin.next(null);\n }\n\n saveStringIdentifier(identifier: AjfFormStringIdentifier[]): void {\n this._stringIdentifierUpdates.next(() => [...identifier]);\n }\n\n /**\n * Resets the nodeEntriesTreeExpandedStatus dictionary to an empty object.\n */\n resetNodeEntriesTreeExpandedStatus(): void {\n this._nodeEntriesTreeExpandedStatus.next({});\n }\n\n /**\n * Gets the expanded status of an entry in the nodeEntriesTreeExpandedStatus dictionary\n * @param nodeName The unique name of the nodeEntry\n */\n getExpandedStatus(nodeName: string): Observable<boolean> {\n return this._nodeEntriesTreeExpandedStatus.pipe(\n map(tree => {\n if (nodeName in tree) {\n return tree[nodeName];\n }\n return this._defaultExpanded;\n }),\n );\n }\n\n /**\n * Upserts an entry in the nodeEntriesTreeExpandedStatus dictionary\n * @param nodeName The unique name of the nodeEntry\n * @param expanded True if the nodeEntry is expanded\n */\n updateExpandedStatus(nodeName: string, expanded: boolean): void {\n if (!nodeName) return;\n const dictValue = this._nodeEntriesTreeExpandedStatus.value;\n this._nodeEntriesTreeExpandedStatus.next({...dictValue, [nodeName]: expanded});\n }\n\n /**\n * Removes an entry from the nodeEntriesTreeExpandedStatus dictionary\n * @param nodeName The unique name of the nodeEntry\n */\n removeExpandedStatus(nodeName: string): void {\n const dictValue = this._nodeEntriesTreeExpandedStatus.value;\n delete dictValue[nodeName];\n this._nodeEntriesTreeExpandedStatus.next(dictValue);\n }\n\n /**\n * Sets expanded to true for each entry in the nodeEntriesTreeExpandedStatus dictionary\n */\n expandAll() {\n const dictValue = this._nodeEntriesTreeExpandedStatus.value;\n for (let nodeName in dictValue) {\n dictValue[nodeName] = true;\n }\n this._defaultExpanded = true;\n this._nodeEntriesTreeExpandedStatus.next(dictValue);\n }\n\n /**\n * Sets expanded to false for each entry in the nodeEntriesTreeExpandedStatus dictionary\n */\n collapseAll() {\n const dictValue = this._nodeEntriesTreeExpandedStatus.value;\n for (let nodeName in dictValue) {\n dictValue[nodeName] = false;\n }\n this._defaultExpanded = false;\n this._nodeEntriesTreeExpandedStatus.next(dictValue);\n }\n\n /**\n * Resets the empty fields/slides counters\n */\n resetEmptyCounters() {\n this._emptyFieldCounter = 1;\n this._emptySlideCounter = 1;\n }\n\n /**\n * Searches the form nodes for field nodes with choicesOriginRef corresponding\n * to an edited choicesOrigin and updates it with the new name.\n * @param previous_name The choicesOrigin previous name\n * @param new_name The choicesOrigin new name\n */\n private _updateChoicesOriginRefInNodes(previous_name?: string, new_name?: string): void {\n if (!previous_name || !new_name) return;\n const currentForm: AjfForm | null = this._form.value;\n if (!currentForm) return;\n const updatedNodes: AjfNode[] = [];\n const currentSlides: (AjfSlide | AjfRepeatingSlide)[] = currentForm.nodes;\n for (let slide of currentSlides) {\n if (!slide.nodes || !slide.nodes.length) continue;\n for (let node of slide.nodes) {\n const nodeObj = node as {[key: string]: any};\n if (nodeObj['choicesOriginRef'] && nodeObj['choicesOriginRef'] === previous_name) {\n nodeObj['choicesOriginRef'] = new_name;\n updatedNodes.push(nodeObj as AjfNode);\n }\n }\n }\n this._nodesUpdates.next((_nodes: AjfNode[]): AjfNode[] => {\n return currentForm.nodes.slice(0);\n });\n }\n\n private _buildFormBuilderNodesTree(nodes: AjfNode[]): (AjfFormBuilderNode | null)[] {\n this._updateNodesList(0, nodes);\n const rootNodes = nodes.filter(\n n => n.nodeType == AjfNodeType.AjfSlide || n.nodeType == AjfNodeType.AjfRepeatingSlide,\n );\n if (rootNodes.length === 0) {\n return [null];\n }\n const rootNode = rootNodes[0];\n if (isSlidesNode(rootNode)) {\n const tree: AjfFormBuilderNode[] = [];\n tree.push(<AjfFormBuilderNodeEntry>{\n node: rootNode,\n container: null,\n children: buildFormBuilderNodesSubtree(nodes, rootNode),\n content: buildFormBuilderNodesContent(nodes, rootNode),\n });\n return tree;\n }\n throw new Error('Invalid form definition');\n }\n\n /**\n * Adds the id of a dropList to be connected with the FormBuilder source list.\n * @param listId The id of the list to connect.\n */\n private _connectDropList(listId: string) {\n let connectedLists = this._connectedDropLists.value.slice(0);\n this._connectedDropLists.next([...connectedLists, listId]);\n }\n\n private _findMaxNodeId(nodes: AjfNode[], _curMaxId = 0): number {\n let maxId = 0;\n nodes.forEach(n => {\n maxId = Math.max(maxId, n.id);\n if (isContainerNode(n)) {\n maxId = Math.max(maxId, this._findMaxNodeId((<AjfContainerNode>n).nodes));\n }\n });\n return maxId;\n }\n\n private _initFormStreams(): void {\n this._form.subscribe((form: AjfForm | null) => {\n nodeUniqueId = 0;\n if (form != null && form.nodes != null && form.nodes.length > 0) {\n nodeUniqueId = this._findMaxNodeId(form.nodes);\n }\n this._nodesUpdates.next((_nodes: AjfNode[]): AjfNode[] => {\n return form != null && form.nodes != null ? form.nodes.slice(0) : [];\n });\n this._attachmentsOriginsUpdates.next(\n (_attachmentsOrigins: AjfAttachmentsOrigin<any>[]): AjfAttachmentsOrigin<any>[] => {\n return form != null && form.attachmentsOrigins != null\n ? form.attachmentsOrigins.slice(0)\n : [];\n },\n );\n this._choicesOriginsUpdates.next(\n (_choicesOrigins: AjfChoicesOrigin<any>[]): AjfChoicesOrigin<any>[] => {\n return form != null && form.choicesOrigins != null ? form.choicesOrigins.slice(0) : [];\n },\n );\n this._stringIdentifierUpdates.next(\n (_: AjfFormStringIdentifier[]): AjfFormStringIdentifier[] => {\n return form != null && form.stringIdentifier != null\n ? form.stringIdentifier.slice(0)\n : [];\n },\n );\n });\n }\n\n private _initChoicesOriginsStreams(): void {\n this._choicesOrigins = (<Observable<AjfChoicesOriginsOperation>>(\n this._choicesOriginsUpdates\n )).pipe(\n scan((choicesOrigins: AjfChoicesOrigin<any>[], op: AjfChoicesOriginsOperation) => {\n return op(choicesOrigins);\n }, []),\n shareReplay(1),\n );\n }\n\n private _initAttachmentsOriginsStreams(): void {\n this._attachmentsOrigins = this._attachmentsOriginsUpdates.pipe(\n scan(\n (attachmentsOrigins: AjfAttachmentsOrigin<any>[], op: AjfAttachmentsOriginsOperation) => {\n return op(attachmentsOrigins);\n },\n [],\n ),\n shareReplay(1),\n );\n }\n\n private _initStringIdentifierStreams(): void {\n this._stringIdentifier = this._stringIdentifierUpdates.pipe(\n scan((stringIdentifier: AjfFormStringIdentifier[], op: AjfFormStringIdentifierOperation) => {\n return op(stringIdentifier);\n }, []),\n shareReplay(1),\n );\n }\n\n private _initNodesStreams(): void {\n this._nodes = (<Observable<AjfNodesOperation>>this._nodesUpdates).pipe(\n scan((nodes: AjfNode[], op: AjfNodesOperation) => {\n return op(nodes);\n }, []),\n shareReplay(1),\n );\n\n this._nodesWithoutChoiceOrigins = (this._nodes as Observable<AjfSlide[]>).pipe(\n map(slides =>\n slides.map(slide => {\n slide.nodes = (slide.nodes as AjfField[]).map((node: AjfField) => {\n if (isFieldWithChoices(node)) {\n const fwc = deepCopy(node);\n if (fwc && fwc.choices) {\n delete fwc.choices;\n }\n if (fwc && fwc.choicesOrigin) {\n delete fwc.choicesOrigin;\n }\n return fwc;\n }\n return node;\n });\n return slide;\n }),\n ),\n );\n\n this._flatNodes = this._nodes.pipe(\n map((nodes: AjfNode[]) => flattenNodes(nodes)),\n shareReplay(1),\n );\n\n this._flatFields = this._flatNodes.pipe(\n map((nodes: AjfNode[]) => <AjfField[]>nodes.filter(n => !isContainerNode(n))),\n shareReplay(1),\n );\n\n this._nodeEntriesTree = this._nodes.pipe(\n map(nodes => <AjfFormBuilderNodeEntry[]>this._buildFormBuilderNodesTree(nodes)),\n shareReplay(1),\n );\n }\n\n private _initSaveNode(): void {\n this._saveNodeEntryEvent\n .pipe(\n withLatestFrom(this.editedNodeEntry, this.choicesOrigins, this.attachmentsOrigins),\n filter(([_, nodeEntry]) => nodeEntry != null),\n map(([properties, ne]) => {\n this._beforeNodesUpdate.emit();\n const nodeEntry = ne as AjfFormBuilderNodeEntry;\n const origNode = nodeEntry.node;\n const node = deepCopy(origNode);\n node.id = nodeEntry.node.id;\n node.name = properties.name;\n node.label = properties.label;\n node.visibility =\n properties.visibility != null\n ? createCondition({condition: properties.visibility})\n : null;\n\n const oldConditionalBranches = node.conditionalBranches.length;\n node.conditionalBranches =\n properties.conditionalBranches != null\n ? properties.conditionalBranches.map((condition: string) =>\n createCondition({condition}),\n )\n : [alwaysCondition()];\n const newConditionalBranches = node.conditionalBranches.length;\n\n if (isRepeatingContainerNode(node)) {\n node.formulaReps =\n properties.formulaReps != null\n ? createFormula({formula: properties.formulaReps})\n : undefined;\n node.minReps = properties.minReps;\n node.maxReps = properties.maxReps;\n }\n\n if (isField(node)) {\n node.hint = properties.hint;\n node.editable = !properties.readonlyField;\n node.description = properties.description;\n node.defaultValue = getDefaultValue(properties.defaultValue, node);\n node.formula =\n properties.formula != null ? createFormula({formula: properties.formula}) : undefined;\n const forceValue = properties.value;\n const notEmpty = properties.notEmpty;\n const validationConditions = properties.validationConditions;\n let minValue: number | null = parseInt(properties.minValue, 10);\n let maxValue: number | null = parseInt(properties.maxValue, 10);\n let minDigits: number | null = parseInt(properties.minDigits, 10);\n let maxDigits: number | null = parseInt(properties.maxDigits, 10);\n if (isNaN(minValue)) {\n minValue = null;\n }\n if (isNaN(maxValue)) {\n maxValue = null;\n }\n if (isNaN(minDigits)) {\n minDigits = null;\n }\n if (isNaN(maxDigits)) {\n maxDigits = null;\n }\n if (\n forceValue != null ||\n notEmpty != null ||\n (validationConditions != null && validationConditions.length > 0) ||\n minValue != null ||\n maxValue != null ||\n minDigits != null ||\n maxDigits != null\n ) {\n const validation = node.validation || createValidationGroup({});\n validation.forceValue = forceValue;\n validation.notEmpty = notEmpty ? notEmptyValidation() : undefined;\n validation.minValue = minValue != null ? minValidation(minValue) : undefined;\n validation.maxValue = maxValue != null ? maxValidation(maxValue) : undefined;\n validation.minDigits = minDigits != null ? minDigitsValidation(minDigits) : undefined;\n validation.maxDigits = maxDigits != null ? maxDigitsValidation(maxDigits) : undefined;\n validation.conditions = (validationConditions || []).map(\n (c: {condition: string; errorMessage: string}) =>\n createValidation({\n condition: c.condition,\n errorMessage: c.errorMessage,\n }),\n );\n node.validation = validation;\n } else {\n node.validation = undefined;\n }\n const notEmptyWarn = properties.notEmptyWarning;\n const warningConditions = properties.warningConditions;\n if (\n notEmptyWarn != null ||\n (warningConditions != null && warningConditions.length > 0)\n ) {\n const warning = node.warning || createWarningGroup({});\n warning.notEmpty = notEmptyWarn ? notEmptyWarning() : undefined;\n warning.conditions = (warningConditions || []).map(\n (w: {condition: string; warningMessage: string}) =>\n createWarning({\n condition: w.condition,\n warningMessage: w.warningMessage,\n }),\n );\n node.warning = warning;\n } else {\n node.warning = undefined;\n }\n node.nextSlideCondition =\n properties.nextSlideCondition != null\n ? createCondition({condition: properties.nextSlideCondition})\n : undefined;\n node.size = properties.size;\n\n if (isFieldWithChoices(node)) {\n (node as any).choicesOriginRef = properties.choicesOriginRef;\n node.forceExpanded = properties.forceExpanded;\n node.forceNarrow = properties.forceNarrow;\n node.triggerConditions = (properties.triggerConditions || []).map((t: string) =>\n createCondition({condition: t}),\n );\n }\n\n if (isRangeField(node)) {\n node.start = properties.start;\n node.end = properties.end;\n node.step = properties.step;\n }\n\n if (isTableField(node)) {\n let {columnTypes, rows, columnLabels, rowLabels} = JSON.parse(properties.tableDef);\n node.columnTypes = columnTypes || [];\n node.rows = rows || [];\n node.columnLabels = columnLabels || [];\n node.rowLabels = rowLabels || [];\n node.hideEmptyRows = properties.hideEmptyRows;\n }\n }\n\n this._editedNodeEntry.next(null);\n\n return (nodes: AjfNode[]): AjfNode[] => {\n let cn = getNodeContainer({nodes}, origNode);\n if (cn != null) {\n // TODO: @trik check this, was always true?\n // if (cn instanceof AjfNode) {\n const replaceNodes = cn.nodes === nodes;\n const idx = cn.nodes.map(n => n.id).indexOf(origNode.id);\n let newNodes = cn.nodes.slice(0, idx);\n newNodes.push(node);\n newNodes = newNodes.concat(cn.nodes.slice(idx + 1));\n cn.nodes = newNodes;\n if (replaceNodes) {\n nodes = newNodes;\n } else {\n nodes = nodes.slice(0);\n }\n // } else {\n // const idx = nodes.indexOf(origNode);\n // nodes = nodes.slice(0, idx).concat([node]).concat(nodes.slice(idx + 1));\n // }\n if (newConditionalBranches < oldConditionalBranches) {\n for (let i = newConditionalBranches; i < oldConditionalBranches; i++) {\n nodes = deleteNodeSubtree(nodes, node, i);\n }\n }\n }\n return nodes;\n };\n }),\n )\n .subscribe(this._nodesUpdates);\n }\n\n private _initDeleteNode(): void {\n (<Observable<AjfFormBuilderNodeEntry>>this._deleteNodeEntryEvent)\n .pipe(\n map((nodeEntry: AjfFormBuilderNodeEntry) => {\n this._beforeNodesUpdate.emit();\n this.removeExpandedStatus(nodeEntry.node.name);\n return (nodes: AjfNode[]): AjfNode[] => {\n const node = nodeEntry.node;\n let cn = getNodeContainer({nodes}, node);\n if (cn != null) {\n const replaceNodes = cn.nodes === nodes;\n const idx = cn.nodes.map(n => n.id).indexOf(node.id);\n let newNodes = cn.nodes.slice(0, idx);\n newNodes = newNodes.concat(cn.nodes.slice(idx + 1));\n cn.nodes = newNodes;\n if (replaceNodes) {\n nodes = newNodes;\n } else {\n nodes = nodes.slice(0);\n }\n }\n return nodes;\n };\n }),\n )\n .subscribe(this._nodesUpdates);\n }\n\n /**\n * Initializes the subscription to the moveNodeEntryEvent.\n */\n private _initMoveNode(): void {\n this._moveNodeSub.unsubscribe();\n this._moveNodeSub = this._moveNodeEntryEvent\n .pipe(\n map((moveEvent: AjfFormBuilderMoveEvent) => {\n this._beforeNodesUpdate.emit();\n return (nodes: AjfNode[]): AjfNode[] => {\n const nodeEntry = moveEvent.nodeEntry as AjfFormBuilderNodeEntry;\n const node = nodeEntry.node;\n let cn = getNodeContainer({nodes}, node) as AjfContainerNode;\n let newNodes: AjfNode[] = nodes;\n if (cn != null) {\n const replaceNodes = cn.nodes === nodes;\n newNodes = cn.nodes;\n moveItemInArray(newNodes, moveEvent.fromIndex, moveEvent.toIndex);\n newNodes = this._updateNodesList(cn.id, newNodes);\n cn.nodes = newNodes;\n if (replaceNodes) {\n nodes = newNodes;\n } else {\n nodes = nodes.slice(0);\n }\n }\n return nodes;\n };\n }),\n )\n .subscribe(this._nodesUpdates);\n }\n\n /**\n * Updates the \"id\" and \"parent\" fields of a modified or rearranged list of nodes.\n * @param containerId The id of the parent container of the list.\n * @param nodesList The list of nodes to be updated.\n */\n private _updateNodesList(containerId: number, nodesList: AjfNode[]): AjfNode[] {\n if (!nodesList.length) {\n return [];\n }\n const contId = containerId != undefined ? containerId : 0;\n for (let idx = 0; idx < nodesList.length; idx++) {\n let currentNode = nodesList[idx];\n currentNode.id = contId * 1000 + idx + 1;\n currentNode.parent = idx == 0 ? contId : contId * 1000 + idx;\n if (isSlidesNode(currentNode)) {\n this._updateNodesList(currentNode.id, currentNode.nodes);\n }\n }\n return nodesList;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfChoicesOrigin} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {AjfFbChoicesOriginEditor} from './choices-origin-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-choices-origin-editor-dialog',\n templateUrl: 'choices-origin-editor-dialog.html',\n styleUrls: ['choices-origin-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbChoicesOriginEditorDialog {\n @ViewChild(AjfFbChoicesOriginEditor, {static: false}) editor!: AjfFbChoicesOriginEditor;\n\n private _choicesOrigin: Observable<AjfChoicesOrigin<any>>;\n get choicesOrigin(): Observable<AjfChoicesOrigin<any>> {\n return this._choicesOrigin;\n }\n\n constructor(private _service: AjfFormBuilderService) {\n this._choicesOrigin = this._service.editedChoicesOrigin.pipe(\n filter(c => c != null),\n map(c => c!),\n );\n }\n\n saveChoicesOrigin(): void {\n this._service.saveChoicesOrigin({\n label: this.editor.label,\n name: this.editor.name,\n choices: this.editor.choicesArr,\n });\n }\n\n cancelChoicesOriginEdit(): void {\n this._service.cancelChoicesOriginEdit();\n }\n}\n","<h3 matDialogTitle>{{'Edit choices origin'|transloco}}</h3>\n<mat-dialog-content>\n <ajf-fb-choices-origin-editor\n *ngIf=\"choicesOrigin|async as co\"\n [choicesOrigin]=\"co!\"\n ></ajf-fb-choices-origin-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveChoicesOrigin()\">{{'Save'|transloco}}</button>\n <button mat-button (click)=\"cancelChoicesOriginEdit()\">\n {{'Close'|transloco}}\n </button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField, AjfValidationService} from '@ajf/core/forms';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\n@Component({\n selector: 'ajf-condition-editor',\n templateUrl: 'fb-condition-editor.html',\n styleUrls: ['fb-condition-editor.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFbConditionEditor implements AfterViewInit {\n private _fields: AjfField[] = [];\n get fields(): AjfField[] {\n return this._fields;\n }\n\n @Input()\n set fields(fields: AjfField[]) {\n this._fields = fields;\n }\n\n @Input() condition: string = '';\n\n formulaEditorControl = new FormControl<string>(this.condition);\n\n constructor(_: AjfValidationService) {}\n\n ngAfterViewInit(): void {\n this.formulaEditorControl.setValue(this.condition);\n }\n\n insertVariable(variable: string): void {\n const currValue =\n this.formulaEditorControl.value != null ? this.formulaEditorControl.value : '';\n const newValue: string = currValue + variable;\n this.formulaEditorControl.setValue(newValue);\n }\n}\n","<div class=\"ajf-editor\">\n <mat-form-field class=\"ajf-formula-editor\">\n <code><input matInput type=\"text\" [formControl]=\"formulaEditorControl\" /></code>\n </mat-form-field>\n</div>\n<div class=\"ajf-editor-panel\">\n <ng-container *ngIf=\"fields as curFields\">\n <mat-nav-list dense *ngIf=\"curFields!.length > 0\">\n <a\n mat-list-item\n (click)=\"insertVariable(field.name)\"\n [matTooltip]=\"field.label\"\n *ngFor=\"let field of curFields!\"\n >\n <ajf-node-icon [node]=\"field\"></ajf-node-icon>\n {{ field.name }}\n </a>\n </mat-nav-list>\n </ng-container>\n</div>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-condition-editor-dialog',\n templateUrl: 'condition-editor-dialog.html',\n styleUrls: ['condition-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbConditionEditorDialog {\n @ViewChild(AjfFbConditionEditor, {static: false}) editor!: AjfFbConditionEditor;\n\n private _fields: Observable<AjfField[]>;\n get fields(): Observable<AjfField[]> {\n return this._fields;\n }\n\n condition: string = '';\n\n constructor(\n service: AjfFormBuilderService,\n public dialogRef: MatDialogRef<AjfFbConditionEditorDialog>,\n ) {\n this._fields = service.flatFields.pipe(\n map((fields: AjfField[]) => fields.sort((f1, f2) => f1.name.localeCompare(f2.name))),\n );\n }\n\n saveCondition(): void {\n if (this.editor == null) {\n return;\n }\n const newValue = this.editor.formulaEditorControl.value;\n this.dialogRef.close(newValue);\n }\n\n closeDialog(): void {\n this.dialogRef.close(this.editor.formulaEditorControl.value);\n }\n}\n","<h3 matDialogTitle>{{'Edit condition'|transloco}}</h3>\n<mat-dialog-content>\n <ajf-condition-editor\n *ngIf=\"fields|async as curFields\"\n [fields]=\"curFields!\"\n [condition]=\"condition\"\n ></ajf-condition-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveCondition()\">{{'Save'|transloco}}</button>\n <button mat-button (click)=\"closeDialog()\">{{'Close'|transloco}}</button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {CdkDrag, CdkDragDrop} from '@angular/cdk/drag-drop';\nimport {\n AjfFormBuilderEmptySlot,\n AjfFormBuilderNode,\n AjfFormBuilderNodeEntry,\n AjfFormBuilderNodeTypeEntry,\n AjfFormBuilderService,\n} from './form-builder-service';\n\n/**\n * Triggers when a field or slide node is moved or inserted by drag&dropping in the formbuilder.\n * @param event The drop event.\n * @param fbService The AjfFormBuilderService.\n * @param nodeEntry The current nodeEntry, if present.\n * @param content True if the current nodeEntry contains other nodeEntries.\n */\nexport function onDropProcess(\n event: CdkDragDrop<AjfFormBuilderNodeEntry> | CdkDragDrop<AjfFormBuilderNodeTypeEntry>,\n fbService: AjfFormBuilderService,\n nodeEntry: AjfFormBuilderNode | null,\n content = false,\n): void {\n const itemData = event.item.data;\n const containerId = event.container.id;\n if (!itemData.node) {\n if (nodeEntry == null && containerId === 'slides-list') {\n fbService.insertNode(itemData, null as any, 0, content, event.currentIndex);\n return;\n }\n const emptySlot = content\n ? {parent: (<AjfFormBuilderNodeEntry>nodeEntry).node, parentNode: 0}\n : <AjfFormBuilderEmptySlot>nodeEntry;\n fbService.insertNode(\n itemData,\n emptySlot.parent,\n emptySlot.parentNode,\n content,\n event.currentIndex,\n );\n return;\n }\n const previousIndex = event.previousIndex;\n const currentIndex = event.currentIndex;\n fbService.moveNodeEntry(<AjfFormBuilderNodeEntry>event.item.data, previousIndex, currentIndex);\n}\n\n/**\n * Disables the drag&drop of Slide items.\n * @param item The dragged item.\n */\nexport function disableSlideDropPredicate(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return !item.data.isSlide;\n}\n\n/**\n * Disables the drag&drop of Field items.\n * @param item The dragged item.\n */\nexport function disableFieldDropPredicate(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n if (!item.data.isSlide) {\n return false;\n }\n return true;\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfFormStringIdentifier} from '@ajf/core/forms';\nimport {COMMA, ENTER} from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';\nimport {MatChipInputEvent} from '@angular/material/chips';\nimport {MatTableDataSource} from '@angular/material/table';\nimport {Observable, Subscription} from 'rxjs';\nimport {map, shareReplay} from 'rxjs/operators';\n\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-string-identifier-dialog',\n templateUrl: 'string-identifier-dialog.html',\n styleUrls: ['./string-identifier-dialog.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFbStringIdentifierDialogComponent implements OnDestroy {\n readonly dataSource: MatTableDataSource<AjfFormStringIdentifier> =\n new MatTableDataSource<AjfFormStringIdentifier>();\n readonly displayedColumns = ['label', 'value', 'show', 'delete'];\n readonly fields$: Observable<string[]>;\n readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n\n private _stringIdentifierSub: Subscription = Subscription.EMPTY;\n\n constructor(private _service: AjfFormBuilderService, private _cdr: ChangeDetectorRef) {\n this._stringIdentifierSub = _service.stringIdentifier.subscribe(identifier => {\n this.dataSource.data = [...identifier];\n });\n this.fields$ = _service.flatFields.pipe(\n map(fields =>\n fields\n .sort((f1, f2) => f1.name.localeCompare(f2.name))\n .map(f => f.name)\n .filter(f => f.length > 0),\n ),\n shareReplay(1),\n );\n }\n\n addRow(): void {\n this.dataSource.data = [...this.dataSource.data, {label: '', value: [], show: undefined}];\n }\n\n deleteRow(rowIdx: number): void {\n this.dataSource.data = [\n ...this.dataSource.data.slice(0, rowIdx),\n ...this.dataSource.data.slice(rowIdx + 1),\n ];\n }\n\n addValue(\n row: AjfFormStringIdentifier,\n evt: MatChipInputEvent,\n valueInput: HTMLInputElement,\n ): void {\n if (evt.value.length === 0) {\n return;\n }\n row.value = [...row.value, evt.value];\n valueInput.value = '';\n this._cdr.markForCheck();\n }\n\n removeValue(row: AjfFormStringIdentifier, value: string): void {\n const idx = row.value.indexOf(value);\n if (idx > -1) {\n row.value = [...row.value.slice(0, idx), ...row.value.slice(idx + 1)];\n this._cdr.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this._stringIdentifierSub.unsubscribe();\n }\n\n saveStringIdentifier(): void {\n this._service.saveStringIdentifier(this.dataSource.data);\n }\n\n selected(row: AjfFormStringIdentifier, evt: MatAutocompleteSelectedEvent): void {\n row.value = [...row.value, evt.option.value];\n this._cdr.markForCheck();\n }\n}\n","<h3 matDialogTitle>{{'Edit identifier'|transloco}}</h3>\n<mat-dialog-content>\n <button (click)=\"addRow()\" mat-button>\n <mat-icon>add</mat-icon>\n <span>{{'Add value'|transloco}}</span>\n </button>\n <mat-table [dataSource]=\"dataSource\">\n <ng-container matColumnDef=\"label\">\n <mat-header-cell *matHeaderCellDef>{{'Label'|transloco}}</mat-header-cell>\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-form-field>\n <input\n matInput\n [placeholder]=\"'Label'|transloco\"\n autofocus\n [(ngModel)]=\"row.label\"\n />\n </mat-form-field>\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"value\">\n <mat-header-cell *matHeaderCellDef>{{'Value'|transloco}}</mat-header-cell>\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-form-field>\n <mat-chip-grid #chipList>\n <mat-chip-row\n *ngFor=\"let field of row.value\"\n (removed)=\"removeValue(row, field)\"\n >\n {{ field }}\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip-row>\n </mat-chip-grid>\n <input\n #valueInput\n [ngModel]=\"row.value\"\n [matAutocomplete]=\"valueAc\"\n [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"true\"\n (matChipInputTokenEnd)=\"addValue(row, $event, valueInput)\"\n [placeholder]=\"'Value'|transloco\"\n />\n <mat-autocomplete\n #valueAc=\"matAutocomplete\"\n (optionSelected)=\"selected(row, $event)\"\n >\n <mat-option *ngFor=\"let field of fields$ | async\" [value]=\"field\"\n >{{field}}</mat-option\n >\n </mat-autocomplete>\n </mat-form-field>\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"show\">\n <mat-header-cell *matHeaderCellDef>{{'Show'|transloco}}</mat-header-cell>\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-form-field>\n <mat-select matNativeControl [(ngModel)]=\"row.show\">\n <mat-option value=\"all\">{{'All'|transloco}}</mat-option>\n <mat-option value=\"first\">{{'First'|transloco}}</mat-option>\n <mat-option value=\"last\">{{'Last'|transloco}}</mat-option>\n </mat-select>\n </mat-form-field>\n </mat-cell>\n </ng-container>\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef\n >{{'Delete'|transloco}}</mat-header-cell\n >\n <mat-cell *matCellDef=\"let row; let idx = index\">\n <mat-icon (click)=\"deleteRow(idx)\">delete</mat-icon>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n </mat-table>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button matDialogClose (click)=\"saveStringIdentifier()\">\n {{'Save'|transloco}}\n </button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfNode, isContainerNode, isSlidesNode} from '@ajf/core/forms';\nimport {CdkDrag, CdkDragDrop, CdkDropList} from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subscription, of as obsOf} from 'rxjs';\n\nimport {AjfFbBranchLine} from './branch-line';\nimport {\n AjfFormBuilderNode,\n AjfFormBuilderNodeEntry,\n AjfFormBuilderNodeTypeEntry,\n AjfFormBuilderService,\n} from './form-builder-service';\nimport {\n disableFieldDropPredicate,\n disableSlideDropPredicate,\n onDropProcess,\n} from './form-builder-utils';\n\nconst branchColors: string[] = [\n '#F44336', // RED\n '#4CAF50', // GREEN\n '#3F51B5', // INDIGO\n '#FFC107', // AMBER\n '#795548', // BROWN\n];\n\n@Component({\n selector: 'ajf-fb-node-entry',\n templateUrl: 'node-entry.html',\n styleUrls: ['node-entry.scss'],\n // eslint-disable-next-line\n host: {'(window.resize)': 'onResize()'},\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbNodeEntry implements AfterViewInit, OnDestroy {\n @ViewChildren(AjfFbBranchLine) branchLines!: QueryList<AjfFbBranchLine>;\n @ViewChildren(forwardRef(() => AjfFbNodeEntry), {read: ElementRef})\n childEntries!: QueryList<ElementRef>;\n\n private _hasContent = false;\n get hasContent(): boolean {\n return this._hasContent;\n }\n\n private _isFirst = false;\n get isFirst(): boolean {\n return this._isFirst;\n }\n @Input()\n set isFirst(isFirst: boolean) {\n this._isFirst = isFirst;\n }\n\n private _isNodeEntry = false;\n get isNodeEntry(): boolean {\n return this._isNodeEntry;\n }\n\n private _nodeEntry: AjfFormBuilderNode | undefined;\n get nodeEntry(): AjfFormBuilderNode | undefined {\n return this._nodeEntry;\n }\n @Input()\n set nodeEntry(nodeEntry: AjfFormBuilderNode | undefined) {\n this._nodeEntry = nodeEntry;\n if (nodeEntry != null && (<AjfFormBuilderNodeEntry>nodeEntry).node !== void 0) {\n const ne = <AjfFormBuilderNodeEntry>nodeEntry;\n this._isNodeEntry = true;\n const node = ne.node;\n this._hasContent = node != null && isContainerNode(node);\n } else {\n this._isNodeEntry = false;\n this._hasContent = false;\n }\n }\n\n private _level = 0;\n get level(): number {\n return this._level;\n }\n @Input()\n set level(value: number) {\n this._level = value;\n }\n private _isDraggable: boolean = true;\n get isDraggable(): boolean {\n return this._isDraggable;\n }\n @Input()\n set isDraggable(draggable: boolean) {\n this._isDraggable = draggable;\n }\n\n get realNodeEntry(): AjfFormBuilderNodeEntry {\n return this._nodeEntry as AjfFormBuilderNodeEntry;\n }\n\n private _branchColors: string[] = branchColors.slice(0);\n get branchColors(): string[] {\n return this._branchColors;\n }\n\n private _dropZones: string[] = ['fbdz-node'];\n get dropZones(): string[] {\n return this._dropZones;\n }\n\n private _slideDropZones: string[] = ['fbdz-slide'];\n get slideDropZones(): string[] {\n return this._slideDropZones;\n }\n\n private _originOffset = 0;\n get originOffset(): number {\n return this._originOffset;\n }\n @Input()\n set originOffset(originOffset: number) {\n this._originOffset = originOffset;\n this._originLeftMargin = `${this._originOffset * 4}px`;\n }\n private _originLeftMargin = '0';\n get originLeftMargin(): string {\n return this._originLeftMargin;\n }\n\n private _firstBranchColor = branchColors[0];\n get firstBranchColor(): string {\n return this._firstBranchColor;\n }\n @Input()\n set firstBranchColor(firstBranchColor: string) {\n const idx = branchColors.indexOf(firstBranchColor);\n if (idx > 0) {\n this._firstBranchColor = firstBranchColor;\n this._branchColors = branchColors.slice(idx).concat(branchColors.slice(0, idx));\n } else {\n this._firstBranchColor = branchColors[0];\n this._branchColors = branchColors.slice(0);\n }\n }\n\n private _currentEditedNode: Observable<AjfFormBuilderNodeEntry | null>;\n get currentEditedNode(): Observable<AjfFormBuilderNodeEntry | null> {\n return this._currentEditedNode;\n }\n\n private _branchLinesSubscription: Subscription = Subscription.EMPTY;\n private _childEntriesSubscription: Subscription = Subscription.EMPTY;\n\n constructor(private _service: AjfFormBuilderService) {\n this._currentEditedNode = this._service.editedNodeEntry;\n }\n\n onResize(): void {}\n\n edit(evt: Event): void {\n evt.stopPropagation();\n if (this.nodeEntry == null || !this.isNodeEntry) {\n return;\n }\n this._service.editNodeEntry(<AjfFormBuilderNodeEntry>this.nodeEntry);\n }\n\n delete(evt: Event): void {\n evt.stopPropagation();\n if (this.nodeEntry == null || !this.isNodeEntry) {\n return;\n }\n this._service.cancelNodeEntryEdit();\n this._service.deleteNodeEntry(<AjfFormBuilderNodeEntry>this.nodeEntry);\n }\n\n isLastNode(): boolean {\n if (!this.realNodeEntry || !this.realNodeEntry.children) {\n return false;\n }\n return !this.realNodeEntry.children[0].children;\n }\n\n isSlide(node: AjfNode): boolean {\n return isSlidesNode(node);\n }\n\n isExpanded(): Observable<boolean> {\n if (this._nodeEntry && 'node' in this._nodeEntry) {\n return this._service.getExpandedStatus(this._nodeEntry.node.name);\n }\n return obsOf(false);\n }\n\n ngAfterViewInit(): void {\n this.updateBranchHeights();\n this._childEntriesSubscription = this.childEntries.changes.subscribe(() => {\n this.updateBranchHeights();\n });\n }\n\n ngOnDestroy(): void {\n this._branchLinesSubscription.unsubscribe();\n this._childEntriesSubscription.unsubscribe();\n }\n\n /**\n * Triggers when a field or slide node is moved or inserted by drag&dropping in the formbuilder.\n * @param event The drop event.\n * @param content True if the current nodeEntry contains other nodeEntries.\n */\n onDrop(\n event: CdkDragDrop<AjfFormBuilderNodeEntry> | CdkDragDrop<AjfFormBuilderNodeTypeEntry>,\n content = false,\n ): void {\n if (this._nodeEntry == null) {\n return;\n }\n onDropProcess(event, this._service, this._nodeEntry, content);\n }\n\n /**\n * Assigns a progressive id to the dropList, to connect it to the FormBuilder source list.\n * @param empty True if the list is marked as empty.\n */\n assignId(empty: boolean = false): string {\n return this._service.assignListId(this.realNodeEntry.node, empty);\n }\n\n disableSlideDrop(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return disableSlideDropPredicate(item);\n }\n\n disableFieldDrop(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return disableFieldDropPredicate(item);\n }\n\n emptyAreaDropPredicate(): (item: CdkDrag, _drop: CdkDropList) => boolean {\n return (item: CdkDrag, _drop: CdkDropList): boolean => {\n if (this._level > 0) {\n return !item.data.isSlide;\n }\n return item.data.isSlide || false;\n };\n }\n\n updateBranchHeights(delay: number = 0): void {\n setTimeout(() => {\n if (\n this.nodeEntry == null ||\n !this.isNodeEntry ||\n this.branchLines == null ||\n this.childEntries == null\n ) {\n return;\n }\n const nodeEntry = <AjfFormBuilderNodeEntry>this.nodeEntry;\n const branchLines: AjfFbBranchLine[] = this.branchLines.toArray();\n const sliceIdx = nodeEntry.content != null ? nodeEntry.content.length : 0;\n const childEntries: ElementRef[] = this.childEntries.toArray().slice(sliceIdx);\n\n if (branchLines.length != childEntries.length) {\n return;\n }\n\n branchLines.forEach((bl: AjfFbBranchLine, idx: number) => {\n const ce: ElementRef = childEntries[idx];\n bl.height = ce.nativeElement.offsetTop;\n });\n }, delay);\n }\n\n updateExpandedStatus(expanded: boolean) {\n if (this._nodeEntry && 'node' in this._nodeEntry) {\n this._service.updateExpandedStatus(this._nodeEntry.node.name, expanded);\n this.updateBranchHeights(400);\n }\n }\n}\n","<ng-container *ngIf=\"nodeEntry; else rootEmpty\">\n <ng-template [ngIf]=\"isNodeEntry && !isLastNode()\">\n <ajf-fb-branch-line\n *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\"\n [offset]=\"idx\"\n [color]=\"branchColors[idx]\"\n ></ajf-fb-branch-line>\n </ng-template>\n\n <div\n class=\"mat-card-container\"\n [class.ajf-highlighted-formbuilder-node]=\"(currentEditedNode|async) === nodeEntry\"\n >\n <div\n *ngIf=\"!isFirst\"\n class=\"ajf-origin-line\"\n [style.margin-left]=\"originLeftMargin\"\n [style.border-color]=\"firstBranchColor\"\n ></div>\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container *ngIf=\"!isDraggable; else draggable\">\n <mat-card appearance=\"outlined\">\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-card>\n </ng-container>\n\n <ng-template #draggable>\n <mat-card\n appearance=\"outlined\"\n cdkDrag\n [cdkDragData]=\"realNodeEntry\"\n class=\"ajf-draggable-box\"\n >\n <ng-container *ngIf=\"isSlide(realNodeEntry.node); else fieldPanel\">\n <ng-container *ngTemplateOutlet=\"slidePanel\"></ng-container>\n </ng-container>\n </mat-card>\n </ng-template>\n\n <ng-template #slidePanel>\n <mat-expansion-panel\n [expanded]=\"isExpanded()|async\"\n (opened)=\"updateExpandedStatus(true)\"\n (closed)=\"updateExpandedStatus(false)\"\n class=\"mat-elevation-z\"\n >\n <mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n </mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-expansion-panel>\n </ng-template>\n\n <ng-template #fieldPanel>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </ng-template>\n\n <ng-template #cardTitle>\n <div class=\"ajf-title-row\">\n <ajf-node-icon [node]=\"realNodeEntry.node\"></ajf-node-icon>\n \n <span\n class=\"ajf-title\"\n [innerHTML]=\"(realNodeEntry.node.label || realNodeEntry.node.name) | transloco\"\n ></span>\n <span\n *ngIf=\"realNodeEntry.node.visibility && realNodeEntry.node.visibility?.condition !== 'true'\"\n class=\"ajf-visibility-condition\"\n [innerHTML]=\"'Condition: (' + realNodeEntry.node.visibility.condition + ')'\"\n >\n </span>\n <span class=\"ajf-actions\">\n <button\n [disabled]=\"(currentEditedNode|async) === nodeEntry\"\n (click)=\"edit($event)\"\n mat-icon-button\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button (click)=\"delete($event)\" mat-icon-button>\n <mat-icon>delete</mat-icon>\n </button>\n </span>\n </div>\n </ng-template>\n\n <ng-template #cardContent>\n <div *ngIf=\"hasContent\">\n <ajf-fb-node-entry\n cdkDropList\n class=\"ajf-fields-list\"\n *ngFor=\"let contentEntry of realNodeEntry.content; let isFirstChild = first; let idx = index\"\n [id]=\"assignId()\"\n [level]=\"level + 1\"\n [isFirst]=\"isFirstChild\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"contentEntry\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n ></ajf-fb-node-entry>\n <mat-card\n appearance=\"outlined\"\n class=\"ajf-empty\"\n *ngIf=\"realNodeEntry.content.length === 0\"\n cdkDropList\n [id]=\"assignId(true)\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n ><mat-card-title>Drop your fields here</mat-card-title></mat-card\n >\n </div>\n </ng-template>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\">\n <ajf-fb-node-entry\n *ngIf=\"!isLastNode()\"\n [level]=\"level\"\n [originOffset]=\"idx\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"childNodeEntry\"\n ></ajf-fb-node-entry>\n </ng-container>\n </ng-template>\n</ng-container>\n\n<ng-template #rootEmpty>\n <div class=\"mat-card-container\">\n <mat-card\n appearance=\"outlined\"\n class=\"ajf-empty\"\n cdkDropList\n [cdkDropListEnterPredicate]=\"emptyAreaDropPredicate()\"\n (cdkDropListDropped)=\"onDrop($event)\"\n ><mat-card-title>Drop your slides here</mat-card-title>\n </mat-card>\n </div>\n</ng-template>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-validation-condition-editor-dialog',\n templateUrl: 'validation-condition-editor-dialog.html',\n styleUrls: ['validation-condition-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbValidationConditionEditorDialog {\n @ViewChild(AjfFbConditionEditor, {static: false}) editor!: AjfFbConditionEditor;\n\n private _fields: Observable<AjfField[]>;\n get fields(): Observable<AjfField[]> {\n return this._fields;\n }\n\n condition: string = '';\n errorMessage: string = '';\n\n constructor(\n service: AjfFormBuilderService,\n public dialogRef: MatDialogRef<AjfFbValidationConditionEditorDialog>,\n ) {\n this._fields = service.flatFields.pipe(\n map((fields: AjfField[]) => fields.sort((f1, f2) => f1.name.localeCompare(f2.name))),\n );\n }\n\n saveCondition(): void {\n if (this.editor == null) {\n return;\n }\n const newValue = this.editor.formulaEditorControl.value;\n this.dialogRef.close({condition: newValue, errorMessage: this.errorMessage});\n }\n\n closeDialog(): void {\n this.dialogRef.close(this.editor.formulaEditorControl.value);\n }\n}\n","<h3 matDialogTitle>{{'Edit condition'|transloco}}</h3>\n<mat-dialog-content>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"errorMessage\"\n [placeholder]=\"'Error message'|transloco\"\n />\n </mat-form-field>\n <ajf-condition-editor\n *ngIf=\"fields|async as curFields\"\n [fields]=\"curFields!\"\n [condition]=\"condition\"\n ></ajf-condition-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveCondition()\">{{'Save'|transloco}}</button>\n <button mat-button (click)=\"closeDialog()\">{{'Close'|transloco}}</button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfField} from '@ajf/core/forms';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatDialogRef} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-warning-condition-editor-dialog',\n templateUrl: 'warning-condition-editor-dialog.html',\n styleUrls: ['warning-condition-editor-dialog.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbWarningConditionEditorDialog {\n @ViewChild(AjfFbConditionEditor, {static: false}) editor!: AjfFbConditionEditor;\n\n private _fields: Observable<AjfField[]>;\n get fields(): Observable<AjfField[]> {\n return this._fields;\n }\n\n condition: string = '';\n warningMessage: string = '';\n\n constructor(\n service: AjfFormBuilderService,\n public dialogRef: MatDialogRef<AjfFbWarningConditionEditorDialog>,\n ) {\n this._fields = service.flatFields.pipe(\n map((fields: AjfField[]) => fields.sort((f1, f2) => f1.name.localeCompare(f2.name))),\n );\n }\n\n saveCondition(): void {\n if (this.editor == null) {\n return;\n }\n const newValue = this.editor.formulaEditorControl.value;\n this.dialogRef.close({condition: newValue, warningMessage: this.warningMessage});\n }\n\n closeDialog(): void {\n this.dialogRef.close(this.editor.formulaEditorControl.value);\n }\n}\n","<h3 matDialogTitle>{{'Edit condition'|transloco}}</h3>\n<mat-dialog-content>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"warningMessage\"\n [placeholder]=\"'Warning message' | transloco\"\n />\n </mat-form-field>\n <ajf-condition-editor\n *ngIf=\"fields|async as curFields\"\n [fields]=\"curFields!\"\n [condition]=\"condition\"\n ></ajf-condition-editor>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button (click)=\"saveCondition()\">{{'Save'|transloco}}</button>\n <button mat-button (click)=\"closeDialog()\">{{'Close'|transloco}}</button>\n</mat-dialog-actions>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\nimport {ChangeDetectorRef, Injectable} from '@angular/core';\nimport {AbstractControl, AsyncValidatorFn, ValidationErrors} from '@angular/forms';\nimport {Observable, of} from 'rxjs';\nimport {debounceTime, finalize, map, take} from 'rxjs/operators';\nimport {AjfFormBuilderService} from './form-builder-service';\n\n/**\n * Custom validator service that checks for an already existing\n * Node with the given name.\n */\n@Injectable()\nexport class AjfNodePropertiesNameMatchValidator {\n constructor(private _fbs: AjfFormBuilderService) {}\n\n /**\n * Custom async validator method.\n * Checks if a Node with the same Name exists, in order to\n * validate the Node Entry properties form.\n * @param cdr The editor changeDetectionRef\n * @param currentId The current node entry id\n */\n sameValueCheck(cdr: ChangeDetectorRef, currentId: number): AsyncValidatorFn {\n return (control: AbstractControl): Observable<ValidationErrors | null> => {\n if (!this._fbs.flatNodes) return of(null);\n return this._fbs.flatNodes.pipe(\n debounceTime(300),\n map(nodes => {\n const sameNameNode = nodes.find(\n n => n.name.toLowerCase() === control.value.toLowerCase() && n.id != currentId,\n );\n if (sameNameNode) {\n return {'name_exists': true};\n }\n return null;\n }),\n finalize(() => {\n control.markAsTouched();\n cdr.detectChanges();\n }),\n take(1),\n );\n };\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfChoicesOrigin,\n AjfFieldWithChoices,\n AjfNode,\n AjfNumberField,\n AjfRangeField,\n AjfRepeatingContainerNode,\n AjfTableField,\n isField,\n isFieldWithChoices,\n isNumberField,\n isRangeField,\n isRepeatingContainerNode,\n isTableField,\n} from '@ajf/core/forms';\nimport {AjfCondition, alwaysCondition, neverCondition} from '@ajf/core/models';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AbstractControl,\n UntypedFormBuilder,\n UntypedFormGroup,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\nimport {Observable, Subscription} from 'rxjs';\nimport {distinctUntilChanged, filter, map, shareReplay, take, withLatestFrom} from 'rxjs/operators';\n\nimport {AjfFbConditionEditorDialog} from './condition-editor-dialog';\nimport {AjfFormBuilderNodeEntry, AjfFormBuilderService} from './form-builder-service';\nimport {AjfFbValidationConditionEditorDialog} from './validation-condition-editor-dialog';\nimport {AjfFbWarningConditionEditorDialog} from './warning-condition-editor-dialog';\nimport {MatCheckbox} from '@angular/material/checkbox';\nimport {AjfNodePropertiesNameMatchValidator} from './node-properties-name-validator';\n\nfunction checkRepsValidity(c: AbstractControl): {[key: string]: any} | null {\n const minReps = c.value.minReps;\n const maxReps = c.value.maxReps;\n if (minReps != null && maxReps != null && minReps > maxReps) {\n return {reps: 'Min repetions cannot be greater than max repetitions'};\n }\n return null;\n}\n\nfunction checkValueLimitsValidity(c: AbstractControl): {[key: string]: any} | null {\n const minValue = c.value.minValue;\n const maxValue = c.value.maxValue;\n if (minValue != null && maxValue != null && minValue > maxValue) {\n return {valueLimit: 'Min value cannot be greater than max value'};\n }\n return null;\n}\n\nfunction checkDigitsValidity(c: AbstractControl): {[key: string]: any} | null {\n const minDigits = c.value.minDigits;\n const maxDigits = c.value.maxDigits;\n if (minDigits != null && maxDigits != null && minDigits > maxDigits) {\n return {digits: 'Min digits cannot be greater than max digits'};\n }\n return null;\n}\n\nfunction checkRangeValidity(c: AbstractControl): {[key: string]: any} | null {\n const {start, end} = c.value;\n if (start != null && end != null && start > end) {\n return {range: 'End must be greater than start'};\n }\n return null;\n}\n\nexport interface ValidationCondition {\n condition: string;\n errorMessage: string;\n}\n\nexport interface WarningCondition {\n condition: string;\n warningMessage: string;\n}\n\n@Component({\n selector: 'ajf-fb-node-properties',\n templateUrl: 'node-properties.html',\n styleUrls: ['node-properties.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbNodeProperties implements OnDestroy {\n private _fieldSizes: {label: string; value: string}[] = [\n {label: 'Normal', value: 'normal'},\n {label: 'Small', value: 'small'},\n {label: 'Smaller', value: 'smaller'},\n {label: 'Tiny', value: 'tiny'},\n {label: 'Mini', value: 'mini'},\n ];\n get fieldSizes(): {label: string; value: string}[] {\n return this._fieldSizes;\n }\n\n private _nodeEntry: Observable<AjfFormBuilderNodeEntry | null>;\n get nodeEntry(): Observable<AjfFormBuilderNodeEntry | null> {\n return this._nodeEntry;\n }\n\n private _choicesOrigins: AjfChoicesOrigin<any>[] = [];\n get choicesOrigins(): AjfChoicesOrigin<any>[] {\n return this._choicesOrigins;\n }\n\n private _enabled: Observable<boolean>;\n get enabled(): Observable<boolean> {\n return this._enabled;\n }\n\n private _propertiesForm!: Observable<UntypedFormGroup>;\n get propertiesForm(): Observable<UntypedFormGroup> {\n return this._propertiesForm;\n }\n\n private _hasChoices: Observable<boolean> | undefined;\n get hasChoices(): Observable<boolean> | undefined {\n return this._hasChoices;\n }\n\n private _curVisibility: string | null = null;\n get curVisibility(): string | null {\n return this._curVisibility;\n }\n\n private _curFormulaReps: string | null = null;\n get curFormulaReps(): string | null {\n return this._curFormulaReps;\n }\n\n private _curChoicesFilter: string | null = null;\n get curChoicesFilter(): string | null {\n return this._curChoicesFilter;\n }\n\n private _curForceValue: string | null = null;\n get curForceValue(): string | null {\n return this._curForceValue;\n }\n\n private _curFormula: string | null = null;\n get curFormula(): string | null {\n return this._curFormula;\n }\n\n private _conditionalBranches: string[] = [];\n get conditionalBranches(): string[] {\n return this._conditionalBranches;\n }\n\n private _validationConditions: ValidationCondition[] = [];\n get validationConditions(): ValidationCondition[] {\n return this._validationConditions;\n }\n\n private _warningConditions: WarningCondition[] = [];\n get warningConditions(): WarningCondition[] {\n return this._warningConditions;\n }\n\n private _nextSlideCondition: string | undefined;\n get nextSlideCondition(): string | undefined {\n return this._nextSlideCondition;\n }\n\n private _triggerConditions: string[] = [];\n get triggerConditions(): string[] {\n return this._triggerConditions;\n }\n\n isRepeatingContainerNode: (nodeEntry: AjfFormBuilderNodeEntry | null) => boolean = nodeEntry => {\n return nodeEntry != null && isRepeatingContainerNode(nodeEntry.node);\n };\n\n private _visibilityOptSub: Subscription = Subscription.EMPTY;\n private _visibilitySub: Subscription = Subscription.EMPTY;\n private _conditionalBranchesSub = Subscription.EMPTY;\n private _formulaRepsSub = Subscription.EMPTY;\n private _choicesFilterSub = Subscription.EMPTY;\n private _formulaSub = Subscription.EMPTY;\n private _forceValueSub = Subscription.EMPTY;\n private _validationConditionsSub = Subscription.EMPTY;\n private _warningConditionsSub = Subscription.EMPTY;\n private _nextSlideConditionSub = Subscription.EMPTY;\n private _choicesOriginsSub = Subscription.EMPTY;\n private _triggerConditionsSub = Subscription.EMPTY;\n\n private _editConditionDialog: MatDialogRef<AjfFbConditionEditorDialog> | null = null;\n private _editConditionDialogSub: Subscription = Subscription.EMPTY;\n private _editValidationConditionDialog: MatDialogRef<AjfFbValidationConditionEditorDialog> | null =\n null;\n private _editValidationConditionDialogSub: Subscription = Subscription.EMPTY;\n private _editWarningConditionDialog: MatDialogRef<AjfFbWarningConditionEditorDialog> | null =\n null;\n private _editWarningConditionDialogSub: Subscription = Subscription.EMPTY;\n\n private _editVisibilityEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editVisibilitySub = Subscription.EMPTY;\n\n private _editConditionalBranchEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editConditionalBranchSub = Subscription.EMPTY;\n\n private _editFormulaRepsEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editFormulaRepsSub = Subscription.EMPTY;\n\n private _editChoicesFilterEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editChoicesFilterSub = Subscription.EMPTY;\n\n private _editFormulaEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editFormulaSub = Subscription.EMPTY;\n\n private _editForceValueEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editForceValueSub = Subscription.EMPTY;\n\n private _editValidationConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editValidationConditionSub = Subscription.EMPTY;\n\n private _addValidationConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _addValidationConditionSub = Subscription.EMPTY;\n\n private _removeValidationConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _removeValidationConditionSub = Subscription.EMPTY;\n\n private _editWarningConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editWarningConditionSub = Subscription.EMPTY;\n\n private _addWarningConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _addWarningConditionSub = Subscription.EMPTY;\n\n private _removeWarningConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _removeWarningConditionSub = Subscription.EMPTY;\n\n private _editNextSlideConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _editNextSlideConditionSub = Subscription.EMPTY;\n\n private _editTriggerConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _editTriggerConditionSub = Subscription.EMPTY;\n\n private _addTriggerConditionEvt: EventEmitter<void> = new EventEmitter<void>();\n private _addTriggerConditionSub = Subscription.EMPTY;\n\n private _removeTriggerConditionEvt: EventEmitter<number> = new EventEmitter<number>();\n private _removeTriggerConditionSub = Subscription.EMPTY;\n\n private _saveEvt: EventEmitter<void> = new EventEmitter<void>();\n private _saveSub = Subscription.EMPTY;\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _service: AjfFormBuilderService,\n private _dialog: MatDialog,\n private _fb: UntypedFormBuilder,\n private _nodeNameValidator: AjfNodePropertiesNameMatchValidator,\n ) {\n this._nodeEntry = _service.editedNodeEntry;\n this._choicesOriginsSub = _service.choicesOrigins.subscribe(\n c => (this._choicesOrigins = c || []),\n );\n\n this._enabled = this._nodeEntry.pipe(map(n => n != null));\n\n this._initForm();\n this._initVisibilityEdit();\n this._initConditionalBranchEdit();\n this._initFormulaRepsEdit();\n this._initChoicesFilterEdit();\n this._initFormulaEdit();\n this._initForceValueEdit();\n this._initValidationConditionEdit();\n this._initAddValidationCondition();\n this._initRemoveValidationCondition();\n this._initWarningConditionEdit();\n this._initAddWarningCondition();\n this._initRemoveWarningCondition();\n this._initNextSlideConditionEdit();\n this._initTriggerConditionEdit();\n this._initAddTriggerCondition();\n this._initRemoveTriggerCondition();\n this._initSave();\n }\n\n editVisibility(): void {\n this._editVisibilityEvt.emit();\n }\n\n editConditionalBranch(idx: number): void {\n if (idx < 0 || idx >= this._conditionalBranches.length) {\n return;\n }\n this._editConditionalBranchEvt.emit(idx);\n }\n\n editFormulaReps(): void {\n this._editFormulaRepsEvt.emit();\n }\n\n editChoicesFilter(): void {\n this._editChoicesFilterEvt.emit();\n }\n\n editFormula(): void {\n this._editFormulaEvt.emit();\n }\n\n editForceValue(): void {\n this._editForceValueEvt.emit();\n }\n\n editValidationCondition(idx: number): void {\n if (idx < 0 || idx >= this._validationConditions.length) {\n return;\n }\n this._editValidationConditionEvt.emit(idx);\n }\n\n addValidationCondition(): void {\n this._addValidationConditionEvt.emit();\n }\n\n removeValidationCondition(idx: number): void {\n if (idx < 0 || idx >= this._validationConditions.length) {\n return;\n }\n this._removeValidationConditionEvt.emit(idx);\n }\n\n editWarningCondition(idx: number): void {\n if (idx < 0 || idx >= this._warningConditions.length) {\n return;\n }\n this._editWarningConditionEvt.emit(idx);\n }\n\n addWarningCondition(): void {\n this._addWarningConditionEvt.emit();\n }\n\n removeWarningCondition(idx: number): void {\n if (idx < 0 || idx >= this._warningConditions.length) {\n return;\n }\n this._removeWarningConditionEvt.emit(idx);\n }\n\n editNextSlideCondition(): void {\n this._editNextSlideConditionEvt.emit();\n }\n\n editTriggerCondition(idx: number): void {\n if (idx < 0 || idx >= this._triggerConditions.length) {\n return;\n }\n this._editTriggerConditionEvt.emit(idx);\n }\n\n addTriggerCondition(): void {\n this._addTriggerConditionEvt.emit();\n }\n\n removeTriggerCondition(idx: number): void {\n if (idx < 0 || idx >= this._triggerConditions.length) {\n return;\n }\n this._removeTriggerConditionEvt.emit(idx);\n }\n\n isField(nodeEntry: AjfFormBuilderNodeEntry | null): boolean {\n return nodeEntry != null && isField(nodeEntry.node);\n }\n\n isNumericField(node: AjfNode): node is AjfNumberField {\n return isField(node) && isNumberField(node);\n }\n\n isFieldWithChoices(node: AjfNode): node is AjfFieldWithChoices<any> {\n return isField(node) && isFieldWithChoices(node);\n }\n\n hasChoicesOriginRef(): Observable<boolean> {\n return this._propertiesForm.pipe(\n map(fg => {\n const value = fg.get('choicesOriginRef')?.value != null;\n return value;\n }),\n take(1),\n );\n }\n\n isRangeField(node: AjfNode): node is AjfRangeField {\n return isField(node) && isRangeField(node);\n }\n\n isTableField(node: AjfNode): node is AjfTableField {\n return isField(node) && isTableField(node);\n }\n\n forceCheckbox(checked: boolean, checkbox: MatCheckbox): void {\n if (!checked || !checkbox) {\n return;\n }\n if (checkbox.checked) {\n checkbox.toggle();\n }\n }\n\n save(): void {\n this._saveEvt.emit();\n }\n\n cancel(): void {\n this._service.cancelNodeEntryEdit();\n }\n\n fieldErrorMessage(formControl: AbstractControl | null, fieldName: string): string | null {\n if (!formControl || !fieldName) return null;\n if (formControl.hasError('required')) {\n return `You must enter a value for ${fieldName}`;\n }\n if (formControl.hasError('name_exists')) {\n return `This ${fieldName} has already been used`;\n }\n return null;\n }\n\n ngOnDestroy(): void {\n this.cancel();\n this._choicesOriginsSub.unsubscribe();\n\n this._visibilityOptSub.unsubscribe();\n this._visibilitySub.unsubscribe();\n this._formulaRepsSub.unsubscribe();\n this._choicesFilterSub.unsubscribe();\n this._formulaSub.unsubscribe();\n this._forceValueSub.unsubscribe();\n this._validationConditionsSub.unsubscribe();\n this._warningConditionsSub.unsubscribe();\n this._triggerConditionsSub.unsubscribe();\n\n this._editConditionDialogSub.unsubscribe();\n this._editValidationConditionDialogSub.unsubscribe();\n this._editWarningConditionDialogSub.unsubscribe();\n\n this._editChoicesFilterSub.unsubscribe();\n this._editConditionalBranchSub.unsubscribe();\n this._editVisibilitySub.unsubscribe();\n this._editFormulaRepsSub.unsubscribe();\n this._editFormulaSub.unsubscribe();\n this._editForceValueSub.unsubscribe();\n this._editValidationConditionSub.unsubscribe();\n this._editWarningConditionSub.unsubscribe();\n this._nextSlideConditionSub.unsubscribe();\n\n this._addTriggerConditionSub.unsubscribe();\n this._addValidationConditionSub.unsubscribe();\n this._addWarningConditionSub.unsubscribe();\n this._editNextSlideConditionSub.unsubscribe();\n this._editTriggerConditionSub.unsubscribe();\n this._removeTriggerConditionSub.unsubscribe();\n this._removeValidationConditionSub.unsubscribe();\n this._removeWarningConditionSub.unsubscribe();\n\n this._saveSub.unsubscribe();\n }\n\n private _initSave(): void {\n this._saveSub = this._saveEvt\n .pipe(withLatestFrom(this.propertiesForm))\n .subscribe(([_, formGroup]) => {\n const fg = formGroup as UntypedFormGroup;\n const val = {...fg.value, conditionalBranches: this._conditionalBranches};\n this._service.saveNodeEntry(val);\n });\n }\n\n private _initForm(): void {\n this._propertiesForm = this._nodeEntry.pipe(\n filter(n => n != null),\n map(n => {\n if (this._visibilityOptSub != null) {\n this._visibilityOptSub.unsubscribe();\n }\n if (this._visibilitySub != null) {\n this._visibilitySub.unsubscribe();\n }\n if (this._conditionalBranchesSub != null) {\n this._conditionalBranchesSub.unsubscribe();\n }\n if (n == null) {\n return this._fb.group({});\n }\n\n const visibility = n.node.visibility != null ? n.node.visibility.condition : null;\n const visibilityOpt =\n n.node.visibility != null ? this._guessVisibilityOpt(n.node.visibility) : null;\n let controls: any = {\n name: [\n n.node.name,\n Validators.required,\n this._nodeNameValidator.sameValueCheck(this._cdr, n.node.id),\n ],\n label: [n.node.label, Validators.required],\n visibilityOpt: [visibilityOpt, Validators.required],\n visibility: [visibility, Validators.required],\n conditionalBranchesNum: n.node.conditionalBranches.length,\n };\n const validators: ValidatorFn[] = [];\n\n if (isRepeatingContainerNode(n.node)) {\n const rn = <AjfRepeatingContainerNode>n.node;\n\n const formulaReps = rn.formulaReps != null ? rn.formulaReps.formula : null;\n\n controls.formulaReps = [formulaReps, Validators.required];\n controls.minReps = rn.minReps;\n controls.maxReps = rn.maxReps;\n\n this._curFormulaReps = formulaReps;\n\n validators.push(checkRepsValidity);\n }\n\n const {node} = n;\n\n if (isField(node)) {\n let forceValue: string | null = null;\n let notEmpty: boolean = false;\n let validationConditions: ValidationCondition[] = [];\n if (node.validation != null) {\n if (node.validation.forceValue != null) {\n forceValue = node.validation.forceValue.condition;\n }\n notEmpty = node.validation.notEmpty != null;\n validationConditions = (node.validation.conditions || []).map(c => {\n return {condition: c.condition, errorMessage: c.errorMessage};\n });\n }\n\n let notEmptyW: boolean = false;\n let warningConditions: WarningCondition[] = [];\n if (node.warning != null) {\n notEmptyW = node.warning.notEmpty != null;\n warningConditions = (node.warning.conditions || []).map(w => {\n return {condition: w.condition, warningMessage: w.warningMessage};\n });\n }\n const formula = node.formula != null ? node.formula.formula : null;\n\n controls.description = node.description;\n controls.defaultValue = node.defaultValue;\n controls.hint = node.hint;\n controls.size = node.size;\n controls.formula = formula;\n controls.forceValue = forceValue;\n controls.notEmpty = notEmpty;\n controls.validationConditions = [validationConditions, []];\n controls.notEmptyWarning = notEmptyW;\n controls.readonlyField = node.editable != null ? !node.editable : false;\n controls.warningConditions = [warningConditions, []];\n controls.nextSlideCondition = [node.nextSlideCondition];\n\n this._curForceValue = forceValue;\n this._curFormula = formula;\n this._validationConditions = validationConditions;\n this._warningConditions = warningConditions;\n }\n\n if (this.isNumericField(node)) {\n let minValue: any;\n let maxValue: any;\n let minDigits: any;\n let maxDigits: any;\n if (node.validation != null) {\n if (node.validation.minValue != null) {\n minValue = (node.validation.minValue.condition || '').replace('$value >= ', '');\n }\n if (node.validation.maxValue != null) {\n maxValue = (node.validation.maxValue.condition || '').replace('$value <= ', '');\n }\n if (node.validation.minDigits != null) {\n minDigits = (node.validation.minDigits.condition || '').replace(\n '$value.toString().length >= ',\n '',\n );\n }\n if (node.validation.maxDigits != null) {\n maxDigits = (node.validation.maxDigits.condition || '').replace(\n '$value.toString().length <= ',\n '',\n );\n }\n }\n\n controls.minValue = minValue;\n controls.maxValue = maxValue;\n controls.minDigits = minDigits;\n controls.maxDigits = maxDigits;\n\n validators.push(checkValueLimitsValidity);\n validators.push(checkDigitsValidity);\n }\n\n if (this.isRangeField(node)) {\n const {start, end, step} = node;\n\n controls.start = start;\n controls.end = end;\n controls.step = step;\n\n validators.push(checkRangeValidity);\n }\n\n if (this.isFieldWithChoices(node)) {\n let triggerConditions: string[] = (node.triggerConditions || []).map(c => c.condition);\n\n controls.choicesOriginRef = (node as any).choicesOriginRef;\n controls.choicesFilter = node.choicesFilter != null ? node.choicesFilter.formula : null;\n controls.forceExpanded = node.forceExpanded;\n controls.forceNarrow = node.forceNarrow;\n controls.triggerConditions = triggerConditions;\n\n this._triggerConditions = triggerConditions;\n }\n\n if (this.isTableField(node)) {\n const {columnTypes, rows, columnLabels, rowLabels} = node;\n const tableDef = {columnTypes, rows, columnLabels, rowLabels};\n controls.tableDef = JSON.stringify(tableDef, undefined, 2);\n controls.hideEmptyRows = node.hideEmptyRows;\n }\n\n const fg = this._fb.group(controls);\n fg.setValidators(validators);\n\n this._conditionalBranches = n.node.conditionalBranches.map(c => c.condition);\n this._curVisibility = n.node.visibility != null ? n.node.visibility.condition : null;\n\n this._handleConditionalBranchesChange(fg);\n this._handleVisibilityChange(fg);\n this._handleFormulaRepsChange(fg);\n this._handleChoicesFilterChange(fg);\n this._handleFormulaChange(fg);\n this._handleForceValueChange(fg);\n this._handleValidationCondtionsChange(fg);\n this._handleWarningCondtionsChange(fg);\n this._handleNextSlideConditionChange(fg);\n this._handleTriggerCondtionsChange(fg);\n\n return fg;\n }),\n shareReplay(1),\n );\n }\n\n private _destroyConditionDialog(): void {\n if (this._editConditionDialogSub != null) {\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n }\n if (this._editConditionDialog != null) {\n this._editConditionDialog.close();\n this._editConditionDialog = null;\n }\n }\n\n private _destroyValidationConditionDialog(): void {\n if (this._editValidationConditionDialogSub != null) {\n this._editValidationConditionDialogSub.unsubscribe();\n this._editValidationConditionDialogSub = Subscription.EMPTY;\n }\n if (this._editValidationConditionDialog != null) {\n this._editValidationConditionDialog.close();\n this._editValidationConditionDialog = null;\n }\n }\n\n private _destroyWarningConditionDialog(): void {\n if (this._editWarningConditionDialogSub != null) {\n this._editWarningConditionDialogSub.unsubscribe();\n this._editWarningConditionDialogSub = Subscription.EMPTY;\n }\n if (this._editWarningConditionDialog != null) {\n this._editWarningConditionDialog.close();\n this._editWarningConditionDialog = null;\n }\n }\n\n private _initRemoveTriggerCondition(): void {\n this._removeTriggerConditionSub = this._removeTriggerConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['triggerConditions'];\n let vcs = (ctrl.value || []).slice(0);\n if (vcIdx < 0 || vcIdx >= vcs.length) {\n return;\n }\n vcs.splice(vcIdx, 1);\n ctrl.setValue(vcs);\n });\n }\n\n private _initAddTriggerCondition(): void {\n this._addTriggerConditionSub = this._addTriggerConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['triggerConditions'];\n let vcs = (ctrl.value || []).slice(0);\n vcs.push('');\n ctrl.setValue(vcs);\n });\n }\n\n private _initTriggerConditionEdit(): void {\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n this._editTriggerConditionSub = this._editTriggerConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, fg]) => {\n this._destroyConditionDialog();\n if (vcIdx < 0 || vcIdx >= this._triggerConditions.length || fg == null) {\n return;\n }\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n const cmp = this._editConditionDialog.componentInstance;\n cmp.condition = this._triggerConditions[vcIdx];\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n this._triggerConditions[vcIdx] = cond;\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initRemoveWarningCondition(): void {\n this._removeWarningConditionSub = this._removeWarningConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['warningConditions'];\n let vcs = (ctrl.value || []).slice(0);\n if (vcIdx < 0 || vcIdx >= vcs.length) {\n return;\n }\n vcs.splice(vcIdx, 1);\n ctrl.setValue(vcs);\n });\n }\n\n private _initAddWarningCondition(): void {\n this._addWarningConditionSub = this._addWarningConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['warningConditions'];\n let vcs = (ctrl.value || []).slice(0);\n vcs.push({condition: '', errorMessage: ''});\n ctrl.setValue(vcs);\n });\n }\n\n private _initWarningConditionEdit(): void {\n this._editWarningConditionSub = this._editWarningConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, fg]) => {\n this._destroyWarningConditionDialog();\n if (vcIdx < 0 || vcIdx >= this._warningConditions.length || fg == null) {\n return;\n }\n this._editWarningConditionDialog = this._dialog.open(AjfFbWarningConditionEditorDialog);\n const cmp = this._editWarningConditionDialog.componentInstance;\n const w = this._warningConditions[vcIdx];\n cmp.condition = w.condition;\n cmp.warningMessage = w.warningMessage;\n this._editWarningConditionDialogSub = this._editWarningConditionDialog\n .afterClosed()\n .subscribe((cond: WarningCondition) => {\n if (cond !== void 0) {\n this._warningConditions[vcIdx] = cond;\n }\n this._editWarningConditionDialogSub.unsubscribe();\n this._editWarningConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initRemoveValidationCondition(): void {\n this._removeValidationConditionSub = this._removeValidationConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['validationConditions'];\n let vcs = (ctrl.value || []).slice(0);\n if (vcIdx < 0 || vcIdx >= vcs.length) {\n return;\n }\n vcs.splice(vcIdx, 1);\n ctrl.setValue(vcs);\n });\n }\n\n private _initAddValidationCondition(): void {\n this._addValidationConditionSub = this._addValidationConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['validationConditions'];\n let vcs = (ctrl.value || []).slice(0);\n vcs.push({condition: '', errorMessage: ''});\n ctrl.setValue(vcs);\n });\n }\n\n private _initValidationConditionEdit(): void {\n this._editValidationConditionSub = this._editValidationConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([vcIdx, fg]) => {\n this._destroyValidationConditionDialog();\n if (vcIdx < 0 || vcIdx >= this._validationConditions.length || fg == null) {\n return;\n }\n this._editValidationConditionDialog = this._dialog.open(\n AjfFbValidationConditionEditorDialog,\n );\n const cmp = this._editValidationConditionDialog.componentInstance;\n const v = this._validationConditions[vcIdx];\n cmp.condition = v.condition;\n cmp.errorMessage = v.errorMessage;\n this._editValidationConditionDialogSub = this._editValidationConditionDialog\n .afterClosed()\n .subscribe((cond: ValidationCondition) => {\n if (cond !== void 0) {\n this._validationConditions[vcIdx] = cond;\n }\n this._editValidationConditionDialogSub.unsubscribe();\n this._editValidationConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initForceValueEdit(): void {\n this._editForceValueSub = this._editForceValueEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['forceValue'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initNextSlideConditionEdit(): void {\n this._editNextSlideConditionSub = this._editNextSlideConditionEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['nextSlideCondition'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initFormulaEdit(): void {\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n this._editFormulaSub = this._editFormulaEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['formula'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initFormulaRepsEdit(): void {\n this._editFormulaRepsSub = this._editFormulaRepsEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['formulaReps'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initChoicesFilterEdit(): void {\n this._editChoicesFilterSub = this._editChoicesFilterEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['choicesFilter'];\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = ctrl.value;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initConditionalBranchEdit(): void {\n this._editConditionalBranchSub = this._editConditionalBranchEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([cbIdx, fg]) => {\n this._destroyConditionDialog();\n if (cbIdx < 0 || cbIdx >= this._conditionalBranches.length || fg == null) {\n return;\n }\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = this._conditionalBranches[cbIdx];\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n this._conditionalBranches[cbIdx] = cond;\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _initVisibilityEdit(): void {\n this._editVisibilitySub = this._editVisibilityEvt\n .pipe(withLatestFrom(this._propertiesForm))\n .subscribe(([_, formGroup]) => {\n this._destroyConditionDialog();\n if (formGroup == null) {\n return;\n }\n const fg = formGroup as UntypedFormGroup;\n const ctrl = fg.controls['visibility'];\n const condition = ctrl.value;\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog);\n this._editConditionDialog.componentInstance.condition = condition;\n this._editConditionDialogSub = this._editConditionDialog\n .afterClosed()\n .subscribe((cond: string) => {\n if (cond !== void 0) {\n ctrl.setValue(cond);\n }\n this._editConditionDialogSub.unsubscribe();\n this._editConditionDialogSub = Subscription.EMPTY;\n this._cdr.markForCheck();\n });\n });\n }\n\n private _handleTriggerCondtionsChange(fg: UntypedFormGroup): void {\n this._triggerConditionsSub = fg.valueChanges\n .pipe(\n distinctUntilChanged(\n (v1, v2) => JSON.stringify(v1.triggerConditions) === JSON.stringify(v2.triggerConditions),\n ),\n )\n .subscribe((v: any) => {\n this._triggerConditions = v.triggerConditions;\n this._cdr.markForCheck();\n });\n }\n\n private _handleWarningCondtionsChange(fg: UntypedFormGroup): void {\n this._warningConditionsSub = fg.valueChanges\n .pipe(\n distinctUntilChanged(\n (v1, v2) => JSON.stringify(v1.warningConditions) === JSON.stringify(v2.warningConditions),\n ),\n )\n .subscribe((v: any) => {\n this._warningConditions = v.warningConditions;\n this._cdr.markForCheck();\n });\n }\n\n private _handleValidationCondtionsChange(fg: UntypedFormGroup): void {\n this._validationConditionsSub = fg.valueChanges\n .pipe(\n distinctUntilChanged(\n (v1, v2) =>\n JSON.stringify(v1.validationConditions) === JSON.stringify(v2.validationConditions),\n ),\n )\n .subscribe((v: any) => {\n this._validationConditions = v.validationConditions;\n this._cdr.markForCheck();\n });\n }\n\n private _handleForceValueChange(fg: UntypedFormGroup): void {\n this._forceValueSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.forceValue === v2.forceValue))\n .subscribe((v: any) => {\n this._curForceValue = v.forceValue;\n this._cdr.markForCheck();\n });\n }\n\n private _handleNextSlideConditionChange(fg: UntypedFormGroup): void {\n this._formulaSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.nextSlideCondition === v2.nextSlideCondition))\n .subscribe((v: any) => {\n this._nextSlideCondition = v.nextSlideCondition;\n this._cdr.markForCheck();\n });\n this._formulaSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.nextSlideCondition === v2.nextSlideCondition))\n .subscribe((v: any) => {\n this._nextSlideCondition = v.nextSlideCondition;\n this._cdr.markForCheck();\n });\n }\n\n private _handleFormulaChange(fg: UntypedFormGroup): void {\n this._formulaSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.formula === v2.formula))\n .subscribe((v: any) => {\n this._curFormula = v.formula;\n this._cdr.markForCheck();\n });\n }\n\n private _handleFormulaRepsChange(fg: UntypedFormGroup): void {\n this._formulaRepsSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.formulaReps === v2.formulaReps))\n .subscribe((v: any) => {\n this._curFormulaReps = v.formulaReps;\n this._cdr.markForCheck();\n });\n }\n\n private _handleChoicesFilterChange(fg: UntypedFormGroup): void {\n this._choicesFilterSub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.choicesFilter === v2.choicesFilter))\n .subscribe((v: any) => {\n this._curChoicesFilter = v.choicesFilter;\n this._cdr.markForCheck();\n });\n }\n\n private _handleConditionalBranchesChange(fg: UntypedFormGroup): void {\n this._conditionalBranchesSub = fg.valueChanges\n .pipe(\n distinctUntilChanged((v1, v2) => v1.conditionalBranchesNum === v2.conditionalBranchesNum),\n )\n .subscribe((v: any) => {\n const cbNum: number = v.conditionalBranchesNum;\n const curCbNum = this._conditionalBranches.length;\n if (curCbNum < cbNum) {\n let newCbs: string[] = [];\n for (let i = curCbNum; i < cbNum; i++) {\n newCbs.push(alwaysCondition().condition);\n }\n this._conditionalBranches = this._conditionalBranches.concat(newCbs);\n } else if (curCbNum > cbNum) {\n this._conditionalBranches.splice(0, curCbNum - cbNum);\n }\n this._cdr.markForCheck();\n });\n }\n\n private _handleVisibilityChange(fg: UntypedFormGroup): void {\n this._visibilitySub = fg.valueChanges\n .pipe(distinctUntilChanged((v1, v2) => v1.visibilityOpt === v2.visibilityOpt))\n .subscribe(v => {\n const visibilityOpt = v.visibilityOpt;\n const visibility: string = v.visibility;\n let newCondition: string | null;\n switch (visibilityOpt) {\n case 'always':\n newCondition = alwaysCondition().condition;\n break;\n case 'never':\n newCondition = neverCondition().condition;\n break;\n case 'condition':\n newCondition = visibility && visibility.length ? visibility : null;\n break;\n default:\n newCondition = null;\n }\n this._curVisibility = newCondition;\n fg.controls['visibility'].setValue(newCondition);\n this._cdr.markForCheck();\n });\n this._visibilitySub = fg.valueChanges\n .pipe(\n filter(v => v.visibilityOpt === 'condition'),\n distinctUntilChanged((v1, v2) => v1.visibility === v2.visibility),\n )\n .subscribe(v => {\n this._curVisibility = v.visibility;\n this._cdr.markForCheck();\n });\n }\n\n private _guessVisibilityOpt(condition: AjfCondition): string {\n if (condition.condition.localeCompare(alwaysCondition().condition) === 0) {\n return 'always';\n }\n if (condition.condition.localeCompare(neverCondition().condition) === 0) {\n return 'never';\n }\n return 'condition';\n }\n}\n","<div [style.display]=\"(enabled|async) ? 'none' : 'block'\" class=\"ajf-disabled-overlay\"></div>\n<ng-container *ngIf=\"nodeEntry|async as ne\">\n <ng-container *ngIf=\"propertiesForm|async as pf\">\n <div class=\"ajf-header\">\n <h3>{{'Properties'|transloco}}</h3>\n <button\n *ngIf=\"isFieldWithChoices(ne.node) && (hasChoicesOriginRef()|async) === false; else readysavebtn\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'Please select a Choice Origin for this field'\"\n >\n <mat-icon>save</mat-icon>\n </button>\n <ng-template #readysavebtn>\n <button\n mat-icon-button\n [disabled]=\"pf.get('name')?.invalid || pf.get('label')?.invalid\"\n (click)=\"save()\"\n >\n <mat-icon>save</mat-icon>\n </button></ng-template\n >\n <button mat-icon-button (click)=\"cancel()\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n <form [formGroup]=\"pf!\" novalidate>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input matInput formControlName=\"name\" [placeholder]=\"'Name' | transloco\" />\n <mat-error *ngIf=\"pf.get('name')?.invalid\">\n {{fieldErrorMessage(pf.get('name'), 'Name')}}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input matInput formControlName=\"label\" [placeholder]=\"'Label' | transloco\" />\n <mat-error *ngIf=\"pf.get('label')?.invalid\">\n {{fieldErrorMessage(pf.get('label'), 'Label')}}\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <mat-label>{{'Visibility'|transloco}}</mat-label>\n <mat-select formControlName=\"visibilityOpt\" [placeholder]=\"'Visible' | transloco\">\n <mat-option value=\"always\">{{'Always'|transloco}}</mat-option>\n <mat-option value=\"never\">{{'Never'|transloco}}</mat-option>\n <mat-option value=\"condition\">{{'Condition...'|transloco}}</mat-option>\n </mat-select>\n </mat-form-field>\n <button\n (click)=\"editVisibility()\"\n [disabled]=\"pf!.value.visibilityOpt !== 'condition'\"\n mat-raised-button\n [matTooltip]=\"curVisibility || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ curVisibility }}</code></span>\n </div>\n </button>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Branches'|transloco}}</label></div>\n <div>\n <mat-slider discrete min=\"1\" max=\"5\" step=\"1\"\n ><input matSliderThumb formControlName=\"conditionalBranchesNum\"\n /></mat-slider>\n </div>\n <div *ngFor=\"let branch of conditionalBranches; let idx = index\">\n <button (click)=\"editConditionalBranch(idx)\" mat-raised-button [matTooltip]=\"branch\">\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ branch }}</code></span>\n </div>\n </button>\n </div>\n </div>\n <ng-template [ngIf]=\"isRepeatingContainerNode(ne)\">\n <div class=\"ajf-prop\">\n <div><label>{{'Repetitions'|transloco}}</label></div>\n <div>\n <button\n (click)=\"editFormulaReps()\"\n mat-raised-button\n [matTooltip]=\"curFormulaReps || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ curFormulaReps }}</code></span>\n </div>\n </button>\n </div>\n <div><label>{{'Min repetitions'|transloco}}</label></div>\n <div>\n <mat-slider formControlName=\"minReps\" discrete min=\"1\" max=\"5\" step=\"1\"\n ><input matSliderThumb\n /></mat-slider>\n </div>\n <div><label>{{'Max repetitions'|transloco}}</label></div>\n <div>\n <mat-slider formControlName=\"maxReps\" discrete min=\"1\" max=\"5\" step=\"1\"\n ><input matSliderThumb\n /></mat-slider>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isField(ne)\">\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"readonlyField\">{{'Readonly'|transloco}}</mat-checkbox>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <mat-label>{{'Field size'|transloco}}</mat-label>\n <mat-select formControlName=\"size\" [placeholder]=\"'Size' | transloco\">\n <mat-option *ngFor=\"let fieldSize of fieldSizes\" [value]=\"fieldSize.value\">\n {{ fieldSize.label|transloco }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input matInput formControlName=\"hint\" [placeholder]=\"'Hint' | transloco\" />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <textarea\n matInput\n formControlName=\"description\"\n [placeholder]=\"'Description' | transloco\"\n ></textarea>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"defaultValue\"\n [placeholder]=\"'Default value' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Formula'|transloco}}</label></div>\n <div>\n <button (click)=\"editFormula()\" mat-raised-button [matTooltip]=\"curFormula || ''\">\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ curFormula }}</code></span>\n </div>\n </button>\n </div>\n </div>\n <!-- <div class=\"ajf-prop\">\n <div><label>{{'Force value'|translco}}</label></div>\n <div>\n <button (click)=\"editForceValue()\" mat-raised-button [matTooltip]=\"curForceValue\">\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span>{{ curForceValue }}</span>\n </div>\n </button>\n </div>\n </div> -->\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"notEmpty\">{{'Not empty'|transloco}}</mat-checkbox>\n </div>\n <ng-template [ngIf]=\"isNumericField(ne!.node)\">\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input matInput formControlName=\"minValue\" [placeholder]=\"'Min value' | transloco\" />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input matInput formControlName=\"maxValue\" [placeholder]=\"'Max value' | transloco\" />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"minDigits\"\n [placeholder]=\"'Min digits' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"maxDigits\"\n [placeholder]=\"'Max digits' | transloco\"\n />\n </mat-form-field>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isRangeField(ne!.node)\">\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n type=\"number\"\n formControlName=\"start\"\n [placeholder]=\"'Start' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n type=\"number\"\n formControlName=\"end\"\n [placeholder]=\"'End' | transloco\"\n />\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <mat-form-field>\n <input\n matInput\n type=\"number\"\n formControlName=\"step\"\n [placeholder]=\"'Step' | transloco\"\n />\n </mat-form-field>\n </div>\n </ng-template>\n <div class=\"ajf-prop\">\n <div class=\"ajf-header\">\n <label>{{ 'Validation' | transloco }}</label>\n <mat-icon class=\"ajf-pointer\" (click)=\"addValidationCondition()\"\n >add_circle_outline</mat-icon\n >\n </div>\n <div *ngIf=\"validationConditions.length === 0\" class=\"ajf-validation-row ajf-emph\">\n {{'No conditions'|transloco}}\n </div>\n <div\n class=\"ajf-validation-row\"\n *ngFor=\"let validationCondition of validationConditions; let idx = index\"\n >\n <button\n (click)=\"editValidationCondition(idx)\"\n mat-raised-button\n [matTooltip]=\"validationCondition.condition\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ validationCondition.condition }}</code></span>\n </div>\n </button>\n <mat-icon class=\"ajf-pointer\" (click)=\"removeValidationCondition(idx)\"\n >remove_circle_outline</mat-icon\n >\n </div>\n </div>\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"notEmptyWarning\"\n >{{'Not empty warning'|transloco}}</mat-checkbox\n >\n </div>\n <div class=\"ajf-prop\">\n <div class=\"ajf-header\">\n <label>{{'Warnings'|transloco}}</label>\n <mat-icon class=\"ajf-pointer\" (click)=\"addWarningCondition()\"\n >add_circle_outline</mat-icon\n >\n </div>\n <div *ngIf=\"warningConditions.length === 0\" class=\"ajf-validation-row ajf-emph\">\n {{'No warnings'|transloco}}\n </div>\n <div\n class=\"ajf-validation-row\"\n *ngFor=\"let warningCondition of warningConditions; let idx = index\"\n >\n <button\n (click)=\"editWarningCondition(idx)\"\n mat-raised-button\n [matTooltip]=\"warningCondition.condition\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ warningCondition.condition }}</code></span>\n </div>\n </button>\n <mat-icon class=\"ajf-pointer\" (click)=\"removeWarningCondition(idx)\"\n >remove_circle_outline</mat-icon\n >\n </div>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Go to next slide condition'|transloco}}</label></div>\n <div>\n <button\n (click)=\"editNextSlideCondition()\"\n mat-raised-button\n [matTooltip]=\"nextSlideCondition || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ nextSlideCondition }}</code></span>\n </div>\n </button>\n </div>\n </div>\n <ng-template [ngIf]=\"isFieldWithChoices(ne!.node)\">\n <div class=\"ajf-prop\">\n <mat-form-field>\n <mat-label>{{'Choices origins'|transloco}}</mat-label>\n <mat-select formControlName=\"choicesOriginRef\" [placeholder]=\"'Choices' | transloco\">\n <mat-option\n *ngFor=\"let choicesOrigin of choicesOrigins\"\n [value]=\"choicesOrigin.name\"\n >\n {{ (choicesOrigin.label || choicesOrigin.name)|transloco }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"ajf-prop\">\n <div><label>{{'Choices filter'|transloco}}</label></div>\n <div>\n <button\n (click)=\"editChoicesFilter()\"\n mat-raised-button\n [matTooltip]=\"curChoicesFilter || ''\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ curChoicesFilter }}</code></span>\n </div>\n </button>\n </div>\n </div>\n <div class=\"ajf-prop\">\n <mat-checkbox\n formControlName=\"forceExpanded\"\n #forceExpanded\n (change)=\"forceCheckbox($event.checked, forceNarrow)\"\n >{{'Force expanded selection'|transloco}}</mat-checkbox\n >\n </div>\n <div class=\"ajf-prop\">\n <mat-checkbox\n formControlName=\"forceNarrow\"\n #forceNarrow\n (change)=\"forceCheckbox($event.checked, forceExpanded)\"\n >{{'Force narrow selection'|transloco}}</mat-checkbox\n >\n </div>\n <div class=\"ajf-prop\">\n <div class=\"ajf-header\">\n <label>{{'Trigger selection'|transloco}}</label>\n <mat-icon class=\"ajf-pointer\" (click)=\"addTriggerCondition()\"\n >add_circle_outline</mat-icon\n >\n </div>\n <div\n *ngIf=\"!triggerConditions || triggerConditions.length === 0\"\n class=\"ajf-validation-row ajf-emph\"\n >\n {{'No trigger condition'|transloco}}\n </div>\n <div\n class=\"ajf-validation-row\"\n *ngFor=\"let triggerCondition of triggerConditions; let idx = index\"\n >\n <button\n (click)=\"editTriggerCondition(idx)\"\n mat-raised-button\n [matTooltip]=\"triggerCondition\"\n >\n <div class=\"ajf-icon-cont\">\n <mat-icon>edit</mat-icon>\n <span><code>{{ triggerCondition }}</code></span>\n </div>\n </button>\n <mat-icon class=\"pointer\" (click)=\"removeTriggerCondition(idx)\"\n >remove_circle_outline</mat-icon\n >\n </div>\n </div>\n </ng-template>\n <ng-container *ngIf=\"isTableField(ne!.node)\">\n <div class=\"ajf-prop\">\n <mat-checkbox formControlName=\"hideEmptyRows\"\n >{{'Hide empty rows'|transloco}}</mat-checkbox\n >\n <mat-form-field>\n <textarea\n matInput\n type=\"number\"\n formControlName=\"tableDef\"\n [placeholder]=\"'Table definition' | transloco\"\n ></textarea>\n </mat-form-field>\n </div>\n </ng-container>\n </ng-template>\n </form>\n </ng-container>\n</ng-container>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfFormBuilderNodeTypeEntry} from './form-builder-service';\n\n@Component({\n selector: 'ajf-fb-node-type-entry',\n templateUrl: 'node-type-entry.html',\n styleUrls: ['node-type-entry.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFbNodeTypeEntry {\n private _nodeType: AjfFormBuilderNodeTypeEntry | undefined;\n get nodeType(): AjfFormBuilderNodeTypeEntry | undefined {\n return this._nodeType;\n }\n @Input()\n set nodeType(nodeType: AjfFormBuilderNodeTypeEntry | undefined) {\n this._nodeType = nodeType;\n this._cdr.markForCheck();\n }\n get node(): any {\n return {nodeType: this.nodeType?.nodeType.node, fieldType: this.nodeType?.nodeType.field};\n }\n\n constructor(private _cdr: ChangeDetectorRef) {}\n}\n","<ng-container *ngIf=\"nodeType\">\n <ajf-node-icon [node]=\"node\"></ajf-node-icon> {{nodeType.label}}\n</ng-container>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfChoicesOrigin, AjfForm} from '@ajf/core/forms';\nimport {AjfCondition} from '@ajf/core/models';\nimport {CdkDrag, CdkDragDrop} from '@angular/cdk/drag-drop';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\nimport {MatSlideToggleChange} from '@angular/material/slide-toggle';\nimport {Observable, Subscription} from 'rxjs';\nimport {sample} from 'rxjs/operators';\n\nimport {AjfFbChoicesOriginEditorDialog} from './choices-origin-editor-dialog';\nimport {AjfFbConditionEditorDialog} from './condition-editor-dialog';\nimport {\n AjfFormBuilderNodeEntry,\n AjfFormBuilderNodeTypeEntry,\n AjfFormBuilderService,\n} from './form-builder-service';\nimport {disableFieldDropPredicate, onDropProcess} from './form-builder-utils';\nimport {AjfFbStringIdentifierDialogComponent} from './string-identifier-dialog';\n\n@Component({\n selector: 'ajf-form-builder',\n templateUrl: 'form-builder.html',\n styleUrls: ['form-builder.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFormBuilder implements AfterViewChecked, AfterContentInit, OnDestroy {\n @ViewChild('designer', {static: true}) designerCont!: ElementRef;\n\n private _form: AjfForm | undefined;\n get form(): AjfForm | undefined {\n return this._form;\n }\n @Input()\n set form(form: AjfForm | undefined) {\n if (this._form !== form) {\n this._form = form;\n if (this._init) {\n this._setCurrentForm();\n }\n }\n }\n\n private _nodeTypes: AjfFormBuilderNodeTypeEntry[];\n get nodeTypes(): AjfFormBuilderNodeTypeEntry[] {\n return this._nodeTypes;\n }\n\n private _nodeEntriesTree: Observable<AjfFormBuilderNodeEntry[]>;\n get nodeEntriesTree(): Observable<AjfFormBuilderNodeEntry[]> {\n return this._nodeEntriesTree;\n }\n\n private _choicesOrigins: Observable<AjfChoicesOrigin<any>[]>;\n get choicesOrigins(): Observable<AjfChoicesOrigin<any>[]> {\n return this._choicesOrigins;\n }\n\n /**\n * The list of the ids of all the dropLists connected to the formbuilder source list.\n */\n private _connectedDropLists: Observable<string[]> = this._service.connectedDropLists;\n get connectedDropLists(): Observable<string[]> {\n return this._connectedDropLists;\n }\n\n private _vc: EventEmitter<void> = new EventEmitter<void>();\n\n private _init = false;\n private _editConditionSub: Subscription = Subscription.EMPTY;\n private _editConditionDialog: MatDialogRef<AjfFbConditionEditorDialog> | null = null;\n private _beforeNodesUpdateSub: Subscription = Subscription.EMPTY;\n private _editChoicesOriginSub: Subscription = Subscription.EMPTY;\n private _editChoicesOriginDialog: MatDialogRef<AjfFbChoicesOriginEditorDialog> | null = null;\n private _stringIdentifierDialog: MatDialogRef<AjfFbStringIdentifierDialogComponent> | null = null;\n private _stringIdentifierSub: Subscription = Subscription.EMPTY;\n\n private _lastScrollTop: number = 0;\n\n constructor(private _service: AjfFormBuilderService, private _dialog: MatDialog) {\n this._nodeTypes = _service.availableNodeTypes;\n this._nodeEntriesTree = _service.nodeEntriesTree;\n this._choicesOrigins = _service.choicesOrigins;\n this._editConditionSub = this._service.editedCondition.subscribe(\n (condition: AjfCondition | null) => {\n if (this._editConditionDialog != null) {\n this._editConditionDialog.close();\n this._editConditionDialog = null;\n }\n if (condition != null) {\n this._editConditionDialog = this._dialog.open(AjfFbConditionEditorDialog, {\n disableClose: true,\n });\n }\n },\n );\n this._editChoicesOriginSub = this._service.editedChoicesOrigin.subscribe(\n (choicesOrigin: AjfChoicesOrigin<any> | null) => {\n if (this._editChoicesOriginDialog != null) {\n this._editChoicesOriginDialog.close();\n this._editChoicesOriginDialog = null;\n }\n if (choicesOrigin != null) {\n this._editChoicesOriginDialog = this._dialog.open(AjfFbChoicesOriginEditorDialog, {\n disableClose: true,\n });\n }\n },\n );\n\n this._beforeNodesUpdateSub = this._service.beforeNodesUpdate.subscribe(() => {\n if (this.designerCont == null) {\n return;\n }\n this._lastScrollTop = this.designerCont.nativeElement.scrollTop;\n });\n\n this.nodeEntriesTree.pipe(sample(<Observable<void>>this._vc)).subscribe(() => {\n if (this.designerCont == null) {\n return;\n }\n this.designerCont.nativeElement.scrollTop = this._lastScrollTop;\n });\n\n this._stringIdentifierSub = this._service.stringIdentifier.subscribe(() => {});\n }\n\n ngAfterViewChecked(): void {\n this._vc.emit();\n }\n\n ngAfterContentInit(): void {\n this._setCurrentForm();\n this._init = true;\n }\n\n ngOnDestroy(): void {\n this._editConditionSub.unsubscribe();\n this._beforeNodesUpdateSub.unsubscribe();\n this._editChoicesOriginSub.unsubscribe();\n this._stringIdentifierSub.unsubscribe();\n this._service.setForm(null);\n this._service.resetNodeEntriesTreeExpandedStatus();\n this._service.resetEmptyCounters();\n }\n\n createChoicesOrigin(): void {\n this._service.createChoicesOrigin();\n }\n\n disableDrop(): boolean {\n return false;\n }\n\n disableFieldDrop(item: CdkDrag<AjfFormBuilderNodeTypeEntry>): boolean {\n return disableFieldDropPredicate(item);\n }\n\n /**\n * Triggers when a field or slide node is moved or inserted by drag&dropping in the formbuilder.\n * @param event The drop event.\n * @param content True if the current nodeEntry contains other nodeEntries.\n */\n onDrop(\n event: CdkDragDrop<AjfFormBuilderNodeEntry> | CdkDragDrop<AjfFormBuilderNodeTypeEntry>,\n content = false,\n ): void {\n onDropProcess(event, this._service, null, content);\n }\n\n editChoicesOrigin(choicesOrigin: AjfChoicesOrigin<any>): void {\n this._service.editChoicesOrigin(choicesOrigin);\n }\n\n editStringIdentifier(): void {\n if (this._stringIdentifierDialog != null) {\n this._stringIdentifierDialog.close();\n this._stringIdentifierDialog = null;\n }\n this._stringIdentifierDialog = this._dialog.open(AjfFbStringIdentifierDialogComponent, {\n disableClose: true,\n width: '60%',\n height: '60%',\n });\n }\n\n expandAll() {\n this._service.expandAll();\n }\n\n collapseAll() {\n this._service.collapseAll();\n }\n\n expandToggle(evt: MatSlideToggleChange) {\n if (evt.checked) {\n this.expandAll();\n } else {\n this.collapseAll();\n }\n }\n\n private _setCurrentForm(): void {\n if (this._form == null) {\n return;\n }\n this._service.setForm(this._form);\n }\n}\n","<mat-toolbar class=\"ajf-formbuilder-toolbar\">\n <button mat-icon-button (click)=\"leftSidenav.toggle()\">\n <mat-icon>add_box</mat-icon>\n </button>\n <button mat-button [matMenuTriggerFor]=\"choicesMenu\">{{'Choices'|transloco}}</button>\n <button mat-button (click)=\"editStringIdentifier()\">{{'Identifier'|transloco}}</button>\n <button mat-icon-button aria-label=\"Collapsed\" matTooltip=\"Keep slides collapsed\">\n <mat-icon>unfold_less</mat-icon>\n </button>\n <mat-slide-toggle color=\"primary\" (change)=\"expandToggle($event)\"></mat-slide-toggle>\n <button mat-icon-button aria-label=\"Expanded\" matTooltip=\"Keep slides expanded\">\n <mat-icon>unfold_more</mat-icon>\n </button>\n <mat-menu #choicesMenu>\n <button (click)=\"createChoicesOrigin()\" mat-menu-item>{{'New..'|transloco}}</button>\n <ng-container *ngIf=\"choicesOrigins|async as cos\">\n <button\n *ngFor=\"let choicesOrigin of cos\"\n (click)=\"editChoicesOrigin(choicesOrigin)\"\n mat-menu-item\n >\n {{ (choicesOrigin.label || choicesOrigin.name)| transloco }}\n </button>\n </ng-container>\n </mat-menu>\n <span class=\"ajf-spacer\"></span>\n</mat-toolbar>\n<div class=\"ajf-formtree-container\">\n <mat-drawer-container cdkDropListGroup class=\"ajf-formtree-drawer-container\">\n <mat-drawer #leftSidenav position=\"start\" mode=\"over\">\n <div\n #sourceDropList\n cdkDropList\n [cdkDropListConnectedTo]=\"(connectedDropLists|async)!\"\n [cdkDropListEnterPredicate]=\"disableDrop\"\n [cdkDropListData]=\"nodeTypes\"\n >\n <ajf-fb-node-type-entry\n *ngFor=\"let nodeType of nodeTypes\"\n cdkDrag\n [cdkDragData]=\"nodeType\"\n (cdkDragStarted)=\"leftSidenav.close()\"\n [nodeType]=\"nodeType\"\n ></ajf-fb-node-type-entry>\n </div>\n </mat-drawer>\n <div #designer class=\"ajf-designer\">\n <ajf-fb-node-entry\n id=\"slides-list\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n [cdkDropListEnterPredicate]=\"disableFieldDrop\"\n *ngFor=\"let nodeEntry of (nodeEntriesTree|async); let isFirst = first\"\n [isFirst]=\"isFirst\"\n [nodeEntry]=\"nodeEntry\"\n ></ajf-fb-node-entry>\n </div>\n </mat-drawer-container>\n <div class=\"ajf-formtree-properties\" #rightSidenav position=\"end\" mode=\"side\">\n <ajf-fb-node-properties></ajf-fb-node-properties>\n </div>\n</div>\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfTranslocoModule} from '@ajf/core/transloco';\nimport {AjfNodeIconModule} from '@ajf/material/node-icon';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatToolbarModule} from '@angular/material/toolbar';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\nimport {AjfFbBranchLine} from './branch-line';\nimport {AjfFbChoicesOriginEditor} from './choices-origin-editor';\nimport {AjfFbChoicesOriginEditorDialog} from './choices-origin-editor-dialog';\nimport {AjfFbConditionEditor} from './condition-editor';\nimport {AjfFbConditionEditorDialog} from './condition-editor-dialog';\nimport {AjfFormBuilder} from './form-builder';\nimport {AjfFormBuilderService} from './form-builder-service';\nimport {AjfFbNodeEntry} from './node-entry';\nimport {AjfFbNodeProperties} from './node-properties';\nimport {AjfFbNodeTypeEntry} from './node-type-entry';\nimport {AjfFbStringIdentifierDialogComponent} from './string-identifier-dialog';\nimport {AjfFbValidationConditionEditorDialog} from './validation-condition-editor-dialog';\nimport {AjfFbWarningConditionEditorDialog} from './warning-condition-editor-dialog';\nimport {AjfNodePropertiesNameMatchValidator} from './node-properties-name-validator';\n\n@NgModule({\n imports: [\n AjfNodeIconModule,\n CommonModule,\n DragDropModule,\n FormsModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatTableModule,\n MatToolbarModule,\n MatTooltipModule,\n ReactiveFormsModule,\n AjfTranslocoModule,\n MatExpansionModule,\n MatSlideToggleModule,\n ],\n declarations: [\n AjfFbBranchLine,\n AjfFbChoicesOriginEditor,\n AjfFbChoicesOriginEditorDialog,\n AjfFbConditionEditor,\n AjfFbConditionEditorDialog,\n AjfFbNodeEntry,\n AjfFbNodeProperties,\n AjfFbNodeTypeEntry,\n AjfFbStringIdentifierDialogComponent,\n AjfFbValidationConditionEditorDialog,\n AjfFbWarningConditionEditorDialog,\n AjfFormBuilder,\n ],\n exports: [AjfFormBuilder],\n providers: [AjfFormBuilderService, AjfNodePropertiesNameMatchValidator],\n})\nexport class AjfFormBuilderModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './form-builder-module';\nexport * from './form-builder-service';\nexport * from './form-builder-utils';\nexport * from './form-builder';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4","i5","i8","obsOf","i1.AjfFormBuilderService","i5.AjfFbChoicesOriginEditor","i6","i7","i5.AjfFbConditionEditor","i11","i13","i14","i9.AjfFbBranchLine","i10","i8.AjfFbConditionEditor","i9","i4.AjfNodePropertiesNameMatchValidator","i15","i12.AjfFbNodeEntry","i13.AjfFbNodeProperties","i14.AjfFbNodeTypeEntry"],"mappings":"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"}
|