@igo2/common 21.0.0-next.2 → 21.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/fesm2022/igo2-common-action.mjs +34 -49
  2. package/fesm2022/igo2-common-action.mjs.map +1 -1
  3. package/fesm2022/igo2-common-backdrop.mjs +5 -13
  4. package/fesm2022/igo2-common-backdrop.mjs.map +1 -1
  5. package/fesm2022/igo2-common-badge.mjs.map +1 -1
  6. package/fesm2022/igo2-common-collapsible.mjs +6 -14
  7. package/fesm2022/igo2-common-collapsible.mjs.map +1 -1
  8. package/fesm2022/igo2-common-color.mjs.map +1 -1
  9. package/fesm2022/igo2-common-confirm-dialog.mjs +2 -1
  10. package/fesm2022/igo2-common-confirm-dialog.mjs.map +1 -1
  11. package/fesm2022/igo2-common-context-menu.mjs +6 -4
  12. package/fesm2022/igo2-common-context-menu.mjs.map +1 -1
  13. package/fesm2022/igo2-common-datepicker.mjs +21 -15
  14. package/fesm2022/igo2-common-datepicker.mjs.map +1 -1
  15. package/fesm2022/igo2-common-dom.mjs +3 -1
  16. package/fesm2022/igo2-common-dom.mjs.map +1 -1
  17. package/fesm2022/igo2-common-drag-drop.mjs +59 -27
  18. package/fesm2022/igo2-common-drag-drop.mjs.map +1 -1
  19. package/fesm2022/igo2-common-dynamic-component.mjs +9 -3
  20. package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -1
  21. package/fesm2022/igo2-common-entity.mjs +131 -98
  22. package/fesm2022/igo2-common-entity.mjs.map +1 -1
  23. package/fesm2022/igo2-common-flexible.mjs +19 -71
  24. package/fesm2022/igo2-common-flexible.mjs.map +1 -1
  25. package/fesm2022/igo2-common-form.mjs +46 -45
  26. package/fesm2022/igo2-common-form.mjs.map +1 -1
  27. package/fesm2022/igo2-common-icon.mjs +1 -1
  28. package/fesm2022/igo2-common-icon.mjs.map +1 -1
  29. package/fesm2022/igo2-common-image.mjs.map +1 -1
  30. package/fesm2022/igo2-common-interactive-tour.mjs +40 -17
  31. package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -1
  32. package/fesm2022/igo2-common-json-dialog.mjs +2 -2
  33. package/fesm2022/igo2-common-json-dialog.mjs.map +1 -1
  34. package/fesm2022/igo2-common-keyvalue.mjs +3 -1
  35. package/fesm2022/igo2-common-keyvalue.mjs.map +1 -1
  36. package/fesm2022/igo2-common-list.mjs +11 -6
  37. package/fesm2022/igo2-common-list.mjs.map +1 -1
  38. package/fesm2022/igo2-common-panel.mjs +1 -1
  39. package/fesm2022/igo2-common-panel.mjs.map +1 -1
  40. package/fesm2022/igo2-common-resizable-bar.mjs +2 -4
  41. package/fesm2022/igo2-common-resizable-bar.mjs.map +1 -1
  42. package/fesm2022/igo2-common-select-value-dialog.mjs +14 -4
  43. package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -1
  44. package/fesm2022/igo2-common-sidenav.mjs.map +1 -1
  45. package/fesm2022/igo2-common-spinner.mjs +1 -1
  46. package/fesm2022/igo2-common-spinner.mjs.map +1 -1
  47. package/fesm2022/igo2-common-table.mjs +53 -60
  48. package/fesm2022/igo2-common-table.mjs.map +1 -1
  49. package/fesm2022/igo2-common-timepicker.mjs +8 -9
  50. package/fesm2022/igo2-common-timepicker.mjs.map +1 -1
  51. package/fesm2022/igo2-common-tool.mjs +19 -16
  52. package/fesm2022/igo2-common-tool.mjs.map +1 -1
  53. package/fesm2022/igo2-common-widget.mjs +4 -4
  54. package/fesm2022/igo2-common-widget.mjs.map +1 -1
  55. package/fesm2022/igo2-common-workspace.mjs +12 -16
  56. package/fesm2022/igo2-common-workspace.mjs.map +1 -1
  57. package/package.json +3 -3
  58. package/types/igo2-common-action.d.ts +2 -5
  59. package/types/igo2-common-backdrop.d.ts +2 -4
  60. package/types/igo2-common-badge.d.ts +4 -4
  61. package/types/igo2-common-collapsible.d.ts +2 -4
  62. package/types/igo2-common-confirm-dialog.d.ts +1 -1
  63. package/types/igo2-common-context-menu.d.ts +2 -2
  64. package/types/igo2-common-datepicker.d.ts +9 -9
  65. package/types/igo2-common-drag-drop.d.ts +14 -12
  66. package/types/igo2-common-dynamic-component.d.ts +3 -3
  67. package/types/igo2-common-entity.d.ts +61 -57
  68. package/types/igo2-common-flexible.d.ts +14 -28
  69. package/types/igo2-common-form.d.ts +24 -24
  70. package/types/igo2-common-icon.d.ts +1 -1
  71. package/types/igo2-common-interactive-tour.d.ts +6 -6
  72. package/types/igo2-common-json-dialog.d.ts +4 -4
  73. package/types/igo2-common-keyvalue.d.ts +4 -1
  74. package/types/igo2-common-list.d.ts +7 -7
  75. package/types/igo2-common-panel.d.ts +1 -1
  76. package/types/igo2-common-resizable-bar.d.ts +4 -5
  77. package/types/igo2-common-select-value-dialog.d.ts +2 -2
  78. package/types/igo2-common-sidenav.d.ts +2 -2
  79. package/types/igo2-common-spinner.d.ts +1 -1
  80. package/types/igo2-common-table.d.ts +16 -17
  81. package/types/igo2-common-timepicker.d.ts +3 -3
  82. package/types/igo2-common-tool.d.ts +7 -8
  83. package/types/igo2-common-widget.d.ts +7 -7
  84. package/types/igo2-common-workspace.d.ts +12 -12
@@ -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-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-dialog/form-dialog.component.ts","../../../packages/common/form/src/form-dialog/form-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 { Form, FormField, FormFieldGroup } from './form.interfaces';\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 return form.groups.reduce((acc: FormField[], group: FormFieldGroup) => {\n return acc.concat(group.fields);\n }, [].concat(form.fields));\n}\n\nexport function getFormFieldByName(form: Form, name: string): FormField {\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, FormFieldGroup } 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<Form>(undefined);\n\n /**\n * Input data\n */\n readonly formData = input<Record<string, any>>(undefined);\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, any>>();\n\n readonly buttons = viewChild<ElementRef>('buttons');\n\n get hasButtons(): boolean {\n return this.buttons().nativeElement.children.length !== 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, any> {\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, any>) {\n this.form().fields.forEach((field: FormField) => {\n field.control.setValue(t(data, field.name).safeObject);\n });\n\n this.form().groups.forEach((group: FormFieldGroup) => {\n group.fields.forEach((field: FormField) => {\n field.control.setValue(t(data, field.name).safeObject);\n });\n });\n }\n\n private updateDataWithFormField(data: Record<string, any>, field: FormField) {\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 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 { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\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 MatIconModule,\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<UntypedFormControl>(undefined);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>(undefined);\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>(undefined);\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 <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-icon\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n matPrefix\n >{{ disabled() === true ? 'check_box_outline_blank' : 'check_box' }}\n </mat-icon>\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\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 { BehaviorSubject } from 'rxjs';\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 MatButtonModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextComponent implements OnInit {\n private cdRef = inject(ChangeDetectorRef);\n\n disabled$ = new BehaviorSubject<boolean>(false);\n hide = true;\n private lastTimeoutRequest;\n\n /**\n * The field's form control\n */\n readonly formControl = input<UntypedFormControl>(undefined);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>(undefined);\n\n /**\n * if the input is a password\n */\n readonly isPassword = input<boolean>(undefined);\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>(undefined);\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$.next(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$.value;\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled$.next(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 = setTimeout(() => {\n this.hide = true;\n this.cdRef.detectChanges();\n }, delayMS);\n }\n }\n}\n","<mat-form-field>\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-icon\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n matPrefix\n >{{\n (disabled$ | async) === true ? 'check_box_outline_blank' : 'check_box'\n }}\n </mat-icon>\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 { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\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 { BehaviorSubject } from 'rxjs';\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 MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextareaComponent implements OnInit {\n disabled$ = new BehaviorSubject<boolean>(false);\n\n /**\n * The field's form control\n */\n readonly formControl = input<UntypedFormControl>(undefined);\n\n /**\n * Field placeholder\n */\n readonly placeholder = input<string>(undefined);\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>(undefined);\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$.next(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$.value;\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled$.next(disabled);\n }\n}\n","<mat-form-field>\n <textarea\n matInput\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n >\n </textarea>\n @if (disableSwitch() === true) {\n <mat-icon\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n matPrefix\n >{{\n (disabled$ | async) === true ? 'check_box_outline_blank' : 'check_box'\n }}\n </mat-icon>\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\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];\n }\n\n const name = match[1];\n const args = match[2];\n return Validators[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<FormField>(undefined);\n\n /**\n * Field inputs cache\n */\n private fieldInputs: FormFieldInputs = undefined;\n\n /**\n * Field subscribers cache\n */\n private fieldSubscribers: FormFieldSubscribers = undefined;\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 { 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 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<FormFieldGroup>(undefined);\n\n /**\n * Field placeholder\n */\n readonly errors = input<Record<string, string>>(undefined);\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 { 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 {\n Form,\n FormField,\n FormFieldGroup,\n FormFieldInputs,\n FormService\n} from '../shared';\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<Form>(undefined);\n data$ = new BehaviorSubject<Record<string, any>>(undefined);\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$;\n\n const fields: FormField<FormFieldInputs>[] = [];\n const groups: FormFieldGroup[] = [];\n this.data.formFieldConfigs?.map((config) =>\n fields.push(this.formService.field(config))\n );\n\n this.data.formGroupsConfigs?.map((formGroupsConfig) => {\n const fields = formGroupsConfig.formFieldConfigs?.map((config) =>\n this.formService.field(config)\n );\n groups.push(\n this.formService.group({ name: formGroupsConfig.name }, fields)\n );\n });\n const form = this.formService.form(fields, groups);\n\n this.form$.next(form);\n }\n\n onSubmit(data: Record<string, any>) {\n const form = this.form$.getValue();\n if (form.control.valid) {\n this.dialogRef.close(data);\n } else {\n if (form.groups?.length) {\n form.groups.map((group) => {\n Object.keys(group.control.controls).map((k) => {\n group.control.controls[k].markAsTouched();\n group.control.controls[k].updateValueAndValidity();\n });\n });\n } else {\n form.fields.map((f) => {\n f.control.markAsTouched();\n f.control.updateValueAndValidity();\n });\n }\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) {\n <div class=\"form-dialog-container\">\n @for (field of form.fields; track field) {\n <igo-form-field [field]=\"field\" />\n }\n @for (group of form.groups; track group) {\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 { Injectable, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\n\nimport { FormDialogComponent } from './form-dialog.component';\nimport {\n FormDialogData,\n FormDialogFormConfig,\n FormDialogOptions\n} from './form-dialog.interface';\n\n@Injectable()\nexport class FormDialogService {\n private dialog = inject(MatDialog);\n\n public open(\n formDialogConfig?: FormDialogFormConfig,\n options?: FormDialogOptions\n ): Observable<Record<string, any>> {\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();\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { FormDialogComponent } from './form-dialog.component';\nimport { FormDialogService } from './form-dialog.service';\n\n/**\n * @deprecated import the FlexibleComponent directly\n */\n@NgModule({\n imports: [MatDialogModule, FormDialogComponent],\n exports: [FormDialogComponent],\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","i5","i6","i1.FormFieldComponent","i2.FormFieldSelectComponent","i3.FormFieldTextComponent","i4.FormFieldTextareaComponent"],"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-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-dialog/form-dialog.component.ts","../../../packages/common/form/src/form-dialog/form-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 { Form, FormField } from './form.interfaces';\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, FormFieldGroup } 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: FormField) => {\n field.control.setValue(t(data, field.name).safeObject);\n });\n\n this.form()!.groups.forEach((group: FormFieldGroup) => {\n group.fields.forEach((field: FormField) => {\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 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 { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\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 MatIconModule,\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 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 <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-icon\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n matPrefix\n >{{ disabled() === true ? 'check_box_outline_blank' : 'check_box' }}\n </mat-icon>\n }\n @if (formControl().errors) {\n <mat-error>{{ getErrorMessage() | translate }}</mat-error>\n }\n</mat-form-field>\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\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 { BehaviorSubject } from 'rxjs';\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 MatButtonModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextComponent implements OnInit {\n private cdRef = inject(ChangeDetectorRef);\n\n disabled$ = new BehaviorSubject<boolean>(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 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$.next(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$.value;\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled$.next(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 <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-icon\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n matPrefix\n >{{\n (disabled$ | async) === true ? 'check_box_outline_blank' : 'check_box'\n }}\n </mat-icon>\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 { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n input\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport type { UntypedFormControl } from '@angular/forms';\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 { BehaviorSubject } from 'rxjs';\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 MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class FormFieldTextareaComponent implements OnInit {\n disabled$ = new BehaviorSubject<boolean>(false);\n\n /**\n * The field's form control\n */\n readonly formControl = input.required<UntypedFormControl>();\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$.next(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$.value;\n if (disabled === true) {\n this.formControl().disable();\n } else {\n this.formControl().enable();\n }\n this.disabled$.next(disabled);\n }\n}\n","<mat-form-field>\n <textarea\n matInput\n [required]=\"required\"\n [placeholder]=\"placeholder() | translate\"\n [formControl]=\"formControl()\"\n >\n </textarea>\n @if (disableSwitch() === true) {\n <mat-icon\n class=\"igo-form-disable-switch\"\n (click)=\"onDisableSwitchClick()\"\n matPrefix\n >{{\n (disabled$ | async) === true ? 'check_box_outline_blank' : 'check_box'\n }}\n </mat-icon>\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 { 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 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 { 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 {\n Form,\n FormField,\n FormFieldGroup,\n FormFieldInputs,\n FormService\n} from '../shared';\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<Form | undefined>(undefined);\n data$: BehaviorSubject<Record<string, any>>;\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 fields: FormField<FormFieldInputs>[] = [];\n const groups: FormFieldGroup[] = [];\n this.data.formFieldConfigs?.map((config) =>\n fields.push(this.formService.field(config))\n );\n\n this.data.formGroupsConfigs?.map((formGroupsConfig) => {\n const fields = formGroupsConfig.formFieldConfigs?.map((config) =>\n this.formService.field(config)\n );\n groups.push(\n this.formService.group({ name: formGroupsConfig.name }, fields)\n );\n });\n const form = this.formService.form(fields, groups);\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 if (form.groups?.length) {\n form.groups.map((group) => {\n Object.keys(group.control.controls).map((k) => {\n group.control.controls[k].markAsTouched();\n group.control.controls[k].updateValueAndValidity();\n });\n });\n } else {\n form.fields.map((f) => {\n f.control.markAsTouched();\n f.control.updateValueAndValidity();\n });\n }\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) {\n <div class=\"form-dialog-container\">\n @for (field of form.fields; track field) {\n <igo-form-field [field]=\"field\" />\n }\n @for (group of form.groups; track group) {\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 { Injectable, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\n\nimport { FormDialogComponent } from './form-dialog.component';\nimport {\n FormDialogData,\n FormDialogFormConfig,\n FormDialogOptions\n} from './form-dialog.interface';\n\n@Injectable()\nexport class FormDialogService {\n private dialog = inject(MatDialog);\n\n public open(\n formDialogConfig?: FormDialogFormConfig,\n options?: FormDialogOptions\n ): Observable<Record<string, any>> {\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();\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { FormDialogComponent } from './form-dialog.component';\nimport { FormDialogService } from './form-dialog.service';\n\n/**\n * @deprecated import the FlexibleComponent directly\n */\n@NgModule({\n imports: [MatDialogModule, FormDialogComponent],\n exports: [FormDialogComponent],\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","i5","i6","i1.FormFieldComponent","i2.FormFieldSelectComponent","i3.FormFieldTextComponent","i4.FormFieldTextareaComponent"],"mappings":"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"}
@@ -69,7 +69,7 @@ function provideIcon(style = 'outlined') {
69
69
 
70
70
  class IgoIconComponent {
71
71
  iconService = inject(IconService);
72
- color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
72
+ color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
73
73
  icon = input.required(...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
74
74
  constructor() {
75
75
  effect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-common-icon.mjs","sources":["../../../packages/common/icon/src/shared/icons.ts","../../../packages/common/icon/src/shared/icon.service.ts","../../../packages/common/icon/src/icon.provider.ts","../../../packages/common/icon/src/icon/icon.component.ts","../../../packages/common/icon/src/icon/icon.component.html","../../../packages/common/icon/src/igo2-common-icon.ts"],"sourcesContent":["import { IconSvg } from './icon.interface';\n\n/**\n * Source: https://pictogrammers.com/library/mdi/\n */\n\nexport const KEYBOARD_ESC_ICON: IconSvg = {\n name: 'keyboard-esc',\n svg: `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>keyboard-esc</title><path d=\"M1 7H7V9H3V11H7V13H3V15H7V17H1V7M11 7H15V9H11V11H13C14.11 11 15 11.9 15 13V15C15 16.11 14.11 17 13 17H9V15H13V13H11C9.9 13 9 12.11 9 11V9C9 7.9 9.9 7 11 7M19 7H21C22.11 7 23 7.9 23 9V10H21V9H19V15H21V14H23V15C23 16.11 22.11 17 21 17H19C17.9 17 17 16.11 17 15V9C17 7.9 17.9 7 19 7Z\" /></svg>\n`\n};\n\nexport const SELECTION_MARKER_ICON: IconSvg = {\n name: 'selection-marker',\n svg: `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>selection-marker</title><path d=\"M2 4C2 2.89 2.9 2 4 2H7V4H4V7H2V4M22 4V7H20V4H17V2H20C21.1 2 22 2.89 22 4M2 20V17H4V20H7V22H4C2.9 22 2 21.11 2 20M10 2H14V4H10V2M10 20H14V22H10V20M2 10H4V14H2V10M18.5 13C20.4 13 22 14.6 22 16.5C22 19.1 18.5 23 18.5 23C18.5 23 15 19.1 15 16.5C15 14.6 16.6 13 18.5 13M18.5 17.8C19.2 17.8 19.8 17.2 19.7 16.6C19.7 16 19.1 15.4 18.5 15.4C17.9 15.4 17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8M20 10H22V12.34C21.42 11.84 20.74 11.45 20 11.23V10Z\" /></svg>\n`\n};\n\nexport const PRESENTATION_PLAY_ICON: IconSvg = {\n name: 'presentation-play',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>presentation-play</title><path d=\"M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z\" /></svg>`\n};\n\nexport const CIRCLE_SMALL_ICON: IconSvg = {\n name: 'presentation-play',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>circle-small</title><path d=\"M12,10A2,2 0 0,0 10,12C10,13.11 10.9,14 12,14C13.11,14 14,13.11 14,12A2,2 0 0,0 12,10Z\" /></svg>`\n};\n\nexport const VECTOR_SQUARE_ICON: IconSvg = {\n name: 'presentation-play',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>vector-square</title><path d=\"M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z\" /></svg>`\n};\n\nexport const SORT_ALPHA_ON_ICON: IconSvg = {\n name: 'sort-alpha-on',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M3 7A2 2 0 0 0 1 9V17H3V13H5V17H7V9A2 2 0 0 0 5 7H3M3 9H5V11H3M15 10.5V9A2 2 0 0 0 13 7H9V17H13A2 2 0 0 0 15 15V13.5A1.54 1.54 0 0 0 13.5 12A1.54 1.54 0 0 0 15 10.5M13 15H11V13H13V15M13 11H11V9H13M19 7A2 2 0 0 0 17 9V15A2 2 0 0 0 19 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10H23V9A2 2 0 0 0 21 7Z\" /></svg>`\n};\n\nexport const SORT_ALPHA_OFF_ICON: IconSvg = {\n name: 'sort-alpha-off',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12.2 9L10.2 7H13A2 2 0 0 1 15 9V10.5A1.47 1.47 0 0 1 14.64 11.44L13 9.8V9M23 10V9A2 2 0 0 0 21 7H19A2 2 0 0 0 17 9V13.8L20.2 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10M15 14.35L22.11 21.46L20.84 22.73L14.46 16.35A2 2 0 0 1 13 17H9V10.89L7 8.89V17H5V13H3V17H1V9A2 2 0 0 1 3 7H5.12L1.12 3L2.39 1.73L9 8.34L11 10.34L11.66 11L15 14.34M5 9H3V11H5M13 14.89L11.11 13H11V15H13Z\" /></svg>`\n};\n","import { Injectable, inject } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { IconSvg } from './icon.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IconService {\n private iconRegistry = inject(MatIconRegistry);\n private sanitizer = inject(DomSanitizer);\n\n registerSvg(icon: IconSvg): void {\n this.iconRegistry.addSvgIconLiteral(\n icon.name,\n this.sanitizer.bypassSecurityTrustHtml(icon.svg)\n );\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\n\ntype MaterialSymbolStyle = 'outlined' | 'rounded' | 'sharp';\n\nexport function provideIcon(\n style: MaterialSymbolStyle = 'outlined'\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n MatIconModule,\n provideAppInitializer(() => {\n const iconRegistry = inject(MatIconRegistry);\n iconRegistry.setDefaultFontSetClass(`material-symbols-${style}`);\n return;\n })\n ]);\n}\n","import { Component, effect, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { IconSvg } from '../shared';\nimport { IconService } from '../shared/icon.service';\n\n@Component({\n selector: 'igo-icon',\n imports: [MatIconModule],\n templateUrl: './icon.component.html',\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `\n})\nexport class IgoIconComponent {\n private iconService = inject(IconService);\n\n readonly color = input<string | null | undefined>(undefined);\n\n readonly icon = input.required<string | IconSvg>();\n\n constructor() {\n effect(() => {\n const currentIcon = this.icon();\n if (this.isSvg(currentIcon)) {\n this.registerSvg(currentIcon);\n }\n });\n }\n\n registerSvg(icon: IconSvg): void {\n this.iconService.registerSvg(icon);\n }\n\n isSvg(icon: string | IconSvg): icon is IconSvg {\n return typeof icon != 'string';\n }\n}\n","@let _icon = icon();\n@if (isSvg(_icon)) {\n <mat-icon [svgIcon]=\"_icon.name\" [color]=\"color()\" />\n} @else {\n <mat-icon [color]=\"color()\">{{ _icon }}</mat-icon>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igo2-common-icon.mjs","sources":["../../../packages/common/icon/src/shared/icons.ts","../../../packages/common/icon/src/shared/icon.service.ts","../../../packages/common/icon/src/icon.provider.ts","../../../packages/common/icon/src/icon/icon.component.ts","../../../packages/common/icon/src/icon/icon.component.html","../../../packages/common/icon/src/igo2-common-icon.ts"],"sourcesContent":["import { IconSvg } from './icon.interface';\n\n/**\n * Source: https://pictogrammers.com/library/mdi/\n */\n\nexport const KEYBOARD_ESC_ICON: IconSvg = {\n name: 'keyboard-esc',\n svg: `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>keyboard-esc</title><path d=\"M1 7H7V9H3V11H7V13H3V15H7V17H1V7M11 7H15V9H11V11H13C14.11 11 15 11.9 15 13V15C15 16.11 14.11 17 13 17H9V15H13V13H11C9.9 13 9 12.11 9 11V9C9 7.9 9.9 7 11 7M19 7H21C22.11 7 23 7.9 23 9V10H21V9H19V15H21V14H23V15C23 16.11 22.11 17 21 17H19C17.9 17 17 16.11 17 15V9C17 7.9 17.9 7 19 7Z\" /></svg>\n`\n};\n\nexport const SELECTION_MARKER_ICON: IconSvg = {\n name: 'selection-marker',\n svg: `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>selection-marker</title><path d=\"M2 4C2 2.89 2.9 2 4 2H7V4H4V7H2V4M22 4V7H20V4H17V2H20C21.1 2 22 2.89 22 4M2 20V17H4V20H7V22H4C2.9 22 2 21.11 2 20M10 2H14V4H10V2M10 20H14V22H10V20M2 10H4V14H2V10M18.5 13C20.4 13 22 14.6 22 16.5C22 19.1 18.5 23 18.5 23C18.5 23 15 19.1 15 16.5C15 14.6 16.6 13 18.5 13M18.5 17.8C19.2 17.8 19.8 17.2 19.7 16.6C19.7 16 19.1 15.4 18.5 15.4C17.9 15.4 17.3 15.9 17.3 16.6C17.3 17.2 17.8 17.8 18.5 17.8M20 10H22V12.34C21.42 11.84 20.74 11.45 20 11.23V10Z\" /></svg>\n`\n};\n\nexport const PRESENTATION_PLAY_ICON: IconSvg = {\n name: 'presentation-play',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>presentation-play</title><path d=\"M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z\" /></svg>`\n};\n\nexport const CIRCLE_SMALL_ICON: IconSvg = {\n name: 'presentation-play',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>circle-small</title><path d=\"M12,10A2,2 0 0,0 10,12C10,13.11 10.9,14 12,14C13.11,14 14,13.11 14,12A2,2 0 0,0 12,10Z\" /></svg>`\n};\n\nexport const VECTOR_SQUARE_ICON: IconSvg = {\n name: 'presentation-play',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>vector-square</title><path d=\"M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z\" /></svg>`\n};\n\nexport const SORT_ALPHA_ON_ICON: IconSvg = {\n name: 'sort-alpha-on',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M3 7A2 2 0 0 0 1 9V17H3V13H5V17H7V9A2 2 0 0 0 5 7H3M3 9H5V11H3M15 10.5V9A2 2 0 0 0 13 7H9V17H13A2 2 0 0 0 15 15V13.5A1.54 1.54 0 0 0 13.5 12A1.54 1.54 0 0 0 15 10.5M13 15H11V13H13V15M13 11H11V9H13M19 7A2 2 0 0 0 17 9V15A2 2 0 0 0 19 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10H23V9A2 2 0 0 0 21 7Z\" /></svg>`\n};\n\nexport const SORT_ALPHA_OFF_ICON: IconSvg = {\n name: 'sort-alpha-off',\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12.2 9L10.2 7H13A2 2 0 0 1 15 9V10.5A1.47 1.47 0 0 1 14.64 11.44L13 9.8V9M23 10V9A2 2 0 0 0 21 7H19A2 2 0 0 0 17 9V13.8L20.2 17H21A2 2 0 0 0 23 15V14H21V15H19V9H21V10M15 14.35L22.11 21.46L20.84 22.73L14.46 16.35A2 2 0 0 1 13 17H9V10.89L7 8.89V17H5V13H3V17H1V9A2 2 0 0 1 3 7H5.12L1.12 3L2.39 1.73L9 8.34L11 10.34L11.66 11L15 14.34M5 9H3V11H5M13 14.89L11.11 13H11V15H13Z\" /></svg>`\n};\n","import { Injectable, inject } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { IconSvg } from './icon.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IconService {\n private iconRegistry = inject(MatIconRegistry);\n private sanitizer = inject(DomSanitizer);\n\n registerSvg(icon: IconSvg): void {\n this.iconRegistry.addSvgIconLiteral(\n icon.name,\n this.sanitizer.bypassSecurityTrustHtml(icon.svg)\n );\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\n\ntype MaterialSymbolStyle = 'outlined' | 'rounded' | 'sharp';\n\nexport function provideIcon(\n style: MaterialSymbolStyle = 'outlined'\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n MatIconModule,\n provideAppInitializer(() => {\n const iconRegistry = inject(MatIconRegistry);\n iconRegistry.setDefaultFontSetClass(`material-symbols-${style}`);\n return;\n })\n ]);\n}\n","import { Component, effect, inject, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { IconSvg } from '../shared';\nimport { IconService } from '../shared/icon.service';\n\n@Component({\n selector: 'igo-icon',\n imports: [MatIconModule],\n templateUrl: './icon.component.html',\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `\n})\nexport class IgoIconComponent {\n private iconService = inject(IconService);\n\n readonly color = input<string | null>();\n\n readonly icon = input.required<string | IconSvg>();\n\n constructor() {\n effect(() => {\n const currentIcon = this.icon();\n if (this.isSvg(currentIcon)) {\n this.registerSvg(currentIcon);\n }\n });\n }\n\n registerSvg(icon: IconSvg): void {\n this.iconService.registerSvg(icon);\n }\n\n isSvg(icon: string | IconSvg): icon is IconSvg {\n return typeof icon != 'string';\n }\n}\n","@let _icon = icon();\n@if (isSvg(_icon)) {\n <mat-icon [svgIcon]=\"_icon.name\" [color]=\"color()\" />\n} @else {\n <mat-icon [color]=\"color()\">{{ _icon }}</mat-icon>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-common-image.mjs","sources":["../../../packages/common/image/src/image-error.directive.ts","../../../packages/common/image/src/image.ts","../../../packages/common/image/src/secure-image.pipe.ts","../../../packages/common/image/src/image.module.ts","../../../packages/common/image/src/public_api.ts","../../../packages/common/image/src/igo2-common-image.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input\n} from '@angular/core';\n\n@Directive({\n selector: '[igoImageError]'\n})\nexport class ImageErrorDirective {\n private el = inject(ElementRef);\n\n readonly errorImageUrl = input('./igo2/common/images/na.png');\n readonly hideError = input(false);\n\n @HostListener('error', ['$event'])\n public onError(event: any): void {\n if (this.hideError()) {\n this.el.nativeElement.style.display = 'none';\n } else {\n event.target.src = this.errorImageUrl();\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport { Observable, catchError, switchMap } from 'rxjs';\n\nexport function fetchImageFromDepotUrl(\n url: string,\n depotUrl: string,\n http: HttpClient\n) {\n const headers = new HttpHeaders({\n 'Content-Type': 'text/plain',\n activityInterceptor: 'false',\n interceptError: 'false'\n });\n\n const regexDepot = new RegExp(depotUrl + '.*?(?=\"|$)');\n if (regexDepot.test(url)) {\n url = url.match(regexDepot)[0];\n }\n\n return http\n .get(url, {\n headers,\n responseType: 'blob'\n })\n .pipe(\n catchError((err) => {\n err.error.caught = true;\n err.error.toDisplay = false;\n throw err;\n }),\n switchMap((blob) => {\n return new Observable((observer) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n observer.next(reader.result);\n observer.complete();\n };\n });\n })\n ) as Observable<string>;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { Observable } from 'rxjs';\nimport { Cacheable } from 'ts-cacheable';\n\nimport { fetchImageFromDepotUrl } from './image';\n\n@Pipe({\n name: 'secureImage'\n})\nexport class SecureImagePipe implements PipeTransform {\n private http = inject(HttpClient);\n private configService = inject(ConfigService);\n\n @Cacheable({\n maxCacheCount: 20\n })\n transform(url: string): Observable<string> {\n const depotUrl = this.configService?.getConfig('depot.url');\n return fetchImageFromDepotUrl(url, depotUrl, this.http);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ImageErrorDirective } from './image-error.directive';\nimport { SecureImagePipe } from './secure-image.pipe';\n\n/**\n * @deprecated import the components/directives directly or IMAGE_DIRECTIVES for the set\n */\n@NgModule({\n imports: [SecureImagePipe, ImageErrorDirective],\n exports: [SecureImagePipe, ImageErrorDirective]\n})\nexport class IgoImageModule {\n static forRoot(): ModuleWithProviders<IgoImageModule> {\n return {\n ngModule: IgoImageModule,\n providers: []\n };\n }\n}\n","import { ImageErrorDirective } from './image-error.directive';\nimport { SecureImagePipe } from './secure-image.pipe';\n\nexport * from './image';\nexport * from './image.module';\nexport * from './image-error.directive';\nexport * from './secure-image.pipe';\n\nexport const IMAGE_DIRECTIVES = [SecureImagePipe, ImageErrorDirective] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"igo2-common-image.mjs","sources":["../../../packages/common/image/src/image-error.directive.ts","../../../packages/common/image/src/image.ts","../../../packages/common/image/src/secure-image.pipe.ts","../../../packages/common/image/src/image.module.ts","../../../packages/common/image/src/public_api.ts","../../../packages/common/image/src/igo2-common-image.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input\n} from '@angular/core';\n\n@Directive({\n selector: '[igoImageError]'\n})\nexport class ImageErrorDirective {\n private el = inject(ElementRef);\n\n readonly errorImageUrl = input('./igo2/common/images/na.png');\n readonly hideError = input(false);\n\n @HostListener('error', ['$event'])\n public onError(event: any): void {\n if (this.hideError()) {\n this.el.nativeElement.style.display = 'none';\n } else {\n event.target.src = this.errorImageUrl();\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport { Observable, catchError, switchMap } from 'rxjs';\n\nexport function fetchImageFromDepotUrl(\n url: string,\n depotUrl: string,\n http: HttpClient\n) {\n const headers = new HttpHeaders({\n 'Content-Type': 'text/plain',\n activityInterceptor: 'false',\n interceptError: 'false'\n });\n\n const regexDepot = new RegExp(depotUrl + '.*?(?=\"|$)');\n if (regexDepot.test(url)) {\n url = url.match(regexDepot)![0];\n }\n\n return http\n .get(url, {\n headers,\n responseType: 'blob'\n })\n .pipe(\n catchError((err) => {\n err.error.caught = true;\n err.error.toDisplay = false;\n throw err;\n }),\n switchMap((blob) => {\n return new Observable((observer) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n observer.next(reader.result);\n observer.complete();\n };\n });\n })\n ) as Observable<string>;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { Observable } from 'rxjs';\nimport { Cacheable } from 'ts-cacheable';\n\nimport { fetchImageFromDepotUrl } from './image';\n\n@Pipe({\n name: 'secureImage'\n})\nexport class SecureImagePipe implements PipeTransform {\n private http = inject(HttpClient);\n private configService = inject(ConfigService);\n\n @Cacheable({\n maxCacheCount: 20\n })\n transform(url: string): Observable<string> {\n const depotUrl = this.configService?.getConfig('depot.url');\n return fetchImageFromDepotUrl(url, depotUrl, this.http);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ImageErrorDirective } from './image-error.directive';\nimport { SecureImagePipe } from './secure-image.pipe';\n\n/**\n * @deprecated import the components/directives directly or IMAGE_DIRECTIVES for the set\n */\n@NgModule({\n imports: [SecureImagePipe, ImageErrorDirective],\n exports: [SecureImagePipe, ImageErrorDirective]\n})\nexport class IgoImageModule {\n static forRoot(): ModuleWithProviders<IgoImageModule> {\n return {\n ngModule: IgoImageModule,\n providers: []\n };\n }\n}\n","import { ImageErrorDirective } from './image-error.directive';\nimport { SecureImagePipe } from './secure-image.pipe';\n\nexport * from './image';\nexport * from './image.module';\nexport * from './image-error.directive';\nexport * from './secure-image.pipe';\n\nexport const IMAGE_DIRECTIVES = [SecureImagePipe, ImageErrorDirective] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -48,8 +48,7 @@ class InteractiveTourLoader {
48
48
  if (this.allToursOptions === undefined) {
49
49
  return undefined;
50
50
  }
51
- let nameInConfigFile = toolName;
52
- nameInConfigFile = nameInConfigFile.replace(/\s/g, '');
51
+ const nameInConfigFile = toolName.replace(/\s/g, '');
53
52
  return this.allToursOptions[nameInConfigFile];
54
53
  }
55
54
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: InteractiveTourLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -231,7 +230,11 @@ class InteractiveTourService {
231
230
  !document.querySelector(actionConfig.condition)))) {
232
231
  return;
233
232
  }
234
- const element = document.querySelector(actionConfig.element || step.element);
233
+ const selector = actionConfig.element || step.element;
234
+ if (!selector) {
235
+ return;
236
+ }
237
+ const element = document.querySelector(selector);
235
238
  const action = this.getAction(actionConfig.action);
236
239
  if (element && action) {
237
240
  element[action]();
@@ -239,7 +242,9 @@ class InteractiveTourService {
239
242
  }
240
243
  executeActionPromise(step, actionConfig) {
241
244
  return new Promise((resolve) => {
242
- this.executeAction(step, actionConfig);
245
+ if (step && actionConfig) {
246
+ this.executeAction(step, actionConfig);
247
+ }
243
248
  if (!actionConfig || !actionConfig.waitFor) {
244
249
  resolve();
245
250
  return;
@@ -290,15 +295,19 @@ class InteractiveTourService {
290
295
  canClickTarget: step.disableInteraction
291
296
  ? !step.disableInteraction
292
297
  : undefined,
293
- title: this.languageService.translate.instant(step.title || tourConfig.title),
298
+ title: this.languageService.translate.instant(step.title || tourConfig.title || ''),
294
299
  text: [this.languageService.translate.instant(step.text)],
295
300
  when: {
296
301
  show: () => {
297
- this.executeAction(step, step.onShow);
302
+ if (step.onShow) {
303
+ this.executeAction(step, step.onShow);
304
+ }
298
305
  },
299
306
  hide: () => {
300
307
  this.previousStep = step;
301
- this.executeAction(step, step.onHide);
308
+ if (step.onHide) {
309
+ this.executeAction(step, step.onHide);
310
+ }
302
311
  }
303
312
  }
304
313
  });
@@ -308,6 +317,9 @@ class InteractiveTourService {
308
317
  }
309
318
  startTour(toolName) {
310
319
  const stepConfig = this.interactiveTourLoader.getTourOptionData(toolName);
320
+ if (!stepConfig) {
321
+ return;
322
+ }
311
323
  this.shepherdService.defaultStepOptions = {
312
324
  classes: stepConfig.class,
313
325
  highlightClass: stepConfig.highlightClass,
@@ -322,10 +334,12 @@ class InteractiveTourService {
322
334
  this.shepherdService.modal = true;
323
335
  this.shepherdService.confirmCancel = false;
324
336
  this.shepherdService.addSteps(shepherdSteps);
325
- this.shepherdService.tourObject.on('show', this.addProgress);
326
- this.shepherdService.tourObject.on('cancel', (index) => {
327
- this.checkNext(index, this.shepherdService.tourObject);
328
- });
337
+ if (this.shepherdService.tourObject) {
338
+ this.shepherdService.tourObject.on('show', this.addProgress);
339
+ this.shepherdService.tourObject.on('cancel', (index) => {
340
+ this.checkNext(index, this.shepherdService.tourObject);
341
+ });
342
+ }
329
343
  this.shepherdService.start();
330
344
  }
331
345
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: InteractiveTourService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -347,7 +361,7 @@ class InteractiveTourComponent {
347
361
  * Toolbox that holds main tools
348
362
  */
349
363
  tourToStart = input('', ...(ngDevMode ? [{ debugName: "tourToStart" }] : /* istanbul ignore next */ []));
350
- styleButton = input(undefined, ...(ngDevMode ? [{ debugName: "styleButton" }] : /* istanbul ignore next */ []));
364
+ styleButton = input(...(ngDevMode ? [undefined, { debugName: "styleButton" }] : /* istanbul ignore next */ []));
351
365
  discoverTitleInLocale$ = input(of('IGO'), ...(ngDevMode ? [{ debugName: "discoverTitleInLocale$" }] : /* istanbul ignore next */ []));
352
366
  constructor() {
353
367
  this.iconService.registerSvg(this.presentationIcon);
@@ -372,8 +386,9 @@ class InteractiveTourComponent {
372
386
  }
373
387
  get activeToolName() {
374
388
  if (this.toolbox) {
375
- if (this.isActiveTool) {
376
- return this.toolbox.activeTool$.getValue().name;
389
+ const activeTool = this.toolbox.activeTool$.getValue();
390
+ if (activeTool) {
391
+ return activeTool.name;
377
392
  }
378
393
  else {
379
394
  return 'global';
@@ -388,14 +403,18 @@ class InteractiveTourComponent {
388
403
  return this.toolbox.activeTool$.getValue() !== undefined;
389
404
  }
390
405
  else {
391
- return undefined;
406
+ return false;
392
407
  }
393
408
  }
394
409
  get isToolHaveTour() {
410
+ const tourToStart = this.getTourToStart();
411
+ if (!tourToStart) {
412
+ return false;
413
+ }
395
414
  if (this.activeToolName === 'about' && !this.tourToStart()) {
396
415
  return false;
397
416
  }
398
- return this.interactiveTourService.isToolHaveTourConfig(this.getTourToStart());
417
+ return this.interactiveTourService.isToolHaveTourConfig(tourToStart);
399
418
  }
400
419
  get showTourButton() {
401
420
  // 2 conditions to show: have Tour on tool in Config file and if we are in mobile displayInMobile= true
@@ -415,7 +434,11 @@ class InteractiveTourComponent {
415
434
  return this.interactiveTourService.isTourDisplayInMobile();
416
435
  }
417
436
  get disabledTourButton() {
418
- return this.interactiveTourService.disabledTourButton(this.activeToolName);
437
+ const activeToolName = this.activeToolName;
438
+ if (!activeToolName) {
439
+ return true;
440
+ }
441
+ return this.interactiveTourService.disabledTourButton(activeToolName);
419
442
  }
420
443
  startInteractiveTour() {
421
444
  const tour = this.getTourToStart();