@ng-modular-forms/material 0.8.1 → 0.9.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.
- package/README.md +16 -0
- package/fesm2022/ng-modular-forms-material.mjs +116 -220
- package/fesm2022/ng-modular-forms-material.mjs.map +1 -1
- package/lib/controls/number/number.component.d.ts +10 -7
- package/lib/controls/text/text.component.d.ts +5 -3
- package/package.json +2 -2
- package/public-api.d.ts +0 -1
- package/lib/controls/currency/currency.component.d.ts +0 -13
package/README.md
CHANGED
|
@@ -85,6 +85,22 @@ Designed for scalable, enterprise-grade Angular applications.
|
|
|
85
85
|
|
|
86
86
|
Compatible with Angular 19–21.
|
|
87
87
|
|
|
88
|
+
## Available Input Components
|
|
89
|
+
|
|
90
|
+
All components share a consistent API and are interchangeable between Native and Material implementations without changing form logic.
|
|
91
|
+
|
|
92
|
+
Prefixes / Suffixes are enabled for text and number fields, allowing number to double as a currency field.
|
|
93
|
+
|
|
94
|
+
| Input Type | Selector |
|
|
95
|
+
|-----------------|-----------------------|
|
|
96
|
+
| Text / Password | `nmf-mat-text` |
|
|
97
|
+
| Lookup | `nmf-mat-lookup` |
|
|
98
|
+
| Number | `nmf-mat-number` |
|
|
99
|
+
| Date | `nmf-mat-datepicker` |
|
|
100
|
+
| Select | `nmf-mat-select` |
|
|
101
|
+
| Textarea | `nmf-mat-textarea` |
|
|
102
|
+
| Time | `nmf-mat-timepicker` |
|
|
103
|
+
|
|
88
104
|
## Built On
|
|
89
105
|
|
|
90
106
|
- Angular Reactive Forms
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, Directive,
|
|
2
|
+
import { input, Directive, ChangeDetectionStrategy, Component, computed, effect } from '@angular/core';
|
|
3
3
|
import * as i3 from '@angular/forms';
|
|
4
4
|
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { FormControlBase,
|
|
6
|
-
import * as i1 from '@angular/common';
|
|
7
|
-
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
5
|
+
import { FormControlBase, NumberBehavior, parseNumber, formatNumber, LookupBehavior, PasswordBehavior } from '@ng-modular-forms/core';
|
|
8
6
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
-
import
|
|
7
|
+
import { MatNativeDateModule } from '@angular/material/core';
|
|
8
|
+
import * as i4 from '@angular/material/datepicker';
|
|
9
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
10
|
+
import * as i5 from '@angular/material/progress-spinner';
|
|
10
11
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
12
|
+
import * as i1 from '@angular/common';
|
|
13
|
+
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
11
14
|
import * as i2 from '@angular/material/input';
|
|
12
15
|
import { MatInputModule } from '@angular/material/input';
|
|
13
|
-
import
|
|
14
|
-
import { MatNativeDateModule } from '@angular/material/core';
|
|
15
|
-
import * as i4$1 from '@angular/material/datepicker';
|
|
16
|
-
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
17
|
-
import * as i4$2 from '@angular/material/icon';
|
|
16
|
+
import * as i4$1 from '@angular/material/icon';
|
|
18
17
|
import { MatIconModule } from '@angular/material/icon';
|
|
19
|
-
import * as i5 from '@angular/material/button';
|
|
18
|
+
import * as i5$1 from '@angular/material/button';
|
|
20
19
|
import { MatButtonModule } from '@angular/material/button';
|
|
20
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
21
21
|
import * as i3$1 from '@angular/material/autocomplete';
|
|
22
22
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
23
23
|
import { startWith } from 'rxjs';
|
|
24
|
-
import * as i5$
|
|
24
|
+
import * as i5$2 from '@angular/material/select';
|
|
25
25
|
import { MatSelectModule } from '@angular/material/select';
|
|
26
|
-
import * as i4$
|
|
26
|
+
import * as i4$2 from '@angular/material/timepicker';
|
|
27
27
|
import { MatTimepickerModule } from '@angular/material/timepicker';
|
|
28
28
|
|
|
29
29
|
class MatFormControlBase extends FormControlBase {
|
|
@@ -73,178 +73,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
73
73
|
type: Directive
|
|
74
74
|
}] });
|
|
75
75
|
|
|
76
|
-
class MatInputCurrencyComponent extends MatFormControlBase {
|
|
77
|
-
behavior = new CurrencyBehavior();
|
|
78
|
-
displayValue = toSignal(this.displayControl.valueChanges, {
|
|
79
|
-
initialValue: this.displayControl.value,
|
|
80
|
-
});
|
|
81
|
-
writeValue(value) {
|
|
82
|
-
super.writeValue(value);
|
|
83
|
-
this.displayControl.setValue(value != null ? formatNumber(value) : null);
|
|
84
|
-
}
|
|
85
|
-
handleKeyDown(event) {
|
|
86
|
-
this.behavior.blockNonDigitKey(event);
|
|
87
|
-
}
|
|
88
|
-
onInput(event) {
|
|
89
|
-
const rawValue = event.target.value;
|
|
90
|
-
const value = parseNumber(rawValue);
|
|
91
|
-
this.displayControl.setValue(value != null ? formatNumber(value) : null);
|
|
92
|
-
this.onChange(value);
|
|
93
|
-
}
|
|
94
|
-
textColor = computed(() => {
|
|
95
|
-
const value = this.displayValue();
|
|
96
|
-
if (this._disabledByInput() || !value) {
|
|
97
|
-
return '';
|
|
98
|
-
}
|
|
99
|
-
const parsedValue = parseNumber(value);
|
|
100
|
-
const valid = parsedValue != null && parsedValue >= 0;
|
|
101
|
-
return valid ? '' : 'red';
|
|
102
|
-
});
|
|
103
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputCurrencyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: MatInputCurrencyComponent, isStandalone: true, selector: "nmf-mat-currency", usesInheritance: true, ngImport: i0, template: `
|
|
105
|
-
@if (label() && detachLabel()) {
|
|
106
|
-
<label class="font-medium text-base">{{ label() }}</label>
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
<mat-form-field
|
|
110
|
-
class="w-full"
|
|
111
|
-
[appearance]="appearance()"
|
|
112
|
-
[floatLabel]="shouldLabelFloat()"
|
|
113
|
-
>
|
|
114
|
-
@if (label() && !detachLabel()) {
|
|
115
|
-
<mat-label>{{ label() }}</mat-label>
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
@if (displayControl.value) {
|
|
119
|
-
<span
|
|
120
|
-
matTextPrefix
|
|
121
|
-
[class.nmf-disabled]="disabled()"
|
|
122
|
-
[style.color]="textColor()"
|
|
123
|
-
[style.opacity]="disabled() ? 0.6 : 1"
|
|
124
|
-
>$</span
|
|
125
|
-
>
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
<input
|
|
129
|
-
#focusable
|
|
130
|
-
matInput
|
|
131
|
-
type="text"
|
|
132
|
-
[ngClass]="classList()"
|
|
133
|
-
[style.color]="textColor()"
|
|
134
|
-
[style.opacity]="disabled() ? 0.6 : 1"
|
|
135
|
-
[id]="id()"
|
|
136
|
-
[name]="name()"
|
|
137
|
-
[required]="isRequired()"
|
|
138
|
-
[placeholder]="placeholder()"
|
|
139
|
-
[autocomplete]="autocompleteAttr()"
|
|
140
|
-
[formControl]="displayControl"
|
|
141
|
-
(blur)="onTouched()"
|
|
142
|
-
(input)="onInput($event)"
|
|
143
|
-
(keydown)="handleKeyDown($event)"
|
|
144
|
-
/>
|
|
145
|
-
|
|
146
|
-
<span matTextSuffix>
|
|
147
|
-
<ng-content></ng-content>
|
|
148
|
-
</span>
|
|
149
|
-
|
|
150
|
-
@if (loading()) {
|
|
151
|
-
<mat-spinner
|
|
152
|
-
matSuffix
|
|
153
|
-
class="nmf-mat-loader"
|
|
154
|
-
diameter="22"
|
|
155
|
-
strokeWidth="3"
|
|
156
|
-
></mat-spinner>
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
@if (hint()) {
|
|
160
|
-
<mat-hint [ngClass]="hintClassList()">{{ hint() }}</mat-hint>
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
<mat-error>
|
|
164
|
-
{{ errorMessage() }}
|
|
165
|
-
</mat-error>
|
|
166
|
-
</mat-form-field>
|
|
167
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
168
|
-
}
|
|
169
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputCurrencyComponent, decorators: [{
|
|
170
|
-
type: Component,
|
|
171
|
-
args: [{
|
|
172
|
-
selector: 'nmf-mat-currency',
|
|
173
|
-
imports: [
|
|
174
|
-
CommonModule,
|
|
175
|
-
MatInputModule,
|
|
176
|
-
MatFormFieldModule,
|
|
177
|
-
ReactiveFormsModule,
|
|
178
|
-
MatProgressSpinnerModule,
|
|
179
|
-
],
|
|
180
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
181
|
-
template: `
|
|
182
|
-
@if (label() && detachLabel()) {
|
|
183
|
-
<label class="font-medium text-base">{{ label() }}</label>
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
<mat-form-field
|
|
187
|
-
class="w-full"
|
|
188
|
-
[appearance]="appearance()"
|
|
189
|
-
[floatLabel]="shouldLabelFloat()"
|
|
190
|
-
>
|
|
191
|
-
@if (label() && !detachLabel()) {
|
|
192
|
-
<mat-label>{{ label() }}</mat-label>
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
@if (displayControl.value) {
|
|
196
|
-
<span
|
|
197
|
-
matTextPrefix
|
|
198
|
-
[class.nmf-disabled]="disabled()"
|
|
199
|
-
[style.color]="textColor()"
|
|
200
|
-
[style.opacity]="disabled() ? 0.6 : 1"
|
|
201
|
-
>$</span
|
|
202
|
-
>
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
<input
|
|
206
|
-
#focusable
|
|
207
|
-
matInput
|
|
208
|
-
type="text"
|
|
209
|
-
[ngClass]="classList()"
|
|
210
|
-
[style.color]="textColor()"
|
|
211
|
-
[style.opacity]="disabled() ? 0.6 : 1"
|
|
212
|
-
[id]="id()"
|
|
213
|
-
[name]="name()"
|
|
214
|
-
[required]="isRequired()"
|
|
215
|
-
[placeholder]="placeholder()"
|
|
216
|
-
[autocomplete]="autocompleteAttr()"
|
|
217
|
-
[formControl]="displayControl"
|
|
218
|
-
(blur)="onTouched()"
|
|
219
|
-
(input)="onInput($event)"
|
|
220
|
-
(keydown)="handleKeyDown($event)"
|
|
221
|
-
/>
|
|
222
|
-
|
|
223
|
-
<span matTextSuffix>
|
|
224
|
-
<ng-content></ng-content>
|
|
225
|
-
</span>
|
|
226
|
-
|
|
227
|
-
@if (loading()) {
|
|
228
|
-
<mat-spinner
|
|
229
|
-
matSuffix
|
|
230
|
-
class="nmf-mat-loader"
|
|
231
|
-
diameter="22"
|
|
232
|
-
strokeWidth="3"
|
|
233
|
-
></mat-spinner>
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
@if (hint()) {
|
|
237
|
-
<mat-hint [ngClass]="hintClassList()">{{ hint() }}</mat-hint>
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
<mat-error>
|
|
241
|
-
{{ errorMessage() }}
|
|
242
|
-
</mat-error>
|
|
243
|
-
</mat-form-field>
|
|
244
|
-
`,
|
|
245
|
-
}]
|
|
246
|
-
}] });
|
|
247
|
-
|
|
248
76
|
class MatInputDatepickerComponent extends MatFormControlBase {
|
|
249
77
|
minDate = input(null);
|
|
250
78
|
maxDate = input(null);
|
|
@@ -325,7 +153,7 @@ class MatInputDatepickerComponent extends MatFormControlBase {
|
|
|
325
153
|
|
|
326
154
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
327
155
|
</mat-form-field>
|
|
328
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4
|
|
156
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
329
157
|
}
|
|
330
158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputDatepickerComponent, decorators: [{
|
|
331
159
|
type: Component,
|
|
@@ -411,19 +239,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
411
239
|
|
|
412
240
|
class MatInputNumberComponent extends MatFormControlBase {
|
|
413
241
|
formatValue = input(false);
|
|
414
|
-
|
|
415
|
-
|
|
242
|
+
prefix = input(null);
|
|
243
|
+
suffix = input(null);
|
|
244
|
+
allowNegative = input(true);
|
|
245
|
+
negativeColor = input('#dc2626');
|
|
246
|
+
numberBehavior = new NumberBehavior();
|
|
247
|
+
displayValue = toSignal(this.displayControl.valueChanges, {
|
|
248
|
+
initialValue: this.displayControl.value,
|
|
249
|
+
});
|
|
250
|
+
textColor = computed(() => {
|
|
251
|
+
const value = this.displayValue();
|
|
252
|
+
if (value == null ||
|
|
253
|
+
value === '' ||
|
|
254
|
+
this.negativeColor() == null ||
|
|
255
|
+
this._disabledByInput()) {
|
|
256
|
+
return 'inherit';
|
|
257
|
+
}
|
|
258
|
+
const parsedValue = parseNumber(value ?? 0);
|
|
259
|
+
const valid = parsedValue != null && parsedValue >= 0;
|
|
260
|
+
return valid ? 'inherit' : this.negativeColor();
|
|
261
|
+
});
|
|
416
262
|
writeValue(value) {
|
|
417
263
|
super.writeValue(value);
|
|
418
264
|
this.updateDisplayValue(value);
|
|
419
265
|
}
|
|
420
|
-
|
|
421
|
-
this.
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
const parsed = parseNumber(raw);
|
|
426
|
-
this.updateDisplayValue(parsed);
|
|
266
|
+
onInput(_) {
|
|
267
|
+
const raw = this.displayControl.value ?? '';
|
|
268
|
+
const cleaned = this.numberBehavior.sanitize(raw, this.allowNegative());
|
|
269
|
+
const parsed = parseNumber(cleaned);
|
|
270
|
+
this.updateDisplayValue(cleaned);
|
|
427
271
|
this.onChange(parsed);
|
|
428
272
|
}
|
|
429
273
|
updateDisplayValue(value) {
|
|
@@ -438,13 +282,13 @@ class MatInputNumberComponent extends MatFormControlBase {
|
|
|
438
282
|
});
|
|
439
283
|
}
|
|
440
284
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputNumberComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
441
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: MatInputNumberComponent, isStandalone: true, selector: "nmf-mat-number", inputs: { formatValue: { classPropertyName: "formatValue", publicName: "formatValue", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
285
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: MatInputNumberComponent, isStandalone: true, selector: "nmf-mat-number", inputs: { formatValue: { classPropertyName: "formatValue", publicName: "formatValue", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, allowNegative: { classPropertyName: "allowNegative", publicName: "allowNegative", isSignal: true, isRequired: false, transformFunction: null }, negativeColor: { classPropertyName: "negativeColor", publicName: "negativeColor", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
442
286
|
@if (label() && detachLabel()) {
|
|
443
287
|
<label class="font-medium text-base">{{ label() }}</label>
|
|
444
288
|
}
|
|
445
289
|
|
|
446
290
|
<mat-form-field
|
|
447
|
-
class="
|
|
291
|
+
class="nmf-mat-field"
|
|
448
292
|
[appearance]="appearance()"
|
|
449
293
|
[floatLabel]="shouldLabelFloat()"
|
|
450
294
|
>
|
|
@@ -452,22 +296,37 @@ class MatInputNumberComponent extends MatFormControlBase {
|
|
|
452
296
|
<mat-label>{{ label() }}</mat-label>
|
|
453
297
|
}
|
|
454
298
|
|
|
299
|
+
<div class="nmf-mat-prefix-slot">
|
|
300
|
+
@if (prefix() != null) {
|
|
301
|
+
<span>{{ prefix() }}</span>
|
|
302
|
+
}
|
|
303
|
+
<ng-content select="[nmfPrefix]"></ng-content>
|
|
304
|
+
</div>
|
|
305
|
+
|
|
455
306
|
<input
|
|
456
307
|
#focusable
|
|
457
308
|
matInput
|
|
309
|
+
type="text"
|
|
458
310
|
[ngClass]="classList"
|
|
311
|
+
[style.color]="textColor()"
|
|
312
|
+
[style.opacity]="disabled() ? 0.6 : 1"
|
|
459
313
|
[id]="id()"
|
|
460
314
|
[name]="name()"
|
|
461
|
-
[type]="formatValue() ? 'text' : 'number'"
|
|
462
315
|
[required]="isRequired()"
|
|
463
316
|
[placeholder]="placeholder()"
|
|
464
317
|
[autocomplete]="autocompleteAttr()"
|
|
465
318
|
[formControl]="displayControl"
|
|
466
319
|
(blur)="onTouched()"
|
|
467
320
|
(input)="onInput($event)"
|
|
468
|
-
(keydown)="handleKeyDown($event)"
|
|
469
321
|
/>
|
|
470
322
|
|
|
323
|
+
<div class="nmf-mat-suffix-slot">
|
|
324
|
+
@if (suffix() != null) {
|
|
325
|
+
<span>{{ suffix() }}</span>
|
|
326
|
+
}
|
|
327
|
+
<ng-content select="[nmfSuffix]"></ng-content>
|
|
328
|
+
</div>
|
|
329
|
+
|
|
471
330
|
@if (loading()) {
|
|
472
331
|
<mat-spinner
|
|
473
332
|
matSuffix
|
|
@@ -481,11 +340,9 @@ class MatInputNumberComponent extends MatFormControlBase {
|
|
|
481
340
|
<mat-hint [ngClass]="hintClassList()">{{ hint() }}</mat-hint>
|
|
482
341
|
}
|
|
483
342
|
|
|
484
|
-
<ng-content></ng-content>
|
|
485
|
-
|
|
486
343
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
487
344
|
</mat-form-field>
|
|
488
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type:
|
|
345
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatButtonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
489
346
|
}
|
|
490
347
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputNumberComponent, decorators: [{
|
|
491
348
|
type: Component,
|
|
@@ -507,7 +364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
507
364
|
}
|
|
508
365
|
|
|
509
366
|
<mat-form-field
|
|
510
|
-
class="
|
|
367
|
+
class="nmf-mat-field"
|
|
511
368
|
[appearance]="appearance()"
|
|
512
369
|
[floatLabel]="shouldLabelFloat()"
|
|
513
370
|
>
|
|
@@ -515,22 +372,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
515
372
|
<mat-label>{{ label() }}</mat-label>
|
|
516
373
|
}
|
|
517
374
|
|
|
375
|
+
<div class="nmf-mat-prefix-slot">
|
|
376
|
+
@if (prefix() != null) {
|
|
377
|
+
<span>{{ prefix() }}</span>
|
|
378
|
+
}
|
|
379
|
+
<ng-content select="[nmfPrefix]"></ng-content>
|
|
380
|
+
</div>
|
|
381
|
+
|
|
518
382
|
<input
|
|
519
383
|
#focusable
|
|
520
384
|
matInput
|
|
385
|
+
type="text"
|
|
521
386
|
[ngClass]="classList"
|
|
387
|
+
[style.color]="textColor()"
|
|
388
|
+
[style.opacity]="disabled() ? 0.6 : 1"
|
|
522
389
|
[id]="id()"
|
|
523
390
|
[name]="name()"
|
|
524
|
-
[type]="formatValue() ? 'text' : 'number'"
|
|
525
391
|
[required]="isRequired()"
|
|
526
392
|
[placeholder]="placeholder()"
|
|
527
393
|
[autocomplete]="autocompleteAttr()"
|
|
528
394
|
[formControl]="displayControl"
|
|
529
395
|
(blur)="onTouched()"
|
|
530
396
|
(input)="onInput($event)"
|
|
531
|
-
(keydown)="handleKeyDown($event)"
|
|
532
397
|
/>
|
|
533
398
|
|
|
399
|
+
<div class="nmf-mat-suffix-slot">
|
|
400
|
+
@if (suffix() != null) {
|
|
401
|
+
<span>{{ suffix() }}</span>
|
|
402
|
+
}
|
|
403
|
+
<ng-content select="[nmfSuffix]"></ng-content>
|
|
404
|
+
</div>
|
|
405
|
+
|
|
534
406
|
@if (loading()) {
|
|
535
407
|
<mat-spinner
|
|
536
408
|
matSuffix
|
|
@@ -544,8 +416,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
544
416
|
<mat-hint [ngClass]="hintClassList()">{{ hint() }}</mat-hint>
|
|
545
417
|
}
|
|
546
418
|
|
|
547
|
-
<ng-content></ng-content>
|
|
548
|
-
|
|
549
419
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
550
420
|
</mat-form-field>
|
|
551
421
|
`,
|
|
@@ -705,7 +575,7 @@ class MatInputLookupComponent extends MatFormControlBase {
|
|
|
705
575
|
}
|
|
706
576
|
</mat-form-field>
|
|
707
577
|
</div>
|
|
708
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$
|
|
578
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
709
579
|
}
|
|
710
580
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputLookupComponent, decorators: [{
|
|
711
581
|
type: Component,
|
|
@@ -865,7 +735,7 @@ class MatInputSelectComponent extends MatFormControlBase {
|
|
|
865
735
|
|
|
866
736
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
867
737
|
</mat-form-field>
|
|
868
|
-
`, isInline: true, styles: [".mat-mdc-select-placeholder{transition:none!important}.hide-select-arrow .mat-mdc-select-arrow-wrapper{display:none!important}.nmf-mat-loader{margin-right:.5rem!important}.nmf-disabled{color:color-mix(in srgb,var(--mat-sys-on-surface) 38%,transparent)}.nmf-password-toggle{color:var(--mat-sys-on-surface-variant);padding-right:.5rem;background-color:transparent;border:none;
|
|
738
|
+
`, isInline: true, styles: [".nmf-mat-field{position:relative;width:100%}.mat-mdc-select-placeholder{transition:none!important}.mat-mdc-form-field-infix{display:flex;align-items:center;gap:.5rem}.nmf-mat-prefix-slot,.nmf-mat-suffix-slot{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap;white-space:nowrap;background:transparent}.nmf-mat-prefix-slot{order:-1}.nmf-mat-suffix-slot{order:2}.nmf-mat-field:has(.nmf-mat-prefix-slot>:not(:empty)) .mdc-floating-label:not(.mdc-floating-label--float-above){padding-left:1rem;transform:translateY(-.65rem)}.hide-select-arrow .mat-mdc-select-arrow-wrapper{display:none!important}.nmf-mat-loader{margin-right:.5rem!important}.nmf-disabled{color:color-mix(in srgb,var(--mat-sys-on-surface) 38%,transparent)}.nmf-password-toggle{color:var(--mat-sys-on-surface-variant);padding-right:.5rem;background-color:transparent;border:none;white-space:nowrap;&:disabled{color:color-mix(in srgb,var(--mat-sys-on-surface) 38%,transparent);cursor:default}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{appearance:textfield;-moz-appearance:textfield}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5$2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
869
739
|
}
|
|
870
740
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputSelectComponent, decorators: [{
|
|
871
741
|
type: Component,
|
|
@@ -927,12 +797,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
927
797
|
|
|
928
798
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
929
799
|
</mat-form-field>
|
|
930
|
-
`, styles: [".mat-mdc-select-placeholder{transition:none!important}.hide-select-arrow .mat-mdc-select-arrow-wrapper{display:none!important}.nmf-mat-loader{margin-right:.5rem!important}.nmf-disabled{color:color-mix(in srgb,var(--mat-sys-on-surface) 38%,transparent)}.nmf-password-toggle{color:var(--mat-sys-on-surface-variant);padding-right:.5rem;background-color:transparent;border:none;
|
|
800
|
+
`, styles: [".nmf-mat-field{position:relative;width:100%}.mat-mdc-select-placeholder{transition:none!important}.mat-mdc-form-field-infix{display:flex;align-items:center;gap:.5rem}.nmf-mat-prefix-slot,.nmf-mat-suffix-slot{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap;white-space:nowrap;background:transparent}.nmf-mat-prefix-slot{order:-1}.nmf-mat-suffix-slot{order:2}.nmf-mat-field:has(.nmf-mat-prefix-slot>:not(:empty)) .mdc-floating-label:not(.mdc-floating-label--float-above){padding-left:1rem;transform:translateY(-.65rem)}.hide-select-arrow .mat-mdc-select-arrow-wrapper{display:none!important}.nmf-mat-loader{margin-right:.5rem!important}.nmf-disabled{color:color-mix(in srgb,var(--mat-sys-on-surface) 38%,transparent)}.nmf-password-toggle{color:var(--mat-sys-on-surface-variant);padding-right:.5rem;background-color:transparent;border:none;white-space:nowrap;&:disabled{color:color-mix(in srgb,var(--mat-sys-on-surface) 38%,transparent);cursor:default}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{appearance:textfield;-moz-appearance:textfield}\n"] }]
|
|
931
801
|
}] });
|
|
932
802
|
|
|
933
803
|
class MatInputTextComponent extends MatFormControlBase {
|
|
934
804
|
type = input('text');
|
|
935
|
-
|
|
805
|
+
prefix = input(null);
|
|
806
|
+
suffix = input(null);
|
|
807
|
+
behavior = new PasswordBehavior();
|
|
936
808
|
computedType = computed(() => this.behavior.showPassword() && this.type() === 'password'
|
|
937
809
|
? 'text'
|
|
938
810
|
: this.type());
|
|
@@ -942,7 +814,7 @@ class MatInputTextComponent extends MatFormControlBase {
|
|
|
942
814
|
this.onChange(value);
|
|
943
815
|
}
|
|
944
816
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
945
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: MatInputTextComponent, isStandalone: true, selector: "nmf-mat-text", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
817
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: MatInputTextComponent, isStandalone: true, selector: "nmf-mat-text", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
946
818
|
@if (label() && detachLabel()) {
|
|
947
819
|
<label class="font-medium text-base">{{ label() }}</label>
|
|
948
820
|
}
|
|
@@ -956,6 +828,13 @@ class MatInputTextComponent extends MatFormControlBase {
|
|
|
956
828
|
<mat-label>{{ label() }}</mat-label>
|
|
957
829
|
}
|
|
958
830
|
|
|
831
|
+
<div class="nmf-mat-prefix-slot">
|
|
832
|
+
@if (prefix() != null) {
|
|
833
|
+
<span>{{ prefix() }}</span>
|
|
834
|
+
}
|
|
835
|
+
<ng-content select="[nmfPrefix]"></ng-content>
|
|
836
|
+
</div>
|
|
837
|
+
|
|
959
838
|
<input
|
|
960
839
|
#focusable
|
|
961
840
|
matInput
|
|
@@ -971,6 +850,13 @@ class MatInputTextComponent extends MatFormControlBase {
|
|
|
971
850
|
(input)="onInput($event)"
|
|
972
851
|
/>
|
|
973
852
|
|
|
853
|
+
<div class="nmf-mat-suffix-slot">
|
|
854
|
+
@if (suffix() != null) {
|
|
855
|
+
<span>{{ suffix() }}</span>
|
|
856
|
+
}
|
|
857
|
+
<ng-content select="[nmfSuffix]"></ng-content>
|
|
858
|
+
</div>
|
|
859
|
+
|
|
974
860
|
@if (loading()) {
|
|
975
861
|
<mat-spinner
|
|
976
862
|
matSuffix
|
|
@@ -999,11 +885,9 @@ class MatInputTextComponent extends MatFormControlBase {
|
|
|
999
885
|
</button>
|
|
1000
886
|
}
|
|
1001
887
|
|
|
1002
|
-
<ng-content></ng-content>
|
|
1003
|
-
|
|
1004
888
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
1005
889
|
</mat-form-field>
|
|
1006
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$
|
|
890
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1007
891
|
}
|
|
1008
892
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputTextComponent, decorators: [{
|
|
1009
893
|
type: Component,
|
|
@@ -1033,6 +917,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1033
917
|
<mat-label>{{ label() }}</mat-label>
|
|
1034
918
|
}
|
|
1035
919
|
|
|
920
|
+
<div class="nmf-mat-prefix-slot">
|
|
921
|
+
@if (prefix() != null) {
|
|
922
|
+
<span>{{ prefix() }}</span>
|
|
923
|
+
}
|
|
924
|
+
<ng-content select="[nmfPrefix]"></ng-content>
|
|
925
|
+
</div>
|
|
926
|
+
|
|
1036
927
|
<input
|
|
1037
928
|
#focusable
|
|
1038
929
|
matInput
|
|
@@ -1048,6 +939,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1048
939
|
(input)="onInput($event)"
|
|
1049
940
|
/>
|
|
1050
941
|
|
|
942
|
+
<div class="nmf-mat-suffix-slot">
|
|
943
|
+
@if (suffix() != null) {
|
|
944
|
+
<span>{{ suffix() }}</span>
|
|
945
|
+
}
|
|
946
|
+
<ng-content select="[nmfSuffix]"></ng-content>
|
|
947
|
+
</div>
|
|
948
|
+
|
|
1051
949
|
@if (loading()) {
|
|
1052
950
|
<mat-spinner
|
|
1053
951
|
matSuffix
|
|
@@ -1076,8 +974,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1076
974
|
</button>
|
|
1077
975
|
}
|
|
1078
976
|
|
|
1079
|
-
<ng-content></ng-content>
|
|
1080
|
-
|
|
1081
977
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
1082
978
|
</mat-form-field>
|
|
1083
979
|
`,
|
|
@@ -1138,7 +1034,7 @@ class MatInputTextareaComponent extends MatFormControlBase {
|
|
|
1138
1034
|
{{ errorMessage() }}
|
|
1139
1035
|
</mat-error>
|
|
1140
1036
|
</mat-form-field>
|
|
1141
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type:
|
|
1037
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1142
1038
|
}
|
|
1143
1039
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputTextareaComponent, decorators: [{
|
|
1144
1040
|
type: Component,
|
|
@@ -1276,7 +1172,7 @@ class MatInputTimepickerComponent extends MatFormControlBase {
|
|
|
1276
1172
|
|
|
1277
1173
|
<mat-error>{{ errorMessage() }}</mat-error>
|
|
1278
1174
|
</mat-form-field>
|
|
1279
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTimepickerModule }, { kind: "component", type: i4$
|
|
1175
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTimepickerModule }, { kind: "component", type: i4$2.MatTimepicker, selector: "mat-timepicker", inputs: ["interval", "options", "disableRipple", "aria-label", "aria-labelledby"], outputs: ["selected", "opened", "closed"], exportAs: ["matTimepicker"] }, { kind: "directive", type: i4$2.MatTimepickerInput, selector: "input[matTimepicker]", inputs: ["value", "matTimepicker", "matTimepickerMin", "matTimepickerMax", "disabled"], outputs: ["valueChange"], exportAs: ["matTimepickerInput"] }, { kind: "component", type: i4$2.MatTimepickerToggle, selector: "mat-timepicker-toggle", inputs: ["for", "aria-label", "aria-labelledby", "disabled", "tabIndex", "disableRipple"], exportAs: ["matTimepickerToggle"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1280
1176
|
}
|
|
1281
1177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatInputTimepickerComponent, decorators: [{
|
|
1282
1178
|
type: Component,
|
|
@@ -1364,5 +1260,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1364
1260
|
* Generated bundle index. Do not edit.
|
|
1365
1261
|
*/
|
|
1366
1262
|
|
|
1367
|
-
export { MatFormControlBase,
|
|
1263
|
+
export { MatFormControlBase, MatInputDatepickerComponent, MatInputLookupComponent, MatInputNumberComponent, MatInputSelectComponent, MatInputTextComponent, MatInputTextareaComponent, MatInputTimepickerComponent };
|
|
1368
1264
|
//# sourceMappingURL=ng-modular-forms-material.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-modular-forms-material.mjs","sources":["../../../projects/material/src/lib/base/mat-form-control-base.ts","../../../projects/material/src/lib/controls/currency/currency.component.ts","../../../projects/material/src/lib/controls/datepicker/datepicker.component.ts","../../../projects/material/src/lib/controls/number/number.component.ts","../../../projects/material/src/lib/controls/lookup/lookup.component.ts","../../../projects/material/src/lib/controls/select/select.component.ts","../../../projects/material/src/lib/controls/text/text.component.ts","../../../projects/material/src/lib/controls/textarea/textarea.component.ts","../../../projects/material/src/lib/controls/timepicker/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 { FormControl } from '@angular/forms';\nimport { FormControlBase } from '@ng-modular-forms/core';\n\n@Directive()\nexport abstract class MatFormControlBase<\n TValue,\n TDisplayValue = string,\n> extends FormControlBase<TValue> {\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 // Purely a state carrier for mat-form-field, never drives value or internal state\n readonly displayControl = new FormControl<TDisplayValue | null>({\n value: null,\n disabled: false,\n });\n\n override writeValue(value: TValue | null): void {\n super.writeValue(value);\n\n this.displayControl.setValue(value as unknown as TDisplayValue | null, {\n emitEvent: false,\n });\n }\n\n override setDisabledState(isDisabled: boolean): void {\n super.setDisabledState(isDisabled);\n\n if (isDisabled) {\n this.displayControl.disable({ emitEvent: false });\n } else {\n this.displayControl.enable({ emitEvent: false });\n }\n }\n\n override onControlStateChange(): void {\n super.onControlStateChange();\n\n const control = this.control;\n if (!control) {\n return;\n }\n\n if (control.touched) {\n this.displayControl.markAsTouched();\n }\n if (control.dirty) {\n this.displayControl.markAsDirty();\n }\n\n this.displayControl.setErrors(control.errors);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport {\n CurrencyBehavior,\n formatNumber,\n parseNumber,\n} from '@ng-modular-forms/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatInputModule } from '@angular/material/input';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatFormControlBase } from '../../base/mat-form-control-base';\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 (displayControl.value) {\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 #focusable\n matInput\n type=\"text\"\n [ngClass]=\"classList()\"\n [style.color]=\"textColor()\"\n [style.opacity]=\"disabled() ? 0.6 : 1\"\n [id]=\"id()\"\n [name]=\"name()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\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 private readonly displayValue = toSignal(this.displayControl.valueChanges, {\n initialValue: this.displayControl.value,\n });\n\n override writeValue(value: number | null): void {\n super.writeValue(value);\n this.displayControl.setValue(value != null ? formatNumber(value) : null);\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n this.behavior.blockNonDigitKey(event);\n }\n\n onInput(event: Event) {\n const rawValue = (event.target as HTMLInputElement).value;\n const value = parseNumber(rawValue);\n\n this.displayControl.setValue(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 { MatDatepickerModule } from '@angular/material/datepicker';\nimport type {\n DateFilterFn,\n MatCalendarCellClassFunction,\n MatCalendarView,\n MatDatepickerInputEvent,\n} from '@angular/material/datepicker';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormControlBase } from '../../base/mat-form-control-base';\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 #focusable\n matInput\n [id]=\"id()\"\n [name]=\"name()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"dateFilter()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (dateInput)=\"onInput($event)\"\n (dateChange)=\"onInput($event)\"\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 onInput(event: MatDatepickerInputEvent<Date>): void {\n const rawValue = (event.targetElement as HTMLInputElement).value;\n const value = rawValue ? new Date(rawValue) : null;\n\n this.onChange(value);\n }\n}\n","import { ChangeDetectionStrategy, Component, input } 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 { MatFormControlBase } from '../../base/mat-form-control-base';\nimport {\n formatNumber,\n parseNumber,\n CurrencyBehavior,\n TextBehavior,\n} 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 #focusable\n matInput\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [type]=\"formatValue() ? 'text' : 'number'\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\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<\n string | number | null\n> {\n formatValue = input<boolean>(false);\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.blockNonDigitKey(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 this.onChange(parsed);\n }\n\n updateDisplayValue(value: number | null) {\n const shouldFormat = this.formatValue() && value != null;\n const displayValue = shouldFormat\n ? (formatNumber(value) ?? '')\n : value != null\n ? String(value)\n : '';\n\n this.displayControl.setValue(displayValue, {\n emitEvent: false,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n input,\n OnDestroy,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { AsyncPipe, 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 { MatFormControlBase } from '../../base/mat-form-control-base';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatAutocompleteModule,\n MatAutocompleteSelectedEvent,\n} from '@angular/material/autocomplete';\nimport { Observable, startWith } from 'rxjs';\nimport { LookupBehavior, LookupOption } from '@ng-modular-forms/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'nmf-mat-lookup',\n exportAs: 'nmfMatLookup',\n imports: [\n CommonModule,\n MatInputModule,\n MatAutocompleteModule,\n MatIconModule,\n MatButtonModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n AsyncPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <div class=\"relative\">\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 #focusable\n matInput\n type=\"text\"\n [class.cursor-not-allowed]=\"behavior.selectedOption() != null\"\n [attr.aria-label]=\"detachLabel() ? label() : null\"\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [required]=\"isRequired()\"\n [readonly]=\"behavior.selectedOption() != null\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"displayControl\"\n [matAutocomplete]=\"auto\"\n (blur)=\"onTouched()\"\n />\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [displayWith]=\"displayWith() ?? null\"\n (optionSelected)=\"selectOption($event)\"\n >\n @for (option of behavior.filteredOptions | async; track option) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-autocomplete>\n\n @if (behavior.status() === 'empty') {\n <mat-hint>{{ emptyOptionsLabel() }}</mat-hint>\n } @else if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <mat-error>{{ errorMessage() }}</mat-error>\n\n <!-- Loading status is for lookups and async options, and loading() is for the form control itself -->\n @if (behavior.status() === 'loading' || loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"24\"\n strokeWidth=\"3\"\n />\n }\n\n @if (behavior.selectedOption()) {\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear selection\"\n (click)=\"clearSelectedOption()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n `,\n})\nexport class MatInputLookupComponent<TOption>\n extends MatFormControlBase<TOption, string>\n implements OnDestroy\n{\n override readonly autocompleteAttr = input<string | null>('off');\n\n /*\n * Static options to display in the dropdown. This is for synchronous sources.\n */\n optionsSource = input<LookupOption<TOption>[]>([]);\n\n /*\n * Must return a cancellable observable. This is for asynchronous sources (API calls, etc).\n */\n optionsProvider =\n input<(query: string | null) => Observable<LookupOption<TOption>[]>>();\n\n /*\n * When using a synchronous options source, or an asynchronous provider that returns an object where the shape is known,\n * this function is used to determine the display value.\n */\n displayWith = input<(value: TOption | null) => string>();\n\n /*\n * Used to determine the display value asynchronously when using primitive types for form values\n * eg: countryCode instead of Country itself.\n *\n * If not provided, the raw value will be used. Only needed for patching/hydrating the form.\n */\n displayProvider = input<(value: TOption | null) => Observable<string>>();\n\n /*\n * Used to compare options during selection if object equality is not sufficient.\n */\n compareWith = input<(a: TOption, b: TOption) => boolean>();\n\n emptyOptionsLabel = input<string>('No results found');\n\n /*\n * Search will be debounced by this many milliseconds.\n */\n debounceTime = input<number>(500);\n\n /*\n * Search will not be triggered until the user has typed at least this many characters.\n */\n searchThreshold = input<number>(2);\n\n private readonly searchQuery = toSignal(\n this.displayControl.valueChanges.pipe(startWith(this.displayControl.value)),\n );\n\n behavior: LookupBehavior<TOption>;\n\n constructor() {\n super();\n\n this.behavior = new LookupBehavior<TOption>({\n destroyRef: this.destroyRef,\n resolvers: {\n compare: this.compareWith,\n label: this.displayWith,\n labelAsync: this.displayProvider,\n search: this.optionsProvider,\n },\n });\n\n effect(() => {\n const currentOptions = this.optionsSource() ?? [];\n this.behavior.updateOptions(currentOptions);\n });\n\n effect(() => {\n const selectedOption = this.behavior.selectedOption();\n this.onChange(selectedOption?.value ?? null);\n });\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n this.behavior.setupFilteredOptions(\n this.displayControl.valueChanges,\n this.searchQuery,\n );\n this.behavior.setupOptionsProvider(\n this.displayControl.valueChanges,\n 500,\n 2,\n );\n }\n\n override writeValue(value: TOption | null): void {\n super.writeValue(value);\n this.behavior.selectedMatchedOption(value);\n }\n\n selectOption(result: MatAutocompleteSelectedEvent): void {\n const lookupOption = {\n value: result.option.value,\n label: result.option.viewValue,\n };\n this.behavior.selectOption(undefined, lookupOption);\n }\n\n clearSelectedOption(): void {\n this.displayControl.setValue(null);\n this.behavior.clearSelectedOption();\n }\n\n ngOnDestroy(): void {\n this.behavior.optionsUpdated$.complete();\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 { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { CommonModule } from '@angular/common';\nimport { MatFormControlBase } from '../../base/mat-form-control-base';\nimport { SelectOption } from '@ng-modular-forms/core';\n\n@Component({\n selector: 'nmf-mat-select',\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n ReactiveFormsModule,\n MatSelectModule,\n ],\n styleUrls: ['../form-controls.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 #focusable\n [class.hide-select-arrow]=\"loading()\"\n [id]=\"id()\"\n [panelWidth]=\"panelWidth()\"\n [required]=\"isRequired()\"\n [placeholder]=\"emptyOptionLabel()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <mat-option [value]=\"''\" [disabled]=\"!allowEmptyOptionSelection()\">\n {{ emptyOptionLabel() }}\n </mat-option>\n\n <!-- All Options -->\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </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 allowEmptyOptionSelection = input<boolean>(false);\n panelWidth = input<string | number | null>('auto');\n\n onSelectionChange(event: MatSelectChange): void {\n if (this.disabled()) {\n return;\n }\n const value = event.value;\n this.onChange(value);\n }\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 { MatFormControlBase } from '../../base/mat-form-control-base';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TextBehavior } from '@ng-modular-forms/core';\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 #focusable\n matInput\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [type]=\"computedType()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($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 @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 onInput(event: Event): void {\n const rawValue = (event.target as HTMLInputElement).value;\n const value = rawValue ? rawValue : null;\n\n this.onChange(value);\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 '../../base/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 #focusable\n matInput\n [id]=\"id()\"\n [rows]=\"rows()\"\n [cols]=\"cols()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\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 onInput(event: Event): void {\n const rawValue = (event.target as HTMLTextAreaElement).value;\n const value = rawValue ? rawValue : null;\n\n this.onChange(value);\n }\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 '../../base/mat-form-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTimepickerModule } from '@angular/material/timepicker';\nimport type {\n MatTimepickerOption,\n MatTimepickerSelected,\n} from '@angular/material/timepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\n\n@Component({\n selector: 'nmf-mat-timepicker',\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatTimepickerModule,\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 #focusable\n matInput\n [id]=\"id()\"\n [name]=\"name()\"\n [matTimepicker]=\"picker\"\n [matTimepickerMin]=\"minDate()\"\n [matTimepickerMax]=\"maxDate()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\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 (selected)=\"onSelected($event)\"\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<\n Date | null,\n Date\n> {\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 onInput(event: Event): void {\n const rawValue = (event.target as HTMLInputElement).value;\n const value = rawValue ? new Date(rawValue) : null;\n\n this.onChange(value);\n }\n\n onSelected(event: MatTimepickerSelected<unknown>): void {\n this.onChange(event.value as Date);\n }\n}\n","/*\n * Public API Surface of material\n */\n\nexport * from './lib/base/mat-form-control-base';\n\nexport * from './lib/controls/currency/currency.component';\nexport * from './lib/controls/datepicker/datepicker.component';\nexport * from './lib/controls/number/number.component';\nexport * from './lib/controls/lookup/lookup.component';\nexport * from './lib/controls/select/select.component';\nexport * from './lib/controls/text/text.component';\nexport * from './lib/controls/textarea/textarea.component';\nexport * from './lib/controls/timepicker/timepicker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i5","i3","i7","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-modular-forms-material.mjs","sources":["../../../projects/material/src/lib/base/mat-form-control-base.ts","../../../projects/material/src/lib/controls/datepicker/datepicker.component.ts","../../../projects/material/src/lib/controls/number/number.component.ts","../../../projects/material/src/lib/controls/lookup/lookup.component.ts","../../../projects/material/src/lib/controls/select/select.component.ts","../../../projects/material/src/lib/controls/text/text.component.ts","../../../projects/material/src/lib/controls/textarea/textarea.component.ts","../../../projects/material/src/lib/controls/timepicker/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 { FormControl } from '@angular/forms';\nimport { FormControlBase } from '@ng-modular-forms/core';\n\n@Directive()\nexport abstract class MatFormControlBase<\n TValue,\n TDisplayValue = string,\n> extends FormControlBase<TValue> {\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 // Purely a state carrier for mat-form-field, never drives value or internal state\n readonly displayControl = new FormControl<TDisplayValue | null>({\n value: null,\n disabled: false,\n });\n\n override writeValue(value: TValue | null): void {\n super.writeValue(value);\n\n this.displayControl.setValue(value as unknown as TDisplayValue | null, {\n emitEvent: false,\n });\n }\n\n override setDisabledState(isDisabled: boolean): void {\n super.setDisabledState(isDisabled);\n\n if (isDisabled) {\n this.displayControl.disable({ emitEvent: false });\n } else {\n this.displayControl.enable({ emitEvent: false });\n }\n }\n\n override onControlStateChange(): void {\n super.onControlStateChange();\n\n const control = this.control;\n if (!control) {\n return;\n }\n\n if (control.touched) {\n this.displayControl.markAsTouched();\n }\n if (control.dirty) {\n this.displayControl.markAsDirty();\n }\n\n this.displayControl.setErrors(control.errors);\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 { MatDatepickerModule } from '@angular/material/datepicker';\nimport type {\n DateFilterFn,\n MatCalendarCellClassFunction,\n MatCalendarView,\n MatDatepickerInputEvent,\n} from '@angular/material/datepicker';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormControlBase } from '../../base/mat-form-control-base';\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 #focusable\n matInput\n [id]=\"id()\"\n [name]=\"name()\"\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"dateFilter()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (dateInput)=\"onInput($event)\"\n (dateChange)=\"onInput($event)\"\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 onInput(event: MatDatepickerInputEvent<Date>): void {\n const rawValue = (event.targetElement as HTMLInputElement).value;\n const value = rawValue ? new Date(rawValue) : null;\n\n this.onChange(value);\n }\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 { MatFormControlBase } from '../../base/mat-form-control-base';\nimport {\n formatNumber,\n NumberBehavior,\n parseNumber,\n} from '@ng-modular-forms/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { toSignal } from '@angular/core/rxjs-interop';\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=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (label() && !detachLabel()) {\n <mat-label>{{ label() }}</mat-label>\n }\n\n <div class=\"nmf-mat-prefix-slot\">\n @if (prefix() != null) {\n <span>{{ prefix() }}</span>\n }\n <ng-content select=\"[nmfPrefix]\"></ng-content>\n </div>\n\n <input\n #focusable\n matInput\n type=\"text\"\n [ngClass]=\"classList\"\n [style.color]=\"textColor()\"\n [style.opacity]=\"disabled() ? 0.6 : 1\"\n [id]=\"id()\"\n [name]=\"name()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\n />\n\n <div class=\"nmf-mat-suffix-slot\">\n @if (suffix() != null) {\n <span>{{ suffix() }}</span>\n }\n <ng-content select=\"[nmfSuffix]\"></ng-content>\n </div>\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 MatInputNumberComponent extends MatFormControlBase<\n string | number | null\n> {\n formatValue = input<boolean>(false);\n prefix = input<string | null>(null);\n suffix = input<string | null>(null);\n allowNegative = input<boolean>(true);\n negativeColor = input<string | null>('#dc2626');\n\n private numberBehavior = new NumberBehavior();\n\n private readonly displayValue = toSignal(this.displayControl.valueChanges, {\n initialValue: this.displayControl.value,\n });\n\n readonly textColor = computed(() => {\n const value = this.displayValue();\n if (\n value == null ||\n value === '' ||\n this.negativeColor() == null ||\n this._disabledByInput()\n ) {\n return 'inherit';\n }\n\n const parsedValue = parseNumber(value ?? 0);\n const valid = parsedValue != null && parsedValue >= 0;\n\n return valid ? 'inherit' : this.negativeColor();\n });\n\n override writeValue(value: number | null): void {\n super.writeValue(value);\n this.updateDisplayValue(value);\n }\n\n onInput(_: Event): void {\n const raw = this.displayControl.value ?? '';\n const cleaned = this.numberBehavior.sanitize(raw, this.allowNegative());\n const parsed = parseNumber(cleaned);\n\n this.updateDisplayValue(cleaned);\n this.onChange(parsed);\n }\n\n updateDisplayValue(value: number | string | null) {\n const shouldFormat = this.formatValue() && value != null;\n const displayValue = shouldFormat\n ? (formatNumber(value) ?? '')\n : value != null\n ? String(value)\n : '';\n\n this.displayControl.setValue(displayValue, {\n emitEvent: false,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n input,\n OnDestroy,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { AsyncPipe, 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 { MatFormControlBase } from '../../base/mat-form-control-base';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatAutocompleteModule,\n MatAutocompleteSelectedEvent,\n} from '@angular/material/autocomplete';\nimport { Observable, startWith } from 'rxjs';\nimport { LookupBehavior, LookupOption } from '@ng-modular-forms/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'nmf-mat-lookup',\n exportAs: 'nmfMatLookup',\n imports: [\n CommonModule,\n MatInputModule,\n MatAutocompleteModule,\n MatIconModule,\n MatButtonModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n AsyncPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (label() && detachLabel()) {\n <label class=\"font-medium text-base\">{{ label() }}</label>\n }\n\n <div class=\"relative\">\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 #focusable\n matInput\n type=\"text\"\n [class.cursor-not-allowed]=\"behavior.selectedOption() != null\"\n [attr.aria-label]=\"detachLabel() ? label() : null\"\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [required]=\"isRequired()\"\n [readonly]=\"behavior.selectedOption() != null\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"displayControl\"\n [matAutocomplete]=\"auto\"\n (blur)=\"onTouched()\"\n />\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [displayWith]=\"displayWith() ?? null\"\n (optionSelected)=\"selectOption($event)\"\n >\n @for (option of behavior.filteredOptions | async; track option) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-autocomplete>\n\n @if (behavior.status() === 'empty') {\n <mat-hint>{{ emptyOptionsLabel() }}</mat-hint>\n } @else if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ hint() }}</mat-hint>\n }\n\n <mat-error>{{ errorMessage() }}</mat-error>\n\n <!-- Loading status is for lookups and async options, and loading() is for the form control itself -->\n @if (behavior.status() === 'loading' || loading()) {\n <mat-spinner\n matSuffix\n class=\"nmf-mat-loader\"\n diameter=\"24\"\n strokeWidth=\"3\"\n />\n }\n\n @if (behavior.selectedOption()) {\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear selection\"\n (click)=\"clearSelectedOption()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n `,\n})\nexport class MatInputLookupComponent<TOption>\n extends MatFormControlBase<TOption, string>\n implements OnDestroy\n{\n override readonly autocompleteAttr = input<string | null>('off');\n\n /*\n * Static options to display in the dropdown. This is for synchronous sources.\n */\n optionsSource = input<LookupOption<TOption>[]>([]);\n\n /*\n * Must return a cancellable observable. This is for asynchronous sources (API calls, etc).\n */\n optionsProvider =\n input<(query: string | null) => Observable<LookupOption<TOption>[]>>();\n\n /*\n * When using a synchronous options source, or an asynchronous provider that returns an object where the shape is known,\n * this function is used to determine the display value.\n */\n displayWith = input<(value: TOption | null) => string>();\n\n /*\n * Used to determine the display value asynchronously when using primitive types for form values\n * eg: countryCode instead of Country itself.\n *\n * If not provided, the raw value will be used. Only needed for patching/hydrating the form.\n */\n displayProvider = input<(value: TOption | null) => Observable<string>>();\n\n /*\n * Used to compare options during selection if object equality is not sufficient.\n */\n compareWith = input<(a: TOption, b: TOption) => boolean>();\n\n emptyOptionsLabel = input<string>('No results found');\n\n /*\n * Search will be debounced by this many milliseconds.\n */\n debounceTime = input<number>(500);\n\n /*\n * Search will not be triggered until the user has typed at least this many characters.\n */\n searchThreshold = input<number>(2);\n\n private readonly searchQuery = toSignal(\n this.displayControl.valueChanges.pipe(startWith(this.displayControl.value)),\n );\n\n behavior: LookupBehavior<TOption>;\n\n constructor() {\n super();\n\n this.behavior = new LookupBehavior<TOption>({\n destroyRef: this.destroyRef,\n resolvers: {\n compare: this.compareWith,\n label: this.displayWith,\n labelAsync: this.displayProvider,\n search: this.optionsProvider,\n },\n });\n\n effect(() => {\n const currentOptions = this.optionsSource() ?? [];\n this.behavior.updateOptions(currentOptions);\n });\n\n effect(() => {\n const selectedOption = this.behavior.selectedOption();\n this.onChange(selectedOption?.value ?? null);\n });\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n this.behavior.setupFilteredOptions(\n this.displayControl.valueChanges,\n this.searchQuery,\n );\n this.behavior.setupOptionsProvider(\n this.displayControl.valueChanges,\n 500,\n 2,\n );\n }\n\n override writeValue(value: TOption | null): void {\n super.writeValue(value);\n this.behavior.selectedMatchedOption(value);\n }\n\n selectOption(result: MatAutocompleteSelectedEvent): void {\n const lookupOption = {\n value: result.option.value,\n label: result.option.viewValue,\n };\n this.behavior.selectOption(undefined, lookupOption);\n }\n\n clearSelectedOption(): void {\n this.displayControl.setValue(null);\n this.behavior.clearSelectedOption();\n }\n\n ngOnDestroy(): void {\n this.behavior.optionsUpdated$.complete();\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 { MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { CommonModule } from '@angular/common';\nimport { MatFormControlBase } from '../../base/mat-form-control-base';\nimport { SelectOption } from '@ng-modular-forms/core';\n\n@Component({\n selector: 'nmf-mat-select',\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n ReactiveFormsModule,\n MatSelectModule,\n ],\n styleUrls: ['../form-controls.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 #focusable\n [class.hide-select-arrow]=\"loading()\"\n [id]=\"id()\"\n [panelWidth]=\"panelWidth()\"\n [required]=\"isRequired()\"\n [placeholder]=\"emptyOptionLabel()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <mat-option [value]=\"''\" [disabled]=\"!allowEmptyOptionSelection()\">\n {{ emptyOptionLabel() }}\n </mat-option>\n\n <!-- All Options -->\n @for (option of options(); track option.value) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </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 allowEmptyOptionSelection = input<boolean>(false);\n panelWidth = input<string | number | null>('auto');\n\n onSelectionChange(event: MatSelectChange): void {\n if (this.disabled()) {\n return;\n }\n const value = event.value;\n this.onChange(value);\n }\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 { MatFormControlBase } from '../../base/mat-form-control-base';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PasswordBehavior } from '@ng-modular-forms/core';\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 <div class=\"nmf-mat-prefix-slot\">\n @if (prefix() != null) {\n <span>{{ prefix() }}</span>\n }\n <ng-content select=\"[nmfPrefix]\"></ng-content>\n </div>\n\n <input\n #focusable\n matInput\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [type]=\"computedType()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\n />\n\n <div class=\"nmf-mat-suffix-slot\">\n @if (suffix() != null) {\n <span>{{ suffix() }}</span>\n }\n <ng-content select=\"[nmfSuffix]\"></ng-content>\n </div>\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 <mat-error>{{ errorMessage() }}</mat-error>\n </mat-form-field>\n `,\n})\nexport class MatInputTextComponent extends MatFormControlBase<string | null> {\n type = input<TextInputType>('text');\n prefix = input<string | null>(null);\n suffix = input<string | null>(null);\n\n behavior = new PasswordBehavior();\n\n computedType = computed(() =>\n this.behavior.showPassword() && this.type() === 'password'\n ? 'text'\n : this.type(),\n );\n\n onInput(event: Event): void {\n const rawValue = (event.target as HTMLInputElement).value;\n const value = rawValue ? rawValue : null;\n\n this.onChange(value);\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 '../../base/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 #focusable\n matInput\n [id]=\"id()\"\n [rows]=\"rows()\"\n [cols]=\"cols()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\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 onInput(event: Event): void {\n const rawValue = (event.target as HTMLTextAreaElement).value;\n const value = rawValue ? rawValue : null;\n\n this.onChange(value);\n }\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 '../../base/mat-form-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTimepickerModule } from '@angular/material/timepicker';\nimport type {\n MatTimepickerOption,\n MatTimepickerSelected,\n} from '@angular/material/timepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\n\n@Component({\n selector: 'nmf-mat-timepicker',\n imports: [\n CommonModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n MatTimepickerModule,\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 #focusable\n matInput\n [id]=\"id()\"\n [name]=\"name()\"\n [matTimepicker]=\"picker\"\n [matTimepickerMin]=\"minDate()\"\n [matTimepickerMax]=\"maxDate()\"\n [required]=\"isRequired()\"\n [placeholder]=\"placeholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (input)=\"onInput($event)\"\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 (selected)=\"onSelected($event)\"\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<\n Date | null,\n Date\n> {\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 onInput(event: Event): void {\n const rawValue = (event.target as HTMLInputElement).value;\n const value = rawValue ? new Date(rawValue) : null;\n\n this.onChange(value);\n }\n\n onSelected(event: MatTimepickerSelected<unknown>): void {\n this.onChange(event.value as Date);\n }\n}\n","/*\n * Public API Surface of material\n */\n\nexport * from './lib/base/mat-form-control-base';\n\nexport * from './lib/controls/datepicker/datepicker.component';\nexport * from './lib/controls/number/number.component';\nexport * from './lib/controls/lookup/lookup.component';\nexport * from './lib/controls/select/select.component';\nexport * from './lib/controls/text/text.component';\nexport * from './lib/controls/textarea/textarea.component';\nexport * from './lib/controls/timepicker/timepicker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i3","i5","i7","i6"],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { MatFormControlBase } from '../../base/mat-form-control-base';
|
|
2
|
-
import { CurrencyBehavior, TextBehavior } from '@ng-modular-forms/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class MatInputNumberComponent extends MatFormControlBase<string | number | null> {
|
|
5
4
|
formatValue: import("@angular/core").InputSignal<boolean>;
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
prefix: import("@angular/core").InputSignal<string | null>;
|
|
6
|
+
suffix: import("@angular/core").InputSignal<string | null>;
|
|
7
|
+
allowNegative: import("@angular/core").InputSignal<boolean>;
|
|
8
|
+
negativeColor: import("@angular/core").InputSignal<string | null>;
|
|
9
|
+
private numberBehavior;
|
|
10
|
+
private readonly displayValue;
|
|
11
|
+
readonly textColor: import("@angular/core").Signal<string | null>;
|
|
8
12
|
writeValue(value: number | null): void;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
updateDisplayValue(value: number | null): void;
|
|
13
|
+
onInput(_: Event): void;
|
|
14
|
+
updateDisplayValue(value: number | string | null): void;
|
|
12
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<MatInputNumberComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MatInputNumberComponent, "nmf-mat-number", never, { "formatValue": { "alias": "formatValue"; "required": false; "isSignal": true; }; }, {}, never, ["
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MatInputNumberComponent, "nmf-mat-number", never, { "formatValue": { "alias": "formatValue"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "allowNegative": { "alias": "allowNegative"; "required": false; "isSignal": true; }; "negativeColor": { "alias": "negativeColor"; "required": false; "isSignal": true; }; }, {}, never, ["[nmfPrefix]", "[nmfSuffix]"], true, never>;
|
|
14
17
|
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { MatFormControlBase } from '../../base/mat-form-control-base';
|
|
2
|
-
import {
|
|
2
|
+
import { PasswordBehavior } from '@ng-modular-forms/core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
type TextInputType = 'text' | 'email' | 'tel' | 'url' | 'password' | 'search';
|
|
5
5
|
export declare class MatInputTextComponent extends MatFormControlBase<string | null> {
|
|
6
6
|
type: import("@angular/core").InputSignal<TextInputType>;
|
|
7
|
-
|
|
7
|
+
prefix: import("@angular/core").InputSignal<string | null>;
|
|
8
|
+
suffix: import("@angular/core").InputSignal<string | null>;
|
|
9
|
+
behavior: PasswordBehavior;
|
|
8
10
|
computedType: import("@angular/core").Signal<TextInputType>;
|
|
9
11
|
onInput(event: Event): void;
|
|
10
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<MatInputTextComponent, never>;
|
|
11
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MatInputTextComponent, "nmf-mat-text", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, ["
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MatInputTextComponent, "nmf-mat-text", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; }, {}, never, ["[nmfPrefix]", "[nmfSuffix]"], true, never>;
|
|
12
14
|
}
|
|
13
15
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-modular-forms/material",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Reusable Angular Material form controls with typed reactive forms, built-in ControlValueAccessor support, and enterprise-ready form patterns.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@angular/material": ">=19.0.0 <22.0.0",
|
|
43
43
|
"@angular/cdk": ">=19.0.0 <22.0.0",
|
|
44
44
|
"rxjs": ">=7 <8",
|
|
45
|
-
"@ng-modular-forms/core": "^0.
|
|
45
|
+
"@ng-modular-forms/core": "^0.9.0"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"tslib": "^2.6.0"
|
package/public-api.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export * from './lib/base/mat-form-control-base';
|
|
2
|
-
export * from './lib/controls/currency/currency.component';
|
|
3
2
|
export * from './lib/controls/datepicker/datepicker.component';
|
|
4
3
|
export * from './lib/controls/number/number.component';
|
|
5
4
|
export * from './lib/controls/lookup/lookup.component';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { CurrencyBehavior } from '@ng-modular-forms/core';
|
|
2
|
-
import { MatFormControlBase } from '../../base/mat-form-control-base';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class MatInputCurrencyComponent extends MatFormControlBase<number | null> {
|
|
5
|
-
behavior: CurrencyBehavior;
|
|
6
|
-
private readonly displayValue;
|
|
7
|
-
writeValue(value: number | null): void;
|
|
8
|
-
handleKeyDown(event: KeyboardEvent): void;
|
|
9
|
-
onInput(event: Event): void;
|
|
10
|
-
textColor: import("@angular/core").Signal<"" | "red">;
|
|
11
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MatInputCurrencyComponent, never>;
|
|
12
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MatInputCurrencyComponent, "nmf-mat-currency", never, {}, {}, never, ["*"], true, never>;
|
|
13
|
-
}
|