@ajf/material 18.4.1 → 18.5.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/README.md +167 -2
- package/audio/src/audio-module.d.ts +7 -6
- package/esm2022/audio/src/audio-module.mjs +22 -4
- package/esm2022/audio/src/audio.mjs +6 -6
- package/esm2022/barcode/barcode.mjs +3 -3
- package/esm2022/calendar/calendar.mjs +2 -2
- package/esm2022/checkbox-group/checkbox-group-item.mjs +3 -3
- package/esm2022/form-builder/form-builder-service.mjs +4 -2
- package/esm2022/form-builder/node-properties.mjs +3 -13
- package/esm2022/forms/boolean-field.mjs +6 -5
- package/esm2022/forms/current-slide.mjs +92 -0
- package/esm2022/forms/date-input-field.mjs +7 -9
- package/esm2022/forms/display-field.mjs +2 -2
- package/esm2022/forms/empty-field.mjs +3 -3
- package/esm2022/forms/field-row.mjs +117 -0
- package/esm2022/forms/field.mjs +2 -2
- package/esm2022/forms/form.mjs +107 -13
- package/esm2022/forms/forms-module.mjs +26 -3
- package/esm2022/forms/input-field.mjs +6 -8
- package/esm2022/forms/multiple-choice-field.mjs +45 -10
- package/esm2022/forms/public_api.mjs +6 -1
- package/esm2022/forms/range-field.mjs +5 -6
- package/esm2022/forms/rep-strip.mjs +61 -0
- package/esm2022/forms/single-choice-field.mjs +26 -11
- package/esm2022/forms/slide-header.mjs +68 -0
- package/esm2022/forms/slide-stats.mjs +148 -0
- package/esm2022/forms/table-field.mjs +2 -2
- package/esm2022/forms/text-field.mjs +2 -2
- package/esm2022/forms/video-url-field.mjs +6 -8
- package/esm2022/geolocation/geolocation.mjs +4 -6
- package/esm2022/page-slider/page-slider.mjs +3 -3
- package/esm2022/signature/signature.mjs +5 -6
- package/esm2022/time/time-module.mjs +22 -4
- package/esm2022/time/time.mjs +4 -4
- package/fesm2022/ajf-material-audio.mjs +27 -9
- package/fesm2022/ajf-material-audio.mjs.map +1 -1
- package/fesm2022/ajf-material-barcode.mjs +2 -2
- package/fesm2022/ajf-material-barcode.mjs.map +1 -1
- package/fesm2022/ajf-material-calendar.mjs +2 -2
- package/fesm2022/ajf-material-calendar.mjs.map +1 -1
- package/fesm2022/ajf-material-checkbox-group.mjs +2 -2
- package/fesm2022/ajf-material-checkbox-group.mjs.map +1 -1
- package/fesm2022/ajf-material-form-builder.mjs +5 -13
- package/fesm2022/ajf-material-form-builder.mjs.map +1 -1
- package/fesm2022/ajf-material-forms.mjs +712 -99
- package/fesm2022/ajf-material-forms.mjs.map +1 -1
- package/fesm2022/ajf-material-geolocation.mjs +5 -7
- package/fesm2022/ajf-material-geolocation.mjs.map +1 -1
- package/fesm2022/ajf-material-page-slider.mjs +2 -2
- package/fesm2022/ajf-material-page-slider.mjs.map +1 -1
- package/fesm2022/ajf-material-signature.mjs +7 -8
- package/fesm2022/ajf-material-signature.mjs.map +1 -1
- package/fesm2022/ajf-material-time.mjs +24 -6
- package/fesm2022/ajf-material-time.mjs.map +1 -1
- package/forms/_theming.scss +142 -0
- package/forms/current-slide.d.ts +61 -0
- package/forms/field-row.d.ts +63 -0
- package/forms/form.d.ts +40 -3
- package/forms/forms-module.d.ts +57 -51
- package/forms/multiple-choice-field.d.ts +15 -1
- package/forms/public_api.d.ts +5 -0
- package/forms/rep-strip.d.ts +52 -0
- package/forms/single-choice-field.d.ts +7 -0
- package/forms/slide-header.d.ts +61 -0
- package/forms/slide-stats.d.ts +76 -0
- package/package.json +2 -2
- package/time/time-module.d.ts +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajf-material-forms.mjs","sources":["../../../projects/material/forms/src/field-warning-dialog.ts","../../../projects/material/forms/src/field-warning-dialog.html","../../../projects/material/forms/src/warning-alert-service.ts","../../../projects/material/forms/src/boolean-field.ts","../../../projects/material/forms/src/boolean-field.html","../../../projects/material/forms/src/date-field.ts","../../../projects/material/forms/src/date-field.html","../../../projects/material/forms/src/date-input-field.ts","../../../projects/material/forms/src/date-input-field.html","../../../projects/material/forms/src/empty-field.ts","../../../projects/material/forms/src/empty-field.html","../../../projects/material/forms/src/audio-field.ts","../../../projects/material/forms/src/audio-field.html","../../../projects/material/forms/src/barcode-field.ts","../../../projects/material/forms/src/barcode-field.html","../../../projects/material/forms/src/display-field.ts","../../../projects/material/forms/src/display-field.html","../../../projects/material/forms/src/input-field.ts","../../../projects/material/forms/src/input-field.html","../../../projects/material/forms/src/geolocation-field.ts","../../../projects/material/forms/src/geolocation-field.html","../../../projects/material/forms/src/multiple-choice-field.ts","../../../projects/material/forms/src/multiple-choice-field.html","../../../projects/material/forms/src/range-field.ts","../../../projects/material/forms/src/range-field.html","../../../projects/material/forms/src/single-choice-field.ts","../../../projects/material/forms/src/single-choice-field.html","../../../projects/material/forms/src/table-field.ts","../../../projects/material/forms/src/table-field.html","../../../projects/material/forms/src/text-field.ts","../../../projects/material/forms/src/text-field.html","../../../projects/material/forms/src/time-field.ts","../../../projects/material/forms/src/time-field.html","../../../projects/material/forms/src/video-url-field.ts","../../../projects/material/forms/src/video-url-field.html","../../../projects/material/forms/src/signature-field.ts","../../../projects/material/forms/src/signature-field.html","../../../projects/material/forms/src/field-service.ts","../../../projects/material/forms/src/field.ts","../../../projects/material/forms/src/field.html","../../../projects/material/forms/src/form.ts","../../../projects/material/forms/src/form.html","../../../projects/material/forms/src/forms-module.ts","../../../projects/material/forms/src/public_api.ts","../../../projects/material/forms/src/ajf-material-forms.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 {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n templateUrl: 'field-warning-dialog.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFieldWarningDialog {\n message: string = '';\n}\n","<mat-dialog-content><div [innerHTML]=\"message\"></div></mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"true\">Ok</button>\n <button mat-button [mat-dialog-close]=\"false\">Cancel</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 {\n AjfFieldWarningAlertResult,\n AjfWarningAlertService as CoreWarningAlertService,\n} from '@ajf/core/forms';\nimport {Injectable} from '@angular/core';\nimport {MatDialog} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFieldWarningDialog} from './field-warning-dialog';\n\n@Injectable()\nexport class AjfWarningAlertService implements CoreWarningAlertService {\n constructor(private _dialog: MatDialog) {}\n\n showWarningAlertPrompt(warnings: string[]): Observable<AjfFieldWarningAlertResult> {\n const dialog = this._dialog.open(AjfFieldWarningDialog);\n dialog.componentInstance.message = warnings.join('<br>');\n return dialog.afterClosed().pipe(map((result: boolean) => ({result})));\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n@Component({\n templateUrl: 'boolean-field.html',\n styleUrls: ['boolean-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfBooleanFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<mat-slide-toggle *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></mat-slide-toggle>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfDateFieldInstance,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'date-field.html',\n styleUrls: ['date-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfDateFieldComponent extends AjfBaseFieldComponent<AjfDateFieldInstance> {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-calendar\n *ngIf=\"control|async as ctrl\"\n selectionMode=\"day\"\n [dateOnlyForDay]=\"true\"\n [minDate]=\"instance!.node.minDate|ajfDateValue\"\n [maxDate]=\"instance!.node.maxDate|ajfDateValue\"\n [formControl]=\"ctrl!\"\n></ajf-calendar>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfDateFieldInstance,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatInput} from '@angular/material/input';\nimport {UntypedFormControl} from '@angular/forms';\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'date-input-field.html',\n styleUrls: ['date-input-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfDateInputFieldComponent extends AjfBaseFieldComponent<AjfDateFieldInstance> {\n @ViewChild(MatInput, {static: false}) input!: MatInput;\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n\n clear(ctrl: UntypedFormControl): void {\n ctrl.setValue(null);\n }\n}\n","<mat-form-field *ngIf=\"control|async as ctrl\">\n <input\n matInput\n [matDatepicker]=\"picker\"\n [attr.aria-label]=\"instance!|ajfNodeCompleteName\"\n [min]=\"instance!.node.minDate|ajfDateValueString\"\n [max]=\"instance!.node.maxDate|ajfDateValueString\"\n [formControl]=\"ctrl!\"\n readonly\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker>\n <mat-datepicker-actions>\n <button mat-button (click)=\"clear(ctrl); picker.close()\">{{'Clear'|transloco}}</button>\n <button mat-raised-button color=\"primary\" matDatepickerApply>{{'OK'|transloco}}</button>\n </mat-datepicker-actions>\n </mat-datepicker>\n</mat-form-field>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfEmptyFieldInstance,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'empty-field.html',\n styleUrls: ['empty-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfEmptyFieldComponent extends AjfBaseFieldComponent<AjfEmptyFieldInstance> {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ng-container *ngIf=\"instance\">\n <h1 [innerHTML]=\"instance.node.label | transloco\"></h1>\n <div [innerHTML]=\"instance.node.HTML | transloco\"></div>\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfAudioFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'audio-field.html',\n styleUrls: ['audio-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfAudioFieldComponent extends CoreComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<div class=\"ajf-field-wrapper\" *ngIf=\"control | async as ctrl\">\n <ajf-audio\n [readonly]=\"!instance?.editable\"\n [formControl]=\"ctrl\"\n ></ajf-audio>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'barcode-field.html',\n styleUrls: ['barcode-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfBarcodeFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-barcode *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-barcode>\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 Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {\n AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfInputFieldComponent,\n AjfWarningAlertService,\n} from '@ajf/core/forms';\n\n/**\n * this component show the control value inherited from AjfBaseFieldComponent.\n *\n * @export\n * @class AjfDisplayFieldComponent\n */\n@Component({\n selector: 'ajf-display-field',\n templateUrl: 'display-field.html',\n styleUrls: ['display-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfDisplayFieldComponent extends AjfInputFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ng-container *ngIf=\"control | async as ctrl\">\n <ng-container [ngSwitch]=\"instance?.node?.fieldType\">\n\n <!-- String -->\n <span *ngSwitchCase=\"0\">{{ ctrl.value }}</span>\n\n <!-- Textarea with HTML -->\n <div *ngSwitchCase=\"1\" [innerHTML]=\"ctrl.value | safeHtml\"></div>\n\n <!-- Number -->\n <span *ngSwitchCase=\"2\">{{ ctrl.value | number }}</span>\n\n <!-- Boolean -->\n <mat-slide-toggle *ngSwitchCase=\"3\" [checked]=\"ctrl.value\" (click)=\"$event.preventDefault()\"\n (change)=\"$event.source.checked = ctrl.value\" [disableRipple]=\"true\">\n </mat-slide-toggle>\n\n <!-- Default -->\n <span *ngSwitchDefault>{{ ctrl.value }}</span>\n\n </ng-container>\n</ng-container>","/**\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfInputFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'input-field.html',\n styleUrls: ['input-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfInputFieldComponent extends CoreComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<mat-form-field *ngIf=\"control|async as ctrl\">\n <input matInput *ngIf=\"type === 'text'\" type=\"text\" [formControl]=\"ctrl!\"\n [readonly]=\"instance!|ajfIsReadonlyInputField\" [attr.aria-labelledby]=\"instance!.node.name\">\n <input matInput *ngIf=\"type === 'number'\" type=\"number\" [formControl]=\"ctrl!\"\n [readonly]=\"instance!|ajfIsReadonlyInputField\" [attr.aria-labelledby]=\"instance!.node.name\">\n</mat-form-field>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'geolocation-field.html',\n styleUrls: ['geolocation-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfGeolocationFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-geolocation *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-geolocation>","/**\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 AJF_SEARCH_ALERT_THRESHOLD,\n AJF_WARNING_ALERT_SERVICE,\n AjfChoice,\n AjfFieldWithChoicesComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {combineLatest, merge, Observable, of, Subject, Subscription} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\nconst maxChoicesInDom = 40;\n\n@Component({\n templateUrl: 'multiple-choice-field.html',\n styleUrls: ['multiple-choice-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfMultipleChoiceFieldComponent<T>\n extends AjfFieldWithChoicesComponent<T>\n implements OnDestroy\n{\n readonly expandThreshold = super.searchThreshold;\n readonly searchFilterCtrl = new FormControl<string>('', {nonNullable: true});\n\n filteredChoices$: Observable<AjfChoice<any>[]>;\n\n private readonly _choicesUpdate$ = new Subject<void>();\n private _instanceUpdateForChoicesSub = Subscription.EMPTY;\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n @Optional() @Inject(AJF_SEARCH_ALERT_THRESHOLD) searchThreshold: number,\n ) {\n super(cdr, service, was, searchThreshold);\n\n const controlValue$ = this.control.pipe(\n switchMap(ctrl => (ctrl ? ctrl.valueChanges.pipe(startWith(ctrl.value)) : of(null))),\n startWith(null),\n distinctUntilChanged(),\n );\n\n this.filteredChoices$ = combineLatest([\n merge(\n this.searchFilterCtrl.valueChanges.pipe(debounceTime(150), distinctUntilChanged()),\n this._choicesUpdate$,\n ).pipe(startWith(null)),\n controlValue$,\n ]).pipe(\n map(([_, selectedValues]: [any, string[] | null]) => {\n const search = this.searchFilterCtrl.value;\n const choices = this.instance?.filteredChoices || [];\n if (search) {\n const lowerSearch = search.toLowerCase();\n return choices.filter(c =>\n (c.translatedLabel ?? c.label).toLowerCase().includes(lowerSearch),\n );\n }\n if (choices.length <= maxChoicesInDom) {\n return choices;\n }\n let truncated = choices.slice(0, maxChoicesInDom);\n // make sure selected choices are included in truncated\n for (const val of selectedValues ?? []) {\n if (!truncated.some(c => c.value === val)) {\n const selected = choices.find(c => c.value === val);\n if (selected) {\n truncated = [selected, ...truncated];\n }\n }\n }\n return truncated;\n }),\n );\n }\n\n protected override _onInstanceChange(): void {\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.next();\n if (this.instance) {\n this._instanceUpdateForChoicesSub = this.instance.updatedEvt.subscribe(() => {\n this._choicesUpdate$.next();\n });\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.complete();\n }\n}\n","@if (instance) {\n @if (instance.node.forceNarrow || instance.filteredChoices.length > expandThreshold) {\n <mat-select *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\" [multiple]=\"true\">\n <mat-option [style.backgroundColor]=\"'white'\">\n <ngx-mat-select-search\n [formControl]=\"searchFilterCtrl\"\n [placeholderLabel]=\"'Search'|transloco\"\n [noEntriesFoundLabel]=\"'Nothing found'|transloco\"\n [enableClearOnEscapePressed]=\"true\">\n </ngx-mat-select-search>\n </mat-option>\n <mat-option [value]=\"choice.value\" *ngFor=\"let choice of filteredChoices$ | async\">\n {{ choice.translatedLabel ?? (choice.label|transloco) }}\n </mat-option>\n </mat-select>\n } @else {\n <ajf-checkbox-group *ngIf=\"control|async as ctrl\" class=\"ajf-choices-container\"\n [formControl]=\"ctrl!\">\n <ajf-checkbox-group-item [value]=\"choice.value\" *ngFor=\"let choice of instance.filteredChoices\">\n {{ choice.translatedLabel ?? (choice.label|transloco) }}\n </ajf-checkbox-group-item>\n </ajf-checkbox-group>\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 {AJF_WARNING_ALERT_SERVICE, AjfFormRendererService} from '@ajf/core/forms';\nimport {AjfRange} from '@ajf/core/range';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n selector: 'ajf-range',\n templateUrl: 'range-field.html',\n styleUrls: ['range-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfRangeFieldComponent extends AjfRange {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n\n /**\n * True when no value has been selected yet, so that the slider is not\n * rendered as if the minimum value had been picked.\n */\n isEmpty(value: unknown): boolean {\n return value === null || value === undefined;\n }\n\n enumerateStars(): number[] {\n const nums: number[] = [];\n for (let i = 1; i <= (this.end || 5); i++) {\n nums.push(i);\n }\n return nums;\n }\n}\n","<ng-container *ngIf=\"control|async as ctrl\">\n <div\n *ngIf=\"appearance !== 'rating'; else ratingTemplate\"\n [class.ajf-range-no-value]=\"isEmpty(ctrl.value)\"\n >\n <mat-slider\n discrete\n showTickMarks\n [step]=\"step\"\n [min]=\"start\"\n [max]=\"end\"\n [attr.aria-label]=\"name\"\n [attr.name]=\"name\"\n ><input matSliderThumb [value]=\"value\" [formControl]=\"ctrl\" /></mat-slider>\n <div class=\"ajf-range-label\">\n <label>{{isEmpty(ctrl.value) ? ('No value selected'|transloco) : ctrl.value}}</label>\n </div>\n </div>\n \n <ng-template #ratingTemplate>\n <div class=\"ajf-rating-container\">\n <button type=\"button\"\n *ngFor=\"let i of enumerateStars()\"\n class=\"ajf-rating-star\"\n [class.selected]=\"i <= ctrl.value\"\n (click)=\"ctrl.setValue(i)\"\n [attr.aria-label]=\"'Rate ' + i + ' out of ' + end\"\n [attr.name]=\"name\">\n <mat-icon>star</mat-icon>\n </button>\n <div class=\"ajf-range-label\">\n <label>{{ctrl.value}}</label>\n </div>\n </div>\n </ng-template>\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 AJF_SEARCH_ALERT_THRESHOLD,\n AJF_WARNING_ALERT_SERVICE,\n AjfChoice,\n AjfFieldWithChoicesComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {combineLatest, merge, Observable, of, Subject, Subscription} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\nconst maxChoicesInDom = 40;\n\n@Component({\n templateUrl: 'single-choice-field.html',\n styleUrls: ['single-choice-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfSingleChoiceFieldComponent<T>\n extends AjfFieldWithChoicesComponent<T>\n implements OnDestroy\n{\n readonly expandThreshold = super.searchThreshold;\n readonly searchFilterCtrl = new FormControl<string>('', {nonNullable: true});\n\n filteredChoices$: Observable<AjfChoice<any>[]>;\n\n private readonly _choicesUpdate$ = new Subject<void>();\n private _instanceUpdateForChoicesSub = Subscription.EMPTY;\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n @Optional() @Inject(AJF_SEARCH_ALERT_THRESHOLD) searchThreshold: number,\n ) {\n super(cdr, service, was, searchThreshold);\n\n const controlValue$ = this.control.pipe(\n switchMap(ctrl => (ctrl ? ctrl.valueChanges.pipe(startWith(ctrl.value)) : of(null))),\n startWith(null),\n distinctUntilChanged(),\n );\n\n this.filteredChoices$ = combineLatest([\n merge(\n this.searchFilterCtrl.valueChanges.pipe(debounceTime(150), distinctUntilChanged()),\n this._choicesUpdate$,\n ).pipe(startWith(null)),\n controlValue$,\n ]).pipe(\n map(([_, selectedValue]) => {\n const search = this.searchFilterCtrl.value;\n const choices = this.instance?.filteredChoices || [];\n if (search) {\n const lowerSearch = search.toLowerCase();\n return choices.filter(c =>\n (c.translatedLabel ?? c.label).toLowerCase().includes(lowerSearch),\n );\n }\n if (choices.length <= maxChoicesInDom) {\n return choices;\n }\n const truncated = choices.slice(0, maxChoicesInDom);\n // make sure the selected choice is included in truncated\n if (selectedValue != null && !truncated.some(c => c.value === selectedValue)) {\n const selected = choices.find(c => c.value === selectedValue);\n if (selected) {\n return [selected, ...truncated];\n }\n }\n return truncated;\n }),\n );\n }\n\n protected override _onInstanceChange(): void {\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.next();\n if (this.instance) {\n this._instanceUpdateForChoicesSub = this.instance.updatedEvt.subscribe(() => {\n this._choicesUpdate$.next();\n });\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.complete();\n }\n}\n","@if (instance) {\n @if (instance.node.forceNarrow || instance.filteredChoices.length > expandThreshold) {\n <mat-select *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\">\n <mat-option [style.backgroundColor]=\"'white'\">\n <ngx-mat-select-search\n [formControl]=\"searchFilterCtrl\"\n [placeholderLabel]=\"'Search'|transloco\"\n [noEntriesFoundLabel]=\"'Nothing found'|transloco\"\n [enableClearOnEscapePressed]=\"true\">\n </ngx-mat-select-search>\n </mat-option>\n <mat-option [value]=\"choice.value\" *ngFor=\"let choice of filteredChoices$ | async\">\n {{ choice.translatedLabel ?? (choice.label|transloco) }}\n </mat-option>\n </mat-select>\n } @else {\n <mat-radio-group *ngIf=\"control|async as ctrl\" class=\"ajf-choices-container\"\n [attr.aria-labelledby]=\"instance.node.name\"\n [formControl]=\"ctrl!\">\n <mat-radio-button [value]=\"choice.value\" *ngFor=\"let choice of instance.filteredChoices\">\n {{ choice.translatedLabel ?? (choice.label|transloco) }}\n </mat-radio-button>\n </mat-radio-group>\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfTableFieldComponent as CoreTableFieldComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'table-field.html',\n styleUrls: ['table-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfTableFieldComponent extends CoreTableFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<table *ngIf=\"instance\" class=\"ajf-table-field\">\n <ng-container *ngIf=\"instance.node as node\">\n <ng-container *ngFor=\"let columns of instance.controls; let row = index\">\n <tr [ngClass]=\"row | ajfTableRowClass\">\n <td>\n <ng-container *ngIf=\"columns.length > 0 && columns[0]\">\n {{ columns[0] | ajfTranslateIfString | ajfFormatIfNumber: '.0-2' }}\n </ng-container>\n </td>\n <ng-container *ngIf=\"columns.length > 1\">\n <td *ngFor=\"let c of columns[1]; let column = index\">\n <ng-container *ngIf=\"row === 0; else controlCell\">\n {{ c | ajfTranslateIfString | ajfFormatIfNumber: '.0-2' }}\n </ng-container>\n <ng-template #controlCell>\n <ng-container *ngIf=\"c|ajfGetTableCellControl as contr\">\n <ng-container *ngIf=\"contr\">\n <ng-container *ngIf=\"contr!.show && (node.rows[row-1][column]|ajfIsCellEditable); else plainTextCell\">\n <ng-container *ngIf=\"contr.type === 'number';else genericInput\">\n <input (focusout)=\"contr!.show = false\" type=\"number\" [formControl]=\"contr.control\"\n (keydown.tab)=\"goToNextCell($event, row, column)\" autofocus />\n </ng-container>\n <ng-template #genericInput>\n <input (focusout)=\"contr!.show = false\" [type]=\"contr.type\" [formControl]=\"contr.control\"\n (keydown.tab)=\"goToNextCell($event, row, column)\" autofocus />\n </ng-template>\n </ng-container>\n\n <ng-template #plainTextCell>\n <span (click)=\"goToCell(row, column)\">{{ contr.control!.value |\n ajfTranslateIfString | ajfFormatIfNumber: '.0-2'\n }}</span>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n</table>","/**\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfInputFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'text-field.html',\n styleUrls: ['text-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfTextFieldComponent extends CoreComponent implements OnInit {\n quillModules = {\n toolbar: [\n ['bold', 'italic', 'underline'],\n [{'list': 'ordered'}, {'list': 'bullet'}],\n ['clean'],\n ],\n };\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n if (this.control) {\n this.control.subscribe(ctrl => {\n if (ctrl && typeof ctrl.value === 'string') {\n const converted = ctrl.value.replace(/\\r\\n|\\r|\\n/g, '<br>');\n if (converted !== ctrl.value) {\n ctrl.setValue(converted, {emitEvent: false});\n }\n }\n });\n }\n }\n}\n","<quill-editor *ngIf=\"control | async as ctrl\" [formControl]=\"ctrl!\" [modules]=\"quillModules\" class=\"resizable-quill\"\n placeholder=\"\">\n</quill-editor>","/**\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'time-field.html',\n styleUrls: ['time-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfTimeFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-time *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-time>\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfVideoUrlFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {HttpClient} from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'video-url-field.html',\n styleUrls: ['video-url-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfVideoUrlFieldComponent extends CoreComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n domSanitizer: DomSanitizer,\n httpClient: HttpClient,\n ) {\n super(cdr, service, was, domSanitizer, httpClient);\n }\n}\n","<ng-container *ngIf=\"control|async as ctrl\">\n <mat-form-field class=\"ajf-video-input\">\n <input matInput type=\"url\" [formControl]=\"ctrl!\">\n </mat-form-field>\n <div class=\"ajf-video-thumbnail\">\n <ng-container *ngIf=\"validUrl|async\">\n <a target=\"_blank\" [href]=\"ctrl.value\">\n <img *ngIf=\"videoThumbnail|async as thumb\" [src]=\"thumb\" class=\"\" alt=\"\">\n </a>\n </ng-container>\n </div>\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 Inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n/**\n * It allows the loading of a Signature canvas image inside an AjfForm.\n *\n * @export\n * @class AjfSignatureFieldComponent\n */\n@Component({\n selector: 'ajf-signature-field',\n templateUrl: 'signature-field.html',\n styleUrls: ['signature-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfSignatureFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-signature *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-signature>\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 AjfFieldService as CoreService,\n AjfFieldType,\n AjfFileFieldComponent,\n AjfImageFieldComponent,\n AjfReadOnlyDateFieldComponent,\n AjfReadOnlyFieldComponent,\n AjfReadOnlyFileFieldComponent,\n AjfReadOnlyGeolocationFieldComponent,\n AjfReadOnlyImageFieldComponent,\n AjfReadOnlySelectFieldComponent,\n AjfReadOnlyTableFieldComponent,\n AjfReadOnlyVideoUrlFieldComponent,\n} from '@ajf/core/forms';\nimport {Injectable} from '@angular/core';\n\nimport {AjfAudioFieldComponent} from './audio-field';\nimport {AjfBarcodeFieldComponent} from './barcode-field';\nimport {AjfBooleanFieldComponent} from './boolean-field';\nimport {AjfDateFieldComponent} from './date-field';\nimport {AjfDateInputFieldComponent} from './date-input-field';\nimport {AjfDisplayFieldComponent} from './display-field';\nimport {AjfEmptyFieldComponent} from './empty-field';\nimport {AjfInputFieldComponent} from './input-field';\nimport {AjfGeolocationFieldComponent} from './geolocation-field';\nimport {AjfMultipleChoiceFieldComponent} from './multiple-choice-field';\nimport {AjfRangeFieldComponent} from './range-field';\nimport {AjfSingleChoiceFieldComponent} from './single-choice-field';\nimport {AjfTableFieldComponent} from './table-field';\nimport {AjfTextFieldComponent} from './text-field';\nimport {AjfTimeFieldComponent} from './time-field';\nimport {AjfVideoUrlFieldComponent} from './video-url-field';\nimport {AjfSignatureFieldComponent} from './signature-field';\n\n@Injectable({providedIn: 'root'})\nexport class AjfFieldService extends CoreService {\n constructor() {\n super();\n (this.componentsMap[AjfFieldType.String] = {\n component: AjfInputFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Text] = {\n component: AjfTextFieldComponent,\n readOnlyComponent: AjfDisplayFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Number] = {\n component: AjfInputFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n inputs: {type: 'number'},\n }),\n (this.componentsMap[AjfFieldType.Boolean] = {\n component: AjfBooleanFieldComponent,\n readOnlyComponent: AjfDisplayFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Formula] = {\n component: AjfInputFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n inputs: {readonly: true},\n }),\n (this.componentsMap[AjfFieldType.DateRange] = {\n component: AjfDateFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.DateInput] = {\n component: AjfDateInputFieldComponent,\n readOnlyComponent: AjfReadOnlyDateFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Table] = {\n component: AjfTableFieldComponent,\n readOnlyComponent: AjfReadOnlyTableFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Empty] = {component: AjfEmptyFieldComponent}),\n (this.componentsMap[AjfFieldType.SingleChoice] = {\n component: AjfSingleChoiceFieldComponent,\n readOnlyComponent: AjfReadOnlySelectFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.MultipleChoice] = {\n component: AjfMultipleChoiceFieldComponent,\n readOnlyComponent: AjfReadOnlySelectFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Time] = {\n component: AjfTimeFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Barcode] = {\n component: AjfBarcodeFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n });\n this.componentsMap[AjfFieldType.Signature] = {\n component: AjfSignatureFieldComponent,\n readOnlyComponent: AjfReadOnlyImageFieldComponent,\n };\n this.componentsMap[AjfFieldType.Geolocation] = {\n component: AjfGeolocationFieldComponent,\n readOnlyComponent: AjfReadOnlyGeolocationFieldComponent,\n };\n this.componentsMap[AjfFieldType.File] = {\n component: AjfFileFieldComponent,\n readOnlyComponent: AjfReadOnlyFileFieldComponent,\n };\n this.componentsMap[AjfFieldType.Image] = {\n component: AjfImageFieldComponent,\n readOnlyComponent: AjfReadOnlyImageFieldComponent,\n };\n this.componentsMap[AjfFieldType.VideoUrl] = {\n component: AjfVideoUrlFieldComponent,\n readOnlyComponent: AjfReadOnlyVideoUrlFieldComponent,\n };\n this.componentsMap[AjfFieldType.Range] = {\n component: AjfRangeFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n };\n this.componentsMap[AjfFieldType.Audio] = {\n component: AjfAudioFieldComponent,\n readOnlyComponent: AjfReadOnlyFileFieldComponent,\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 AjfFieldComponentsMap,\n AjfFieldInstance,\n AjfFormField as CoreFormField,\n} from '@ajf/core/forms';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfFieldService} from './field-service';\n\n@Component({\n selector: 'ajf-field,ajf-form-field',\n templateUrl: 'field.html',\n styleUrls: ['field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFormField extends CoreFormField {\n readonly componentsMap: AjfFieldComponentsMap;\n\n constructor(cdr: ChangeDetectorRef, fieldService: AjfFieldService) {\n super(cdr);\n this.componentsMap = fieldService.componentsMap;\n }\n\n tabEvent(evt: KeyboardEvent, instance: AjfFieldInstance) {\n if (evt.code != 'Tab') return;\n const isShiftKey: boolean = evt.shiftKey;\n const cardIdNext = 'field_entry_' + (isShiftKey ? instance.node.id - 1 : instance.node.id + 1);\n\n const targetElement = document.querySelector(`#${cardIdNext}`) as HTMLElement;\n\n if (targetElement == null || instance == null) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n\n static ngAcceptInputType_readonly: BooleanInput;\n}\n","<div\n *ngIf=\"instance\"\n [ngClass]=\"'ajf-field-' + (instance|ajfNodeCompleteName)\"\n [class.ajf-validated]=\"instance.validationResults|ajfFieldIsValid\"\n (keydown)=\"tabEvent($event, instance)\"\n>\n <ng-template ajf-field-host></ng-template>\n</div>\n<ng-container *ngIf=\"instance && instance.node && instance.node.attachments\">\n <a *ngFor=\"let attachment of instance.node.attachments\"\n [href]=\"attachment.value\" target=\"_blank\">{{attachment.label | transloco}}</a>\n</ng-container>\n<div *ngIf=\"!readonly && instance && instance.validationResults\" class=\"ajf-errors\">\n <ng-container *ngFor=\"let res of instance.validationResults\">\n <div class=\"error\" *ngIf=\"!res.result\">\n {{ res.error|transloco }}\n </div>\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 {\n AjfFormRenderer as CoreFormRenderer,\n AjfFormRendererService,\n AjfFieldInstance,\n AjfFieldType,\n} from '@ajf/core/forms';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'ajf-form',\n templateUrl: 'form.html',\n styleUrls: ['form.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFormRenderer extends CoreFormRenderer {\n @Input() topBar: boolean = false;\n @Input() centeredFieldsContent: boolean = false;\n @Input() maxColumns: 1 | 2 | 3 = 1;\n\n constructor(rendererService: AjfFormRendererService, changeDetectorRef: ChangeDetectorRef) {\n super(rendererService, changeDetectorRef);\n }\n\n fieldStyle(field: AjfFieldInstance): any {\n if (field.node.fieldType === AjfFieldType.Formula && field.node.label === '') {\n return {display: 'none'};\n }\n return {};\n }\n\n static ngAcceptInputType_fixedOrientation: BooleanInput;\n static ngAcceptInputType_hasEndMessage: BooleanInput;\n static ngAcceptInputType_hasStartMessage: BooleanInput;\n static ngAcceptInputType_hideBottomToolbar: BooleanInput;\n static ngAcceptInputType_hideNavigationButtons: BooleanInput;\n static ngAcceptInputType_hideTopToolbar: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_saveDisabled: BooleanInput;\n}\n","<ng-container *ngIf=\"formGroup|async as fg\">\n <form [class.ajf-form-readonly]=\"readonly\" novalidate [formGroup]=\"fg!\">\n <div class=\"ajf-form-container\">\n <mat-toolbar *ngIf=\"!hideTopToolbar && topBar\" class=\"ajf-btn-strip\">\n <mat-button-toggle-group>\n <ng-container\n *ngFor=\"let slideInstance of (slides|async); let idx = index; trackBy: trackNodeById\"\n >\n <mat-button-toggle\n *ngIf=\"slideInstance.node.label && slideInstance.node.label.length > 0\"\n class=\"ajf-topbar-button\"\n (click)=\"scrollToSlide(slideInstance)\"\n [checked]=\"isSlideToggleChecked(slideInstance, formSlider.currentPage)\"\n [disabled]=\"slideInstance.visible === false\"\n >\n {{slideInstance.node.label | transloco}} {{ getRepeatingSlideRepIndex(slideInstance,\n formSlider.currentPage)|async}}\n <mat-icon\n *ngIf=\"!slideInstance.valid && slideInstance.visible !== false\"\n class=\"ajf-warning\"\n >warning</mat-icon\n >\n <mat-icon\n *ngIf=\"slideInstance.valid && slideInstance.visible !== false\"\n class=\"ajf-success\"\n >check</mat-icon\n >\n </mat-button-toggle>\n </ng-container>\n </mat-button-toggle-group>\n </mat-toolbar>\n <mat-toolbar *ngIf=\"!hideTopToolbar\">\n {{ title }}\n <span class=\"ajf-spacer\"></span>\n <!-- this content projection allow to add buttons on toolbar -->\n <ng-content select=\"[ajfFormTopToolbarButtons]\"></ng-content>\n <!-- apply a default save button only when ajfFormSaveButton is empty -->\n <span *ngIf=\"!saveDisabled\" (click)=\"onSave($event)\">\n <span #saveButton><ng-content select=\"[ajfFormSaveButton]\"></ng-content></span>\n <button\n *ngIf=\"saveButton && saveButton.childNodes && saveButton.childNodes.length === 0\"\n mat-button\n default\n >\n {{'Save'|transloco}}\n </button>\n </span>\n </mat-toolbar>\n <div class=\"ajf-slider-container\">\n <ajf-page-slider\n (orientationChange)=\"orientationChangeHandler($event)\"\n [fixedOrientation]=\"fixedOrientation\"\n [hideNavigationButtons]=\"hideNavigationButtons\"\n [orientation]=\"orientation\"\n #formSlider\n >\n <ng-container *ngIf=\"(slides|async) as curSlides\">\n <ng-container *ngIf=\"curSlides!.length > 0 && hasStartMessage\">\n <ajf-page-slider-item>\n <div class=\"ajf-form-page\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div class=\"ajf-page-slider-item-header\">\n <h2>\n <span class=\"ajf-form-header-number\"> 1 → </span>\n <span class=\"ajf-title\">\n <ng-content select=\"[ajfFormStartMessageTitle]\"></ng-content>\n </span>\n </h2>\n </div>\n </mat-card-header>\n <mat-card-content>\n <ng-content select=\"[ajfFormStartMessage]\"></ng-content>\n </mat-card-content>\n </mat-card>\n </div>\n </ajf-page-slider-item>\n </ng-container>\n <ng-container *ngFor=\"let slideInstance of curSlides; trackBy:trackNodeById\">\n <!-- non repeating slides -->\n <ng-container *ngIf=\"slideInstance.visible\">\n <ng-container *ngIf=\"!(slideInstance|ajfIsRepeatingSlideInstance)\">\n <ajf-page-slider-item>\n <div class=\"ajf-form-page\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div class=\"ajf-page-slider-item-header\">\n <h2>\n <span class=\"ajf-form-header-number\"\n >{{ slideInstance.position + (hasStartMessage | ajfBoolToInt) }}\n →</span\n >\n <span [innerHTML]=\"slideInstance.node.label | transloco\"></span>\n </h2>\n <mat-icon class=\"ajf-warning\" *ngIf=\"!slideInstance.valid\"\n >warning</mat-icon\n >\n <mat-icon class=\"ajf-success\" *ngIf=\"slideInstance.valid\"\n >check</mat-icon\n >\n </div>\n </mat-card-header>\n <mat-card-content>\n <ng-template\n ngFor\n let-fieldInstance\n [ngForOf]=\"slideInstance.flatNodes\"\n [ngForTrackBy]=\"trackNodeById\"\n >\n <mat-card\n appearance=\"outlined\"\n [ngClass]=\"'ajf-' + (fieldInstance|ajfAsFieldInstance).node.size +\n ' ajf-max-columns-' + maxColumns +\n (centeredFieldsContent ? ' ajf-centered-field' : '')\"\n class=\"ajf-field-entry\"\n *ngIf=\"fieldInstance.visible\"\n [ngStyle]=\"fieldStyle(fieldInstance|ajfAsFieldInstance)\"\n >\n <i\n [class]=\"(fieldInstance|ajfAsFieldInstance).node.fieldType | ajfFieldIcon\"\n item-right\n ></i>\n <p>\n {{ ((fieldInstance|ajfAsFieldInstance).node.description || '') |\n transloco }}\n </p>\n\n <mat-card-header>\n <mat-card-title>\n <label\n [attr.id]=\"fieldInstance.node.name\"\n *ngIf=\"(fieldInstance|ajfAsFieldInstance).node.fieldType !== 7\"\n [innerHTML]=\"fieldInstance.node.label | transloco\"\n ></label>\n </mat-card-title>\n <mat-icon\n class=\"ajf-tooltip-icon\"\n *ngIf=\"(fieldInstance|ajfAsFieldInstance).node?.hint as hint\"\n [matTooltip]=\"hint | transloco\"\n matTooltipPosition=\"right\"\n >\n {{(fieldInstance|ajfAsFieldInstance).node.hintIcon ||\n 'help'}}</mat-icon\n ></mat-card-header\n >\n <mat-card-content>\n <ajf-field\n [instance]=\"fieldInstance|ajfAsFieldInstance\"\n [readonly]=\"readonly || !slideInstance.editable\"\n [id]=\"'field_entry_' + fieldInstance.node.id\"\n >\n </ajf-field>\n </mat-card-content>\n <mat-card-actions\n [ngClass]=\"(fieldInstance|ajfAsFieldInstance)?.valid ?\n 'ajf-valid-field'\n : 'ajf-invalid-field'\"\n >\n <ng-container\n *ngIf=\"(fieldInstance|ajfAsFieldInstance)?.valid !== true; else ajfValidFieldTemplate\"\n >\n <span class=\"ajf-field-error-message\"\n >{{(fieldInstance|ajfAsFieldInstanceErrors|transloco)}}</span\n >\n <mat-icon class=\"ajf-warning\">warning</mat-icon>\n </ng-container>\n <ng-template #ajfValidFieldTemplate>\n <mat-icon class=\"ajf-success\">check</mat-icon>\n </ng-template>\n </mat-card-actions>\n </mat-card>\n </ng-template>\n </mat-card-content>\n </mat-card>\n </div>\n </ajf-page-slider-item>\n </ng-container>\n <!-- repeating slides -->\n <ng-container *ngIf=\"(slideInstance|ajfIsRepeatingSlideInstance)\">\n <ajf-page-slider-item\n *ngFor=\"let curRep of ((slideInstance|ajfAsRepeatingSlideInstance).reps|ajfRange); let idx = index; let lastSlide = last\"\n [isRepeating]=\"true\"\n [isRepeatingLast]=\"lastSlide\"\n >\n <div class=\"ajf-form-page\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div class=\"ajf-page-slider-item-header\">\n <h2>\n <span class=\"ajf-form-header-number\"\n >{{ slideInstance.position|ajfIncrement:idx + (hasStartMessage |\n ajfBoolToInt) }} →</span\n >\n <span [innerHTML]=\"slideInstance.node.label | transloco\"></span>\n </h2>\n <mat-icon class=\"ajf-warning\" *ngIf=\"!(slideInstance|ajfValidSlide:idx)\"\n >warning</mat-icon\n >\n <mat-icon class=\"ajf-success\" *ngIf=\"(slideInstance|ajfValidSlide:idx)\"\n >check</mat-icon\n >\n </div>\n </mat-card-header>\n <mat-card-content>\n <div *ngIf=\"!readonly\" class=\"ajf-group-actions\">\n <button\n *ngIf=\"lastSlide\"\n (click)=\"addGroup(slideInstance)\"\n [disabled]=\"!(slideInstance|ajfAsRepeatingSlideInstance).canAdd || ((slideInstance|ajfAsRepeatingSlideInstance).node.disableRemoval && !slideInstance.valid)\"\n mat-mini-fab\n >\n <mat-icon>add</mat-icon>\n </button>\n <button\n (click)=\"removeGroup(slideInstance, idx)\"\n [disabled]=\"!(slideInstance|ajfAsRepeatingSlideInstance).canRemove || (slideInstance|ajfAsRepeatingSlideInstance).node.disableRemoval\"\n mat-mini-fab\n >\n <mat-icon>remove</mat-icon>\n </button>\n </div>\n <ng-template\n ngFor\n let-fieldInstance\n [ngForOf]=\"slideInstance.slideNodes[idx]\"\n [ngForTrackBy]=\"trackNodeById\"\n >\n <mat-card\n appearance=\"outlined\"\n [ngClass]=\"'ajf-' + (fieldInstance|ajfAsFieldInstance).node.size +\n ' ajf-max-columns-' + maxColumns +\n (centeredFieldsContent ? ' ajf-centered-field' : '')\"\n class=\"ajf-field-entry\"\n *ngIf=\"fieldInstance.visible\"\n [ngStyle]=\"fieldStyle(fieldInstance|ajfAsFieldInstance)\"\n >\n <i\n [class]=\"(fieldInstance|ajfAsFieldInstance).node.fieldType | ajfFieldIcon\"\n item-right\n ></i>\n <p>\n {{ ((fieldInstance|ajfAsFieldInstance).node.description || '') |\n transloco }}\n </p>\n\n <mat-card-header>\n <mat-card-title>\n <label\n [attr.id]=\"fieldInstance.node.name\"\n *ngIf=\"(fieldInstance|ajfAsFieldInstance).node.fieldType !== 7\"\n [innerHTML]=\"fieldInstance.node.label | transloco\"\n ></label>\n </mat-card-title>\n <mat-icon\n class=\"ajf-tooltip-icon\"\n *ngIf=\"(fieldInstance|ajfAsFieldInstance).node?.hint as hint\"\n [matTooltip]=\"hint | transloco\"\n matTooltipPosition=\"right\"\n >\n {{(fieldInstance|ajfAsFieldInstance).node.hintIcon ||\n 'help'}}</mat-icon\n ></mat-card-header\n >\n <mat-card-content>\n <ajf-field\n [instance]=\"fieldInstance|ajfAsFieldInstance\"\n [readonly]=\"readonly || !slideInstance.editable\"\n [id]=\"'field_entry_' + fieldInstance.node.id\"\n >\n </ajf-field>\n </mat-card-content>\n <mat-card-actions\n [ngClass]=\"(fieldInstance|ajfAsFieldInstance)?.valid ?\n 'ajf-valid-field'\n : 'ajf-invalid-field'\"\n >\n <ng-container\n *ngIf=\"(fieldInstance|ajfAsFieldInstance)?.valid !== true; else ajfValidFieldTemplate\"\n >\n <span class=\"ajf-field-error-message\"\n >{{(fieldInstance|ajfAsFieldInstanceErrors)}}</span\n >\n <mat-icon class=\"ajf-warning\">warning</mat-icon>\n </ng-container>\n <ng-template #ajfValidFieldTemplate>\n <mat-icon class=\"ajf-success\">check</mat-icon>\n </ng-template>\n </mat-card-actions>\n </mat-card>\n </ng-template>\n </mat-card-content>\n </mat-card>\n </div>\n </ajf-page-slider-item>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"curSlides && curSlides!.length > 0 && hasEndMessage\">\n <ajf-page-slider-item>\n <div class=\"ajf-form-page\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <div class=\"ajf-page-slider-item-header\">\n <h2>\n <span *ngIf=\"(slidesNum|async) as snum\" class=\"ajf-form-header-number\">\n {{ snum! + (hasStartMessage | ajfBoolToInt ) + 1 }} →\n </span>\n <span class=\"ajf-title\">\n <ng-content select=\"[ajfFormEndMessageTitle]\"></ng-content>\n </span>\n </h2>\n </div>\n </mat-card-header>\n <mat-card-content>\n <ng-content select=\"[ajfFormEndMessage]\"></ng-content>\n </mat-card-content>\n </mat-card>\n </div>\n </ajf-page-slider-item>\n </ng-container>\n </ng-container>\n <div ajfPageSliderBar *ngIf=\"!hideBottomToolbar\">\n <div class=\"ajf-left-bar\">\n <div class=\"ajf-errors\" *ngIf=\"((errors | async) || 0) > 0\">\n <button mat-button (click)=\"goToPrevError()\" danger>\n <mat-icon>arrow_upward</mat-icon>\n </button>\n <button mat-button (click)=\"goToNextError()\" danger>\n <mat-icon>arrow_downward</mat-icon>\n </button>\n </div>\n <div class=\"ajf-info-box ajf-error\">\n <div class=\"ajf-title\">{{'Errors'|transloco}}</div>\n <div class=\"ajf-content\">{{ errors | async }} / {{ slidesNum|async }}</div>\n </div>\n </div>\n </div>\n </ajf-page-slider>\n </div>\n </div>\n </form>\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 {AjfCommonModule} from '@ajf/core/common';\nimport {AJF_WARNING_ALERT_SERVICE, AjfFormsModule as CoreFormsModule} from '@ajf/core/forms';\nimport {AjfTranslocoModule} from '@ajf/core/transloco';\nimport {AjfBarcodeModule} from '@ajf/material/barcode';\nimport {AjfAudioModule} from '@ajf/material/audio';\nimport {AjfCalendarModule} from '@ajf/material/calendar';\nimport {AjfCheckboxGroupModule} from '@ajf/material/checkbox-group';\nimport {AjfGeolocationModule} from '@ajf/material/geolocation';\nimport {AjfPageSliderModule} from '@ajf/material/page-slider';\nimport {AjfTimeModule} from '@ajf/material/time';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatNativeDateModule} from '@angular/material/core';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatToolbarModule} from '@angular/material/toolbar';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\nimport {AjfAudioFieldComponent} from './audio-field';\nimport {AjfBarcodeFieldComponent} from './barcode-field';\nimport {AjfBooleanFieldComponent} from './boolean-field';\nimport {AjfDateFieldComponent} from './date-field';\nimport {AjfDateInputFieldComponent} from './date-input-field';\nimport {AjfEmptyFieldComponent} from './empty-field';\nimport {AjfFormField} from './field';\nimport {AjfFieldService} from './field-service';\nimport {AjfFieldWarningDialog} from './field-warning-dialog';\nimport {AjfFormRenderer} from './form';\nimport {AjfGeolocationFieldComponent} from './geolocation-field';\nimport {AjfInputFieldComponent} from './input-field';\nimport {AjfMultipleChoiceFieldComponent} from './multiple-choice-field';\nimport {AjfRangeFieldComponent} from './range-field';\nimport {AjfSignatureFieldComponent} from './signature-field';\nimport {AjfSingleChoiceFieldComponent} from './single-choice-field';\nimport {AjfTableFieldComponent} from './table-field';\nimport {AjfTextFieldComponent} from './text-field';\nimport {AjfTimeFieldComponent} from './time-field';\nimport {AjfVideoUrlFieldComponent} from './video-url-field';\nimport {AjfWarningAlertService} from './warning-alert-service';\nimport {NgxMatSelectSearchModule} from 'ngx-mat-select-search';\nimport {AjfSignatureModule} from '@ajf/material/signature';\nimport {QuillModule} from 'ngx-quill';\nimport {AjfDisplayFieldComponent} from './display-field';\n\n@NgModule({\n imports: [\n AjfAudioModule,\n AjfBarcodeModule,\n AjfCalendarModule,\n AjfCommonModule,\n AjfCheckboxGroupModule,\n AjfGeolocationModule,\n AjfPageSliderModule,\n AjfSignatureModule,\n AjfTimeModule,\n AjfTranslocoModule,\n CommonModule,\n CoreFormsModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatDatepickerModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatNativeDateModule,\n MatRadioModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatToolbarModule,\n MatTooltipModule,\n ReactiveFormsModule,\n TextFieldModule,\n MatSliderModule,\n NgxMatSelectSearchModule,\n QuillModule.forRoot(),\n ],\n declarations: [\n AjfAudioFieldComponent,\n AjfBarcodeFieldComponent,\n AjfBooleanFieldComponent,\n AjfDateFieldComponent,\n AjfDateInputFieldComponent,\n AjfEmptyFieldComponent,\n AjfFieldWarningDialog,\n AjfFormField,\n AjfFormRenderer,\n AjfGeolocationFieldComponent,\n AjfInputFieldComponent,\n AjfMultipleChoiceFieldComponent,\n AjfRangeFieldComponent,\n AjfSignatureFieldComponent,\n AjfSingleChoiceFieldComponent,\n AjfTableFieldComponent,\n AjfTextFieldComponent,\n AjfTimeFieldComponent,\n AjfVideoUrlFieldComponent,\n AjfDisplayFieldComponent,\n ],\n exports: [AjfFormField, AjfFormRenderer],\n providers: [\n AjfFieldService,\n {provide: AJF_WARNING_ALERT_SERVICE, useClass: AjfWarningAlertService},\n ],\n})\nexport class AjfFormsModule {\n static forRoot(): ModuleWithProviders<AjfFormsModule> {\n return {\n ngModule: AjfFormsModule,\n providers: [AjfFieldService],\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\nexport * from './boolean-field';\nexport * from './date-field';\nexport * from './date-input-field';\nexport * from './empty-field';\nexport * from './field';\nexport * from './field-service';\nexport * from './field-warning-dialog';\nexport * from './input-field';\nexport * from './form';\nexport * from './forms-module';\nexport * from './multiple-choice-field';\nexport * from './single-choice-field';\nexport * from './table-field';\nexport * from './time-field';\nexport * from './warning-alert-service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4","i5","i7","CoreComponent","AjfInputFieldComponent","maxChoicesInDom","i6","i8","i9","CoreTableFieldComponent","CoreService","CoreFormField","i1.AjfFieldService","CoreFormRenderer","i11","i12.AjfFormField","i13","CoreFormsModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ajf-material-forms.mjs","sources":["../../../projects/material/forms/src/field-warning-dialog.ts","../../../projects/material/forms/src/field-warning-dialog.html","../../../projects/material/forms/src/warning-alert-service.ts","../../../projects/material/forms/src/boolean-field.ts","../../../projects/material/forms/src/boolean-field.html","../../../projects/material/forms/src/current-slide.ts","../../../projects/material/forms/src/date-field.ts","../../../projects/material/forms/src/date-field.html","../../../projects/material/forms/src/date-input-field.ts","../../../projects/material/forms/src/date-input-field.html","../../../projects/material/forms/src/empty-field.ts","../../../projects/material/forms/src/empty-field.html","../../../projects/material/forms/src/audio-field.ts","../../../projects/material/forms/src/audio-field.html","../../../projects/material/forms/src/barcode-field.ts","../../../projects/material/forms/src/barcode-field.html","../../../projects/material/forms/src/display-field.ts","../../../projects/material/forms/src/display-field.html","../../../projects/material/forms/src/input-field.ts","../../../projects/material/forms/src/input-field.html","../../../projects/material/forms/src/geolocation-field.ts","../../../projects/material/forms/src/geolocation-field.html","../../../projects/material/forms/src/multiple-choice-field.ts","../../../projects/material/forms/src/multiple-choice-field.html","../../../projects/material/forms/src/range-field.ts","../../../projects/material/forms/src/range-field.html","../../../projects/material/forms/src/single-choice-field.ts","../../../projects/material/forms/src/single-choice-field.html","../../../projects/material/forms/src/table-field.ts","../../../projects/material/forms/src/table-field.html","../../../projects/material/forms/src/text-field.ts","../../../projects/material/forms/src/text-field.html","../../../projects/material/forms/src/time-field.ts","../../../projects/material/forms/src/time-field.html","../../../projects/material/forms/src/video-url-field.ts","../../../projects/material/forms/src/video-url-field.html","../../../projects/material/forms/src/signature-field.ts","../../../projects/material/forms/src/signature-field.html","../../../projects/material/forms/src/field-service.ts","../../../projects/material/forms/src/field.ts","../../../projects/material/forms/src/field.html","../../../projects/material/forms/src/field-row.ts","../../../projects/material/forms/src/field-row.html","../../../projects/material/forms/src/rep-strip.ts","../../../projects/material/forms/src/rep-strip.html","../../../projects/material/forms/src/slide-header.ts","../../../projects/material/forms/src/slide-header.html","../../../projects/material/forms/src/slide-stats.ts","../../../projects/material/forms/src/form.ts","../../../projects/material/forms/src/form.html","../../../projects/material/forms/src/forms-module.ts","../../../projects/material/forms/src/public_api.ts","../../../projects/material/forms/src/ajf-material-forms.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 {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n templateUrl: 'field-warning-dialog.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFieldWarningDialog {\n message: string = '';\n}\n","<mat-dialog-content><div [innerHTML]=\"message\"></div></mat-dialog-content>\n<mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"true\">Ok</button>\n <button mat-button [mat-dialog-close]=\"false\">Cancel</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 {\n AjfFieldWarningAlertResult,\n AjfWarningAlertService as CoreWarningAlertService,\n} from '@ajf/core/forms';\nimport {Injectable} from '@angular/core';\nimport {MatDialog} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AjfFieldWarningDialog} from './field-warning-dialog';\n\n@Injectable()\nexport class AjfWarningAlertService implements CoreWarningAlertService {\n constructor(private _dialog: MatDialog) {}\n\n showWarningAlertPrompt(warnings: string[]): Observable<AjfFieldWarningAlertResult> {\n const dialog = this._dialog.open(AjfFieldWarningDialog);\n dialog.componentInstance.message = warnings.join('<br>');\n return dialog.afterClosed().pipe(map((result: boolean) => ({result})));\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n@Component({\n templateUrl: 'boolean-field.html',\n styleUrls: ['boolean-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfBooleanFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ng-container *ngIf=\"control | async as ctrl\">\n <mat-slide-toggle [formControl]=\"ctrl!\"></mat-slide-toggle>\n <span class=\"ajf-bool-label\">{{ (ctrl.value ? 'Yes' : 'No') | transloco }}</span>\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 AjfRepeatingSlideInstance,\n AjfSlideInstance,\n isRepeatingSlideInstance,\n} from '@ajf/core/forms';\nimport {Pipe, PipeTransform} from '@angular/core';\n\n/** Which slide the page slider is currently showing, and where it sits. */\nexport interface AjfCurrentSlide {\n /** Null while a start or end message page is on screen. */\n slide: AjfSlideInstance | null;\n /** The repetition on screen, zero based; 0 for a non-repeating slide. */\n repIndex: number;\n /** How many repetitions the slide has; 0 when it does not repeat. */\n reps: number;\n /** The slide's ordinal among the visible ones, for the header badge. */\n displayNumber: number;\n /** How many visible slides the form has. */\n total: number;\n /**\n * How many pages the slider holds: one per visible slide, one per repetition\n * of a repeating slide, plus the start and end message pages. Nothing to\n * navigate to when this is 1.\n */\n pages: number;\n}\n\nconst pageCount = (slide: AjfSlideInstance): number =>\n isRepeatingSlideInstance(slide) ? Math.max(1, (slide as AjfRepeatingSlideInstance).reps) : 1;\n\n/**\n * Resolve the page slider's current page into a slide.\n *\n * The renderer lays out one page per slide, and one page per repetition of a\n * repeating slide, optionally preceded by a start message page -- the same\n * arithmetic the error navigation in `AjfFormRenderer` performs.\n *\n * Impure, because slide visibility and repetition counts are mutated in place.\n * The result is memoized so that the pipe keeps handing back the same object\n * while nothing has moved: returning a fresh one on every check would trip\n * Angular's \"expression has changed after it was checked\" guard.\n */\n@Pipe({name: 'ajfCurrentSlide', pure: false})\nexport class AjfCurrentSlidePipe implements PipeTransform {\n private _last: AjfCurrentSlide | null = null;\n\n transform(\n slides: AjfSlideInstance[] | null,\n currentPage: number,\n hasStartMessage: boolean,\n hasEndMessage: boolean = false,\n ): AjfCurrentSlide {\n const visible = (slides || []).filter(s => s.visible !== false);\n const offset = hasStartMessage ? 1 : 0;\n const next: AjfCurrentSlide = {\n slide: null,\n repIndex: 0,\n reps: 0,\n displayNumber: Math.max(1, (currentPage || 0) + 1),\n total: visible.length,\n pages:\n offset +\n (hasEndMessage ? 1 : 0) +\n visible.reduce((count, slide) => count + pageCount(slide), 0),\n };\n\n let page = (currentPage || 0) - offset;\n if (page >= 0) {\n for (let i = 0; i < visible.length; i++) {\n const slide = visible[i];\n const pages = pageCount(slide);\n if (page < pages) {\n next.slide = slide;\n next.repIndex = page;\n next.reps = isRepeatingSlideInstance(slide)\n ? (slide as AjfRepeatingSlideInstance).reps\n : 0;\n next.displayNumber = i + 1 + offset;\n break;\n }\n page -= pages;\n }\n }\n\n const last = this._last;\n if (\n last != null &&\n last.slide === next.slide &&\n last.repIndex === next.repIndex &&\n last.reps === next.reps &&\n last.displayNumber === next.displayNumber &&\n last.total === next.total &&\n last.pages === next.pages\n ) {\n return last;\n }\n this._last = next;\n return next;\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfDateFieldInstance,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'date-field.html',\n styleUrls: ['date-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfDateFieldComponent extends AjfBaseFieldComponent<AjfDateFieldInstance> {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-calendar\n *ngIf=\"control|async as ctrl\"\n selectionMode=\"day\"\n [dateOnlyForDay]=\"true\"\n [minDate]=\"instance!.node.minDate|ajfDateValue\"\n [maxDate]=\"instance!.node.maxDate|ajfDateValue\"\n [formControl]=\"ctrl!\"\n></ajf-calendar>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfDateFieldInstance,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatInput} from '@angular/material/input';\nimport {UntypedFormControl} from '@angular/forms';\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'date-input-field.html',\n styleUrls: ['date-input-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfDateInputFieldComponent extends AjfBaseFieldComponent<AjfDateFieldInstance> {\n @ViewChild(MatInput, {static: false}) input!: MatInput;\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n\n clear(ctrl: UntypedFormControl): void {\n ctrl.setValue(null);\n }\n}\n","<ng-container *ngIf=\"control | async as ctrl\">\n <span class=\"ajf-input-group ajf-control--mono\">\n <input\n [matDatepicker]=\"picker\"\n [attr.aria-label]=\"instance! | ajfNodeCompleteName\"\n [min]=\"instance!.node.minDate | ajfDateValueString\"\n [max]=\"instance!.node.maxDate | ajfDateValueString\"\n [formControl]=\"ctrl!\"\n readonly\n />\n <mat-datepicker-toggle class=\"ajf-input-group-action\" [for]=\"picker\"></mat-datepicker-toggle>\n </span>\n <mat-datepicker #picker>\n <mat-datepicker-actions>\n <button mat-button type=\"button\" (click)=\"clear(ctrl); picker.close()\">\n {{ 'Clear' | transloco }}\n </button>\n <button mat-raised-button color=\"primary\" matDatepickerApply>{{ 'OK' | transloco }}</button>\n </mat-datepicker-actions>\n </mat-datepicker>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfEmptyFieldInstance,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'empty-field.html',\n styleUrls: ['empty-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfEmptyFieldComponent extends AjfBaseFieldComponent<AjfEmptyFieldInstance> {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<!-- The field row renders the label; this block carries only the note body. -->\n<div class=\"ajf-note\" *ngIf=\"instance\" [innerHTML]=\"instance.node.HTML | transloco\"></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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfAudioFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'audio-field.html',\n styleUrls: ['audio-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfAudioFieldComponent extends CoreComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<div class=\"ajf-field-wrapper\" *ngIf=\"control | async as ctrl\">\n <ajf-audio\n [readonly]=\"!instance?.editable\"\n [formControl]=\"ctrl\"\n ></ajf-audio>\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'barcode-field.html',\n styleUrls: ['barcode-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfBarcodeFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-barcode *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-barcode>\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 Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {\n AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfInputFieldComponent,\n AjfWarningAlertService,\n} from '@ajf/core/forms';\n\n/**\n * this component show the control value inherited from AjfBaseFieldComponent.\n *\n * @export\n * @class AjfDisplayFieldComponent\n */\n@Component({\n selector: 'ajf-display-field',\n templateUrl: 'display-field.html',\n styleUrls: ['display-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfDisplayFieldComponent extends AjfInputFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ng-container *ngIf=\"control | async as ctrl\">\n <ng-container [ngSwitch]=\"instance?.node?.fieldType\">\n\n <!-- String -->\n <span *ngSwitchCase=\"0\">{{ ctrl.value }}</span>\n\n <!-- Textarea with HTML -->\n <div *ngSwitchCase=\"1\" [innerHTML]=\"ctrl.value | safeHtml\"></div>\n\n <!-- Number -->\n <span *ngSwitchCase=\"2\">{{ ctrl.value | number }}</span>\n\n <!-- Boolean -->\n <mat-slide-toggle *ngSwitchCase=\"3\" [checked]=\"ctrl.value\" (click)=\"$event.preventDefault()\"\n (change)=\"$event.source.checked = ctrl.value\" [disableRipple]=\"true\">\n </mat-slide-toggle>\n\n <!-- Default -->\n <span *ngSwitchDefault>{{ ctrl.value }}</span>\n\n </ng-container>\n</ng-container>","/**\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfInputFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'input-field.html',\n styleUrls: ['input-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfInputFieldComponent extends CoreComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ng-container *ngIf=\"control | async as ctrl\">\n <input\n *ngIf=\"type === 'text'\"\n class=\"ajf-control\"\n [class.ajf-control--formula]=\"instance!.node.fieldType === 6\"\n [class.ajf-control--mono]=\"instance!.node.fieldType === 6\"\n type=\"text\"\n [formControl]=\"ctrl!\"\n [readonly]=\"instance! | ajfIsReadonlyInputField\"\n [attr.aria-labelledby]=\"instance!.node.name\"\n />\n <input\n *ngIf=\"type === 'number'\"\n class=\"ajf-control ajf-control--mono ajf-control--narrow\"\n type=\"number\"\n [formControl]=\"ctrl!\"\n [readonly]=\"instance! | ajfIsReadonlyInputField\"\n [attr.aria-labelledby]=\"instance!.node.name\"\n />\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'geolocation-field.html',\n styleUrls: ['geolocation-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfGeolocationFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-geolocation *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-geolocation>","/**\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 AJF_SEARCH_ALERT_THRESHOLD,\n AJF_WARNING_ALERT_SERVICE,\n AjfChoice,\n AjfFieldWithChoicesComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl, UntypedFormControl} from '@angular/forms';\nimport {combineLatest, merge, Observable, of, Subject, Subscription} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\nconst maxChoicesInDom = 40;\n\n@Component({\n templateUrl: 'multiple-choice-field.html',\n styleUrls: ['multiple-choice-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfMultipleChoiceFieldComponent<T>\n extends AjfFieldWithChoicesComponent<T>\n implements OnDestroy\n{\n readonly expandThreshold = super.searchThreshold;\n readonly searchFilterCtrl = new FormControl<string>('', {nonNullable: true});\n\n /**\n * Whether the choices collapse into a searchable dropdown. Below the search\n * threshold they are laid out as buttons instead, which reads faster for a\n * short list. `forceExpanded` wins over `forceNarrow`, so a schema can pin\n * either presentation regardless of how many choices there are.\n */\n get isNarrow(): boolean {\n const instance = this.instance;\n if (instance == null) {\n return false;\n }\n if (instance.node.forceExpanded) {\n return false;\n }\n return instance.node.forceNarrow || instance.filteredChoices.length > this.expandThreshold;\n }\n\n filteredChoices$: Observable<AjfChoice<any>[]>;\n\n private readonly _choicesUpdate$ = new Subject<void>();\n private _instanceUpdateForChoicesSub = Subscription.EMPTY;\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n @Optional() @Inject(AJF_SEARCH_ALERT_THRESHOLD) searchThreshold: number,\n ) {\n super(cdr, service, was, searchThreshold);\n\n const controlValue$ = this.control.pipe(\n switchMap(ctrl => (ctrl ? ctrl.valueChanges.pipe(startWith(ctrl.value)) : of(null))),\n startWith(null),\n distinctUntilChanged(),\n );\n\n this.filteredChoices$ = combineLatest([\n merge(\n this.searchFilterCtrl.valueChanges.pipe(debounceTime(150), distinctUntilChanged()),\n this._choicesUpdate$,\n ).pipe(startWith(null)),\n controlValue$,\n ]).pipe(\n map(([_, selectedValues]: [any, string[] | null]) => {\n const search = this.searchFilterCtrl.value;\n const choices = this.instance?.filteredChoices || [];\n if (search) {\n const lowerSearch = search.toLowerCase();\n return choices.filter(c =>\n (c.translatedLabel ?? c.label).toLowerCase().includes(lowerSearch),\n );\n }\n if (choices.length <= maxChoicesInDom) {\n return choices;\n }\n let truncated = choices.slice(0, maxChoicesInDom);\n // make sure selected choices are included in truncated\n for (const val of selectedValues ?? []) {\n if (!truncated.some(c => c.value === val)) {\n const selected = choices.find(c => c.value === val);\n if (selected) {\n truncated = [selected, ...truncated];\n }\n }\n }\n return truncated;\n }),\n );\n }\n\n /** The label shown on a selection chip. */\n labelFor(value: any): string {\n const choice = (this.instance?.filteredChoices || []).find(c => c.value === value);\n if (choice == null) {\n return `${value}`;\n }\n return choice.translatedLabel ?? choice.label;\n }\n\n /**\n * Drop one value from the selection, from the chip's own button. The click has\n * to be stopped from reaching the trigger, which would reopen the panel.\n */\n removeValue(ctrl: UntypedFormControl, value: any, event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n const current: any[] = Array.isArray(ctrl.value) ? ctrl.value : [];\n ctrl.setValue(current.filter(v => v !== value));\n }\n\n protected override _onInstanceChange(): void {\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.next();\n if (this.instance) {\n this._instanceUpdateForChoicesSub = this.instance.updatedEvt.subscribe(() => {\n this._choicesUpdate$.next();\n });\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.complete();\n }\n}\n","@if (instance) {\n<ng-container *ngIf=\"control | async as ctrl\">\n <div class=\"ajf-choice-control\">\n @if (isNarrow) {\n <mat-select [formControl]=\"ctrl!\" panelClass=\"ajf-select-panel\" [multiple]=\"true\">\n <mat-select-trigger>\n <span class=\"ajf-chip ajf-chip--removable\" *ngFor=\"let value of ctrl.value\">\n {{ labelFor(value) | transloco }}\n <button\n type=\"button\"\n *ngIf=\"!ctrl.disabled\"\n [attr.aria-label]=\"'Remove' | transloco\"\n (click)=\"removeValue(ctrl!, value, $event)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </span>\n </mat-select-trigger>\n <mat-option class=\"ajf-select-search-option\">\n <ngx-mat-select-search\n [formControl]=\"searchFilterCtrl\"\n [placeholderLabel]=\"'Search' | transloco\"\n [noEntriesFoundLabel]=\"'Nothing found' | transloco\"\n [enableClearOnEscapePressed]=\"true\"\n >\n </ngx-mat-select-search>\n </mat-option>\n <mat-option [value]=\"choice.value\" *ngFor=\"let choice of filteredChoices$ | async\">\n {{ choice.translatedLabel ?? (choice.label | transloco) }}\n </mat-option>\n </mat-select>\n } @else {\n <ajf-checkbox-group class=\"ajf-choices-container\" [formControl]=\"ctrl!\">\n <ajf-checkbox-group-item [value]=\"choice.value\" *ngFor=\"let choice of instance.filteredChoices\">\n {{ choice.translatedLabel ?? (choice.label | transloco) }}\n </ajf-checkbox-group-item>\n </ajf-checkbox-group>\n }\n\n <!-- Dropping the whole selection, next to the per-chip buttons that drop one. -->\n <button\n type=\"button\"\n class=\"ajf-btn--ghost ajf-clear-value\"\n *ngIf=\"hasValue(ctrl) && !ctrl.disabled\"\n (click)=\"clearValue(ctrl, $event)\"\n >\n {{ 'Clear' | transloco }}\n </button>\n </div>\n</ng-container>\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 {AJF_WARNING_ALERT_SERVICE, AjfFormRendererService} from '@ajf/core/forms';\nimport {AjfRange} from '@ajf/core/range';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n selector: 'ajf-range',\n templateUrl: 'range-field.html',\n styleUrls: ['range-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfRangeFieldComponent extends AjfRange {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n\n /**\n * True when no value has been selected yet, so that the slider is not\n * rendered as if the minimum value had been picked.\n */\n isEmpty(value: unknown): boolean {\n return value === null || value === undefined;\n }\n\n enumerateStars(): number[] {\n const nums: number[] = [];\n for (let i = 1; i <= (this.end || 5); i++) {\n nums.push(i);\n }\n return nums;\n }\n}\n","<ng-container *ngIf=\"control | async as ctrl\">\n <div\n *ngIf=\"appearance !== 'rating'; else ratingTemplate\"\n class=\"ajf-range\"\n [class.ajf-range-no-value]=\"isEmpty(ctrl.value)\"\n >\n <div class=\"ajf-range-track\">\n <mat-slider\n discrete\n showTickMarks\n [step]=\"step\"\n [min]=\"start\"\n [max]=\"end\"\n [attr.aria-label]=\"name\"\n [attr.name]=\"name\"\n >\n <input matSliderThumb [value]=\"value\" [formControl]=\"ctrl\" />\n </mat-slider>\n <div class=\"ajf-range-bounds\">\n <span>{{ start }}</span>\n <span>{{ end }}</span>\n </div>\n </div>\n <span class=\"ajf-range-value\">{{ isEmpty(ctrl.value) ? '—' : ctrl.value }}</span>\n </div>\n\n <ng-template #ratingTemplate>\n <div class=\"ajf-rating-container\">\n <button\n type=\"button\"\n *ngFor=\"let i of enumerateStars()\"\n class=\"ajf-rating-star\"\n [class.ajf-selected]=\"i <= ctrl.value\"\n (click)=\"ctrl.setValue(i)\"\n [attr.aria-label]=\"'Rate ' + i + ' out of ' + end\"\n [attr.name]=\"name\"\n >\n <mat-icon>star</mat-icon>\n </button>\n <span class=\"ajf-rating-readout\">{{ ctrl.value || 0 }} / {{ end }}</span>\n </div>\n </ng-template>\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 AJF_SEARCH_ALERT_THRESHOLD,\n AJF_WARNING_ALERT_SERVICE,\n AjfChoice,\n AjfFieldWithChoicesComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {combineLatest, merge, Observable, of, Subject, Subscription} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\nconst maxChoicesInDom = 40;\n\n@Component({\n templateUrl: 'single-choice-field.html',\n styleUrls: ['single-choice-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfSingleChoiceFieldComponent<T>\n extends AjfFieldWithChoicesComponent<T>\n implements OnDestroy\n{\n readonly expandThreshold = super.searchThreshold;\n readonly searchFilterCtrl = new FormControl<string>('', {nonNullable: true});\n\n /**\n * Whether the choices collapse into a searchable dropdown. Below the search\n * threshold they are laid out as buttons instead, which reads faster for a\n * short list. `forceExpanded` wins over `forceNarrow`, so a schema can pin\n * either presentation regardless of how many choices there are.\n */\n get isNarrow(): boolean {\n const instance = this.instance;\n if (instance == null) {\n return false;\n }\n if (instance.node.forceExpanded) {\n return false;\n }\n return instance.node.forceNarrow || instance.filteredChoices.length > this.expandThreshold;\n }\n\n filteredChoices$: Observable<AjfChoice<any>[]>;\n\n private readonly _choicesUpdate$ = new Subject<void>();\n private _instanceUpdateForChoicesSub = Subscription.EMPTY;\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n @Optional() @Inject(AJF_SEARCH_ALERT_THRESHOLD) searchThreshold: number,\n ) {\n super(cdr, service, was, searchThreshold);\n\n const controlValue$ = this.control.pipe(\n switchMap(ctrl => (ctrl ? ctrl.valueChanges.pipe(startWith(ctrl.value)) : of(null))),\n startWith(null),\n distinctUntilChanged(),\n );\n\n this.filteredChoices$ = combineLatest([\n merge(\n this.searchFilterCtrl.valueChanges.pipe(debounceTime(150), distinctUntilChanged()),\n this._choicesUpdate$,\n ).pipe(startWith(null)),\n controlValue$,\n ]).pipe(\n map(([_, selectedValue]) => {\n const search = this.searchFilterCtrl.value;\n const choices = this.instance?.filteredChoices || [];\n if (search) {\n const lowerSearch = search.toLowerCase();\n return choices.filter(c =>\n (c.translatedLabel ?? c.label).toLowerCase().includes(lowerSearch),\n );\n }\n if (choices.length <= maxChoicesInDom) {\n return choices;\n }\n const truncated = choices.slice(0, maxChoicesInDom);\n // make sure the selected choice is included in truncated\n if (selectedValue != null && !truncated.some(c => c.value === selectedValue)) {\n const selected = choices.find(c => c.value === selectedValue);\n if (selected) {\n return [selected, ...truncated];\n }\n }\n return truncated;\n }),\n );\n }\n\n protected override _onInstanceChange(): void {\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.next();\n if (this.instance) {\n this._instanceUpdateForChoicesSub = this.instance.updatedEvt.subscribe(() => {\n this._choicesUpdate$.next();\n });\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._instanceUpdateForChoicesSub.unsubscribe();\n this._choicesUpdate$.complete();\n }\n}\n","@if (instance) {\n<ng-container *ngIf=\"control | async as ctrl\">\n <div class=\"ajf-choice-control\">\n @if (isNarrow) {\n <mat-select [formControl]=\"ctrl!\" panelClass=\"ajf-select-panel\">\n <mat-option class=\"ajf-select-search-option\">\n <ngx-mat-select-search\n [formControl]=\"searchFilterCtrl\"\n [placeholderLabel]=\"'Search' | transloco\"\n [noEntriesFoundLabel]=\"'Nothing found' | transloco\"\n [enableClearOnEscapePressed]=\"true\"\n >\n </ngx-mat-select-search>\n </mat-option>\n <mat-option [value]=\"choice.value\" *ngFor=\"let choice of filteredChoices$ | async\">\n {{ choice.translatedLabel ?? (choice.label | transloco) }}\n </mat-option>\n </mat-select>\n } @else {\n <div\n class=\"ajf-segmented ajf-choices-container\"\n role=\"radiogroup\"\n [attr.aria-labelledby]=\"instance.node.name\"\n >\n <button\n type=\"button\"\n class=\"ajf-segment\"\n role=\"radio\"\n *ngFor=\"let choice of instance.filteredChoices\"\n [attr.aria-checked]=\"ctrl.value === choice.value\"\n [class.ajf-selected]=\"ctrl.value === choice.value\"\n [disabled]=\"ctrl.disabled\"\n (click)=\"ctrl.setValue(choice.value)\"\n >\n {{ choice.translatedLabel ?? (choice.label | transloco) }}\n </button>\n </div>\n }\n\n <!-- A picked radio cannot be unpicked, so emptying the field needs its own\n action. -->\n <button\n type=\"button\"\n class=\"ajf-btn--ghost ajf-clear-value\"\n *ngIf=\"hasValue(ctrl) && !ctrl.disabled\"\n (click)=\"clearValue(ctrl, $event)\"\n >\n {{ 'Clear' | transloco }}\n </button>\n </div>\n</ng-container>\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfTableFieldComponent as CoreTableFieldComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'table-field.html',\n styleUrls: ['table-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfTableFieldComponent extends CoreTableFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<table *ngIf=\"instance\" class=\"ajf-table-field\">\n <ng-container *ngIf=\"instance.node as node\">\n <ng-container *ngFor=\"let columns of instance.controls; let row = index\">\n <tr [ngClass]=\"row | ajfTableRowClass\">\n <td>\n <ng-container *ngIf=\"columns.length > 0 && columns[0]\">\n {{ columns[0] | ajfTranslateIfString | ajfFormatIfNumber: '.0-2' }}\n </ng-container>\n </td>\n <ng-container *ngIf=\"columns.length > 1\">\n <td *ngFor=\"let c of columns[1]; let column = index\">\n <ng-container *ngIf=\"row === 0; else controlCell\">\n {{ c | ajfTranslateIfString | ajfFormatIfNumber: '.0-2' }}\n </ng-container>\n <ng-template #controlCell>\n <ng-container *ngIf=\"c|ajfGetTableCellControl as contr\">\n <ng-container *ngIf=\"contr\">\n <ng-container *ngIf=\"contr!.show && (node.rows[row-1][column]|ajfIsCellEditable); else plainTextCell\">\n <ng-container *ngIf=\"contr.type === 'number';else genericInput\">\n <input (focusout)=\"contr!.show = false\" type=\"number\" [formControl]=\"contr.control\"\n (keydown.tab)=\"goToNextCell($event, row, column)\" autofocus />\n </ng-container>\n <ng-template #genericInput>\n <input (focusout)=\"contr!.show = false\" [type]=\"contr.type\" [formControl]=\"contr.control\"\n (keydown.tab)=\"goToNextCell($event, row, column)\" autofocus />\n </ng-template>\n </ng-container>\n\n <ng-template #plainTextCell>\n <span (click)=\"goToCell(row, column)\">{{ contr.control!.value |\n ajfTranslateIfString | ajfFormatIfNumber: '.0-2'\n }}</span>\n </ng-template>\n </ng-container>\n </ng-container>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n</table>","/**\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfInputFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'text-field.html',\n styleUrls: ['text-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfTextFieldComponent extends CoreComponent implements OnInit {\n quillModules = {\n toolbar: [\n ['bold', 'italic', 'underline'],\n [{'list': 'ordered'}, {'list': 'bullet'}],\n ['clean'],\n ],\n };\n\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n if (this.control) {\n this.control.subscribe(ctrl => {\n if (ctrl && typeof ctrl.value === 'string') {\n const converted = ctrl.value.replace(/\\r\\n|\\r|\\n/g, '<br>');\n if (converted !== ctrl.value) {\n ctrl.setValue(converted, {emitEvent: false});\n }\n }\n });\n }\n }\n}\n","<quill-editor *ngIf=\"control | async as ctrl\" [formControl]=\"ctrl!\" [modules]=\"quillModules\" class=\"resizable-quill\"\n placeholder=\"\">\n</quill-editor>","/**\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 AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'time-field.html',\n styleUrls: ['time-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfTimeFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-time *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-time>\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 AJF_WARNING_ALERT_SERVICE,\n AjfFormRendererService,\n AjfVideoUrlFieldComponent as CoreComponent,\n} from '@ajf/core/forms';\nimport {HttpClient} from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n@Component({\n templateUrl: 'video-url-field.html',\n styleUrls: ['video-url-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfVideoUrlFieldComponent extends CoreComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n domSanitizer: DomSanitizer,\n httpClient: HttpClient,\n ) {\n super(cdr, service, was, domSanitizer, httpClient);\n }\n}\n","<ng-container *ngIf=\"control | async as ctrl\">\n <input class=\"ajf-control ajf-video-input\" type=\"url\" [formControl]=\"ctrl!\" />\n <div class=\"ajf-video-thumbnail\">\n <ng-container *ngIf=\"validUrl | async\">\n <a target=\"_blank\" [href]=\"ctrl.value\">\n <img *ngIf=\"videoThumbnail | async as thumb\" [src]=\"thumb\" alt=\"\" />\n </a>\n </ng-container>\n </div>\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 Inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AJF_WARNING_ALERT_SERVICE,\n AjfBaseFieldComponent,\n AjfFormRendererService,\n} from '@ajf/core/forms';\nimport {AjfWarningAlertService} from './warning-alert-service';\n\n/**\n * It allows the loading of a Signature canvas image inside an AjfForm.\n *\n * @export\n * @class AjfSignatureFieldComponent\n */\n@Component({\n selector: 'ajf-signature-field',\n templateUrl: 'signature-field.html',\n styleUrls: ['signature-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfSignatureFieldComponent extends AjfBaseFieldComponent {\n constructor(\n cdr: ChangeDetectorRef,\n service: AjfFormRendererService,\n @Inject(AJF_WARNING_ALERT_SERVICE) was: AjfWarningAlertService,\n ) {\n super(cdr, service, was);\n }\n}\n","<ajf-signature *ngIf=\"control|async as ctrl\" [formControl]=\"ctrl!\"></ajf-signature>\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 AjfFieldService as CoreService,\n AjfFieldType,\n AjfFileFieldComponent,\n AjfImageFieldComponent,\n AjfReadOnlyDateFieldComponent,\n AjfReadOnlyFieldComponent,\n AjfReadOnlyFileFieldComponent,\n AjfReadOnlyGeolocationFieldComponent,\n AjfReadOnlyImageFieldComponent,\n AjfReadOnlySelectFieldComponent,\n AjfReadOnlyTableFieldComponent,\n AjfReadOnlyVideoUrlFieldComponent,\n} from '@ajf/core/forms';\nimport {Injectable} from '@angular/core';\n\nimport {AjfAudioFieldComponent} from './audio-field';\nimport {AjfBarcodeFieldComponent} from './barcode-field';\nimport {AjfBooleanFieldComponent} from './boolean-field';\nimport {AjfDateFieldComponent} from './date-field';\nimport {AjfDateInputFieldComponent} from './date-input-field';\nimport {AjfDisplayFieldComponent} from './display-field';\nimport {AjfEmptyFieldComponent} from './empty-field';\nimport {AjfInputFieldComponent} from './input-field';\nimport {AjfGeolocationFieldComponent} from './geolocation-field';\nimport {AjfMultipleChoiceFieldComponent} from './multiple-choice-field';\nimport {AjfRangeFieldComponent} from './range-field';\nimport {AjfSingleChoiceFieldComponent} from './single-choice-field';\nimport {AjfTableFieldComponent} from './table-field';\nimport {AjfTextFieldComponent} from './text-field';\nimport {AjfTimeFieldComponent} from './time-field';\nimport {AjfVideoUrlFieldComponent} from './video-url-field';\nimport {AjfSignatureFieldComponent} from './signature-field';\n\n@Injectable({providedIn: 'root'})\nexport class AjfFieldService extends CoreService {\n constructor() {\n super();\n (this.componentsMap[AjfFieldType.String] = {\n component: AjfInputFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Text] = {\n component: AjfTextFieldComponent,\n readOnlyComponent: AjfDisplayFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Number] = {\n component: AjfInputFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n inputs: {type: 'number'},\n }),\n (this.componentsMap[AjfFieldType.Boolean] = {\n component: AjfBooleanFieldComponent,\n readOnlyComponent: AjfDisplayFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Formula] = {\n component: AjfInputFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n inputs: {readonly: true},\n }),\n (this.componentsMap[AjfFieldType.DateRange] = {\n component: AjfDateFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.DateInput] = {\n component: AjfDateInputFieldComponent,\n readOnlyComponent: AjfReadOnlyDateFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Table] = {\n component: AjfTableFieldComponent,\n readOnlyComponent: AjfReadOnlyTableFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Empty] = {component: AjfEmptyFieldComponent}),\n (this.componentsMap[AjfFieldType.SingleChoice] = {\n component: AjfSingleChoiceFieldComponent,\n readOnlyComponent: AjfReadOnlySelectFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.MultipleChoice] = {\n component: AjfMultipleChoiceFieldComponent,\n readOnlyComponent: AjfReadOnlySelectFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Time] = {\n component: AjfTimeFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n }),\n (this.componentsMap[AjfFieldType.Barcode] = {\n component: AjfBarcodeFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n });\n this.componentsMap[AjfFieldType.Signature] = {\n component: AjfSignatureFieldComponent,\n readOnlyComponent: AjfReadOnlyImageFieldComponent,\n };\n this.componentsMap[AjfFieldType.Geolocation] = {\n component: AjfGeolocationFieldComponent,\n readOnlyComponent: AjfReadOnlyGeolocationFieldComponent,\n };\n this.componentsMap[AjfFieldType.File] = {\n component: AjfFileFieldComponent,\n readOnlyComponent: AjfReadOnlyFileFieldComponent,\n };\n this.componentsMap[AjfFieldType.Image] = {\n component: AjfImageFieldComponent,\n readOnlyComponent: AjfReadOnlyImageFieldComponent,\n };\n this.componentsMap[AjfFieldType.VideoUrl] = {\n component: AjfVideoUrlFieldComponent,\n readOnlyComponent: AjfReadOnlyVideoUrlFieldComponent,\n };\n this.componentsMap[AjfFieldType.Range] = {\n component: AjfRangeFieldComponent,\n readOnlyComponent: AjfReadOnlyFieldComponent,\n };\n this.componentsMap[AjfFieldType.Audio] = {\n component: AjfAudioFieldComponent,\n readOnlyComponent: AjfReadOnlyFileFieldComponent,\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 AjfFieldComponentsMap,\n AjfFieldInstance,\n AjfFormField as CoreFormField,\n} from '@ajf/core/forms';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport {AjfFieldService} from './field-service';\n\n@Component({\n selector: 'ajf-field,ajf-form-field',\n templateUrl: 'field.html',\n styleUrls: ['field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFormField extends CoreFormField {\n readonly componentsMap: AjfFieldComponentsMap;\n\n constructor(cdr: ChangeDetectorRef, fieldService: AjfFieldService) {\n super(cdr);\n this.componentsMap = fieldService.componentsMap;\n }\n\n tabEvent(evt: KeyboardEvent, instance: AjfFieldInstance) {\n if (evt.code != 'Tab') return;\n const isShiftKey: boolean = evt.shiftKey;\n const cardIdNext = 'field_entry_' + (isShiftKey ? instance.node.id - 1 : instance.node.id + 1);\n\n const targetElement = document.querySelector(`#${cardIdNext}`) as HTMLElement;\n\n if (targetElement == null || instance == null) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n\n static ngAcceptInputType_readonly: BooleanInput;\n}\n","<div\n *ngIf=\"instance\"\n [ngClass]=\"'ajf-field-' + (instance|ajfNodeCompleteName)\"\n [class.ajf-validated]=\"instance.validationResults|ajfFieldIsValid\"\n (keydown)=\"tabEvent($event, instance)\"\n>\n <ng-template ajf-field-host></ng-template>\n</div>\n<ng-container *ngIf=\"instance && instance.node && instance.node.attachments\">\n <a *ngFor=\"let attachment of instance.node.attachments\"\n [href]=\"attachment.value\" target=\"_blank\">{{attachment.label | transloco}}</a>\n</ng-container>\n<div *ngIf=\"!readonly && instance && instance.validationResults\" class=\"ajf-errors\">\n <ng-container *ngFor=\"let res of instance.validationResults\">\n <div class=\"error\" *ngIf=\"!res.result\">\n {{ res.error|transloco }}\n </div>\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 {AjfEmptyField, AjfFieldInstance, AjfFieldType, AjfNodeType} from '@ajf/core/forms';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\n\n/**\n * One field of a slide, laid out as a row: type badge, label, control, and a\n * right-hand column carrying either the field description or its validation\n * error.\n *\n * Both the plain and the repeating slide branches of the renderer render through\n * this component, so the row layout is defined in exactly one place.\n */\n@Component({\n selector: 'ajf-field-row',\n templateUrl: 'field-row.html',\n styleUrls: ['field-row.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AjfFieldRow implements OnDestroy {\n @Input()\n set instance(instance: AjfFieldInstance) {\n this._instance = instance;\n // Validity, visibility and the error list are mutated in place on the\n // instance, so the row has to be told to re-check itself the same way the\n // field components do.\n this._instanceSub.unsubscribe();\n this._instanceSub = instance\n ? instance.updatedEvt.subscribe(() => this._cdr.markForCheck())\n : Subscription.EMPTY;\n }\n get instance(): AjfFieldInstance {\n return this._instance;\n }\n private _instance!: AjfFieldInstance;\n private _instanceSub: Subscription = Subscription.EMPTY;\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n ngOnDestroy(): void {\n this._instanceSub.unsubscribe();\n }\n\n @Input()\n set readonly(readonly: boolean) {\n this._readonly = coerceBooleanProperty(readonly);\n }\n get readonly(): boolean {\n return this._readonly;\n }\n private _readonly = false;\n\n /**\n * Rows drop out on the host element rather than inside it, so that a hidden\n * field leaves no empty cell behind when rows are laid out in columns.\n *\n * Three kinds of node carry no information of their own and are kept out of\n * the layout: a container node, which is only a bracket around the fields it\n * holds and has no fieldType to render; a formula field with no label, which\n * only feeds other fields; and a note with no body -- the renderer synthesises\n * one of those to carry a node group's label, and a group is meant to show\n * nothing of itself.\n */\n @HostBinding('class.ajf-hidden-row')\n get hidden(): boolean {\n const node = this.instance?.node;\n // Truthy, not `=== false`: a visibility condition is an arbitrary expression\n // and the renderer stores whatever it returns, so an unanswered field can\n // leave `visible` at null rather than at false.\n if (node == null || !this.instance.visible) {\n return true;\n }\n if (node.nodeType !== AjfNodeType.AjfField) {\n return true;\n }\n if (node.fieldType === AjfFieldType.Empty) {\n return !(node as AjfEmptyField).HTML;\n }\n return node.fieldType === AjfFieldType.Formula && node.label === '';\n }\n\n /** Notes render their own block and never get a control border around it. */\n get isNote(): boolean {\n return this.instance?.node.fieldType === AjfFieldType.Empty;\n }\n\n get required(): boolean {\n return this.instance?.node.validation?.notEmpty != null;\n }\n\n static ngAcceptInputType_readonly: BooleanInput;\n}\n","<div\n *ngIf=\"!hidden\"\n class=\"ajf-field-row\"\n [class.ajf-invalid]=\"!instance.valid\"\n [class.ajf-readonly]=\"readonly\"\n [class.ajf-note-row]=\"isNote\"\n [ngClass]=\"'ajf-' + instance.node.size + ' ajf-field-type-' + instance.node.fieldType\"\n>\n <div class=\"ajf-field-label\">\n <span class=\"ajf-field-label-line\">\n <label [attr.id]=\"instance.node.name\" [innerHTML]=\"instance.node.label | transloco\"></label>\n <span class=\"ajf-required\" *ngIf=\"required\" aria-hidden=\"true\">*</span>\n <mat-icon\n class=\"ajf-hint-icon\"\n *ngIf=\"instance.node.hint as hint\"\n [matTooltip]=\"hint | transloco\"\n matTooltipPosition=\"right\"\n >{{ instance.node.hintIcon || 'help' }}</mat-icon\n >\n </span>\n <!-- A note carries prose, not a value, so naming its type says nothing. -->\n <ng-container *ngIf=\"!isNote\">\n <span class=\"ajf-field-type-name\" *ngIf=\"instance | ajfFieldTypeLabel as type\"\n >{{ type.name | transloco }}<ng-container *ngIf=\"type.detailValue\"> ·\n {{ type.detailValue }}<ng-container *ngIf=\"type.detailUnit\">\n {{ type.detailUnit | transloco }}</ng-container\n ></ng-container\n ></span\n >\n </ng-container>\n </div>\n\n <div class=\"ajf-field-control\">\n <ajf-field\n [instance]=\"instance\"\n [readonly]=\"readonly\"\n [id]=\"'field_entry_' + instance.node.id\"\n ></ajf-field>\n </div>\n\n <div class=\"ajf-field-side\">\n <span class=\"ajf-field-error-message\" *ngIf=\"!instance.valid\">{{\n instance | ajfAsFieldInstanceErrors | transloco\n }}</span>\n <span class=\"ajf-field-hint-text\" *ngIf=\"instance.valid && instance.node.description\">{{\n instance.node.description | transloco\n }}</span>\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 {AjfRepeatingSlideInstance} from '@ajf/core/forms';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Component, EventEmitter, Input, Output, ViewEncapsulation} from '@angular/core';\n\n/**\n * The pager for a repeating slide: one button per repetition plus add and remove\n * actions. The renderer keeps one page per repetition, so picking a number here\n * is a page change, which the renderer performs.\n */\n@Component({\n selector: 'ajf-rep-strip',\n templateUrl: 'rep-strip.html',\n styleUrls: ['rep-strip.scss'],\n encapsulation: ViewEncapsulation.None,\n // Deliberately not OnPush: `reps`, `canAdd` and `canRemove` are mutated in\n // place on the slide instance, so the guards below would go stale under a\n // strategy that only re-checks when an input identity changes.\n})\nexport class AjfRepStrip {\n @Input() slide!: AjfRepeatingSlideInstance;\n\n /** The repetition currently on screen, zero based. */\n @Input() current = 0;\n\n @Input()\n set readonly(readonly: boolean) {\n this._readonly = coerceBooleanProperty(readonly);\n }\n get readonly(): boolean {\n return this._readonly;\n }\n private _readonly = false;\n\n @Output() readonly goTo = new EventEmitter<number>();\n @Output() readonly add = new EventEmitter<void>();\n @Output() readonly remove = new EventEmitter<void>();\n\n /**\n * A repetition count driven by a formula is not the reader's to change:\n * `AjfFormRendererService.addGroup` and `removeGroup` both refuse the call\n * outright, so without this the buttons would sit enabled and do nothing.\n */\n private get manualReps(): boolean {\n return this.slide.formulaReps == null;\n }\n\n get canAdd(): boolean {\n return this.manualReps && !!this.slide.canAdd;\n }\n\n get canRemove(): boolean {\n return this.manualReps && !!this.slide.canRemove;\n }\n\n static ngAcceptInputType_readonly: BooleanInput;\n}\n","<div class=\"ajf-rep-strip\">\n <span class=\"ajf-micro-label ajf-rep-strip-label\"\n >{{ 'Number of' | transloco }} {{ slide.node.label | transloco }}</span\n >\n\n <div class=\"ajf-rep-pager\">\n <button\n type=\"button\"\n class=\"ajf-btn\"\n [disabled]=\"current === 0\"\n (click)=\"goTo.emit(current - 1)\"\n [attr.aria-label]=\"'Back' | transloco\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"ajf-btn ajf-rep-page\"\n *ngFor=\"let rep of (slide.reps | ajfRange); let idx = index\"\n [class.ajf-selected]=\"idx === current\"\n (click)=\"goTo.emit(idx)\"\n >\n {{ idx + 1 }}\n </button>\n <button\n type=\"button\"\n class=\"ajf-btn\"\n [disabled]=\"current >= slide.reps - 1\"\n (click)=\"goTo.emit(current + 1)\"\n [attr.aria-label]=\"'Forward' | transloco\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <ng-container *ngIf=\"!readonly\">\n <button\n type=\"button\"\n class=\"ajf-btn\"\n [disabled]=\"!canAdd\"\n (click)=\"add.emit()\"\n [attr.aria-label]=\"'Add' | transloco\"\n >\n <mat-icon>add</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"ajf-btn\"\n [disabled]=\"!canRemove\"\n (click)=\"remove.emit()\"\n [attr.aria-label]=\"'Remove' | transloco\"\n >\n <mat-icon>remove</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <span class=\"ajf-rep-strip-context\">\n <span [innerHTML]=\"slide.node.label | transloco\"></span>\n {{ current + 1 }} {{ 'of' | transloco }} {{ slide.reps }}\n </span>\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 {AjfSlideInstance} from '@ajf/core/forms';\nimport {Component, EventEmitter, Input, Output, ViewEncapsulation} from '@angular/core';\n\n/**\n * The bar at the top of every slide: its number and title, a menu to jump to any\n * other slide, previous/next paging, and a slot for the form's own action\n * buttons.\n *\n * What the form still has failing is reported by the footer alone. Naming it\n * here too cost a phone's whole header width to repeat something already on\n * screen.\n *\n * Paging belongs to the renderer, which owns the page slider, so it is raised\n * as an event rather than handled here.\n */\n@Component({\n selector: 'ajf-slide-header',\n templateUrl: 'slide-header.html',\n styleUrls: ['slide-header.scss'],\n encapsulation: ViewEncapsulation.None,\n // Deliberately not OnPush: slide visibility and repetition counts are mutated\n // in place, so the jump menu and the repetition pill would go stale under a\n // strategy that only re-checks when an input identity changes.\n})\nexport class AjfSlideHeader {\n /** Absent while a start or end message page is on screen. */\n @Input() slide: AjfSlideInstance | null = null;\n\n /** The number shown in the badge, already offset by any start message. */\n @Input() displayNumber = 1;\n\n /** Every slide of the form, for the jump menu. */\n @Input() slides: AjfSlideInstance[] = [];\n\n /** How many pages the slider holds, repetitions and message pages included. */\n @Input() pages = 0;\n\n /**\n * Whether the form has anywhere to page to. A single page form gets no arrows\n * and no \"slide 1 of 1\": both are controls that cannot do anything.\n */\n get canNavigate(): boolean {\n return this.pages > 1;\n }\n\n /**\n * Whether the jump menu is worth opening. Counted over the visible slides, the\n * only ones the menu can actually reach.\n */\n get canJump(): boolean {\n return this.slides.filter(s => s.visible !== false).length > 1;\n }\n\n @Output() readonly jumpTo = new EventEmitter<AjfSlideInstance>();\n @Output() readonly prev = new EventEmitter<void>();\n @Output() readonly next = new EventEmitter<void>();\n}\n","<div class=\"ajf-slide-header\">\n <button\n type=\"button\"\n class=\"ajf-slide-title\"\n [class.ajf-slide-title-static]=\"!slide || !canJump\"\n [disabled]=\"!slide || !canJump\"\n [matMenuTriggerFor]=\"slideMenu\"\n [attr.aria-label]=\"'Go to slide' | transloco\"\n >\n <span class=\"ajf-slide-number\">{{ displayNumber }}</span>\n\n <!-- Every slide title is laid out in the same grid cell, so the trigger is as\n wide as the longest of them and keeps that width while paging. Only the\n current title is visible; the rest just hold the space open. -->\n <span class=\"ajf-slide-label-stack\">\n <span\n class=\"ajf-slide-label\"\n *ngFor=\"let s of slides\"\n [class.ajf-current]=\"s === slide\"\n [innerHTML]=\"s.node.label | transloco\"\n ></span>\n </span>\n <mat-icon class=\"ajf-slide-caret\" *ngIf=\"slide && canJump\">arrow_drop_down</mat-icon>\n </button>\n\n <mat-menu #slideMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let s of slides\"\n [disabled]=\"s.visible === false\"\n (click)=\"jumpTo.emit(s)\"\n >\n <mat-icon [class.ajf-invalid]=\"!s.valid\">{{ s.valid ? 'check' : 'warning' }}</mat-icon>\n <span [innerHTML]=\"s.node.label | transloco\"></span>\n </button>\n </mat-menu>\n\n <!-- Nothing to page through in a single page form. -->\n <div class=\"ajf-slide-nav\" *ngIf=\"canNavigate\">\n <button\n type=\"button\"\n class=\"ajf-btn\"\n (click)=\"prev.emit()\"\n [attr.aria-label]=\"'Back' | transloco\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"ajf-btn\"\n (click)=\"next.emit()\"\n [attr.aria-label]=\"'Forward' | transloco\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n\n <span class=\"ajf-slide-header-spacer\"></span>\n\n <ng-content></ng-content>\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 AjfBaseSlideInstance,\n AjfFieldInstance,\n AjfFieldType,\n AjfNodeInstance,\n AjfRepeatingSlideInstance,\n AjfSlideInstance,\n isFieldInstance,\n isRepeatingSlideInstance,\n nodeInstanceCompleteName,\n} from '@ajf/core/forms';\nimport {Pipe, PipeTransform} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\n\n/** The filled/total counter shown as a chip in the slide header. */\nexport interface AjfSlideCompletion {\n done: number;\n total: number;\n}\n\n/**\n * The fields a slide header counts. `slideNodes` is indexed per repetition, and\n * a non-repeating slide keeps its only set of nodes at index 0, so both kinds of\n * slide are read the same way.\n */\nconst countableFields = (slide: AjfBaseSlideInstance, idx: number): AjfFieldInstance[] => {\n const nodes: AjfNodeInstance[] =\n (slide.slideNodes && slide.slideNodes[idx]) || slide.flatNodes || [];\n return nodes.filter(\n n => n.visible && isFieldInstance(n) && n.node.fieldType !== AjfFieldType.Empty,\n ) as AjfFieldInstance[];\n};\n\n/**\n * Whether a field holds anything.\n *\n * The value is read off the form group, not off `AjfFieldInstance.value`: the\n * instance's own `value` is only written at initialisation and by formulas, so it\n * does not follow what the user types. The group is flat and keyed by each\n * instance's complete name, which is how `AjfFormRendererService.getControl`\n * resolves a control too.\n */\nconst isFilled = (field: AjfFieldInstance, formGroup: UntypedFormGroup | null): boolean => {\n const name = nodeInstanceCompleteName(field);\n const control = formGroup != null && formGroup.contains(name) ? formGroup.controls[name] : null;\n const value = control != null ? control.value : field.value;\n if (value == null || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return true;\n};\n\n/**\n * How many of a slide's fields carry a value, out of how many are on it. Notes\n * (`AjfFieldType.Empty`) hold no value and are left out of both numbers.\n *\n * Impure because it reads mutable instance state, in the same way as\n * `ajfValidSlide` and `ajfAsFieldInstanceErrors`. Returns a memoized object; see\n * the note inside.\n */\n@Pipe({name: 'ajfSlideCompletion', pure: false})\nexport class AjfSlideCompletionPipe implements PipeTransform {\n private _last: AjfSlideCompletion | null = null;\n\n transform(\n slide: AjfBaseSlideInstance,\n idx: number = 0,\n formGroup: UntypedFormGroup | null = null,\n ): AjfSlideCompletion {\n const fields = countableFields(slide, idx);\n const done = fields.filter(f => isFilled(f, formGroup)).length;\n const total = fields.length;\n // Hand back the same object while the counts hold, or the fresh identity on\n // every check would trip Angular's \"expression has changed\" guard.\n if (this._last != null && this._last.done === done && this._last.total === total) {\n return this._last;\n }\n this._last = {done, total};\n return this._last;\n }\n}\n\n/**\n * How many of a slide's visible fields are failing validation.\n */\n@Pipe({name: 'ajfSlideIssues', pure: false})\nexport class AjfSlideIssuesPipe implements PipeTransform {\n transform(slide: AjfBaseSlideInstance, idx: number = 0): number {\n return countableFields(slide, idx).filter(f => !f.valid).length;\n }\n}\n\n/** What is left to fix in the whole form, for the header and footer alerts. */\nexport interface AjfFormIssues {\n /** Visible fields failing validation, across every slide and repetition. */\n fields: number;\n /** How many slides hold at least one of them. */\n slides: number;\n}\n\n/**\n * The form's outstanding work in one place. A per-slide count only tells the\n * reader about the slide they are already looking at, which is the one place\n * they can see the failing fields for themselves.\n *\n * Counted here rather than taken from `AjfFormRendererService.errors`, which\n * counts invalid slide pages and says nothing about how many fields are behind\n * them.\n *\n * Impure and memoized, like its neighbours above.\n */\n@Pipe({name: 'ajfFormIssues', pure: false})\nexport class AjfFormIssuesPipe implements PipeTransform {\n private _last: AjfFormIssues = {fields: 0, slides: 0};\n\n transform(slides: AjfSlideInstance[] | null): AjfFormIssues {\n let fields = 0;\n let slideCount = 0;\n (slides || [])\n .filter(slide => slide.visible !== false)\n .forEach(slide => {\n // Every repetition of a repeating slide carries its own set of fields,\n // and any of them can be the one failing.\n const reps = isRepeatingSlideInstance(slide)\n ? Math.max(1, (slide as AjfRepeatingSlideInstance).reps)\n : 1;\n let slideFields = 0;\n for (let idx = 0; idx < reps; idx++) {\n slideFields += countableFields(slide, idx).filter(f => !f.valid).length;\n }\n if (slideFields > 0) {\n fields += slideFields;\n slideCount++;\n }\n });\n if (this._last.fields === fields && this._last.slides === slideCount) {\n return this._last;\n }\n this._last = {fields, slides: slideCount};\n return this._last;\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 AjfFieldInstance,\n AjfFieldType,\n AjfFormRenderer as CoreFormRenderer,\n AjfFormRendererService,\n AjfRepeatingSlideInstance,\n AjfSlideInstance,\n isRepeatingSlideInstance,\n} from '@ajf/core/forms';\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {EMPTY, Subscription} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'ajf-form',\n templateUrl: 'form.html',\n styleUrls: ['form.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AjfFormRenderer\n extends CoreFormRenderer\n implements AfterViewChecked, OnDestroy\n{\n /**\n * @deprecated The slide strip has been replaced by the jump menu in the slide\n * header, which is always available. Kept so that existing templates still\n * compile.\n */\n @Input() topBar: boolean = false;\n\n /**\n * @deprecated Field rows align their labels and controls on a shared grid, so\n * there is nothing left to centre.\n */\n @Input() centeredFieldsContent: boolean = false;\n\n /** How many field rows sit side by side. */\n @Input() maxColumns: 1 | 2 | 3 = 1;\n\n /**\n * The page the slider is showing. The slide header is rendered once, above the\n * slider, so it needs to know which slide is on screen; the page slider only\n * reports that imperatively, hence the mirrored property.\n */\n currentPage = 0;\n\n private _slideList: AjfSlideInstance[] = [];\n private _validitySubscription: Subscription = Subscription.EMPTY;\n private _slidesSubscription: Subscription = Subscription.EMPTY;\n private _valueSubscription: Subscription = Subscription.EMPTY;\n private _pageSubscription: Subscription = Subscription.EMPTY;\n private _pageInit = false;\n\n constructor(rendererService: AjfFormRendererService, changeDetectorRef: ChangeDetectorRef) {\n super(rendererService, changeDetectorRef);\n this._slidesSubscription = this.slides.subscribe(slides => {\n this._slideList = slides || [];\n });\n // This component is OnPush, and children are only visited when it is\n // checked. The slide header reports live state -- how many fields are\n // filled, how many are failing -- so a value change anywhere in the form has\n // to bring the renderer back into the check.\n this._valueSubscription = this.formGroup\n .pipe(switchMap(fg => (fg ? fg.valueChanges : EMPTY)))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n // Validity moves without a value moving with it -- a visibility change or a\n // recalculated formula is enough -- and the issue counts are read through\n // impure pipes, so this brings the renderer back into the check too.\n this._validitySubscription = this.errors.subscribe(() =>\n this._changeDetectorRef.markForCheck(),\n );\n }\n\n override ngAfterViewChecked(): void {\n super.ngAfterViewChecked();\n if (!this._pageInit && this.formSlider != null) {\n this._pageInit = true;\n this.currentPage = this.formSlider.currentPage;\n this._pageSubscription = this.formSlider.pageScrollFinish.subscribe(() => {\n this.currentPage = this.formSlider.currentPage;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n override ngOnDestroy(): void {\n this._slidesSubscription.unsubscribe();\n this._valueSubscription.unsubscribe();\n this._validitySubscription.unsubscribe();\n this._pageSubscription.unsubscribe();\n super.ngOnDestroy();\n }\n\n fieldStyle(field: AjfFieldInstance): any {\n if (field.node.fieldType === AjfFieldType.Formula && field.node.label === '') {\n return {display: 'none'};\n }\n return {};\n }\n\n /** Page to the first page of a slide, from the header's jump menu. */\n goToSlide(slide: AjfSlideInstance): void {\n this._slideTo(this._pageOf(slide));\n }\n\n /** Page to one repetition of the repeating slide currently on screen. */\n goToRep(slide: AjfSlideInstance, repIndex: number): void {\n this._slideTo(this._pageOf(slide) + repIndex);\n }\n\n goToPrevSlide(): void {\n this.formSlider?.slide({dir: 'up'});\n }\n\n goToNextSlide(): void {\n this.formSlider?.slide({dir: 'down'});\n }\n\n /**\n * The slider page a slide starts on. `AjfSlideInstance.position` cannot be\n * used directly here: it does not account for a start message page, and this\n * has to agree with the page arithmetic used by `ajfCurrentSlide`.\n */\n private _pageOf(slide: AjfSlideInstance): number {\n let page = this.hasStartMessage ? 1 : 0;\n for (const cur of this._slideList) {\n if (cur.visible === false) {\n continue;\n }\n if (cur === slide) {\n break;\n }\n page += isRepeatingSlideInstance(cur)\n ? Math.max(1, (cur as AjfRepeatingSlideInstance).reps)\n : 1;\n }\n return page;\n }\n\n private _slideTo(page: number): void {\n if (this.formSlider != null) {\n this.formSlider.slide({to: page});\n }\n }\n\n static ngAcceptInputType_fixedOrientation: BooleanInput;\n static ngAcceptInputType_hasEndMessage: BooleanInput;\n static ngAcceptInputType_hasStartMessage: BooleanInput;\n static ngAcceptInputType_hideBottomToolbar: BooleanInput;\n static ngAcceptInputType_hideNavigationButtons: BooleanInput;\n static ngAcceptInputType_hideTopToolbar: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_saveDisabled: BooleanInput;\n}\n","<ng-container *ngIf=\"formGroup | async as fg\">\n <form [class.ajf-form-readonly]=\"readonly\" novalidate [formGroup]=\"fg!\">\n <div class=\"ajf-form-container\">\n <ng-container *ngIf=\"slides | async as curSlides\">\n <ng-container\n *ngIf=\"curSlides | ajfCurrentSlide : currentPage : hasStartMessage : hasEndMessage as cur\"\n >\n <div class=\"ajf-form-bar\" *ngIf=\"!hideTopToolbar\">\n <ajf-slide-header\n [slide]=\"cur.slide\"\n [slides]=\"curSlides\"\n [displayNumber]=\"cur.displayNumber\"\n [pages]=\"cur.pages\"\n (jumpTo)=\"goToSlide($event)\"\n (prev)=\"goToPrevSlide()\"\n (next)=\"goToNextSlide()\"\n >\n <!-- this content projection allows to add buttons on the slide header -->\n <ng-content select=\"[ajfFormTopToolbarButtons]\"></ng-content>\n <!-- The renderer has nowhere to save to: clicking here only emits\n `formAction`. So it ships no button of its own and holds the\n slot open instead -- a host that handles the event projects the\n button it wants, and gets the click through this wrapper. -->\n <span class=\"ajf-form-save\" *ngIf=\"!saveDisabled\" (click)=\"onSave($event)\">\n <ng-content select=\"[ajfFormSaveButton]\"></ng-content>\n </span>\n </ajf-slide-header>\n\n <ajf-rep-strip\n *ngIf=\"cur.slide && cur.reps > 0\"\n [slide]=\"cur.slide! | ajfAsRepeatingSlideInstance\"\n [current]=\"cur.repIndex\"\n [readonly]=\"readonly\"\n (goTo)=\"goToRep(cur.slide!, $event)\"\n (add)=\"addGroup(cur.slide!)\"\n (remove)=\"removeGroup(cur.slide!, cur.repIndex)\"\n ></ajf-rep-strip>\n </div>\n </ng-container>\n\n <div class=\"ajf-slider-container\">\n <ajf-page-slider\n (orientationChange)=\"orientationChangeHandler($event)\"\n [fixedOrientation]=\"fixedOrientation\"\n [hideNavigationButtons]=\"hideNavigationButtons\"\n [orientation]=\"orientation\"\n #formSlider\n >\n <ajf-page-slider-item *ngIf=\"curSlides!.length > 0 && hasStartMessage\">\n <div class=\"ajf-form-page ajf-form-message\">\n <h2 class=\"ajf-message-title\">\n <ng-content select=\"[ajfFormStartMessageTitle]\"></ng-content>\n </h2>\n <div class=\"ajf-message-body\">\n <ng-content select=\"[ajfFormStartMessage]\"></ng-content>\n </div>\n </div>\n </ajf-page-slider-item>\n\n <ng-container *ngFor=\"let slideInstance of curSlides; trackBy: trackNodeById\">\n <ng-container *ngIf=\"slideInstance.visible\">\n <!-- non repeating slides -->\n <ng-container *ngIf=\"!(slideInstance | ajfIsRepeatingSlideInstance)\">\n <ajf-page-slider-item>\n <div class=\"ajf-form-page\" [ngClass]=\"'ajf-max-columns-' + maxColumns\">\n <ajf-field-row\n *ngFor=\"let fieldInstance of slideInstance.flatNodes; trackBy: trackNodeById\"\n [instance]=\"fieldInstance | ajfAsFieldInstance\"\n [readonly]=\"readonly || !slideInstance.editable\"\n ></ajf-field-row>\n </div>\n </ajf-page-slider-item>\n </ng-container>\n\n <!-- repeating slides: one page per repetition -->\n <ng-container *ngIf=\"slideInstance | ajfIsRepeatingSlideInstance\">\n <ajf-page-slider-item\n *ngFor=\"\n let curRep of (slideInstance | ajfAsRepeatingSlideInstance).reps | ajfRange;\n let idx = index;\n let lastSlide = last\n \"\n [isRepeating]=\"true\"\n [isRepeatingLast]=\"lastSlide\"\n >\n <div class=\"ajf-form-page\" [ngClass]=\"'ajf-max-columns-' + maxColumns\">\n <ajf-field-row\n *ngFor=\"\n let fieldInstance of slideInstance.slideNodes[idx];\n trackBy: trackNodeById\n \"\n [instance]=\"fieldInstance | ajfAsFieldInstance\"\n [readonly]=\"readonly || !slideInstance.editable\"\n ></ajf-field-row>\n </div>\n </ajf-page-slider-item>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ajf-page-slider-item *ngIf=\"curSlides && curSlides!.length > 0 && hasEndMessage\">\n <div class=\"ajf-form-page ajf-form-message\">\n <h2 class=\"ajf-message-title\">\n <ng-content select=\"[ajfFormEndMessageTitle]\"></ng-content>\n </h2>\n <div class=\"ajf-message-body\">\n <ng-content select=\"[ajfFormEndMessage]\"></ng-content>\n </div>\n </div>\n </ajf-page-slider-item>\n\n <div ajfPageSliderBar *ngIf=\"!hideBottomToolbar\" class=\"ajf-form-footer\">\n <ng-container *ngIf=\"curSlides | ajfFormIssues as issues\">\n <!-- The count is the control: reading that something needs\n attention and asking to be taken there is one intention, so\n it is one target rather than a label with arrows beside it. -->\n <button\n type=\"button\"\n class=\"ajf-form-footer-status\"\n *ngIf=\"issues.fields > 0\"\n (click)=\"goToNextError()\"\n >\n <mat-icon>error</mat-icon>\n <span class=\"ajf-form-footer-message\"\n >{{ '{{fields}} fields in {{slides}} slides need attention' | transloco :\n {fields: issues.fields, slides: issues.slides} }}</span\n >\n </button>\n </ng-container>\n\n <!-- Pushed to the far end of the bar by its auto margin, so it sits\n next to the slider's own paging buttons rather than next to the\n error status. -->\n <ng-container\n *ngIf=\"\n curSlides | ajfCurrentSlide : currentPage : hasStartMessage : hasEndMessage as cur\n \"\n >\n <span class=\"ajf-slide-count\" *ngIf=\"cur.pages > 1 && cur.total > 0\"\n >{{ 'slide' | transloco }} {{ cur.displayNumber }} {{ 'of' | transloco }} {{\n cur.total }}</span\n >\n </ng-container>\n </div>\n </ajf-page-slider>\n </div>\n </ng-container>\n </div>\n </form>\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 {AjfCommonModule} from '@ajf/core/common';\nimport {AJF_WARNING_ALERT_SERVICE, AjfFormsModule as CoreFormsModule} from '@ajf/core/forms';\nimport {AjfTranslocoModule} from '@ajf/core/transloco';\nimport {AjfBarcodeModule} from '@ajf/material/barcode';\nimport {AjfAudioModule} from '@ajf/material/audio';\nimport {AjfCalendarModule} from '@ajf/material/calendar';\nimport {AjfCheckboxGroupModule} from '@ajf/material/checkbox-group';\nimport {AjfGeolocationModule} from '@ajf/material/geolocation';\nimport {AjfPageSliderModule} from '@ajf/material/page-slider';\nimport {AjfTimeModule} from '@ajf/material/time';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatNativeDateModule} from '@angular/material/core';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatToolbarModule} from '@angular/material/toolbar';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\nimport {AjfAudioFieldComponent} from './audio-field';\nimport {AjfBarcodeFieldComponent} from './barcode-field';\nimport {AjfBooleanFieldComponent} from './boolean-field';\nimport {AjfDateFieldComponent} from './date-field';\nimport {AjfDateInputFieldComponent} from './date-input-field';\nimport {AjfEmptyFieldComponent} from './empty-field';\nimport {AjfCurrentSlidePipe} from './current-slide';\nimport {AjfFormField} from './field';\nimport {AjfFieldRow} from './field-row';\nimport {AjfFieldService} from './field-service';\nimport {AjfFieldWarningDialog} from './field-warning-dialog';\nimport {AjfFormRenderer} from './form';\nimport {AjfGeolocationFieldComponent} from './geolocation-field';\nimport {AjfInputFieldComponent} from './input-field';\nimport {AjfMultipleChoiceFieldComponent} from './multiple-choice-field';\nimport {AjfRangeFieldComponent} from './range-field';\nimport {AjfRepStrip} from './rep-strip';\nimport {AjfSignatureFieldComponent} from './signature-field';\nimport {AjfSingleChoiceFieldComponent} from './single-choice-field';\nimport {AjfSlideHeader} from './slide-header';\nimport {AjfFormIssuesPipe, AjfSlideCompletionPipe, AjfSlideIssuesPipe} from './slide-stats';\nimport {AjfTableFieldComponent} from './table-field';\nimport {AjfTextFieldComponent} from './text-field';\nimport {AjfTimeFieldComponent} from './time-field';\nimport {AjfVideoUrlFieldComponent} from './video-url-field';\nimport {AjfWarningAlertService} from './warning-alert-service';\nimport {NgxMatSelectSearchModule} from 'ngx-mat-select-search';\nimport {AjfSignatureModule} from '@ajf/material/signature';\nimport {QuillModule} from 'ngx-quill';\nimport {AjfDisplayFieldComponent} from './display-field';\n\n@NgModule({\n imports: [\n AjfAudioModule,\n AjfBarcodeModule,\n AjfCalendarModule,\n AjfCommonModule,\n AjfCheckboxGroupModule,\n AjfGeolocationModule,\n AjfPageSliderModule,\n AjfSignatureModule,\n AjfTimeModule,\n AjfTranslocoModule,\n CommonModule,\n CoreFormsModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatDatepickerModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatMenuModule,\n MatNativeDateModule,\n MatRadioModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatToolbarModule,\n MatTooltipModule,\n ReactiveFormsModule,\n TextFieldModule,\n MatSliderModule,\n NgxMatSelectSearchModule,\n QuillModule.forRoot(),\n ],\n declarations: [\n AjfAudioFieldComponent,\n AjfCurrentSlidePipe,\n AjfBarcodeFieldComponent,\n AjfBooleanFieldComponent,\n AjfDateFieldComponent,\n AjfDateInputFieldComponent,\n AjfEmptyFieldComponent,\n AjfFieldRow,\n AjfFieldWarningDialog,\n AjfFormField,\n AjfFormIssuesPipe,\n AjfFormRenderer,\n AjfGeolocationFieldComponent,\n AjfInputFieldComponent,\n AjfMultipleChoiceFieldComponent,\n AjfRangeFieldComponent,\n AjfRepStrip,\n AjfSignatureFieldComponent,\n AjfSingleChoiceFieldComponent,\n AjfSlideCompletionPipe,\n AjfSlideHeader,\n AjfSlideIssuesPipe,\n AjfTableFieldComponent,\n AjfTextFieldComponent,\n AjfTimeFieldComponent,\n AjfVideoUrlFieldComponent,\n AjfDisplayFieldComponent,\n ],\n exports: [AjfFieldRow, AjfFormField, AjfFormRenderer, AjfRepStrip, AjfSlideHeader],\n providers: [\n AjfFieldService,\n {provide: AJF_WARNING_ALERT_SERVICE, useClass: AjfWarningAlertService},\n ],\n})\nexport class AjfFormsModule {\n static forRoot(): ModuleWithProviders<AjfFormsModule> {\n return {\n ngModule: AjfFormsModule,\n providers: [AjfFieldService],\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\nexport * from './boolean-field';\nexport * from './current-slide';\nexport * from './date-field';\nexport * from './date-input-field';\nexport * from './empty-field';\nexport * from './field';\nexport * from './field-row';\nexport * from './field-service';\nexport * from './field-warning-dialog';\nexport * from './input-field';\nexport * from './form';\nexport * from './forms-module';\nexport * from './multiple-choice-field';\nexport * from './rep-strip';\nexport * from './single-choice-field';\nexport * from './slide-header';\nexport * from './slide-stats';\nexport * from './table-field';\nexport * from './time-field';\nexport * from './warning-alert-service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4","i5","i6","CoreComponent","AjfInputFieldComponent","maxChoicesInDom","i8","i10","i7","CoreTableFieldComponent","CoreService","CoreFormField","i1.AjfFieldService","i4.AjfFormField","CoreFormRenderer","i7.AjfFieldRow","i8.AjfRepStrip","i9.AjfSlideHeader","i11.AjfCurrentSlidePipe","i12.AjfFormIssuesPipe","CoreFormsModule"],"mappings":"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"}
|