@ng-vagabond-lab/ng-dsv 0.2.21 → 0.2.27

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.
Files changed (55) hide show
  1. package/assets/style.scss +8 -0
  2. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +6 -6
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +12 -12
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +24 -24
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +3 -3
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +11 -12
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +3 -3
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +6 -6
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +12 -12
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +3 -3
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +6 -6
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +3 -3
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +9 -9
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +26 -26
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +29 -29
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +4 -4
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +3 -3
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +3 -3
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +4 -4
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +6 -6
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +13 -13
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs.map +1 -1
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +12 -12
  29. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +12 -12
  30. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +3 -3
  31. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +9 -9
  32. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +3 -3
  33. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +6 -6
  34. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +3 -3
  35. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +10 -10
  36. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
  37. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +6 -6
  38. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +3 -3
  39. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +3 -3
  40. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +3 -3
  41. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +18 -18
  42. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs.map +1 -1
  43. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +10 -10
  44. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs.map +1 -1
  45. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +4 -4
  46. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs.map +1 -1
  47. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +3 -3
  48. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +15 -13
  49. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs.map +1 -1
  50. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +3 -3
  51. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +21 -21
  52. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs.map +1 -1
  53. package/package.json +1 -1
  54. package/types/ng-vagabond-lab-ng-dsv-ds-accordion.d.ts +1 -2
  55. package/types/ng-vagabond-lab-ng-dsv-router.d.ts +3 -1
@@ -53,10 +53,10 @@ class DsvBaseFormSignalInputComponent {
53
53
  }
54
54
  return '';
55
55
  }
56
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvBaseFormSignalInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
57
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: DsvBaseFormSignalInputComponent, isStandalone: true, inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, fieldName: { classPropertyName: "fieldName", publicName: "fieldName", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, withLabel: { classPropertyName: "withLabel", publicName: "withLabel", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callbackSend: "callbackSend", callbackChange: "callbackChange" }, ngImport: i0 });
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvBaseFormSignalInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
57
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DsvBaseFormSignalInputComponent, isStandalone: true, inputs: { form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, fieldName: { classPropertyName: "fieldName", publicName: "fieldName", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, withLabel: { classPropertyName: "withLabel", publicName: "withLabel", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callbackSend: "callbackSend", callbackChange: "callbackChange" }, ngImport: i0 });
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvBaseFormSignalInputComponent, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvBaseFormSignalInputComponent, decorators: [{
60
60
  type: Directive
61
61
  }], ctorParameters: () => [], propDecorators: { form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: true }] }], fieldName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldName", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], withLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "withLabel", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], debug: [{ type: i0.Input, args: [{ isSignal: true, alias: "debug", required: false }] }], callbackSend: [{ type: i0.Output, args: ["callbackSend"] }], callbackChange: [{ type: i0.Output, args: ["callbackChange"] }] } });
62
62
 
@@ -76,10 +76,10 @@ class DsvFormSignalLabelComponent {
76
76
  this.isRequired.set(this.signal().required());
77
77
  });
78
78
  }
79
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvFormSignalLabelComponent, isStandalone: true, selector: "dsv-form-signal-label", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, signal: { classPropertyName: "signal", publicName: "signal", isSignal: true, isRequired: true, transformFunction: null }, show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@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", styles: [":host{margin-left:4px;height:100%;display:flex;align-content:center;opacity:.65;-webkit-user-select:none;user-select:none}:host label{display:flex;align-items:center;width:100%}:host:empty{display:none}\n"] });
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvFormSignalLabelComponent, isStandalone: true, selector: "dsv-form-signal-label", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, signal: { classPropertyName: "signal", publicName: "signal", isSignal: true, isRequired: true, transformFunction: null }, show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@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", styles: [":host{margin-left:4px;height:100%;display:flex;align-content:center;opacity:.65;-webkit-user-select:none;user-select:none}:host label{display:flex;align-items:center;width:100%}:host:empty{display:none}\n"] });
81
81
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalLabelComponent, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalLabelComponent, decorators: [{
83
83
  type: Component,
84
84
  args: [{ selector: 'dsv-form-signal-label', template: "@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", styles: [":host{margin-left:4px;height:100%;display:flex;align-content:center;opacity:.65;-webkit-user-select:none;user-select:none}:host label{display:flex;align-items:center;width:100%}:host:empty{display:none}\n"] }]
85
85
  }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], signal: [{ type: i0.Input, args: [{ isSignal: true, alias: "signal", required: true }] }], show: [{ type: i0.Input, args: [{ isSignal: true, alias: "show", required: false }] }] } });
@@ -88,12 +88,12 @@ class DsvFormSignalCheckboxComponent extends DsvBaseFormSignalInputComponent {
88
88
  getBooleanSignal() {
89
89
  return this.form()?.[this.fieldName()];
90
90
  }
91
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
92
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvFormSignalCheckboxComponent, isStandalone: true, selector: "dsv-form-signal-checkbox", usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n", ":host{display:flex;flex:1;width:100%;margin-bottom:10px!important}:host>div{align-items:center;flex-direction:row;flex:1}:host>div dsv-form-label,:host>div dsv-form-reactive-label,:host>div dsv-form-signal-label{margin-bottom:0!important;flex:1!important;cursor:pointer!important}:host>div input{accent-color:var(--primary);width:20px!important;height:20px!important;margin-right:5px!important}:host>div input[type=checkbox]:checked{appearance:none;-webkit-appearance:none;width:18px;height:18px;border:2px solid var(--primary);border-radius:3px;background-size:120%;background-color:var(--primary);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: DsvFormSignalLabelComponent, selector: "dsv-form-signal-label", inputs: ["label", "name", "signal", "show"] }] });
91
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
92
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvFormSignalCheckboxComponent, isStandalone: true, selector: "dsv-form-signal-checkbox", usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n", ":host{display:flex;flex:1;width:100%;margin-bottom:10px!important}:host>div{align-items:center;flex-direction:row;flex:1}:host>div dsv-form-label,:host>div dsv-form-reactive-label,:host>div dsv-form-signal-label{margin-bottom:0!important;flex:1!important;cursor:pointer!important}:host>div input{accent-color:var(--primary);width:20px!important;height:20px!important;margin-right:5px!important}:host>div input[type=checkbox]:checked{appearance:none;-webkit-appearance:none;width:18px;height:18px;border:2px solid var(--secondary);border-radius:3px;background-size:120%;background-color:var(--secondary);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: DsvFormSignalLabelComponent, selector: "dsv-form-signal-label", inputs: ["label", "name", "signal", "show"] }] });
93
93
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalCheckboxComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalCheckboxComponent, decorators: [{
95
95
  type: Component,
96
- args: [{ selector: 'dsv-form-signal-checkbox', imports: [FormField, DsvFormSignalLabelComponent], template: "<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", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n", ":host{display:flex;flex:1;width:100%;margin-bottom:10px!important}:host>div{align-items:center;flex-direction:row;flex:1}:host>div dsv-form-label,:host>div dsv-form-reactive-label,:host>div dsv-form-signal-label{margin-bottom:0!important;flex:1!important;cursor:pointer!important}:host>div input{accent-color:var(--primary);width:20px!important;height:20px!important;margin-right:5px!important}:host>div input[type=checkbox]:checked{appearance:none;-webkit-appearance:none;width:18px;height:18px;border:2px solid var(--primary);border-radius:3px;background-size:120%;background-color:var(--primary);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"] }]
96
+ args: [{ selector: 'dsv-form-signal-checkbox', imports: [FormField, DsvFormSignalLabelComponent], template: "<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", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n", ":host{display:flex;flex:1;width:100%;margin-bottom:10px!important}:host>div{align-items:center;flex-direction:row;flex:1}:host>div dsv-form-label,:host>div dsv-form-reactive-label,:host>div dsv-form-signal-label{margin-bottom:0!important;flex:1!important;cursor:pointer!important}:host>div input{accent-color:var(--primary);width:20px!important;height:20px!important;margin-right:5px!important}:host>div input[type=checkbox]:checked{appearance:none;-webkit-appearance:none;width:18px;height:18px;border:2px solid var(--secondary);border-radius:3px;background-size:120%;background-color:var(--secondary);background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"] }]
97
97
  }] });
98
98
 
99
99
  class FormSignalErrorComponent {
@@ -138,10 +138,10 @@ class FormSignalErrorComponent {
138
138
  this.error.set(errorMessage);
139
139
  });
140
140
  }
141
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: FormSignalErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: FormSignalErrorComponent, isStandalone: true, selector: "dsv-form-signal-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: true, transformFunction: null }, isTouched: { classPropertyName: "isTouched", publicName: "isTouched", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "text error" }, ngImport: i0, template: "@if (errors().length > 0 && isTouched()) {\n @if (error() !== '') {\n <div>{{ error() | translate }}</div>\n }\n}\n", styles: [":host:not(:empty){padding:10px 3px}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
141
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FormSignalErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: FormSignalErrorComponent, isStandalone: true, selector: "dsv-form-signal-error", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: true, transformFunction: null }, isTouched: { classPropertyName: "isTouched", publicName: "isTouched", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "text error" }, ngImport: i0, template: "@if (errors().length > 0 && isTouched()) {\n @if (error() !== '') {\n <div>{{ error() | translate }}</div>\n }\n}\n", styles: [":host:not(:empty){padding:10px 3px}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
143
143
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: FormSignalErrorComponent, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FormSignalErrorComponent, decorators: [{
145
145
  type: Component,
146
146
  args: [{ selector: 'dsv-form-signal-error', imports: [TranslatePipe], host: {
147
147
  class: 'text error',
@@ -181,12 +181,12 @@ class DsvFormSignalComponent {
181
181
  }
182
182
  });
183
183
  }
184
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvFormSignalComponent, isStandalone: true, selector: "dsv-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: { callbackBack: "callbackBack", callback: "callback" }, ngImport: i0, template: "<form (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"primary\">{{ textValid()! | translate }}</dsv-button>\n }\n </div>\n</form>\n", styles: [":host{--form-flex-direction: column;--form-flex-wrap: nowrap;--form-flex-padding: 0;--form-max-height: auto;--form-overflow: auto;display:flex;width:100%;height:100%}:host form{flex-direction:column;display:flex;margin-top:0;unicode-bidi:isolate;max-height:var(--form-max-height)}:host form .form-scroll{overflow:var(--form-overflow);scrollbar-width:thin;display:flex;flex-direction:var(--form-flex-direction);flex-wrap:var(--form-flex-wrap);padding:var(--form-flex-padding);gap:10px}:host form .form-scroll>div{width:100%}:host .form-buttons:empty{display:none}: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", "routerLink", "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", "browserUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvFormSignalComponent, isStandalone: true, selector: "dsv-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: { callbackBack: "callbackBack", callback: "callback" }, ngImport: i0, template: "<form (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"secondary\">{{ textValid()! | translate }}</dsv-button>\n }\n </div>\n</form>\n", styles: [":host{--form-flex-direction: column;--form-flex-wrap: nowrap;--form-flex-padding: 0;--form-max-height: auto;--form-overflow: auto;display:flex;width:100%;height:100%}:host form{flex-direction:column;display:flex;margin-top:0;unicode-bidi:isolate;max-height:var(--form-max-height)}:host form .form-scroll{overflow:var(--form-overflow);scrollbar-width:thin;display:flex;flex-direction:var(--form-flex-direction);flex-wrap:var(--form-flex-wrap);padding:var(--form-flex-padding);gap:10px}:host form .form-scroll>div{width:100%}:host .form-buttons:empty{display:none}: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", "routerLink", "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", "browserUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
186
186
  }
187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalComponent, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalComponent, decorators: [{
188
188
  type: Component,
189
- args: [{ selector: 'dsv-form-signal', imports: [DsvButtonComponent, RouterLink, TranslatePipe], template: "<form (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"primary\">{{ textValid()! | translate }}</dsv-button>\n }\n </div>\n</form>\n", styles: [":host{--form-flex-direction: column;--form-flex-wrap: nowrap;--form-flex-padding: 0;--form-max-height: auto;--form-overflow: auto;display:flex;width:100%;height:100%}:host form{flex-direction:column;display:flex;margin-top:0;unicode-bidi:isolate;max-height:var(--form-max-height)}:host form .form-scroll{overflow:var(--form-overflow);scrollbar-width:thin;display:flex;flex-direction:var(--form-flex-direction);flex-wrap:var(--form-flex-wrap);padding:var(--form-flex-padding);gap:10px}:host form .form-scroll>div{width:100%}:host .form-buttons:empty{display:none}:host .form-buttons{display:flex;justify-content:flex-end;gap:10px;padding-top:10px}\n"] }]
189
+ args: [{ selector: 'dsv-form-signal', imports: [DsvButtonComponent, RouterLink, TranslatePipe], template: "<form (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"secondary\">{{ textValid()! | translate }}</dsv-button>\n }\n </div>\n</form>\n", styles: [":host{--form-flex-direction: column;--form-flex-wrap: nowrap;--form-flex-padding: 0;--form-max-height: auto;--form-overflow: auto;display:flex;width:100%;height:100%}:host form{flex-direction:column;display:flex;margin-top:0;unicode-bidi:isolate;max-height:var(--form-max-height)}:host form .form-scroll{overflow:var(--form-overflow);scrollbar-width:thin;display:flex;flex-direction:var(--form-flex-direction);flex-wrap:var(--form-flex-wrap);padding:var(--form-flex-padding);gap:10px}:host form .form-scroll>div{width:100%}:host .form-buttons:empty{display:none}:host .form-buttons{display:flex;justify-content:flex-end;gap:10px;padding-top:10px}\n"] }]
190
190
  }], 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 }] }], callbackBack: [{ type: i0.Output, args: ["callbackBack"] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
191
191
 
192
192
  class DsvFormSignalInputComponent extends DsvBaseFormSignalInputComponent {
@@ -196,19 +196,19 @@ class DsvFormSignalInputComponent extends DsvBaseFormSignalInputComponent {
196
196
  ...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
197
197
  withError = input(true, /* @ts-ignore */
198
198
  ...(ngDevMode ? [{ debugName: "withError" }] : /* istanbul ignore next */ []));
199
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
200
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvFormSignalInputComponent, isStandalone: true, selector: "dsv-form-signal-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, withError: { classPropertyName: "withError", publicName: "withError", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<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 @if (withError()) {\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n }\n }\n</div>\n", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: DsvFormSignalLabelComponent, selector: "dsv-form-signal-label", inputs: ["label", "name", "signal", "show"] }, { kind: "component", type: FormSignalErrorComponent, selector: "dsv-form-signal-error", inputs: ["errors", "isTouched"] }] });
199
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
200
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvFormSignalInputComponent, isStandalone: true, selector: "dsv-form-signal-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, withError: { classPropertyName: "withError", publicName: "withError", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<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 @if (withError()) {\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n }\n }\n</div>\n", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: DsvFormSignalLabelComponent, selector: "dsv-form-signal-label", inputs: ["label", "name", "signal", "show"] }, { kind: "component", type: FormSignalErrorComponent, selector: "dsv-form-signal-error", inputs: ["errors", "isTouched"] }] });
201
201
  }
202
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalInputComponent, decorators: [{
202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalInputComponent, decorators: [{
203
203
  type: Component,
204
204
  args: [{ selector: 'dsv-form-signal-input', imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent], template: "<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 @if (withError()) {\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n }\n }\n</div>\n", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n"] }]
205
205
  }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], withError: [{ type: i0.Input, args: [{ isSignal: true, alias: "withError", required: false }] }] } });
206
206
 
207
207
  class DsvBaseFormSignalComponent {
208
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvBaseFormSignalComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
209
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: DsvBaseFormSignalComponent, isStandalone: true, ngImport: i0 });
208
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvBaseFormSignalComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
209
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: DsvBaseFormSignalComponent, isStandalone: true, ngImport: i0 });
210
210
  }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvBaseFormSignalComponent, decorators: [{
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvBaseFormSignalComponent, decorators: [{
212
212
  type: Directive
213
213
  }] });
214
214
 
@@ -226,10 +226,10 @@ class DsvFormSignalSearchbarComponent extends DsvBaseFormSignalComponent {
226
226
  onSend(value) {
227
227
  this.callbackSearch.emit(value);
228
228
  }
229
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalSearchbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
230
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: DsvFormSignalSearchbarComponent, isStandalone: true, selector: "dsv-form-signal-searchbar", inputs: { search: { classPropertyName: "search", publicName: "search", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callbackSearch: "callbackSearch" }, usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{display:flex;margin:5px}:host dsv-form-reactive-input,:host dsv-form-signal-input{--input-width: 100% !important}\n"], dependencies: [{ kind: "component", type: DsvFormSignalComponent, selector: "dsv-form-signal", inputs: ["form", "urlBack", "textValid", "formValid"], outputs: ["callbackBack", "callback"] }, { kind: "component", type: DsvFormSignalInputComponent, selector: "dsv-form-signal-input", inputs: ["type", "icon", "withError"] }] });
229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalSearchbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
230
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: DsvFormSignalSearchbarComponent, isStandalone: true, selector: "dsv-form-signal-searchbar", inputs: { search: { classPropertyName: "search", publicName: "search", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callbackSearch: "callbackSearch" }, usesInheritance: true, ngImport: i0, template: "<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", styles: [":host{display:flex;margin:5px}:host dsv-form-reactive-input,:host dsv-form-signal-input{--input-width: 100% !important}\n"], dependencies: [{ kind: "component", type: DsvFormSignalComponent, selector: "dsv-form-signal", inputs: ["form", "urlBack", "textValid", "formValid"], outputs: ["callbackBack", "callback"] }, { kind: "component", type: DsvFormSignalInputComponent, selector: "dsv-form-signal-input", inputs: ["type", "icon", "withError"] }] });
231
231
  }
232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalSearchbarComponent, decorators: [{
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalSearchbarComponent, decorators: [{
233
233
  type: Component,
234
234
  args: [{ selector: 'dsv-form-signal-searchbar', imports: [DsvFormSignalComponent, DsvFormSignalInputComponent], template: "<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", styles: [":host{display:flex;margin:5px}:host dsv-form-reactive-input,:host dsv-form-signal-input{--input-width: 100% !important}\n"] }]
235
235
  }], ctorParameters: () => [], propDecorators: { search: [{ type: i0.Input, args: [{ isSignal: true, alias: "search", required: false }] }], callbackSearch: [{ type: i0.Output, args: ["callbackSearch"] }] } });
@@ -239,10 +239,10 @@ class DsvFormSignalSelectComponent extends DsvBaseFormSignalInputComponent {
239
239
  ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
240
240
  list = input([], /* @ts-ignore */
241
241
  ...(ngDevMode ? [{ debugName: "list" }] : /* istanbul ignore next */ []));
242
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
243
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvFormSignalSelectComponent, isStandalone: true, selector: "dsv-form-signal-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<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-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n </div>\n }\n</div>\n", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n", ":host{--select-width: calc(100% - 2px) ;--select-height: 32px;width:100%}:host>div .form-control{width:var(--select-width);height:var(--select-height)}:host>div .form-control[multiple]{height:auto}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: DsvFormSignalLabelComponent, selector: "dsv-form-signal-label", inputs: ["label", "name", "signal", "show"] }, { kind: "component", type: FormSignalErrorComponent, selector: "dsv-form-signal-error", inputs: ["errors", "isTouched"] }] });
242
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
243
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvFormSignalSelectComponent, isStandalone: true, selector: "dsv-form-signal-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, list: { classPropertyName: "list", publicName: "list", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<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-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n </div>\n }\n</div>\n", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n", ":host{--select-width: calc(100% - 2px) ;--select-height: 32px;width:100%}:host>div .form-control{width:var(--select-width);height:var(--select-height)}:host>div .form-control[multiple]{height:auto}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: DsvFormSignalLabelComponent, selector: "dsv-form-signal-label", inputs: ["label", "name", "signal", "show"] }, { kind: "component", type: FormSignalErrorComponent, selector: "dsv-form-signal-error", inputs: ["errors", "isTouched"] }] });
244
244
  }
245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvFormSignalSelectComponent, decorators: [{
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvFormSignalSelectComponent, decorators: [{
246
246
  type: Component,
247
247
  args: [{ selector: 'dsv-form-signal-select', imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent], template: "<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-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n </div>\n }\n</div>\n", styles: [":host{--input-width: calc(100% - 12px) ;--input-max-width: auto;--input-opacity: 1;--input-flex-direction: column;--input-align-center: false;--input-justify-content: false;--input-gap: 0;--input-height: auto;--input-min-height: 90px;--input-max-height: 150px;width:100%}:host>div{display:flex;flex-direction:var(--input-flex-direction);gap:var(--input-gap);align-items:var(--input-align-center);justify-content:var(--input-justify-content);position:relative;gap:2px}:host>div .form-control{font-family:inherit;display:block;margin:0;padding:5px;width:var(--input-width);max-width:var(--input-max-width);font-size:1rem;line-height:1.5;color:var(--text);background-color:var(--background-card);background-clip:padding-box;border:1px solid var(--border);border-radius:5px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;outline-color:#0000004d;opacity:var(--input-opacity)}:host>div .form-control.icon{padding-left:25px}:host>div .form-control.error{border:1px solid var(--error)}:host>div .form-control:disabled{opacity:.6}:host>div i{position:absolute;z-index:1;top:10px;left:7px}:host>div textarea{overflow:auto;scrollbar-width:thin;resize:vertical}:host>div textarea.form-control{height:auto;height:var(--input-height);min-height:var(--input-min-height);max-height:var(--input-max-height)}:host-context(body.dark) .form-control{color-scheme:dark}\n", ":host{--select-width: calc(100% - 2px) ;--select-height: 32px;width:100%}:host>div .form-control{width:var(--select-width);height:var(--select-height)}:host>div .form-control[multiple]{height:auto}\n"] }]
248
248
  }], propDecorators: { multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], list: [{ type: i0.Input, args: [{ isSignal: true, alias: "list", required: false }] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-form-signal.mjs","sources":["../../../projects/ng-dsv/ds/form/signal/form/base/input/base-form-signal-input.component.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 { Directive, effect, input, output, signal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\n\n@Directive()\nexport abstract class DsvBaseFormSignalInputComponent<T> {\n readonly form = input.required<FieldTree<T, string | number>>();\n readonly fieldName = input.required<string>();\n readonly label = input<string>();\n readonly withLabel = input<boolean>(true);\n readonly placeholder = input<string>('');\n readonly required = input<boolean>(false);\n readonly debug = input<boolean>(false);\n\n readonly isError = signal<boolean>(false);\n\n readonly callbackSend = output<string>();\n readonly callbackChange = output<string>();\n\n constructor() {\n effect(() => {\n this.getSignal() &&\n this.isError.set(this.getSignal()().touched() && this.getSignal()().errors().length > 0);\n });\n }\n\n isTouched(): boolean {\n return this.getSignal()().touched() ?? false;\n }\n\n getSignal(): FieldTree<string, string | number> {\n return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n string,\n string | number\n >;\n }\n\n doOnSend(): void {\n this.getValue() && this.callbackSend.emit(this.getValue());\n }\n\n doChange(): void {\n this.callbackChange.emit(this.getValue());\n }\n\n protected getValue(): string {\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 DsvFormSignalLabelComponent<T> {\n readonly label = input.required<string>();\n readonly name = input.required<string>();\n readonly signal = input.required<FieldState<T>>();\n readonly show = input<boolean>(true);\n\n readonly 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 { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-checkbox',\n imports: [FormField, DsvFormSignalLabelComponent],\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 DsvFormSignalCheckboxComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n getBooleanSignal(): FieldTree<boolean, string | number> {\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, input, signal } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-form-signal-error',\n imports: [TranslatePipe],\n templateUrl: './form-signal-error.component.html',\n styleUrls: ['../../../reactive/error/component/form-reactive-error.component.scss'],\n host: {\n class: 'text error',\n },\n})\nexport class FormSignalErrorComponent {\n errors = input.required<ValidationError[]>();\n isTouched = input<boolean>(false);\n\n error = signal<string>('');\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 DsvFormSignalComponent<T> {\n readonly toastService = inject(ToastService);\n\n readonly form = input.required<FieldTree<T, string | number>>();\n\n readonly urlBack = input<string>();\n readonly textValid = input<string>('ENREGISTRER');\n readonly formValid = input<string>('');\n\n readonly callbackBack = output<void>();\n readonly callback = output<ApiDto>();\n\n readonly isCallbackBack = computed<boolean>(() => isCallback(this.callbackBack));\n\n onSubmit(event: Event): void {\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 (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"primary\">{{ textValid()! | translate }}</dsv-button>\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 { FormSignalErrorComponent } from '../../error/component/form-signal-error.component';\nimport { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-input',\n imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent],\n templateUrl: './form-signal-input.component.html',\n styleUrl: '../../../reactive/input/component/form-reactive-input.component.scss',\n})\nexport class DsvFormSignalInputComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly type = input<INPUT_TYPE>('text');\n readonly icon = input<string>();\n readonly withError = input<boolean>(true);\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 @if (withError()) {\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n }\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class DsvBaseFormSignalComponent {}\n","import { Component, effect, input, output, signal } from '@angular/core';\nimport { form } from '@angular/forms/signals';\nimport { DsvBaseFormSignalComponent } from '../../form/base/base-form-signal.component';\nimport { DsvFormSignalComponent, DsvFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-searchbar',\n imports: [DsvFormSignalComponent, DsvFormSignalInputComponent],\n templateUrl: './form-signal-searchbar.component.html',\n styleUrls: ['../../../reactive/searchbar/component/form-reactive-searchbar.component.scss'],\n})\nexport class DsvFormSignalSearchbarComponent extends DsvBaseFormSignalComponent {\n readonly search = input<string>('');\n readonly callbackSearch = output<string>();\n\n readonly 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): void {\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 { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\nimport { DsvBaseFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-select',\n imports: [FormField, DsvFormSignalLabelComponent, 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 DsvFormSignalSelectComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly multiple = input<boolean>(false);\n readonly 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-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n </div>\n }\n</div>\n","import { ChildFieldContext } from '@angular/forms/signals';\n\nexport const requiredTrim = (value: ChildFieldContext<string>): { kind: 'required' } | null =>\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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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-form-signal.mjs","sources":["../../../projects/ng-dsv/ds/form/signal/form/base/input/base-form-signal-input.component.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 { Directive, effect, input, output, signal } from '@angular/core';\nimport { FieldTree } from '@angular/forms/signals';\n\n@Directive()\nexport abstract class DsvBaseFormSignalInputComponent<T> {\n readonly form = input.required<FieldTree<T, string | number>>();\n readonly fieldName = input.required<string>();\n readonly label = input<string>();\n readonly withLabel = input<boolean>(true);\n readonly placeholder = input<string>('');\n readonly required = input<boolean>(false);\n readonly debug = input<boolean>(false);\n\n readonly isError = signal<boolean>(false);\n\n readonly callbackSend = output<string>();\n readonly callbackChange = output<string>();\n\n constructor() {\n effect(() => {\n this.getSignal() &&\n this.isError.set(this.getSignal()().touched() && this.getSignal()().errors().length > 0);\n });\n }\n\n isTouched(): boolean {\n return this.getSignal()().touched() ?? false;\n }\n\n getSignal(): FieldTree<string, string | number> {\n return this.form()?.[this.fieldName() as keyof FieldTree<T, string | number>] as FieldTree<\n string,\n string | number\n >;\n }\n\n doOnSend(): void {\n this.getValue() && this.callbackSend.emit(this.getValue());\n }\n\n doChange(): void {\n this.callbackChange.emit(this.getValue());\n }\n\n protected getValue(): string {\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 DsvFormSignalLabelComponent<T> {\n readonly label = input.required<string>();\n readonly name = input.required<string>();\n readonly signal = input.required<FieldState<T>>();\n readonly show = input<boolean>(true);\n\n readonly 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 { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-checkbox',\n imports: [FormField, DsvFormSignalLabelComponent],\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 DsvFormSignalCheckboxComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n getBooleanSignal(): FieldTree<boolean, string | number> {\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, input, signal } from '@angular/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'dsv-form-signal-error',\n imports: [TranslatePipe],\n templateUrl: './form-signal-error.component.html',\n styleUrls: ['../../../reactive/error/component/form-reactive-error.component.scss'],\n host: {\n class: 'text error',\n },\n})\nexport class FormSignalErrorComponent {\n errors = input.required<ValidationError[]>();\n isTouched = input<boolean>(false);\n\n error = signal<string>('');\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 DsvFormSignalComponent<T> {\n readonly toastService = inject(ToastService);\n\n readonly form = input.required<FieldTree<T, string | number>>();\n\n readonly urlBack = input<string>();\n readonly textValid = input<string>('ENREGISTRER');\n readonly formValid = input<string>('');\n\n readonly callbackBack = output<void>();\n readonly callback = output<ApiDto>();\n\n readonly isCallbackBack = computed<boolean>(() => isCallback(this.callbackBack));\n\n onSubmit(event: Event): void {\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 (submit)=\"onSubmit($event)\" novalidate>\n <div class=\"form-scroll\">\n <ng-content></ng-content>\n </div>\n <div class=\"form-buttons\">\n @if (urlBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" [routerLink]=\"urlBack()\" [prevent]=\"false\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (isCallbackBack()) {\n <dsv-button color=\"default\" variant=\"outlined\" (callback)=\"callbackBack.emit()\">{{\n 'RETOUR' | translate\n }}</dsv-button>\n }\n @if (textValid() && textValid() !== '') {\n <dsv-button type=\"submit\" color=\"secondary\">{{ textValid()! | translate }}</dsv-button>\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 { FormSignalErrorComponent } from '../../error/component/form-signal-error.component';\nimport { DsvBaseFormSignalInputComponent } from '../../form/base/input/base-form-signal-input.component';\nimport { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\n\n@Component({\n selector: 'dsv-form-signal-input',\n imports: [FormField, DsvFormSignalLabelComponent, FormSignalErrorComponent],\n templateUrl: './form-signal-input.component.html',\n styleUrl: '../../../reactive/input/component/form-reactive-input.component.scss',\n})\nexport class DsvFormSignalInputComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly type = input<INPUT_TYPE>('text');\n readonly icon = input<string>();\n readonly withError = input<boolean>(true);\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 @if (withError()) {\n <dsv-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n }\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class DsvBaseFormSignalComponent {}\n","import { Component, effect, input, output, signal } from '@angular/core';\nimport { form } from '@angular/forms/signals';\nimport { DsvBaseFormSignalComponent } from '../../form/base/base-form-signal.component';\nimport { DsvFormSignalComponent, DsvFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-searchbar',\n imports: [DsvFormSignalComponent, DsvFormSignalInputComponent],\n templateUrl: './form-signal-searchbar.component.html',\n styleUrls: ['../../../reactive/searchbar/component/form-reactive-searchbar.component.scss'],\n})\nexport class DsvFormSignalSearchbarComponent extends DsvBaseFormSignalComponent {\n readonly search = input<string>('');\n readonly callbackSearch = output<string>();\n\n readonly 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): void {\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 { DsvFormSignalLabelComponent } from '../../label/component/form-signal-label.component';\nimport { DsvBaseFormSignalInputComponent } from '../../public-api';\n\n@Component({\n selector: 'dsv-form-signal-select',\n imports: [FormField, DsvFormSignalLabelComponent, 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 DsvFormSignalSelectComponent<T> extends DsvBaseFormSignalInputComponent<T> {\n readonly multiple = input<boolean>(false);\n readonly 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-form-signal-error [errors]=\"getSignal()().errors()\" [isTouched]=\"isTouched()\" />\n </div>\n }\n</div>\n","import { ChildFieldContext } from '@angular/forms/signals';\n\nexport const requiredTrim = (value: ChildFieldContext<string>): { kind: 'required' } | null =>\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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"}
@@ -17,12 +17,12 @@ class DsvHeaderComponent {
17
17
  doToogleMenu() {
18
18
  this.menuService.toogleMenu();
19
19
  }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvHeaderComponent, isStandalone: true, selector: "dsv-header", inputs: { img: { classPropertyName: "img", publicName: "img", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, withMenu: { classPropertyName: "withMenu", publicName: "withMenu", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;width:100%;min-height:48px;padding:0 16px;box-sizing:border-box;background-color:var(--background-card);color:var(--text);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}:host .header-title{display:flex;gap:10px;align-items:center;flex:1}:host .dsv-header-logo{display:flex;justify-content:flex-start;align-items:center;font-size:1.3rem;gap:10px}:host .dsv-header-logo img{width:30px;height:30px;cursor:pointer}:host .dsv-header-logo span{font-weight:700;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvMenuButtonComponent, selector: "dsv-menu-button" }, { kind: "directive", type: RouterInternalPipe, selector: "a[dsvLink]", outputs: ["dsvLink"] }] });
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvHeaderComponent, isStandalone: true, selector: "dsv-header", inputs: { img: { classPropertyName: "img", publicName: "img", isSignal: true, isRequired: false, transformFunction: null }, titleText: { classPropertyName: "titleText", publicName: "titleText", isSignal: true, isRequired: false, transformFunction: null }, withMenu: { classPropertyName: "withMenu", publicName: "withMenu", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;width:100%;min-height:48px;padding:0 7px 0 3px;box-sizing:border-box;background-color:var(--background-card);color:var(--text);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}:host .header-title{display:flex;gap:10px;align-items:center;flex:1}:host .dsv-header-logo{display:flex;justify-content:flex-start;align-items:center;font-size:1.3rem;gap:10px}:host .dsv-header-logo img{width:30px;height:30px;cursor:pointer}:host .dsv-header-logo span{font-weight:700;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsvMenuButtonComponent, selector: "dsv-menu-button" }, { kind: "directive", type: RouterInternalPipe, selector: "a[dsvLink]", outputs: ["dsvLink"] }] });
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvHeaderComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvHeaderComponent, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 'dsv-header', imports: [CommonModule, DsvMenuButtonComponent, RouterInternalPipe], template: "<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;width:100%;min-height:48px;padding:0 16px;box-sizing:border-box;background-color:var(--background-card);color:var(--text);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}:host .header-title{display:flex;gap:10px;align-items:center;flex:1}:host .dsv-header-logo{display:flex;justify-content:flex-start;align-items:center;font-size:1.3rem;gap:10px}:host .dsv-header-logo img{width:30px;height:30px;cursor:pointer}:host .dsv-header-logo span{font-weight:700;cursor:pointer}\n"] }]
25
+ args: [{ selector: 'dsv-header', imports: [CommonModule, DsvMenuButtonComponent, RouterInternalPipe], template: "<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;width:100%;min-height:48px;padding:0 7px 0 3px;box-sizing:border-box;background-color:var(--background-card);color:var(--text);transition:box-shadow .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none}:host .header-title{display:flex;gap:10px;align-items:center;flex:1}:host .dsv-header-logo{display:flex;justify-content:flex-start;align-items:center;font-size:1.3rem;gap:10px}:host .dsv-header-logo img{width:30px;height:30px;cursor:pointer}:host .dsv-header-logo span{font-weight:700;cursor:pointer}\n"] }]
26
26
  }], propDecorators: { img: [{ type: i0.Input, args: [{ isSignal: true, alias: "img", required: false }] }], titleText: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleText", required: false }] }], withMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "withMenu", required: false }] }] } });
27
27
 
28
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-header.mjs","sources":["../../../projects/ng-dsv/ds/header/component/header.component.ts","../../../projects/ng-dsv/ds/header/component/header.component.html","../../../projects/ng-dsv/ds/header/ng-vagabond-lab-ng-dsv-ds-header.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { DsvMenuButtonComponent, MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { RouterInternalPipe } from '@ng-vagabond-lab/ng-dsv/router';\n\n@Component({\n selector: 'dsv-header',\n imports: [CommonModule, DsvMenuButtonComponent, RouterInternalPipe],\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class DsvHeaderComponent {\n readonly menuService = inject(MenuService);\n\n readonly img = input<string>();\n readonly titleText = input<string>('');\n readonly withMenu = input<boolean>(true);\n\n readonly titleTextParts = computed<string[]>(() => this.titleText().split(' '));\n\n doToogleMenu(): void {\n this.menuService.toogleMenu();\n }\n}\n","<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAWa,kBAAkB,CAAA;AAClB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,IAAA,GAAG,GAAG,KAAK;uFAAU;IACrB,SAAS,GAAG,KAAK,CAAS,EAAE;kFAAC;IAC7B,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;AAE/B,IAAA,cAAc,GAAG,QAAQ,CAAW,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;uFAAC;IAE/E,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;IACjC;uGAXS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,ycCX/B,imBAmBA,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,4DAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIzD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,imBAAA,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA;;;AEPvE;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-header.mjs","sources":["../../../projects/ng-dsv/ds/header/component/header.component.ts","../../../projects/ng-dsv/ds/header/component/header.component.html","../../../projects/ng-dsv/ds/header/ng-vagabond-lab-ng-dsv-ds-header.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { DsvMenuButtonComponent, MenuService } from '@ng-vagabond-lab/ng-dsv/ds/menu';\nimport { RouterInternalPipe } from '@ng-vagabond-lab/ng-dsv/router';\n\n@Component({\n selector: 'dsv-header',\n imports: [CommonModule, DsvMenuButtonComponent, RouterInternalPipe],\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class DsvHeaderComponent {\n readonly menuService = inject(MenuService);\n\n readonly img = input<string>();\n readonly titleText = input<string>('');\n readonly withMenu = input<boolean>(true);\n\n readonly titleTextParts = computed<string[]>(() => this.titleText().split(' '));\n\n doToogleMenu(): void {\n this.menuService.toogleMenu();\n }\n}\n","<div class=\"header-title\">\n @if (withMenu()) {\n <dsv-menu-button />\n }\n <a href=\"/\" class=\"dsv-header-logo\" dsvLink>\n @if (img()) {\n <img src=\"{{ img() }}\" alt=\"logo\" />\n }\n <div>\n @for (titleText of titleTextParts(); track titleText; let index = $index) {\n <span class=\"title-{{ index }}\">{{ titleText }}</span>\n @if (index < titleTextParts().length - 1) {\n <span>&nbsp;</span>\n }\n }\n </div>\n </a>\n</div>\n<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAWa,kBAAkB,CAAA;AAClB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,IAAA,GAAG,GAAG,KAAK;uFAAU;IACrB,SAAS,GAAG,KAAK,CAAS,EAAE;kFAAC;IAC7B,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;AAE/B,IAAA,cAAc,GAAG,QAAQ,CAAW,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;uFAAC;IAE/E,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;IACjC;uGAXS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,ycCX/B,imBAmBA,EAAA,MAAA,EAAA,CAAA,6lBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,4DAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIzD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,CAAC,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,imBAAA,EAAA,MAAA,EAAA,CAAA,6lBAAA,CAAA,EAAA;;;AEPvE;;AAEG;;;;"}
@@ -25,10 +25,10 @@ class DsvImgComponent {
25
25
  onImageError() {
26
26
  this.error.set(true);
27
27
  }
28
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvImgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvImgComponent, isStandalone: true, selector: "dsv-img", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, empty: { classPropertyName: "empty", publicName: "empty", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n", styles: [":host{--img-width: 100%;--img-height: 100%;--img-border-radius: 0px;display:flex;flex-direction:column}:host img{background-color:var(--background);border-radius:var(--img-border-radius);width:var(--img-width);height:var(--img-height)}:host svg{background-color:var(--background-card);opacity:.5;margin:0;padding:0;border-radius:10px}\n"], dependencies: [{ kind: "component", type: DsvSekeletonComponent, selector: "dsv-skeleton" }] });
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvImgComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvImgComponent, isStandalone: true, selector: "dsv-img", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, empty: { classPropertyName: "empty", publicName: "empty", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n", styles: [":host{--img-width: 100%;--img-height: 100%;--img-border-radius: 0px;display:flex;flex-direction:column}:host img{background-color:var(--background);border-radius:var(--img-border-radius);width:var(--img-width);height:var(--img-height)}:host svg{background-color:var(--background-card);opacity:.5;margin:0;padding:0;border-radius:10px}\n"], dependencies: [{ kind: "component", type: DsvSekeletonComponent, selector: "dsv-skeleton" }] });
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvImgComponent, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvImgComponent, decorators: [{
32
32
  type: Component,
33
33
  args: [{ selector: 'dsv-img', imports: [DsvSekeletonComponent], template: "@if (!load() || src() === '') {\n <dsv-skeleton>\n <svg\n [attr.viewBox]=\"'0 0 ' + width() + ' ' + height()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ></svg>\n </dsv-skeleton>\n}\n@if (src() !== '' && !error()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n (error)=\"onImageError()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n [class.hidden]=\"!load()\"\n />\n} @else if (error()) {\n <img\n [src]=\"empty()\"\n [alt]=\"alt()\"\n (load)=\"doLoad()\"\n [style.aspect-ratio]=\"aspectRatio()\"\n />\n}\n", styles: [":host{--img-width: 100%;--img-height: 100%;--img-border-radius: 0px;display:flex;flex-direction:column}:host img{background-color:var(--background);border-radius:var(--img-border-radius);width:var(--img-width);height:var(--img-height)}:host svg{background-color:var(--background-card);opacity:.5;margin:0;padding:0;border-radius:10px}\n"] }]
34
34
  }], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: true }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], empty: [{ type: i0.Input, args: [{ isSignal: true, alias: "empty", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }] } });
@@ -33,10 +33,10 @@ class DsvItemComponent {
33
33
  }
34
34
  this.isCallback() && this.callback.emit();
35
35
  }
36
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: DsvItemComponent, isStandalone: true, selector: "dsv-item", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, nb: { classPropertyName: "nb", publicName: "nb", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, small: { classPropertyName: "small", publicName: "small", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\n", styles: [":host{--a-margin: 5px 10px;--a-padding: 10px;--a-color: inherit;display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}:host a{margin:var(--a-margin);padding:var(--a-padding);color:var(--a-color);display:flex;justify-content:space-between;cursor:pointer}:host a span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host a dsv-chip{font-size:.8rem;padding:3px 7px;min-width:10px}:host a:hover{background-color:#d9d9d9}:host i{margin-right:10px}:host .text{font-size:1rem;font-weight:700}:host .text.small{margin-left:20px}:host.active .small{--a-color: #6e6e6e}:host:not(.active) .small{--a-color: #aeaeae}:host-context(body.dark) a:hover{background-color:#313131!important}:host-context(body.dark) a dsv-chip{color:var(--text)!important}:host-context(body.dark).active .small{--a-color: #aeaeae}:host-context(body.dark):not(.active) .small{--a-color: #6e6e6e}\n"], dependencies: [{ kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: DsvItemComponent, isStandalone: true, selector: "dsv-item", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, nb: { classPropertyName: "nb", publicName: "nb", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, small: { classPropertyName: "small", publicName: "small", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { callback: "callback" }, ngImport: i0, template: "<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\n", styles: [":host{--a-margin: 5px 10px;--a-padding: 10px;--a-color: inherit;display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}:host a{margin:var(--a-margin);padding:var(--a-padding);color:var(--a-color);display:flex;justify-content:space-between;cursor:pointer}:host a span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host a dsv-chip{font-size:.8rem;padding:3px 7px;min-width:10px}:host a:hover{background-color:#d9d9d9}:host i{margin-right:10px}:host .text{font-size:1rem;font-weight:700}:host .text.small{margin-left:20px}:host.active .small{--a-color: #6e6e6e}:host:not(.active) .small{--a-color: #aeaeae}:host-context(body.dark) a:hover{background-color:#313131!important}:host-context(body.dark) a dsv-chip{color:var(--text)!important}:host-context(body.dark).active .small{--a-color: #aeaeae}:host-context(body.dark):not(.active) .small{--a-color: #6e6e6e}\n"], dependencies: [{ kind: "component", type: DsvChipComponent, selector: "dsv-chip", inputs: ["text"], outputs: ["delete"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: DsvItemComponent, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DsvItemComponent, decorators: [{
40
40
  type: Component,
41
41
  args: [{ selector: 'dsv-item', imports: [DsvChipComponent, TranslatePipe], template: "<a [href]=\"this.url() ?? '#'\" class=\"text\" (click)=\"doClick($event)\" [class.small]=\"small()\">\n <span>\n @if (icon()) {\n <i class=\"ri-{{ icon() }}-line\"></i>\n }\n {{ text() | translate }}\n </span>\n @if (nb() >= 0) {\n <dsv-chip color=\"secondary\">{{ nb() }}</dsv-chip>\n }\n</a>\n<ng-content></ng-content>\n", styles: [":host{--a-margin: 5px 10px;--a-padding: 10px;--a-color: inherit;display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}:host a{margin:var(--a-margin);padding:var(--a-padding);color:var(--a-color);display:flex;justify-content:space-between;cursor:pointer}:host a span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host a dsv-chip{font-size:.8rem;padding:3px 7px;min-width:10px}:host a:hover{background-color:#d9d9d9}:host i{margin-right:10px}:host .text{font-size:1rem;font-weight:700}:host .text.small{margin-left:20px}:host.active .small{--a-color: #6e6e6e}:host:not(.active) .small{--a-color: #aeaeae}:host-context(body.dark) a:hover{background-color:#313131!important}:host-context(body.dark) a dsv-chip{color:var(--text)!important}:host-context(body.dark).active .small{--a-color: #aeaeae}:host-context(body.dark):not(.active) .small{--a-color: #6e6e6e}\n"] }]
42
42
  }], ctorParameters: () => [], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], nb: [{ type: i0.Input, args: [{ isSignal: true, alias: "nb", required: false }] }], url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], small: [{ type: i0.Input, args: [{ isSignal: true, alias: "small", required: false }] }], callback: [{ type: i0.Output, args: ["callback"] }] } });
@@ -8,12 +8,12 @@ class LinearProgressComponent {
8
8
  ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
9
9
  indeterminate = input(true, /* @ts-ignore */
10
10
  ...(ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []));
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: LinearProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: LinearProgressComponent, isStandalone: true, selector: "dsv-linear-progress", inputs: { load: { classPropertyName: "load", publicName: "load", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n", styles: [".progress-container{width:100%;height:3px;background-color:transparent;overflow:hidden;position:absolute;z-index:1}.progress-container .progress-bar{height:100%}.progress-container .indeterminate{width:100%;height:100%;background-color:var(--primary);animation:indeterminateAnimation .5s infinite linear;transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}\n"] });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: LinearProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: LinearProgressComponent, isStandalone: true, selector: "dsv-linear-progress", inputs: { load: { classPropertyName: "load", publicName: "load", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n", styles: [":host{position:absolute;width:100%;height:5px!important;height:0px}:host .progress-container{width:100%;height:3px;background-color:transparent;overflow:hidden;position:absolute;z-index:1}:host .progress-container .progress-bar{height:100%}:host .progress-container .indeterminate{width:100%;height:100%;background-color:var(--secondary);animation:indeterminateAnimation .5s infinite linear;transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}\n"] });
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: LinearProgressComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: LinearProgressComponent, decorators: [{
15
15
  type: Component,
16
- args: [{ selector: 'dsv-linear-progress', template: "@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n", styles: [".progress-container{width:100%;height:3px;background-color:transparent;overflow:hidden;position:absolute;z-index:1}.progress-container .progress-bar{height:100%}.progress-container .indeterminate{width:100%;height:100%;background-color:var(--primary);animation:indeterminateAnimation .5s infinite linear;transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}\n"] }]
16
+ args: [{ selector: 'dsv-linear-progress', template: "@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n", styles: [":host{position:absolute;width:100%;height:5px!important;height:0px}:host .progress-container{width:100%;height:3px;background-color:transparent;overflow:hidden;position:absolute;z-index:1}:host .progress-container .progress-bar{height:100%}:host .progress-container .indeterminate{width:100%;height:100%;background-color:var(--secondary);animation:indeterminateAnimation .5s infinite linear;transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(0) scaleX(0)}40%{transform:translate(0) scaleX(.4)}to{transform:translate(100%) scaleX(.5)}}\n"] }]
17
17
  }], propDecorators: { load: [{ type: i0.Input, args: [{ isSignal: true, alias: "load", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }] } });
18
18
 
19
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs","sources":["../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.ts","../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.html","../../../projects/ng-dsv/ds/linear-progress/ng-vagabond-lab-ng-dsv-ds-linear-progress.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-linear-progress',\n templateUrl: './linear-progress.component.html',\n styleUrls: ['./linear-progress.component.scss'],\n})\nexport class LinearProgressComponent {\n readonly load = input<boolean>(false);\n readonly value = input<number>(0);\n readonly indeterminate = input<boolean>(true);\n}\n","@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,uBAAuB,CAAA;IACvB,IAAI,GAAG,KAAK,CAAU,KAAK;6EAAC;IAC5B,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;IACxB,aAAa,GAAG,KAAK,CAAU,IAAI;sFAAC;uGAHpC,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,wdCPpC,uQASA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA,CAAA;;2FDFa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,qBAAqB,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,ieAAA,CAAA,EAAA;;;AEHnC;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs","sources":["../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.ts","../../../projects/ng-dsv/ds/linear-progress/component/linear-progress.component.html","../../../projects/ng-dsv/ds/linear-progress/ng-vagabond-lab-ng-dsv-ds-linear-progress.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'dsv-linear-progress',\n templateUrl: './linear-progress.component.html',\n styleUrls: ['./linear-progress.component.scss'],\n})\nexport class LinearProgressComponent {\n readonly load = input<boolean>(false);\n readonly value = input<number>(0);\n readonly indeterminate = input<boolean>(true);\n}\n","@if (load()) {\n <div class=\"progress-container\">\n <div\n class=\"progress-bar\"\n [style.width]=\"indeterminate() ? null : value + '%'\"\n [class.indeterminate]=\"indeterminate()\"\n ></div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,uBAAuB,CAAA;IACvB,IAAI,GAAG,KAAK,CAAU,KAAK;6EAAC;IAC5B,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;IACxB,aAAa,GAAG,KAAK,CAAU,IAAI;sFAAC;uGAHpC,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,wdCPpC,uQASA,EAAA,MAAA,EAAA,CAAA,wjBAAA,CAAA,EAAA,CAAA;;2FDFa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,qBAAqB,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,wjBAAA,CAAA,EAAA;;;AEHnC;;AAEG;;;;"}