{"version":3,"file":"juulsgaard-ngx-forms.mjs","sources":["../../../../libs/ngx-forms/src/lib/ngx-forms-directives/directives/form.directive.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-directives/directives/form-layer.directive.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-directives/directives/form-list.directive.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/components/form-card/form-card.component.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/components/form-card/form-card.component.html","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/components/form-flow-wrapper/form-flow-wrapper.component.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/components/form-flow-wrapper/form-flow-wrapper.component.html","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/directives/form-card-title.directive.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/directives/form-card-description.directive.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/directives/form-card-text.directive.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-ui/directives/form-card-warning.directive.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-tools/models/error-state-matchers.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-tools/services/form-context.service.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-tools/models/base-input-component.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-tools/models/base-select-input-component.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-tools/components/form-wrapper/form-wrapper.component.ts","../../../../libs/ngx-forms/src/lib/ngx-forms-tools/components/form-wrapper/form-wrapper.component.html","../../../../libs/ngx-forms/src/lib/ngx-form-dialog/directives/dialog-form.directive.ts","../../../../libs/ngx-forms/src/services/form-input-registry.service.ts","../../../../libs/ngx-forms/src/directives/form-input.directive.ts","../../../../libs/ngx-forms/src/directives/ngx-form-field.directive.ts","../../../../libs/ngx-forms/src/directives/ngx-input.directive.ts","../../../../libs/ngx-forms/src/components/form-error-state/form-error-state.component.ts","../../../../libs/ngx-forms/src/components/form-error-state/form-error-state.component.html","../../../../libs/ngx-forms/src/components/form-errors/form-errors.component.ts","../../../../libs/ngx-forms/src/components/form-errors/form-errors.component.html","../../../../libs/ngx-forms/src/components/form-header/form-header.component.ts","../../../../libs/ngx-forms/src/components/form-header/form-header.component.html","../../../../libs/ngx-forms/src/components/form-submit/form-submit.component.ts","../../../../libs/ngx-forms/src/components/form-submit/form-submit.component.html","../../../../libs/ngx-forms/src/lib/ngx-form-dialog/components/form-dialog/form-dialog.component.ts","../../../../libs/ngx-forms/src/lib/ngx-form-dialog/components/form-dialog/form-dialog.component.html","../../../../libs/ngx-forms/src/juulsgaard-ngx-forms.ts"],"sourcesContent":["import {\r\n  Directive, effect, EmbeddedViewRef, input, InputSignal, InputSignalWithTransform, TemplateRef, ViewContainerRef\r\n} from '@angular/core';\r\nimport {FormRoot, FormUnit, isFormRoot} from \"@juulsgaard/ngx-forms-core\";\r\n\r\n@Directive({\r\n  selector: '[ngxForm]',\r\n  standalone: true\r\n})\r\nexport class FormDirective<TControls extends Record<string, FormUnit>> {\r\n\r\n  form: InputSignalWithTransform<\r\n    FormRoot<TControls, any>,\r\n    FormRoot<TControls, any> | { readonly form: FormRoot<TControls, any> }\r\n  > = input.required({\r\n    alias: 'ngxForm',\r\n    transform: (form: FormRoot<TControls, any>|{readonly form: FormRoot<TControls, any>}) => isFormRoot(form) ? form : form.form\r\n  });\r\n\r\n  readonly show: InputSignal<boolean> = input(true, {alias: 'ngxFormWhen'});\r\n\r\n  view?: EmbeddedViewRef<FormDirectiveContext<TControls>>\r\n\r\n  constructor(\r\n    private templateRef: TemplateRef<FormDirectiveContext<TControls>>,\r\n    private viewContainer: ViewContainerRef\r\n  ) {\r\n\r\n    effect(() => {\r\n      if (!this.show()) {\r\n        this.view?.destroy();\r\n        this.view = undefined;\r\n        return;\r\n      }\r\n\r\n      if (!this.view) {\r\n        const context = {ngxForm: this.form().controls()};\r\n        this.view = this.viewContainer.createEmbeddedView(this.templateRef, context);\r\n        return;\r\n      }\r\n\r\n      this.view.context.ngxForm = this.form().controls();\r\n      this.view.markForCheck();\r\n    });\r\n  }\r\n\r\n  get control() {\r\n    return this.form();\r\n  }\r\n\r\n  static ngTemplateContextGuard<TControls extends Record<string, FormUnit>>(\r\n    directive: FormDirective<TControls>,\r\n    context: unknown\r\n  ): context is FormDirectiveContext<TControls> {\r\n    return true;\r\n  }\r\n}\r\n\r\ninterface FormDirectiveContext<TControls extends Record<string, FormUnit>> {\r\n  ngxForm: TControls;\r\n}\r\n","import {Directive, effect, EmbeddedViewRef, input, InputSignal, TemplateRef, ViewContainerRef} from '@angular/core';\r\nimport {FormLayer, FormUnit} from \"@juulsgaard/ngx-forms-core\";\r\n\r\n@Directive({\r\n  selector: '[ngxFormLayer]',\r\n  standalone: true\r\n})\r\nexport class FormLayerDirective<TControls extends Record<string, FormUnit>> {\r\n\r\n  readonly layer: InputSignal<FormLayer<TControls, any>> = input.required({alias: 'ngxFormLayer'});\r\n\r\n  readonly show: InputSignal<boolean> = input(true, {alias: 'ngxFormLayerWhen'});\r\n\r\n  view?: EmbeddedViewRef<FormLayerDirectiveContext<TControls>>;\r\n\r\n  constructor(\r\n    private templateRef: TemplateRef<FormLayerDirectiveContext<TControls>>,\r\n    private viewContainer: ViewContainerRef\r\n  ) {\r\n\r\n    effect(() => {\r\n      if (!this.show()) {\r\n        this.view?.destroy();\r\n        this.view = undefined;\r\n        return;\r\n      }\r\n\r\n      if (!this.view) {\r\n        const context = {ngxFormLayer: this.layer().controls()};\r\n        this.view = this.viewContainer.createEmbeddedView(this.templateRef, context);\r\n        return;\r\n      }\r\n\r\n      this.view.context.ngxFormLayer = this.layer().controls();\r\n      this.view.markForCheck();\r\n    });\r\n  }\r\n\r\n  static ngTemplateContextGuard<TControls extends Record<string, FormUnit>>(\r\n    directive: FormLayerDirective<TControls>,\r\n    context: unknown\r\n  ): context is FormLayerDirectiveContext<TControls> {\r\n    return true;\r\n  }\r\n}\r\n\r\ninterface FormLayerDirectiveContext<TControls extends Record<string, FormUnit>> {\r\n  ngxFormLayer: TControls;\r\n}\r\n","import {Directive, effect, EmbeddedViewRef, input, InputSignal, TemplateRef, ViewContainerRef} from \"@angular/core\";\r\nimport {ControlFormLayer, FormList, FormUnit} from \"@juulsgaard/ngx-forms-core\";\r\nimport {arrToSet} from \"@juulsgaard/ts-tools\";\r\n\r\n@Directive({\r\n  selector: '[ngxFormList][ngxFormListIn]',\r\n  standalone: true\r\n})\r\nexport class FormListDirective<TControls extends Record<string, FormUnit>> {\r\n\r\n  readonly list: InputSignal<FormList<TControls, any, any>> = input.required<FormList<TControls, any, any>>({alias: 'ngxFormListIn'});\r\n\r\n  readonly show: InputSignal<boolean> = input(true, {alias: 'ngxFormListWhen'});\r\n\r\n  views = new Map<ControlFormLayer<TControls>, EmbeddedViewRef<FormListDirectiveContext<TControls>>>();\r\n\r\n  constructor(\r\n    private templateRef: TemplateRef<FormListDirectiveContext<TControls>>,\r\n    private viewContainer: ViewContainerRef\r\n  ) {\r\n\r\n    effect(() => {\r\n      if (!this.show()) {\r\n        this.clear();\r\n        return;\r\n      }\r\n\r\n      const list = this.list();\r\n      const controls = list.controls();\r\n      const controlList = controls.map(x => x.controls());\r\n      const controlSet = arrToSet(controls);\r\n\r\n      // Remove outdated views\r\n      for (const [layer, view] of this.views) {\r\n        if (controlSet.has(layer)) continue;\r\n        view.destroy();\r\n        this.views.delete(layer);\r\n      }\r\n\r\n      // Insert or update views\r\n      let index = -1;\r\n      for (const control of controlSet) {\r\n        index++;\r\n        let view = this.views.get(control);\r\n\r\n        if (view) {\r\n          this.viewContainer.move(view, index);\r\n          const changed = view.context.update(control, index, controlList);\r\n          if (changed) view.markForCheck();\r\n          continue;\r\n        }\r\n\r\n        const context = new FormListDirectiveContext(control, index, controlList);\r\n        view = this.viewContainer.createEmbeddedView(this.templateRef, context, {index});\r\n        this.views.set(control, view);\r\n      }\r\n    });\r\n  }\r\n\r\n  private clear() {\r\n    for (const [_, view] of this.views) {\r\n      view.destroy();\r\n    }\r\n    this.views.clear();\r\n  }\r\n\r\n  static ngTemplateContextGuard<TControls extends Record<string, FormUnit>>(\r\n    directive: FormListDirective<TControls>,\r\n    context: unknown\r\n  ): context is FormListDirectiveContext<TControls> {\r\n    return true;\r\n  }\r\n}\r\n\r\nclass FormListDirectiveContext<TControls extends Record<string, FormUnit>> {\r\n\r\n  $implicit: TControls;\r\n  ngxFormListIn: TControls[];\r\n  index: number;\r\n  layer: ControlFormLayer<TControls>;\r\n\r\n  constructor(layer: ControlFormLayer<TControls>, index: number, list: TControls[]) {\r\n    this.layer = layer;\r\n    this.$implicit = layer.controls();\r\n    this.index = index;\r\n    this.ngxFormListIn = list;\r\n  }\r\n\r\n  update(layer: ControlFormLayer<TControls>, index: number, list: TControls[]): boolean {\r\n    let changed = false;\r\n\r\n    if (this.layer != layer) {\r\n      this.layer = layer;\r\n      changed = true;\r\n    }\r\n\r\n    const controls = layer.controls();\r\n    if (this.$implicit !== controls) {\r\n      this.$implicit = controls;\r\n      changed = true;\r\n    }\r\n\r\n    if (this.index != index) {\r\n      this.index = index;\r\n      changed = true;\r\n    }\r\n\r\n    if (this.ngxFormListIn != list) {\r\n      this.ngxFormListIn = list;\r\n      changed = true;\r\n    }\r\n\r\n    return changed;\r\n  }\r\n}\r\n","import {ChangeDetectionStrategy, Component, input, InputSignal, ViewEncapsulation} from '@angular/core';\r\nimport {IconDirective} from \"@juulsgaard/ngx-ui\";\r\nimport {NgIf} from \"@angular/common\";\r\n\r\n\r\n@Component({\r\n  selector: 'ngx-form-card',\r\n  templateUrl: './form-card.component.html',\r\n  styleUrls: ['./form-card.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    IconDirective,\r\n    NgIf\r\n  ],\r\n  standalone: true\r\n})\r\nexport class FormCardComponent {\r\n\r\n  readonly icon: InputSignal<string | undefined> = input<string>();\r\n\r\n}\r\n","\r\n<div class=\"bubble\">\r\n    <div class=\"inner-bubble\">\r\n        <ngx-icon *ngIf=\"icon() as icon\" [icon]=\"icon\"/>\r\n    </div>\r\n</div>\r\n\r\n<div class=\"card-content\">\r\n    <ng-content/>\r\n</div>\r\n","import {ChangeDetectionStrategy, Component, input, InputSignal, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ngx-form-flow',\r\n  templateUrl: './form-flow-wrapper.component.html',\r\n  styleUrls: ['./form-flow-wrapper.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    '[style.grid-template-columns]': `'repeat(auto-fit, minmax(' + minWidth() + 'px, 1fr))'`\r\n  },\r\n  standalone: true\r\n})\r\nexport class FormFlowWrapperComponent {\r\n\r\n  readonly minWidth: InputSignal<number> = input(200);\r\n\r\n}\r\n","<ng-content/>\r\n","import {Directive} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[ngxFormCardTitle]',\r\n  host: {class: 'ngx-form-card-title'}\r\n})\r\nexport class NgxFormCardTitleDirective {\r\n\r\n}\r\n","import {Directive} from \"@angular/core\";\r\n\r\n@Directive({\r\n  selector: '[ngxFormCardDescription]',\r\n  host: {class: 'ngx-form-card-description'}\r\n})\r\nexport class NgxFormCardDescriptionDirective {\r\n\r\n}\r\n","import {Directive} from \"@angular/core\";\r\n\r\n@Directive({\r\n  selector: '[ngxFormCardText]',\r\n  host: {class: 'ngx-form-card-text'}\r\n})\r\nexport class NgxFormCardTextDirective {\r\n\r\n}\r\n","import {Directive} from \"@angular/core\";\r\n\r\n@Directive({\r\n  selector: '[ngxFormCardWarning]',\r\n  host: {class: 'ngx-form-card-warning'}\r\n})\r\nexport class NgxFormCardWarningDirective {\r\n\r\n}\r\n","import {ErrorStateMatcher} from \"@angular/material/core\";\r\nimport {FormGroupDirective, NgForm, UntypedFormControl} from \"@angular/forms\";\r\n\r\nexport class TouchedErrorStateMatcher implements ErrorStateMatcher {\r\n\r\n    isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n        return control?.touched ?? false;\r\n    }\r\n\r\n}\r\nexport const touchedErrorStateMatcher = new TouchedErrorStateMatcher();\r\n\r\nexport class AlwaysErrorStateMatcher implements ErrorStateMatcher {\r\n\r\n    isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n       return true;\r\n    }\r\n\r\n}\r\nexport const alwaysErrorStateMatcher = new AlwaysErrorStateMatcher();\r\n\r\nexport class NeverErrorStateMatcher implements ErrorStateMatcher {\r\n\r\n    isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n        return false;\r\n    }\r\n\r\n}\r\nexport const neverErrorStateMatcher = new NeverErrorStateMatcher();\r\n","import {Injectable, Signal} from '@angular/core';\r\n\r\n@Injectable()\r\nexport abstract class FormContext {\r\n  abstract readonly readonly: Signal<boolean>;\r\n}\r\n","import {\r\n    afterNextRender, booleanAttribute, computed, Directive, effect, ElementRef, HostBinding, inject, input, InputSignal,\r\n    InputSignalWithTransform, model, ModelSignal, Signal, signal, viewChild, viewChildren, WritableSignal\r\n} from \"@angular/core\";\r\nimport {EMPTY, Observable, OperatorFunction, Subject, Subscribable, Subscription, switchMap} from \"rxjs\";\r\nimport {NgModel} from \"@angular/forms\";\r\nimport {ThemePalette} from '@angular/material/core';\r\nimport {FormNode, FormNodeEvent, InputEvents} from \"@juulsgaard/ngx-forms-core\";\r\nimport {alwaysErrorStateMatcher, neverErrorStateMatcher, touchedErrorStateMatcher} from \"./error-state-matchers\";\r\nimport {FormContext} from \"../services/form-context.service\";\r\nimport {MatFormFieldAppearance} from \"@angular/material/form-field\";\r\nimport {takeUntilDestroyed, toObservable, toSignal} from \"@angular/core/rxjs-interop\";\r\nimport {ScrollContext} from \"@juulsgaard/ngx-tools\";\r\nimport {scrollToElement} from \"@juulsgaard/ts-tools\";\r\n\r\n@Directive()\r\nexport abstract class BaseInputComponent<TIn, TVal> {\r\n\r\n    @HostBinding('class.ngx-form-input') readonly baseClass = true;\r\n\r\n    protected inputElementRef: Signal<ElementRef<HTMLElement|HTMLTextAreaElement|HTMLInputElement>|undefined> =\r\n      viewChild('input', {read: ElementRef});\r\n\r\n    /** The main input element */\r\n    protected inputElement: Signal<HTMLElement|HTMLTextAreaElement|HTMLInputElement|undefined> =\r\n      computed(() => this.inputElementRef()?.nativeElement);\r\n    /** A list of all NgModels in the input */\r\n    private ngModels = viewChildren(NgModel);\r\n\r\n    //<editor-fold desc=\"Required\">\r\n    readonly requiredIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'required'});\r\n    readonly hideRequired: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n    protected required = computed(() => {\r\n        if (this.hideRequired()) return false;\r\n        if (this.requiredIn()) return true;\r\n        return this.control()?.required ?? false;\r\n    });\r\n    //</editor-fold>\r\n\r\n    private _touched = signal(false);\r\n    readonly touched = computed(() => {\r\n        const node = this.control();\r\n        if (node) return node.touched();\r\n        return this._touched();\r\n    });\r\n\r\n    readonly changed = computed(() => this.control()?.changed() ?? false);\r\n\r\n    markAsTouched() {\r\n        this.control()?.markAsTouched();\r\n        this.ngModels().forEach(x => x.control.markAsTouched());\r\n        this._touched.set(true);\r\n    }\r\n\r\n    markAsUntouched() {\r\n        this.control()?.markAsUntouched();\r\n        this.ngModels().forEach(x => x.control.markAsUntouched());\r\n        this._touched.set(false);\r\n    }\r\n\r\n    //<editor-fold desc=\"Errors\">\r\n    /** The internal error state used for input level errors */\r\n    protected inputError = signal<string|undefined>(undefined);\r\n    private inputErrors = computed(() => {\r\n        const error = this.inputError();\r\n        if (!error) return [];\r\n        return [error];\r\n    });\r\n\r\n    readonly errors = computed(() => [...this.inputErrors(), ...this.control()?.errors() ?? []]);\r\n    readonly hasError = computed(() => !!this.errors().length);\r\n    protected readonly errorMatcher = computed(() => {\r\n        if (!this.hasError()) return neverErrorStateMatcher;\r\n        if (this.touched() || this.changed()) return alwaysErrorStateMatcher;\r\n        return touchedErrorStateMatcher;\r\n    });\r\n\r\n    readonly canShowError = computed(() => this.touched() || this.changed());\r\n    readonly showError = computed(() => this.hasError() && this.canShowError());\r\n    //</editor-fold>\r\n\r\n    //<editor-fold desc=\"Warnings\">\r\n    /** The internal error state used for input level warnings */\r\n    protected inputWarning = signal<string|undefined>(undefined);\r\n    private inputWarnings = computed(() => {\r\n        const error = this.inputWarning();\r\n        if (!error) return [];\r\n        return [error];\r\n    });\r\n\r\n    readonly warnings = computed(() => [...this.inputWarnings(), ...this.control()?.warnings() ?? []]);\r\n    readonly hasWarning = computed(() => !!this.warnings().length);\r\n    //</editor-fold>\r\n\r\n    /** A controls that contains the input value / state */\r\n    readonly control: InputSignal<FormNode<TIn> | FormNode<TIn|undefined> | undefined> = input<FormNode<TIn>|FormNode<TIn|undefined>>();\r\n\r\n    //<editor-fold desc=\"External Value\">\r\n    readonly valueIn: ModelSignal<TIn | undefined> = model<TIn | undefined>(undefined, {alias: 'value'});\r\n\r\n    readonly valueIn$: InputSignalWithTransform<\r\n      Subject<TIn|undefined> | Observable<TIn|undefined> | undefined,\r\n      Subject<TIn|undefined> | Subscribable<TIn|undefined> | undefined | null\r\n    > = input(undefined, {\r\n        alias: 'value$',\r\n        transform: (value$: Subject<TIn|undefined>|Subscribable<TIn|undefined>|undefined|null) => {\r\n            if (value$ == undefined) return undefined;\r\n            if (value$ instanceof Subject) return value$;\r\n            return new Observable<TIn|undefined>(subscriber => value$.subscribe(subscriber));\r\n        }\r\n    });\r\n\r\n    private externalSubject = computed(() => {\r\n        const ext$ = this.valueIn$();\r\n        if (ext$ instanceof Subject) return ext$;\r\n        return undefined;\r\n    });\r\n\r\n    protected externalValue: Signal<TIn|undefined>;\r\n    //</editor-fold>\r\n\r\n    //<editor-fold desc=\"Value\">\r\n\r\n    protected _value: WritableSignal<TVal>;\r\n\r\n    /** The value representing the internal input state */\r\n    protected get value() {return this._value()}\r\n    /** The value representing the internal input state */\r\n    protected set value(val: TVal) {\r\n        this._value.set(val);\r\n\r\n        const value = this.postprocessValue(val);\r\n        this.lastValue = {val: value};\r\n\r\n        this.control()?.setValue(value);\r\n        this.externalSubject()?.next(value);\r\n        this.valueIn.set(value);\r\n    }\r\n    //</editor-fold>\r\n\r\n    //<editor-fold desc=\"Disabled\">\r\n    readonly disabledIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'disabled'});\r\n    /** Marks that the input should be shown as disabled */\r\n    protected disabled = computed(() => this.control()?.disabled() || this.disabledIn());\r\n\r\n    /** Disable hiding the input when it's disabled */\r\n    readonly showDisabledIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'showDisabled'});\r\n    protected showDisabled = computed(() => this.control()?.showDisabledField || this.showDisabledIn());\r\n\r\n    /** Marks whether the input should be displayed or not */\r\n    protected show = computed(() => this.showDisabled() || !this.disabled());\r\n    //</editor-fold>\r\n\r\n    //<editor-fold desc=\"Readonly\">\r\n    private formScope = inject(FormContext, {optional: true});\r\n\r\n    readonly readonlyIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'readonly'});\r\n    protected readonly = computed(() => {\r\n        if (this.readonlyIn()) return true;\r\n        if (this.formScope && this.formScope.readonly()) return true;\r\n        const control = this.control();\r\n        if (control && control.readonly) return true;\r\n        return false;\r\n    });\r\n    //</editor-fold>\r\n\r\n    //<editor-fold desc=\"Configuration\">\r\n\r\n    /** The input label */\r\n    readonly labelIn: InputSignal<string | undefined> = input<string|undefined>(undefined, {alias: 'label'});\r\n    protected label = computed(() => this.labelIn() ?? this.control()?.label);\r\n\r\n    /** A placeholder text, if not set the label will be used */\r\n    readonly placeholderIn: InputSignal<string | undefined> = input<string|undefined>(undefined, {alias: 'placeholder'});\r\n    protected placeholder = computed(() => this.placeholderIn() ?? this.label() ?? '');\r\n\r\n    /** Input to tell the browser what type of autocomplete the input should use */\r\n    readonly autocompleteIn: InputSignal<string | undefined> = input<string|undefined>(undefined, {alias: 'autocomplete'});\r\n    protected autocomplete = computed(() => this.autocompleteIn() ?? this.control()?.autocomplete);\r\n\r\n    /** Focus the input when it's first created */\r\n    readonly autofocusIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'autofocus'});\r\n    protected autofocus = computed(() => this.autofocusIn() || this.control()?.autoFocus);\r\n\r\n    /** Add a tooltip with additional information about the input */\r\n    readonly tooltipIn: InputSignal<string | undefined> = input<string|undefined>(undefined, {alias: 'tooltip'});\r\n    protected tooltip: Signal<string|undefined> = computed(() => this.tooltipIn() ?? this.control()?.tooltip);\r\n\r\n    /** Set the theme color for the input */\r\n    readonly colorIn: InputSignal<ThemePalette> = input<ThemePalette>('primary', {alias: 'color'});\r\n    protected color = computed(() => this.colorIn());\r\n\r\n    /** Change the material input style */\r\n    readonly appearanceIn: InputSignal<MatFormFieldAppearance> = input<MatFormFieldAppearance>('outline', {alias: 'appearance'});\r\n    protected appearance = computed(() => this.appearanceIn());\r\n\r\n    /** Hide the required asterisk */\r\n    readonly directionIn: InputSignal<\"ltr\" | \"rtl\" | \"auto\" | undefined> = input<'ltr'|'rtl'|'auto'|undefined>(undefined, {alias: 'direction'});\r\n    protected direction = computed(() => this.directionIn());\r\n    //</editor-fold>\r\n\r\n    private lastValue?: {val: TIn|undefined};\r\n    private element = inject(ElementRef<HTMLElement>).nativeElement;\r\n    private scrollContainer = inject(ScrollContext, {optional: true});\r\n\r\n    protected constructor() {\r\n        effect(() => this.element.classList.toggle('hidden', !this.show()));\r\n        effect(() => this.element.classList.toggle('read-only', this.readonly()));\r\n\r\n        this._value = signal(this.getInitialValue());\r\n\r\n        const valueSignals$ = toObservable(this.valueIn$).pipe(mapObservableToSignal());\r\n        const valueSignals = toSignal(valueSignals$, {initialValue: undefined});\r\n\r\n        this.externalValue = computed(() => {\r\n            const control = this.control();\r\n            if (control) return control.state();\r\n\r\n            const asyncValue = valueSignals();\r\n            if (asyncValue) return asyncValue();\r\n\r\n            return this.valueIn();\r\n        });\r\n\r\n        effect(() => {\r\n            const value = this.externalValue();\r\n\r\n            if (this.lastValue) {\r\n                const lastValue = this.lastValue.val;\r\n                this.lastValue = undefined;\r\n                if (lastValue === value) return;\r\n            }\r\n\r\n            this._value.set(this.preprocessValue(value));\r\n        });\r\n\r\n        // Handle control resets\r\n        toObservable(this.control).pipe(\r\n          switchMap(x => x?.reset$ ?? EMPTY),\r\n          takeUntilDestroyed()\r\n        ).subscribe(() => {\r\n            this.ngModels().forEach(x => {\r\n                x.control.markAsPristine();\r\n                x.control.markAsUntouched();\r\n            });\r\n        });\r\n\r\n        // Handle control actions\r\n        toObservable(this.control).pipe(\r\n          switchMap(x => x?.actions$ ?? EMPTY),\r\n          takeUntilDestroyed()\r\n        ).subscribe(action => this.handleAction(action));\r\n\r\n        afterNextRender(() => {\r\n          if (this.autofocus()) this.focus()\r\n        });\r\n    }\r\n\r\n    //<editor-fold desc=\"Actions\">\r\n    /** Focus the input */\r\n    focus(options?: FocusOptions) {\r\n        this.inputElement()?.focus(options);\r\n    }\r\n\r\n    /** Select the contents of the input */\r\n    select() {\r\n        const input = this.inputElement();\r\n        if (!input) return;\r\n        if (!('select' in input)) return;\r\n        input.select();\r\n    }\r\n\r\n    scrollTo() {\r\n        scrollToElement(this.element, {container: this.scrollContainer?.scrollContainer(), offset: 40});\r\n    }\r\n    //</editor-fold>\r\n\r\n    //<editor-fold desc=\"Value processing\">\r\n    /**\r\n     * Processes the value from the FormNode before it is assigned to the inputValue prop\r\n     * @param value The value to processed\r\n     */\r\n    abstract preprocessValue(value: TIn|undefined): TVal;\r\n\r\n    /**\r\n     * Processes the value generated by the input component and returns the value that is stored in the FormNode\r\n     * @param value The value to be processed\r\n     */\r\n    abstract postprocessValue(value: TVal): TIn|undefined;\r\n\r\n    /**\r\n     * Generate an initial value for the internal state\r\n     */\r\n    getInitialValue(): TVal {\r\n        return this.preprocessValue(undefined);\r\n    }\r\n    //</editor-fold>\r\n\r\n    /** Handle events dispatched from the FormNode */\r\n    protected handleAction(event: FormNodeEvent) {\r\n        switch (event) {\r\n            case InputEvents.Focus:\r\n                this.focus({preventScroll: true});\r\n                break;\r\n            case InputEvents.Select:\r\n                this.select();\r\n                break;\r\n            case InputEvents.ScrollTo:\r\n                this.scrollTo();\r\n                break;\r\n        }\r\n    }\r\n}\r\n\r\nfunction mapObservableToSignal<T>(): OperatorFunction<Observable<T>|undefined, Signal<T|undefined>|undefined> {\r\n    return (source) => new Observable<Signal<T|undefined>|undefined>(subscriber => {\r\n        let itemSub: Subscription|undefined;\r\n\r\n        const sub = source.subscribe({\r\n            next: val$ => {\r\n                itemSub?.unsubscribe();\r\n                if (!val$) {\r\n                    itemSub = undefined;\r\n                    subscriber.next(undefined);\r\n                    return;\r\n                }\r\n                const sig = signal<T|undefined>(undefined);\r\n                itemSub = val$.subscribe(x => sig.set(x));\r\n                subscriber.next(sig);\r\n            }\r\n        });\r\n\r\n        return () => {\r\n          sub.unsubscribe();\r\n          itemSub?.unsubscribe();\r\n        };\r\n    });\r\n}\r\n","import {\r\n  booleanAttribute, computed, Directive, input, InputSignal, InputSignalWithTransform, Signal\r\n} from \"@angular/core\";\r\nimport {BaseInputComponent} from \"./base-input-component\";\r\nimport {getSelectorFn, isString, MapFunc, Selection} from \"@juulsgaard/ts-tools\";\r\nimport {FormNode, FormSelectNode, isFormSelectNode} from \"@juulsgaard/ngx-forms-core\";\r\nimport {of, startWith, switchMap} from \"rxjs\";\r\nimport {toObservable, toSignal} from \"@angular/core/rxjs-interop\";\r\n\r\n@Directive()\r\nexport abstract class BaseSelectInputComponent<TValue, TItem, TMultiple extends boolean, TState>\r\n  extends BaseInputComponent<TMultiple extends true ? TValue[] : TValue, TState> {\r\n\r\n  abstract readonly multiple: TMultiple;\r\n\r\n  declare readonly control: InputSignal<\r\n    FormNode<TMultiple extends true ? TValue[] : TValue> |\r\n    FormNode<(TMultiple extends true ? TValue[] : TValue) | undefined> |\r\n    FormSelectNode<TValue, TItem, TMultiple> |\r\n    undefined\r\n  >;\r\n\r\n  protected selectControl: Signal<FormSelectNode<TValue, TItem, TMultiple> | undefined> = computed(\r\n    () => {\r\n      const control = this.control();\r\n      if (control && isFormSelectNode(control) && control.multiple === this.multiple) {\r\n        return control as FormSelectNode<TValue, TItem, TMultiple> | undefined;\r\n      }\r\n      return undefined\r\n    }\r\n  );\r\n\r\n  private controlItems$ = toObservable(this.selectControl).pipe(\r\n    switchMap(x => x?.items$.pipe(startWith(undefined)) ?? of(undefined))\r\n  );\r\n  private controlItems = toSignal(this.controlItems$);\r\n  readonly itemsIn: InputSignal<TItem[] | undefined> = input<TItem[] | undefined>(undefined, {alias: 'items'});\r\n  protected items: Signal<TItem[]> = computed(() => this.itemsIn() ?? this.controlItems() ?? []);\r\n\r\n  protected readonly mappedItems: Signal<FormSelectValue<TItem, TValue>[]> = computed(() => {\r\n    const mapValue = this.getValue();\r\n    const mapOption = this.getOption();\r\n    return this.items().map(x => new FormSelectValue(x, mapValue?.(x), mapOption?.(x)));\r\n  });\r\n\r\n\r\n  protected empty = computed(() => this.items().length <= 0);\r\n\r\n  readonly hideEmptyIn: InputSignalWithTransform<boolean, unknown> = input(\r\n    false,\r\n    {transform: booleanAttribute, alias: 'hideEmpty'}\r\n  );\r\n  protected hideEmpty = computed(() => this.selectControl()?.hideWhenEmpty || this.hideEmptyIn());\r\n  protected hidden = computed(() => this.hideEmpty() && this.empty());\r\n\r\n  readonly clearableIn: InputSignalWithTransform<boolean, unknown> = input(\r\n    false,\r\n    {transform: booleanAttribute, alias: 'clearable'}\r\n  );\r\n  protected clearable = computed(() => this.selectControl()?.clearable || this.clearableIn());\r\n\r\n  readonly selectGroupsIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n  protected selectGroups = computed(() => this.selectGroupsIn());\r\n\r\n  constructor() {\r\n    super();\r\n    this._value.set(this.preprocessValue(undefined));\r\n  }\r\n\r\n  //<editor-fold desc=\"Value Mapping\">\r\n  readonly bindValue: InputSignalWithTransform<\r\n    MapFunc<TItem, TValue>|undefined,\r\n    string | Selection<TItem, TValue> | undefined | null\r\n  > = input(\r\n    undefined, {\r\n      transform: (binding: string | Selection<TItem, TValue> | undefined | null): MapFunc<TItem, TValue> => {\r\n        // Typeless for backwards compatibility\r\n        if (binding == null) return (x: TItem) => x as unknown as TValue;\r\n        if (isString(binding)) return (x: any) => x[binding];\r\n        return getSelectorFn(binding);\r\n      }\r\n    }\r\n  );\r\n\r\n  private controlBindValue = computed(() => {\r\n    const control = this.selectControl();\r\n    if (!control) return undefined;\r\n    return getSelectorFn(control.bindValue);\r\n  });\r\n\r\n  protected getValue: Signal<MapFunc<TItem, TValue>|undefined> = computed(() => this.controlBindValue() ?? this.bindValue());\r\n\r\n  protected mapValue(item: TItem): TValue {\r\n    const map = this.getValue();\r\n    if (map) return map(item);\r\n    return String(item) as TValue;\r\n  }\r\n  //</editor-fold>\r\n\r\n  //<editor-fold desc=\"Label Mapping\">\r\n  readonly bindLabel: InputSignalWithTransform<\r\n    MapFunc<TItem, string> | undefined,\r\n    string | Selection<TItem, string> | undefined | null\r\n  > = input(\r\n    undefined, {\r\n      transform: (binding: string | Selection<TItem, string> | undefined | null): MapFunc<TItem, string>|undefined => {\r\n        if (binding == null) return undefined;\r\n        // Typeless for backwards compatibility\r\n        if (isString(binding)) return (x: any) => x[binding];\r\n        return getSelectorFn(binding);\r\n      }\r\n    }\r\n  );\r\n\r\n  private controlBindLabel = computed(() => {\r\n    const control = this.selectControl();\r\n    if (!control?.bindLabel) return undefined;\r\n    return getSelectorFn(control.bindLabel);\r\n  });\r\n\r\n  protected getLabel: Signal<MapFunc<TItem, string>|undefined> = computed(() => this.controlBindLabel() ?? this.bindLabel());\r\n\r\n  protected mapLabel(item: TItem) {\r\n    const map = this.getLabel();\r\n    if (map) return map(item);\r\n    return String(item);\r\n  }\r\n  //</editor-fold>\r\n\r\n  //<editor-fold desc=\"Option Mapping\">\r\n  readonly bindOption: InputSignalWithTransform<\r\n    MapFunc<TItem, string> | undefined,\r\n    string | Selection<TItem, string> | undefined | null\r\n  > = input(undefined, {\r\n    transform: (binding: string | Selection<TItem, string> | undefined | null): MapFunc<TItem, string> | undefined => {\r\n      if (binding == null) return undefined;\r\n      // Typeless for backwards compatibility\r\n      if (isString(binding)) return (x: any) => x[binding];\r\n      return getSelectorFn(binding);\r\n    }\r\n  });\r\n\r\n  private controlBindOption = computed(() => {\r\n    const control = this.selectControl();\r\n    if (!control?.bindOption) return undefined;\r\n    return getSelectorFn(control.bindOption);\r\n  });\r\n\r\n  protected getOption: Signal<MapFunc<TItem, string>|undefined> = computed(() => this.controlBindOption() ?? this.bindOption() ?? this.getLabel());\r\n\r\n  protected mapOption(item: TItem) {\r\n    const map = this.getOption();\r\n    if (map) return map(item);\r\n    return String(item);\r\n  }\r\n  //</editor-fold>\r\n\r\n  readonly groupByIn: InputSignalWithTransform<\r\n    MapFunc<TItem, string> | undefined,\r\n    string | Selection<TItem, string> | undefined | null\r\n  > = input(undefined, {\r\n    alias: 'groupBy',\r\n    transform: (grouping: string | Selection<TItem, string> | undefined | null): MapFunc<TItem, string> | undefined => {\r\n      if (grouping == null) return undefined;\r\n      // Typeless for backwards compatibility\r\n      if (isString(grouping)) return (x: any) => x[grouping];\r\n      return getSelectorFn(grouping);\r\n    }\r\n  });\r\n\r\n  protected groupBy: Signal<MapFunc<TItem, string> | undefined> = computed(() => this.groupByIn());\r\n\r\n  override getInitialValue(): TState {\r\n    return undefined as TState;\r\n  }\r\n}\r\n\r\nexport class FormSelectValue<T, TId> {\r\n  readonly id: TId;\r\n  readonly name: string;\r\n\r\n  constructor(readonly value: T, id?: TId, name?: string) {\r\n    this.id = id ?? String(value) as TId;\r\n    this.name = name ?? String(this.id);\r\n  }\r\n}\r\n\r\n@Directive()\r\nexport abstract class BaseMultiSelectInputComponent<TValue, TItem, TState>\r\n  extends BaseSelectInputComponent<TValue, TItem, true, TState> {\r\n\r\n  override readonly multiple = true;\r\n\r\n  override readonly control: InputSignal<\r\n    FormNode<TValue[]> |\r\n    FormNode<TValue[]|undefined> |\r\n    FormSelectNode<TValue, TItem, true> |\r\n    undefined\r\n  > = input<\r\n    FormNode<TValue[]> |\r\n    FormNode<TValue[]|undefined> |\r\n    FormSelectNode<TValue, TItem, true>\r\n  >();\r\n\r\n}\r\n\r\n@Directive()\r\nexport abstract class BaseSingleSelectInputComponent<TValue, TItem, TState>\r\n  extends BaseSelectInputComponent<TValue, TItem, false, TState> {\r\n\r\n  override readonly multiple = false;\r\n\r\n  override readonly control: InputSignal<\r\n    FormNode<TValue> |\r\n    FormNode<TValue|undefined> |\r\n    FormSelectNode<TValue, TItem, false> |\r\n    FormSelectNode<TValue|undefined, TItem, false> |\r\n    undefined\r\n  > = input<\r\n    FormNode<TValue> |\r\n    FormNode<TValue|undefined> |\r\n    FormSelectNode<TValue, TItem, false> |\r\n    FormSelectNode<TValue|undefined, TItem, false>\r\n  >();\r\n}\r\n","import {\r\n  booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, input, InputSignalWithTransform, output\r\n} from '@angular/core';\r\nimport {FormContext} from \"../../services/form-context.service\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\n\r\n@Component({\r\n  selector: 'ngx-form-wrapper',\r\n  templateUrl: './form-wrapper.component.html',\r\n  styleUrls: ['./form-wrapper.component.scss'],\r\n  providers: [{provide: FormContext, useExisting: forwardRef(() => FormWrapperComponent)}],\r\n  imports: [\r\n    FormsModule,\r\n    NgTemplateOutlet\r\n  ],\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormWrapperComponent extends FormContext {\r\n\r\n  readonly submitted = output();\r\n\r\n  readonly fieldset: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n  readonly readonly: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n\r\n  constructor() {\r\n    super();\r\n  }\r\n}\r\n","<ng-template #content>\r\n    <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<form (ngSubmit)=\"submitted.emit()\">\r\n    @if (fieldset()) {\r\n        <fieldset [disabled]=\"readonly()\">\r\n            <ng-container *ngTemplateOutlet=\"content\"/>\r\n        </fieldset>\r\n    } @else {\r\n        <ng-container *ngTemplateOutlet=\"content\"/>\r\n    }\r\n</form>\r\n\r\n","import {\r\n  computed, Directive, effect, EmbeddedViewRef, input, InputSignalWithTransform, signal, TemplateRef, ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {BaseFormDialog, FormRoot, FormUnit} from \"@juulsgaard/ngx-forms-core\";\r\nimport {SimpleObject} from \"@juulsgaard/ts-tools\";\r\n\r\n/** Form rendering for a FormDialog. Can only be used inside Form Dialogs */\r\n@Directive({selector: '[ngxDialogForm]', standalone: true})\r\nexport class FormDialogDirective<TControls extends Record<string, FormUnit>> {\r\n\r\n  form: InputSignalWithTransform<\r\n    FormRoot<TControls, SimpleObject>,\r\n    BaseFormDialog<TControls, SimpleObject>\r\n  > = input.required({\r\n    alias: 'dialogForm',\r\n    transform: (dialog: BaseFormDialog<TControls, SimpleObject>) => dialog.form\r\n  });\r\n\r\n  private view?: EmbeddedViewRef<DialogFormContext<TControls>>;\r\n  // Show toggle controlled by Dialog state\r\n  readonly show = signal(false);\r\n\r\n  constructor(\r\n    public readonly viewContainer: ViewContainerRef,\r\n    public readonly template: TemplateRef<DialogFormContext<TControls>>,\r\n  ) {\r\n    const controls = computed(() => this.form().controls());\r\n\r\n    effect(() => {\r\n\r\n      if (!this.show()) {\r\n        this.view?.destroy();\r\n        this.view = undefined;\r\n        return;\r\n      }\r\n\r\n      const _controls = controls();\r\n\r\n      if (!this.view) {\r\n        this.view = this.viewContainer.createEmbeddedView(this.template, {dialogForm: _controls});\r\n        return;\r\n      }\r\n\r\n      this.view.context.dialogForm = _controls;\r\n      this.view.markForCheck();\r\n    });\r\n  }\r\n\r\n  static ngTemplateContextGuard<TControls extends Record<string, FormUnit>>(\r\n    directive: FormDialogDirective<TControls>,\r\n    context: unknown\r\n  ): context is DialogFormContext<TControls> {\r\n    return true;\r\n  }\r\n}\r\n\r\nexport interface DialogFormContext<TControls extends Record<string, FormUnit>> {\r\n  dialogForm: TControls;\r\n}\r\n","import {FormNodeType} from \"@juulsgaard/ngx-forms-core\";\r\nimport {Provider, Type} from \"@angular/core\";\r\nimport {BaseInputComponent} from \"../lib/ngx-forms-tools\";\r\n\r\nexport interface FormInputConfig {\r\n  register(type: FormNodeType, component: Type<BaseInputComponent<any, any>>): this;\r\n}\r\n\r\nclass InternalFormInputConfig implements FormInputConfig {\r\n  readonly map = new Map<FormNodeType, Type<BaseInputComponent<any, any>>>;\r\n\r\n  register(type: FormNodeType, component: Type<BaseInputComponent<any, any>>): this {\r\n    this.map.set(type, component);\r\n    return this;\r\n  }\r\n}\r\n\r\nexport class FormInputRegistry {\r\n\r\n  constructor(private map: Map<FormNodeType, Type<BaseInputComponent<any, any>>>) {\r\n  }\r\n\r\n  getComponent(type: FormNodeType) {\r\n    return this.map.get(type);\r\n  }\r\n}\r\n\r\nexport function provideFormInputs(builder: (cfg: FormInputConfig) => void): Provider {\r\n  const config = new InternalFormInputConfig();\r\n  builder(config);\r\n  return {provide: FormInputRegistry, useValue: new FormInputRegistry(config.map)}\r\n}\r\n","import {\r\n  booleanAttribute, ComponentRef, computed, Directive, effect, inject, input, InputSignal, InputSignalWithTransform,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport {ThemePalette} from \"@angular/material/core\";\r\nimport {MatFormFieldAppearance} from \"@angular/material/form-field\";\r\nimport {AnonFormNode} from \"@juulsgaard/ngx-forms-core\";\r\nimport {FormInputRegistry} from \"../services\";\r\nimport {BaseInputComponent} from \"../lib/ngx-forms-tools\";\r\n\r\n@Directive({\r\n  // eslint-disable-next-line @angular-eslint/directive-selector\r\n  selector: 'form-input',\r\n  standalone: true,\r\n  host: {'[style.display]': '\"none\"'}\r\n})\r\nexport class FormInputDirective {\r\n\r\n  /** The input label */\r\n  readonly label: InputSignal<string | undefined> = input<string>();\r\n\r\n  /** A placeholder text, if not set the label will be used */\r\n  readonly placeholder: InputSignal<string | undefined> = input<string>();\r\n\r\n  /** Input to tell the browser what type of autocomplete the input should use */\r\n  readonly autocomplete: InputSignal<string | undefined> = input<string>();\r\n\r\n  /** Focus the input when it's first created */\r\n  readonly autofocus: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n\r\n  /** Add a tooltip with additional information about the input */\r\n  readonly tooltip: InputSignal<string | undefined> = input<string>();\r\n\r\n  /** Set the theme color for the input */\r\n  readonly color: InputSignal<ThemePalette> = input<ThemePalette>('primary');\r\n\r\n  /** Change the material input style */\r\n  readonly appearance: InputSignal<MatFormFieldAppearance> = input<MatFormFieldAppearance>('outline');\r\n\r\n  /** Hide the required asterisk */\r\n  readonly direction: InputSignal<\"ltr\" | \"rtl\" | \"auto\" | undefined> = input<'ltr' | 'rtl' | 'auto'>();\r\n\r\n  readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n  readonly readonly: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n\r\n  readonly control: InputSignal<AnonFormNode | undefined> = input<AnonFormNode>();\r\n\r\n  private registry = inject(FormInputRegistry);\r\n  private viewContainer = inject(ViewContainerRef);\r\n  private component?: ComponentRef<BaseInputComponent<unknown, unknown>>;\r\n\r\n  constructor() {\r\n    const componentType = computed(() => {\r\n      const control = this.control();\r\n      if (!control) return undefined;\r\n      return this.registry.getComponent(control.type);\r\n    });\r\n\r\n    effect(() => {\r\n      const _componentType = componentType();\r\n\r\n      if (!_componentType) {\r\n        this.component?.destroy();\r\n        this.component = undefined;\r\n        return;\r\n      }\r\n\r\n      if (!this.component) {\r\n        this.component = this.viewContainer.createComponent(_componentType);\r\n      } else if (this.component.componentType !== _componentType) {\r\n        this.component.destroy();\r\n        this.component = this.viewContainer.createComponent(_componentType);\r\n      }\r\n\r\n      this.updateComponentInputs();\r\n    });\r\n  }\r\n\r\n  private updateComponentInputs() {\r\n    const component = this.component;\r\n    if (!component) return;\r\n\r\n    component.setInput('control', this.control());\r\n    component.setInput('appearance', this.appearance());\r\n    component.setInput('color', this.color());\r\n    component.setInput('readonly', this.readonly());\r\n    component.setInput('autocomplete', this.autocomplete());\r\n    component.setInput('tooltip', this.tooltip());\r\n    component.setInput('disabled', this.disabled());\r\n    component.setInput('label', this.label());\r\n    component.setInput('placeholder', this.placeholder());\r\n    component.setInput('autofocus', this.autofocus());\r\n    component.setInput('direction', this.direction());\r\n  }\r\n}\r\n\r\ninterface Context {\r\n  control: AnonFormNode|undefined,\r\n  appearance: \"fill\" | \"outline\";\r\n  color: \"primary\" | \"accent\" | \"warn\" | undefined;\r\n  readonly: boolean;\r\n  autocomplete: string | undefined;\r\n  tooltip: string | undefined;\r\n  disabled: boolean;\r\n  label: string | undefined;\r\n  placeholder: string | undefined;\r\n  autofocus: boolean;\r\n  direction: \"ltr\" | \"rtl\" | \"auto\" | undefined\r\n}\r\n","import {\r\n  booleanAttribute, computed, DestroyRef, Directive, effect, ElementRef, inject, input, InputSignal,\r\n  InputSignalWithTransform, model, ModelSignal, output, signal, untracked\r\n} from '@angular/core';\r\nimport {FormNode} from \"@juulsgaard/ngx-forms-core\";\r\nimport {MatFormFieldControl} from \"@angular/material/form-field\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Directive()\r\nexport abstract class NgxFormFieldDirective<T> implements MatFormFieldControl<T | undefined> {\r\n\r\n  static nextId = 0;\r\n  protected uid = `ngx-input-${NgxFormFieldDirective.nextId++}`;\r\n\r\n  readonly idIn = input<string | undefined>(undefined, {alias: 'id'});\r\n  protected readonly _id = computed(() => this.idIn() ?? this.uid);\r\n  get id() {\r\n    return this._id()\r\n  }\r\n\r\n  readonly ngxModel: ModelSignal<T | undefined> = model<T | undefined>(undefined);\r\n  readonly control: InputSignal<FormNode<T> | FormNode<T|undefined> | undefined> = input<FormNode<T> | FormNode<T|undefined>>();\r\n\r\n  private readonly _value = computed(() => {\r\n    const node = this.control();\r\n    if (!node) return this.ngxModel();\r\n    return node.state();\r\n  });\r\n\r\n  readonly touched = output();\r\n\r\n  readonly ngControl = null;\r\n\r\n  protected element = inject(ElementRef<HTMLElement>).nativeElement;\r\n\r\n  private lastValue?: { val: T | undefined };\r\n\r\n  protected constructor() {\r\n\r\n    effect(() => {\r\n      const value = this._value();\r\n\r\n      if (this.lastValue) {\r\n        const lastValue = this.lastValue.val;\r\n        this.lastValue = undefined;\r\n        if (lastValue === value) return;\r\n      }\r\n\r\n      untracked(() => this.writeValue(value));\r\n    });\r\n\r\n    effect(() => {\r\n      this._id();\r\n      this._value();\r\n      this._placeholder();\r\n      this._focused();\r\n      this._empty();\r\n      this._shouldLabelFloat();\r\n      this._required();\r\n      this._disabled();\r\n      this._errorState();\r\n      this._autofilled();\r\n      this.update();\r\n    });\r\n\r\n    inject(DestroyRef).onDestroy(() => this._stateChanges.complete());\r\n  }\r\n\r\n  protected abstract writeValue(value: T | undefined): void;\r\n\r\n  protected setValue(value: T|undefined) {\r\n    this.lastValue = {val: value};\r\n    this.value = value;\r\n  }\r\n\r\n  get value() {\r\n    return this._value()\r\n  }\r\n\r\n  set value(value: T | undefined) {\r\n    this.control()?.setValue(value);\r\n    this.ngxModel.set(value);\r\n  }\r\n\r\n  private readonly _stateChanges = new Subject<void>();\r\n  readonly stateChanges = this._stateChanges.asObservable();\r\n\r\n  protected update() {\r\n    this._stateChanges.next()\r\n  };\r\n\r\n  readonly placeholderIn: InputSignal<string | undefined> = input<string | undefined>(undefined, {alias: 'placeholder'})\r\n  protected readonly _placeholder = computed(() => this.placeholderIn() ?? '');\r\n  get placeholder() {\r\n    return this._placeholder()\r\n  };\r\n\r\n  protected readonly _focused = signal(false);\r\n  get focused() {\r\n    return this._focused()\r\n  };\r\n\r\n  protected readonly _empty = computed(() => !this._autofilled() && this.isEmpty(this._value()));\r\n  get empty() {\r\n    return this._empty()\r\n  };\r\n\r\n  protected abstract isEmpty(value: T | undefined): boolean;\r\n\r\n  protected readonly _shouldLabelFloat = computed(() => this._focused() || !this._empty())\r\n  get shouldLabelFloat() {\r\n    return this._shouldLabelFloat()\r\n  };\r\n\r\n  readonly requiredIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'required'});\r\n  protected readonly _required = computed(() => this.requiredIn() || this.control()?.required || false);\r\n  get required() {\r\n    return this._required()\r\n  };\r\n\r\n  readonly disabledIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'disabled'});\r\n  protected readonly _disabled = computed(() => this.disabledIn() || this.control()?.disabled() || false);\r\n  get disabled() {\r\n    return this._disabled()\r\n  };\r\n\r\n  readonly nodeErrorState = computed(() => {\r\n    const node = this.control();\r\n    if (!node) return false;\r\n    if (!node.hasError()) return false;\r\n    return node.touched() || node.changed();\r\n  });\r\n  readonly errorStateIn: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute, alias: 'showError'});\r\n  protected readonly _errorState = computed(() => this.errorStateIn() || this.nodeErrorState());\r\n  get errorState() {\r\n    return this._errorState()\r\n  };\r\n\r\n  readonly controlType = 'ngx-input';\r\n\r\n  protected readonly _autofilled = signal(false);\r\n  get autofilled() {\r\n    return this._autofilled()\r\n  };\r\n\r\n\r\n  readonly userAriaDescribedByIn: InputSignal<string | undefined> = input<string|undefined>(undefined, {alias: 'aria-describedby'});\r\n  protected readonly _userAriaDescribedBy = computed(() => this.userAriaDescribedByIn() ?? '');\r\n  get userAriaDescribedBy() {return this._userAriaDescribedBy()};\r\n\r\n  onContainerClick(): void {\r\n    if (this.focused) return;\r\n    this.focus();\r\n  }\r\n\r\n  setDescribedByIds(ids: string[]): void {\r\n    if (ids.length) {\r\n      this.element.setAttribute('aria-describedby', ids.join(' '));\r\n    } else {\r\n      this.element.removeAttribute('aria-describedby');\r\n    }\r\n  }\r\n\r\n  abstract focus(options?: FocusOptions): void;\r\n\r\n  protected onFocus() {\r\n    if (this.focused) return;\r\n    this._focused.set(true);\r\n  }\r\n\r\n  protected onBlur() {\r\n    if (!this.focused) return;\r\n    this._focused.set(false);\r\n    this.control()?.markAsTouched();\r\n    this.touched.emit();\r\n  }\r\n}\r\n","import {DestroyRef, Directive, effect, forwardRef, inject, NgZone} from '@angular/core';\r\nimport {MAT_FORM_FIELD, MatFormFieldControl} from \"@angular/material/form-field\";\r\nimport {fromEvent} from \"rxjs\";\r\nimport {AutofillMonitor} from \"@angular/cdk/text-field\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {NgxFormFieldDirective} from \"./ngx-form-field.directive\";\r\nimport {FocusOptions} from \"@angular/cdk/a11y\";\r\n\r\n@Directive({\r\n  selector: 'input[ngxInput], textarea[ngxInput], [contentEditable][ngxInput]',\r\n  standalone: true,\r\n  providers: [{provide: MatFormFieldControl, useExisting: forwardRef(() => NgxInputDirective)}],\r\n  host: {\r\n    // MDC classes for styling\r\n    '[class.mdc-text-field__input]': '_inMdcFormField',\r\n    '[class.mat-mdc-form-field-input-control]': '_inMdcFormField',\r\n  }\r\n})\r\nexport class NgxInputDirective<T> extends NgxFormFieldDirective<T> {\r\n\r\n  protected _inMdcFormField = inject(MAT_FORM_FIELD, {optional: true}) != null;\r\n  private autofillMonitor = inject(AutofillMonitor);\r\n\r\n  constructor() {\r\n    super();\r\n\r\n    this.autofillMonitor.monitor(this.element)\r\n      .subscribe(x => {\r\n        this._autofilled.set(x.isAutofilled);\r\n        const value = this.element.value ?? undefined;\r\n        this.setValue(value);\r\n      });\r\n\r\n    effect(() => this.element.id = this._id());\r\n\r\n    effect(() => {\r\n      if (!('required' in this.element)) return;\r\n      this.element.required = this._required();\r\n    });\r\n\r\n    effect(() => {\r\n      if (!('placeholder' in this.element)) return;\r\n      this.element.placeholder = this._placeholder();\r\n    });\r\n\r\n    const zone = inject(NgZone);\r\n    zone.runOutsideAngular(() => {\r\n      fromEvent<InputEvent>(this.element, 'input').pipe(takeUntilDestroyed()).subscribe(x => {\r\n        const value = this.element.value ?? undefined;\r\n        zone.run(() => this.setValue(value));\r\n      });\r\n\r\n      fromEvent(this.element, 'focus').pipe(takeUntilDestroyed()).subscribe(() => zone.run(() => this.onFocus()));\r\n      fromEvent(this.element, 'blur').pipe(takeUntilDestroyed()).subscribe(() => zone.run(() => this.onBlur()));\r\n    });\r\n\r\n    inject(DestroyRef).onDestroy(() => this.autofillMonitor.stopMonitoring(this.element));\r\n  }\r\n\r\n  focus(options: FocusOptions | undefined): void {\r\n    this.element.focus(options);\r\n  }\r\n\r\n  protected isEmpty(value: T | undefined): boolean {\r\n    if (value == null) return true;\r\n    return value === '';\r\n  }\r\n\r\n  protected writeValue(value: T | undefined): void {\r\n    this.element.value = value ?? '';\r\n  }\r\n\r\n}\r\n","import {\r\n  booleanAttribute, ChangeDetectionStrategy, Component, computed, input, InputSignal, InputSignalWithTransform, output,\r\n  OutputEmitterRef\r\n} from '@angular/core';\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {IconButtonComponent, IconDirective} from \"@juulsgaard/ngx-ui\";\r\nimport {FormValidationContext} from \"@juulsgaard/ngx-forms-core\";\r\n\r\n@Component({\r\n  selector: 'ngx-form-error-state',\r\n  standalone: true,\r\n  imports: [\r\n    IconDirective,\r\n    IconButtonComponent,\r\n    MatTooltip\r\n  ],\r\n  templateUrl: './form-error-state.component.html',\r\n  styleUrl: './form-error-state.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormErrorStateComponent {\r\n\r\n  readonly errors: InputSignalWithTransform<\r\n    FormValidationContext[] | string[],\r\n    FormValidationContext[] | string[] | undefined\r\n  > = input([], {\r\n    transform: (errors: FormValidationContext[] | string[] | undefined) => {\r\n      if (!errors?.length) return [];\r\n      return errors;\r\n    }\r\n  });\r\n\r\n  readonly warnings: InputSignalWithTransform<\r\n    FormValidationContext[] | string[],\r\n    FormValidationContext[] | string[] | undefined\r\n  > = input([], {\r\n    transform: (warnings: FormValidationContext[] | string[] | undefined) => {\r\n      if (!warnings?.length) return [];\r\n      return warnings;\r\n    }\r\n  });\r\n\r\n  tooltip = computed(() => {\r\n    const errors = this.errors();\r\n    const warnings = this.warnings();\r\n\r\n    if (errors.length) {\r\n      if (!warnings.length) return `${errors.length} Errors`;\r\n      return `${errors.length} Errors and ${warnings.length} Warnings`;\r\n    }\r\n\r\n    if (warnings.length) return `${warnings.length} Warnings`;\r\n    return '';\r\n  });\r\n\r\n  readonly button: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n  readonly show: InputSignal<boolean> = input<boolean>(false);\r\n  readonly showChange: OutputEmitterRef<boolean> = output<boolean>();\r\n\r\n  toggleErrors() {\r\n    this.showChange.emit(!this.show());\r\n  }\r\n}\r\n","\r\n@if (errors().length || warnings().length) {\r\n\r\n    @if (button()) {\r\n\r\n        <ngx-icon-button alias=\"warning\" [active]=\"show()\" (click)=\"toggleErrors()\"\r\n                         [class]=\"errors().length ? 'error' : 'warning'\" [matTooltip]=\"tooltip()\"/>\r\n\r\n    } @else {\r\n        <ngx-icon alias=\"warning\" [class]=\"errors().length ? 'error' : 'warning'\" [matTooltip]=\"tooltip()\"/>\r\n    }\r\n\r\n} @else {\r\n\r\n    @if (button()) {\r\n        <ngx-icon-button alias=\"valid\" [disabled]=\"!button()\" (click)=\"toggleErrors()\" class=\"valid\"\r\n                         matTooltip=\"No errors\"/>\r\n    } @else {\r\n        <ngx-icon alias=\"valid\" class=\"valid\" matTooltip=\"No errors\"/>\r\n\r\n    }\r\n}\r\n","import {\r\n  booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, input, InputSignalWithTransform, model,\r\n  ModelSignal, Signal, signal\r\n} from '@angular/core';\r\nimport {FormValidationContext, isFormNode} from \"@juulsgaard/ngx-forms-core\";\r\nimport {harmonicaInAnimation} from \"@juulsgaard/ngx-tools\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {isString} from \"@juulsgaard/ts-tools\";\r\nimport {ButtonComponent, IconButtonComponent, IconDirective} from \"@juulsgaard/ngx-ui\";\r\n\r\n@Component({\r\n  selector: 'ngx-form-errors',\r\n  standalone: true,\r\n  imports: [\r\n    NgIf,\r\n    IconDirective,\r\n    ButtonComponent,\r\n    IconButtonComponent\r\n  ],\r\n  templateUrl: './form-errors.component.html',\r\n  styleUrl: './form-errors.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  animations: [harmonicaInAnimation()]\r\n})\r\nexport class FormErrorsComponent {\r\n\r\n  show: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n  showAllIn: ModelSignal<boolean | undefined> = model<boolean | undefined>(undefined, {alias: 'showAll'});\r\n  private _showAll = signal(false);\r\n  showAll: Signal<boolean> = computed(() => this.showAllIn() || this._showAll());\r\n\r\n  errors: InputSignalWithTransform<\r\n    FormValidationContext[] | string[],\r\n    FormValidationContext[] | string[] | undefined\r\n  > = input([], {\r\n    transform: (errors: FormValidationContext[] | string[] | undefined) => {\r\n      if (!errors?.length) return [];\r\n      return errors;\r\n    }\r\n  });\r\n\r\n  warnings: InputSignalWithTransform<\r\n    FormValidationContext[] | string[],\r\n    FormValidationContext[] | string[] | undefined\r\n  > = input([], {\r\n    transform: (warnings: FormValidationContext[] | string[] | undefined) => {\r\n      if (!warnings?.length) return [];\r\n      return warnings;\r\n    }\r\n  });\r\n\r\n  list = computed(() => [\r\n    ...this.errors().map(data => formatData(data, 'error')),\r\n    ...this.warnings().map(data => formatData(data, 'warning'))\r\n  ]);\r\n\r\n  hasMore = computed(() => this.list().length > 1);\r\n\r\n  first = computed(() => this.list().at(0));\r\n  rest = computed(() => this.list().slice(1));\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      if (this.show()) return;\r\n      this._showAll.set(false)\r\n    });\r\n  }\r\n\r\n  toggle() {\r\n    const showAll = this.showAll();\r\n    this._showAll.set(!showAll);\r\n    if (this.showAllIn() != null) this.showAllIn.set(!showAll);\r\n  }\r\n\r\n}\r\n\r\ninterface Data {\r\n  type: 'warning' | 'error';\r\n  message: string;\r\n  icon?: string;\r\n  scrollTo?: () => void;\r\n  context?: FormValidationContext;\r\n}\r\n\r\nfunction formatData(data: FormValidationContext | string, type: 'warning' | 'error'): Data {\r\n  if (isString(data)) return {type, message: data};\r\n\r\n  const unit = data.data.unit;\r\n\r\n  if (isFormNode(unit)) {\r\n    return {\r\n      type,\r\n      message: data.data.message,\r\n      context: data,\r\n      icon: 'edit',\r\n      scrollTo: () => unit.focus({scroll: true})\r\n    };\r\n  }\r\n\r\n  return {\r\n    type,\r\n    message: data.data.message,\r\n    context: data\r\n  };\r\n}\r\n","@if (show()) {\r\n    @if (first(); as x) {\r\n        <p [class]=\"x.type\" [@harmonicaIn]>\r\n            <ngx-icon-button *ngIf=\"x.icon\" [alias]=\"x.icon\" (click)=\"x.scrollTo?.()\"/>\r\n            <span>{{ x.message }}</span>\r\n        </p>\r\n    }\r\n\r\n    @if (showAll()) {\r\n\r\n        @for (x of rest(); track x) {\r\n            <p [class]=\"x.type\" [@harmonicaIn]>\r\n                <ngx-icon-button *ngIf=\"x.icon\" [alias]=\"x.icon\" (click)=\"x.scrollTo?.()\"/>\r\n                <span>{{ x.message }}</span>\r\n            </p>\r\n        }\r\n\r\n    } @else if(hasMore()) {\r\n\r\n        <ngx-button class=\"block\" [@harmonicaIn] (click)=\"toggle()\">\r\n            <span>Show All</span>\r\n            <ngx-icon alias=\"down\"/>\r\n        </ngx-button>\r\n\r\n    }\r\n\r\n    @if (first()) {\r\n        <div class=\"spacer\" [@harmonicaIn]></div>\r\n    }\r\n}\r\n","import {\r\n  booleanAttribute, ChangeDetectionStrategy, Component, computed, EventEmitter, inject, input, InputSignal,\r\n  InputSignalWithTransform, Output\r\n} from '@angular/core';\r\nimport {LoadingDirective, setElementClasses} from \"@juulsgaard/ngx-tools\";\r\nimport {MatRipple} from \"@angular/material/core\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {FormPage} from \"@juulsgaard/ngx-forms-core\";\r\nimport {FormErrorStateComponent} from \"../form-error-state/form-error-state.component\";\r\nimport {SimpleObject} from \"@juulsgaard/ts-tools\";\r\nimport {ButtonComponent, IconButtonComponent, UIScopeContext} from \"@juulsgaard/ngx-ui\";\r\n\r\n@Component({\r\n  selector: 'ngx-form-header',\r\n  standalone: true,\r\n  imports: [\r\n    MatRipple,\r\n    NgIf,\r\n    FormErrorStateComponent,\r\n    IconButtonComponent,\r\n    LoadingDirective,\r\n    ButtonComponent\r\n  ],\r\n  templateUrl: './form-header.component.html',\r\n  styleUrl: './form-header.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {'[class.ngx-form-header]': 'true', '[class.ngx-header]': 'true'}\r\n})\r\nexport class FormHeaderComponent<T extends SimpleObject> {\r\n\r\n  readonly form: InputSignal<FormPage<T>> = input.required<FormPage<T>>();\r\n\r\n  @Output() back = new EventEmitter<void>();\r\n  @Output() close = new EventEmitter<void>();\r\n  @Output() showErrors = new EventEmitter<void>();\r\n\r\n  readonly heading: InputSignal<string | undefined> = input<string>();\r\n  readonly subHeading: InputSignal<string | undefined> = input<string>();\r\n\r\n  readonly hideClose: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n  readonly hideBack: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n\r\n  private uiContext = inject(UIScopeContext);\r\n\r\n  constructor() {\r\n    const header = this.uiContext.registerHeader();\r\n    setElementClasses(computed(() => header().classes));\r\n  }\r\n}\r\n","\r\n@if (back.observed && !this.hideBack()) {\r\n    <ngx-icon-button alias=\"back\" class=\"back\" matRipple (click)=\"back.emit()\"/>\r\n}\r\n\r\n@if (close.observed && !this.hideClose()) {\r\n    <ngx-icon-button alias=\"close\" class=\"close\" matRipple (click)=\"close.emit()\"/>\r\n}\r\n\r\n<div class=\"column\">\r\n    <p class=\"title\" *ngIf=\"heading() as h\">{{ h }}</p>\r\n    <p class=\"sub-title\" *ngIf=\"subHeading() as sh\">{{ sh }}</p>\r\n</div>\r\n\r\n<div class=\"content\">\r\n    <ng-content/>\r\n</div>\r\n\r\n<ngx-raised-button color=\"primary\" (click)=\"form().submit()\"\r\n        *ngIf=\"form().showSubmit()\" [disabled]=\"!form().canSubmit()\" [ngxLoading]=\"form().submitting()\">\r\n    {{form().submitBtnText}}\r\n</ngx-raised-button>\r\n\r\n<ngx-form-error-state [button]=\"showErrors.observed\" [errors]=\"form().form.errorState()\" [warnings]=\"form().form.warningState()\" (showChange)=\"showErrors.emit()\"/>\r\n","import {\r\n  booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input, InputSignal, NgZone, signal\r\n} from '@angular/core';\r\nimport {FormPage} from \"@juulsgaard/ngx-forms-core\";\r\nimport {SimpleObject} from \"@juulsgaard/ts-tools\";\r\nimport {FormContext} from \"../../lib/ngx-forms-tools\";\r\nimport {filter, fromEvent, mergeWith, tap, throttleTime} from \"rxjs\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {FormErrorsComponent} from \"../form-errors/form-errors.component\";\r\nimport {FormErrorStateComponent} from \"../form-error-state/form-error-state.component\";\r\nimport {ButtonComponent, NgxTabContext} from \"@juulsgaard/ngx-ui\";\r\nimport {LoadingDirective} from \"@juulsgaard/ngx-tools\";\r\n\r\n@Component({\r\n  selector: 'ngx-form-submit',\r\n  standalone: true,\r\n  imports: [\r\n    NgIf,\r\n    FormErrorsComponent,\r\n    FormErrorStateComponent,\r\n    ButtonComponent,\r\n    LoadingDirective\r\n  ],\r\n  templateUrl: './form-submit.component.html',\r\n  styleUrl: './form-submit.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormSubmitComponent<T extends SimpleObject> {\r\n\r\n  readonly form: InputSignal<FormPage<T>> = input.required<FormPage<T>>();\r\n  readonly disableShortcut = input(false, {transform: booleanAttribute});\r\n\r\n  private tabContext = inject(NgxTabContext, {optional: true});\r\n  private formContext = inject(FormContext, {optional: true});\r\n\r\n  readonly showErrors = signal(false);\r\n  readonly readonly = computed(() => this.formContext?.readonly() === true);\r\n\r\n  constructor() {\r\n    const zone = inject(NgZone);\r\n\r\n    zone.runOutsideAngular(() => {\r\n\r\n      const shortcut$ = fromEvent<KeyboardEvent>(window, 'keydown').pipe(\r\n        filter(e => !e.repeat),\r\n        filter(e => e.key === 's'),\r\n        filter(e => e.metaKey || e.ctrlKey)\r\n      );\r\n\r\n      const saveEvents$ = fromEvent<KeyboardEvent>(window, 'save');\r\n\r\n      shortcut$.pipe(\r\n        mergeWith(saveEvents$),\r\n        filter(() => !this.disableShortcut()),\r\n        filter(() => this.tabContext?.isActive() != false),\r\n        tap(e => e.preventDefault()),\r\n        throttleTime(1000),\r\n        takeUntilDestroyed()\r\n      ).subscribe(() => zone.run(() => this.onSubmit()));\r\n    });\r\n  }\r\n\r\n  onSubmit() {\r\n    if (this.readonly()) return;\r\n    this.form().submit();\r\n  }\r\n\r\n  onDelete() {\r\n    if (this.readonly()) return;\r\n    this.form().delete();\r\n  }\r\n\r\n  onShowChange(show: boolean) {\r\n    if (!show) return;\r\n    this.form().form.markAsTouched();\r\n  }\r\n}\r\n","\r\n<ngx-form-errors [show]=\"showErrors()\" [errors]=\"form().form.errorState()\" [warnings]=\"form().form.warningState()\"/>\r\n\r\n<div class=\"buttons\" *ngIf=\"!readonly()\">\r\n\r\n    <ngx-button type=\"button\" [disabled]=\"!form().form.changed()\" (click)=\"form().form.rollback()\">\r\n        Reset\r\n    </ngx-button>\r\n\r\n    <ngx-bordered-button type=\"button\" *ngIf=\"form().showDelete()\" color=\"warn\"\r\n            [ngxLoading]=\"form().deleting()\" (click)=\"onDelete()\">\r\n        {{form().deleteBtnText}}\r\n    </ngx-bordered-button>\r\n\r\n    <ngx-raised-button type=\"button\" *ngIf=\"form().showSubmit()\" color=\"primary\"\r\n            [disabled]=\"!form().canSubmit()\" [ngxLoading]=\"form().submitting()\"\r\n            (click)=\"onSubmit()\">\r\n        {{form().submitBtnText}}\r\n    </ngx-raised-button>\r\n\r\n    <ngx-form-error-state [errors]=\"form().form.errorState()\" [warnings]=\"form().form.warningState()\" button [(show)]=\"showErrors\" (showChange)=\"onShowChange($event)\"/>\r\n\r\n</div>\r\n\r\n<div class=\"extra\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import {\r\n  booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, effect, inject, Injector, input,\r\n  InputSignal, InputSignalWithTransform, OnDestroy, signal, viewChild\r\n} from '@angular/core';\r\nimport {FormDialog} from \"@juulsgaard/ngx-forms-core\";\r\nimport {LoadingDirective, RenderSourceDirective} from \"@juulsgaard/ngx-tools\";\r\nimport {FormDialogDirective} from \"../../directives/dialog-form.directive\";\r\nimport {toObservable, toSignal} from \"@angular/core/rxjs-interop\";\r\nimport {delay, of, switchMap} from \"rxjs\";\r\nimport {ButtonComponent, DialogManagerService, NgxDialogDefaults, TemplateDialogInstance} from \"@juulsgaard/ngx-ui\";\r\nimport {NgIf} from \"@angular/common\";\r\nimport {FormInputDirective} from \"../../../../directives\";\r\nimport {FormErrorsComponent, FormErrorStateComponent} from \"../../../../components\";\r\n\r\n@Component({\r\n  selector: 'ngx-form-dialog',\r\n  templateUrl: './form-dialog.component.html',\r\n  styleUrls: ['./form-dialog.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  imports: [\r\n    RenderSourceDirective,\r\n    NgIf,\r\n    FormInputDirective,\r\n    FormErrorsComponent,\r\n    FormErrorStateComponent,\r\n    LoadingDirective,\r\n    ButtonComponent\r\n  ],\r\n  standalone: true\r\n})\r\nexport class FormDialogComponent<T extends Record<string, unknown>> implements OnDestroy {\r\n\r\n  readonly showErrors = signal(false);\r\n\r\n  readonly config: InputSignal<FormDialog<T>> = input.required<FormDialog<T>>();\r\n  readonly formTemplate = contentChild(FormDialogDirective);\r\n  readonly content = viewChild.required('content', {read: RenderSourceDirective});\r\n  readonly footer = viewChild.required('footer', {read: RenderSourceDirective});\r\n  readonly canClose: InputSignalWithTransform<boolean, unknown> = input(false, {transform: booleanAttribute});\r\n\r\n  private defaults = inject(NgxDialogDefaults);\r\n  instance?: TemplateDialogInstance;\r\n\r\n  constructor(private manager: DialogManagerService, private injector: Injector) {\r\n\r\n    const show = computed(() => this.config().show());\r\n\r\n    // Delay hiding the form to allow the dialog close animation to play first\r\n    const showTemplate$ = toObservable(show).pipe(\r\n      switchMap(show => show ? of(true) : of(false).pipe(delay(500)))\r\n    );\r\n    const showTemplate = toSignal(showTemplate$, {initialValue: false});\r\n\r\n    effect(() => {\r\n      const template = this.formTemplate();\r\n      if (!template) return;\r\n      template.show.set(showTemplate());\r\n    });\r\n\r\n    effect(() => {\r\n      const config = this.config();\r\n\r\n      this.destroy();\r\n      if (!config.show()) return;\r\n\r\n      this.instance = this.manager.createDialog(\r\n        {\r\n          content: this.content,\r\n          footer: this.footer,\r\n          header: signal(config.title),\r\n          scrollable: signal(true),\r\n          canClose: this.canClose,\r\n          type: signal(this.defaults.type),\r\n          styles: signal(this.defaults.styles)\r\n        },\r\n        this.injector\r\n      );\r\n\r\n      this.instance.close$.subscribe(() => config.close());\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroy();\r\n  }\r\n\r\n  destroy() {\r\n    if (!this.instance) return;\r\n    this.manager.closeDialog(this.instance);\r\n  }\r\n\r\n  async formSubmit() {\r\n    const config = this.config();\r\n    if (!config.submitOnEnter) return;\r\n    await config.submit();\r\n  }\r\n\r\n  async onEnter(event: Event|KeyboardEvent) {\r\n    const config = this.config();\r\n    if (!config.submitOnEnter) return;\r\n    if ('repeat' in event && event.repeat) return;\r\n    const target = event.target as HTMLElement;\r\n    if (target.tagName !== 'INPUT') return;\r\n    await config.submit();\r\n  }\r\n}\r\n","<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\r\n\r\n<ng-template #content ngxSource>\r\n\r\n    <p class=\"description\" *ngIf=\"config().description as d\">{{d}}</p>\r\n\r\n    <div class=\"form\" (keydown.enter)=\"onEnter($event)\">\r\n        @if (formTemplate()) {\r\n            <ng-content/>\r\n        } @else {\r\n            @for (input of config().form.nodes(); track input) {\r\n                <form-input *ngIf=\"!input.readonly\" [control]=\"input\"/>\r\n            }\r\n        }\r\n    </div>\r\n\r\n    <ngx-form-errors [show]=\"showErrors()\" [errors]=\"config().errorState()\" [warnings]=\"config().warningState()\"/>\r\n</ng-template>\r\n\r\n<ng-template #footer ngxSource>\r\n    <ngx-button (click)=\"config().close()\">Cancel</ngx-button>\r\n    <ngx-button color=\"primary\" (click)=\"config().submit()\" [disabled]=\"!config().canSubmit()\" [ngxLoading]=\"config().working()\">{{config().buttonText}}</ngx-button>\r\n    <ngx-form-error-state [errors]=\"config().errorState()\" [warnings]=\"config().warningState()\" button [(show)]=\"showErrors\"/>\r\n</ng-template>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}