@igo2/common 21.0.0-next.41 → 21.0.0-next.43
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, viewChild, ChangeDetectionStrategy, Component, NgModule, Injectable, inject, signal, ChangeDetectorRef, computed } from '@angular/core';
|
|
2
|
+
import { input, output, viewChild, ChangeDetectionStrategy, Component, NgModule, Injectable, inject, signal, ChangeDetectorRef, computed, effect } from '@angular/core';
|
|
3
3
|
import * as i3 from '@angular/forms';
|
|
4
4
|
import { FormsModule, ReactiveFormsModule, NgForm, FormGroupDirective, FormGroup, FormControl, UntypedFormBuilder, Validators } from '@angular/forms';
|
|
5
5
|
import { t } from 'typy';
|
|
@@ -1398,12 +1398,45 @@ class FormStepperDialogComponent {
|
|
|
1398
1398
|
dialogRef = inject(MatDialogRef);
|
|
1399
1399
|
data = inject(MAT_DIALOG_DATA);
|
|
1400
1400
|
initialData;
|
|
1401
|
+
appliedPanelClasses = [];
|
|
1401
1402
|
constructor() {
|
|
1402
1403
|
if (!this.data.steps?.length) {
|
|
1403
1404
|
throw new Error('Form stepper dialog requires at least one step.');
|
|
1404
1405
|
}
|
|
1405
1406
|
this.data.title = this.data.title ?? DEFAULT_FORM_STEPPER_DIALOG_TITLE;
|
|
1406
1407
|
this.initialData = { ...(this.data.data$?.value ?? {}) };
|
|
1408
|
+
effect(() => {
|
|
1409
|
+
const stepper = this.formStepper();
|
|
1410
|
+
const activeStep = stepper ? this.tryGetActiveStep(stepper) : undefined;
|
|
1411
|
+
const width = activeStep?.dialogWidth ?? this.data.width;
|
|
1412
|
+
const height = activeStep?.dialogHeight ?? this.data.height;
|
|
1413
|
+
if (width || height) {
|
|
1414
|
+
this.dialogRef.updateSize(width, height);
|
|
1415
|
+
}
|
|
1416
|
+
this.applyPanelClasses(activeStep?.dialogPanelClass);
|
|
1417
|
+
});
|
|
1418
|
+
}
|
|
1419
|
+
tryGetActiveStep(stepper) {
|
|
1420
|
+
try {
|
|
1421
|
+
return stepper.activeStep();
|
|
1422
|
+
}
|
|
1423
|
+
catch {
|
|
1424
|
+
return undefined;
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
applyPanelClasses(panelClasses) {
|
|
1428
|
+
const nextClasses = panelClasses
|
|
1429
|
+
? Array.isArray(panelClasses)
|
|
1430
|
+
? panelClasses
|
|
1431
|
+
: [panelClasses]
|
|
1432
|
+
: [];
|
|
1433
|
+
if (this.appliedPanelClasses.length) {
|
|
1434
|
+
this.dialogRef.removePanelClass(this.appliedPanelClasses);
|
|
1435
|
+
}
|
|
1436
|
+
if (nextClasses.length) {
|
|
1437
|
+
this.dialogRef.addPanelClass(nextClasses);
|
|
1438
|
+
}
|
|
1439
|
+
this.appliedPanelClasses = nextClasses;
|
|
1407
1440
|
}
|
|
1408
1441
|
onDataChange(data) {
|
|
1409
1442
|
this.data.data$?.next(data);
|
|
@@ -1439,16 +1472,19 @@ class FormDialogService {
|
|
|
1439
1472
|
return dialogRef.afterClosed();
|
|
1440
1473
|
}
|
|
1441
1474
|
openStepper(formDialogStepperConfig, options) {
|
|
1475
|
+
const resolvedOptions = {
|
|
1476
|
+
width: 'min(92vw, 44rem)',
|
|
1477
|
+
maxWidth: '95vw',
|
|
1478
|
+
...options
|
|
1479
|
+
};
|
|
1442
1480
|
const data = {
|
|
1443
1481
|
steps: formDialogStepperConfig.steps,
|
|
1444
|
-
...
|
|
1482
|
+
...resolvedOptions
|
|
1445
1483
|
};
|
|
1446
1484
|
const dialogRef = this.dialog.open(FormStepperDialogComponent, {
|
|
1447
1485
|
disableClose: false,
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
data,
|
|
1451
|
-
...options
|
|
1486
|
+
...resolvedOptions,
|
|
1487
|
+
data
|
|
1452
1488
|
});
|
|
1453
1489
|
return dialogRef.afterClosed();
|
|
1454
1490
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-common-form.mjs","sources":["../../../packages/common/form/src/shared/form.utils.ts","../../../packages/common/form/src/form/form.component.ts","../../../packages/common/form/src/form/form.component.html","../../../packages/common/form/src/form/form.module.ts","../../../packages/common/form/src/shared/form-field.service.ts","../../../packages/common/form/src/shared/form-field-component.ts","../../../packages/common/form/src/form-field/form-field-checkbox.component.ts","../../../packages/common/form/src/form-field/form-field-checkbox.component.html","../../../packages/common/form/src/form-field/form-field-datetime.component.ts","../../../packages/common/form/src/form-field/form-field-datetime.component.html","../../../packages/common/form/src/form-field/form-field-number.component.ts","../../../packages/common/form/src/form-field/form-field-number.component.html","../../../packages/common/form/src/form-field/form-field-radiobutton.component.ts","../../../packages/common/form/src/form-field/form-field-radiobutton.component.html","../../../packages/common/form/src/form-field/form-field-select.component.ts","../../../packages/common/form/src/form-field/form-field-select.component.html","../../../packages/common/form/src/form-field/form-field-text.component.ts","../../../packages/common/form/src/form-field/form-field-text.component.html","../../../packages/common/form/src/form-field/form-field-textarea.component.ts","../../../packages/common/form/src/form-field/form-field-textarea.component.html","../../../packages/common/form/src/shared/form.service.ts","../../../packages/common/form/src/form-field/form-field.component.ts","../../../packages/common/form/src/form-field/form-field.component.html","../../../packages/common/form/src/form-field/form-field.directive.ts","../../../packages/common/form/src/form-field/form-field.module.ts","../../../packages/common/form/src/form-group/form-group.component.ts","../../../packages/common/form/src/form-group/form-group.component.html","../../../packages/common/form/src/form-group/form-group.module.ts","../../../packages/common/form/src/form.module.ts","../../../packages/common/form/src/form-stepper/form-stepper.utils.ts","../../../packages/common/form/src/form-stepper/form-stepper.component.ts","../../../packages/common/form/src/form-stepper/form-stepper.component.html","../../../packages/common/form/src/form-dialog/form-dialog.component.ts","../../../packages/common/form/src/form-dialog/form-dialog.component.html","../../../packages/common/form/src/form-dialog/form-stepper-dialog.component.ts","../../../packages/common/form/src/form-dialog/form-stepper-dialog.component.html","../../../packages/common/form/src/form-dialog/form-dialog.service.ts","../../../packages/common/form/src/form-dialog/form-dialog.module.ts","../../../packages/common/form/src/igo2-common-form.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\n\nimport {\n Form,\n FormField,\n FormFieldGroup,\n FormFieldInputs,\n FormService\n} from '.';\nimport { FormStepperFormConfig } from '../form-stepper/form-stepper.interface';\n\nexport function buildFormFromConfig(\n formService: FormService,\n formConfig?: FormStepperFormConfig\n): Form {\n const fields: FormField<FormFieldInputs>[] = [];\n const groups: FormFieldGroup[] = [];\n\n formConfig?.formFieldConfigs?.forEach((config) => {\n fields.push(formService.field(config));\n });\n\n formConfig?.formGroupsConfigs?.forEach((formGroupsConfig) => {\n const groupFields = formGroupsConfig.formFieldConfigs?.map((config) =>\n formService.field(config)\n );\n\n groups.push(\n formService.group({ name: formGroupsConfig.name }, groupFields)\n );\n });\n\n return formService.form(fields, groups);\n}\n\nexport function markFormAsTouched(form: Form): void {\n if (form.groups?.length) {\n form.groups.forEach((group) => {\n Object.keys(group.control.controls).forEach((key) => {\n group.control.controls[key].markAsTouched();\n group.control.controls[key].updateValueAndValidity();\n });\n });\n return;\n }\n\n form.fields.forEach((field) => {\n field.control.markAsTouched();\n field.control.updateValueAndValidity();\n });\n}\n\nexport function formControlIsRequired(control: AbstractControl): boolean {\n if (control.validator) {\n const validator = control.validator({} as AbstractControl);\n if (validator && validator.required) {\n return true;\n }\n }\n\n if ((control as any).controls) {\n const requiredControl = Object.keys((control as any).controls).find(\n (key: string) => {\n return formControlIsRequired((control as any).controls[key]);\n }\n );\n return requiredControl !== undefined;\n }\n\n return false;\n}\n\nexport function getDefaultErrorMessages(): Record<string, string> {\n return {\n required: 'igo.common.form.errors.required',\n email: 'igo.common.form.errors.email'\n };\n}\n\nexport function getControlErrorMessage(\n control: AbstractControl,\n messages: Record<string, string>\n): string {\n const errors = control.errors || {};\n const errorKeys = Object.keys(errors);\n const errorMessages = errorKeys\n .map((key: string) => messages[key])\n .filter((message: string) => message !== undefined);\n return errorMessages.length > 0 ? errorMessages[0] : '';\n}\n\nexport function getAllFormFields(form: Form): FormField[] {\n const fields = form.fields ? [...form.fields] : [];\n return form.groups.reduce((acc, group) => acc.concat(group.fields), fields);\n}\n\nexport function getFormFieldByName(\n form: Form,\n name: string\n): FormField | undefined {\n const fields = getAllFormFields(form);\n return fields.find((field: FormField) => {\n return field.name === name;\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnChanges,\n SimpleChanges,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { t } from 'typy';\n\nimport { Form, FormField } from '../shared/form.interfaces';\nimport { getAllFormFields } from '../shared/form.utils';\n\n/**\n * A configurable form\n */\n@Component({\n selector: 'igo-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule]\n})\nexport class FormComponent implements OnChanges {\n /**\n * Form\n */\n readonly form = input.required<Form>();\n\n /**\n * Input data\n */\n readonly formData = input<Record<string, unknown>>();\n\n /**\n * Form autocomplete\n */\n readonly autocomplete = input('off');\n\n /**\n * Event emitted when the form is submitted\n */\n readonly submitForm = output<Record<string, unknown>>();\n\n readonly buttons = viewChild<ElementRef>('buttons');\n\n get hasButtons(): boolean {\n return (this.buttons()?.nativeElement.children.length ?? 0) !== 0;\n }\n\n /**\n * Is the entity or the template change, recreate the form or repopulate it.\n * @internal\n */\n ngOnChanges(changes: SimpleChanges) {\n const formData = changes.formData;\n if (formData.firstChange && formData.currentValue == null) {\n return;\n }\n\n if (formData && formData.currentValue !== formData.previousValue) {\n if (formData.currentValue === undefined) {\n this.clear();\n } else {\n this.setData(formData.currentValue);\n }\n }\n }\n\n /**\n * Transform the form data to a feature and emit an event\n * @param event Form submit event\n * @internal\n */\n onSubmit() {\n this.submitForm.emit(this.getData());\n }\n\n getData(): Record<string, unknown> {\n const data = {};\n getAllFormFields(this.form()!).forEach((field: FormField) => {\n this.updateDataWithFormField(data, field);\n });\n return data;\n }\n\n private setData(data: Record<string, unknown>) {\n this.form().fields.forEach((field) => {\n field.control.setValue(t(data, field.name).safeObject);\n });\n\n this.form().groups.forEach((group) => {\n group.fields.forEach((field) => {\n field.control.setValue(t(data, field.name).safeObject);\n });\n });\n }\n\n private updateDataWithFormField(\n data: Record<string, unknown>,\n field: FormField\n ) {\n const control = field.control;\n if (!control.disabled) {\n data[field.name] = control.value;\n }\n }\n\n /**\n * Clear form\n */\n private clear() {\n this.form()?.control.reset();\n }\n}\n","<form\n [autocomplete]=\"autocomplete()\"\n [formGroup]=\"form().control\"\n (ngSubmit)=\"onSubmit()\"\n>\n <div class=\"igo-form-body\" [class.igo-form-body-with-buttons]=\"hasButtons\">\n <div class=\"igo-form-content\">\n <ng-content />\n </div>\n <div #buttons class=\"igo-form-buttons\">\n <ng-content select=\"[formButtons]\" />\n </div>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\n\nimport { FormComponent } from './form.component';\n\n/**\n * @deprecated import the FormComponent directly\n */\n@NgModule({\n imports: [FormComponent],\n exports: [FormComponent]\n})\nexport class IgoFormFormModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Service where all available form fields are registered.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class FormFieldService {\n static fields: Record<string, any> = {};\n\n static register(type: string, component: any) {\n FormFieldService.fields[type] = component;\n }\n\n /**\n * Return field component by type\n * @param type Field type\n * @returns Field component\n */\n getFieldByType(type: string): any {\n return FormFieldService.fields[type];\n }\n}\n","import { FormFieldService } from './form-field.service';\n\nexport function IgoFormFieldComponent(type: string): (cls: any) => any {\n return (compType: any) => {\n FormFieldService.register(type, compType);\n };\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n inject,\n input,\n signal\n} from '@angular/core';\nimport {\n FormGroupDirective,\n NgForm,\n ReactiveFormsModule,\n ValidatorFn\n} from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport {\n MatCheckboxChange,\n MatCheckboxModule\n} from '@angular/material/checkbox';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport type { FormFieldCheckboxInputs } from '../shared/form.interfaces';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n@IgoFormFieldComponent('checkbox')\n@Component({\n selector: 'igo-form-field-checkbox',\n templateUrl: './form-field-checkbox.component.html',\n styleUrl: './form-field-choice.component.scss',\n imports: [\n ReactiveFormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldCheckboxComponent implements OnInit, OnDestroy {\n private errorStateMatcher = inject(ErrorStateMatcher);\n private parentForm = inject(NgForm, { optional: true });\n private parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n readonly disabled = signal(false);\n private readonly showErrorState = signal(false);\n private selectedValues = signal<unknown[]>([]);\n private destroy$ = new Subject<void>();\n\n readonly choices = input.required<FormFieldCheckboxInputs['choices']>();\n\n readonly formControl = input.required<UntypedFormControl>();\n\n readonly showLabel = input<boolean>(false);\n\n readonly placeholder = input<string>();\n\n readonly errors = input<Record<string, string>>();\n\n readonly maxSelected = input<number | undefined>();\n\n readonly disableSwitch = input(false);\n\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n const control = this.formControl();\n const maxSelected = this.maxSelected();\n\n if (typeof maxSelected === 'number' && Number.isFinite(maxSelected)) {\n control.addValidators(this.maxSelectedValidator(maxSelected));\n }\n\n const normalizedValue = this.normalizeValue(control.value);\n control.setValue(normalizedValue, {\n emitEvent: false\n });\n control.updateValueAndValidity({ emitEvent: false });\n this.syncState(control);\n\n control.events.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.syncState(control);\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n getErrorMessage(): string {\n const maxSelectedError = this.formControl().errors?.['maxSelected'] as\n { max: number; actual: number } | undefined;\n\n if (maxSelectedError) {\n return (\n this.errors()?.['maxSelected'] ||\n `Select at most ${maxSelectedError.max} options.`\n );\n }\n\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n showError(): boolean {\n return this.showErrorState();\n }\n\n isChecked(value: unknown): boolean {\n return this.selectedValues().some(\n (selectedValue) => selectedValue === value\n );\n }\n\n onChoiceChange(value: unknown, event: MatCheckboxChange) {\n const selectedValues = this.selectedValues();\n const nextValues = event.checked\n ? selectedValues.some((selectedValue) => selectedValue === value)\n ? selectedValues\n : [...selectedValues, value]\n : selectedValues.filter((selectedValue) => selectedValue !== value);\n\n this.formControl().setValue(nextValues);\n this.formControl().markAsDirty();\n this.formControl().markAsTouched();\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private normalizeValue(value: unknown): unknown[] {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (value === undefined || value === null || value === '') {\n return [];\n }\n\n return [value];\n }\n\n private syncState(control: UntypedFormControl) {\n this.disabled.set(control.disabled);\n this.selectedValues.set(this.normalizeValue(control.value));\n this.showErrorState.set(\n this.errorStateMatcher.isErrorState(\n control,\n this.parentFormGroup ?? this.parentForm\n )\n );\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n\n private maxSelectedValidator(maxSelected: number): ValidatorFn {\n return (control) => {\n const selectedValues = this.normalizeValue(control.value);\n\n if (selectedValues.length <= maxSelected) {\n return null;\n }\n\n return {\n maxSelected: {\n max: maxSelected,\n actual: selectedValues.length\n }\n };\n };\n }\n}\n","<div class=\"igo-form-field-choice-list\">\n @if (placeholder()) {\n <div class=\"igo-form-field-choice-label\">\n {{ placeholder() | translate }}\n </div>\n }\n\n <div class=\"igo-form-field-choice-options\">\n @for (choice of choices(); track choice.value) {\n <mat-checkbox\n [checked]=\"isChecked(choice.value)\"\n [disabled]=\"disabled()\"\n [required]=\"required\"\n (change)=\"onChoiceChange(choice.value, $event)\"\n >\n {{ choice.title }}\n </mat-checkbox>\n }\n </div>\n\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n [attr.aria-label]=\"'Toggle field availability'\"\n />\n }\n\n <mat-error [hidden]=\"!showError()\">\n {{ getErrorMessage() | translate }}\n </mat-error>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTimepickerModule } from '@angular/material/timepicker';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n@IgoFormFieldComponent('datetime')\n@Component({\n selector: 'igo-form-field-datetime',\n templateUrl: './form-field-datetime.component.html',\n styleUrl: './form-field-datetime.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatTimepickerModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n MatIconModule,\n MatButtonModule,\n IgoLanguageModule\n ],\n providers: [provideNativeDateAdapter()]\n})\nexport class FormFieldDatetimeComponent implements OnInit, OnDestroy {\n readonly disabled = signal(false);\n\n readonly dateTimeGroup = new FormGroup({\n date: new FormControl<Date | null>(null),\n time: new FormControl<Date | null>(null)\n });\n\n get dateControl(): FormControl<Date | null> {\n return this.dateTimeGroup.controls.date;\n }\n\n get timeControl(): FormControl<Date | null> {\n return this.dateTimeGroup.controls.time;\n }\n\n private destroy$ = new Subject<void>();\n private syncingExternalToInternal = false;\n private syncingInternalToExternal = false;\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder used for date input\n */\n readonly placeholder = input<string>();\n\n /**\n * Placeholder used for time input\n */\n readonly timePlaceholder = input<string>();\n\n /**\n * Minimum selectable date\n */\n readonly minDate = input<Date>();\n\n /**\n * Maximum selectable date\n */\n readonly maxDate = input<Date>();\n\n /**\n * Minimum selectable time\n */\n readonly minTime = input<Date | string | null>(null);\n\n /**\n * Maximum selectable time\n */\n readonly maxTime = input<Date | string | null>(null);\n\n /**\n * Optional explicit options rendered in the timepicker panel.\n */\n readonly options = input<readonly { value: Date; label: string }[] | null>(\n null\n );\n\n /**\n * Time option interval for the panel.\n */\n readonly interval = input<number | string | null>(null);\n\n /**\n * Whether clicking the input should open the timepicker.\n */\n readonly openOnClick = input<boolean>(true);\n\n /**\n * Whether a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Error messages mapping\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit(): void {\n this.disabled.set(this.formControl().disabled);\n\n this.syncInternalFromExternal(this.formControl().value);\n\n this.formControl()\n .valueChanges.pipe(takeUntil(this.destroy$))\n .subscribe((value) => {\n if (this.syncingInternalToExternal) {\n return;\n }\n\n this.syncInternalFromExternal(value);\n });\n\n this.formControl()\n .statusChanges.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const isDisabled = this.formControl().disabled;\n this.disabled.set(isDisabled);\n\n if (isDisabled) {\n this.dateTimeGroup.disable({ emitEvent: false });\n } else {\n this.dateTimeGroup.enable({ emitEvent: false });\n this.updateTimeControlState();\n }\n });\n\n this.dateTimeGroup.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateTimeControlState();\n this.pushInternalToExternal();\n });\n\n if (this.formControl().disabled) {\n this.dateTimeGroup.disable({ emitEvent: false });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n clearDate(): void {\n this.dateControl.setValue(null);\n }\n\n clearTime(): void {\n this.timeControl.setValue(null);\n }\n\n onDisableSwitchClick() {\n const disabled = !this.disabled();\n if (disabled) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n\n private syncInternalFromExternal(value: unknown): void {\n const externalDate = this.toDateValue(value);\n\n this.syncingExternalToInternal = true;\n this.dateTimeGroup.patchValue(\n {\n date: externalDate ? new Date(externalDate) : null,\n time: externalDate ? new Date(externalDate) : null\n },\n { emitEvent: false }\n );\n this.syncingExternalToInternal = false;\n\n this.updateTimeControlState();\n }\n\n private pushInternalToExternal(): void {\n if (this.syncingExternalToInternal) {\n return;\n }\n\n const { date: datePart, time: timeValue } =\n this.dateTimeGroup.getRawValue();\n if (!datePart) {\n if (this.formControl().value !== null) {\n this.syncingInternalToExternal = true;\n this.formControl().setValue(null);\n this.syncingInternalToExternal = false;\n }\n return;\n }\n\n const sourceTime = timeValue;\n\n const next = new Date(datePart);\n next.setHours(\n sourceTime?.getHours() ?? 0,\n sourceTime?.getMinutes() ?? 0,\n sourceTime?.getSeconds() ?? 0,\n 0\n );\n\n this.syncingInternalToExternal = true;\n this.formControl().setValue(next);\n this.syncingInternalToExternal = false;\n }\n\n private updateTimeControlState(): void {\n const hasDate = !!this.dateControl.value;\n if (!hasDate && this.timeControl.enabled) {\n this.timeControl.disable({ emitEvent: false });\n } else if (hasDate && this.timeControl.disabled && !this.disabled()) {\n this.timeControl.enable({ emitEvent: false });\n }\n }\n\n private toDateValue(value: unknown): Date | null {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n\n if (typeof value === 'number' && Number.isFinite(value)) {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n if (typeof value === 'string' && value.trim().length > 0) {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n return null;\n }\n}\n","<div class=\"igo-form-field-datetime-row\">\n <mat-form-field class=\"igo-form-field-datetime-part\">\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n\n <input\n matInput\n readonly=\"true\"\n [matDatepicker]=\"datePicker\"\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"dateControl\"\n [min]=\"minDate() ?? null\"\n [max]=\"maxDate() ?? null\"\n />\n @if (dateControl.value && !disabled()) {\n <button matIconSuffix mat-icon-button type=\"button\" (click)=\"clearDate()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n <mat-datepicker-toggle matIconSuffix [for]=\"datePicker\" />\n <mat-datepicker #datePicker />\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field class=\"igo-form-field-datetime-part\">\n <mat-label>{{ timePlaceholder() | translate }}</mat-label>\n\n <input\n matInput\n readonly=\"true\"\n [matTimepicker]=\"timePicker\"\n [required]=\"required\"\n [placeholder]=\"timePlaceholder() | translate\"\n [formControl]=\"timeControl\"\n [matTimepickerMin]=\"minTime()\"\n [matTimepickerMax]=\"maxTime()\"\n [matTimepickerOpenOnClick]=\"openOnClick()\"\n />\n\n @if (timeControl.value && !disabled() && !timeControl.disabled) {\n <button\n matIconSuffix\n mat-icon-button\n type=\"button\"\n (click)=\"$event.stopPropagation(); clearTime()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <mat-timepicker-toggle matIconSuffix [for]=\"timePicker\" />\n <mat-timepicker #timePicker [interval]=\"interval()\" [options]=\"options()\" />\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n </mat-form-field>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a number field\n */\n@IgoFormFieldComponent('number')\n@Component({\n selector: 'igo-form-field-number',\n templateUrl: './form-field-number.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n MatButtonModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldNumberComponent implements OnInit {\n readonly disabled = signal(false);\n hide = true;\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <input\n matInput\n type=\"number\"\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n />\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import {\n Component,\n OnDestroy,\n OnInit,\n inject,\n input,\n signal\n} from '@angular/core';\nimport {\n FormGroupDirective,\n NgForm,\n ReactiveFormsModule\n} from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport type { FormFieldRadiobuttonInputs } from '../shared/form.interfaces';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n@IgoFormFieldComponent('radiobuttons')\n@IgoFormFieldComponent('radiobutton')\n@Component({\n selector: 'igo-form-field-radiobutton',\n templateUrl: './form-field-radiobutton.component.html',\n styleUrl: './form-field-choice.component.scss',\n imports: [\n ReactiveFormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatRadioModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldRadiobuttonComponent implements OnInit, OnDestroy {\n private errorStateMatcher = inject(ErrorStateMatcher);\n private parentForm = inject(NgForm, { optional: true });\n private parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n readonly disabled = signal(false);\n private readonly showErrorState = signal(false);\n private destroy$ = new Subject<void>();\n\n readonly choices = input.required<FormFieldRadiobuttonInputs['choices']>();\n\n readonly formControl = input.required<UntypedFormControl>();\n\n readonly showLabel = input<boolean>(false);\n\n readonly placeholder = input<string>();\n\n readonly errors = input<Record<string, string>>();\n\n readonly disableSwitch = input(false);\n\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n const control = this.formControl();\n\n this.syncState(control);\n control.events.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.syncState(control);\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n showError(): boolean {\n return this.showErrorState();\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private syncState(control: UntypedFormControl) {\n this.disabled.set(control.disabled);\n this.showErrorState.set(\n this.errorStateMatcher.isErrorState(\n control,\n this.parentFormGroup ?? this.parentForm\n )\n );\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<div class=\"igo-form-field-choice-list\">\n @if (placeholder()) {\n <div class=\"igo-form-field-choice-label\">\n {{ placeholder() | translate }}\n </div>\n }\n\n <mat-radio-group\n class=\"igo-form-field-choice-options\"\n [formControl]=\"formControl()\"\n [required]=\"required\"\n >\n @for (choice of choices(); track choice.value) {\n <mat-radio-button [value]=\"choice.value\" [disabled]=\"disabled()\">\n {{ choice.title }}\n </mat-radio-button>\n }\n </mat-radio-group>\n\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n [attr.aria-label]=\"'Toggle field availability'\"\n />\n }\n\n <mat-error [hidden]=\"!showError()\">\n {{ getErrorMessage() | translate }}\n </mat-error>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport { FormFieldSelectChoice } from '../shared/form.interfaces';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a select field\n */\n@IgoFormFieldComponent('select')\n@Component({\n selector: 'igo-form-field-select',\n templateUrl: './form-field-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n ReactiveFormsModule,\n MatOptionModule,\n MatCheckboxModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldSelectComponent implements OnInit {\n readonly disabled = signal(false);\n\n /**\n * Select input choices\n */\n readonly choices = input.required<FormFieldSelectChoice[]>();\n\n /**\n * If the select allow multiple selections\n */\n readonly multiple = input(false);\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <mat-select\n [multiple]=\"multiple()\"\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n >\n @for (choice of choices(); track choice) {\n <mat-option [value]=\"choice.value\">\n {{ choice.title }}\n </mat-option>\n }\n </mat-select>\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a text field\n */\n@IgoFormFieldComponent('text')\n@Component({\n selector: 'igo-form-field-text',\n templateUrl: './form-field-text.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatIconModule,\n MatCheckboxModule,\n MatButtonModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextComponent implements OnInit {\n private cdRef = inject(ChangeDetectorRef);\n\n readonly disabled = signal(false);\n hide = true;\n private lastTimeoutRequest?: number;\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * if the input is a password\n */\n readonly isPassword = input<boolean>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n\n togglePassword() {\n this.hide = !this.hide;\n this.delayedHide();\n }\n delayedHide(delayMS = 10000) {\n if (this.isPassword() && !this.hide) {\n if (this.lastTimeoutRequest) {\n clearTimeout(this.lastTimeoutRequest);\n }\n this.lastTimeoutRequest = window.setTimeout(() => {\n this.hide = true;\n this.cdRef.detectChanges();\n }, delayMS);\n }\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <input\n matInput\n (blur)=\"delayedHide(0)\"\n [type]=\"isPassword() ? (hide ? 'password' : 'text') : 'text'\"\n [required]=\"isPassword() ? 'true' : required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n (change)=\"delayedHide()\"\n />\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n\n @if (isPassword()) {\n <button type=\"button\" matSuffix mat-icon-button (click)=\"togglePassword()\">\n <mat-icon color=\"primary\">{{\n hide ? 'visibility_off' : 'visibility'\n }}</mat-icon>\n </button>\n }\n\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a textarea field\n */\n@IgoFormFieldComponent('textarea')\n@Component({\n selector: 'igo-form-field-textarea',\n templateUrl: './form-field-textarea.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextareaComponent implements OnInit {\n readonly disabled = signal(false);\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <textarea\n matInput\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n >\n </textarea>\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import { Injectable, inject } from '@angular/core';\nimport {\n FormControlState,\n UntypedFormBuilder,\n ValidatorFn,\n Validators\n} from '@angular/forms';\n\nimport {\n Form,\n FormField,\n FormFieldConfig,\n FormFieldGroup,\n FormFieldGroupConfig\n} from './form.interfaces';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormService {\n private formBuilder = inject(UntypedFormBuilder);\n\n form(fields: FormField[], groups: FormFieldGroup[]): Form {\n const control = this.formBuilder.group({});\n fields.forEach((field: FormField) => {\n control.addControl(field.name, field.control);\n });\n groups.forEach((group: FormFieldGroup) => {\n control.addControl(group.name, group.control);\n });\n\n return { fields, groups, control };\n }\n\n group(config: FormFieldGroupConfig, fields: FormField[]): FormFieldGroup {\n const options = config.options || {};\n const control = this.formBuilder.group({});\n fields.forEach((field: FormField) => {\n control.addControl(field.name, field.control);\n });\n\n if (options.validator) {\n const validators = this.getValidators(options.validator); // convert string to actual validator\n control.setValidators(validators);\n }\n\n return Object.assign({}, config, { fields, control }) as FormFieldGroup;\n }\n\n field(config: FormFieldConfig): FormField {\n const options = config.options || {};\n const state: FormControlState<unknown> = {\n value: options.initialValue ?? '',\n disabled: options.disabled || false\n };\n const control = this.formBuilder.control(state);\n\n if (options.validator) {\n const validators = this.getValidators(options.validator); // convert string to actual validator\n control.setValidators(validators);\n }\n\n return Object.assign({ type: 'text' }, config, { control }) as FormField;\n }\n\n extendFieldConfig(\n config: FormFieldConfig,\n partial: Partial<FormFieldConfig>\n ): FormFieldConfig {\n const options = Object.assign(\n {},\n config.options || {},\n partial.options || {}\n );\n const inputs = Object.assign({}, config.inputs || {}, partial.inputs || {});\n const subscribers = Object.assign(\n {},\n config.subscribers || {},\n partial.subscribers || {}\n );\n return Object.assign({}, config, { options, inputs, subscribers });\n }\n\n private getValidators(\n validatorOption: string | string[] | ValidatorFn\n ): ValidatorFn | ValidatorFn[] {\n if (Array.isArray(validatorOption)) {\n return validatorOption.map((validatorStr) => {\n return this.getValidator(validatorStr);\n });\n }\n\n return this.getValidator(validatorOption);\n }\n\n private getValidator(validatorStr: string | ValidatorFn): ValidatorFn {\n if (typeof validatorStr !== 'string') {\n return validatorStr;\n }\n\n // regex pattern to extract arguments from string for e.g applying on \"minLength(8)\" would extract 8\n const re = /^([a-zA-Z]{3,15})\\((.{0,20})\\)$/;\n const match = validatorStr.match(re);\n\n if (!match) {\n return Validators[validatorStr as keyof typeof Validators] as ValidatorFn;\n }\n\n const name = match[1];\n const args = match[2];\n return (Validators as any)[name](args);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input\n} from '@angular/core';\n\nimport { DynamicOutletComponent } from '@igo2/common/dynamic-component';\n\nimport { getDefaultErrorMessages } from '../shared';\nimport { FormFieldService } from '../shared/form-field.service';\nimport {\n FormField,\n FormFieldInputs,\n FormFieldOptions,\n FormFieldSubscribers\n} from '../shared/form.interfaces';\n\n/**\n * This component renders the proper form input based on\n * the field configuration it receives.\n */\n@Component({\n selector: 'igo-form-field',\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DynamicOutletComponent]\n})\nexport class FormFieldComponent {\n private formFieldService = inject(FormFieldService);\n\n /**\n * Field configuration\n */\n readonly field = input.required<FormField<FormFieldInputs>>();\n\n /**\n * Field inputs cache\n */\n private fieldInputs?: FormFieldInputs;\n\n /**\n * Field subscribers cache\n */\n private fieldSubscribers?: FormFieldSubscribers;\n\n get fieldOptions(): FormFieldOptions {\n return this.field().options || {};\n }\n\n getFieldComponent(): any {\n return this.formFieldService.getFieldByType(this.field().type || 'text');\n }\n\n getFieldInputs(): FormFieldInputs {\n if (this.fieldInputs !== undefined) {\n return this.fieldInputs;\n }\n\n const errors = this.fieldOptions.errors || {};\n this.fieldInputs = Object.assign(\n {\n placeholder: this.field().title,\n disableSwitch: this.fieldOptions.disableSwitch || false\n },\n Object.assign({}, this.field().inputs || {}),\n {\n formControl: this.field().control,\n errors: Object.assign({}, getDefaultErrorMessages(), errors)\n }\n );\n return this.fieldInputs;\n }\n\n getFieldSubscribers(): FormFieldSubscribers {\n if (this.fieldSubscribers !== undefined) {\n return this.fieldSubscribers;\n }\n\n this.fieldSubscribers = Object.assign({}, this.field().subscribers || {});\n return this.fieldSubscribers;\n }\n}\n","@if (field() !== undefined) {\n <igo-dynamic-outlet\n [component]=\"getFieldComponent()\"\n [inputs]=\"getFieldInputs()\"\n [subscribers]=\"getFieldSubscribers()\"\n />\n}\n","import { FormFieldCheckboxComponent } from './form-field-checkbox.component';\nimport { FormFieldDatetimeComponent } from './form-field-datetime.component';\nimport { FormFieldNumberComponent } from './form-field-number.component';\nimport { FormFieldRadiobuttonComponent } from './form-field-radiobutton.component';\nimport { FormFieldSelectComponent } from './form-field-select.component';\nimport { FormFieldTextComponent } from './form-field-text.component';\nimport { FormFieldTextareaComponent } from './form-field-textarea.component';\nimport { FormFieldComponent } from './form-field.component';\n\nexport const FORM_FIELD_DIRECTIVES = [\n FormFieldComponent,\n FormFieldCheckboxComponent,\n FormFieldDatetimeComponent,\n FormFieldNumberComponent,\n FormFieldRadiobuttonComponent,\n FormFieldSelectComponent,\n FormFieldTextComponent,\n FormFieldTextareaComponent\n] as const;\n","import { NgModule } from '@angular/core';\n\nimport { FORM_FIELD_DIRECTIVES } from './form-field.directive';\n\n/**\n * @deprecated import the components directly or FORM_FIELD_DIRECTIVES for every components/directives\n */\n@NgModule({\n imports: [...FORM_FIELD_DIRECTIVES],\n exports: [...FORM_FIELD_DIRECTIVES]\n})\nexport class IgoFormFieldModule {}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { FormField, FormFieldGroup } from '../shared/form.interfaces';\nimport { getControlErrorMessage } from '../shared/form.utils';\n\n/**\n * A configurable form, optionnally bound to an entity\n * (for example in case of un update). Submitting that form\n * emits an event with the form data but no other operation is performed.\n */\n@Component({\n selector: 'igo-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, FormFieldComponent, MatFormFieldModule, IgoLanguageModule]\n})\nexport class FormGroupComponent {\n /**\n * Form field group\n */\n readonly group = input.required<FormFieldGroup>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Form group control\n */\n get formControl(): UntypedFormGroup {\n return this.group().control;\n }\n\n /**\n * Return the number of columns a field should occupy.\n * The maximum allowed is 2, even if the field config says more.\n * @param field Field\n * @returns Number of columns\n * @internal\n */\n getFieldColSpan(field: FormField): number {\n let colSpan = 2;\n const options = field.options || {};\n if (options.cols && options.cols > 0) {\n colSpan = Math.min(options.cols, 2);\n }\n\n return colSpan;\n }\n\n /**\n * Return the number of columns a field should occupy.\n * The maximum allowed is 2, even if the field config says more.\n * @param field Field\n * @returns Number of columns\n * @internal\n */\n getFieldNgClass(field: FormField): Record<string, boolean> {\n const colspan = this.getFieldColSpan(field);\n return { [`igo-form-field-colspan-${colspan}`]: true };\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n const options = this.group().options || {};\n return getControlErrorMessage(this.formControl, options.errors || {});\n }\n}\n","@if (group() && group().fields.length > 0) {\n <div class=\"igo-form-group-fields\">\n @for (field of group().fields; track field) {\n <div class=\"igo-form-field-wrapper\" [ngClass]=\"getFieldNgClass(field)\">\n <igo-form-field [field]=\"field\" />\n </div>\n }\n </div>\n}\n\n<div class=\"igo-form-group-extra-content\">\n <ng-content />\n</div>\n\n@if (formControl.errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n}\n","import { NgModule } from '@angular/core';\n\nimport { FormGroupComponent } from './form-group.component';\n\n/**\n * @deprecated import the FormGroupComponent directly\n */\n@NgModule({\n imports: [FormGroupComponent],\n exports: [FormGroupComponent]\n})\nexport class IgoFormGroupModule {}\n","import { NgModule } from '@angular/core';\n\nimport { FormComponent } from './form';\nimport { FORM_FIELD_DIRECTIVES } from './form-field';\nimport { FormGroupComponent } from './form-group';\n\nexport const FORM_DIRECTIVES = [\n ...FORM_FIELD_DIRECTIVES,\n FormGroupComponent,\n FormComponent\n] as const;\n\n/**\n * @deprecated import the components directly or FORM_DIRECTIVES for every components/directives\n */\n@NgModule({\n imports: [...FORM_DIRECTIVES],\n exports: [...FORM_DIRECTIVES]\n})\nexport class IgoFormModule {}\n","import {\n FormStepperFormConfig,\n FormStepperLabels,\n FormStepperStepConfig,\n FormStepperStepContext\n} from './form-stepper.interface';\n\nexport const DEFAULT_FORM_STEPPER_LABELS: FormStepperLabels = {\n nextButton: 'Suivant',\n previousButton: 'Précédent',\n processButton: 'Confirmer',\n cancelButton: 'Annuler',\n stepCounter: 'Étape {{current}} de {{total}}'\n};\n\nexport function resolveFormStepperStepFormConfig(\n step: FormStepperStepConfig,\n context: FormStepperStepContext\n): FormStepperFormConfig {\n return typeof step.form === 'function' ? step.form(context) : step.form;\n}\n","import {\n Component,\n computed,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatStepperModule } from '@angular/material/stepper';\n\nimport { IgoCustomHtmlModule } from '@igo2/common/custom-html';\nimport { IgoLanguageModule, labelAttribute } from '@igo2/core/language';\n\nimport { IgoFormModule } from '../form.module';\nimport { Form, FormService } from '../shared';\nimport { buildFormFromConfig, markFormAsTouched } from '../shared/form.utils';\nimport {\n FormStepperLabels,\n FormStepperStepConfig\n} from './form-stepper.interface';\nimport {\n DEFAULT_FORM_STEPPER_LABELS,\n resolveFormStepperStepFormConfig\n} from './form-stepper.utils';\n\n@Component({\n selector: 'igo-form-stepper',\n templateUrl: './form-stepper.component.html',\n styleUrls: ['./form-stepper.component.scss'],\n imports: [\n MatStepperModule,\n IgoFormModule,\n MatButtonModule,\n IgoCustomHtmlModule,\n IgoLanguageModule\n ]\n})\nexport class FormStepperComponent {\n private readonly formService = inject(FormService);\n\n readonly steps = input.required<FormStepperStepConfig[]>();\n\n readonly initialData = input<Record<string, unknown>>({});\n\n readonly notice = input<string | undefined>();\n\n readonly labels = input<\n FormStepperLabels,\n Partial<FormStepperLabels> | undefined\n >(DEFAULT_FORM_STEPPER_LABELS, {\n transform: (value) => labelAttribute(value, DEFAULT_FORM_STEPPER_LABELS)\n });\n\n readonly showCancelButton = input(true);\n\n readonly completed = output<Record<string, unknown>>();\n\n readonly cancelled = output<void>();\n\n readonly dataChange = output<Record<string, unknown>>();\n\n readonly stepIndex = signal(0);\n\n private readonly stepResults = signal<\n Record<number, Record<string, unknown>>\n >({});\n\n readonly activeStep = computed<FormStepperStepConfig>(() => {\n const steps = this.steps();\n\n if (!steps.length) {\n throw new Error('Form stepper requires at least one step.');\n }\n\n return steps[this.stepIndex()];\n });\n\n readonly activeContextData = computed(() =>\n this.buildAggregateData(this.stepIndex() - 1)\n );\n\n readonly activeFormData = computed(() =>\n this.buildAggregateData(this.stepIndex())\n );\n\n readonly activeForm = computed<Form>(() =>\n buildFormFromConfig(\n this.formService,\n resolveFormStepperStepFormConfig(this.activeStep(), {\n data: this.activeContextData(),\n stepIndex: this.stepIndex(),\n steps: this.steps()\n })\n )\n );\n\n readonly activeNotice = computed(\n () => this.activeStep().notice ?? this.notice()\n );\n\n readonly stepCount = computed(() => this.steps().length);\n\n readonly stepNumber = computed(() => this.stepIndex() + 1);\n\n readonly resolvedLabels = computed<FormStepperLabels>(\n () =>\n labelAttribute(\n this.labels(),\n DEFAULT_FORM_STEPPER_LABELS\n ) as FormStepperLabels\n );\n\n readonly stepCounterLabel = computed(() =>\n this.resolvedLabels()\n .stepCounter.replace('{{current}}', String(this.stepNumber()))\n .replace('{{total}}', String(this.stepCount()))\n );\n\n readonly progressWidth = computed(\n () => `${(this.stepNumber() / this.stepCount()) * 100}%`\n );\n\n readonly maxNavigableStepIndex = computed(() => {\n const completedStepIndexes = Object.keys(this.stepResults())\n .map((index) => Number(index))\n .filter((index) => !Number.isNaN(index));\n\n if (!completedStepIndexes.length) {\n return 0;\n }\n\n return Math.min(\n Math.max(...completedStepIndexes) + 1,\n this.steps().length - 1\n );\n });\n\n readonly isLastStep = computed(\n () => this.stepIndex() === this.steps().length - 1\n );\n\n onSubmitStep(stepData: Record<string, unknown>): void {\n const form = this.activeForm();\n\n if (!form.control.valid) {\n markFormAsTouched(form);\n return;\n }\n\n const currentStepIndex = this.stepIndex();\n const nextStepResults = {\n ...this.stepResults(),\n [currentStepIndex]: stepData\n };\n\n Object.keys(nextStepResults)\n .map((index) => Number(index))\n .filter((index) => index > currentStepIndex)\n .forEach((index) => {\n delete nextStepResults[index];\n });\n\n this.stepResults.set(nextStepResults);\n\n const aggregateData = this.buildAggregateDataFrom(\n nextStepResults,\n currentStepIndex\n );\n\n this.dataChange.emit(aggregateData);\n\n if (this.isLastStep()) {\n this.completed.emit(aggregateData);\n return;\n }\n\n queueMicrotask(() => {\n this.stepIndex.set(currentStepIndex + 1);\n });\n }\n\n previous(): void {\n if (this.stepIndex() === 0) {\n return;\n }\n\n this.stepIndex.update((index) => index - 1);\n this.dataChange.emit(this.activeFormData());\n }\n\n cancel(): void {\n this.cancelled.emit();\n }\n\n reset(): void {\n this.stepResults.set({});\n this.stepIndex.set(0);\n this.dataChange.emit({ ...this.initialData() });\n }\n\n onSelectedIndexChange(index: number): void {\n if (index <= this.maxNavigableStepIndex()) {\n this.stepIndex.set(index);\n this.dataChange.emit(this.activeFormData());\n return;\n }\n\n queueMicrotask(() => {\n this.stepIndex.set(this.stepIndex());\n });\n }\n\n isCompletedStep(index: number): boolean {\n return this.stepResults()[index] !== undefined;\n }\n\n isEditableStep(index: number): boolean {\n return index <= this.maxNavigableStepIndex();\n }\n\n private buildAggregateData(lastStepIndex: number): Record<string, unknown> {\n return this.buildAggregateDataFrom(this.stepResults(), lastStepIndex);\n }\n\n private buildAggregateDataFrom(\n stepResults: Record<number, Record<string, unknown>>,\n lastStepIndex: number\n ): Record<string, unknown> {\n const aggregateData: Record<string, unknown> = { ...this.initialData() };\n\n for (let index = 0; index <= lastStepIndex; index += 1) {\n Object.assign(aggregateData, stepResults[index] ?? {});\n }\n\n return aggregateData;\n }\n}\n","<mat-stepper\n class=\"form-stepper\"\n [selectedIndex]=\"stepIndex()\"\n (selectedIndexChange)=\"onSelectedIndexChange($event)\"\n>\n @for (step of steps(); track step.label) {\n <mat-step\n [completed]=\"isCompletedStep($index)\"\n [editable]=\"isEditableStep($index)\"\n >\n <ng-template matStepLabel>{{ step.label | translate }}</ng-template>\n </mat-step>\n }\n</mat-stepper>\n\n<section class=\"form-stepper-content\">\n <header class=\"form-stepper-header\">\n <div class=\"form-stepper-header-main\">\n <div class=\"form-stepper-meta\">\n <p class=\"form-stepper-counter\">\n {{ stepCounterLabel() }}\n </p>\n <span class=\"form-stepper-badge\">{{\n activeStep().label | translate\n }}</span>\n </div>\n\n @if (activeStep().title) {\n <h2 class=\"form-stepper-title\">{{ activeStep().title | translate }}</h2>\n } @else {\n <h2 class=\"form-stepper-title\">{{ activeStep().label | translate }}</h2>\n }\n </div>\n\n <div class=\"form-stepper-progress\" aria-hidden=\"true\">\n <span\n class=\"form-stepper-progress-bar\"\n [style.width]=\"progressWidth()\"\n ></span>\n </div>\n </header>\n\n <igo-form\n [form]=\"activeForm()\"\n [formData]=\"activeFormData()\"\n (submitForm)=\"onSubmitStep($event)\"\n >\n @if (activeForm().fields.length || activeForm().groups.length) {\n <div class=\"form-dialog-container\">\n @for (field of activeForm().fields; track field.name) {\n <igo-form-field [field]=\"field\" />\n }\n @for (group of activeForm().groups; track group.name) {\n <igo-form-group [group]=\"group\" />\n }\n </div>\n }\n\n <div formButtons class=\"form-stepper-actions\">\n @if (showCancelButton()) {\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"cancel()\"\n >\n {{ resolvedLabels().cancelButton }}\n </button>\n }\n\n @if (stepIndex() > 0) {\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"previous()\"\n >\n {{ resolvedLabels().previousButton }}\n </button>\n }\n\n <button matButton=\"filled\" type=\"submit\" color=\"primary\">\n {{ isLastStep() ? labels().processButton : labels().nextButton }}\n </button>\n </div>\n </igo-form>\n</section>\n\n@if (activeNotice()) {\n <div class=\"form-stepper-notice\" role=\"note\">\n <igo-custom-html [html]=\"activeNotice()!\" />\n </div>\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogRef,\n MatDialogTitle\n} from '@angular/material/dialog';\n\nimport { CustomHtmlComponent } from '@igo2/common/custom-html';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { FormComponent } from '../form';\nimport { FormFieldComponent } from '../form-field';\nimport { FormGroupComponent } from '../form-group';\nimport { FormService } from '../shared';\nimport { buildFormFromConfig, markFormAsTouched } from '../shared/form.utils';\nimport { FormDialogData } from './form-dialog.interface';\n\n@Component({\n selector: 'igo-form-dialog',\n templateUrl: './form-dialog.component.html',\n styleUrls: ['./form-dialog.component.scss'],\n imports: [\n MatDialogTitle,\n FormComponent,\n FormFieldComponent,\n FormGroupComponent,\n MatDialogActions,\n MatButtonModule,\n CustomHtmlComponent,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class FormDialogComponent {\n languageService = inject(LanguageService);\n dialogRef = inject<MatDialogRef<FormDialogComponent>>(MatDialogRef);\n private formService = inject(FormService);\n data = inject<FormDialogData>(MAT_DIALOG_DATA);\n\n form$ = new BehaviorSubject<\n ReturnType<typeof buildFormFromConfig> | undefined\n >(undefined);\n data$: BehaviorSubject<Record<string, unknown>>;\n constructor() {\n this.data.processButtonText =\n this.data.processButtonText ?? 'igo.common.formDialog.processButtonText';\n this.data.cancelButtonText =\n this.data.cancelButtonText ?? 'igo.common.formDialog.cancelButtonText';\n this.data.title = this.data.title ?? 'igo.common.formDialog.title';\n this.data$ = this.data.data$ ?? new BehaviorSubject({});\n\n const form = buildFormFromConfig(this.formService, this.data);\n\n this.form$.next(form);\n }\n\n onSubmit(data: Record<string, unknown>) {\n const form = this.form$.getValue();\n if (!form) return;\n if (form.control.valid) {\n this.dialogRef.close(data);\n } else {\n markFormAsTouched(form);\n }\n }\n cancel() {\n this.dialogRef.close();\n }\n}\n","<h1 mat-dialog-title>{{ data.title | translate }}</h1>\n\n@if (form$ | async; as form) {\n <igo-form\n [form]=\"form\"\n [formData]=\"(data$ | async)!\"\n (submitForm)=\"onSubmit($event)\"\n >\n @if (form.fields.length || form.groups.length) {\n <div class=\"form-dialog-container\">\n @for (field of form.fields; track field.name) {\n <igo-form-field [field]=\"field\" />\n }\n @for (group of form.groups; track group.name) {\n <igo-form-group [group]=\"group\" />\n }\n </div>\n }\n <div formButtons mat-dialog-actions>\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"cancel()\"\n >\n {{ data.cancelButtonText | translate }}\n </button>\n <button matButton=\"filled\" type=\"submit\" color=\"primary\">\n {{ data.processButtonText | translate }}\n </button>\n </div>\n </igo-form>\n}\n<div>\n @if (data.notice && data.notice !== '') {\n <igo-custom-html [html]=\"data.notice\" />\n }\n</div>\n","import { Component, inject, viewChild } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef\n} from '@angular/material/dialog';\n\nimport { FormStepperComponent } from '../form-stepper/form-stepper.component';\nimport { FormDialogStepperData } from './form-dialog.interface';\n\nexport const DEFAULT_FORM_STEPPER_DIALOG_TITLE =\n 'Veuillez remplir le formulaire';\n\n@Component({\n selector: 'igo-form-stepper-dialog',\n templateUrl: './form-stepper-dialog.component.html',\n styleUrls: ['./form-stepper-dialog.component.scss'],\n imports: [MatDialogModule, FormStepperComponent]\n})\nexport class FormStepperDialogComponent {\n readonly formStepper = viewChild(FormStepperComponent);\n\n readonly dialogRef =\n inject<MatDialogRef<FormStepperDialogComponent>>(MatDialogRef);\n\n readonly data = inject<FormDialogStepperData>(MAT_DIALOG_DATA);\n\n readonly initialData: Record<string, unknown>;\n\n constructor() {\n if (!this.data.steps?.length) {\n throw new Error('Form stepper dialog requires at least one step.');\n }\n\n this.data.title = this.data.title ?? DEFAULT_FORM_STEPPER_DIALOG_TITLE;\n this.initialData = { ...(this.data.data$?.value ?? {}) };\n }\n\n onDataChange(data: Record<string, unknown>): void {\n this.data.data$?.next(data);\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n onCompleted(data: Record<string, unknown>): void {\n this.data.data$?.next(data);\n this.dialogRef.close(data);\n }\n}\n","<h1 mat-dialog-title>{{ data.title }}</h1>\n\n<igo-form-stepper\n [steps]=\"data.steps\"\n [initialData]=\"initialData\"\n [notice]=\"data.notice\"\n [labels]=\"data.labels\"\n (dataChange)=\"onDataChange($event)\"\n (completed)=\"onCompleted($event)\"\n (cancelled)=\"cancel()\"\n/>\n","import { Injectable, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\n\nimport { FormStepperConfig } from '../form-stepper/form-stepper.interface';\nimport { FormDialogComponent } from './form-dialog.component';\nimport {\n FormDialogData,\n FormDialogFormConfig,\n FormDialogOptions,\n FormDialogStepperData,\n FormDialogStepperOptions\n} from './form-dialog.interface';\nimport { FormStepperDialogComponent } from './form-stepper-dialog.component';\n\n@Injectable()\nexport class FormDialogService {\n private dialog = inject(MatDialog);\n\n public open<T extends Record<string, unknown> = Record<string, unknown>>(\n formDialogConfig?: FormDialogFormConfig,\n options?: FormDialogOptions\n ): Observable<T | undefined> {\n const data: FormDialogData = {\n formFieldConfigs: formDialogConfig?.formFieldConfigs,\n formGroupsConfigs: formDialogConfig?.formGroupsConfigs,\n ...options\n };\n const dialogRef = this.dialog.open(FormDialogComponent, {\n disableClose: false,\n data,\n ...options\n });\n return dialogRef.afterClosed() as Observable<T | undefined>;\n }\n\n public openStepper<\n T extends Record<string, unknown> = Record<string, unknown>\n >(\n formDialogStepperConfig: FormStepperConfig,\n options?: FormDialogStepperOptions\n ): Observable<T | undefined> {\n const data: FormDialogStepperData = {\n steps: formDialogStepperConfig.steps,\n ...options\n };\n const dialogRef = this.dialog.open(FormStepperDialogComponent, {\n disableClose: false,\n width: 'min(92vw, 44rem)',\n maxWidth: '95vw',\n data,\n ...options\n });\n return dialogRef.afterClosed() as Observable<T | undefined>;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { FormStepperComponent } from '../form-stepper/form-stepper.component';\nimport { FormDialogComponent } from './form-dialog.component';\nimport { FormDialogService } from './form-dialog.service';\nimport { FormStepperDialogComponent } from './form-stepper-dialog.component';\n\n/**\n * @deprecated import the FlexibleComponent directly\n */\n@NgModule({\n imports: [\n MatDialogModule,\n FormDialogComponent,\n FormStepperComponent,\n FormStepperDialogComponent\n ],\n exports: [\n FormDialogComponent,\n FormStepperComponent,\n FormStepperDialogComponent\n ],\n providers: [FormDialogService]\n})\nexport class IgoFormDialogModule {\n /**\n * @deprecated it has no effect\n */\n static forRoot(): ModuleWithProviders<IgoFormDialogModule> {\n return {\n ngModule: IgoFormDialogModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4","i5","i6","i9","i7","i1.FormFieldComponent","i2.FormFieldCheckboxComponent","i3.FormFieldDatetimeComponent","i4.FormFieldNumberComponent","i5.FormFieldRadiobuttonComponent","i6.FormFieldSelectComponent","i7.FormFieldTextComponent","i8.FormFieldTextareaComponent","i2.FormFieldComponent","i3.FormGroupComponent","i4.FormComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-common-form.mjs","sources":["../../../packages/common/form/src/shared/form.utils.ts","../../../packages/common/form/src/form/form.component.ts","../../../packages/common/form/src/form/form.component.html","../../../packages/common/form/src/form/form.module.ts","../../../packages/common/form/src/shared/form-field.service.ts","../../../packages/common/form/src/shared/form-field-component.ts","../../../packages/common/form/src/form-field/form-field-checkbox.component.ts","../../../packages/common/form/src/form-field/form-field-checkbox.component.html","../../../packages/common/form/src/form-field/form-field-datetime.component.ts","../../../packages/common/form/src/form-field/form-field-datetime.component.html","../../../packages/common/form/src/form-field/form-field-number.component.ts","../../../packages/common/form/src/form-field/form-field-number.component.html","../../../packages/common/form/src/form-field/form-field-radiobutton.component.ts","../../../packages/common/form/src/form-field/form-field-radiobutton.component.html","../../../packages/common/form/src/form-field/form-field-select.component.ts","../../../packages/common/form/src/form-field/form-field-select.component.html","../../../packages/common/form/src/form-field/form-field-text.component.ts","../../../packages/common/form/src/form-field/form-field-text.component.html","../../../packages/common/form/src/form-field/form-field-textarea.component.ts","../../../packages/common/form/src/form-field/form-field-textarea.component.html","../../../packages/common/form/src/shared/form.service.ts","../../../packages/common/form/src/form-field/form-field.component.ts","../../../packages/common/form/src/form-field/form-field.component.html","../../../packages/common/form/src/form-field/form-field.directive.ts","../../../packages/common/form/src/form-field/form-field.module.ts","../../../packages/common/form/src/form-group/form-group.component.ts","../../../packages/common/form/src/form-group/form-group.component.html","../../../packages/common/form/src/form-group/form-group.module.ts","../../../packages/common/form/src/form.module.ts","../../../packages/common/form/src/form-stepper/form-stepper.utils.ts","../../../packages/common/form/src/form-stepper/form-stepper.component.ts","../../../packages/common/form/src/form-stepper/form-stepper.component.html","../../../packages/common/form/src/form-dialog/form-dialog.component.ts","../../../packages/common/form/src/form-dialog/form-dialog.component.html","../../../packages/common/form/src/form-dialog/form-stepper-dialog.component.ts","../../../packages/common/form/src/form-dialog/form-stepper-dialog.component.html","../../../packages/common/form/src/form-dialog/form-dialog.service.ts","../../../packages/common/form/src/form-dialog/form-dialog.module.ts","../../../packages/common/form/src/igo2-common-form.ts"],"sourcesContent":["import { AbstractControl } from '@angular/forms';\n\nimport {\n Form,\n FormField,\n FormFieldGroup,\n FormFieldInputs,\n FormService\n} from '.';\nimport { FormStepperFormConfig } from '../form-stepper/form-stepper.interface';\n\nexport function buildFormFromConfig(\n formService: FormService,\n formConfig?: FormStepperFormConfig\n): Form {\n const fields: FormField<FormFieldInputs>[] = [];\n const groups: FormFieldGroup[] = [];\n\n formConfig?.formFieldConfigs?.forEach((config) => {\n fields.push(formService.field(config));\n });\n\n formConfig?.formGroupsConfigs?.forEach((formGroupsConfig) => {\n const groupFields = formGroupsConfig.formFieldConfigs?.map((config) =>\n formService.field(config)\n );\n\n groups.push(\n formService.group({ name: formGroupsConfig.name }, groupFields)\n );\n });\n\n return formService.form(fields, groups);\n}\n\nexport function markFormAsTouched(form: Form): void {\n if (form.groups?.length) {\n form.groups.forEach((group) => {\n Object.keys(group.control.controls).forEach((key) => {\n group.control.controls[key].markAsTouched();\n group.control.controls[key].updateValueAndValidity();\n });\n });\n return;\n }\n\n form.fields.forEach((field) => {\n field.control.markAsTouched();\n field.control.updateValueAndValidity();\n });\n}\n\nexport function formControlIsRequired(control: AbstractControl): boolean {\n if (control.validator) {\n const validator = control.validator({} as AbstractControl);\n if (validator && validator.required) {\n return true;\n }\n }\n\n if ((control as any).controls) {\n const requiredControl = Object.keys((control as any).controls).find(\n (key: string) => {\n return formControlIsRequired((control as any).controls[key]);\n }\n );\n return requiredControl !== undefined;\n }\n\n return false;\n}\n\nexport function getDefaultErrorMessages(): Record<string, string> {\n return {\n required: 'igo.common.form.errors.required',\n email: 'igo.common.form.errors.email'\n };\n}\n\nexport function getControlErrorMessage(\n control: AbstractControl,\n messages: Record<string, string>\n): string {\n const errors = control.errors || {};\n const errorKeys = Object.keys(errors);\n const errorMessages = errorKeys\n .map((key: string) => messages[key])\n .filter((message: string) => message !== undefined);\n return errorMessages.length > 0 ? errorMessages[0] : '';\n}\n\nexport function getAllFormFields(form: Form): FormField[] {\n const fields = form.fields ? [...form.fields] : [];\n return form.groups.reduce((acc, group) => acc.concat(group.fields), fields);\n}\n\nexport function getFormFieldByName(\n form: Form,\n name: string\n): FormField | undefined {\n const fields = getAllFormFields(form);\n return fields.find((field: FormField) => {\n return field.name === name;\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnChanges,\n SimpleChanges,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { t } from 'typy';\n\nimport { Form, FormField } from '../shared/form.interfaces';\nimport { getAllFormFields } from '../shared/form.utils';\n\n/**\n * A configurable form\n */\n@Component({\n selector: 'igo-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule]\n})\nexport class FormComponent implements OnChanges {\n /**\n * Form\n */\n readonly form = input.required<Form>();\n\n /**\n * Input data\n */\n readonly formData = input<Record<string, unknown>>();\n\n /**\n * Form autocomplete\n */\n readonly autocomplete = input('off');\n\n /**\n * Event emitted when the form is submitted\n */\n readonly submitForm = output<Record<string, unknown>>();\n\n readonly buttons = viewChild<ElementRef>('buttons');\n\n get hasButtons(): boolean {\n return (this.buttons()?.nativeElement.children.length ?? 0) !== 0;\n }\n\n /**\n * Is the entity or the template change, recreate the form or repopulate it.\n * @internal\n */\n ngOnChanges(changes: SimpleChanges) {\n const formData = changes.formData;\n if (formData.firstChange && formData.currentValue == null) {\n return;\n }\n\n if (formData && formData.currentValue !== formData.previousValue) {\n if (formData.currentValue === undefined) {\n this.clear();\n } else {\n this.setData(formData.currentValue);\n }\n }\n }\n\n /**\n * Transform the form data to a feature and emit an event\n * @param event Form submit event\n * @internal\n */\n onSubmit() {\n this.submitForm.emit(this.getData());\n }\n\n getData(): Record<string, unknown> {\n const data = {};\n getAllFormFields(this.form()!).forEach((field: FormField) => {\n this.updateDataWithFormField(data, field);\n });\n return data;\n }\n\n private setData(data: Record<string, unknown>) {\n this.form().fields.forEach((field) => {\n field.control.setValue(t(data, field.name).safeObject);\n });\n\n this.form().groups.forEach((group) => {\n group.fields.forEach((field) => {\n field.control.setValue(t(data, field.name).safeObject);\n });\n });\n }\n\n private updateDataWithFormField(\n data: Record<string, unknown>,\n field: FormField\n ) {\n const control = field.control;\n if (!control.disabled) {\n data[field.name] = control.value;\n }\n }\n\n /**\n * Clear form\n */\n private clear() {\n this.form()?.control.reset();\n }\n}\n","<form\n [autocomplete]=\"autocomplete()\"\n [formGroup]=\"form().control\"\n (ngSubmit)=\"onSubmit()\"\n>\n <div class=\"igo-form-body\" [class.igo-form-body-with-buttons]=\"hasButtons\">\n <div class=\"igo-form-content\">\n <ng-content />\n </div>\n <div #buttons class=\"igo-form-buttons\">\n <ng-content select=\"[formButtons]\" />\n </div>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\n\nimport { FormComponent } from './form.component';\n\n/**\n * @deprecated import the FormComponent directly\n */\n@NgModule({\n imports: [FormComponent],\n exports: [FormComponent]\n})\nexport class IgoFormFormModule {}\n","import { Injectable } from '@angular/core';\n\n/**\n * Service where all available form fields are registered.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class FormFieldService {\n static fields: Record<string, any> = {};\n\n static register(type: string, component: any) {\n FormFieldService.fields[type] = component;\n }\n\n /**\n * Return field component by type\n * @param type Field type\n * @returns Field component\n */\n getFieldByType(type: string): any {\n return FormFieldService.fields[type];\n }\n}\n","import { FormFieldService } from './form-field.service';\n\nexport function IgoFormFieldComponent(type: string): (cls: any) => any {\n return (compType: any) => {\n FormFieldService.register(type, compType);\n };\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n inject,\n input,\n signal\n} from '@angular/core';\nimport {\n FormGroupDirective,\n NgForm,\n ReactiveFormsModule,\n ValidatorFn\n} from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport {\n MatCheckboxChange,\n MatCheckboxModule\n} from '@angular/material/checkbox';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport type { FormFieldCheckboxInputs } from '../shared/form.interfaces';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n@IgoFormFieldComponent('checkbox')\n@Component({\n selector: 'igo-form-field-checkbox',\n templateUrl: './form-field-checkbox.component.html',\n styleUrl: './form-field-choice.component.scss',\n imports: [\n ReactiveFormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldCheckboxComponent implements OnInit, OnDestroy {\n private errorStateMatcher = inject(ErrorStateMatcher);\n private parentForm = inject(NgForm, { optional: true });\n private parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n readonly disabled = signal(false);\n private readonly showErrorState = signal(false);\n private selectedValues = signal<unknown[]>([]);\n private destroy$ = new Subject<void>();\n\n readonly choices = input.required<FormFieldCheckboxInputs['choices']>();\n\n readonly formControl = input.required<UntypedFormControl>();\n\n readonly showLabel = input<boolean>(false);\n\n readonly placeholder = input<string>();\n\n readonly errors = input<Record<string, string>>();\n\n readonly maxSelected = input<number | undefined>();\n\n readonly disableSwitch = input(false);\n\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n const control = this.formControl();\n const maxSelected = this.maxSelected();\n\n if (typeof maxSelected === 'number' && Number.isFinite(maxSelected)) {\n control.addValidators(this.maxSelectedValidator(maxSelected));\n }\n\n const normalizedValue = this.normalizeValue(control.value);\n control.setValue(normalizedValue, {\n emitEvent: false\n });\n control.updateValueAndValidity({ emitEvent: false });\n this.syncState(control);\n\n control.events.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.syncState(control);\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n getErrorMessage(): string {\n const maxSelectedError = this.formControl().errors?.['maxSelected'] as\n { max: number; actual: number } | undefined;\n\n if (maxSelectedError) {\n return (\n this.errors()?.['maxSelected'] ||\n `Select at most ${maxSelectedError.max} options.`\n );\n }\n\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n showError(): boolean {\n return this.showErrorState();\n }\n\n isChecked(value: unknown): boolean {\n return this.selectedValues().some(\n (selectedValue) => selectedValue === value\n );\n }\n\n onChoiceChange(value: unknown, event: MatCheckboxChange) {\n const selectedValues = this.selectedValues();\n const nextValues = event.checked\n ? selectedValues.some((selectedValue) => selectedValue === value)\n ? selectedValues\n : [...selectedValues, value]\n : selectedValues.filter((selectedValue) => selectedValue !== value);\n\n this.formControl().setValue(nextValues);\n this.formControl().markAsDirty();\n this.formControl().markAsTouched();\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private normalizeValue(value: unknown): unknown[] {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (value === undefined || value === null || value === '') {\n return [];\n }\n\n return [value];\n }\n\n private syncState(control: UntypedFormControl) {\n this.disabled.set(control.disabled);\n this.selectedValues.set(this.normalizeValue(control.value));\n this.showErrorState.set(\n this.errorStateMatcher.isErrorState(\n control,\n this.parentFormGroup ?? this.parentForm\n )\n );\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n\n private maxSelectedValidator(maxSelected: number): ValidatorFn {\n return (control) => {\n const selectedValues = this.normalizeValue(control.value);\n\n if (selectedValues.length <= maxSelected) {\n return null;\n }\n\n return {\n maxSelected: {\n max: maxSelected,\n actual: selectedValues.length\n }\n };\n };\n }\n}\n","<div class=\"igo-form-field-choice-list\">\n @if (placeholder()) {\n <div class=\"igo-form-field-choice-label\">\n {{ placeholder() | translate }}\n </div>\n }\n\n <div class=\"igo-form-field-choice-options\">\n @for (choice of choices(); track choice.value) {\n <mat-checkbox\n [checked]=\"isChecked(choice.value)\"\n [disabled]=\"disabled()\"\n [required]=\"required\"\n (change)=\"onChoiceChange(choice.value, $event)\"\n >\n {{ choice.title }}\n </mat-checkbox>\n }\n </div>\n\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n [attr.aria-label]=\"'Toggle field availability'\"\n />\n }\n\n <mat-error [hidden]=\"!showError()\">\n {{ getErrorMessage() | translate }}\n </mat-error>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTimepickerModule } from '@angular/material/timepicker';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n@IgoFormFieldComponent('datetime')\n@Component({\n selector: 'igo-form-field-datetime',\n templateUrl: './form-field-datetime.component.html',\n styleUrl: './form-field-datetime.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatTimepickerModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n MatIconModule,\n MatButtonModule,\n IgoLanguageModule\n ],\n providers: [provideNativeDateAdapter()]\n})\nexport class FormFieldDatetimeComponent implements OnInit, OnDestroy {\n readonly disabled = signal(false);\n\n readonly dateTimeGroup = new FormGroup({\n date: new FormControl<Date | null>(null),\n time: new FormControl<Date | null>(null)\n });\n\n get dateControl(): FormControl<Date | null> {\n return this.dateTimeGroup.controls.date;\n }\n\n get timeControl(): FormControl<Date | null> {\n return this.dateTimeGroup.controls.time;\n }\n\n private destroy$ = new Subject<void>();\n private syncingExternalToInternal = false;\n private syncingInternalToExternal = false;\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder used for date input\n */\n readonly placeholder = input<string>();\n\n /**\n * Placeholder used for time input\n */\n readonly timePlaceholder = input<string>();\n\n /**\n * Minimum selectable date\n */\n readonly minDate = input<Date>();\n\n /**\n * Maximum selectable date\n */\n readonly maxDate = input<Date>();\n\n /**\n * Minimum selectable time\n */\n readonly minTime = input<Date | string | null>(null);\n\n /**\n * Maximum selectable time\n */\n readonly maxTime = input<Date | string | null>(null);\n\n /**\n * Optional explicit options rendered in the timepicker panel.\n */\n readonly options = input<readonly { value: Date; label: string }[] | null>(\n null\n );\n\n /**\n * Time option interval for the panel.\n */\n readonly interval = input<number | string | null>(null);\n\n /**\n * Whether clicking the input should open the timepicker.\n */\n readonly openOnClick = input<boolean>(true);\n\n /**\n * Whether a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Error messages mapping\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit(): void {\n this.disabled.set(this.formControl().disabled);\n\n this.syncInternalFromExternal(this.formControl().value);\n\n this.formControl()\n .valueChanges.pipe(takeUntil(this.destroy$))\n .subscribe((value) => {\n if (this.syncingInternalToExternal) {\n return;\n }\n\n this.syncInternalFromExternal(value);\n });\n\n this.formControl()\n .statusChanges.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const isDisabled = this.formControl().disabled;\n this.disabled.set(isDisabled);\n\n if (isDisabled) {\n this.dateTimeGroup.disable({ emitEvent: false });\n } else {\n this.dateTimeGroup.enable({ emitEvent: false });\n this.updateTimeControlState();\n }\n });\n\n this.dateTimeGroup.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateTimeControlState();\n this.pushInternalToExternal();\n });\n\n if (this.formControl().disabled) {\n this.dateTimeGroup.disable({ emitEvent: false });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n clearDate(): void {\n this.dateControl.setValue(null);\n }\n\n clearTime(): void {\n this.timeControl.setValue(null);\n }\n\n onDisableSwitchClick() {\n const disabled = !this.disabled();\n if (disabled) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n\n private syncInternalFromExternal(value: unknown): void {\n const externalDate = this.toDateValue(value);\n\n this.syncingExternalToInternal = true;\n this.dateTimeGroup.patchValue(\n {\n date: externalDate ? new Date(externalDate) : null,\n time: externalDate ? new Date(externalDate) : null\n },\n { emitEvent: false }\n );\n this.syncingExternalToInternal = false;\n\n this.updateTimeControlState();\n }\n\n private pushInternalToExternal(): void {\n if (this.syncingExternalToInternal) {\n return;\n }\n\n const { date: datePart, time: timeValue } =\n this.dateTimeGroup.getRawValue();\n if (!datePart) {\n if (this.formControl().value !== null) {\n this.syncingInternalToExternal = true;\n this.formControl().setValue(null);\n this.syncingInternalToExternal = false;\n }\n return;\n }\n\n const sourceTime = timeValue;\n\n const next = new Date(datePart);\n next.setHours(\n sourceTime?.getHours() ?? 0,\n sourceTime?.getMinutes() ?? 0,\n sourceTime?.getSeconds() ?? 0,\n 0\n );\n\n this.syncingInternalToExternal = true;\n this.formControl().setValue(next);\n this.syncingInternalToExternal = false;\n }\n\n private updateTimeControlState(): void {\n const hasDate = !!this.dateControl.value;\n if (!hasDate && this.timeControl.enabled) {\n this.timeControl.disable({ emitEvent: false });\n } else if (hasDate && this.timeControl.disabled && !this.disabled()) {\n this.timeControl.enable({ emitEvent: false });\n }\n }\n\n private toDateValue(value: unknown): Date | null {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n\n if (typeof value === 'number' && Number.isFinite(value)) {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n if (typeof value === 'string' && value.trim().length > 0) {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n return null;\n }\n}\n","<div class=\"igo-form-field-datetime-row\">\n <mat-form-field class=\"igo-form-field-datetime-part\">\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n\n <input\n matInput\n readonly=\"true\"\n [matDatepicker]=\"datePicker\"\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"dateControl\"\n [min]=\"minDate() ?? null\"\n [max]=\"maxDate() ?? null\"\n />\n @if (dateControl.value && !disabled()) {\n <button matIconSuffix mat-icon-button type=\"button\" (click)=\"clearDate()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n <mat-datepicker-toggle matIconSuffix [for]=\"datePicker\" />\n <mat-datepicker #datePicker />\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field class=\"igo-form-field-datetime-part\">\n <mat-label>{{ timePlaceholder() | translate }}</mat-label>\n\n <input\n matInput\n readonly=\"true\"\n [matTimepicker]=\"timePicker\"\n [required]=\"required\"\n [placeholder]=\"timePlaceholder() | translate\"\n [formControl]=\"timeControl\"\n [matTimepickerMin]=\"minTime()\"\n [matTimepickerMax]=\"maxTime()\"\n [matTimepickerOpenOnClick]=\"openOnClick()\"\n />\n\n @if (timeControl.value && !disabled() && !timeControl.disabled) {\n <button\n matIconSuffix\n mat-icon-button\n type=\"button\"\n (click)=\"$event.stopPropagation(); clearTime()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n <mat-timepicker-toggle matIconSuffix [for]=\"timePicker\" />\n <mat-timepicker #timePicker [interval]=\"interval()\" [options]=\"options()\" />\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n </mat-form-field>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a number field\n */\n@IgoFormFieldComponent('number')\n@Component({\n selector: 'igo-form-field-number',\n templateUrl: './form-field-number.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n MatButtonModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldNumberComponent implements OnInit {\n readonly disabled = signal(false);\n hide = true;\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <input\n matInput\n type=\"number\"\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n />\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import {\n Component,\n OnDestroy,\n OnInit,\n inject,\n input,\n signal\n} from '@angular/core';\nimport {\n FormGroupDirective,\n NgForm,\n ReactiveFormsModule\n} from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatRadioModule } from '@angular/material/radio';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport type { FormFieldRadiobuttonInputs } from '../shared/form.interfaces';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n@IgoFormFieldComponent('radiobuttons')\n@IgoFormFieldComponent('radiobutton')\n@Component({\n selector: 'igo-form-field-radiobutton',\n templateUrl: './form-field-radiobutton.component.html',\n styleUrl: './form-field-choice.component.scss',\n imports: [\n ReactiveFormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatRadioModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldRadiobuttonComponent implements OnInit, OnDestroy {\n private errorStateMatcher = inject(ErrorStateMatcher);\n private parentForm = inject(NgForm, { optional: true });\n private parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n readonly disabled = signal(false);\n private readonly showErrorState = signal(false);\n private destroy$ = new Subject<void>();\n\n readonly choices = input.required<FormFieldRadiobuttonInputs['choices']>();\n\n readonly formControl = input.required<UntypedFormControl>();\n\n readonly showLabel = input<boolean>(false);\n\n readonly placeholder = input<string>();\n\n readonly errors = input<Record<string, string>>();\n\n readonly disableSwitch = input(false);\n\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n const control = this.formControl();\n\n this.syncState(control);\n control.events.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.syncState(control);\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n showError(): boolean {\n return this.showErrorState();\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private syncState(control: UntypedFormControl) {\n this.disabled.set(control.disabled);\n this.showErrorState.set(\n this.errorStateMatcher.isErrorState(\n control,\n this.parentFormGroup ?? this.parentForm\n )\n );\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<div class=\"igo-form-field-choice-list\">\n @if (placeholder()) {\n <div class=\"igo-form-field-choice-label\">\n {{ placeholder() | translate }}\n </div>\n }\n\n <mat-radio-group\n class=\"igo-form-field-choice-options\"\n [formControl]=\"formControl()\"\n [required]=\"required\"\n >\n @for (choice of choices(); track choice.value) {\n <mat-radio-button [value]=\"choice.value\" [disabled]=\"disabled()\">\n {{ choice.title }}\n </mat-radio-button>\n }\n </mat-radio-group>\n\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n [attr.aria-label]=\"'Toggle field availability'\"\n />\n }\n\n <mat-error [hidden]=\"!showError()\">\n {{ getErrorMessage() | translate }}\n </mat-error>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport { FormFieldSelectChoice } from '../shared/form.interfaces';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a select field\n */\n@IgoFormFieldComponent('select')\n@Component({\n selector: 'igo-form-field-select',\n templateUrl: './form-field-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatSelectModule,\n FormsModule,\n ReactiveFormsModule,\n MatOptionModule,\n MatCheckboxModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldSelectComponent implements OnInit {\n readonly disabled = signal(false);\n\n /**\n * Select input choices\n */\n readonly choices = input.required<FormFieldSelectChoice[]>();\n\n /**\n * If the select allow multiple selections\n */\n readonly multiple = input(false);\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <mat-select\n [multiple]=\"multiple()\"\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n >\n @for (choice of choices(); track choice) {\n <mat-option [value]=\"choice.value\">\n {{ choice.title }}\n </mat-option>\n }\n </mat-select>\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a text field\n */\n@IgoFormFieldComponent('text')\n@Component({\n selector: 'igo-form-field-text',\n templateUrl: './form-field-text.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatIconModule,\n MatCheckboxModule,\n MatButtonModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextComponent implements OnInit {\n private cdRef = inject(ChangeDetectorRef);\n\n readonly disabled = signal(false);\n hide = true;\n private lastTimeoutRequest?: number;\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * if the input is a password\n */\n readonly isPassword = input<boolean>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n\n togglePassword() {\n this.hide = !this.hide;\n this.delayedHide();\n }\n delayedHide(delayMS = 10000) {\n if (this.isPassword() && !this.hide) {\n if (this.lastTimeoutRequest) {\n clearTimeout(this.lastTimeoutRequest);\n }\n this.lastTimeoutRequest = window.setTimeout(() => {\n this.hide = true;\n this.cdRef.detectChanges();\n }, delayMS);\n }\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <input\n matInput\n (blur)=\"delayedHide(0)\"\n [type]=\"isPassword() ? (hide ? 'password' : 'text') : 'text'\"\n [required]=\"isPassword() ? 'true' : required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n (change)=\"delayedHide()\"\n />\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n\n @if (isPassword()) {\n <button type=\"button\" matSuffix mat-icon-button (click)=\"togglePassword()\">\n <mat-icon color=\"primary\">{{\n hide ? 'visibility_off' : 'visibility'\n }}</mat-icon>\n </button>\n }\n\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input,\n signal\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { IgoFormFieldComponent } from '../shared/form-field-component';\nimport {\n formControlIsRequired,\n getControlErrorMessage\n} from '../shared/form.utils';\n\n/**\n * This component renders a textarea field\n */\n@IgoFormFieldComponent('textarea')\n@Component({\n selector: 'igo-form-field-textarea',\n templateUrl: './form-field-textarea.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextareaComponent implements OnInit {\n readonly disabled = signal(false);\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\n\n /**\n * Field showLabel\n */\n readonly showLabel = input<boolean>(false);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Wheter a disable switch should be available\n */\n readonly disableSwitch = input(false);\n\n /**\n * Whether the field is required\n */\n get required(): boolean {\n return formControlIsRequired(this.formControl());\n }\n\n ngOnInit() {\n this.disabled.set(this.formControl().disabled);\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n return getControlErrorMessage(this.formControl(), this.errors() || {});\n }\n\n onDisableSwitchClick() {\n this.toggleDisabled();\n }\n\n private toggleDisabled() {\n const disabled = !this.disabled();\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled.set(disabled);\n }\n}\n","<mat-form-field>\n @if (showLabel() === true) {\n <mat-label>{{ placeholder() | translate }}</mat-label>\n }\n <textarea\n matInput\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n >\n </textarea>\n @if (disableSwitch() === true) {\n <mat-checkbox\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n [checked]=\"!disabled()\"\n matPrefix\n />\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import { Injectable, inject } from '@angular/core';\nimport {\n FormControlState,\n UntypedFormBuilder,\n ValidatorFn,\n Validators\n} from '@angular/forms';\n\nimport {\n Form,\n FormField,\n FormFieldConfig,\n FormFieldGroup,\n FormFieldGroupConfig\n} from './form.interfaces';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormService {\n private formBuilder = inject(UntypedFormBuilder);\n\n form(fields: FormField[], groups: FormFieldGroup[]): Form {\n const control = this.formBuilder.group({});\n fields.forEach((field: FormField) => {\n control.addControl(field.name, field.control);\n });\n groups.forEach((group: FormFieldGroup) => {\n control.addControl(group.name, group.control);\n });\n\n return { fields, groups, control };\n }\n\n group(config: FormFieldGroupConfig, fields: FormField[]): FormFieldGroup {\n const options = config.options || {};\n const control = this.formBuilder.group({});\n fields.forEach((field: FormField) => {\n control.addControl(field.name, field.control);\n });\n\n if (options.validator) {\n const validators = this.getValidators(options.validator); // convert string to actual validator\n control.setValidators(validators);\n }\n\n return Object.assign({}, config, { fields, control }) as FormFieldGroup;\n }\n\n field(config: FormFieldConfig): FormField {\n const options = config.options || {};\n const state: FormControlState<unknown> = {\n value: options.initialValue ?? '',\n disabled: options.disabled || false\n };\n const control = this.formBuilder.control(state);\n\n if (options.validator) {\n const validators = this.getValidators(options.validator); // convert string to actual validator\n control.setValidators(validators);\n }\n\n return Object.assign({ type: 'text' }, config, { control }) as FormField;\n }\n\n extendFieldConfig(\n config: FormFieldConfig,\n partial: Partial<FormFieldConfig>\n ): FormFieldConfig {\n const options = Object.assign(\n {},\n config.options || {},\n partial.options || {}\n );\n const inputs = Object.assign({}, config.inputs || {}, partial.inputs || {});\n const subscribers = Object.assign(\n {},\n config.subscribers || {},\n partial.subscribers || {}\n );\n return Object.assign({}, config, { options, inputs, subscribers });\n }\n\n private getValidators(\n validatorOption: string | string[] | ValidatorFn\n ): ValidatorFn | ValidatorFn[] {\n if (Array.isArray(validatorOption)) {\n return validatorOption.map((validatorStr) => {\n return this.getValidator(validatorStr);\n });\n }\n\n return this.getValidator(validatorOption);\n }\n\n private getValidator(validatorStr: string | ValidatorFn): ValidatorFn {\n if (typeof validatorStr !== 'string') {\n return validatorStr;\n }\n\n // regex pattern to extract arguments from string for e.g applying on \"minLength(8)\" would extract 8\n const re = /^([a-zA-Z]{3,15})\\((.{0,20})\\)$/;\n const match = validatorStr.match(re);\n\n if (!match) {\n return Validators[validatorStr as keyof typeof Validators] as ValidatorFn;\n }\n\n const name = match[1];\n const args = match[2];\n return (Validators as any)[name](args);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input\n} from '@angular/core';\n\nimport { DynamicOutletComponent } from '@igo2/common/dynamic-component';\n\nimport { getDefaultErrorMessages } from '../shared';\nimport { FormFieldService } from '../shared/form-field.service';\nimport {\n FormField,\n FormFieldInputs,\n FormFieldOptions,\n FormFieldSubscribers\n} from '../shared/form.interfaces';\n\n/**\n * This component renders the proper form input based on\n * the field configuration it receives.\n */\n@Component({\n selector: 'igo-form-field',\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DynamicOutletComponent]\n})\nexport class FormFieldComponent {\n private formFieldService = inject(FormFieldService);\n\n /**\n * Field configuration\n */\n readonly field = input.required<FormField<FormFieldInputs>>();\n\n /**\n * Field inputs cache\n */\n private fieldInputs?: FormFieldInputs;\n\n /**\n * Field subscribers cache\n */\n private fieldSubscribers?: FormFieldSubscribers;\n\n get fieldOptions(): FormFieldOptions {\n return this.field().options || {};\n }\n\n getFieldComponent(): any {\n return this.formFieldService.getFieldByType(this.field().type || 'text');\n }\n\n getFieldInputs(): FormFieldInputs {\n if (this.fieldInputs !== undefined) {\n return this.fieldInputs;\n }\n\n const errors = this.fieldOptions.errors || {};\n this.fieldInputs = Object.assign(\n {\n placeholder: this.field().title,\n disableSwitch: this.fieldOptions.disableSwitch || false\n },\n Object.assign({}, this.field().inputs || {}),\n {\n formControl: this.field().control,\n errors: Object.assign({}, getDefaultErrorMessages(), errors)\n }\n );\n return this.fieldInputs;\n }\n\n getFieldSubscribers(): FormFieldSubscribers {\n if (this.fieldSubscribers !== undefined) {\n return this.fieldSubscribers;\n }\n\n this.fieldSubscribers = Object.assign({}, this.field().subscribers || {});\n return this.fieldSubscribers;\n }\n}\n","@if (field() !== undefined) {\n <igo-dynamic-outlet\n [component]=\"getFieldComponent()\"\n [inputs]=\"getFieldInputs()\"\n [subscribers]=\"getFieldSubscribers()\"\n />\n}\n","import { FormFieldCheckboxComponent } from './form-field-checkbox.component';\nimport { FormFieldDatetimeComponent } from './form-field-datetime.component';\nimport { FormFieldNumberComponent } from './form-field-number.component';\nimport { FormFieldRadiobuttonComponent } from './form-field-radiobutton.component';\nimport { FormFieldSelectComponent } from './form-field-select.component';\nimport { FormFieldTextComponent } from './form-field-text.component';\nimport { FormFieldTextareaComponent } from './form-field-textarea.component';\nimport { FormFieldComponent } from './form-field.component';\n\nexport const FORM_FIELD_DIRECTIVES = [\n FormFieldComponent,\n FormFieldCheckboxComponent,\n FormFieldDatetimeComponent,\n FormFieldNumberComponent,\n FormFieldRadiobuttonComponent,\n FormFieldSelectComponent,\n FormFieldTextComponent,\n FormFieldTextareaComponent\n] as const;\n","import { NgModule } from '@angular/core';\n\nimport { FORM_FIELD_DIRECTIVES } from './form-field.directive';\n\n/**\n * @deprecated import the components directly or FORM_FIELD_DIRECTIVES for every components/directives\n */\n@NgModule({\n imports: [...FORM_FIELD_DIRECTIVES],\n exports: [...FORM_FIELD_DIRECTIVES]\n})\nexport class IgoFormFieldModule {}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { FormField, FormFieldGroup } from '../shared/form.interfaces';\nimport { getControlErrorMessage } from '../shared/form.utils';\n\n/**\n * A configurable form, optionnally bound to an entity\n * (for example in case of un update). Submitting that form\n * emits an event with the form data but no other operation is performed.\n */\n@Component({\n selector: 'igo-form-group',\n templateUrl: './form-group.component.html',\n styleUrls: ['./form-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, FormFieldComponent, MatFormFieldModule, IgoLanguageModule]\n})\nexport class FormGroupComponent {\n /**\n * Form field group\n */\n readonly group = input.required<FormFieldGroup>();\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>();\n\n /**\n * Form group control\n */\n get formControl(): UntypedFormGroup {\n return this.group().control;\n }\n\n /**\n * Return the number of columns a field should occupy.\n * The maximum allowed is 2, even if the field config says more.\n * @param field Field\n * @returns Number of columns\n * @internal\n */\n getFieldColSpan(field: FormField): number {\n let colSpan = 2;\n const options = field.options || {};\n if (options.cols && options.cols > 0) {\n colSpan = Math.min(options.cols, 2);\n }\n\n return colSpan;\n }\n\n /**\n * Return the number of columns a field should occupy.\n * The maximum allowed is 2, even if the field config says more.\n * @param field Field\n * @returns Number of columns\n * @internal\n */\n getFieldNgClass(field: FormField): Record<string, boolean> {\n const colspan = this.getFieldColSpan(field);\n return { [`igo-form-field-colspan-${colspan}`]: true };\n }\n\n /**\n * Get error message\n */\n getErrorMessage(): string {\n const options = this.group().options || {};\n return getControlErrorMessage(this.formControl, options.errors || {});\n }\n}\n","@if (group() && group().fields.length > 0) {\n <div class=\"igo-form-group-fields\">\n @for (field of group().fields; track field) {\n <div class=\"igo-form-field-wrapper\" [ngClass]=\"getFieldNgClass(field)\">\n <igo-form-field [field]=\"field\" />\n </div>\n }\n </div>\n}\n\n<div class=\"igo-form-group-extra-content\">\n <ng-content />\n</div>\n\n@if (formControl.errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n}\n","import { NgModule } from '@angular/core';\n\nimport { FormGroupComponent } from './form-group.component';\n\n/**\n * @deprecated import the FormGroupComponent directly\n */\n@NgModule({\n imports: [FormGroupComponent],\n exports: [FormGroupComponent]\n})\nexport class IgoFormGroupModule {}\n","import { NgModule } from '@angular/core';\n\nimport { FormComponent } from './form';\nimport { FORM_FIELD_DIRECTIVES } from './form-field';\nimport { FormGroupComponent } from './form-group';\n\nexport const FORM_DIRECTIVES = [\n ...FORM_FIELD_DIRECTIVES,\n FormGroupComponent,\n FormComponent\n] as const;\n\n/**\n * @deprecated import the components directly or FORM_DIRECTIVES for every components/directives\n */\n@NgModule({\n imports: [...FORM_DIRECTIVES],\n exports: [...FORM_DIRECTIVES]\n})\nexport class IgoFormModule {}\n","import {\n FormStepperFormConfig,\n FormStepperLabels,\n FormStepperStepConfig,\n FormStepperStepContext\n} from './form-stepper.interface';\n\nexport const DEFAULT_FORM_STEPPER_LABELS: FormStepperLabels = {\n nextButton: 'Suivant',\n previousButton: 'Précédent',\n processButton: 'Confirmer',\n cancelButton: 'Annuler',\n stepCounter: 'Étape {{current}} de {{total}}'\n};\n\nexport function resolveFormStepperStepFormConfig(\n step: FormStepperStepConfig,\n context: FormStepperStepContext\n): FormStepperFormConfig {\n return typeof step.form === 'function' ? step.form(context) : step.form;\n}\n","import {\n Component,\n computed,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatStepperModule } from '@angular/material/stepper';\n\nimport { IgoCustomHtmlModule } from '@igo2/common/custom-html';\nimport { IgoLanguageModule, labelAttribute } from '@igo2/core/language';\n\nimport { IgoFormModule } from '../form.module';\nimport { Form, FormService } from '../shared';\nimport { buildFormFromConfig, markFormAsTouched } from '../shared/form.utils';\nimport {\n FormStepperLabels,\n FormStepperStepConfig\n} from './form-stepper.interface';\nimport {\n DEFAULT_FORM_STEPPER_LABELS,\n resolveFormStepperStepFormConfig\n} from './form-stepper.utils';\n\n@Component({\n selector: 'igo-form-stepper',\n templateUrl: './form-stepper.component.html',\n styleUrls: ['./form-stepper.component.scss'],\n imports: [\n MatStepperModule,\n IgoFormModule,\n MatButtonModule,\n IgoCustomHtmlModule,\n IgoLanguageModule\n ]\n})\nexport class FormStepperComponent {\n private readonly formService = inject(FormService);\n\n readonly steps = input.required<FormStepperStepConfig[]>();\n\n readonly initialData = input<Record<string, unknown>>({});\n\n readonly notice = input<string | undefined>();\n\n readonly labels = input<\n FormStepperLabels,\n Partial<FormStepperLabels> | undefined\n >(DEFAULT_FORM_STEPPER_LABELS, {\n transform: (value) => labelAttribute(value, DEFAULT_FORM_STEPPER_LABELS)\n });\n\n readonly showCancelButton = input(true);\n\n readonly completed = output<Record<string, unknown>>();\n\n readonly cancelled = output<void>();\n\n readonly dataChange = output<Record<string, unknown>>();\n\n readonly stepIndex = signal(0);\n\n private readonly stepResults = signal<\n Record<number, Record<string, unknown>>\n >({});\n\n readonly activeStep = computed<FormStepperStepConfig>(() => {\n const steps = this.steps();\n\n if (!steps.length) {\n throw new Error('Form stepper requires at least one step.');\n }\n\n return steps[this.stepIndex()];\n });\n\n readonly activeContextData = computed(() =>\n this.buildAggregateData(this.stepIndex() - 1)\n );\n\n readonly activeFormData = computed(() =>\n this.buildAggregateData(this.stepIndex())\n );\n\n readonly activeForm = computed<Form>(() =>\n buildFormFromConfig(\n this.formService,\n resolveFormStepperStepFormConfig(this.activeStep(), {\n data: this.activeContextData(),\n stepIndex: this.stepIndex(),\n steps: this.steps()\n })\n )\n );\n\n readonly activeNotice = computed(\n () => this.activeStep().notice ?? this.notice()\n );\n\n readonly stepCount = computed(() => this.steps().length);\n\n readonly stepNumber = computed(() => this.stepIndex() + 1);\n\n readonly resolvedLabels = computed<FormStepperLabels>(\n () =>\n labelAttribute(\n this.labels(),\n DEFAULT_FORM_STEPPER_LABELS\n ) as FormStepperLabels\n );\n\n readonly stepCounterLabel = computed(() =>\n this.resolvedLabels()\n .stepCounter.replace('{{current}}', String(this.stepNumber()))\n .replace('{{total}}', String(this.stepCount()))\n );\n\n readonly progressWidth = computed(\n () => `${(this.stepNumber() / this.stepCount()) * 100}%`\n );\n\n readonly maxNavigableStepIndex = computed(() => {\n const completedStepIndexes = Object.keys(this.stepResults())\n .map((index) => Number(index))\n .filter((index) => !Number.isNaN(index));\n\n if (!completedStepIndexes.length) {\n return 0;\n }\n\n return Math.min(\n Math.max(...completedStepIndexes) + 1,\n this.steps().length - 1\n );\n });\n\n readonly isLastStep = computed(\n () => this.stepIndex() === this.steps().length - 1\n );\n\n onSubmitStep(stepData: Record<string, unknown>): void {\n const form = this.activeForm();\n\n if (!form.control.valid) {\n markFormAsTouched(form);\n return;\n }\n\n const currentStepIndex = this.stepIndex();\n const nextStepResults = {\n ...this.stepResults(),\n [currentStepIndex]: stepData\n };\n\n Object.keys(nextStepResults)\n .map((index) => Number(index))\n .filter((index) => index > currentStepIndex)\n .forEach((index) => {\n delete nextStepResults[index];\n });\n\n this.stepResults.set(nextStepResults);\n\n const aggregateData = this.buildAggregateDataFrom(\n nextStepResults,\n currentStepIndex\n );\n\n this.dataChange.emit(aggregateData);\n\n if (this.isLastStep()) {\n this.completed.emit(aggregateData);\n return;\n }\n\n queueMicrotask(() => {\n this.stepIndex.set(currentStepIndex + 1);\n });\n }\n\n previous(): void {\n if (this.stepIndex() === 0) {\n return;\n }\n\n this.stepIndex.update((index) => index - 1);\n this.dataChange.emit(this.activeFormData());\n }\n\n cancel(): void {\n this.cancelled.emit();\n }\n\n reset(): void {\n this.stepResults.set({});\n this.stepIndex.set(0);\n this.dataChange.emit({ ...this.initialData() });\n }\n\n onSelectedIndexChange(index: number): void {\n if (index <= this.maxNavigableStepIndex()) {\n this.stepIndex.set(index);\n this.dataChange.emit(this.activeFormData());\n return;\n }\n\n queueMicrotask(() => {\n this.stepIndex.set(this.stepIndex());\n });\n }\n\n isCompletedStep(index: number): boolean {\n return this.stepResults()[index] !== undefined;\n }\n\n isEditableStep(index: number): boolean {\n return index <= this.maxNavigableStepIndex();\n }\n\n private buildAggregateData(lastStepIndex: number): Record<string, unknown> {\n return this.buildAggregateDataFrom(this.stepResults(), lastStepIndex);\n }\n\n private buildAggregateDataFrom(\n stepResults: Record<number, Record<string, unknown>>,\n lastStepIndex: number\n ): Record<string, unknown> {\n const aggregateData: Record<string, unknown> = { ...this.initialData() };\n\n for (let index = 0; index <= lastStepIndex; index += 1) {\n Object.assign(aggregateData, stepResults[index] ?? {});\n }\n\n return aggregateData;\n }\n}\n","<mat-stepper\n class=\"form-stepper\"\n [selectedIndex]=\"stepIndex()\"\n (selectedIndexChange)=\"onSelectedIndexChange($event)\"\n>\n @for (step of steps(); track step.label) {\n <mat-step\n [completed]=\"isCompletedStep($index)\"\n [editable]=\"isEditableStep($index)\"\n >\n <ng-template matStepLabel>{{ step.label | translate }}</ng-template>\n </mat-step>\n }\n</mat-stepper>\n\n<section class=\"form-stepper-content\">\n <header class=\"form-stepper-header\">\n <div class=\"form-stepper-header-main\">\n <div class=\"form-stepper-meta\">\n <p class=\"form-stepper-counter\">\n {{ stepCounterLabel() }}\n </p>\n <span class=\"form-stepper-badge\">{{\n activeStep().label | translate\n }}</span>\n </div>\n\n @if (activeStep().title) {\n <h2 class=\"form-stepper-title\">{{ activeStep().title | translate }}</h2>\n } @else {\n <h2 class=\"form-stepper-title\">{{ activeStep().label | translate }}</h2>\n }\n </div>\n\n <div class=\"form-stepper-progress\" aria-hidden=\"true\">\n <span\n class=\"form-stepper-progress-bar\"\n [style.width]=\"progressWidth()\"\n ></span>\n </div>\n </header>\n\n <igo-form\n [form]=\"activeForm()\"\n [formData]=\"activeFormData()\"\n (submitForm)=\"onSubmitStep($event)\"\n >\n @if (activeForm().fields.length || activeForm().groups.length) {\n <div class=\"form-dialog-container\">\n @for (field of activeForm().fields; track field.name) {\n <igo-form-field [field]=\"field\" />\n }\n @for (group of activeForm().groups; track group.name) {\n <igo-form-group [group]=\"group\" />\n }\n </div>\n }\n\n <div formButtons class=\"form-stepper-actions\">\n @if (showCancelButton()) {\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"cancel()\"\n >\n {{ resolvedLabels().cancelButton }}\n </button>\n }\n\n @if (stepIndex() > 0) {\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"previous()\"\n >\n {{ resolvedLabels().previousButton }}\n </button>\n }\n\n <button matButton=\"filled\" type=\"submit\" color=\"primary\">\n {{ isLastStep() ? labels().processButton : labels().nextButton }}\n </button>\n </div>\n </igo-form>\n</section>\n\n@if (activeNotice()) {\n <div class=\"form-stepper-notice\" role=\"note\">\n <igo-custom-html [html]=\"activeNotice()!\" />\n </div>\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogRef,\n MatDialogTitle\n} from '@angular/material/dialog';\n\nimport { CustomHtmlComponent } from '@igo2/common/custom-html';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { FormComponent } from '../form';\nimport { FormFieldComponent } from '../form-field';\nimport { FormGroupComponent } from '../form-group';\nimport { FormService } from '../shared';\nimport { buildFormFromConfig, markFormAsTouched } from '../shared/form.utils';\nimport { FormDialogData } from './form-dialog.interface';\n\n@Component({\n selector: 'igo-form-dialog',\n templateUrl: './form-dialog.component.html',\n styleUrls: ['./form-dialog.component.scss'],\n imports: [\n MatDialogTitle,\n FormComponent,\n FormFieldComponent,\n FormGroupComponent,\n MatDialogActions,\n MatButtonModule,\n CustomHtmlComponent,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class FormDialogComponent {\n languageService = inject(LanguageService);\n dialogRef = inject<MatDialogRef<FormDialogComponent>>(MatDialogRef);\n private formService = inject(FormService);\n data = inject<FormDialogData>(MAT_DIALOG_DATA);\n\n form$ = new BehaviorSubject<\n ReturnType<typeof buildFormFromConfig> | undefined\n >(undefined);\n data$: BehaviorSubject<Record<string, unknown>>;\n constructor() {\n this.data.processButtonText =\n this.data.processButtonText ?? 'igo.common.formDialog.processButtonText';\n this.data.cancelButtonText =\n this.data.cancelButtonText ?? 'igo.common.formDialog.cancelButtonText';\n this.data.title = this.data.title ?? 'igo.common.formDialog.title';\n this.data$ = this.data.data$ ?? new BehaviorSubject({});\n\n const form = buildFormFromConfig(this.formService, this.data);\n\n this.form$.next(form);\n }\n\n onSubmit(data: Record<string, unknown>) {\n const form = this.form$.getValue();\n if (!form) return;\n if (form.control.valid) {\n this.dialogRef.close(data);\n } else {\n markFormAsTouched(form);\n }\n }\n cancel() {\n this.dialogRef.close();\n }\n}\n","<h1 mat-dialog-title>{{ data.title | translate }}</h1>\n\n@if (form$ | async; as form) {\n <igo-form\n [form]=\"form\"\n [formData]=\"(data$ | async)!\"\n (submitForm)=\"onSubmit($event)\"\n >\n @if (form.fields.length || form.groups.length) {\n <div class=\"form-dialog-container\">\n @for (field of form.fields; track field.name) {\n <igo-form-field [field]=\"field\" />\n }\n @for (group of form.groups; track group.name) {\n <igo-form-group [group]=\"group\" />\n }\n </div>\n }\n <div formButtons mat-dialog-actions>\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"cancel()\"\n >\n {{ data.cancelButtonText | translate }}\n </button>\n <button matButton=\"filled\" type=\"submit\" color=\"primary\">\n {{ data.processButtonText | translate }}\n </button>\n </div>\n </igo-form>\n}\n<div>\n @if (data.notice && data.notice !== '') {\n <igo-custom-html [html]=\"data.notice\" />\n }\n</div>\n","import { Component, effect, inject, viewChild } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialogModule,\n MatDialogRef\n} from '@angular/material/dialog';\n\nimport { FormStepperComponent } from '../form-stepper/form-stepper.component';\nimport { FormStepperStepConfig } from '../form-stepper/form-stepper.interface';\nimport { FormDialogStepperData } from './form-dialog.interface';\n\nexport const DEFAULT_FORM_STEPPER_DIALOG_TITLE =\n 'Veuillez remplir le formulaire';\n\n@Component({\n selector: 'igo-form-stepper-dialog',\n templateUrl: './form-stepper-dialog.component.html',\n styleUrls: ['./form-stepper-dialog.component.scss'],\n imports: [MatDialogModule, FormStepperComponent]\n})\nexport class FormStepperDialogComponent {\n readonly formStepper = viewChild(FormStepperComponent);\n\n readonly dialogRef =\n inject<MatDialogRef<FormStepperDialogComponent>>(MatDialogRef);\n\n readonly data = inject<FormDialogStepperData>(MAT_DIALOG_DATA);\n\n readonly initialData: Record<string, unknown>;\n\n private appliedPanelClasses: string[] = [];\n\n constructor() {\n if (!this.data.steps?.length) {\n throw new Error('Form stepper dialog requires at least one step.');\n }\n\n this.data.title = this.data.title ?? DEFAULT_FORM_STEPPER_DIALOG_TITLE;\n this.initialData = { ...(this.data.data$?.value ?? {}) };\n\n effect(() => {\n const stepper = this.formStepper();\n const activeStep = stepper ? this.tryGetActiveStep(stepper) : undefined;\n const width = activeStep?.dialogWidth ?? this.data.width;\n const height = activeStep?.dialogHeight ?? this.data.height;\n\n if (width || height) {\n this.dialogRef.updateSize(width, height);\n }\n\n this.applyPanelClasses(activeStep?.dialogPanelClass);\n });\n }\n\n private tryGetActiveStep(\n stepper: FormStepperComponent\n ): FormStepperStepConfig | undefined {\n try {\n return stepper.activeStep();\n } catch {\n return undefined;\n }\n }\n\n private applyPanelClasses(panelClasses: string | string[] | undefined): void {\n const nextClasses = panelClasses\n ? Array.isArray(panelClasses)\n ? panelClasses\n : [panelClasses]\n : [];\n\n if (this.appliedPanelClasses.length) {\n this.dialogRef.removePanelClass(this.appliedPanelClasses);\n }\n\n if (nextClasses.length) {\n this.dialogRef.addPanelClass(nextClasses);\n }\n\n this.appliedPanelClasses = nextClasses;\n }\n\n onDataChange(data: Record<string, unknown>): void {\n this.data.data$?.next(data);\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n onCompleted(data: Record<string, unknown>): void {\n this.data.data$?.next(data);\n this.dialogRef.close(data);\n }\n}\n","<h1 mat-dialog-title>{{ data.title }}</h1>\n\n<igo-form-stepper\n [steps]=\"data.steps\"\n [initialData]=\"initialData\"\n [notice]=\"data.notice\"\n [labels]=\"data.labels\"\n (dataChange)=\"onDataChange($event)\"\n (completed)=\"onCompleted($event)\"\n (cancelled)=\"cancel()\"\n/>\n","import { Injectable, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\n\nimport { FormStepperConfig } from '../form-stepper/form-stepper.interface';\nimport { FormDialogComponent } from './form-dialog.component';\nimport {\n FormDialogData,\n FormDialogFormConfig,\n FormDialogOptions,\n FormDialogStepperData,\n FormDialogStepperOptions\n} from './form-dialog.interface';\nimport { FormStepperDialogComponent } from './form-stepper-dialog.component';\n\n@Injectable()\nexport class FormDialogService {\n private dialog = inject(MatDialog);\n\n public open<T extends Record<string, unknown> = Record<string, unknown>>(\n formDialogConfig?: FormDialogFormConfig,\n options?: FormDialogOptions\n ): Observable<T | undefined> {\n const data: FormDialogData = {\n formFieldConfigs: formDialogConfig?.formFieldConfigs,\n formGroupsConfigs: formDialogConfig?.formGroupsConfigs,\n ...options\n };\n const dialogRef = this.dialog.open(FormDialogComponent, {\n disableClose: false,\n data,\n ...options\n });\n return dialogRef.afterClosed() as Observable<T | undefined>;\n }\n\n public openStepper<\n T extends Record<string, unknown> = Record<string, unknown>\n >(\n formDialogStepperConfig: FormStepperConfig,\n options?: FormDialogStepperOptions\n ): Observable<T | undefined> {\n const resolvedOptions: FormDialogStepperOptions = {\n width: 'min(92vw, 44rem)',\n maxWidth: '95vw',\n ...options\n };\n const data: FormDialogStepperData = {\n steps: formDialogStepperConfig.steps,\n ...resolvedOptions\n };\n const dialogRef = this.dialog.open(FormStepperDialogComponent, {\n disableClose: false,\n ...resolvedOptions,\n data\n });\n return dialogRef.afterClosed() as Observable<T | undefined>;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { FormStepperComponent } from '../form-stepper/form-stepper.component';\nimport { FormDialogComponent } from './form-dialog.component';\nimport { FormDialogService } from './form-dialog.service';\nimport { FormStepperDialogComponent } from './form-stepper-dialog.component';\n\n/**\n * @deprecated import the FlexibleComponent directly\n */\n@NgModule({\n imports: [\n MatDialogModule,\n FormDialogComponent,\n FormStepperComponent,\n FormStepperDialogComponent\n ],\n exports: [\n FormDialogComponent,\n FormStepperComponent,\n FormStepperDialogComponent\n ],\n providers: [FormDialogService]\n})\nexport class IgoFormDialogModule {\n /**\n * @deprecated it has no effect\n */\n static forRoot(): ModuleWithProviders<IgoFormDialogModule> {\n return {\n ngModule: IgoFormDialogModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4","i5","i6","i9","i7","i1.FormFieldComponent","i2.FormFieldCheckboxComponent","i3.FormFieldDatetimeComponent","i4.FormFieldNumberComponent","i5.FormFieldRadiobuttonComponent","i6.FormFieldSelectComponent","i7.FormFieldTextComponent","i8.FormFieldTextareaComponent","i2.FormFieldComponent","i3.FormGroupComponent","i4.FormComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@igo2/common",
|
|
3
|
-
"version": "21.0.0-next.
|
|
3
|
+
"version": "21.0.0-next.43",
|
|
4
4
|
"description": "IGO Library",
|
|
5
5
|
"author": "IGO Community",
|
|
6
6
|
"keywords": [
|
|
@@ -182,8 +182,8 @@
|
|
|
182
182
|
"@angular/material": "^21.0.0",
|
|
183
183
|
"@angular/platform-browser": "^21.0.0",
|
|
184
184
|
"@floating-ui/utils": "^0.2.0",
|
|
185
|
-
"@igo2/core": "^21.0.0-next.
|
|
186
|
-
"@igo2/utils": "^21.0.0-next.
|
|
185
|
+
"@igo2/core": "^21.0.0-next.43",
|
|
186
|
+
"@igo2/utils": "^21.0.0-next.43",
|
|
187
187
|
"angular-shepherd": "^22.0.0",
|
|
188
188
|
"ngx-color": "^10.1.0",
|
|
189
189
|
"scroll-into-view-if-needed": "^3.1.0",
|
|
@@ -553,6 +553,9 @@ interface FormStepperStepConfig {
|
|
|
553
553
|
label: string;
|
|
554
554
|
title?: string;
|
|
555
555
|
notice?: string;
|
|
556
|
+
dialogWidth?: string;
|
|
557
|
+
dialogHeight?: string;
|
|
558
|
+
dialogPanelClass?: string | string[];
|
|
556
559
|
form: FormStepperFormConfig | FormStepperStepFormConfigResolver;
|
|
557
560
|
}
|
|
558
561
|
interface FormStepperConfig {
|
|
@@ -685,7 +688,10 @@ declare class FormStepperDialogComponent {
|
|
|
685
688
|
readonly dialogRef: MatDialogRef<FormStepperDialogComponent, any>;
|
|
686
689
|
readonly data: FormDialogStepperData;
|
|
687
690
|
readonly initialData: Record<string, unknown>;
|
|
691
|
+
private appliedPanelClasses;
|
|
688
692
|
constructor();
|
|
693
|
+
private tryGetActiveStep;
|
|
694
|
+
private applyPanelClasses;
|
|
689
695
|
onDataChange(data: Record<string, unknown>): void;
|
|
690
696
|
cancel(): void;
|
|
691
697
|
onCompleted(data: Record<string, unknown>): void;
|