@gerandon/ngx-widgets 20.0.2 → 20.1.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.
@@ -2,12 +2,12 @@ import * as i0 from '@angular/core';
|
|
2
2
|
import { input, inject, Injector, ChangeDetectorRef, ViewChild, Directive, InjectionToken, signal, Input, Optional, Inject, isDevMode, output, forwardRef, ViewEncapsulation, Component, ViewChildren, viewChild } from '@angular/core';
|
3
3
|
import * as i1 from '@angular/forms';
|
4
4
|
import { FormControl, NgControl, ReactiveFormsModule, NG_VALUE_ACCESSOR, NG_ASYNC_VALIDATORS, FormsModule } from '@angular/forms';
|
5
|
-
import { of, Subject,
|
5
|
+
import { of, Subject, startWith, takeUntil, Observable, debounceTime, tap, switchMap, map } from 'rxjs';
|
6
|
+
import * as i3 from '@angular/material/form-field';
|
7
|
+
import { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule, MatFormField, MatLabel, MatError } from '@angular/material/form-field';
|
6
8
|
import { isEmpty, keys, isEqual, find } from 'lodash-es';
|
7
9
|
import { LiveAnnouncer } from '@angular/cdk/a11y';
|
8
10
|
import { SafeSubscriber } from 'rxjs/internal/Subscriber';
|
9
|
-
import * as i3 from '@angular/material/form-field';
|
10
|
-
import { MatFormFieldModule, MatFormField, MatLabel, MatError } from '@angular/material/form-field';
|
11
11
|
import * as i2 from '@angular/material/icon';
|
12
12
|
import { MatIconModule } from '@angular/material/icon';
|
13
13
|
import * as i4 from '@angular/material/input';
|
@@ -83,15 +83,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
83
83
|
}] } });
|
84
84
|
|
85
85
|
const NGX_WIDGETS_VALIDATION_TRANSLATIONS = new InjectionToken('NGX_WIDGETS_VALIDATION_TRANSLATIONS');
|
86
|
+
/**
|
87
|
+
* @deprecated
|
88
|
+
* This token is deprecated and will be removed in Angular v21. Use MAT_FORM_FIELD_DEFAULT_OPTIONS instead.
|
89
|
+
*/
|
86
90
|
const NGX_WIDGETS_FORM_FIELD_APPEARANCE = new InjectionToken('NGX_WIDGETS_FORM_FIELD_APPEARANCE');
|
87
91
|
class BaseInput extends BaseValueAccessor {
|
88
|
-
constructor(validationTranslations = {}
|
92
|
+
constructor(validationTranslations = {}) {
|
89
93
|
super();
|
90
94
|
this.validationTranslations = validationTranslations;
|
91
|
-
this.formFieldAppearance = formFieldAppearance;
|
92
95
|
this.appearance = input();
|
93
|
-
|
94
|
-
this._appearance = signal('outline');
|
96
|
+
this.color = input();
|
95
97
|
this.translateParams = input();
|
96
98
|
this.isDisabled = input(false);
|
97
99
|
this.floatLabel = input('auto');
|
@@ -103,9 +105,13 @@ class BaseInput extends BaseValueAccessor {
|
|
103
105
|
this.ariaPlaceholder = input('', { alias: 'aria-placeholder' });
|
104
106
|
this.ariaDescribedBy = input('', { alias: 'aria-describedby' });
|
105
107
|
this.ariaDescription = input('', { alias: 'aria-description' });
|
108
|
+
this.controlErrorKeys = [];
|
106
109
|
this.liveAnnouncer = inject(LiveAnnouncer);
|
110
|
+
this.matFormFieldConfig = inject(MAT_FORM_FIELD_DEFAULT_OPTIONS);
|
107
111
|
this.announcerTranslations = input();
|
108
112
|
this.validatorMessagesArray = [];
|
113
|
+
this._appearance = signal(this.matFormFieldConfig.appearance ?? 'fill');
|
114
|
+
this._color = signal(this.matFormFieldConfig.color ?? 'primary');
|
109
115
|
}
|
110
116
|
ngOnInit() {
|
111
117
|
this.placeholder = this.placeholder === undefined ? this.label : this.placeholder;
|
@@ -118,9 +124,6 @@ class BaseInput extends BaseValueAccessor {
|
|
118
124
|
}
|
119
125
|
// *ngIf seems like does not re-render component when label is used with dynamic value (e.g.: translate pipe). Strange
|
120
126
|
this.label = this.label || ' ';
|
121
|
-
if (this.formFieldAppearance && !this.appearance()) {
|
122
|
-
this._appearance.set(this.formFieldAppearance);
|
123
|
-
}
|
124
127
|
}
|
125
128
|
ngOnChanges(changes) {
|
126
129
|
if (changes['validatorMessages']) {
|
@@ -136,6 +139,11 @@ class BaseInput extends BaseValueAccessor {
|
|
136
139
|
ngAfterViewInit() {
|
137
140
|
super.ngAfterViewInit();
|
138
141
|
this.cdr.detectChanges();
|
142
|
+
this.control.statusChanges.pipe(startWith(this.control.status), takeUntil(this.destroy$)).subscribe(() => {
|
143
|
+
if (!this.control.hasError('server')) {
|
144
|
+
this.controlErrorKeys = keys(this.control.errors).map((key) => key);
|
145
|
+
}
|
146
|
+
});
|
139
147
|
}
|
140
148
|
announce(key) {
|
141
149
|
if (this._defaultAnnouncerTranslations?.[key]) {
|
@@ -152,8 +160,8 @@ class BaseInput extends BaseValueAccessor {
|
|
152
160
|
return this.liveAnnouncer.announce(key, 'assertive');
|
153
161
|
}
|
154
162
|
}
|
155
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BaseInput, deps: [{ token: NGX_WIDGETS_VALIDATION_TRANSLATIONS, optional: true }
|
156
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: BaseInput, isStandalone: true, inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, translateParams: { classPropertyName: "translateParams", publicName: "translateParams", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, floatLabel: { classPropertyName: "floatLabel", publicName: "floatLabel", isSignal: true, isRequired: false, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: false, isRequired: false, transformFunction: null }, suffixIcon: { classPropertyName: "suffixIcon", publicName: "suffixIcon", isSignal: false, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: false, isRequired: false, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: false, transformFunction: null }, validatorMessages: { classPropertyName: "validatorMessages", publicName: "validatorMessages", isSignal: true, isRequired: false, transformFunction: null }, subscriptSizing: { classPropertyName: "subscriptSizing", publicName: "subscriptSizing", isSignal: true, isRequired: false, transformFunction: null }, hintLabel: { classPropertyName: "hintLabel", publicName: "hintLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaPlaceholder: { classPropertyName: "ariaPlaceholder", publicName: "aria-placeholder", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedBy: { classPropertyName: "ariaDescribedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescription: { classPropertyName: "ariaDescription", publicName: "aria-description", isSignal: true, isRequired: false, transformFunction: null }, announcerTranslations: { classPropertyName: "announcerTranslations", publicName: "announcerTranslations", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BaseInput, deps: [{ token: NGX_WIDGETS_VALIDATION_TRANSLATIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
164
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.3", type: BaseInput, isStandalone: true, inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, translateParams: { classPropertyName: "translateParams", publicName: "translateParams", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, floatLabel: { classPropertyName: "floatLabel", publicName: "floatLabel", isSignal: true, isRequired: false, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: false, isRequired: false, transformFunction: null }, suffixIcon: { classPropertyName: "suffixIcon", publicName: "suffixIcon", isSignal: false, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: false, isRequired: false, transformFunction: null }, formControlName: { classPropertyName: "formControlName", publicName: "formControlName", isSignal: true, isRequired: false, transformFunction: null }, validatorMessages: { classPropertyName: "validatorMessages", publicName: "validatorMessages", isSignal: true, isRequired: false, transformFunction: null }, subscriptSizing: { classPropertyName: "subscriptSizing", publicName: "subscriptSizing", isSignal: true, isRequired: false, transformFunction: null }, hintLabel: { classPropertyName: "hintLabel", publicName: "hintLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaPlaceholder: { classPropertyName: "ariaPlaceholder", publicName: "aria-placeholder", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedBy: { classPropertyName: "ariaDescribedBy", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescription: { classPropertyName: "ariaDescription", publicName: "aria-description", isSignal: true, isRequired: false, transformFunction: null }, announcerTranslations: { classPropertyName: "announcerTranslations", publicName: "announcerTranslations", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
157
165
|
}
|
158
166
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BaseInput, decorators: [{
|
159
167
|
type: Directive
|
@@ -162,11 +170,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
162
170
|
}, {
|
163
171
|
type: Inject,
|
164
172
|
args: [NGX_WIDGETS_VALIDATION_TRANSLATIONS]
|
165
|
-
}] }, { type: undefined, decorators: [{
|
166
|
-
type: Optional
|
167
|
-
}, {
|
168
|
-
type: Inject,
|
169
|
-
args: [NGX_WIDGETS_FORM_FIELD_APPEARANCE]
|
170
173
|
}] }], propDecorators: { id: [{
|
171
174
|
type: Input
|
172
175
|
}], name: [{
|
@@ -288,7 +291,7 @@ class BasicInputComponent extends BaseMaskInput {
|
|
288
291
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: BasicInputComponent, isStandalone: true, selector: "gerandon-basic-input", outputs: { iconClick: "iconClick" }, providers: [
|
289
292
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicInputComponent), multi: true },
|
290
293
|
{ provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => BasicInputComponent), multi: true },
|
291
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"basic-input cva-input\">\r\n <mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
294
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"basic-input cva-input\">\r\n <mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [hintLabel]=\"hintLabel()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{label}}</mat-label>\r\n }\r\n @if(mask()) {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #maskInput=\"ngxMask\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n [mask]=\"mask()\"\r\n [triggerOnMaskChange]=\"true\"\r\n [showMaskTyped]=\"showMaskTyped()\"\r\n [specialCharacters]=\"specialCharacters()!\"\r\n [placeHolderCharacter]=\"placeHolderCharacter()!\"\r\n [prefix]=\"maskPrefix()\"\r\n [suffix]=\"maskSuffix()\"\r\n />\r\n } @else {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n />\r\n }\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix style=\"margin-right: 10px\">{{suffix}}</span>\r\n }\r\n\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n</div>\r\n", styles: ["gerandon-basic-input{display:block}gerandon-basic-input .basic-input{height:inherit}gerandon-basic-input .basic-input .disabled{color:#ced4da}gerandon-basic-input .basic-input mat-form-field{width:100%}gerandon-basic-input .basic-input mat-form-field .mat-icon{padding:unset;margin-left:10px;margin-right:10px}gerandon-basic-input .basic-input mat-form-field input::placeholder{color:#adb5bd;font-style:italic}gerandon-basic-input .basic-input mat-form-field input:disabled{cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions", "instantPrefix"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
292
295
|
}
|
293
296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BasicInputComponent, decorators: [{
|
294
297
|
type: Component,
|
@@ -302,7 +305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
302
305
|
], providers: [
|
303
306
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicInputComponent), multi: true },
|
304
307
|
{ provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => BasicInputComponent), multi: true },
|
305
|
-
], template: "<div class=\"basic-input cva-input\">\r\n <mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
308
|
+
], template: "<div class=\"basic-input cva-input\">\r\n <mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [hintLabel]=\"hintLabel()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{label}}</mat-label>\r\n }\r\n @if(mask()) {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #maskInput=\"ngxMask\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n [mask]=\"mask()\"\r\n [triggerOnMaskChange]=\"true\"\r\n [showMaskTyped]=\"showMaskTyped()\"\r\n [specialCharacters]=\"specialCharacters()!\"\r\n [placeHolderCharacter]=\"placeHolderCharacter()!\"\r\n [prefix]=\"maskPrefix()\"\r\n [suffix]=\"maskSuffix()\"\r\n />\r\n } @else {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n />\r\n }\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix style=\"margin-right: 10px\">{{suffix}}</span>\r\n }\r\n\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n</div>\r\n", styles: ["gerandon-basic-input{display:block}gerandon-basic-input .basic-input{height:inherit}gerandon-basic-input .basic-input .disabled{color:#ced4da}gerandon-basic-input .basic-input mat-form-field{width:100%}gerandon-basic-input .basic-input mat-form-field .mat-icon{padding:unset;margin-left:10px;margin-right:10px}gerandon-basic-input .basic-input mat-form-field input::placeholder{color:#adb5bd;font-style:italic}gerandon-basic-input .basic-input mat-form-field input:disabled{cursor:not-allowed}\n"] }]
|
306
309
|
}] });
|
307
310
|
|
308
311
|
class SelectComponent extends BaseInput {
|
@@ -339,7 +342,7 @@ class SelectComponent extends BaseInput {
|
|
339
342
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: SelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
340
343
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: SelectComponent, isStandalone: true, selector: "gerandon-select", inputs: { emptyOptionLabel: { classPropertyName: "emptyOptionLabel", publicName: "emptyOptionLabel", isSignal: false, isRequired: false, transformFunction: null }, emptyOptionAriaLabel: { classPropertyName: "emptyOptionAriaLabel", publicName: "emptyOptionAriaLabel", isSignal: false, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, asyncOptions: { classPropertyName: "asyncOptions", publicName: "asyncOptions", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
341
344
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true }
|
342
|
-
], viewQueries: [{ propertyName: "optionElements", predicate: ["optionElements"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
345
|
+
], viewQueries: [{ propertyName: "optionElements", predicate: ["optionElements"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label>{{ label }}</mat-label>\r\n }\r\n <mat-select #inputElement\r\n #input=\"ngForm\"\r\n [multiple]=\"multiple()\"\r\n [placeholder]=\"!floatLabel() ? label : placeholder\"\r\n [formControl]=\"control\"\r\n [id]=\"id\"\r\n [class.input-disabled]=\"isDisabled() || control.disabled\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [compareWith]=\"_isEqual\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\">\r\n @if (emptyOptionLabel) {\r\n <mat-option (click)=\"reset()\" [attr.aria-label]=\"emptyOptionAriaLabel\">\r\n {{ emptyOptionLabel }}\r\n </mat-option>\r\n }\r\n @for(option of options; track option) {\r\n <mat-option [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n</mat-form-field>\r\n", styles: ["gerandon-select mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTooltipModule }], encapsulation: i0.ViewEncapsulation.None }); }
|
343
346
|
}
|
344
347
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: SelectComponent, decorators: [{
|
345
348
|
type: Component,
|
@@ -350,7 +353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
350
353
|
MatSelectModule,
|
351
354
|
ReactiveFormsModule,
|
352
355
|
MatTooltipModule,
|
353
|
-
], template: "<mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
356
|
+
], template: "<mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label>{{ label }}</mat-label>\r\n }\r\n <mat-select #inputElement\r\n #input=\"ngForm\"\r\n [multiple]=\"multiple()\"\r\n [placeholder]=\"!floatLabel() ? label : placeholder\"\r\n [formControl]=\"control\"\r\n [id]=\"id\"\r\n [class.input-disabled]=\"isDisabled() || control.disabled\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [compareWith]=\"_isEqual\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\">\r\n @if (emptyOptionLabel) {\r\n <mat-option (click)=\"reset()\" [attr.aria-label]=\"emptyOptionAriaLabel\">\r\n {{ emptyOptionLabel }}\r\n </mat-option>\r\n }\r\n @for(option of options; track option) {\r\n <mat-option [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n</mat-form-field>\r\n", styles: ["gerandon-select mat-form-field{width:100%}\n"] }]
|
354
357
|
}], propDecorators: { emptyOptionLabel: [{
|
355
358
|
type: Input
|
356
359
|
}], emptyOptionAriaLabel: [{
|
@@ -382,7 +385,7 @@ class TextareaInputComponent extends BaseTextInput {
|
|
382
385
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: TextareaInputComponent, isStandalone: true, selector: "gerandon-textarea-input", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
383
386
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaInputComponent), multi: true },
|
384
387
|
{ provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => TextareaInputComponent), multi: true },
|
385
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"textarea-input cva-input\">\r\n <mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
388
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"textarea-input cva-input\">\r\n <mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <textarea\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n matInput\r\n cdkTextareaAutosize\r\n [cdkAutosizeMinRows]=\"rows()\"\r\n class=\"w-100 cva-control\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\">\r\n </textarea>\r\n <span class=\"counter\">{{control.value?.length || 0}} / {{ maxLength() }}</span>\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n</div>\r\n", styles: ["gerandon-textarea-input{display:block}gerandon-textarea-input .counter{right:20px;bottom:0;position:absolute;font-size:10px}gerandon-textarea-input .textarea-input .disabled{color:#ced4da}gerandon-textarea-input .textarea-input mat-form-field{width:100%}gerandon-textarea-input .textarea-input mat-form-field textarea{padding-top:10px}gerandon-textarea-input .textarea-input mat-form-field textarea::placeholder{color:#adb5bd;font-style:italic}gerandon-textarea-input .textarea-input mat-form-field textarea:disabled{cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i5.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
386
389
|
}
|
387
390
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: TextareaInputComponent, decorators: [{
|
388
391
|
type: Component,
|
@@ -395,7 +398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
395
398
|
], providers: [
|
396
399
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaInputComponent), multi: true },
|
397
400
|
{ provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => TextareaInputComponent), multi: true },
|
398
|
-
], template: "<div class=\"textarea-input cva-input\">\r\n <mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
401
|
+
], template: "<div class=\"textarea-input cva-input\">\r\n <mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <textarea\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n matInput\r\n cdkTextareaAutosize\r\n [cdkAutosizeMinRows]=\"rows()\"\r\n class=\"w-100 cva-control\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\">\r\n </textarea>\r\n <span class=\"counter\">{{control.value?.length || 0}} / {{ maxLength() }}</span>\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n</div>\r\n", styles: ["gerandon-textarea-input{display:block}gerandon-textarea-input .counter{right:20px;bottom:0;position:absolute;font-size:10px}gerandon-textarea-input .textarea-input .disabled{color:#ced4da}gerandon-textarea-input .textarea-input mat-form-field{width:100%}gerandon-textarea-input .textarea-input mat-form-field textarea{padding-top:10px}gerandon-textarea-input .textarea-input mat-form-field textarea::placeholder{color:#adb5bd;font-style:italic}gerandon-textarea-input .textarea-input mat-form-field textarea:disabled{cursor:not-allowed}\n"] }]
|
399
402
|
}] });
|
400
403
|
|
401
404
|
class BasicChipsComponent extends BaseInput {
|
@@ -493,7 +496,7 @@ class BasicChipsComponent extends BaseInput {
|
|
493
496
|
}
|
494
497
|
}
|
495
498
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BasicChipsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
496
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: BasicChipsComponent, isStandalone: true, selector: "gerandon-basic-chips", inputs: { asyncFilterFn: { classPropertyName: "asyncFilterFn", publicName: "asyncFilterFn", isSignal: true, isRequired: false, transformFunction: null }, asyncOptions: { classPropertyName: "asyncOptions", publicName: "asyncOptions", isSignal: true, isRequired: false, transformFunction: null }, startTypingLabel: { classPropertyName: "startTypingLabel", publicName: "startTypingLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyListLabel: { classPropertyName: "emptyListLabel", publicName: "emptyListLabel", isSignal: true, isRequired: false, transformFunction: null }, startAsyncFnAt: { classPropertyName: "startAsyncFnAt", publicName: "startAsyncFnAt", isSignal: true, isRequired: false, transformFunction: null }, labelProperty: { classPropertyName: "labelProperty", publicName: "labelProperty", isSignal: false, isRequired: false, transformFunction: null } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicChipsComponent), multi: true }], viewQueries: [{ propertyName: "tsFilterInput", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
499
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: BasicChipsComponent, isStandalone: true, selector: "gerandon-basic-chips", inputs: { asyncFilterFn: { classPropertyName: "asyncFilterFn", publicName: "asyncFilterFn", isSignal: true, isRequired: false, transformFunction: null }, asyncOptions: { classPropertyName: "asyncOptions", publicName: "asyncOptions", isSignal: true, isRequired: false, transformFunction: null }, startTypingLabel: { classPropertyName: "startTypingLabel", publicName: "startTypingLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyListLabel: { classPropertyName: "emptyListLabel", publicName: "emptyListLabel", isSignal: true, isRequired: false, transformFunction: null }, startAsyncFnAt: { classPropertyName: "startAsyncFnAt", publicName: "startAsyncFnAt", isSignal: true, isRequired: false, transformFunction: null }, labelProperty: { classPropertyName: "labelProperty", publicName: "labelProperty", isSignal: false, isRequired: false, transformFunction: null } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicChipsComponent), multi: true }], viewQueries: [{ propertyName: "tsFilterInput", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [hintLabel]=\"_hintLabel\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <mat-chip-grid #chipGrid class=\"w-100\">\r\n @for(item of control.value; track item) {\r\n <mat-chip-row (removed)=\"remove(item)\" color=\"primary\" highlighted>\r\n {{ labelProperty ? item[labelProperty] : item}}\r\n <button matChipRemove [attr.aria-label]=\"(labelProperty ? item[labelProperty] : item) + ' elt\u00E1vol\u00EDt\u00E1sa'\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n <input #inputElement\r\n matInput\r\n [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\"\r\n (input)=\"filter()\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"!labelProperty && add($event)\"/>\r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n (optionSelected)=\"selected($event)\">\r\n @for (filterItem of filterOptions$ | async; track filterItem) {\r\n <mat-option [value]=\"filterItem\" [attr.aria-label]=\"labelProperty ? filterItem[labelProperty] : filterItem\">\r\n {{labelProperty ? filterItem[labelProperty] : filterItem}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-chip-grid>\r\n <input #input=\"ngForm\" [style.display]=\"'none'\" [formControl]=\"control\" />\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n</mat-form-field>\r\n", styles: ["gerandon-basic-chips{display:block}gerandon-basic-chips .mat-mdc-standard-chip{height:28px!important}gerandon-basic-chips mat-form-field{width:100%}gerandon-basic-chips mat-form-field .mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,gerandon-basic-chips mat-form-field .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,gerandon-basic-chips mat-form-field .mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:hidden!important}\n"], dependencies: [{ kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i1$1.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i1$1.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i1$1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i1$1.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
497
500
|
}
|
498
501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: BasicChipsComponent, decorators: [{
|
499
502
|
type: Component,
|
@@ -507,7 +510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
|
|
507
510
|
MatInput,
|
508
511
|
MatLabel,
|
509
512
|
MatError,
|
510
|
-
], template: "<mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\"
|
513
|
+
], template: "<mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [hintLabel]=\"_hintLabel\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <mat-chip-grid #chipGrid class=\"w-100\">\r\n @for(item of control.value; track item) {\r\n <mat-chip-row (removed)=\"remove(item)\" color=\"primary\" highlighted>\r\n {{ labelProperty ? item[labelProperty] : item}}\r\n <button matChipRemove [attr.aria-label]=\"(labelProperty ? item[labelProperty] : item) + ' elt\u00E1vol\u00EDt\u00E1sa'\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n <input #inputElement\r\n matInput\r\n [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\"\r\n (input)=\"filter()\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"!labelProperty && add($event)\"/>\r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n (optionSelected)=\"selected($event)\">\r\n @for (filterItem of filterOptions$ | async; track filterItem) {\r\n <mat-option [value]=\"filterItem\" [attr.aria-label]=\"labelProperty ? filterItem[labelProperty] : filterItem\">\r\n {{labelProperty ? filterItem[labelProperty] : filterItem}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-chip-grid>\r\n <input #input=\"ngForm\" [style.display]=\"'none'\" [formControl]=\"control\" />\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n</mat-form-field>\r\n", styles: ["gerandon-basic-chips{display:block}gerandon-basic-chips .mat-mdc-standard-chip{height:28px!important}gerandon-basic-chips mat-form-field{width:100%}gerandon-basic-chips mat-form-field .mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,gerandon-basic-chips mat-form-field .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,gerandon-basic-chips mat-form-field .mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:hidden!important}\n"] }]
|
511
514
|
}], propDecorators: { labelProperty: [{
|
512
515
|
type: Input
|
513
516
|
}] } });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"gerandon-ngx-widgets.mjs","sources":["../../../projects/ngx-widgets/src/lib/core/base-value-accessor.ts","../../../projects/ngx-widgets/src/lib/core/base-input.ts","../../../projects/ngx-widgets/src/lib/core/base-text-input.ts","../../../projects/ngx-widgets/src/lib/core/base-mask-input.ts","../../../projects/ngx-widgets/src/lib/core/component-unsubscribe.ts","../../../projects/ngx-widgets/src/lib/basic-input/basic-input.component.ts","../../../projects/ngx-widgets/src/lib/basic-input/basic-input.component.html","../../../projects/ngx-widgets/src/lib/select/select.component.ts","../../../projects/ngx-widgets/src/lib/select/select.component.html","../../../projects/ngx-widgets/src/lib/textarea-input/textarea-input.component.ts","../../../projects/ngx-widgets/src/lib/textarea-input/textarea-input.component.html","../../../projects/ngx-widgets/src/lib/basic-chips/basic-chips.component.ts","../../../projects/ngx-widgets/src/lib/basic-chips/basic-chips.component.html","../../../projects/ngx-widgets/src/public-api.ts","../../../projects/ngx-widgets/src/gerandon-ngx-widgets.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef, Directive,\n ElementRef, inject,\n Injector, OnDestroy, Type,\n ViewChild,\n input\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor, FormControl,\r\n NgControl,\r\n ValidationErrors,\r\n Validator, ValidatorFn,\r\n} from '@angular/forms';\r\n\r\nimport {Observable, of, Subject} from 'rxjs';\r\n\r\n@Directive()\r\nexport class BaseValueAccessor<T> implements ControlValueAccessor, AfterViewInit, Validator, OnDestroy {\r\n\r\n public readonly validator = input<Observable<ValidationErrors>>(of({}));\r\n @ViewChild('inputElement') inputElement!: ElementRef;\r\n @ViewChild('input') input!: NgControl;\r\n\r\n public control: FormControl;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n private onChange = (value: T) => {\r\n };\r\n private onTouched = () => {\r\n };\r\n private readonly injector: Injector = inject(Injector);\r\n protected controlDir!: NgControl;\r\n protected readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n protected _validate: ValidatorFn;\r\n protected readonly _defaultValidate: ValidatorFn = () => null;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n constructor() {\r\n this._validate = this._defaultValidate;\r\n // Temporarily, AfterViewInit will handle the correct setting\r\n this.control = new FormControl();\r\n }\r\n\r\n validate(control: AbstractControl): Observable<ValidationErrors> {\r\n control.setErrors({ ...control.errors, pending: true });\r\n return this.validator();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.controlDir = this.injector.get<NgControl>(NgControl as Type<NgControl>);\r\n this.control = <FormControl>this.controlDir.control;\r\n // For ng-valid expression changed error workaround purposes\r\n this.cdr.detectChanges();\r\n }\r\n\r\n writeValue(obj: T): void {\r\n this.valueAccessor?.writeValue(obj);\r\n }\r\n\r\n registerOnChange(fn: (value: T) => unknown): void {\r\n this.onChange = fn;\r\n this.valueAccessor?.registerOnChange(fn);\r\n }\r\n\r\n registerOnTouched(fn: () => unknown) {\r\n this.onTouched = fn;\r\n this.valueAccessor?.registerOnTouched(fn);\r\n }\r\n\r\n protected get valueAccessor(): ControlValueAccessor | null {\r\n return this.input ? this.input.valueAccessor : null;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive, Inject, inject, InjectionToken,\r\n Input, OnChanges,\r\n OnInit, Optional, SimpleChanges,\r\n input, signal\r\n} from '@angular/core';\r\nimport {FloatLabelType, MatFormFieldAppearance, SubscriptSizing} from '@angular/material/form-field';\r\n\r\nimport {BaseValueAccessor} from './base-value-accessor';\r\nimport {isEmpty, keys} from 'lodash-es';\r\nimport {LiveAnnouncer} from \"@angular/cdk/a11y\";\r\n\r\nexport interface NgxWidgetsValidationErrorTypes {\r\n required?: string;\r\n selectGlobalPlaceholder?: string;\r\n}\r\n\r\nexport const NGX_WIDGETS_VALIDATION_TRANSLATIONS = new InjectionToken<NgxWidgetsValidationErrorTypes>('NGX_WIDGETS_VALIDATION_TRANSLATIONS');\r\nexport const NGX_WIDGETS_FORM_FIELD_APPEARANCE = new InjectionToken<MatFormFieldAppearance>('NGX_WIDGETS_FORM_FIELD_APPEARANCE');\r\n\r\n@Directive()\r\nexport class BaseInput<T, ANNOUNCER_TYPE = object> extends BaseValueAccessor<T> implements OnInit, AfterViewInit, OnChanges {\r\n\r\n public readonly appearance = input<MatFormFieldAppearance>();\r\n // Used on Template\r\n protected readonly _appearance = signal<MatFormFieldAppearance>('outline');\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public id!: string;\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public name!: string;\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public label!: string;\r\n public readonly translateParams = input<unknown>();\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public placeholder!: string;\r\n public readonly isDisabled = input<boolean | undefined>(false);\r\n public readonly floatLabel = input<FloatLabelType>('auto');\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public prefixIcon?: string;\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public suffixIcon?: string;\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public suffix?: string;\r\n public readonly formControlName = input<string>();\r\n public readonly validatorMessages = input<{\r\n [key: string]: string;\r\n }>();\r\n public readonly subscriptSizing = input<SubscriptSizing>('fixed');\r\n public readonly hintLabel = input('');\r\n public readonly ariaLabel = input('', { alias: 'aria-label' });\r\n public readonly ariaPlaceholder = input('', { alias: 'aria-placeholder' });\r\n public readonly ariaDescribedBy = input('', { alias: 'aria-describedby' });\r\n public readonly ariaDescription = input('', { alias: 'aria-description' });\r\n private readonly liveAnnouncer = inject(LiveAnnouncer);\r\n public readonly announcerTranslations = input<ANNOUNCER_TYPE>();\r\n public validatorMessagesArray: { key: string, value: unknown }[] = [];\r\n protected _defaultAnnouncerTranslations?: { [P in keyof ANNOUNCER_TYPE]-?: ANNOUNCER_TYPE[P] };\r\n\r\n constructor(@Optional() @Inject(NGX_WIDGETS_VALIDATION_TRANSLATIONS) protected readonly validationTranslations: NgxWidgetsValidationErrorTypes | any = {},\r\n @Optional() @Inject(NGX_WIDGETS_FORM_FIELD_APPEARANCE) protected readonly formFieldAppearance: MatFormFieldAppearance) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.placeholder = this.placeholder === undefined ? this.label : this.placeholder;\r\n if (!this.name) {\r\n this.name = this.formControlName()!;\r\n /*\r\n console.warn(`name attribute is not defined for ${this.formControlName}! Please beware, that using this control multiple\r\n times with the same control name could result in wrong focus, clicking on the label!`);\r\n */\r\n }\r\n // *ngIf seems like does not re-render component when label is used with dynamic value (e.g.: translate pipe). Strange\r\n this.label = this.label || ' ';\r\n\r\n if (this.formFieldAppearance && !this.appearance()) {\r\n this._appearance.set(this.formFieldAppearance);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['validatorMessages']) {\r\n const validatorMessages = this.validatorMessages();\r\n if (!isEmpty(validatorMessages)) {\r\n this.validatorMessagesArray = keys(validatorMessages).map((key) => ({\r\n key,\r\n value: this.validatorMessages()![key],\r\n }));\r\n }\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n protected announce(key: keyof ANNOUNCER_TYPE | string) {\r\n if (this._defaultAnnouncerTranslations?.[key as keyof ANNOUNCER_TYPE]) {\r\n const _key = key as keyof ANNOUNCER_TYPE\r\n const inputTranslation = this.announcerTranslations()?.[_key] as string;\r\n if (inputTranslation) {\r\n return this.liveAnnouncer.announce(inputTranslation, 'assertive');\r\n } else {\r\n return this.liveAnnouncer.announce(this._defaultAnnouncerTranslations![_key] as string, 'assertive');\r\n }\r\n } else {\r\n return this.liveAnnouncer.announce(key as string, 'assertive');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n input\r\n} from '@angular/core';\r\n\r\nimport { BaseInput } from './base-input';\r\n\r\n@Directive()\r\nexport class BaseTextInput<T, ANNOUNCER_TYPE = object> extends BaseInput<T, ANNOUNCER_TYPE> {\r\n\r\n public readonly type = input<('text' | 'password' | 'number' | 'email' | 'tel')>('text');\r\n public readonly maxLength = input<number | undefined>(512);\r\n}\r\n","import {BaseTextInput} from \"./base-text-input\";\nimport {AfterViewInit, Directive, ViewChild, input} from \"@angular/core\";\nimport {NgxMaskDirective} from \"ngx-mask\";\n\n@Directive()\nexport class BaseMaskInput extends BaseTextInput<string> implements AfterViewInit {\n\n public readonly mask = input<string>();\n public readonly showMaskTyped = input(false);\n public readonly dropSpecialCharacters = input<string[] | boolean | readonly string[] | null>();\n public readonly specialCharacters = input<string[]>();\n public readonly placeHolderCharacter = input<string>('_');\n public readonly maskPrefix = input<string>('');\n public readonly maskSuffix = input<string>('');\n\n @ViewChild('maskInput') maskInput!: NgxMaskDirective;\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n if (this.maskInput) {\n this.maskInput._maskService.dropSpecialCharacters = this.dropSpecialCharacters()!;\n this.maskInput['_applyMask']();\n }\n }\n}\n","import { isDevMode } from '@angular/core';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SafeSubscriber } from 'rxjs/internal/Subscriber';\n\n/**\n * Automatically unsubscribe from an Observable when the view is destroyed\n * Tested with checking the \"complete\" event of a subscribe method\n * @description\n * An Annotation that should be used with an Observable typed variable to handle its subscriptions\n * @author gergo.asztalos\n */\nexport function UnsubscribeOnDestroy<ObservableType>(): PropertyDecorator {\n return function (target: any, propertyKey: string | symbol) {\n const ngOnDestroy = target.ngOnDestroy;\n\n const secretKey = `_${<string>propertyKey}$`;\n // Probably with function we could use own context\n const destroyKey = (_this: any) =>\n _this.hasOwnProperty('destroy$') ? 'destroy$' : `${_this.constructor.name}_destroy$`;\n Object.defineProperty(target, secretKey, { enumerable: false, writable: true });\n Object.defineProperty(target, propertyKey, {\n configurable: true,\n enumerable: true,\n get: function() {\n return this[secretKey];\n },\n set: function(newValue: Observable<ObservableType> | SafeSubscriber<ObservableType>) {\n if (!this[destroyKey(this)]) {\n this[destroyKey(this)] = new Subject();\n }\n if (newValue instanceof Observable) {\n this[secretKey] = newValue.pipe(\n takeUntil(this[destroyKey(this)]),\n );\n } else {\n this[secretKey] = newValue;\n }\n },\n });\n\n target.ngOnDestroy = function () {\n if (this[propertyKey] instanceof SafeSubscriber) {\n this[propertyKey].unsubscribe();\n this[secretKey].unsubscribe();\n } else if (this.hasOwnProperty(destroyKey(this))) {\n this[destroyKey(this)].next();\n this[destroyKey(this)].complete();\n }\n delete this[secretKey];\n if (isDevMode()) {\n // eslint-disable-next-line no-console,max-len\n console.debug(`<UnsubscribeOnDestroy> - Observable/Subscription <${<string>propertyKey}> completed in class: ${this.constructor.name}`);\n }\n ngOnDestroy && ngOnDestroy.call(this);\n };\n };\n}\n","import {\n Component,\n forwardRef,\n OnInit,\n ViewEncapsulation,\n output\n} from '@angular/core';\r\nimport { NG_ASYNC_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport {NgIf} from \"@angular/common\";\r\nimport {NgxMaskDirective} from \"ngx-mask\";\r\nimport {BaseMaskInput} from \"../core/base-mask-input\";\r\n\r\n@Component({\r\n selector: 'gerandon-basic-input',\r\n templateUrl: './basic-input.component.html',\r\n styleUrls: ['./basic-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n NgIf,\r\n NgxMaskDirective,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicInputComponent), multi: true },\r\n { provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => BasicInputComponent), multi: true },\r\n ],\r\n})\r\nexport class BasicInputComponent extends BaseMaskInput implements OnInit {\r\n\r\n readonly iconClick = output();\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this.id = this.id || this.name;\r\n }\r\n}\r\n","<div class=\"basic-input cva-input\">\r\n <mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\" [hintLabel]=\"hintLabel()\" [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{label}}</mat-label>\r\n }\r\n @if(mask()) {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #maskInput=\"ngxMask\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n [mask]=\"mask()\"\r\n [triggerOnMaskChange]=\"true\"\r\n [showMaskTyped]=\"showMaskTyped()\"\r\n [specialCharacters]=\"specialCharacters()!\"\r\n [placeHolderCharacter]=\"placeHolderCharacter()!\"\r\n [prefix]=\"maskPrefix()\"\r\n [suffix]=\"maskSuffix()\"\r\n />\r\n } @else {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n />\r\n }\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix style=\"margin-right: 10px\">{{suffix}}</span>\r\n }\r\n\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n } @else if (control.errors?.['required'] && validationTranslations.required) {\r\n <mat-error>{{ validationTranslations.required }}</mat-error>\r\n } @else {\r\n\r\n }\r\n @for (error of validatorMessagesArray; track error.key) {\r\n <!--\r\n this @if makes the mat-error to be placed out of subscript-wrapper\r\n that way the error message will be inside the input, not under the field as the others....\r\n\r\n @if (control.errors?.[error.key]) {\r\n }\r\n -->\r\n <mat-error *ngIf=\"control.errors?.[error.key]\">\r\n @if(!!validatorMessages()?.[error.key]) {\r\n {{ error.value }}\r\n } @else if (!!validationTranslations?.[error.key]) {\r\n {{ validationTranslations[error.key] }}\r\n }\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewChildren,\r\n ViewEncapsulation,\r\n input\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport {BaseInput} from '../core/base-input';\r\nimport { isEqual } from 'lodash-es';\r\nimport { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nexport interface SelectOptionType {\r\n label: string;\r\n value: string | number | null | unknown;\r\n}\r\n\r\ninterface SelectAnnouncerTranslations {\r\n inputReset?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'gerandon-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true }\r\n ],\r\n imports: [\r\n MatInputModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n MatTooltipModule,\r\n ],\r\n})\r\nexport class SelectComponent extends BaseInput<unknown, SelectAnnouncerTranslations> implements OnInit {\r\n\r\n /**\r\n * In this case, an empty option appears that resets the control, to an empty value state\r\n */\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public emptyOptionLabel?: string;\r\n @Input() public emptyOptionAriaLabel?: string = 'Üres';\r\n public readonly multiple = input<boolean>();\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public options!: SelectOptionType[];\r\n public readonly asyncOptions = input<Observable<SelectOptionType[]>>();\r\n @ViewChildren('optionElements') public optionElements!: QueryList<ElementRef>;\r\n protected override _defaultAnnouncerTranslations: { [P in keyof SelectAnnouncerTranslations]-?: SelectAnnouncerTranslations[P] } = {\r\n inputReset: 'Lenyíló mező törölve!'\r\n }\r\n\r\n /**\r\n * Angular Material - Select component comparsion is only '===', does not work with Array values\r\n * https://github.com/angular/components/blob/a07c0758a5ec2eb4de1bb822354be08178c66aa4/src/lib/select/select.ts#L242C48-L242C58\r\n */\r\n public readonly _isEqual = isEqual;\r\n\r\n override ngOnInit() {\r\n this.placeholder = !this.placeholder ? (this.validationTranslations?.selectGlobalPlaceholder || this.label) : this.placeholder;\r\n super.ngOnInit();\r\n this.id = this.id || this.formControlName() || this.name;\r\n const asyncOptions = this.asyncOptions();\r\n if (asyncOptions) {\r\n asyncOptions.pipe(takeUntil(this.destroy$)).subscribe((resp) => {\r\n this.options = resp;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n reset() {\r\n this.control.reset();\r\n this.announce('inputReset');\r\n }\r\n}\r\n","<mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\" [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label>{{ label }}</mat-label>\r\n }\r\n <mat-select #inputElement\r\n #input=\"ngForm\"\r\n [multiple]=\"multiple()\"\r\n [placeholder]=\"!floatLabel() ? label : placeholder\"\r\n [formControl]=\"control\"\r\n [id]=\"id\"\r\n [class.input-disabled]=\"isDisabled() || control.disabled\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [compareWith]=\"_isEqual\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\">\r\n @if (emptyOptionLabel) {\r\n <mat-option (click)=\"reset()\" [attr.aria-label]=\"emptyOptionAriaLabel\">\r\n {{ emptyOptionLabel }}\r\n </mat-option>\r\n }\r\n @for(option of options; track option) {\r\n <mat-option [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n } @else if (control.errors?.['required'] && validationTranslations.required) {\r\n <mat-error>{{ validationTranslations.required }}</mat-error>\r\n } @else {\r\n @for (error of validatorMessagesArray; track error) {\r\n <mat-error>{{ error.value }}</mat-error>\r\n }\r\n }\r\n</mat-form-field>\r\n","import {Component, forwardRef, ViewEncapsulation, input, AfterViewInit, inject} from '@angular/core';\r\nimport { FormsModule, NG_ASYNC_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {BaseTextInput} from \"../core/base-text-input\";\r\nimport {takeUntil} from \"rxjs\";\r\nimport {LiveAnnouncer} from \"@angular/cdk/a11y\";\r\n\r\ninterface TextareaAnnouncerTranslations {\r\n maxLengthReached?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'gerandon-textarea-input',\r\n templateUrl: 'textarea-input.component.html',\r\n styleUrls: ['textarea-input.component.scss'],\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaInputComponent), multi: true },\r\n { provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => TextareaInputComponent), multi: true },\r\n ],\r\n})\r\nexport class TextareaInputComponent extends BaseTextInput<string> implements AfterViewInit {\r\n\r\n public readonly rows = input(10);\r\n protected override _defaultAnnouncerTranslations: { [P in keyof TextareaAnnouncerTranslations]-?: TextareaAnnouncerTranslations[P] } = {\r\n maxLengthReached: 'Elérte a maximális karakter számot!',\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this.control.valueChanges.pipe(\r\n takeUntil(this.destroy$)\r\n ).subscribe((value) => {\r\n if (value.length !== 0 && value.length >= (this.maxLength() ?? 0)) {\r\n this.announce('maxLengthReached');\r\n }\r\n })\r\n }\r\n}\r\n","<div class=\"textarea-input cva-input\">\r\n <mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\" [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <textarea\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n matInput\r\n cdkTextareaAutosize\r\n [cdkAutosizeMinRows]=\"rows()\"\r\n class=\"w-100 cva-control\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\">\r\n </textarea>\r\n <span class=\"counter\">{{control.value?.length || 0}} / {{ maxLength() }}</span>\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n } @else if (control.errors?.['required'] && validationTranslations.required) {\r\n <mat-error>{{ validationTranslations.required }}</mat-error>\r\n } @else {\r\n @for (error of validatorMessagesArray; track error) {\r\n <mat-error>{{ error.value }}</mat-error>\r\n }\r\n }\r\n </mat-form-field>\r\n</div>\r\n","import {COMMA, ENTER} from '@angular/cdk/keycodes';\nimport {AsyncPipe} from '@angular/common';\nimport {\n Component,\n forwardRef,\n Input,\n ViewEncapsulation,\n input,\n viewChild,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\nimport {MatAutocompleteModule, MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';\nimport {MatChipInputEvent, MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\n\nimport {debounceTime, map, Observable, of, Subject, switchMap, tap} from 'rxjs';\nimport {BaseInput} from \"../core/base-input\";\nimport {MatError, MatFormField, MatLabel} from \"@angular/material/form-field\";\nimport {MatInput} from \"@angular/material/input\";\nimport {find, isEqual} from \"lodash-es\";\n\ninterface ChipsAnnouncerTranslations {\n asyncFilterStart?: string;\n asyncFilterEnd?: string;\n itemRemoved?: string;\n itemAdded?: string;\n selectableItems?: string;\n}\n\n@Component({\n selector: 'gerandon-basic-chips',\n templateUrl: 'basic-chips.component.html',\n styleUrls: ['basic-chips.component.scss'],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicChipsComponent), multi: true}],\n imports: [\n MatChipsModule,\n MatIconModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n AsyncPipe,\n MatFormField,\n MatInput,\n MatLabel,\n MatError,\n ],\n})\nexport class BasicChipsComponent<T> extends BaseInput<T[], ChipsAnnouncerTranslations> implements OnInit {\n\n public readonly tsFilterInput = viewChild<ElementRef>('inputElement');\n public readonly asyncFilterFn = input<(value: string) => Observable<T[]>>();\n public readonly asyncOptions = input<Observable<T[]>>();\n public readonly startTypingLabel = input('Kezdjen el gépelni...');\n public readonly emptyListLabel = input('Nincs megjeleníthető elem!');\n /**\n * How much character you need to type before triggering search\n */\n public readonly startAsyncFnAt = input<number>(1);\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() public labelProperty?: keyof T;\n public readonly separatorKeysCodes = [ENTER, COMMA] as const;\n public filterOptions$?: Observable<T[]>;\n protected _hintLabel!: string;\n private readonly inputChange = new Subject<string>();\n protected override _defaultAnnouncerTranslations: { [P in keyof ChipsAnnouncerTranslations]-?: ChipsAnnouncerTranslations[P] } = {\n asyncFilterStart: 'Szerver keresés elindítva',\n asyncFilterEnd: 'A szerver keresés lefutott',\n selectableItems: 'Választható elemek:',\n itemRemoved: 'Elem sikeresen eltávolítva',\n itemAdded: 'Elem hozzáadva'\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this._hintLabel = this.hintLabel();\n if (this.asyncFilterFn()) {\n this.filterOptions$ = this.inputChange.pipe(\n debounceTime(300),\n tap(() => this.announce('asyncFilterStart')),\n switchMap((value) => {\n if (value && value.length >= this.startAsyncFnAt()) {\n return this.asyncFilterFn()!(value).pipe(\n map((responseList) => {\n this.announce('asyncFilterEnd');\n return responseList.filter((responseListItem) => {\n return !find(this.control.value, (controlAct) => isEqual(controlAct, responseListItem));\n })\n })\n );\n }\n return of([]);\n }),\n tap((responseList) => {\n this.announce('selectableItems').then(() => {\n this.announce(responseList.map((act) => this.labelProperty ? act[this.labelProperty] : act).join(','))\n });\n if (!this.tsFilterInput()?.nativeElement.value && !this.control.value) {\n this._hintLabel = this.hintLabel() ?? 'Kezdjen el gépelni...';\n } else {\n this._hintLabel = !responseList.length ? this.emptyListLabel() : '';\n }\n })\n )\n } else {\n this.filterOptions$ = this.asyncOptions();\n }\n }\n\n filter() {\n const filterValue = this.tsFilterInput()!.nativeElement.value;\n this.inputChange.next(filterValue);\n }\n\n remove(item: T) {\n const values: T[] = this.control.value;\n const index = values.indexOf(item);\n if (index >= 0) {\n values.splice(index, 1);\n this.control.setValue(values);\n }\n\n this.mark();\n this.announce('itemRemoved');\n }\n\n add(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n if (value) {\n this.updateValue(value as T);\n }\n event.chipInput!.clear();\n\n this.mark();\n this.announce('itemAdded');\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n if (!this.control.value?.includes(event.option.value)) {\n this.updateValue(<T>event.option.value);\n }\n this.inputElement.nativeElement.value = '';\n\n this.mark();\n }\n\n private updateValue(value: T) {\n this.control.setValue([\n ...(this.control.value || []),\n value,\n ]);\n }\n\n private mark() {\n if (!this.control.touched) {\n this.control.markAsTouched();\n this.control.markAsDirty();\n }\n }\n}\n","<mat-form-field [appearance]=\"_appearance()\" [subscriptSizing]=\"subscriptSizing()\" [hintLabel]=\"_hintLabel\" [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <mat-chip-grid #chipGrid class=\"w-100\">\r\n @for(item of control.value; track item) {\r\n <mat-chip-row (removed)=\"remove(item)\" color=\"primary\" highlighted>\r\n {{ labelProperty ? item[labelProperty] : item}}\r\n <button matChipRemove [attr.aria-label]=\"(labelProperty ? item[labelProperty] : item) + ' eltávolítása'\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n <input #inputElement\r\n matInput\r\n [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\"\r\n (input)=\"filter()\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"!labelProperty && add($event)\"/>\r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n (optionSelected)=\"selected($event)\">\r\n @for (filterItem of filterOptions$ | async; track filterItem) {\r\n <mat-option [value]=\"filterItem\" [attr.aria-label]=\"labelProperty ? filterItem[labelProperty] : filterItem\">\r\n {{labelProperty ? filterItem[labelProperty] : filterItem}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-chip-grid>\r\n <input #input=\"ngForm\" [style.display]=\"'none'\" [formControl]=\"control\" />\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n } @else if (control.errors?.['required'] && validationTranslations.required) {\r\n <mat-error>{{ validationTranslations.required }}</mat-error>\r\n } @else {\r\n @for (error of validatorMessagesArray; track error) {\r\n <mat-error>{{ error.value }}</mat-error>\r\n }\r\n }\r\n</mat-form-field>\r\n","/*\n * Public API Surface of ngx-widgets\n */\n\nexport * from './lib/core/base-value-accessor';\nexport * from './lib/core/base-input';\nexport * from './lib/core/base-text-input';\nexport * from './lib/core/base-mask-input';\nexport * from './lib/core/component-unsubscribe';\n\nexport * from './lib/basic-input/basic-input.component';\nexport * from './lib/select/select.component';\nexport * from './lib/textarea-input/textarea-input.component';\nexport * from './lib/basic-chips/basic-chips.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil","i1","i2","i3","i4","i5"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"gerandon-ngx-widgets.mjs","sources":["../../../projects/ngx-widgets/src/lib/core/base-value-accessor.ts","../../../projects/ngx-widgets/src/lib/core/base-input.ts","../../../projects/ngx-widgets/src/lib/core/base-text-input.ts","../../../projects/ngx-widgets/src/lib/core/base-mask-input.ts","../../../projects/ngx-widgets/src/lib/core/component-unsubscribe.ts","../../../projects/ngx-widgets/src/lib/basic-input/basic-input.component.ts","../../../projects/ngx-widgets/src/lib/basic-input/basic-input.component.html","../../../projects/ngx-widgets/src/lib/select/select.component.ts","../../../projects/ngx-widgets/src/lib/select/select.component.html","../../../projects/ngx-widgets/src/lib/textarea-input/textarea-input.component.ts","../../../projects/ngx-widgets/src/lib/textarea-input/textarea-input.component.html","../../../projects/ngx-widgets/src/lib/basic-chips/basic-chips.component.ts","../../../projects/ngx-widgets/src/lib/basic-chips/basic-chips.component.html","../../../projects/ngx-widgets/src/public-api.ts","../../../projects/ngx-widgets/src/gerandon-ngx-widgets.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef, Directive,\n ElementRef, inject,\n Injector, OnDestroy, Type,\n ViewChild,\n input\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor, FormControl,\r\n NgControl,\r\n ValidationErrors,\r\n Validator, ValidatorFn,\r\n} from '@angular/forms';\r\n\r\nimport {Observable, of, Subject} from 'rxjs';\r\n\r\n@Directive()\r\nexport class BaseValueAccessor<T> implements ControlValueAccessor, AfterViewInit, Validator, OnDestroy {\r\n\r\n public readonly validator = input<Observable<ValidationErrors>>(of({}));\r\n @ViewChild('inputElement') inputElement!: ElementRef;\r\n @ViewChild('input') input!: NgControl;\r\n\r\n public control: FormControl;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n private onChange = (value: T) => {\r\n };\r\n private onTouched = () => {\r\n };\r\n private readonly injector: Injector = inject(Injector);\r\n protected controlDir!: NgControl;\r\n protected readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n protected _validate: ValidatorFn;\r\n protected readonly _defaultValidate: ValidatorFn = () => null;\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n constructor() {\r\n this._validate = this._defaultValidate;\r\n // Temporarily, AfterViewInit will handle the correct setting\r\n this.control = new FormControl();\r\n }\r\n\r\n validate(control: AbstractControl): Observable<ValidationErrors> {\r\n control.setErrors({ ...control.errors, pending: true });\r\n return this.validator();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.controlDir = this.injector.get<NgControl>(NgControl as Type<NgControl>);\r\n this.control = <FormControl>this.controlDir.control;\r\n // For ng-valid expression changed error workaround purposes\r\n this.cdr.detectChanges();\r\n }\r\n\r\n writeValue(obj: T): void {\r\n this.valueAccessor?.writeValue(obj);\r\n }\r\n\r\n registerOnChange(fn: (value: T) => unknown): void {\r\n this.onChange = fn;\r\n this.valueAccessor?.registerOnChange(fn);\r\n }\r\n\r\n registerOnTouched(fn: () => unknown) {\r\n this.onTouched = fn;\r\n this.valueAccessor?.registerOnTouched(fn);\r\n }\r\n\r\n protected get valueAccessor(): ControlValueAccessor | null {\r\n return this.input ? this.input.valueAccessor : null;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive, Inject, inject, InjectionToken,\r\n Input, OnChanges,\r\n OnInit, Optional, SimpleChanges,\r\n input, signal, WritableSignal\r\n} from '@angular/core';\r\nimport {\r\n FloatLabelType,\r\n MAT_FORM_FIELD_DEFAULT_OPTIONS,\r\n MatFormFieldAppearance,\r\n SubscriptSizing\r\n} from '@angular/material/form-field';\r\n\r\nimport {BaseValueAccessor} from './base-value-accessor';\r\nimport {isEmpty, keys} from 'lodash-es';\r\nimport {LiveAnnouncer} from \"@angular/cdk/a11y\";\r\nimport {ThemePalette} from \"@angular/material/core\";\r\nimport {startWith, takeUntil} from \"rxjs\";\r\n\r\nexport interface NgxWidgetsValidationErrorTypes {\r\n required?: string;\r\n selectGlobalPlaceholder?: string;\r\n}\r\n\r\nexport const NGX_WIDGETS_VALIDATION_TRANSLATIONS = new InjectionToken<NgxWidgetsValidationErrorTypes>('NGX_WIDGETS_VALIDATION_TRANSLATIONS');\r\n/**\r\n * @deprecated\r\n * This token is deprecated and will be removed in Angular v21. Use MAT_FORM_FIELD_DEFAULT_OPTIONS instead.\r\n */\r\nexport const NGX_WIDGETS_FORM_FIELD_APPEARANCE = new InjectionToken<MatFormFieldAppearance>('NGX_WIDGETS_FORM_FIELD_APPEARANCE');\r\n\r\n@Directive()\r\nexport class BaseInput<T, ANNOUNCER_TYPE = object> extends BaseValueAccessor<T> implements OnInit, AfterViewInit, OnChanges {\r\n\r\n public readonly appearance = input<MatFormFieldAppearance>();\r\n protected readonly _appearance: WritableSignal<MatFormFieldAppearance>;\r\n public readonly color = input<ThemePalette>();\r\n protected readonly _color: WritableSignal<ThemePalette>;\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public id!: string;\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public name!: string;\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public label!: string;\r\n public readonly translateParams = input<unknown>();\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public placeholder!: string;\r\n public readonly isDisabled = input<boolean | undefined>(false);\r\n public readonly floatLabel = input<FloatLabelType>('auto');\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public prefixIcon?: string;\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public suffixIcon?: string;\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public suffix?: string;\r\n public readonly formControlName = input<string>();\r\n public readonly validatorMessages = input<{\r\n [key: string]: string;\r\n }>();\r\n public readonly subscriptSizing = input<SubscriptSizing>('fixed');\r\n public readonly hintLabel = input('');\r\n public readonly ariaLabel = input('', { alias: 'aria-label' });\r\n public readonly ariaPlaceholder = input('', { alias: 'aria-placeholder' });\r\n public readonly ariaDescribedBy = input('', { alias: 'aria-describedby' });\r\n public readonly ariaDescription = input('', { alias: 'aria-description' });\r\n protected controlErrorKeys: string[] = [];\r\n private readonly liveAnnouncer = inject(LiveAnnouncer);\r\n private readonly matFormFieldConfig = inject(MAT_FORM_FIELD_DEFAULT_OPTIONS);\r\n public readonly announcerTranslations = input<ANNOUNCER_TYPE>();\r\n public validatorMessagesArray: { key: string, value: unknown }[] = [];\r\n protected _defaultAnnouncerTranslations?: { [P in keyof ANNOUNCER_TYPE]-?: ANNOUNCER_TYPE[P] };\r\n\r\n constructor(@Optional() @Inject(NGX_WIDGETS_VALIDATION_TRANSLATIONS) protected readonly validationTranslations: NgxWidgetsValidationErrorTypes | any = {}) {\r\n super();\r\n this._appearance = signal<MatFormFieldAppearance>(this.matFormFieldConfig.appearance ?? 'fill');\r\n this._color = signal<ThemePalette>(this.matFormFieldConfig.color ?? 'primary');\r\n }\r\n\r\n ngOnInit() {\r\n this.placeholder = this.placeholder === undefined ? this.label : this.placeholder;\r\n if (!this.name) {\r\n this.name = this.formControlName()!;\r\n /*\r\n console.warn(`name attribute is not defined for ${this.formControlName}! Please beware, that using this control multiple\r\n times with the same control name could result in wrong focus, clicking on the label!`);\r\n */\r\n }\r\n // *ngIf seems like does not re-render component when label is used with dynamic value (e.g.: translate pipe). Strange\r\n this.label = this.label || ' ';\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['validatorMessages']) {\r\n const validatorMessages = this.validatorMessages();\r\n if (!isEmpty(validatorMessages)) {\r\n this.validatorMessagesArray = keys(validatorMessages).map((key) => ({\r\n key,\r\n value: this.validatorMessages()![key],\r\n }));\r\n }\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this.cdr.detectChanges();\r\n this.control.statusChanges.pipe(\r\n startWith(this.control.status),\r\n takeUntil(this.destroy$),\r\n ).subscribe(() => {\r\n if (!this.control.hasError('server')) {\r\n this.controlErrorKeys = keys(this.control.errors).map((key) => key);\r\n }\r\n });\r\n }\r\n\r\n protected announce(key: keyof ANNOUNCER_TYPE | string) {\r\n if (this._defaultAnnouncerTranslations?.[key as keyof ANNOUNCER_TYPE]) {\r\n const _key = key as keyof ANNOUNCER_TYPE\r\n const inputTranslation = this.announcerTranslations()?.[_key] as string;\r\n if (inputTranslation) {\r\n return this.liveAnnouncer.announce(inputTranslation, 'assertive');\r\n } else {\r\n return this.liveAnnouncer.announce(this._defaultAnnouncerTranslations![_key] as string, 'assertive');\r\n }\r\n } else {\r\n return this.liveAnnouncer.announce(key as string, 'assertive');\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n input\r\n} from '@angular/core';\r\n\r\nimport { BaseInput } from './base-input';\r\n\r\n@Directive()\r\nexport class BaseTextInput<T, ANNOUNCER_TYPE = object> extends BaseInput<T, ANNOUNCER_TYPE> {\r\n\r\n public readonly type = input<('text' | 'password' | 'number' | 'email' | 'tel')>('text');\r\n public readonly maxLength = input<number | undefined>(512);\r\n}\r\n","import {BaseTextInput} from \"./base-text-input\";\nimport {AfterViewInit, Directive, ViewChild, input} from \"@angular/core\";\nimport {NgxMaskDirective} from \"ngx-mask\";\n\n@Directive()\nexport class BaseMaskInput extends BaseTextInput<string> implements AfterViewInit {\n\n public readonly mask = input<string>();\n public readonly showMaskTyped = input(false);\n public readonly dropSpecialCharacters = input<string[] | boolean | readonly string[] | null>();\n public readonly specialCharacters = input<string[]>();\n public readonly placeHolderCharacter = input<string>('_');\n public readonly maskPrefix = input<string>('');\n public readonly maskSuffix = input<string>('');\n\n @ViewChild('maskInput') maskInput!: NgxMaskDirective;\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n if (this.maskInput) {\n this.maskInput._maskService.dropSpecialCharacters = this.dropSpecialCharacters()!;\n this.maskInput['_applyMask']();\n }\n }\n}\n","import { isDevMode } from '@angular/core';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SafeSubscriber } from 'rxjs/internal/Subscriber';\n\n/**\n * Automatically unsubscribe from an Observable when the view is destroyed\n * Tested with checking the \"complete\" event of a subscribe method\n * @description\n * An Annotation that should be used with an Observable typed variable to handle its subscriptions\n * @author gergo.asztalos\n */\nexport function UnsubscribeOnDestroy<ObservableType>(): PropertyDecorator {\n return function (target: any, propertyKey: string | symbol) {\n const ngOnDestroy = target.ngOnDestroy;\n\n const secretKey = `_${<string>propertyKey}$`;\n // Probably with function we could use own context\n const destroyKey = (_this: any) =>\n _this.hasOwnProperty('destroy$') ? 'destroy$' : `${_this.constructor.name}_destroy$`;\n Object.defineProperty(target, secretKey, { enumerable: false, writable: true });\n Object.defineProperty(target, propertyKey, {\n configurable: true,\n enumerable: true,\n get: function() {\n return this[secretKey];\n },\n set: function(newValue: Observable<ObservableType> | SafeSubscriber<ObservableType>) {\n if (!this[destroyKey(this)]) {\n this[destroyKey(this)] = new Subject();\n }\n if (newValue instanceof Observable) {\n this[secretKey] = newValue.pipe(\n takeUntil(this[destroyKey(this)]),\n );\n } else {\n this[secretKey] = newValue;\n }\n },\n });\n\n target.ngOnDestroy = function () {\n if (this[propertyKey] instanceof SafeSubscriber) {\n this[propertyKey].unsubscribe();\n this[secretKey].unsubscribe();\n } else if (this.hasOwnProperty(destroyKey(this))) {\n this[destroyKey(this)].next();\n this[destroyKey(this)].complete();\n }\n delete this[secretKey];\n if (isDevMode()) {\n // eslint-disable-next-line no-console,max-len\n console.debug(`<UnsubscribeOnDestroy> - Observable/Subscription <${<string>propertyKey}> completed in class: ${this.constructor.name}`);\n }\n ngOnDestroy && ngOnDestroy.call(this);\n };\n };\n}\n","import {\n Component,\n forwardRef,\n OnInit,\n ViewEncapsulation,\n output\n} from '@angular/core';\r\nimport { NG_ASYNC_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport {NgIf} from \"@angular/common\";\r\nimport {NgxMaskDirective} from \"ngx-mask\";\r\nimport {BaseMaskInput} from \"../core/base-mask-input\";\r\n\r\n@Component({\r\n selector: 'gerandon-basic-input',\r\n templateUrl: './basic-input.component.html',\r\n styleUrls: ['./basic-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n NgIf,\r\n NgxMaskDirective,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicInputComponent), multi: true },\r\n { provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => BasicInputComponent), multi: true },\r\n ],\r\n})\r\nexport class BasicInputComponent extends BaseMaskInput implements OnInit {\r\n\r\n readonly iconClick = output();\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this.id = this.id || this.name;\r\n }\r\n}\r\n","<div class=\"basic-input cva-input\">\r\n <mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [hintLabel]=\"hintLabel()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{label}}</mat-label>\r\n }\r\n @if(mask()) {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #maskInput=\"ngxMask\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n [mask]=\"mask()\"\r\n [triggerOnMaskChange]=\"true\"\r\n [showMaskTyped]=\"showMaskTyped()\"\r\n [specialCharacters]=\"specialCharacters()!\"\r\n [placeHolderCharacter]=\"placeHolderCharacter()!\"\r\n [prefix]=\"maskPrefix()\"\r\n [suffix]=\"maskSuffix()\"\r\n />\r\n } @else {\r\n <input\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n matInput\r\n [style.padding-right]=\"(suffix || prefixIcon) && '35px'\"\r\n [type]=\"type()\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\"\r\n />\r\n }\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix style=\"margin-right: 10px\">{{suffix}}</span>\r\n }\r\n\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewChildren,\r\n ViewEncapsulation,\r\n input\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport {BaseInput} from '../core/base-input';\r\nimport { isEqual } from 'lodash-es';\r\nimport { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nexport interface SelectOptionType {\r\n label: string;\r\n value: string | number | null | unknown;\r\n}\r\n\r\ninterface SelectAnnouncerTranslations {\r\n inputReset?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'gerandon-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true }\r\n ],\r\n imports: [\r\n MatInputModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n MatTooltipModule,\r\n ],\r\n})\r\nexport class SelectComponent extends BaseInput<unknown, SelectAnnouncerTranslations> implements OnInit {\r\n\r\n /**\r\n * In this case, an empty option appears that resets the control, to an empty value state\r\n */\r\n // TODO: Skipped for migration because:\r\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\r\n // and migrating would break narrowing currently.\r\n @Input() public emptyOptionLabel?: string;\r\n @Input() public emptyOptionAriaLabel?: string = 'Üres';\r\n public readonly multiple = input<boolean>();\r\n // TODO: Skipped for migration because:\r\n // Your application code writes to the input. This prevents migration.\r\n @Input() public options!: SelectOptionType[];\r\n public readonly asyncOptions = input<Observable<SelectOptionType[]>>();\r\n @ViewChildren('optionElements') public optionElements!: QueryList<ElementRef>;\r\n protected override _defaultAnnouncerTranslations: { [P in keyof SelectAnnouncerTranslations]-?: SelectAnnouncerTranslations[P] } = {\r\n inputReset: 'Lenyíló mező törölve!'\r\n }\r\n\r\n /**\r\n * Angular Material - Select component comparsion is only '===', does not work with Array values\r\n * https://github.com/angular/components/blob/a07c0758a5ec2eb4de1bb822354be08178c66aa4/src/lib/select/select.ts#L242C48-L242C58\r\n */\r\n public readonly _isEqual = isEqual;\r\n\r\n override ngOnInit() {\r\n this.placeholder = !this.placeholder ? (this.validationTranslations?.selectGlobalPlaceholder || this.label) : this.placeholder;\r\n super.ngOnInit();\r\n this.id = this.id || this.formControlName() || this.name;\r\n const asyncOptions = this.asyncOptions();\r\n if (asyncOptions) {\r\n asyncOptions.pipe(takeUntil(this.destroy$)).subscribe((resp) => {\r\n this.options = resp;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n reset() {\r\n this.control.reset();\r\n this.announce('inputReset');\r\n }\r\n}\r\n","<mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label>{{ label }}</mat-label>\r\n }\r\n <mat-select #inputElement\r\n #input=\"ngForm\"\r\n [multiple]=\"multiple()\"\r\n [placeholder]=\"!floatLabel() ? label : placeholder\"\r\n [formControl]=\"control\"\r\n [id]=\"id\"\r\n [class.input-disabled]=\"isDisabled() || control.disabled\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [compareWith]=\"_isEqual\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\">\r\n @if (emptyOptionLabel) {\r\n <mat-option (click)=\"reset()\" [attr.aria-label]=\"emptyOptionAriaLabel\">\r\n {{ emptyOptionLabel }}\r\n </mat-option>\r\n }\r\n @for(option of options; track option) {\r\n <mat-option [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n</mat-form-field>\r\n","import {Component, forwardRef, ViewEncapsulation, input, AfterViewInit, inject} from '@angular/core';\r\nimport { FormsModule, NG_ASYNC_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {BaseTextInput} from \"../core/base-text-input\";\r\nimport {takeUntil} from \"rxjs\";\r\nimport {LiveAnnouncer} from \"@angular/cdk/a11y\";\r\n\r\ninterface TextareaAnnouncerTranslations {\r\n maxLengthReached?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'gerandon-textarea-input',\r\n templateUrl: 'textarea-input.component.html',\r\n styleUrls: ['textarea-input.component.scss'],\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n ],\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaInputComponent), multi: true },\r\n { provide: NG_ASYNC_VALIDATORS, useExisting: forwardRef(() => TextareaInputComponent), multi: true },\r\n ],\r\n})\r\nexport class TextareaInputComponent extends BaseTextInput<string> implements AfterViewInit {\r\n\r\n public readonly rows = input(10);\r\n protected override _defaultAnnouncerTranslations: { [P in keyof TextareaAnnouncerTranslations]-?: TextareaAnnouncerTranslations[P] } = {\r\n maxLengthReached: 'Elérte a maximális karakter számot!',\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this.control.valueChanges.pipe(\r\n takeUntil(this.destroy$)\r\n ).subscribe((value) => {\r\n if (value.length !== 0 && value.length >= (this.maxLength() ?? 0)) {\r\n this.announce('maxLengthReached');\r\n }\r\n })\r\n }\r\n}\r\n","<div class=\"textarea-input cva-input\">\r\n <mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <textarea\r\n [id]=\"id\"\r\n #inputElement\r\n #input=\"ngForm\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n matInput\r\n cdkTextareaAutosize\r\n [cdkAutosizeMinRows]=\"rows()\"\r\n class=\"w-100 cva-control\"\r\n [attr.disabled]=\"isDisabled() || control.disabled ? '' : null\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [readonly]=\"isDisabled()\"\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"control\"\r\n [maxLength]=\"maxLength()\"\r\n [name]=\"name\">\r\n </textarea>\r\n <span class=\"counter\">{{control.value?.length || 0}} / {{ maxLength() }}</span>\r\n @if (prefixIcon) {\r\n <mat-icon matPrefix color=\"accent\">\r\n {{prefixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffixIcon) {\r\n <mat-icon matSuffix color=\"accent\">\r\n {{suffixIcon}}\r\n </mat-icon>\r\n }\r\n @if (suffix) {\r\n <span matSuffix>{{suffix}}</span>\r\n }\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n</div>\r\n","import {COMMA, ENTER} from '@angular/cdk/keycodes';\nimport {AsyncPipe} from '@angular/common';\nimport {\n Component,\n forwardRef,\n Input,\n ViewEncapsulation,\n input,\n viewChild,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\nimport {MatAutocompleteModule, MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';\nimport {MatChipInputEvent, MatChipsModule} from '@angular/material/chips';\nimport {MatIconModule} from '@angular/material/icon';\n\nimport {debounceTime, map, Observable, of, Subject, switchMap, tap} from 'rxjs';\nimport {BaseInput} from \"../core/base-input\";\nimport {MatError, MatFormField, MatLabel} from \"@angular/material/form-field\";\nimport {MatInput} from \"@angular/material/input\";\nimport {find, isEqual} from \"lodash-es\";\n\ninterface ChipsAnnouncerTranslations {\n asyncFilterStart?: string;\n asyncFilterEnd?: string;\n itemRemoved?: string;\n itemAdded?: string;\n selectableItems?: string;\n}\n\n@Component({\n selector: 'gerandon-basic-chips',\n templateUrl: 'basic-chips.component.html',\n styleUrls: ['basic-chips.component.scss'],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n providers: [{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BasicChipsComponent), multi: true}],\n imports: [\n MatChipsModule,\n MatIconModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n AsyncPipe,\n MatFormField,\n MatInput,\n MatLabel,\n MatError,\n ],\n})\nexport class BasicChipsComponent<T> extends BaseInput<T[], ChipsAnnouncerTranslations> implements OnInit {\n\n public readonly tsFilterInput = viewChild<ElementRef>('inputElement');\n public readonly asyncFilterFn = input<(value: string) => Observable<T[]>>();\n public readonly asyncOptions = input<Observable<T[]>>();\n public readonly startTypingLabel = input('Kezdjen el gépelni...');\n public readonly emptyListLabel = input('Nincs megjeleníthető elem!');\n /**\n * How much character you need to type before triggering search\n */\n public readonly startAsyncFnAt = input<number>(1);\n // TODO: Skipped for migration because:\n // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)\n // and migrating would break narrowing currently.\n @Input() public labelProperty?: keyof T;\n public readonly separatorKeysCodes = [ENTER, COMMA] as const;\n public filterOptions$?: Observable<T[]>;\n protected _hintLabel!: string;\n private readonly inputChange = new Subject<string>();\n protected override _defaultAnnouncerTranslations: { [P in keyof ChipsAnnouncerTranslations]-?: ChipsAnnouncerTranslations[P] } = {\n asyncFilterStart: 'Szerver keresés elindítva',\n asyncFilterEnd: 'A szerver keresés lefutott',\n selectableItems: 'Választható elemek:',\n itemRemoved: 'Elem sikeresen eltávolítva',\n itemAdded: 'Elem hozzáadva'\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this._hintLabel = this.hintLabel();\n if (this.asyncFilterFn()) {\n this.filterOptions$ = this.inputChange.pipe(\n debounceTime(300),\n tap(() => this.announce('asyncFilterStart')),\n switchMap((value) => {\n if (value && value.length >= this.startAsyncFnAt()) {\n return this.asyncFilterFn()!(value).pipe(\n map((responseList) => {\n this.announce('asyncFilterEnd');\n return responseList.filter((responseListItem) => {\n return !find(this.control.value, (controlAct) => isEqual(controlAct, responseListItem));\n })\n })\n );\n }\n return of([]);\n }),\n tap((responseList) => {\n this.announce('selectableItems').then(() => {\n this.announce(responseList.map((act) => this.labelProperty ? act[this.labelProperty] : act).join(','))\n });\n if (!this.tsFilterInput()?.nativeElement.value && !this.control.value) {\n this._hintLabel = this.hintLabel() ?? 'Kezdjen el gépelni...';\n } else {\n this._hintLabel = !responseList.length ? this.emptyListLabel() : '';\n }\n })\n )\n } else {\n this.filterOptions$ = this.asyncOptions();\n }\n }\n\n filter() {\n const filterValue = this.tsFilterInput()!.nativeElement.value;\n this.inputChange.next(filterValue);\n }\n\n remove(item: T) {\n const values: T[] = this.control.value;\n const index = values.indexOf(item);\n if (index >= 0) {\n values.splice(index, 1);\n this.control.setValue(values);\n }\n\n this.mark();\n this.announce('itemRemoved');\n }\n\n add(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n if (value) {\n this.updateValue(value as T);\n }\n event.chipInput!.clear();\n\n this.mark();\n this.announce('itemAdded');\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n if (!this.control.value?.includes(event.option.value)) {\n this.updateValue(<T>event.option.value);\n }\n this.inputElement.nativeElement.value = '';\n\n this.mark();\n }\n\n private updateValue(value: T) {\n this.control.setValue([\n ...(this.control.value || []),\n value,\n ]);\n }\n\n private mark() {\n if (!this.control.touched) {\n this.control.markAsTouched();\n this.control.markAsDirty();\n }\n }\n}\n","<mat-form-field [appearance]=\"appearance() ?? _appearance()\"\r\n [color]=\"color() ?? _color()\"\r\n [subscriptSizing]=\"subscriptSizing()\"\r\n [hintLabel]=\"_hintLabel\"\r\n [floatLabel]=\"floatLabel()\">\r\n @if (label) {\r\n <mat-label [class.disabled]=\"isDisabled()\">{{ label }}</mat-label>\r\n }\r\n <mat-chip-grid #chipGrid class=\"w-100\">\r\n @for(item of control.value; track item) {\r\n <mat-chip-row (removed)=\"remove(item)\" color=\"primary\" highlighted>\r\n {{ labelProperty ? item[labelProperty] : item}}\r\n <button matChipRemove [attr.aria-label]=\"(labelProperty ? item[labelProperty] : item) + ' eltávolítása'\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n <input #inputElement\r\n matInput\r\n [placeholder]=\"placeholder || label\"\r\n [matAutocomplete]=\"auto\"\r\n (input)=\"filter()\"\r\n [attr.aria-placeholder]=\"ariaPlaceholder() || placeholder\"\r\n [attr.aria-label]=\"ariaLabel() || label\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-description]=\"ariaDescription()\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"!labelProperty && add($event)\"/>\r\n <mat-autocomplete #auto=\"matAutocomplete\"\r\n (optionSelected)=\"selected($event)\">\r\n @for (filterItem of filterOptions$ | async; track filterItem) {\r\n <mat-option [value]=\"filterItem\" [attr.aria-label]=\"labelProperty ? filterItem[labelProperty] : filterItem\">\r\n {{labelProperty ? filterItem[labelProperty] : filterItem}}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-chip-grid>\r\n <input #input=\"ngForm\" [style.display]=\"'none'\" [formControl]=\"control\" />\r\n @if (control.errors?.['server']) {\r\n <mat-error>{{ control.errors?.['server'] }}</mat-error>\r\n }\r\n @for (errorKey of controlErrorKeys; track errorKey) {\r\n <mat-error>\r\n @if(validatorMessages()?.[errorKey]) {\r\n {{ validatorMessages()![errorKey] }}\r\n } @else if (!!validationTranslations?.[errorKey]) {\r\n {{ validationTranslations[errorKey] }}\r\n }\r\n </mat-error>\r\n }\r\n</mat-form-field>\r\n","/*\n * Public API Surface of ngx-widgets\n */\n\nexport * from './lib/core/base-value-accessor';\nexport * from './lib/core/base-input';\nexport * from './lib/core/base-text-input';\nexport * from './lib/core/base-mask-input';\nexport * from './lib/core/component-unsubscribe';\n\nexport * from './lib/basic-input/basic-input.component';\nexport * from './lib/select/select.component';\nexport * from './lib/textarea-input/textarea-input.component';\nexport * from './lib/basic-chips/basic-chips.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil","i1","i2","i3","i4","i5"],"mappings":"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"}
|
package/index.d.ts
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
2
|
-
import { AfterViewInit, OnDestroy, ElementRef, ChangeDetectorRef, InjectionToken, OnInit, OnChanges, SimpleChanges, QueryList } from '@angular/core';
|
2
|
+
import { AfterViewInit, OnDestroy, ElementRef, ChangeDetectorRef, InjectionToken, OnInit, OnChanges, WritableSignal, SimpleChanges, QueryList } from '@angular/core';
|
3
3
|
import { ControlValueAccessor, Validator, ValidationErrors, NgControl, FormControl, ValidatorFn, AbstractControl } from '@angular/forms';
|
4
4
|
import { Observable, Subject } from 'rxjs';
|
5
5
|
import { MatFormFieldAppearance, FloatLabelType, SubscriptSizing } from '@angular/material/form-field';
|
6
|
+
import { ThemePalette } from '@angular/material/core';
|
6
7
|
import { NgxMaskDirective } from 'ngx-mask';
|
7
8
|
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
8
9
|
import { MatChipInputEvent } from '@angular/material/chips';
|
@@ -37,12 +38,17 @@ interface NgxWidgetsValidationErrorTypes {
|
|
37
38
|
selectGlobalPlaceholder?: string;
|
38
39
|
}
|
39
40
|
declare const NGX_WIDGETS_VALIDATION_TRANSLATIONS: InjectionToken<NgxWidgetsValidationErrorTypes>;
|
41
|
+
/**
|
42
|
+
* @deprecated
|
43
|
+
* This token is deprecated and will be removed in Angular v21. Use MAT_FORM_FIELD_DEFAULT_OPTIONS instead.
|
44
|
+
*/
|
40
45
|
declare const NGX_WIDGETS_FORM_FIELD_APPEARANCE: InjectionToken<MatFormFieldAppearance>;
|
41
46
|
declare class BaseInput<T, ANNOUNCER_TYPE = object> extends BaseValueAccessor<T> implements OnInit, AfterViewInit, OnChanges {
|
42
47
|
protected readonly validationTranslations: NgxWidgetsValidationErrorTypes | any;
|
43
|
-
protected readonly formFieldAppearance: MatFormFieldAppearance;
|
44
48
|
readonly appearance: _angular_core.InputSignal<MatFormFieldAppearance | undefined>;
|
45
|
-
protected readonly _appearance:
|
49
|
+
protected readonly _appearance: WritableSignal<MatFormFieldAppearance>;
|
50
|
+
readonly color: _angular_core.InputSignal<ThemePalette>;
|
51
|
+
protected readonly _color: WritableSignal<ThemePalette>;
|
46
52
|
id: string;
|
47
53
|
name: string;
|
48
54
|
label: string;
|
@@ -63,7 +69,9 @@ declare class BaseInput<T, ANNOUNCER_TYPE = object> extends BaseValueAccessor<T>
|
|
63
69
|
readonly ariaPlaceholder: _angular_core.InputSignal<string>;
|
64
70
|
readonly ariaDescribedBy: _angular_core.InputSignal<string>;
|
65
71
|
readonly ariaDescription: _angular_core.InputSignal<string>;
|
72
|
+
protected controlErrorKeys: string[];
|
66
73
|
private readonly liveAnnouncer;
|
74
|
+
private readonly matFormFieldConfig;
|
67
75
|
readonly announcerTranslations: _angular_core.InputSignal<ANNOUNCER_TYPE | undefined>;
|
68
76
|
validatorMessagesArray: {
|
69
77
|
key: string;
|
@@ -72,13 +80,13 @@ declare class BaseInput<T, ANNOUNCER_TYPE = object> extends BaseValueAccessor<T>
|
|
72
80
|
protected _defaultAnnouncerTranslations?: {
|
73
81
|
[P in keyof ANNOUNCER_TYPE]-?: ANNOUNCER_TYPE[P];
|
74
82
|
};
|
75
|
-
constructor(validationTranslations
|
83
|
+
constructor(validationTranslations?: NgxWidgetsValidationErrorTypes | any);
|
76
84
|
ngOnInit(): void;
|
77
85
|
ngOnChanges(changes: SimpleChanges): void;
|
78
86
|
ngAfterViewInit(): void;
|
79
87
|
protected announce(key: keyof ANNOUNCER_TYPE | string): Promise<void>;
|
80
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseInput<any, any>, [{ optional: true; }
|
81
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseInput<any, any>, never, never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "translateParams": { "alias": "translateParams"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "suffix": { "alias": "suffix"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; "isSignal": true; }; "validatorMessages": { "alias": "validatorMessages"; "required": false; "isSignal": true; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; "isSignal": true; }; "hintLabel": { "alias": "hintLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaPlaceholder": { "alias": "aria-placeholder"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "ariaDescription": { "alias": "aria-description"; "required": false; "isSignal": true; }; "announcerTranslations": { "alias": "announcerTranslations"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
88
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BaseInput<any, any>, [{ optional: true; }]>;
|
89
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseInput<any, any>, never, never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "translateParams": { "alias": "translateParams"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "suffixIcon": { "alias": "suffixIcon"; "required": false; }; "suffix": { "alias": "suffix"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; "isSignal": true; }; "validatorMessages": { "alias": "validatorMessages"; "required": false; "isSignal": true; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; "isSignal": true; }; "hintLabel": { "alias": "hintLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaPlaceholder": { "alias": "aria-placeholder"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "ariaDescription": { "alias": "aria-description"; "required": false; "isSignal": true; }; "announcerTranslations": { "alias": "announcerTranslations"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
82
90
|
}
|
83
91
|
|
84
92
|
declare class BaseTextInput<T, ANNOUNCER_TYPE = object> extends BaseInput<T, ANNOUNCER_TYPE> {
|