@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.
- package/fesm2022/igo2-common-action.mjs +34 -49
- package/fesm2022/igo2-common-action.mjs.map +1 -1
- package/fesm2022/igo2-common-backdrop.mjs +5 -13
- package/fesm2022/igo2-common-backdrop.mjs.map +1 -1
- package/fesm2022/igo2-common-badge.mjs.map +1 -1
- package/fesm2022/igo2-common-collapsible.mjs +6 -14
- package/fesm2022/igo2-common-collapsible.mjs.map +1 -1
- package/fesm2022/igo2-common-color.mjs.map +1 -1
- package/fesm2022/igo2-common-confirm-dialog.mjs +2 -1
- package/fesm2022/igo2-common-confirm-dialog.mjs.map +1 -1
- package/fesm2022/igo2-common-context-menu.mjs +6 -4
- package/fesm2022/igo2-common-context-menu.mjs.map +1 -1
- package/fesm2022/igo2-common-datepicker.mjs +21 -15
- package/fesm2022/igo2-common-datepicker.mjs.map +1 -1
- package/fesm2022/igo2-common-dom.mjs +3 -1
- package/fesm2022/igo2-common-dom.mjs.map +1 -1
- package/fesm2022/igo2-common-drag-drop.mjs +59 -27
- package/fesm2022/igo2-common-drag-drop.mjs.map +1 -1
- package/fesm2022/igo2-common-dynamic-component.mjs +9 -3
- package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -1
- package/fesm2022/igo2-common-entity.mjs +131 -98
- package/fesm2022/igo2-common-entity.mjs.map +1 -1
- package/fesm2022/igo2-common-flexible.mjs +19 -71
- package/fesm2022/igo2-common-flexible.mjs.map +1 -1
- package/fesm2022/igo2-common-form.mjs +46 -45
- package/fesm2022/igo2-common-form.mjs.map +1 -1
- package/fesm2022/igo2-common-icon.mjs +1 -1
- package/fesm2022/igo2-common-icon.mjs.map +1 -1
- package/fesm2022/igo2-common-image.mjs.map +1 -1
- package/fesm2022/igo2-common-interactive-tour.mjs +40 -17
- package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -1
- package/fesm2022/igo2-common-json-dialog.mjs +2 -2
- package/fesm2022/igo2-common-json-dialog.mjs.map +1 -1
- package/fesm2022/igo2-common-keyvalue.mjs +3 -1
- package/fesm2022/igo2-common-keyvalue.mjs.map +1 -1
- package/fesm2022/igo2-common-list.mjs +11 -6
- package/fesm2022/igo2-common-list.mjs.map +1 -1
- package/fesm2022/igo2-common-panel.mjs +1 -1
- package/fesm2022/igo2-common-panel.mjs.map +1 -1
- package/fesm2022/igo2-common-resizable-bar.mjs +2 -4
- package/fesm2022/igo2-common-resizable-bar.mjs.map +1 -1
- package/fesm2022/igo2-common-select-value-dialog.mjs +14 -4
- package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -1
- package/fesm2022/igo2-common-sidenav.mjs.map +1 -1
- package/fesm2022/igo2-common-spinner.mjs +1 -1
- package/fesm2022/igo2-common-spinner.mjs.map +1 -1
- package/fesm2022/igo2-common-table.mjs +53 -60
- package/fesm2022/igo2-common-table.mjs.map +1 -1
- package/fesm2022/igo2-common-timepicker.mjs +8 -9
- package/fesm2022/igo2-common-timepicker.mjs.map +1 -1
- package/fesm2022/igo2-common-tool.mjs +19 -16
- package/fesm2022/igo2-common-tool.mjs.map +1 -1
- package/fesm2022/igo2-common-widget.mjs +4 -4
- package/fesm2022/igo2-common-widget.mjs.map +1 -1
- package/fesm2022/igo2-common-workspace.mjs +12 -16
- package/fesm2022/igo2-common-workspace.mjs.map +1 -1
- package/package.json +3 -3
- package/types/igo2-common-action.d.ts +2 -5
- package/types/igo2-common-backdrop.d.ts +2 -4
- package/types/igo2-common-badge.d.ts +4 -4
- package/types/igo2-common-collapsible.d.ts +2 -4
- package/types/igo2-common-confirm-dialog.d.ts +1 -1
- package/types/igo2-common-context-menu.d.ts +2 -2
- package/types/igo2-common-datepicker.d.ts +9 -9
- package/types/igo2-common-drag-drop.d.ts +14 -12
- package/types/igo2-common-dynamic-component.d.ts +3 -3
- package/types/igo2-common-entity.d.ts +61 -57
- package/types/igo2-common-flexible.d.ts +14 -28
- package/types/igo2-common-form.d.ts +24 -24
- package/types/igo2-common-icon.d.ts +1 -1
- package/types/igo2-common-interactive-tour.d.ts +6 -6
- package/types/igo2-common-json-dialog.d.ts +4 -4
- package/types/igo2-common-keyvalue.d.ts +4 -1
- package/types/igo2-common-list.d.ts +7 -7
- package/types/igo2-common-panel.d.ts +1 -1
- package/types/igo2-common-resizable-bar.d.ts +4 -5
- package/types/igo2-common-select-value-dialog.d.ts +2 -2
- package/types/igo2-common-sidenav.d.ts +2 -2
- package/types/igo2-common-spinner.d.ts +1 -1
- package/types/igo2-common-table.d.ts +16 -17
- package/types/igo2-common-timepicker.d.ts +3 -3
- package/types/igo2-common-tool.d.ts +7 -8
- package/types/igo2-common-widget.d.ts +7 -7
- 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(
|
|
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
|
|
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":";;;;;;;;MAWa,mBAAmB,CAAA;AACtB,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEtB,IAAA,aAAa,GAAG,KAAK,CAAC,6BAA6B,oFAAC;AACpD,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,gFAAC;AAG1B,IAAA,OAAO,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QAC9C;aAAO;YACL,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;QACzC;IACF;wGAbW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAOE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;SCbnB,sBAAsB,CACpC,GAAW,EACX,QAAgB,EAChB,IAAgB,EAAA;AAEhB,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;AAC9B,QAAA,cAAc,EAAE,YAAY;AAC5B,QAAA,mBAAmB,EAAE,OAAO;AAC5B,QAAA,cAAc,EAAE;AACjB,KAAA,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAC;AACtD,IAAA,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACxB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
302
|
+
if (step.onShow) {
|
|
303
|
+
this.executeAction(step, step.onShow);
|
|
304
|
+
}
|
|
298
305
|
},
|
|
299
306
|
hide: () => {
|
|
300
307
|
this.previousStep = step;
|
|
301
|
-
|
|
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
|
|
326
|
-
|
|
327
|
-
this.
|
|
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(
|
|
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
|
-
|
|
376
|
-
|
|
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
|
|
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(
|
|
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
|
-
|
|
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();
|