input.component.mjs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, forwardRef, } from '@angular/core';
  2. import { TypeEnum } from '../../model/components/type.enum';
  3. import { NgClass } from '@angular/common';
  4. import { provideControlContainer, provideValueAccessor } from '../../utils/form.util';
  5. import { FormGenericComponent } from '../../services/form-generic.abstract';
  6. import { FormErrorComponent } from '../error/error.component';
  7. import { LabelComponent } from '../label/label.component';
  8. import * as i0 from "@angular/core";
  9. import * as i1 from "@angular/forms";
  10. export class InputComponent extends FormGenericComponent {
  11. onFocusOut() {
  12. this.triggerTouched();
  13. }
  14. constructor(formGroupDirective) {
  15. super(formGroupDirective);
  16. this.key = '';
  17. this.label = '';
  18. this.placeholder = '';
  19. this.value = '';
  20. this.type = TypeEnum.PRIMARY;
  21. this.fullSize = true;
  22. this.typed = new EventEmitter();
  23. }
  24. input(event) {
  25. this.setValue(event.target.value);
  26. }
  27. setValue(value, propagate = true) {
  28. this.value = value;
  29. if (propagate) {
  30. this.triggerChange(value);
  31. this.typed.emit(value);
  32. }
  33. }
  34. writeValue(value) {
  35. this.triggerChangeDetection();
  36. this.setValue(value, false);
  37. }
  38. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: InputComponent, deps: [{ token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Component }); }
  39. static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.2", type: InputComponent, isStandalone: true, selector: "ct-input", inputs: { formControlName: "formControlName", key: "key", label: "label", placeholder: "placeholder", value: "value", type: "type", fullSize: "fullSize" }, outputs: { typed: "typed" }, host: { listeners: { "focusout": "onFocusOut()" } }, providers: [provideValueAccessor(forwardRef(() => InputComponent))], usesInheritance: true, ngImport: i0, template: "<ct-form-label [text]=\"label\" [hasError]=\"hasErrors(formControl)\" />\n<input\n tabindex=\"0\"\n class=\"rounded-md border bg-surface-variant px-4 py-2 text-sm text-on-surface-variant outline-none dark:bg-surface-variant-dark dark:text-on-surface-variant-dark\"\n [class.w-fit]=\"!fullSize\"\n [class.w-full]=\"fullSize\"\n [class.border-neutral-400]=\"formControl && (formControl.pristine || formControl.valid)\"\n [class.border-error]=\"hasErrors(formControl)\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (input)=\"input($event)\" />\n@if (hasErrors(formControl)) {\n <ct-form-error [errors]=\"formControl.errors ?? {}\" />\n}\n", dependencies: [{ kind: "component", type: LabelComponent, selector: "ct-form-label", inputs: ["text", "type", "formControlName", "hasError"] }, { kind: "component", type: FormErrorComponent, selector: "ct-form-error", inputs: ["errors"] }], viewProviders: [provideControlContainer()], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
  40. }
  41. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: InputComponent, decorators: [{
  42. type: Component,
  43. args: [{ selector: 'ct-input', standalone: true, imports: [NgClass, LabelComponent, FormErrorComponent], providers: [provideValueAccessor(forwardRef(() => InputComponent))], viewProviders: [provideControlContainer()], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ct-form-label [text]=\"label\" [hasError]=\"hasErrors(formControl)\" />\n<input\n tabindex=\"0\"\n class=\"rounded-md border bg-surface-variant px-4 py-2 text-sm text-on-surface-variant outline-none dark:bg-surface-variant-dark dark:text-on-surface-variant-dark\"\n [class.w-fit]=\"!fullSize\"\n [class.w-full]=\"fullSize\"\n [class.border-neutral-400]=\"formControl && (formControl.pristine || formControl.valid)\"\n [class.border-error]=\"hasErrors(formControl)\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (input)=\"input($event)\" />\n@if (hasErrors(formControl)) {\n <ct-form-error [errors]=\"formControl.errors ?? {}\" />\n}\n" }]
  44. }], ctorParameters: () => [{ type: i1.FormGroupDirective }], propDecorators: { formControlName: [{
  45. type: Input,
  46. args: [{ required: true }]
  47. }], key: [{
  48. type: Input,
  49. args: [{ required: true }]
  50. }], label: [{
  51. type: Input
  52. }], placeholder: [{
  53. type: Input
  54. }], value: [{
  55. type: Input
  56. }], type: [{
  57. type: Input
  58. }], fullSize: [{
  59. type: Input
  60. }], typed: [{
  61. type: Output
  62. }], onFocusOut: [{
  63. type: HostListener,
  64. args: ['focusout']
  65. }] } });
  66. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lyY2xldG9uZS9zcmMvbGliL2Zvcm1zL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NpcmNsZXRvbmUvc3JjL2xpYi9mb3Jtcy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFXMUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxvQkFBb0I7SUFXdEQsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWSxrQkFBc0M7UUFDaEQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFkRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ2hCLFNBQUksR0FBc0IsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3hCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBUzdDLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBWTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFFLEtBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOzhHQWxDVSxjQUFjO2tHQUFkLGNBQWMscVNBSmQsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxpREN0QnJFLGdwQkFjQSw0Q0RNcUIsY0FBYyxtSEFBRSxrQkFBa0IsbUVBR3RDLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzs7MkZBRy9CLGNBQWM7a0JBVDFCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLENBQUMsYUFFM0MsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsaUJBQ3BELENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxtQkFDekIsdUJBQXVCLENBQUMsTUFBTTt1RkFHcEIsZUFBZTtzQkFBekMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsR0FBRztzQkFBN0IsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBR1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUeXBlRW51bSB9IGZyb20gJy4uLy4uL21vZGVsL2NvbXBvbmVudHMvdHlwZS5lbnVtJztcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgcHJvdmlkZUNvbnRyb2xDb250YWluZXIsIHByb3ZpZGVWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybS51dGlsJztcbmltcG9ydCB7IEZvcm1HZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS1nZW5lcmljLmFic3RyYWN0JztcbmltcG9ydCB7IEZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4uL2Vycm9yL2Vycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N0LWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIExhYmVsQ29tcG9uZW50LCBGb3JtRXJyb3JDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtwcm92aWRlVmFsdWVBY2Nlc3Nvcihmb3J3YXJkUmVmKCgpID0+IElucHV0Q29tcG9uZW50KSldLFxuICB2aWV3UHJvdmlkZXJzOiBbcHJvdmlkZUNvbnRyb2xDb250YWluZXIoKV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBleHRlbmRzIEZvcm1HZW5lcmljQ29tcG9uZW50IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZm9ybUNvbnRyb2xOYW1lITogc3RyaW5nO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBrZXkgPSAnJztcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9ICcnO1xuICBASW5wdXQoKSB0eXBlOiBUeXBlRW51bSB8IHN0cmluZyA9IFR5cGVFbnVtLlBSSU1BUlk7XG4gIEBJbnB1dCgpIGZ1bGxTaXplOiBib29sZWFuID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHR5cGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICBvbkZvY3VzT3V0KCkge1xuICAgIHRoaXMudHJpZ2dlclRvdWNoZWQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGZvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKSB7XG4gICAgc3VwZXIoZm9ybUdyb3VwRGlyZWN0aXZlKTtcbiAgfVxuXG4gIGlucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuc2V0VmFsdWUoKGV2ZW50IGFzIGFueSkudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBhbnksIHByb3BhZ2F0ZSA9IHRydWUpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHByb3BhZ2F0ZSkge1xuICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMudHlwZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlRGV0ZWN0aW9uKCk7XG4gICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSwgZmFsc2UpO1xuICB9XG59XG4iLCI8Y3QtZm9ybS1sYWJlbCBbdGV4dF09XCJsYWJlbFwiIFtoYXNFcnJvcl09XCJoYXNFcnJvcnMoZm9ybUNvbnRyb2wpXCIgLz5cbjxpbnB1dFxuICB0YWJpbmRleD1cIjBcIlxuICBjbGFzcz1cInJvdW5kZWQtbWQgYm9yZGVyIGJnLXN1cmZhY2UtdmFyaWFudCBweC00IHB5LTIgdGV4dC1zbSB0ZXh0LW9uLXN1cmZhY2UtdmFyaWFudCBvdXRsaW5lLW5vbmUgZGFyazpiZy1zdXJmYWNlLXZhcmlhbnQtZGFyayBkYXJrOnRleHQtb24tc3VyZmFjZS12YXJpYW50LWRhcmtcIlxuICBbY2xhc3Mudy1maXRdPVwiIWZ1bGxTaXplXCJcbiAgW2NsYXNzLnctZnVsbF09XCJmdWxsU2l6ZVwiXG4gIFtjbGFzcy5ib3JkZXItbmV1dHJhbC00MDBdPVwiZm9ybUNvbnRyb2wgJiYgKGZvcm1Db250cm9sLnByaXN0aW5lIHx8IGZvcm1Db250cm9sLnZhbGlkKVwiXG4gIFtjbGFzcy5ib3JkZXItZXJyb3JdPVwiaGFzRXJyb3JzKGZvcm1Db250cm9sKVwiXG4gIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIChpbnB1dCk9XCJpbnB1dCgkZXZlbnQpXCIgLz5cbkBpZiAoaGFzRXJyb3JzKGZvcm1Db250cm9sKSkge1xuICA8Y3QtZm9ybS1lcnJvciBbZXJyb3JzXT1cImZvcm1Db250cm9sLmVycm9ycyA/PyB7fVwiIC8+XG59XG4iXX0=