@ng-vagabond-lab/ng-dsv 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { AfterViewInit, ElementRef } from '@angular/core';
|
|
3
|
+
import * as _angular_forms_signals from '@angular/forms/signals';
|
|
3
4
|
import { FieldTree } from '@angular/forms/signals';
|
|
5
|
+
import { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';
|
|
6
|
+
import { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';
|
|
4
7
|
|
|
5
|
-
declare
|
|
6
|
-
|
|
8
|
+
declare class FormSignalComponent {
|
|
9
|
+
toastService: ToastService;
|
|
10
|
+
form: _angular_core.InputSignal<() => _angular_forms_signals.FieldState<any, string | number>>;
|
|
11
|
+
urlBack: _angular_core.InputSignal<string | undefined>;
|
|
12
|
+
textValid: _angular_core.InputSignal<string>;
|
|
13
|
+
formValid: _angular_core.InputSignal<string>;
|
|
14
|
+
callback: _angular_core.OutputEmitterRef<ApiDto>;
|
|
15
|
+
onSubmit(event: Event): void;
|
|
16
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormSignalComponent, never>;
|
|
17
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormSignalComponent, "app-form-signal", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "urlBack": { "alias": "urlBack"; "required": false; "isSignal": true; }; "textValid": { "alias": "textValid"; "required": false; "isSignal": true; }; "formValid": { "alias": "formValid"; "required": false; "isSignal": true; }; }, { "callback": "callback"; }, never, ["*"], true, never>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
declare abstract class FormSignalInputBase {
|
|
21
|
+
form: _angular_core.InputSignal<() => _angular_forms_signals.FieldState<any, string | number>>;
|
|
7
22
|
fieldName: _angular_core.InputSignal<string>;
|
|
8
23
|
withLabel: _angular_core.InputSignal<boolean>;
|
|
9
24
|
required: _angular_core.InputSignal<boolean>;
|
|
@@ -12,18 +27,18 @@ declare abstract class FormSignalInputBase<T> {
|
|
|
12
27
|
constructor();
|
|
13
28
|
getSignal(): FieldTree<any, string | number>;
|
|
14
29
|
doOnSend(): void;
|
|
15
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormSignalInputBase
|
|
16
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormSignalInputBase
|
|
30
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormSignalInputBase, never>;
|
|
31
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormSignalInputBase, "ng-component", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "fieldName": { "alias": "fieldName"; "required": true; "isSignal": true; }; "withLabel": { "alias": "withLabel"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "onSend": "onSend"; }, never, never, true, never>;
|
|
17
32
|
}
|
|
18
33
|
|
|
19
34
|
type INPUT_TYPE = "text" | "password" | "textarea" | "email" | "number" | "date" | "time" | "datetime-local" | "month" | "week" | "url" | "search" | "tel" | "color" | "range" | "file" | "hidden";
|
|
20
|
-
declare class FormSignalInputComponent
|
|
35
|
+
declare class FormSignalInputComponent extends FormSignalInputBase implements AfterViewInit {
|
|
21
36
|
input: ElementRef<HTMLInputElement>;
|
|
22
37
|
type: _angular_core.InputSignal<string>;
|
|
23
38
|
icon: _angular_core.InputSignal<string | undefined>;
|
|
24
39
|
ngAfterViewInit(): void;
|
|
25
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormSignalInputComponent
|
|
26
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormSignalInputComponent
|
|
40
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormSignalInputComponent, never>;
|
|
41
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormSignalInputComponent, "dsv-form-signal-input", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
27
42
|
}
|
|
28
43
|
|
|
29
44
|
declare class FormSignalLabelComponent<T> {
|
|
@@ -36,5 +51,5 @@ declare class FormSignalLabelComponent<T> {
|
|
|
36
51
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormSignalLabelComponent<any>, "dsv-form-signal-label", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "show": { "alias": "show"; "required": false; "isSignal": true; }; "fieldName": { "alias": "fieldName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
37
52
|
}
|
|
38
53
|
|
|
39
|
-
export { FormSignalInputComponent, FormSignalLabelComponent };
|
|
54
|
+
export { FormSignalComponent, FormSignalInputComponent, FormSignalLabelComponent };
|
|
40
55
|
export type { INPUT_TYPE };
|
|
@@ -1,8 +1,43 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { Field } from '@angular/forms/signals';
|
|
2
|
+
import { inject, input, output, Component, signal, effect, HostBinding, ViewChild } from '@angular/core';
|
|
3
|
+
import { submit, Field } from '@angular/forms/signals';
|
|
4
|
+
import { RouterLink } from '@angular/router';
|
|
5
|
+
import { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';
|
|
6
|
+
import { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';
|
|
4
7
|
import { TranslatePipe } from '@ngx-translate/core';
|
|
5
8
|
|
|
9
|
+
class FormSignalComponent {
|
|
10
|
+
toastService = inject(ToastService);
|
|
11
|
+
form = input.required(...(ngDevMode ? [{ debugName: "form" }] : []));
|
|
12
|
+
urlBack = input(...(ngDevMode ? [undefined, { debugName: "urlBack" }] : []));
|
|
13
|
+
textValid = input('ENREGISTRER', ...(ngDevMode ? [{ debugName: "textValid" }] : []));
|
|
14
|
+
formValid = input('Formulaire envoyé !', ...(ngDevMode ? [{ debugName: "formValid" }] : []));
|
|
15
|
+
callback = output();
|
|
16
|
+
onSubmit(event) {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
submit(this.form(), async (form) => {
|
|
19
|
+
if (form().valid()) {
|
|
20
|
+
console.log(form().value());
|
|
21
|
+
this.toastService.showToast({
|
|
22
|
+
text: this.formValid(),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.toastService.showToast({
|
|
27
|
+
text: 'Erreur dans le formulaire !',
|
|
28
|
+
type: 'error',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-rc.1", ngImport: i0, type: FormSignalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0-rc.1", type: FormSignalComponent, isStandalone: true, selector: "app-form-signal", inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, urlBack: { classPropertyName: "urlBack", publicName: "urlBack", isSignal: true, isRequired: false, transformFunction: null }, textValid: { classPropertyName: "textValid", publicName: "textValid", isSignal: true, isRequired: false, transformFunction: null }, formValid: { classPropertyName: "formValid", publicName: "formValid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<form (submit)=\"onSubmit($event)\" class=\"form-container\">\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\" [class.hidden]=\"!(urlBack() && textValid() !== '')\">\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 (textValid() && textValid() !== \"\") {\n <dsv-button type=\"submit\" color=\"primary\">{{\n textValid()! | translate\n }}</dsv-button>\n }\n </div>\n</form>\n", styles: [":host{display:flex;width:100%;height:100%}:host form{flex-direction:column;display:flex;margin-top:0;unicode-bidi:isolate}:host form>div:nth-child(1){flex-direction:column;display:flex;gap:10px;overflow:auto;scrollbar-width:thin}:host .form-buttons{display:flex;justify-content:flex-end;gap:10px;padding-top:10px}\n"], dependencies: [{ kind: "component", type: DsvButtonComponent, selector: "dsv-button", inputs: ["libelle", "icon", "iconEnd", "disabled", "noHover", "type", "prevent"], outputs: ["callback"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ngImport: i0, type: FormSignalComponent, decorators: [{
|
|
37
|
+
type: Component,
|
|
38
|
+
args: [{ selector: 'app-form-signal', imports: [DsvButtonComponent, RouterLink, TranslatePipe], template: "<form (submit)=\"onSubmit($event)\" class=\"form-container\">\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\" [class.hidden]=\"!(urlBack() && textValid() !== '')\">\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 (textValid() && textValid() !== \"\") {\n <dsv-button type=\"submit\" color=\"primary\">{{\n textValid()! | translate\n }}</dsv-button>\n }\n </div>\n</form>\n", styles: [":host{display:flex;width:100%;height:100%}:host form{flex-direction:column;display:flex;margin-top:0;unicode-bidi:isolate}:host form>div:nth-child(1){flex-direction:column;display:flex;gap:10px;overflow:auto;scrollbar-width:thin}:host .form-buttons{display:flex;justify-content:flex-end;gap:10px;padding-top:10px}\n"] }]
|
|
39
|
+
}], propDecorators: { form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: true }] }], urlBack: [{ type: i0.Input, args: [{ isSignal: true, alias: "urlBack", required: false }] }], textValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "textValid", required: false }] }], formValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "formValid", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
|
|
40
|
+
|
|
6
41
|
class FormSignalInputBase {
|
|
7
42
|
form = input.required(...(ngDevMode ? [{ debugName: "form" }] : []));
|
|
8
43
|
fieldName = input.required(...(ngDevMode ? [{ debugName: "fieldName" }] : []));
|
|
@@ -100,5 +135,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.1", ng
|
|
|
100
135
|
* Generated bundle index. Do not edit.
|
|
101
136
|
*/
|
|
102
137
|
|
|
103
|
-
export { FormSignalInputComponent, FormSignalLabelComponent };
|
|
138
|
+
export { FormSignalComponent, FormSignalInputComponent, FormSignalLabelComponent };
|
|
104
139
|
//# sourceMappingURL=ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/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/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/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/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 withLabel = input<boolean>(true);\n required = input<boolean>(false);\n\n isError = signal<boolean>(false);\n\n onSend = output<string>();\n\n constructor() {\n effect(() => {\n this.isError.set(this.getSignal()?.().errors().length > 0);\n });\n }\n\n getSignal() {\n return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<any, string | number>;\n }\n\n doOnSend() {\n const signal = this.getSignal();\n if (signal) {\n const value = signal().value();\n console.log(signal, signal().errors(), value);\n this.onSend.emit(value as string);\n }\n }\n}\n","import { Component, HostBinding, input } from \"@angular/core\";\nimport { ValidationErrorWithField } 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: ['../../../legacy/error/component/form.error.component.scss']\n})\nexport class FormSignalErrorComponent {\n errors = input.required<ValidationErrorWithField[]>();\n\n @HostBinding('class')\n get hostClasses(): string {\n const classes: string[] = ['text', 'error'];\n return classes.join(' ');\n }\n\n isRequired() {\n return this.errors().some(error => error.kind === 'required');\n }\n}","@if (errors().length > 0) {\n @if (isRequired()) {\n <div>{{ \"Le champ est obligatoire.\" | translate }}</div>\n }\n}\n","import { AfterViewInit, Component, ElementRef, input, ViewChild } from '@angular/core';\nimport { Field } from '@angular/forms/signals';\nimport { FormSignalInputBase } from '../../base/form.signal.input.base';\nimport { FormSignalErrorComponent } from '../../error/component/form.signal.error.component';\nimport { FormSignalLabelComponent } from '../../public-api';\n\nexport type INPUT_TYPE = \"text\" | \"password\" | \"textarea\" | \"email\" | \"number\" | \"date\" | \"time\" | \"datetime-local\" |\n \"month\" | \"week\" | \"url\" | \"search\" | \"tel\" | \"color\" | \"range\" | \"file\" | \"hidden\";\n\n@Component({\n selector: 'dsv-form-signal-input',\n imports: [\n Field,\n FormSignalLabelComponent,\n FormSignalErrorComponent\n ],\n templateUrl: './form.signal.input.component.html',\n styleUrl: '../../../legacy/input/component/form.input.component.scss',\n})\nexport class FormSignalInputComponent<T> extends FormSignalInputBase<T> implements AfterViewInit {\n @ViewChild('input')\n input!: ElementRef<HTMLInputElement>;\n\n type = input<string>('text');\n icon = input<string>();\n\n ngAfterViewInit() {\n this.input.nativeElement.type = this.type();\n }\n\n}\n","<div>\n @if (withLabel()) {\n <dsv-form-signal-label [label]=\"fieldName()\" [fieldName]=\"getSignal()\" />\n }\n @if (type() === \"textarea\") {\n <textarea\n [id]=\"fieldName()\"\n [field]=\"getSignal()\"\n class=\"form-control\"\n ></textarea>\n } @else if (getSignal()) {\n <!-- [type]=\"type()\" -->\n <input\n #input\n [id]=\"fieldName()\"\n class=\"form-control\"\n [class.error]=\"isError()\"\n [field]=\"getSignal()\"\n [class.icon]=\"icon()\"\n (blur)=\"doOnSend()\"\n (keydown.enter)=\"doOnSend()\"\n />\n }\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (getSignal()) {\n <dsv-signal-form-error [errors]=\"getSignal()().errors()\" />\n }\n</div>\n","import { Component, effect, input, signal } from \"@angular/core\";\nimport { FieldTree } from \"@angular/forms/signals\";\n\n@Component({\n selector: 'dsv-form-signal-label',\n templateUrl: './form.signal.label.component.html',\n styleUrls: ['../../../legacy/label/component/form.label.component.scss'],\n})\nexport class FormSignalLabelComponent<T> {\n label = input.required<string>();\n show = input<boolean>(true);\n fieldName = input<FieldTree<T, string | number>>();\n\n isRequired = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n //this.isRequired.set(this.field()?.hasValidator?.(Validators.required) ?? false);\n })\n }\n}","@if (show()) {\n <label\n [for]=\"label()\"\n class=\"text\"\n [class.error]=\"fieldName()?.()?.errors()?.length! > 0\"\n >\n {{ label() }} {{ isRequired() ? \"*\" : \"\" }}\n </label>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-form-signal.mjs","sources":["../../../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/base/form.signal.input.base.ts","../../../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/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/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/ng-vagabond-lab-ng-dsv-ds-form-signal.ts"],"sourcesContent":["import { Component, 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 { 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: 'app-form-signal',\n imports: [DsvButtonComponent, RouterLink, TranslatePipe],\n templateUrl: './form.signal.component.html',\n styleUrl: '../../../legacy/form/component/form.component.scss',\n})\nexport class FormSignalComponent {\n toastService = inject(ToastService);\n\n form = input.required<FieldTree<any, string | number>>();\n\n urlBack = input<string>();\n textValid = input<string>('ENREGISTRER');\n formValid = input<string>('Formulaire envoyé !');\n\n callback = output<ApiDto>();\n\n onSubmit(event: Event) {\n event.preventDefault();\n submit(this.form(), async (form) => {\n if (form().valid()) {\n console.log(form().value());\n this.toastService.showToast({\n text: this.formValid(),\n });\n } else {\n this.toastService.showToast({\n text: 'Erreur dans le formulaire !',\n type: 'error',\n });\n }\n });\n }\n}\n","<form (submit)=\"onSubmit($event)\" class=\"form-container\">\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\" [class.hidden]=\"!(urlBack() && textValid() !== '')\">\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 (textValid() && textValid() !== \"\") {\n <dsv-button type=\"submit\" color=\"primary\">{{\n textValid()! | translate\n }}</dsv-button>\n }\n </div>\n</form>\n","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 {\n form = input.required<FieldTree<any, string | number>>();\n fieldName = input.required<string>();\n withLabel = input<boolean>(true);\n required = input<boolean>(false);\n\n isError = signal<boolean>(false);\n\n onSend = output<string>();\n\n constructor() {\n effect(() => {\n this.isError.set(this.getSignal()?.().errors().length > 0);\n });\n }\n\n getSignal() {\n return this.form()?.[this.fieldName() as keyof FieldTree<any, string | number>] as FieldTree<any, string | number>;\n }\n\n doOnSend() {\n const signal = this.getSignal();\n if (signal) {\n const value = signal().value();\n console.log(signal, signal().errors(), value);\n this.onSend.emit(value as string);\n }\n }\n}\n","import { Component, HostBinding, input } from \"@angular/core\";\nimport { ValidationErrorWithField } 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: ['../../../legacy/error/component/form.error.component.scss']\n})\nexport class FormSignalErrorComponent {\n errors = input.required<ValidationErrorWithField[]>();\n\n @HostBinding('class')\n get hostClasses(): string {\n const classes: string[] = ['text', 'error'];\n return classes.join(' ');\n }\n\n isRequired() {\n return this.errors().some(error => error.kind === 'required');\n }\n}","@if (errors().length > 0) {\n @if (isRequired()) {\n <div>{{ \"Le champ est obligatoire.\" | translate }}</div>\n }\n}\n","import { AfterViewInit, Component, ElementRef, input, ViewChild } from '@angular/core';\nimport { Field } from '@angular/forms/signals';\nimport { FormSignalInputBase } from '../../base/form.signal.input.base';\nimport { FormSignalErrorComponent } from '../../error/component/form.signal.error.component';\nimport { FormSignalLabelComponent } from '../../public-api';\n\nexport type INPUT_TYPE = \"text\" | \"password\" | \"textarea\" | \"email\" | \"number\" | \"date\" | \"time\" | \"datetime-local\" |\n \"month\" | \"week\" | \"url\" | \"search\" | \"tel\" | \"color\" | \"range\" | \"file\" | \"hidden\";\n\n@Component({\n selector: 'dsv-form-signal-input',\n imports: [\n Field,\n FormSignalLabelComponent,\n FormSignalErrorComponent\n ],\n templateUrl: './form.signal.input.component.html',\n styleUrl: '../../../legacy/input/component/form.input.component.scss',\n})\nexport class FormSignalInputComponent extends FormSignalInputBase implements AfterViewInit {\n @ViewChild('input')\n input!: ElementRef<HTMLInputElement>;\n\n type = input<string>('text');\n icon = input<string>();\n\n ngAfterViewInit() {\n this.input.nativeElement.type = this.type();\n }\n\n}\n","<div>\n @if (withLabel()) {\n <dsv-form-signal-label [label]=\"fieldName()\" [fieldName]=\"getSignal()\" />\n }\n @if (type() === \"textarea\") {\n <textarea\n [id]=\"fieldName()\"\n [field]=\"getSignal()\"\n class=\"form-control\"\n ></textarea>\n } @else if (getSignal()) {\n <!-- [type]=\"type()\" -->\n <input\n #input\n [id]=\"fieldName()\"\n class=\"form-control\"\n [class.error]=\"isError()\"\n [field]=\"getSignal()\"\n [class.icon]=\"icon()\"\n (blur)=\"doOnSend()\"\n (keydown.enter)=\"doOnSend()\"\n />\n }\n @if (icon()) {\n <i [class]=\"icon()\"></i>\n }\n @if (getSignal()) {\n <dsv-signal-form-error [errors]=\"getSignal()().errors()\" />\n }\n</div>\n","import { Component, effect, input, signal } from \"@angular/core\";\nimport { FieldTree } from \"@angular/forms/signals\";\n\n@Component({\n selector: 'dsv-form-signal-label',\n templateUrl: './form.signal.label.component.html',\n styleUrls: ['../../../legacy/label/component/form.label.component.scss'],\n})\nexport class FormSignalLabelComponent<T> {\n label = input.required<string>();\n show = input<boolean>(true);\n fieldName = input<FieldTree<T, string | number>>();\n\n isRequired = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n //this.isRequired.set(this.field()?.hasValidator?.(Validators.required) ?? false);\n })\n }\n}","@if (show()) {\n <label\n [for]=\"label()\"\n class=\"text\"\n [class.error]=\"fieldName()?.()?.errors()?.length! > 0\"\n >\n {{ label() }} {{ isRequired() ? \"*\" : \"\" }}\n </label>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|