@ng-modular-forms/material 0.9.5 → 0.10.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/fesm2022/ng-modular-forms-material.mjs +132 -66
- package/fesm2022/ng-modular-forms-material.mjs.map +1 -1
- package/lib/base/mat-form-control-base.d.ts +7 -2
- package/lib/controls/lookup/lookup.component.d.ts +0 -1
- package/lib/controls/number/number.component.d.ts +0 -1
- package/package.json +2 -2
|
@@ -3,7 +3,8 @@ import { InjectionToken, inject, input, computed, Directive, ChangeDetectionStra
|
|
|
3
3
|
import * as i3 from '@angular/forms';
|
|
4
4
|
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import { FormControlBase, NumberBehavior, parseNumber, formatNumber, LookupBehavior, PasswordBehavior } from '@ng-modular-forms/core';
|
|
6
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
|
+
import { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
7
8
|
import { MatNativeDateModule } from '@angular/material/core';
|
|
8
9
|
import * as i4 from '@angular/material/datepicker';
|
|
9
10
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
@@ -17,10 +18,8 @@ import * as i4$1 from '@angular/material/icon';
|
|
|
17
18
|
import { MatIconModule } from '@angular/material/icon';
|
|
18
19
|
import * as i5$1 from '@angular/material/button';
|
|
19
20
|
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
|
-
import { startWith } from 'rxjs';
|
|
24
23
|
import * as i5$2 from '@angular/material/select';
|
|
25
24
|
import { MatSelectModule } from '@angular/material/select';
|
|
26
25
|
import * as i4$2 from '@angular/material/timepicker';
|
|
@@ -56,23 +55,45 @@ function provideNmfMaterialConfig(config) {
|
|
|
56
55
|
|
|
57
56
|
class MatFormControlBase extends FormControlBase {
|
|
58
57
|
materialConfig = inject(NMF_MATERIAL_CONFIG);
|
|
58
|
+
materialDefaults = inject(MAT_FORM_FIELD_DEFAULT_OPTIONS, {
|
|
59
|
+
optional: true,
|
|
60
|
+
});
|
|
59
61
|
_detachLabel = input(this.materialConfig.detachLabels ?? false, {
|
|
60
62
|
alias: 'detachLabel',
|
|
61
63
|
});
|
|
62
|
-
_appearance = input(this.materialConfig.appearance ??
|
|
64
|
+
_appearance = input(this.materialConfig.appearance ??
|
|
65
|
+
this.materialDefaults?.appearance ??
|
|
66
|
+
'outline', {
|
|
63
67
|
alias: 'appearance',
|
|
64
68
|
});
|
|
65
|
-
_shouldLabelFloat = input(this.materialConfig.floatLabel ??
|
|
69
|
+
_shouldLabelFloat = input(this.materialConfig.floatLabel ??
|
|
70
|
+
this.materialDefaults?.floatLabel ??
|
|
71
|
+
'auto', {
|
|
66
72
|
alias: 'shouldLabelFloat',
|
|
67
73
|
});
|
|
74
|
+
_hideRequiredMarker = input(this.materialConfig.hideRequiredMarker ??
|
|
75
|
+
this.materialDefaults?.hideRequiredMarker ??
|
|
76
|
+
false, {
|
|
77
|
+
alias: 'hideRequiredMarker',
|
|
78
|
+
});
|
|
68
79
|
detachLabel = computed(() => this._detachLabel() ?? this.materialConfig.detachLabels);
|
|
69
80
|
appearance = computed(() => this._appearance() ?? this.materialConfig.appearance);
|
|
70
81
|
shouldLabelFloat = computed(() => this._shouldLabelFloat() ?? this.materialConfig.floatLabel);
|
|
82
|
+
hideRequiredMarker = computed(() => this._hideRequiredMarker() ??
|
|
83
|
+
this.materialConfig.hideRequiredMarker ??
|
|
84
|
+
false);
|
|
85
|
+
/*
|
|
86
|
+
* Slots are prefix and suffix elements. They should only be shown under these conditions.
|
|
87
|
+
*/
|
|
88
|
+
showSlots = computed(() => this.focused() || this.value() != null);
|
|
71
89
|
// Purely a state carrier for mat-form-field, never drives value or internal state
|
|
72
90
|
displayControl = new FormControl({
|
|
73
91
|
value: null,
|
|
74
92
|
disabled: false,
|
|
75
93
|
});
|
|
94
|
+
displayValue = toSignal(this.displayControl.valueChanges, {
|
|
95
|
+
initialValue: this.displayControl.value,
|
|
96
|
+
});
|
|
76
97
|
writeValue(value) {
|
|
77
98
|
super.writeValue(value);
|
|
78
99
|
this.displayControl.setValue(value, {
|
|
@@ -103,10 +124,11 @@ class MatFormControlBase extends FormControlBase {
|
|
|
103
124
|
this.displayControl.setErrors(control.errors);
|
|
104
125
|
}
|
|
105
126
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatFormControlBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
106
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: MatFormControlBase, isStandalone: true, inputs: { _detachLabel: { classPropertyName: "_detachLabel", publicName: "detachLabel", isSignal: true, isRequired: false, transformFunction: null }, _appearance: { classPropertyName: "_appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, _shouldLabelFloat: { classPropertyName: "_shouldLabelFloat", publicName: "shouldLabelFloat", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
127
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: MatFormControlBase, isStandalone: true, inputs: { _detachLabel: { classPropertyName: "_detachLabel", publicName: "detachLabel", isSignal: true, isRequired: false, transformFunction: null }, _appearance: { classPropertyName: "_appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, _shouldLabelFloat: { classPropertyName: "_shouldLabelFloat", publicName: "shouldLabelFloat", isSignal: true, isRequired: false, transformFunction: null }, _hideRequiredMarker: { classPropertyName: "_hideRequiredMarker", publicName: "hideRequiredMarker", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
107
128
|
}
|
|
108
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: MatFormControlBase, decorators: [{
|
|
109
|
-
type: Directive
|
|
130
|
+
type: Directive,
|
|
131
|
+
args: [{}]
|
|
110
132
|
}] });
|
|
111
133
|
|
|
112
134
|
class MatInputDatepickerComponent extends MatFormControlBase {
|
|
@@ -134,6 +156,7 @@ class MatInputDatepickerComponent extends MatFormControlBase {
|
|
|
134
156
|
class="nmf-mat-field"
|
|
135
157
|
[appearance]="appearance()"
|
|
136
158
|
[floatLabel]="shouldLabelFloat()"
|
|
159
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
137
160
|
>
|
|
138
161
|
@if (translatedLabel() && !detachLabel()) {
|
|
139
162
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -152,7 +175,8 @@ class MatInputDatepickerComponent extends MatFormControlBase {
|
|
|
152
175
|
[placeholder]="placeholder()"
|
|
153
176
|
[autocomplete]="autocompleteAttr()"
|
|
154
177
|
[formControl]="displayControl"
|
|
155
|
-
(blur)="
|
|
178
|
+
(blur)="onFocusOut()"
|
|
179
|
+
(focus)="onFocusIn()"
|
|
156
180
|
(dateInput)="onInput($event)"
|
|
157
181
|
(dateChange)="onInput($event)"
|
|
158
182
|
/>
|
|
@@ -183,8 +207,10 @@ class MatInputDatepickerComponent extends MatFormControlBase {
|
|
|
183
207
|
></mat-spinner>
|
|
184
208
|
}
|
|
185
209
|
|
|
186
|
-
@if (
|
|
187
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
210
|
+
@if (translatedHintLabel()) {
|
|
211
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
212
|
+
translatedHintLabel()
|
|
213
|
+
}}</mat-hint>
|
|
188
214
|
}
|
|
189
215
|
|
|
190
216
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -214,6 +240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
214
240
|
class="nmf-mat-field"
|
|
215
241
|
[appearance]="appearance()"
|
|
216
242
|
[floatLabel]="shouldLabelFloat()"
|
|
243
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
217
244
|
>
|
|
218
245
|
@if (translatedLabel() && !detachLabel()) {
|
|
219
246
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -232,7 +259,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
232
259
|
[placeholder]="placeholder()"
|
|
233
260
|
[autocomplete]="autocompleteAttr()"
|
|
234
261
|
[formControl]="displayControl"
|
|
235
|
-
(blur)="
|
|
262
|
+
(blur)="onFocusOut()"
|
|
263
|
+
(focus)="onFocusIn()"
|
|
236
264
|
(dateInput)="onInput($event)"
|
|
237
265
|
(dateChange)="onInput($event)"
|
|
238
266
|
/>
|
|
@@ -263,8 +291,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
263
291
|
></mat-spinner>
|
|
264
292
|
}
|
|
265
293
|
|
|
266
|
-
@if (
|
|
267
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
294
|
+
@if (translatedHintLabel()) {
|
|
295
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
296
|
+
translatedHintLabel()
|
|
297
|
+
}}</mat-hint>
|
|
268
298
|
}
|
|
269
299
|
|
|
270
300
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -280,9 +310,6 @@ class MatInputNumberComponent extends MatFormControlBase {
|
|
|
280
310
|
allowNegative = input(true);
|
|
281
311
|
negativeColor = input('#dc2626');
|
|
282
312
|
numberBehavior = new NumberBehavior();
|
|
283
|
-
displayValue = toSignal(this.displayControl.valueChanges, {
|
|
284
|
-
initialValue: this.displayControl.value,
|
|
285
|
-
});
|
|
286
313
|
textColor = computed(() => {
|
|
287
314
|
const value = this.displayValue();
|
|
288
315
|
if (value == null ||
|
|
@@ -327,12 +354,13 @@ class MatInputNumberComponent extends MatFormControlBase {
|
|
|
327
354
|
class="nmf-mat-field"
|
|
328
355
|
[appearance]="appearance()"
|
|
329
356
|
[floatLabel]="shouldLabelFloat()"
|
|
357
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
330
358
|
>
|
|
331
359
|
@if (translatedLabel() && !detachLabel()) {
|
|
332
360
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
333
361
|
}
|
|
334
362
|
|
|
335
|
-
@if (
|
|
363
|
+
@if (showSlots()) {
|
|
336
364
|
<div class="nmf-mat-prefix-slot">
|
|
337
365
|
@if (prefix() != null) {
|
|
338
366
|
<span>{{ prefix() }}</span>
|
|
@@ -354,12 +382,12 @@ class MatInputNumberComponent extends MatFormControlBase {
|
|
|
354
382
|
[placeholder]="translatedPlaceholder()"
|
|
355
383
|
[autocomplete]="autocompleteAttr()"
|
|
356
384
|
[formControl]="displayControl"
|
|
357
|
-
(blur)="
|
|
358
|
-
(focus)="
|
|
385
|
+
(blur)="onFocusOut()"
|
|
386
|
+
(focus)="onFocusIn()"
|
|
359
387
|
(input)="onInput($event)"
|
|
360
388
|
/>
|
|
361
389
|
|
|
362
|
-
@if (
|
|
390
|
+
@if (showSlots()) {
|
|
363
391
|
<div class="nmf-mat-suffix-slot">
|
|
364
392
|
@if (suffix() != null) {
|
|
365
393
|
<span>{{ suffix() }}</span>
|
|
@@ -377,8 +405,10 @@ class MatInputNumberComponent extends MatFormControlBase {
|
|
|
377
405
|
></mat-spinner>
|
|
378
406
|
}
|
|
379
407
|
|
|
380
|
-
@if (
|
|
381
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
408
|
+
@if (translatedHintLabel()) {
|
|
409
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
410
|
+
translatedHintLabel()
|
|
411
|
+
}}</mat-hint>
|
|
382
412
|
}
|
|
383
413
|
|
|
384
414
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -408,12 +438,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
408
438
|
class="nmf-mat-field"
|
|
409
439
|
[appearance]="appearance()"
|
|
410
440
|
[floatLabel]="shouldLabelFloat()"
|
|
441
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
411
442
|
>
|
|
412
443
|
@if (translatedLabel() && !detachLabel()) {
|
|
413
444
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
414
445
|
}
|
|
415
446
|
|
|
416
|
-
@if (
|
|
447
|
+
@if (showSlots()) {
|
|
417
448
|
<div class="nmf-mat-prefix-slot">
|
|
418
449
|
@if (prefix() != null) {
|
|
419
450
|
<span>{{ prefix() }}</span>
|
|
@@ -435,12 +466,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
435
466
|
[placeholder]="translatedPlaceholder()"
|
|
436
467
|
[autocomplete]="autocompleteAttr()"
|
|
437
468
|
[formControl]="displayControl"
|
|
438
|
-
(blur)="
|
|
439
|
-
(focus)="
|
|
469
|
+
(blur)="onFocusOut()"
|
|
470
|
+
(focus)="onFocusIn()"
|
|
440
471
|
(input)="onInput($event)"
|
|
441
472
|
/>
|
|
442
473
|
|
|
443
|
-
@if (
|
|
474
|
+
@if (showSlots()) {
|
|
444
475
|
<div class="nmf-mat-suffix-slot">
|
|
445
476
|
@if (suffix() != null) {
|
|
446
477
|
<span>{{ suffix() }}</span>
|
|
@@ -458,8 +489,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
458
489
|
></mat-spinner>
|
|
459
490
|
}
|
|
460
491
|
|
|
461
|
-
@if (
|
|
462
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
492
|
+
@if (translatedHintLabel()) {
|
|
493
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
494
|
+
translatedHintLabel()
|
|
495
|
+
}}</mat-hint>
|
|
463
496
|
}
|
|
464
497
|
|
|
465
498
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -503,7 +536,6 @@ class MatInputLookupComponent extends MatFormControlBase {
|
|
|
503
536
|
* Search will not be triggered until the user has typed at least this many characters.
|
|
504
537
|
*/
|
|
505
538
|
searchThreshold = input(2);
|
|
506
|
-
searchQuery = toSignal(this.displayControl.valueChanges.pipe(startWith(this.displayControl.value)));
|
|
507
539
|
translatedEmptyOptionsLabel = computed(() => this.translate(this.emptyOptionsLabel()));
|
|
508
540
|
behavior;
|
|
509
541
|
constructor() {
|
|
@@ -528,7 +560,7 @@ class MatInputLookupComponent extends MatFormControlBase {
|
|
|
528
560
|
}
|
|
529
561
|
ngOnInit() {
|
|
530
562
|
super.ngOnInit();
|
|
531
|
-
this.behavior.setupFilteredOptions(this.displayControl.valueChanges, this.
|
|
563
|
+
this.behavior.setupFilteredOptions(this.displayControl.valueChanges, this.displayValue);
|
|
532
564
|
this.behavior.setupOptionsProvider(this.displayControl.valueChanges, 500, 2);
|
|
533
565
|
}
|
|
534
566
|
writeValue(value) {
|
|
@@ -560,6 +592,7 @@ class MatInputLookupComponent extends MatFormControlBase {
|
|
|
560
592
|
class="nmf-mat-field"
|
|
561
593
|
[appearance]="appearance()"
|
|
562
594
|
[floatLabel]="shouldLabelFloat()"
|
|
595
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
563
596
|
>
|
|
564
597
|
@if (translatedLabel() && !detachLabel()) {
|
|
565
598
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -579,7 +612,8 @@ class MatInputLookupComponent extends MatFormControlBase {
|
|
|
579
612
|
[placeholder]="translatedPlaceholder()"
|
|
580
613
|
[formControl]="displayControl"
|
|
581
614
|
[matAutocomplete]="auto"
|
|
582
|
-
(blur)="
|
|
615
|
+
(blur)="onFocusOut()"
|
|
616
|
+
(focus)="onFocusIn()"
|
|
583
617
|
/>
|
|
584
618
|
|
|
585
619
|
<mat-autocomplete
|
|
@@ -594,9 +628,9 @@ class MatInputLookupComponent extends MatFormControlBase {
|
|
|
594
628
|
|
|
595
629
|
@if (behavior.status() === 'empty') {
|
|
596
630
|
<mat-hint>{{ translatedEmptyOptionsLabel() }}</mat-hint>
|
|
597
|
-
} @else if (
|
|
631
|
+
} @else if (translatedHintLabel()) {
|
|
598
632
|
<mat-hint [ngClass]="hintClassList()">{{
|
|
599
|
-
|
|
633
|
+
translatedHintLabel()
|
|
600
634
|
}}</mat-hint>
|
|
601
635
|
}
|
|
602
636
|
|
|
@@ -653,6 +687,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
653
687
|
class="nmf-mat-field"
|
|
654
688
|
[appearance]="appearance()"
|
|
655
689
|
[floatLabel]="shouldLabelFloat()"
|
|
690
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
656
691
|
>
|
|
657
692
|
@if (translatedLabel() && !detachLabel()) {
|
|
658
693
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -672,7 +707,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
672
707
|
[placeholder]="translatedPlaceholder()"
|
|
673
708
|
[formControl]="displayControl"
|
|
674
709
|
[matAutocomplete]="auto"
|
|
675
|
-
(blur)="
|
|
710
|
+
(blur)="onFocusOut()"
|
|
711
|
+
(focus)="onFocusIn()"
|
|
676
712
|
/>
|
|
677
713
|
|
|
678
714
|
<mat-autocomplete
|
|
@@ -687,9 +723,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
687
723
|
|
|
688
724
|
@if (behavior.status() === 'empty') {
|
|
689
725
|
<mat-hint>{{ translatedEmptyOptionsLabel() }}</mat-hint>
|
|
690
|
-
} @else if (
|
|
726
|
+
} @else if (translatedHintLabel()) {
|
|
691
727
|
<mat-hint [ngClass]="hintClassList()">{{
|
|
692
|
-
|
|
728
|
+
translatedHintLabel()
|
|
693
729
|
}}</mat-hint>
|
|
694
730
|
}
|
|
695
731
|
|
|
@@ -744,6 +780,7 @@ class MatInputSelectComponent extends MatFormControlBase {
|
|
|
744
780
|
class="nmf-mat-field"
|
|
745
781
|
[appearance]="appearance()"
|
|
746
782
|
[floatLabel]="shouldLabelFloat()"
|
|
783
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
747
784
|
>
|
|
748
785
|
@if (translatedLabel() && !detachLabel()) {
|
|
749
786
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -757,7 +794,8 @@ class MatInputSelectComponent extends MatFormControlBase {
|
|
|
757
794
|
[required]="isRequired()"
|
|
758
795
|
[placeholder]="translatedEmptyOptionLabel()"
|
|
759
796
|
[formControl]="displayControl"
|
|
760
|
-
(blur)="
|
|
797
|
+
(blur)="onFocusOut()"
|
|
798
|
+
(focus)="onFocusIn()"
|
|
761
799
|
(selectionChange)="onSelectionChange($event)"
|
|
762
800
|
>
|
|
763
801
|
<mat-option [value]="''" [disabled]="!allowEmptyOptionSelection()">
|
|
@@ -781,8 +819,10 @@ class MatInputSelectComponent extends MatFormControlBase {
|
|
|
781
819
|
></mat-spinner>
|
|
782
820
|
}
|
|
783
821
|
|
|
784
|
-
@if (
|
|
785
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
822
|
+
@if (translatedHintLabel()) {
|
|
823
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
824
|
+
translatedHintLabel()
|
|
825
|
+
}}</mat-hint>
|
|
786
826
|
}
|
|
787
827
|
|
|
788
828
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -806,6 +846,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
806
846
|
class="nmf-mat-field"
|
|
807
847
|
[appearance]="appearance()"
|
|
808
848
|
[floatLabel]="shouldLabelFloat()"
|
|
849
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
809
850
|
>
|
|
810
851
|
@if (translatedLabel() && !detachLabel()) {
|
|
811
852
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -819,7 +860,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
819
860
|
[required]="isRequired()"
|
|
820
861
|
[placeholder]="translatedEmptyOptionLabel()"
|
|
821
862
|
[formControl]="displayControl"
|
|
822
|
-
(blur)="
|
|
863
|
+
(blur)="onFocusOut()"
|
|
864
|
+
(focus)="onFocusIn()"
|
|
823
865
|
(selectionChange)="onSelectionChange($event)"
|
|
824
866
|
>
|
|
825
867
|
<mat-option [value]="''" [disabled]="!allowEmptyOptionSelection()">
|
|
@@ -843,8 +885,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
843
885
|
></mat-spinner>
|
|
844
886
|
}
|
|
845
887
|
|
|
846
|
-
@if (
|
|
847
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
888
|
+
@if (translatedHintLabel()) {
|
|
889
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
890
|
+
translatedHintLabel()
|
|
891
|
+
}}</mat-hint>
|
|
848
892
|
}
|
|
849
893
|
|
|
850
894
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -875,12 +919,13 @@ class MatInputTextComponent extends MatFormControlBase {
|
|
|
875
919
|
class="nmf-mat-field"
|
|
876
920
|
[appearance]="appearance()"
|
|
877
921
|
[floatLabel]="shouldLabelFloat()"
|
|
922
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
878
923
|
>
|
|
879
924
|
@if (translatedLabel() && !detachLabel()) {
|
|
880
925
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
881
926
|
}
|
|
882
927
|
|
|
883
|
-
@if (
|
|
928
|
+
@if (showSlots()) {
|
|
884
929
|
<div class="nmf-mat-prefix-slot">
|
|
885
930
|
@if (prefix() != null) {
|
|
886
931
|
<span>{{ prefix() }}</span>
|
|
@@ -900,12 +945,12 @@ class MatInputTextComponent extends MatFormControlBase {
|
|
|
900
945
|
[placeholder]="translatedPlaceholder()"
|
|
901
946
|
[autocomplete]="autocompleteAttr()"
|
|
902
947
|
[formControl]="displayControl"
|
|
903
|
-
(blur)="
|
|
904
|
-
(focus)="
|
|
948
|
+
(blur)="onFocusOut()"
|
|
949
|
+
(focus)="onFocusIn()"
|
|
905
950
|
(input)="onInput($event)"
|
|
906
951
|
/>
|
|
907
952
|
|
|
908
|
-
@if (
|
|
953
|
+
@if (showSlots()) {
|
|
909
954
|
<div class="nmf-mat-suffix-slot">
|
|
910
955
|
@if (suffix() != null) {
|
|
911
956
|
<span>{{ suffix() }}</span>
|
|
@@ -923,8 +968,10 @@ class MatInputTextComponent extends MatFormControlBase {
|
|
|
923
968
|
></mat-spinner>
|
|
924
969
|
}
|
|
925
970
|
|
|
926
|
-
@if (
|
|
927
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
971
|
+
@if (translatedHintLabel()) {
|
|
972
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
973
|
+
translatedHintLabel()
|
|
974
|
+
}}</mat-hint>
|
|
928
975
|
}
|
|
929
976
|
|
|
930
977
|
@if (type() === 'password' && !loading()) {
|
|
@@ -969,12 +1016,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
969
1016
|
class="nmf-mat-field"
|
|
970
1017
|
[appearance]="appearance()"
|
|
971
1018
|
[floatLabel]="shouldLabelFloat()"
|
|
1019
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
972
1020
|
>
|
|
973
1021
|
@if (translatedLabel() && !detachLabel()) {
|
|
974
1022
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
975
1023
|
}
|
|
976
1024
|
|
|
977
|
-
@if (
|
|
1025
|
+
@if (showSlots()) {
|
|
978
1026
|
<div class="nmf-mat-prefix-slot">
|
|
979
1027
|
@if (prefix() != null) {
|
|
980
1028
|
<span>{{ prefix() }}</span>
|
|
@@ -994,12 +1042,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
994
1042
|
[placeholder]="translatedPlaceholder()"
|
|
995
1043
|
[autocomplete]="autocompleteAttr()"
|
|
996
1044
|
[formControl]="displayControl"
|
|
997
|
-
(blur)="
|
|
998
|
-
(focus)="
|
|
1045
|
+
(blur)="onFocusOut()"
|
|
1046
|
+
(focus)="onFocusIn()"
|
|
999
1047
|
(input)="onInput($event)"
|
|
1000
1048
|
/>
|
|
1001
1049
|
|
|
1002
|
-
@if (
|
|
1050
|
+
@if (showSlots()) {
|
|
1003
1051
|
<div class="nmf-mat-suffix-slot">
|
|
1004
1052
|
@if (suffix() != null) {
|
|
1005
1053
|
<span>{{ suffix() }}</span>
|
|
@@ -1017,8 +1065,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1017
1065
|
></mat-spinner>
|
|
1018
1066
|
}
|
|
1019
1067
|
|
|
1020
|
-
@if (
|
|
1021
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
1068
|
+
@if (translatedHintLabel()) {
|
|
1069
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
1070
|
+
translatedHintLabel()
|
|
1071
|
+
}}</mat-hint>
|
|
1022
1072
|
}
|
|
1023
1073
|
|
|
1024
1074
|
@if (type() === 'password' && !loading()) {
|
|
@@ -1060,6 +1110,7 @@ class MatInputTextareaComponent extends MatFormControlBase {
|
|
|
1060
1110
|
class="nmf-mat-field"
|
|
1061
1111
|
[appearance]="appearance()"
|
|
1062
1112
|
[floatLabel]="shouldLabelFloat()"
|
|
1113
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
1063
1114
|
>
|
|
1064
1115
|
@if (translatedLabel() && !detachLabel()) {
|
|
1065
1116
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -1075,7 +1126,8 @@ class MatInputTextareaComponent extends MatFormControlBase {
|
|
|
1075
1126
|
[placeholder]="translatedPlaceholder()"
|
|
1076
1127
|
[autocomplete]="autocompleteAttr()"
|
|
1077
1128
|
[formControl]="displayControl"
|
|
1078
|
-
(blur)="
|
|
1129
|
+
(blur)="onFocusOut()"
|
|
1130
|
+
(focus)="onFocusIn()"
|
|
1079
1131
|
(input)="onInput($event)"
|
|
1080
1132
|
></textarea>
|
|
1081
1133
|
|
|
@@ -1088,8 +1140,10 @@ class MatInputTextareaComponent extends MatFormControlBase {
|
|
|
1088
1140
|
></mat-spinner>
|
|
1089
1141
|
}
|
|
1090
1142
|
|
|
1091
|
-
@if (
|
|
1092
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
1143
|
+
@if (translatedHintLabel()) {
|
|
1144
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
1145
|
+
translatedHintLabel()
|
|
1146
|
+
}}</mat-hint>
|
|
1093
1147
|
}
|
|
1094
1148
|
|
|
1095
1149
|
<mat-error>
|
|
@@ -1119,6 +1173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1119
1173
|
class="nmf-mat-field"
|
|
1120
1174
|
[appearance]="appearance()"
|
|
1121
1175
|
[floatLabel]="shouldLabelFloat()"
|
|
1176
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
1122
1177
|
>
|
|
1123
1178
|
@if (translatedLabel() && !detachLabel()) {
|
|
1124
1179
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -1134,7 +1189,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1134
1189
|
[placeholder]="translatedPlaceholder()"
|
|
1135
1190
|
[autocomplete]="autocompleteAttr()"
|
|
1136
1191
|
[formControl]="displayControl"
|
|
1137
|
-
(blur)="
|
|
1192
|
+
(blur)="onFocusOut()"
|
|
1193
|
+
(focus)="onFocusIn()"
|
|
1138
1194
|
(input)="onInput($event)"
|
|
1139
1195
|
></textarea>
|
|
1140
1196
|
|
|
@@ -1147,8 +1203,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1147
1203
|
></mat-spinner>
|
|
1148
1204
|
}
|
|
1149
1205
|
|
|
1150
|
-
@if (
|
|
1151
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
1206
|
+
@if (translatedHintLabel()) {
|
|
1207
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
1208
|
+
translatedHintLabel()
|
|
1209
|
+
}}</mat-hint>
|
|
1152
1210
|
}
|
|
1153
1211
|
|
|
1154
1212
|
<mat-error>
|
|
@@ -1183,6 +1241,7 @@ class MatInputTimepickerComponent extends MatFormControlBase {
|
|
|
1183
1241
|
class="nmf-mat-field"
|
|
1184
1242
|
[appearance]="appearance()"
|
|
1185
1243
|
[floatLabel]="shouldLabelFloat()"
|
|
1244
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
1186
1245
|
>
|
|
1187
1246
|
@if (translatedLabel() && !detachLabel()) {
|
|
1188
1247
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -1200,7 +1259,8 @@ class MatInputTimepickerComponent extends MatFormControlBase {
|
|
|
1200
1259
|
[placeholder]="translatedPlaceholder()"
|
|
1201
1260
|
[autocomplete]="autocompleteAttr()"
|
|
1202
1261
|
[formControl]="displayControl"
|
|
1203
|
-
(blur)="
|
|
1262
|
+
(blur)="onFocusOut()"
|
|
1263
|
+
(focus)="onFocusIn()"
|
|
1204
1264
|
(input)="onInput($event)"
|
|
1205
1265
|
/>
|
|
1206
1266
|
|
|
@@ -1228,8 +1288,10 @@ class MatInputTimepickerComponent extends MatFormControlBase {
|
|
|
1228
1288
|
></mat-spinner>
|
|
1229
1289
|
}
|
|
1230
1290
|
|
|
1231
|
-
@if (
|
|
1232
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
1291
|
+
@if (translatedHintLabel()) {
|
|
1292
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
1293
|
+
translatedHintLabel()
|
|
1294
|
+
}}</mat-hint>
|
|
1233
1295
|
}
|
|
1234
1296
|
|
|
1235
1297
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -1259,6 +1321,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1259
1321
|
class="nmf-mat-field"
|
|
1260
1322
|
[appearance]="appearance()"
|
|
1261
1323
|
[floatLabel]="shouldLabelFloat()"
|
|
1324
|
+
[hideRequiredMarker]="hideRequiredMarker()"
|
|
1262
1325
|
>
|
|
1263
1326
|
@if (translatedLabel() && !detachLabel()) {
|
|
1264
1327
|
<mat-label>{{ translatedLabel() }}</mat-label>
|
|
@@ -1276,7 +1339,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1276
1339
|
[placeholder]="translatedPlaceholder()"
|
|
1277
1340
|
[autocomplete]="autocompleteAttr()"
|
|
1278
1341
|
[formControl]="displayControl"
|
|
1279
|
-
(blur)="
|
|
1342
|
+
(blur)="onFocusOut()"
|
|
1343
|
+
(focus)="onFocusIn()"
|
|
1280
1344
|
(input)="onInput($event)"
|
|
1281
1345
|
/>
|
|
1282
1346
|
|
|
@@ -1304,8 +1368,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1304
1368
|
></mat-spinner>
|
|
1305
1369
|
}
|
|
1306
1370
|
|
|
1307
|
-
@if (
|
|
1308
|
-
<mat-hint [ngClass]="hintClassList()">{{
|
|
1371
|
+
@if (translatedHintLabel()) {
|
|
1372
|
+
<mat-hint [ngClass]="hintClassList()">{{
|
|
1373
|
+
translatedHintLabel()
|
|
1374
|
+
}}</mat-hint>
|
|
1309
1375
|
}
|
|
1310
1376
|
|
|
1311
1377
|
<mat-error>{{ translatedErrorMessage() }}</mat-error>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-modular-forms-material.mjs","sources":["../../../projects/material/src/lib/providers/mat-config.provider.ts","../../../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":["// @ng-modular-forms/material\nimport { InjectionToken, Provider } from '@angular/core';\nimport {\n FloatLabelType,\n MatFormFieldAppearance,\n} from '@angular/material/form-field';\n\nexport interface NmfMaterialConfig {\n appearance?: MatFormFieldAppearance;\n floatLabel?: FloatLabelType;\n detachLabels?: boolean;\n hideRequiredMarker?: boolean;\n}\n\nconst MATERIAL_DEFAULTS: Required<NmfMaterialConfig> = {\n appearance: 'outline',\n floatLabel: 'auto',\n detachLabels: false,\n hideRequiredMarker: false,\n};\n\nexport const NMF_MATERIAL_CONFIG = new InjectionToken<NmfMaterialConfig>(\n 'NMF_MATERIAL_CONFIG',\n {\n factory: () => {\n return {\n ...MATERIAL_DEFAULTS,\n };\n },\n },\n);\n\nexport function provideNmfMaterialConfig(\n config: Partial<NmfMaterialConfig>,\n): Provider[] {\n return [\n {\n provide: NMF_MATERIAL_CONFIG,\n useFactory: () => {\n return {\n ...MATERIAL_DEFAULTS,\n ...config,\n };\n },\n },\n ];\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FormControlBase } from '@ng-modular-forms/core';\nimport { NMF_MATERIAL_CONFIG } from '../providers/mat-config.provider';\nimport {\n FloatLabelType,\n MatFormFieldAppearance,\n} from '@angular/material/form-field';\n\n@Directive()\nexport abstract class MatFormControlBase<\n TValue,\n TDisplayValue = string,\n> extends FormControlBase<TValue> {\n private readonly materialConfig = inject(NMF_MATERIAL_CONFIG);\n\n readonly _detachLabel = input<boolean>(\n this.materialConfig.detachLabels ?? false,\n {\n alias: 'detachLabel',\n },\n );\n\n readonly _appearance = input<MatFormFieldAppearance>(\n this.materialConfig.appearance ?? 'outline',\n {\n alias: 'appearance',\n },\n );\n\n readonly _shouldLabelFloat = input<FloatLabelType>(\n this.materialConfig.floatLabel ?? 'auto',\n {\n alias: 'shouldLabelFloat',\n },\n );\n\n readonly detachLabel = computed(\n () => this._detachLabel() ?? this.materialConfig.detachLabels,\n );\n\n readonly appearance = computed(\n () => this._appearance() ?? this.materialConfig.appearance,\n );\n\n readonly shouldLabelFloat = computed(\n () => this._shouldLabelFloat() ?? this.materialConfig.floatLabel,\n );\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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 (translatedHint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ translatedHint() }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</mat-label>\n }\n\n @if (focused()) {\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\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]=\"translatedPlaceholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"blur()\"\n (focus)=\"focus()\"\n (input)=\"onInput($event)\"\n />\n\n @if (focused()) {\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\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()\">{{ translatedHint() }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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 computed,\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <div class=\"relative\">\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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() ? translatedLabel() : null\"\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [required]=\"isRequired()\"\n [readonly]=\"behavior.selectedOption() != null\"\n [placeholder]=\"translatedPlaceholder()\"\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>{{ translatedEmptyOptionsLabel() }}</mat-hint>\n } @else if (hint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHint()\n }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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 readonly translatedEmptyOptionsLabel = computed(() =>\n this.translate(this.emptyOptionsLabel()),\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 computed,\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 changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n :host {\n display: block;\n flex-basis: 160px; /* Default baseline */\n flex-shrink: 1; /* Allows size changes by the parent */\n }\n `,\n ],\n template: `\n @if (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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]=\"translatedEmptyOptionLabel()\"\n [formControl]=\"displayControl\"\n (blur)=\"onTouched()\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <mat-option [value]=\"''\" [disabled]=\"!allowEmptyOptionSelection()\">\n {{ translatedEmptyOptionLabel() }}\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()\">{{ translatedHint() }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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 readonly translatedEmptyOptionLabel = computed(() =>\n this.translate(this.emptyOptionLabel()),\n );\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</mat-label>\n }\n\n @if (focused()) {\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\n <input\n #focusable\n matInput\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [type]=\"computedType()\"\n [required]=\"isRequired()\"\n [placeholder]=\"translatedPlaceholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"blur()\"\n (focus)=\"focus()\"\n (input)=\"onInput($event)\"\n />\n\n @if (focused()) {\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\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()\">{{ translatedHint() }}</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>{{ translatedErrorMessage() }}</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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</mat-label>\n }\n\n <textarea\n #focusable\n matInput\n [id]=\"id()\"\n [rows]=\"rows()\"\n [cols]=\"cols()\"\n [required]=\"isRequired()\"\n [placeholder]=\"translatedPlaceholder()\"\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()\">{{ translatedHint() }}</mat-hint>\n }\n\n <mat-error>\n {{ translatedErrorMessage() }}\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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]=\"translatedPlaceholder()\"\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 (translatedHint()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{ translatedHint() }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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\nexport * from './lib/providers/mat-config.provider';\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
|
+
{"version":3,"file":"ng-modular-forms-material.mjs","sources":["../../../projects/material/src/lib/providers/mat-config.provider.ts","../../../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":["// @ng-modular-forms/material\nimport { InjectionToken, Provider } from '@angular/core';\nimport {\n FloatLabelType,\n MatFormFieldAppearance,\n} from '@angular/material/form-field';\n\nexport interface NmfMaterialConfig {\n appearance?: MatFormFieldAppearance;\n floatLabel?: FloatLabelType;\n detachLabels?: boolean;\n hideRequiredMarker?: boolean;\n}\n\nconst MATERIAL_DEFAULTS: Required<NmfMaterialConfig> = {\n appearance: 'outline',\n floatLabel: 'auto',\n detachLabels: false,\n hideRequiredMarker: false,\n};\n\nexport const NMF_MATERIAL_CONFIG = new InjectionToken<NmfMaterialConfig>(\n 'NMF_MATERIAL_CONFIG',\n {\n factory: () => {\n return {\n ...MATERIAL_DEFAULTS,\n };\n },\n },\n);\n\nexport function provideNmfMaterialConfig(\n config: Partial<NmfMaterialConfig>,\n): Provider[] {\n return [\n {\n provide: NMF_MATERIAL_CONFIG,\n useFactory: () => {\n return {\n ...MATERIAL_DEFAULTS,\n ...config,\n };\n },\n },\n ];\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FormControlBase } from '@ng-modular-forms/core';\nimport { NMF_MATERIAL_CONFIG } from '../providers/mat-config.provider';\nimport {\n FloatLabelType,\n MAT_FORM_FIELD_DEFAULT_OPTIONS,\n MatFormFieldAppearance,\n} from '@angular/material/form-field';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Directive({})\nexport abstract class MatFormControlBase<\n TValue,\n TDisplayValue = string,\n> extends FormControlBase<TValue> {\n private readonly materialConfig = inject(NMF_MATERIAL_CONFIG);\n private readonly materialDefaults = inject(MAT_FORM_FIELD_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n readonly _detachLabel = input<boolean>(\n this.materialConfig.detachLabels ?? false,\n {\n alias: 'detachLabel',\n },\n );\n\n readonly _appearance = input<MatFormFieldAppearance>(\n this.materialConfig.appearance ??\n this.materialDefaults?.appearance ??\n 'outline',\n {\n alias: 'appearance',\n },\n );\n\n readonly _shouldLabelFloat = input<FloatLabelType>(\n this.materialConfig.floatLabel ??\n this.materialDefaults?.floatLabel ??\n 'auto',\n {\n alias: 'shouldLabelFloat',\n },\n );\n\n readonly _hideRequiredMarker = input<boolean>(\n this.materialConfig.hideRequiredMarker ??\n this.materialDefaults?.hideRequiredMarker ??\n false,\n {\n alias: 'hideRequiredMarker',\n },\n );\n\n readonly detachLabel = computed(\n () => this._detachLabel() ?? this.materialConfig.detachLabels,\n );\n\n readonly appearance = computed(\n () => this._appearance() ?? this.materialConfig.appearance,\n );\n\n readonly shouldLabelFloat = computed(\n () => this._shouldLabelFloat() ?? this.materialConfig.floatLabel,\n );\n\n readonly hideRequiredMarker = computed(\n () =>\n this._hideRequiredMarker() ??\n this.materialConfig.hideRequiredMarker ??\n false,\n );\n\n /*\n * Slots are prefix and suffix elements. They should only be shown under these conditions.\n */\n readonly showSlots = computed(() => this.focused() || this.value() != null);\n\n // Purely a state carrier for mat-form-field, never drives value or internal state\n protected readonly displayControl = new FormControl<TDisplayValue | null>({\n value: null,\n disabled: false,\n });\n\n protected readonly displayValue = toSignal(this.displayControl.valueChanges, {\n initialValue: this.displayControl.value,\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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)=\"onFocusOut()\"\n (focus)=\"onFocusIn()\"\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 (translatedHintLabel()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHintLabel()\n }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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';\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</mat-label>\n }\n\n @if (showSlots()) {\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\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]=\"translatedPlaceholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onFocusOut()\"\n (focus)=\"onFocusIn()\"\n (input)=\"onInput($event)\"\n />\n\n @if (showSlots()) {\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\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 (translatedHintLabel()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHintLabel()\n }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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 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 computed,\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 } from 'rxjs';\nimport { LookupBehavior, LookupOption } from '@ng-modular-forms/core';\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <div class=\"relative\">\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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() ? translatedLabel() : null\"\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [required]=\"isRequired()\"\n [readonly]=\"behavior.selectedOption() != null\"\n [placeholder]=\"translatedPlaceholder()\"\n [formControl]=\"displayControl\"\n [matAutocomplete]=\"auto\"\n (blur)=\"onFocusOut()\"\n (focus)=\"onFocusIn()\"\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>{{ translatedEmptyOptionsLabel() }}</mat-hint>\n } @else if (translatedHintLabel()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHintLabel()\n }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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 readonly translatedEmptyOptionsLabel = computed(() =>\n this.translate(this.emptyOptionsLabel()),\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.displayValue,\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 computed,\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 changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n :host {\n display: block;\n flex-basis: 160px; /* Default baseline */\n flex-shrink: 1; /* Allows size changes by the parent */\n }\n `,\n ],\n template: `\n @if (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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]=\"translatedEmptyOptionLabel()\"\n [formControl]=\"displayControl\"\n (blur)=\"onFocusOut()\"\n (focus)=\"onFocusIn()\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <mat-option [value]=\"''\" [disabled]=\"!allowEmptyOptionSelection()\">\n {{ translatedEmptyOptionLabel() }}\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 (translatedHintLabel()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHintLabel()\n }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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 readonly translatedEmptyOptionLabel = computed(() =>\n this.translate(this.emptyOptionLabel()),\n );\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</mat-label>\n }\n\n @if (showSlots()) {\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\n <input\n #focusable\n matInput\n [ngClass]=\"classList\"\n [id]=\"id()\"\n [name]=\"name()\"\n [type]=\"computedType()\"\n [required]=\"isRequired()\"\n [placeholder]=\"translatedPlaceholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onFocusOut()\"\n (focus)=\"onFocusIn()\"\n (input)=\"onInput($event)\"\n />\n\n @if (showSlots()) {\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\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 (translatedHintLabel()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHintLabel()\n }}</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>{{ translatedErrorMessage() }}</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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</mat-label>\n }\n\n <textarea\n #focusable\n matInput\n [id]=\"id()\"\n [rows]=\"rows()\"\n [cols]=\"cols()\"\n [required]=\"isRequired()\"\n [placeholder]=\"translatedPlaceholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onFocusOut()\"\n (focus)=\"onFocusIn()\"\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 (translatedHintLabel()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHintLabel()\n }}</mat-hint>\n }\n\n <mat-error>\n {{ translatedErrorMessage() }}\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 (translatedLabel() && detachLabel()) {\n <label class=\"nmf-mat-label-detached\">{{ translatedLabel() }}</label>\n }\n\n <mat-form-field\n class=\"nmf-mat-field\"\n [appearance]=\"appearance()\"\n [floatLabel]=\"shouldLabelFloat()\"\n [hideRequiredMarker]=\"hideRequiredMarker()\"\n >\n @if (translatedLabel() && !detachLabel()) {\n <mat-label>{{ translatedLabel() }}</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]=\"translatedPlaceholder()\"\n [autocomplete]=\"autocompleteAttr()\"\n [formControl]=\"displayControl\"\n (blur)=\"onFocusOut()\"\n (focus)=\"onFocusIn()\"\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 (translatedHintLabel()) {\n <mat-hint [ngClass]=\"hintClassList()\">{{\n translatedHintLabel()\n }}</mat-hint>\n }\n\n <mat-error>{{ translatedErrorMessage() }}</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\nexport * from './lib/providers/mat-config.provider';\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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"}
|
|
@@ -4,16 +4,21 @@ import { FloatLabelType, MatFormFieldAppearance } from '@angular/material/form-f
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare abstract class MatFormControlBase<TValue, TDisplayValue = string> extends FormControlBase<TValue> {
|
|
6
6
|
private readonly materialConfig;
|
|
7
|
+
private readonly materialDefaults;
|
|
7
8
|
readonly _detachLabel: import("@angular/core").InputSignal<boolean>;
|
|
8
9
|
readonly _appearance: import("@angular/core").InputSignal<MatFormFieldAppearance>;
|
|
9
10
|
readonly _shouldLabelFloat: import("@angular/core").InputSignal<FloatLabelType>;
|
|
11
|
+
readonly _hideRequiredMarker: import("@angular/core").InputSignal<boolean>;
|
|
10
12
|
readonly detachLabel: import("@angular/core").Signal<boolean>;
|
|
11
13
|
readonly appearance: import("@angular/core").Signal<MatFormFieldAppearance>;
|
|
12
14
|
readonly shouldLabelFloat: import("@angular/core").Signal<FloatLabelType>;
|
|
13
|
-
readonly
|
|
15
|
+
readonly hideRequiredMarker: import("@angular/core").Signal<boolean>;
|
|
16
|
+
readonly showSlots: import("@angular/core").Signal<boolean>;
|
|
17
|
+
protected readonly displayControl: FormControl<TDisplayValue | null>;
|
|
18
|
+
protected readonly displayValue: import("@angular/core").Signal<TDisplayValue | null>;
|
|
14
19
|
writeValue(value: TValue | null): void;
|
|
15
20
|
setDisabledState(isDisabled: boolean): void;
|
|
16
21
|
onControlStateChange(): void;
|
|
17
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<MatFormControlBase<any, any>, never>;
|
|
18
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatFormControlBase<any, any>, never, never, { "_detachLabel": { "alias": "detachLabel"; "required": false; "isSignal": true; }; "_appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "_shouldLabelFloat": { "alias": "shouldLabelFloat"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<MatFormControlBase<any, any>, never, never, { "_detachLabel": { "alias": "detachLabel"; "required": false; "isSignal": true; }; "_appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "_shouldLabelFloat": { "alias": "shouldLabelFloat"; "required": false; "isSignal": true; }; "_hideRequiredMarker": { "alias": "hideRequiredMarker"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
19
24
|
}
|
|
@@ -14,7 +14,6 @@ export declare class MatInputLookupComponent<TOption> extends MatFormControlBase
|
|
|
14
14
|
emptyOptionsLabel: import("@angular/core").InputSignal<string>;
|
|
15
15
|
debounceTime: import("@angular/core").InputSignal<number>;
|
|
16
16
|
searchThreshold: import("@angular/core").InputSignal<number>;
|
|
17
|
-
private readonly searchQuery;
|
|
18
17
|
readonly translatedEmptyOptionsLabel: import("@angular/core").Signal<string>;
|
|
19
18
|
behavior: LookupBehavior<TOption>;
|
|
20
19
|
constructor();
|
|
@@ -7,7 +7,6 @@ export declare class MatInputNumberComponent extends MatFormControlBase<string |
|
|
|
7
7
|
allowNegative: import("@angular/core").InputSignal<boolean>;
|
|
8
8
|
negativeColor: import("@angular/core").InputSignal<string | null>;
|
|
9
9
|
private numberBehavior;
|
|
10
|
-
private readonly displayValue;
|
|
11
10
|
readonly textColor: import("@angular/core").Signal<string | null>;
|
|
12
11
|
writeValue(value: number | null): void;
|
|
13
12
|
onInput(_: Event): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-modular-forms/material",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.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.10.0"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"tslib": "^2.6.0"
|