@3kles/kles-material-dynamicforms 21.7.6 → 21.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"3kles-kles-material-dynamicforms.mjs","sources":["../../../projects/kles-material-dynamicforms/src/lib/controls/control.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/default.control.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/ui-state.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/control-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/default.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/factories/field.factory.ts","../../../projects/kles-material-dynamicforms/src/lib/decorators/component.decorator.ts","../../../projects/kles-material-dynamicforms/src/lib/enums/type.enum.ts","../../../projects/kles-material-dynamicforms/src/lib/token.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/clear.component.ts","../../../projects/kles-material-dynamicforms/src/lib/utils/destroyable.guard.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/dynamic-field.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/utils/validation.util.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/mat-error-form.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/matcher/form-error.matcher.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/group-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/dynamic-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/dynamic-component.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/modules/material.module.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/field.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/label.component.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/mat-error-message.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/dynamic-form-intl.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/input.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/date.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/radio.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/checkbox.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/array.control.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/list-field.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/color.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/button-control-base.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/button-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/buttonchecker-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/buttonchecker-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/buttonfile-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/buttonfile-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/textarea.component.ts","../../../projects/kles-material-dynamicforms/src/lib/pipe/transform.pipe.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/text.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/chip.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/group.control.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/group.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/group.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/input.clearable.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/icon.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/line-break.component.ts","../../../projects/kles-material-dynamicforms/src/lib/pipe/array.pipe.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/link.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/slide-toggle.component.ts","../../../projects/kles-material-dynamicforms/src/lib/selection/selection-model.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/selection-list.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/badge.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-toogle-group.component.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/array-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/array.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/array.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/range.control.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/range.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/fab-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-fab.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/mini-fab-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-mini-fab.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/icon-button-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-icon.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/selection-list.search.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/indeterminate-checkbox.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/checkbox-indeterminate.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/file-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/file.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/date-time.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/copy.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/action-menu.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/tile.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/currency.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/status.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/chip-grid.component.ts","../../../projects/kles-material-dynamicforms/src/lib/kles-material-dynamicforms.module.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/password-visibility.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/select-search-input.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/select.component.ts","../../../projects/kles-material-dynamicforms/src/lib/validators/autocomplete.validator.ts","../../../projects/kles-material-dynamicforms/src/public-api.ts","../../../projects/kles-material-dynamicforms/src/3kles-kles-material-dynamicforms.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn, AsyncValidatorFn, Validators } from '@angular/forms';\nimport { IKlesValidator } from '../interfaces/validator.interface';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { IKlesControl } from './control.interface';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { tap } from 'rxjs/operators';\n\nexport abstract class KlesAbstractFormControl implements IKlesControl {\n constructor(\n protected field: IKlesFieldConfig,\n protected ref?: ChangeDetectorRef,\n ) {}\n abstract create(): AbstractControl;\n\n public bindValidations(validations: IKlesValidator<ValidatorFn>[]): ValidatorFn {\n if (validations.length > 0) {\n return Validators.compose(validations.map((validation) => validation.validator));\n }\n return null;\n }\n\n public bindAsyncValidations(validations: IKlesValidator<AsyncValidatorFn>[]): AsyncValidatorFn {\n if (validations.length > 0) {\n return Validators.composeAsync(\n validations.map((validation) => {\n return (c: AbstractControl) => {\n const validator$ = validation.validator(c);\n if (validator$ instanceof Promise) {\n return validator$.finally(() => this.ref?.markForCheck());\n } else {\n return validator$.pipe(tap(() => this.ref?.markForCheck()));\n }\n };\n }),\n );\n }\n return null;\n }\n}\n","import { AbstractControl, FormControl } from \"@angular/forms\";\nimport { concat, of } from \"rxjs\";\nimport { catchError, map, take } from \"rxjs/operators\";\nimport { KlesAbstractFormControl } from \"./control.abstract\";\n\nexport class KlesFormControl extends KlesAbstractFormControl {\n\n public create(): AbstractControl {\n const control = new FormControl(\n { value: this.field.value, disabled: this.field.disabled || false },\n {\n nonNullable: this.field.nonNullable || false,\n validators: this.bindValidations(this.field.validations || []),\n asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n updateOn: this.field.updateOn || 'change',\n }\n );\n\n if (this.field.asyncValue) {\n concat(\n of({ value: null, pending: true }),\n this.field.asyncValue.pipe(\n take(1),\n catchError((err) => {\n console.error(err);\n return of(null);\n }),\n map((value) => ({ value, pending: false }))\n )\n ).subscribe((response) => {\n this.field.pending = response.pending;\n if (response.pending) {\n control.disable({ emitEvent: false });\n } else {\n if (!this.field.disabled) {\n control.enable({ emitEvent: false });\n }\n control.setValue(response.value);\n this.field.value = response.value;\n }\n });\n }\n return control;\n }\n}\n","import { EventEmitter, Signal, signal } from '@angular/core';\nimport { ɵGetProperty } from '@angular/forms';\n\nexport abstract class AbstractUiState<TValue = any, TRawValue extends TValue = TValue> {\n protected _value = signal<TValue | undefined>(undefined);\n\n private _parent: AbstractUiState<any> | null = null;\n private _parentKey: string | number | null = null;\n\n get<P extends string | readonly (string | number)[]>(path: P): AbstractUiState<ɵGetProperty<TRawValue, P>> | null;\n get<P extends string | Array<string | number>>(path: P): AbstractUiState<ɵGetProperty<TRawValue, P>> | null;\n get<P extends string | (string | number)[]>(path: P): AbstractUiState<ɵGetProperty<TRawValue, P>> | null {\n let currPath: Array<string | number> | string = path;\n if (currPath == null) return null;\n if (!Array.isArray(currPath)) currPath = currPath.split('.').filter(Boolean);\n if (currPath.length === 0) return null;\n return currPath.reduce((uiState: AbstractUiState | null, name) => uiState && uiState._find(name), this);\n }\n\n _find(name: string | number): AbstractUiState | null {\n return null;\n }\n\n abstract setValue(value: TRawValue): void;\n\n abstract patchValue(value: Partial<TValue>): void;\n\n get value(): Signal<TValue | undefined> {\n return this._value.asReadonly();\n }\n\n setParent(parent: AbstractUiState<any>, key: string | number): void {\n this._parent = parent;\n this._parentKey = key;\n }\n\n protected notifyParent(): void {\n if (this._parent && this._parentKey != null) {\n this._parent.childValueChanged(this._parentKey, this._value());\n }\n }\n\n childValueChanged(key: string | number, value: any): void {\n // par défaut, rien\n }\n}\n","import { Signal, signal } from '@angular/core';\nimport { IKlesFieldUi } from '../../interfaces/field.config.interface';\nimport { AbstractUiState } from './ui-state.abstract';\n\nexport class ControlUiState<TValue extends IKlesFieldUi> extends AbstractUiState<TValue, TValue> {\n constructor(value?: TValue) {\n super();\n if (value !== undefined) {\n this._value.set(value);\n }\n }\n\n get value(): Signal<TValue | undefined> {\n return this._value.asReadonly();\n }\n\n override setValue(value: TValue): void {\n this._value.set(value);\n this.notifyParent();\n }\n\n override patchValue(value: Partial<TValue> | TValue): void {\n if (value == null) {\n return;\n }\n\n const curr = this._value();\n if (curr == null) {\n this._value.set(value as TValue);\n return;\n }\n\n this._value.set({ ...(curr as any), ...(value as any) } as TValue);\n this.notifyParent();\n }\n\n}\n","import { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { IKlesUi } from './ui.interface';\n\nexport abstract class KlesAbstractFormUiControl implements IKlesUi {\n constructor(protected field: IKlesFieldConfig) {}\n abstract create(): AbstractUiState;\n}\n","import { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { ControlUiState } from './ui-state/control-ui-state';\nimport { KlesAbstractFormUiControl } from './ui.abstract';\n\nexport class KlesFormUiControl extends KlesAbstractFormUiControl {\n create(): AbstractUiState {\n return new ControlUiState({\n inputType: this.field.inputType,\n min: this.field.min,\n max: this.field.max,\n maxLength: this.field.maxLength,\n step: this.field.step,\n hostClass: this.field.hostClass,\n ngClass: this.field.ngClass,\n ngStyle: this.field.ngStyle,\n indeterminate: this.field.indeterminate ?? false,\n color: this.field.color,\n icon: this.field.icon,\n iconSvg: this.field.iconSvg,\n appearance: this.field.appearance ?? 'fill',\n buttonAppearance: this.field.buttonAppearance ?? 'text',\n\n imageUrl: this.field.imageUrl,\n imageAlt: this.field.imageAlt,\n\n label: this.field.label,\n hint: this.field.hint,\n placeholder: this.field.placeholder,\n tooltip: this.field.tooltip,\n currencyOptions: this.field.currencyOptions,\n });\n }\n}\n","import { ChangeDetectorRef } from '@angular/core';\nimport { KlesFormControl } from '../controls/default.control';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { KlesFormUiControl } from '../ui/default.ui';\nimport { AbstractUiState } from '../ui/ui-state/ui-state.abstract';\nimport { AbstractControl } from '@angular/forms';\n\nexport const klesFieldControlFactory = (field: IKlesFieldConfig, ref?: ChangeDetectorRef): AbstractControl => {\n const factory = new KlesFormControl(field, ref);\n return factory.create();\n};\n\nexport const klesFieldUiFactory = (field: IKlesFieldConfig): AbstractUiState => {\n const factory = new KlesFormUiControl(field);\n return factory.create();\n};\n","import { ChangeDetectorRef, Type } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { klesFieldControlFactory, klesFieldUiFactory } from '../factories/field.factory';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { AbstractUiState } from '../ui/ui-state/ui-state.abstract';\n\n\nexport const componentMapper: {\n component: Type<any>;\n type: string;\n factory: (field: IKlesFieldConfig, ref?: ChangeDetectorRef) => AbstractControl<any, any>;\n ui?: (field: IKlesFieldConfig) => AbstractUiState<any, any>;\n}[] = [];\n\nexport function FieldMapper(config: { type: string; factory?: (field: IKlesFieldConfig) => AbstractControl<any, any>; ui?: (field: IKlesFieldConfig) => AbstractUiState<any, any> }) {\n return (target: Type<any>) => {\n componentMapper.push({\n component: target,\n type: config.type,\n factory: config.factory || klesFieldControlFactory,\n ui: config.ui || klesFieldUiFactory,\n });\n };\n}\n","export enum EnumType {\n input = 'input',\n select = 'select',\n text = 'text',\n file = 'file',\n button = 'button',\n checkbox = 'checkbox',\n number = 'number',\n time = 'time',\n date = 'date',\n color = 'color',\n list = 'list',\n multi = 'multi',\n array = 'array',\n group = 'group',\n lineBreak = 'lineBreak',\n badge = 'badge',\n range = 'range',\n currency = 'currency',\n status = 'status',\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesFieldConfig } from './interfaces/field.config.interface';\nimport { GroupUiState } from './ui/ui-state/group-ui-state';\n\nexport const FIELD_NAME = new InjectionToken<string>('FIELD_NAME');\nexport const GROUP = new InjectionToken<FormGroup>('GROUP');\nexport const SIBLING_FIELDS = new InjectionToken<IKlesFieldConfig[]>('SIBLING_FIELDS');\nexport const GROUP_UI = new InjectionToken<GroupUiState>('GROUP_UI');\nexport const FIELD = new InjectionToken<IKlesFieldConfig>('FIELD');\n\nexport const FIELD_CONTEXT = new InjectionToken<Signal<unknown | null>>('FIELD_CONTEXT');\n","import { Component, inject, OnDestroy, Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesClearControl } from '../../interfaces/clear-control.interface';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\n\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { FIELD, GROUP, SIBLING_FIELDS } from '../../token';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest, map, startWith, Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'kles-form-clear',\n template: `\n <button [disabled]=\"disabled()\" matIconButton aria-label=\"Clear\" type=\"button\" (click)=\"clear($event)\">\n <mat-icon>close</mat-icon>\n </button>\n `,\n standalone: true,\n imports: [MatIcon, MatIconButton],\n})\nexport class KlesFormClearComponent implements IKlesClearControl, OnDestroy {\n readonly field = inject<IKlesFieldConfig>(FIELD);\n readonly group = inject<FormGroup<any>>(GROUP);\n readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n private _onDestroy = new Subject<void>();\n\n disabled: Signal<boolean>;\n\n constructor() {\n this.disabled = toSignal(\n combineLatest([\n this.group.get(this.field.name)?.valueChanges.pipe(\n startWith(this.group.get(this.field.name).value),\n map((value) => {\n return !this.isPresent(value);\n }),\n ),\n this.group.get(this.field.name)?.statusChanges.pipe(\n startWith(this.group.get(this.field.name).status),\n map((status) => status === 'DISABLED'),\n ),\n ]).pipe(\n takeUntil(this._onDestroy),\n map(([empty, disabled]) => {\n return empty || disabled;\n }),\n ),\n );\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n clear(event): void {\n event.stopPropagation();\n this.group.controls[this.field.name].reset();\n }\n\n private isPresent<T>(value: T | null | undefined): value is T {\n if (value == null) return false;\n\n if (typeof value === 'string') {\n return value.length > 0;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size > 0;\n }\n\n return true;\n }\n}\n","export interface Destroyable {\n destroy();\n}\n\nexport function isDestroyable(value: unknown): value is Destroyable {\n return value !== null && typeof value === 'object' &&\n typeof (value as Destroyable).destroy === 'function';\n}","import { ApplicationRef, Directive, Input, OnInit, ViewContainerRef, ViewRef, ComponentRef, OnChanges, SimpleChanges, OnDestroy, Type, Injector, StaticProvider, Provider, Signal } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { componentMapper } from '../decorators/component.decorator';\nimport { KlesFormClearComponent } from '../fields/subfields/clear.component';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { isDestroyable } from '../utils/destroyable.guard';\nimport { FIELD, FIELD_NAME, GROUP, SIBLING_FIELDS, GROUP_UI, FIELD_CONTEXT } from '../token';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\n\n@Directive({\n selector: '[klesDynamicField]',\n standalone: true,\n})\nexport class KlesDynamicFieldDirective<T extends IKlesFieldConfig = IKlesFieldConfig> implements OnInit, OnChanges, OnDestroy {\n @Input() field!: T;\n @Input() group!: UntypedFormGroup;\n @Input() ui!: GroupUiState;\n @Input() siblingFields!: T[];\n\n @Input() context: Signal<unknown | null> | null = null;\n\n componentRef: ComponentRef<any> | undefined;\n subComponents: ComponentRef<any>[] = [];\n private subComponentViews = new Map<ComponentRef<any>, ViewRef>();\n\n constructor(\n protected container: ViewContainerRef,\n protected injector: Injector,\n private applicationRef: ApplicationRef,\n ) {}\n\n ngOnDestroy(): void {\n this.destroyComponents();\n }\n\n ngOnInit() {\n this.buildComponent();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const groupChanged = !!changes['group'] && !changes['group'].isFirstChange();\n const fieldChanged = !!changes['field'] && !changes['field'].isFirstChange();\n const uiChanged = !!changes['ui'] && !changes['ui'].isFirstChange();\n const siblingFieldsChanged = !!changes['siblingFields'] && !changes['siblingFields'].isFirstChange();\n const contextChanged = !!changes['context'] && !changes['context'].isFirstChange();\n\n if (groupChanged) {\n this.group = changes['group'].currentValue;\n }\n\n if (fieldChanged) {\n this.field = changes['field'].currentValue;\n }\n\n if (uiChanged) {\n this.ui = changes['ui'].currentValue;\n }\n\n if (siblingFieldsChanged) {\n this.siblingFields = changes['siblingFields'].currentValue;\n }\n\n if (contextChanged) {\n this.context = changes['context'].currentValue;\n }\n\n if (groupChanged || fieldChanged || uiChanged || siblingFieldsChanged || contextChanged) {\n this.buildComponent();\n }\n }\n\n buildComponent() {\n this.destroyComponents();\n\n const options: {\n providers: Array<Provider | StaticProvider>;\n parent?: Injector;\n name?: string;\n } = {\n providers: [\n ...(this.field.providers || []),\n ...(this.field.dateOptions\n ? [\n ...(this.field.dateOptions.adapter\n ? [\n {\n provide: DateAdapter,\n useClass: this.field.dateOptions.adapter.class,\n deps: this.field.dateOptions.adapter.deps || [],\n },\n ]\n : []),\n { provide: MAT_DATE_LOCALE, useValue: this.field.dateOptions.language },\n { provide: MAT_DATE_FORMATS, useValue: this.field.dateOptions.dateFormat },\n ]\n : []),\n {\n provide: FIELD_NAME,\n useValue: this.field.name,\n },\n {\n provide: FIELD,\n useValue: this.field,\n },\n {\n provide: GROUP,\n useValue: this.group,\n },\n {\n provide: SIBLING_FIELDS,\n useValue: this.siblingFields,\n },\n {\n provide: GROUP_UI,\n useValue: this.ui,\n },\n\n ...(this.context\n ? [\n {\n provide: FIELD_CONTEXT,\n useValue: this.context,\n },\n ]\n : []),\n ],\n parent: this.injector,\n };\n\n const injector: Injector = Injector.create(options);\n\n if (this.field.clearable) {\n const composant = this.createSubComponent(this.field.clearableComponent || KlesFormClearComponent, options);\n this.subComponents.push(composant);\n }\n if (this.field.subComponents) {\n this.subComponents.push(...this.field.subComponents.map((subComponent) => this.createSubComponent(subComponent, options)));\n }\n\n this.componentRef = this.createComponentRef(injector);\n\n this.componentRef?.onDestroy(() => {\n if (isDestroyable(injector)) {\n injector.destroy();\n }\n });\n }\n\n protected createComponentRef(injector: Injector): ComponentRef<any> | undefined {\n const component = this.findComponent();\n\n if (component) {\n const componentRef = this.container.createComponent(component, {\n injector,\n projectableNodes: [this.subComponents.map((sub) => sub.location.nativeElement)],\n });\n\n if (this.field.hostClass) {\n if (Array.isArray(this.field.hostClass)) {\n componentRef.location.nativeElement.classList.add(...this.field.hostClass);\n } else {\n componentRef.location.nativeElement.classList.add(this.field.hostClass);\n }\n }\n\n return componentRef;\n }\n\n return undefined;\n }\n\n protected findComponent(): Type<any> | undefined {\n if (this.field.type || this.field.component) {\n return componentMapper.find((element) => element.type === this.field.type)?.component || this.field.component;\n }\n return undefined;\n }\n\n private createSubComponent(\n componentType: Type<any>,\n options: {\n providers: Array<Provider | StaticProvider>;\n parent?: Injector;\n name?: string;\n },\n ): ComponentRef<any> {\n const injector: Injector = Injector.create(options);\n const component = this.container.createComponent(componentType, { injector });\n\n // The host element is projected into the field component. Keeping its view\n // in this container would make Angular's logical DOM differ from the real DOM.\n const viewIndex = this.container.indexOf(component.hostView);\n const detachedView = viewIndex !== -1 ? this.container.detach(viewIndex) : null;\n if (detachedView) {\n this.applicationRef.attachView(detachedView);\n this.subComponentViews.set(component, detachedView);\n }\n\n component.onDestroy(() => {\n if (isDestroyable(injector)) {\n injector.destroy();\n }\n });\n\n return component;\n }\n\n private destroyComponents(): void {\n this.componentRef?.destroy();\n this.componentRef = undefined;\n\n this.subComponents.forEach((component) => {\n const view = this.subComponentViews.get(component);\n if (view) {\n this.applicationRef.detachView(view);\n }\n component.destroy();\n });\n this.subComponents = [];\n this.subComponentViews.clear();\n }\n}\n","import { IKlesValidator, KlesValidationKey } from '../interfaces/validator.interface';\n\nexport function flattenValidators<T>(validations: IKlesValidator<T>[]): KlesValidationKey[] {\n return validations.flatMap((v) => ('keys' in v ? v.keys : [{ name: v.name, message: v.message, messageKey: v.messageKey }]));\n}\n","import { Component, Input } from '@angular/core';\nimport { IKlesValidator, KlesValidationKey } from '../interfaces/validator.interface';\nimport { AsyncValidator, FormsModule, ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { flattenValidators } from '../utils/validation.util';\n\n@Component({\n selector: '[matErrorForm]',\n template: `\n @if (form && form.errors) {\n @for (validation of validationsKeys; track validation.name) {\n @if (form?.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n @for (validation of asyncValidationsKeys; track validation.name) {\n @if (form?.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n }\n `,\n standalone: true,\n imports: [ReactiveFormsModule, FormsModule],\n})\nexport class MatErrorFormDirective {\n validationsKeys: KlesValidationKey[] = [];\n asyncValidationsKeys: KlesValidationKey[] = [];\n\n @Input({ required: true }) form: UntypedFormGroup;\n\n @Input()\n set validations(v: IKlesValidator<Validators>[]) {\n this.validationsKeys = flattenValidators<Validators>(v ?? []);\n }\n\n @Input()\n set asyncValidations(v: IKlesValidator<AsyncValidator>[]) {\n this.asyncValidationsKeys = flattenValidators<AsyncValidator>(v ?? []);\n }\n}\n","import { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class KlesFormErrorStateMatcher implements ErrorStateMatcher {\n\n constructor() {\n }\n\n isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const isSubmitted = form && form.submitted;\n return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\n }\n\n}\n\n","import { ɵTypedOrUntyped } from '@angular/forms';\nimport { AbstractUiState } from './ui-state.abstract';\nimport { computed, Signal } from '@angular/core';\n\nexport class GroupUiState<TUiState extends { [K in keyof TUiState]: AbstractUiState<any> } = any> extends AbstractUiState<any, any> {\n public states: ɵTypedOrUntyped<TUiState, TUiState, { [key: string]: AbstractUiState<any> }> = {} as TUiState;\n\n constructor(states?: TUiState) {\n super();\n this.states = (states ?? ({} as any)) as any;\n for (const key of Object.keys(this.states as any)) {\n const state = (this.states as any)[key];\n state?.setParent(this, key);\n }\n this._value.set(this.buildInitialValue());\n }\n\n public override setValue(value: any): void {\n if (value == null) return;\n\n for (const name of Object.keys(value)) {\n const state = (this.states as any)[name];\n\n if (state) {\n state.setValue(value[name]);\n }\n }\n\n this._value.set(value);\n this.notifyParent();\n }\n\n public override patchValue(value: any): void {\n if (value == null) return;\n\n for (const name of Object.keys(value)) {\n const state = (this.states as any)[name];\n\n if (state) {\n state.patchValue(value[name]);\n }\n }\n\n const curr = this._value() ?? {};\n\n this._value.set({\n ...curr,\n ...value,\n });\n\n this.notifyParent();\n }\n\n override childValueChanged(key: string | number, value: any): void {\n const curr = this._value() ?? {};\n\n this._value.set({\n ...curr,\n [key]: value,\n });\n\n this.notifyParent();\n }\n\n public override _find(name: string | number): AbstractUiState | null {\n const key = String(name);\n const has = Object.prototype.hasOwnProperty.call(this.states as any, key);\n return has ? ((this.states as any)[key] as AbstractUiState) : null;\n }\n\n public addUiState(name: string, uiState: AbstractUiState<any>): void {\n (this.states as any)[name] = uiState;\n\n uiState.setParent(this, name);\n\n const curr = this._value() ?? {};\n\n this._value.set({\n ...curr,\n [name]: uiState.value(),\n });\n\n this.notifyParent();\n }\n\n private buildInitialValue(): any {\n const out: any = {};\n\n for (const key of Object.keys(this.states as any)) {\n out[key] = (this.states as any)[key]?.value();\n }\n\n return out;\n }\n\n}\n","import { OnInit, Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef, Inject, Signal } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormBuilder, ValidatorFn, AsyncValidatorFn, AbstractControl, FormArray, FormGroup, FormControlDirective, FormControlName, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { componentMapper } from './decorators/component.decorator';\nimport { EnumType } from './enums/type.enum';\nimport { klesFieldControlFactory, klesFieldUiFactory } from './factories/field.factory';\nimport { IKlesFieldConfig } from './interfaces/field.config.interface';\nimport { IKlesValidator } from './interfaces/validator.interface';\nimport { CommonModule } from '@angular/common';\n\nimport { MatError } from '@angular/material/form-field';\nimport { KlesDynamicFieldDirective } from './directive/dynamic-field.directive';\nimport { MatErrorFormDirective } from './directive/mat-error-form.directive';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { KlesFormErrorStateMatcher } from './matcher/form-error.matcher';\nimport { AbstractUiState } from './ui/ui-state/ui-state.abstract';\nimport { GroupUiState } from './ui/ui-state/group-ui-state';\n\nconst originFormControlNgOnChanges = FormControlDirective.prototype.ngOnChanges;\nFormControlDirective.prototype.ngOnChanges = function () {\n this.form.nativeElement = this.valueAccessor?._elementRef?.nativeElement;\n return originFormControlNgOnChanges.apply(this, arguments);\n};\n\nconst originFormControlNameNgOnChanges = FormControlName.prototype.ngOnChanges;\nFormControlName.prototype.ngOnChanges = function () {\n const result = originFormControlNameNgOnChanges.apply(this, arguments);\n this.control.nativeElement = this.valueAccessor?._elementRef?.nativeElement;\n return result;\n};\n\n@Component({\n exportAs: 'klesDynamicForm',\n selector: 'app-kles-dynamic-form',\n standalone: true,\n template: `\n <form class=\"{{ orientationClass }}\" [ngClass]=\"formClass\" [formGroup]=\"form\" (submit)=\"onSubmit($event)\">\n @for (field of fields; track field.name) {\n @if (field.visible !== false) {\n <ng-container klesDynamicField [field]=\"field\" [group]=\"form\" [ui]=\"ui\" [siblingFields]=\"fields\" [context]=\"context\"> </ng-container>\n }\n }\n @if (form && form.errors) {\n <mat-error matErrorForm [form]=\"form\" [validations]=\"validators\" [asyncValidations]=\"asyncValidators\"></mat-error>\n }\n </form>\n `,\n styles: [\n '.dynamic-form-column { display: flex;flex-direction: column; }',\n '.dynamic-form-column > * { width: 100%; }',\n '.dynamic-form-row { display: inline-flex; flex-wrap:wrap; gap:10px; align-items: baseline}',\n '.dynamic-form-row > * { width: 100%; }',\n '.dynamic-form-grid { display: grid; }',\n '.dynamic-form-inline-grid { display: inline-grid; }',\n ],\n providers: [{ provide: ErrorStateMatcher, useClass: KlesFormErrorStateMatcher }],\n imports: [CommonModule, MatErrorFormDirective, KlesDynamicFieldDirective, FormsModule, ReactiveFormsModule, MatError],\n})\nexport class KlesDynamicFormComponent implements OnInit, OnChanges {\n @Input() context: Signal<unknown | null> | null = null;\n @Input() fields: IKlesFieldConfig[] = [];\n @Input() validators: IKlesValidator<ValidatorFn>[] = [];\n @Input() asyncValidators: IKlesValidator<AsyncValidatorFn>[] = [];\n // tslint:disable-next-line: no-output-native\n @Output() submit: EventEmitter<any> = new EventEmitter<any>();\n @Output() _onLoaded = new EventEmitter();\n\n @Input() direction: 'column' | 'row' | 'grid' | 'inline-grid' = 'column';\n @Input() formClass: string | string[] | Set<string> | { [klass: string]: any };\n\n form: UntypedFormGroup;\n ui: GroupUiState;\n orientationClass: 'dynamic-form-column' | 'dynamic-form-row' | 'dynamic-form-grid' | 'dynamic-form-inline-grid' = 'dynamic-form-column';\n\n get value() {\n return this.form.value;\n }\n\n constructor(\n private fb: UntypedFormBuilder,\n private ref: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.form = this.createForm();\n this.ui = this.createUi();\n this.setOrientationClass();\n this._onLoaded.emit();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.fields?.firstChange) {\n this.updateForm();\n this.ui = this.createUi();\n this._onLoaded.emit();\n }\n\n if (!changes.validators?.firstChange && this.form) {\n this.form.setValidators(this.validators.map((v) => v.validator));\n }\n\n if (!changes.asyncValidators?.firstChange && this.form) {\n this.form.setAsyncValidators(this.asyncValidators.map((v) => v.validator));\n }\n\n if (!changes.direction?.firstChange) {\n this.orientationClass = this.direction === 'row' ? 'dynamic-form-row' : 'dynamic-form-column';\n }\n }\n\n onSubmit(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n if (this.form.valid) {\n this.submit.emit(this.form.getRawValue());\n } else {\n this.validateAllFormFields(this.form);\n }\n }\n\n private setOrientationClass() {\n switch (this.direction) {\n case 'column':\n this.orientationClass = 'dynamic-form-column';\n break;\n case 'row':\n this.orientationClass = 'dynamic-form-row';\n break;\n case 'grid':\n this.orientationClass = 'dynamic-form-grid';\n break;\n case 'inline-grid':\n this.orientationClass = 'dynamic-form-inline-grid';\n break;\n }\n }\n\n private updateForm() {\n Object.keys(this.form.controls)\n .filter((key) => {\n return !this.fields.map((field) => field.name).includes(key);\n })\n .forEach((key) => {\n this.form.removeControl(key);\n });\n\n this.fields\n // .filter(field => !this.form.controls[field.name])\n .forEach((field) => {\n if (field.type === EnumType.lineBreak) {\n return;\n }\n\n if (this.form.controls[field.name]) {\n const control = this.updateControl(field, this.form.controls[field.name]);\n this.form.setControl(field.name, control, { emitEvent: false });\n } else {\n const control = this.createControl(field);\n if (control) {\n this.form.addControl(field.name, control);\n }\n }\n });\n }\n\n private updateControl(field: IKlesFieldConfig, control: AbstractControl): AbstractControl {\n if (field.type === EnumType.array) {\n const array = control as FormArray;\n /*TODO*/\n return array;\n } else if (field.type === EnumType.group) {\n const group = control as FormGroup;\n if (field.collections && Array.isArray(field.collections)) {\n field.collections.forEach((subfield) => {\n if (group.controls[subfield]) {\n control = this.updateControl(subfield, group.controls[subfield]);\n } else {\n control = this.createControl(subfield);\n }\n if (control) {\n group.setControl(subfield.name, control, { emitEvent: false });\n }\n });\n }\n return group;\n } else {\n // control.setValidators(this.bindValidations(field.validations || []));\n // control.setAsyncValidators(this.bindAsyncValidations(field.asyncValidations || []));\n // if (field.value && control.value !== field.value) {\n // control.setValue(field.value);\n // }\n return control;\n }\n }\n\n private createControl(field: IKlesFieldConfig): AbstractControl {\n if (field.type) {\n return componentMapper.find((c) => c.type === field.type)?.factory ? componentMapper.find((c) => c.type === field.type)?.factory(field, this.ref) : klesFieldControlFactory(field, this.ref);\n } else {\n return componentMapper.find((c) => c.component === field.component)?.factory ? componentMapper.find((c) => c.component === field.component)?.factory(field, this.ref) : klesFieldControlFactory(field, this.ref);\n }\n }\n\n private createUiState(field: IKlesFieldConfig): AbstractUiState {\n if (field.type) {\n return componentMapper.find((c) => c.type === field.type)?.ui ? componentMapper.find((c) => c.type === field.type)?.ui(field) : klesFieldUiFactory(field);\n } else {\n return componentMapper.find((c) => c.component === field.component)?.ui ? componentMapper.find((c) => c.component === field.component)?.ui(field) : klesFieldUiFactory(field);\n }\n }\n\n private createForm() {\n const group = this.fb.group({});\n\n this.fields.forEach((field) => {\n const control = this.createControl(field);\n if (control) {\n group.addControl(field.name, control);\n }\n });\n\n group.setValidators(this.validators.map((v) => v.validator));\n group.setAsyncValidators(this.asyncValidators.map((v) => v.validator));\n\n return group;\n }\n\n private validateAllFormFields(formGroup: UntypedFormGroup) {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n control.markAsTouched({ onlySelf: true });\n });\n }\n\n private createUi() {\n const uiGroup = new GroupUiState();\n\n this.fields.forEach((field) => {\n const uiState = this.createUiState(field);\n if (uiState) {\n uiGroup.addUiState(field.name, uiState);\n }\n });\n\n return uiGroup;\n }\n}\n","import { Directive, Input, OnInit, ViewContainerRef, ComponentRef, Type, OnChanges, SimpleChanges, Injector } from '@angular/core';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { FIELD } from '../token';\n\n@Directive({\n selector: '[klesComponent]',\n standalone: true,\n})\nexport class KlesComponentDirective implements OnInit, OnChanges {\n @Input() component: Type<any>;\n @Input() value: any;\n @Input() field?: IKlesFieldConfig;\n\n componentRef: ComponentRef<any>;\n\n constructor(private container: ViewContainerRef) {}\n\n ngOnInit() {\n this.buildComponent();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.component && !changes.component.isFirstChange()) {\n this.component = changes.component.currentValue;\n this.buildComponent();\n }\n if (changes.value && !changes.value.isFirstChange()) {\n this.value = changes.value.currentValue;\n this.componentRef.instance.value = this.value;\n }\n }\n\n buildComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n const options = {\n providers: [\n {\n provide: FIELD,\n useValue: this.field,\n },\n ],\n };\n\n const injector: Injector = Injector.create(options);\n\n this.componentRef = this.container.createComponent(this.component, { injector });\n this.componentRef.instance.component = this.component;\n this.componentRef.instance.value = this.value;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatListModule } from '@angular/material/list';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { PortalModule } from '@angular/cdk/portal';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatSliderModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MatSidenavModule,\n MatBadgeModule,\n MatListModule,\n MatGridListModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatRadioModule,\n MatDatepickerModule,\n MatChipsModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatCardModule,\n MatMenuModule,\n MatTabsModule,\n CdkTableModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatDialogModule,\n MatAutocompleteModule,\n MatProgressBarModule,\n MatSortModule,\n MatExpansionModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatTreeModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatButtonToggleModule,\n PortalModule\n ],\n\n exports: [\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MatSidenavModule,\n MatBadgeModule,\n MatListModule,\n MatGridListModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatRadioModule,\n MatDatepickerModule,\n MatChipsModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatCardModule,\n MatMenuModule,\n MatTabsModule,\n CdkTableModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatDialogModule,\n MatAutocompleteModule,\n MatProgressBarModule,\n MatSortModule,\n MatExpansionModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatTreeModule,\n MatSliderModule,\n MatSlideToggleModule,\n ScrollingModule,\n CdkScrollable,\n MatButtonToggleModule,\n PortalModule\n ],\n providers: [\n MatDatepickerModule,\n MatDialogModule\n ]\n})\n\nexport class MaterialModule { }\n","import { AfterViewInit, Directive, HostBinding, OnDestroy, OnInit, Signal, ViewContainerRef, computed, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IKlesField } from '../interfaces/field.interface';\nimport type { IKlesFieldConfig, IKlesFieldUi } from '../interfaces/field.config.interface';\nimport { FIELD, GROUP, SIBLING_FIELDS, GROUP_UI, FIELD_CONTEXT } from '../token';\nimport { FormGroup } from '@angular/forms';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\n\n@Directive()\nexport abstract class KlesFieldAbstract<TContext = unknown> implements IKlesField, OnInit, AfterViewInit, OnDestroy {\n public readonly field = inject<IKlesFieldConfig>(FIELD);\n public readonly group = inject<FormGroup<any>>(GROUP);\n public readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n public readonly ui = inject<GroupUiState>(GROUP_UI, { optional: true });\n public readonly context = inject(FIELD_CONTEXT, { optional: true }) as Signal<TContext | null> | null;\n\n protected readonly fieldUi = computed(() => this.ui?.get(this.field.name)?.value());\n\n protected readonly resolvedFieldUi = computed<IKlesFieldUi>(() => {\n const fieldUi = this.fieldUi() ?? {};\n\n const resolvedUi =\n this.field.resolveUi?.({\n context: this.context?.() ?? null,\n field: this.field,\n group: this.group,\n siblingFields: this.siblingFields,\n }) ?? {};\n\n return {\n ...fieldUi,\n ...resolvedUi,\n };\n });\n\n public readonly appearance = computed(() => this.resolvedFieldUi()?.appearance);\n public readonly inputType = computed(() => this.resolvedFieldUi()?.inputType);\n public readonly min = computed(() => this.resolvedFieldUi()?.min);\n public readonly max = computed(() => this.resolvedFieldUi()?.max);\n public readonly maxLength = computed(() => this.resolvedFieldUi()?.maxLength ?? 524288);\n public readonly step = computed(() => this.resolvedFieldUi()?.step);\n public readonly ngClass = computed(() => this.resolvedFieldUi()?.ngClass);\n public readonly ngStyle = computed(() => this.resolvedFieldUi()?.ngStyle);\n public readonly indeterminate = computed(() => this.resolvedFieldUi()?.indeterminate ?? false);\n public readonly color = computed(() => this.resolvedFieldUi()?.color);\n public readonly icon = computed(() => this.resolvedFieldUi()?.icon);\n public readonly iconSvg = computed(() => this.resolvedFieldUi()?.iconSvg);\n public readonly buttonAppearance = computed(() => this.resolvedFieldUi()?.buttonAppearance);\n public readonly label = computed(() => this.resolvedFieldUi()?.label ?? this.field.label);\n public readonly hint = computed(() => this.resolvedFieldUi()?.hint ?? this.field.hint);\n public readonly placeholder = computed(() => this.resolvedFieldUi()?.placeholder ?? this.field.placeholder);\n public readonly tooltip = computed(() => this.resolvedFieldUi()?.tooltip ?? this.field.tooltip);\n public readonly imageUrl = computed(() => this.resolvedFieldUi()?.imageUrl);\n public readonly imageAlt = computed(() => this.resolvedFieldUi()?.imageAlt ?? this.label());\n\n protected readonly viewRef = inject(ViewContainerRef);\n\n @HostBinding('attr.klesDirective') directive: any;\n\n protected _onDestroy = new Subject<void>();\n\n constructor() {\n if (this.field.directive) {\n this.directive = new this.field.directive(this.viewRef, this);\n }\n }\n\n ngOnInit(): void {\n if (this.field.valueChanges) {\n this.field.valueChanges(this.field, this.group, this.siblingFields);\n }\n\n this.group.controls[this.field.name]?.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((val) => {\n if (this.field.valueChanges) {\n this.field.valueChanges(this.field, this.group, this.siblingFields, val);\n }\n });\n\n if (this.directive) {\n this.directive.ngOnInit();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.directive && this.directive.ngAfterViewInit) {\n this.directive?.ngAfterViewInit();\n }\n\n if (this.field.autofocus) {\n setTimeout(() => {\n (<any>this.group.controls[this.field.name])?.nativeElement.focus();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.directive?.ngOnDestroy();\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n applyPipeTransform() {\n if (this.group && this.field) {\n const control = this.group.controls[this.field.name];\n if (control) {\n const val = this.group.controls[this.field.name].value;\n if (this.field.pipeTransform) {\n this.field.pipeTransform.forEach((p) => {\n let pipeVal = control.value;\n if (p.options) {\n p.options.forEach((opt) => {\n pipeVal = p.pipe.transform(val, opt);\n });\n } else {\n pipeVal = p.pipe.transform(val);\n }\n control.patchValue(pipeVal, { onlySelf: true, emitEvent: false });\n });\n }\n }\n }\n }\n\n isPending() {\n return this.group.controls[this.field.name].pending || this.field.pending;\n }\n\n onFocus() {\n if (this.field?.onFocus) {\n this.field.onFocus(this.field, this.group);\n }\n }\n\n onBlur() {\n if (this.field?.onBlur) {\n this.field.onBlur(this.field, this.group);\n }\n }\n\n public triggerAction(actionId: string, originalEvent: Event, value?: unknown): void {\n originalEvent.stopPropagation();\n\n this.field.onAction?.({\n actionId,\n value,\n context: this.context?.() ?? null,\n field: this.field,\n group: this.group,\n originalEvent,\n });\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-label',\n template: `\n <div [formGroup]=\"group\">\n <input matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"{ color: 'inherit' }\" [formControlName]=\"field.name\" [placeholder]=\"placeholder()\" [type]=\"inputType()\" />\n </div>\n `,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatTooltip, MatInputModule],\n})\nexport class KlesFormLabelComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n constructor() {\n super();\n this.group.controls[this.field.name].disable({ emitEvent: false });\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, AfterViewInit, Injector, Input } from '@angular/core';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { IKlesValidator, KlesValidationKey } from '../interfaces/validator.interface';\nimport { AsyncValidator, Validators } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { flattenValidators } from '../utils/validation.util';\n\n@Component({\n selector: '[matErrorMessage]',\n template: `\n @for (validation of validationsKeys; track validation.name) {\n @if (inputRef?.ngControl.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n @for (validation of asyncValidationsKeys; track validation.name) {\n @if (inputRef?.ngControl.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n `,\n standalone: true,\n imports: [ReactiveFormsModule],\n})\nexport class MatErrorMessageDirective implements AfterViewInit {\n validationsKeys: KlesValidationKey[] = [];\n asyncValidationsKeys: KlesValidationKey[] = [];\n\n @Input()\n set validations(v: IKlesValidator<Validators>[]) {\n this.validationsKeys = flattenValidators<Validators>(v ?? []);\n }\n\n @Input()\n set asyncValidations(v: IKlesValidator<AsyncValidator>[]) {\n this.asyncValidationsKeys = flattenValidators<AsyncValidator>(v ?? []);\n }\n\n inputRef: MatFormFieldControl<MatFormFieldControl<any>>;\n\n constructor(private _inj: Injector) {}\n\n ngAfterViewInit() {\n let container = this._inj.get(MatFormField, null, { optional: true });\n this.inputRef = container?._control;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KlesDynamicFormIntl {\n loading = 'Loading';\n selectAll = 'Select all';\n clearSearch = 'clear';\n search= 'search'\n}\n","import { KlesFieldAbstract } from './field.abstract';\nimport { OnInit, Component, OnDestroy, signal, ViewContainerRef, computed, inject } from '@angular/core';\nimport { combineLatest, concat, Observable, of, Subject } from 'rxjs';\nimport { startWith, map, switchMap, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { MatIconModule } from '@angular/material/icon';\n\n@FieldMapper({ type: EnumType.input })\n@Component({\n selector: 'kles-form-input',\n template: `\n <mat-form-field [formGroup]=\"group\" [color]=\"color()\" [subscriptSizing]=\"field.subscriptSizing\" class=\"form-element\" [appearance]=\"appearance()\" class=\"field-bottom\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n @if (icon()) {\n <mat-icon matPrefix>{{ icon() }}</mat-icon>\n }\n\n @if (field.autocomplete) {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [matAutocomplete]=\"auto\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn.bind(this)\" [panelWidth]=\"this.field.panelWidth\">\n @if (filteredOption$ | async; as filteredOption) {\n @if (filteredOption.loading) {\n <mat-option disabled>\n <div class=\"loadingSelect\">\n {{ intl.loading }}...\n <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\n </div>\n </mat-option>\n } @else {\n @if (!field.autocompleteComponent) {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n {{ field.property ? option[field.property] : option }}\n </mat-option>\n }\n } @else {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"option\" [field]=\"field\"> </ng-container>\n </mat-option>\n }\n }\n }\n }\n </mat-autocomplete>\n } @else {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n @if (field.subComponents || field.clearable || isPending()) {\n <div matSuffix class=\"suffix\">\n @if (isPending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"21\"></mat-spinner>\n }\n @if (field.subComponents || field.clearable) {\n <ng-content></ng-content>\n }\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss', '../styles/loading-select.style.scss'],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatAutocompleteModule, MatTooltipModule, MatProgressSpinnerModule, MatOptionModule, MatError, MatErrorMessageDirective, KlesComponentDirective, MatIconModule],\n})\nexport class KlesFormInputComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n filteredOption$!: Observable<{ loading: boolean; options: any[] }>;\n options$!: Observable<{ loading: boolean; options: any[] }>;\n private isFocused = new Subject<boolean>();\n isLoading = signal(false);\n\n public intl = inject(KlesDynamicFormIntl);\n\n constructor() {\n super();\n if (this.maxLength() === undefined) {\n this.ui?.get(this.field.name)?.patchValue({ maxLength: 524288 }); // Max default input W3C\n }\n }\n\n ngOnInit(): void {\n if (this.field.lazy) {\n this.options$ = this.isFocused.pipe(\n distinctUntilChanged(),\n filter((isFocused) => isFocused),\n switchMap((isFocused) => {\n if (isFocused) {\n let obs$: Observable<any[]>;\n if (this.field.options instanceof Observable) {\n obs$ = this.field.options;\n } else if (this.field.options instanceof Function) {\n obs$ = this.field.options();\n } else {\n obs$ = of(this.field.options ?? []);\n }\n return concat(\n of({ loading: true, options: [] }),\n obs$.pipe(\n map((options: any[]) => {\n return { loading: false, options };\n }),\n ),\n );\n } else {\n return of({ loading: false, options: [] });\n }\n }),\n );\n } else {\n if (this.field.options instanceof Observable) {\n this.options$ = concat(\n of({ loading: true, options: [] }),\n this.field.options.pipe(\n map((options: any[]) => {\n return { loading: false, options };\n }),\n ),\n );\n } else if (this.field.options instanceof Function) {\n this.options$ = concat(\n of({ loading: true, options: [] }),\n this.field.options().pipe(\n map((options: any[]) => {\n return { loading: false, options };\n }),\n ),\n );\n } else {\n this.options$ = of({ loading: false, options: this.field.options });\n }\n }\n\n this.filteredOption$ = concat(\n combineLatest([this.group.get(this.field.name)?.valueChanges.pipe(startWith('')) ?? of(''), this.options$]).pipe(\n map(([data, response]) => {\n if (response.loading) {\n return response;\n } else {\n return { loading: false, options: data && response.options ? this.filterData(data, response.options) : response.options };\n }\n }),\n ),\n );\n\n super.ngOnInit();\n }\n\n onFocus() {\n if (this.field.autocomplete && this.field.lazy) {\n this.isFocused.next(true);\n }\n\n super.onFocus();\n }\n\n private filterData(value: any, options: any[]): any[] {\n let filterValue;\n\n if (typeof value === 'string' && Object.prototype.toString.call(value) === '[object String]') {\n filterValue = value.toLowerCase();\n } else {\n filterValue = value[this.field.property].toLowerCase();\n }\n\n if (this.field.property) {\n return options.filter((option) => option[this.field.property].toLowerCase().indexOf(filterValue) === 0);\n }\n return options.filter((option) => option.toLowerCase().indexOf(filterValue) === 0);\n }\n\n displayFn(value: any) {\n if (this.field.displayWith) {\n return this.field.displayWith(value);\n } else {\n if (value && this.field && this.field.property) {\n return value[this.field.property] ? value[this.field.property] : '';\n }\n return value ? value : '';\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatError, MatFormField, MatFormFieldModule, MatHint, MatLabel } from '@angular/material/form-field';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInput, MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-datepicker',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" class=\"margin-top\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <input matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [matDatepicker]=\"picker\" [formControlName]=\"field.name\" [placeholder]=\"placeholder()\" [min]=\"min()\" [max]=\"max()\" />\n <div matSuffix class=\"suffix\">\n <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n <ng-content></ng-content>\n </div>\n <mat-datepicker #picker></mat-datepicker>\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}', '.suffix { display: flex; flex-direction: row}'],\n standalone: true,\n imports: [CommonModule, MatErrorMessageDirective, MatFormFieldModule, MatInputModule, MatTooltipModule, MatError, MatHint, MatDatepickerModule, ReactiveFormsModule, MatTooltip, MatLabel, MatFormField, MatInput],\n})\nexport class KlesFormDateComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { Observable, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioButton, MatRadioGroup } from '@angular/material/radio';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'kles-form-radiobutton',\n template: `\n <div [formGroup]=\"group\">\n <label class=\"radio-label-padding\">{{label()}}</label>\n <mat-radio-group [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [formControlName]=\"field.name\">\n @for (item of options$ | async; track item) {\n <mat-radio-button [value]=\"item\">{{item}}</mat-radio-button>\n }\n </mat-radio-group>\n </div>\n`,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatRadioButton, MatRadioGroup, ReactiveFormsModule, MatTooltip],\n})\nexport class KlesFormRadioComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n options$: Observable<any[]>;\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options;\n }\n else if (this.field.options instanceof Function) {\n this.options$ = this.field.options();\n }\n else {\n this.options$ = of(this.field.options);\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}","import { Component, computed, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@FieldMapper({ type: EnumType.checkbox })\n@Component({\n selector: 'kles-form-checkbox',\n template: `\n <div [formGroup]=\"group\">\n <mat-checkbox [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [indeterminate]=\"indeterminate()\" (change)=\"onChange($event)\" [color]=\"color()\" [formControlName]=\"field.name\">{{ label() }}</mat-checkbox>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatCheckbox, MatTooltip],\n})\nexport class KlesFormCheckboxComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n onChange(e: MatCheckboxChange) {\n this.ui?.get(this.field.name)?.patchValue({ indeterminate: false });\n }\n}\n","import { AbstractControl, FormArray, FormControl, FormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\nimport { v4 as uuidv4 } from 'uuid';\nimport { componentMapper } from \"../decorators/component.decorator\";\nimport { klesFieldControlFactory } from \"../factories/field.factory\";\n\nexport class KlesFormArray extends KlesFormControl {\n\n public create(): AbstractControl<any, any> {\n const array = new FormArray([], {\n validators: this.bindValidations(this.field.validations || []),\n asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n updateOn: this.field.updateOn || 'change'\n });\n\n if (this.field.value && Array.isArray(this.field.value)) {\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.value.forEach(val => {\n const line = { ...val, _id: val?._id || uuidv4() };\n const group = new FormGroup({ _id: new FormControl(line._id) });\n this.field.collections?.forEach(subfield => {\n const data = line[subfield.name] || null;\n let control;\n if (subfield.type) {\n control = componentMapper.find(c => c.type === subfield.type)?.factory({ ...subfield, ...(data && { value: data }) }, this.ref)\n || klesFieldControlFactory({ ...subfield, ...(data && { value: data }) }, this.ref);\n } else {\n control = componentMapper.find(c => c.component === subfield.component)?.factory({ ...subfield, ...(data && { value: data }) }, this.ref)\n || klesFieldControlFactory({ ...subfield, ...(data && { value: data }) }, this.ref);\n }\n group.addControl(subfield.name, control);\n });\n array.push(group);\n });\n }\n } else {\n const group = new FormGroup({ _id: new FormControl(uuidv4()) });\n this.field.collections?.forEach(subfield => {\n let control;\n if (subfield.type) {\n control = componentMapper.find(c => c.type === subfield.type)?.factory({ ...subfield }, this.ref)\n || klesFieldControlFactory({ ...subfield }, this.ref);\n } else {\n control = componentMapper.find(c => c.component === subfield.component)?.factory({ ...subfield }, this.ref)\n || klesFieldControlFactory({ ...subfield }, this.ref);\n\n }\n group.addControl(subfield.name, control);\n });\n array.push(group);\n }\n\n\n if (this.field.disabled) {\n array.disable();\n }\n\n\n return array;\n }\n}\n","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { UntypedFormGroup, UntypedFormArray, UntypedFormBuilder, ValidatorFn, Validators, AsyncValidatorFn, ReactiveFormsModule } from '@angular/forms';\nimport { IKlesValidator } from '../interfaces/validator.interface';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { KlesFormArray } from '../controls/array.control';\nimport { cloneDeep } from 'lodash';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\n\nimport { MatError } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { MatIconButton } from '@angular/material/button';\n\n@FieldMapper({ type: 'listfield', factory: (field) => new KlesFormArray(field).create() })\n@Component({\n selector: 'kles-form-listfield',\n template: `\n <div [formGroup]=\"group\" class=\"form-element\">\n <div class=\"label\">\n {{ label() }}\n <button matIconButton color=\"primary\" (click)=\"addField()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n\n <div class=\"dynamic-form\" [formGroupName]=\"field.name\">\n @for (subGroup of formArray.controls; track subGroup.value._id; let idx = $index) {\n <div class=\"subfields\">\n @for (subfield of collections[idx]; track subfield.name) {\n <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [siblingFields]=\"collections[idx]\" [context]=\"context\"> </ng-container>\n }\n @if (collections[idx]) {\n <button matIconButton (click)=\"deleteField(idx)\" color=\"primary\">\n <mat-icon>delete_outlined</mat-icon>\n </button>\n }\n </div>\n }\n @for (validation of field.validations; track validation.name) {\n <ng-container ngProjectAs=\"mat-error\">\n @if (group.get(field.name).hasError(validation.name)) {\n <mat-error>{{ validation.message }}</mat-error>\n }\n </ng-container>\n }\n @for (validation of field.asyncValidations; track validation.name) {\n <ng-container ngProjectAs=\"mat-error\">\n @if (group.get(field.name).hasError(validation.name)) {\n <mat-error>{{ validation.message }}</mat-error>\n }\n </ng-container>\n }\n </div>\n </div>\n `,\n styles: [\n '.subfields {display: flex; flex-direction: row; gap:5px}',\n `\n .label {\n display: flex;\n align-items: center;\n flex-direction: row;\n gap: 5px;\n }\n `,\n ],\n standalone: true,\n imports: [MatError, MatIcon, MatIconButton, KlesDynamicFieldDirective, ReactiveFormsModule],\n})\nexport class KlesFormListFieldComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n formArray!: UntypedFormArray;\n collections: IKlesFieldConfig[][] = [];\n\n private fb = inject(UntypedFormBuilder);\n\n ngOnInit(): void {\n this.formArray = this.group.controls[this.field.name] as UntypedFormArray;\n\n this.collections = this.formArray?.controls?.map(() => {\n return this.field.collections ? cloneDeep(this.field.collections) : [];\n });\n\n super.ngOnInit();\n }\n\n private createFormGroup(): UntypedFormGroup {\n const group = this.fb.group({});\n this.field.collections?.forEach((item: any) => {\n const control = this.fb.control(null, this.bindValidations(item.validations || []), this.bindAsyncValidations(item.asyncValidations || []));\n group.addControl(item.name, control);\n });\n return group;\n }\n\n deleteField(index: number) {\n this.collections.splice(index, 1);\n this.formArray.removeAt(index);\n }\n\n addField() {\n this.collections.push(this.field.collections ? cloneDeep(this.field.collections) : []);\n this.formArray.push(this.createFormGroup());\n }\n\n private bindValidations(validations: IKlesValidator<ValidatorFn>[]): ValidatorFn | null {\n if (validations.length > 0) {\n const validList: ValidatorFn[] = [];\n validations.forEach((valid) => {\n validList.push(valid.validator);\n });\n return Validators.compose(validList);\n }\n return null;\n }\n\n private bindAsyncValidations(validations: IKlesValidator<AsyncValidatorFn>[]): AsyncValidatorFn | null {\n if (validations.length > 0) {\n const validList: AsyncValidatorFn[] = [];\n validations.forEach((valid) => {\n validList.push(valid.validator);\n });\n return Validators.composeAsync(validList);\n }\n return null;\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { MaterialColorPickerTriggerComponent, parseColor, readableTextColor, toCssRgba } from '@3kles/kles-material-color-picker';\n\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@Component({\n selector: 'kles-form-color',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatTooltipModule, MatErrorMessageDirective, MaterialColorPickerTriggerComponent],\n template: `\n <mat-form-field class=\"form-element\" [formGroup]=\"group\" [appearance]=\"appearance()\" [subscriptSizing]=\"field.subscriptSizing\">\n <input\n matInput\n autocomplete=\"off\"\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [placeholder]=\"placeholder()\"\n [formControlName]=\"field.name\"\n [style.background-color]=\"backgroundColor()\"\n [style.color]=\"foregroundColor()\"\n />\n\n <div matSuffix class=\"suffix\">\n <kles-material-color-picker-trigger\n [color]=\"currentColor()\"\n [outputFormat]=\"colorOption().format ?? 'hex8'\"\n [commitMode]=\"colorOption().commitMode ?? 'live'\"\n [alpha]=\"colorOption().alpha ?? true\"\n [eyeDropper]=\"colorOption().eyeDropper ?? true\"\n [saveOnOutside]=\"colorOption().saveOnOutside ?? true\"\n [fallbackColor]=\"colorOption().fallbackColor ?? '#000000ff'\"\n [presets]=\"colorOption().presets ?? []\"\n [position]=\"colorOption().position ?? 'auto'\"\n [positionOffset]=\"colorOption().positionOffset ?? 8\"\n [disabled]=\"pickerDisabled()\"\n (colorChange)=\"setColor($event)\"\n />\n @if (field.subComponents || field.clearable) {\n <ng-content />\n }\n </div>\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styleUrls: ['../styles/mat-suffix.style.scss'],\n styles: `\n :host {\n display: block;\n width: 100%;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KlesFormColorComponent extends KlesFieldAbstract {\n private readonly formControl = this.group.controls[this.field.name];\n\n private readonly controlValue = toSignal(this.formControl.valueChanges, {\n initialValue: this.formControl.value,\n });\n\n private readonly controlStatus = toSignal(this.formControl.statusChanges, {\n initialValue: this.formControl.status,\n });\n\n readonly colorOption = computed(() => {\n const dynamicField = this.ui?.get(this.field.name)?.value();\n\n return dynamicField?.colorOption ?? this.field.colorOption ?? {};\n });\n\n readonly parsedColor = computed(() => {\n return parseColor(this.controlValue());\n });\n\n readonly currentColor = computed(() => {\n const value = this.controlValue();\n\n if (typeof value === 'string' && this.parsedColor()) {\n return value;\n }\n\n return this.colorOption().fallbackColor ?? '#000000ff';\n });\n\n readonly backgroundColor = computed(() => {\n const color = this.parsedColor();\n\n return color ? toCssRgba(color) : '#ffffff';\n });\n\n readonly foregroundColor = computed(() => {\n const color = this.parsedColor();\n\n return color ? readableTextColor(color) : '#000000';\n });\n\n readonly pickerDisabled = computed(() => {\n return this.controlStatus() === 'DISABLED' || this.colorOption().disable === true;\n });\n\n setColor(value: string): void {\n if (this.pickerDisabled()) {\n return;\n }\n\n this.formControl.setValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n }\n}\n","import { OnInit, Input, Injectable, Component, EventEmitter, Output } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { MatButtonAppearance } from '@angular/material/button';\n\nexport interface IButton {\n event?: any;\n uiButton?: IUIButton;\n}\n\nexport interface IUIButton {\n label?: string;\n color?: string;\n icon?: string;\n iconSvg?: string;\n disabled?: boolean;\n class?: string;\n type?: string;\n accept?: string;\n buttonAppearance?: MatButtonAppearance;\n}\n\n@Component({\n template: '',\n standalone: true,\n})\nexport abstract class KlesButtonBase implements OnInit, ControlValueAccessor {\n @Input() name = '';\n @Input() label = '';\n @Input() color = 'accent';\n @Input() icon = '';\n @Input() iconSvg = '';\n @Input() disabled = false;\n @Input('type') get type(): any {\n return this._type;\n }\n set type(value: any) {\n this._type = value || this._type;\n }\n @Input() classButton = '';\n @Input() value: IButton = {};\n @Input() tooltip?: string;\n @Input() buttonAppearance: MatButtonAppearance = 'text';\n\n @Output() action = new EventEmitter<MouseEvent>();\n\n protected _type = 'button';\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n ngOnInit(): void {}\n\n click(event: MouseEvent) {\n if (this.disabled || this._type !== 'button') {\n return;\n }\n\n if (this.value) {\n this.value.event = this.name;\n this.onChange(this.value);\n }\n\n this.action.emit(event);\n }\n\n writeValue(value: IButton): void {\n if (!value) {\n value = { event: this.name };\n }\n if (!value.event) {\n value.event = this.name;\n }\n if (value.uiButton) {\n const uiButton = value.uiButton;\n this.label = uiButton.label ? uiButton.label : this.label;\n this.color = uiButton.color ? uiButton.color : this.color;\n this.icon = uiButton.icon ? uiButton.icon : this.icon;\n this.iconSvg = uiButton.iconSvg ? uiButton.iconSvg : this.iconSvg;\n this.disabled = uiButton.disabled ? uiButton.disabled : this.disabled;\n this.classButton = uiButton.class ? uiButton.class : this.classButton;\n this.type = uiButton.type ? uiButton.type : 'submit';\n this.buttonAppearance = uiButton.buttonAppearance ? uiButton.buttonAppearance : this.buttonAppearance;\n }\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n selector: 'kles-button',\n template: `\n <button [matButton]=\"buttonAppearance\" [type]=\"type\" [ngClass]=\"classButton\" [color]=\"(color)?color:'primary'\" [disabled]=\"disabled\"\n (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n {{label}}\n\n @if (icon) {\n <mat-icon>{{icon}}</mat-icon>\n }\n\n @if (iconSvg) {\n <mat-icon svgIcon=\"{{iconSvg}}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesButtonComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatIcon, MatTooltip, MatButton]\n})\nexport class KlesButtonComponent extends KlesButtonBase implements OnInit {\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesButtonComponent } from '../forms/button-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-button',\n template: `\n <div [formGroup]=\"group\">\n <kles-button\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n [buttonAppearance]=\"buttonAppearance()\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-button>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [KlesButtonComponent, ReactiveFormsModule],\n})\nexport class KlesFormButtonComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { IButton, KlesButtonBase } from './button-control-base';\n\nimport { KlesButtonComponent } from './button-control.component';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatBadge } from '@angular/material/badge';\n\nexport interface IButtonChecker extends IButton {\n busy: boolean;\n error?: any[];\n message?: string;\n}\n\n@Component({\n selector: 'kles-button-checker',\n template: `\n @if (value.error && !value.busy) {\n <span>\n <kles-button [classButton]=\"classButton\" [name]=\"name\" [label]=\"label\" [color]=\"color\" [icon]=\"icon\" [iconSvg]=\"iconSvg\" [value]=\"value\" [tooltip]=\"tooltip\" [disabled]=\"disabled\" matBadge=\"{{ countError() }}\" (click)=\"click($event)\">\n </kles-button>\n </span>\n }\n <span style=\"text-align: center;\">\n @if (value.busy || false) {\n <span style=\"text-align: center;margin-right: 10px\">\n <mat-spinner [diameter]=\"25\"></mat-spinner>\n </span>\n } @if (value.message) {\n <span style=\"margin-right: 10px\">\n {{ value.message }}\n </span>\n }\n </span>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesButtonCheckerComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [ReactiveFormsModule, KlesButtonComponent, MatProgressSpinner, MatBadge],\n})\nexport class KlesButtonCheckerComponent extends KlesButtonBase implements ControlValueAccessor {\n value: IButtonChecker = {\n busy: false,\n error: [],\n event: false,\n };\n\n countError(): number {\n return this.value.error ? this.value.error.length : 0;\n }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesButtonCheckerComponent } from '../forms/buttonchecker-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-button-checker',\n template: `\n <div [formGroup]=\"group\">\n <kles-button-checker\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [disabled]=\"field.disabled\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-button-checker>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [KlesButtonCheckerComponent, ReactiveFormsModule],\n})\nexport class KlesFormButtonCheckerComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Input } from '@angular/core';\nimport { Component, forwardRef, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IButton, KlesButtonBase } from './button-control-base';\nimport { KlesButtonComponent } from './button-control.component';\n\n\nexport interface IButtonFile extends IButton {\n fileContent?: string | string[];\n}\n\n@Component({\n selector: 'kles-button-file',\n template: `\n <input type=\"file\" #file style=\"display: none\" [accept]=\"accept\" (change)=\"onFileSelect($event.target)\" multiple />\n <kles-button\n [classButton]=\"classButton\"\n [name]=\"name\" [label]=\"label\" [color]=\"color\"\n [icon]=\"icon\" [iconSvg]=\"iconSvg\"\n [disabled]=\"disabled\"\n [value]=\"value\" (click)=\"click($event)\">\n </kles-button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesButtonFileComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [KlesButtonComponent],\n})\nexport class KlesButtonFileComponent extends KlesButtonBase {\n @ViewChild('file') file;\n @Input() accept = '*.*';\n fileReader = new FileReader();\n fileContent: string | string[];\n value: IButtonFile = {};\n\n\n click(event) {\n if (!this.disabled) {\n this.file.nativeElement.click();\n }\n }\n\n writeValue(value: IButton): void {\n if (!value) {\n value = { event: this.name };\n }\n if (!value.event) {\n value.event = this.name;\n }\n if (value.uiButton) {\n const uiButton = value.uiButton;\n this.label = (uiButton.label) ? uiButton.label : this.label;\n this.color = (uiButton.color) ? uiButton.color : this.color;\n this.icon = (uiButton.icon) ? uiButton.icon : this.icon;\n this.iconSvg = (uiButton.iconSvg) ? uiButton.iconSvg : this.iconSvg;\n this.disabled = (uiButton.disabled) ? uiButton.disabled : this.disabled;\n this.classButton = (uiButton.class) ? uiButton.class : this.classButton;\n this.accept = (uiButton.accept) ? uiButton.accept : this.accept;\n }\n this.value = value;\n }\n\n\n onFileLoad(fileLoadedEvent) {\n const textFromFileLoaded = fileLoadedEvent.target.result;\n this.fileContent = textFromFileLoaded;\n }\n\n async onFileSelect(input: HTMLInputElement) {\n if (input.files.length > 0) {\n const files = input.files;\n let fileContent = [];\n if (files && files.length) {\n for (let i = 0; i < files.length; i++) {\n try {\n fileContent[i] = await this.readUploadedFile(files[i]);\n } catch (e) {\n }\n }\n if (fileContent.length === 1) {\n fileContent = fileContent[0];\n }\n }\n this.value.event = this.name;\n this.value.fileContent = fileContent;\n this.onChange(this.value);\n input.value = '';\n }\n }\n\n readUploadedFile(inputFile): Promise<any> {\n const temporaryFileReader = new FileReader();\n return new Promise((resolve, reject) => {\n temporaryFileReader.onerror = () => {\n temporaryFileReader.abort();\n const error: DOMException = new DOMException('Problem parsing input file.');\n reject(error);\n };\n temporaryFileReader.onload = () => {\n resolve(temporaryFileReader.result);\n };\n temporaryFileReader.readAsArrayBuffer(inputFile);\n });\n }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { KlesButtonFileComponent } from '../forms/buttonfile-control.component';\n\n@Component({\n selector: 'kles-form-button-file',\n template: `\n <div [formGroup]=\"group\">\n <kles-button-file\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [type]=\"field.buttonType\"\n [accept]=\"field.accept\"\n [disabled]=\"field.disabled\"\n >\n </kles-button-file>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [ReactiveFormsModule, KlesButtonFileComponent],\n})\nexport class KlesFormButtonFileComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n this.field.buttonType = 'button';\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-textarea',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [formGroup]=\"group\" [color]=\"color()\" class=\"form-element\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{label()}}</mat-label>\n }\n\n <textarea matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\" cdkTextareaAutosize [placeholder]=\"placeholder()\"\n [cdkAutosizeMinRows]=\"field.textareaAutoSize?.minRows\" [cdkAutosizeMaxRows]=\"field.textareaAutoSize?.maxRows\" [maxlength]=\"maxLength()\">\n </textarea>\n\n @if (field.subComponents || field.clearable) {\n <div matSuffix>\n <ng-content></ng-content>\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n standalone: true,\n imports: [CommonModule, MatErrorMessageDirective, ScrollingModule, ReactiveFormsModule, MatTooltip, MatLabel, MatFormField, TextFieldModule, MatInput]\n})\nexport class KlesFormTextareaComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'klesTransform',\n standalone: true\n})\nexport class KlesTransformPipe implements PipeTransform {\n\n transform(value: any, pipes: { pipe: PipeTransform, options?: any[] }[]): any {\n\n if (pipes && pipes.length > 0) {\n return pipes.reduce((acc, p) => {\n acc = p.pipe.transform(acc, ...(p.options || []));\n return acc;\n // if (p.options) {\n // p.options.forEach(opt => {\n // acc = p.pipe.transform(acc, opt);\n // });\n // } else {\n // acc = p.pipe.transform(acc);\n // }\n // return acc;\n }, value)\n }\n return value;\n\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.text })\n@Component({\n selector: 'kles-form-text',\n template: `\n <span [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n {{ (field.property && group.controls[field.name].value ? group.controls[field.name].value[field.property] : group.controls[field.name].value) | klesTransform: field.pipeTransform }}\n </span>\n @if (field.subComponents || isPending()) {\n <ng-content></ng-content>\n }\n `,\n styles: [\n `\n :host {\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: inherit;\n }\n `,\n ],\n standalone: true,\n imports: [CommonModule, KlesTransformPipe, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormTextComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\nimport { KlesFieldAbstract } from \"./field.abstract\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { KlesTransformPipe } from \"../pipe/transform.pipe\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatChip, MatChipListbox, MatChipOption } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\n@Component({\n selector: \"kles-form-chip\",\n template: `\n <div [formGroup]=\"group\"> \n <mat-chip-listbox>\n <mat-chip-option [color]=\"color()\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" selected [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n @if (icon()) {\n <mat-icon>{{icon()}}</mat-icon>\n }\n {{group.controls[field.name].value | klesTransform:field.pipeTransform}}\n </mat-chip-option>\n </mat-chip-listbox>\n </div>\n`,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatIcon, KlesTransformPipe, MatChipOption, MatChipListbox, MatTooltip, ReactiveFormsModule]\n})\nexport class KlesFormChipComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() { super.ngOnInit(); }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { AbstractControl, FormGroup, UntypedFormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\nimport { componentMapper } from \"../decorators/component.decorator\";\nimport { klesFieldControlFactory } from \"../factories/field.factory\";\nimport { concat, of } from \"rxjs\";\nimport { catchError, map, take } from \"rxjs/operators\";\n\nexport class KlesFormGroup extends KlesFormControl {\n\n public create(): AbstractControl<any, any> {\n const subGroup = new UntypedFormGroup({});\n\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.collections.forEach(subfield => {\n let control;\n if (subfield.type) {\n control = componentMapper.find(c => c.type === subfield.type)?.factory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }, this.ref)\n || klesFieldControlFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }, this.ref);\n } else {\n control = componentMapper.find(c => c.component === subfield.component)?.factory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] })\n || klesFieldControlFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }, this.ref);\n }\n\n subGroup.addControl(subfield.name, control);\n });\n }\n\n if (this.field.disabled) {\n subGroup.disable();\n }\n\n if (this.field.asyncValue) {\n concat(\n of({ value: null, pending: true }),\n this.field.asyncValue.pipe(\n take(1),\n catchError((err) => {\n console.error(err);\n return of(null);\n }),\n map((value) => ({ value, pending: false }))\n )\n ).subscribe((response) => {\n this.field.pending = response.pending;\n this.field.collections.forEach((col) => col.pending = response.pending);\n if (response.pending) {\n subGroup.disable({ emitEvent: false });\n } else {\n if (!this.field.disabled) {\n subGroup.enable({ emitEvent: false });\n }\n subGroup.patchValue(response.value);\n this.field.value = response.value;\n }\n });\n }\n\n return subGroup;\n }\n}\n","import { componentMapper } from '../decorators/component.decorator';\nimport { klesFieldUiFactory } from '../factories/field.factory';\nimport { KlesFormUiControl } from './default.ui';\nimport { GroupUiState } from './ui-state/group-ui-state';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\n\nexport class KlesFormUiGroup extends KlesFormUiControl {\n public create(): AbstractUiState<any, any> {\n const subGroup = new GroupUiState();\n\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.collections.forEach((subfield) => {\n let ui;\n\n if (subfield.type) {\n ui =\n componentMapper.find((c) => c.type === subfield.type)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||\n klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });\n } else {\n ui =\n componentMapper.find((c) => c.component === subfield.component)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||\n klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });\n }\n\n subGroup.addUiState(subfield.name, ui);\n });\n }\n return subGroup;\n }\n}\n","import { Component, HostBinding, OnDestroy, OnInit } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { KlesFormGroup } from '../controls/group.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\nimport { KlesFormUiGroup } from '../ui/group.ui';\n\n@FieldMapper({ type: EnumType.group, factory: (field) => new KlesFormGroup(field).create(), ui: (field) => new KlesFormUiGroup(field).create() })\n@Component({\n // host: { '[formGroup]': 'group', '[formGroupName]': 'field.name' },\n selector: 'kles-group',\n template: `\n <ng-container [formGroup]=\"group\">\n <ng-container [formGroupName]=\"field.name\">\n @if (label()) {\n <h4>\n <span [matTooltip]=\"tooltip() ?? ''\">{{ label() }}</span>\n </h4>\n }\n\n @for (subfield of field.collections; track subfield.name) {\n @if (subfield.visible !== false) {\n <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [siblingFields]=\"field.collections\" [ui]=\"subUi\" [context]=\"context\"> </ng-container>\n }\n }\n </ng-container>\n </ng-container>\n `,\n styles: [\n ' mat-form-field {width: calc(100%)}',\n ':host.group-container {display:flex; flex-direction: inherit; width: inherit; justify-content:inherit; }',\n ':host.group-container-column { display: flex;flex-direction: column; justify-content:inherit; }',\n ':host.group-container-column > * { width: 100%; }',\n ':host.group-container-row { display: inline-flex; flex-wrap:wrap; gap:10px; align-items: baseline; justify-content:inherit; }',\n ':host.group-container-row > * { width: 100%; }',\n ':host.group-container-grid { display: grid; }',\n ':host.group-container-inline-grid { display: inline-grid; }',\n ],\n standalone: true,\n imports: [KlesDynamicFieldDirective, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormGroupComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n orientationClass: 'group-container' | 'group-container-column' | 'group-container-row' | 'group-container-grid' | 'group-container-inline-grid' = 'group-container';\n\n @HostBinding('class') get className() {\n return this.orientationClass;\n }\n\n subGroup!: UntypedFormGroup;\n subUi!: GroupUiState;\n\n ngOnInit() {\n this.subGroup = this.group.controls[this.field.name] as UntypedFormGroup;\n this.subUi = this.ui?.get(this.field.name) as GroupUiState;\n super.ngOnInit();\n this.setOrientationClass();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n private setOrientationClass() {\n if (this.field.direction) {\n switch (this.field.direction) {\n case 'column':\n this.orientationClass = 'group-container-column';\n break;\n case 'row':\n this.orientationClass = 'group-container-row';\n break;\n case 'grid':\n this.orientationClass = 'group-container-grid';\n break;\n case 'inline-grid':\n this.orientationClass = 'group-container-inline-grid';\n break;\n }\n }\n }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFormInputComponent } from './input.component';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule, MatOption } from '@angular/material/autocomplete';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatIcon } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { MatFormField, MatInput, MatLabel } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-input-clearable',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [formGroup]=\"group\" [color]=\"color()\" class=\"form-element\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n @if (field.autocomplete) {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [matAutocomplete]=\"auto\"\n />\n\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn.bind(this)\" [panelWidth]=\"this.field.panelWidth\">\n @if (filteredOption$ | async; as filteredOption) {\n @if (filteredOption.loading) {\n <mat-option class=\"hide-checkbox\" disabled>\n <div class=\"loadingSelect\">\n {{ intl.loading }}...\n <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\n </div>\n </mat-option>\n } @else {\n @if (!field.autocompleteComponent) {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n {{ field.property ? option[field.property] : option }}\n </mat-option>\n }\n } @else {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"option\" [field]=\"field\"> </ng-container>\n </mat-option>\n }\n }\n }\n }\n </mat-autocomplete>\n } @else {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n />\n }\n @if (!group.get(field.name).disabled) {\n <button matSuffix matIconButton aria-label=\"Clear\" type=\"button\" (click)=\"group.controls[field.name].reset()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (isPending()) {\n <mat-spinner matSuffix mode=\"indeterminate\" diameter=\"17\"></mat-spinner>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n styleUrls: ['../styles/loading-select.style.scss'],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatAutocompleteModule, MatErrorMessageDirective, MatProgressSpinner, MatIcon, MatTooltip, KlesComponentDirective, MatOption, MatInput, MatLabel, MatFormField],\n})\nexport class KlesFormInputClearableComponent extends KlesFormInputComponent implements OnInit, OnDestroy {\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-icon',\n template: `\n <mat-icon [color]=\"color()\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n {{ group.controls[field.name].value }}\n </mat-icon>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatIcon, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormIconComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@FieldMapper({\n type: EnumType.lineBreak,\n factory: () => null\n})\n@Component({\n selector: 'kles-form-line-break',\n template: ``,\n styles: [\n `:host{\n flex-basis: 100%;\n display: flex;\n height:0;\n }`\n ],\n standalone: true\n})\nexport class KlesFormLineBreakComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() { super.ngOnInit(); }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'arrayFormat',\n standalone: true,\n})\nexport class ArrayFormatPipe implements PipeTransform {\n\n transform(values: any[], property?: string): string {\n if (values && Array.isArray(values)) {\n if (property) {\n return values.map(value => value[property]).filter(Boolean).join(', ');\n } else {\n return values.join(', ');\n }\n }\n return '';\n }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-link',\n template: `\n <a [href]=\"group.controls[field.name].value\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\">\n {{ label() }}\n </a>\n `,\n standalone: true,\n imports: [CommonModule, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormLinkComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'kles-form-slide-toggle',\n template: `\n <div [formGroup]=\"group\">\n <mat-slide-toggle [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [color]=\"color()\" [formControlName]=\"field.name\">{{ label() }}</mat-slide-toggle>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatSlideToggle, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormSlideToggleComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { SelectionChange, getMultipleValuesInSingleSelectionError } from \"@angular/cdk/collections\";\nimport { Subject } from \"rxjs\";\n\n\n\n/**\n * Copy and past from https://github.com/angular/components/blob/17.0.x/src/cdk/collections/selection-model.ts\n * (They put everything in private, thanks to angular team)\n */\nexport class KlesSelectionModel<T> {\n /** Currently-selected values. */\n private _selection = new Set<T>();\n\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n private _deselectedToEmit: T[] = [];\n\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n private _selectedToEmit: T[] = [];\n\n /** Cache for the array value of the selected items. */\n private _selected: T[] | null;\n\n /** Selected values. */\n get selected(): T[] {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n\n return this._selected;\n }\n\n /** Event emitted when the value has changed. */\n readonly changed = new Subject<any>();\n\n constructor(\n private _multiple = false,\n initiallySelectedValues?: T[],\n private _emitChanges = true,\n public compareWith?: (o1: T, o2: T) => boolean,\n ) {\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n } else {\n this._markSelected(initiallySelectedValues[0]);\n }\n\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n select(values: T[], option?: { emitEvent: boolean }): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n if (!option || option?.emitEvent) {\n this._emitChangeEvent();\n } else {\n this._selected = null;\n }\n return changed;\n }\n\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n deselect(values: T[], option?: { emitEvent: boolean }): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n if (!option || option?.emitEvent) {\n this._emitChangeEvent();\n } else {\n this._selected = null;\n }\n return changed;\n }\n\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n setSelection(values: T[], option?: { emitEvent: boolean }): boolean | void {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values.map((value) => this._getConcreteValue(value)));\n values.forEach(value => this._markSelected(value));\n\n oldValues\n .filter(value => !newSelectedSet.has(value))\n .forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n if (!option || option?.emitEvent) {\n this._emitChangeEvent();\n } else {\n this._selected = null;\n }\n return changed;\n }\n\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n toggle(value: T): boolean | void {\n if (Array.isArray(value)) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n } else {\n return this.isSelected(value) ? this.deselect([value]) : this.select([value]);\n }\n\n }\n\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n clear(flushEvent = true): boolean | void {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n\n /**\n * Determines whether a value is selected.\n */\n isSelected(value: T): boolean {\n return this._selection.has(this._getConcreteValue(value));\n }\n\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty(): boolean {\n return this._selection.size === 0;\n }\n\n /**\n * Determines whether the model has a value.\n */\n hasValue(): boolean {\n return !this.isEmpty();\n }\n\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate?: (a: T, b: T) => number): void {\n if (this._multiple && this.selected) {\n this._selected!.sort(predicate);\n }\n }\n\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n\n /** Emits a change event and clears the records of selected and deselected values. */\n private _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n\n /** Selects a value. */\n private _markSelected(value: T) {\n value = this._getConcreteValue(value);\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n\n /** Deselects a value. */\n private _unmarkSelected(value: T) {\n value = this._getConcreteValue(value);\n if (this.isSelected(value)) {\n this._selection.delete(value);\n\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n\n /** Clears out the selected values. */\n private _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n private _verifyValueAssignment(values: T[]) {\n if (values.length > 1 && !this._multiple) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n\n /** Whether there are queued up change to be emitted. */\n private _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n\n /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n private _getConcreteValue(inputValue: T): T {\n if (!this.compareWith) {\n return inputValue;\n } else {\n for (let selectedValue of this._selection) {\n if (this.compareWith!(inputValue, selectedValue)) {\n return selectedValue;\n }\n }\n return inputValue;\n }\n }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { takeUntil } from 'rxjs/operators';\nimport { KlesSelectionModel } from '../selection/selection-model';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\n@Component({\n selector: 'kles-form-selection-list',\n template: `\n <div class=\"margin-top\" [formGroup]=\"group\">\n <mat-selection-list [attr.id]=\"field.id\" [multiple]=\"field.multiple\" [ngClass]=\"ngClass()\" (selectionChange)=\"onSelectionChange($event)\">\n @if(options$ | async; as options){ @if(field.virtualScroll){\n <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 20\" style=\"height:100%\">\n @if (!field.autocompleteComponent) {\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } @else{\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n }\n </cdk-virtual-scroll-viewport>\n } @else{ @if (!field.autocompleteComponent) { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } } @else { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n } } } }@else{\n <mat-spinner></mat-spinner>\n }\n </mat-selection-list>\n </div>\n `,\n styles: [\n `\n mat-selection-list {\n width: 100%;\n height: 250px;\n overflow: auto;\n }\n `,\n ],\n standalone: true,\n imports: [CommonModule, KlesTransformPipe, MatProgressSpinnerModule, KlesComponentDirective, MatListModule, ScrollingModule, ReactiveFormsModule],\n})\nexport class KlesFormSelectionListComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n selection!: KlesSelectionModel<any>;\n options$!: Observable<any[]>;\n\n ngOnInit() {\n super.ngOnInit();\n\n this.selection = new KlesSelectionModel<any>(this.field.multiple || false, [], true, (o1: any, o2: any) => {\n if (this.field.property) {\n return o1?.[this.field.property] === o2?.[this.field.property];\n } else {\n return o1 === o2;\n }\n });\n\n if (this.field.value) {\n this.selection.select(Array.isArray(this.field.value) ? this.field.value : [this.field.value]);\n }\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options;\n } else if (this.field.options instanceof Function) {\n this.options$ = this.field.options();\n } else {\n this.options$ = of(this.field.options ?? []);\n }\n\n this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((value) => {\n this.selection.setSelection(Array.isArray(value) ? value : [value], { emitEvent: false });\n });\n\n this.selection.changed.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n this.group.controls[this.field.name].patchValue(change.source.selected);\n this.group.controls[this.field.name].markAllAsTouched();\n this.group.controls[this.field.name].markAsDirty();\n });\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n onSelectionChange(selection: MatSelectionListChange) {\n selection.options.forEach((option) => {\n option.selected ? this.selection.select([option.value]) : this.selection.deselect([option.value]);\n });\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n@FieldMapper({ type: EnumType.badge })\n@Component({\n selector: 'kles-form-badge',\n template: `\n <span [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" \n matBadge=\"{{group.controls[field.name].value}}\" matBadgeOverlap=\"false\" [matBadgeColor]=\"color()\">\n </span>\n`,\n standalone: true,\n \n imports: [CommonModule, MatTooltipModule, MatBadgeModule],\n})\nexport class KlesFormBadgeComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\n@Component({\n selector: 'kles-form-button-toogle-group',\n template: `\n <div [formGroup]=\"group\" class=\"form-element\">\n <mat-button-toggle-group [formControlName]=\"field.name\" [multiple]=\"field.multiple\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\">\n @for (item of options$ | async; track item) {\n <mat-button-toggle [value]=\"item\">\n {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n`,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, KlesTransformPipe, MatButtonToggleModule],\n})\nexport class KlesFormButtonToogleGroupComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n options$: Observable<any[]>;\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options;\n }\n else if (this.field.options instanceof Function) {\n this.options$ = this.field.options();\n }\n else {\n this.options$ = of(this.field.options);\n }\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { computed, Signal } from '@angular/core';\nimport { AbstractUiState } from './ui-state.abstract';\n\nexport class ArrayUiState<TItem extends AbstractUiState<any, any> = AbstractUiState<any, any>, TValue extends any[] = any[], TRawValue extends TValue = TValue> extends AbstractUiState<TValue, TRawValue> {\n public states: TItem[] = [];\n\n constructor(states?: TItem[]) {\n super();\n this.states = states ?? [];\n\n this.states.forEach((state, index) => {\n state.setParent(this, index);\n });\n\n this._value.set(this.states.map((state) => state.value()) as TValue);\n }\n\n public override setValue(value: TRawValue): void {\n if (!Array.isArray(value)) {\n return;\n }\n value.forEach((newValue: any, index: number) => {\n this.at(index)?.setValue(newValue);\n });\n\n this._value.set(value);\n this.notifyParent();\n }\n\n public override patchValue(value: Partial<TRawValue>): void {\n if (value == null) {\n return;\n }\n\n value.forEach((newValue, index) => {\n const st = this.at(index);\n if (st) {\n st.patchValue(newValue);\n }\n });\n\n const curr = this._value() ?? ([] as TValue[]);\n const next = [...curr];\n\n value.forEach((newValue, index) => {\n next[index] = {\n ...(next[index] ?? {}),\n ...(newValue as any),\n };\n });\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n override childValueChanged(key: string | number, value: any): void {\n const index = typeof key === 'number' ? key : Number(key);\n\n if (!Number.isInteger(index) || index < 0) return;\n\n const curr = this._value() ?? ([] as TValue[]);\n const next = [...curr];\n\n next[index] = value;\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n public at(index: number): AbstractUiState {\n return this.states?.[index] ?? null;\n }\n\n public override _find(name: string | number): AbstractUiState | null {\n const idx = typeof name === 'number' ? name : Number(name);\n return Number.isFinite(idx) ? this.at(idx) : null;\n }\n\n public push(control: TItem | TItem[]): void {\n const items = Array.isArray(control) ? control : [control];\n\n if (items.length === 0) {\n return;\n }\n\n for (const item of items) {\n const index = this.states.length;\n\n this.states.push(item);\n item.setParent(this, index);\n }\n\n this._value.set(this.states.map((s) => s.value()) as TValue);\n this.notifyParent();\n }\n\n public insert(index: number, state: TItem | TItem[]): void {\n const items = Array.isArray(state) ? state : [state];\n\n if (items.length === 0) {\n return;\n }\n\n const safeIndex = Math.max(0, Math.min(index, this.states.length));\n\n this.states.splice(safeIndex, 0, ...items);\n\n for (let i = safeIndex; i < this.states.length; i++) {\n this.states[i]?.setParent(this, i);\n }\n\n const curr = this._value() as any;\n const next = [...curr];\n\n next.splice(safeIndex, 0, ...items.map((item) => item.value()));\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n removeAt(index: number): void {\n if (index < 0 || index >= this.states.length) return;\n this.states.splice(index, 1);\n\n this.states.forEach((state, i) => {\n state.setParent(this, i);\n });\n\n const curr = this._value() ?? ([] as TValue[]);\n const next = [...curr];\n\n next.splice(index, 1);\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n clear(): void {\n this.states.length = 0;\n this._value.set([] as unknown as TValue);\n this.notifyParent();\n }\n}\n","import { componentMapper } from '../decorators/component.decorator';\nimport { klesFieldUiFactory } from '../factories/field.factory';\nimport { KlesFormUiControl } from './default.ui';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { GroupUiState } from './ui-state/group-ui-state';\nimport { ArrayUiState } from './ui-state/array-ui-state';\n\nexport class KlesFormUiArray extends KlesFormUiControl {\n public create(): AbstractUiState<any, any> {\n const array = new ArrayUiState();\n\n if (this.field.value && Array.isArray(this.field.value)) {\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.value.forEach(() => {\n const group = new GroupUiState();\n this.field.collections?.forEach((subfield) => {\n let control;\n if (subfield.type) {\n control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);\n } else {\n control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);\n }\n group.addUiState(subfield.name, control);\n });\n array.push(group);\n });\n }\n } else {\n const group = new GroupUiState();\n this.field.collections?.forEach((subfield) => {\n let control;\n if (subfield.type) {\n control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);\n } else {\n control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);\n }\n group.addUiState(subfield.name, control);\n });\n array.push(group);\n }\n\n return array;\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormArray } from '@angular/forms';\nimport { KlesFormArray } from '../controls/array.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { KlesFormUiArray } from '../ui/array.ui';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\nimport { ArrayUiState } from '../ui/ui-state/array-ui-state';\n\n@FieldMapper({ type: EnumType.array, factory: (field) => new KlesFormArray(field).create(), ui: (field) => new KlesFormUiArray(field).create() })\n@Component({\n selector: 'kles-array',\n template: `\n <div [formGroup]=\"group\" class=\"container\" [ngClass]=\"{ 'container-column': field.direction === 'column' }\">\n <ng-container [formArrayName]=\"field.name\">\n @for (subGroup of formArray.controls; track subGroup.value._id; let index = $index) {\n <div class=\"group-container\" [ngClass]=\"field.direction === 'column' ? 'column' : 'row'\">\n @for (subfield of field.collections; track subfield.name) {\n @if (subfield.visible !== false) {\n <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [ui]=\"subUi?.at(index)\" [siblingFields]=\"field.collections\" [context]=\"context\"> </ng-container>\n }\n }\n </div>\n }\n </ng-container>\n </div>\n `,\n styles: [\n 'mat-form-field {width: calc(100%)}',\n ':host { display:flex; flex-direction: inherit}',\n '.container { display: flex; flex-direction: inherit}',\n '.container-column {gap: 10px}',\n '.group-container {display:flex; flex-direction: inherit}',\n '.row { gap: 10px; flex-direction: row; align-items: baseline }',\n '.column { flex-direction: column; gap: 0px}',\n ],\n standalone: true,\n imports: [CommonModule, KlesDynamicFieldDirective, ReactiveFormsModule],\n})\nexport class KlesFormArrayComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n // subGroup: FormGroup\n\n formArray: UntypedFormArray;\n subUi: ArrayUiState;\n\n constructor() {\n super();\n this.formArray = this.group.controls[this.field.name] as UntypedFormArray;\n this.subUi = this.ui?.get(this.field.name) as ArrayUiState;\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { AbstractControl, FormControl, FormGroup, UntypedFormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\n\nexport class KlesFormRange extends KlesFormControl {\n\n public create(): AbstractControl<any, any> {\n const range = new FormGroup({\n start: new FormControl(this.field.value?.start, { nonNullable: this.field.nonNullable && this.field.value?.start || false }),\n end: new FormControl(this.field.value?.end, { nonNullable: this.field.nonNullable && this.field.value?.end || false }),\n }, {\n validators: this.bindValidations(this.field.validations || []),\n asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n });\n\n if (this.field.disabled) {\n range.disable();\n }\n return range;\n }\n}\n","import { Component, computed, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFormRange } from '../controls/range.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.range, factory: (field) => new KlesFormRange(field).create() })\n@Component({\n selector: 'kles-form-rangepicker',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n <mat-label>{{ label() }}</mat-label>\n\n <mat-date-range-input [formGroupName]=\"field.name\" [rangePicker]=\"picker\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [min]=\"min()\" [max]=\"max()\">\n <input matStartDate formControlName=\"start\" [placeholder]=\"placeholder()?.start ? placeholder()?.start : ''\" />\n <input matEndDate formControlName=\"end\" [placeholder]=\"placeholder()?.end ? placeholder()?.end : ''\" />\n </mat-date-range-input>\n\n <div matSuffix class=\"suffix\">\n <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n <ng-content></ng-content>\n </div>\n\n <mat-date-range-picker #picker></mat-date-range-picker>\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n styleUrls: ['../styles/mat-suffix.style.scss'],\n standalone: true,\n imports: [CommonModule, MatErrorMessageDirective, MatFormFieldModule, MatInputModule, MatDatepickerModule, MatTooltipModule, ReactiveFormsModule],\n})\nexport class KlesFormRangeComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n\n@Component({\n selector: 'kles-fab',\n template: `\n <button matFab [extended]=\"!!label\" [type]=\"type\" [ngClass]=\"classButton\" [color]=\"(color)?color:'primary'\" [disabled]=\"disabled\"\n (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n {{label}}\n\n @if (icon) {\n <mat-icon>{{icon}}</mat-icon>\n }\n\n @if (iconSvg) {\n <mat-icon svgIcon=\"{{iconSvg}}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesFabComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, MatButtonModule]\n})\nexport class KlesFabComponent extends KlesButtonBase implements OnInit {\n\n}","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { KlesFabComponent } from '../forms/fab-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-fab',\n template: `\n <div [formGroup]=\"group\">\n <kles-fab\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-fab>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [MatIconModule, MatTooltipModule, MatButtonModule, KlesFabComponent, ReactiveFormsModule],\n})\nexport class KlesFormFabComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n\n@Component({\n selector: 'kles-mini-fab',\n template: `\n <button matMiniFab [type]=\"type\" [ngClass]=\"classButton\" [color]=\"(color)?color:'primary'\" [disabled]=\"disabled\"\n (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n {{label}}\n\n @if (icon) {\n <mat-icon>{{icon}}</mat-icon>\n }\n\n @if (iconSvg) {\n <mat-icon svgIcon=\"{{iconSvg}}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesMiniFabComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, MatButtonModule]\n})\nexport class KlesMiniFabComponent extends KlesButtonBase implements OnInit {\n\n}","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesMiniFabComponent } from '../forms/mini-fab-control.component';\n\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-mini-fab',\n template: `\n <div [formGroup]=\"group\">\n <kles-mini-fab\n [attr.id]=\"field.id\" [classButton]=\"ngClass()\" \n [name]=\"field.name\" [label]=\"label()\" [color]=\"color()\" \n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-mini-fab>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [KlesMiniFabComponent, ReactiveFormsModule]\n})\nexport class KlesFormMiniFabComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'kles-icon-button',\n template: `\n <button matIconButton [type]=\"type\" [ngClass]=\"classButton\" [color]=\"color ? color : 'primary'\" [disabled]=\"disabled\" (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n } @if (iconSvg) {\n <mat-icon svgIcon=\"{{ iconSvg }}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesIconButtonComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule],\n})\nexport class KlesIconButtonComponent extends KlesButtonBase implements OnInit {}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { KlesIconButtonComponent } from '../forms/icon-button-control.component';\n\n@Component({\n selector: 'kles-form-icon-button',\n template: `\n <div [formGroup]=\"group\">\n <kles-icon-button\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-icon-button>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [ReactiveFormsModule, KlesIconButtonComponent],\n})\nexport class KlesFormIconButtonComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { KlesSelectionModel } from '../selection/selection-model';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { MatOption } from '@angular/material/core';\n@Component({\n selector: 'kles-form-selection-list-search',\n template: `\n <div class=\"selection-list\" [formGroup]=\"group\">\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <input matInput [placeholder]=\"placeholder()\" [formControl]=\"searchControl\" />\n <button matSuffix matIconButton aria-label=\"Clear\" (click)=\"searchControl.reset(); $event.stopPropagation()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-selection-list [attr.id]=\"field.id\" [multiple]=\"field.multiple\" [ngClass]=\"ngClass()\" (selectionChange)=\"onSelectionChange($event)\">\n @if(optionFiltered$ | async; as options){ @if(field.virtualScroll){\n <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 20\" style=\"height:100%\">\n @if (!field.autocompleteComponent) {\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } @else{\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n }\n </cdk-virtual-scroll-viewport>\n } @else{ @if (!field.autocompleteComponent) { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } } @else { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n } } } }@else{\n <mat-spinner></mat-spinner>\n }\n </mat-selection-list>\n </div>\n `,\n styles: [\n `\n .selection-list {\n display: flex;\n flex-direction: column;\n gap: 5px;\n }\n `,\n `\n mat-selection-list {\n width: 100%;\n height: 250px;\n overflow: auto;\n flex-grow: 1;\n }\n `,\n ],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatButtonModule, MatProgressSpinnerModule, ScrollingModule, KlesTransformPipe, KlesComponentDirective, MatListModule],\n})\nexport class KlesFormSelectionListSearchComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n selection: KlesSelectionModel<any>;\n options$: Observable<any[]>;\n searchControl = new FormControl();\n\n optionFiltered$: Observable<any[]>;\n\n ngOnInit() {\n if (!this.field.subscriptSizing) {\n this.field.subscriptSizing = 'dynamic';\n }\n super.ngOnInit();\n\n this.selection = new KlesSelectionModel<any>(this.field.multiple || false, [], true, (o1: any, o2: any) => {\n if (this.field.property) {\n return o1?.[this.field.property] === o2?.[this.field.property];\n } else {\n return o1 === o2;\n }\n });\n\n if (this.field.value) {\n this.selection.select(Array.isArray(this.field.value) ? this.field.value : [this.field.value]);\n }\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options.pipe(shareReplay(1));\n }\n\n this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((value) => {\n this.selection.setSelection(Array.isArray(value) ? value : [value], { emitEvent: false });\n });\n\n this.selection.changed.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n this.group.controls[this.field.name].patchValue(change.source.selected);\n this.group.controls[this.field.name].markAllAsTouched();\n this.group.controls[this.field.name].markAsDirty();\n });\n\n this.optionFiltered$ = this.searchControl.valueChanges.pipe(\n takeUntil(this._onDestroy),\n startWith(null as string),\n debounceTime(this.field.debounceTime || 0),\n distinctUntilChanged(),\n map((value) => value?.toLowerCase()),\n switchMap((value) => {\n if (this.field.options instanceof Function) {\n return this.field.options(value);\n } else {\n return (this.field.options instanceof Observable ? this.options$ : of(this.field.options)).pipe(\n map((options) => {\n if (!value) {\n return options;\n }\n return options.filter((option) => {\n return (\n (!this.field.property && option?.toString().toLowerCase().includes(value)) ||\n (this.field.property && option?.[this.field.property]?.toString().toLowerCase().includes(value)) ||\n (this.field.searchKeys && this.field.searchKeys.some((key) => option?.[key].toString().toLowerCase().includes(value)))\n );\n });\n }),\n );\n }\n }),\n );\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n onSelectionChange(selection: MatSelectionListChange) {\n selection.options.forEach((option) => {\n option.selected ? this.selection.select([option.value]) : this.selection.deselect([option.value]);\n });\n }\n}\n","\nimport { Component, forwardRef, Input, AfterViewInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'kles-checkbox-indeterminate',\n template: `\n <mat-checkbox\n #checkbox\n [indeterminate]=\"isIndeterminate\"\n (change)=\"onCheckboxChange($event)\"\n (color)=\"color\"\n (blur)=\"onTouched()\">\n {{label}}\n </mat-checkbox>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesIndeterminateCheckboxComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [MatCheckboxModule, ReactiveFormsModule, FormsModule],\n})\nexport class KlesIndeterminateCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n @Input() label: string;\n @Input() color: string;\n @ViewChild('checkbox') checkbox: MatCheckbox;\n\n isIndeterminate = false;\n private innerValue: boolean;\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n ngAfterViewInit(): void {\n // Initial update to ensure state is correct after view init\n this.updateCheckbox(this.innerValue);\n }\n\n writeValue(value: any): void {\n this.innerValue = value;\n this.updateCheckbox(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.checkbox) {\n this.checkbox.disabled = isDisabled;\n }\n }\n\n onCheckboxChange(event: any): void {\n const checked = event.checked;\n this.onChange(checked);\n this.isIndeterminate = false;\n }\n\n private updateCheckbox(value: any): void {\n if (this.checkbox) {\n if (value === -1) {\n this.isIndeterminate = true;\n this.checkbox.checked = false;\n } else {\n this.isIndeterminate = false;\n this.checkbox.checked = value;\n }\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesIndeterminateCheckboxComponent } from '../forms/indeterminate-checkbox';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@FieldMapper({ type: EnumType.checkbox })\n@Component({\n selector: 'kles-form-checkbox-indeterminate',\n template: `\n <div [formGroup]=\"group\">\n <kles-checkbox-indeterminate [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [color]=\"color()\" [formControlName]=\"field.name\">{{\n label()\n }}</kles-checkbox-indeterminate>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, KlesIndeterminateCheckboxComponent, MatTooltipModule],\n})\nexport class KlesFormCheckboxIndeterminateComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","\nimport { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'kles-file-control',\n template: ` <input [accept]=\"accept\" [multiple]=\"multiple\" (change)=\"onFileSelected($event.target)\" type=\"file\" /> `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesFileControlComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [FormsModule],\n})\nexport class KlesFileControlComponent implements ControlValueAccessor {\n @Input() disabled = false;\n @Input() accept = '*.*';\n @Input() multiple = false;\n\n value: { name: string; content: ArrayBuffer }[];\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(obj: any): void {}\n\n async onFileSelected(input: HTMLInputElement): Promise<void> {\n if (input.files.length > 0) {\n const file: FileList = input.files;\n let files = [];\n\n for (let i = 0; i < file.length; i++) {\n const currentFile: File = file.item(i);\n\n files[i] = { name: currentFile.name, content: await currentFile.arrayBuffer() };\n }\n\n this.value = files;\n this.onChange(this.value);\n } else {\n this.value = null;\n this.onChange(this.value);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { KlesFieldAbstract } from './field.abstract';\nimport { Component } from '@angular/core';\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { KlesFileControlComponent } from '../forms/file-control.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.file })\n@Component({\n selector: 'kles-form-file',\n template: `\n <div [formGroup]=\"group\">\n <kles-file-control [attr.id]=\"field.id\" [formControlName]=\"field.name\" [accept]=\"field.accept\" [disabled]=\"field.disabled\" [multiple]=\"field.multiple\"></kles-file-control>\n </div>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n standalone: true,\n imports: [KlesFileControlComponent, FormsModule, ReactiveFormsModule],\n})\nexport class KlesFormFileComponent extends KlesFieldAbstract {}\n","import { Component } from \"@angular/core\";\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from \"@angular/common\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormField, MatLabel, MatHint, MatError, MatSuffix } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatErrorMessageDirective } from \"../directive/mat-error-message.directive\";\nimport { KlesMaterialDatepickerModule } from \"@3kles/kles-material-datepicker\";\n\n@Component({\n selector: 'kles-form-datetimepicker',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" class=\"margin-top\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <input matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"field.ngClass\" [matDatepicker]=\"picker\" [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\" [min]=\"field.min\" [max]=\"field.max\">\n <div matSuffix class=\"suffix\">\n <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n <ng-content></ng-content>\n </div>\n\n <kles-mat-datepicker #picker [hasBackdrop]=\"false\"></kles-mat-datepicker>\n\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: [\n 'mat-form-field { width: calc(100%); }',\n '.suffix { display: flex; flex-direction: row; }'\n ],\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatHint,\n MatError,\n MatSuffix,\n MatInput,\n MatTooltip,\n MatDatepickerModule,\n MatErrorMessageDirective,\n KlesMaterialDatepickerModule\n ]\n})\nexport class KlesFormDateTimeComponent extends KlesFieldAbstract {\n}\n","import { Component, inject, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { Clipboard, ClipboardModule } from '@angular/cdk/clipboard';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IKlesField } from '../../interfaces/field.interface';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\nimport { FIELD, GROUP, SIBLING_FIELDS } from '../../token';\n\n@Component({\n selector: 'kles-form-copy',\n template: `\n <button #tooltip=\"matTooltip\" matIconButton color=\"primary\" type=\"button\" (click)=\"copy($event)\" [matTooltipDisabled]=\"true\" [matTooltip]=\"tooltipText\" matTooltipPosition=\"above\">\n <mat-icon>content_copy</mat-icon>\n </button>\n `,\n standalone: true,\n imports: [MatIconModule, MatButtonModule, MatTooltipModule, ClipboardModule],\n})\nexport class KlesFormCopyComponent implements IKlesField {\n @ViewChild('tooltip') tooltip: MatTooltip;\n\n readonly field = inject<IKlesFieldConfig>(FIELD);\n readonly group = inject<FormGroup<any>>(GROUP);\n readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n tooltipText: string;\n\n constructor(private clipBoard: Clipboard) {\n this.tooltipText = this.field.copyTooltip || '';\n }\n\n copy(event): void {\n event.stopPropagation();\n const copyText = (this.field.property ? this.group.controls[this.field.name].value?.[this.field.property] : this.group.controls[this.field.name].value) || '';\n this.clipBoard.copy(copyText);\n\n this.tooltip.disabled = false;\n this.tooltip.show();\n setTimeout(() => {\n this.tooltip.disabled = true;\n }, 1000);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { defer, Observable, of } from 'rxjs';\n\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { KlesFieldAbstract } from './field.abstract';\n\n/**\n * Condition statique ou calculée à partir du contexte du field.\n */\nexport type KlesActionMenuCondition<TContext = unknown> = boolean | ((context: TContext | null, field: IKlesFieldConfig, group: UntypedFormGroup) => boolean);\n\n/**\n * Configuration d'une entrée du menu.\n *\n * Le callback n'est pas placé ici :\n * toutes les actions sont gérées par field.onAction.\n */\nexport interface KlesActionMenuItem<TContext = unknown> {\n id: string;\n label: string;\n\n icon?: string;\n iconSvg?: string;\n\n visible?: KlesActionMenuCondition<TContext>;\n disabled?: KlesActionMenuCondition<TContext>;\n\n dividerBefore?: boolean;\n\n color?: 'default' | 'warn';\n}\n\n/**\n * Configuration spécialisée du field action-menu.\n */\nexport interface KlesActionMenuFieldConfig<TContext = unknown> extends IKlesFieldConfig {\n options?: KlesActionMenuItem<TContext>[] | Observable<KlesActionMenuItem<TContext>[]> | ((value?: string, group?: { [key: string]: any }) => Observable<KlesActionMenuItem<TContext>[]>);\n\n menuXPosition?: 'before' | 'after';\n menuYPosition?: 'above' | 'below';\n}\n\n@FieldMapper({\n type: 'actionMenu',\n})\n@Component({\n selector: 'kles-form-action-menu',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatDividerModule, MatIconModule, MatMenuModule, MatTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n matIconButton\n type=\"button\"\n [attr.id]=\"field.id\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n [matTooltip]=\"tooltip() || ''\"\n [matMenuTriggerFor]=\"actionMenu\"\n [ngClass]=\"ngClass()\"\n [ngStyle]=\"ngStyle()\"\n (click)=\"onTriggerClick($event)\"\n >\n @if (iconSvg()) {\n <mat-icon [svgIcon]=\"iconSvg()!\" />\n } @else {\n <mat-icon>\n {{ icon() || 'more_vert' }}\n </mat-icon>\n }\n </button>\n\n <mat-menu #actionMenu=\"matMenu\" [xPosition]=\"actionField.menuXPosition || 'before'\" [yPosition]=\"actionField.menuYPosition || 'below'\">\n @for (action of visibleActions(); track action.id) {\n @if (action.dividerBefore) {\n <mat-divider />\n }\n\n <button mat-menu-item type=\"button\" [disabled]=\"isDisabled(action)\" [class.kles-action-menu__warn]=\"action.color === 'warn'\" (click)=\"execute(action, $event)\">\n @if (action.iconSvg) {\n <mat-icon [svgIcon]=\"action.iconSvg\" />\n } @else if (action.icon) {\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n }\n\n <span>\n {{ action.label }}\n </span>\n </button>\n }\n </mat-menu>\n `,\n styles: `\n .kles-action-menu__warn {\n color: var(--mat-sys-error);\n }\n\n .kles-action-menu__warn mat-icon {\n color: var(--mat-sys-error);\n }\n `,\n})\nexport class KlesFormActionMenuComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {\n /**\n * Configuration du field avec le typage spécialisé.\n */\n readonly actionField = this.field as KlesActionMenuFieldConfig<TContext>;\n\n private readonly control = this.group.controls[this.field.name];\n\n private readonly controlStatus = toSignal(this.control.statusChanges, {\n initialValue: this.control.status,\n });\n\n /**\n * Options statiques ou asynchrones.\n */\n private readonly actionsSource$ = defer(() => this.resolveOptions());\n\n readonly actions = toSignal(this.actionsSource$, {\n initialValue: [] as KlesActionMenuItem<TContext>[],\n });\n\n readonly disabled = computed(() => {\n this.controlStatus();\n return this.control.disabled;\n });\n\n readonly visibleActions = computed(() => this.actions().filter((action) => this.resolveCondition(action.visible, true)));\n\n readonly ariaLabel = computed(() => this.label() || this.tooltip() || 'Actions');\n\n onTriggerClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n isDisabled(action: KlesActionMenuItem<TContext>): boolean {\n return this.disabled() || this.resolveCondition(action.disabled, false);\n }\n\n execute(action: KlesActionMenuItem<TContext>, event: MouseEvent): void {\n if (this.isDisabled(action)) {\n event.stopPropagation();\n return;\n }\n\n this.triggerAction(action.id, event, action);\n }\n\n private resolveCondition(condition: KlesActionMenuCondition<TContext> | undefined, defaultValue: boolean): boolean {\n if (typeof condition === 'function') {\n return condition(this.context?.() ?? null, this.field, this.group);\n }\n\n return condition ?? defaultValue;\n }\n\n private resolveOptions(): Observable<KlesActionMenuItem<TContext>[]> {\n const options = this.actionField.options;\n\n if (options instanceof Observable) {\n return options;\n }\n\n if (typeof options === 'function') {\n return options(undefined, this.group.getRawValue());\n }\n\n return of(options ?? []);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'app-kles-form-tile',\n standalone: true,\n imports: [CommonModule, MatTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"kles-tile\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\" [matTooltip]=\"tooltip()\">\n @if (imageUrl()) {\n <img class=\"kles-tile__image\" [src]=\"imageUrl()\" [alt]=\"imageAlt()\" />\n }\n\n <div class=\"kles-tile__content\">\n @if (displayValue(); as value) {\n <div class=\"kles-tile__label\">\n {{ value }}\n </div>\n }\n\n @if (hint()) {\n <div class=\"kles-tile__hint\">\n {{ hint() }}\n </div>\n }\n </div>\n </div>\n `,\n styles: `\n :host {\n display: flex;\n justify-content: inherit;\n }\n\n .kles-tile {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 12px;\n padding: 8px;\n }\n\n .kles-tile__image {\n width: 36px;\n height: 36px;\n flex: 0 0 36px;\n object-fit: contain;\n }\n\n .kles-tile__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: 2px;\n }\n\n .kles-tile__label {\n overflow: hidden;\n color: var(--mat-sys-on-surface);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .kles-tile__hint {\n overflow: hidden;\n color: var(--mat-sys-on-surface-variant);\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `,\n})\nexport class KlesFormTileComponent extends KlesFieldAbstract {\n private readonly control = this.group.controls[this.field.name];\n\n private readonly controlValue = toSignal(this.control.valueChanges, {\n initialValue: this.control.value,\n });\n\n readonly formattedValue = computed(() => {\n const value = this.controlValue();\n\n if (value == null) {\n return '';\n }\n\n if (this.field.displayWith) {\n return this.field.displayWith(value) ?? '';\n }\n\n if (this.field.property && typeof value === 'object') {\n return String(value[this.field.property] ?? '');\n }\n\n return String(value);\n });\n\n readonly displayValue = computed(() => this.formattedValue() || this.label() || '');\n}\n","import { ChangeDetectorRef, Component, computed, DEFAULT_CURRENCY_CODE, Directive, ElementRef, forwardRef, HostListener, inject, Input, LOCALE_ID, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesFieldAbstract } from './field.abstract';\n\n/**\n * ValueAccessor monétaire.\n *\n * La valeur du FormControl reste un number | null.\n * Seule la valeur affichée dans l'input est formatée.\n */\n@Directive({\n selector: 'input[klesCurrency]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesCurrencyValueAccessorDirective),\n multi: true,\n },\n ],\n})\nexport class KlesCurrencyValueAccessorDirective implements ControlValueAccessor, OnChanges {\n /**\n * Public pour rester compatible avec le mécanisme\n * nativeElement utilisé par la librairie.\n */\n readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly renderer = inject(Renderer2);\n\n @Input() currency = 'EUR';\n @Input() locale = 'fr-FR';\n\n @Input()\n currencyDisplay: 'symbol' | 'narrowSymbol' | 'code' | 'name' = 'symbol';\n\n @Input() minimumFractionDigits?: number;\n @Input() maximumFractionDigits?: number;\n\n @Input() useGrouping = true;\n @Input() allowNegative = true;\n\n private currentValue: number | null = null;\n private focused = false;\n\n private onChange: (value: number | null) => void = () => {};\n\n private onTouched: () => void = () => {};\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.focused) {\n this.renderFormattedValue();\n }\n }\n\n writeValue(value: unknown): void {\n this.currentValue = this.normalizeModelValue(value);\n\n if (!this.focused) {\n this.renderFormattedValue();\n }\n }\n\n registerOnChange(callback: (value: number | null) => void): void {\n this.onChange = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this.onTouched = callback;\n }\n\n setDisabledState(disabled: boolean): void {\n this.renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n }\n\n @HostListener('focus')\n handleFocus(): void {\n this.focused = true;\n\n this.setInputValue(this.formatEditableValue(this.currentValue));\n }\n\n @HostListener('input', ['$event'])\n handleInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n const rawValue = input.value;\n\n if (rawValue.trim() === '') {\n this.currentValue = null;\n this.onChange(null);\n return;\n }\n\n const parsedValue = this.parseLocalizedNumber(rawValue);\n\n /*\n * Une saisie intermédiaire comme \"-\" ou \",\"\n * n'écrase pas encore le FormControl.\n */\n if (parsedValue === null) {\n return;\n }\n\n if (!this.allowNegative && parsedValue < 0) {\n return;\n }\n\n this.currentValue = parsedValue;\n this.onChange(parsedValue);\n }\n\n @HostListener('blur')\n handleBlur(): void {\n this.focused = false;\n\n this.renderFormattedValue();\n this.onTouched();\n }\n\n private normalizeModelValue(value: unknown): number | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n const numberValue = typeof value === 'number' ? value : Number(value);\n\n return Number.isFinite(numberValue) ? numberValue : null;\n }\n\n private renderFormattedValue(): void {\n this.setInputValue(this.formatCurrency(this.currentValue));\n }\n\n private setInputValue(value: string): void {\n this.renderer.setProperty(this._elementRef.nativeElement, 'value', value);\n }\n\n private formatCurrency(value: number | null): string {\n if (value === null) {\n return '';\n }\n\n const options = this.createCurrencyFormatOptions();\n\n return new Intl.NumberFormat(this.locale, options).format(value);\n }\n\n /**\n * Pendant l'édition, on retire le symbole et\n * les séparateurs de milliers.\n */\n private formatEditableValue(value: number | null): string {\n if (value === null) {\n return '';\n }\n\n return new Intl.NumberFormat(this.locale, {\n useGrouping: false,\n maximumFractionDigits: this.maximumFractionDigits ?? 20,\n }).format(value);\n }\n\n private createCurrencyFormatOptions(): Intl.NumberFormatOptions {\n const minimum = this.minimumFractionDigits;\n\n let maximum = this.maximumFractionDigits;\n\n if (minimum !== undefined && maximum !== undefined && maximum < minimum) {\n maximum = minimum;\n }\n\n return {\n style: 'currency',\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n\n ...(minimum !== undefined\n ? {\n minimumFractionDigits: minimum,\n }\n : {}),\n\n ...(maximum !== undefined\n ? {\n maximumFractionDigits: maximum,\n }\n : {}),\n };\n }\n\n private parseLocalizedNumber(rawValue: string): number | null {\n const parts = new Intl.NumberFormat(this.locale).formatToParts(-12345.6);\n\n const groupSeparator = parts.find((part) => part.type === 'group')?.value;\n\n const decimalSeparator = parts.find((part) => part.type === 'decimal')?.value ?? '.';\n\n const minusSign = parts.find((part) => part.type === 'minusSign')?.value ?? '-';\n\n let normalized = this.normalizeLocalizedDigits(rawValue);\n\n if (groupSeparator) {\n normalized = normalized.split(groupSeparator).join('');\n }\n\n normalized = normalized.split(decimalSeparator).join('.');\n\n normalized = normalized.split(minusSign).join('-');\n\n /*\n * Retire les symboles monétaires,\n * espaces et codes de devise.\n */\n normalized = normalized.replace(/[^0-9+\\-.]/g, '');\n\n if (normalized === '' || normalized === '-' || normalized === '+' || normalized === '.' || normalized === '-.' || normalized === '+.') {\n return null;\n }\n\n const parsed = Number(normalized);\n\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n /**\n * Convertit également les chiffres localisés\n * vers 0-9.\n */\n private normalizeLocalizedDigits(value: string): string {\n const formatter = new Intl.NumberFormat(this.locale, {\n useGrouping: false,\n });\n\n let normalized = value;\n\n for (let digit = 0; digit <= 9; digit++) {\n const localizedDigit = formatter.formatToParts(digit).find((part) => part.type === 'integer')?.value;\n\n if (localizedDigit) {\n normalized = normalized.split(localizedDigit).join(String(digit));\n }\n }\n\n return normalized;\n }\n}\n\n@FieldMapper({\n type: EnumType.currency,\n})\n@Component({\n selector: 'kles-form-currency',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatTooltipModule, MatProgressSpinnerModule, MatError, MatErrorMessageDirective, KlesCurrencyValueAccessorDirective],\n template: `\n <mat-form-field [formGroup]=\"group\" [color]=\"color()\" [subscriptSizing]=\"field.subscriptSizing\" [appearance]=\"appearance()\" class=\"form-element field-bottom\">\n @if (label()) {\n <mat-label>\n {{ label() }}\n </mat-label>\n }\n\n @if (icon()) {\n <mat-icon matPrefix>\n {{ icon() }}\n </mat-icon>\n }\n\n <input\n matInput\n klesCurrency\n type=\"text\"\n inputmode=\"decimal\"\n autocomplete=\"off\"\n [attr.id]=\"field.id\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [ngClass]=\"ngClass()\"\n [matTooltip]=\"tooltip()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [currency]=\"currencyOptions()?.code || defaultCurrencyCode\"\n [locale]=\"currencyOptions()?.locale || localeId\"\n [currencyDisplay]=\"currencyOptions()?.display || 'symbol'\"\n [minimumFractionDigits]=\"currencyOptions()?.minimumFractionDigits\"\n [maximumFractionDigits]=\"currencyOptions()?.maximumFractionDigits\"\n [useGrouping]=\"currencyOptions()?.useGrouping !== false\"\n [allowNegative]=\"currencyOptions()?.allowNegative !== false\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n @if (hint()) {\n <mat-hint>\n {{ hint() }}\n </mat-hint>\n }\n\n @if (field.subComponents || field.clearable || isPending()) {\n <div matSuffix class=\"suffix\">\n @if (isPending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"21\" />\n }\n\n @if (field.subComponents || field.clearable) {\n <ng-content />\n }\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styles: [\n `\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss'],\n})\nexport class KlesFormCurrencyComponent extends KlesFieldAbstract {\n readonly localeId = inject(LOCALE_ID);\n\n public readonly currencyOptions = computed(() => this.resolvedFieldUi()?.currencyOptions);\n\n readonly defaultCurrencyCode = inject(DEFAULT_CURRENCY_CODE);\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { startWith } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { IKlesStatusDefinition } from '../interfaces/field.config.interface';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@FieldMapper({\n type: EnumType.status,\n})\n@Component({\n selector: 'kles-form-status',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, MatProgressSpinnerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n @if (pending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"18\" />\n } @else if (resolvedStatus(); as status) {\n <span\n class=\"kles-status\"\n [class.kles-status--chip]=\"statusAppearance() === 'chip'\"\n [class.kles-status--badge]=\"statusAppearance() === 'badge'\"\n [class.kles-status--text]=\"statusAppearance() === 'text'\"\n [class.kles-status--neutral]=\"status.tone === 'neutral'\"\n [class.kles-status--info]=\"status.tone === 'info'\"\n [class.kles-status--success]=\"status.tone === 'success'\"\n [class.kles-status--warning]=\"status.tone === 'warning'\"\n [class.kles-status--error]=\"status.tone === 'error'\"\n [class.kles-status--disabled]=\"disabled()\"\n [ngClass]=\"status.ngClass\"\n [matTooltip]=\"status.tooltip || tooltip() || ''\"\n [attr.aria-label]=\"status.ariaLabel || status.label\"\n >\n @if (status.iconSvg) {\n <mat-icon class=\"kles-status__icon\" [svgIcon]=\"status.iconSvg\" />\n } @else if (status.icon) {\n <mat-icon class=\"kles-status__icon\">\n {{ status.icon }}\n </mat-icon>\n } @else if (showDot()) {\n <span class=\"kles-status__dot\" aria-hidden=\"true\"></span>\n }\n\n <span class=\"kles-status__label\">\n {{ status.label }}\n </span>\n </span>\n }\n </span>\n `,\n styles: `\n :host {\n display: flex;\n justify-content: inherit;\n }\n\n .kles-status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n box-sizing: border-box;\n color: var(--kles-status-color, var(--mat-sys-on-surface-variant));\n background: var(--kles-status-container, var(--mat-sys-surface-container-high));\n }\n\n .kles-status--chip {\n min-height: 28px;\n padding: 3px 10px;\n border-radius: 999px;\n font: var(--mat-sys-label-medium);\n }\n\n .kles-status--badge {\n min-height: 22px;\n padding: 2px 7px;\n border-radius: 4px;\n font: var(--mat-sys-label-small);\n }\n\n .kles-status--text {\n padding: 0;\n border-radius: 0;\n background: transparent;\n }\n\n .kles-status__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n width: 20px;\n height: 20px;\n flex: 0 0 20px;\n line-height: 20px;\n\n overflow: visible;\n vertical-align: middle;\n }\n\n .kles-status__icon svg {\n width: 100%;\n height: 100%;\n overflow: visible;\n }\n\n .kles-status__dot {\n width: 8px;\n height: 8px;\n flex: 0 0 8px;\n\n border-radius: 50%;\n background: currentColor;\n }\n\n .kles-status__label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .kles-status--disabled {\n opacity: 0.56;\n }\n\n .kles-status--neutral {\n --kles-status-color: var(--mat-sys-on-surface-variant);\n --kles-status-container: var(--mat-sys-surface-container-high);\n }\n\n .kles-status--info {\n --kles-status-color: var(--mat-sys-on-primary-container);\n --kles-status-container: var(--mat-sys-primary-container);\n }\n\n .kles-status--success {\n --kles-status-color: var(--kles-status-success-color, #1b5e20);\n --kles-status-container: var(--kles-status-success-container, #d7f5df);\n }\n\n .kles-status--warning {\n --kles-status-color: var(--kles-status-warning-color, #7a4f00);\n --kles-status-container: var(--kles-status-warning-container, #ffecb3);\n }\n\n .kles-status--error {\n --kles-status-color: var(--mat-sys-on-error-container);\n --kles-status-container: var(--mat-sys-error-container);\n }\n `,\n})\nexport class KlesFormStatusComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {\n private readonly control = this.group.controls[this.field.name];\n\n private readonly controlValue = toSignal(this.control.valueChanges.pipe(startWith(this.control.value)), {\n initialValue: this.control.value,\n });\n\n private readonly controlStatus = toSignal(this.control.statusChanges.pipe(startWith(this.control.status)), {\n initialValue: this.control.status,\n });\n\n readonly statusAppearance = computed(() => this.field.statusOptions?.appearance ?? 'chip');\n\n readonly showDot = computed(() => this.field.statusOptions?.showDot ?? true);\n\n readonly disabled = computed(() => {\n this.controlStatus();\n\n return this.control.disabled;\n });\n\n readonly pending = computed(() => {\n this.controlStatus();\n\n return this.control.pending || this.field.pending === true;\n });\n\n readonly resolvedStatus = computed<IKlesStatusDefinition | null>(() => {\n const value = this.controlValue();\n const options = this.field.statusOptions;\n\n if (options?.resolve) {\n return options.resolve(value, this.context?.() ?? null, this.field, this.group);\n }\n\n const key = this.resolveStatusKey(value);\n\n const configuredStatus = options?.values?.[key];\n\n if (configuredStatus) {\n return {\n tone: 'neutral',\n ...configuredStatus,\n };\n }\n\n if (options?.fallback) {\n return {\n tone: 'neutral',\n ...options.fallback,\n };\n }\n\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n return {\n label: this.resolveDefaultLabel(value),\n tone: 'neutral',\n };\n });\n\n private resolveStatusKey(value: any): string {\n if (this.field.property && value !== null && typeof value === 'object') {\n return String(value[this.field.property]);\n }\n\n return String(value);\n }\n\n private resolveDefaultLabel(value: any): string {\n if (this.field.property && value !== null && typeof value === 'object') {\n return String(value[this.field.property] ?? '');\n }\n\n return String(value);\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInput, MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { combineLatest, concat, isObservable, map, Observable, of, ReplaySubject, startWith, switchMap } from 'rxjs';\n\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesFieldAbstract } from './field.abstract';\n\ninterface ChipOptionsState {\n loading: boolean;\n options: any[];\n}\n\n@Component({\n selector: 'kles-form-chip-grid',\n template: `\n <mat-form-field [formGroup]=\"group\" [matTooltip]=\"tooltip()\" [appearance]=\"appearance()\">\n <mat-label>{{ label() }}</mat-label>\n\n <mat-chip-grid #reactiveChipGrid [formControl]=\"control\">\n @for (value of control.value ?? []; track $index) {\n <mat-chip-row [value]=\"value\" (removed)=\"removeChip(value)\">\n {{ displayValue(value) | klesTransform: field.pipeTransform }}\n\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n\n <input\n #chipInput=\"matChipInput\"\n [formControl]=\"searchControl\"\n [placeholder]=\"placeholder()\"\n [matChipInputFor]=\"reactiveChipGrid\"\n [matAutocomplete]=\"auto\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"onTokenEnd($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event, chipInput)\">\n @if (filteredOption$ | async; as filteredOption) {\n @if (filteredOption.loading) {\n <mat-option disabled>\n <div class=\"loadingSelect\">\n {{ intl.loading }}...\n\n <mat-spinner class=\"spinner\" diameter=\"20\" />\n </div>\n </mat-option>\n } @else {\n @for (item of filteredOption.options; track item) {\n <mat-option [value]=\"item\" [disabled]=\"item?.disabled\">\n {{ displayValue(item) | klesTransform: field.pipeTransform }}\n </mat-option>\n }\n }\n }\n </mat-autocomplete>\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styles: [\n `\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss', '../styles/loading-select.style.scss'],\n standalone: true,\n imports: [AsyncPipe, KlesTransformPipe, MatAutocompleteModule, MatChipsModule, MatError, MatErrorMessageDirective, MatFormFieldModule, MatIconModule, MatProgressSpinnerModule, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormChipGridComponent extends KlesFieldAbstract implements OnInit {\n readonly control = this.group.controls[this.field.name];\n\n readonly intl = inject(KlesDynamicFormIntl);\n\n readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n\n /*\n * any est volontaire :\n * MatAutocomplete peut momentanément pousser l'objet\n * sélectionné dans le FormControl de recherche.\n */\n readonly searchControl = new FormControl<any>('', {\n nonNullable: true,\n });\n\n filteredOption$!: Observable<ChipOptionsState>;\n\n private options$!: Observable<ChipOptionsState>;\n\n /*\n * ReplaySubject permet de ne pas perdre le premier focus\n * si l'Observable lazy n'est pas encore abonné.\n */\n private readonly loadOptions$ = new ReplaySubject<void>(1);\n\n override ngOnInit(): void {\n this.options$ = this.createOptionsStream();\n\n this.filteredOption$ = combineLatest([this.searchControl.valueChanges.pipe(startWith(this.searchControl.value)), this.options$, this.control.valueChanges.pipe(startWith(this.control.value ?? []))]).pipe(\n map(([search, response, selectedValues]) => {\n if (response.loading) {\n return response;\n }\n\n const selected = Array.isArray(selectedValues) ? selectedValues : [];\n\n /*\n * On retire de la liste les options\n * déjà présentes dans les chips.\n */\n let options = response.options.filter((option) => !selected.some((selectedValue) => this.isSameOption(option, selectedValue)));\n\n /*\n * Le contrôle peut momentanément contenir\n * un objet pendant une sélection autocomplete.\n */\n if (typeof search === 'string' && search.trim()) {\n options = this.filterData(search, options);\n }\n\n return {\n loading: false,\n options,\n };\n }),\n );\n\n super.ngOnInit();\n }\n\n override onFocus(): void {\n if (this.field.lazy) {\n this.loadOptions$.next();\n }\n\n super.onFocus();\n }\n\n onTokenEnd(event: MatChipInputEvent): void {\n /*\n * Quand property est renseignée, les valeurs sont\n * considérées comme des objets provenant de l'autocomplete.\n *\n * On évite donc d'ajouter une string libre au tableau.\n */\n if (this.field.property) {\n return;\n }\n\n const value = event.value.trim();\n\n if (!value) {\n return;\n }\n\n this.addChip(value);\n\n event.chipInput.clear();\n this.searchControl.setValue('');\n }\n\n addChip(value: unknown): void {\n if (value === null || value === undefined || value === '') {\n return;\n }\n\n const values = Array.isArray(this.control.value) ? this.control.value : [];\n\n /*\n * Empêche d'ajouter deux fois la même valeur.\n */\n const exists = values.some((currentValue) => this.isSameOption(currentValue, value));\n\n if (exists) {\n return;\n }\n\n this.control.setValue([...values, value]);\n\n this.control.markAsDirty();\n }\n\n removeChip(value: unknown): void {\n const values = Array.isArray(this.control.value) ? [...this.control.value] : [];\n\n const index = values.findIndex((currentValue) => this.isSameOption(currentValue, value));\n\n if (index === -1) {\n return;\n }\n\n values.splice(index, 1);\n\n this.control.setValue(values);\n this.control.markAsDirty();\n }\n\n selected(event: MatAutocompleteSelectedEvent, chipInput: MatChipInput): void {\n const value = event.option.value;\n\n /*\n * On ajoute d'abord l'objet sélectionné aux chips.\n */\n this.addChip(value);\n\n /*\n * L'autocomplete n'est ici qu'une source de sélection.\n * La sélection réelle est représentée par les chips.\n */\n event.option.deselect();\n\n /*\n * Important :\n * MatChipInput.clear() nettoie réellement l'input HTML.\n */\n chipInput.clear();\n\n /*\n * Et on synchronise le FormControl afin de :\n * - vider l'état Angular ;\n * - supprimer le filtre ;\n * - recalculer filteredOption$.\n */\n this.searchControl.setValue('');\n }\n\n displayValue(value: any): any {\n if (value === null || value === undefined) {\n return '';\n }\n\n if (this.field.property) {\n return value?.[this.field.property] ?? '';\n }\n\n return value;\n }\n\n private createOptionsStream(): Observable<ChipOptionsState> {\n /*\n * Lazy :\n * recharge les options à chaque focus.\n */\n if (this.field.lazy) {\n return this.loadOptions$.pipe(\n switchMap(() =>\n concat(\n of({\n loading: true,\n options: [],\n }),\n this.resolveOptions().pipe(\n map((options) => ({\n loading: false,\n options,\n })),\n ),\n ),\n ),\n );\n }\n\n /*\n * Liste statique :\n * aucun chargement à afficher.\n */\n if (Array.isArray(this.field.options)) {\n return of({\n loading: false,\n options: this.field.options,\n });\n }\n\n /*\n * Observable ou fonction :\n * spinner jusqu'à réception des options.\n */\n return concat(\n of({\n loading: true,\n options: [],\n }),\n this.resolveOptions().pipe(\n map((options) => ({\n loading: false,\n options,\n })),\n ),\n );\n }\n\n private resolveOptions(): Observable<any[]> {\n const source = typeof this.field.options === 'function' ? this.field.options() : this.field.options;\n\n if (isObservable(source)) {\n return source;\n }\n\n return of(source ?? []);\n }\n\n private filterData(search: unknown, options: any[]): any[] {\n if (typeof search !== 'string') {\n return options;\n }\n\n const filterValue = search.trim().toLowerCase();\n\n if (!filterValue) {\n return options;\n }\n\n return options.filter((option) => {\n const value = this.displayValue(option);\n\n return String(value ?? '')\n .toLowerCase()\n .startsWith(filterValue);\n });\n }\n\n private isSameOption(a: any, b: any): boolean {\n /*\n * Primitive identique ou même référence objet.\n */\n if (a === b) {\n return true;\n }\n\n /*\n * En mode objet, property sert actuellement\n * également à identifier les doublons.\n */\n if (this.field.property && a !== null && a !== undefined && b !== null && b !== undefined) {\n return a[this.field.property] === b[this.field.property];\n }\n\n return false;\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KlesDynamicFormComponent } from './dynamic-form.component';\nimport { KlesComponentDirective } from './directive/dynamic-component.directive';\nimport { KlesDynamicFieldDirective } from './directive/dynamic-field.directive';\nimport { KlesFormErrorStateMatcher } from './matcher/form-error.matcher';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MaterialModule } from './modules/material.module';\nimport { KlesFormLabelComponent } from './fields/label.component';\nimport { KlesFormInputComponent } from './fields/input.component';\nimport { KlesFormDateComponent } from './fields/date.component';\nimport { KlesFormRadioComponent } from './fields/radio.component';\nimport { KlesFormCheckboxComponent } from './fields/checkbox.component';\nimport { KlesFormListFieldComponent } from './fields/list-field.component';\nimport { KlesFormColorComponent } from './fields/color.component';\nimport { KlesButtonComponent } from './forms/button-control.component';\nimport { KlesFormButtonComponent } from './fields/button-form.component';\nimport { KlesButtonCheckerComponent } from './forms/buttonchecker-control.component';\nimport { KlesFormButtonCheckerComponent } from './fields/buttonchecker-form.component';\nimport { KlesButtonFileComponent } from './forms/buttonfile-control.component';\nimport { KlesFormButtonFileComponent } from './fields/buttonfile-form.component';\nimport { KlesFormTextareaComponent } from './fields/textarea.component';\nimport { KlesFormTextComponent } from './fields/text.component';\nimport { KlesFormChipComponent } from './fields/chip.component';\nimport { KlesFormGroupComponent } from './fields/group.component';\nimport { KlesFormInputClearableComponent } from './fields/input.clearable.component';\nimport { KlesFormIconComponent } from './fields/icon.component';\nimport { KlesTransformPipe } from './pipe/transform.pipe';\nimport { KlesFormLineBreakComponent } from './fields/line-break.component';\nimport { ArrayFormatPipe } from './pipe/array.pipe';\nimport { KlesFormLinkComponent } from './fields/link.component';\nimport { KlesFormSlideToggleComponent } from './fields/slide-toggle.component';\nimport { KlesFormSelectionListComponent } from './fields/selection-list.component';\nimport { KlesFormBadgeComponent } from './fields/badge.component';\nimport { KlesFormButtonToogleGroupComponent } from './fields/button-toogle-group.component';\nimport { KlesFormArrayComponent } from './fields/array.component';\nimport { KlesFormRangeComponent } from './fields/range.component';\nimport { KlesFormClearComponent } from './fields/subfields/clear.component';\nimport { KlesFormFabComponent } from './fields/button-fab.component';\nimport { KlesFabComponent } from './forms/fab-control.component';\nimport { KlesMiniFabComponent } from './forms/mini-fab-control.component';\nimport { KlesFormMiniFabComponent } from './fields/button-mini-fab.component';\nimport { KlesIconButtonComponent } from './forms/icon-button-control.component';\nimport { KlesFormIconButtonComponent } from './fields/button-icon.component';\nimport { KlesFormSelectionListSearchComponent } from './fields/selection-list.search.component';\nimport { MatErrorMessageDirective } from './directive/mat-error-message.directive';\nimport { MatErrorFormDirective } from './directive/mat-error-form.directive';\nimport { KlesFormCheckboxIndeterminateComponent } from './fields/checkbox-indeterminate.component';\nimport { KlesIndeterminateCheckboxComponent } from './forms/indeterminate-checkbox';\n\nimport { KlesFormFileComponent } from './fields/file.component';\nimport { KlesFileControlComponent } from './forms/file-control.component';\nimport { KlesFormDateTimeComponent } from './fields/date-time.component';\nimport { KlesFormCopyComponent } from './fields/subfields/copy.component';\n\nimport { KlesFormActionMenuComponent } from './fields/action-menu.component';\nimport { KlesFormTileComponent } from './fields/tile.component';\nimport { KlesFormCurrencyComponent } from './fields/currency.component';\nimport { KlesFormStatusComponent } from './fields/status.component';\nimport { KlesFormChipGridComponent } from './fields/chip-grid.component';\n\nconst components = [\n KlesDynamicFormComponent,\n KlesFormLabelComponent,\n KlesFormInputComponent,\n KlesFormInputClearableComponent,\n KlesFormBadgeComponent,\n KlesFormFileComponent,\n KlesFileControlComponent,\n KlesButtonComponent,\n KlesFormButtonComponent,\n KlesButtonCheckerComponent,\n KlesFormButtonCheckerComponent,\n KlesButtonFileComponent,\n KlesFormButtonFileComponent,\n KlesFormDateComponent,\n KlesFormDateTimeComponent,\n KlesFormRadioComponent,\n KlesFormCheckboxComponent,\n KlesIndeterminateCheckboxComponent,\n KlesFormCheckboxIndeterminateComponent,\n KlesFormListFieldComponent,\n KlesFormColorComponent,\n KlesFormTextareaComponent,\n KlesFormTextComponent,\n KlesFormChipComponent,\n KlesFormGroupComponent,\n KlesFormIconComponent,\n KlesFormLineBreakComponent,\n KlesFormLinkComponent,\n KlesFormSlideToggleComponent,\n KlesFormSelectionListComponent,\n KlesFormButtonToogleGroupComponent,\n KlesFormArrayComponent,\n KlesFormRangeComponent,\n KlesFormClearComponent,\n KlesFormFabComponent,\n KlesFabComponent,\n KlesMiniFabComponent,\n KlesFormMiniFabComponent,\n KlesIconButtonComponent,\n KlesFormIconButtonComponent,\n KlesFormSelectionListSearchComponent,\n KlesFormCopyComponent,\n KlesFormTileComponent,\n KlesFormActionMenuComponent,\n KlesFormCurrencyComponent,\n KlesFormStatusComponent,\n KlesFormChipGridComponent,\n];\n\nconst directives = [KlesDynamicFieldDirective, KlesComponentDirective, MatErrorMessageDirective, MatErrorFormDirective];\nconst pipes = [KlesTransformPipe, ArrayFormatPipe];\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, FormsModule, MaterialModule, components, directives, pipes],\n providers: [{ provide: ErrorStateMatcher, useClass: KlesFormErrorStateMatcher }, pipes],\n exports: [components, pipes, directives],\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\n})\nexport class KlesMaterialDynamicformsModule {\n static declarations = [components, directives, pipes];\n}\n","import { Component, computed, inject, signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\n\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { IKlesField } from '../../interfaces/field.interface';\nimport { FIELD, GROUP, GROUP_UI, SIBLING_FIELDS } from '../../token';\nimport { GroupUiState } from '../../ui/ui-state/group-ui-state';\n\n@Component({\n selector: 'kles-form-password-visibility',\n template: `\n <button [disabled]=\"group?.get(field?.name).disabled\" matIconButton aria-label=\"visibility\" type=\"button\" (click)=\"toggleVisibility($event)\">\n <mat-icon>{{ hide() ? 'visibility_off' : 'visibility' }}</mat-icon>\n </button>\n `,\n standalone: true,\n imports: [MatIcon, MatIconButton],\n})\nexport class KlesFormPasswordVisibilityComponent implements IKlesField {\n readonly field = inject<IKlesFieldConfig>(FIELD);\n readonly group = inject<FormGroup<any>>(GROUP);\n readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n public readonly ui = inject<GroupUiState>(GROUP_UI, { optional: true });\n\n hide = computed(() => {\n return this.ui?.get(this.field.name)?.value().inputType === 'password';\n });\n\n toggleVisibility(event: any): void {\n event.stopPropagation();\n this.ui?.get(this.field.name)?.patchValue({ inputType: this.hide() ? 'text' : 'password' });\n }\n}\n","import { AfterViewInit, Component, DestroyRef, ElementRef, inject, input, OnDestroy, OnInit, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatOption } from '@angular/material/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatSelect } from '@angular/material/select';\n\n/** Internal search input used by the Kles select field. */\n@Component({\n selector: 'kles-select-search-input',\n standalone: true,\n imports: [ReactiveFormsModule, MatIconButton, MatIcon, MatProgressSpinner],\n template: `\n <div class=\"kles-select-search-row\">\n <mat-icon class=\"kles-select-search-icon\" aria-hidden=\"true\">search</mat-icon>\n <input\n #searchInput\n class=\"kles-select-search-input\"\n type=\"search\"\n autocomplete=\"off\"\n tabindex=\"-1\"\n [formControl]=\"control()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel()\"\n (keydown)=\"onKeydown($event)\"\n />\n @if (searching()) {\n <mat-spinner class=\"kles-select-search-spinner\" diameter=\"16\" />\n } @else if (control().value) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"kles-select-search-clear\"\n [attr.aria-label]=\"clearAriaLabel()\"\n (mousedown)=\"preserveInputFocus($event)\"\n (click)=\"clearSearch($event)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n `,\n styles: [\n `\n kles-select-search-input {\n display: block;\n width: 100%;\n }\n\n .kles-select-panel .kles-select-search-row {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n min-height: 48px;\n background: var(--mat-sys-surface-container, var(--mat-select-panel-background-color, white));\n box-shadow: inset 0 -1px 0 var(--mat-sys-outline-variant, currentColor);\n }\n\n .kles-select-panel .kles-select-search-icon {\n position: absolute;\n inset-inline-start: 14px;\n width: 20px;\n height: 20px;\n color: var(--mat-sys-on-surface-variant, currentColor);\n font-size: 20px;\n line-height: 20px;\n pointer-events: none;\n }\n\n .kles-select-panel .kles-select-search-input {\n box-sizing: border-box;\n width: 100%;\n height: 47px;\n padding: 0 44px;\n border: 0;\n outline: 0;\n color: currentColor;\n background: transparent;\n font: inherit;\n }\n\n .kles-select-panel .kles-select-search-input::placeholder {\n color: var(--mat-sys-on-surface-variant, currentColor);\n opacity: 0.8;\n }\n\n .kles-select-panel .kles-select-search-input::-webkit-search-cancel-button {\n display: none;\n }\n\n .kles-select-panel .kles-select-search-clear {\n position: absolute;\n inset-inline-end: 4px;\n width: 40px;\n height: 40px;\n color: currentColor;\n cursor: pointer;\n }\n\n .kles-select-panel .kles-select-search-spinner {\n position: absolute;\n inset-inline-end: 16px;\n }\n\n .kles-select-panel .mat-mdc-option.kles-select-search-option {\n position: sticky;\n top: -8px;\n z-index: 2;\n min-height: 48px;\n margin-top: -8px;\n padding: 0;\n opacity: 1;\n pointer-events: all;\n background: var(--mat-sys-surface-container, var(--mat-select-panel-background-color, white));\n }\n\n .kles-select-panel .mat-mdc-option.kles-select-search-option .mat-pseudo-checkbox {\n display: none;\n }\n\n .kles-select-panel .mat-mdc-option.kles-select-search-option .mdc-list-item__primary-text {\n width: 100%;\n opacity: 1;\n }\n `,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class KlesSelectSearchInputComponent implements OnInit, AfterViewInit, OnDestroy {\n readonly control = input.required<FormControl<string | null>>();\n readonly placeholder = input('');\n readonly ariaLabel = input('Search options');\n readonly clearAriaLabel = input('Clear search');\n readonly searching = input(false);\n\n private readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly matSelect = inject(MatSelect);\n private readonly matOption = inject(MatOption);\n private removePanelKeyboardGuard?: () => void;\n\n ngOnInit(): void {\n this.matOption.disabled = true;\n\n const optionElement = this.matOption._getHostElement();\n optionElement.classList.add('kles-select-search-option');\n optionElement.setAttribute('role', 'presentation');\n }\n\n ngAfterViewInit(): void {\n this.matSelect.openedChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((opened) => {\n if (opened) {\n setTimeout(() => {\n this.focusInput();\n this.installPanelKeyboardGuard();\n });\n } else {\n this.removePanelKeyboardGuard?.();\n this.removePanelKeyboardGuard = undefined;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.removePanelKeyboardGuard?.();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key.length === 1) {\n event.stopPropagation();\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault();\n }\n\n if (this.matSelect.multiple && event.key === 'Enter') {\n setTimeout(() => this.focusInput());\n }\n }\n\n preserveInputFocus(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n clearSearch(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.control().setValue('');\n this.focusInput();\n }\n\n private focusInput(): void {\n const panel = this.matSelect.panel?.nativeElement as HTMLElement | undefined;\n const inputElement = this.inputElement();\n if (!panel || !inputElement) {\n return;\n }\n\n const scrollTop = panel.scrollTop;\n inputElement.nativeElement.focus();\n panel.scrollTop = scrollTop;\n }\n\n /**\n * Material 21 renders the panel inline. Without this listener the panel and\n * the mat-select host both process the same keydown and skip an option.\n */\n private installPanelKeyboardGuard(): void {\n this.removePanelKeyboardGuard?.();\n\n const panel = this.matSelect.panel?.nativeElement as HTMLElement | undefined;\n if (!panel) {\n return;\n }\n\n const handler = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') {\n event.stopPropagation();\n }\n };\n\n panel.addEventListener('keydown', handler);\n this.removePanelKeyboardGuard = () => panel.removeEventListener('keydown', handler);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { AfterViewInit, ChangeDetectorRef, Component, inject, OnDestroy, OnInit, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatOption } from '@angular/material/core';\nimport { MatFormField, MatHint, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatSelect, MatSelectTrigger } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { concat, distinctUntilChanged, isObservable, map, Observable, of, shareReplay, Subject, switchMap, takeUntil, timer } from 'rxjs';\nimport { debounce, startWith } from 'rxjs/operators';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { EnumType } from '../enums/type.enum';\n\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesSelectSearchInputComponent } from './select-search-input.component';\nimport { IKlesSelectSearchOptions } from '../interfaces/field.config.interface';\n\ninterface DeferredQuery {\n kind: 'open' | 'search' | 'close';\n value?: string;\n}\n\ninterface MatSelectInternals {\n _scrollOptionIntoView(index: number): void;\n _keyManager: {\n activeItemIndex: number | null;\n setActiveItem(index: number): void;\n };\n}\n\n@FieldMapper({ type: EnumType.select })\n@Component({\n selector: 'kles-form-select',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <mat-select\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [compareWith]=\"compareFn\"\n [panelClass]=\"panelClasses()\"\n [panelWidth]=\"field.panelWidth || 'auto'\"\n [placeholder]=\"placeholder()\"\n [formControlName]=\"field.name\"\n [multiple]=\"field.multiple\"\n (openedChange)=\"onOpenedChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n >\n @if (field.triggerComponent) {\n <mat-select-trigger>\n <ng-container klesComponent [component]=\"field.triggerComponent\" [value]=\"group.controls[field.name].value\" [field]=\"field\" />\n </mat-select-trigger>\n }\n\n @if (isSearchEnabled()) {\n <mat-option>\n <kles-select-search-input [control]=\"searchControl\" [placeholder]=\"searchOptions.placeholder || intl.search\" [ariaLabel]=\"searchOptions.ariaLabel || intl.search\" [clearAriaLabel]=\"intl.clearSearch\" [searching]=\"isLoading()\" />\n </mat-option>\n }\n\n @if (!isLoading()) {\n @if (field.multiple) {\n <mat-checkbox class=\"selectAll mat-mdc-option mdc-list-item\" [formControl]=\"selectAllControl\" [indeterminate]=\"selectAllIndeterminate()\" (change)=\"toggleVisibleOptions($event)\">\n {{ intl.selectAll }}\n </mat-checkbox>\n }\n\n @if (field.virtualScroll) {\n <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 48\" [style.height.px]=\"5 * (field.itemSize || 48)\">\n @if (!field.autocompleteComponent) {\n <mat-option *cdkVirtualFor=\"let item of filteredOptions()\" [value]=\"item\" [disabled]=\"item?.disabled\">\n {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n </mat-option>\n } @else {\n <mat-option *cdkVirtualFor=\"let item of filteredOptions()\" [value]=\"item\" [disabled]=\"item?.disabled\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n </mat-option>\n }\n </cdk-virtual-scroll-viewport>\n } @else {\n @if (!field.autocompleteComponent) {\n @for (item of filteredOptions(); track item) {\n <mat-option [value]=\"item\" [disabled]=\"item?.disabled\">\n {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n </mat-option>\n }\n } @else {\n @for (item of filteredOptions(); track item) {\n <mat-option [value]=\"item\" [disabled]=\"item?.disabled\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n </mat-option>\n }\n }\n }\n\n @for (item of getHiddenSelectedOptions(); track item) {\n <mat-option [value]=\"item\" class=\"kles-hidden-selected-option\">\n @if (!field.autocompleteComponent) {\n {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n } @else {\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n }\n </mat-option>\n }\n } @else {\n <mat-option class=\"hide-checkbox\" disabled>\n <div class=\"loadingSelect\">{{ intl.loading }}... <mat-spinner class=\"spinner\" diameter=\"20\" /></div>\n </mat-option>\n }\n </mat-select>\n\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n @if (field.subComponents || field.clearable || isPending()) {\n <div matSuffix class=\"suffix\">\n @if (isPending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"21\" />\n }\n @if (field.subComponents || field.clearable) {\n <ng-content />\n }\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styles: [\n 'kles-form-select mat-form-field {width: 100%;}',\n 'kles-form-select .suffix {display: flex; align-items: center;}',\n '.kles-select-panel .loadingSelect {display: flex; flex-direction: row; justify-content: space-between; align-items: center;}',\n '.kles-select-panel .selectAll {padding: 0 16px 0 5px !important; display: flex !important;}',\n '.kles-select-panel .selectAll .mdc-form-field {width: 100%;}',\n '.kles-select-panel .selectAll .mdc-form-field .mdc-label {width: 100%; min-height: 48px; align-items: center; display: flex;}',\n '.kles-select-panel .selectAll .mdc-form-field .mdc-checkbox__ripple {display: none !important;}',\n '.kles-select-panel .kles-hidden-selected-option {display: none !important;}',\n '.kles-select-panel .hide-checkbox .mat-pseudo-checkbox {display: none !important;}',\n '.kles-select-panel:not(.kles-select-virtual-panel) .selectAll {position: sticky; top: -8px; z-index: 1; background: var(--mat-select-panel-background-color, var(--mat-sys-surface-container, white));}',\n '.kles-select-panel.kles-select-has-search:not(.kles-select-virtual-panel) .selectAll {top: 40px;}',\n 'div.kles-select-panel.kles-select-virtual-panel {display: flex; flex-direction: column; overflow: hidden;}',\n '.kles-select-panel.kles-select-virtual-panel .kles-select-search-option, .kles-select-panel.kles-select-virtual-panel .selectAll {flex: 0 0 48px;}',\n '.kles-select-panel.kles-select-virtual-panel cdk-virtual-scroll-viewport {flex: 1 1 auto; min-height: 0; width: 100%;}',\n ],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n KlesTransformPipe,\n MatErrorMessageDirective,\n MatProgressSpinner,\n MatHint,\n MatOption,\n KlesComponentDirective,\n ScrollingModule,\n MatSelectTrigger,\n MatSelect,\n MatTooltip,\n MatLabel,\n MatSuffix,\n MatFormField,\n MatCheckbox,\n KlesSelectSearchInputComponent,\n ],\n})\nexport class KlesFormSelectComponent extends KlesFieldAbstract implements OnInit, AfterViewInit, OnDestroy {\n readonly searchControl = new FormControl<string>('');\n readonly selectAllControl = new FormControl(false, { nonNullable: true });\n readonly selectAllIndeterminate = signal(false);\n readonly isLoading = signal(false);\n readonly filteredOptions = signal<any[]>([]);\n\n readonly intl = inject(KlesDynamicFormIntl);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly matSelect = viewChild(MatSelect);\n private readonly virtualViewport = viewChild(CdkVirtualScrollViewport);\n\n searchOptions: IKlesSelectSearchOptions = {};\n\n private readonly deferredQuery$ = new Subject<DeferredQuery>();\n private sourceOptions: any[] = [];\n private visibleOptions: any[] = [];\n private isPanelOpen = false;\n private isDeferredSourceLoaded = false;\n private deferredOptionsRequest$?: Observable<any[]>;\n private restoreMatSelectScroll?: () => void;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.searchOptions = this.normalizeSearchOptions();\n\n this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((values) => {\n this.updateSelectAllState(values);\n this.changeDetectorRef.markForCheck();\n });\n\n if (this.usesDeferredSource()) {\n const selected = this.selectedValues();\n this.sourceOptions = selected;\n this.setVisibleOptions(selected);\n // MatSelect cannot open without at least one MatOption. When search is\n // disabled, keep the loading option rendered until the deferred source\n // is requested on the first opening.\n this.isLoading.set(!this.isSearchEnabled() && selected.length === 0);\n this.initializeDeferredQueries();\n } else {\n this.loadInitialOptions();\n }\n\n if (this.isSearchEnabled() && !this.usesDeferredSource()) {\n this.searchControl.valueChanges\n .pipe(\n startWith(this.searchControl.value),\n debounce((value) => timer(value ? (this.searchOptions.debounceTime ?? this.field.debounceTime ?? 0) : 0)),\n distinctUntilChanged(),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => this.applyLocalFilter(value || ''));\n } else if (this.isSearchEnabled()) {\n this.searchControl.valueChanges\n .pipe(\n debounce((value) => timer(value ? (this.searchOptions.debounceTime ?? this.field.debounceTime ?? 0) : 0)),\n distinctUntilChanged(),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => {\n if (this.isPanelOpen) {\n this.deferredQuery$.next({ kind: 'search', value: value || '' });\n }\n });\n }\n }\n\n override ngOnDestroy(): void {\n this.restoreMatSelectScroll?.();\n this.deferredQuery$.complete();\n super.ngOnDestroy();\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this.installMatSelectScrollCorrection();\n }\n\n isSearchEnabled(): boolean {\n return this.field.search === true || (this.field.search != null && typeof this.field.search === 'object');\n }\n\n panelClasses(): string[] {\n const classes = ['kles-select-panel'];\n if (this.field.virtualScroll) {\n classes.push('kles-select-virtual-panel');\n }\n if (this.isSearchEnabled()) {\n classes.push('kles-select-has-search');\n }\n return classes;\n }\n\n onOpenedChange(opened: boolean): void {\n this.isPanelOpen = opened;\n\n if (this.usesDeferredSource()) {\n if (opened) {\n this.isDeferredSourceLoaded = false;\n // Keep the initial request alive while search terms replace each\n // other, otherwise switchMap cancels the baseline option loading.\n this.deferredOptionsRequest$ = this.resolveOptions().pipe(shareReplay({ bufferSize: 1, refCount: false }));\n }\n this.deferredQuery$.next(opened ? { kind: 'open', value: this.searchControl.value || '' } : { kind: 'close' });\n }\n\n if (!opened && this.isSearchEnabled() && (this.searchOptions.clearOnClose ?? true)) {\n this.searchControl.setValue('');\n }\n\n if (opened && this.field.virtualScroll) {\n setTimeout(() => {\n this.virtualViewport()?.scrollToIndex(0);\n this.virtualViewport()?.checkViewportSize();\n });\n }\n }\n\n toggleVisibleOptions(state: { checked: boolean }): void {\n const selected = this.selectedValues();\n const enabledOptions = this.visibleOptions.filter((option) => !option?.disabled);\n\n if (!state.checked) {\n const remaining = selected.filter((value) => !enabledOptions.some((option) => this.compareFn(value, option)));\n this.group.controls[this.field.name].patchValue(remaining);\n return;\n }\n\n if (enabledOptions.length > 0) {\n const added = enabledOptions.filter((option) => !selected.some((value) => this.compareFn(value, option)));\n this.group.controls[this.field.name].patchValue([...selected, ...added]);\n }\n }\n\n getHiddenSelectedOptions(): any[] {\n const selected = this.selectedValues();\n if (this.field.virtualScroll) {\n return selected;\n }\n\n return selected.filter((selectedOption) => !this.visibleOptions.some((option) => this.compareFn(selectedOption, option)));\n }\n\n compareFn = (first: any, second: any): boolean => {\n if (this.field.property && first && second) {\n return first[this.field.property] === second[this.field.property];\n }\n return first === second;\n };\n\n private normalizeSearchOptions(): IKlesSelectSearchOptions {\n if (!this.isSearchEnabled()) {\n return {};\n }\n\n const configured = typeof this.field.search === 'object' ? this.field.search : {};\n return {\n mode: configured.mode ?? 'local',\n keys: configured.keys ?? this.field.searchKeys,\n debounceTime: configured.debounceTime ?? this.field.debounceTime,\n minLength: configured.minLength ?? 0,\n clearOnClose: configured.clearOnClose ?? true,\n placeholder: configured.placeholder,\n ariaLabel: configured.ariaLabel,\n };\n }\n\n private usesDeferredSource(): boolean {\n return !!this.field.lazy || this.searchOptions.mode === 'remote';\n }\n\n private loadInitialOptions(): void {\n if (isObservable(this.field.options) || typeof this.field.options === 'function') {\n this.isLoading.set(true);\n }\n\n this.resolveOptions()\n .pipe(takeUntil(this._onDestroy))\n .subscribe((options) => {\n const safeOptions = options ?? [];\n this.isLoading.set(false);\n this.sourceOptions = safeOptions;\n if (this.isSearchEnabled()) {\n this.applyLocalFilter(this.searchControl.value || '');\n } else {\n this.setVisibleOptions(safeOptions);\n }\n });\n }\n\n private initializeDeferredQueries(): void {\n this.deferredQuery$\n .pipe(\n switchMap((query) => {\n if (query.kind === 'close') {\n const selected = this.selectedValues();\n // Preserve a disabled loading option when the closed select\n // would otherwise contain no option and could not reopen.\n return of({ loading: !this.isSearchEnabled() && selected.length === 0, options: selected, sourceOptions: undefined as any[] | undefined });\n }\n\n const search = query.value || '';\n const searchLength = search.trim().length;\n const isBelowMinimumLength = searchLength > 0 && searchLength < (this.searchOptions.minLength ?? 0);\n if (query.kind === 'search' && isBelowMinimumLength) {\n if (this.isDeferredSourceLoaded) {\n return of({ loading: false, options: this.sourceOptions, sourceOptions: undefined as any[] | undefined });\n }\n\n const options$ = this.deferredOptionsRequest$ ?? this.resolveOptions();\n return concat(\n of({ loading: true, options: [] as any[], sourceOptions: undefined as any[] | undefined }),\n options$.pipe(\n map((options) => options ?? []),\n map((sourceOptions) => ({ loading: false, options: sourceOptions, sourceOptions })),\n ),\n );\n }\n\n if (query.kind === 'search' && this.searchOptions.mode !== 'remote' && this.isDeferredSourceLoaded) {\n return of({ loading: false, options: this.filterOptions(this.sourceOptions, search), sourceOptions: undefined as any[] | undefined });\n }\n\n const options$ =\n this.searchOptions.mode === 'remote' && typeof this.field.options === 'function' && searchLength > 0\n ? this.resolveOptions(search)\n : (this.deferredOptionsRequest$ ?? this.resolveOptions());\n return concat(\n of({ loading: true, options: [] as any[], sourceOptions: undefined as any[] | undefined }),\n options$.pipe(\n map((options) => options ?? []),\n map((sourceOptions) => ({\n loading: false,\n sourceOptions: this.searchOptions.mode === 'remote' && searchLength > 0 ? undefined : sourceOptions,\n options: this.searchOptions.mode === 'remote' ? sourceOptions : this.filterOptions(sourceOptions, search),\n })),\n ),\n );\n }),\n takeUntil(this._onDestroy),\n )\n .subscribe(({ loading, options, sourceOptions }) => {\n this.isLoading.set(loading);\n if (!loading) {\n if (sourceOptions !== undefined) {\n this.sourceOptions = sourceOptions;\n this.isDeferredSourceLoaded = true;\n }\n this.setVisibleOptions(options);\n }\n });\n }\n\n private resolveOptions(search?: string): Observable<any[]> {\n if (isObservable(this.field.options)) {\n return this.field.options as Observable<any[]>;\n }\n if (typeof this.field.options === 'function') {\n return this.field.options(search, this.group.getRawValue());\n }\n return of(this.field.options ?? []);\n }\n\n private applyLocalFilter(value: string): void {\n const searchLength = value.trim().length;\n const options = searchLength > 0 && searchLength < (this.searchOptions.minLength ?? 0) ? this.sourceOptions : this.filterOptions(this.sourceOptions, value);\n this.setVisibleOptions(options);\n }\n\n private setVisibleOptions(options: any[]): void {\n this.visibleOptions = options;\n this.filteredOptions.set(options);\n this.updateSelectAllState(this.group.controls[this.field.name].value);\n this.changeDetectorRef.markForCheck();\n }\n\n private filterOptions(options: any[], value: string): any[] {\n const search = value.trim().toLocaleLowerCase();\n if (!search) {\n return options;\n }\n\n const keys = this.searchOptions.keys ?? [];\n return options.filter((option) => {\n const keyMatch = keys.some((key) => this.normalizeSearchValue(option?.[key]).includes(search));\n const propertyMatch = this.field.property ? this.normalizeSearchValue(option?.[this.field.property]).includes(search) : false;\n return keyMatch || propertyMatch || (!keys.length && !this.field.property && this.normalizeSearchValue(option).includes(search));\n });\n }\n\n private normalizeSearchValue(value: unknown): string {\n return value == null ? '' : String(value).toLocaleLowerCase();\n }\n\n private installMatSelectScrollCorrection(): void {\n if (this.restoreMatSelectScroll || (!this.isSearchEnabled() && !this.field.multiple)) {\n return;\n }\n\n const matSelect = this.matSelect() as unknown as (MatSelect & MatSelectInternals) | undefined;\n if (!matSelect) {\n return;\n }\n\n const originalScrollOptionIntoView = matSelect._scrollOptionIntoView;\n matSelect._scrollOptionIntoView = (index: number) => {\n const options = matSelect.options.toArray();\n const option = options[index];\n const optionElement = option?._getHostElement();\n\n if (optionElement?.classList.contains('kles-select-search-option')) {\n const firstOptionIndex = options.findIndex((candidate) => {\n const element = candidate._getHostElement();\n return !candidate.disabled && !element.classList.contains('kles-hidden-selected-option');\n });\n if (firstOptionIndex >= 0 && matSelect._keyManager.activeItemIndex !== firstOptionIndex) {\n matSelect._keyManager.setActiveItem(firstOptionIndex);\n }\n return;\n }\n\n originalScrollOptionIntoView.call(matSelect, index);\n requestAnimationFrame(() => this.keepOptionVisible(option?._getHostElement()));\n };\n\n this.restoreMatSelectScroll = () => {\n matSelect._scrollOptionIntoView = originalScrollOptionIntoView;\n this.restoreMatSelectScroll = undefined;\n };\n }\n\n private keepOptionVisible(activeOption?: HTMLElement): void {\n const panel = this.matSelect()?.panel?.nativeElement as HTMLElement | undefined;\n if (!panel || !activeOption || !panel.contains(activeOption)) {\n return;\n }\n\n const options = panel.querySelectorAll<HTMLElement>('.mat-mdc-option:not(.kles-select-search-option):not(.kles-hidden-selected-option)');\n if (activeOption === options.item(0)) {\n panel.scrollTop = 0;\n return;\n }\n if (activeOption === options.item(options.length - 1)) {\n panel.scrollTop = panel.scrollHeight;\n return;\n }\n\n const panelRect = panel.getBoundingClientRect();\n const fixedHeader = panel.querySelector<HTMLElement>('.selectAll') ?? panel.querySelector<HTMLElement>('.kles-select-search-option');\n const visibleTop = fixedHeader?.getBoundingClientRect().bottom ?? panelRect.top;\n const optionRect = activeOption.getBoundingClientRect();\n if (optionRect.top < visibleTop) {\n panel.scrollTop += optionRect.top - visibleTop;\n } else if (optionRect.bottom > panelRect.bottom) {\n panel.scrollTop += optionRect.bottom - panelRect.bottom;\n }\n }\n\n private selectedValues(): any[] {\n const value = this.group.controls[this.field.name].value;\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n }\n\n private updateSelectAllState(values: any): void {\n if (!this.field.multiple) {\n return;\n }\n\n const selected = Array.isArray(values) ? values : [];\n const enabledOptions = this.visibleOptions.filter((option) => !option?.disabled);\n const selectedCount = enabledOptions.filter((option) => selected.some((value) => this.compareFn(value, option))).length;\n const allSelected = enabledOptions.length > 0 && selectedCount === enabledOptions.length;\n this.selectAllIndeterminate.set(selectedCount > 0 && !allSelected);\n this.selectAllControl.setValue(allSelected, { emitEvent: false });\n }\n}\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\"\n\nexport function autocompleteObjectValidator(optional?: boolean): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n if ((control.value === null || control.value === undefined) && !optional) return { 'invalidAutocompleteObject': { value: control.value } }\n\n if (typeof control.value === 'string') {\n if (control.value === '' && optional) return null;\n return { 'invalidAutocompleteObject': { value: control.value } }\n }\n return null /* valid option selected */\n }\n}\n\nexport function autocompleteStringValidator(validOptions: Array<string>, optional?: boolean): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n if ((control.value === '' || control.value === null) && optional) return null;\n if (validOptions.indexOf(control.value) !== -1) {\n return null /* valid option selected */\n }\n return { 'invalidAutocompleteString': { value: control.value } }\n }\n}","/*\n * Public API Surface of kles-material-dynamicforms\n */\n\nexport * from './lib/kles-material-dynamicforms.module';\n\n/**DIRECTIVE */\nexport * from './lib/directive/dynamic-field.directive';\nexport * from './lib/directive/dynamic-component.directive';\nexport * from './lib/directive/mat-error-message.directive';\nexport * from './lib/directive/mat-error-form.directive';\n\n/*FORMS*/\nexport * from './lib/forms/button-control-base';\nexport * from './lib/forms/button-control.component';\nexport * from './lib/forms/buttonchecker-control.component';\nexport * from './lib/forms/buttonfile-control.component';\nexport * from './lib/forms/file-control.component';\nexport * from './lib/forms/fab-control.component';\nexport * from './lib/forms/mini-fab-control.component';\nexport * from './lib/forms/icon-button-control.component';\nexport * from './lib/forms/indeterminate-checkbox';\n\n/**FIELDS */\nexport * from './lib/fields/badge.component';\nexport * from './lib/fields/button-form.component';\nexport * from './lib/fields/buttonchecker-form.component';\nexport * from './lib/fields/buttonfile-form.component';\nexport * from './lib/fields/checkbox.component';\nexport * from './lib/fields/checkbox-indeterminate.component';\nexport * from './lib/fields/color.component';\nexport * from './lib/fields/date.component';\nexport * from './lib/fields/date-time.component';\nexport * from './lib/fields/field.abstract';\nexport * from './lib/fields/input.component';\nexport * from './lib/fields/input.clearable.component';\nexport * from './lib/fields/file.component';\nexport * from './lib/fields/label.component';\nexport * from './lib/fields/list-field.component';\nexport * from './lib/fields/radio.component';\nexport * from './lib/fields/textarea.component';\nexport * from './lib/fields/text.component';\nexport * from './lib/fields/chip.component';\nexport * from './lib/fields/group.component';\nexport * from './lib/fields/icon.component';\nexport * from './lib/fields/line-break.component';\nexport * from './lib/fields/link.component';\nexport * from './lib/fields/slide-toggle.component';\nexport * from './lib/fields/selection-list.component';\nexport * from './lib/fields/button-toogle-group.component';\nexport * from './lib/fields/array.component';\nexport * from './lib/fields/range.component';\nexport * from './lib/fields/tile.component';\nexport * from './lib/fields/subfields/clear.component';\nexport * from './lib/fields/button-fab.component';\nexport * from './lib/fields/button-mini-fab.component';\nexport * from './lib/fields/button-icon.component';\nexport * from './lib/fields/selection-list.search.component';\nexport * from './lib/fields/subfields/copy.component';\nexport * from './lib/fields/subfields/password-visibility.component';\nexport * from './lib/fields/action-menu.component';\nexport * from './lib/fields/currency.component';\nexport * from './lib/fields/status.component';\nexport * from './lib/fields/chip-grid.component';\nexport * from './lib/fields/select.component'\n\n/**ENUMS */\nexport * from './lib/enums/type.enum';\n\n/**INTERFACES */\nexport * from './lib/interfaces/component.interface';\nexport * from './lib/interfaces/field.interface';\nexport * from './lib/interfaces/field.config.interface';\nexport * from './lib/interfaces/validator.interface';\nexport * from './lib/interfaces/directive.interface';\nexport * from './lib/interfaces/clear-control.interface';\n\n/**MATCHER */\nexport * from './lib/matcher/form-error.matcher';\n\n/**VALIDATORS */\nexport * from './lib/validators/autocomplete.validator';\n\n/**FORM */\nexport * from './lib/dynamic-form.component';\n\n/**PIPES */\nexport * from './lib/pipe/array.pipe';\nexport * from './lib/pipe/transform.pipe';\n\n/**DECORATORS */\nexport * from './lib/decorators/component.decorator';\n\n/**FACTORIES */\nexport * from './lib/factories/field.factory';\n\n/**CONTROLS */\nexport * from './lib/controls/array.control';\nexport * from './lib/controls/control.interface';\nexport * from './lib/controls/default.control';\nexport * from './lib/controls/group.control';\nexport * from './lib/controls/range.control';\nexport * from './lib/controls/control.abstract';\n\n/**SELECTION */\nexport * from './lib/selection/selection-model';\n\n/**UTILS */\nexport * from './lib/utils/destroyable.guard';\n\n/**INTL */\nexport * from './lib/dynamic-form-intl';\n\n/**UI */\nexport * from './lib/ui/array.ui';\nexport * from './lib/ui/default.ui';\nexport * from './lib/ui/group.ui';\nexport * from './lib/ui/ui.abstract';\nexport * from './lib/ui/ui.interface';\nexport * from './lib/ui/ui-state/array-ui-state';\nexport * from './lib/ui/ui-state/control-ui-state';\nexport * from './lib/ui/ui-state/group-ui-state';\nexport * from './lib/ui/ui-state/ui-state.abstract';\n\n/**TOKEN */\nexport * from './lib/token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","i1","i2","takeUntil","i3","startWith","i7","i9","i4","i5","i6","uuidv4","MatLabel","MatFormField","i8","switchMap","MatOption","distinctUntilChanged","shareReplay"],"mappings":"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"}
1
+ {"version":3,"file":"3kles-kles-material-dynamicforms.mjs","sources":["../../../projects/kles-material-dynamicforms/src/lib/controls/control.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/default.control.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/ui-state.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/control-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/default.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/factories/field.factory.ts","../../../projects/kles-material-dynamicforms/src/lib/decorators/component.decorator.ts","../../../projects/kles-material-dynamicforms/src/lib/enums/type.enum.ts","../../../projects/kles-material-dynamicforms/src/lib/token.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/clear.component.ts","../../../projects/kles-material-dynamicforms/src/lib/utils/destroyable.guard.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/dynamic-field.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/utils/validation.util.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/mat-error-form.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/matcher/form-error.matcher.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/group-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/dynamic-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/dynamic-component.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/modules/material.module.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/field.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/label.component.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/mat-error-message.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/dynamic-form-intl.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/input.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/date.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/radio.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/checkbox.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/array.control.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/list-field.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/color.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/button-control-base.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/button-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/buttonchecker-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/buttonchecker-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/buttonfile-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/buttonfile-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/textarea.component.ts","../../../projects/kles-material-dynamicforms/src/lib/pipe/transform.pipe.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/text.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/chip.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/group.control.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/group.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/group.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/input.clearable.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/icon.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/line-break.component.ts","../../../projects/kles-material-dynamicforms/src/lib/pipe/array.pipe.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/link.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/slide-toggle.component.ts","../../../projects/kles-material-dynamicforms/src/lib/selection/selection-model.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/selection-list.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/badge.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-toogle-group.component.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/array-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/array.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/array.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/range.control.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/range.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/fab-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-fab.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/mini-fab-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-mini-fab.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/icon-button-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-icon.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/selection-list.search.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/indeterminate-checkbox.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/checkbox-indeterminate.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/file-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/file.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/date-time.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/copy.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/action-menu.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/tile.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/currency.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/status.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/chip-grid.component.ts","../../../projects/kles-material-dynamicforms/src/lib/kles-material-dynamicforms.module.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/password-visibility.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/select-search-input.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/select.component.ts","../../../projects/kles-material-dynamicforms/src/lib/validators/autocomplete.validator.ts","../../../projects/kles-material-dynamicforms/src/public-api.ts","../../../projects/kles-material-dynamicforms/src/3kles-kles-material-dynamicforms.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn, AsyncValidatorFn, Validators } from '@angular/forms';\nimport { IKlesValidator } from '../interfaces/validator.interface';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { IKlesControl } from './control.interface';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { tap } from 'rxjs/operators';\n\nexport abstract class KlesAbstractFormControl implements IKlesControl {\n constructor(\n protected field: IKlesFieldConfig,\n protected ref?: ChangeDetectorRef,\n ) {}\n abstract create(): AbstractControl;\n\n public bindValidations(validations: IKlesValidator<ValidatorFn>[]): ValidatorFn {\n if (validations.length > 0) {\n return Validators.compose(validations.map((validation) => validation.validator));\n }\n return null;\n }\n\n public bindAsyncValidations(validations: IKlesValidator<AsyncValidatorFn>[]): AsyncValidatorFn {\n if (validations.length > 0) {\n return Validators.composeAsync(\n validations.map((validation) => {\n return (c: AbstractControl) => {\n const validator$ = validation.validator(c);\n if (validator$ instanceof Promise) {\n return validator$.finally(() => this.ref?.markForCheck());\n } else {\n return validator$.pipe(tap(() => this.ref?.markForCheck()));\n }\n };\n }),\n );\n }\n return null;\n }\n}\n","import { AbstractControl, FormControl } from \"@angular/forms\";\nimport { concat, of } from \"rxjs\";\nimport { catchError, map, take } from \"rxjs/operators\";\nimport { KlesAbstractFormControl } from \"./control.abstract\";\n\nexport class KlesFormControl extends KlesAbstractFormControl {\n\n public create(): AbstractControl {\n const control = new FormControl(\n { value: this.field.value, disabled: this.field.disabled || false },\n {\n nonNullable: this.field.nonNullable || false,\n validators: this.bindValidations(this.field.validations || []),\n asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n updateOn: this.field.updateOn || 'change',\n }\n );\n\n if (this.field.asyncValue) {\n concat(\n of({ value: null, pending: true }),\n this.field.asyncValue.pipe(\n take(1),\n catchError((err) => {\n console.error(err);\n return of(null);\n }),\n map((value) => ({ value, pending: false }))\n )\n ).subscribe((response) => {\n this.field.pending = response.pending;\n if (response.pending) {\n control.disable({ emitEvent: false });\n } else {\n if (!this.field.disabled) {\n control.enable({ emitEvent: false });\n }\n control.setValue(response.value);\n this.field.value = response.value;\n }\n });\n }\n return control;\n }\n}\n","import { EventEmitter, Signal, signal } from '@angular/core';\nimport { ɵGetProperty } from '@angular/forms';\n\nexport abstract class AbstractUiState<TValue = any, TRawValue extends TValue = TValue> {\n protected _value = signal<TValue | undefined>(undefined);\n\n private _parent: AbstractUiState<any> | null = null;\n private _parentKey: string | number | null = null;\n\n get<P extends string | readonly (string | number)[]>(path: P): AbstractUiState<ɵGetProperty<TRawValue, P>> | null;\n get<P extends string | Array<string | number>>(path: P): AbstractUiState<ɵGetProperty<TRawValue, P>> | null;\n get<P extends string | (string | number)[]>(path: P): AbstractUiState<ɵGetProperty<TRawValue, P>> | null {\n let currPath: Array<string | number> | string = path;\n if (currPath == null) return null;\n if (!Array.isArray(currPath)) currPath = currPath.split('.').filter(Boolean);\n if (currPath.length === 0) return null;\n return currPath.reduce((uiState: AbstractUiState | null, name) => uiState && uiState._find(name), this);\n }\n\n _find(name: string | number): AbstractUiState | null {\n return null;\n }\n\n abstract setValue(value: TRawValue): void;\n\n abstract patchValue(value: Partial<TValue>): void;\n\n get value(): Signal<TValue | undefined> {\n return this._value.asReadonly();\n }\n\n setParent(parent: AbstractUiState<any>, key: string | number): void {\n this._parent = parent;\n this._parentKey = key;\n }\n\n protected notifyParent(): void {\n if (this._parent && this._parentKey != null) {\n this._parent.childValueChanged(this._parentKey, this._value());\n }\n }\n\n childValueChanged(key: string | number, value: any): void {\n // par défaut, rien\n }\n}\n","import { Signal, signal } from '@angular/core';\nimport { IKlesFieldUi } from '../../interfaces/field.config.interface';\nimport { AbstractUiState } from './ui-state.abstract';\n\nexport class ControlUiState<TValue extends IKlesFieldUi> extends AbstractUiState<TValue, TValue> {\n constructor(value?: TValue) {\n super();\n if (value !== undefined) {\n this._value.set(value);\n }\n }\n\n get value(): Signal<TValue | undefined> {\n return this._value.asReadonly();\n }\n\n override setValue(value: TValue): void {\n this._value.set(value);\n this.notifyParent();\n }\n\n override patchValue(value: Partial<TValue> | TValue): void {\n if (value == null) {\n return;\n }\n\n const curr = this._value();\n if (curr == null) {\n this._value.set(value as TValue);\n return;\n }\n\n this._value.set({ ...(curr as any), ...(value as any) } as TValue);\n this.notifyParent();\n }\n\n}\n","import { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { IKlesUi } from './ui.interface';\n\nexport abstract class KlesAbstractFormUiControl implements IKlesUi {\n constructor(protected field: IKlesFieldConfig) {}\n abstract create(): AbstractUiState;\n}\n","import { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { ControlUiState } from './ui-state/control-ui-state';\nimport { KlesAbstractFormUiControl } from './ui.abstract';\n\nexport class KlesFormUiControl extends KlesAbstractFormUiControl {\n create(): AbstractUiState {\n return new ControlUiState({\n inputType: this.field.inputType,\n min: this.field.min,\n max: this.field.max,\n maxLength: this.field.maxLength,\n step: this.field.step,\n hostClass: this.field.hostClass,\n ngClass: this.field.ngClass,\n ngStyle: this.field.ngStyle,\n indeterminate: this.field.indeterminate ?? false,\n color: this.field.color,\n icon: this.field.icon,\n iconSvg: this.field.iconSvg,\n appearance: this.field.appearance ?? 'fill',\n buttonAppearance: this.field.buttonAppearance ?? 'text',\n\n imageUrl: this.field.imageUrl,\n imageAlt: this.field.imageAlt,\n\n label: this.field.label,\n hint: this.field.hint,\n placeholder: this.field.placeholder,\n tooltip: this.field.tooltip,\n currencyOptions: this.field.currencyOptions,\n });\n }\n}\n","import { ChangeDetectorRef } from '@angular/core';\nimport { KlesFormControl } from '../controls/default.control';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { KlesFormUiControl } from '../ui/default.ui';\nimport { AbstractUiState } from '../ui/ui-state/ui-state.abstract';\nimport { AbstractControl } from '@angular/forms';\n\nexport const klesFieldControlFactory = (field: IKlesFieldConfig, ref?: ChangeDetectorRef): AbstractControl => {\n const factory = new KlesFormControl(field, ref);\n return factory.create();\n};\n\nexport const klesFieldUiFactory = (field: IKlesFieldConfig): AbstractUiState => {\n const factory = new KlesFormUiControl(field);\n return factory.create();\n};\n","import { ChangeDetectorRef, Type } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { klesFieldControlFactory, klesFieldUiFactory } from '../factories/field.factory';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { AbstractUiState } from '../ui/ui-state/ui-state.abstract';\n\n\nexport const componentMapper: {\n component: Type<any>;\n type: string;\n factory: (field: IKlesFieldConfig, ref?: ChangeDetectorRef) => AbstractControl<any, any>;\n ui?: (field: IKlesFieldConfig) => AbstractUiState<any, any>;\n}[] = [];\n\nexport function FieldMapper(config: { type: string; factory?: (field: IKlesFieldConfig) => AbstractControl<any, any>; ui?: (field: IKlesFieldConfig) => AbstractUiState<any, any> }) {\n return (target: Type<any>) => {\n componentMapper.push({\n component: target,\n type: config.type,\n factory: config.factory || klesFieldControlFactory,\n ui: config.ui || klesFieldUiFactory,\n });\n };\n}\n","export enum EnumType {\n input = 'input',\n select = 'select',\n text = 'text',\n file = 'file',\n button = 'button',\n checkbox = 'checkbox',\n number = 'number',\n time = 'time',\n date = 'date',\n color = 'color',\n list = 'list',\n multi = 'multi',\n array = 'array',\n group = 'group',\n lineBreak = 'lineBreak',\n badge = 'badge',\n range = 'range',\n currency = 'currency',\n status = 'status',\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesFieldConfig } from './interfaces/field.config.interface';\nimport { GroupUiState } from './ui/ui-state/group-ui-state';\n\nexport const FIELD_NAME = new InjectionToken<string>('FIELD_NAME');\nexport const GROUP = new InjectionToken<FormGroup>('GROUP');\nexport const SIBLING_FIELDS = new InjectionToken<IKlesFieldConfig[]>('SIBLING_FIELDS');\nexport const GROUP_UI = new InjectionToken<GroupUiState>('GROUP_UI');\nexport const FIELD = new InjectionToken<IKlesFieldConfig>('FIELD');\n\nexport const FIELD_CONTEXT = new InjectionToken<Signal<unknown | null>>('FIELD_CONTEXT');\n","import { Component, inject, OnDestroy, Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesClearControl } from '../../interfaces/clear-control.interface';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\n\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { FIELD, GROUP, SIBLING_FIELDS } from '../../token';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest, map, startWith, Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'kles-form-clear',\n template: `\n <button [disabled]=\"disabled()\" matIconButton aria-label=\"Clear\" type=\"button\" (click)=\"clear($event)\">\n <mat-icon>close</mat-icon>\n </button>\n `,\n standalone: true,\n imports: [MatIcon, MatIconButton],\n})\nexport class KlesFormClearComponent implements IKlesClearControl, OnDestroy {\n readonly field = inject<IKlesFieldConfig>(FIELD);\n readonly group = inject<FormGroup<any>>(GROUP);\n readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n private _onDestroy = new Subject<void>();\n\n disabled: Signal<boolean>;\n\n constructor() {\n this.disabled = toSignal(\n combineLatest([\n this.group.get(this.field.name)?.valueChanges.pipe(\n startWith(this.group.get(this.field.name).value),\n map((value) => {\n return !this.isPresent(value);\n }),\n ),\n this.group.get(this.field.name)?.statusChanges.pipe(\n startWith(this.group.get(this.field.name).status),\n map((status) => status === 'DISABLED'),\n ),\n ]).pipe(\n takeUntil(this._onDestroy),\n map(([empty, disabled]) => {\n return empty || disabled;\n }),\n ),\n );\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n clear(event): void {\n event.stopPropagation();\n this.group.controls[this.field.name].reset();\n }\n\n private isPresent<T>(value: T | null | undefined): value is T {\n if (value == null) return false;\n\n if (typeof value === 'string') {\n return value.length > 0;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size > 0;\n }\n\n return true;\n }\n}\n","export interface Destroyable {\n destroy();\n}\n\nexport function isDestroyable(value: unknown): value is Destroyable {\n return value !== null && typeof value === 'object' &&\n typeof (value as Destroyable).destroy === 'function';\n}","import { ApplicationRef, Directive, Input, OnInit, ViewContainerRef, ViewRef, ComponentRef, OnChanges, SimpleChanges, OnDestroy, Type, Injector, StaticProvider, Provider, Signal } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { componentMapper } from '../decorators/component.decorator';\nimport { KlesFormClearComponent } from '../fields/subfields/clear.component';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { isDestroyable } from '../utils/destroyable.guard';\nimport { FIELD, FIELD_NAME, GROUP, SIBLING_FIELDS, GROUP_UI, FIELD_CONTEXT } from '../token';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\n\n@Directive({\n selector: '[klesDynamicField]',\n standalone: true,\n})\nexport class KlesDynamicFieldDirective<T extends IKlesFieldConfig = IKlesFieldConfig> implements OnInit, OnChanges, OnDestroy {\n @Input() field!: T;\n @Input() group!: UntypedFormGroup;\n @Input() ui!: GroupUiState;\n @Input() siblingFields!: T[];\n\n @Input() context: Signal<unknown | null> | null = null;\n\n componentRef: ComponentRef<any> | undefined;\n subComponents: ComponentRef<any>[] = [];\n private subComponentViews = new Map<ComponentRef<any>, ViewRef>();\n\n constructor(\n protected container: ViewContainerRef,\n protected injector: Injector,\n private applicationRef: ApplicationRef,\n ) {}\n\n ngOnDestroy(): void {\n this.destroyComponents();\n }\n\n ngOnInit() {\n this.buildComponent();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const groupChanged = !!changes['group'] && !changes['group'].isFirstChange();\n const fieldChanged = !!changes['field'] && !changes['field'].isFirstChange();\n const uiChanged = !!changes['ui'] && !changes['ui'].isFirstChange();\n const siblingFieldsChanged = !!changes['siblingFields'] && !changes['siblingFields'].isFirstChange();\n const contextChanged = !!changes['context'] && !changes['context'].isFirstChange();\n\n if (groupChanged) {\n this.group = changes['group'].currentValue;\n }\n\n if (fieldChanged) {\n this.field = changes['field'].currentValue;\n }\n\n if (uiChanged) {\n this.ui = changes['ui'].currentValue;\n }\n\n if (siblingFieldsChanged) {\n this.siblingFields = changes['siblingFields'].currentValue;\n }\n\n if (contextChanged) {\n this.context = changes['context'].currentValue;\n }\n\n if (groupChanged || fieldChanged || uiChanged || siblingFieldsChanged || contextChanged) {\n this.buildComponent();\n }\n }\n\n buildComponent() {\n this.destroyComponents();\n\n const options: {\n providers: Array<Provider | StaticProvider>;\n parent?: Injector;\n name?: string;\n } = {\n providers: [\n ...(this.field.providers || []),\n ...(this.field.dateOptions\n ? [\n ...(this.field.dateOptions.adapter\n ? [\n {\n provide: DateAdapter,\n useClass: this.field.dateOptions.adapter.class,\n deps: this.field.dateOptions.adapter.deps || [],\n },\n ]\n : []),\n { provide: MAT_DATE_LOCALE, useValue: this.field.dateOptions.language },\n { provide: MAT_DATE_FORMATS, useValue: this.field.dateOptions.dateFormat },\n ]\n : []),\n {\n provide: FIELD_NAME,\n useValue: this.field.name,\n },\n {\n provide: FIELD,\n useValue: this.field,\n },\n {\n provide: GROUP,\n useValue: this.group,\n },\n {\n provide: SIBLING_FIELDS,\n useValue: this.siblingFields,\n },\n {\n provide: GROUP_UI,\n useValue: this.ui,\n },\n\n ...(this.context\n ? [\n {\n provide: FIELD_CONTEXT,\n useValue: this.context,\n },\n ]\n : []),\n ],\n parent: this.injector,\n };\n\n const injector: Injector = Injector.create(options);\n\n if (this.field.clearable) {\n const composant = this.createSubComponent(this.field.clearableComponent || KlesFormClearComponent, options);\n this.subComponents.push(composant);\n }\n if (this.field.subComponents) {\n this.subComponents.push(...this.field.subComponents.map((subComponent) => this.createSubComponent(subComponent, options)));\n }\n\n this.componentRef = this.createComponentRef(injector);\n\n this.componentRef?.onDestroy(() => {\n if (isDestroyable(injector)) {\n injector.destroy();\n }\n });\n }\n\n protected createComponentRef(injector: Injector): ComponentRef<any> | undefined {\n const component = this.findComponent();\n\n if (component) {\n const componentRef = this.container.createComponent(component, {\n injector,\n projectableNodes: [this.subComponents.map((sub) => sub.location.nativeElement)],\n });\n\n if (this.field.hostClass) {\n if (Array.isArray(this.field.hostClass)) {\n componentRef.location.nativeElement.classList.add(...this.field.hostClass);\n } else {\n componentRef.location.nativeElement.classList.add(this.field.hostClass);\n }\n }\n\n return componentRef;\n }\n\n return undefined;\n }\n\n protected findComponent(): Type<any> | undefined {\n if (this.field.type || this.field.component) {\n return componentMapper.find((element) => element.type === this.field.type)?.component || this.field.component;\n }\n return undefined;\n }\n\n private createSubComponent(\n componentType: Type<any>,\n options: {\n providers: Array<Provider | StaticProvider>;\n parent?: Injector;\n name?: string;\n },\n ): ComponentRef<any> {\n const injector: Injector = Injector.create(options);\n const component = this.container.createComponent(componentType, { injector });\n\n // The host element is projected into the field component. Keeping its view\n // in this container would make Angular's logical DOM differ from the real DOM.\n const viewIndex = this.container.indexOf(component.hostView);\n const detachedView = viewIndex !== -1 ? this.container.detach(viewIndex) : null;\n if (detachedView) {\n this.applicationRef.attachView(detachedView);\n this.subComponentViews.set(component, detachedView);\n }\n\n component.onDestroy(() => {\n if (isDestroyable(injector)) {\n injector.destroy();\n }\n });\n\n return component;\n }\n\n private destroyComponents(): void {\n this.componentRef?.destroy();\n this.componentRef = undefined;\n\n this.subComponents.forEach((component) => {\n const view = this.subComponentViews.get(component);\n if (view) {\n this.applicationRef.detachView(view);\n }\n component.destroy();\n });\n this.subComponents = [];\n this.subComponentViews.clear();\n }\n}\n","import { IKlesValidator, KlesValidationKey } from '../interfaces/validator.interface';\n\nexport function flattenValidators<T>(validations: IKlesValidator<T>[]): KlesValidationKey[] {\n return validations.flatMap((v) => ('keys' in v ? v.keys : [{ name: v.name, message: v.message, messageKey: v.messageKey }]));\n}\n","import { Component, Input } from '@angular/core';\nimport { IKlesValidator, KlesValidationKey } from '../interfaces/validator.interface';\nimport { AsyncValidator, FormsModule, ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { flattenValidators } from '../utils/validation.util';\n\n@Component({\n selector: '[matErrorForm]',\n template: `\n @if (form && form.errors) {\n @for (validation of validationsKeys; track validation.name) {\n @if (form?.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n @for (validation of asyncValidationsKeys; track validation.name) {\n @if (form?.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n }\n `,\n standalone: true,\n imports: [ReactiveFormsModule, FormsModule],\n})\nexport class MatErrorFormDirective {\n validationsKeys: KlesValidationKey[] = [];\n asyncValidationsKeys: KlesValidationKey[] = [];\n\n @Input({ required: true }) form: UntypedFormGroup;\n\n @Input()\n set validations(v: IKlesValidator<Validators>[]) {\n this.validationsKeys = flattenValidators<Validators>(v ?? []);\n }\n\n @Input()\n set asyncValidations(v: IKlesValidator<AsyncValidator>[]) {\n this.asyncValidationsKeys = flattenValidators<AsyncValidator>(v ?? []);\n }\n}\n","import { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class KlesFormErrorStateMatcher implements ErrorStateMatcher {\n\n constructor() {\n }\n\n isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const isSubmitted = form && form.submitted;\n return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\n }\n\n}\n\n","import { ɵTypedOrUntyped } from '@angular/forms';\nimport { AbstractUiState } from './ui-state.abstract';\nimport { computed, Signal } from '@angular/core';\n\nexport class GroupUiState<TUiState extends { [K in keyof TUiState]: AbstractUiState<any> } = any> extends AbstractUiState<any, any> {\n public states: ɵTypedOrUntyped<TUiState, TUiState, { [key: string]: AbstractUiState<any> }> = {} as TUiState;\n\n constructor(states?: TUiState) {\n super();\n this.states = (states ?? ({} as any)) as any;\n for (const key of Object.keys(this.states as any)) {\n const state = (this.states as any)[key];\n state?.setParent(this, key);\n }\n this._value.set(this.buildInitialValue());\n }\n\n public override setValue(value: any): void {\n if (value == null) return;\n\n for (const name of Object.keys(value)) {\n const state = (this.states as any)[name];\n\n if (state) {\n state.setValue(value[name]);\n }\n }\n\n this._value.set(value);\n this.notifyParent();\n }\n\n public override patchValue(value: any): void {\n if (value == null) return;\n\n for (const name of Object.keys(value)) {\n const state = (this.states as any)[name];\n\n if (state) {\n state.patchValue(value[name]);\n }\n }\n\n const curr = this._value() ?? {};\n\n this._value.set({\n ...curr,\n ...value,\n });\n\n this.notifyParent();\n }\n\n override childValueChanged(key: string | number, value: any): void {\n const curr = this._value() ?? {};\n\n this._value.set({\n ...curr,\n [key]: value,\n });\n\n this.notifyParent();\n }\n\n public override _find(name: string | number): AbstractUiState | null {\n const key = String(name);\n const has = Object.prototype.hasOwnProperty.call(this.states as any, key);\n return has ? ((this.states as any)[key] as AbstractUiState) : null;\n }\n\n public addUiState(name: string, uiState: AbstractUiState<any>): void {\n (this.states as any)[name] = uiState;\n\n uiState.setParent(this, name);\n\n const curr = this._value() ?? {};\n\n this._value.set({\n ...curr,\n [name]: uiState.value(),\n });\n\n this.notifyParent();\n }\n\n private buildInitialValue(): any {\n const out: any = {};\n\n for (const key of Object.keys(this.states as any)) {\n out[key] = (this.states as any)[key]?.value();\n }\n\n return out;\n }\n\n}\n","import { OnInit, Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef, Inject, Signal } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormBuilder, ValidatorFn, AsyncValidatorFn, AbstractControl, FormArray, FormGroup, FormControlDirective, FormControlName, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { componentMapper } from './decorators/component.decorator';\nimport { EnumType } from './enums/type.enum';\nimport { klesFieldControlFactory, klesFieldUiFactory } from './factories/field.factory';\nimport { IKlesFieldConfig } from './interfaces/field.config.interface';\nimport { IKlesValidator } from './interfaces/validator.interface';\nimport { CommonModule } from '@angular/common';\n\nimport { MatError } from '@angular/material/form-field';\nimport { KlesDynamicFieldDirective } from './directive/dynamic-field.directive';\nimport { MatErrorFormDirective } from './directive/mat-error-form.directive';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { KlesFormErrorStateMatcher } from './matcher/form-error.matcher';\nimport { AbstractUiState } from './ui/ui-state/ui-state.abstract';\nimport { GroupUiState } from './ui/ui-state/group-ui-state';\n\nconst originFormControlNgOnChanges = FormControlDirective.prototype.ngOnChanges;\nFormControlDirective.prototype.ngOnChanges = function () {\n this.form.nativeElement = this.valueAccessor?._elementRef?.nativeElement;\n return originFormControlNgOnChanges.apply(this, arguments);\n};\n\nconst originFormControlNameNgOnChanges = FormControlName.prototype.ngOnChanges;\nFormControlName.prototype.ngOnChanges = function () {\n const result = originFormControlNameNgOnChanges.apply(this, arguments);\n this.control.nativeElement = this.valueAccessor?._elementRef?.nativeElement;\n return result;\n};\n\n@Component({\n exportAs: 'klesDynamicForm',\n selector: 'app-kles-dynamic-form',\n standalone: true,\n template: `\n <form class=\"{{ orientationClass }}\" [class.dynamic-form-nowrap]=\"direction === 'row' && wrap === false\" [ngClass]=\"formClass\" [formGroup]=\"form\" (submit)=\"onSubmit($event)\">\n @for (field of fields; track field.name) {\n @if (field.visible !== false) {\n <ng-container klesDynamicField [field]=\"field\" [group]=\"form\" [ui]=\"ui\" [siblingFields]=\"fields\" [context]=\"context\"> </ng-container>\n }\n }\n @if (form && form.errors) {\n <mat-error matErrorForm [form]=\"form\" [validations]=\"validators\" [asyncValidations]=\"asyncValidators\"></mat-error>\n }\n </form>\n `,\n styles: [\n '.dynamic-form-column { display: flex;flex-direction: column; }',\n '.dynamic-form-column > * { width: 100%; }',\n '.dynamic-form-row { display: inline-flex; flex-wrap:wrap; gap:10px; align-items: baseline}',\n '.dynamic-form-row.dynamic-form-nowrap { flex-wrap: nowrap; }',\n '.dynamic-form-row > * { width: 100%; }',\n '.dynamic-form-grid { display: grid; }',\n '.dynamic-form-inline-grid { display: inline-grid; }',\n ],\n providers: [{ provide: ErrorStateMatcher, useClass: KlesFormErrorStateMatcher }],\n imports: [CommonModule, MatErrorFormDirective, KlesDynamicFieldDirective, FormsModule, ReactiveFormsModule, MatError],\n})\nexport class KlesDynamicFormComponent implements OnInit, OnChanges {\n @Input() context: Signal<unknown | null> | null = null;\n @Input() fields: IKlesFieldConfig[] = [];\n @Input() validators: IKlesValidator<ValidatorFn>[] = [];\n @Input() asyncValidators: IKlesValidator<AsyncValidatorFn>[] = [];\n // tslint:disable-next-line: no-output-native\n @Output() submit: EventEmitter<any> = new EventEmitter<any>();\n @Output() _onLoaded = new EventEmitter();\n\n @Input() direction: 'column' | 'row' | 'grid' | 'inline-grid' = 'column';\n @Input() wrap = true;\n @Input() formClass: string | string[] | Set<string> | { [klass: string]: any };\n\n form: UntypedFormGroup;\n ui: GroupUiState;\n orientationClass: 'dynamic-form-column' | 'dynamic-form-row' | 'dynamic-form-grid' | 'dynamic-form-inline-grid' = 'dynamic-form-column';\n\n get value() {\n return this.form.value;\n }\n\n constructor(\n private fb: UntypedFormBuilder,\n private ref: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.form = this.createForm();\n this.ui = this.createUi();\n this.setOrientationClass();\n this._onLoaded.emit();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.fields?.firstChange) {\n this.updateForm();\n this.ui = this.createUi();\n this._onLoaded.emit();\n }\n\n if (!changes.validators?.firstChange && this.form) {\n this.form.setValidators(this.validators.map((v) => v.validator));\n }\n\n if (!changes.asyncValidators?.firstChange && this.form) {\n this.form.setAsyncValidators(this.asyncValidators.map((v) => v.validator));\n }\n\n if (!changes.direction?.firstChange) {\n this.orientationClass = this.direction === 'row' ? 'dynamic-form-row' : 'dynamic-form-column';\n }\n }\n\n onSubmit(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n if (this.form.valid) {\n this.submit.emit(this.form.getRawValue());\n } else {\n this.validateAllFormFields(this.form);\n }\n }\n\n private setOrientationClass() {\n switch (this.direction) {\n case 'column':\n this.orientationClass = 'dynamic-form-column';\n break;\n case 'row':\n this.orientationClass = 'dynamic-form-row';\n break;\n case 'grid':\n this.orientationClass = 'dynamic-form-grid';\n break;\n case 'inline-grid':\n this.orientationClass = 'dynamic-form-inline-grid';\n break;\n }\n }\n\n private updateForm() {\n Object.keys(this.form.controls)\n .filter((key) => {\n return !this.fields.map((field) => field.name).includes(key);\n })\n .forEach((key) => {\n this.form.removeControl(key);\n });\n\n this.fields\n // .filter(field => !this.form.controls[field.name])\n .forEach((field) => {\n if (field.type === EnumType.lineBreak) {\n return;\n }\n\n if (this.form.controls[field.name]) {\n const control = this.updateControl(field, this.form.controls[field.name]);\n this.form.setControl(field.name, control, { emitEvent: false });\n } else {\n const control = this.createControl(field);\n if (control) {\n this.form.addControl(field.name, control);\n }\n }\n });\n }\n\n private updateControl(field: IKlesFieldConfig, control: AbstractControl): AbstractControl {\n if (field.type === EnumType.array) {\n const array = control as FormArray;\n /*TODO*/\n return array;\n } else if (field.type === EnumType.group) {\n const group = control as FormGroup;\n if (field.collections && Array.isArray(field.collections)) {\n field.collections.forEach((subfield) => {\n if (group.controls[subfield]) {\n control = this.updateControl(subfield, group.controls[subfield]);\n } else {\n control = this.createControl(subfield);\n }\n if (control) {\n group.setControl(subfield.name, control, { emitEvent: false });\n }\n });\n }\n return group;\n } else {\n // control.setValidators(this.bindValidations(field.validations || []));\n // control.setAsyncValidators(this.bindAsyncValidations(field.asyncValidations || []));\n // if (field.value && control.value !== field.value) {\n // control.setValue(field.value);\n // }\n return control;\n }\n }\n\n private createControl(field: IKlesFieldConfig): AbstractControl {\n if (field.type) {\n return componentMapper.find((c) => c.type === field.type)?.factory ? componentMapper.find((c) => c.type === field.type)?.factory(field, this.ref) : klesFieldControlFactory(field, this.ref);\n } else {\n return componentMapper.find((c) => c.component === field.component)?.factory ? componentMapper.find((c) => c.component === field.component)?.factory(field, this.ref) : klesFieldControlFactory(field, this.ref);\n }\n }\n\n private createUiState(field: IKlesFieldConfig): AbstractUiState {\n if (field.type) {\n return componentMapper.find((c) => c.type === field.type)?.ui ? componentMapper.find((c) => c.type === field.type)?.ui(field) : klesFieldUiFactory(field);\n } else {\n return componentMapper.find((c) => c.component === field.component)?.ui ? componentMapper.find((c) => c.component === field.component)?.ui(field) : klesFieldUiFactory(field);\n }\n }\n\n private createForm() {\n const group = this.fb.group({});\n\n this.fields.forEach((field) => {\n const control = this.createControl(field);\n if (control) {\n group.addControl(field.name, control);\n }\n });\n\n group.setValidators(this.validators.map((v) => v.validator));\n group.setAsyncValidators(this.asyncValidators.map((v) => v.validator));\n\n return group;\n }\n\n private validateAllFormFields(formGroup: UntypedFormGroup) {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n control.markAsTouched({ onlySelf: true });\n });\n }\n\n private createUi() {\n const uiGroup = new GroupUiState();\n\n this.fields.forEach((field) => {\n const uiState = this.createUiState(field);\n if (uiState) {\n uiGroup.addUiState(field.name, uiState);\n }\n });\n\n return uiGroup;\n }\n}\n","import { Directive, Input, OnInit, ViewContainerRef, ComponentRef, Type, OnChanges, SimpleChanges, Injector } from '@angular/core';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { FIELD } from '../token';\n\n@Directive({\n selector: '[klesComponent]',\n standalone: true,\n})\nexport class KlesComponentDirective implements OnInit, OnChanges {\n @Input() component: Type<any>;\n @Input() value: any;\n @Input() field?: IKlesFieldConfig;\n\n componentRef: ComponentRef<any>;\n\n constructor(private container: ViewContainerRef) {}\n\n ngOnInit() {\n this.buildComponent();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.component && !changes.component.isFirstChange()) {\n this.component = changes.component.currentValue;\n this.buildComponent();\n }\n if (changes.value && !changes.value.isFirstChange()) {\n this.value = changes.value.currentValue;\n this.componentRef.instance.value = this.value;\n }\n }\n\n buildComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n const options = {\n providers: [\n {\n provide: FIELD,\n useValue: this.field,\n },\n ],\n };\n\n const injector: Injector = Injector.create(options);\n\n this.componentRef = this.container.createComponent(this.component, { injector });\n this.componentRef.instance.component = this.component;\n this.componentRef.instance.value = this.value;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatListModule } from '@angular/material/list';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { PortalModule } from '@angular/cdk/portal';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatSliderModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MatSidenavModule,\n MatBadgeModule,\n MatListModule,\n MatGridListModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatRadioModule,\n MatDatepickerModule,\n MatChipsModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatCardModule,\n MatMenuModule,\n MatTabsModule,\n CdkTableModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatDialogModule,\n MatAutocompleteModule,\n MatProgressBarModule,\n MatSortModule,\n MatExpansionModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatTreeModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatButtonToggleModule,\n PortalModule\n ],\n\n exports: [\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MatSidenavModule,\n MatBadgeModule,\n MatListModule,\n MatGridListModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatRadioModule,\n MatDatepickerModule,\n MatChipsModule,\n MatTooltipModule,\n MatTableModule,\n MatPaginatorModule,\n MatCardModule,\n MatMenuModule,\n MatTabsModule,\n CdkTableModule,\n MatProgressSpinnerModule,\n MatCheckboxModule,\n MatDialogModule,\n MatAutocompleteModule,\n MatProgressBarModule,\n MatSortModule,\n MatExpansionModule,\n MatNativeDateModule,\n MatSnackBarModule,\n MatTreeModule,\n MatSliderModule,\n MatSlideToggleModule,\n ScrollingModule,\n CdkScrollable,\n MatButtonToggleModule,\n PortalModule\n ],\n providers: [\n MatDatepickerModule,\n MatDialogModule\n ]\n})\n\nexport class MaterialModule { }\n","import { AfterViewInit, Directive, HostBinding, OnDestroy, OnInit, Signal, ViewContainerRef, computed, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IKlesField } from '../interfaces/field.interface';\nimport type { IKlesFieldConfig, IKlesFieldUi } from '../interfaces/field.config.interface';\nimport { FIELD, GROUP, SIBLING_FIELDS, GROUP_UI, FIELD_CONTEXT } from '../token';\nimport { FormGroup } from '@angular/forms';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\n\n@Directive()\nexport abstract class KlesFieldAbstract<TContext = unknown> implements IKlesField, OnInit, AfterViewInit, OnDestroy {\n public readonly field = inject<IKlesFieldConfig>(FIELD);\n public readonly group = inject<FormGroup<any>>(GROUP);\n public readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n public readonly ui = inject<GroupUiState>(GROUP_UI, { optional: true });\n public readonly context = inject(FIELD_CONTEXT, { optional: true }) as Signal<TContext | null> | null;\n\n protected readonly fieldUi = computed(() => this.ui?.get(this.field.name)?.value());\n\n protected readonly resolvedFieldUi = computed<IKlesFieldUi>(() => {\n const fieldUi = this.fieldUi() ?? {};\n\n const resolvedUi =\n this.field.resolveUi?.({\n context: this.context?.() ?? null,\n field: this.field,\n group: this.group,\n siblingFields: this.siblingFields,\n }) ?? {};\n\n return {\n ...fieldUi,\n ...resolvedUi,\n };\n });\n\n public readonly appearance = computed(() => this.resolvedFieldUi()?.appearance);\n public readonly inputType = computed(() => this.resolvedFieldUi()?.inputType);\n public readonly min = computed(() => this.resolvedFieldUi()?.min);\n public readonly max = computed(() => this.resolvedFieldUi()?.max);\n public readonly maxLength = computed(() => this.resolvedFieldUi()?.maxLength ?? 524288);\n public readonly step = computed(() => this.resolvedFieldUi()?.step);\n public readonly ngClass = computed(() => this.resolvedFieldUi()?.ngClass);\n public readonly ngStyle = computed(() => this.resolvedFieldUi()?.ngStyle);\n public readonly indeterminate = computed(() => this.resolvedFieldUi()?.indeterminate ?? false);\n public readonly color = computed(() => this.resolvedFieldUi()?.color);\n public readonly icon = computed(() => this.resolvedFieldUi()?.icon);\n public readonly iconSvg = computed(() => this.resolvedFieldUi()?.iconSvg);\n public readonly buttonAppearance = computed(() => this.resolvedFieldUi()?.buttonAppearance);\n public readonly label = computed(() => this.resolvedFieldUi()?.label ?? this.field.label);\n public readonly hint = computed(() => this.resolvedFieldUi()?.hint ?? this.field.hint);\n public readonly placeholder = computed(() => this.resolvedFieldUi()?.placeholder ?? this.field.placeholder);\n public readonly tooltip = computed(() => this.resolvedFieldUi()?.tooltip ?? this.field.tooltip);\n public readonly imageUrl = computed(() => this.resolvedFieldUi()?.imageUrl);\n public readonly imageAlt = computed(() => this.resolvedFieldUi()?.imageAlt ?? this.label());\n\n protected readonly viewRef = inject(ViewContainerRef);\n\n @HostBinding('attr.klesDirective') directive: any;\n\n protected _onDestroy = new Subject<void>();\n\n constructor() {\n if (this.field.directive) {\n this.directive = new this.field.directive(this.viewRef, this);\n }\n }\n\n ngOnInit(): void {\n if (this.field.valueChanges) {\n this.field.valueChanges(this.field, this.group, this.siblingFields);\n }\n\n this.group.controls[this.field.name]?.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((val) => {\n if (this.field.valueChanges) {\n this.field.valueChanges(this.field, this.group, this.siblingFields, val);\n }\n });\n\n if (this.directive) {\n this.directive.ngOnInit();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.directive && this.directive.ngAfterViewInit) {\n this.directive?.ngAfterViewInit();\n }\n\n if (this.field.autofocus) {\n setTimeout(() => {\n (<any>this.group.controls[this.field.name])?.nativeElement.focus();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.directive?.ngOnDestroy();\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n applyPipeTransform() {\n if (this.group && this.field) {\n const control = this.group.controls[this.field.name];\n if (control) {\n const val = this.group.controls[this.field.name].value;\n if (this.field.pipeTransform) {\n this.field.pipeTransform.forEach((p) => {\n let pipeVal = control.value;\n if (p.options) {\n p.options.forEach((opt) => {\n pipeVal = p.pipe.transform(val, opt);\n });\n } else {\n pipeVal = p.pipe.transform(val);\n }\n control.patchValue(pipeVal, { onlySelf: true, emitEvent: false });\n });\n }\n }\n }\n }\n\n isPending() {\n return this.group.controls[this.field.name].pending || this.field.pending;\n }\n\n onFocus() {\n if (this.field?.onFocus) {\n this.field.onFocus(this.field, this.group);\n }\n }\n\n onBlur() {\n if (this.field?.onBlur) {\n this.field.onBlur(this.field, this.group);\n }\n }\n\n public triggerAction(actionId: string, originalEvent: Event, value?: unknown): void {\n originalEvent.stopPropagation();\n\n this.field.onAction?.({\n actionId,\n value,\n context: this.context?.() ?? null,\n field: this.field,\n group: this.group,\n originalEvent,\n });\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-label',\n template: `\n <div [formGroup]=\"group\">\n <input matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"{ color: 'inherit' }\" [formControlName]=\"field.name\" [placeholder]=\"placeholder()\" [type]=\"inputType()\" />\n </div>\n `,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatTooltip, MatInputModule],\n})\nexport class KlesFormLabelComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n constructor() {\n super();\n this.group.controls[this.field.name].disable({ emitEvent: false });\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, AfterViewInit, Injector, Input } from '@angular/core';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { IKlesValidator, KlesValidationKey } from '../interfaces/validator.interface';\nimport { AsyncValidator, Validators } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { flattenValidators } from '../utils/validation.util';\n\n@Component({\n selector: '[matErrorMessage]',\n template: `\n @for (validation of validationsKeys; track validation.name) {\n @if (inputRef?.ngControl.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n @for (validation of asyncValidationsKeys; track validation.name) {\n @if (inputRef?.ngControl.hasError(validation.name) && validation.message) {\n {{ validation.message }}\n }\n }\n `,\n standalone: true,\n imports: [ReactiveFormsModule],\n})\nexport class MatErrorMessageDirective implements AfterViewInit {\n validationsKeys: KlesValidationKey[] = [];\n asyncValidationsKeys: KlesValidationKey[] = [];\n\n @Input()\n set validations(v: IKlesValidator<Validators>[]) {\n this.validationsKeys = flattenValidators<Validators>(v ?? []);\n }\n\n @Input()\n set asyncValidations(v: IKlesValidator<AsyncValidator>[]) {\n this.asyncValidationsKeys = flattenValidators<AsyncValidator>(v ?? []);\n }\n\n inputRef: MatFormFieldControl<MatFormFieldControl<any>>;\n\n constructor(private _inj: Injector) {}\n\n ngAfterViewInit() {\n let container = this._inj.get(MatFormField, null, { optional: true });\n this.inputRef = container?._control;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KlesDynamicFormIntl {\n loading = 'Loading';\n selectAll = 'Select all';\n clearSearch = 'clear';\n search= 'search'\n}\n","import { KlesFieldAbstract } from './field.abstract';\nimport { OnInit, Component, OnDestroy, signal, ViewContainerRef, computed, inject } from '@angular/core';\nimport { combineLatest, concat, Observable, of, Subject } from 'rxjs';\nimport { startWith, map, switchMap, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { MatIconModule } from '@angular/material/icon';\n\n@FieldMapper({ type: EnumType.input })\n@Component({\n selector: 'kles-form-input',\n template: `\n <mat-form-field [formGroup]=\"group\" [color]=\"color()\" [subscriptSizing]=\"field.subscriptSizing\" class=\"form-element\" [appearance]=\"appearance()\" class=\"field-bottom\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n @if (icon()) {\n <mat-icon matPrefix>{{ icon() }}</mat-icon>\n }\n\n @if (field.autocomplete) {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [matAutocomplete]=\"auto\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn.bind(this)\" [panelWidth]=\"this.field.panelWidth\">\n @if (filteredOption$ | async; as filteredOption) {\n @if (filteredOption.loading) {\n <mat-option disabled>\n <div class=\"loadingSelect\">\n {{ intl.loading }}...\n <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\n </div>\n </mat-option>\n } @else {\n @if (!field.autocompleteComponent) {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n {{ field.property ? option[field.property] : option }}\n </mat-option>\n }\n } @else {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"option\" [field]=\"field\"> </ng-container>\n </mat-option>\n }\n }\n }\n }\n </mat-autocomplete>\n } @else {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n @if (field.subComponents || field.clearable || isPending()) {\n <div matSuffix class=\"suffix\">\n @if (isPending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"21\"></mat-spinner>\n }\n @if (field.subComponents || field.clearable) {\n <ng-content></ng-content>\n }\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss', '../styles/loading-select.style.scss'],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatAutocompleteModule, MatTooltipModule, MatProgressSpinnerModule, MatOptionModule, MatError, MatErrorMessageDirective, KlesComponentDirective, MatIconModule],\n})\nexport class KlesFormInputComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n filteredOption$!: Observable<{ loading: boolean; options: any[] }>;\n options$!: Observable<{ loading: boolean; options: any[] }>;\n private isFocused = new Subject<boolean>();\n isLoading = signal(false);\n\n public intl = inject(KlesDynamicFormIntl);\n\n constructor() {\n super();\n if (this.maxLength() === undefined) {\n this.ui?.get(this.field.name)?.patchValue({ maxLength: 524288 }); // Max default input W3C\n }\n }\n\n ngOnInit(): void {\n if (this.field.lazy) {\n this.options$ = this.isFocused.pipe(\n distinctUntilChanged(),\n filter((isFocused) => isFocused),\n switchMap((isFocused) => {\n if (isFocused) {\n let obs$: Observable<any[]>;\n if (this.field.options instanceof Observable) {\n obs$ = this.field.options;\n } else if (this.field.options instanceof Function) {\n obs$ = this.field.options();\n } else {\n obs$ = of(this.field.options ?? []);\n }\n return concat(\n of({ loading: true, options: [] }),\n obs$.pipe(\n map((options: any[]) => {\n return { loading: false, options };\n }),\n ),\n );\n } else {\n return of({ loading: false, options: [] });\n }\n }),\n );\n } else {\n if (this.field.options instanceof Observable) {\n this.options$ = concat(\n of({ loading: true, options: [] }),\n this.field.options.pipe(\n map((options: any[]) => {\n return { loading: false, options };\n }),\n ),\n );\n } else if (this.field.options instanceof Function) {\n this.options$ = concat(\n of({ loading: true, options: [] }),\n this.field.options().pipe(\n map((options: any[]) => {\n return { loading: false, options };\n }),\n ),\n );\n } else {\n this.options$ = of({ loading: false, options: this.field.options });\n }\n }\n\n this.filteredOption$ = concat(\n combineLatest([this.group.get(this.field.name)?.valueChanges.pipe(startWith('')) ?? of(''), this.options$]).pipe(\n map(([data, response]) => {\n if (response.loading) {\n return response;\n } else {\n return { loading: false, options: data && response.options ? this.filterData(data, response.options) : response.options };\n }\n }),\n ),\n );\n\n super.ngOnInit();\n }\n\n onFocus() {\n if (this.field.autocomplete && this.field.lazy) {\n this.isFocused.next(true);\n }\n\n super.onFocus();\n }\n\n private filterData(value: any, options: any[]): any[] {\n let filterValue;\n\n if (typeof value === 'string' && Object.prototype.toString.call(value) === '[object String]') {\n filterValue = value.toLowerCase();\n } else {\n filterValue = value[this.field.property].toLowerCase();\n }\n\n if (this.field.property) {\n return options.filter((option) => option[this.field.property].toLowerCase().indexOf(filterValue) === 0);\n }\n return options.filter((option) => option.toLowerCase().indexOf(filterValue) === 0);\n }\n\n displayFn(value: any) {\n if (this.field.displayWith) {\n return this.field.displayWith(value);\n } else {\n if (value && this.field && this.field.property) {\n return value[this.field.property] ? value[this.field.property] : '';\n }\n return value ? value : '';\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatError, MatFormField, MatFormFieldModule, MatHint, MatLabel } from '@angular/material/form-field';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInput, MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-datepicker',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" class=\"margin-top\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <input matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [matDatepicker]=\"picker\" [formControlName]=\"field.name\" [placeholder]=\"placeholder()\" [min]=\"min()\" [max]=\"max()\" />\n <div matSuffix class=\"suffix\">\n <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n <ng-content></ng-content>\n </div>\n <mat-datepicker #picker></mat-datepicker>\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}', '.suffix { display: flex; flex-direction: row}'],\n standalone: true,\n imports: [CommonModule, MatErrorMessageDirective, MatFormFieldModule, MatInputModule, MatTooltipModule, MatError, MatHint, MatDatepickerModule, ReactiveFormsModule, MatTooltip, MatLabel, MatFormField, MatInput],\n})\nexport class KlesFormDateComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { Observable, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioButton, MatRadioGroup } from '@angular/material/radio';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'kles-form-radiobutton',\n template: `\n <div [formGroup]=\"group\">\n <label class=\"radio-label-padding\">{{label()}}</label>\n <mat-radio-group [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [formControlName]=\"field.name\">\n @for (item of options$ | async; track item) {\n <mat-radio-button [value]=\"item\">{{item}}</mat-radio-button>\n }\n </mat-radio-group>\n </div>\n`,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatRadioButton, MatRadioGroup, ReactiveFormsModule, MatTooltip],\n})\nexport class KlesFormRadioComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n options$: Observable<any[]>;\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options;\n }\n else if (this.field.options instanceof Function) {\n this.options$ = this.field.options();\n }\n else {\n this.options$ = of(this.field.options);\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}","import { Component, computed, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@FieldMapper({ type: EnumType.checkbox })\n@Component({\n selector: 'kles-form-checkbox',\n template: `\n <div [formGroup]=\"group\">\n <mat-checkbox [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [indeterminate]=\"indeterminate()\" (change)=\"onChange($event)\" [color]=\"color()\" [formControlName]=\"field.name\">{{ label() }}</mat-checkbox>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatCheckbox, MatTooltip],\n})\nexport class KlesFormCheckboxComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n onChange(e: MatCheckboxChange) {\n this.ui?.get(this.field.name)?.patchValue({ indeterminate: false });\n }\n}\n","import { AbstractControl, FormArray, FormControl, FormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\nimport { v4 as uuidv4 } from 'uuid';\nimport { componentMapper } from \"../decorators/component.decorator\";\nimport { klesFieldControlFactory } from \"../factories/field.factory\";\n\nexport class KlesFormArray extends KlesFormControl {\n\n public create(): AbstractControl<any, any> {\n const array = new FormArray([], {\n validators: this.bindValidations(this.field.validations || []),\n asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n updateOn: this.field.updateOn || 'change'\n });\n\n if (this.field.value && Array.isArray(this.field.value)) {\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.value.forEach(val => {\n const line = { ...val, _id: val?._id || uuidv4() };\n const group = new FormGroup({ _id: new FormControl(line._id) });\n this.field.collections?.forEach(subfield => {\n const data = line[subfield.name] || null;\n let control;\n if (subfield.type) {\n control = componentMapper.find(c => c.type === subfield.type)?.factory({ ...subfield, ...(data && { value: data }) }, this.ref)\n || klesFieldControlFactory({ ...subfield, ...(data && { value: data }) }, this.ref);\n } else {\n control = componentMapper.find(c => c.component === subfield.component)?.factory({ ...subfield, ...(data && { value: data }) }, this.ref)\n || klesFieldControlFactory({ ...subfield, ...(data && { value: data }) }, this.ref);\n }\n group.addControl(subfield.name, control);\n });\n array.push(group);\n });\n }\n } else {\n const group = new FormGroup({ _id: new FormControl(uuidv4()) });\n this.field.collections?.forEach(subfield => {\n let control;\n if (subfield.type) {\n control = componentMapper.find(c => c.type === subfield.type)?.factory({ ...subfield }, this.ref)\n || klesFieldControlFactory({ ...subfield }, this.ref);\n } else {\n control = componentMapper.find(c => c.component === subfield.component)?.factory({ ...subfield }, this.ref)\n || klesFieldControlFactory({ ...subfield }, this.ref);\n\n }\n group.addControl(subfield.name, control);\n });\n array.push(group);\n }\n\n\n if (this.field.disabled) {\n array.disable();\n }\n\n\n return array;\n }\n}\n","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { UntypedFormGroup, UntypedFormArray, UntypedFormBuilder, ValidatorFn, Validators, AsyncValidatorFn, ReactiveFormsModule } from '@angular/forms';\nimport { IKlesValidator } from '../interfaces/validator.interface';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { KlesFormArray } from '../controls/array.control';\nimport { cloneDeep } from 'lodash';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\n\nimport { MatError } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { MatIconButton } from '@angular/material/button';\n\n@FieldMapper({ type: 'listfield', factory: (field) => new KlesFormArray(field).create() })\n@Component({\n selector: 'kles-form-listfield',\n template: `\n <div [formGroup]=\"group\" class=\"form-element\">\n <div class=\"label\">\n {{ label() }}\n <button matIconButton color=\"primary\" (click)=\"addField()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n\n <div class=\"dynamic-form\" [formGroupName]=\"field.name\">\n @for (subGroup of formArray.controls; track subGroup.value._id; let idx = $index) {\n <div class=\"subfields\">\n @for (subfield of collections[idx]; track subfield.name) {\n <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [siblingFields]=\"collections[idx]\" [context]=\"context\"> </ng-container>\n }\n @if (collections[idx]) {\n <button matIconButton (click)=\"deleteField(idx)\" color=\"primary\">\n <mat-icon>delete_outlined</mat-icon>\n </button>\n }\n </div>\n }\n @for (validation of field.validations; track validation.name) {\n <ng-container ngProjectAs=\"mat-error\">\n @if (group.get(field.name).hasError(validation.name)) {\n <mat-error>{{ validation.message }}</mat-error>\n }\n </ng-container>\n }\n @for (validation of field.asyncValidations; track validation.name) {\n <ng-container ngProjectAs=\"mat-error\">\n @if (group.get(field.name).hasError(validation.name)) {\n <mat-error>{{ validation.message }}</mat-error>\n }\n </ng-container>\n }\n </div>\n </div>\n `,\n styles: [\n '.subfields {display: flex; flex-direction: row; gap:5px}',\n `\n .label {\n display: flex;\n align-items: center;\n flex-direction: row;\n gap: 5px;\n }\n `,\n ],\n standalone: true,\n imports: [MatError, MatIcon, MatIconButton, KlesDynamicFieldDirective, ReactiveFormsModule],\n})\nexport class KlesFormListFieldComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n formArray!: UntypedFormArray;\n collections: IKlesFieldConfig[][] = [];\n\n private fb = inject(UntypedFormBuilder);\n\n ngOnInit(): void {\n this.formArray = this.group.controls[this.field.name] as UntypedFormArray;\n\n this.collections = this.formArray?.controls?.map(() => {\n return this.field.collections ? cloneDeep(this.field.collections) : [];\n });\n\n super.ngOnInit();\n }\n\n private createFormGroup(): UntypedFormGroup {\n const group = this.fb.group({});\n this.field.collections?.forEach((item: any) => {\n const control = this.fb.control(null, this.bindValidations(item.validations || []), this.bindAsyncValidations(item.asyncValidations || []));\n group.addControl(item.name, control);\n });\n return group;\n }\n\n deleteField(index: number) {\n this.collections.splice(index, 1);\n this.formArray.removeAt(index);\n }\n\n addField() {\n this.collections.push(this.field.collections ? cloneDeep(this.field.collections) : []);\n this.formArray.push(this.createFormGroup());\n }\n\n private bindValidations(validations: IKlesValidator<ValidatorFn>[]): ValidatorFn | null {\n if (validations.length > 0) {\n const validList: ValidatorFn[] = [];\n validations.forEach((valid) => {\n validList.push(valid.validator);\n });\n return Validators.compose(validList);\n }\n return null;\n }\n\n private bindAsyncValidations(validations: IKlesValidator<AsyncValidatorFn>[]): AsyncValidatorFn | null {\n if (validations.length > 0) {\n const validList: AsyncValidatorFn[] = [];\n validations.forEach((valid) => {\n validList.push(valid.validator);\n });\n return Validators.composeAsync(validList);\n }\n return null;\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { MaterialColorPickerTriggerComponent, parseColor, readableTextColor, toCssRgba } from '@3kles/kles-material-color-picker';\n\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@Component({\n selector: 'kles-form-color',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatTooltipModule, MatErrorMessageDirective, MaterialColorPickerTriggerComponent],\n template: `\n <mat-form-field class=\"form-element\" [formGroup]=\"group\" [appearance]=\"appearance()\" [subscriptSizing]=\"field.subscriptSizing\">\n <input\n matInput\n autocomplete=\"off\"\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [placeholder]=\"placeholder()\"\n [formControlName]=\"field.name\"\n [style.background-color]=\"backgroundColor()\"\n [style.color]=\"foregroundColor()\"\n />\n\n <div matSuffix class=\"suffix\">\n <kles-material-color-picker-trigger\n [color]=\"currentColor()\"\n [outputFormat]=\"colorOption().format ?? 'hex8'\"\n [commitMode]=\"colorOption().commitMode ?? 'live'\"\n [alpha]=\"colorOption().alpha ?? true\"\n [eyeDropper]=\"colorOption().eyeDropper ?? true\"\n [saveOnOutside]=\"colorOption().saveOnOutside ?? true\"\n [fallbackColor]=\"colorOption().fallbackColor ?? '#000000ff'\"\n [presets]=\"colorOption().presets ?? []\"\n [position]=\"colorOption().position ?? 'auto'\"\n [positionOffset]=\"colorOption().positionOffset ?? 8\"\n [disabled]=\"pickerDisabled()\"\n (colorChange)=\"setColor($event)\"\n />\n @if (field.subComponents || field.clearable) {\n <ng-content />\n }\n </div>\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styleUrls: ['../styles/mat-suffix.style.scss'],\n styles: `\n :host {\n display: block;\n width: 100%;\n }\n\n mat-form-field {\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KlesFormColorComponent extends KlesFieldAbstract {\n private readonly formControl = this.group.controls[this.field.name];\n\n private readonly controlValue = toSignal(this.formControl.valueChanges, {\n initialValue: this.formControl.value,\n });\n\n private readonly controlStatus = toSignal(this.formControl.statusChanges, {\n initialValue: this.formControl.status,\n });\n\n readonly colorOption = computed(() => {\n const dynamicField = this.ui?.get(this.field.name)?.value();\n\n return dynamicField?.colorOption ?? this.field.colorOption ?? {};\n });\n\n readonly parsedColor = computed(() => {\n return parseColor(this.controlValue());\n });\n\n readonly currentColor = computed(() => {\n const value = this.controlValue();\n\n if (typeof value === 'string' && this.parsedColor()) {\n return value;\n }\n\n return this.colorOption().fallbackColor ?? '#000000ff';\n });\n\n readonly backgroundColor = computed(() => {\n const color = this.parsedColor();\n\n return color ? toCssRgba(color) : '#ffffff';\n });\n\n readonly foregroundColor = computed(() => {\n const color = this.parsedColor();\n\n return color ? readableTextColor(color) : '#000000';\n });\n\n readonly pickerDisabled = computed(() => {\n return this.controlStatus() === 'DISABLED' || this.colorOption().disable === true;\n });\n\n setColor(value: string): void {\n if (this.pickerDisabled()) {\n return;\n }\n\n this.formControl.setValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n }\n}\n","import { OnInit, Input, Injectable, Component, EventEmitter, Output } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { MatButtonAppearance } from '@angular/material/button';\n\nexport interface IButton {\n event?: any;\n uiButton?: IUIButton;\n}\n\nexport interface IUIButton {\n label?: string;\n color?: string;\n icon?: string;\n iconSvg?: string;\n disabled?: boolean;\n class?: string;\n type?: string;\n accept?: string;\n buttonAppearance?: MatButtonAppearance;\n}\n\n@Component({\n template: '',\n standalone: true,\n})\nexport abstract class KlesButtonBase implements OnInit, ControlValueAccessor {\n @Input() name = '';\n @Input() label = '';\n @Input() color = 'accent';\n @Input() icon = '';\n @Input() iconSvg = '';\n @Input() disabled = false;\n @Input('type') get type(): any {\n return this._type;\n }\n set type(value: any) {\n this._type = value || this._type;\n }\n @Input() classButton = '';\n @Input() value: IButton = {};\n @Input() tooltip?: string;\n @Input() buttonAppearance: MatButtonAppearance = 'text';\n\n @Output() action = new EventEmitter<MouseEvent>();\n\n protected _type = 'button';\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n ngOnInit(): void {}\n\n click(event: MouseEvent) {\n if (this.disabled || this._type !== 'button') {\n return;\n }\n\n if (this.value) {\n this.value.event = this.name;\n this.onChange(this.value);\n }\n\n this.action.emit(event);\n }\n\n writeValue(value: IButton): void {\n if (!value) {\n value = { event: this.name };\n }\n if (!value.event) {\n value.event = this.name;\n }\n if (value.uiButton) {\n const uiButton = value.uiButton;\n this.label = uiButton.label ? uiButton.label : this.label;\n this.color = uiButton.color ? uiButton.color : this.color;\n this.icon = uiButton.icon ? uiButton.icon : this.icon;\n this.iconSvg = uiButton.iconSvg ? uiButton.iconSvg : this.iconSvg;\n this.disabled = uiButton.disabled ? uiButton.disabled : this.disabled;\n this.classButton = uiButton.class ? uiButton.class : this.classButton;\n this.type = uiButton.type ? uiButton.type : 'submit';\n this.buttonAppearance = uiButton.buttonAppearance ? uiButton.buttonAppearance : this.buttonAppearance;\n }\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n selector: 'kles-button',\n template: `\n <button [matButton]=\"buttonAppearance\" [type]=\"type\" [ngClass]=\"classButton\" [color]=\"(color)?color:'primary'\" [disabled]=\"disabled\"\n (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n {{label}}\n\n @if (icon) {\n <mat-icon>{{icon}}</mat-icon>\n }\n\n @if (iconSvg) {\n <mat-icon svgIcon=\"{{iconSvg}}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesButtonComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatIcon, MatTooltip, MatButton]\n})\nexport class KlesButtonComponent extends KlesButtonBase implements OnInit {\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesButtonComponent } from '../forms/button-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-button',\n template: `\n <div [formGroup]=\"group\">\n <kles-button\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n [buttonAppearance]=\"buttonAppearance()\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-button>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [KlesButtonComponent, ReactiveFormsModule],\n})\nexport class KlesFormButtonComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { IButton, KlesButtonBase } from './button-control-base';\n\nimport { KlesButtonComponent } from './button-control.component';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatBadge } from '@angular/material/badge';\n\nexport interface IButtonChecker extends IButton {\n busy: boolean;\n error?: any[];\n message?: string;\n}\n\n@Component({\n selector: 'kles-button-checker',\n template: `\n @if (value.error && !value.busy) {\n <span>\n <kles-button [classButton]=\"classButton\" [name]=\"name\" [label]=\"label\" [color]=\"color\" [icon]=\"icon\" [iconSvg]=\"iconSvg\" [value]=\"value\" [tooltip]=\"tooltip\" [disabled]=\"disabled\" matBadge=\"{{ countError() }}\" (click)=\"click($event)\">\n </kles-button>\n </span>\n }\n <span style=\"text-align: center;\">\n @if (value.busy || false) {\n <span style=\"text-align: center;margin-right: 10px\">\n <mat-spinner [diameter]=\"25\"></mat-spinner>\n </span>\n } @if (value.message) {\n <span style=\"margin-right: 10px\">\n {{ value.message }}\n </span>\n }\n </span>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesButtonCheckerComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [ReactiveFormsModule, KlesButtonComponent, MatProgressSpinner, MatBadge],\n})\nexport class KlesButtonCheckerComponent extends KlesButtonBase implements ControlValueAccessor {\n value: IButtonChecker = {\n busy: false,\n error: [],\n event: false,\n };\n\n countError(): number {\n return this.value.error ? this.value.error.length : 0;\n }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesButtonCheckerComponent } from '../forms/buttonchecker-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-button-checker',\n template: `\n <div [formGroup]=\"group\">\n <kles-button-checker\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [disabled]=\"field.disabled\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-button-checker>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [KlesButtonCheckerComponent, ReactiveFormsModule],\n})\nexport class KlesFormButtonCheckerComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Input } from '@angular/core';\nimport { Component, forwardRef, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IButton, KlesButtonBase } from './button-control-base';\nimport { KlesButtonComponent } from './button-control.component';\n\n\nexport interface IButtonFile extends IButton {\n fileContent?: string | string[];\n}\n\n@Component({\n selector: 'kles-button-file',\n template: `\n <input type=\"file\" #file style=\"display: none\" [accept]=\"accept\" (change)=\"onFileSelect($event.target)\" multiple />\n <kles-button\n [classButton]=\"classButton\"\n [name]=\"name\" [label]=\"label\" [color]=\"color\"\n [icon]=\"icon\" [iconSvg]=\"iconSvg\"\n [disabled]=\"disabled\"\n [value]=\"value\" (click)=\"click($event)\">\n </kles-button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesButtonFileComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [KlesButtonComponent],\n})\nexport class KlesButtonFileComponent extends KlesButtonBase {\n @ViewChild('file') file;\n @Input() accept = '*.*';\n fileReader = new FileReader();\n fileContent: string | string[];\n value: IButtonFile = {};\n\n\n click(event) {\n if (!this.disabled) {\n this.file.nativeElement.click();\n }\n }\n\n writeValue(value: IButton): void {\n if (!value) {\n value = { event: this.name };\n }\n if (!value.event) {\n value.event = this.name;\n }\n if (value.uiButton) {\n const uiButton = value.uiButton;\n this.label = (uiButton.label) ? uiButton.label : this.label;\n this.color = (uiButton.color) ? uiButton.color : this.color;\n this.icon = (uiButton.icon) ? uiButton.icon : this.icon;\n this.iconSvg = (uiButton.iconSvg) ? uiButton.iconSvg : this.iconSvg;\n this.disabled = (uiButton.disabled) ? uiButton.disabled : this.disabled;\n this.classButton = (uiButton.class) ? uiButton.class : this.classButton;\n this.accept = (uiButton.accept) ? uiButton.accept : this.accept;\n }\n this.value = value;\n }\n\n\n onFileLoad(fileLoadedEvent) {\n const textFromFileLoaded = fileLoadedEvent.target.result;\n this.fileContent = textFromFileLoaded;\n }\n\n async onFileSelect(input: HTMLInputElement) {\n if (input.files.length > 0) {\n const files = input.files;\n let fileContent = [];\n if (files && files.length) {\n for (let i = 0; i < files.length; i++) {\n try {\n fileContent[i] = await this.readUploadedFile(files[i]);\n } catch (e) {\n }\n }\n if (fileContent.length === 1) {\n fileContent = fileContent[0];\n }\n }\n this.value.event = this.name;\n this.value.fileContent = fileContent;\n this.onChange(this.value);\n input.value = '';\n }\n }\n\n readUploadedFile(inputFile): Promise<any> {\n const temporaryFileReader = new FileReader();\n return new Promise((resolve, reject) => {\n temporaryFileReader.onerror = () => {\n temporaryFileReader.abort();\n const error: DOMException = new DOMException('Problem parsing input file.');\n reject(error);\n };\n temporaryFileReader.onload = () => {\n resolve(temporaryFileReader.result);\n };\n temporaryFileReader.readAsArrayBuffer(inputFile);\n });\n }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { KlesButtonFileComponent } from '../forms/buttonfile-control.component';\n\n@Component({\n selector: 'kles-form-button-file',\n template: `\n <div [formGroup]=\"group\">\n <kles-button-file\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [type]=\"field.buttonType\"\n [accept]=\"field.accept\"\n [disabled]=\"field.disabled\"\n >\n </kles-button-file>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [ReactiveFormsModule, KlesButtonFileComponent],\n})\nexport class KlesFormButtonFileComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n this.field.buttonType = 'button';\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-textarea',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [formGroup]=\"group\" [color]=\"color()\" class=\"form-element\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{label()}}</mat-label>\n }\n\n <textarea matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\" cdkTextareaAutosize [placeholder]=\"placeholder()\"\n [cdkAutosizeMinRows]=\"field.textareaAutoSize?.minRows\" [cdkAutosizeMaxRows]=\"field.textareaAutoSize?.maxRows\" [maxlength]=\"maxLength()\">\n </textarea>\n\n @if (field.subComponents || field.clearable) {\n <div matSuffix>\n <ng-content></ng-content>\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n standalone: true,\n imports: [CommonModule, MatErrorMessageDirective, ScrollingModule, ReactiveFormsModule, MatTooltip, MatLabel, MatFormField, TextFieldModule, MatInput]\n})\nexport class KlesFormTextareaComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'klesTransform',\n standalone: true\n})\nexport class KlesTransformPipe implements PipeTransform {\n\n transform(value: any, pipes: { pipe: PipeTransform, options?: any[] }[]): any {\n\n if (pipes && pipes.length > 0) {\n return pipes.reduce((acc, p) => {\n acc = p.pipe.transform(acc, ...(p.options || []));\n return acc;\n // if (p.options) {\n // p.options.forEach(opt => {\n // acc = p.pipe.transform(acc, opt);\n // });\n // } else {\n // acc = p.pipe.transform(acc);\n // }\n // return acc;\n }, value)\n }\n return value;\n\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.text })\n@Component({\n selector: 'kles-form-text',\n template: `\n <span [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n {{ (field.property && group.controls[field.name].value ? group.controls[field.name].value[field.property] : group.controls[field.name].value) | klesTransform: field.pipeTransform }}\n </span>\n @if (field.subComponents || isPending()) {\n <ng-content></ng-content>\n }\n `,\n styles: [\n `\n :host {\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: inherit;\n }\n `,\n ],\n standalone: true,\n imports: [CommonModule, KlesTransformPipe, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormTextComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\nimport { KlesFieldAbstract } from \"./field.abstract\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { KlesTransformPipe } from \"../pipe/transform.pipe\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatChip, MatChipListbox, MatChipOption } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\n@Component({\n selector: \"kles-form-chip\",\n template: `\n <div [formGroup]=\"group\"> \n <mat-chip-listbox>\n <mat-chip-option [color]=\"color()\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" selected [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n @if (icon()) {\n <mat-icon>{{icon()}}</mat-icon>\n }\n {{group.controls[field.name].value | klesTransform:field.pipeTransform}}\n </mat-chip-option>\n </mat-chip-listbox>\n </div>\n`,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatIcon, KlesTransformPipe, MatChipOption, MatChipListbox, MatTooltip, ReactiveFormsModule]\n})\nexport class KlesFormChipComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() { super.ngOnInit(); }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { AbstractControl, FormGroup, UntypedFormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\nimport { componentMapper } from \"../decorators/component.decorator\";\nimport { klesFieldControlFactory } from \"../factories/field.factory\";\nimport { concat, of } from \"rxjs\";\nimport { catchError, map, take } from \"rxjs/operators\";\n\nexport class KlesFormGroup extends KlesFormControl {\n\n public create(): AbstractControl<any, any> {\n const subGroup = new UntypedFormGroup({});\n\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.collections.forEach(subfield => {\n let control;\n if (subfield.type) {\n control = componentMapper.find(c => c.type === subfield.type)?.factory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }, this.ref)\n || klesFieldControlFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }, this.ref);\n } else {\n control = componentMapper.find(c => c.component === subfield.component)?.factory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] })\n || klesFieldControlFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }, this.ref);\n }\n\n subGroup.addControl(subfield.name, control);\n });\n }\n\n if (this.field.disabled) {\n subGroup.disable();\n }\n\n if (this.field.asyncValue) {\n concat(\n of({ value: null, pending: true }),\n this.field.asyncValue.pipe(\n take(1),\n catchError((err) => {\n console.error(err);\n return of(null);\n }),\n map((value) => ({ value, pending: false }))\n )\n ).subscribe((response) => {\n this.field.pending = response.pending;\n this.field.collections.forEach((col) => col.pending = response.pending);\n if (response.pending) {\n subGroup.disable({ emitEvent: false });\n } else {\n if (!this.field.disabled) {\n subGroup.enable({ emitEvent: false });\n }\n subGroup.patchValue(response.value);\n this.field.value = response.value;\n }\n });\n }\n\n return subGroup;\n }\n}\n","import { componentMapper } from '../decorators/component.decorator';\nimport { klesFieldUiFactory } from '../factories/field.factory';\nimport { KlesFormUiControl } from './default.ui';\nimport { GroupUiState } from './ui-state/group-ui-state';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\n\nexport class KlesFormUiGroup extends KlesFormUiControl {\n public create(): AbstractUiState<any, any> {\n const subGroup = new GroupUiState();\n\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.collections.forEach((subfield) => {\n let ui;\n\n if (subfield.type) {\n ui =\n componentMapper.find((c) => c.type === subfield.type)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||\n klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });\n } else {\n ui =\n componentMapper.find((c) => c.component === subfield.component)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||\n klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });\n }\n\n subGroup.addUiState(subfield.name, ui);\n });\n }\n return subGroup;\n }\n}\n","import { Component, HostBinding, OnDestroy, OnInit } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { KlesFormGroup } from '../controls/group.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\nimport { KlesFormUiGroup } from '../ui/group.ui';\n\n@FieldMapper({ type: EnumType.group, factory: (field) => new KlesFormGroup(field).create(), ui: (field) => new KlesFormUiGroup(field).create() })\n@Component({\n // host: { '[formGroup]': 'group', '[formGroupName]': 'field.name' },\n selector: 'kles-group',\n template: `\n <ng-container [formGroup]=\"group\">\n <ng-container [formGroupName]=\"field.name\">\n @if (label()) {\n <h4>\n <span [matTooltip]=\"tooltip() ?? ''\">{{ label() }}</span>\n </h4>\n }\n\n @for (subfield of field.collections; track subfield.name) {\n @if (subfield.visible !== false) {\n <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [siblingFields]=\"field.collections\" [ui]=\"subUi\" [context]=\"context\"> </ng-container>\n }\n }\n </ng-container>\n </ng-container>\n `,\n styles: [\n ' mat-form-field {width: calc(100%)}',\n ':host.group-container {display:flex; flex-direction: inherit; width: inherit; justify-content:inherit; }',\n ':host.group-container-column { display: flex;flex-direction: column; justify-content:inherit; }',\n ':host.group-container-column > * { width: 100%; }',\n ':host.group-container-row { display: inline-flex; flex-wrap:wrap; gap:10px; align-items: baseline; justify-content:inherit; }',\n ':host.group-container-row.group-container-nowrap { flex-wrap: nowrap; }',\n ':host.group-container-row > * { width: 100%; }',\n ':host.group-container-grid { display: grid; }',\n ':host.group-container-inline-grid { display: inline-grid; }',\n ],\n standalone: true,\n imports: [KlesDynamicFieldDirective, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormGroupComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n orientationClass: 'group-container' | 'group-container-column' | 'group-container-row' | 'group-container-grid' | 'group-container-inline-grid' = 'group-container';\n\n @HostBinding('class') get className() {\n return this.orientationClass === 'group-container-row' && this.field.wrap === false ? `${this.orientationClass} group-container-nowrap` : this.orientationClass;\n }\n\n subGroup!: UntypedFormGroup;\n subUi!: GroupUiState;\n\n ngOnInit() {\n this.subGroup = this.group.controls[this.field.name] as UntypedFormGroup;\n this.subUi = this.ui?.get(this.field.name) as GroupUiState;\n super.ngOnInit();\n this.setOrientationClass();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n private setOrientationClass() {\n if (this.field.direction) {\n switch (this.field.direction) {\n case 'column':\n this.orientationClass = 'group-container-column';\n break;\n case 'row':\n this.orientationClass = 'group-container-row';\n break;\n case 'grid':\n this.orientationClass = 'group-container-grid';\n break;\n case 'inline-grid':\n this.orientationClass = 'group-container-inline-grid';\n break;\n }\n }\n }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFormInputComponent } from './input.component';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule, MatOption } from '@angular/material/autocomplete';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatIcon } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { MatFormField, MatInput, MatLabel } from '@angular/material/input';\n\n@Component({\n selector: 'kles-form-input-clearable',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [formGroup]=\"group\" [color]=\"color()\" class=\"form-element\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n @if (field.autocomplete) {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [matAutocomplete]=\"auto\"\n />\n\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn.bind(this)\" [panelWidth]=\"this.field.panelWidth\">\n @if (filteredOption$ | async; as filteredOption) {\n @if (filteredOption.loading) {\n <mat-option class=\"hide-checkbox\" disabled>\n <div class=\"loadingSelect\">\n {{ intl.loading }}...\n <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\n </div>\n </mat-option>\n } @else {\n @if (!field.autocompleteComponent) {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n {{ field.property ? option[field.property] : option }}\n </mat-option>\n }\n } @else {\n @for (option of filteredOption.options; track option) {\n <mat-option [value]=\"option\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"option\" [field]=\"field\"> </ng-container>\n </mat-option>\n }\n }\n }\n }\n </mat-autocomplete>\n } @else {\n <input\n matInput\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [type]=\"inputType()\"\n [maxLength]=\"maxLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n />\n }\n @if (!group.get(field.name).disabled) {\n <button matSuffix matIconButton aria-label=\"Clear\" type=\"button\" (click)=\"group.controls[field.name].reset()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (isPending()) {\n <mat-spinner matSuffix mode=\"indeterminate\" diameter=\"17\"></mat-spinner>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n styleUrls: ['../styles/loading-select.style.scss'],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatAutocompleteModule, MatErrorMessageDirective, MatProgressSpinner, MatIcon, MatTooltip, KlesComponentDirective, MatOption, MatInput, MatLabel, MatFormField],\n})\nexport class KlesFormInputClearableComponent extends KlesFormInputComponent implements OnInit, OnDestroy {\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-icon',\n template: `\n <mat-icon [color]=\"color()\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n {{ group.controls[field.name].value }}\n </mat-icon>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatIcon, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormIconComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@FieldMapper({\n type: EnumType.lineBreak,\n factory: () => null\n})\n@Component({\n selector: 'kles-form-line-break',\n template: ``,\n styles: [\n `:host{\n flex-basis: 100%;\n display: flex;\n height:0;\n }`\n ],\n standalone: true\n})\nexport class KlesFormLineBreakComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() { super.ngOnInit(); }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'arrayFormat',\n standalone: true,\n})\nexport class ArrayFormatPipe implements PipeTransform {\n\n transform(values: any[], property?: string): string {\n if (values && Array.isArray(values)) {\n if (property) {\n return values.map(value => value[property]).filter(Boolean).join(', ');\n } else {\n return values.join(', ');\n }\n }\n return '';\n }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-link',\n template: `\n <a [href]=\"group.controls[field.name].value\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\">\n {{ label() }}\n </a>\n `,\n standalone: true,\n imports: [CommonModule, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormLinkComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'kles-form-slide-toggle',\n template: `\n <div [formGroup]=\"group\">\n <mat-slide-toggle [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [color]=\"color()\" [formControlName]=\"field.name\">{{ label() }}</mat-slide-toggle>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, MatSlideToggle, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormSlideToggleComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { SelectionChange, getMultipleValuesInSingleSelectionError } from \"@angular/cdk/collections\";\nimport { Subject } from \"rxjs\";\n\n\n\n/**\n * Copy and past from https://github.com/angular/components/blob/17.0.x/src/cdk/collections/selection-model.ts\n * (They put everything in private, thanks to angular team)\n */\nexport class KlesSelectionModel<T> {\n /** Currently-selected values. */\n private _selection = new Set<T>();\n\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n private _deselectedToEmit: T[] = [];\n\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n private _selectedToEmit: T[] = [];\n\n /** Cache for the array value of the selected items. */\n private _selected: T[] | null;\n\n /** Selected values. */\n get selected(): T[] {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n\n return this._selected;\n }\n\n /** Event emitted when the value has changed. */\n readonly changed = new Subject<any>();\n\n constructor(\n private _multiple = false,\n initiallySelectedValues?: T[],\n private _emitChanges = true,\n public compareWith?: (o1: T, o2: T) => boolean,\n ) {\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n } else {\n this._markSelected(initiallySelectedValues[0]);\n }\n\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n select(values: T[], option?: { emitEvent: boolean }): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n if (!option || option?.emitEvent) {\n this._emitChangeEvent();\n } else {\n this._selected = null;\n }\n return changed;\n }\n\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n deselect(values: T[], option?: { emitEvent: boolean }): boolean | void {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n if (!option || option?.emitEvent) {\n this._emitChangeEvent();\n } else {\n this._selected = null;\n }\n return changed;\n }\n\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n setSelection(values: T[], option?: { emitEvent: boolean }): boolean | void {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values.map((value) => this._getConcreteValue(value)));\n values.forEach(value => this._markSelected(value));\n\n oldValues\n .filter(value => !newSelectedSet.has(value))\n .forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n if (!option || option?.emitEvent) {\n this._emitChangeEvent();\n } else {\n this._selected = null;\n }\n return changed;\n }\n\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n toggle(value: T): boolean | void {\n if (Array.isArray(value)) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n } else {\n return this.isSelected(value) ? this.deselect([value]) : this.select([value]);\n }\n\n }\n\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n clear(flushEvent = true): boolean | void {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n\n /**\n * Determines whether a value is selected.\n */\n isSelected(value: T): boolean {\n return this._selection.has(this._getConcreteValue(value));\n }\n\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty(): boolean {\n return this._selection.size === 0;\n }\n\n /**\n * Determines whether the model has a value.\n */\n hasValue(): boolean {\n return !this.isEmpty();\n }\n\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate?: (a: T, b: T) => number): void {\n if (this._multiple && this.selected) {\n this._selected!.sort(predicate);\n }\n }\n\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n\n /** Emits a change event and clears the records of selected and deselected values. */\n private _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n\n /** Selects a value. */\n private _markSelected(value: T) {\n value = this._getConcreteValue(value);\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n\n /** Deselects a value. */\n private _unmarkSelected(value: T) {\n value = this._getConcreteValue(value);\n if (this.isSelected(value)) {\n this._selection.delete(value);\n\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n\n /** Clears out the selected values. */\n private _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n private _verifyValueAssignment(values: T[]) {\n if (values.length > 1 && !this._multiple) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n\n /** Whether there are queued up change to be emitted. */\n private _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n\n /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n private _getConcreteValue(inputValue: T): T {\n if (!this.compareWith) {\n return inputValue;\n } else {\n for (let selectedValue of this._selection) {\n if (this.compareWith!(inputValue, selectedValue)) {\n return selectedValue;\n }\n }\n return inputValue;\n }\n }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { takeUntil } from 'rxjs/operators';\nimport { KlesSelectionModel } from '../selection/selection-model';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\n@Component({\n selector: 'kles-form-selection-list',\n template: `\n <div class=\"margin-top\" [formGroup]=\"group\">\n <mat-selection-list [attr.id]=\"field.id\" [multiple]=\"field.multiple\" [ngClass]=\"ngClass()\" (selectionChange)=\"onSelectionChange($event)\">\n @if(options$ | async; as options){ @if(field.virtualScroll){\n <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 20\" style=\"height:100%\">\n @if (!field.autocompleteComponent) {\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } @else{\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n }\n </cdk-virtual-scroll-viewport>\n } @else{ @if (!field.autocompleteComponent) { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } } @else { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n } } } }@else{\n <mat-spinner></mat-spinner>\n }\n </mat-selection-list>\n </div>\n `,\n styles: [\n `\n mat-selection-list {\n width: 100%;\n height: 250px;\n overflow: auto;\n }\n `,\n ],\n standalone: true,\n imports: [CommonModule, KlesTransformPipe, MatProgressSpinnerModule, KlesComponentDirective, MatListModule, ScrollingModule, ReactiveFormsModule],\n})\nexport class KlesFormSelectionListComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n selection!: KlesSelectionModel<any>;\n options$!: Observable<any[]>;\n\n ngOnInit() {\n super.ngOnInit();\n\n this.selection = new KlesSelectionModel<any>(this.field.multiple || false, [], true, (o1: any, o2: any) => {\n if (this.field.property) {\n return o1?.[this.field.property] === o2?.[this.field.property];\n } else {\n return o1 === o2;\n }\n });\n\n if (this.field.value) {\n this.selection.select(Array.isArray(this.field.value) ? this.field.value : [this.field.value]);\n }\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options;\n } else if (this.field.options instanceof Function) {\n this.options$ = this.field.options();\n } else {\n this.options$ = of(this.field.options ?? []);\n }\n\n this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((value) => {\n this.selection.setSelection(Array.isArray(value) ? value : [value], { emitEvent: false });\n });\n\n this.selection.changed.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n this.group.controls[this.field.name].patchValue(change.source.selected);\n this.group.controls[this.field.name].markAllAsTouched();\n this.group.controls[this.field.name].markAsDirty();\n });\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n onSelectionChange(selection: MatSelectionListChange) {\n selection.options.forEach((option) => {\n option.selected ? this.selection.select([option.value]) : this.selection.deselect([option.value]);\n });\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n@FieldMapper({ type: EnumType.badge })\n@Component({\n selector: 'kles-form-badge',\n template: `\n <span [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" \n matBadge=\"{{group.controls[field.name].value}}\" matBadgeOverlap=\"false\" [matBadgeColor]=\"color()\">\n </span>\n`,\n standalone: true,\n \n imports: [CommonModule, MatTooltipModule, MatBadgeModule],\n})\nexport class KlesFormBadgeComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\n@Component({\n selector: 'kles-form-button-toogle-group',\n template: `\n <div [formGroup]=\"group\" class=\"form-element\">\n <mat-button-toggle-group [formControlName]=\"field.name\" [multiple]=\"field.multiple\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\">\n @for (item of options$ | async; track item) {\n <mat-button-toggle [value]=\"item\">\n {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n`,\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, KlesTransformPipe, MatButtonToggleModule],\n})\nexport class KlesFormButtonToogleGroupComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n options$: Observable<any[]>;\n\n ngOnInit() {\n super.ngOnInit();\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options;\n }\n else if (this.field.options instanceof Function) {\n this.options$ = this.field.options();\n }\n else {\n this.options$ = of(this.field.options);\n }\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { computed, Signal } from '@angular/core';\nimport { AbstractUiState } from './ui-state.abstract';\n\nexport class ArrayUiState<TItem extends AbstractUiState<any, any> = AbstractUiState<any, any>, TValue extends any[] = any[], TRawValue extends TValue = TValue> extends AbstractUiState<TValue, TRawValue> {\n public states: TItem[] = [];\n\n constructor(states?: TItem[]) {\n super();\n this.states = states ?? [];\n\n this.states.forEach((state, index) => {\n state.setParent(this, index);\n });\n\n this._value.set(this.states.map((state) => state.value()) as TValue);\n }\n\n public override setValue(value: TRawValue): void {\n if (!Array.isArray(value)) {\n return;\n }\n value.forEach((newValue: any, index: number) => {\n this.at(index)?.setValue(newValue);\n });\n\n this._value.set(value);\n this.notifyParent();\n }\n\n public override patchValue(value: Partial<TRawValue>): void {\n if (value == null) {\n return;\n }\n\n value.forEach((newValue, index) => {\n const st = this.at(index);\n if (st) {\n st.patchValue(newValue);\n }\n });\n\n const curr = this._value() ?? ([] as TValue[]);\n const next = [...curr];\n\n value.forEach((newValue, index) => {\n next[index] = {\n ...(next[index] ?? {}),\n ...(newValue as any),\n };\n });\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n override childValueChanged(key: string | number, value: any): void {\n const index = typeof key === 'number' ? key : Number(key);\n\n if (!Number.isInteger(index) || index < 0) return;\n\n const curr = this._value() ?? ([] as TValue[]);\n const next = [...curr];\n\n next[index] = value;\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n public at(index: number): AbstractUiState {\n return this.states?.[index] ?? null;\n }\n\n public override _find(name: string | number): AbstractUiState | null {\n const idx = typeof name === 'number' ? name : Number(name);\n return Number.isFinite(idx) ? this.at(idx) : null;\n }\n\n public push(control: TItem | TItem[]): void {\n const items = Array.isArray(control) ? control : [control];\n\n if (items.length === 0) {\n return;\n }\n\n for (const item of items) {\n const index = this.states.length;\n\n this.states.push(item);\n item.setParent(this, index);\n }\n\n this._value.set(this.states.map((s) => s.value()) as TValue);\n this.notifyParent();\n }\n\n public insert(index: number, state: TItem | TItem[]): void {\n const items = Array.isArray(state) ? state : [state];\n\n if (items.length === 0) {\n return;\n }\n\n const safeIndex = Math.max(0, Math.min(index, this.states.length));\n\n this.states.splice(safeIndex, 0, ...items);\n\n for (let i = safeIndex; i < this.states.length; i++) {\n this.states[i]?.setParent(this, i);\n }\n\n const curr = this._value() as any;\n const next = [...curr];\n\n next.splice(safeIndex, 0, ...items.map((item) => item.value()));\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n removeAt(index: number): void {\n if (index < 0 || index >= this.states.length) return;\n this.states.splice(index, 1);\n\n this.states.forEach((state, i) => {\n state.setParent(this, i);\n });\n\n const curr = this._value() ?? ([] as TValue[]);\n const next = [...curr];\n\n next.splice(index, 1);\n\n this._value.set(next as TValue);\n this.notifyParent();\n }\n\n clear(): void {\n this.states.length = 0;\n this._value.set([] as unknown as TValue);\n this.notifyParent();\n }\n}\n","import { componentMapper } from '../decorators/component.decorator';\nimport { klesFieldUiFactory } from '../factories/field.factory';\nimport { KlesFormUiControl } from './default.ui';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { GroupUiState } from './ui-state/group-ui-state';\nimport { ArrayUiState } from './ui-state/array-ui-state';\n\nexport class KlesFormUiArray extends KlesFormUiControl {\n public create(): AbstractUiState<any, any> {\n const array = new ArrayUiState();\n\n if (this.field.value && Array.isArray(this.field.value)) {\n if (this.field.collections && Array.isArray(this.field.collections)) {\n this.field.value.forEach(() => {\n const group = new GroupUiState();\n this.field.collections?.forEach((subfield) => {\n let control;\n if (subfield.type) {\n control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);\n } else {\n control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);\n }\n group.addUiState(subfield.name, control);\n });\n array.push(group);\n });\n }\n } else {\n const group = new GroupUiState();\n this.field.collections?.forEach((subfield) => {\n let control;\n if (subfield.type) {\n control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);\n } else {\n control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);\n }\n group.addUiState(subfield.name, control);\n });\n array.push(group);\n }\n\n return array;\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormArray } from '@angular/forms';\nimport { KlesFormArray } from '../controls/array.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { KlesFormUiArray } from '../ui/array.ui';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\nimport { ArrayUiState } from '../ui/ui-state/array-ui-state';\n\n@FieldMapper({ type: EnumType.array, factory: (field) => new KlesFormArray(field).create(), ui: (field) => new KlesFormUiArray(field).create() })\n@Component({\n selector: 'kles-array',\n template: `\n <div [formGroup]=\"group\" class=\"container\" [ngClass]=\"{ 'container-column': field.direction === 'column' }\">\n <ng-container [formArrayName]=\"field.name\">\n @for (subGroup of formArray.controls; track subGroup.value._id; let index = $index) {\n <div class=\"group-container\" [ngClass]=\"field.direction === 'column' ? 'column' : 'row'\">\n @for (subfield of field.collections; track subfield.name) {\n @if (subfield.visible !== false) {\n <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [ui]=\"subUi?.at(index)\" [siblingFields]=\"field.collections\" [context]=\"context\"> </ng-container>\n }\n }\n </div>\n }\n </ng-container>\n </div>\n `,\n styles: [\n 'mat-form-field {width: calc(100%)}',\n ':host { display:flex; flex-direction: inherit}',\n '.container { display: flex; flex-direction: inherit}',\n '.container-column {gap: 10px}',\n '.group-container {display:flex; flex-direction: inherit}',\n '.row { gap: 10px; flex-direction: row; align-items: baseline }',\n '.column { flex-direction: column; gap: 0px}',\n ],\n standalone: true,\n imports: [CommonModule, KlesDynamicFieldDirective, ReactiveFormsModule],\n})\nexport class KlesFormArrayComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n // subGroup: FormGroup\n\n formArray: UntypedFormArray;\n subUi: ArrayUiState;\n\n constructor() {\n super();\n this.formArray = this.group.controls[this.field.name] as UntypedFormArray;\n this.subUi = this.ui?.get(this.field.name) as ArrayUiState;\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { AbstractControl, FormControl, FormGroup, UntypedFormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\n\nexport class KlesFormRange extends KlesFormControl {\n\n public create(): AbstractControl<any, any> {\n const range = new FormGroup({\n start: new FormControl(this.field.value?.start, { nonNullable: this.field.nonNullable && this.field.value?.start || false }),\n end: new FormControl(this.field.value?.end, { nonNullable: this.field.nonNullable && this.field.value?.end || false }),\n }, {\n validators: this.bindValidations(this.field.validations || []),\n asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n });\n\n if (this.field.disabled) {\n range.disable();\n }\n return range;\n }\n}\n","import { Component, computed, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFormRange } from '../controls/range.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.range, factory: (field) => new KlesFormRange(field).create() })\n@Component({\n selector: 'kles-form-rangepicker',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n <mat-label>{{ label() }}</mat-label>\n\n <mat-date-range-input [formGroupName]=\"field.name\" [rangePicker]=\"picker\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [min]=\"min()\" [max]=\"max()\">\n <input matStartDate formControlName=\"start\" [placeholder]=\"placeholder()?.start ? placeholder()?.start : ''\" />\n <input matEndDate formControlName=\"end\" [placeholder]=\"placeholder()?.end ? placeholder()?.end : ''\" />\n </mat-date-range-input>\n\n <div matSuffix class=\"suffix\">\n <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n <ng-content></ng-content>\n </div>\n\n <mat-date-range-picker #picker></mat-date-range-picker>\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n styleUrls: ['../styles/mat-suffix.style.scss'],\n standalone: true,\n imports: [CommonModule, MatErrorMessageDirective, MatFormFieldModule, MatInputModule, MatDatepickerModule, MatTooltipModule, ReactiveFormsModule],\n})\nexport class KlesFormRangeComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n\n@Component({\n selector: 'kles-fab',\n template: `\n <button matFab [extended]=\"!!label\" [type]=\"type\" [ngClass]=\"classButton\" [color]=\"(color)?color:'primary'\" [disabled]=\"disabled\"\n (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n {{label}}\n\n @if (icon) {\n <mat-icon>{{icon}}</mat-icon>\n }\n\n @if (iconSvg) {\n <mat-icon svgIcon=\"{{iconSvg}}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesFabComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, MatButtonModule]\n})\nexport class KlesFabComponent extends KlesButtonBase implements OnInit {\n\n}","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { KlesFabComponent } from '../forms/fab-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-fab',\n template: `\n <div [formGroup]=\"group\">\n <kles-fab\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [label]=\"label()\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-fab>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [MatIconModule, MatTooltipModule, MatButtonModule, KlesFabComponent, ReactiveFormsModule],\n})\nexport class KlesFormFabComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n\n@Component({\n selector: 'kles-mini-fab',\n template: `\n <button matMiniFab [type]=\"type\" [ngClass]=\"classButton\" [color]=\"(color)?color:'primary'\" [disabled]=\"disabled\"\n (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n {{label}}\n\n @if (icon) {\n <mat-icon>{{icon}}</mat-icon>\n }\n\n @if (iconSvg) {\n <mat-icon svgIcon=\"{{iconSvg}}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesMiniFabComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, MatButtonModule]\n})\nexport class KlesMiniFabComponent extends KlesButtonBase implements OnInit {\n\n}","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesMiniFabComponent } from '../forms/mini-fab-control.component';\n\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'kles-form-mini-fab',\n template: `\n <div [formGroup]=\"group\">\n <kles-mini-fab\n [attr.id]=\"field.id\" [classButton]=\"ngClass()\" \n [name]=\"field.name\" [label]=\"label()\" [color]=\"color()\" \n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-mini-fab>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [KlesMiniFabComponent, ReactiveFormsModule]\n})\nexport class KlesFormMiniFabComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'kles-icon-button',\n template: `\n <button matIconButton [type]=\"type\" [ngClass]=\"classButton\" [color]=\"color ? color : 'primary'\" [disabled]=\"disabled\" (click)=\"click($event)\" [matTooltip]=\"tooltip\">\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n } @if (iconSvg) {\n <mat-icon svgIcon=\"{{ iconSvg }}\"></mat-icon>\n }\n </button>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesIconButtonComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule],\n})\nexport class KlesIconButtonComponent extends KlesButtonBase implements OnInit {}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { KlesIconButtonComponent } from '../forms/icon-button-control.component';\n\n@Component({\n selector: 'kles-form-icon-button',\n template: `\n <div [formGroup]=\"group\">\n <kles-icon-button\n [attr.id]=\"field.id\"\n [classButton]=\"ngClass()\"\n [name]=\"field.name\"\n [color]=\"color()\"\n [icon]=\"icon()\"\n [iconSvg]=\"iconSvg()\"\n [value]=\"field.value\"\n [formControlName]=\"field.name\"\n [tooltip]=\"tooltip()\"\n [type]=\"field.buttonType\"\n (action)=\"triggerAction(field.name, $event)\"\n >\n </kles-icon-button>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [ReactiveFormsModule, KlesIconButtonComponent],\n})\nexport class KlesFormIconButtonComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit(): void {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { KlesSelectionModel } from '../selection/selection-model';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { MatOption } from '@angular/material/core';\n@Component({\n selector: 'kles-form-selection-list-search',\n template: `\n <div class=\"selection-list\" [formGroup]=\"group\">\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <input matInput [placeholder]=\"placeholder()\" [formControl]=\"searchControl\" />\n <button matSuffix matIconButton aria-label=\"Clear\" (click)=\"searchControl.reset(); $event.stopPropagation()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-selection-list [attr.id]=\"field.id\" [multiple]=\"field.multiple\" [ngClass]=\"ngClass()\" (selectionChange)=\"onSelectionChange($event)\">\n @if(optionFiltered$ | async; as options){ @if(field.virtualScroll){\n <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 20\" style=\"height:100%\">\n @if (!field.autocompleteComponent) {\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } @else{\n <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n }\n </cdk-virtual-scroll-viewport>\n } @else{ @if (!field.autocompleteComponent) { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n </mat-list-option>\n } } @else { @for (item of options; track item) {\n <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n </mat-list-option>\n } } } }@else{\n <mat-spinner></mat-spinner>\n }\n </mat-selection-list>\n </div>\n `,\n styles: [\n `\n .selection-list {\n display: flex;\n flex-direction: column;\n gap: 5px;\n }\n `,\n `\n mat-selection-list {\n width: 100%;\n height: 250px;\n overflow: auto;\n flex-grow: 1;\n }\n `,\n ],\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatButtonModule, MatProgressSpinnerModule, ScrollingModule, KlesTransformPipe, KlesComponentDirective, MatListModule],\n})\nexport class KlesFormSelectionListSearchComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n selection: KlesSelectionModel<any>;\n options$: Observable<any[]>;\n searchControl = new FormControl();\n\n optionFiltered$: Observable<any[]>;\n\n ngOnInit() {\n if (!this.field.subscriptSizing) {\n this.field.subscriptSizing = 'dynamic';\n }\n super.ngOnInit();\n\n this.selection = new KlesSelectionModel<any>(this.field.multiple || false, [], true, (o1: any, o2: any) => {\n if (this.field.property) {\n return o1?.[this.field.property] === o2?.[this.field.property];\n } else {\n return o1 === o2;\n }\n });\n\n if (this.field.value) {\n this.selection.select(Array.isArray(this.field.value) ? this.field.value : [this.field.value]);\n }\n\n if (this.field.options instanceof Observable) {\n this.options$ = this.field.options.pipe(shareReplay(1));\n }\n\n this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((value) => {\n this.selection.setSelection(Array.isArray(value) ? value : [value], { emitEvent: false });\n });\n\n this.selection.changed.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n this.group.controls[this.field.name].patchValue(change.source.selected);\n this.group.controls[this.field.name].markAllAsTouched();\n this.group.controls[this.field.name].markAsDirty();\n });\n\n this.optionFiltered$ = this.searchControl.valueChanges.pipe(\n takeUntil(this._onDestroy),\n startWith(null as string),\n debounceTime(this.field.debounceTime || 0),\n distinctUntilChanged(),\n map((value) => value?.toLowerCase()),\n switchMap((value) => {\n if (this.field.options instanceof Function) {\n return this.field.options(value);\n } else {\n return (this.field.options instanceof Observable ? this.options$ : of(this.field.options)).pipe(\n map((options) => {\n if (!value) {\n return options;\n }\n return options.filter((option) => {\n return (\n (!this.field.property && option?.toString().toLowerCase().includes(value)) ||\n (this.field.property && option?.[this.field.property]?.toString().toLowerCase().includes(value)) ||\n (this.field.searchKeys && this.field.searchKeys.some((key) => option?.[key].toString().toLowerCase().includes(value)))\n );\n });\n }),\n );\n }\n }),\n );\n }\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n onSelectionChange(selection: MatSelectionListChange) {\n selection.options.forEach((option) => {\n option.selected ? this.selection.select([option.value]) : this.selection.deselect([option.value]);\n });\n }\n}\n","\nimport { Component, forwardRef, Input, AfterViewInit, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'kles-checkbox-indeterminate',\n template: `\n <mat-checkbox\n #checkbox\n [indeterminate]=\"isIndeterminate\"\n (change)=\"onCheckboxChange($event)\"\n (color)=\"color\"\n (blur)=\"onTouched()\">\n {{label}}\n </mat-checkbox>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesIndeterminateCheckboxComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [MatCheckboxModule, ReactiveFormsModule, FormsModule],\n})\nexport class KlesIndeterminateCheckboxComponent implements ControlValueAccessor, AfterViewInit {\n @Input() label: string;\n @Input() color: string;\n @ViewChild('checkbox') checkbox: MatCheckbox;\n\n isIndeterminate = false;\n private innerValue: boolean;\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n ngAfterViewInit(): void {\n // Initial update to ensure state is correct after view init\n this.updateCheckbox(this.innerValue);\n }\n\n writeValue(value: any): void {\n this.innerValue = value;\n this.updateCheckbox(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.checkbox) {\n this.checkbox.disabled = isDisabled;\n }\n }\n\n onCheckboxChange(event: any): void {\n const checked = event.checked;\n this.onChange(checked);\n this.isIndeterminate = false;\n }\n\n private updateCheckbox(value: any): void {\n if (this.checkbox) {\n if (value === -1) {\n this.isIndeterminate = true;\n this.checkbox.checked = false;\n } else {\n this.isIndeterminate = false;\n this.checkbox.checked = value;\n }\n }\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesIndeterminateCheckboxComponent } from '../forms/indeterminate-checkbox';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@FieldMapper({ type: EnumType.checkbox })\n@Component({\n selector: 'kles-form-checkbox-indeterminate',\n template: `\n <div [formGroup]=\"group\">\n <kles-checkbox-indeterminate [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [color]=\"color()\" [formControlName]=\"field.name\">{{\n label()\n }}</kles-checkbox-indeterminate>\n </div>\n `,\n styles: [],\n standalone: true,\n imports: [CommonModule, FormsModule, ReactiveFormsModule, KlesIndeterminateCheckboxComponent, MatTooltipModule],\n})\nexport class KlesFormCheckboxIndeterminateComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n}\n","\nimport { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'kles-file-control',\n template: ` <input [accept]=\"accept\" [multiple]=\"multiple\" (change)=\"onFileSelected($event.target)\" type=\"file\" /> `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesFileControlComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [FormsModule],\n})\nexport class KlesFileControlComponent implements ControlValueAccessor {\n @Input() disabled = false;\n @Input() accept = '*.*';\n @Input() multiple = false;\n\n value: { name: string; content: ArrayBuffer }[];\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(obj: any): void {}\n\n async onFileSelected(input: HTMLInputElement): Promise<void> {\n if (input.files.length > 0) {\n const file: FileList = input.files;\n let files = [];\n\n for (let i = 0; i < file.length; i++) {\n const currentFile: File = file.item(i);\n\n files[i] = { name: currentFile.name, content: await currentFile.arrayBuffer() };\n }\n\n this.value = files;\n this.onChange(this.value);\n } else {\n this.value = null;\n this.onChange(this.value);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { KlesFieldAbstract } from './field.abstract';\nimport { Component } from '@angular/core';\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { KlesFileControlComponent } from '../forms/file-control.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.file })\n@Component({\n selector: 'kles-form-file',\n template: `\n <div [formGroup]=\"group\">\n <kles-file-control [attr.id]=\"field.id\" [formControlName]=\"field.name\" [accept]=\"field.accept\" [disabled]=\"field.disabled\" [multiple]=\"field.multiple\"></kles-file-control>\n </div>\n `,\n styles: ['mat-form-field {width: calc(100%)}'],\n standalone: true,\n imports: [KlesFileControlComponent, FormsModule, ReactiveFormsModule],\n})\nexport class KlesFormFileComponent extends KlesFieldAbstract {}\n","import { Component } from \"@angular/core\";\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from \"@angular/common\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormField, MatLabel, MatHint, MatError, MatSuffix } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatErrorMessageDirective } from \"../directive/mat-error-message.directive\";\nimport { KlesMaterialDatepickerModule } from \"@3kles/kles-material-datepicker\";\n\n@Component({\n selector: 'kles-form-datetimepicker',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" class=\"margin-top\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <input matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"field.ngClass\" [matDatepicker]=\"picker\" [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\" [min]=\"field.min\" [max]=\"field.max\">\n <div matSuffix class=\"suffix\">\n <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n <ng-content></ng-content>\n </div>\n\n <kles-mat-datepicker #picker [hasBackdrop]=\"false\"></kles-mat-datepicker>\n\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n </mat-form-field>\n `,\n styles: [\n 'mat-form-field { width: calc(100%); }',\n '.suffix { display: flex; flex-direction: row; }'\n ],\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormField,\n MatLabel,\n MatHint,\n MatError,\n MatSuffix,\n MatInput,\n MatTooltip,\n MatDatepickerModule,\n MatErrorMessageDirective,\n KlesMaterialDatepickerModule\n ]\n})\nexport class KlesFormDateTimeComponent extends KlesFieldAbstract {\n}\n","import { Component, inject, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { Clipboard, ClipboardModule } from '@angular/cdk/clipboard';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IKlesField } from '../../interfaces/field.interface';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\nimport { FIELD, GROUP, SIBLING_FIELDS } from '../../token';\n\n@Component({\n selector: 'kles-form-copy',\n template: `\n <button #tooltip=\"matTooltip\" matIconButton color=\"primary\" type=\"button\" (click)=\"copy($event)\" [matTooltipDisabled]=\"true\" [matTooltip]=\"tooltipText\" matTooltipPosition=\"above\">\n <mat-icon>content_copy</mat-icon>\n </button>\n `,\n standalone: true,\n imports: [MatIconModule, MatButtonModule, MatTooltipModule, ClipboardModule],\n})\nexport class KlesFormCopyComponent implements IKlesField {\n @ViewChild('tooltip') tooltip: MatTooltip;\n\n readonly field = inject<IKlesFieldConfig>(FIELD);\n readonly group = inject<FormGroup<any>>(GROUP);\n readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n tooltipText: string;\n\n constructor(private clipBoard: Clipboard) {\n this.tooltipText = this.field.copyTooltip || '';\n }\n\n copy(event): void {\n event.stopPropagation();\n const copyText = (this.field.property ? this.group.controls[this.field.name].value?.[this.field.property] : this.group.controls[this.field.name].value) || '';\n this.clipBoard.copy(copyText);\n\n this.tooltip.disabled = false;\n this.tooltip.show();\n setTimeout(() => {\n this.tooltip.disabled = true;\n }, 1000);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { defer, Observable, of } from 'rxjs';\n\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { KlesFieldAbstract } from './field.abstract';\n\n/**\n * Condition statique ou calculée à partir du contexte du field.\n */\nexport type KlesActionMenuCondition<TContext = unknown> = boolean | ((context: TContext | null, field: IKlesFieldConfig, group: UntypedFormGroup) => boolean);\n\n/**\n * Configuration d'une entrée du menu.\n *\n * Le callback n'est pas placé ici :\n * toutes les actions sont gérées par field.onAction.\n */\nexport interface KlesActionMenuItem<TContext = unknown> {\n id: string;\n label: string;\n\n icon?: string;\n iconSvg?: string;\n\n visible?: KlesActionMenuCondition<TContext>;\n disabled?: KlesActionMenuCondition<TContext>;\n\n dividerBefore?: boolean;\n\n color?: 'default' | 'warn';\n}\n\n/**\n * Configuration spécialisée du field action-menu.\n */\nexport interface KlesActionMenuFieldConfig<TContext = unknown> extends IKlesFieldConfig {\n options?: KlesActionMenuItem<TContext>[] | Observable<KlesActionMenuItem<TContext>[]> | ((value?: string, group?: { [key: string]: any }) => Observable<KlesActionMenuItem<TContext>[]>);\n\n menuXPosition?: 'before' | 'after';\n menuYPosition?: 'above' | 'below';\n}\n\n@FieldMapper({\n type: 'actionMenu',\n})\n@Component({\n selector: 'kles-form-action-menu',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatDividerModule, MatIconModule, MatMenuModule, MatTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n matIconButton\n type=\"button\"\n [attr.id]=\"field.id\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n [matTooltip]=\"tooltip() || ''\"\n [matMenuTriggerFor]=\"actionMenu\"\n [ngClass]=\"ngClass()\"\n [ngStyle]=\"ngStyle()\"\n (click)=\"onTriggerClick($event)\"\n >\n @if (iconSvg()) {\n <mat-icon [svgIcon]=\"iconSvg()!\" />\n } @else {\n <mat-icon>\n {{ icon() || 'more_vert' }}\n </mat-icon>\n }\n </button>\n\n <mat-menu #actionMenu=\"matMenu\" [xPosition]=\"actionField.menuXPosition || 'before'\" [yPosition]=\"actionField.menuYPosition || 'below'\">\n @for (action of visibleActions(); track action.id) {\n @if (action.dividerBefore) {\n <mat-divider />\n }\n\n <button mat-menu-item type=\"button\" [disabled]=\"isDisabled(action)\" [class.kles-action-menu__warn]=\"action.color === 'warn'\" (click)=\"execute(action, $event)\">\n @if (action.iconSvg) {\n <mat-icon [svgIcon]=\"action.iconSvg\" />\n } @else if (action.icon) {\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n }\n\n <span>\n {{ action.label }}\n </span>\n </button>\n }\n </mat-menu>\n `,\n styles: `\n .kles-action-menu__warn {\n color: var(--mat-sys-error);\n }\n\n .kles-action-menu__warn mat-icon {\n color: var(--mat-sys-error);\n }\n `,\n})\nexport class KlesFormActionMenuComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {\n /**\n * Configuration du field avec le typage spécialisé.\n */\n readonly actionField = this.field as KlesActionMenuFieldConfig<TContext>;\n\n private readonly control = this.group.controls[this.field.name];\n\n private readonly controlStatus = toSignal(this.control.statusChanges, {\n initialValue: this.control.status,\n });\n\n /**\n * Options statiques ou asynchrones.\n */\n private readonly actionsSource$ = defer(() => this.resolveOptions());\n\n readonly actions = toSignal(this.actionsSource$, {\n initialValue: [] as KlesActionMenuItem<TContext>[],\n });\n\n readonly disabled = computed(() => {\n this.controlStatus();\n return this.control.disabled;\n });\n\n readonly visibleActions = computed(() => this.actions().filter((action) => this.resolveCondition(action.visible, true)));\n\n readonly ariaLabel = computed(() => this.label() || this.tooltip() || 'Actions');\n\n onTriggerClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n isDisabled(action: KlesActionMenuItem<TContext>): boolean {\n return this.disabled() || this.resolveCondition(action.disabled, false);\n }\n\n execute(action: KlesActionMenuItem<TContext>, event: MouseEvent): void {\n if (this.isDisabled(action)) {\n event.stopPropagation();\n return;\n }\n\n this.triggerAction(action.id, event, action);\n }\n\n private resolveCondition(condition: KlesActionMenuCondition<TContext> | undefined, defaultValue: boolean): boolean {\n if (typeof condition === 'function') {\n return condition(this.context?.() ?? null, this.field, this.group);\n }\n\n return condition ?? defaultValue;\n }\n\n private resolveOptions(): Observable<KlesActionMenuItem<TContext>[]> {\n const options = this.actionField.options;\n\n if (options instanceof Observable) {\n return options;\n }\n\n if (typeof options === 'function') {\n return options(undefined, this.group.getRawValue());\n }\n\n return of(options ?? []);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'app-kles-form-tile',\n standalone: true,\n imports: [CommonModule, MatTooltipModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"kles-tile\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\" [matTooltip]=\"tooltip()\">\n @if (imageUrl()) {\n <img class=\"kles-tile__image\" [src]=\"imageUrl()\" [alt]=\"imageAlt()\" />\n }\n\n <div class=\"kles-tile__content\">\n @if (displayValue(); as value) {\n <div class=\"kles-tile__label\">\n {{ value }}\n </div>\n }\n\n @if (hint()) {\n <div class=\"kles-tile__hint\">\n {{ hint() }}\n </div>\n }\n </div>\n </div>\n `,\n styles: `\n :host {\n display: flex;\n justify-content: inherit;\n }\n\n .kles-tile {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: 12px;\n padding: 8px;\n }\n\n .kles-tile__image {\n width: 36px;\n height: 36px;\n flex: 0 0 36px;\n object-fit: contain;\n }\n\n .kles-tile__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n gap: 2px;\n }\n\n .kles-tile__label {\n overflow: hidden;\n color: var(--mat-sys-on-surface);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .kles-tile__hint {\n overflow: hidden;\n color: var(--mat-sys-on-surface-variant);\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `,\n})\nexport class KlesFormTileComponent extends KlesFieldAbstract {\n private readonly control = this.group.controls[this.field.name];\n\n private readonly controlValue = toSignal(this.control.valueChanges, {\n initialValue: this.control.value,\n });\n\n readonly formattedValue = computed(() => {\n const value = this.controlValue();\n\n if (value == null) {\n return '';\n }\n\n if (this.field.displayWith) {\n return this.field.displayWith(value) ?? '';\n }\n\n if (this.field.property && typeof value === 'object') {\n return String(value[this.field.property] ?? '');\n }\n\n return String(value);\n });\n\n readonly displayValue = computed(() => this.formattedValue() || this.label() || '');\n}\n","import { ChangeDetectorRef, Component, computed, DEFAULT_CURRENCY_CODE, Directive, ElementRef, forwardRef, HostListener, inject, Input, LOCALE_ID, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesFieldAbstract } from './field.abstract';\n\n/**\n * ValueAccessor monétaire.\n *\n * La valeur du FormControl reste un number | null.\n * Seule la valeur affichée dans l'input est formatée.\n */\n@Directive({\n selector: 'input[klesCurrency]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => KlesCurrencyValueAccessorDirective),\n multi: true,\n },\n ],\n})\nexport class KlesCurrencyValueAccessorDirective implements ControlValueAccessor, OnChanges {\n /**\n * Public pour rester compatible avec le mécanisme\n * nativeElement utilisé par la librairie.\n */\n readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly renderer = inject(Renderer2);\n\n @Input() currency = 'EUR';\n @Input() locale = 'fr-FR';\n\n @Input()\n currencyDisplay: 'symbol' | 'narrowSymbol' | 'code' | 'name' = 'symbol';\n\n @Input() minimumFractionDigits?: number;\n @Input() maximumFractionDigits?: number;\n\n @Input() useGrouping = true;\n @Input() allowNegative = true;\n\n private currentValue: number | null = null;\n private focused = false;\n\n private onChange: (value: number | null) => void = () => {};\n\n private onTouched: () => void = () => {};\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.focused) {\n this.renderFormattedValue();\n }\n }\n\n writeValue(value: unknown): void {\n this.currentValue = this.normalizeModelValue(value);\n\n if (!this.focused) {\n this.renderFormattedValue();\n }\n }\n\n registerOnChange(callback: (value: number | null) => void): void {\n this.onChange = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this.onTouched = callback;\n }\n\n setDisabledState(disabled: boolean): void {\n this.renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n }\n\n @HostListener('focus')\n handleFocus(): void {\n this.focused = true;\n\n this.setInputValue(this.formatEditableValue(this.currentValue));\n }\n\n @HostListener('input', ['$event'])\n handleInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n const rawValue = input.value;\n\n if (rawValue.trim() === '') {\n this.currentValue = null;\n this.onChange(null);\n return;\n }\n\n const parsedValue = this.parseLocalizedNumber(rawValue);\n\n /*\n * Une saisie intermédiaire comme \"-\" ou \",\"\n * n'écrase pas encore le FormControl.\n */\n if (parsedValue === null) {\n return;\n }\n\n if (!this.allowNegative && parsedValue < 0) {\n return;\n }\n\n this.currentValue = parsedValue;\n this.onChange(parsedValue);\n }\n\n @HostListener('blur')\n handleBlur(): void {\n this.focused = false;\n\n this.renderFormattedValue();\n this.onTouched();\n }\n\n private normalizeModelValue(value: unknown): number | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n const numberValue = typeof value === 'number' ? value : Number(value);\n\n return Number.isFinite(numberValue) ? numberValue : null;\n }\n\n private renderFormattedValue(): void {\n this.setInputValue(this.formatCurrency(this.currentValue));\n }\n\n private setInputValue(value: string): void {\n this.renderer.setProperty(this._elementRef.nativeElement, 'value', value);\n }\n\n private formatCurrency(value: number | null): string {\n if (value === null) {\n return '';\n }\n\n const options = this.createCurrencyFormatOptions();\n\n return new Intl.NumberFormat(this.locale, options).format(value);\n }\n\n /**\n * Pendant l'édition, on retire le symbole et\n * les séparateurs de milliers.\n */\n private formatEditableValue(value: number | null): string {\n if (value === null) {\n return '';\n }\n\n return new Intl.NumberFormat(this.locale, {\n useGrouping: false,\n maximumFractionDigits: this.maximumFractionDigits ?? 20,\n }).format(value);\n }\n\n private createCurrencyFormatOptions(): Intl.NumberFormatOptions {\n const minimum = this.minimumFractionDigits;\n\n let maximum = this.maximumFractionDigits;\n\n if (minimum !== undefined && maximum !== undefined && maximum < minimum) {\n maximum = minimum;\n }\n\n return {\n style: 'currency',\n currency: this.currency,\n currencyDisplay: this.currencyDisplay,\n useGrouping: this.useGrouping,\n\n ...(minimum !== undefined\n ? {\n minimumFractionDigits: minimum,\n }\n : {}),\n\n ...(maximum !== undefined\n ? {\n maximumFractionDigits: maximum,\n }\n : {}),\n };\n }\n\n private parseLocalizedNumber(rawValue: string): number | null {\n const parts = new Intl.NumberFormat(this.locale).formatToParts(-12345.6);\n\n const groupSeparator = parts.find((part) => part.type === 'group')?.value;\n\n const decimalSeparator = parts.find((part) => part.type === 'decimal')?.value ?? '.';\n\n const minusSign = parts.find((part) => part.type === 'minusSign')?.value ?? '-';\n\n let normalized = this.normalizeLocalizedDigits(rawValue);\n\n if (groupSeparator) {\n normalized = normalized.split(groupSeparator).join('');\n }\n\n normalized = normalized.split(decimalSeparator).join('.');\n\n normalized = normalized.split(minusSign).join('-');\n\n /*\n * Retire les symboles monétaires,\n * espaces et codes de devise.\n */\n normalized = normalized.replace(/[^0-9+\\-.]/g, '');\n\n if (normalized === '' || normalized === '-' || normalized === '+' || normalized === '.' || normalized === '-.' || normalized === '+.') {\n return null;\n }\n\n const parsed = Number(normalized);\n\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n /**\n * Convertit également les chiffres localisés\n * vers 0-9.\n */\n private normalizeLocalizedDigits(value: string): string {\n const formatter = new Intl.NumberFormat(this.locale, {\n useGrouping: false,\n });\n\n let normalized = value;\n\n for (let digit = 0; digit <= 9; digit++) {\n const localizedDigit = formatter.formatToParts(digit).find((part) => part.type === 'integer')?.value;\n\n if (localizedDigit) {\n normalized = normalized.split(localizedDigit).join(String(digit));\n }\n }\n\n return normalized;\n }\n}\n\n@FieldMapper({\n type: EnumType.currency,\n})\n@Component({\n selector: 'kles-form-currency',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatTooltipModule, MatProgressSpinnerModule, MatError, MatErrorMessageDirective, KlesCurrencyValueAccessorDirective],\n template: `\n <mat-form-field [formGroup]=\"group\" [color]=\"color()\" [subscriptSizing]=\"field.subscriptSizing\" [appearance]=\"appearance()\" class=\"form-element field-bottom\">\n @if (label()) {\n <mat-label>\n {{ label() }}\n </mat-label>\n }\n\n @if (icon()) {\n <mat-icon matPrefix>\n {{ icon() }}\n </mat-icon>\n }\n\n <input\n matInput\n klesCurrency\n type=\"text\"\n inputmode=\"decimal\"\n autocomplete=\"off\"\n [attr.id]=\"field.id\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [ngClass]=\"ngClass()\"\n [matTooltip]=\"tooltip()\"\n [formControlName]=\"field.name\"\n [placeholder]=\"placeholder()\"\n [currency]=\"currencyOptions()?.code || defaultCurrencyCode\"\n [locale]=\"currencyOptions()?.locale || localeId\"\n [currencyDisplay]=\"currencyOptions()?.display || 'symbol'\"\n [minimumFractionDigits]=\"currencyOptions()?.minimumFractionDigits\"\n [maximumFractionDigits]=\"currencyOptions()?.maximumFractionDigits\"\n [useGrouping]=\"currencyOptions()?.useGrouping !== false\"\n [allowNegative]=\"currencyOptions()?.allowNegative !== false\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n @if (hint()) {\n <mat-hint>\n {{ hint() }}\n </mat-hint>\n }\n\n @if (field.subComponents || field.clearable || isPending()) {\n <div matSuffix class=\"suffix\">\n @if (isPending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"21\" />\n }\n\n @if (field.subComponents || field.clearable) {\n <ng-content />\n }\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styles: [\n `\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss'],\n})\nexport class KlesFormCurrencyComponent extends KlesFieldAbstract {\n readonly localeId = inject(LOCALE_ID);\n\n public readonly currencyOptions = computed(() => this.resolvedFieldUi()?.currencyOptions);\n\n readonly defaultCurrencyCode = inject(DEFAULT_CURRENCY_CODE);\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { startWith } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { IKlesStatusDefinition } from '../interfaces/field.config.interface';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@FieldMapper({\n type: EnumType.status,\n})\n@Component({\n selector: 'kles-form-status',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, MatProgressSpinnerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <span [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n @if (pending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"18\" />\n } @else if (resolvedStatus(); as status) {\n <span\n class=\"kles-status\"\n [class.kles-status--chip]=\"statusAppearance() === 'chip'\"\n [class.kles-status--badge]=\"statusAppearance() === 'badge'\"\n [class.kles-status--text]=\"statusAppearance() === 'text'\"\n [class.kles-status--neutral]=\"status.tone === 'neutral'\"\n [class.kles-status--info]=\"status.tone === 'info'\"\n [class.kles-status--success]=\"status.tone === 'success'\"\n [class.kles-status--warning]=\"status.tone === 'warning'\"\n [class.kles-status--error]=\"status.tone === 'error'\"\n [class.kles-status--disabled]=\"disabled()\"\n [ngClass]=\"status.ngClass\"\n [matTooltip]=\"status.tooltip || tooltip() || ''\"\n [attr.aria-label]=\"status.ariaLabel || status.label\"\n >\n @if (status.iconSvg) {\n <mat-icon class=\"kles-status__icon\" [svgIcon]=\"status.iconSvg\" />\n } @else if (status.icon) {\n <mat-icon class=\"kles-status__icon\">\n {{ status.icon }}\n </mat-icon>\n } @else if (showDot()) {\n <span class=\"kles-status__dot\" aria-hidden=\"true\"></span>\n }\n\n <span class=\"kles-status__label\">\n {{ status.label }}\n </span>\n </span>\n }\n </span>\n `,\n styles: `\n :host {\n display: flex;\n justify-content: inherit;\n }\n\n .kles-status {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n\n box-sizing: border-box;\n color: var(--kles-status-color, var(--mat-sys-on-surface-variant));\n background: var(--kles-status-container, var(--mat-sys-surface-container-high));\n }\n\n .kles-status--chip {\n min-height: 28px;\n padding: 3px 10px;\n border-radius: 999px;\n font: var(--mat-sys-label-medium);\n }\n\n .kles-status--badge {\n min-height: 22px;\n padding: 2px 7px;\n border-radius: 4px;\n font: var(--mat-sys-label-small);\n }\n\n .kles-status--text {\n padding: 0;\n border-radius: 0;\n background: transparent;\n }\n\n .kles-status__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n width: 20px;\n height: 20px;\n flex: 0 0 20px;\n line-height: 20px;\n\n overflow: visible;\n vertical-align: middle;\n }\n\n .kles-status__icon svg {\n width: 100%;\n height: 100%;\n overflow: visible;\n }\n\n .kles-status__dot {\n width: 8px;\n height: 8px;\n flex: 0 0 8px;\n\n border-radius: 50%;\n background: currentColor;\n }\n\n .kles-status__label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .kles-status--disabled {\n opacity: 0.56;\n }\n\n .kles-status--neutral {\n --kles-status-color: var(--mat-sys-on-surface-variant);\n --kles-status-container: var(--mat-sys-surface-container-high);\n }\n\n .kles-status--info {\n --kles-status-color: var(--mat-sys-on-primary-container);\n --kles-status-container: var(--mat-sys-primary-container);\n }\n\n .kles-status--success {\n --kles-status-color: var(--kles-status-success-color, #1b5e20);\n --kles-status-container: var(--kles-status-success-container, #d7f5df);\n }\n\n .kles-status--warning {\n --kles-status-color: var(--kles-status-warning-color, #7a4f00);\n --kles-status-container: var(--kles-status-warning-container, #ffecb3);\n }\n\n .kles-status--error {\n --kles-status-color: var(--mat-sys-on-error-container);\n --kles-status-container: var(--mat-sys-error-container);\n }\n `,\n})\nexport class KlesFormStatusComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {\n private readonly control = this.group.controls[this.field.name];\n\n private readonly controlValue = toSignal(this.control.valueChanges.pipe(startWith(this.control.value)), {\n initialValue: this.control.value,\n });\n\n private readonly controlStatus = toSignal(this.control.statusChanges.pipe(startWith(this.control.status)), {\n initialValue: this.control.status,\n });\n\n readonly statusAppearance = computed(() => this.field.statusOptions?.appearance ?? 'chip');\n\n readonly showDot = computed(() => this.field.statusOptions?.showDot ?? true);\n\n readonly disabled = computed(() => {\n this.controlStatus();\n\n return this.control.disabled;\n });\n\n readonly pending = computed(() => {\n this.controlStatus();\n\n return this.control.pending || this.field.pending === true;\n });\n\n readonly resolvedStatus = computed<IKlesStatusDefinition | null>(() => {\n const value = this.controlValue();\n const options = this.field.statusOptions;\n\n if (options?.resolve) {\n return options.resolve(value, this.context?.() ?? null, this.field, this.group);\n }\n\n const key = this.resolveStatusKey(value);\n\n const configuredStatus = options?.values?.[key];\n\n if (configuredStatus) {\n return {\n tone: 'neutral',\n ...configuredStatus,\n };\n }\n\n if (options?.fallback) {\n return {\n tone: 'neutral',\n ...options.fallback,\n };\n }\n\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n return {\n label: this.resolveDefaultLabel(value),\n tone: 'neutral',\n };\n });\n\n private resolveStatusKey(value: any): string {\n if (this.field.property && value !== null && typeof value === 'object') {\n return String(value[this.field.property]);\n }\n\n return String(value);\n }\n\n private resolveDefaultLabel(value: any): string {\n if (this.field.property && value !== null && typeof value === 'object') {\n return String(value[this.field.property] ?? '');\n }\n\n return String(value);\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInput, MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { combineLatest, concat, isObservable, map, Observable, of, ReplaySubject, startWith, switchMap } from 'rxjs';\n\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesFieldAbstract } from './field.abstract';\n\ninterface ChipOptionsState {\n loading: boolean;\n options: any[];\n}\n\n@Component({\n selector: 'kles-form-chip-grid',\n template: `\n <mat-form-field [formGroup]=\"group\" [matTooltip]=\"tooltip()\" [appearance]=\"appearance()\">\n <mat-label>{{ label() }}</mat-label>\n\n <mat-chip-grid #reactiveChipGrid [formControl]=\"control\">\n @for (value of control.value ?? []; track $index) {\n <mat-chip-row [value]=\"value\" (removed)=\"removeChip(value)\">\n {{ displayValue(value) | klesTransform: field.pipeTransform }}\n\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n </mat-chip-grid>\n\n <input\n #chipInput=\"matChipInput\"\n [formControl]=\"searchControl\"\n [placeholder]=\"placeholder()\"\n [matChipInputFor]=\"reactiveChipGrid\"\n [matAutocomplete]=\"auto\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"onTokenEnd($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event, chipInput)\">\n @if (filteredOption$ | async; as filteredOption) {\n @if (filteredOption.loading) {\n <mat-option disabled>\n <div class=\"loadingSelect\">\n {{ intl.loading }}...\n\n <mat-spinner class=\"spinner\" diameter=\"20\" />\n </div>\n </mat-option>\n } @else {\n @for (item of filteredOption.options; track item) {\n <mat-option [value]=\"item\" [disabled]=\"item?.disabled\">\n {{ displayValue(item) | klesTransform: field.pipeTransform }}\n </mat-option>\n }\n }\n }\n </mat-autocomplete>\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styles: [\n `\n mat-form-field {\n width: 100%;\n }\n `,\n ],\n styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss', '../styles/loading-select.style.scss'],\n standalone: true,\n imports: [AsyncPipe, KlesTransformPipe, MatAutocompleteModule, MatChipsModule, MatError, MatErrorMessageDirective, MatFormFieldModule, MatIconModule, MatProgressSpinnerModule, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormChipGridComponent extends KlesFieldAbstract implements OnInit {\n readonly control = this.group.controls[this.field.name];\n\n readonly intl = inject(KlesDynamicFormIntl);\n\n readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n\n /*\n * any est volontaire :\n * MatAutocomplete peut momentanément pousser l'objet\n * sélectionné dans le FormControl de recherche.\n */\n readonly searchControl = new FormControl<any>('', {\n nonNullable: true,\n });\n\n filteredOption$!: Observable<ChipOptionsState>;\n\n private options$!: Observable<ChipOptionsState>;\n\n /*\n * ReplaySubject permet de ne pas perdre le premier focus\n * si l'Observable lazy n'est pas encore abonné.\n */\n private readonly loadOptions$ = new ReplaySubject<void>(1);\n\n override ngOnInit(): void {\n this.options$ = this.createOptionsStream();\n\n this.filteredOption$ = combineLatest([this.searchControl.valueChanges.pipe(startWith(this.searchControl.value)), this.options$, this.control.valueChanges.pipe(startWith(this.control.value ?? []))]).pipe(\n map(([search, response, selectedValues]) => {\n if (response.loading) {\n return response;\n }\n\n const selected = Array.isArray(selectedValues) ? selectedValues : [];\n\n /*\n * On retire de la liste les options\n * déjà présentes dans les chips.\n */\n let options = response.options.filter((option) => !selected.some((selectedValue) => this.isSameOption(option, selectedValue)));\n\n /*\n * Le contrôle peut momentanément contenir\n * un objet pendant une sélection autocomplete.\n */\n if (typeof search === 'string' && search.trim()) {\n options = this.filterData(search, options);\n }\n\n return {\n loading: false,\n options,\n };\n }),\n );\n\n super.ngOnInit();\n }\n\n override onFocus(): void {\n if (this.field.lazy) {\n this.loadOptions$.next();\n }\n\n super.onFocus();\n }\n\n onTokenEnd(event: MatChipInputEvent): void {\n /*\n * Quand property est renseignée, les valeurs sont\n * considérées comme des objets provenant de l'autocomplete.\n *\n * On évite donc d'ajouter une string libre au tableau.\n */\n if (this.field.property) {\n return;\n }\n\n const value = event.value.trim();\n\n if (!value) {\n return;\n }\n\n this.addChip(value);\n\n event.chipInput.clear();\n this.searchControl.setValue('');\n }\n\n addChip(value: unknown): void {\n if (value === null || value === undefined || value === '') {\n return;\n }\n\n const values = Array.isArray(this.control.value) ? this.control.value : [];\n\n /*\n * Empêche d'ajouter deux fois la même valeur.\n */\n const exists = values.some((currentValue) => this.isSameOption(currentValue, value));\n\n if (exists) {\n return;\n }\n\n this.control.setValue([...values, value]);\n\n this.control.markAsDirty();\n }\n\n removeChip(value: unknown): void {\n const values = Array.isArray(this.control.value) ? [...this.control.value] : [];\n\n const index = values.findIndex((currentValue) => this.isSameOption(currentValue, value));\n\n if (index === -1) {\n return;\n }\n\n values.splice(index, 1);\n\n this.control.setValue(values);\n this.control.markAsDirty();\n }\n\n selected(event: MatAutocompleteSelectedEvent, chipInput: MatChipInput): void {\n const value = event.option.value;\n\n /*\n * On ajoute d'abord l'objet sélectionné aux chips.\n */\n this.addChip(value);\n\n /*\n * L'autocomplete n'est ici qu'une source de sélection.\n * La sélection réelle est représentée par les chips.\n */\n event.option.deselect();\n\n /*\n * Important :\n * MatChipInput.clear() nettoie réellement l'input HTML.\n */\n chipInput.clear();\n\n /*\n * Et on synchronise le FormControl afin de :\n * - vider l'état Angular ;\n * - supprimer le filtre ;\n * - recalculer filteredOption$.\n */\n this.searchControl.setValue('');\n }\n\n displayValue(value: any): any {\n if (value === null || value === undefined) {\n return '';\n }\n\n if (this.field.property) {\n return value?.[this.field.property] ?? '';\n }\n\n return value;\n }\n\n private createOptionsStream(): Observable<ChipOptionsState> {\n /*\n * Lazy :\n * recharge les options à chaque focus.\n */\n if (this.field.lazy) {\n return this.loadOptions$.pipe(\n switchMap(() =>\n concat(\n of({\n loading: true,\n options: [],\n }),\n this.resolveOptions().pipe(\n map((options) => ({\n loading: false,\n options,\n })),\n ),\n ),\n ),\n );\n }\n\n /*\n * Liste statique :\n * aucun chargement à afficher.\n */\n if (Array.isArray(this.field.options)) {\n return of({\n loading: false,\n options: this.field.options,\n });\n }\n\n /*\n * Observable ou fonction :\n * spinner jusqu'à réception des options.\n */\n return concat(\n of({\n loading: true,\n options: [],\n }),\n this.resolveOptions().pipe(\n map((options) => ({\n loading: false,\n options,\n })),\n ),\n );\n }\n\n private resolveOptions(): Observable<any[]> {\n const source = typeof this.field.options === 'function' ? this.field.options() : this.field.options;\n\n if (isObservable(source)) {\n return source;\n }\n\n return of(source ?? []);\n }\n\n private filterData(search: unknown, options: any[]): any[] {\n if (typeof search !== 'string') {\n return options;\n }\n\n const filterValue = search.trim().toLowerCase();\n\n if (!filterValue) {\n return options;\n }\n\n return options.filter((option) => {\n const value = this.displayValue(option);\n\n return String(value ?? '')\n .toLowerCase()\n .startsWith(filterValue);\n });\n }\n\n private isSameOption(a: any, b: any): boolean {\n /*\n * Primitive identique ou même référence objet.\n */\n if (a === b) {\n return true;\n }\n\n /*\n * En mode objet, property sert actuellement\n * également à identifier les doublons.\n */\n if (this.field.property && a !== null && a !== undefined && b !== null && b !== undefined) {\n return a[this.field.property] === b[this.field.property];\n }\n\n return false;\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KlesDynamicFormComponent } from './dynamic-form.component';\nimport { KlesComponentDirective } from './directive/dynamic-component.directive';\nimport { KlesDynamicFieldDirective } from './directive/dynamic-field.directive';\nimport { KlesFormErrorStateMatcher } from './matcher/form-error.matcher';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MaterialModule } from './modules/material.module';\nimport { KlesFormLabelComponent } from './fields/label.component';\nimport { KlesFormInputComponent } from './fields/input.component';\nimport { KlesFormDateComponent } from './fields/date.component';\nimport { KlesFormRadioComponent } from './fields/radio.component';\nimport { KlesFormCheckboxComponent } from './fields/checkbox.component';\nimport { KlesFormListFieldComponent } from './fields/list-field.component';\nimport { KlesFormColorComponent } from './fields/color.component';\nimport { KlesButtonComponent } from './forms/button-control.component';\nimport { KlesFormButtonComponent } from './fields/button-form.component';\nimport { KlesButtonCheckerComponent } from './forms/buttonchecker-control.component';\nimport { KlesFormButtonCheckerComponent } from './fields/buttonchecker-form.component';\nimport { KlesButtonFileComponent } from './forms/buttonfile-control.component';\nimport { KlesFormButtonFileComponent } from './fields/buttonfile-form.component';\nimport { KlesFormTextareaComponent } from './fields/textarea.component';\nimport { KlesFormTextComponent } from './fields/text.component';\nimport { KlesFormChipComponent } from './fields/chip.component';\nimport { KlesFormGroupComponent } from './fields/group.component';\nimport { KlesFormInputClearableComponent } from './fields/input.clearable.component';\nimport { KlesFormIconComponent } from './fields/icon.component';\nimport { KlesTransformPipe } from './pipe/transform.pipe';\nimport { KlesFormLineBreakComponent } from './fields/line-break.component';\nimport { ArrayFormatPipe } from './pipe/array.pipe';\nimport { KlesFormLinkComponent } from './fields/link.component';\nimport { KlesFormSlideToggleComponent } from './fields/slide-toggle.component';\nimport { KlesFormSelectionListComponent } from './fields/selection-list.component';\nimport { KlesFormBadgeComponent } from './fields/badge.component';\nimport { KlesFormButtonToogleGroupComponent } from './fields/button-toogle-group.component';\nimport { KlesFormArrayComponent } from './fields/array.component';\nimport { KlesFormRangeComponent } from './fields/range.component';\nimport { KlesFormClearComponent } from './fields/subfields/clear.component';\nimport { KlesFormFabComponent } from './fields/button-fab.component';\nimport { KlesFabComponent } from './forms/fab-control.component';\nimport { KlesMiniFabComponent } from './forms/mini-fab-control.component';\nimport { KlesFormMiniFabComponent } from './fields/button-mini-fab.component';\nimport { KlesIconButtonComponent } from './forms/icon-button-control.component';\nimport { KlesFormIconButtonComponent } from './fields/button-icon.component';\nimport { KlesFormSelectionListSearchComponent } from './fields/selection-list.search.component';\nimport { MatErrorMessageDirective } from './directive/mat-error-message.directive';\nimport { MatErrorFormDirective } from './directive/mat-error-form.directive';\nimport { KlesFormCheckboxIndeterminateComponent } from './fields/checkbox-indeterminate.component';\nimport { KlesIndeterminateCheckboxComponent } from './forms/indeterminate-checkbox';\n\nimport { KlesFormFileComponent } from './fields/file.component';\nimport { KlesFileControlComponent } from './forms/file-control.component';\nimport { KlesFormDateTimeComponent } from './fields/date-time.component';\nimport { KlesFormCopyComponent } from './fields/subfields/copy.component';\n\nimport { KlesFormActionMenuComponent } from './fields/action-menu.component';\nimport { KlesFormTileComponent } from './fields/tile.component';\nimport { KlesFormCurrencyComponent } from './fields/currency.component';\nimport { KlesFormStatusComponent } from './fields/status.component';\nimport { KlesFormChipGridComponent } from './fields/chip-grid.component';\n\nconst components = [\n KlesDynamicFormComponent,\n KlesFormLabelComponent,\n KlesFormInputComponent,\n KlesFormInputClearableComponent,\n KlesFormBadgeComponent,\n KlesFormFileComponent,\n KlesFileControlComponent,\n KlesButtonComponent,\n KlesFormButtonComponent,\n KlesButtonCheckerComponent,\n KlesFormButtonCheckerComponent,\n KlesButtonFileComponent,\n KlesFormButtonFileComponent,\n KlesFormDateComponent,\n KlesFormDateTimeComponent,\n KlesFormRadioComponent,\n KlesFormCheckboxComponent,\n KlesIndeterminateCheckboxComponent,\n KlesFormCheckboxIndeterminateComponent,\n KlesFormListFieldComponent,\n KlesFormColorComponent,\n KlesFormTextareaComponent,\n KlesFormTextComponent,\n KlesFormChipComponent,\n KlesFormGroupComponent,\n KlesFormIconComponent,\n KlesFormLineBreakComponent,\n KlesFormLinkComponent,\n KlesFormSlideToggleComponent,\n KlesFormSelectionListComponent,\n KlesFormButtonToogleGroupComponent,\n KlesFormArrayComponent,\n KlesFormRangeComponent,\n KlesFormClearComponent,\n KlesFormFabComponent,\n KlesFabComponent,\n KlesMiniFabComponent,\n KlesFormMiniFabComponent,\n KlesIconButtonComponent,\n KlesFormIconButtonComponent,\n KlesFormSelectionListSearchComponent,\n KlesFormCopyComponent,\n KlesFormTileComponent,\n KlesFormActionMenuComponent,\n KlesFormCurrencyComponent,\n KlesFormStatusComponent,\n KlesFormChipGridComponent,\n];\n\nconst directives = [KlesDynamicFieldDirective, KlesComponentDirective, MatErrorMessageDirective, MatErrorFormDirective];\nconst pipes = [KlesTransformPipe, ArrayFormatPipe];\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, FormsModule, MaterialModule, components, directives, pipes],\n providers: [{ provide: ErrorStateMatcher, useClass: KlesFormErrorStateMatcher }, pipes],\n exports: [components, pipes, directives],\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\n})\nexport class KlesMaterialDynamicformsModule {\n static declarations = [components, directives, pipes];\n}\n","import { Component, computed, inject, signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\n\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { IKlesField } from '../../interfaces/field.interface';\nimport { FIELD, GROUP, GROUP_UI, SIBLING_FIELDS } from '../../token';\nimport { GroupUiState } from '../../ui/ui-state/group-ui-state';\n\n@Component({\n selector: 'kles-form-password-visibility',\n template: `\n <button [disabled]=\"group?.get(field?.name).disabled\" matIconButton aria-label=\"visibility\" type=\"button\" (click)=\"toggleVisibility($event)\">\n <mat-icon>{{ hide() ? 'visibility_off' : 'visibility' }}</mat-icon>\n </button>\n `,\n standalone: true,\n imports: [MatIcon, MatIconButton],\n})\nexport class KlesFormPasswordVisibilityComponent implements IKlesField {\n readonly field = inject<IKlesFieldConfig>(FIELD);\n readonly group = inject<FormGroup<any>>(GROUP);\n readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n public readonly ui = inject<GroupUiState>(GROUP_UI, { optional: true });\n\n hide = computed(() => {\n return this.ui?.get(this.field.name)?.value().inputType === 'password';\n });\n\n toggleVisibility(event: any): void {\n event.stopPropagation();\n this.ui?.get(this.field.name)?.patchValue({ inputType: this.hide() ? 'text' : 'password' });\n }\n}\n","import { AfterViewInit, Component, DestroyRef, ElementRef, inject, input, OnDestroy, OnInit, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatOption } from '@angular/material/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatSelect } from '@angular/material/select';\n\n/** Internal search input used by the Kles select field. */\n@Component({\n selector: 'kles-select-search-input',\n standalone: true,\n imports: [ReactiveFormsModule, MatIconButton, MatIcon, MatProgressSpinner],\n template: `\n <div class=\"kles-select-search-row\">\n <mat-icon class=\"kles-select-search-icon\" aria-hidden=\"true\">search</mat-icon>\n <input\n #searchInput\n class=\"kles-select-search-input\"\n type=\"search\"\n autocomplete=\"off\"\n tabindex=\"-1\"\n [formControl]=\"control()\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"ariaLabel()\"\n (keydown)=\"onKeydown($event)\"\n />\n @if (searching()) {\n <mat-spinner class=\"kles-select-search-spinner\" diameter=\"16\" />\n } @else if (control().value) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"kles-select-search-clear\"\n [attr.aria-label]=\"clearAriaLabel()\"\n (mousedown)=\"preserveInputFocus($event)\"\n (click)=\"clearSearch($event)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n `,\n styles: [\n `\n kles-select-search-input {\n display: block;\n width: 100%;\n }\n\n .kles-select-panel .kles-select-search-row {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n min-height: 48px;\n background: var(--mat-sys-surface-container, var(--mat-select-panel-background-color, white));\n box-shadow: inset 0 -1px 0 var(--mat-sys-outline-variant, currentColor);\n }\n\n .kles-select-panel .kles-select-search-icon {\n position: absolute;\n inset-inline-start: 14px;\n width: 20px;\n height: 20px;\n color: var(--mat-sys-on-surface-variant, currentColor);\n font-size: 20px;\n line-height: 20px;\n pointer-events: none;\n }\n\n .kles-select-panel .kles-select-search-input {\n box-sizing: border-box;\n width: 100%;\n height: 47px;\n padding: 0 44px;\n border: 0;\n outline: 0;\n color: currentColor;\n background: transparent;\n font: inherit;\n }\n\n .kles-select-panel .kles-select-search-input::placeholder {\n color: var(--mat-sys-on-surface-variant, currentColor);\n opacity: 0.8;\n }\n\n .kles-select-panel .kles-select-search-input::-webkit-search-cancel-button {\n display: none;\n }\n\n .kles-select-panel .kles-select-search-clear {\n position: absolute;\n inset-inline-end: 4px;\n width: 40px;\n height: 40px;\n color: currentColor;\n cursor: pointer;\n }\n\n .kles-select-panel .kles-select-search-spinner {\n position: absolute;\n inset-inline-end: 16px;\n }\n\n .kles-select-panel .mat-mdc-option.kles-select-search-option {\n position: sticky;\n top: -8px;\n z-index: 2;\n min-height: 48px;\n margin-top: -8px;\n padding: 0;\n opacity: 1;\n pointer-events: all;\n background: var(--mat-sys-surface-container, var(--mat-select-panel-background-color, white));\n }\n\n .kles-select-panel .mat-mdc-option.kles-select-search-option .mat-pseudo-checkbox {\n display: none;\n }\n\n .kles-select-panel .mat-mdc-option.kles-select-search-option .mdc-list-item__primary-text {\n width: 100%;\n opacity: 1;\n }\n `,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class KlesSelectSearchInputComponent implements OnInit, AfterViewInit, OnDestroy {\n readonly control = input.required<FormControl<string | null>>();\n readonly placeholder = input('');\n readonly ariaLabel = input('Search options');\n readonly clearAriaLabel = input('Clear search');\n readonly searching = input(false);\n\n private readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly matSelect = inject(MatSelect);\n private readonly matOption = inject(MatOption);\n private removePanelKeyboardGuard?: () => void;\n\n ngOnInit(): void {\n this.matOption.disabled = true;\n\n const optionElement = this.matOption._getHostElement();\n optionElement.classList.add('kles-select-search-option');\n optionElement.setAttribute('role', 'presentation');\n }\n\n ngAfterViewInit(): void {\n this.matSelect.openedChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((opened) => {\n if (opened) {\n setTimeout(() => {\n this.focusInput();\n this.installPanelKeyboardGuard();\n });\n } else {\n this.removePanelKeyboardGuard?.();\n this.removePanelKeyboardGuard = undefined;\n }\n });\n }\n\n ngOnDestroy(): void {\n this.removePanelKeyboardGuard?.();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key.length === 1) {\n event.stopPropagation();\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault();\n }\n\n if (this.matSelect.multiple && event.key === 'Enter') {\n setTimeout(() => this.focusInput());\n }\n }\n\n preserveInputFocus(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n clearSearch(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.control().setValue('');\n this.focusInput();\n }\n\n private focusInput(): void {\n const panel = this.matSelect.panel?.nativeElement as HTMLElement | undefined;\n const inputElement = this.inputElement();\n if (!panel || !inputElement) {\n return;\n }\n\n const scrollTop = panel.scrollTop;\n inputElement.nativeElement.focus();\n panel.scrollTop = scrollTop;\n }\n\n /**\n * Material 21 renders the panel inline. Without this listener the panel and\n * the mat-select host both process the same keydown and skip an option.\n */\n private installPanelKeyboardGuard(): void {\n this.removePanelKeyboardGuard?.();\n\n const panel = this.matSelect.panel?.nativeElement as HTMLElement | undefined;\n if (!panel) {\n return;\n }\n\n const handler = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') {\n event.stopPropagation();\n }\n };\n\n panel.addEventListener('keydown', handler);\n this.removePanelKeyboardGuard = () => panel.removeEventListener('keydown', handler);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { AfterViewInit, ChangeDetectorRef, Component, inject, OnDestroy, OnInit, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatOption } from '@angular/material/core';\nimport { MatFormField, MatHint, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatSelect, MatSelectTrigger } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { concat, distinctUntilChanged, isObservable, map, Observable, of, shareReplay, Subject, switchMap, takeUntil, timer } from 'rxjs';\nimport { debounce, startWith } from 'rxjs/operators';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { EnumType } from '../enums/type.enum';\n\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesSelectSearchInputComponent } from './select-search-input.component';\nimport { IKlesSelectSearchOptions } from '../interfaces/field.config.interface';\n\ninterface DeferredQuery {\n kind: 'open' | 'search' | 'close';\n value?: string;\n}\n\ninterface MatSelectInternals {\n _scrollOptionIntoView(index: number): void;\n _keyManager: {\n activeItemIndex: number | null;\n setActiveItem(index: number): void;\n };\n}\n\n@FieldMapper({ type: EnumType.select })\n@Component({\n selector: 'kles-form-select',\n template: `\n <mat-form-field [subscriptSizing]=\"field.subscriptSizing\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <mat-select\n [matTooltip]=\"tooltip()\"\n [attr.id]=\"field.id\"\n [ngClass]=\"ngClass()\"\n [compareWith]=\"compareFn\"\n [panelClass]=\"panelClasses()\"\n [panelWidth]=\"field.panelWidth || 'auto'\"\n [placeholder]=\"placeholder()\"\n [formControlName]=\"field.name\"\n [multiple]=\"field.multiple\"\n (openedChange)=\"onOpenedChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n >\n @if (field.triggerComponent) {\n <mat-select-trigger>\n <ng-container klesComponent [component]=\"field.triggerComponent\" [value]=\"group.controls[field.name].value\" [field]=\"field\" />\n </mat-select-trigger>\n }\n\n @if (isSearchEnabled()) {\n <mat-option>\n <kles-select-search-input [control]=\"searchControl\" [placeholder]=\"searchOptions.placeholder || intl.search\" [ariaLabel]=\"searchOptions.ariaLabel || intl.search\" [clearAriaLabel]=\"intl.clearSearch\" [searching]=\"isLoading()\" />\n </mat-option>\n }\n\n @if (!isLoading()) {\n @if (field.multiple) {\n <mat-checkbox class=\"selectAll mat-mdc-option mdc-list-item\" [formControl]=\"selectAllControl\" [indeterminate]=\"selectAllIndeterminate()\" (change)=\"toggleVisibleOptions($event)\">\n {{ intl.selectAll }}\n </mat-checkbox>\n }\n\n @if (field.virtualScroll) {\n <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 48\" [style.height.px]=\"5 * (field.itemSize || 48)\">\n @if (!field.autocompleteComponent) {\n <mat-option *cdkVirtualFor=\"let item of filteredOptions()\" [value]=\"item\" [disabled]=\"item?.disabled\">\n {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n </mat-option>\n } @else {\n <mat-option *cdkVirtualFor=\"let item of filteredOptions()\" [value]=\"item\" [disabled]=\"item?.disabled\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n </mat-option>\n }\n </cdk-virtual-scroll-viewport>\n } @else {\n @if (!field.autocompleteComponent) {\n @for (item of filteredOptions(); track item) {\n <mat-option [value]=\"item\" [disabled]=\"item?.disabled\">\n {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n </mat-option>\n }\n } @else {\n @for (item of filteredOptions(); track item) {\n <mat-option [value]=\"item\" [disabled]=\"item?.disabled\">\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n </mat-option>\n }\n }\n }\n\n @for (item of getHiddenSelectedOptions(); track item) {\n <mat-option [value]=\"item\" class=\"kles-hidden-selected-option\">\n @if (!field.autocompleteComponent) {\n {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n } @else {\n <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n }\n </mat-option>\n }\n } @else {\n <mat-option class=\"hide-checkbox\" disabled>\n <div class=\"loadingSelect\">{{ intl.loading }}... <mat-spinner class=\"spinner\" diameter=\"20\" /></div>\n </mat-option>\n }\n </mat-select>\n\n @if (hint()) {\n <mat-hint>{{ hint() }}</mat-hint>\n }\n\n @if (field.subComponents || field.clearable || isPending()) {\n <div matSuffix class=\"suffix\">\n @if (isPending()) {\n <mat-spinner mode=\"indeterminate\" diameter=\"21\" />\n }\n @if (field.subComponents || field.clearable) {\n <ng-content />\n }\n </div>\n }\n\n <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n </mat-form-field>\n `,\n styles: [\n 'kles-form-select mat-form-field {width: 100%;}',\n 'kles-form-select .suffix {display: flex; align-items: center;}',\n '.kles-select-panel .loadingSelect {display: flex; flex-direction: row; justify-content: space-between; align-items: center;}',\n '.kles-select-panel .selectAll {padding: 0 16px 0 5px !important; display: flex !important;}',\n '.kles-select-panel .selectAll .mdc-form-field {width: 100%;}',\n '.kles-select-panel .selectAll .mdc-form-field .mdc-label {width: 100%; min-height: 48px; align-items: center; display: flex;}',\n '.kles-select-panel .selectAll .mdc-form-field .mdc-checkbox__ripple {display: none !important;}',\n '.kles-select-panel .kles-hidden-selected-option {display: none !important;}',\n '.kles-select-panel .hide-checkbox .mat-pseudo-checkbox {display: none !important;}',\n '.kles-select-panel:not(.kles-select-virtual-panel) .selectAll {position: sticky; top: -8px; z-index: 1; background: var(--mat-select-panel-background-color, var(--mat-sys-surface-container, white));}',\n '.kles-select-panel.kles-select-has-search:not(.kles-select-virtual-panel) .selectAll {top: 40px;}',\n 'div.kles-select-panel.kles-select-virtual-panel {display: flex; flex-direction: column; overflow: hidden;}',\n '.kles-select-panel.kles-select-virtual-panel .kles-select-search-option, .kles-select-panel.kles-select-virtual-panel .selectAll {flex: 0 0 48px;}',\n '.kles-select-panel.kles-select-virtual-panel cdk-virtual-scroll-viewport {flex: 1 1 auto; min-height: 0; width: 100%;}',\n ],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n KlesTransformPipe,\n MatErrorMessageDirective,\n MatProgressSpinner,\n MatHint,\n MatOption,\n KlesComponentDirective,\n ScrollingModule,\n MatSelectTrigger,\n MatSelect,\n MatTooltip,\n MatLabel,\n MatSuffix,\n MatFormField,\n MatCheckbox,\n KlesSelectSearchInputComponent,\n ],\n})\nexport class KlesFormSelectComponent extends KlesFieldAbstract implements OnInit, AfterViewInit, OnDestroy {\n readonly searchControl = new FormControl<string>('');\n readonly selectAllControl = new FormControl(false, { nonNullable: true });\n readonly selectAllIndeterminate = signal(false);\n readonly isLoading = signal(false);\n readonly filteredOptions = signal<any[]>([]);\n\n readonly intl = inject(KlesDynamicFormIntl);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly matSelect = viewChild(MatSelect);\n private readonly virtualViewport = viewChild(CdkVirtualScrollViewport);\n\n searchOptions: IKlesSelectSearchOptions = {};\n\n private readonly deferredQuery$ = new Subject<DeferredQuery>();\n private sourceOptions: any[] = [];\n private visibleOptions: any[] = [];\n private isPanelOpen = false;\n private isDeferredSourceLoaded = false;\n private deferredOptionsRequest$?: Observable<any[]>;\n private restoreMatSelectScroll?: () => void;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.searchOptions = this.normalizeSearchOptions();\n\n this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((values) => {\n this.updateSelectAllState(values);\n this.changeDetectorRef.markForCheck();\n });\n\n if (this.usesDeferredSource()) {\n const selected = this.selectedValues();\n this.sourceOptions = selected;\n this.setVisibleOptions(selected);\n // MatSelect cannot open without at least one MatOption. When search is\n // disabled, keep the loading option rendered until the deferred source\n // is requested on the first opening.\n this.isLoading.set(!this.isSearchEnabled() && selected.length === 0);\n this.initializeDeferredQueries();\n } else {\n this.loadInitialOptions();\n }\n\n if (this.isSearchEnabled() && !this.usesDeferredSource()) {\n this.searchControl.valueChanges\n .pipe(\n startWith(this.searchControl.value),\n debounce((value) => timer(value ? (this.searchOptions.debounceTime ?? this.field.debounceTime ?? 0) : 0)),\n distinctUntilChanged(),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => this.applyLocalFilter(value || ''));\n } else if (this.isSearchEnabled()) {\n this.searchControl.valueChanges\n .pipe(\n debounce((value) => timer(value ? (this.searchOptions.debounceTime ?? this.field.debounceTime ?? 0) : 0)),\n distinctUntilChanged(),\n takeUntil(this._onDestroy),\n )\n .subscribe((value) => {\n if (this.isPanelOpen) {\n this.deferredQuery$.next({ kind: 'search', value: value || '' });\n }\n });\n }\n }\n\n override ngOnDestroy(): void {\n this.restoreMatSelectScroll?.();\n this.deferredQuery$.complete();\n super.ngOnDestroy();\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n this.installMatSelectScrollCorrection();\n }\n\n isSearchEnabled(): boolean {\n return this.field.search === true || (this.field.search != null && typeof this.field.search === 'object');\n }\n\n panelClasses(): string[] {\n const classes = ['kles-select-panel'];\n if (this.field.virtualScroll) {\n classes.push('kles-select-virtual-panel');\n }\n if (this.isSearchEnabled()) {\n classes.push('kles-select-has-search');\n }\n return classes;\n }\n\n onOpenedChange(opened: boolean): void {\n this.isPanelOpen = opened;\n\n if (this.usesDeferredSource()) {\n if (opened) {\n this.isDeferredSourceLoaded = false;\n // Keep the initial request alive while search terms replace each\n // other, otherwise switchMap cancels the baseline option loading.\n this.deferredOptionsRequest$ = this.resolveOptions().pipe(shareReplay({ bufferSize: 1, refCount: false }));\n }\n this.deferredQuery$.next(opened ? { kind: 'open', value: this.searchControl.value || '' } : { kind: 'close' });\n }\n\n if (!opened && this.isSearchEnabled() && (this.searchOptions.clearOnClose ?? true)) {\n this.searchControl.setValue('');\n }\n\n if (opened && this.field.virtualScroll) {\n setTimeout(() => {\n this.virtualViewport()?.scrollToIndex(0);\n this.virtualViewport()?.checkViewportSize();\n });\n }\n }\n\n toggleVisibleOptions(state: { checked: boolean }): void {\n const selected = this.selectedValues();\n const enabledOptions = this.visibleOptions.filter((option) => !option?.disabled);\n\n if (!state.checked) {\n const remaining = selected.filter((value) => !enabledOptions.some((option) => this.compareFn(value, option)));\n this.group.controls[this.field.name].patchValue(remaining);\n return;\n }\n\n if (enabledOptions.length > 0) {\n const added = enabledOptions.filter((option) => !selected.some((value) => this.compareFn(value, option)));\n this.group.controls[this.field.name].patchValue([...selected, ...added]);\n }\n }\n\n getHiddenSelectedOptions(): any[] {\n const selected = this.selectedValues();\n if (this.field.virtualScroll) {\n return selected;\n }\n\n return selected.filter((selectedOption) => !this.visibleOptions.some((option) => this.compareFn(selectedOption, option)));\n }\n\n compareFn = (first: any, second: any): boolean => {\n if (this.field.property && first && second) {\n return first[this.field.property] === second[this.field.property];\n }\n return first === second;\n };\n\n private normalizeSearchOptions(): IKlesSelectSearchOptions {\n if (!this.isSearchEnabled()) {\n return {};\n }\n\n const configured = typeof this.field.search === 'object' ? this.field.search : {};\n return {\n mode: configured.mode ?? 'local',\n keys: configured.keys ?? this.field.searchKeys,\n debounceTime: configured.debounceTime ?? this.field.debounceTime,\n minLength: configured.minLength ?? 0,\n clearOnClose: configured.clearOnClose ?? true,\n placeholder: configured.placeholder,\n ariaLabel: configured.ariaLabel,\n };\n }\n\n private usesDeferredSource(): boolean {\n return !!this.field.lazy || this.searchOptions.mode === 'remote';\n }\n\n private loadInitialOptions(): void {\n if (isObservable(this.field.options) || typeof this.field.options === 'function') {\n this.isLoading.set(true);\n }\n\n this.resolveOptions()\n .pipe(takeUntil(this._onDestroy))\n .subscribe((options) => {\n const safeOptions = options ?? [];\n this.isLoading.set(false);\n this.sourceOptions = safeOptions;\n if (this.isSearchEnabled()) {\n this.applyLocalFilter(this.searchControl.value || '');\n } else {\n this.setVisibleOptions(safeOptions);\n }\n });\n }\n\n private initializeDeferredQueries(): void {\n this.deferredQuery$\n .pipe(\n switchMap((query) => {\n if (query.kind === 'close') {\n const selected = this.selectedValues();\n // Preserve a disabled loading option when the closed select\n // would otherwise contain no option and could not reopen.\n return of({ loading: !this.isSearchEnabled() && selected.length === 0, options: selected, sourceOptions: undefined as any[] | undefined });\n }\n\n const search = query.value || '';\n const searchLength = search.trim().length;\n const isBelowMinimumLength = searchLength > 0 && searchLength < (this.searchOptions.minLength ?? 0);\n if (query.kind === 'search' && isBelowMinimumLength) {\n if (this.isDeferredSourceLoaded) {\n return of({ loading: false, options: this.sourceOptions, sourceOptions: undefined as any[] | undefined });\n }\n\n const options$ = this.deferredOptionsRequest$ ?? this.resolveOptions();\n return concat(\n of({ loading: true, options: [] as any[], sourceOptions: undefined as any[] | undefined }),\n options$.pipe(\n map((options) => options ?? []),\n map((sourceOptions) => ({ loading: false, options: sourceOptions, sourceOptions })),\n ),\n );\n }\n\n if (query.kind === 'search' && this.searchOptions.mode !== 'remote' && this.isDeferredSourceLoaded) {\n return of({ loading: false, options: this.filterOptions(this.sourceOptions, search), sourceOptions: undefined as any[] | undefined });\n }\n\n const options$ =\n this.searchOptions.mode === 'remote' && typeof this.field.options === 'function' && searchLength > 0\n ? this.resolveOptions(search)\n : (this.deferredOptionsRequest$ ?? this.resolveOptions());\n return concat(\n of({ loading: true, options: [] as any[], sourceOptions: undefined as any[] | undefined }),\n options$.pipe(\n map((options) => options ?? []),\n map((sourceOptions) => ({\n loading: false,\n sourceOptions: this.searchOptions.mode === 'remote' && searchLength > 0 ? undefined : sourceOptions,\n options: this.searchOptions.mode === 'remote' ? sourceOptions : this.filterOptions(sourceOptions, search),\n })),\n ),\n );\n }),\n takeUntil(this._onDestroy),\n )\n .subscribe(({ loading, options, sourceOptions }) => {\n this.isLoading.set(loading);\n if (!loading) {\n if (sourceOptions !== undefined) {\n this.sourceOptions = sourceOptions;\n this.isDeferredSourceLoaded = true;\n }\n this.setVisibleOptions(options);\n }\n });\n }\n\n private resolveOptions(search?: string): Observable<any[]> {\n if (isObservable(this.field.options)) {\n return this.field.options as Observable<any[]>;\n }\n if (typeof this.field.options === 'function') {\n return this.field.options(search, this.group.getRawValue());\n }\n return of(this.field.options ?? []);\n }\n\n private applyLocalFilter(value: string): void {\n const searchLength = value.trim().length;\n const options = searchLength > 0 && searchLength < (this.searchOptions.minLength ?? 0) ? this.sourceOptions : this.filterOptions(this.sourceOptions, value);\n this.setVisibleOptions(options);\n }\n\n private setVisibleOptions(options: any[]): void {\n this.visibleOptions = options;\n this.filteredOptions.set(options);\n this.updateSelectAllState(this.group.controls[this.field.name].value);\n this.changeDetectorRef.markForCheck();\n }\n\n private filterOptions(options: any[], value: string): any[] {\n const search = value.trim().toLocaleLowerCase();\n if (!search) {\n return options;\n }\n\n const keys = this.searchOptions.keys ?? [];\n return options.filter((option) => {\n const keyMatch = keys.some((key) => this.normalizeSearchValue(option?.[key]).includes(search));\n const propertyMatch = this.field.property ? this.normalizeSearchValue(option?.[this.field.property]).includes(search) : false;\n return keyMatch || propertyMatch || (!keys.length && !this.field.property && this.normalizeSearchValue(option).includes(search));\n });\n }\n\n private normalizeSearchValue(value: unknown): string {\n return value == null ? '' : String(value).toLocaleLowerCase();\n }\n\n private installMatSelectScrollCorrection(): void {\n if (this.restoreMatSelectScroll || (!this.isSearchEnabled() && !this.field.multiple)) {\n return;\n }\n\n const matSelect = this.matSelect() as unknown as (MatSelect & MatSelectInternals) | undefined;\n if (!matSelect) {\n return;\n }\n\n const originalScrollOptionIntoView = matSelect._scrollOptionIntoView;\n matSelect._scrollOptionIntoView = (index: number) => {\n const options = matSelect.options.toArray();\n const option = options[index];\n const optionElement = option?._getHostElement();\n\n if (optionElement?.classList.contains('kles-select-search-option')) {\n const firstOptionIndex = options.findIndex((candidate) => {\n const element = candidate._getHostElement();\n return !candidate.disabled && !element.classList.contains('kles-hidden-selected-option');\n });\n if (firstOptionIndex >= 0 && matSelect._keyManager.activeItemIndex !== firstOptionIndex) {\n matSelect._keyManager.setActiveItem(firstOptionIndex);\n }\n return;\n }\n\n originalScrollOptionIntoView.call(matSelect, index);\n requestAnimationFrame(() => this.keepOptionVisible(option?._getHostElement()));\n };\n\n this.restoreMatSelectScroll = () => {\n matSelect._scrollOptionIntoView = originalScrollOptionIntoView;\n this.restoreMatSelectScroll = undefined;\n };\n }\n\n private keepOptionVisible(activeOption?: HTMLElement): void {\n const panel = this.matSelect()?.panel?.nativeElement as HTMLElement | undefined;\n if (!panel || !activeOption || !panel.contains(activeOption)) {\n return;\n }\n\n const options = panel.querySelectorAll<HTMLElement>('.mat-mdc-option:not(.kles-select-search-option):not(.kles-hidden-selected-option)');\n if (activeOption === options.item(0)) {\n panel.scrollTop = 0;\n return;\n }\n if (activeOption === options.item(options.length - 1)) {\n panel.scrollTop = panel.scrollHeight;\n return;\n }\n\n const panelRect = panel.getBoundingClientRect();\n const fixedHeader = panel.querySelector<HTMLElement>('.selectAll') ?? panel.querySelector<HTMLElement>('.kles-select-search-option');\n const visibleTop = fixedHeader?.getBoundingClientRect().bottom ?? panelRect.top;\n const optionRect = activeOption.getBoundingClientRect();\n if (optionRect.top < visibleTop) {\n panel.scrollTop += optionRect.top - visibleTop;\n } else if (optionRect.bottom > panelRect.bottom) {\n panel.scrollTop += optionRect.bottom - panelRect.bottom;\n }\n }\n\n private selectedValues(): any[] {\n const value = this.group.controls[this.field.name].value;\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n }\n\n private updateSelectAllState(values: any): void {\n if (!this.field.multiple) {\n return;\n }\n\n const selected = Array.isArray(values) ? values : [];\n const enabledOptions = this.visibleOptions.filter((option) => !option?.disabled);\n const selectedCount = enabledOptions.filter((option) => selected.some((value) => this.compareFn(value, option))).length;\n const allSelected = enabledOptions.length > 0 && selectedCount === enabledOptions.length;\n this.selectAllIndeterminate.set(selectedCount > 0 && !allSelected);\n this.selectAllControl.setValue(allSelected, { emitEvent: false });\n }\n}\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\"\n\nexport function autocompleteObjectValidator(optional?: boolean): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n if ((control.value === null || control.value === undefined) && !optional) return { 'invalidAutocompleteObject': { value: control.value } }\n\n if (typeof control.value === 'string') {\n if (control.value === '' && optional) return null;\n return { 'invalidAutocompleteObject': { value: control.value } }\n }\n return null /* valid option selected */\n }\n}\n\nexport function autocompleteStringValidator(validOptions: Array<string>, optional?: boolean): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n if ((control.value === '' || control.value === null) && optional) return null;\n if (validOptions.indexOf(control.value) !== -1) {\n return null /* valid option selected */\n }\n return { 'invalidAutocompleteString': { value: control.value } }\n }\n}","/*\n * Public API Surface of kles-material-dynamicforms\n */\n\nexport * from './lib/kles-material-dynamicforms.module';\n\n/**DIRECTIVE */\nexport * from './lib/directive/dynamic-field.directive';\nexport * from './lib/directive/dynamic-component.directive';\nexport * from './lib/directive/mat-error-message.directive';\nexport * from './lib/directive/mat-error-form.directive';\n\n/*FORMS*/\nexport * from './lib/forms/button-control-base';\nexport * from './lib/forms/button-control.component';\nexport * from './lib/forms/buttonchecker-control.component';\nexport * from './lib/forms/buttonfile-control.component';\nexport * from './lib/forms/file-control.component';\nexport * from './lib/forms/fab-control.component';\nexport * from './lib/forms/mini-fab-control.component';\nexport * from './lib/forms/icon-button-control.component';\nexport * from './lib/forms/indeterminate-checkbox';\n\n/**FIELDS */\nexport * from './lib/fields/badge.component';\nexport * from './lib/fields/button-form.component';\nexport * from './lib/fields/buttonchecker-form.component';\nexport * from './lib/fields/buttonfile-form.component';\nexport * from './lib/fields/checkbox.component';\nexport * from './lib/fields/checkbox-indeterminate.component';\nexport * from './lib/fields/color.component';\nexport * from './lib/fields/date.component';\nexport * from './lib/fields/date-time.component';\nexport * from './lib/fields/field.abstract';\nexport * from './lib/fields/input.component';\nexport * from './lib/fields/input.clearable.component';\nexport * from './lib/fields/file.component';\nexport * from './lib/fields/label.component';\nexport * from './lib/fields/list-field.component';\nexport * from './lib/fields/radio.component';\nexport * from './lib/fields/textarea.component';\nexport * from './lib/fields/text.component';\nexport * from './lib/fields/chip.component';\nexport * from './lib/fields/group.component';\nexport * from './lib/fields/icon.component';\nexport * from './lib/fields/line-break.component';\nexport * from './lib/fields/link.component';\nexport * from './lib/fields/slide-toggle.component';\nexport * from './lib/fields/selection-list.component';\nexport * from './lib/fields/button-toogle-group.component';\nexport * from './lib/fields/array.component';\nexport * from './lib/fields/range.component';\nexport * from './lib/fields/tile.component';\nexport * from './lib/fields/subfields/clear.component';\nexport * from './lib/fields/button-fab.component';\nexport * from './lib/fields/button-mini-fab.component';\nexport * from './lib/fields/button-icon.component';\nexport * from './lib/fields/selection-list.search.component';\nexport * from './lib/fields/subfields/copy.component';\nexport * from './lib/fields/subfields/password-visibility.component';\nexport * from './lib/fields/action-menu.component';\nexport * from './lib/fields/currency.component';\nexport * from './lib/fields/status.component';\nexport * from './lib/fields/chip-grid.component';\nexport * from './lib/fields/select.component'\n\n/**ENUMS */\nexport * from './lib/enums/type.enum';\n\n/**INTERFACES */\nexport * from './lib/interfaces/component.interface';\nexport * from './lib/interfaces/field.interface';\nexport * from './lib/interfaces/field.config.interface';\nexport * from './lib/interfaces/validator.interface';\nexport * from './lib/interfaces/directive.interface';\nexport * from './lib/interfaces/clear-control.interface';\n\n/**MATCHER */\nexport * from './lib/matcher/form-error.matcher';\n\n/**VALIDATORS */\nexport * from './lib/validators/autocomplete.validator';\n\n/**FORM */\nexport * from './lib/dynamic-form.component';\n\n/**PIPES */\nexport * from './lib/pipe/array.pipe';\nexport * from './lib/pipe/transform.pipe';\n\n/**DECORATORS */\nexport * from './lib/decorators/component.decorator';\n\n/**FACTORIES */\nexport * from './lib/factories/field.factory';\n\n/**CONTROLS */\nexport * from './lib/controls/array.control';\nexport * from './lib/controls/control.interface';\nexport * from './lib/controls/default.control';\nexport * from './lib/controls/group.control';\nexport * from './lib/controls/range.control';\nexport * from './lib/controls/control.abstract';\n\n/**SELECTION */\nexport * from './lib/selection/selection-model';\n\n/**UTILS */\nexport * from './lib/utils/destroyable.guard';\n\n/**INTL */\nexport * from './lib/dynamic-form-intl';\n\n/**UI */\nexport * from './lib/ui/array.ui';\nexport * from './lib/ui/default.ui';\nexport * from './lib/ui/group.ui';\nexport * from './lib/ui/ui.abstract';\nexport * from './lib/ui/ui.interface';\nexport * from './lib/ui/ui-state/array-ui-state';\nexport * from './lib/ui/ui-state/control-ui-state';\nexport * from './lib/ui/ui-state/group-ui-state';\nexport * from './lib/ui/ui-state/ui-state.abstract';\n\n/**TOKEN */\nexport * from './lib/token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","i1","i2","takeUntil","i3","startWith","i7","i9","i4","i5","i6","uuidv4","MatLabel","MatFormField","i8","switchMap","MatOption","distinctUntilChanged","shareReplay"],"mappings":"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"}