@softpak/components 20.0.0 → 20.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, input, model, output, signal, HostListener, ChangeDetectionStrategy, Component, viewChild, computed } from '@angular/core';
2
+ import { Injectable, inject, input, model, output, signal, HostListener, ChangeDetectionStrategy, Component, computed, viewChild } from '@angular/core';
3
3
  import { SpxButtonComponent } from '@softpak/components/spx-button';
4
4
  import * as i1 from '@fortawesome/angular-fontawesome';
5
5
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
@@ -195,13 +195,14 @@ var SpxInputTypeEnum;
195
195
  class SpxInputTextComponent {
196
196
  constructor(changeDetectorRef) {
197
197
  this.changeDetectorRef = changeDetectorRef;
198
+ this.mappedReadonly = computed(() => this.spxReadonly() ? true : false);
198
199
  this.spxName = input();
199
200
  this.spxAutofocus = input(false);
200
201
  this.spxAutocomplete = input();
201
202
  this.spxInputMode = input();
202
203
  this.spxPattern = input();
203
204
  this.spxSuggestions = input([]);
204
- this.spxReadonly = input(false);
205
+ this.spxReadonly = input(undefined);
205
206
  this.spxValidators = input();
206
207
  this.spxCapitalize = input(false);
207
208
  this.spxType = input(SpxInputTypeEnum.text);
@@ -247,7 +248,7 @@ class SpxInputTextComponent {
247
248
  }
248
249
  }
249
250
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxInputTextComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxAutofocus: { classPropertyName: "spxAutofocus", publicName: "spxAutofocus", isSignal: true, isRequired: false, transformFunction: null }, spxAutocomplete: { classPropertyName: "spxAutocomplete", publicName: "spxAutocomplete", isSignal: true, isRequired: false, transformFunction: null }, spxInputMode: { classPropertyName: "spxInputMode", publicName: "spxInputMode", isSignal: true, isRequired: false, transformFunction: null }, spxPattern: { classPropertyName: "spxPattern", publicName: "spxPattern", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxCapitalize: { classPropertyName: "spxCapitalize", publicName: "spxCapitalize", isSignal: true, isRequired: false, transformFunction: null }, spxType: { classPropertyName: "spxType", publicName: "spxType", isSignal: true, isRequired: false, transformFunction: null }, spxWasInternalUpdate: { classPropertyName: "spxWasInternalUpdate", publicName: "spxWasInternalUpdate", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"relative text-black\">\r\n <input\r\n #input\r\n class=\"font-bold text-lg w-full outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.autocomplete]=\"this.spxAutocomplete()\"\r\n [attr.autofocus]=\"this.spxAutofocus()\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode()\"\r\n [attr.pattern]=\"this.spxPattern()\"\r\n [attr.name]=\"this.spxName()\"\r\n [attr.type]=\"this.spxType()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n [class.uppercase]=\"this.spxCapitalize()\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.value()?.description ? this.value()?.description : this.value()?.value\"\r\n (ngModelChange)=\"this.handleChange($event)\"\r\n />\r\n @if (this.value()?.description && this.value()?.value && this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\r\n <span>{{this.value()?.value}}</span>\r\n }\r\n @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType() === 'overlaynumber')) {\r\n <spx-dropdown\r\n [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\r\n </spx-dropdown>\r\n }\r\n</div>", dependencies: [{ kind: "component", type: SpxDropdownComponent, selector: "spx-dropdown", inputs: ["spxSuggestions"], outputs: ["spxSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxAutofocus: { classPropertyName: "spxAutofocus", publicName: "spxAutofocus", isSignal: true, isRequired: false, transformFunction: null }, spxAutocomplete: { classPropertyName: "spxAutocomplete", publicName: "spxAutocomplete", isSignal: true, isRequired: false, transformFunction: null }, spxInputMode: { classPropertyName: "spxInputMode", publicName: "spxInputMode", isSignal: true, isRequired: false, transformFunction: null }, spxPattern: { classPropertyName: "spxPattern", publicName: "spxPattern", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxCapitalize: { classPropertyName: "spxCapitalize", publicName: "spxCapitalize", isSignal: true, isRequired: false, transformFunction: null }, spxType: { classPropertyName: "spxType", publicName: "spxType", isSignal: true, isRequired: false, transformFunction: null }, spxWasInternalUpdate: { classPropertyName: "spxWasInternalUpdate", publicName: "spxWasInternalUpdate", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"relative text-black\">\r\n <input\r\n #input\r\n class=\"font-bold text-lg w-full outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.autocomplete]=\"this.spxAutocomplete()\"\r\n [attr.autofocus]=\"this.spxAutofocus()\"\r\n [attr.inputMode]=\"this.spxInputMode()\"\r\n [attr.pattern]=\"this.spxPattern()\"\r\n [attr.name]=\"this.spxName()\"\r\n [attr.type]=\"this.spxType()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n [class.uppercase]=\"this.spxCapitalize()\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.value()?.description ? this.value()?.description : this.value()?.value\"\r\n (ngModelChange)=\"this.handleChange($event)\"\r\n />\r\n @if (this.value()?.description && this.value()?.value && this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\r\n <span>{{this.value()?.value}}</span>\r\n }\r\n @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType() === 'overlaynumber')) {\r\n <spx-dropdown\r\n [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\r\n </spx-dropdown>\r\n }\r\n</div>", dependencies: [{ kind: "component", type: SpxDropdownComponent, selector: "spx-dropdown", inputs: ["spxSuggestions"], outputs: ["spxSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
251
252
  }
252
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxInputTextComponent, decorators: [{
253
254
  type: Component,
@@ -255,7 +256,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
255
256
  SpxDropdownComponent,
256
257
  ReactiveFormsModule,
257
258
  FormsModule,
258
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative text-black\">\r\n <input\r\n #input\r\n class=\"font-bold text-lg w-full outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.autocomplete]=\"this.spxAutocomplete()\"\r\n [attr.autofocus]=\"this.spxAutofocus()\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode()\"\r\n [attr.pattern]=\"this.spxPattern()\"\r\n [attr.name]=\"this.spxName()\"\r\n [attr.type]=\"this.spxType()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n [class.uppercase]=\"this.spxCapitalize()\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.value()?.description ? this.value()?.description : this.value()?.value\"\r\n (ngModelChange)=\"this.handleChange($event)\"\r\n />\r\n @if (this.value()?.description && this.value()?.value && this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\r\n <span>{{this.value()?.value}}</span>\r\n }\r\n @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType() === 'overlaynumber')) {\r\n <spx-dropdown\r\n [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\r\n </spx-dropdown>\r\n }\r\n</div>" }]
259
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative text-black\">\r\n <input\r\n #input\r\n class=\"font-bold text-lg w-full outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.autocomplete]=\"this.spxAutocomplete()\"\r\n [attr.autofocus]=\"this.spxAutofocus()\"\r\n [attr.inputMode]=\"this.spxInputMode()\"\r\n [attr.pattern]=\"this.spxPattern()\"\r\n [attr.name]=\"this.spxName()\"\r\n [attr.type]=\"this.spxType()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n [class.uppercase]=\"this.spxCapitalize()\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.value()?.description ? this.value()?.description : this.value()?.value\"\r\n (ngModelChange)=\"this.handleChange($event)\"\r\n />\r\n @if (this.value()?.description && this.value()?.value && this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\r\n <span>{{this.value()?.value}}</span>\r\n }\r\n @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType() === 'overlaynumber')) {\r\n <spx-dropdown\r\n [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\r\n </spx-dropdown>\r\n }\r\n</div>" }]
259
260
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
260
261
 
261
262
  class SpxInputFloatComponent {
@@ -264,10 +265,11 @@ class SpxInputFloatComponent {
264
265
  first: null,
265
266
  second: null,
266
267
  });
268
+ this.mappedReadonly = computed(() => this.spxReadonly() ? true : false);
267
269
  this.spxName = input();
268
270
  this.spxAutofocus = input(false);
269
271
  this.spxElementId = input();
270
- this.spxReadonly = input(false);
272
+ this.spxReadonly = input(undefined);
271
273
  this.spxValidators = input();
272
274
  this.spxStep = input();
273
275
  this.value = model.required();
@@ -343,21 +345,22 @@ class SpxInputFloatComponent {
343
345
  return /^[+-]?\d+(\.\d+)?$/.test(value);
344
346
  }
345
347
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
346
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: SpxInputFloatComponent, isStandalone: true, selector: "spx-input-float", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxAutofocus: { classPropertyName: "spxAutofocus", publicName: "spxAutofocus", isSignal: true, isRequired: false, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxStep: { classPropertyName: "spxStep", publicName: "spxStep", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, spxWasInternalUpdate: { classPropertyName: "spxWasInternalUpdate", publicName: "spxWasInternalUpdate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "firstInputRef", first: true, predicate: ["firstInputRef"], descendants: true, isSignal: true }, { propertyName: "secondInputRef", first: true, predicate: ["secondInputRef"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex items-end\">\r\n <input\r\n #firstInputRef\r\n class=\"spx-input-float__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.pattern]=\"'-?[0-9]*'\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 1)\" />\r\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\r\n <input #secondInputRef\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n class=\"spx-input-float__input\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 2)\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [attr.pattern]=\"'[0-9]*'\"\r\n [disabled]=\"this.spxReadonly()\" />\r\n</div>", styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
348
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: SpxInputFloatComponent, isStandalone: true, selector: "spx-input-float", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxAutofocus: { classPropertyName: "spxAutofocus", publicName: "spxAutofocus", isSignal: true, isRequired: false, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxStep: { classPropertyName: "spxStep", publicName: "spxStep", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, spxWasInternalUpdate: { classPropertyName: "spxWasInternalUpdate", publicName: "spxWasInternalUpdate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "firstInputRef", first: true, predicate: ["firstInputRef"], descendants: true, isSignal: true }, { propertyName: "secondInputRef", first: true, predicate: ["secondInputRef"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex items-end\">\r\n <input\r\n #firstInputRef\r\n class=\"spx-input-float__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.pattern]=\"'-?[0-9]*'\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 1)\" />\r\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\r\n <input #secondInputRef\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n class=\"spx-input-float__input\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 2)\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [attr.pattern]=\"'[0-9]*'\"\r\n [disabled]=\"this.mappedReadonly()\" />\r\n</div>", styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
347
349
  }
348
350
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
349
351
  type: Component,
350
352
  args: [{ selector: 'spx-input-float', imports: [
351
353
  FormsModule,
352
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex items-end\">\r\n <input\r\n #firstInputRef\r\n class=\"spx-input-float__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.pattern]=\"'-?[0-9]*'\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 1)\" />\r\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\r\n <input #secondInputRef\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n class=\"spx-input-float__input\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 2)\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [attr.pattern]=\"'[0-9]*'\"\r\n [disabled]=\"this.spxReadonly()\" />\r\n</div>", styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"] }]
354
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex items-end\">\r\n <input\r\n #firstInputRef\r\n class=\"spx-input-float__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.pattern]=\"'-?[0-9]*'\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 1)\" />\r\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\r\n <input #secondInputRef\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n class=\"spx-input-float__input\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 2)\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [attr.pattern]=\"'[0-9]*'\"\r\n [disabled]=\"this.mappedReadonly()\" />\r\n</div>", styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"] }]
353
355
  }] });
354
356
 
355
357
  class SpxInputNumberComponent {
356
358
  constructor() {
359
+ this.mappedReadonly = computed(() => this.spxReadonly() ? true : false);
357
360
  this.spxName = input();
358
361
  this.spxAutofocus = input(false);
359
362
  this.spxInputMode = input();
360
- this.spxReadonly = input(false);
363
+ this.spxReadonly = input(undefined);
361
364
  this.spxValidators = input();
362
365
  this.spxFocused = input(true);
363
366
  this.spxStep = input();
@@ -386,11 +389,11 @@ class SpxInputNumberComponent {
386
389
  }
387
390
  }
388
391
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
389
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: SpxInputNumberComponent, isStandalone: true, selector: "spx-input-number", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxAutofocus: { classPropertyName: "spxAutofocus", publicName: "spxAutofocus", isSignal: true, isRequired: false, transformFunction: null }, spxInputMode: { classPropertyName: "spxInputMode", publicName: "spxInputMode", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", isSignal: true, isRequired: false, transformFunction: null }, spxStep: { classPropertyName: "spxStep", publicName: "spxStep", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"spx-input-number__controls\">\r\n <input\r\n #input\r\n class=\"spx-input-number__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\r\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\r\n [attr.type]=\"'number'\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.value() ? this.value().value : undefined\"\r\n (ngModelChange)=\"this.handleChange($event)\" />\r\n</div> ", styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
392
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.0", type: SpxInputNumberComponent, isStandalone: true, selector: "spx-input-number", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxAutofocus: { classPropertyName: "spxAutofocus", publicName: "spxAutofocus", isSignal: true, isRequired: false, transformFunction: null }, spxInputMode: { classPropertyName: "spxInputMode", publicName: "spxInputMode", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", isSignal: true, isRequired: false, transformFunction: null }, spxStep: { classPropertyName: "spxStep", publicName: "spxStep", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"spx-input-number__controls\">\r\n <input\r\n #input\r\n class=\"spx-input-number__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\r\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\r\n [attr.type]=\"'number'\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.value() ? this.value().value : undefined\"\r\n (ngModelChange)=\"this.handleChange($event)\" />\r\n</div> ", styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
390
393
  }
391
394
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
392
395
  type: Component,
393
- args: [{ selector: 'spx-input-number', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule], template: "<div class=\"spx-input-number__controls\">\r\n <input\r\n #input\r\n class=\"spx-input-number__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\r\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\r\n [attr.type]=\"'number'\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.value() ? this.value().value : undefined\"\r\n (ngModelChange)=\"this.handleChange($event)\" />\r\n</div> ", styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"] }]
396
+ args: [{ selector: 'spx-input-number', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule], template: "<div class=\"spx-input-number__controls\">\r\n <input\r\n #input\r\n class=\"spx-input-number__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\r\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\r\n [attr.type]=\"'number'\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.value() ? this.value().value : undefined\"\r\n (ngModelChange)=\"this.handleChange($event)\" />\r\n</div> ", styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"] }]
394
397
  }] });
395
398
 
396
399
  class SpxInputRadioComponent {
@@ -400,7 +403,7 @@ class SpxInputRadioComponent {
400
403
  this.spxName = input();
401
404
  this.spxValidators = input();
402
405
  this.spxShowLabel = input(true);
403
- this.spxReadonly = input(false);
406
+ this.spxReadonly = input(undefined);
404
407
  this.spxSuggestions = input([]);
405
408
  this.value = model();
406
409
  this.selectedInputService = inject(SelectedInputService);
@@ -524,7 +527,7 @@ class SpxInputTimeComponent {
524
527
  this.spxInputMode = input();
525
528
  this.spxPattern = input();
526
529
  this.spxSuggestions = input([]);
527
- this.spxReadonly = input(false);
530
+ this.spxReadonly = input(undefined);
528
531
  this.spxValidators = input();
529
532
  this.spxCapitalize = input(false);
530
533
  this.value = model.required();
@@ -840,6 +843,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
840
843
 
841
844
  class SpxInputComponent {
842
845
  constructor() {
846
+ this.mappedReadonly = computed(() => this.spxReadonly() === true ? true : undefined);
843
847
  this.spxLabel = input('label');
844
848
  this.spxMax = input();
845
849
  this.spxMin = input();
@@ -972,7 +976,7 @@ class SpxInputComponent {
972
976
  useExisting: SpxInputComponent,
973
977
  multi: true
974
978
  }
975
- ], viewQueries: [{ propertyName: "floatInput", first: true, predicate: ["spxInputFloat"], descendants: true, isSignal: true }, { propertyName: "numberInput", first: true, predicate: ["spxInputNumber"], descendants: true, isSignal: true }, { propertyName: "textInput", first: true, predicate: ["spxInputText"], descendants: true, isSignal: true }, { propertyName: "timeInput", first: true, predicate: ["spxInputTime"], descendants: true, isSignal: true }, { propertyName: "radioInput", first: true, predicate: ["spxInputRadio"], descendants: true, isSignal: true }, { propertyName: "dateInput", first: true, predicate: ["spxInputDate"], descendants: true, isSignal: true }], ngImport: i0, template: "<spx-input-box\r\n (spxClear)=\"this.handleClear()\"\r\n (spxEdit)=\"this.handleEdit()\"\r\n (spxHelp)=\"this.handleHelp()\"\r\n (spxSearch)=\"this.handleSearch()\"\r\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\r\n [spxAlert]=\"this.spxAlert()\"\r\n [spxCompact]=\"this.spxCompact()\"\r\n [spxLabel]=\"this.spxLabel()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxRequired]=\"this.spxRequired()\"\r\n [spxShowClear]=\"this.spxShowClear()\"\r\n [spxShowEdit]=\"this.spxShowEdit()\"\r\n [spxShowHelp]=\"this.spxShowHelp()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\r\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\r\n [spxValue]=\"this.value()\"\r\n>\r\n <div controls>\r\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\r\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\r\n this.spxType() === 'password') {\r\n <spx-input-text\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxCapitalize]=\"this.spxCapitalize()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxType]=\"this.spxType()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputText\r\n ></spx-input-text>\r\n } @if (this.spxType() === 'date') {\r\n <spx-input-date\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutoFocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxMax]=\"this.spxMax()!\"\r\n [spxMin]=\"this.spxMin()!\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxSelectDay]=\"this.spxSelectDay()\"\r\n [spxSelectMonth]=\"this.spxSelectMonth()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputDate\r\n ></spx-input-date>\r\n } @if (this.spxType() === 'float') {\r\n <spx-input-float\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputFloat\r\n ></spx-input-float>\r\n } @if (this.spxType() === 'number') {\r\n <spx-input-number\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputNumber\r\n ></spx-input-number>\r\n } @if (this.spxType() === 'radio') {\r\n <spx-input-radio\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputRadio\r\n ></spx-input-radio>\r\n } @if (this.spxType() === 'time') {\r\n <spx-input-time\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputTime\r\n ></spx-input-time>\r\n }\r\n </div>\r\n <div validation-messages>\r\n <ng-content></ng-content>\r\n </div>\r\n</spx-input-box>\r\n", dependencies: [{ kind: "component", type: SpxInputBoxComponent, selector: "spx-input-box", inputs: ["spxCompact", "spxLabel", "spxReadonly", "spxRequired", "spxShowClear", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxShowSearch", "spxShowValidationMessages", "spxAlert", "spxValue"], outputs: ["spxValueChange", "spxClear", "spxSearch", "spxEdit", "spxHelp", "spxSetIdInParent"] }, { kind: "component", type: SpxInputDateComponent, selector: "spx-input-date", inputs: ["spxMax", "spxMin", "spxReadonly", "spxValidators", "spxAutoFocus", "value", "spxSelectDay", "spxSelectMonth", "spxElementId", "spxSuggestions"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputFloatComponent, selector: "spx-input-float", inputs: ["spxName", "spxAutofocus", "spxElementId", "spxReadonly", "spxValidators", "spxStep", "value", "spxWasInternalUpdate"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputNumberComponent, selector: "spx-input-number", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxReadonly", "spxValidators", "spxFocused", "spxStep", "value", "spxElementId"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputRadioComponent, selector: "spx-input-radio", inputs: ["spxName", "spxValidators", "spxShowLabel", "spxReadonly", "spxSuggestions", "value", "spxElementId"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputTextComponent, selector: "spx-input-text", inputs: ["spxName", "spxAutofocus", "spxAutocomplete", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "spxType", "spxWasInternalUpdate", "value", "spxElementId"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputTimeComponent, selector: "spx-input-time", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
979
+ ], viewQueries: [{ propertyName: "floatInput", first: true, predicate: ["spxInputFloat"], descendants: true, isSignal: true }, { propertyName: "numberInput", first: true, predicate: ["spxInputNumber"], descendants: true, isSignal: true }, { propertyName: "textInput", first: true, predicate: ["spxInputText"], descendants: true, isSignal: true }, { propertyName: "timeInput", first: true, predicate: ["spxInputTime"], descendants: true, isSignal: true }, { propertyName: "radioInput", first: true, predicate: ["spxInputRadio"], descendants: true, isSignal: true }, { propertyName: "dateInput", first: true, predicate: ["spxInputDate"], descendants: true, isSignal: true }], ngImport: i0, template: "<spx-input-box\r\n (spxClear)=\"this.handleClear()\"\r\n (spxEdit)=\"this.handleEdit()\"\r\n (spxHelp)=\"this.handleHelp()\"\r\n (spxSearch)=\"this.handleSearch()\"\r\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\r\n [spxAlert]=\"this.spxAlert()\"\r\n [spxCompact]=\"this.spxCompact()\"\r\n [spxLabel]=\"this.spxLabel()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxRequired]=\"this.spxRequired()\"\r\n [spxShowClear]=\"this.spxShowClear()\"\r\n [spxShowEdit]=\"this.spxShowEdit()\"\r\n [spxShowHelp]=\"this.spxShowHelp()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\r\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\r\n [spxValue]=\"this.value()\"\r\n>\r\n <div controls>\r\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\r\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\r\n this.spxType() === 'password') {\r\n <spx-input-text\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxCapitalize]=\"this.spxCapitalize()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxType]=\"this.spxType()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputText\r\n ></spx-input-text>\r\n } @if (this.spxType() === 'date') {\r\n <spx-input-date\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutoFocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxMax]=\"this.spxMax()!\"\r\n [spxMin]=\"this.spxMin()!\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxSelectDay]=\"this.spxSelectDay()\"\r\n [spxSelectMonth]=\"this.spxSelectMonth()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputDate\r\n ></spx-input-date>\r\n } @if (this.spxType() === 'float') {\r\n <spx-input-float\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputFloat\r\n ></spx-input-float>\r\n } @if (this.spxType() === 'number') {\r\n <spx-input-number\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputNumber\r\n ></spx-input-number>\r\n } @if (this.spxType() === 'radio') {\r\n <spx-input-radio\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputRadio\r\n ></spx-input-radio>\r\n } @if (this.spxType() === 'time') {\r\n <spx-input-time\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputTime\r\n ></spx-input-time>\r\n }\r\n </div>\r\n <div validation-messages>\r\n <ng-content></ng-content>\r\n </div>\r\n</spx-input-box>\r\n", dependencies: [{ kind: "component", type: SpxInputBoxComponent, selector: "spx-input-box", inputs: ["spxCompact", "spxLabel", "spxReadonly", "spxRequired", "spxShowClear", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxShowSearch", "spxShowValidationMessages", "spxAlert", "spxValue"], outputs: ["spxValueChange", "spxClear", "spxSearch", "spxEdit", "spxHelp", "spxSetIdInParent"] }, { kind: "component", type: SpxInputDateComponent, selector: "spx-input-date", inputs: ["spxMax", "spxMin", "spxReadonly", "spxValidators", "spxAutoFocus", "value", "spxSelectDay", "spxSelectMonth", "spxElementId", "spxSuggestions"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputFloatComponent, selector: "spx-input-float", inputs: ["spxName", "spxAutofocus", "spxElementId", "spxReadonly", "spxValidators", "spxStep", "value", "spxWasInternalUpdate"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputNumberComponent, selector: "spx-input-number", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxReadonly", "spxValidators", "spxFocused", "spxStep", "value", "spxElementId"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputRadioComponent, selector: "spx-input-radio", inputs: ["spxName", "spxValidators", "spxShowLabel", "spxReadonly", "spxSuggestions", "value", "spxElementId"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputTextComponent, selector: "spx-input-text", inputs: ["spxName", "spxAutofocus", "spxAutocomplete", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "spxType", "spxWasInternalUpdate", "value", "spxElementId"], outputs: ["valueChange"] }, { kind: "component", type: SpxInputTimeComponent, selector: "spx-input-time", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
976
980
  }
977
981
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxInputComponent, decorators: [{
978
982
  type: Component,
@@ -992,7 +996,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
992
996
  useExisting: SpxInputComponent,
993
997
  multi: true
994
998
  }
995
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<spx-input-box\r\n (spxClear)=\"this.handleClear()\"\r\n (spxEdit)=\"this.handleEdit()\"\r\n (spxHelp)=\"this.handleHelp()\"\r\n (spxSearch)=\"this.handleSearch()\"\r\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\r\n [spxAlert]=\"this.spxAlert()\"\r\n [spxCompact]=\"this.spxCompact()\"\r\n [spxLabel]=\"this.spxLabel()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxRequired]=\"this.spxRequired()\"\r\n [spxShowClear]=\"this.spxShowClear()\"\r\n [spxShowEdit]=\"this.spxShowEdit()\"\r\n [spxShowHelp]=\"this.spxShowHelp()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\r\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\r\n [spxValue]=\"this.value()\"\r\n>\r\n <div controls>\r\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\r\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\r\n this.spxType() === 'password') {\r\n <spx-input-text\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxCapitalize]=\"this.spxCapitalize()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxType]=\"this.spxType()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputText\r\n ></spx-input-text>\r\n } @if (this.spxType() === 'date') {\r\n <spx-input-date\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutoFocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxMax]=\"this.spxMax()!\"\r\n [spxMin]=\"this.spxMin()!\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxSelectDay]=\"this.spxSelectDay()\"\r\n [spxSelectMonth]=\"this.spxSelectMonth()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputDate\r\n ></spx-input-date>\r\n } @if (this.spxType() === 'float') {\r\n <spx-input-float\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputFloat\r\n ></spx-input-float>\r\n } @if (this.spxType() === 'number') {\r\n <spx-input-number\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputNumber\r\n ></spx-input-number>\r\n } @if (this.spxType() === 'radio') {\r\n <spx-input-radio\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputRadio\r\n ></spx-input-radio>\r\n } @if (this.spxType() === 'time') {\r\n <spx-input-time\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputTime\r\n ></spx-input-time>\r\n }\r\n </div>\r\n <div validation-messages>\r\n <ng-content></ng-content>\r\n </div>\r\n</spx-input-box>\r\n" }]
999
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<spx-input-box\r\n (spxClear)=\"this.handleClear()\"\r\n (spxEdit)=\"this.handleEdit()\"\r\n (spxHelp)=\"this.handleHelp()\"\r\n (spxSearch)=\"this.handleSearch()\"\r\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\r\n [spxAlert]=\"this.spxAlert()\"\r\n [spxCompact]=\"this.spxCompact()\"\r\n [spxLabel]=\"this.spxLabel()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxRequired]=\"this.spxRequired()\"\r\n [spxShowClear]=\"this.spxShowClear()\"\r\n [spxShowEdit]=\"this.spxShowEdit()\"\r\n [spxShowHelp]=\"this.spxShowHelp()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\r\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\r\n [spxValue]=\"this.value()\"\r\n>\r\n <div controls>\r\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\r\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\r\n this.spxType() === 'password') {\r\n <spx-input-text\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxCapitalize]=\"this.spxCapitalize()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxType]=\"this.spxType()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputText\r\n ></spx-input-text>\r\n } @if (this.spxType() === 'date') {\r\n <spx-input-date\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutoFocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxMax]=\"this.spxMax()!\"\r\n [spxMin]=\"this.spxMin()!\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxSelectDay]=\"this.spxSelectDay()\"\r\n [spxSelectMonth]=\"this.spxSelectMonth()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputDate\r\n ></spx-input-date>\r\n } @if (this.spxType() === 'float') {\r\n <spx-input-float\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputFloat\r\n ></spx-input-float>\r\n } @if (this.spxType() === 'number') {\r\n <spx-input-number\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputNumber\r\n ></spx-input-number>\r\n } @if (this.spxType() === 'radio') {\r\n <spx-input-radio\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputRadio\r\n ></spx-input-radio>\r\n } @if (this.spxType() === 'time') {\r\n <spx-input-time\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputTime\r\n ></spx-input-time>\r\n }\r\n </div>\r\n <div validation-messages>\r\n <ng-content></ng-content>\r\n </div>\r\n</spx-input-box>\r\n" }]
996
1000
  }], propDecorators: { _handleBlurEvent: [{
997
1001
  type: HostListener,
998
1002
  args: ['focusout']
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-inputs.mjs","sources":["../../../../projects/softpak/components/spx-inputs/input.service.ts","../../../../projects/softpak/components/spx-inputs/spx-input-box/spx-input-box.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-box/spx-input-box.component.html","../../../../projects/softpak/components/spx-inputs/spx-dropdown/spx-dropdown.component.ts","../../../../projects/softpak/components/spx-inputs/spx-dropdown/spx-dropdown.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-type.enum.ts","../../../../projects/softpak/components/spx-inputs/spx-input-text/spx-input-text.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-text/spx-input-text.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-float/spx-input-float.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-float/spx-input-float.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-number/spx-input-number.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-number/spx-input-number.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-radio/spx-input-radio.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-radio/spx-input-radio.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-time-modal/spx-input-time-modal.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-time-modal/spx-input-time-modal.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-time/spx-input-time.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-time/spx-input-time.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-date/spx-input-date.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-date/spx-input-date.component.html","../../../../projects/softpak/components/spx-inputs/spx-input.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input.component.html","../../../../projects/softpak/components/spx-inputs/softpak-components-spx-inputs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, distinctUntilChanged, filter, map, Observable, pairwise } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root', // Ensure the service is available globally\r\n})\r\nexport class SelectedInputService {\r\n private focusedElement = new BehaviorSubject<number | null>(0); // Signal to store the selected input's ID\r\n focusedElement$ = this.focusedElement.asObservable(); // Observable for the comparison result\r\n isFocused$(id: number): Observable<boolean> {\r\n return this.focusedElement$.pipe(\r\n map((focusedId) => {\r\n return focusedId === id;\r\n }) // Emit true/false if the element is focused\r\n );\r\n }\r\n\r\n isBlurred$(id: number): Observable<boolean> {\r\n return this.focusedElement$.pipe(\r\n pairwise(), // Emit both the previous and current value as a tuple\r\n filter(([previous]) => {\r\n return previous === id;\r\n }), // Only proceed if the previous value matches the ID\r\n map(([, current]) => {\r\n return current === null;\r\n }), // Return true if current is null\r\n );\r\n }\r\n\r\n getSelectedElementId(): number | null {\r\n return this.focusedElement.value; // Access the value directly from BehaviorSubject\r\n }\r\n\r\n // Method to update the selected ID\r\n setSelectedElementId(id: number | null): void {\r\n this.focusedElement.next(id);\r\n }\r\n}","\r\nimport { ChangeDetectionStrategy, Component, HostListener, inject, input, model, output, signal } from '@angular/core';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faEdit, faQuestion, faSearch, faTimes } from '@fortawesome/free-solid-svg-icons';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { IsSeverityPipe } from '@softpak/components/spx-pipes';\r\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\r\nimport { SpxInputAlertI } from '../spx-input-alert-interface';\r\n\r\n@Component({\r\n selector: 'spx-input-box',\r\n imports: [\r\n SpxButtonComponent,\r\n FontAwesomeModule,\r\n IsSeverityPipe\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input-box.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n \"(click)\" :\"handleFocusIn()\"\r\n}\r\n})\r\nexport class SpxInputBoxComponent {\r\n selectedInputService = inject(SelectedInputService);\r\n faEdit = faEdit;\r\n faSearch = faSearch;\r\n faQuestion = faQuestion;\r\n faTimes = faTimes;\r\n SpxSeverity = SpxSeverityEnum;\r\n readonly spxCompact = input<boolean>();\r\n readonly spxLabel = input<string>();\r\n readonly spxReadonly = input(false);\r\n readonly spxRequired = input<boolean>();\r\n readonly spxShowClear = input(true);\r\n readonly spxShowEdit = input<boolean>();\r\n readonly spxShowHelp = input<boolean>();\r\n readonly spxShowLabel = input(true);\r\n readonly spxShowSearch = input<boolean>();\r\n readonly spxShowValidationMessages = input<boolean | null>();\r\n readonly spxAlert = input<SpxInputAlertI>();\r\n spxValue = model<SpxValuePair<any>>();\r\n spxClear = output();\r\n spxSearch = output();\r\n spxEdit = output();\r\n spxHelp = output();\r\n id = signal<number>(0);\r\n spxIsFocused = signal<boolean>(false);\r\n spxSetIdInParent = output<number>();\r\n ngOnInit() {\r\n this.id.set(Math.random());\r\n this.spxSetIdInParent.emit(this.id());\r\n\r\n this.selectedInputService.isFocused$(this.id()).subscribe((isFocused) => {\r\n this.spxIsFocused.set(isFocused);\r\n });\r\n }\r\n\r\n @HostListener('focusin', [\"$event\"]) handleFocusIn(ev: Event) {\r\n if(this.selectedInputService.getSelectedElementId() != this.id()) {\r\n this.selectedInputService.setSelectedElementId(this.id());\r\n }\r\n }\r\n\r\n @HostListener('focusout', [\"$event\"]) handleFocusOut(ev: Event) {\r\n this.selectedInputService.setSelectedElementId(null);\r\n }\r\n\r\n onClear() {\r\n this.spxClear.emit();\r\n }\r\n\r\n onSearch() {\r\n this.spxSearch.emit();\r\n }\r\n\r\n onEdit() {\r\n this.spxEdit.emit();\r\n }\r\n\r\n onHelp() {\r\n this.spxHelp.emit();\r\n }\r\n\r\n // private emitFocusIn(): void {\r\n // if (!this.spxFocused()) {\r\n // this.spxFocus.emit();\r\n // }\r\n // }\r\n\r\n // private emitFocusOut(): void {\r\n // if (this.spxFocused()) {\r\n // this.spxFocusOut.emit();\r\n // }\r\n // }\r\n}\r\n","<div class=\"flex rounded w-full gap-3\"\r\n [class.rounded-none]=\"this.spxShowValidationMessages()\"\r\n [class.rounded-t]=\"this.spxShowValidationMessages()\"\r\n [class.outline-none]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.ring-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.ring-offset-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.ring-blue-500]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n \r\n >\r\n <div class=\"flex-auto p-3\"\r\n [class.p-0]=\"this.spxCompact()\"\r\n [class.flex]=\"this.spxCompact()\"\r\n [class.items-center]=\"this.spxCompact()\">\r\n @if (this.spxShowLabel()) {\r\n <div class=\"font-bold text-sm mb-1 text-gray-800\"\r\n [class.mb-0]=\"this.spxCompact()\"\r\n [class.px-3]=\"this.spxCompact()\">\r\n {{this.spxLabel()}} @if (spxRequired()) {\r\n <span class=\"text-red-800\">*</span>\r\n }\r\n </div>\r\n }\r\n\r\n <ng-content select=\"[controls]\"></ng-content>\r\n</div>\r\n<div class=\"flex flex-none gap-1 p-1\">\r\n @if (this.spxShowEdit()) {\r\n <spx-button\r\n (spxClick)=\"onEdit()\"\r\n [spxFullHeight]=\"true\"\r\n [spxSize]=\"'xl'\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faEdit\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n @if (this.spxShowHelp()) {\r\n <spx-button\r\n (spxClick)=\"onHelp()\"\r\n [spxFullHeight]=\"true\"\r\n [spxDisabled]=\"this.spxReadonly()\"\r\n [spxSize]=\"'xl'\"\r\n [spxTabIndex]=\"-1\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faQuestion\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n @if (this.spxShowSearch()) {\r\n <spx-button\r\n (spxClick)=\"onSearch()\"\r\n [spxFullHeight]=\"true\"\r\n [spxDisabled]=\"this.spxReadonly()\"\r\n [spxSize]=\"'xl'\"\r\n [spxTabIndex]=\"-1\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faSearch\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n @if (this.spxShowClear()) {\r\n <spx-button\r\n (spxClick)=\"onClear()\"\r\n [spxDisabled]=\"this.spxReadonly() || (this.spxValue()?.description !== 'No' && !this.spxValue()?.value)\"\r\n [spxFullHeight]=\"true\"\r\n [spxSize]=\"'xl'\"\r\n [spxTabIndex]=\"-1\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faTimes\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n</div>\r\n</div>\r\n@if (this.spxShowValidationMessages()) {\r\n <div class=\"bg-red-600 rounded-b text-white p-3\">\r\n <ng-content select=\"[validation-messages]\"></ng-content>\r\n </div>\r\n}\r\n@else if (this.spxAlert()) {\r\n <div [class.bg-red-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.error\"\r\n [class.bg-green-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.success\"\r\n [class.bg-blue-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.info\"\r\n [class.bg-gray-400]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.unknown\"\r\n [class.bg-amber-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.warning\"\r\n class=\"rounded-b text-white p-3\">\r\n <div>\r\n {{this.spxAlert()?.text}}\r\n </div>\r\n</div>\r\n}","\r\nimport { ChangeDetectionStrategy, Component, OnChanges, OnDestroy, OnInit, SimpleChanges, input, output, signal } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spx-dropdown',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n SpxButtonComponent\r\n ],\r\n templateUrl: './spx-dropdown.component.html'\r\n})\r\nexport class SpxDropdownComponent implements OnChanges, OnInit, OnDestroy {\r\n focusPosition = signal<number>(0);\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n spxSelect = output<SpxValuePair<any>>();\r\n subscriptionKeyUp?: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.listenToKeyUp();\r\n }\r\n\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n this.focusPosition.set(0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptionKeyUp?.unsubscribe();\r\n }\r\n\r\n handleSuggestionClick(valuePair: SpxValuePair<string | number | boolean>) {\r\n this.select(valuePair);\r\n }\r\n\r\n private listenToKeyUp(): void {\r\n this.subscriptionKeyUp = fromEvent(window, 'keyup').subscribe((event) => {\r\n if ((event as KeyboardEvent).key === 'ArrowUp' && this.focusPosition() > 0) {\r\n this.focusPosition.update((oldValue) => oldValue - 1);\r\n event.preventDefault();\r\n }\r\n if ((event as KeyboardEvent).key === 'ArrowDown' && this.focusPosition() < this.spxSuggestions().length - 1) {\r\n this.focusPosition.update((oldValue) => oldValue + 1);\r\n event.preventDefault();\r\n }\r\n if ((event as KeyboardEvent).key === 'Enter' && this.spxSuggestions().length > 0) {\r\n this.select(this.spxSuggestions().at(this.focusPosition())!);\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n private select(valuePair: SpxValuePair<string | number | boolean>): void {\r\n this.focusPosition.set(0);\r\n this.spxSelect.emit(valuePair);\r\n }\r\n}\r\n","<div class=\"relative text-black\">\r\n <div\r\n class=\"absolute bg-gray-100 left-0 right-0 z-20\">\r\n @for (valuePair of this.spxSuggestions(); track valuePair; let i = $index) {\r\n <button\r\n class=\"text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left\"\r\n [class.bg-gray-100]=\"i === this.focusPosition()\"\r\n [class.bg-white]=\"i !== this.focusPosition()\"\r\n (click)=\"this.handleSuggestionClick(valuePair)\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.type]=\"'button'\">\r\n <div class=\"flex-1 p-1 font-bold text-lg\">{{valuePair?.description}}</div>\r\n <spx-button (spxClick)=\"this.handleSuggestionClick(valuePair)\" [spxType]=\"'button'\" [spxTabIndex]=\"-1\">Select</spx-button>\r\n </button>\r\n }\r\n </div>\r\n</div>","export enum SpxInputTypeEnum {\r\n autocomplete = 'autocomplete',\r\n button = 'button',\r\n date = 'date',\r\n float = 'float',\r\n hidden = 'hidden',\r\n overlay = 'overlay',\r\n overlayNumber = 'overlaynumber',\r\n radio = 'radio',\r\n number = 'number',\r\n password = 'password',\r\n text = 'text',\r\n textNumericKeyboard = 'textNumericKeyboard',\r\n time = 'time',\r\n dropdown = 'dropdown'\r\n}","\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, input, model, signal, viewChild } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { SpxDropdownComponent } from '../spx-dropdown/spx-dropdown.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SpxInputTypeEnum } from '../spx-input-type.enum';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { filter } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spx-input-text',\r\n imports: [\r\n SpxDropdownComponent,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input-text.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputTextComponent {\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxAutocomplete = input<string>();\r\n readonly spxInputMode = input<string>();\r\n readonly spxPattern = input<string>();\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n readonly spxReadonly = input(false);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxCapitalize = input(false);\r\n readonly spxType = input<SpxInputTypeEnum>(SpxInputTypeEnum.text);\r\n readonly spxWasInternalUpdate = input(false);\r\n readonly value = model<SpxValuePair<any>>();\r\n spxElementId = input<number>();\r\n selectedInputService = inject(SelectedInputService);\r\n spxIsFocused = signal<boolean>(false);\r\n inputRef = viewChild.required<ElementRef>('input'); \r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n\r\n }\r\n \r\n ngOnInit(): void {\r\n this.componentDidLoad();\r\n \r\n // Filter updates based on focus state\r\n this.selectedInputService.focusedElement$\r\n .pipe(filter((focusedId) => focusedId === this.spxElementId()))\r\n .subscribe(() => {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.spxSetFocus();\r\n });\r\n }\r\n\r\n triggerChangeDetection(): void { \r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n spxSetFocus() {\r\n this.inputRef().nativeElement?.focus();\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n }\r\n\r\n handleChange(event: any) {\r\n this.value.set({\r\n description: event,\r\n value: event,\r\n });\r\n }\r\n \r\n handleSuggestionClick(value: any) {\r\n if (!this.spxReadonly()) {\r\n this.value.set(value);\r\n this.spxIsFocused.set(false); // Update only if focused\r\n this.spxSetFocus();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"relative text-black\">\r\n <input\r\n #input\r\n class=\"font-bold text-lg w-full outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.autocomplete]=\"this.spxAutocomplete()\"\r\n [attr.autofocus]=\"this.spxAutofocus()\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode()\"\r\n [attr.pattern]=\"this.spxPattern()\"\r\n [attr.name]=\"this.spxName()\"\r\n [attr.type]=\"this.spxType()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n [class.uppercase]=\"this.spxCapitalize()\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.value()?.description ? this.value()?.description : this.value()?.value\"\r\n (ngModelChange)=\"this.handleChange($event)\"\r\n />\r\n @if (this.value()?.description && this.value()?.value && this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\r\n <span>{{this.value()?.value}}</span>\r\n }\r\n @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType() === 'overlaynumber')) {\r\n <spx-dropdown\r\n [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\r\n </spx-dropdown>\r\n }\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, ElementRef, OnInit, SimpleChanges, inject, input, model, signal, viewChild } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectedInputService } from '../input.service';\r\n\r\n@Component({\r\n selector: 'spx-input-float',\r\n imports: [\r\n FormsModule,\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input-float.component.html',\r\n styleUrl: './spx-input-float.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n\r\n})\r\nexport class SpxInputFloatComponent implements OnInit {\r\n protected internalValue = signal<{\r\n first: number | null;\r\n second: number | null;\r\n }>({\r\n first: null,\r\n second: null,\r\n });\r\n\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxElementId = input<number>();\r\n readonly spxReadonly = input(false);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxStep = input<number>();\r\n readonly value = model.required<SpxValuePair<any>>();\r\n readonly spxWasInternalUpdate = input(false);\r\n readonly selectedInputService = inject(SelectedInputService);\r\n readonly spxIsFocused = signal<boolean>(false);\r\n readonly firstInputRef = viewChild<ElementRef<HTMLInputElement>>('firstInputRef');\r\n readonly secondInputRef = viewChild<ElementRef<HTMLInputElement>>('secondInputRef');\r\n private isInternalUpdate = signal<boolean>(false);\r\n\r\n spxSetFocus() {\r\n this.firstInputRef()?.nativeElement?.focus();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n\r\n this.selectedInputService.focusedElement$\r\n .subscribe((focusedId) => {\r\n if(focusedId === this.spxElementId() && this.spxIsFocused() == false) {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.spxSetFocus();\r\n }\r\n else if(focusedId !== this.spxElementId() && focusedId != null) {\r\n this.spxIsFocused.set(false);\r\n }\r\n });\r\n\r\n this.handleSetValue(this.value());\r\n }\r\n\r\n ngOnChanges() {\r\n if(!this.isInternalUpdate()) {\r\n this.handleSetValue(this.value());\r\n }\r\n }\r\n\r\n handleSetValue(newValue: SpxValuePair<any>) {\r\n if (this.isNumeric(newValue?.value)) {\r\n this.internalValue.set({\r\n first: newValue?.value >= 0 ? Math.floor(parseFloat(newValue?.value)) : Math.ceil(parseFloat(newValue?.value)),\r\n second: newValue?.value?.split ? newValue?.value.split('.')[1] : 0,\r\n });\r\n } else {\r\n this.internalValue.set({\r\n first: null,\r\n second: null,\r\n });\r\n }\r\n }\r\n\r\n handleInput(value: any, position: 1 | 2) {\r\n this.isInternalUpdate.set(true);\r\n this.internalValue.set({\r\n first: position === 1 ? value : this.internalValue().first,\r\n second: position === 2 ? value : this.internalValue().second,\r\n });\r\n let result;\r\n if (this.internalValue().first === null && this.internalValue().second === null) {\r\n result = null;\r\n } else {\r\n result = `${this.internalValue().first ? this.internalValue().first : 0}.${this.internalValue().second ? this.internalValue().second : 0}`;\r\n }\r\n this.value.set({\r\n description: result,\r\n value: result,\r\n });\r\n this.isInternalUpdate.set(false);\r\n }\r\n\r\n handleClear() {\r\n this.internalValue().first = null;\r\n this.internalValue().second = null;\r\n }\r\n\r\n isNumeric(value: string) {\r\n return /^[+-]?\\d+(\\.\\d+)?$/.test(value);\r\n }\r\n}\r\n","<div class=\"flex items-end\">\r\n <input\r\n #firstInputRef\r\n class=\"spx-input-float__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.pattern]=\"'-?[0-9]*'\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 1)\" />\r\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\r\n <input #secondInputRef\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n class=\"spx-input-float__input\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 2)\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [attr.pattern]=\"'[0-9]*'\"\r\n [disabled]=\"this.spxReadonly()\" />\r\n</div>","import { Component, viewChild, input, ChangeDetectionStrategy, ElementRef, model, inject } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { filter } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spx-input-number',\r\n standalone: true,\r\n templateUrl: './spx-input-number.component.html',\r\n styleUrl: './spx-input-number.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FormsModule]\r\n})\r\n\r\nexport class SpxInputNumberComponent {\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input<boolean>(false);\r\n readonly spxInputMode = input<string>();\r\n readonly spxReadonly = input(false);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxFocused = input(true);\r\n readonly spxStep = input<number>();\r\n readonly value = model.required<SpxValuePair<any>>();\r\n readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('input');\r\n readonly spxElementId = input<number>();\r\n readonly selectedInputService = inject(SelectedInputService);\r\n \r\n ngOnInit() {\r\n // Filter updates based on focus state\r\n this.selectedInputService.focusedElement$\r\n .pipe(filter((focusedId) => focusedId === this.spxElementId()))\r\n .subscribe(() => {\r\n this.spxSetFocus();\r\n });\r\n }\r\n \r\n spxSetFocus() {\r\n this.inputRef().nativeElement?.focus();\r\n }\r\n\r\n handleChange($event: any) {\r\n this.value.set({...this.value(), value: $event});\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n }\r\n}","<div class=\"spx-input-number__controls\">\r\n <input\r\n #input\r\n class=\"spx-input-number__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\r\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\r\n [attr.type]=\"'number'\"\r\n [disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.value() ? this.value().value : undefined\"\r\n (ngModelChange)=\"this.handleChange($event)\" />\r\n</div> ","import { ChangeDetectionStrategy, Component, SimpleChanges, inject, input, model, signal } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\n\r\nimport { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { SelectedInputService } from '../input.service';\r\n\r\n@Component({\r\n selector: 'spx-input-radio',\r\n standalone: true,\r\n imports: [\r\n SpxSuggestionComponent\r\n ],\r\n templateUrl: './spx-input-radio.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputRadioComponent {\r\n readonly cachedSuggestions = signal<SpxValuePair<any>[]>([]);\r\n readonly focusPosition = signal<number>(0);\r\n readonly spxName = input<string>();\r\n readonly spxValidators = input<any[]>();\r\n readonly spxShowLabel = input(true);\r\n readonly spxReadonly = input(false);\r\n readonly spxSuggestions = input<SpxValuePair<any>[]>([]);\r\n readonly value = model<SpxValuePair<any>>();\r\n readonly selectedInputService = inject(SelectedInputService);\r\n readonly spxElementId = input<number>();\r\n readonly spxIsFocused = signal<boolean>(false);\r\n private subscriptionKeyUp?: Subscription;\r\n private subscriptionKeyDown?: Subscription;\r\n\r\n ngOnInit() {\r\n this.selectedInputService.focusedElement$\r\n .subscribe((focusedId) => {\r\n if(focusedId === this.spxElementId() && this.spxIsFocused() == false) {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.listenToKeys();\r\n }\r\n else if(focusedId !== this.spxElementId() && this.spxIsFocused() == true) {\r\n this.spxIsFocused.set(false);\r\n this.subscriptionKeyDown?.unsubscribe();\r\n this.subscriptionKeyUp?.unsubscribe();\r\n }\r\n\r\n this.determineFocusPosition();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n (changes['spxSuggestions'] && JSON.stringify(changes['spxSuggestions']?.previousValue) !== JSON.stringify(changes['spxSuggestions']?.currentValue))\r\n ) {\r\n this.cachedSuggestions.set(changes['spxSuggestions']?.currentValue ?? []);\r\n }\r\n }\r\n\r\n handleSuggestionClick(valuePair: SpxValuePair<any>) {\r\n\r\n if (this.spxReadonly()) {\r\n } else {\r\n this.select(valuePair);\r\n }\r\n\r\n this.determineFocusPosition();\r\n }\r\n\r\n private determineFocusPosition() {\r\n const spxSuggestions = this.spxSuggestions();\r\n if (this.value() && spxSuggestions?.length) {\r\n const index = spxSuggestions.findIndex(valuePair => valuePairToValue(valuePair) === valuePairToValue(this.value()));\r\n this.focusPosition.set(index >= 0 ? index : 0);\r\n } else {\r\n this.focusPosition.set(0);\r\n }\r\n }\r\n\r\n private select(valuePair: SpxValuePair<string | number | boolean>): void {\r\n this.value.set(valuePair);\r\n }\r\n\r\n private listenToKeys(): void {\r\n this.subscriptionKeyUp = fromEvent(window, 'keyup').subscribe((event) => {\r\n if (((event as KeyboardEvent).key === 'ArrowUp' || (event as KeyboardEvent).key === 'ArrowLeft') && this.focusPosition() > 0) {\r\n this.focusPosition.update((position) => position - 1);\r\n this.select(this.spxSuggestions().at(this.focusPosition())!);\r\n event.preventDefault();\r\n }\r\n if (((event as KeyboardEvent).key === 'ArrowDown' || (event as KeyboardEvent).key === 'ArrowRight') && this.focusPosition() < this.spxSuggestions().length - 1) {\r\n this.focusPosition.update((position) => position + 1);\r\n this.select(this.spxSuggestions().at(this.focusPosition())!);\r\n event.preventDefault();\r\n }\r\n });\r\n this.subscriptionKeyDown = fromEvent(window, 'keydown').subscribe((event) => {\r\n if ((event as KeyboardEvent).key === 'ArrowDown' ||\r\n (event as KeyboardEvent).key === 'ArrowLeft' ||\r\n (event as KeyboardEvent).key === 'ArrowRight' ||\r\n (event as KeyboardEvent).key === 'ArrowUp') {\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n}","<div class=\"grid grid-cols-2 gap-2\" [class.mt-3]=\"this.spxShowLabel()\">\r\n @for (valuePair of this.cachedSuggestions(); track valuePair; let i = $index) {\r\n <spx-suggestion\r\n [spxDisabled]=\"this.spxReadonly()\"\r\n [spxSelected]=\"this.value()?.value === valuePair?.value\"\r\n [spxTabbable]=\"this.focusPosition() === i\"\r\n [spxFocused]=\"(this.focusPosition() === i && this.spxIsFocused())\"\r\n (click)=\"this.handleSuggestionClick(valuePair)\">\r\n {{valuePair?.description}}\r\n </spx-suggestion>\r\n }\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\r\nimport { faXmark } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, ModalController } from '@ionic/angular/standalone';\r\n\r\n@Component({\r\n selector: 'spx-input-time-modal',\r\n imports: [\r\n FontAwesomeModule,\r\n IonButtons,\r\n IonContent,\r\n IonHeader,\r\n IonTitle,\r\n IonToolbar,\r\n SpxButtonComponent,\r\n ],\r\n templateUrl: './spx-input-time-modal.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpxInputTimeModalComponent {\r\n readonly view = input.required<'hours' | 'minutes'>();\r\n readonly value = input.required<number>();\r\n change = output<number>();\r\n faXmark = faXmark;\r\n hourOptions = signal<number[]>(Array.from({ length: 24 }, (_, i) => i)); // 0 to 23\r\n minuteOptions = signal<number[]>(Array.from({ length: 12 }, (_, i) => i * 5)); // Minutes in incrementen van 5\r\n typeError = SpxSeverityEnum.error;\r\n\r\n constructor(private modalController: ModalController){\r\n this.hourOptions().push(this.hourOptions().shift()!);\r\n this.minuteOptions().push(this.minuteOptions().shift()!);\r\n }\r\n\r\n closeDialog() {\r\n this.modalController.dismiss();\r\n }\r\n\r\n onChange(value: number) {\r\n this.change.emit(value);\r\n this.modalController.dismiss(value);\r\n }\r\n}\r\n","<ion-header>\r\n <ion-toolbar>\r\n <ion-title>Select {{view()}}</ion-title>\r\n <ion-buttons slot=\"end\">\r\n <spx-button [spxSeverity]=\"typeError\" (spxClick)=\"closeDialog()\">\r\n <fa-icon [icon]=\"faXmark\"></fa-icon>\r\n </spx-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n<ion-content class=\"ion-padding bg-white\">\r\n <!-- Uren -->\r\n <div class=\"custom-bg grid grid-cols-1 gap-3\">\r\n @if (view() === 'hours') {\r\n <div class=\"flex-wrap gap-2\">\r\n <div class=\"grid grid-cols-3 md:grid-cols-4 gap-3\">\r\n @for (hour of hourOptions(); track hour) {\r\n <div class=\"text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-full truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300\" [class.selected]=\"value() === hour\" (click)=\"onChange(hour)\">\r\n {{ hour }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <!-- Minuten -->\r\n @if (view() === 'minutes') {\r\n <div class=\"grid grid-cols-1 gap-3\">\r\n <div class=\"grid grid-cols-4 md:grid-cols-5 gap-3\">\r\n @for (minute of minuteOptions(); track minute) {\r\n <div class=\"text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-ful truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300\" [class.selected]=\"value() === minute\" (click)=\"onChange(minute)\">\r\n {{ minute }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</ion-content>","\r\nimport { ChangeDetectionStrategy, Component, ElementRef, computed, input, model, signal, viewChild } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { DateTime } from 'luxon';\r\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\r\nimport { SpxInputTimeModalComponent } from '../spx-input-time-modal/spx-input-time-modal.component';\r\nimport { ModalController } from '@ionic/angular/standalone';\r\n\r\n@Component({\r\n selector: 'spx-input-time',\r\n standalone: true,\r\n styleUrl: './spx-input-time.component.css',\r\n templateUrl: './spx-input-time.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputTimeComponent {\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxInputMode = input<string>();\r\n readonly spxPattern = input<string>();\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n readonly spxReadonly = input(false);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxCapitalize = input(false);\r\n readonly value = model.required<SpxValuePair<any>>();\r\n readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('input');\r\n readonly severitySuccess = SpxSeverityEnum.success;\r\n selectedHour = signal<number | null>(null);\r\n selectedMinute = signal<number | null>(null);\r\n readonly formattedHour = computed(() => this.selectedHour() !== null && this.selectedHour()! < 10 ? `0${this.selectedHour()}` : this.selectedHour());\r\n readonly formattedMinute = computed(() => this.selectedMinute() !== null && this.selectedMinute()! < 10 ? `0${this.selectedMinute()}` : this.selectedMinute());\r\n readonly hour = computed(() => this.value()?.value ? DateTime.fromISO(this.value()!.value).hour : null);\r\n readonly minute = computed(() => this.value()?.value ? DateTime.fromISO(this.value()!.value).minute : null);\r\n\r\n constructor(private modalController: ModalController) {}\r\n\r\n ngOnInit() {\r\n this.componentDidLoad();\r\n }\r\n\r\n spxSetFocus() {\r\n this.inputRef().nativeElement?.focus();\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n }\r\n\r\n handleDescriptionInput(event: any) {\r\n this.value.set({\r\n description: event.target ? event.target.value : null,\r\n value: event.target ? event.target.value : null,\r\n });\r\n }\r\n\r\n handleSuggestionClick(value: any) {\r\n if (!this.spxReadonly()) {\r\n this.value.set(value);\r\n }\r\n }\r\n\r\n async openDialog(view: 'hours' | 'minutes') {\r\n const value = this.value();\r\n const modal = await this.modalController.create({\r\n component: SpxInputTimeModalComponent,\r\n componentProps: {\r\n value: value?.value ?\r\n (view === 'hours' ? DateTime.fromISO(value.value).hour : DateTime.fromISO(value.value).minute) : undefined,\r\n view,\r\n },\r\n });\r\n\r\n modal.onDidDismiss().then((data) => {\r\n\r\n if (view === 'hours') {\r\n this.selectedHour.set(data.data);\r\n this.openDialog('minutes');\r\n this.updateValue();\r\n\r\n } else if (view === 'minutes') {\r\n this.selectedMinute.set(data.data);\r\n this.updateValue();\r\n }\r\n });\r\n\r\n await modal.present();\r\n }\r\n\r\n updateValue() {\r\n if (this.selectedHour() !== null && this.selectedMinute() !== null) {\r\n const formattedHour = this.selectedHour()! < 10 ? `0${this.selectedHour()}` : this.selectedHour();\r\n const formattedMinute = this.selectedMinute()! < 10 ? `0${this.selectedMinute()}` : this.selectedMinute();\r\n const newValue = `${formattedHour}:${formattedMinute}`;\r\n\r\n this.value.set({\r\n description: newValue,\r\n value: newValue,\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"relative text-black\">\r\n <div class=\"flex items-center justify-around gap-3\">\r\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('hours')\">{{ formattedHour() ?? '--' }}</div>\r\n <div class=\"text-gray text-xl\">:</div>\r\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('minutes')\">{{ formattedMinute() ?? '--' }}</div>\r\n </div>\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, HostListener, inject, input, model, OnInit, signal, viewChild } from '@angular/core';\r\nimport { DateTime } from 'luxon';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { filter } from 'rxjs';\r\n\r\nenum stepType {\r\n years = \"years\",\r\n months = \"months\",\r\n days = \"days\"\r\n}\r\n\r\n@Component({\r\n selector: 'spx-input-date',\r\n standalone: true,\r\n imports: [\r\n SpxSuggestionComponent,\r\n FormsModule\r\n ],\r\n templateUrl: \"./spx-input-date.component.html\",\r\n styleUrl: \"./spx-input-date.component.css\",\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputDateComponent implements OnInit {\r\n spxMax = input.required<string>();\r\n spxMin = input.required<string>();\r\n spxReadonly = input<boolean>();\r\n spxValidators = input<any[]>();\r\n spxAutoFocus = input(false);\r\n value = model<SpxValuePair<string>>({\r\n description: \"\",\r\n value: \"\",\r\n });\r\n\r\n spxSelectedStep = signal<stepType>(stepType.years);\r\n spxSelectDay = input<boolean>(false);\r\n spxSelectMonth = input<boolean>(true);\r\n selectedYear = signal<number | null>(null);\r\n selectedMonth = signal<number | null>(null);\r\n selectedDay = signal<number | null>(null);\r\n\r\n yearInputComponent = viewChild.required<ElementRef>(stepType.years);\r\n monthInputComponent = viewChild.required<ElementRef>(stepType.months);\r\n dayInputComponent = viewChild.required<ElementRef>(stepType.days);\r\n spxElementId = input<number>();\r\n selectedInputService = inject(SelectedInputService);\r\n spxIsFocused = signal<boolean>(false);\r\n private isInternalUpdate = signal<boolean>(false);\r\n\r\n spxSuggestionC = computed<SpxValuePair<number>[]>(() => {\r\n switch (this.spxSelectedStep()) {\r\n case stepType.years:\r\n return this.spxSuggestions().years;\r\n case stepType.months:\r\n return [...this.spxSuggestions().months]\r\n case stepType.days:\r\n return [...this.spxSuggestions().days]\r\n }\r\n });\r\n\r\n\r\n handleFocus(selectedStep: string) {\r\n switch (selectedStep) {\r\n case stepType.years:\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n break;\r\n case stepType.months:\r\n this.spxSelectedStep.set(stepType.months);\r\n this.monthInputComponent().nativeElement.focus();\r\n break;\r\n case stepType.days:\r\n this.spxSelectedStep.set(stepType.days);\r\n this.dayInputComponent().nativeElement.focus();\r\n break;\r\n }\r\n }\r\n\r\n onModelChange(newValue: string, selectedStep: string) {\r\n this.isInternalUpdate.set(true);\r\n\r\n const parsedValue = +newValue; // Convert to number\r\n if (parsedValue == 0) return;\r\n switch (selectedStep) {\r\n case stepType.years:\r\n this.selectedYear.set(parsedValue);\r\n if (parsedValue > 999) {\r\n this.spxSelectedStep.set(stepType.months);\r\n this.monthInputComponent().nativeElement.focus();\r\n }\r\n break;\r\n case stepType.months:\r\n this.selectedMonth.set(parsedValue);\r\n break;\r\n case stepType.days:\r\n this.selectedDay.set(parsedValue);\r\n break;\r\n }\r\n\r\n this.updateValueAndEmit();\r\n this.isInternalUpdate.set(false);\r\n }\r\n\r\n spxSuggestions = input<{\r\n years: SpxValuePair<number>[];\r\n months: SpxValuePair<number>[];\r\n days: SpxValuePair<number>[];\r\n }>({\r\n years: [],\r\n months: [{\r\n description: 'Jan',\r\n value: 1,\r\n }, {\r\n description: 'Feb',\r\n value: 2,\r\n }, {\r\n description: 'Mar',\r\n value: 3,\r\n }, {\r\n description: 'Apr',\r\n value: 4,\r\n }, {\r\n description: 'May',\r\n value: 5,\r\n }, {\r\n description: 'Jun',\r\n value: 6,\r\n }, {\r\n description: 'Jul',\r\n value: 7,\r\n }, {\r\n description: 'Aug',\r\n value: 8,\r\n }, {\r\n description: 'Sep',\r\n value: 9,\r\n }, {\r\n description: 'Oct',\r\n value: 10,\r\n }, {\r\n description: 'Nov',\r\n value: 11,\r\n }, {\r\n description: 'Dec',\r\n value: 12,\r\n }],\r\n days: [],\r\n });\r\n\r\n ngOnInit() {\r\n this.suggestYears();\r\n this.setValue();\r\n\r\n if (this.spxAutoFocus()) {\r\n this.handleFocus(\"years\");\r\n }\r\n\r\n // Filter updates based on focus state\r\n this.selectedInputService.focusedElement$\r\n .pipe(filter((focusedId) => focusedId === this.spxElementId()))\r\n .subscribe(() => {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.handleFocus(this.spxSelectedStep());\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.isInternalUpdate()) {\r\n this.setValue();\r\n }\r\n }\r\n\r\n private setValue() {\r\n if (valuePairToValue(this.value())) {\r\n const parsedValue = DateTime.fromISO(valuePairToValue(this.value()));\r\n if (this.selectedYear() && this.selectedYear()! < 999) {\r\n return;\r\n }\r\n this.selectedYear.set(parsedValue.year);\r\n this.selectedMonth.set(parsedValue.month);\r\n this.selectedDay.set(parsedValue.day);\r\n }\r\n }\r\n\r\n handleSuggestionClick(value: number) {\r\n\r\n switch (this.spxSelectedStep()) {\r\n case stepType.years:\r\n this.selectedYear.set(value);\r\n break;\r\n case stepType.months:\r\n this.selectedMonth.set(value);\r\n break;\r\n case stepType.days:\r\n this.selectedDay.set(value);\r\n break;\r\n }\r\n\r\n this.updateValueAndEmit();\r\n this.changeSelectedStep();\r\n }\r\n\r\n // Handle keyboard navigation (Tab and Shift + Tab)\r\n @HostListener('keydown', ['$event'])\r\n handleTabKey(event: KeyboardEvent): void {\r\n if (event.key === 'Tab') {\r\n\r\n this.changeSelectedStep();\r\n\r\n event.preventDefault(); // Prevent default tab behavior\r\n }\r\n }\r\n\r\n updateValueAndEmit() {\r\n if (this.selectedYear() && this.selectedMonth()) {\r\n const concatenatedValue = `${this.selectedYear() ? this.selectedYear() : ``}${this.selectedMonth() ? `${this.selectedMonth()! < 10 ? `0${this.selectedMonth()}` : this.selectedMonth()}` : ``}${this.selectedDay() ? `-${this.selectedDay()! < 10 ? `0${this.selectedDay()}` : this.selectedDay()}` : ``}`\r\n const parsedValue = DateTime.fromISO(concatenatedValue);\r\n this.value.set({ value: parsedValue.toISO()!, description: parsedValue.toISO() });\r\n }\r\n }\r\n\r\n changeSelectedStep() {\r\n switch (this.spxSelectedStep()) {\r\n case stepType.years:\r\n if (this.spxSelectMonth()) {\r\n this.spxSelectedStep.set(stepType.months);\r\n this.monthInputComponent().nativeElement.focus();\r\n }\r\n else {\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n }\r\n break;\r\n case stepType.months:\r\n if (this.spxSelectDay()) {\r\n this.spxSelectedStep.set(stepType.days);\r\n this.dayInputComponent().nativeElement.focus();\r\n }\r\n else {\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n }\r\n break;\r\n case stepType.days:\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n break;\r\n }\r\n }\r\n\r\n private suggestYears(): void {\r\n this.spxSuggestions().years = [];\r\n for (let year = DateTime.fromISO(this.spxMin()).year; year <= DateTime.fromISO(this.spxMax()).year; year++) {\r\n this.spxSuggestions().years.push({\r\n description: `'${year.toString().substring(2, 4)}`,\r\n value: year,\r\n });\r\n }\r\n }\r\n\r\n handleClear() {\r\n this.spxSelectedStep.set(stepType.years);\r\n this.selectedYear.set(null);\r\n this.selectedMonth.set(null);\r\n this.selectedDay.set(null);\r\n }\r\n}\r\n","<div class='spx-input-date__controls'>\r\n <input #years\r\n class='spx-input-date__input'\r\n [ngModel]=\"selectedYear()\"\r\n (ngModelChange)=\"onModelChange($event, 'years')\"\r\n [attr.type]=\"'number'\"\r\n (click)=\"this.handleFocus('years')\"\r\n [attr.min]=\"1900\"\r\n [attr.max]=\"2100\"\r\n [attr.step]=\"1\"\r\n />\r\n <div class='spx-input-date__control-label'>Year</div>\r\n @if (this.spxSelectMonth()) {\r\n <input #months\r\n class='spx-input-date__input'\r\n [ngModel]=\"selectedMonth()\"\r\n (ngModelChange)=\"onModelChange($event, 'months')\"\r\n (click)=\"this.handleFocus('months')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"12\"\r\n [attr.step]=\"1\" />\r\n }\r\n <div class='spx-input-date__control-label'>Month</div>\r\n @if (this.spxSelectDay()) {\r\n <input #days\r\n class='spx-input-date__input'\r\n [ngModel]=\"selectedDay()\"\r\n (ngModelChange)=\"onModelChange($event, 'days')\"\r\n (click)=\"this.handleFocus('days')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"31\"\r\n [attr.step]=\"1\" />\r\n <div class='spx-input-date__control-label'>Days</div>\r\n }\r\n</div>\r\n<div class='spx-input-date__suggestions'>\r\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\r\n <spx-suggestion [spxSelected]=\"\r\n (selectedYear() === valuePair.value && this.spxSelectedStep() === 'years') ||\r\n (selectedMonth() === valuePair.value && this.spxSelectedStep() === 'months') || \r\n (selectedDay() === valuePair.value && this.spxSelectedStep() === 'days')\"\r\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\r\n }\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, HostListener, inject, input, output, signal, viewChild } from '@angular/core';\r\nimport { SpxInputBoxComponent } from './spx-input-box/spx-input-box.component';\r\nimport { SpxInputTextComponent } from './spx-input-text/spx-input-text.component';\r\nimport { SpxValuePair } from './spx-value-interface';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SpxInputFloatComponent } from './spx-input-float/spx-input-float.component';\r\nimport { SpxInputNumberComponent } from './spx-input-number/spx-input-number.component';\r\nimport { SpxInputRadioComponent } from './spx-input-radio/spx-input-radio.component';\r\nimport { SpxInputTypeEnum } from './spx-input-type.enum';\r\nimport { SpxInputTimeComponent } from './spx-input-time/spx-input-time.component';\r\nimport { SpxInputDateComponent } from './spx-input-date/spx-input-date.component';\r\nimport { SelectedInputService } from './input.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpxInputAlertI } from '@softpak/components/spx-helpers';\r\n\r\n@Component({\r\n selector: 'spx-input',\r\n host: {\r\n '(spxChange)': 'handleChangeEvent($event)'\r\n },\r\n imports: [\r\n SpxInputBoxComponent,\r\n SpxInputDateComponent,\r\n SpxInputFloatComponent,\r\n SpxInputNumberComponent,\r\n SpxInputRadioComponent,\r\n SpxInputTextComponent,\r\n SpxInputTimeComponent\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: SpxInputComponent,\r\n multi: true\r\n }\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputComponent {\r\n readonly spxLabel = input<string>('label');\r\n readonly spxMax = input<string>();\r\n readonly spxMin = input<string>();\r\n readonly spxName = input<string>();\r\n readonly spxReadonly = input(false);\r\n readonly spxAutocomplete = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxInputMode = input<string>();\r\n readonly spxPattern = input<string>();\r\n readonly spxRequired = input(false);\r\n readonly spxSelectMonth = input(true);\r\n readonly spxSelectDay = input(true);\r\n readonly spxShowEdit = input(false);\r\n readonly spxShowHelp = input(false);\r\n readonly spxShowLabel = input(true);\r\n readonly spxCompact = input(false);\r\n readonly spxShowClear = input(true);\r\n readonly spxShowSearch = input(false);\r\n readonly spxAlert = input<SpxInputAlertI>();\r\n readonly spxShowValidationMessages = input<boolean | null | undefined>(false);\r\n readonly spxStep = input<number>();\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n readonly spxType = input<SpxInputTypeEnum>(SpxInputTypeEnum.text);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxCapitalize = input(false);\r\n value = signal<SpxValuePair<any>>({ value: null, description: null });\r\n spxClear = output();\r\n spxEdit = output();\r\n spxHelp = output();\r\n spxSearch = output();\r\n spxBlur = output();\r\n floatInput = viewChild<SpxInputFloatComponent>(\"spxInputFloat\");\r\n numberInput = viewChild<SpxInputNumberComponent>(\"spxInputNumber\");\r\n textInput = viewChild<SpxInputTextComponent>(\"spxInputText\");\r\n timeInput = viewChild<SpxInputTimeComponent>(\"spxInputTime\");\r\n radioInput = viewChild<SpxInputRadioComponent>(\"spxInputRadio\");\r\n dateInput = viewChild<SpxInputDateComponent>(\"spxInputDate\");\r\n spxElementId = signal<number>(0);\r\n selectedInputService = inject(SelectedInputService);\r\n private selectedInputServiceSubscription: Subscription | undefined;\r\n\r\n handleSpxElementIdSet(id: number) {\r\n this.spxElementId.set(id);\r\n\r\n this.selectedInputServiceSubscription = this.selectedInputService.isBlurred$(id).subscribe((isBlurred) => {\r\n if (isBlurred) {\r\n this.spxBlur.emit();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.selectedInputServiceSubscription) {\r\n this.selectedInputServiceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n handleChange(event: any) {\r\n this.value.set(event);\r\n }\r\n\r\n triggerChangeDetection(): void {\r\n this.textInput()?.triggerChangeDetection();\r\n }\r\n\r\n handleClear() {\r\n this.spxClear.emit();\r\n this.passFocusToControl();\r\n this.handleChangeEvent({\r\n value: null,\r\n });\r\n\r\n this.dateInput()?.handleClear();\r\n this.floatInput()?.handleClear();\r\n }\r\n\r\n handleSearch() {\r\n this.spxSearch.emit();\r\n }\r\n\r\n handleEdit() {\r\n this.spxEdit.emit();\r\n }\r\n\r\n handleHelp() {\r\n this.spxHelp.emit();\r\n }\r\n\r\n setFocusIn() {\r\n setTimeout(() => {\r\n this.passFocusToControl();\r\n }, 0);\r\n }\r\n\r\n private passFocusToControl() {\r\n switch (this.spxType()) {\r\n case SpxInputTypeEnum.autocomplete:\r\n case SpxInputTypeEnum.text:\r\n case SpxInputTypeEnum.overlayNumber:\r\n this.textInput()?.spxSetFocus();\r\n break;\r\n case SpxInputTypeEnum.number:\r\n this.numberInput()?.spxSetFocus();\r\n break;\r\n case SpxInputTypeEnum.radio:\r\n break;\r\n case SpxInputTypeEnum.time:\r\n this.timeInput()?.spxSetFocus();\r\n break;\r\n }\r\n }\r\n\r\n private onChange: (value: any) => void = () => {/**/ };\r\n private onTouched: () => void = () => {/**/ };\r\n protected lastValue = null;\r\n\r\n writeValue(value: any) {\r\n if (value === null && this.lastValue === null) { return; }\r\n this.value.set(value); // hier komt initiele waarde van formcontrol binnen\r\n this.lastValue = value;\r\n }\r\n\r\n handleChangeEvent(value: any) {\r\n if (value !== this.lastValue) {\r\n this.lastValue = value;\r\n this.onChange(value);\r\n }\r\n this.writeValue(value);\r\n }\r\n\r\n @HostListener('focusout')\r\n _handleBlurEvent() {\r\n this.onTouched();\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.onChange = fn; // emit verandering aan formcontrol\r\n }\r\n registerOnTouched(fn: () => void) {\r\n this.onTouched = fn;\r\n }\r\n}\r\n","<spx-input-box\r\n (spxClear)=\"this.handleClear()\"\r\n (spxEdit)=\"this.handleEdit()\"\r\n (spxHelp)=\"this.handleHelp()\"\r\n (spxSearch)=\"this.handleSearch()\"\r\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\r\n [spxAlert]=\"this.spxAlert()\"\r\n [spxCompact]=\"this.spxCompact()\"\r\n [spxLabel]=\"this.spxLabel()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxRequired]=\"this.spxRequired()\"\r\n [spxShowClear]=\"this.spxShowClear()\"\r\n [spxShowEdit]=\"this.spxShowEdit()\"\r\n [spxShowHelp]=\"this.spxShowHelp()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\r\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\r\n [spxValue]=\"this.value()\"\r\n>\r\n <div controls>\r\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\r\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\r\n this.spxType() === 'password') {\r\n <spx-input-text\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxCapitalize]=\"this.spxCapitalize()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxType]=\"this.spxType()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputText\r\n ></spx-input-text>\r\n } @if (this.spxType() === 'date') {\r\n <spx-input-date\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutoFocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxMax]=\"this.spxMax()!\"\r\n [spxMin]=\"this.spxMin()!\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxSelectDay]=\"this.spxSelectDay()\"\r\n [spxSelectMonth]=\"this.spxSelectMonth()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputDate\r\n ></spx-input-date>\r\n } @if (this.spxType() === 'float') {\r\n <spx-input-float\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputFloat\r\n ></spx-input-float>\r\n } @if (this.spxType() === 'number') {\r\n <spx-input-number\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputNumber\r\n ></spx-input-number>\r\n } @if (this.spxType() === 'radio') {\r\n <spx-input-radio\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputRadio\r\n ></spx-input-radio>\r\n } @if (this.spxType() === 'time') {\r\n <spx-input-time\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputTime\r\n ></spx-input-time>\r\n }\r\n </div>\r\n <div validation-messages>\r\n <ng-content></ng-content>\r\n </div>\r\n</spx-input-box>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"softpak-components-spx-inputs.mjs","sources":["../../../../projects/softpak/components/spx-inputs/input.service.ts","../../../../projects/softpak/components/spx-inputs/spx-input-box/spx-input-box.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-box/spx-input-box.component.html","../../../../projects/softpak/components/spx-inputs/spx-dropdown/spx-dropdown.component.ts","../../../../projects/softpak/components/spx-inputs/spx-dropdown/spx-dropdown.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-type.enum.ts","../../../../projects/softpak/components/spx-inputs/spx-input-text/spx-input-text.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-text/spx-input-text.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-float/spx-input-float.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-float/spx-input-float.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-number/spx-input-number.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-number/spx-input-number.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-radio/spx-input-radio.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-radio/spx-input-radio.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-time-modal/spx-input-time-modal.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-time-modal/spx-input-time-modal.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-time/spx-input-time.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-time/spx-input-time.component.html","../../../../projects/softpak/components/spx-inputs/spx-input-date/spx-input-date.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input-date/spx-input-date.component.html","../../../../projects/softpak/components/spx-inputs/spx-input.component.ts","../../../../projects/softpak/components/spx-inputs/spx-input.component.html","../../../../projects/softpak/components/spx-inputs/softpak-components-spx-inputs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, distinctUntilChanged, filter, map, Observable, pairwise } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root', // Ensure the service is available globally\r\n})\r\nexport class SelectedInputService {\r\n private focusedElement = new BehaviorSubject<number | null>(0); // Signal to store the selected input's ID\r\n focusedElement$ = this.focusedElement.asObservable(); // Observable for the comparison result\r\n isFocused$(id: number): Observable<boolean> {\r\n return this.focusedElement$.pipe(\r\n map((focusedId) => {\r\n return focusedId === id;\r\n }) // Emit true/false if the element is focused\r\n );\r\n }\r\n\r\n isBlurred$(id: number): Observable<boolean> {\r\n return this.focusedElement$.pipe(\r\n pairwise(), // Emit both the previous and current value as a tuple\r\n filter(([previous]) => {\r\n return previous === id;\r\n }), // Only proceed if the previous value matches the ID\r\n map(([, current]) => {\r\n return current === null;\r\n }), // Return true if current is null\r\n );\r\n }\r\n\r\n getSelectedElementId(): number | null {\r\n return this.focusedElement.value; // Access the value directly from BehaviorSubject\r\n }\r\n\r\n // Method to update the selected ID\r\n setSelectedElementId(id: number | null): void {\r\n this.focusedElement.next(id);\r\n }\r\n}","\r\nimport { ChangeDetectionStrategy, Component, HostListener, inject, input, model, output, signal } from '@angular/core';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faEdit, faQuestion, faSearch, faTimes } from '@fortawesome/free-solid-svg-icons';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { IsSeverityPipe } from '@softpak/components/spx-pipes';\r\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\r\nimport { SpxInputAlertI } from '../spx-input-alert-interface';\r\n\r\n@Component({\r\n selector: 'spx-input-box',\r\n imports: [\r\n SpxButtonComponent,\r\n FontAwesomeModule,\r\n IsSeverityPipe\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input-box.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n \"(click)\" :\"handleFocusIn()\"\r\n}\r\n})\r\nexport class SpxInputBoxComponent {\r\n selectedInputService = inject(SelectedInputService);\r\n faEdit = faEdit;\r\n faSearch = faSearch;\r\n faQuestion = faQuestion;\r\n faTimes = faTimes;\r\n SpxSeverity = SpxSeverityEnum;\r\n readonly spxCompact = input<boolean>();\r\n readonly spxLabel = input<string>();\r\n readonly spxReadonly = input(false);\r\n readonly spxRequired = input<boolean>();\r\n readonly spxShowClear = input(true);\r\n readonly spxShowEdit = input<boolean>();\r\n readonly spxShowHelp = input<boolean>();\r\n readonly spxShowLabel = input(true);\r\n readonly spxShowSearch = input<boolean>();\r\n readonly spxShowValidationMessages = input<boolean | null>();\r\n readonly spxAlert = input<SpxInputAlertI>();\r\n spxValue = model<SpxValuePair<any>>();\r\n spxClear = output();\r\n spxSearch = output();\r\n spxEdit = output();\r\n spxHelp = output();\r\n id = signal<number>(0);\r\n spxIsFocused = signal<boolean>(false);\r\n spxSetIdInParent = output<number>();\r\n ngOnInit() {\r\n this.id.set(Math.random());\r\n this.spxSetIdInParent.emit(this.id());\r\n\r\n this.selectedInputService.isFocused$(this.id()).subscribe((isFocused) => {\r\n this.spxIsFocused.set(isFocused);\r\n });\r\n }\r\n\r\n @HostListener('focusin', [\"$event\"]) handleFocusIn(ev: Event) {\r\n if(this.selectedInputService.getSelectedElementId() != this.id()) {\r\n this.selectedInputService.setSelectedElementId(this.id());\r\n }\r\n }\r\n\r\n @HostListener('focusout', [\"$event\"]) handleFocusOut(ev: Event) {\r\n this.selectedInputService.setSelectedElementId(null);\r\n }\r\n\r\n onClear() {\r\n this.spxClear.emit();\r\n }\r\n\r\n onSearch() {\r\n this.spxSearch.emit();\r\n }\r\n\r\n onEdit() {\r\n this.spxEdit.emit();\r\n }\r\n\r\n onHelp() {\r\n this.spxHelp.emit();\r\n }\r\n\r\n // private emitFocusIn(): void {\r\n // if (!this.spxFocused()) {\r\n // this.spxFocus.emit();\r\n // }\r\n // }\r\n\r\n // private emitFocusOut(): void {\r\n // if (this.spxFocused()) {\r\n // this.spxFocusOut.emit();\r\n // }\r\n // }\r\n}\r\n","<div class=\"flex rounded w-full gap-3\"\r\n [class.rounded-none]=\"this.spxShowValidationMessages()\"\r\n [class.rounded-t]=\"this.spxShowValidationMessages()\"\r\n [class.outline-none]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.ring-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.ring-offset-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.ring-blue-500]=\"this.spxIsFocused() && !this.spxReadonly()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n \r\n >\r\n <div class=\"flex-auto p-3\"\r\n [class.p-0]=\"this.spxCompact()\"\r\n [class.flex]=\"this.spxCompact()\"\r\n [class.items-center]=\"this.spxCompact()\">\r\n @if (this.spxShowLabel()) {\r\n <div class=\"font-bold text-sm mb-1 text-gray-800\"\r\n [class.mb-0]=\"this.spxCompact()\"\r\n [class.px-3]=\"this.spxCompact()\">\r\n {{this.spxLabel()}} @if (spxRequired()) {\r\n <span class=\"text-red-800\">*</span>\r\n }\r\n </div>\r\n }\r\n\r\n <ng-content select=\"[controls]\"></ng-content>\r\n</div>\r\n<div class=\"flex flex-none gap-1 p-1\">\r\n @if (this.spxShowEdit()) {\r\n <spx-button\r\n (spxClick)=\"onEdit()\"\r\n [spxFullHeight]=\"true\"\r\n [spxSize]=\"'xl'\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faEdit\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n @if (this.spxShowHelp()) {\r\n <spx-button\r\n (spxClick)=\"onHelp()\"\r\n [spxFullHeight]=\"true\"\r\n [spxDisabled]=\"this.spxReadonly()\"\r\n [spxSize]=\"'xl'\"\r\n [spxTabIndex]=\"-1\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faQuestion\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n @if (this.spxShowSearch()) {\r\n <spx-button\r\n (spxClick)=\"onSearch()\"\r\n [spxFullHeight]=\"true\"\r\n [spxDisabled]=\"this.spxReadonly()\"\r\n [spxSize]=\"'xl'\"\r\n [spxTabIndex]=\"-1\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faSearch\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n @if (this.spxShowClear()) {\r\n <spx-button\r\n (spxClick)=\"onClear()\"\r\n [spxDisabled]=\"this.spxReadonly() || (this.spxValue()?.description !== 'No' && !this.spxValue()?.value)\"\r\n [spxFullHeight]=\"true\"\r\n [spxSize]=\"'xl'\"\r\n [spxTabIndex]=\"-1\"\r\n [spxType]=\"'button'\">\r\n <fa-icon [icon]=\"faTimes\" class=\"block text-xl\"></fa-icon>\r\n </spx-button>\r\n }\r\n</div>\r\n</div>\r\n@if (this.spxShowValidationMessages()) {\r\n <div class=\"bg-red-600 rounded-b text-white p-3\">\r\n <ng-content select=\"[validation-messages]\"></ng-content>\r\n </div>\r\n}\r\n@else if (this.spxAlert()) {\r\n <div [class.bg-red-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.error\"\r\n [class.bg-green-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.success\"\r\n [class.bg-blue-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.info\"\r\n [class.bg-gray-400]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.unknown\"\r\n [class.bg-amber-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.warning\"\r\n class=\"rounded-b text-white p-3\">\r\n <div>\r\n {{this.spxAlert()?.text}}\r\n </div>\r\n</div>\r\n}","\r\nimport { ChangeDetectionStrategy, Component, OnChanges, OnDestroy, OnInit, SimpleChanges, input, output, signal } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spx-dropdown',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n SpxButtonComponent\r\n ],\r\n templateUrl: './spx-dropdown.component.html'\r\n})\r\nexport class SpxDropdownComponent implements OnChanges, OnInit, OnDestroy {\r\n focusPosition = signal<number>(0);\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n spxSelect = output<SpxValuePair<any>>();\r\n subscriptionKeyUp?: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.listenToKeyUp();\r\n }\r\n\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n this.focusPosition.set(0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptionKeyUp?.unsubscribe();\r\n }\r\n\r\n handleSuggestionClick(valuePair: SpxValuePair<string | number | boolean>) {\r\n this.select(valuePair);\r\n }\r\n\r\n private listenToKeyUp(): void {\r\n this.subscriptionKeyUp = fromEvent(window, 'keyup').subscribe((event) => {\r\n if ((event as KeyboardEvent).key === 'ArrowUp' && this.focusPosition() > 0) {\r\n this.focusPosition.update((oldValue) => oldValue - 1);\r\n event.preventDefault();\r\n }\r\n if ((event as KeyboardEvent).key === 'ArrowDown' && this.focusPosition() < this.spxSuggestions().length - 1) {\r\n this.focusPosition.update((oldValue) => oldValue + 1);\r\n event.preventDefault();\r\n }\r\n if ((event as KeyboardEvent).key === 'Enter' && this.spxSuggestions().length > 0) {\r\n this.select(this.spxSuggestions().at(this.focusPosition())!);\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n private select(valuePair: SpxValuePair<string | number | boolean>): void {\r\n this.focusPosition.set(0);\r\n this.spxSelect.emit(valuePair);\r\n }\r\n}\r\n","<div class=\"relative text-black\">\r\n <div\r\n class=\"absolute bg-gray-100 left-0 right-0 z-20\">\r\n @for (valuePair of this.spxSuggestions(); track valuePair; let i = $index) {\r\n <button\r\n class=\"text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left\"\r\n [class.bg-gray-100]=\"i === this.focusPosition()\"\r\n [class.bg-white]=\"i !== this.focusPosition()\"\r\n (click)=\"this.handleSuggestionClick(valuePair)\"\r\n [attr.tabindex]=\"-1\"\r\n [attr.type]=\"'button'\">\r\n <div class=\"flex-1 p-1 font-bold text-lg\">{{valuePair?.description}}</div>\r\n <spx-button (spxClick)=\"this.handleSuggestionClick(valuePair)\" [spxType]=\"'button'\" [spxTabIndex]=\"-1\">Select</spx-button>\r\n </button>\r\n }\r\n </div>\r\n</div>","export enum SpxInputTypeEnum {\r\n autocomplete = 'autocomplete',\r\n button = 'button',\r\n date = 'date',\r\n float = 'float',\r\n hidden = 'hidden',\r\n overlay = 'overlay',\r\n overlayNumber = 'overlaynumber',\r\n radio = 'radio',\r\n number = 'number',\r\n password = 'password',\r\n text = 'text',\r\n textNumericKeyboard = 'textNumericKeyboard',\r\n time = 'time',\r\n dropdown = 'dropdown'\r\n}","\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, ElementRef, inject, input, model, signal, viewChild } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { SpxDropdownComponent } from '../spx-dropdown/spx-dropdown.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SpxInputTypeEnum } from '../spx-input-type.enum';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { filter } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spx-input-text',\r\n imports: [\r\n SpxDropdownComponent,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input-text.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputTextComponent {\r\n mappedReadonly = computed(() => this.spxReadonly() ? true : false);\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxAutocomplete = input<string>();\r\n readonly spxInputMode = input<string>();\r\n readonly spxPattern = input<string>();\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n readonly spxReadonly = input<true | undefined>(undefined);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxCapitalize = input(false);\r\n readonly spxType = input<SpxInputTypeEnum>(SpxInputTypeEnum.text);\r\n readonly spxWasInternalUpdate = input(false);\r\n readonly value = model<SpxValuePair<any>>();\r\n spxElementId = input<number>();\r\n selectedInputService = inject(SelectedInputService);\r\n spxIsFocused = signal<boolean>(false);\r\n inputRef = viewChild.required<ElementRef>('input'); \r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n\r\n }\r\n \r\n ngOnInit(): void {\r\n this.componentDidLoad();\r\n \r\n // Filter updates based on focus state\r\n this.selectedInputService.focusedElement$\r\n .pipe(filter((focusedId) => focusedId === this.spxElementId()))\r\n .subscribe(() => {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.spxSetFocus();\r\n });\r\n }\r\n\r\n triggerChangeDetection(): void { \r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n spxSetFocus() {\r\n this.inputRef().nativeElement?.focus();\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n }\r\n\r\n handleChange(event: any) {\r\n this.value.set({\r\n description: event,\r\n value: event,\r\n });\r\n }\r\n \r\n handleSuggestionClick(value: any) {\r\n if (!this.spxReadonly()) {\r\n this.value.set(value);\r\n this.spxIsFocused.set(false); // Update only if focused\r\n this.spxSetFocus();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"relative text-black\">\r\n <input\r\n #input\r\n class=\"font-bold text-lg w-full outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.autocomplete]=\"this.spxAutocomplete()\"\r\n [attr.autofocus]=\"this.spxAutofocus()\"\r\n [attr.inputMode]=\"this.spxInputMode()\"\r\n [attr.pattern]=\"this.spxPattern()\"\r\n [attr.name]=\"this.spxName()\"\r\n [attr.type]=\"this.spxType()\"\r\n [class.bg-white]=\"!this.spxReadonly()\"\r\n [class.bg-gray-300]=\"this.spxReadonly()\"\r\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\r\n [class.uppercase]=\"this.spxCapitalize()\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.value()?.description ? this.value()?.description : this.value()?.value\"\r\n (ngModelChange)=\"this.handleChange($event)\"\r\n />\r\n @if (this.value()?.description && this.value()?.value && this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\r\n <span>{{this.value()?.value}}</span>\r\n }\r\n @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType() === 'overlaynumber')) {\r\n <spx-dropdown\r\n [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\r\n </spx-dropdown>\r\n }\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, ElementRef, OnInit, SimpleChanges, computed, inject, input, model, signal, viewChild } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectedInputService } from '../input.service';\r\n\r\n@Component({\r\n selector: 'spx-input-float',\r\n imports: [\r\n FormsModule,\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input-float.component.html',\r\n styleUrl: './spx-input-float.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n\r\n})\r\nexport class SpxInputFloatComponent implements OnInit {\r\n protected internalValue = signal<{\r\n first: number | null;\r\n second: number | null;\r\n }>({\r\n first: null,\r\n second: null,\r\n });\r\n\r\n mappedReadonly = computed(() => this.spxReadonly() ? true : false);\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxElementId = input<number>();\r\n readonly spxReadonly = input<true | undefined>(undefined);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxStep = input<number>();\r\n readonly value = model.required<SpxValuePair<any>>();\r\n readonly spxWasInternalUpdate = input(false);\r\n readonly selectedInputService = inject(SelectedInputService);\r\n readonly spxIsFocused = signal<boolean>(false);\r\n readonly firstInputRef = viewChild<ElementRef<HTMLInputElement>>('firstInputRef');\r\n readonly secondInputRef = viewChild<ElementRef<HTMLInputElement>>('secondInputRef');\r\n private isInternalUpdate = signal<boolean>(false);\r\n\r\n spxSetFocus() {\r\n this.firstInputRef()?.nativeElement?.focus();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n\r\n this.selectedInputService.focusedElement$\r\n .subscribe((focusedId) => {\r\n if(focusedId === this.spxElementId() && this.spxIsFocused() == false) {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.spxSetFocus();\r\n }\r\n else if(focusedId !== this.spxElementId() && focusedId != null) {\r\n this.spxIsFocused.set(false);\r\n }\r\n });\r\n\r\n this.handleSetValue(this.value());\r\n }\r\n\r\n ngOnChanges() {\r\n if(!this.isInternalUpdate()) {\r\n this.handleSetValue(this.value());\r\n }\r\n }\r\n\r\n handleSetValue(newValue: SpxValuePair<any>) {\r\n if (this.isNumeric(newValue?.value)) {\r\n this.internalValue.set({\r\n first: newValue?.value >= 0 ? Math.floor(parseFloat(newValue?.value)) : Math.ceil(parseFloat(newValue?.value)),\r\n second: newValue?.value?.split ? newValue?.value.split('.')[1] : 0,\r\n });\r\n } else {\r\n this.internalValue.set({\r\n first: null,\r\n second: null,\r\n });\r\n }\r\n }\r\n\r\n handleInput(value: any, position: 1 | 2) {\r\n this.isInternalUpdate.set(true);\r\n this.internalValue.set({\r\n first: position === 1 ? value : this.internalValue().first,\r\n second: position === 2 ? value : this.internalValue().second,\r\n });\r\n let result;\r\n if (this.internalValue().first === null && this.internalValue().second === null) {\r\n result = null;\r\n } else {\r\n result = `${this.internalValue().first ? this.internalValue().first : 0}.${this.internalValue().second ? this.internalValue().second : 0}`;\r\n }\r\n this.value.set({\r\n description: result,\r\n value: result,\r\n });\r\n this.isInternalUpdate.set(false);\r\n }\r\n\r\n handleClear() {\r\n this.internalValue().first = null;\r\n this.internalValue().second = null;\r\n }\r\n\r\n isNumeric(value: string) {\r\n return /^[+-]?\\d+(\\.\\d+)?$/.test(value);\r\n }\r\n}\r\n","<div class=\"flex items-end\">\r\n <input\r\n #firstInputRef\r\n class=\"spx-input-float__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.pattern]=\"'-?[0-9]*'\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 1)\" />\r\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\r\n <input #secondInputRef\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n class=\"spx-input-float__input\"\r\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\r\n (ngModelChange)=\"this.handleInput($event, 2)\"\r\n [attr.step]=\"1\"\r\n [attr.type]=\"'text'\"\r\n [attr.pattern]=\"'[0-9]*'\"\r\n [disabled]=\"this.mappedReadonly()\" />\r\n</div>","import { Component, viewChild, input, ChangeDetectionStrategy, ElementRef, model, inject, computed } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { filter } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spx-input-number',\r\n standalone: true,\r\n templateUrl: './spx-input-number.component.html',\r\n styleUrl: './spx-input-number.component.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FormsModule]\r\n})\r\n\r\nexport class SpxInputNumberComponent {\r\n mappedReadonly = computed(() => this.spxReadonly() ? true : false);\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input<boolean>(false);\r\n readonly spxInputMode = input<string>();\r\n readonly spxReadonly = input<true | undefined>(undefined);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxFocused = input(true);\r\n readonly spxStep = input<number>();\r\n readonly value = model.required<SpxValuePair<any>>();\r\n readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('input');\r\n readonly spxElementId = input<number>();\r\n readonly selectedInputService = inject(SelectedInputService);\r\n \r\n ngOnInit() {\r\n // Filter updates based on focus state\r\n this.selectedInputService.focusedElement$\r\n .pipe(filter((focusedId) => focusedId === this.spxElementId()))\r\n .subscribe(() => {\r\n this.spxSetFocus();\r\n });\r\n }\r\n \r\n spxSetFocus() {\r\n this.inputRef().nativeElement?.focus();\r\n }\r\n\r\n handleChange($event: any) {\r\n this.value.set({...this.value(), value: $event});\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n }\r\n}","<div class=\"spx-input-number__controls\">\r\n <input\r\n #input\r\n class=\"spx-input-number__input\"\r\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\r\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\r\n [attr.disabled]=\"this.spxReadonly()\"\r\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\r\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\r\n [attr.type]=\"'number'\"\r\n [disabled]=\"this.mappedReadonly()\"\r\n [ngModel]=\"this.value() ? this.value().value : undefined\"\r\n (ngModelChange)=\"this.handleChange($event)\" />\r\n</div> ","import { ChangeDetectionStrategy, Component, SimpleChanges, inject, input, model, signal } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\n\r\nimport { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { SelectedInputService } from '../input.service';\r\n\r\n@Component({\r\n selector: 'spx-input-radio',\r\n standalone: true,\r\n imports: [\r\n SpxSuggestionComponent\r\n ],\r\n templateUrl: './spx-input-radio.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputRadioComponent {\r\n readonly cachedSuggestions = signal<SpxValuePair<any>[]>([]);\r\n readonly focusPosition = signal<number>(0);\r\n readonly spxName = input<string>();\r\n readonly spxValidators = input<any[]>();\r\n readonly spxShowLabel = input(true);\r\n readonly spxReadonly = input<true | undefined>(undefined);\r\n readonly spxSuggestions = input<SpxValuePair<any>[]>([]);\r\n readonly value = model<SpxValuePair<any>>();\r\n readonly selectedInputService = inject(SelectedInputService);\r\n readonly spxElementId = input<number>();\r\n readonly spxIsFocused = signal<boolean>(false);\r\n private subscriptionKeyUp?: Subscription;\r\n private subscriptionKeyDown?: Subscription;\r\n\r\n ngOnInit() {\r\n this.selectedInputService.focusedElement$\r\n .subscribe((focusedId) => {\r\n if(focusedId === this.spxElementId() && this.spxIsFocused() == false) {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.listenToKeys();\r\n }\r\n else if(focusedId !== this.spxElementId() && this.spxIsFocused() == true) {\r\n this.spxIsFocused.set(false);\r\n this.subscriptionKeyDown?.unsubscribe();\r\n this.subscriptionKeyUp?.unsubscribe();\r\n }\r\n\r\n this.determineFocusPosition();\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (\r\n (changes['spxSuggestions'] && JSON.stringify(changes['spxSuggestions']?.previousValue) !== JSON.stringify(changes['spxSuggestions']?.currentValue))\r\n ) {\r\n this.cachedSuggestions.set(changes['spxSuggestions']?.currentValue ?? []);\r\n }\r\n }\r\n\r\n handleSuggestionClick(valuePair: SpxValuePair<any>) {\r\n\r\n if (this.spxReadonly()) {\r\n } else {\r\n this.select(valuePair);\r\n }\r\n\r\n this.determineFocusPosition();\r\n }\r\n\r\n private determineFocusPosition() {\r\n const spxSuggestions = this.spxSuggestions();\r\n if (this.value() && spxSuggestions?.length) {\r\n const index = spxSuggestions.findIndex(valuePair => valuePairToValue(valuePair) === valuePairToValue(this.value()));\r\n this.focusPosition.set(index >= 0 ? index : 0);\r\n } else {\r\n this.focusPosition.set(0);\r\n }\r\n }\r\n\r\n private select(valuePair: SpxValuePair<string | number | boolean>): void {\r\n this.value.set(valuePair);\r\n }\r\n\r\n private listenToKeys(): void {\r\n this.subscriptionKeyUp = fromEvent(window, 'keyup').subscribe((event) => {\r\n if (((event as KeyboardEvent).key === 'ArrowUp' || (event as KeyboardEvent).key === 'ArrowLeft') && this.focusPosition() > 0) {\r\n this.focusPosition.update((position) => position - 1);\r\n this.select(this.spxSuggestions().at(this.focusPosition())!);\r\n event.preventDefault();\r\n }\r\n if (((event as KeyboardEvent).key === 'ArrowDown' || (event as KeyboardEvent).key === 'ArrowRight') && this.focusPosition() < this.spxSuggestions().length - 1) {\r\n this.focusPosition.update((position) => position + 1);\r\n this.select(this.spxSuggestions().at(this.focusPosition())!);\r\n event.preventDefault();\r\n }\r\n });\r\n this.subscriptionKeyDown = fromEvent(window, 'keydown').subscribe((event) => {\r\n if ((event as KeyboardEvent).key === 'ArrowDown' ||\r\n (event as KeyboardEvent).key === 'ArrowLeft' ||\r\n (event as KeyboardEvent).key === 'ArrowRight' ||\r\n (event as KeyboardEvent).key === 'ArrowUp') {\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n}","<div class=\"grid grid-cols-2 gap-2\" [class.mt-3]=\"this.spxShowLabel()\">\r\n @for (valuePair of this.cachedSuggestions(); track valuePair; let i = $index) {\r\n <spx-suggestion\r\n [spxDisabled]=\"this.spxReadonly()\"\r\n [spxSelected]=\"this.value()?.value === valuePair?.value\"\r\n [spxTabbable]=\"this.focusPosition() === i\"\r\n [spxFocused]=\"(this.focusPosition() === i && this.spxIsFocused())\"\r\n (click)=\"this.handleSuggestionClick(valuePair)\">\r\n {{valuePair?.description}}\r\n </spx-suggestion>\r\n }\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, input, output, signal } from '@angular/core';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\r\nimport { faXmark } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, ModalController } from '@ionic/angular/standalone';\r\n\r\n@Component({\r\n selector: 'spx-input-time-modal',\r\n imports: [\r\n FontAwesomeModule,\r\n IonButtons,\r\n IonContent,\r\n IonHeader,\r\n IonTitle,\r\n IonToolbar,\r\n SpxButtonComponent,\r\n ],\r\n templateUrl: './spx-input-time-modal.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpxInputTimeModalComponent {\r\n readonly view = input.required<'hours' | 'minutes'>();\r\n readonly value = input.required<number>();\r\n change = output<number>();\r\n faXmark = faXmark;\r\n hourOptions = signal<number[]>(Array.from({ length: 24 }, (_, i) => i)); // 0 to 23\r\n minuteOptions = signal<number[]>(Array.from({ length: 12 }, (_, i) => i * 5)); // Minutes in incrementen van 5\r\n typeError = SpxSeverityEnum.error;\r\n\r\n constructor(private modalController: ModalController){\r\n this.hourOptions().push(this.hourOptions().shift()!);\r\n this.minuteOptions().push(this.minuteOptions().shift()!);\r\n }\r\n\r\n closeDialog() {\r\n this.modalController.dismiss();\r\n }\r\n\r\n onChange(value: number) {\r\n this.change.emit(value);\r\n this.modalController.dismiss(value);\r\n }\r\n}\r\n","<ion-header>\r\n <ion-toolbar>\r\n <ion-title>Select {{view()}}</ion-title>\r\n <ion-buttons slot=\"end\">\r\n <spx-button [spxSeverity]=\"typeError\" (spxClick)=\"closeDialog()\">\r\n <fa-icon [icon]=\"faXmark\"></fa-icon>\r\n </spx-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n<ion-content class=\"ion-padding bg-white\">\r\n <!-- Uren -->\r\n <div class=\"custom-bg grid grid-cols-1 gap-3\">\r\n @if (view() === 'hours') {\r\n <div class=\"flex-wrap gap-2\">\r\n <div class=\"grid grid-cols-3 md:grid-cols-4 gap-3\">\r\n @for (hour of hourOptions(); track hour) {\r\n <div class=\"text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-full truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300\" [class.selected]=\"value() === hour\" (click)=\"onChange(hour)\">\r\n {{ hour }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <!-- Minuten -->\r\n @if (view() === 'minutes') {\r\n <div class=\"grid grid-cols-1 gap-3\">\r\n <div class=\"grid grid-cols-4 md:grid-cols-5 gap-3\">\r\n @for (minute of minuteOptions(); track minute) {\r\n <div class=\"text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-ful truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300\" [class.selected]=\"value() === minute\" (click)=\"onChange(minute)\">\r\n {{ minute }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</ion-content>","\r\nimport { ChangeDetectionStrategy, Component, ElementRef, computed, input, model, signal, viewChild } from '@angular/core';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { DateTime } from 'luxon';\r\nimport { SpxSeverityEnum } from '@softpak/components/spx-helpers';\r\nimport { SpxInputTimeModalComponent } from '../spx-input-time-modal/spx-input-time-modal.component';\r\nimport { ModalController } from '@ionic/angular/standalone';\r\n\r\n@Component({\r\n selector: 'spx-input-time',\r\n standalone: true,\r\n styleUrl: './spx-input-time.component.css',\r\n templateUrl: './spx-input-time.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputTimeComponent {\r\n readonly spxName = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxInputMode = input<string>();\r\n readonly spxPattern = input<string>();\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n readonly spxReadonly = input<true | undefined>(undefined);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxCapitalize = input(false);\r\n readonly value = model.required<SpxValuePair<any>>();\r\n readonly inputRef = viewChild.required<ElementRef<HTMLInputElement>>('input');\r\n readonly severitySuccess = SpxSeverityEnum.success;\r\n selectedHour = signal<number | null>(null);\r\n selectedMinute = signal<number | null>(null);\r\n readonly formattedHour = computed(() => this.selectedHour() !== null && this.selectedHour()! < 10 ? `0${this.selectedHour()}` : this.selectedHour());\r\n readonly formattedMinute = computed(() => this.selectedMinute() !== null && this.selectedMinute()! < 10 ? `0${this.selectedMinute()}` : this.selectedMinute());\r\n readonly hour = computed(() => this.value()?.value ? DateTime.fromISO(this.value()!.value).hour : null);\r\n readonly minute = computed(() => this.value()?.value ? DateTime.fromISO(this.value()!.value).minute : null);\r\n\r\n constructor(private modalController: ModalController) {}\r\n\r\n ngOnInit() {\r\n this.componentDidLoad();\r\n }\r\n\r\n spxSetFocus() {\r\n this.inputRef().nativeElement?.focus();\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.spxAutofocus()) {\r\n this.spxSetFocus();\r\n }\r\n }\r\n\r\n handleDescriptionInput(event: any) {\r\n this.value.set({\r\n description: event.target ? event.target.value : null,\r\n value: event.target ? event.target.value : null,\r\n });\r\n }\r\n\r\n handleSuggestionClick(value: any) {\r\n if (!this.spxReadonly()) {\r\n this.value.set(value);\r\n }\r\n }\r\n\r\n async openDialog(view: 'hours' | 'minutes') {\r\n const value = this.value();\r\n const modal = await this.modalController.create({\r\n component: SpxInputTimeModalComponent,\r\n componentProps: {\r\n value: value?.value ?\r\n (view === 'hours' ? DateTime.fromISO(value.value).hour : DateTime.fromISO(value.value).minute) : undefined,\r\n view,\r\n },\r\n });\r\n\r\n modal.onDidDismiss().then((data) => {\r\n\r\n if (view === 'hours') {\r\n this.selectedHour.set(data.data);\r\n this.openDialog('minutes');\r\n this.updateValue();\r\n\r\n } else if (view === 'minutes') {\r\n this.selectedMinute.set(data.data);\r\n this.updateValue();\r\n }\r\n });\r\n\r\n await modal.present();\r\n }\r\n\r\n updateValue() {\r\n if (this.selectedHour() !== null && this.selectedMinute() !== null) {\r\n const formattedHour = this.selectedHour()! < 10 ? `0${this.selectedHour()}` : this.selectedHour();\r\n const formattedMinute = this.selectedMinute()! < 10 ? `0${this.selectedMinute()}` : this.selectedMinute();\r\n const newValue = `${formattedHour}:${formattedMinute}`;\r\n\r\n this.value.set({\r\n description: newValue,\r\n value: newValue,\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"relative text-black\">\r\n <div class=\"flex items-center justify-around gap-3\">\r\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('hours')\">{{ formattedHour() ?? '--' }}</div>\r\n <div class=\"text-gray text-xl\">:</div>\r\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('minutes')\">{{ formattedMinute() ?? '--' }}</div>\r\n </div>\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, HostListener, inject, input, model, OnInit, signal, viewChild } from '@angular/core';\r\nimport { DateTime } from 'luxon';\r\nimport { SpxValuePair } from '../spx-value-interface';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';\r\nimport { SelectedInputService } from '../input.service';\r\nimport { filter } from 'rxjs';\r\n\r\nenum stepType {\r\n years = \"years\",\r\n months = \"months\",\r\n days = \"days\"\r\n}\r\n\r\n@Component({\r\n selector: 'spx-input-date',\r\n standalone: true,\r\n imports: [\r\n SpxSuggestionComponent,\r\n FormsModule\r\n ],\r\n templateUrl: \"./spx-input-date.component.html\",\r\n styleUrl: \"./spx-input-date.component.css\",\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputDateComponent implements OnInit {\r\n spxMax = input.required<string>();\r\n spxMin = input.required<string>();\r\n spxReadonly = input<boolean>();\r\n spxValidators = input<any[]>();\r\n spxAutoFocus = input(false);\r\n value = model<SpxValuePair<string>>({\r\n description: \"\",\r\n value: \"\",\r\n });\r\n\r\n spxSelectedStep = signal<stepType>(stepType.years);\r\n spxSelectDay = input<boolean>(false);\r\n spxSelectMonth = input<boolean>(true);\r\n selectedYear = signal<number | null>(null);\r\n selectedMonth = signal<number | null>(null);\r\n selectedDay = signal<number | null>(null);\r\n\r\n yearInputComponent = viewChild.required<ElementRef>(stepType.years);\r\n monthInputComponent = viewChild.required<ElementRef>(stepType.months);\r\n dayInputComponent = viewChild.required<ElementRef>(stepType.days);\r\n spxElementId = input<number>();\r\n selectedInputService = inject(SelectedInputService);\r\n spxIsFocused = signal<boolean>(false);\r\n private isInternalUpdate = signal<boolean>(false);\r\n\r\n spxSuggestionC = computed<SpxValuePair<number>[]>(() => {\r\n switch (this.spxSelectedStep()) {\r\n case stepType.years:\r\n return this.spxSuggestions().years;\r\n case stepType.months:\r\n return [...this.spxSuggestions().months]\r\n case stepType.days:\r\n return [...this.spxSuggestions().days]\r\n }\r\n });\r\n\r\n\r\n handleFocus(selectedStep: string) {\r\n switch (selectedStep) {\r\n case stepType.years:\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n break;\r\n case stepType.months:\r\n this.spxSelectedStep.set(stepType.months);\r\n this.monthInputComponent().nativeElement.focus();\r\n break;\r\n case stepType.days:\r\n this.spxSelectedStep.set(stepType.days);\r\n this.dayInputComponent().nativeElement.focus();\r\n break;\r\n }\r\n }\r\n\r\n onModelChange(newValue: string, selectedStep: string) {\r\n this.isInternalUpdate.set(true);\r\n\r\n const parsedValue = +newValue; // Convert to number\r\n if (parsedValue == 0) return;\r\n switch (selectedStep) {\r\n case stepType.years:\r\n this.selectedYear.set(parsedValue);\r\n if (parsedValue > 999) {\r\n this.spxSelectedStep.set(stepType.months);\r\n this.monthInputComponent().nativeElement.focus();\r\n }\r\n break;\r\n case stepType.months:\r\n this.selectedMonth.set(parsedValue);\r\n break;\r\n case stepType.days:\r\n this.selectedDay.set(parsedValue);\r\n break;\r\n }\r\n\r\n this.updateValueAndEmit();\r\n this.isInternalUpdate.set(false);\r\n }\r\n\r\n spxSuggestions = input<{\r\n years: SpxValuePair<number>[];\r\n months: SpxValuePair<number>[];\r\n days: SpxValuePair<number>[];\r\n }>({\r\n years: [],\r\n months: [{\r\n description: 'Jan',\r\n value: 1,\r\n }, {\r\n description: 'Feb',\r\n value: 2,\r\n }, {\r\n description: 'Mar',\r\n value: 3,\r\n }, {\r\n description: 'Apr',\r\n value: 4,\r\n }, {\r\n description: 'May',\r\n value: 5,\r\n }, {\r\n description: 'Jun',\r\n value: 6,\r\n }, {\r\n description: 'Jul',\r\n value: 7,\r\n }, {\r\n description: 'Aug',\r\n value: 8,\r\n }, {\r\n description: 'Sep',\r\n value: 9,\r\n }, {\r\n description: 'Oct',\r\n value: 10,\r\n }, {\r\n description: 'Nov',\r\n value: 11,\r\n }, {\r\n description: 'Dec',\r\n value: 12,\r\n }],\r\n days: [],\r\n });\r\n\r\n ngOnInit() {\r\n this.suggestYears();\r\n this.setValue();\r\n\r\n if (this.spxAutoFocus()) {\r\n this.handleFocus(\"years\");\r\n }\r\n\r\n // Filter updates based on focus state\r\n this.selectedInputService.focusedElement$\r\n .pipe(filter((focusedId) => focusedId === this.spxElementId()))\r\n .subscribe(() => {\r\n this.spxIsFocused.set(true); // Update only if focused\r\n this.handleFocus(this.spxSelectedStep());\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.isInternalUpdate()) {\r\n this.setValue();\r\n }\r\n }\r\n\r\n private setValue() {\r\n if (valuePairToValue(this.value())) {\r\n const parsedValue = DateTime.fromISO(valuePairToValue(this.value()));\r\n if (this.selectedYear() && this.selectedYear()! < 999) {\r\n return;\r\n }\r\n this.selectedYear.set(parsedValue.year);\r\n this.selectedMonth.set(parsedValue.month);\r\n this.selectedDay.set(parsedValue.day);\r\n }\r\n }\r\n\r\n handleSuggestionClick(value: number) {\r\n\r\n switch (this.spxSelectedStep()) {\r\n case stepType.years:\r\n this.selectedYear.set(value);\r\n break;\r\n case stepType.months:\r\n this.selectedMonth.set(value);\r\n break;\r\n case stepType.days:\r\n this.selectedDay.set(value);\r\n break;\r\n }\r\n\r\n this.updateValueAndEmit();\r\n this.changeSelectedStep();\r\n }\r\n\r\n // Handle keyboard navigation (Tab and Shift + Tab)\r\n @HostListener('keydown', ['$event'])\r\n handleTabKey(event: KeyboardEvent): void {\r\n if (event.key === 'Tab') {\r\n\r\n this.changeSelectedStep();\r\n\r\n event.preventDefault(); // Prevent default tab behavior\r\n }\r\n }\r\n\r\n updateValueAndEmit() {\r\n if (this.selectedYear() && this.selectedMonth()) {\r\n const concatenatedValue = `${this.selectedYear() ? this.selectedYear() : ``}${this.selectedMonth() ? `${this.selectedMonth()! < 10 ? `0${this.selectedMonth()}` : this.selectedMonth()}` : ``}${this.selectedDay() ? `-${this.selectedDay()! < 10 ? `0${this.selectedDay()}` : this.selectedDay()}` : ``}`\r\n const parsedValue = DateTime.fromISO(concatenatedValue);\r\n this.value.set({ value: parsedValue.toISO()!, description: parsedValue.toISO() });\r\n }\r\n }\r\n\r\n changeSelectedStep() {\r\n switch (this.spxSelectedStep()) {\r\n case stepType.years:\r\n if (this.spxSelectMonth()) {\r\n this.spxSelectedStep.set(stepType.months);\r\n this.monthInputComponent().nativeElement.focus();\r\n }\r\n else {\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n }\r\n break;\r\n case stepType.months:\r\n if (this.spxSelectDay()) {\r\n this.spxSelectedStep.set(stepType.days);\r\n this.dayInputComponent().nativeElement.focus();\r\n }\r\n else {\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n }\r\n break;\r\n case stepType.days:\r\n this.spxSelectedStep.set(stepType.years);\r\n this.yearInputComponent().nativeElement.focus();\r\n break;\r\n }\r\n }\r\n\r\n private suggestYears(): void {\r\n this.spxSuggestions().years = [];\r\n for (let year = DateTime.fromISO(this.spxMin()).year; year <= DateTime.fromISO(this.spxMax()).year; year++) {\r\n this.spxSuggestions().years.push({\r\n description: `'${year.toString().substring(2, 4)}`,\r\n value: year,\r\n });\r\n }\r\n }\r\n\r\n handleClear() {\r\n this.spxSelectedStep.set(stepType.years);\r\n this.selectedYear.set(null);\r\n this.selectedMonth.set(null);\r\n this.selectedDay.set(null);\r\n }\r\n}\r\n","<div class='spx-input-date__controls'>\r\n <input #years\r\n class='spx-input-date__input'\r\n [ngModel]=\"selectedYear()\"\r\n (ngModelChange)=\"onModelChange($event, 'years')\"\r\n [attr.type]=\"'number'\"\r\n (click)=\"this.handleFocus('years')\"\r\n [attr.min]=\"1900\"\r\n [attr.max]=\"2100\"\r\n [attr.step]=\"1\"\r\n />\r\n <div class='spx-input-date__control-label'>Year</div>\r\n @if (this.spxSelectMonth()) {\r\n <input #months\r\n class='spx-input-date__input'\r\n [ngModel]=\"selectedMonth()\"\r\n (ngModelChange)=\"onModelChange($event, 'months')\"\r\n (click)=\"this.handleFocus('months')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"12\"\r\n [attr.step]=\"1\" />\r\n }\r\n <div class='spx-input-date__control-label'>Month</div>\r\n @if (this.spxSelectDay()) {\r\n <input #days\r\n class='spx-input-date__input'\r\n [ngModel]=\"selectedDay()\"\r\n (ngModelChange)=\"onModelChange($event, 'days')\"\r\n (click)=\"this.handleFocus('days')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"31\"\r\n [attr.step]=\"1\" />\r\n <div class='spx-input-date__control-label'>Days</div>\r\n }\r\n</div>\r\n<div class='spx-input-date__suggestions'>\r\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\r\n <spx-suggestion [spxSelected]=\"\r\n (selectedYear() === valuePair.value && this.spxSelectedStep() === 'years') ||\r\n (selectedMonth() === valuePair.value && this.spxSelectedStep() === 'months') || \r\n (selectedDay() === valuePair.value && this.spxSelectedStep() === 'days')\"\r\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\r\n }\r\n</div>","\r\nimport { ChangeDetectionStrategy, Component, computed, HostListener, inject, input, output, signal, viewChild } from '@angular/core';\r\nimport { SpxInputBoxComponent } from './spx-input-box/spx-input-box.component';\r\nimport { SpxInputTextComponent } from './spx-input-text/spx-input-text.component';\r\nimport { SpxValuePair } from './spx-value-interface';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { SpxInputFloatComponent } from './spx-input-float/spx-input-float.component';\r\nimport { SpxInputNumberComponent } from './spx-input-number/spx-input-number.component';\r\nimport { SpxInputRadioComponent } from './spx-input-radio/spx-input-radio.component';\r\nimport { SpxInputTypeEnum } from './spx-input-type.enum';\r\nimport { SpxInputTimeComponent } from './spx-input-time/spx-input-time.component';\r\nimport { SpxInputDateComponent } from './spx-input-date/spx-input-date.component';\r\nimport { SelectedInputService } from './input.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpxInputAlertI } from '@softpak/components/spx-helpers';\r\n\r\n@Component({\r\n selector: 'spx-input',\r\n host: {\r\n '(spxChange)': 'handleChangeEvent($event)'\r\n },\r\n imports: [\r\n SpxInputBoxComponent,\r\n SpxInputDateComponent,\r\n SpxInputFloatComponent,\r\n SpxInputNumberComponent,\r\n SpxInputRadioComponent,\r\n SpxInputTextComponent,\r\n SpxInputTimeComponent\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: SpxInputComponent,\r\n multi: true\r\n }\r\n ],\r\n standalone: true,\r\n templateUrl: './spx-input.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxInputComponent {\r\n protected mappedReadonly = computed(() => this.spxReadonly() === true ? true : undefined);\r\n readonly spxLabel = input<string>('label');\r\n readonly spxMax = input<string>();\r\n readonly spxMin = input<string>();\r\n readonly spxName = input<string>();\r\n readonly spxReadonly = input(false);\r\n readonly spxAutocomplete = input<string>();\r\n readonly spxAutofocus = input(false);\r\n readonly spxInputMode = input<string>();\r\n readonly spxPattern = input<string>();\r\n readonly spxRequired = input(false);\r\n readonly spxSelectMonth = input(true);\r\n readonly spxSelectDay = input(true);\r\n readonly spxShowEdit = input(false);\r\n readonly spxShowHelp = input(false);\r\n readonly spxShowLabel = input(true);\r\n readonly spxCompact = input(false);\r\n readonly spxShowClear = input(true);\r\n readonly spxShowSearch = input(false);\r\n readonly spxAlert = input<SpxInputAlertI>();\r\n readonly spxShowValidationMessages = input<boolean | null | undefined>(false);\r\n readonly spxStep = input<number>();\r\n readonly spxSuggestions = input<SpxValuePair<boolean | number | string>[]>([]);\r\n readonly spxType = input<SpxInputTypeEnum>(SpxInputTypeEnum.text);\r\n readonly spxValidators = input<any[]>();\r\n readonly spxCapitalize = input(false);\r\n value = signal<SpxValuePair<any>>({ value: null, description: null });\r\n spxClear = output();\r\n spxEdit = output();\r\n spxHelp = output();\r\n spxSearch = output();\r\n spxBlur = output();\r\n floatInput = viewChild<SpxInputFloatComponent>(\"spxInputFloat\");\r\n numberInput = viewChild<SpxInputNumberComponent>(\"spxInputNumber\");\r\n textInput = viewChild<SpxInputTextComponent>(\"spxInputText\");\r\n timeInput = viewChild<SpxInputTimeComponent>(\"spxInputTime\");\r\n radioInput = viewChild<SpxInputRadioComponent>(\"spxInputRadio\");\r\n dateInput = viewChild<SpxInputDateComponent>(\"spxInputDate\");\r\n spxElementId = signal<number>(0);\r\n selectedInputService = inject(SelectedInputService);\r\n private selectedInputServiceSubscription: Subscription | undefined;\r\n\r\n handleSpxElementIdSet(id: number) {\r\n this.spxElementId.set(id);\r\n\r\n this.selectedInputServiceSubscription = this.selectedInputService.isBlurred$(id).subscribe((isBlurred) => {\r\n if (isBlurred) {\r\n this.spxBlur.emit();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.selectedInputServiceSubscription) {\r\n this.selectedInputServiceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n handleChange(event: any) {\r\n this.value.set(event);\r\n }\r\n\r\n triggerChangeDetection(): void {\r\n this.textInput()?.triggerChangeDetection();\r\n }\r\n\r\n handleClear() {\r\n this.spxClear.emit();\r\n this.passFocusToControl();\r\n this.handleChangeEvent({\r\n value: null,\r\n });\r\n\r\n this.dateInput()?.handleClear();\r\n this.floatInput()?.handleClear();\r\n }\r\n\r\n handleSearch() {\r\n this.spxSearch.emit();\r\n }\r\n\r\n handleEdit() {\r\n this.spxEdit.emit();\r\n }\r\n\r\n handleHelp() {\r\n this.spxHelp.emit();\r\n }\r\n\r\n setFocusIn() {\r\n setTimeout(() => {\r\n this.passFocusToControl();\r\n }, 0);\r\n }\r\n\r\n private passFocusToControl() {\r\n switch (this.spxType()) {\r\n case SpxInputTypeEnum.autocomplete:\r\n case SpxInputTypeEnum.text:\r\n case SpxInputTypeEnum.overlayNumber:\r\n this.textInput()?.spxSetFocus();\r\n break;\r\n case SpxInputTypeEnum.number:\r\n this.numberInput()?.spxSetFocus();\r\n break;\r\n case SpxInputTypeEnum.radio:\r\n break;\r\n case SpxInputTypeEnum.time:\r\n this.timeInput()?.spxSetFocus();\r\n break;\r\n }\r\n }\r\n\r\n private onChange: (value: any) => void = () => {/**/ };\r\n private onTouched: () => void = () => {/**/ };\r\n protected lastValue = null;\r\n\r\n writeValue(value: any) {\r\n if (value === null && this.lastValue === null) { return; }\r\n this.value.set(value); // hier komt initiele waarde van formcontrol binnen\r\n this.lastValue = value;\r\n }\r\n\r\n handleChangeEvent(value: any) {\r\n if (value !== this.lastValue) {\r\n this.lastValue = value;\r\n this.onChange(value);\r\n }\r\n this.writeValue(value);\r\n }\r\n\r\n @HostListener('focusout')\r\n _handleBlurEvent() {\r\n this.onTouched();\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.onChange = fn; // emit verandering aan formcontrol\r\n }\r\n registerOnTouched(fn: () => void) {\r\n this.onTouched = fn;\r\n }\r\n}\r\n","<spx-input-box\r\n (spxClear)=\"this.handleClear()\"\r\n (spxEdit)=\"this.handleEdit()\"\r\n (spxHelp)=\"this.handleHelp()\"\r\n (spxSearch)=\"this.handleSearch()\"\r\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\r\n [spxAlert]=\"this.spxAlert()\"\r\n [spxCompact]=\"this.spxCompact()\"\r\n [spxLabel]=\"this.spxLabel()\"\r\n [spxReadonly]=\"this.spxReadonly()\"\r\n [spxRequired]=\"this.spxRequired()\"\r\n [spxShowClear]=\"this.spxShowClear()\"\r\n [spxShowEdit]=\"this.spxShowEdit()\"\r\n [spxShowHelp]=\"this.spxShowHelp()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\r\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\r\n [spxValue]=\"this.value()\"\r\n>\r\n <div controls>\r\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\r\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\r\n this.spxType() === 'password') {\r\n <spx-input-text\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxCapitalize]=\"this.spxCapitalize()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxType]=\"this.spxType()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputText\r\n ></spx-input-text>\r\n } @if (this.spxType() === 'date') {\r\n <spx-input-date\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutoFocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxMax]=\"this.spxMax()!\"\r\n [spxMin]=\"this.spxMin()!\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxSelectDay]=\"this.spxSelectDay()\"\r\n [spxSelectMonth]=\"this.spxSelectMonth()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputDate\r\n ></spx-input-date>\r\n } @if (this.spxType() === 'float') {\r\n <spx-input-float\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputFloat\r\n ></spx-input-float>\r\n } @if (this.spxType() === 'number') {\r\n <spx-input-number\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxAutofocus]=\"this.spxAutofocus()\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxInputMode]=\"this.spxInputMode()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxStep]=\"this.spxStep()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputNumber\r\n ></spx-input-number>\r\n } @if (this.spxType() === 'radio') {\r\n <spx-input-radio\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxElementId]=\"this.spxElementId()\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxShowLabel]=\"this.spxShowLabel()\"\r\n [spxSuggestions]=\"this.spxSuggestions()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputRadio\r\n ></spx-input-radio>\r\n } @if (this.spxType() === 'time') {\r\n <spx-input-time\r\n (valueChange)=\"handleChangeEvent($event)\"\r\n [spxName]=\"this.spxName()\"\r\n [spxReadonly]=\"this.mappedReadonly()\"\r\n [spxValidators]=\"this.spxValidators()\"\r\n [value]=\"value()\"\r\n #spxInputTime\r\n ></spx-input-time>\r\n }\r\n </div>\r\n <div validation-messages>\r\n <ng-content></ng-content>\r\n </div>\r\n</spx-input-box>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, output, Component } from '@angular/core';
2
+ import { input, output, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { SpxButtonComponent } from '@softpak/components/spx-button';
4
4
  import * as i1 from '@fortawesome/angular-fontawesome';
5
5
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
@@ -22,7 +22,7 @@ class SpxPaginationComponent {
22
22
  this.spxPageChange.emit(page);
23
23
  }
24
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.0", type: SpxPaginationComponent, isStandalone: true, selector: "spx-pagination", inputs: { faArrowLeft: { classPropertyName: "faArrowLeft", publicName: "faArrowLeft", isSignal: true, isRequired: true, transformFunction: null }, faArrowRight: { classPropertyName: "faArrowRight", publicName: "faArrowRight", isSignal: true, isRequired: true, transformFunction: null }, spxPage: { classPropertyName: "spxPage", publicName: "spxPage", isSignal: true, isRequired: true, transformFunction: null }, spxMaxPages: { classPropertyName: "spxMaxPages", publicName: "spxMaxPages", isSignal: true, isRequired: true, transformFunction: null }, textNext: { classPropertyName: "textNext", publicName: "textNext", isSignal: true, isRequired: true, transformFunction: null }, textPage: { classPropertyName: "textPage", publicName: "textPage", isSignal: true, isRequired: true, transformFunction: null }, textPrevious: { classPropertyName: "textPrevious", publicName: "textPrevious", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { spxPageChange: "spxPageChange" }, ngImport: i0, template: "<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\r\n <spx-button (click)=\"onPageChange(spxPage() - 1)\" [spxDisabled]=\"spxPage() === 1\">\r\n <fa-icon [icon]=\"faArrowLeft()\"></fa-icon> {{ textPrevious() | translate | capitalize }}\r\n </spx-button>\r\n {{ textPage() | translate | capitalize }} {{ spxPage() }}\r\n <spx-button [spxDisabled]=\"spxMaxPages() > spxPage()\" (click)=\"onPageChange(spxPage() + 1)\">\r\n {{ textNext() | translate | capitalize }} <fa-icon [icon]=\"faArrowRight()\"></fa-icon>\r\n </spx-button>\r\n</div>", dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.0", type: SpxPaginationComponent, isStandalone: true, selector: "spx-pagination", inputs: { faArrowLeft: { classPropertyName: "faArrowLeft", publicName: "faArrowLeft", isSignal: true, isRequired: true, transformFunction: null }, faArrowRight: { classPropertyName: "faArrowRight", publicName: "faArrowRight", isSignal: true, isRequired: true, transformFunction: null }, spxPage: { classPropertyName: "spxPage", publicName: "spxPage", isSignal: true, isRequired: true, transformFunction: null }, spxMaxPages: { classPropertyName: "spxMaxPages", publicName: "spxMaxPages", isSignal: true, isRequired: true, transformFunction: null }, textNext: { classPropertyName: "textNext", publicName: "textNext", isSignal: true, isRequired: true, transformFunction: null }, textPage: { classPropertyName: "textPage", publicName: "textPage", isSignal: true, isRequired: true, transformFunction: null }, textPrevious: { classPropertyName: "textPrevious", publicName: "textPrevious", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { spxPageChange: "spxPageChange" }, ngImport: i0, template: "<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\r\n <spx-button (click)=\"onPageChange(spxPage() - 1)\" [spxDisabled]=\"spxPage() === 1\">\r\n <fa-icon [icon]=\"faArrowLeft()\"></fa-icon> {{ textPrevious() | translate | capitalize }}\r\n </spx-button>\r\n {{ textPage() | translate | capitalize }} {{ spxPage() }}\r\n <spx-button [spxDisabled]=\"spxMaxPages() > spxPage()\" (click)=\"onPageChange(spxPage() + 1)\">\r\n {{ textNext() | translate | capitalize }} <fa-icon [icon]=\"faArrowRight()\"></fa-icon>\r\n </spx-button>\r\n</div>", dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImport: i0, type: SpxPaginationComponent, decorators: [{
28
28
  type: Component,
@@ -31,7 +31,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
31
31
  SpxButtonComponent,
32
32
  SpxCapitalizePipe,
33
33
  TranslateModule,
34
- ], template: "<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\r\n <spx-button (click)=\"onPageChange(spxPage() - 1)\" [spxDisabled]=\"spxPage() === 1\">\r\n <fa-icon [icon]=\"faArrowLeft()\"></fa-icon> {{ textPrevious() | translate | capitalize }}\r\n </spx-button>\r\n {{ textPage() | translate | capitalize }} {{ spxPage() }}\r\n <spx-button [spxDisabled]=\"spxMaxPages() > spxPage()\" (click)=\"onPageChange(spxPage() + 1)\">\r\n {{ textNext() | translate | capitalize }} <fa-icon [icon]=\"faArrowRight()\"></fa-icon>\r\n </spx-button>\r\n</div>" }]
34
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\r\n <spx-button (click)=\"onPageChange(spxPage() - 1)\" [spxDisabled]=\"spxPage() === 1\">\r\n <fa-icon [icon]=\"faArrowLeft()\"></fa-icon> {{ textPrevious() | translate | capitalize }}\r\n </spx-button>\r\n {{ textPage() | translate | capitalize }} {{ spxPage() }}\r\n <spx-button [spxDisabled]=\"spxMaxPages() > spxPage()\" (click)=\"onPageChange(spxPage() + 1)\">\r\n {{ textNext() | translate | capitalize }} <fa-icon [icon]=\"faArrowRight()\"></fa-icon>\r\n </spx-button>\r\n</div>" }]
35
35
  }] });
36
36
 
37
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-pagination.mjs","sources":["../../../../projects/softpak/components/spx-pagination/spx-pagination.component.ts","../../../../projects/softpak/components/spx-pagination/spx-pagination.component.html","../../../../projects/softpak/components/spx-pagination/softpak-components-spx-pagination.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\n@Component({\r\n selector: 'spx-pagination',\r\n templateUrl: './spx-pagination.component.html',\r\n imports: [\r\n FontAwesomeModule,\r\n SpxButtonComponent,\r\n SpxCapitalizePipe,\r\n TranslateModule,\r\n ]\r\n})\r\nexport class SpxPaginationComponent {\r\n readonly faArrowLeft = input.required<IconProp>();\r\n readonly faArrowRight = input.required<IconProp>();\r\n readonly spxPage = input.required<number>();\r\n readonly spxMaxPages = input.required<number>();\r\n readonly textNext = input.required<string>();\r\n readonly textPage = input.required<string>();\r\n readonly textPrevious = input.required<string>();\r\n spxPageChange = output<number>();\r\n\r\n onPageChange(page: number) {\r\n this.spxPageChange.emit(page);\r\n }\r\n}","<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\r\n <spx-button (click)=\"onPageChange(spxPage() - 1)\" [spxDisabled]=\"spxPage() === 1\">\r\n <fa-icon [icon]=\"faArrowLeft()\"></fa-icon> {{ textPrevious() | translate | capitalize }}\r\n </spx-button>\r\n {{ textPage() | translate | capitalize }} {{ spxPage() }}\r\n <spx-button [spxDisabled]=\"spxMaxPages() > spxPage()\" (click)=\"onPageChange(spxPage() + 1)\">\r\n {{ textNext() | translate | capitalize }} <fa-icon [icon]=\"faArrowRight()\"></fa-icon>\r\n </spx-button>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"softpak-components-spx-pagination.mjs","sources":["../../../../projects/softpak/components/spx-pagination/spx-pagination.component.ts","../../../../projects/softpak/components/spx-pagination/spx-pagination.component.html","../../../../projects/softpak/components/spx-pagination/softpak-components-spx-pagination.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\n@Component({\r\n selector: 'spx-pagination',\r\n templateUrl: './spx-pagination.component.html',\r\n imports: [\r\n FontAwesomeModule,\r\n SpxButtonComponent,\r\n SpxCapitalizePipe,\r\n TranslateModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpxPaginationComponent {\r\n readonly faArrowLeft = input.required<IconProp>();\r\n readonly faArrowRight = input.required<IconProp>();\r\n readonly spxPage = input.required<number>();\r\n readonly spxMaxPages = input.required<number>();\r\n readonly textNext = input.required<string>();\r\n readonly textPage = input.required<string>();\r\n readonly textPrevious = input.required<string>();\r\n spxPageChange = output<number>();\r\n\r\n onPageChange(page: number) {\r\n this.spxPageChange.emit(page);\r\n }\r\n}","<div class=\"inline mx-auto flex gap-3 items-center font-bold\">\r\n <spx-button (click)=\"onPageChange(spxPage() - 1)\" [spxDisabled]=\"spxPage() === 1\">\r\n <fa-icon [icon]=\"faArrowLeft()\"></fa-icon> {{ textPrevious() | translate | capitalize }}\r\n </spx-button>\r\n {{ textPage() | translate | capitalize }} {{ spxPage() }}\r\n <spx-button [spxDisabled]=\"spxMaxPages() > spxPage()\" (click)=\"onPageChange(spxPage() + 1)\">\r\n {{ textNext() | translate | capitalize }} <fa-icon [icon]=\"faArrowRight()\"></fa-icon>\r\n </spx-button>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAkBa,sBAAsB,CAAA;AAXnC,IAAA,WAAA,GAAA;AAYW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAY;AACxC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAY;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAU;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAU;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAU;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAU;AACnC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAU;QAChD,IAAa,CAAA,aAAA,GAAG,MAAM,EAAU;AAKjC;AAHC,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;8GAXpB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBnC,ojBAQM,EDGE,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,0eACjB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAClB,iBAAiB,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIV,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAEjB,OAAA,EAAA;wBACL,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,eAAe;qBAClB,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ojBAAA,EAAA;;;AEhBnD;;AAEG;;;;"}
@@ -12,22 +12,22 @@ class SpxValidationMessagesComponent {
12
12
  this.submitTried = input(undefined);
13
13
  this.translateService = inject(TranslateService);
14
14
  this.textTooLong = computed(() => {
15
- return this.translateService.instant(spxTextTooLong, { fieldLabel: this.fieldLabel, error: this.errors()["maxlength"].requiredLength });
15
+ return this.translateService.instant(spxTextTooLong, { fieldLabel: this.fieldLabel(), error: this.errors()["maxlength"].requiredLength });
16
16
  });
17
17
  this.textTooShort = computed(() => {
18
- return this.translateService.instant(spxTextTooShort, { fieldLabel: this.fieldLabel, error: this.errors()["minlength"].requiredLength });
18
+ return this.translateService.instant(spxTextTooShort, { fieldLabel: this.fieldLabel(), error: this.errors()["minlength"].requiredLength });
19
19
  });
20
20
  this.textTooHigh = computed(() => {
21
- return this.translateService.instant(spxTextTooHigh, { fieldLabel: this.fieldLabel, error: this.errors()["max"].max });
21
+ return this.translateService.instant(spxTextTooHigh, { fieldLabel: this.fieldLabel(), error: this.errors()["max"].max });
22
22
  });
23
23
  this.textTooLow = computed(() => {
24
- return this.translateService.instant(spxTextTooLow, { fieldLabel: this.fieldLabel, error: this.errors()["min"].min });
24
+ return this.translateService.instant(spxTextTooLow, { fieldLabel: this.fieldLabel(), error: this.errors()["min"].min });
25
25
  });
26
26
  this.textPatternNotValid = computed(() => {
27
- return this.translateService.instant(spxTextPatternNotValid, { fieldLabel: this.fieldLabel });
27
+ return this.translateService.instant(spxTextPatternNotValid, { fieldLabel: this.fieldLabel() });
28
28
  });
29
29
  this.textRequired = computed(() => {
30
- return this.translateService.instant(spxTextRequired, { fieldLabel: this.fieldLabel });
30
+ return this.translateService.instant(spxTextRequired, { fieldLabel: this.fieldLabel() });
31
31
  });
32
32
  this.textChoosePast = computed(() => {
33
33
  return this.translateService.instant(spxTextChoosePast);
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-validation-messages.mjs","sources":["../../../../projects/softpak/components/spx-validation-messages/spx-validation-messages.component.ts","../../../../projects/softpak/components/spx-validation-messages/spx-validation-messages.component.html","../../../../projects/softpak/components/spx-validation-messages/softpak-components-spx-validation-messages.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { spxTextChooseFuture, spxTextChoosePast, spxTextChooseValidMonth, spxTextDateMayNotBeFuture, spxTextDateMayNotBePast, spxTextInvalidCode, spxTextPatternNotValid, spxTextRequired, spxTextTooHigh, spxTextTooLong, spxTextTooLow, spxTextTooShort } from '@softpak/components/spx-translate';\r\n\r\n@Component({\r\n selector: 'spx-validation-messages',\r\n standalone: true,\r\n templateUrl: './spx-validation-messages.component.html',\r\n styleUrl: './spx-validation-messages.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxValidationMessagesComponent { \r\n readonly errors = input.required<ValidationErrors>();\r\n readonly touched = input.required<boolean>();\r\n readonly formControlI = input<AbstractControl<any,any> | undefined>(undefined);\r\n readonly fieldLabel = input<string | undefined>(undefined);\r\n readonly submitTried = input<boolean | undefined>(undefined);\r\n\r\n translateService = inject(TranslateService);\r\n \r\n textTooLong = computed(() => {\r\n return this.translateService.instant(spxTextTooLong, { fieldLabel: this.fieldLabel, error: this.errors()[\"maxlength\"].requiredLength });\r\n });\r\n\r\n textTooShort = computed(() => {\r\n return this.translateService.instant(spxTextTooShort, { fieldLabel: this.fieldLabel, error: this.errors()[\"minlength\"].requiredLength });\r\n });\r\n\r\n textTooHigh = computed(() => {\r\n return this.translateService.instant(spxTextTooHigh, { fieldLabel: this.fieldLabel, error: this.errors()[\"max\"].max });\r\n });\r\n\r\n textTooLow = computed(() => {\r\n return this.translateService.instant(spxTextTooLow, { fieldLabel: this.fieldLabel, error: this.errors()[\"min\"].min });\r\n });\r\n\r\n textPatternNotValid = computed(() => {\r\n return this.translateService.instant(spxTextPatternNotValid, { fieldLabel: this.fieldLabel });\r\n });\r\n\r\n textRequired = computed(() => {\r\n return this.translateService.instant(spxTextRequired, { fieldLabel: this.fieldLabel });\r\n });\r\n\r\n textChoosePast = computed(() => {\r\n return this.translateService.instant(spxTextChoosePast);\r\n });\r\n\r\n textChooseFuture = computed(() => {\r\n return this.translateService.instant(spxTextChooseFuture);\r\n });\r\n\r\n textChooseValidMonth = computed(() => {\r\n return this.translateService.instant(spxTextChooseValidMonth);\r\n });\r\n\r\n textDateMayNotBeFuture = computed(() => {\r\n return this.translateService.instant(spxTextDateMayNotBeFuture);\r\n });\r\n\r\n textDateMayNotBePast = computed(() => {\r\n return this.translateService.instant(spxTextDateMayNotBePast);\r\n });\r\n\r\n textInvalidCode = computed(() => {\r\n return this.translateService.instant(spxTextInvalidCode, { codeName: this.errors()[\"invalidCode\"].name, codeCode: this.errors()[\"invalidCode\"].code });\r\n });\r\n\r\n}\r\n","\r\n@if (formControlI() && errors() && (touched() || submitTried())) {\r\n @if (errors()[\"maxlength\"]) {\r\n <div>{{ textTooLong() }}</div>\r\n }\r\n @if (errors()[\"minlength\"]) {\r\n <div>{{ textTooShort() }}</div>\r\n }\r\n @if (errors()[\"max\"]) {\r\n <div>{{ textTooHigh() }}</div>\r\n }\r\n @if (errors()[\"min\"]) {\r\n <div>{{ textTooLow() }}</div>\r\n }\r\n @if (errors()[\"pattern\"]) {\r\n <div>{{ textPatternNotValid() }}</div>\r\n }\r\n @if (errors()[\"required\"]) {\r\n <div>{{ textRequired() }}</div>\r\n }\r\n @if (errors()[\"year\"]) {\r\n <div>{{ textChoosePast() }}</div>\r\n }\r\n @if (errors()[\"yearFuture\"]) {\r\n <div>{{ textChooseFuture() }}</div>\r\n }\r\n @if (errors()[\"month\"]) {\r\n <div>{{ textChooseValidMonth() }}</div>\r\n }\r\n @if (errors()[\"future\"]) {\r\n <div>{{ textDateMayNotBeFuture() }}</div>\r\n }\r\n @if (errors()[\"past\"]) {\r\n <div>{{ textDateMayNotBePast() }}</div>\r\n }\r\n @if (errors()[\"invalidCode\"]) {\r\n <div>{{ textInvalidCode() }}</div>\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"softpak-components-spx-validation-messages.mjs","sources":["../../../../projects/softpak/components/spx-validation-messages/spx-validation-messages.component.ts","../../../../projects/softpak/components/spx-validation-messages/spx-validation-messages.component.html","../../../../projects/softpak/components/spx-validation-messages/softpak-components-spx-validation-messages.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { spxTextChooseFuture, spxTextChoosePast, spxTextChooseValidMonth, spxTextDateMayNotBeFuture, spxTextDateMayNotBePast, spxTextInvalidCode, spxTextPatternNotValid, spxTextRequired, spxTextTooHigh, spxTextTooLong, spxTextTooLow, spxTextTooShort } from '@softpak/components/spx-translate';\r\n\r\n@Component({\r\n selector: 'spx-validation-messages',\r\n standalone: true,\r\n templateUrl: './spx-validation-messages.component.html',\r\n styleUrl: './spx-validation-messages.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpxValidationMessagesComponent { \r\n readonly errors = input.required<ValidationErrors>();\r\n readonly touched = input.required<boolean>();\r\n readonly formControlI = input<AbstractControl<any,any> | undefined>(undefined);\r\n readonly fieldLabel = input<string | undefined>(undefined);\r\n readonly submitTried = input<boolean | undefined>(undefined);\r\n\r\n translateService = inject(TranslateService);\r\n \r\n textTooLong = computed(() => {\r\n return this.translateService.instant(spxTextTooLong, { fieldLabel: this.fieldLabel(), error: this.errors()[\"maxlength\"].requiredLength });\r\n });\r\n\r\n textTooShort = computed(() => {\r\n return this.translateService.instant(spxTextTooShort, { fieldLabel: this.fieldLabel(), error: this.errors()[\"minlength\"].requiredLength });\r\n });\r\n\r\n textTooHigh = computed(() => {\r\n return this.translateService.instant(spxTextTooHigh, { fieldLabel: this.fieldLabel(), error: this.errors()[\"max\"].max });\r\n });\r\n\r\n textTooLow = computed(() => {\r\n return this.translateService.instant(spxTextTooLow, { fieldLabel: this.fieldLabel(), error: this.errors()[\"min\"].min });\r\n });\r\n\r\n textPatternNotValid = computed(() => {\r\n return this.translateService.instant(spxTextPatternNotValid, { fieldLabel: this.fieldLabel() });\r\n });\r\n\r\n textRequired = computed(() => {\r\n return this.translateService.instant(spxTextRequired, { fieldLabel: this.fieldLabel() });\r\n });\r\n\r\n textChoosePast = computed(() => {\r\n return this.translateService.instant(spxTextChoosePast);\r\n });\r\n\r\n textChooseFuture = computed(() => {\r\n return this.translateService.instant(spxTextChooseFuture);\r\n });\r\n\r\n textChooseValidMonth = computed(() => {\r\n return this.translateService.instant(spxTextChooseValidMonth);\r\n });\r\n\r\n textDateMayNotBeFuture = computed(() => {\r\n return this.translateService.instant(spxTextDateMayNotBeFuture);\r\n });\r\n\r\n textDateMayNotBePast = computed(() => {\r\n return this.translateService.instant(spxTextDateMayNotBePast);\r\n });\r\n\r\n textInvalidCode = computed(() => {\r\n return this.translateService.instant(spxTextInvalidCode, { codeName: this.errors()[\"invalidCode\"].name, codeCode: this.errors()[\"invalidCode\"].code });\r\n });\r\n\r\n}\r\n","\r\n@if (formControlI() && errors() && (touched() || submitTried())) {\r\n @if (errors()[\"maxlength\"]) {\r\n <div>{{ textTooLong() }}</div>\r\n }\r\n @if (errors()[\"minlength\"]) {\r\n <div>{{ textTooShort() }}</div>\r\n }\r\n @if (errors()[\"max\"]) {\r\n <div>{{ textTooHigh() }}</div>\r\n }\r\n @if (errors()[\"min\"]) {\r\n <div>{{ textTooLow() }}</div>\r\n }\r\n @if (errors()[\"pattern\"]) {\r\n <div>{{ textPatternNotValid() }}</div>\r\n }\r\n @if (errors()[\"required\"]) {\r\n <div>{{ textRequired() }}</div>\r\n }\r\n @if (errors()[\"year\"]) {\r\n <div>{{ textChoosePast() }}</div>\r\n }\r\n @if (errors()[\"yearFuture\"]) {\r\n <div>{{ textChooseFuture() }}</div>\r\n }\r\n @if (errors()[\"month\"]) {\r\n <div>{{ textChooseValidMonth() }}</div>\r\n }\r\n @if (errors()[\"future\"]) {\r\n <div>{{ textDateMayNotBeFuture() }}</div>\r\n }\r\n @if (errors()[\"past\"]) {\r\n <div>{{ textDateMayNotBePast() }}</div>\r\n }\r\n @if (errors()[\"invalidCode\"]) {\r\n <div>{{ textInvalidCode() }}</div>\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softpak/components",
3
- "version": "20.0.0",
3
+ "version": "20.0.2",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "19.x.x || 20.x.x",
@@ -88,26 +88,30 @@
88
88
  "types": "./spx-helpers/index.d.ts",
89
89
  "default": "./fesm2022/softpak-components-spx-helpers.mjs"
90
90
  },
91
- "./spx-navigation": {
92
- "types": "./spx-navigation/index.d.ts",
93
- "default": "./fesm2022/softpak-components-spx-navigation.mjs"
94
- },
95
91
  "./spx-inputs": {
96
92
  "types": "./spx-inputs/index.d.ts",
97
93
  "default": "./fesm2022/softpak-components-spx-inputs.mjs"
98
94
  },
95
+ "./spx-navigation": {
96
+ "types": "./spx-navigation/index.d.ts",
97
+ "default": "./fesm2022/softpak-components-spx-navigation.mjs"
98
+ },
99
99
  "./spx-number-check": {
100
100
  "types": "./spx-number-check/index.d.ts",
101
101
  "default": "./fesm2022/softpak-components-spx-number-check.mjs"
102
102
  },
103
- "./spx-patch": {
104
- "types": "./spx-patch/index.d.ts",
105
- "default": "./fesm2022/softpak-components-spx-patch.mjs"
106
- },
107
103
  "./spx-pagination": {
108
104
  "types": "./spx-pagination/index.d.ts",
109
105
  "default": "./fesm2022/softpak-components-spx-pagination.mjs"
110
106
  },
107
+ "./spx-pipes": {
108
+ "types": "./spx-pipes/index.d.ts",
109
+ "default": "./fesm2022/softpak-components-spx-pipes.mjs"
110
+ },
111
+ "./spx-patch": {
112
+ "types": "./spx-patch/index.d.ts",
113
+ "default": "./fesm2022/softpak-components-spx-patch.mjs"
114
+ },
111
115
  "./spx-spinner": {
112
116
  "types": "./spx-spinner/index.d.ts",
113
117
  "default": "./fesm2022/softpak-components-spx-spinner.mjs"
@@ -116,18 +120,6 @@
116
120
  "types": "./spx-progress-bar/index.d.ts",
117
121
  "default": "./fesm2022/softpak-components-spx-progress-bar.mjs"
118
122
  },
119
- "./spx-storage": {
120
- "types": "./spx-storage/index.d.ts",
121
- "default": "./fesm2022/softpak-components-spx-storage.mjs"
122
- },
123
- "./spx-stock-info": {
124
- "types": "./spx-stock-info/index.d.ts",
125
- "default": "./fesm2022/softpak-components-spx-stock-info.mjs"
126
- },
127
- "./spx-pipes": {
128
- "types": "./spx-pipes/index.d.ts",
129
- "default": "./fesm2022/softpak-components-spx-pipes.mjs"
130
- },
131
123
  "./spx-suggestion": {
132
124
  "types": "./spx-suggestion/index.d.ts",
133
125
  "default": "./fesm2022/softpak-components-spx-suggestion.mjs"
@@ -136,9 +128,9 @@
136
128
  "types": "./spx-tabs/index.d.ts",
137
129
  "default": "./fesm2022/softpak-components-spx-tabs.mjs"
138
130
  },
139
- "./spx-translate": {
140
- "types": "./spx-translate/index.d.ts",
141
- "default": "./fesm2022/softpak-components-spx-translate.mjs"
131
+ "./spx-stock-info": {
132
+ "types": "./spx-stock-info/index.d.ts",
133
+ "default": "./fesm2022/softpak-components-spx-stock-info.mjs"
142
134
  },
143
135
  "./spx-toaster": {
144
136
  "types": "./spx-toaster/index.d.ts",
@@ -148,9 +140,9 @@
148
140
  "types": "./spx-toggle/index.d.ts",
149
141
  "default": "./fesm2022/softpak-components-spx-toggle.mjs"
150
142
  },
151
- "./spx-validation": {
152
- "types": "./spx-validation/index.d.ts",
153
- "default": "./fesm2022/softpak-components-spx-validation.mjs"
143
+ "./spx-storage": {
144
+ "types": "./spx-storage/index.d.ts",
145
+ "default": "./fesm2022/softpak-components-spx-storage.mjs"
154
146
  },
155
147
  "./spx-update": {
156
148
  "types": "./spx-update/index.d.ts",
@@ -159,6 +151,14 @@
159
151
  "./spx-validation-messages": {
160
152
  "types": "./spx-validation-messages/index.d.ts",
161
153
  "default": "./fesm2022/softpak-components-spx-validation-messages.mjs"
154
+ },
155
+ "./spx-translate": {
156
+ "types": "./spx-translate/index.d.ts",
157
+ "default": "./fesm2022/softpak-components-spx-translate.mjs"
158
+ },
159
+ "./spx-validation": {
160
+ "types": "./spx-validation/index.d.ts",
161
+ "default": "./fesm2022/softpak-components-spx-validation.mjs"
162
162
  }
163
163
  }
164
164
  }
@@ -82,13 +82,14 @@ declare enum SpxInputTypeEnum {
82
82
 
83
83
  declare class SpxInputTextComponent {
84
84
  private changeDetectorRef;
85
+ mappedReadonly: _angular_core.Signal<boolean>;
85
86
  readonly spxName: _angular_core.InputSignal<string | undefined>;
86
87
  readonly spxAutofocus: _angular_core.InputSignal<boolean>;
87
88
  readonly spxAutocomplete: _angular_core.InputSignal<string | undefined>;
88
89
  readonly spxInputMode: _angular_core.InputSignal<string | undefined>;
89
90
  readonly spxPattern: _angular_core.InputSignal<string | undefined>;
90
91
  readonly spxSuggestions: _angular_core.InputSignal<SpxValuePair<string | number | boolean>[]>;
91
- readonly spxReadonly: _angular_core.InputSignal<boolean>;
92
+ readonly spxReadonly: _angular_core.InputSignal<true | undefined>;
92
93
  readonly spxValidators: _angular_core.InputSignal<any[] | undefined>;
93
94
  readonly spxCapitalize: _angular_core.InputSignal<boolean>;
94
95
  readonly spxType: _angular_core.InputSignal<SpxInputTypeEnum>;
@@ -114,10 +115,11 @@ declare class SpxInputFloatComponent implements OnInit {
114
115
  first: number | null;
115
116
  second: number | null;
116
117
  }>;
118
+ mappedReadonly: _angular_core.Signal<boolean>;
117
119
  readonly spxName: _angular_core.InputSignal<string | undefined>;
118
120
  readonly spxAutofocus: _angular_core.InputSignal<boolean>;
119
121
  readonly spxElementId: _angular_core.InputSignal<number | undefined>;
120
- readonly spxReadonly: _angular_core.InputSignal<boolean>;
122
+ readonly spxReadonly: _angular_core.InputSignal<true | undefined>;
121
123
  readonly spxValidators: _angular_core.InputSignal<any[] | undefined>;
122
124
  readonly spxStep: _angular_core.InputSignal<number | undefined>;
123
125
  readonly value: _angular_core.ModelSignal<SpxValuePair<any>>;
@@ -139,10 +141,11 @@ declare class SpxInputFloatComponent implements OnInit {
139
141
  }
140
142
 
141
143
  declare class SpxInputNumberComponent {
144
+ mappedReadonly: _angular_core.Signal<boolean>;
142
145
  readonly spxName: _angular_core.InputSignal<string | undefined>;
143
146
  readonly spxAutofocus: _angular_core.InputSignal<boolean>;
144
147
  readonly spxInputMode: _angular_core.InputSignal<string | undefined>;
145
- readonly spxReadonly: _angular_core.InputSignal<boolean>;
148
+ readonly spxReadonly: _angular_core.InputSignal<true | undefined>;
146
149
  readonly spxValidators: _angular_core.InputSignal<any[] | undefined>;
147
150
  readonly spxFocused: _angular_core.InputSignal<boolean>;
148
151
  readonly spxStep: _angular_core.InputSignal<number | undefined>;
@@ -164,7 +167,7 @@ declare class SpxInputRadioComponent {
164
167
  readonly spxName: _angular_core.InputSignal<string | undefined>;
165
168
  readonly spxValidators: _angular_core.InputSignal<any[] | undefined>;
166
169
  readonly spxShowLabel: _angular_core.InputSignal<boolean>;
167
- readonly spxReadonly: _angular_core.InputSignal<boolean>;
170
+ readonly spxReadonly: _angular_core.InputSignal<true | undefined>;
168
171
  readonly spxSuggestions: _angular_core.InputSignal<SpxValuePair<any>[]>;
169
172
  readonly value: _angular_core.ModelSignal<SpxValuePair<any> | undefined>;
170
173
  readonly selectedInputService: SelectedInputService;
@@ -189,7 +192,7 @@ declare class SpxInputTimeComponent {
189
192
  readonly spxInputMode: _angular_core.InputSignal<string | undefined>;
190
193
  readonly spxPattern: _angular_core.InputSignal<string | undefined>;
191
194
  readonly spxSuggestions: _angular_core.InputSignal<SpxValuePair<string | number | boolean>[]>;
192
- readonly spxReadonly: _angular_core.InputSignal<boolean>;
195
+ readonly spxReadonly: _angular_core.InputSignal<true | undefined>;
193
196
  readonly spxValidators: _angular_core.InputSignal<any[] | undefined>;
194
197
  readonly spxCapitalize: _angular_core.InputSignal<boolean>;
195
198
  readonly value: _angular_core.ModelSignal<SpxValuePair<any>>;
@@ -260,6 +263,7 @@ declare class SpxInputDateComponent implements OnInit {
260
263
  }
261
264
 
262
265
  declare class SpxInputComponent {
266
+ protected mappedReadonly: _angular_core.Signal<true | undefined>;
263
267
  readonly spxLabel: _angular_core.InputSignal<string>;
264
268
  readonly spxMax: _angular_core.InputSignal<string | undefined>;
265
269
  readonly spxMin: _angular_core.InputSignal<string | undefined>;