@klippa/ngx-enhancy-forms 18.25.7 → 18.26.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.
@@ -165,6 +165,7 @@ class FormComponent {
165
165
  this.showErrorMessages = true;
166
166
  this.errorMessageLocation = 'belowCaption';
167
167
  this.warnings = new Map();
168
+ this.immutableValues = new Map();
168
169
  this.errors = new Map();
169
170
  this.allowSubmitOn = 'buttonAndEnter';
170
171
  this.onInjected = new EventEmitter();
@@ -213,6 +214,15 @@ class FormComponent {
213
214
  if (simpleChanges.readOnly?.currentValue === true) {
214
215
  this.activeControls.forEach(e => e.formControl.disable());
215
216
  }
217
+ if (isValueSet(simpleChanges.immutableValues?.currentValue)) {
218
+ simpleChanges.immutableValues?.previousValue?.forEach((value, key) => {
219
+ this.getFormElementByFormControl(key)?.getAttachedInput().setImmutableValue(undefined);
220
+ });
221
+ simpleChanges.immutableValues?.currentValue.forEach((value, key) => {
222
+ this.getFormElementByFormControl(key)?.getAttachedInput().setImmutableValue(value);
223
+ });
224
+ this.patchImmutableValuesMap();
225
+ }
216
226
  if (isValueSet(simpleChanges.warnings?.currentValue)) {
217
227
  this.patchFormWarningsMap();
218
228
  }
@@ -236,6 +246,25 @@ class FormComponent {
236
246
  }
237
247
  }
238
248
  }
249
+ patchImmutableValuesMap() {
250
+ const setFn = this.immutableValues.set;
251
+ this.immutableValues.set = (key, value) => {
252
+ console.log('calling set', key, value);
253
+ const prevVal = this.immutableValues.get(key);
254
+ const result = setFn.call(this.immutableValues, key, value);
255
+ if (prevVal !== value) {
256
+ console.log('setting immutable value', key, value);
257
+ this.getFormElementByFormControl(key)?.getAttachedInput().setImmutableValue(value);
258
+ }
259
+ return result;
260
+ };
261
+ const deleteFn = this.immutableValues.delete;
262
+ this.immutableValues.delete = (key) => {
263
+ const result = deleteFn.call(this.immutableValues, key);
264
+ this.getFormElementByFormControl(key)?.getAttachedInput().setImmutableValue(undefined);
265
+ return result;
266
+ };
267
+ }
239
268
  patchFormWarningsMap() {
240
269
  const setFn = this.warnings.set;
241
270
  this.warnings.set = (key, value) => {
@@ -299,6 +328,10 @@ class FormComponent {
299
328
  enableFn.call(formControl, opts);
300
329
  }
301
330
  };
331
+ const value = this.immutableValues?.get(formControl);
332
+ if (isValueSet(value)) {
333
+ formElement.getAttachedInput().setImmutableValue(value);
334
+ }
302
335
  }
303
336
  unregisterControl(formControl) {
304
337
  this.activeControls = this.activeControls.filter((e) => e.formControl !== formControl);
@@ -444,7 +477,7 @@ class FormComponent {
444
477
  });
445
478
  }
446
479
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FormComponent, deps: [{ token: FormComponent, optional: true, skipSelf: true }, { token: SubFormDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
447
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FormComponent, selector: "klp-form", inputs: { readOnly: "readOnly", showErrorMessages: "showErrorMessages", errorMessageLocation: "errorMessageLocation", formGroup: "formGroup", formArray: "formArray", warnings: "warnings", errors: "errors", patchValueInterceptor: "patchValueInterceptor", allowSubmitOn: "allowSubmitOn" }, outputs: { onInjected: "onInjected" }, usesOnChanges: true, ngImport: i0, template: "<form>\n\t<ng-content></ng-content>\n</form>\n\n\n", styles: [":host{display:block}:host.row{display:flex}:host form{height:inherit}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
480
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FormComponent, selector: "klp-form", inputs: { readOnly: "readOnly", showErrorMessages: "showErrorMessages", errorMessageLocation: "errorMessageLocation", formGroup: "formGroup", formArray: "formArray", warnings: "warnings", immutableValues: "immutableValues", errors: "errors", patchValueInterceptor: "patchValueInterceptor", allowSubmitOn: "allowSubmitOn" }, outputs: { onInjected: "onInjected" }, usesOnChanges: true, ngImport: i0, template: "<form>\n\t<ng-content></ng-content>\n</form>\n\n\n", styles: [":host{display:block}:host.row{display:flex}:host form{height:inherit}\n"], dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
448
481
  }
449
482
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FormComponent, decorators: [{
450
483
  type: Component,
@@ -467,6 +500,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
467
500
  type: Input
468
501
  }], warnings: [{
469
502
  type: Input
503
+ }], immutableValues: [{
504
+ type: Input
470
505
  }], errors: [{
471
506
  type: Input
472
507
  }], patchValueInterceptor: [{
@@ -626,8 +661,8 @@ class FormElementComponent {
626
661
  }
627
662
  registerControl(formControl, input = null) {
628
663
  this.attachedControl = formControl;
629
- this.parent.registerControl(formControl, this);
630
664
  this.input = input;
665
+ this.parent.registerControl(formControl, this);
631
666
  const subscription = this.attachedControl.statusChanges.subscribe(() => {
632
667
  this.determinePopupState();
633
668
  });
@@ -880,6 +915,7 @@ class ValueAccessorBase {
880
915
  this.changed = new Array();
881
916
  this.touched = new Array();
882
917
  this.prevValue = null;
918
+ this.immutableValue = undefined;
883
919
  this.disabled = false;
884
920
  // we support both providing just the formControlName and the full formControl
885
921
  this.formControlName = null;
@@ -922,6 +958,12 @@ class ValueAccessorBase {
922
958
  this.parent?.registerControl(this.attachedFormControl, this);
923
959
  }
924
960
  }
961
+ setImmutableValue(value) {
962
+ this.immutableValue = value;
963
+ if (value !== undefined) {
964
+ this.writeValue(value);
965
+ }
966
+ }
925
967
  isInErrorState() {
926
968
  if (this.inErrorState) {
927
969
  return true;
@@ -938,8 +980,13 @@ class ValueAccessorBase {
938
980
  this.onTouch.emit();
939
981
  }
940
982
  writeValue(value) {
941
- this.innerValue = value;
942
983
  this.prevValue = value;
984
+ if (this.immutableValue !== undefined) {
985
+ this.innerValue = this.immutableValue;
986
+ }
987
+ else {
988
+ this.innerValue = value;
989
+ }
943
990
  }
944
991
  registerOnChange(fn) {
945
992
  this.changed.push(fn);
@@ -949,9 +996,15 @@ class ValueAccessorBase {
949
996
  }
950
997
  setInnerValueAndNotify(value) {
951
998
  const actuallySetValue = (valueToSet) => {
952
- this.innerValue = valueToSet;
953
999
  this.prevValue = valueToSet;
954
- this.changed.forEach((fn) => fn(valueToSet));
1000
+ if (this.immutableValue !== undefined) {
1001
+ this.innerValue = this.immutableValue;
1002
+ this.changed.forEach((fn) => fn(this.immutableValue));
1003
+ }
1004
+ else {
1005
+ this.innerValue = valueToSet;
1006
+ this.changed.forEach((fn) => fn(valueToSet));
1007
+ }
955
1008
  };
956
1009
  if (isValueSet(this.innerValueChangeInterceptor)) {
957
1010
  this.latestInnerValueChangedInterceptorPromise = this.innerValueChangeInterceptor(this.prevValue, value);
@@ -1984,6 +2037,8 @@ class DateTimePickerComponent extends MultipleValueAccessorBase {
1984
2037
  this.format = 'dd-MM-yyyy';
1985
2038
  this.clearable = false;
1986
2039
  this.showTimeInput = true;
2040
+ this.initHour = null;
2041
+ this.initMinute = null;
1987
2042
  this.invalidTimeAsMidnight = false; // if the time is not valid, use 00:00 as the time
1988
2043
  this.openPickerOnDate = null;
1989
2044
  this.minDateStartOfDay = undefined;
@@ -2014,6 +2069,8 @@ class DateTimePickerComponent extends MultipleValueAccessorBase {
2014
2069
  this.placeholder = '';
2015
2070
  this.showTimeInput = false;
2016
2071
  }
2072
+ this.hours = this.initHour;
2073
+ this.minutes = this.initMinute;
2017
2074
  }
2018
2075
  ngAfterViewInit() {
2019
2076
  if (this.multiple) {
@@ -2172,8 +2229,8 @@ class DateTimePickerComponent extends MultipleValueAccessorBase {
2172
2229
  this.openPickerOnDate = value;
2173
2230
  }
2174
2231
  else {
2175
- this.hours = '';
2176
- this.minutes = '';
2232
+ this.hours = this.initHour ?? '';
2233
+ this.minutes = this.initMinute ?? '';
2177
2234
  this.openPickerOnDate = null;
2178
2235
  this.selectedDates = [];
2179
2236
  }
@@ -2246,7 +2303,7 @@ class DateTimePickerComponent extends MultipleValueAccessorBase {
2246
2303
  return this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);
2247
2304
  }
2248
2305
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }, { token: DATE_TIME_PICKER_TRANSLATIONS, optional: true }, { token: DATE_PICKER_LOCALE, optional: true }, { token: i3.DateAdapter }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2249
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: DateTimePickerComponent, selector: "klp-form-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", sameMonthOnly: "sameMonthOnly", format: "format", placeholder: "placeholder", clearable: "clearable", showTimeInput: "showTimeInput", invalidTimeAsMidnight: "invalidTimeAsMidnight" }, providers: [
2306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: DateTimePickerComponent, selector: "klp-form-date-time-picker", inputs: { minDate: "minDate", maxDate: "maxDate", sameMonthOnly: "sameMonthOnly", format: "format", placeholder: "placeholder", clearable: "clearable", showTimeInput: "showTimeInput", initHour: "initHour", initMinute: "initMinute", invalidTimeAsMidnight: "invalidTimeAsMidnight" }, providers: [
2250
2307
  { provide: NG_VALUE_ACCESSOR, useExisting: DateTimePickerComponent, multi: true },
2251
2308
  {
2252
2309
  provide: MAT_DATE_FORMATS,
@@ -2297,6 +2354,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
2297
2354
  type: Input
2298
2355
  }], showTimeInput: [{
2299
2356
  type: Input
2357
+ }], initHour: [{
2358
+ type: Input
2359
+ }], initMinute: [{
2360
+ type: Input
2300
2361
  }], invalidTimeAsMidnight: [{
2301
2362
  type: Input
2302
2363
  }], nativeInputRef: [{
@@ -2372,7 +2433,7 @@ class DatePickerComponent extends MultipleValueAccessorBase {
2372
2433
  return this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);
2373
2434
  }
2374
2435
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DatePickerComponent, deps: [{ token: FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }, { token: DATE_PICKER_TRANSLATIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2375
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: DatePickerComponent, selector: "klp-form-date-picker", inputs: { minDate: "minDate", maxDate: "maxDate", sameMonthOnly: "sameMonthOnly", format: "format", placeholder: "placeholder", clearable: "clearable" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n", styles: [":host{display:block;--mdc-icon-button-icon-size: 18px}.componentContainer{position:relative}.componentContainer ::ng-deep .mdc-text-field__input::placeholder{color:#aaa!important}.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .dateContainer,.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .clearButton{border-color:#ff8000}.tail{position:absolute;right:.625rem;display:flex;align-items:center;top:0;bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DateTimePickerComponent, selector: "klp-form-date-time-picker", inputs: ["minDate", "maxDate", "sameMonthOnly", "format", "placeholder", "clearable", "showTimeInput", "invalidTimeAsMidnight"] }] }); }
2436
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: DatePickerComponent, selector: "klp-form-date-picker", inputs: { minDate: "minDate", maxDate: "maxDate", sameMonthOnly: "sameMonthOnly", format: "format", placeholder: "placeholder", clearable: "clearable" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n", styles: [":host{display:block;--mdc-icon-button-icon-size: 18px}.componentContainer{position:relative}.componentContainer ::ng-deep .mdc-text-field__input::placeholder{color:#aaa!important}.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .dateContainer,.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .clearButton{border-color:#ff8000}.tail{position:absolute;right:.625rem;display:flex;align-items:center;top:0;bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DateTimePickerComponent, selector: "klp-form-date-time-picker", inputs: ["minDate", "maxDate", "sameMonthOnly", "format", "placeholder", "clearable", "showTimeInput", "initHour", "initMinute", "invalidTimeAsMidnight"] }] }); }
2376
2437
  }
2377
2438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DatePickerComponent, decorators: [{
2378
2439
  type: Component,
@@ -2826,6 +2887,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
2826
2887
  type: Input
2827
2888
  }] } });
2828
2889
 
2890
+ class TextAreaComponent extends ValueAccessorBase {
2891
+ constructor() {
2892
+ super(...arguments);
2893
+ this.onBlur = new EventEmitter();
2894
+ }
2895
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: TextAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2896
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: TextAreaComponent, selector: "klp-form-text-area", inputs: { placeholder: "placeholder" }, outputs: { onBlur: "onBlur" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextAreaComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\">\n\t<textarea\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t></textarea>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}textarea{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}textarea::-webkit-input-placeholder{color:#adadad}textarea:-moz-placeholder{color:#adadad}textarea::-moz-placeholder{color:#adadad}textarea:-ms-input-placeholder{color:#adadad}textarea:focus{outline:0 none;box-shadow:none;border-color:#3ed778}textarea.input-sm{height:30px}textarea.input-lg{height:50px}textarea.error{border-color:#dc3545;background-color:#f6cdd1}textarea.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}textarea:placeholder-shown{text-overflow:ellipsis}.showErrors{border-color:#ff8000}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
2897
+ }
2898
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: TextAreaComponent, decorators: [{
2899
+ type: Component,
2900
+ args: [{ selector: 'klp-form-text-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextAreaComponent, multi: true }], template: "<div class=\"componentContainer\">\n\t<textarea\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t></textarea>\n</div>\n", styles: [":host{display:block}:host input:disabled{cursor:not-allowed}.componentContainer{position:relative}textarea{outline:none;display:block;border:1px solid #e6ecf5;border-radius:2px;box-shadow:none;height:42px;width:100%;padding:.375rem .625rem;font-size:14px;color:#888da8;transition:all .2s ease-in;-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;-o-transition:all .2s ease-in;-ms-transition:all .2s ease-in}textarea::-webkit-input-placeholder{color:#adadad}textarea:-moz-placeholder{color:#adadad}textarea::-moz-placeholder{color:#adadad}textarea:-ms-input-placeholder{color:#adadad}textarea:focus{outline:0 none;box-shadow:none;border-color:#3ed778}textarea.input-sm{height:30px}textarea.input-lg{height:50px}textarea.error{border-color:#dc3545;background-color:#f6cdd1}textarea.valid{border-color:#37c936;background-color:#ebfaeb;color:#278d26}textarea:placeholder-shown{text-overflow:ellipsis}.showErrors{border-color:#ff8000}\n"] }]
2901
+ }], propDecorators: { placeholder: [{
2902
+ type: Input
2903
+ }], onBlur: [{
2904
+ type: Output
2905
+ }] } });
2906
+
2829
2907
  class NgxEnhancyFormsModule {
2830
2908
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgxEnhancyFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2831
2909
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: NgxEnhancyFormsModule, declarations: [ValueAccessorBase,
@@ -2844,6 +2922,7 @@ class NgxEnhancyFormsModule {
2844
2922
  SortableItemsComponent,
2845
2923
  SortableGroupedItemsComponent,
2846
2924
  TextInputComponent,
2925
+ TextAreaComponent,
2847
2926
  ToggleComponent,
2848
2927
  FileInputComponent,
2849
2928
  FormCaptionComponent,
@@ -2877,6 +2956,7 @@ class NgxEnhancyFormsModule {
2877
2956
  SortableItemsComponent,
2878
2957
  SortableGroupedItemsComponent,
2879
2958
  TextInputComponent,
2959
+ TextAreaComponent,
2880
2960
  ToggleComponent,
2881
2961
  FileInputComponent,
2882
2962
  FormCaptionComponent,
@@ -2923,6 +3003,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
2923
3003
  SortableItemsComponent,
2924
3004
  SortableGroupedItemsComponent,
2925
3005
  TextInputComponent,
3006
+ TextAreaComponent,
2926
3007
  ToggleComponent,
2927
3008
  FileInputComponent,
2928
3009
  FormCaptionComponent,
@@ -2955,6 +3036,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
2955
3036
  SortableItemsComponent,
2956
3037
  SortableGroupedItemsComponent,
2957
3038
  TextInputComponent,
3039
+ TextAreaComponent,
2958
3040
  ToggleComponent,
2959
3041
  FileInputComponent,
2960
3042
  FormCaptionComponent,
@@ -2980,5 +3062,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
2980
3062
  * Generated bundle index. Do not edit.
2981
3063
  */
2982
3064
 
2983
- export { ButtonComponent, CheckboxComponent, DATE_PICKER_LOCALE, DATE_PICKER_TRANSLATIONS, DATE_TIME_PICKER_TRANSLATIONS, DEFAULT_ERROR_MESSAGES, DatePickerComponent, DateTimePickerComponent, DefaultErrorHandler, ElementIsTruncatedCbComponent, EmailInputComponent, FORM_ERROR_MESSAGES, FileInputComponent, FormCaptionComponent, FormComponent, FormElementComponent, FormErrorComponent, FormSubmitButtonComponent, FormValidationError, HourMinuteInputComponent, KLP_DATE_FORMATS, KLP_FORM_ERROR_HANDLER, KlpSelectOptionTemplateDirective, LoadingIndicatorComponent, MultipleValueAccessorBase, NgxEnhancyFormsModule, NumberInputComponent, OnRenderDirective, Orientation, PasswordFieldComponent, RadioComponent, SELECT_TRANSLATIONS, SelectComponent, SelectFooterComponent, SortableGroupedItemsComponent, SortableItemsComponent, SubFormDirective, TextInputComponent, ToggleComponent, ValueAccessorBase, WithTooltipDirective, dateValidator, invalidDateKey, invalidFieldsSymbol, matDateFormatsFactory };
3065
+ export { ButtonComponent, CheckboxComponent, DATE_PICKER_LOCALE, DATE_PICKER_TRANSLATIONS, DATE_TIME_PICKER_TRANSLATIONS, DEFAULT_ERROR_MESSAGES, DatePickerComponent, DateTimePickerComponent, DefaultErrorHandler, ElementIsTruncatedCbComponent, EmailInputComponent, FORM_ERROR_MESSAGES, FileInputComponent, FormCaptionComponent, FormComponent, FormElementComponent, FormErrorComponent, FormSubmitButtonComponent, FormValidationError, HourMinuteInputComponent, KLP_DATE_FORMATS, KLP_FORM_ERROR_HANDLER, KlpSelectOptionTemplateDirective, LoadingIndicatorComponent, MultipleValueAccessorBase, NgxEnhancyFormsModule, NumberInputComponent, OnRenderDirective, Orientation, PasswordFieldComponent, RadioComponent, SELECT_TRANSLATIONS, SelectComponent, SelectFooterComponent, SortableGroupedItemsComponent, SortableItemsComponent, SubFormDirective, TextAreaComponent, TextInputComponent, ToggleComponent, ValueAccessorBase, WithTooltipDirective, dateValidator, invalidDateKey, invalidFieldsSymbol, matDateFormatsFactory };
2984
3066
  //# sourceMappingURL=klippa-ngx-enhancy-forms.mjs.map