@ng-modular-forms/material 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-modular-forms-material.mjs","sources":["../../../projects/material/src/lib/mat-form-control-base.ts","../../../projects/material/src/lib/mat-input-currency.component.ts","../../../projects/material/src/lib/mat-input-datepicker.component.ts","../../../projects/material/src/lib/mat-input-select.component.ts","../../../projects/material/src/lib/mat-input-text.component.ts","../../../projects/material/src/lib/mat-input-textarea.component.ts","../../../projects/material/src/public-api.ts","../../../projects/material/src/ng-modular-forms-material.ts"],"sourcesContent":["import { Directive, ElementRef, input, signal, ViewChild } from '@angular/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { FormControlBase } from '@ng-modular-forms/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Base implementation for custom form controls that integrate with:\r\n * - Angular Reactive Forms (ControlValueAccessor)\r\n * - Angular Material form-field (MatFormFieldControl)\r\n */\r\n\r\n@Directive()\r\nexport abstract class MatFormControlBase<T>\r\n extends FormControlBase<T>\r\n implements MatFormFieldControl<T>\r\n{\r\n detachLabel = input<boolean>(false);\r\n hint = input<string>();\r\n hintClassList = input<string>('');\r\n appearance = input<'outline' | 'fill'>();\r\n\r\n protected readonly _formDisabled = signal(false);\r\n\r\n /**\r\n * Notifies Angular Material form-field of state changes\r\n * (label float, error state, UI refresh)\r\n */\r\n stateChanges = new Subject<void>();\r\n\r\n override set value(val: T | null) {\r\n super.value = val;\r\n this.stateChanges.next();\r\n }\r\n\r\n focused = false;\r\n\r\n /**\r\n * Assumes derived component exposes an element with #input reference.\r\n */\r\n @ViewChild('nmf-input') input!: ElementRef<HTMLInputElement>;\r\n\r\n focus(): void {\r\n const nativeElement = this.input?.nativeElement;\r\n\r\n if (!nativeElement) {\r\n console.warn(\r\n 'Tried to focus an input from FormControlBase that does not exist',\r\n );\r\n return;\r\n }\r\n\r\n this.focused = true;\r\n nativeElement.focus();\r\n }\r\n\r\n override get disabled(): boolean {\r\n return this._disabled() || this._formDisabled();\r\n }\r\n\r\n get errorState(): boolean {\r\n const control = this.ngControl?.control;\r\n return !!control && control.invalid && control.touched;\r\n }\r\n\r\n get empty(): boolean {\r\n return this.value === null || this.value === '' || this.value === undefined;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n controlType: string | undefined = 'custom-form-control';\r\n autofilled: boolean | undefined = false;\r\n\r\n userAriaDescribedBy?: string | undefined;\r\n disableAutomaticLabeling?: boolean | undefined;\r\n\r\n override writeValue(value: T): void {\r\n super.writeValue(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._formDisabled.set(isDisabled);\r\n this.stateChanges.next();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this.userAriaDescribedBy = ids.join(' ');\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n target?.focus();\r\n this.stateChanges.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatFormControlBase } from './mat-form-control-base';\r\nimport { parseCurrency } from '@ng-modular-forms/core';\r\nimport { InputCurrencyBehavior } from '@ng-modular-forms/behavior';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'nmf-mat-input-currency',\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n ReactiveFormsModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n @if (label() && detachLabel()) {\r\n <label class=\"font-medium text-base\">{{ label() }}</label>\r\n }\r\n <mat-form-field\r\n appearance=\"outline\"\r\n [floatLabel]=\"shouldLabelFloat ? 'always' : 'auto'\"\r\n >\r\n @if (label() && !detachLabel()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n\r\n <span\r\n [style.color]=\"\r\n control().disabled || readonly\r\n ? 'var(--mat-form-field-outlined-disabled-input-text-text)'\r\n : 'inherit'\r\n \"\r\n matTextPrefix\r\n >\r\n $\r\n </span>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [value]=\"value\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [ngClass]=\"classList().concat(readonly ? ['opacity-60'] : [])\"\r\n [placeholder]=\"placeholder || '0.00'\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onTouched()\"\r\n style=\"padding-top: 5px; color: {{ textColor(value) }} !important\"\r\n />\r\n\r\n <span matTextSuffix><ng-content></ng-content></span>\r\n\r\n @if (loading()) {\r\n <div class=\"absolute top-5 right-5 z-10\">\r\n <mat-spinner diameter=\"20\" strokeWidth=\"3\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (hint()) {\r\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\r\n }\r\n\r\n @if (control().invalid && control().touched) {\r\n <mat-error>\r\n {{ getErrorMessage() }}\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n `,\r\n})\r\nexport class MatInputCurrencyComponent extends MatFormControlBase<\r\n string | null\r\n> {\r\n behavior = new InputCurrencyBehavior();\r\n\r\n override writeValue(value: string | null): void {\r\n super.writeValue(this.behavior.formatCurrency(value ?? ''));\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n this.behavior.handleKeyDown(event);\r\n }\r\n\r\n onInput(event: Event) {\r\n this.behavior.onInput(this, event);\r\n }\r\n\r\n textColor(value: string | number | null): string {\r\n if (this.disabled) {\r\n return 'default';\r\n }\r\n if (!value) {\r\n return '--mat-form-field-outlined-input-text-text';\r\n }\r\n return parseCurrency(value) >= 0\r\n ? '--mat-form-field-outlined-input-text-text'\r\n : 'red';\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { DateAdapter, MatNativeDateModule } from '@angular/material/core';\r\nimport {\r\n MatCalendar,\r\n MatDatepicker,\r\n MatDatepickerInputEvent,\r\n MatDatepickerModule,\r\n} from '@angular/material/datepicker';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatFormControlBase } from './mat-form-control-base';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'nmf-mat-input-datepicker',\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n ReactiveFormsModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n @if (label() && detachLabel()) {\r\n <label class=\"font-medium text-base\">{{ label() }}</label>\r\n }\r\n <mat-form-field\r\n appearance=\"outline\"\r\n [floatLabel]=\"shouldLabelFloat ? 'always' : 'auto'\"\r\n >\r\n @if (label() && !detachLabel()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [id]=\"id\"\r\n [name]=\"name\"\r\n [value]=\"value\"\r\n [type]=\"'text'\"\r\n [readonly]=\"readonly\"\r\n [placeholder]=\"placeholder || 'Select a date'\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"picker\"\r\n (dateInput)=\"onInput($event)\"\r\n (dateChange)=\"onInput($event)\"\r\n (blur)=\"onTouched()\"\r\n style=\"padding-top: 5px\"\r\n />\r\n\r\n <mat-datepicker-toggle\r\n [hidden]=\"loading()\"\r\n matSuffix\r\n [for]=\"picker\"\r\n ></mat-datepicker-toggle>\r\n\r\n <mat-datepicker [hidden]=\"loading()\" #picker>\r\n <!-- <mat-datepicker-actions>\r\n <button matButton (click)=\"setToday(picker)\">Hoy</button>\r\n <button matButton matDatepickerCancel>Cancelar</button>\r\n <button matButton=\"elevated\" matDatepickerApply>Aplicar</button>\r\n </mat-datepicker-actions> -->\r\n </mat-datepicker>\r\n\r\n @if (loading()) {\r\n <div class=\"absolute top-2 right-2\">\r\n <mat-spinner diameter=\"24\" strokeWidth=\"3\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (hint()) {\r\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\r\n }\r\n\r\n @if (control().invalid && control().touched) {\r\n <mat-error>\r\n {{ getErrorMessage() }}\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n `,\r\n})\r\nexport class MatInputDatepickerComponent extends MatFormControlBase<Date | null> {\r\n minDate = input<Date | null>(null);\r\n maxDate = input<Date | null>(null);\r\n\r\n picker!: MatCalendar<Date>;\r\n\r\n private readonly dateAdapter = inject(DateAdapter<Date>);\r\n\r\n setToday(dp: MatDatepicker<Date>) {\r\n const today = this.dateAdapter.today();\r\n dp.select(today);\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.picker.minDate = this.minDate();\r\n this.picker.maxDate = this.maxDate();\r\n }\r\n\r\n onInput(event: Partial<MatDatepickerInputEvent<Date>>): void {\r\n const value = event.value;\r\n\r\n if (!value) {\r\n this.value = null;\r\n this.onChange(this.value);\r\n this.stateChanges.next();\r\n return;\r\n }\r\n\r\n this.value = value;\r\n this.onChange(this.value);\r\n this.stateChanges.next();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatFormControlBase } from './mat-form-control-base';\r\nimport { InputSelectBehavior } from '@ng-modular-forms/behavior';\r\n\r\nexport interface SelectOption {\r\n key: string | number;\r\n label: string | number;\r\n disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'nmf-mat-input-select',\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n MatProgressSpinnerModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n @if (label() && detachLabel()) {\r\n <label class=\"font-medium text-base\">{{ label() }}</label>\r\n }\r\n <mat-form-field\r\n appearance=\"outline\"\r\n [floatLabel]=\"shouldLabelFloat ? 'always' : 'auto'\"\r\n >\r\n @if (label() && !detachLabel()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n\r\n <mat-select\r\n [value]=\"value\"\r\n [disabled]=\"disabled\"\r\n [panelWidth]=\"panelWidth()\"\r\n [ngClass]=\"disabled ? 'hide-arrow' : ''\"\r\n (blur)=\"onTouched()\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (closed)=\"onSelectionClosed()\"\r\n >\r\n <mat-option [value]=\"value === -1 ? -1 : ''\" selected disabled>\r\n {{ emptyOptionLabel() }}\r\n </mat-option>\r\n\r\n <!-- All Options -->\r\n @for (option of options(); track option.label) {\r\n <mat-option [value]=\"option.key\" [disabled]=\"option.disabled\">\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n\r\n <!-- Clear Selection Option -->\r\n @if (showClearOption()) {\r\n <mat-option value=\"NONE\">{{ 'forms.clearSelection' }}</mat-option>\r\n }\r\n </mat-select>\r\n\r\n @if (loading()) {\r\n <div class=\"absolute top-2 right-2\">\r\n <mat-spinner diameter=\"24\" strokeWidth=\"3\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (hint()) {\r\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\r\n }\r\n\r\n @if (control().invalid && control().touched) {\r\n <mat-error>{{ getErrorMessage() }}</mat-error>\r\n }\r\n </mat-form-field>\r\n `,\r\n})\r\nexport class MatInputSelectComponent extends MatFormControlBase<\r\n string | number | null\r\n> {\r\n options = input<SelectOption[]>([]);\r\n emptyOptionLabel = input<string>('forms.emptyOption');\r\n showClearOption = input<boolean>(false);\r\n panelWidth = input<string | number | null>('auto');\r\n\r\n behavior = new InputSelectBehavior();\r\n\r\n onSelectionClosed(): void {\r\n this.behavior.onSelectionClosed(this);\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this.behavior.setInitialValue(this.value);\r\n }\r\n\r\n onSelectionChange(event: MatSelectChange): void {\r\n this.behavior.onSelectionChange(this, event);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n forwardRef,\r\n input,\r\n} from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n MatFormFieldControl,\r\n MatFormFieldModule,\r\n} from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatFormControlBase } from './mat-form-control-base';\r\nimport { InputTextBehavior } from '@ng-modular-forms/behavior';\r\n\r\n@Component({\r\n selector: 'nmf-mat-input-text',\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: forwardRef(() => MatInputComponent),\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <div class=\"relative\">\r\n @if (label() && detachLabel()) {\r\n <label class=\"font-medium text-base\">{{ label() }}</label>\r\n }\r\n <mat-form-field\r\n appearance=\"outline\"\r\n [floatLabel]=\"shouldLabelFloat ? 'always' : 'auto'\"\r\n >\r\n @if (label() && !detachLabel()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [ngClass]=\"classList\"\r\n [id]=\"id\"\r\n [name]=\"name === 'identificationNumber' ? 'idummyi' : name\"\r\n [type]=\"behavior.hidePassword() ? type() : 'text'\"\r\n [readonly]=\"readonly\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onTouched()\"\r\n [formControlName]=\"controlName()\"\r\n [required]=\"isRequired()\"\r\n style=\"padding-top: 5px\"\r\n />\r\n\r\n @if (loading()) {\r\n <div class=\"absolute top-5 right-5 z-10\">\r\n <mat-spinner diameter=\"20\" strokeWidth=\"3\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (hint()) {\r\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\r\n }\r\n\r\n @if (type() === 'password') {\r\n <button matIconSuffix (click)=\"toggleShowPassword($event)\">\r\n <mat-icon>{{\r\n behavior.hidePassword() ? 'visibility_off' : 'visibility'\r\n }}</mat-icon>\r\n </button>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (control().invalid && control().touched) {\r\n <mat-error>{{ getErrorMessage() }}</mat-error>\r\n }\r\n </mat-form-field>\r\n </div>\r\n `,\r\n})\r\nexport class MatInputComponent extends MatFormControlBase<\r\n string | number | null\r\n> {\r\n type = input<'text' | 'email' | 'tel' | 'url' | 'password'>('text');\r\n\r\n behavior = new InputTextBehavior();\r\n\r\n toggleShowPassword(event: MouseEvent) {\r\n this.behavior.toggleShowPassword(event);\r\n }\r\n\r\n onInput(event: Event): void {\r\n this.behavior.onInput(this, event);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatFormControlBase } from './mat-form-control-base';\r\nimport { InputTextareaBehavior } from '@ng-modular-forms/behavior';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'nmf-mat-input-textarea',\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n ReactiveFormsModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n @if (label() && detachLabel()) {\r\n <label class=\"font-medium text-base\">{{ label() }}</label>\r\n }\r\n <mat-form-field\r\n appearance=\"outline\"\r\n [floatLabel]=\"shouldLabelFloat ? 'always' : 'auto'\"\r\n >\r\n @if (label() && !detachLabel()) {\r\n <mat-label>{{ label() }}</mat-label>\r\n }\r\n\r\n <textarea\r\n matInput\r\n [id]=\"id\"\r\n [rows]=\"rows()\"\r\n [cols]=\"cols()\"\r\n [value]=\"value\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n style=\"padding-top: 5px\"\r\n (blur)=\"onTouched()\"\r\n (input)=\"onInput($event)\"\r\n (keydown.enter)=\"onEnter()\"\r\n ></textarea>\r\n\r\n @if (loading()) {\r\n <div class=\"absolute top-5 right-5 z-10\">\r\n <mat-spinner diameter=\"20\" strokeWidth=\"3\"></mat-spinner>\r\n </div>\r\n }\r\n\r\n @if (hint()) {\r\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\r\n }\r\n\r\n @if (control().invalid && control().touched) {\r\n <mat-error>\r\n {{ getErrorMessage() }}\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n `,\r\n})\r\nexport class MatInputTextareaComponent extends MatFormControlBase<\r\n string | null\r\n> {\r\n rows = input<number>(5);\r\n cols = input<number>(5);\r\n\r\n behavior = new InputTextareaBehavior();\r\n\r\n onEnter() {\r\n this.behavior.onEnter(this);\r\n }\r\n\r\n onInput(event: Event): void {\r\n this.behavior.onInput(this, event);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of material\r\n */\r\n\r\nexport * from './lib/mat-form-control-base';\r\nexport * from './lib/mat-input-currency.component';\r\nexport * from './lib/mat-input-datepicker.component';\r\nexport * from './lib/mat-input-select.component';\r\nexport * from './lib/mat-input-text.component';\r\nexport * from './lib/mat-input-textarea.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i6"],"mappings":"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"}
1
+ {"version":3,"file":"ng-modular-forms-material.mjs","sources":["../../../projects/material/src/lib/mat-form-control-base.ts","../../../projects/material/src/lib/mat-input-currency.component.ts","../../../projects/material/src/lib/mat-input-datepicker.component.ts","../../../projects/material/src/lib/mat-input-number.component.ts","../../../projects/material/src/lib/mat-input-select.component.ts","../../../projects/material/src/lib/mat-input-text.component.ts","../../../projects/material/src/lib/mat-input-textarea.component.ts","../../../projects/material/src/lib/mat-input-timepicker.component.ts","../../../projects/material/src/public-api.ts","../../../projects/material/src/ng-modular-forms-material.ts"],"sourcesContent":["import { Directive, input } from '@angular/core';\nimport { FormControlBase } from '@ng-modular-forms/core';\n\n@Directive()\nexport abstract class MatFormControlBase<T> extends FormControlBase<T> {\n detachLabel = input<boolean>(false);\n\n appearance = input<'outline' | 'fill'>('outline');\n shouldLabelFloat = input<'always' | 'auto'>('auto');\n\n hint = input<string>();\n hintClassList = input<string>('');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n signal,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatFormControlBase } from './mat-form-control-base';\nimport { formatNumber, parseNumber } from '@ng-modular-forms/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatInputModule } from '@angular/material/input';\nimport { CurrencyBehavior } from '@ng-modular-forms/behavior';\n\n@Component({\n selector: 'nmf-mat-currency',\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n @if (displayValue()) {\n <span\n matTextPrefix\n [class.nmf-disabled]=\"disabled()\"\n [style.color]=\"textColor()\"\n [style.opacity]=\"disabled() ? 0.6 : 1\"\n >$</span\n >\n }\n\n <input\n matInput\n type=\"text\"\n [ngClass]=\"classList()\"\n [style.color]=\"textColor()\"\n [style.opacity]=\"disabled() ? 0.6 : 1\"\n [name]=\"name()\"\n [value]=\"displayValue()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\n (keydown)=\"handleKeyDown($event)\"\n />\n\n <span matTextSuffix>\n <ng-content></ng-content>\n </span>\n\n @if (loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"22\"\n strokeWidth=\"3\"\n ></mat-spinner>\n }\n\n @if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <mat-error>\n {{ errorMessage() }}\n </mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputCurrencyComponent extends MatFormControlBase<\n number | null\n> {\n behavior = new CurrencyBehavior();\n\n displayValue = signal<string | null>(null);\n\n override writeValue(value: number | null): void {\n super.writeValue(value);\n this.displayValue.set(value != null ? formatNumber(value) : null);\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n this.behavior.handleKeyDown(event);\n }\n\n onInput(event: Event) {\n const rawValue = (event.target as HTMLInputElement).value;\n const value = parseNumber(rawValue);\n\n this.displayValue.set(value != null ? formatNumber(value) : null);\n\n this.onChange(value);\n }\n\n textColor = computed(() => {\n const value = this.displayValue();\n if (this._disabledByInput() || !value) {\n return '';\n }\n\n const parsedValue = parseNumber(value);\n const valid = parsedValue != null && parsedValue >= 0;\n\n return valid ? '' : 'red';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport {\n DateFilterFn,\n MatCalendarCellClassFunction,\n MatCalendarView,\n MatDatepickerModule,\n} from '@angular/material/datepicker';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatFormControlBase } from './mat-form-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'nmf-mat-datepicker',\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatProgressSpinnerModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <input\n matInput\n autocomplete=\"off\"\n [name]=\"name()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"dateFilter()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n (blur)=\"onTouched()\"\n />\n\n <mat-datepicker-toggle\n matSuffix\n [for]=\"picker\"\n [hidden]=\"loading()\"\n [disabled]=\"disabled()\"\n ></mat-datepicker-toggle>\n\n <mat-datepicker\n [hidden]=\"loading()\"\n [startAt]=\"startAt()\"\n [startView]=\"startView()\"\n [touchUi]=\"touchUi()\"\n [dateClass]=\"dateClass()\"\n [panelClass]=\"panelClass()\"\n #picker\n />\n\n @if (loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"22\"\n strokeWidth=\"3\"\n ></mat-spinner>\n }\n\n @if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <mat-error>{{ errorMessage() }}</mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputDatepickerComponent extends MatFormControlBase<Date | null> {\n minDate = input<Date | null>(null);\n maxDate = input<Date | null>(null);\n dateClass = input<MatCalendarCellClassFunction<Date>>(() => []);\n dateFilter = input<DateFilterFn<Date | null>>(() => true);\n startAt = input<Date | null>(null);\n startView = input<MatCalendarView>('month');\n panelClass = input<string>('');\n touchUi = input<boolean>(false);\n override placeholder = input<string>('Select a date');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { CurrencyBehavior, TextBehavior } from '@ng-modular-forms/behavior';\nimport { MatFormControlBase } from './mat-form-control-base';\nimport { formatNumber, parseNumber } from '@ng-modular-forms/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'nmf-mat-number',\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <input\n matInput\n [ngClass]=\"classList\"\n [name]=\"name()\"\n [type]=\"formatNumberValue() ? 'text' : 'number'\"\n [value]=\"displayValue()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\n (keydown)=\"handleKeyDown($event)\"\n />\n\n @if (loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"22\"\n strokeWidth=\"3\"\n ></mat-spinner>\n }\n\n @if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <ng-content></ng-content>\n\n <mat-error>{{ errorMessage() }}</mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputNumberComponent extends MatFormControlBase<number | null> {\n formatNumberValue = input<boolean>(false);\n displayValue = signal<string>('');\n\n behavior = new TextBehavior();\n currencyBehavior = new CurrencyBehavior();\n\n override writeValue(value: number | null): void {\n super.writeValue(value);\n this.updateDisplayValue(value);\n }\n\n handleKeyDown(event: KeyboardEvent) {\n this.currencyBehavior.handleKeyDown(event);\n }\n\n onInput(event: Event): void {\n const raw = (event.target as HTMLInputElement).value;\n const parsed = parseNumber(raw);\n\n this.updateDisplayValue(parsed);\n\n this.onChange(parsed);\n }\n\n updateDisplayValue(value: number | null) {\n if (this.formatNumberValue() && value != null) {\n this.displayValue.set(formatNumber(value) ?? '');\n } else {\n this.displayValue.set(value != null ? String(value) : '');\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n OnInit,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CommonModule } from '@angular/common';\nimport { MatFormControlBase } from './mat-form-control-base';\n\nexport interface SelectOption {\n key: string | number;\n label: string | number;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'nmf-mat-select',\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n ReactiveFormsModule,\n MatSelectModule,\n ],\n styleUrls: ['./mat-input-styles.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <mat-select\n [class.hide-select-arrow]=\"loading()\"\n [panelWidth]=\"panelWidth()\"\n [required]=\"isRequired()\"\n [placeholder]=\"emptyOptionLabel()\"\n [formControl]=\"control\"\n (blur)=\"onTouched()\"\n >\n <mat-option [value]=\"null\" disabled>\n {{ emptyOptionLabel() }}\n </mat-option>\n\n <!-- All Options -->\n @for (option of options(); track option.label) {\n <mat-option [value]=\"option.key\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </mat-option>\n }\n\n <!-- Clear Selection Option -->\n @if (clearOptionLabel()) {\n <mat-option [value]=\"null\">{{ clearOptionLabel() }}</mat-option>\n }\n </mat-select>\n\n @if (loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"22\"\n strokeWidth=\"3\"\n ></mat-spinner>\n }\n\n @if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <mat-error>{{ errorMessage() }}</mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputSelectComponent\n extends MatFormControlBase<string | number | null>\n implements OnInit\n{\n options = input<SelectOption[]>([]);\n emptyOptionLabel = input<string>('Select an option');\n clearOptionLabel = input<string | null>('Clear selection');\n panelWidth = input<string | number | null>('auto');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TextBehavior } from '@ng-modular-forms/behavior';\nimport { MatFormControlBase } from './mat-form-control-base';\nimport { MatButtonModule } from '@angular/material/button';\n\ntype TextInputType = 'text' | 'email' | 'tel' | 'url' | 'password' | 'search';\n\n@Component({\n selector: 'nmf-mat-text',\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <input\n matInput\n autocomplete=\"off\"\n [ngClass]=\"classList\"\n [name]=\"name()\"\n [type]=\"computedType()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n (blur)=\"onTouched()\"\n />\n\n @if (loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"22\"\n strokeWidth=\"3\"\n ></mat-spinner>\n }\n\n @if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n @if (type() === 'password' && !loading()) {\n <button\n matIconSuffix\n mat-icon-button\n color=\"transparent\"\n class=\"nmf-password-toggle\"\n [disabled]=\"disabled()\"\n (click)=\"behavior.toggleShowPassword($event)\"\n >\n <mat-icon>{{\n behavior.showPassword() ? 'visibility_off' : 'visibility'\n }}</mat-icon>\n </button>\n }\n\n <ng-content></ng-content>\n\n <mat-error>{{ errorMessage() }}</mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputTextComponent extends MatFormControlBase<string | null> {\n type = input<TextInputType>('text');\n\n behavior = new TextBehavior();\n\n computedType = computed(() =>\n this.behavior.showPassword() && this.type() === 'password'\n ? 'text'\n : this.type(),\n );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatFormControlBase } from './mat-form-control-base';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'nmf-mat-textarea',\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <textarea\n matInput\n [rows]=\"rows()\"\n [cols]=\"cols()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n (blur)=\"onTouched()\"\n ></textarea>\n\n @if (loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"22\"\n strokeWidth=\"3\"\n ></mat-spinner>\n }\n\n @if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <mat-error>\n {{ errorMessage() }}\n </mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputTextareaComponent extends MatFormControlBase<\n string | null\n> {\n rows = input<number>(5);\n cols = input<number>(5);\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatFormControlBase } from './mat-form-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport {\n MatTimepickerModule,\n MatTimepickerOption,\n} from '@angular/material/timepicker';\n\n@Component({\n selector: 'nmf-mat-timepicker',\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatTimepickerModule,\n MatProgressSpinnerModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <mat-form-field\n class=\"w-full\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <input\n matInput\n autocomplete=\"off\"\n [name]=\"name()\"\n [matTimepicker]=\"picker\"\n [matTimepickerMin]=\"minDate()\"\n [matTimepickerMax]=\"maxDate()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n (blur)=\"onTouched()\"\n />\n\n <mat-timepicker-toggle\n matSuffix\n [for]=\"picker\"\n [hidden]=\"loading()\"\n [disabled]=\"disabled()\"\n />\n\n <mat-timepicker\n [hidden]=\"loading()\"\n [interval]=\"interval()\"\n [options]=\"options()\"\n #picker\n />\n\n @if (loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"22\"\n strokeWidth=\"3\"\n ></mat-spinner>\n }\n\n @if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <mat-error>{{ errorMessage() }}</mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputTimepickerComponent extends MatFormControlBase<Date | null> {\n minDate = input<Date | null>(null);\n maxDate = input<Date | null>(null);\n interval = input<number | string | null>(null);\n options = input<MatTimepickerOption[] | null>(null);\n override placeholder = input<string>('Select a time');\n}\n","/*\n * Public API Surface of material\n */\n\nexport * from './lib/mat-form-control-base';\nexport * from './lib/mat-input-currency.component';\nexport * from './lib/mat-input-datepicker.component';\nexport * from './lib/mat-input-number.component';\nexport * from './lib/mat-input-select.component';\nexport * from './lib/mat-input-text.component';\nexport * from './lib/mat-input-textarea.component';\nexport * from './lib/mat-input-timepicker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i5","i3"],"mappings":"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"}
@@ -1,44 +1,11 @@
1
- import { ElementRef } from '@angular/core';
2
- import { MatFormFieldControl } from '@angular/material/form-field';
3
1
  import { FormControlBase } from '@ng-modular-forms/core';
4
- import { Subject } from 'rxjs';
5
2
  import * as i0 from "@angular/core";
6
- /**
7
- * Base implementation for custom form controls that integrate with:
8
- * - Angular Reactive Forms (ControlValueAccessor)
9
- * - Angular Material form-field (MatFormFieldControl)
10
- */
11
- export declare abstract class MatFormControlBase<T> extends FormControlBase<T> implements MatFormFieldControl<T> {
3
+ export declare abstract class MatFormControlBase<T> extends FormControlBase<T> {
12
4
  detachLabel: import("@angular/core").InputSignal<boolean>;
5
+ appearance: import("@angular/core").InputSignal<"outline" | "fill">;
6
+ shouldLabelFloat: import("@angular/core").InputSignal<"always" | "auto">;
13
7
  hint: import("@angular/core").InputSignal<string | undefined>;
14
8
  hintClassList: import("@angular/core").InputSignal<string>;
15
- appearance: import("@angular/core").InputSignal<"outline" | "fill" | undefined>;
16
- protected readonly _formDisabled: import("@angular/core").WritableSignal<boolean>;
17
- /**
18
- * Notifies Angular Material form-field of state changes
19
- * (label float, error state, UI refresh)
20
- */
21
- stateChanges: Subject<void>;
22
- set value(val: T | null);
23
- focused: boolean;
24
- /**
25
- * Assumes derived component exposes an element with #input reference.
26
- */
27
- input: ElementRef<HTMLInputElement>;
28
- focus(): void;
29
- get disabled(): boolean;
30
- get errorState(): boolean;
31
- get empty(): boolean;
32
- get shouldLabelFloat(): boolean;
33
- controlType: string | undefined;
34
- autofilled: boolean | undefined;
35
- userAriaDescribedBy?: string | undefined;
36
- disableAutomaticLabeling?: boolean | undefined;
37
- writeValue(value: T): void;
38
- setDisabledState(isDisabled: boolean): void;
39
- setDescribedByIds(ids: string[]): void;
40
- onContainerClick(event: MouseEvent): void;
41
- ngOnDestroy(): void;
42
9
  static ɵfac: i0.ɵɵFactoryDeclaration<MatFormControlBase<any>, never>;
43
- static ɵdir: i0.ɵɵDirectiveDeclaration<MatFormControlBase<any>, never, never, { "detachLabel": { "alias": "detachLabel"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hintClassList": { "alias": "hintClassList"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MatFormControlBase<any>, never, never, { "detachLabel": { "alias": "detachLabel"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "shouldLabelFloat": { "alias": "shouldLabelFloat"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hintClassList": { "alias": "hintClassList"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
44
11
  }
@@ -1,12 +1,13 @@
1
1
  import { MatFormControlBase } from './mat-form-control-base';
2
- import { InputCurrencyBehavior } from '@ng-modular-forms/behavior';
2
+ import { CurrencyBehavior } from '@ng-modular-forms/behavior';
3
3
  import * as i0 from "@angular/core";
4
- export declare class MatInputCurrencyComponent extends MatFormControlBase<string | null> {
5
- behavior: InputCurrencyBehavior;
6
- writeValue(value: string | null): void;
4
+ export declare class MatInputCurrencyComponent extends MatFormControlBase<number | null> {
5
+ behavior: CurrencyBehavior;
6
+ displayValue: import("@angular/core").WritableSignal<string | null>;
7
+ writeValue(value: number | null): void;
7
8
  handleKeyDown(event: KeyboardEvent): void;
8
9
  onInput(event: Event): void;
9
- textColor(value: string | number | null): string;
10
+ textColor: import("@angular/core").Signal<"" | "red">;
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<MatInputCurrencyComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<MatInputCurrencyComponent, "nmf-mat-input-currency", never, {}, {}, never, ["*"], true, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatInputCurrencyComponent, "nmf-mat-currency", never, {}, {}, never, ["*"], true, never>;
12
13
  }
@@ -1,14 +1,16 @@
1
- import { MatCalendar, MatDatepicker, MatDatepickerInputEvent } from '@angular/material/datepicker';
1
+ import { DateFilterFn, MatCalendarCellClassFunction, MatCalendarView } from '@angular/material/datepicker';
2
2
  import { MatFormControlBase } from './mat-form-control-base';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class MatInputDatepickerComponent extends MatFormControlBase<Date | null> {
5
5
  minDate: import("@angular/core").InputSignal<Date | null>;
6
6
  maxDate: import("@angular/core").InputSignal<Date | null>;
7
- picker: MatCalendar<Date>;
8
- private readonly dateAdapter;
9
- setToday(dp: MatDatepicker<Date>): void;
10
- ngOnInit(): void;
11
- onInput(event: Partial<MatDatepickerInputEvent<Date>>): void;
7
+ dateClass: import("@angular/core").InputSignal<MatCalendarCellClassFunction<Date>>;
8
+ dateFilter: import("@angular/core").InputSignal<DateFilterFn<Date | null>>;
9
+ startAt: import("@angular/core").InputSignal<Date | null>;
10
+ startView: import("@angular/core").InputSignal<MatCalendarView>;
11
+ panelClass: import("@angular/core").InputSignal<string>;
12
+ touchUi: import("@angular/core").InputSignal<boolean>;
13
+ placeholder: import("@angular/core").InputSignal<string>;
12
14
  static ɵfac: i0.ɵɵFactoryDeclaration<MatInputDatepickerComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<MatInputDatepickerComponent, "nmf-mat-input-datepicker", never, { "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatInputDatepickerComponent, "nmf-mat-datepicker", never, { "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateClass": { "alias": "dateClass"; "required": false; "isSignal": true; }; "dateFilter": { "alias": "dateFilter"; "required": false; "isSignal": true; }; "startAt": { "alias": "startAt"; "required": false; "isSignal": true; }; "startView": { "alias": "startView"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "touchUi": { "alias": "touchUi"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
14
16
  }
@@ -0,0 +1,15 @@
1
+ import { CurrencyBehavior, TextBehavior } from '@ng-modular-forms/behavior';
2
+ import { MatFormControlBase } from './mat-form-control-base';
3
+ import * as i0 from "@angular/core";
4
+ export declare class MatInputNumberComponent extends MatFormControlBase<number | null> {
5
+ formatNumberValue: import("@angular/core").InputSignal<boolean>;
6
+ displayValue: import("@angular/core").WritableSignal<string>;
7
+ behavior: TextBehavior;
8
+ currencyBehavior: CurrencyBehavior;
9
+ writeValue(value: number | null): void;
10
+ handleKeyDown(event: KeyboardEvent): void;
11
+ onInput(event: Event): void;
12
+ updateDisplayValue(value: number | null): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatInputNumberComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatInputNumberComponent, "nmf-mat-number", never, { "formatNumberValue": { "alias": "formatNumberValue"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
15
+ }
@@ -1,21 +1,16 @@
1
- import { MatSelectChange } from '@angular/material/select';
1
+ import { OnInit } from '@angular/core';
2
2
  import { MatFormControlBase } from './mat-form-control-base';
3
- import { InputSelectBehavior } from '@ng-modular-forms/behavior';
4
3
  import * as i0 from "@angular/core";
5
4
  export interface SelectOption {
6
5
  key: string | number;
7
6
  label: string | number;
8
7
  disabled?: boolean;
9
8
  }
10
- export declare class MatInputSelectComponent extends MatFormControlBase<string | number | null> {
9
+ export declare class MatInputSelectComponent extends MatFormControlBase<string | number | null> implements OnInit {
11
10
  options: import("@angular/core").InputSignal<SelectOption[]>;
12
11
  emptyOptionLabel: import("@angular/core").InputSignal<string>;
13
- showClearOption: import("@angular/core").InputSignal<boolean>;
12
+ clearOptionLabel: import("@angular/core").InputSignal<string | null>;
14
13
  panelWidth: import("@angular/core").InputSignal<string | number | null>;
15
- behavior: InputSelectBehavior;
16
- onSelectionClosed(): void;
17
- ngOnInit(): void;
18
- onSelectionChange(event: MatSelectChange): void;
19
14
  static ɵfac: i0.ɵɵFactoryDeclaration<MatInputSelectComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<MatInputSelectComponent, "nmf-mat-input-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "emptyOptionLabel": { "alias": "emptyOptionLabel"; "required": false; "isSignal": true; }; "showClearOption": { "alias": "showClearOption"; "required": false; "isSignal": true; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatInputSelectComponent, "nmf-mat-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "emptyOptionLabel": { "alias": "emptyOptionLabel"; "required": false; "isSignal": true; }; "clearOptionLabel": { "alias": "clearOptionLabel"; "required": false; "isSignal": true; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
16
  }
@@ -1,11 +1,12 @@
1
+ import { TextBehavior } from '@ng-modular-forms/behavior';
1
2
  import { MatFormControlBase } from './mat-form-control-base';
2
- import { InputTextBehavior } from '@ng-modular-forms/behavior';
3
3
  import * as i0 from "@angular/core";
4
- export declare class MatInputComponent extends MatFormControlBase<string | number | null> {
5
- type: import("@angular/core").InputSignal<"text" | "email" | "tel" | "url" | "password">;
6
- behavior: InputTextBehavior;
7
- toggleShowPassword(event: MouseEvent): void;
8
- onInput(event: Event): void;
9
- static ɵfac: i0.ɵɵFactoryDeclaration<MatInputComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<MatInputComponent, "nmf-mat-input-text", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4
+ type TextInputType = 'text' | 'email' | 'tel' | 'url' | 'password' | 'search';
5
+ export declare class MatInputTextComponent extends MatFormControlBase<string | null> {
6
+ type: import("@angular/core").InputSignal<TextInputType>;
7
+ behavior: TextBehavior;
8
+ computedType: import("@angular/core").Signal<TextInputType>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatInputTextComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatInputTextComponent, "nmf-mat-text", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
11
11
  }
12
+ export {};
@@ -1,12 +1,8 @@
1
1
  import { MatFormControlBase } from './mat-form-control-base';
2
- import { InputTextareaBehavior } from '@ng-modular-forms/behavior';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class MatInputTextareaComponent extends MatFormControlBase<string | null> {
5
4
  rows: import("@angular/core").InputSignal<number>;
6
5
  cols: import("@angular/core").InputSignal<number>;
7
- behavior: InputTextareaBehavior;
8
- onEnter(): void;
9
- onInput(event: Event): void;
10
6
  static ɵfac: i0.ɵɵFactoryDeclaration<MatInputTextareaComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<MatInputTextareaComponent, "nmf-mat-input-textarea", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "cols": { "alias": "cols"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatInputTextareaComponent, "nmf-mat-textarea", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "cols": { "alias": "cols"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
8
  }
@@ -0,0 +1,12 @@
1
+ import { MatFormControlBase } from './mat-form-control-base';
2
+ import { MatTimepickerOption } from '@angular/material/timepicker';
3
+ import * as i0 from "@angular/core";
4
+ export declare class MatInputTimepickerComponent extends MatFormControlBase<Date | null> {
5
+ minDate: import("@angular/core").InputSignal<Date | null>;
6
+ maxDate: import("@angular/core").InputSignal<Date | null>;
7
+ interval: import("@angular/core").InputSignal<string | number | null>;
8
+ options: import("@angular/core").InputSignal<MatTimepickerOption<unknown>[] | null>;
9
+ placeholder: import("@angular/core").InputSignal<string>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatInputTimepickerComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatInputTimepickerComponent, "nmf-mat-timepicker", never, { "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-modular-forms/material",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=19.0.0 <22.0.0",
6
6
  "@angular/common": ">=19.0.0 <22.0.0",
package/public-api.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export * from './lib/mat-form-control-base';
2
2
  export * from './lib/mat-input-currency.component';
3
3
  export * from './lib/mat-input-datepicker.component';
4
+ export * from './lib/mat-input-number.component';
4
5
  export * from './lib/mat-input-select.component';
5
6
  export * from './lib/mat-input-text.component';
6
7
  export * from './lib/mat-input-textarea.component';
8
+ export * from './lib/mat-input-timepicker.component';