{"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-form-signal.mjs","sources":["../../../projects/ng-dsv/ds/form/signal/base/form.signal.input.base.ts","../../../projects/ng-dsv/ds/form/signal/label/component/form.signal.label.component.ts","../../../projects/ng-dsv/ds/form/signal/label/component/form.signal.label.component.html","../../../projects/ng-dsv/ds/form/signal/checkbox/component/form.signal.checkbox.component.ts","../../../projects/ng-dsv/ds/form/signal/checkbox/component/form.signal.checkbox.component.html","../../../projects/ng-dsv/ds/form/signal/error/component/form.signal.error.component.ts","../../../projects/ng-dsv/ds/form/signal/error/component/form.signal.error.component.html","../../../projects/ng-dsv/ds/form/signal/form/component/form.signal.component.ts","../../../projects/ng-dsv/ds/form/signal/form/component/form.signal.component.html","../../../projects/ng-dsv/ds/form/signal/input/component/form.signal.input.component.ts","../../../projects/ng-dsv/ds/form/signal/input/component/form.signal.input.component.html","../../../projects/ng-dsv/ds/form/signal/form/base/base.form.signal.component.ts","../../../projects/ng-dsv/ds/form/signal/searchbar/component/form.signal.searchbar.component.ts","../../../projects/ng-dsv/ds/form/signal/searchbar/component/form.signal.searchbar.component.html","../../../projects/ng-dsv/ds/form/signal/select/component/form.signal.select.component.ts","../../../projects/ng-dsv/ds/form/signal/select/component/form.signal.select.component.html","../../../projects/ng-dsv/ds/form/signal/utils/form.signal.utils.ts","../../../projects/ng-dsv/ds/form/signal/ng-vagabond-lab-ng-dsv-ds-form-signal.ts"],"sourcesContent":["import { Component, effect, input, output, signal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\n\n@Component({\n    template: ``,\n})\nexport abstract class FormSignalInputBase<T> {\n    form = input.required<FieldTree<T, string | number>>();\n    fieldName = input.required<string>();\n    label = input<string>();\n    withLabel = input<boolean>(true);\n    placeholder = input<string>('');\n    required = input<boolean>(false);\n    debug = input<boolean>(false);\n\n    isError = signal<boolean>(false);\n\n    callbackSend = output<string>();\n    callbackChange = output<string>();\n\n    constructor() {\n        effect(() => {\n            this.isError.set(this.getSignal()?.().touched() && this.getSignal()?.().errors().length > 0);\n        });\n    }\n\n    isTouched() {\n        return this.getSignal()().touched();\n    }\n\n    getSignal() {\n        return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n            string,\n            string | number\n        >;\n    }\n\n    doOnSend() {\n        this.getValue() && this.callbackSend.emit(this.getValue());\n    }\n\n    doChange() {\n        this.callbackChange.emit(this.getValue());\n    }\n\n    protected getValue() {\n        const signal = this.getSignal();\n        if (signal) {\n            const value = signal().value();\n            this.debug() && console.log(signal, signal().errors(), value);\n            return value;\n        }\n        return '';\n    }\n}\n","import { Component, effect, input, signal } from '@angular/core';\nimport { FieldState } from '@angular/forms/signals';\n\n@Component({\n    selector: 'dsv-form-signal-label',\n    templateUrl: './form.signal.label.component.html',\n    styleUrls: ['../../../reactive/label/component/form.reactive.label.component.scss'],\n})\nexport class FormSignalLabelComponent<T> {\n    label = input.required<string>();\n    name = input.required<string>();\n    signal = input.required<FieldState<T>>();\n    show = input<boolean>(true);\n\n    isRequired = signal<boolean>(false);\n\n    constructor() {\n        effect(() => {\n            this.isRequired.set(this.signal().required());\n        });\n    }\n}\n","@if (show()) {\n    <label\n        [for]=\"name()\"\n        class=\"text\"\n        [class.error]=\"signal().touched() && signal().errors().length! > 0\"\n    >\n        {{ label() }} {{ isRequired() ? '*' : '' }}\n    </label>\n}\n","import { Component } from '@angular/core';\nimport { FieldTree, FormField } from '@angular/forms/signals';\nimport { FormSignalLabelComponent } from '../../label/component/form.signal.label.component';\nimport { FormSignalInputBase } from '../../public-api';\n\n@Component({\n    selector: 'dsv-form-signal-checkbox',\n    imports: [FormField, FormSignalLabelComponent],\n    templateUrl: './form.signal.checkbox.component.html',\n    styleUrls: [\n        '../../../reactive/input/component/form.reactive.input.component.scss',\n        '../../../reactive/checkbox/component/form.reactive.checkbox.component.scss',\n    ],\n})\nexport class FormSignalCheckboxComponent<T> extends FormSignalInputBase<T> {\n    getBooleanSignal() {\n        return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n            boolean,\n            string | number\n        >;\n    }\n}\n","<div>\n    @if (getSignal()) {\n        <dsv-form-signal-label\n            [name]=\"fieldName()\"\n            [label]=\"label() ?? fieldName()\"\n            [signal]=\"getSignal()()\"\n            [show]=\"withLabel()\"\n        />\n        <div>\n            <input\n                type=\"checkbox\"\n                [id]=\"fieldName()\"\n                class=\"form-control\"\n                [class.error]=\"isError()\"\n                [formField]=\"getBooleanSignal()\"\n                (change)=\"doChange()\"\n            />\n        </div>\n    }\n</div>\n","import { Component, effect, HostBinding, input, signal } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'dsv-signal-form-error',\n    imports: [TranslatePipe],\n    templateUrl: './form.signal.error.component.html',\n    styleUrls: ['../../../reactive/error/component/form.reactive.error.component.scss'],\n})\nexport class FormSignalErrorComponent {\n    errors = input.required<ValidationError[]>();\n    isTouched = input<boolean>(false);\n\n    error = signal<string>('');\n\n    @HostBinding('class')\n    get hostClasses(): string {\n        const classes: string[] = ['text', 'error'];\n        return classes.join(' ');\n    }\n\n    constructor() {\n        effect(() => {\n            let errorMessage = '';\n            this.errors().forEach((error) => {\n                switch (error.kind) {\n                    case 'required':\n                        errorMessage = 'Le champ est obligatoire.';\n                        break;\n                    case 'min':\n                        errorMessage =\n                            'La valeur minimum est de ' + error['min' as keyof ValidationError] + '.';\n                        break;\n                    case 'max':\n                        errorMessage =\n                            'La valeur maximum est de ' + error['max' as keyof ValidationError] + '.';\n                        break;\n                    case 'minLength':\n                        errorMessage =\n                            'La taille minimum est de ' + error['minLength' as keyof ValidationError] + '.';\n                        break;\n                    case 'maxLength':\n                        errorMessage =\n                            'La taille maximum est de ' + error['maxLength' as keyof ValidationError] + '.';\n                        break;\n                    case 'email':\n                        errorMessage = \"Le format n'est pas celui d'un email.\";\n                        break;\n                    default:\n                        errorMessage = error.message ?? 'Erreur inconnue.';\n                        break;\n                }\n            });\n            this.error.set(errorMessage);\n        });\n    }\n}\n","@if (errors().length > 0 && isTouched()) {\n    @if (error() !== '') {\n        <div>{{ error() | translate }}</div>\n    }\n}\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport { FieldTree, submit } from '@angular/forms/signals';\nimport { RouterLink } from '@angular/router';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { isCallback } from '@ng-vagabond-lab/ng-dsv/base';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n    selector: 'dsv-form-signal',\n    imports: [DsvButtonComponent, RouterLink, TranslatePipe],\n    templateUrl: './form.signal.component.html',\n    styleUrl: '../../../reactive/form/component/form.reactive.component.scss',\n})\nexport class FormSignalComponent<T> {\n    toastService = inject(ToastService);\n\n    form = input.required<FieldTree<T, string | number>>();\n\n    urlBack = input<string>();\n    textValid = input<string>('ENREGISTRER');\n    formValid = input<string>('');\n\n    callbackBack = output<void>();\n    callback = output<ApiDto>();\n\n    isCallbackBack = computed(() => isCallback(this.callbackBack));\n\n    goBack() {\n        this.callbackBack.emit();\n    }\n\n    onSubmit(event: Event) {\n        event.preventDefault();\n        submit(this.form(), async (form) => {\n            if (form().valid()) {\n                this.callback.emit(form().value() as ApiDto);\n                if (this.formValid() !== '') {\n                    this.toastService.showToast({\n                        text: this.formValid(),\n                    });\n                }\n            } else {\n                this.toastService.showToast({\n                    text: 'Erreur dans le formulaire !',\n                    type: 'error',\n                });\n            }\n        });\n    }\n}\n","<form\n    (submit)=\"onSubmit($event)\"\n    class=\"form-container\"\n    novalidate\n>\n    <div class=\"form-scroll\">\n        <ng-content></ng-content>\n    </div>\n    <div class=\"form-buttons\">\n        @if (urlBack()) {\n            <dsv-button\n                color=\"default\"\n                variant=\"outlined\"\n                [routerLink]=\"urlBack()\"\n                [prevent]=\"false\"\n                >{{ 'RETOUR' | translate }}</dsv-button\n            >\n        }\n        @if (isCallbackBack()) {\n            <dsv-button\n                color=\"default\"\n                variant=\"outlined\"\n                (callback)=\"goBack()\"\n                >{{ 'RETOUR' | translate }}</dsv-button\n            >\n        }\n        @if (textValid() && textValid() !== '') {\n            <dsv-button\n                type=\"submit\"\n                color=\"primary\"\n                >{{ textValid()! | translate }}</dsv-button\n            >\n        }\n    </div>\n</form>\n","import { Component, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { INPUT_TYPE } from '@ng-vagabond-lab/ng-dsv/type';\nimport { FormSignalInputBase } from '../../base/form.signal.input.base';\nimport { FormSignalErrorComponent } from '../../error/component/form.signal.error.component';\nimport { FormSignalLabelComponent } from '../../label/component/form.signal.label.component';\n\n@Component({\n    selector: 'dsv-form-signal-input',\n    imports: [FormField, FormSignalLabelComponent, FormSignalErrorComponent],\n    templateUrl: './form.signal.input.component.html',\n    styleUrl: '../../../reactive/input/component/form.reactive.input.component.scss',\n})\nexport class FormSignalInputComponent<T> extends FormSignalInputBase<T> {\n    type = input<INPUT_TYPE>('text');\n    icon = input<string>();\n}\n","<div>\n    @if (getSignal()) {\n        @if (withLabel()) {\n            <dsv-form-signal-label\n                [name]=\"fieldName()\"\n                [label]=\"label() ?? fieldName()\"\n                [signal]=\"getSignal()()\"\n            />\n        }\n        @if (type() === 'textarea') {\n            <textarea\n                [id]=\"fieldName()\"\n                [formField]=\"getSignal()\"\n                [placeholder]=\"placeholder()\"\n                class=\"form-control\"\n            ></textarea>\n        } @else {\n            <input\n                #input\n                [type]=\"type()\"\n                [id]=\"fieldName()\"\n                class=\"form-control\"\n                [class.error]=\"isError()\"\n                [formField]=\"getSignal()\"\n                [placeholder]=\"placeholder()\"\n                [class.icon]=\"icon()\"\n                (blur)=\"doOnSend()\"\n                (change)=\"doChange()\"\n                (keydown.enter)=\"doOnSend()\"\n            />\n        }\n        @if (icon()) {\n            <i [class]=\"icon()\"></i>\n        }\n        <dsv-signal-form-error\n            [errors]=\"getSignal()().errors()\"\n            [isTouched]=\"isTouched()\"\n        />\n    }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class BaseFormSignalComponent {}\n","import { Component, effect, input, output, signal } from '@angular/core';\nimport { form } from '@angular/forms/signals';\nimport { BaseFormSignalComponent } from '../../form/base/base.form.signal.component';\nimport { FormSignalComponent, FormSignalInputComponent } from '../../public-api';\n\n@Component({\n    selector: 'dsv-form-signal-searchbar',\n    imports: [FormSignalComponent, FormSignalInputComponent],\n    templateUrl: './form.signal.searchbar.component.html',\n    styleUrls: ['../../../reactive/searchbar/component/reactive.searchbar.component.scss'],\n})\nexport class FormSignalSearchbarComponent extends BaseFormSignalComponent {\n    search = input<string>('');\n    callbackSearch = output<string>();\n\n    form = form(signal({ search: this.search() }));\n\n    constructor() {\n        super();\n        effect(() => {\n            this.form().reset({ search: this.search() });\n        });\n    }\n\n    onSend(value: string) {\n        this.callbackSearch.emit(value);\n    }\n}\n","<dsv-form-signal\n    [form]=\"form\"\n    textValid=\"\"\n>\n    <dsv-form-signal-input\n        [form]=\"form\"\n        fieldName=\"search\"\n        type=\"search\"\n        [withLabel]=\"false\"\n        (callbackChange)=\"onSend($event)\"\n        (callbackSend)=\"onSend($event)\"\n        icon=\"icon ri-search-line\"\n    ></dsv-form-signal-input>\n</dsv-form-signal>\n","import { Component, input } from '@angular/core';\nimport { FormField } from '@angular/forms/signals';\nimport { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { FormSignalErrorComponent } from '../../error/component/form.signal.error.component';\nimport { FormSignalLabelComponent } from '../../label/component/form.signal.label.component';\nimport { FormSignalInputBase } from '../../public-api';\n\n@Component({\n    selector: 'dsv-form-signal-select',\n    imports: [FormField, FormSignalLabelComponent, FormSignalErrorComponent],\n    templateUrl: './form.signal.select.component.html',\n    styleUrls: [\n        '../../../reactive/input/component/form.reactive.input.component.scss',\n        '../../../reactive/select/component/form.reactive.select.component.scss',\n    ],\n})\nexport class FormSignalSelectComponent<T> extends FormSignalInputBase<T> {\n    multiple = input<boolean>(false);\n\n    list = input<(ApiDto & { name: string })[]>([]);\n}\n","<div>\n    @if (getSignal()) {\n        <dsv-form-signal-label\n            [name]=\"fieldName()\"\n            [label]=\"label() ?? fieldName()\"\n            [signal]=\"getSignal()()\"\n            [show]=\"withLabel()\"\n        />\n        <div class=\"flex-column\">\n            <select\n                [id]=\"fieldName()\"\n                [formField]=\"getSignal()\"\n                class=\"form-control\"\n                (change)=\"doChange()\"\n                [class.error]=\"isError()\"\n                [multiple]=\"multiple()\"\n            >\n                @for (list of list(); track list.id) {\n                    <option\n                        [value]=\"list.id\"\n                        [selected]=\"list.id?.toString() === getSignal()().value().toString()\"\n                    >\n                        {{ list.name }}\n                    </option>\n                }\n            </select>\n            <dsv-signal-form-error\n                [errors]=\"getSignal()().errors()\"\n                [isTouched]=\"isTouched()\"\n            />\n        </div>\n    }\n</div>\n","import { ChildFieldContext } from '@angular/forms/signals';\n\nexport const requiredTrim = (value: ChildFieldContext<string>) =>\n    value.value().trim() === '' ? { kind: 'required' } : null;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}