{"version":3,"file":"pascaliske-form-elements.mjs","sources":["../../../projects/form-elements/src/lib/options.ts","../../../projects/form-elements/src/lib/f-button/f-button.component.ts","../../../projects/form-elements/src/lib/f-button/f-button.component.html","../../../projects/form-elements/src/lib/f-explanation/f-explanation.component.ts","../../../projects/form-elements/src/lib/f-explanation/f-explanation.component.html","../../../projects/form-elements/src/lib/f-error/f-error.component.ts","../../../projects/form-elements/src/lib/f-error/f-error.component.html","../../../projects/form-elements/src/lib/f-input/f-input.component.ts","../../../projects/form-elements/src/lib/f-input/f-input.component.html","../../../projects/form-elements/src/lib/f-checkbox/f-checkbox.component.ts","../../../projects/form-elements/src/lib/f-checkbox/f-checkbox.component.html","../../../projects/form-elements/src/lib/f-column/f-column.component.ts","../../../projects/form-elements/src/lib/f-column/f-column.component.html","../../../projects/form-elements/src/lib/f-date/f-date.component.ts","../../../projects/form-elements/src/lib/f-date/f-date.component.html","../../../projects/form-elements/src/lib/f-time/f-time.component.ts","../../../projects/form-elements/src/lib/f-time/f-time.component.html","../../../projects/form-elements/src/lib/f-email/f-email.component.ts","../../../projects/form-elements/src/lib/f-email/f-email.component.html","../../../projects/form-elements/src/lib/f-form/f-form.component.ts","../../../projects/form-elements/src/lib/f-form/f-form.component.html","../../../projects/form-elements/src/lib/f-password/f-password.component.ts","../../../projects/form-elements/src/lib/f-password/f-password.component.html","../../../projects/form-elements/src/lib/f-phone/f-phone.component.ts","../../../projects/form-elements/src/lib/f-phone/f-phone.component.html","../../../projects/form-elements/src/lib/f-radiobutton/f-radiobutton.component.ts","../../../projects/form-elements/src/lib/f-radiobutton/f-radiobutton.component.html","../../../projects/form-elements/src/lib/f-row/f-row.component.ts","../../../projects/form-elements/src/lib/f-row/f-row.component.html","../../../projects/form-elements/src/lib/f-select/f-select.component.ts","../../../projects/form-elements/src/lib/f-select/f-select.component.html","../../../projects/form-elements/src/lib/f-text-area/f-text-area.component.ts","../../../projects/form-elements/src/lib/f-text-area/f-text-area.component.html","../../../projects/form-elements/src/lib/form-elements.module.ts","../../../projects/form-elements/src/exports.ts","../../../projects/form-elements/src/pascaliske-form-elements.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\nimport { Options } from 'choices.js'\nimport flatpickr from 'flatpickr'\n\nexport interface ModuleOptions {\n    select: Partial<Options>\n    datepicker: flatpickr.Options.Options | boolean\n    email: {\n        suggestions: string[] | boolean\n    }\n}\n\nexport const MODULE_OPTIONS = new InjectionToken<ModuleOptions>('module-options')\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core'\nimport { modifiers } from '@pascaliske/html-helpers'\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core'\n\n/**\n * F-Button\n */\n@Component({\n    selector: 'cmp-f-button',\n    templateUrl: './f-button.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FButtonComponent {\n    public static readonly cmpName: string = 'FButtonComponent'\n\n    @Input()\n    public type: 'button' | 'submit' = 'button'\n\n    @Input()\n    public id: string\n\n    @Input()\n    public label: string\n\n    @Input()\n    public icon: IconProp\n\n    @Input()\n    public theme: string = 'primary'\n\n    @Input()\n    public disabled: boolean = false\n\n    @Output()\n    public clicked: EventEmitter<Event> = new EventEmitter()\n\n    public get classes(): string {\n        return modifiers('cmp-f-button', this.theme, {\n            disabled: this.disabled,\n        })\n    }\n}\n","<button\n    [class]=\"classes\"\n    [type]=\"type\"\n    [id]=\"id\"\n    [attr.aria-label]=\"label\"\n    [disabled]=\"disabled\"\n    (click)=\"clicked.emit($event)\"\n>\n    <fa-icon class=\"cmp-f-button__icon\" [icon]=\"icon\" *ngIf=\"icon\"></fa-icon>\n    <span class=\"cmp-f-button__text\" *ngIf=\"label\">{{ label }}</span>\n</button>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core'\nimport type { AbstractControl } from '@angular/forms'\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core'\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons'\n\n@Component({\n    selector: 'cmp-f-explanation',\n    templateUrl: './f-explanation.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FExplanationComponent {\n    @Input()\n    public fc: AbstractControl\n\n    @Input()\n    public messages: string[]\n\n    public icon: IconDefinition = faInfoCircle\n}\n","<div class=\"cmp-f-explanation\">\n    <div class=\"cmp-f-explanation__message\" *ngFor=\"let message of messages\">\n        <fa-icon class=\"cmp-f-explanation__icon\" [icon]=\"icon\"></fa-icon>\n        <div class=\"cmp-f-explanation__message\" [innerHTML]=\"message\"></div>\n    </div>\n</div>\n","import { Component, Input } from '@angular/core'\nimport type { AbstractControl } from '@angular/forms'\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core'\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons'\nimport type { FValidation } from '../f-input/f-input.component'\n\n@Component({\n    selector: 'cmp-f-error',\n    templateUrl: './f-error.component.html',\n})\nexport class FErrorComponent {\n    @Input()\n    public fc: AbstractControl\n\n    @Input()\n    public messages: FValidation[] = []\n\n    public icon: IconDefinition = faExclamationCircle\n\n    public hasErrorFor(validation: FValidation): boolean {\n        return this.fc.hasError(validation.type.toLowerCase()) && (this.fc.dirty || this.fc.touched)\n    }\n}\n","<div class=\"cmp-f-error\" *ngFor=\"let message of messages\">\n    <fa-icon class=\"cmp-f-error__icon\" [icon]=\"icon\" *ngIf=\"hasErrorFor(message)\"></fa-icon>\n    <div\n        class=\"cmp-f-error__message\"\n        [attr.data-type]=\"message.type\"\n        [innerHTML]=\"message.message\"\n        *ngIf=\"hasErrorFor(message)\"\n    ></div>\n</div>\n","import { Component, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core'\nimport { FormControl, ValidatorFn, Validators } from '@angular/forms'\nimport type { AbstractControl } from '@angular/forms'\nimport { modifiers } from '@pascaliske/html-helpers'\nimport { takeWhile, distinctUntilChanged } from 'rxjs/operators'\n\ntype FValidator = typeof Validators\nexport type FType = keyof Omit<FValidator, 'prototype' | 'compose' | 'composeAsync'>\nexport type FValidation<T extends FType = FType> = ReturnType<FValidator[T]> extends ValidatorFn\n    ? { type: T; message: string }\n    : { type: T; message: string; value?: Exclude<Parameters<FValidator[T]>[0], AbstractControl> }\n\n/**\n * F-Input\n */\n@Component({\n    selector: 'cmp-f-input',\n    templateUrl: './f-input.component.html',\n})\nexport class FInputComponent implements OnInit, OnDestroy {\n    public static readonly cmpName: string = 'FInputComponent'\n\n    @Input()\n    public name: string\n\n    @Input()\n    public label: string\n\n    @Input()\n    public fc: FormControl = new FormControl()\n\n    @Input()\n    public validation: FValidation[] = []\n\n    @Input()\n    public explanation: string[] = []\n\n    @Input()\n    public autocomplete: string\n\n    @Input()\n    public autofocus: boolean\n\n    @Input()\n    public disabled: boolean = false\n\n    @Output()\n    public changed: EventEmitter<any> = new EventEmitter()\n\n    @Output()\n    public focused: EventEmitter<void> = new EventEmitter()\n\n    @Output()\n    public blurred: EventEmitter<void> = new EventEmitter()\n\n    protected focus: boolean = false\n\n    protected alive: boolean = true\n\n    public ngOnInit(): void {\n        if (!this.fc) {\n            console.warn(`Missing FormControl for input \"${this.name}\".`)\n            this.disabled = true\n            return\n        }\n\n        this.fc.setValidators(this.getValidators())\n        this.fc.valueChanges\n            .pipe(\n                takeWhile(() => this.alive),\n                distinctUntilChanged(),\n            )\n            .subscribe(value => {\n                this.changed.next(value)\n            })\n    }\n\n    public ngOnDestroy(): void {\n        this.alive = false\n    }\n\n    public classes(namespace: string, overrides?: Record<string, boolean>): string {\n        if (!this.fc) {\n            return modifiers(namespace, {\n                disabled: this.disabled,\n            })\n        }\n\n        return modifiers(namespace, {\n            disabled: this.disabled,\n            focus: this.focus,\n            filled: this.fc.value && this.fc.value !== '',\n            invalid: this.fc.touched && this.fc.invalid,\n            required: this.isRequired(),\n            ...(overrides ?? {}),\n        })\n    }\n\n    public isRequired(): boolean {\n        return !!this.validation.find(({ type }) => type.includes('required'))\n    }\n\n    public focusIn(): void {\n        this.focused.next()\n        this.focus = true\n    }\n\n    public focusOut(): void {\n        this.blurred.next()\n        this.focus = false\n    }\n\n    private getValidators(): ValidatorFn[] {\n        const validators: ValidatorFn[] = []\n\n        for (const { type, value } of this.validation) {\n            if (typeof Validators?.[type] === 'function') {\n                validators.push(value ? (Validators[type] as any)(value) : Validators[type])\n            }\n        }\n\n        return validators\n    }\n}\n","<div [class]=\"classes('cmp-f-input')\">\n    <div class=\"cmp-f-input__control\">\n        <input\n            class=\"cmp-f-input__input\"\n            type=\"text\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [autocomplete]=\"autocomplete\"\n            [autofocus]=\"autofocus\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (blur)=\"focusOut()\"\n        />\n        <label class=\"cmp-f-input__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-input__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-input__line\"></span>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-input__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { Component, forwardRef } from '@angular/core'\nimport { FInputComponent } from '../f-input/f-input.component'\n\n@Component({\n    selector: 'cmp-f-checkbox',\n    templateUrl: './f-checkbox.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FCheckboxComponent) }],\n})\nexport class FCheckboxComponent extends FInputComponent {\n    public static readonly cmpName: string = 'FCheckboxComponent'\n}\n","<div [class]=\"classes('cmp-f-checkbox')\">\n    <div class=\"cmp-f-checkbox__control\">\n        <input\n            class=\"cmp-f-checkbox__input\"\n            type=\"checkbox\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [attr.autocomplete]=\"autocomplete ? autocomplete : null\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n            [checked]=\"fc.value === true\"\n            #input\n        />\n        <svg\n            class=\"cmp-f-checkbox__symbol\"\n            width=\"35\"\n            height=\"35\"\n            viewBox=\"-10 -10 55 55\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            (click)=\"input?.click()\"\n        >\n            <svg:path\n                class=\"cmp-f-checkbox__check\"\n                fill=\"none\"\n                stroke=\"#fff\"\n                stroke-width=\"5\"\n                stroke-miterlimit=\"20\"\n                d=\"M1.9,20.2l10.9,8.5L32.5,3.3\"\n            />\n        </svg>\n        <label class=\"cmp-f-checkbox__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-checkbox__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-checkbox__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { Component, ViewEncapsulation, Input } from '@angular/core'\nimport { modifiers } from '@pascaliske/html-helpers'\n\n/**\n * F-Column\n */\n@Component({\n    selector: 'cmp-f-column',\n    templateUrl: './f-column.component.html',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class FColumnComponent {\n    public static readonly cmpName: string = 'FColumnComponent'\n\n    @Input()\n    public flex = false\n\n    @Input()\n    public align: 'left' | 'right' = 'left'\n\n    public constructor() {}\n\n    public get classes(): string {\n        return modifiers('cmp-f-column', {\n            [`align-${this.align}`]: true,\n            flex: this.flex,\n        })\n    }\n}\n","<div [class]=\"classes\">\n    <ng-content></ng-content>\n</div>\n","import {\n    Component,\n    forwardRef,\n    AfterViewInit,\n    OnDestroy,\n    Input,\n    ViewChild,\n    Inject,\n} from '@angular/core'\nimport type { ElementRef } from '@angular/core'\nimport flatpickr from 'flatpickr'\nimport { FInputComponent } from '../f-input/f-input.component'\nimport { MODULE_OPTIONS } from '../options'\nimport type { ModuleOptions } from '../options'\n\n@Component({\n    selector: 'cmp-f-date',\n    templateUrl: './f-date.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FDateComponent) }],\n})\nexport class FDateComponent extends FInputComponent implements AfterViewInit, OnDestroy {\n    public static readonly cmpName: string = 'FDateComponent'\n\n    @Input()\n    public altFormat: string = 'd. F Y'\n\n    @Input()\n    public dateFormat: string = 'd. F Y'\n\n    @Input()\n    public minDate: string | Date\n\n    @Input()\n    public maxDate: string | Date\n\n    @Input()\n    public blacklist: (string | Date)[]\n\n    @ViewChild('inputRef', { static: true })\n    public inputRef: ElementRef\n\n    private instance: flatpickr.Instance\n\n    private readonly defaults: flatpickr.Options.Options = {\n        allowInput: true,\n        altInput: true,\n        altFormat: 'd. F Y',\n        dateFormat: 'd. F Y',\n        defaultDate: null,\n        weekNumbers: true,\n    }\n\n    public constructor(@Inject(MODULE_OPTIONS) private moduleOptions: ModuleOptions) {\n        super()\n    }\n\n    public ngAfterViewInit(): void {\n        this.destroy()\n        this.init()\n    }\n\n    public ngOnDestroy(): void {\n        super.ngOnDestroy()\n        this.destroy()\n    }\n\n    private init() {\n        if (this.disabled || this.moduleOptions?.datepicker === false) {\n            return\n        }\n\n        this.instance = flatpickr(this.inputRef?.nativeElement, this.merge())\n        this.instance?.config?.onOpen?.push(() => (this.focus = true))\n        this.instance?.config?.onClose?.push(() => (this.focus = false))\n    }\n\n    private destroy(): void {\n        if (!this.instance) {\n            return\n        }\n\n        this.instance.destroy()\n    }\n\n    private merge(): flatpickr.Options.Options {\n        return {\n            ...(this.defaults as flatpickr.Options.Options),\n            ...(this.moduleOptions?.datepicker ? (this.moduleOptions?.datepicker as {}) : {}),\n            ...(this.altFormat ? { altFormat: this.altFormat } : {}),\n            ...(this.dateFormat ? { dateFormat: this.dateFormat } : {}),\n            ...(this.minDate ? { minDate: this.minDate } : {}),\n            ...(this.maxDate ? { maxDate: this.maxDate } : {}),\n            ...(this.blacklist ? { disable: this.blacklist } : {}),\n        }\n    }\n}\n","<div [class]=\"classes('cmp-f-date')\">\n    <div class=\"cmp-f-date__control\">\n        <input\n            class=\"cmp-f-date__input\"\n            type=\"text\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [autocomplete]=\"autocomplete\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n            #inputRef\n        />\n        <label class=\"cmp-f-date__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-date__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-date__line\"></span>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-date__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-date__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import {\n    Component,\n    forwardRef,\n    AfterViewInit,\n    OnDestroy,\n    Input,\n    ViewChild,\n    Inject,\n} from '@angular/core'\nimport type { ElementRef } from '@angular/core'\nimport flatpickr from 'flatpickr'\nimport { FInputComponent } from '../f-input/f-input.component'\nimport { MODULE_OPTIONS } from '../options'\nimport type { ModuleOptions } from '../options'\n\n@Component({\n    selector: 'cmp-f-time',\n    templateUrl: './f-time.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FTimeComponent) }],\n})\nexport class FTimeComponent extends FInputComponent implements AfterViewInit, OnDestroy {\n    public static readonly cmpName: string = 'FTimeComponent'\n\n    @Input()\n    public hour: boolean = false\n\n    @Input()\n    public seconds: boolean = false\n\n    @ViewChild('inputRef', { static: true })\n    public inputRef: ElementRef\n\n    private instance: flatpickr.Instance\n\n    private readonly defaults: flatpickr.Options.Options = {\n        allowInput: true,\n        enableTime: true,\n        noCalendar: true,\n    }\n\n    public constructor(@Inject(MODULE_OPTIONS) private moduleOptions: ModuleOptions) {\n        super()\n    }\n\n    public ngAfterViewInit(): void {\n        this.destroy()\n        this.init()\n    }\n\n    public ngOnDestroy(): void {\n        super.ngOnDestroy()\n        this.destroy()\n    }\n\n    private init() {\n        if (\n            typeof this.moduleOptions.datepicker === 'boolean' &&\n            this.moduleOptions.datepicker === false\n        ) {\n            return\n        }\n\n        this.instance = flatpickr(this.inputRef.nativeElement, this.merge())\n    }\n\n    private destroy(): void {\n        if (!this.instance) {\n            return\n        }\n\n        this.instance.destroy()\n    }\n\n    private merge(): flatpickr.Options.Options {\n        return {\n            ...(this.defaults as flatpickr.Options.Options),\n            ...(this.moduleOptions.datepicker ? (this.moduleOptions.datepicker as {}) : {}),\n            ...(this.hour ? { time_24hr: this.hour } : {}),\n            ...(this.seconds ? { enableSeconds: this.seconds } : {}),\n        }\n    }\n}\n","<div [class]=\"classes('cmp-f-time')\">\n    <div class=\"cmp-f-time__control\">\n        <input\n            class=\"cmp-f-time__input\"\n            type=\"text\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [autocomplete]=\"autocomplete\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n            #inputRef\n        />\n        <label class=\"cmp-f-time__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-time__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-time__line\"></span>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-time__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-time__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { Component, Inject, forwardRef } from '@angular/core'\nimport { faTimes } from '@fortawesome/free-solid-svg-icons'\nimport { BehaviorSubject } from 'rxjs'\nimport fuzzysearch from 'fuzzysearch'\nimport { FInputComponent } from '../f-input/f-input.component'\nimport { MODULE_OPTIONS } from '../options'\nimport type { ModuleOptions } from '../options'\n\n@Component({\n    selector: 'cmp-f-email',\n    templateUrl: './f-email.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FEmailComponent) }],\n})\nexport class FEmailComponent extends FInputComponent {\n    public static readonly cmpName: string = 'FEmailComponent'\n\n    public suggestions$: BehaviorSubject<string[]> = new BehaviorSubject([])\n\n    public icons = { faTimes }\n\n    private providers: string[] = [\n        'aol.com',\n        'arcor.de',\n        'freenet.de',\n        'gmail.com',\n        'gmx.at',\n        'gmx.com',\n        'gmx.de',\n        'gmx.net',\n        'googlemail.com',\n        'hotmail.com',\n        'hotmail.de',\n        'icloud.com',\n        'live.com',\n        'live.de',\n        'mac.com',\n        'me.com',\n        'msn.com',\n        'online.de',\n        'outlook.com',\n        't-online.de',\n        'web.de',\n        'yahoo.com',\n        'yahoo.de',\n    ]\n\n    public constructor(@Inject(MODULE_OPTIONS) private moduleOptions: ModuleOptions) {\n        super()\n    }\n\n    public suggest(): void {\n        if (!this.moduleOptions.email || !this.moduleOptions.email.suggestions) {\n            return\n        }\n\n        const [, user, domain] = this.fc?.value?.match(/(.+)@(.+)/) ?? []\n\n        this.suggestions$.next(\n            user?.length > 0 && domain?.length > 0 ? this.fetchSuggestions(domain) : [],\n        )\n    }\n\n    public use(suggestion: string): void {\n        if (!this.moduleOptions.email.suggestions) {\n            return\n        }\n\n        const parts: string[] = this.fc?.value?.split('@') ?? []\n        const input: string = parts.slice(0, parts?.length - 1).join('@')\n\n        this.fc.setValue([input, suggestion].join('@'))\n        this.close()\n    }\n\n    public close(): void {\n        this.suggestions$.next([])\n    }\n\n    private fetchSuggestions(search: string = ''): string[] {\n        const suggestions = this.moduleOptions?.email?.suggestions ?? false\n        const filter = (items: string[]) => items?.filter(item => fuzzysearch(search, item))\n\n        if (Array.isArray(suggestions) && suggestions.length > 0) {\n            return filter(suggestions)\n        }\n\n        return filter(this.providers)\n    }\n}\n","<div [class]=\"classes('cmp-f-email')\">\n    <div class=\"cmp-f-email__control\">\n        <input\n            class=\"cmp-f-email__input\"\n            type=\"email\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [autocomplete]=\"autocomplete\"\n            [autofocus]=\"autofocus\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (keyup)=\"suggest()\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n            #inputField\n        />\n        <label class=\"cmp-f-email__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-email__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-email__line\"></span>\n        <ng-container *ngIf=\"suggestions$ | async as items\">\n            <div class=\"cmp-f-email__suggestions\" *ngIf=\"items.length > 0\">\n                <fa-icon\n                    class=\"cmp-f-email__suggestion-close\"\n                    [icon]=\"icons.faTimes\"\n                    (click)=\"close()\"\n                ></fa-icon>\n                <div class=\"cmp-f-email__suggestion-list\">\n                    <div\n                        class=\"cmp-f-email__suggestion-item\"\n                        (click)=\"use(item)\"\n                        *ngFor=\"let item of items\"\n                    >\n                        {{ item }}\n                    </div>\n                </div>\n            </div>\n        </ng-container>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-email__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import {\n    Component,\n    AfterContentInit,\n    Input,\n    Output,\n    EventEmitter,\n    ContentChildren,\n    HostListener,\n    HostBinding,\n} from '@angular/core'\nimport type { QueryList } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { FormGroup } from '@angular/forms'\nimport type { AbstractControl } from '@angular/forms'\nimport { modifiers, join } from '@pascaliske/html-helpers'\nimport { FInputComponent } from '../f-input/f-input.component'\n\n@Component({\n    selector: 'form',\n    templateUrl: './f-form.component.html',\n})\nexport class FFormComponent implements AfterContentInit {\n    public static readonly cmpName: string = 'FFormComponent'\n\n    @Input()\n    public class: string\n\n    @Input()\n    public formGroup: FormGroup\n\n    @Input()\n    public url: string\n\n    @Output()\n    public submitted: EventEmitter<Record<string, any>> = new EventEmitter()\n\n    @ContentChildren(FInputComponent, { descendants: true })\n    public fields: QueryList<FInputComponent>\n\n    public constructor(private http: HttpClient) {}\n\n    public ngAfterContentInit(): void {\n        this.formGroup = this.formGroup || new FormGroup(this.collect())\n    }\n\n    @HostListener('submit', ['$event'])\n    public onSubmit(event: Event): void {\n        event.preventDefault()\n\n        if (this.url && this.url.length > 0) {\n            this.http.post(this.url, this.formGroup.value).subscribe()\n        }\n\n        this.submitted.next(this.formGroup.value)\n        this.submitted.complete()\n    }\n\n    @HostBinding('class')\n    public get classes(): string {\n        return join(modifiers('cmp-f-form'), this.class)\n    }\n\n    private collect(): Record<string, AbstractControl> {\n        const result: Record<string, AbstractControl> = {}\n\n        for (const field of this.fields.toArray()) {\n            result[field.name] = field.fc\n        }\n\n        return result\n    }\n}\n","<ng-content select=\"cmp-f-row\"></ng-content>\n","import { Component, forwardRef } from '@angular/core'\nimport { modifiers } from '@pascaliske/html-helpers'\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core'\nimport { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons'\nimport { FInputComponent } from '../f-input/f-input.component'\n\n@Component({\n    selector: 'cmp-f-password',\n    templateUrl: './f-password.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FPasswordComponent) }],\n})\nexport class FPasswordComponent extends FInputComponent {\n    public static readonly cmpName: string = 'FPasswordComponent'\n\n    public type: 'text' | 'password' = 'password'\n\n    public icon: IconProp = faEye\n\n    public visible = false\n\n    public toggle(): void {\n        if (this.disabled) {\n            return\n        }\n\n        if (this.visible) {\n            this.type = 'password'\n            this.icon = faEye\n            this.visible = false\n        } else {\n            this.type = 'text'\n            this.icon = faEyeSlash\n            this.visible = true\n        }\n    }\n\n    public classes(namespace: string): string {\n        const base = super.classes(namespace)\n        const child = modifiers(namespace, {\n            visible: this.visible,\n        })\n\n        return `${base} ${child}`\n    }\n}\n","<div [class]=\"classes('cmp-f-password')\">\n    <div class=\"cmp-f-password__control\">\n        <input\n            class=\"cmp-f-password__input\"\n            [type]=\"type\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [autocomplete]=\"autocomplete\"\n            [autofocus]=\"autofocus\"\n            [attr.disabled]=\"visible || disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n        />\n        <label class=\"cmp-f-password__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-password__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-password__line\"></span>\n        <div class=\"cmp-f-password__toggle\" (click)=\"toggle()\">\n            <fa-icon [icon]=\"icon\"></fa-icon>\n        </div>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-password__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { Component, forwardRef } from '@angular/core'\nimport { FInputComponent } from '../f-input/f-input.component'\n\n@Component({\n    selector: 'cmp-f-phone',\n    templateUrl: './f-phone.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FPhoneComponent) }],\n})\nexport class FPhoneComponent extends FInputComponent {\n    public static readonly cmpName: string = 'FPhoneComponent'\n}\n","<div [class]=\"classes('cmp-f-phone')\">\n    <div class=\"cmp-f-phone__control\">\n        <input\n            class=\"cmp-f-phone__input\"\n            type=\"phone\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [autocomplete]=\"autocomplete\"\n            [autofocus]=\"autofocus\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n        />\n        <label class=\"cmp-f-phone__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-phone__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-phone__line\"></span>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-phone__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { Component, forwardRef, OnInit, Input } from '@angular/core'\nimport { FInputComponent } from '../f-input/f-input.component'\n\n/**\n *\n */\nexport interface FRadiobuttonOption {\n    label: string\n    value: string\n    checked?: boolean\n}\n\n/**\n * F-Radiobutton\n */\n@Component({\n    selector: 'cmp-f-radiobutton',\n    templateUrl: './f-radiobutton.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FRadiobuttonComponent) }],\n})\nexport class FRadiobuttonComponent extends FInputComponent implements OnInit {\n    public static readonly cmpName: string = 'FRadiobuttonComponent'\n\n    @Input()\n    public inline: boolean = false\n\n    @Input()\n    public options: FRadiobuttonOption[] = []\n\n    public ngOnInit(): void {\n        super.ngOnInit()\n\n        const checked = this.options.find(option => option.checked)\n        if (checked) {\n            this.fc.setValue(checked?.value)\n        }\n    }\n\n    public classes(namespace: string): string {\n        return super.classes(namespace, {\n            inline: this.inline,\n            filled: false,\n        })\n    }\n\n    /**\n     * Sets the currently selected value to the form control.\n     *\n     * @param index - Index of currently selected value.\n     */\n    public setValue(option: FRadiobuttonOption): void {\n        if (this.disabled || option?.checked) {\n            return\n        }\n\n        this.options?.forEach(item => (item.checked = item?.value === option?.value))\n        this.fc.setValue(option?.value)\n    }\n}\n","<div [class]=\"classes('cmp-f-radiobutton')\">\n    <label class=\"cmp-f-radiobutton__label\" [for]=\"name\">\n        {{ label }}<span class=\"cmp-f-radiobutton__required\" *ngIf=\"isRequired()\">*</span>\n    </label>\n    <div class=\"cmp-f-radiobutton__controls\">\n        <div\n            class=\"cmp-f-radiobutton__control\"\n            (click)=\"setValue(option)\"\n            *ngFor=\"let option of options\"\n        >\n            <input\n                type=\"radio\"\n                class=\"cmp-f-radiobutton__input\"\n                [id]=\"name\"\n                [name]=\"name\"\n                [value]=\"option.value\"\n                [checked]=\"option.checked\"\n            />\n            <svg\n                class=\"cmp-f-radiobutton__symbol\"\n                width=\"35\"\n                height=\"35\"\n                viewBox=\"0 0 35 35\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <svg:circle class=\"cmp-f-radiobutton__circle\" cx=\"17.5\" cy=\"17.5\" fill=\"#fff\" />\n            </svg>\n            <div class=\"cmp-f-radiobutton__control-label\">\n                {{ option.label }}\n            </div>\n        </div>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-radiobutton__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { Component, ViewEncapsulation, Input } from '@angular/core'\nimport { modifiers } from '@pascaliske/html-helpers'\n\n/**\n * F-Row\n */\n@Component({\n    selector: 'cmp-f-row',\n    templateUrl: './f-row.component.html',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class FRowComponent {\n    public static readonly cmpName: string = 'FRowComponent'\n\n    @Input()\n    public layout: '1' | '1-1' | '1-1-1' | '1-2' | '2-1' = '1'\n\n    public constructor() {}\n\n    public get classes(): string {\n        return modifiers('cmp-f-row', {\n            [`layout-${this.layout}`]: true,\n        })\n    }\n}\n","<div [class]=\"classes\">\n    <ng-content select=\"cmp-f-column\"></ng-content>\n</div>\n","import {\n    Component,\n    forwardRef,\n    AfterViewInit,\n    OnChanges,\n    OnDestroy,\n    Input,\n    ViewChild,\n    Inject,\n    SimpleChanges,\n} from '@angular/core'\nimport type { ElementRef } from '@angular/core'\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\nimport { Observable, fromEvent, merge } from 'rxjs'\nimport { mapTo, distinctUntilChanged, takeWhile } from 'rxjs/operators'\nimport isEqual from 'lodash-es/isEqual'\nimport Choices, { Options, Choice } from 'choices.js'\nimport { FInputComponent } from '../f-input/f-input.component'\nimport { MODULE_OPTIONS } from '../options'\nimport type { ModuleOptions } from '../options'\n\n/**\n *\n */\nexport interface FSelectOption<T = any> {\n    label: string\n    value: T\n}\n\n/**\n *\n */\nexport interface FSelectPlaceholder {\n    label: string\n    value: null\n}\n\nexport interface FSelectSearch {\n    label: string\n    fields?: string[]\n}\n\n/**\n * F-Select\n */\n@Component({\n    selector: 'cmp-f-select',\n    templateUrl: './f-select.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FSelectComponent) }],\n})\nexport class FSelectComponent\n    extends FInputComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    public static readonly cmpName: string = 'FSelectComponent'\n\n    @Input()\n    public placeholder: FSelectPlaceholder\n\n    @Input()\n    public options: FSelectOption[] = []\n\n    @Input()\n    public value: FSelectOption['value']\n\n    @Input()\n    public search: FSelectSearch\n\n    @ViewChild('inputRef', { static: true })\n    public inputRef: ElementRef\n\n    public icon: IconDefinition = faChevronDown\n\n    private instance: Choices\n\n    private readonly defaults: Partial<Options> = {\n        silent: false,\n        addItems: true,\n        removeItems: false,\n        editItems: false,\n        resetScrollPosition: false,\n        shouldSort: false,\n    }\n\n    public constructor(@Inject(MODULE_OPTIONS) private moduleOptions: ModuleOptions) {\n        super()\n    }\n\n    public ngAfterViewInit(): void {\n        this.init()\n    }\n\n    public ngOnChanges({ options }: SimpleChanges = {}) {\n        if (this.instance?.initialised && !isEqual(options?.currentValue, options?.previousValue)) {\n            this.instance.setChoices(this.getOptions(), 'value', 'label', true)\n        }\n    }\n\n    public ngOnDestroy(): void {\n        super.ngOnDestroy()\n        this.destroy()\n    }\n\n    public classes(namespace: string): string {\n        return super.classes(namespace, {\n            filled: (this.fc.value && this.fc.value !== '') || !!this.placeholder,\n        })\n    }\n\n    public focusOut(): void {\n        super.focusOut()\n\n        this.inputRef?.nativeElement?.click()\n    }\n\n    private init(): void {\n        if (this.instance?.initialised) {\n            return\n        }\n\n        // prepare choices\n        this.alive = true\n        this.instance = new Choices(this.inputRef?.nativeElement, this.merge())\n        this.instance.setChoices(this.getOptions(), 'value', 'label', true)\n\n        const events: Observable<boolean>[] = [\n            fromEvent(this.instance.passedElement.element, 'showDropdown').pipe(mapTo(true)),\n            fromEvent(this.instance.passedElement.element, 'hideDropdown').pipe(mapTo(false)),\n        ]\n\n        merge(...events)\n            .pipe(\n                takeWhile(() => this.alive),\n                distinctUntilChanged(),\n            )\n            .subscribe(visible => {\n                if (!visible && !this.fc.touched) {\n                    this.fc.markAsTouched()\n                }\n\n                this.focus = !!visible\n            })\n\n        // prefill choices and form control\n        if (this.value) {\n            this.fc.setValue(this.value, { onlySelf: true, emitEvent: false })\n            this.instance.setChoiceByValue(this.value)\n        }\n    }\n\n    private destroy(): void {\n        if (!this.instance?.initialised) {\n            return\n        }\n\n        this.instance.destroy()\n    }\n\n    private merge(): Options {\n        return {\n            ...(this.defaults as Options),\n            ...(this.moduleOptions?.select ?? {}),\n            ...this.getPlaceholderOptions(),\n            ...this.getSearchOptions(),\n        }\n    }\n\n    private getOptions(): Choice[] {\n        return this.options?.map(option => ({ ...option, selected: false, active: false })) ?? []\n    }\n\n    private getPlaceholderOptions(): Partial<Options> {\n        if (!this.placeholder) {\n            return { placeholder: true, placeholderValue: '' }\n        }\n\n        return {\n            ...(this.placeholder?.value ? { placeholderValue: this.placeholder?.value } : {}),\n            placeholder: true,\n        }\n    }\n\n    private getSearchOptions(): Partial<Options> {\n        if (!this.search) {\n            return { searchEnabled: false }\n        }\n\n        return {\n            ...(this.search?.label ? { searchPlaceholderValue: this.search?.label } : {}),\n            ...(this.search?.fields ? { searchFields: this.search?.fields } : {}),\n            searchEnabled: true,\n        }\n    }\n}\n","<div [class]=\"classes('cmp-f-select')\">\n    <div class=\"cmp-f-select__control\">\n        <select\n            class=\"cmp-f-select__input\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n            (change)=\"changed.emit(fc.value)\"\n            #inputRef\n        >\n            <option\n                class=\"cmp-f-select__placeholder\"\n                [ngValue]=\"placeholder.value\"\n                [selected]=\"true\"\n                [disabled]=\"true\"\n                *ngIf=\"placeholder\"\n            >\n                {{ placeholder.label }}\n            </option>\n        </select>\n        <label class=\"cmp-f-select__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-select__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-select__line\"></span>\n        <span class=\"cmp-f-select__icon\" (click)=\"inputRef.click()\">\n            <fa-icon [icon]=\"icon\"></fa-icon>\n        </span>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-select__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { Component, forwardRef } from '@angular/core'\nimport { FInputComponent } from '../f-input/f-input.component'\n\n@Component({\n    selector: 'cmp-f-text-area',\n    templateUrl: './f-text-area.component.html',\n    providers: [{ provide: FInputComponent, useExisting: forwardRef(() => FTextAreaComponent) }],\n})\nexport class FTextAreaComponent extends FInputComponent {\n    public static readonly cmpName: string = 'FTextAreaComponent'\n}\n","<div [class]=\"classes('cmp-f-text-area')\">\n    <div class=\"cmp-f-text-area__control\">\n        <textarea\n            class=\"cmp-f-text-area__input\"\n            [id]=\"name\"\n            [name]=\"name\"\n            [formControl]=\"fc\"\n            [autofocus]=\"autofocus\"\n            [attr.disabled]=\"disabled ? '' : null\"\n            (focus)=\"focusIn()\"\n            (focusout)=\"focusOut()\"\n        ></textarea>\n        <label class=\"cmp-f-text-area__label\" [for]=\"name\">\n            {{ label }}<span class=\"cmp-f-text-area__required\" *ngIf=\"isRequired()\">*</span>\n        </label>\n        <span class=\"cmp-f-text-area__line\"></span>\n    </div>\n    <cmp-f-explanation\n        class=\"cmp-f-phone__explanations\"\n        [fc]=\"fc\"\n        [messages]=\"explanation\"\n    ></cmp-f-explanation>\n    <cmp-f-error class=\"cmp-f-text-area__errors\" [fc]=\"fc\" [messages]=\"validation\"></cmp-f-error>\n</div>\n","import { NgModule, ModuleWithProviders } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { HttpClientModule } from '@angular/common/http'\nimport { ReactiveFormsModule } from '@angular/forms'\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\nimport { FButtonComponent } from './f-button/f-button.component'\nimport { FCheckboxComponent } from './f-checkbox/f-checkbox.component'\nimport { FColumnComponent } from './f-column/f-column.component'\nimport { FDateComponent } from './f-date/f-date.component'\nimport { FTimeComponent } from './f-time/f-time.component'\nimport { FEmailComponent } from './f-email/f-email.component'\nimport { FFormComponent } from './f-form/f-form.component'\nimport { FInputComponent } from './f-input/f-input.component'\nimport { FPasswordComponent } from './f-password/f-password.component'\nimport { FPhoneComponent } from './f-phone/f-phone.component'\nimport { FRadiobuttonComponent } from './f-radiobutton/f-radiobutton.component'\nimport { FRowComponent } from './f-row/f-row.component'\nimport { FSelectComponent } from './f-select/f-select.component'\nimport { FTextAreaComponent } from './f-text-area/f-text-area.component'\nimport { FErrorComponent } from './f-error/f-error.component'\nimport { FExplanationComponent } from './f-explanation/f-explanation.component'\nimport { ModuleOptions, MODULE_OPTIONS } from './options'\n\nexport const components = [\n    FButtonComponent,\n    FCheckboxComponent,\n    FColumnComponent,\n    FDateComponent,\n    FTimeComponent,\n    FEmailComponent,\n    FFormComponent,\n    FInputComponent,\n    FPasswordComponent,\n    FPhoneComponent,\n    FRadiobuttonComponent,\n    FRowComponent,\n    FSelectComponent,\n    FTextAreaComponent,\n]\n\n@NgModule({\n    imports: [CommonModule, HttpClientModule, ReactiveFormsModule, FontAwesomeModule],\n    declarations: [...components, FErrorComponent, FExplanationComponent],\n    exports: [...components],\n})\nexport class FormElementsModule {\n    public static forRoot(\n        moduleOptions?: Partial<ModuleOptions>,\n    ): ModuleWithProviders<FormElementsModule> {\n        return {\n            ngModule: FormElementsModule,\n            providers: [\n                {\n                    provide: MODULE_OPTIONS,\n                    useValue: moduleOptions,\n                },\n            ],\n        }\n    }\n}\n","/*\n * Public API Surface\n */\nexport { ModuleOptions, MODULE_OPTIONS } from './lib/options'\nexport { FormElementsModule } from './lib/form-elements.module'\nexport * from './lib/f-button/f-button.component'\nexport * from './lib/f-checkbox/f-checkbox.component'\nexport * from './lib/f-column/f-column.component'\nexport * from './lib/f-date/f-date.component'\nexport * from './lib/f-time/f-time.component'\nexport * from './lib/f-email/f-email.component'\nexport * from './lib/f-form/f-form.component'\nexport * from './lib/f-input/f-input.component'\nexport * from './lib/f-password/f-password.component'\nexport * from './lib/f-phone/f-phone.component'\nexport * from './lib/f-radiobutton/f-radiobutton.component'\nexport * from './lib/f-row/f-row.component'\nexport * from './lib/f-select/f-select.component'\nexport * from './lib/f-text-area/f-text-area.component'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './exports';\n"],"names":[],"mappings":"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"}