@softpak/components 20.4.1 → 20.5.1

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.
Files changed (65) hide show
  1. package/fesm2022/softpak-components-spx-404-page.mjs +3 -3
  2. package/fesm2022/softpak-components-spx-404-page.mjs.map +1 -1
  3. package/fesm2022/softpak-components-spx-alert.mjs +10 -10
  4. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -1
  5. package/fesm2022/softpak-components-spx-app-configuration.mjs.map +1 -1
  6. package/fesm2022/softpak-components-spx-app-expiry.mjs +16 -16
  7. package/fesm2022/softpak-components-spx-app-expiry.mjs.map +1 -1
  8. package/fesm2022/softpak-components-spx-button.mjs +16 -16
  9. package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
  10. package/fesm2022/softpak-components-spx-capitalize.mjs +3 -3
  11. package/fesm2022/softpak-components-spx-card.mjs +34 -34
  12. package/fesm2022/softpak-components-spx-card.mjs.map +1 -1
  13. package/fesm2022/softpak-components-spx-change-details.mjs +19 -19
  14. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  15. package/fesm2022/softpak-components-spx-channel-selection.mjs +9 -9
  16. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  17. package/fesm2022/softpak-components-spx-check-digit.mjs +11 -11
  18. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  19. package/fesm2022/softpak-components-spx-confirm.mjs +11 -11
  20. package/fesm2022/softpak-components-spx-confirm.mjs.map +1 -1
  21. package/fesm2022/softpak-components-spx-form-section.mjs +7 -7
  22. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  23. package/fesm2022/softpak-components-spx-form-view.mjs +20 -20
  24. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  25. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -1
  26. package/fesm2022/softpak-components-spx-inputs.mjs +530 -395
  27. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  28. package/fesm2022/softpak-components-spx-navigation.mjs +20 -20
  29. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  30. package/fesm2022/softpak-components-spx-number-check.mjs +17 -17
  31. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -1
  32. package/fesm2022/softpak-components-spx-pagination.mjs +10 -10
  33. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -1
  34. package/fesm2022/softpak-components-spx-patch.mjs +6 -6
  35. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -1
  36. package/fesm2022/softpak-components-spx-pipes.mjs +3 -3
  37. package/fesm2022/softpak-components-spx-progress-bar.mjs +5 -5
  38. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -1
  39. package/fesm2022/softpak-components-spx-spinner.mjs +5 -5
  40. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -1
  41. package/fesm2022/softpak-components-spx-stock-info.mjs +35 -35
  42. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  43. package/fesm2022/softpak-components-spx-storage.mjs.map +1 -1
  44. package/fesm2022/softpak-components-spx-suggestion.mjs +7 -7
  45. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -1
  46. package/fesm2022/softpak-components-spx-tabs.mjs +7 -7
  47. package/fesm2022/softpak-components-spx-tabs.mjs.map +1 -1
  48. package/fesm2022/softpak-components-spx-toaster.mjs +5 -5
  49. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -1
  50. package/fesm2022/softpak-components-spx-toggle.mjs +6 -6
  51. package/fesm2022/softpak-components-spx-toggle.mjs.map +1 -1
  52. package/fesm2022/softpak-components-spx-translate.mjs.map +1 -1
  53. package/fesm2022/softpak-components-spx-update.mjs +15 -15
  54. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  55. package/fesm2022/softpak-components-spx-validation-messages.mjs +20 -20
  56. package/fesm2022/softpak-components-spx-validation-messages.mjs.map +1 -1
  57. package/fesm2022/softpak-components-spx-validation.mjs +23 -23
  58. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -1
  59. package/fesm2022/softpak-components-spx-welcome.mjs +14 -14
  60. package/fesm2022/softpak-components-spx-welcome.mjs.map +1 -1
  61. package/package.json +41 -41
  62. package/spx-inputs/index.d.ts +103 -49
  63. package/spx-validation/index.d.ts +1 -1
  64. package/spx-validation-messages/index.d.ts +1 -1
  65. package/tailwind.css +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, computed, input, model, output, signal, HostListener, ChangeDetectionStrategy, Component, viewChild } from '@angular/core';
2
+ import { Injectable, inject, computed, input, model, output, signal, HostListener, ChangeDetectionStrategy, Component, viewChild, EventEmitter, ViewChildren, Output } 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';
@@ -10,8 +10,8 @@ import { SpxSeverityEnum, valuePairToValue } from '@softpak/components/spx-helpe
10
10
  import * as i1$1 from '@angular/forms';
11
11
  import { ReactiveFormsModule, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
12
12
  import { NgClass } from '@angular/common';
13
- import { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';
14
13
  import { DateTime } from 'luxon';
14
+ import { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';
15
15
  import * as i1$2 from '@ionic/angular/standalone';
16
16
  import { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular/standalone';
17
17
 
@@ -42,10 +42,10 @@ class SelectedInputService {
42
42
  setSelectedElementId(id) {
43
43
  this.focusedElement.next(id);
44
44
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SelectedInputService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
46
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SelectedInputService, providedIn: 'root' }); }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectedInputService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
46
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectedInputService, providedIn: 'root' }); }
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SelectedInputService, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SelectedInputService, decorators: [{
49
49
  type: Injectable,
50
50
  args: [{
51
51
  providedIn: 'root', // Ensure the service is available globally
@@ -60,27 +60,27 @@ class SpxInputBoxComponent {
60
60
  this.faQuestion = faQuestion;
61
61
  this.faTimes = faTimes;
62
62
  this.SpxSeverity = SpxSeverityEnum;
63
- this.clearButtonName = computed(() => this.spxName() ? `${this.spxName()}__clear_button` : undefined);
64
- this.searchButtonName = computed(() => this.spxName() ? `${this.spxName()}__search_button` : undefined);
65
- this.spxCompact = input();
66
- this.spxLabel = input();
67
- this.spxName = input();
68
- this.spxReadonly = input(false);
69
- this.spxRequired = input();
70
- this.spxShowClear = input(true);
71
- this.spxShowEdit = input();
72
- this.spxShowHelp = input();
73
- this.spxShowLabel = input(true);
74
- this.spxShowSearch = input();
75
- this.spxShowValidationMessages = input();
76
- this.spxAlert = input();
77
- this.spxValue = model();
63
+ this.clearButtonName = computed(() => this.spxName() ? `${this.spxName()}__clear_button` : undefined, ...(ngDevMode ? [{ debugName: "clearButtonName" }] : []));
64
+ this.searchButtonName = computed(() => this.spxName() ? `${this.spxName()}__search_button` : undefined, ...(ngDevMode ? [{ debugName: "searchButtonName" }] : []));
65
+ this.spxCompact = input(...(ngDevMode ? [undefined, { debugName: "spxCompact" }] : []));
66
+ this.spxLabel = input(...(ngDevMode ? [undefined, { debugName: "spxLabel" }] : []));
67
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
68
+ this.spxReadonly = input(false, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
69
+ this.spxRequired = input(...(ngDevMode ? [undefined, { debugName: "spxRequired" }] : []));
70
+ this.spxShowClear = input(true, ...(ngDevMode ? [{ debugName: "spxShowClear" }] : []));
71
+ this.spxShowEdit = input(...(ngDevMode ? [undefined, { debugName: "spxShowEdit" }] : []));
72
+ this.spxShowHelp = input(...(ngDevMode ? [undefined, { debugName: "spxShowHelp" }] : []));
73
+ this.spxShowLabel = input(true, ...(ngDevMode ? [{ debugName: "spxShowLabel" }] : []));
74
+ this.spxShowSearch = input(...(ngDevMode ? [undefined, { debugName: "spxShowSearch" }] : []));
75
+ this.spxShowValidationMessages = input(...(ngDevMode ? [undefined, { debugName: "spxShowValidationMessages" }] : []));
76
+ this.spxAlert = input(...(ngDevMode ? [undefined, { debugName: "spxAlert" }] : []));
77
+ this.spxValue = model(...(ngDevMode ? [undefined, { debugName: "spxValue" }] : []));
78
78
  this.spxClear = output();
79
79
  this.spxSearch = output();
80
80
  this.spxEdit = output();
81
81
  this.spxHelp = output();
82
- this.id = signal(0);
83
- this.spxIsFocused = signal(false);
82
+ this.id = signal(0, ...(ngDevMode ? [{ debugName: "id" }] : []));
83
+ this.spxIsFocused = signal(false, ...(ngDevMode ? [{ debugName: "spxIsFocused" }] : []));
84
84
  this.spxSetIdInParent = output();
85
85
  }
86
86
  ngOnInit() {
@@ -110,10 +110,10 @@ class SpxInputBoxComponent {
110
110
  onHelp() {
111
111
  this.spxHelp.emit();
112
112
  }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.1", type: SpxInputBoxComponent, isStandalone: true, selector: "spx-input-box", inputs: { spxCompact: { classPropertyName: "spxCompact", publicName: "spxCompact", isSignal: true, isRequired: false, transformFunction: null }, spxLabel: { classPropertyName: "spxLabel", publicName: "spxLabel", isSignal: true, isRequired: false, transformFunction: null }, spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxRequired: { classPropertyName: "spxRequired", publicName: "spxRequired", isSignal: true, isRequired: false, transformFunction: null }, spxShowClear: { classPropertyName: "spxShowClear", publicName: "spxShowClear", isSignal: true, isRequired: false, transformFunction: null }, spxShowEdit: { classPropertyName: "spxShowEdit", publicName: "spxShowEdit", isSignal: true, isRequired: false, transformFunction: null }, spxShowHelp: { classPropertyName: "spxShowHelp", publicName: "spxShowHelp", isSignal: true, isRequired: false, transformFunction: null }, spxShowLabel: { classPropertyName: "spxShowLabel", publicName: "spxShowLabel", isSignal: true, isRequired: false, transformFunction: null }, spxShowSearch: { classPropertyName: "spxShowSearch", publicName: "spxShowSearch", isSignal: true, isRequired: false, transformFunction: null }, spxShowValidationMessages: { classPropertyName: "spxShowValidationMessages", publicName: "spxShowValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, spxAlert: { classPropertyName: "spxAlert", publicName: "spxAlert", isSignal: true, isRequired: false, transformFunction: null }, spxValue: { classPropertyName: "spxValue", publicName: "spxValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { spxValue: "spxValueChange", spxClear: "spxClear", spxSearch: "spxSearch", spxEdit: "spxEdit", spxHelp: "spxHelp", spxSetIdInParent: "spxSetIdInParent" }, host: { listeners: { "click": "handleFocusIn()", "focusin": "handleFocusIn($event)", "focusout": "handleFocusOut($event)" } }, ngImport: i0, template: "<div class=\"flex rounded w-full gap-3\"\n [class.rounded-none]=\"this.spxShowValidationMessages()\"\n [class.rounded-t]=\"this.spxShowValidationMessages()\"\n [class.outline-none]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.ring-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.ring-offset-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.ring-blue-500]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.bg-white]=\"!this.spxReadonly()\"\n [class.bg-gray-300]=\"this.spxReadonly()\"\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\n \n >\n <div class=\"flex-auto p-3\"\n [class.p-0]=\"this.spxCompact()\"\n [class.flex]=\"this.spxCompact()\"\n [class.items-center]=\"this.spxCompact()\">\n @if (this.spxShowLabel()) {\n <div class=\"font-bold text-sm mb-1 text-gray-800\"\n [class.mb-0]=\"this.spxCompact()\"\n [class.px-3]=\"this.spxCompact()\">\n {{this.spxLabel()}} @if (spxRequired()) {\n <span class=\"text-red-800\">*</span>\n }\n </div>\n }\n\n <ng-content select=\"[controls]\"></ng-content>\n</div>\n<div class=\"flex flex-none gap-1 p-1\">\n @if (this.spxShowEdit()) {\n <spx-button\n (spxClick)=\"onEdit()\"\n [spxFullHeight]=\"true\"\n [spxSize]=\"'xl'\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faEdit\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n @if (this.spxShowHelp()) {\n <spx-button\n (spxClick)=\"onHelp()\"\n [spxFullHeight]=\"true\"\n [spxDisabled]=\"this.spxReadonly()\"\n [spxSize]=\"'xl'\"\n [spxTabIndex]=\"-1\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faQuestion\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n @if (this.spxShowSearch()) {\n <spx-button\n (spxClick)=\"onSearch()\"\n [spxFullHeight]=\"true\"\n [spxDisabled]=\"this.spxReadonly()\"\n [spxName]=\"searchButtonName()\"\n [spxSize]=\"'xl'\"\n [spxTabIndex]=\"-1\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faSearch\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n @if (this.spxShowClear()) {\n <spx-button\n (spxClick)=\"onClear()\"\n [spxDisabled]=\"this.spxReadonly() || (this.spxValue()?.description !== 'No' && !this.spxValue()?.value)\"\n [spxFullHeight]=\"true\"\n [spxName]=\"clearButtonName()\"\n [spxSize]=\"'xl'\"\n [spxTabIndex]=\"-1\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faTimes\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n</div>\n</div>\n@if (this.spxShowValidationMessages()) {\n <div class=\"bg-red-600 rounded-b text-white p-3\">\n <ng-content select=\"[validation-messages]\"></ng-content>\n </div>\n}\n@else if (this.spxAlert()) {\n <div [class.bg-red-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.error\"\n [class.bg-green-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.success\"\n [class.bg-blue-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.info\"\n [class.bg-gray-400]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.unknown\"\n [class.bg-amber-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.warning\"\n class=\"rounded-b text-white p-3\">\n <div>\n {{this.spxAlert()?.text}}\n </div>\n</div>\n}", dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType", "spxName"], outputs: ["spxClick"] }, { 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: "pipe", type: IsSeverityPipe, name: "isSeverity" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxInputBoxComponent, isStandalone: true, selector: "spx-input-box", inputs: { spxCompact: { classPropertyName: "spxCompact", publicName: "spxCompact", isSignal: true, isRequired: false, transformFunction: null }, spxLabel: { classPropertyName: "spxLabel", publicName: "spxLabel", isSignal: true, isRequired: false, transformFunction: null }, spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxRequired: { classPropertyName: "spxRequired", publicName: "spxRequired", isSignal: true, isRequired: false, transformFunction: null }, spxShowClear: { classPropertyName: "spxShowClear", publicName: "spxShowClear", isSignal: true, isRequired: false, transformFunction: null }, spxShowEdit: { classPropertyName: "spxShowEdit", publicName: "spxShowEdit", isSignal: true, isRequired: false, transformFunction: null }, spxShowHelp: { classPropertyName: "spxShowHelp", publicName: "spxShowHelp", isSignal: true, isRequired: false, transformFunction: null }, spxShowLabel: { classPropertyName: "spxShowLabel", publicName: "spxShowLabel", isSignal: true, isRequired: false, transformFunction: null }, spxShowSearch: { classPropertyName: "spxShowSearch", publicName: "spxShowSearch", isSignal: true, isRequired: false, transformFunction: null }, spxShowValidationMessages: { classPropertyName: "spxShowValidationMessages", publicName: "spxShowValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, spxAlert: { classPropertyName: "spxAlert", publicName: "spxAlert", isSignal: true, isRequired: false, transformFunction: null }, spxValue: { classPropertyName: "spxValue", publicName: "spxValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { spxValue: "spxValueChange", spxClear: "spxClear", spxSearch: "spxSearch", spxEdit: "spxEdit", spxHelp: "spxHelp", spxSetIdInParent: "spxSetIdInParent" }, host: { listeners: { "click": "handleFocusIn()", "focusin": "handleFocusIn($event)", "focusout": "handleFocusOut($event)" } }, ngImport: i0, template: "<div class=\"flex rounded w-full gap-3\"\n [class.rounded-none]=\"this.spxShowValidationMessages()\"\n [class.rounded-t]=\"this.spxShowValidationMessages()\"\n [class.outline-none]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.ring-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.ring-offset-2]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.ring-blue-500]=\"this.spxIsFocused() && !this.spxReadonly()\"\n [class.bg-white]=\"!this.spxReadonly()\"\n [class.bg-gray-300]=\"this.spxReadonly()\"\n [class.cursor-not-allowed]=\"this.spxReadonly()\"\n \n >\n <div class=\"flex-auto p-3\"\n [class.p-0]=\"this.spxCompact()\"\n [class.flex]=\"this.spxCompact()\"\n [class.items-center]=\"this.spxCompact()\">\n @if (this.spxShowLabel()) {\n <div class=\"font-bold text-sm mb-1 text-gray-800\"\n [class.mb-0]=\"this.spxCompact()\"\n [class.px-3]=\"this.spxCompact()\">\n {{this.spxLabel()}} @if (spxRequired()) {\n <span class=\"text-red-800\">*</span>\n }\n </div>\n }\n\n <ng-content select=\"[controls]\"></ng-content>\n</div>\n<div class=\"flex flex-none gap-1 p-1\">\n @if (this.spxShowEdit()) {\n <spx-button\n (spxClick)=\"onEdit()\"\n [spxFullHeight]=\"true\"\n [spxSize]=\"'xl'\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faEdit\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n @if (this.spxShowHelp()) {\n <spx-button\n (spxClick)=\"onHelp()\"\n [spxFullHeight]=\"true\"\n [spxDisabled]=\"this.spxReadonly()\"\n [spxSize]=\"'xl'\"\n [spxTabIndex]=\"-1\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faQuestion\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n @if (this.spxShowSearch()) {\n <spx-button\n (spxClick)=\"onSearch()\"\n [spxFullHeight]=\"true\"\n [spxDisabled]=\"this.spxReadonly()\"\n [spxName]=\"searchButtonName()\"\n [spxSize]=\"'xl'\"\n [spxTabIndex]=\"-1\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faSearch\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n @if (this.spxShowClear()) {\n <spx-button\n (spxClick)=\"onClear()\"\n [spxDisabled]=\"this.spxReadonly() || (this.spxValue()?.description !== 'No' && !this.spxValue()?.value)\"\n [spxFullHeight]=\"true\"\n [spxName]=\"clearButtonName()\"\n [spxSize]=\"'xl'\"\n [spxTabIndex]=\"-1\"\n [spxType]=\"'button'\">\n <fa-icon [icon]=\"faTimes\" class=\"block text-xl\"></fa-icon>\n </spx-button>\n }\n</div>\n</div>\n@if (this.spxShowValidationMessages()) {\n <div class=\"bg-red-600 rounded-b text-white p-3\">\n <ng-content select=\"[validation-messages]\"></ng-content>\n </div>\n}\n@else if (this.spxAlert()) {\n <div [class.bg-red-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.error\"\n [class.bg-green-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.success\"\n [class.bg-blue-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.info\"\n [class.bg-gray-400]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.unknown\"\n [class.bg-amber-700]=\"this.spxAlert()?.severity | isSeverity: SpxSeverity.warning\"\n class=\"rounded-b text-white p-3\">\n <div>\n {{this.spxAlert()?.text}}\n </div>\n</div>\n}", dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType", "spxName"], outputs: ["spxClick"] }, { 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: "pipe", type: IsSeverityPipe, name: "isSeverity" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
115
115
  }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputBoxComponent, decorators: [{
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputBoxComponent, decorators: [{
117
117
  type: Component,
118
118
  args: [{ selector: 'spx-input-box', imports: [
119
119
  SpxButtonComponent,
@@ -132,8 +132,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImpor
132
132
 
133
133
  class SpxDropdownComponent {
134
134
  constructor() {
135
- this.focusPosition = signal(0);
136
- this.spxSuggestions = input([]);
135
+ this.focusPosition = signal(0, ...(ngDevMode ? [{ debugName: "focusPosition" }] : []));
136
+ this.spxSuggestions = input([], ...(ngDevMode ? [{ debugName: "spxSuggestions" }] : []));
137
137
  this.spxSelect = output();
138
138
  }
139
139
  ngOnInit() {
@@ -168,10 +168,10 @@ class SpxDropdownComponent {
168
168
  this.focusPosition.set(0);
169
169
  this.spxSelect.emit(valuePair);
170
170
  }
171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
172
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.1", type: SpxDropdownComponent, isStandalone: true, selector: "spx-dropdown", inputs: { spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { spxSelect: "spxSelect" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"relative text-black\">\n <div\n class=\"absolute bg-gray-100 left-0 right-0 z-20\">\n @for (valuePair of this.spxSuggestions(); track valuePair; let i = $index) {\n <button\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\"\n [class.bg-gray-100]=\"i === this.focusPosition()\"\n [class.bg-white]=\"i !== this.focusPosition()\"\n (click)=\"this.handleSuggestionClick(valuePair)\"\n [attr.tabindex]=\"-1\"\n [attr.type]=\"'button'\">\n <div class=\"flex-1 p-1 font-bold text-lg\">{{valuePair?.description}}</div>\n <spx-button (spxClick)=\"this.handleSuggestionClick(valuePair)\" [spxType]=\"'button'\" [spxTabIndex]=\"-1\">Select</spx-button>\n </button>\n }\n </div>\n</div>", dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType", "spxName"], outputs: ["spxClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxDropdownComponent, isStandalone: true, selector: "spx-dropdown", inputs: { spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { spxSelect: "spxSelect" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"relative text-black\">\n <div\n class=\"absolute bg-gray-100 left-0 right-0 z-20\">\n @for (valuePair of this.spxSuggestions(); track valuePair; let i = $index) {\n <button\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\"\n [class.bg-gray-100]=\"i === this.focusPosition()\"\n [class.bg-white]=\"i !== this.focusPosition()\"\n (click)=\"this.handleSuggestionClick(valuePair)\"\n [attr.tabindex]=\"-1\"\n [attr.type]=\"'button'\">\n <div class=\"flex-1 p-1 font-bold text-lg\">{{valuePair?.description}}</div>\n <spx-button (spxClick)=\"this.handleSuggestionClick(valuePair)\" [spxType]=\"'button'\" [spxTabIndex]=\"-1\">Select</spx-button>\n </button>\n }\n </div>\n</div>", dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType", "spxName"], outputs: ["spxClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxDropdownComponent, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxDropdownComponent, decorators: [{
175
175
  type: Component,
176
176
  args: [{ selector: 'spx-dropdown', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
177
177
  SpxButtonComponent
@@ -182,6 +182,8 @@ var SpxInputTypeEnum;
182
182
  (function (SpxInputTypeEnum) {
183
183
  SpxInputTypeEnum["autocomplete"] = "autocomplete";
184
184
  SpxInputTypeEnum["button"] = "button";
185
+ SpxInputTypeEnum["cycle"] = "cycle";
186
+ SpxInputTypeEnum["cycleNumeric"] = "cycleNumeric";
185
187
  SpxInputTypeEnum["date"] = "date";
186
188
  SpxInputTypeEnum["float"] = "float";
187
189
  SpxInputTypeEnum["hidden"] = "hidden";
@@ -199,23 +201,23 @@ var SpxInputTypeEnum;
199
201
  class SpxInputTextComponent {
200
202
  constructor(changeDetectorRef) {
201
203
  this.changeDetectorRef = changeDetectorRef;
202
- this.mappedReadonly = computed(() => this.spxReadonly() ? true : false);
203
- this.spxSpeedDial = input([]);
204
- this.spxName = input();
205
- this.spxAutofocus = input(false);
206
- this.spxAutocomplete = input();
207
- this.spxInputMode = input();
208
- this.spxPattern = input();
209
- this.spxSuggestions = input([]);
210
- this.spxReadonly = input(undefined);
211
- this.spxValidators = input();
212
- this.spxCapitalize = input(false);
213
- this.spxType = input(SpxInputTypeEnum.text);
214
- this.spxWasInternalUpdate = input(false);
215
- this.value = model();
216
- this.spxElementId = input();
204
+ this.mappedReadonly = computed(() => this.spxReadonly() ? true : false, ...(ngDevMode ? [{ debugName: "mappedReadonly" }] : []));
205
+ this.spxSpeedDial = input([], ...(ngDevMode ? [{ debugName: "spxSpeedDial" }] : []));
206
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
207
+ this.spxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "spxAutofocus" }] : []));
208
+ this.spxAutocomplete = input(...(ngDevMode ? [undefined, { debugName: "spxAutocomplete" }] : []));
209
+ this.spxInputMode = input(...(ngDevMode ? [undefined, { debugName: "spxInputMode" }] : []));
210
+ this.spxPattern = input(...(ngDevMode ? [undefined, { debugName: "spxPattern" }] : []));
211
+ this.spxSuggestions = input([], ...(ngDevMode ? [{ debugName: "spxSuggestions" }] : []));
212
+ this.spxReadonly = input(undefined, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
213
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
214
+ this.spxCapitalize = input(false, ...(ngDevMode ? [{ debugName: "spxCapitalize" }] : []));
215
+ this.spxType = input(SpxInputTypeEnum.text, ...(ngDevMode ? [{ debugName: "spxType" }] : []));
216
+ this.spxWasInternalUpdate = input(false, ...(ngDevMode ? [{ debugName: "spxWasInternalUpdate" }] : []));
217
+ this.value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
218
+ this.spxElementId = input(...(ngDevMode ? [undefined, { debugName: "spxElementId" }] : []));
217
219
  this.selectedInputService = inject(SelectedInputService);
218
- this.spxIsFocused = signal(false);
220
+ this.spxIsFocused = signal(false, ...(ngDevMode ? [{ debugName: "spxIsFocused" }] : []));
219
221
  this.inputRef = viewChild.required('input');
220
222
  }
221
223
  ngOnInit() {
@@ -255,10 +257,10 @@ class SpxInputTextComponent {
255
257
  this.spxSetFocus();
256
258
  }
257
259
  }
258
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputTextComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
259
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.1", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxSpeedDial: { classPropertyName: "spxSpeedDial", publicName: "spxSpeedDial", isSignal: true, isRequired: false, transformFunction: null }, 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\">\n <input #input class=\"font-bold text-lg w-full outline-none\" autocomplete=\"off\" spellcheck=\"false\"\n [attr.autocomplete]=\"this.spxAutocomplete()\" [attr.autofocus]=\"this.spxAutofocus()\"\n [attr.inputMode]=\"this.spxInputMode()\" [attr.pattern]=\"this.spxPattern()\" [attr.name]=\"this.spxName()\"\n [attr.type]=\"this.spxType()\" [class.bg-white]=\"!this.spxReadonly()\" [class.bg-gray-300]=\"this.spxReadonly()\"\n [class.cursor-not-allowed]=\"this.spxReadonly()\" [class.uppercase]=\"this.spxCapitalize()\"\n [disabled]=\"this.mappedReadonly()\" [ngModel]=\"\n this.value()?.description\n ? this.value()?.description\n : this.value()?.value\n \" (ngModelChange)=\"this.handleChange($event)\" />\n @if (this.value()?.description && this.value()?.value &&\n this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\n <span>{{ this.value()?.value }}</span>\n } @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType()\n === 'overlaynumber')) {\n <spx-dropdown [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\n </spx-dropdown>\n } @if (this.spxSpeedDial()) {\n <div class=\"flex flex-wrap gap-3\">\n @for (speedDial of this.spxSpeedDial(); track $index) {\n <button class=\"px-3 px-1\" [ngClass]=\"'bg-' + speedDial.backgroundColor\" (click)=\"doSelect(speedDial)\">\n {{ speedDial.valuePair.description }}\n </button>\n }\n </div>\n }\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"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputTextComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
261
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxSpeedDial: { classPropertyName: "spxSpeedDial", publicName: "spxSpeedDial", isSignal: true, isRequired: false, transformFunction: null }, 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\">\n <input #input class=\"font-bold text-lg w-full outline-none\" autocomplete=\"off\" spellcheck=\"false\"\n [attr.autocomplete]=\"this.spxAutocomplete()\" [attr.autofocus]=\"this.spxAutofocus()\"\n [attr.inputMode]=\"this.spxInputMode()\" [attr.pattern]=\"this.spxPattern()\" [attr.name]=\"this.spxName()\"\n [attr.type]=\"this.spxType()\" [class.bg-white]=\"!this.spxReadonly()\" [class.bg-gray-300]=\"this.spxReadonly()\"\n [class.cursor-not-allowed]=\"this.spxReadonly()\" [class.uppercase]=\"this.spxCapitalize()\"\n [disabled]=\"this.mappedReadonly()\" [ngModel]=\"\n this.value()?.description\n ? this.value()?.description\n : this.value()?.value\n \" (ngModelChange)=\"this.handleChange($event)\" />\n @if (this.value()?.description && this.value()?.value &&\n this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\n <span>{{ this.value()?.value }}</span>\n } @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType()\n === 'overlaynumber')) {\n <spx-dropdown [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\n </spx-dropdown>\n } @if (this.spxSpeedDial()) {\n <div class=\"flex flex-wrap gap-3\">\n @for (speedDial of this.spxSpeedDial(); track $index) {\n <button class=\"px-3 px-1\" [ngClass]=\"'bg-' + speedDial.backgroundColor\" (click)=\"doSelect(speedDial)\">\n {{ speedDial.valuePair.description }}\n </button>\n }\n </div>\n }\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"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
260
262
  }
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputTextComponent, decorators: [{
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputTextComponent, decorators: [{
262
264
  type: Component,
263
265
  args: [{ selector: 'spx-input-text', imports: [
264
266
  SpxDropdownComponent,
@@ -268,26 +270,389 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImpor
268
270
  ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative text-black\">\n <input #input class=\"font-bold text-lg w-full outline-none\" autocomplete=\"off\" spellcheck=\"false\"\n [attr.autocomplete]=\"this.spxAutocomplete()\" [attr.autofocus]=\"this.spxAutofocus()\"\n [attr.inputMode]=\"this.spxInputMode()\" [attr.pattern]=\"this.spxPattern()\" [attr.name]=\"this.spxName()\"\n [attr.type]=\"this.spxType()\" [class.bg-white]=\"!this.spxReadonly()\" [class.bg-gray-300]=\"this.spxReadonly()\"\n [class.cursor-not-allowed]=\"this.spxReadonly()\" [class.uppercase]=\"this.spxCapitalize()\"\n [disabled]=\"this.mappedReadonly()\" [ngModel]=\"\n this.value()?.description\n ? this.value()?.description\n : this.value()?.value\n \" (ngModelChange)=\"this.handleChange($event)\" />\n @if (this.value()?.description && this.value()?.value &&\n this.value()?.description?.valueOf() !== this.value()?.value?.valueOf()) {\n <span>{{ this.value()?.value }}</span>\n } @if (this.spxIsFocused() && (this.spxType() === 'overlay' || this.spxType()\n === 'overlaynumber')) {\n <spx-dropdown [spxSuggestions]=\"this.spxSuggestions()\" (spxSelect)=\"this.handleSuggestionClick($event)\">\n </spx-dropdown>\n } @if (this.spxSpeedDial()) {\n <div class=\"flex flex-wrap gap-3\">\n @for (speedDial of this.spxSpeedDial(); track $index) {\n <button class=\"px-3 px-1\" [ngClass]=\"'bg-' + speedDial.backgroundColor\" (click)=\"doSelect(speedDial)\">\n {{ speedDial.valuePair.description }}\n </button>\n }\n </div>\n }\n</div>" }]
269
271
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
270
272
 
273
+ // {
274
+ // defaultFocusPosition: 3,
275
+ // fieldPattern: '[0-9]*',
276
+ // focusOrder: [3, 4, 5, 6, 0, 1, 2],
277
+ // length: 7,
278
+ // requiredPositions: [false, false, false, true, true, true, true]
279
+ // }
280
+
281
+ class SpxInputCycleComponent {
282
+ constructor(changeDetectorRef) {
283
+ this.changeDetectorRef = changeDetectorRef;
284
+ this.mappedReadonly = computed(() => this.spxReadonly() ? true : false, ...(ngDevMode ? [{ debugName: "mappedReadonly" }] : []));
285
+ this.spxSpeedDial = input([], ...(ngDevMode ? [{ debugName: "spxSpeedDial" }] : []));
286
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
287
+ this.spxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "spxAutofocus" }] : []));
288
+ this.spxAutocomplete = input(...(ngDevMode ? [undefined, { debugName: "spxAutocomplete" }] : []));
289
+ this.spxCycleConfig = input.required(...(ngDevMode ? [{ debugName: "spxCycleConfig" }] : []));
290
+ this.spxInputMode = input(...(ngDevMode ? [undefined, { debugName: "spxInputMode" }] : []));
291
+ this.spxReadonly = input(undefined, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
292
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
293
+ this.spxCapitalize = input(false, ...(ngDevMode ? [{ debugName: "spxCapitalize" }] : []));
294
+ this.spxSeverity = computed(() => this.value()?.description, ...(ngDevMode ? [{ debugName: "spxSeverity" }] : []));
295
+ this.spxType = input(SpxInputTypeEnum.text, ...(ngDevMode ? [{ debugName: "spxType" }] : []));
296
+ this.spxWasInternalUpdate = input(false, ...(ngDevMode ? [{ debugName: "spxWasInternalUpdate" }] : []));
297
+ this.value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
298
+ this.spxElementId = input(...(ngDevMode ? [undefined, { debugName: "spxElementId" }] : []));
299
+ this.selectedInputService = inject(SelectedInputService);
300
+ this.spxIsFocused = signal(false, ...(ngDevMode ? [{ debugName: "spxIsFocused" }] : []));
301
+ this.inputRef = viewChild.required('input');
302
+ this.severityError = SpxSeverityEnum.error;
303
+ this.severitySuccess = SpxSeverityEnum.success;
304
+ this.severityWarning = SpxSeverityEnum.warning;
305
+ this.completeInput = new EventEmitter();
306
+ }
307
+ ngOnInit() {
308
+ this.componentDidLoad();
309
+ const length = this.spxCycleConfig().length;
310
+ this.values = Array(length).fill('');
311
+ if (this.value()) {
312
+ valuePairToValue(this.value()).split('').forEach((char, index) => {
313
+ if (this.values[index] !== undefined) {
314
+ this.values[index] = char;
315
+ }
316
+ });
317
+ }
318
+ }
319
+ ngAfterViewInit() {
320
+ if (this.spxAutofocus()) {
321
+ this.spxSetFocus();
322
+ }
323
+ }
324
+ spxSetFocus() {
325
+ const defaultFocusPosition = this.spxCycleConfig().defaultFocusPosition;
326
+ setTimeout(() => this.focusInput(defaultFocusPosition));
327
+ }
328
+ componentDidLoad() {
329
+ // if (this.spxAutofocus()) {
330
+ // this.spxSetFocus();
331
+ // }
332
+ }
333
+ handleChange(event) {
334
+ this.value.set(event);
335
+ }
336
+ onFocus(index) {
337
+ const input = this.inputBoxes.toArray()[index]?.nativeElement;
338
+ if (input?.value) {
339
+ setTimeout(() => input.select(), 0);
340
+ }
341
+ }
342
+ onInput(index, event) {
343
+ const inputEl = event.target;
344
+ const raw = inputEl.value;
345
+ const char = raw.slice(-1); // neem laatste teken
346
+ if (!this.values) {
347
+ return;
348
+ }
349
+ this.values[index] = char;
350
+ inputEl.value = char; // vervang inhoud expliciet
351
+ this.focusInput(this.nextIndex(index));
352
+ this.checkEmitCondition();
353
+ }
354
+ nextIndex(currentIndex) {
355
+ const focusOrder = this.spxCycleConfig().focusOrder;
356
+ const next = focusOrder[focusOrder.indexOf(currentIndex) + 1];
357
+ return next % this.spxCycleConfig().length;
358
+ }
359
+ focusInput(index) {
360
+ const input = this.inputBoxes.toArray()[index]?.nativeElement;
361
+ if (input) {
362
+ input.focus();
363
+ // Selecteer de tekst als er al iets in staat
364
+ if (input.value) {
365
+ // Delay is nodig om select() te laten werken in sommige browsers
366
+ setTimeout(() => input.select(), 0);
367
+ }
368
+ }
369
+ }
370
+ checkEmitCondition() {
371
+ const requiredPositions = this.spxCycleConfig().requiredPositions;
372
+ const completed = this.values.filter((_, index) => requiredPositions[index] === true).every(val => val !== '');
373
+ if (completed) {
374
+ this.handleChange({
375
+ description: SpxSeverityEnum.warning,
376
+ value: this.values.join('').toUpperCase(),
377
+ });
378
+ }
379
+ }
380
+ writeValue(valuePair) {
381
+ console.log(valuePair);
382
+ }
383
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputCycleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
384
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxInputCycleComponent, isStandalone: true, selector: "spx-input-cycle", inputs: { spxSpeedDial: { classPropertyName: "spxSpeedDial", publicName: "spxSpeedDial", isSignal: true, isRequired: false, transformFunction: null }, 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 }, spxCycleConfig: { classPropertyName: "spxCycleConfig", publicName: "spxCycleConfig", isSignal: true, isRequired: true, 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 }, 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", completeInput: "completeInput" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }, { propertyName: "inputBoxes", predicate: ["inputBox"], descendants: true }], ngImport: i0, template: "<div class=\"relative text-black flex gap-2 w-full\">\n @for (val of values; track $index) {\n <input #inputBox type=\"text\" maxlength=\"1\" pattern=\"\\d*\" [value]=\"val\" (focus)=\"onFocus($index)\"\n (input)=\"onInput($index, $event)\" [attr.inputMode]=\"this.spxInputMode()\" [attr.pattern]=\"spxCycleConfig().fieldPattern\"\n [class.opacity-50]=\"spxCycleConfig().requiredPositions[$index] === false\"\n [class.bg-sky-100]=\"!this.spxReadonly() && !this.spxSeverity()\"\n [class.bg-red-100]=\"!this.spxReadonly() && this.spxSeverity() === severityError\"\n [class.bg-amber-100]=\"!this.spxReadonly() && this.spxSeverity() === severityWarning\"\n [class.bg-teal-100]=\"!this.spxReadonly() && this.spxSeverity() === severitySuccess\"\n [class.bg-gray-300]=\"this.spxReadonly()\" [class.cursor-not-allowed]=\"this.spxReadonly()\"\n [class.uppercase]=\"this.spxCapitalize()\" [disabled]=\"this.mappedReadonly()\"\n class=\"rounded text-center p-3 font-bold text-lg w-full\" />\n }\n</div>", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
385
+ }
386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputCycleComponent, decorators: [{
387
+ type: Component,
388
+ args: [{ selector: 'spx-input-cycle', imports: [
389
+ ReactiveFormsModule,
390
+ FormsModule,
391
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative text-black flex gap-2 w-full\">\n @for (val of values; track $index) {\n <input #inputBox type=\"text\" maxlength=\"1\" pattern=\"\\d*\" [value]=\"val\" (focus)=\"onFocus($index)\"\n (input)=\"onInput($index, $event)\" [attr.inputMode]=\"this.spxInputMode()\" [attr.pattern]=\"spxCycleConfig().fieldPattern\"\n [class.opacity-50]=\"spxCycleConfig().requiredPositions[$index] === false\"\n [class.bg-sky-100]=\"!this.spxReadonly() && !this.spxSeverity()\"\n [class.bg-red-100]=\"!this.spxReadonly() && this.spxSeverity() === severityError\"\n [class.bg-amber-100]=\"!this.spxReadonly() && this.spxSeverity() === severityWarning\"\n [class.bg-teal-100]=\"!this.spxReadonly() && this.spxSeverity() === severitySuccess\"\n [class.bg-gray-300]=\"this.spxReadonly()\" [class.cursor-not-allowed]=\"this.spxReadonly()\"\n [class.uppercase]=\"this.spxCapitalize()\" [disabled]=\"this.mappedReadonly()\"\n class=\"rounded text-center p-3 font-bold text-lg w-full\" />\n }\n</div>" }]
392
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { completeInput: [{
393
+ type: Output
394
+ }], inputBoxes: [{
395
+ type: ViewChildren,
396
+ args: ['inputBox']
397
+ }] } });
398
+
399
+ var stepType;
400
+ (function (stepType) {
401
+ stepType["years"] = "years";
402
+ stepType["months"] = "months";
403
+ stepType["days"] = "days";
404
+ })(stepType || (stepType = {}));
405
+ class SpxInputDateComponent {
406
+ constructor() {
407
+ this.spxMax = input.required(...(ngDevMode ? [{ debugName: "spxMax" }] : []));
408
+ this.spxMin = input.required(...(ngDevMode ? [{ debugName: "spxMin" }] : []));
409
+ this.spxReadonly = input(...(ngDevMode ? [undefined, { debugName: "spxReadonly" }] : []));
410
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
411
+ this.spxAutoFocus = input(false, ...(ngDevMode ? [{ debugName: "spxAutoFocus" }] : []));
412
+ this.value = model({
413
+ description: "",
414
+ value: "",
415
+ }, ...(ngDevMode ? [{ debugName: "value" }] : []));
416
+ this.spxSelectedStep = signal(stepType.years, ...(ngDevMode ? [{ debugName: "spxSelectedStep" }] : []));
417
+ this.spxSelectDay = input(false, ...(ngDevMode ? [{ debugName: "spxSelectDay" }] : []));
418
+ this.spxSelectMonth = input(true, ...(ngDevMode ? [{ debugName: "spxSelectMonth" }] : []));
419
+ this.selectedYear = signal(null, ...(ngDevMode ? [{ debugName: "selectedYear" }] : []));
420
+ this.selectedMonth = signal(null, ...(ngDevMode ? [{ debugName: "selectedMonth" }] : []));
421
+ this.selectedDay = signal(null, ...(ngDevMode ? [{ debugName: "selectedDay" }] : []));
422
+ this.yearInputComponent = viewChild.required(stepType.years);
423
+ this.monthInputComponent = viewChild.required(stepType.months);
424
+ this.dayInputComponent = viewChild.required(stepType.days);
425
+ this.spxElementId = input(...(ngDevMode ? [undefined, { debugName: "spxElementId" }] : []));
426
+ this.selectedInputService = inject(SelectedInputService);
427
+ this.spxIsFocused = signal(false, ...(ngDevMode ? [{ debugName: "spxIsFocused" }] : []));
428
+ this.isInternalUpdate = signal(false, ...(ngDevMode ? [{ debugName: "isInternalUpdate" }] : []));
429
+ this.spxSuggestionC = computed(() => {
430
+ switch (this.spxSelectedStep()) {
431
+ case stepType.years:
432
+ return this.spxSuggestions().years;
433
+ case stepType.months:
434
+ return [...this.spxSuggestions().months];
435
+ case stepType.days:
436
+ return [...this.spxSuggestions().days];
437
+ }
438
+ }, ...(ngDevMode ? [{ debugName: "spxSuggestionC" }] : []));
439
+ this.spxSuggestions = input({
440
+ years: [],
441
+ months: [{
442
+ description: 'Jan',
443
+ value: 1,
444
+ }, {
445
+ description: 'Feb',
446
+ value: 2,
447
+ }, {
448
+ description: 'Mar',
449
+ value: 3,
450
+ }, {
451
+ description: 'Apr',
452
+ value: 4,
453
+ }, {
454
+ description: 'May',
455
+ value: 5,
456
+ }, {
457
+ description: 'Jun',
458
+ value: 6,
459
+ }, {
460
+ description: 'Jul',
461
+ value: 7,
462
+ }, {
463
+ description: 'Aug',
464
+ value: 8,
465
+ }, {
466
+ description: 'Sep',
467
+ value: 9,
468
+ }, {
469
+ description: 'Oct',
470
+ value: 10,
471
+ }, {
472
+ description: 'Nov',
473
+ value: 11,
474
+ }, {
475
+ description: 'Dec',
476
+ value: 12,
477
+ }],
478
+ days: [],
479
+ }, ...(ngDevMode ? [{ debugName: "spxSuggestions" }] : []));
480
+ }
481
+ handleFocus(selectedStep) {
482
+ switch (selectedStep) {
483
+ case stepType.years:
484
+ this.spxSelectedStep.set(stepType.years);
485
+ this.yearInputComponent().nativeElement.focus();
486
+ break;
487
+ case stepType.months:
488
+ this.spxSelectedStep.set(stepType.months);
489
+ this.monthInputComponent().nativeElement.focus();
490
+ break;
491
+ case stepType.days:
492
+ this.spxSelectedStep.set(stepType.days);
493
+ this.dayInputComponent().nativeElement.focus();
494
+ break;
495
+ }
496
+ }
497
+ onModelChange(newValue, selectedStep) {
498
+ this.isInternalUpdate.set(true);
499
+ const parsedValue = +newValue; // Convert to number
500
+ if (parsedValue == 0)
501
+ return;
502
+ switch (selectedStep) {
503
+ case stepType.years:
504
+ this.selectedYear.set(parsedValue);
505
+ if (parsedValue > 999) {
506
+ this.spxSelectedStep.set(stepType.months);
507
+ this.monthInputComponent().nativeElement.focus();
508
+ }
509
+ break;
510
+ case stepType.months:
511
+ this.selectedMonth.set(parsedValue);
512
+ break;
513
+ case stepType.days:
514
+ this.selectedDay.set(parsedValue);
515
+ break;
516
+ }
517
+ this.updateValueAndEmit();
518
+ this.isInternalUpdate.set(false);
519
+ }
520
+ ngOnInit() {
521
+ this.suggestYears();
522
+ this.setValue();
523
+ if (this.spxAutoFocus()) {
524
+ this.handleFocus("years");
525
+ }
526
+ // Filter updates based on focus state
527
+ this.selectedInputService.focusedElement$
528
+ .pipe(filter((focusedId) => focusedId === this.spxElementId()))
529
+ .subscribe(() => {
530
+ this.spxIsFocused.set(true); // Update only if focused
531
+ this.handleFocus(this.spxSelectedStep());
532
+ });
533
+ }
534
+ ngOnChanges() {
535
+ if (!this.isInternalUpdate()) {
536
+ this.setValue();
537
+ }
538
+ }
539
+ setValue() {
540
+ if (valuePairToValue(this.value())) {
541
+ const parsedValue = DateTime.fromISO(valuePairToValue(this.value()));
542
+ if (this.selectedYear() && this.selectedYear() < 999) {
543
+ return;
544
+ }
545
+ this.selectedYear.set(parsedValue.year);
546
+ this.selectedMonth.set(parsedValue.month);
547
+ this.selectedDay.set(parsedValue.day);
548
+ }
549
+ }
550
+ handleSuggestionClick(value) {
551
+ switch (this.spxSelectedStep()) {
552
+ case stepType.years:
553
+ this.selectedYear.set(value);
554
+ break;
555
+ case stepType.months:
556
+ this.selectedMonth.set(value);
557
+ break;
558
+ case stepType.days:
559
+ this.selectedDay.set(value);
560
+ break;
561
+ }
562
+ this.updateValueAndEmit();
563
+ this.changeSelectedStep();
564
+ }
565
+ // Handle keyboard navigation (Tab and Shift + Tab)
566
+ handleTabKey(event) {
567
+ if (event.key === 'Tab') {
568
+ this.changeSelectedStep();
569
+ event.preventDefault(); // Prevent default tab behavior
570
+ }
571
+ }
572
+ updateValueAndEmit() {
573
+ if (this.selectedYear() && this.selectedMonth()) {
574
+ 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()}` : ``}`;
575
+ const parsedValue = DateTime.fromISO(concatenatedValue);
576
+ this.value.set({ value: parsedValue.toISO(), description: parsedValue.toISO() });
577
+ }
578
+ }
579
+ changeSelectedStep() {
580
+ switch (this.spxSelectedStep()) {
581
+ case stepType.years:
582
+ if (this.spxSelectMonth()) {
583
+ this.spxSelectedStep.set(stepType.months);
584
+ this.monthInputComponent().nativeElement.focus();
585
+ }
586
+ else {
587
+ this.spxSelectedStep.set(stepType.years);
588
+ this.yearInputComponent().nativeElement.focus();
589
+ }
590
+ break;
591
+ case stepType.months:
592
+ if (this.spxSelectDay()) {
593
+ this.spxSelectedStep.set(stepType.days);
594
+ this.dayInputComponent().nativeElement.focus();
595
+ }
596
+ else {
597
+ this.spxSelectedStep.set(stepType.years);
598
+ this.yearInputComponent().nativeElement.focus();
599
+ }
600
+ break;
601
+ case stepType.days:
602
+ this.spxSelectedStep.set(stepType.years);
603
+ this.yearInputComponent().nativeElement.focus();
604
+ break;
605
+ }
606
+ }
607
+ suggestYears() {
608
+ this.spxSuggestions().years = [];
609
+ for (let year = DateTime.fromISO(this.spxMin()).year; year <= DateTime.fromISO(this.spxMax()).year; year++) {
610
+ this.spxSuggestions().years.push({
611
+ description: `'${year.toString().substring(2, 4)}`,
612
+ value: year,
613
+ });
614
+ }
615
+ }
616
+ handleClear() {
617
+ this.spxSelectedStep.set(stepType.years);
618
+ this.selectedYear.set(null);
619
+ this.selectedMonth.set(null);
620
+ this.selectedDay.set(null);
621
+ }
622
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
623
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxInputDateComponent, isStandalone: true, selector: "spx-input-date", inputs: { spxMax: { classPropertyName: "spxMax", publicName: "spxMax", isSignal: true, isRequired: true, transformFunction: null }, spxMin: { classPropertyName: "spxMin", publicName: "spxMin", isSignal: true, isRequired: true, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxAutoFocus: { classPropertyName: "spxAutoFocus", publicName: "spxAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxSelectDay: { classPropertyName: "spxSelectDay", publicName: "spxSelectDay", isSignal: true, isRequired: false, transformFunction: null }, spxSelectMonth: { classPropertyName: "spxSelectMonth", publicName: "spxSelectMonth", isSignal: true, isRequired: false, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "keydown": "handleTabKey($event)" } }, viewQueries: [{ propertyName: "yearInputComponent", first: true, predicate: stepType.years, descendants: true, isSignal: true }, { propertyName: "monthInputComponent", first: true, predicate: stepType.months, descendants: true, isSignal: true }, { propertyName: "dayInputComponent", first: true, predicate: stepType.days, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class='spx-input-date__controls'>\n <input #years\n class='spx-input-date__input'\n [ngModel]=\"selectedYear()\"\n (ngModelChange)=\"onModelChange($event, 'years')\"\n [attr.type]=\"'number'\"\n (click)=\"this.handleFocus('years')\"\n [attr.min]=\"1900\"\n [attr.max]=\"2100\"\n [attr.step]=\"1\"\n />\n <div class='spx-input-date__control-label'>Year</div>\n @if (this.spxSelectMonth()) {\n <input #months\n class='spx-input-date__input'\n [ngModel]=\"selectedMonth()\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n (click)=\"this.handleFocus('months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input #days\n class='spx-input-date__input'\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n (click)=\"this.handleFocus('days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value && this.spxSelectedStep() === 'years') ||\n (selectedMonth() === valuePair.value && this.spxSelectedStep() === 'months') || \n (selectedDay() === valuePair.value && this.spxSelectedStep() === 'days')\"\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\n }\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"], dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }, { 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 }); }
624
+ }
625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputDateComponent, decorators: [{
626
+ type: Component,
627
+ args: [{ selector: 'spx-input-date', standalone: true, imports: [
628
+ SpxSuggestionComponent,
629
+ FormsModule
630
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class='spx-input-date__controls'>\n <input #years\n class='spx-input-date__input'\n [ngModel]=\"selectedYear()\"\n (ngModelChange)=\"onModelChange($event, 'years')\"\n [attr.type]=\"'number'\"\n (click)=\"this.handleFocus('years')\"\n [attr.min]=\"1900\"\n [attr.max]=\"2100\"\n [attr.step]=\"1\"\n />\n <div class='spx-input-date__control-label'>Year</div>\n @if (this.spxSelectMonth()) {\n <input #months\n class='spx-input-date__input'\n [ngModel]=\"selectedMonth()\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n (click)=\"this.handleFocus('months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input #days\n class='spx-input-date__input'\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n (click)=\"this.handleFocus('days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value && this.spxSelectedStep() === 'years') ||\n (selectedMonth() === valuePair.value && this.spxSelectedStep() === 'months') || \n (selectedDay() === valuePair.value && this.spxSelectedStep() === 'days')\"\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\n }\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"] }]
631
+ }], propDecorators: { handleTabKey: [{
632
+ type: HostListener,
633
+ args: ['keydown', ['$event']]
634
+ }] } });
635
+
271
636
  class SpxInputFloatComponent {
272
637
  constructor() {
273
638
  this.internalValue = signal({
274
639
  first: null,
275
640
  second: null,
276
- });
277
- this.mappedReadonly = computed(() => this.spxReadonly() ? true : false);
278
- this.spxName = input();
279
- this.spxAutofocus = input(false);
280
- this.spxElementId = input();
281
- this.spxReadonly = input(undefined);
282
- this.spxValidators = input();
283
- this.spxStep = input();
284
- this.value = model.required();
285
- this.spxWasInternalUpdate = input(false);
641
+ }, ...(ngDevMode ? [{ debugName: "internalValue" }] : []));
642
+ this.mappedReadonly = computed(() => this.spxReadonly() ? true : false, ...(ngDevMode ? [{ debugName: "mappedReadonly" }] : []));
643
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
644
+ this.spxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "spxAutofocus" }] : []));
645
+ this.spxElementId = input(...(ngDevMode ? [undefined, { debugName: "spxElementId" }] : []));
646
+ this.spxReadonly = input(undefined, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
647
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
648
+ this.spxStep = input(...(ngDevMode ? [undefined, { debugName: "spxStep" }] : []));
649
+ this.value = model.required(...(ngDevMode ? [{ debugName: "value" }] : []));
650
+ this.spxWasInternalUpdate = input(false, ...(ngDevMode ? [{ debugName: "spxWasInternalUpdate" }] : []));
286
651
  this.selectedInputService = inject(SelectedInputService);
287
- this.spxIsFocused = signal(false);
288
- this.firstInputRef = viewChild('firstInputRef');
289
- this.secondInputRef = viewChild('secondInputRef');
290
- this.isInternalUpdate = signal(false);
652
+ this.spxIsFocused = signal(false, ...(ngDevMode ? [{ debugName: "spxIsFocused" }] : []));
653
+ this.firstInputRef = viewChild('firstInputRef', ...(ngDevMode ? [{ debugName: "firstInputRef" }] : []));
654
+ this.secondInputRef = viewChild('secondInputRef', ...(ngDevMode ? [{ debugName: "secondInputRef" }] : []));
655
+ this.isInternalUpdate = signal(false, ...(ngDevMode ? [{ debugName: "isInternalUpdate" }] : []));
291
656
  }
292
657
  spxSetFocus() {
293
658
  this.firstInputRef()?.nativeElement?.focus();
@@ -353,10 +718,10 @@ class SpxInputFloatComponent {
353
718
  isNumeric(value) {
354
719
  return /^[+-]?\d+(\.\d+)?$/.test(value);
355
720
  }
356
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
357
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.1", 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\">\n <input\n #firstInputRef\n class=\"spx-input-float__input\"\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\n [attr.disabled]=\"this.spxReadonly()\"\n [attr.pattern]=\"'-?[0-9]*'\"\n [attr.step]=\"1\"\n [attr.type]=\"'text'\"\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\n [disabled]=\"this.mappedReadonly()\"\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\n (ngModelChange)=\"this.handleInput($event, 1)\" />\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\n <input #secondInputRef\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\n class=\"spx-input-float__input\"\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\n [attr.disabled]=\"this.spxReadonly()\"\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\n (ngModelChange)=\"this.handleInput($event, 2)\"\n [attr.step]=\"1\"\n [attr.type]=\"'text'\"\n [attr.pattern]=\"'[0-9]*'\"\n [disabled]=\"this.mappedReadonly()\" />\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 }); }
721
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
722
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", 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\">\n <input\n #firstInputRef\n class=\"spx-input-float__input\"\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\n [attr.disabled]=\"this.spxReadonly()\"\n [attr.pattern]=\"'-?[0-9]*'\"\n [attr.step]=\"1\"\n [attr.type]=\"'text'\"\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\n [disabled]=\"this.mappedReadonly()\"\n [ngModel]=\"this.internalValue().first ? this.internalValue().first : undefined\"\n (ngModelChange)=\"this.handleInput($event, 1)\" />\n <span class=\"text-black font-bold text-2xl mx-4\">,</span>\n <input #secondInputRef\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\n class=\"spx-input-float__input\"\n [class.spx-input-float--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\n [attr.disabled]=\"this.spxReadonly()\"\n [ngModel]=\"this.internalValue().second ? this.internalValue().second : undefined\"\n (ngModelChange)=\"this.handleInput($event, 2)\"\n [attr.step]=\"1\"\n [attr.type]=\"'text'\"\n [attr.pattern]=\"'[0-9]*'\"\n [disabled]=\"this.mappedReadonly()\" />\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 }); }
358
723
  }
359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
724
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
360
725
  type: Component,
361
726
  args: [{ selector: 'spx-input-float', imports: [
362
727
  FormsModule,
@@ -365,17 +730,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImpor
365
730
 
366
731
  class SpxInputNumberComponent {
367
732
  constructor() {
368
- this.mappedReadonly = computed(() => this.spxReadonly() ? true : false);
369
- this.spxName = input();
370
- this.spxAutofocus = input(false);
371
- this.spxInputMode = input();
372
- this.spxReadonly = input(undefined);
373
- this.spxValidators = input();
374
- this.spxFocused = input(true);
375
- this.spxStep = input();
376
- this.value = model.required();
733
+ this.mappedReadonly = computed(() => this.spxReadonly() ? true : false, ...(ngDevMode ? [{ debugName: "mappedReadonly" }] : []));
734
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
735
+ this.spxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "spxAutofocus" }] : []));
736
+ this.spxInputMode = input(...(ngDevMode ? [undefined, { debugName: "spxInputMode" }] : []));
737
+ this.spxReadonly = input(undefined, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
738
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
739
+ this.spxFocused = input(true, ...(ngDevMode ? [{ debugName: "spxFocused" }] : []));
740
+ this.spxStep = input(...(ngDevMode ? [undefined, { debugName: "spxStep" }] : []));
741
+ this.value = model.required(...(ngDevMode ? [{ debugName: "value" }] : []));
377
742
  this.inputRef = viewChild.required('input');
378
- this.spxElementId = input();
743
+ this.spxElementId = input(...(ngDevMode ? [undefined, { debugName: "spxElementId" }] : []));
379
744
  this.selectedInputService = inject(SelectedInputService);
380
745
  }
381
746
  ngOnInit() {
@@ -397,27 +762,27 @@ class SpxInputNumberComponent {
397
762
  this.spxSetFocus();
398
763
  }
399
764
  }
400
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
401
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.1", 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\">\n <input\n #input\n class=\"spx-input-number__input\"\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\n [attr.disabled]=\"this.spxReadonly()\"\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\n [attr.type]=\"'number'\"\n [disabled]=\"this.mappedReadonly()\"\n [ngModel]=\"this.value() ? this.value().value : undefined\"\n (ngModelChange)=\"this.handleChange($event)\" />\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 }); }
765
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
766
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", 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\">\n <input\n #input\n class=\"spx-input-number__input\"\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\n [attr.disabled]=\"this.spxReadonly()\"\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\n [attr.type]=\"'number'\"\n [disabled]=\"this.mappedReadonly()\"\n [ngModel]=\"this.value() ? this.value().value : undefined\"\n (ngModelChange)=\"this.handleChange($event)\" />\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 }); }
402
767
  }
403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
404
769
  type: Component,
405
770
  args: [{ selector: 'spx-input-number', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule], template: "<div class=\"spx-input-number__controls\">\n <input\n #input\n class=\"spx-input-number__input\"\n [attr.autofocus]=\"this.spxAutofocus() ? this.spxAutofocus() : undefined\"\n [class.spx-input-number--readonly]=\"this.spxReadonly() ? this.spxReadonly() : undefined\"\n [attr.disabled]=\"this.spxReadonly()\"\n [attr.inputMode]=\"this.spxInputMode() ? this.spxInputMode() : undefined\"\n [attr.step]=\"this.spxStep() ? this.spxStep() : undefined\"\n [attr.type]=\"'number'\"\n [disabled]=\"this.mappedReadonly()\"\n [ngModel]=\"this.value() ? this.value().value : undefined\"\n (ngModelChange)=\"this.handleChange($event)\" />\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"] }]
406
771
  }] });
407
772
 
408
773
  class SpxInputRadioComponent {
409
774
  constructor() {
410
- this.cachedSuggestions = signal([]);
411
- this.focusPosition = signal(0);
412
- this.spxName = input();
413
- this.spxValidators = input();
414
- this.spxShowLabel = input(true);
415
- this.spxReadonly = input(undefined);
416
- this.spxSuggestions = input([]);
417
- this.value = model();
775
+ this.cachedSuggestions = signal([], ...(ngDevMode ? [{ debugName: "cachedSuggestions" }] : []));
776
+ this.focusPosition = signal(0, ...(ngDevMode ? [{ debugName: "focusPosition" }] : []));
777
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
778
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
779
+ this.spxShowLabel = input(true, ...(ngDevMode ? [{ debugName: "spxShowLabel" }] : []));
780
+ this.spxReadonly = input(undefined, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
781
+ this.spxSuggestions = input([], ...(ngDevMode ? [{ debugName: "spxSuggestions" }] : []));
782
+ this.value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
418
783
  this.selectedInputService = inject(SelectedInputService);
419
- this.spxElementId = input();
420
- this.spxIsFocused = signal(false);
784
+ this.spxElementId = input(...(ngDevMode ? [undefined, { debugName: "spxElementId" }] : []));
785
+ this.spxIsFocused = signal(false, ...(ngDevMode ? [{ debugName: "spxIsFocused" }] : []));
421
786
  }
422
787
  ngOnInit() {
423
788
  this.selectedInputService.focusedElement$
@@ -482,10 +847,10 @@ class SpxInputRadioComponent {
482
847
  }
483
848
  });
484
849
  }
485
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
486
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.1", type: SpxInputRadioComponent, isStandalone: true, selector: "spx-input-radio", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxShowLabel: { classPropertyName: "spxShowLabel", publicName: "spxShowLabel", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", 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" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"grid grid-cols-2 gap-2\" [class.mt-3]=\"this.spxShowLabel()\">\n @for (valuePair of this.cachedSuggestions(); track valuePair; let i = $index) {\n <spx-suggestion\n [spxDisabled]=\"this.spxReadonly()\"\n [spxSelected]=\"this.value()?.value === valuePair?.value\"\n [spxTabbable]=\"this.focusPosition() === i\"\n [spxFocused]=\"(this.focusPosition() === i && this.spxIsFocused())\"\n (click)=\"this.handleSuggestionClick(valuePair)\">\n {{valuePair?.description}}\n </spx-suggestion>\n }\n</div>", dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
850
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
851
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxInputRadioComponent, isStandalone: true, selector: "spx-input-radio", inputs: { spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxShowLabel: { classPropertyName: "spxShowLabel", publicName: "spxShowLabel", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", 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" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"grid grid-cols-2 gap-2\" [class.mt-3]=\"this.spxShowLabel()\">\n @for (valuePair of this.cachedSuggestions(); track valuePair; let i = $index) {\n <spx-suggestion\n [spxDisabled]=\"this.spxReadonly()\"\n [spxSelected]=\"this.value()?.value === valuePair?.value\"\n [spxTabbable]=\"this.focusPosition() === i\"\n [spxFocused]=\"(this.focusPosition() === i && this.spxIsFocused())\"\n (click)=\"this.handleSuggestionClick(valuePair)\">\n {{valuePair?.description}}\n </spx-suggestion>\n }\n</div>", dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
487
852
  }
488
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputRadioComponent, decorators: [{
853
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputRadioComponent, decorators: [{
489
854
  type: Component,
490
855
  args: [{ selector: 'spx-input-radio', standalone: true, imports: [
491
856
  SpxSuggestionComponent
@@ -495,12 +860,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImpor
495
860
  class SpxInputTimeModalComponent {
496
861
  constructor(modalController) {
497
862
  this.modalController = modalController;
498
- this.view = input.required();
499
- this.value = input.required();
863
+ this.view = input.required(...(ngDevMode ? [{ debugName: "view" }] : []));
864
+ this.value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
500
865
  this.change = output();
501
866
  this.faXmark = faXmark;
502
- this.hourOptions = signal(Array.from({ length: 24 }, (_, i) => i)); // 0 to 23
503
- this.minuteOptions = signal(Array.from({ length: 12 }, (_, i) => i * 5)); // Minutes in incrementen van 5
867
+ this.hourOptions = signal(Array.from({ length: 24 }, (_, i) => i), ...(ngDevMode ? [{ debugName: "hourOptions" }] : [])); // 0 to 23
868
+ this.minuteOptions = signal(Array.from({ length: 12 }, (_, i) => i * 5), ...(ngDevMode ? [{ debugName: "minuteOptions" }] : [])); // Minutes in incrementen van 5
504
869
  this.typeError = SpxSeverityEnum.error;
505
870
  this.hourOptions().push(this.hourOptions().shift());
506
871
  this.minuteOptions().push(this.minuteOptions().shift());
@@ -512,10 +877,10 @@ class SpxInputTimeModalComponent {
512
877
  this.change.emit(value);
513
878
  this.modalController.dismiss(value);
514
879
  }
515
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputTimeModalComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
516
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.1", type: SpxInputTimeModalComponent, isStandalone: true, selector: "spx-input-time-modal", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { change: "change" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-title>Select {{view()}}</ion-title>\n <ion-buttons slot=\"end\">\n <spx-button [spxSeverity]=\"typeError\" (spxClick)=\"closeDialog()\">\n <fa-icon [icon]=\"faXmark\"></fa-icon>\n </spx-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content class=\"ion-padding bg-white\">\n <!-- Uren -->\n <div class=\"custom-bg grid grid-cols-1 gap-3\">\n @if (view() === 'hours') {\n <div class=\"flex-wrap gap-2\">\n <div class=\"grid grid-cols-3 md:grid-cols-4 gap-3\">\n @for (hour of hourOptions(); track hour) {\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)\">\n {{ hour }}\n </div>\n }\n </div>\n </div>\n }\n <!-- Minuten -->\n @if (view() === 'minutes') {\n <div class=\"grid grid-cols-1 gap-3\">\n <div class=\"grid grid-cols-4 md:grid-cols-5 gap-3\">\n @for (minute of minuteOptions(); track minute) {\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)\">\n {{ minute }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n</ion-content>", 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType", "spxName"], outputs: ["spxClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
880
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputTimeModalComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
881
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxInputTimeModalComponent, isStandalone: true, selector: "spx-input-time-modal", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { change: "change" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-title>Select {{view()}}</ion-title>\n <ion-buttons slot=\"end\">\n <spx-button [spxSeverity]=\"typeError\" (spxClick)=\"closeDialog()\">\n <fa-icon [icon]=\"faXmark\"></fa-icon>\n </spx-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content class=\"ion-padding bg-white\">\n <!-- Uren -->\n <div class=\"custom-bg grid grid-cols-1 gap-3\">\n @if (view() === 'hours') {\n <div class=\"flex-wrap gap-2\">\n <div class=\"grid grid-cols-3 md:grid-cols-4 gap-3\">\n @for (hour of hourOptions(); track hour) {\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)\">\n {{ hour }}\n </div>\n }\n </div>\n </div>\n }\n <!-- Minuten -->\n @if (view() === 'minutes') {\n <div class=\"grid grid-cols-1 gap-3\">\n <div class=\"grid grid-cols-4 md:grid-cols-5 gap-3\">\n @for (minute of minuteOptions(); track minute) {\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)\">\n {{ minute }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n</ion-content>", 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType", "spxName"], outputs: ["spxClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
517
882
  }
518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputTimeModalComponent, decorators: [{
883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputTimeModalComponent, decorators: [{
519
884
  type: Component,
520
885
  args: [{ selector: 'spx-input-time-modal', imports: [
521
886
  FontAwesomeModule,
@@ -531,23 +896,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImpor
531
896
  class SpxInputTimeComponent {
532
897
  constructor(modalController) {
533
898
  this.modalController = modalController;
534
- this.spxName = input();
535
- this.spxAutofocus = input(false);
536
- this.spxInputMode = input();
537
- this.spxPattern = input();
538
- this.spxSuggestions = input([]);
539
- this.spxReadonly = input(undefined);
540
- this.spxValidators = input();
541
- this.spxCapitalize = input(false);
542
- this.value = model.required();
899
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
900
+ this.spxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "spxAutofocus" }] : []));
901
+ this.spxInputMode = input(...(ngDevMode ? [undefined, { debugName: "spxInputMode" }] : []));
902
+ this.spxPattern = input(...(ngDevMode ? [undefined, { debugName: "spxPattern" }] : []));
903
+ this.spxSuggestions = input([], ...(ngDevMode ? [{ debugName: "spxSuggestions" }] : []));
904
+ this.spxReadonly = input(undefined, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
905
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
906
+ this.spxCapitalize = input(false, ...(ngDevMode ? [{ debugName: "spxCapitalize" }] : []));
907
+ this.value = model.required(...(ngDevMode ? [{ debugName: "value" }] : []));
543
908
  this.inputRef = viewChild.required('input');
544
909
  this.severitySuccess = SpxSeverityEnum.success;
545
- this.selectedHour = signal(null);
546
- this.selectedMinute = signal(null);
547
- this.formattedHour = computed(() => this.selectedHour() !== null && this.selectedHour() < 10 ? `0${this.selectedHour()}` : this.selectedHour());
548
- this.formattedMinute = computed(() => this.selectedMinute() !== null && this.selectedMinute() < 10 ? `0${this.selectedMinute()}` : this.selectedMinute());
549
- this.hour = computed(() => this.value()?.value ? DateTime.fromISO(this.value().value).hour : null);
550
- this.minute = computed(() => this.value()?.value ? DateTime.fromISO(this.value().value).minute : null);
910
+ this.selectedHour = signal(null, ...(ngDevMode ? [{ debugName: "selectedHour" }] : []));
911
+ this.selectedMinute = signal(null, ...(ngDevMode ? [{ debugName: "selectedMinute" }] : []));
912
+ this.formattedHour = computed(() => this.selectedHour() !== null && this.selectedHour() < 10 ? `0${this.selectedHour()}` : this.selectedHour(), ...(ngDevMode ? [{ debugName: "formattedHour" }] : []));
913
+ this.formattedMinute = computed(() => this.selectedMinute() !== null && this.selectedMinute() < 10 ? `0${this.selectedMinute()}` : this.selectedMinute(), ...(ngDevMode ? [{ debugName: "formattedMinute" }] : []));
914
+ this.hour = computed(() => this.value()?.value ? DateTime.fromISO(this.value().value).hour : null, ...(ngDevMode ? [{ debugName: "hour" }] : []));
915
+ this.minute = computed(() => this.value()?.value ? DateTime.fromISO(this.value().value).minute : null, ...(ngDevMode ? [{ debugName: "minute" }] : []));
551
916
  }
552
917
  ngOnInit() {
553
918
  this.componentDidLoad();
@@ -605,294 +970,59 @@ class SpxInputTimeComponent {
605
970
  });
606
971
  }
607
972
  }
608
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputTimeComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
609
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.1", type: SpxInputTimeComponent, isStandalone: true, selector: "spx-input-time", 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 }, 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 }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"relative text-black\">\n <div class=\"flex items-center justify-around gap-3\">\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('hours')\">{{ formattedHour() ?? '--' }}</div>\n <div class=\"text-gray text-xl\">:</div>\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('minutes')\">{{ formattedMinute() ?? '--' }}</div>\n </div>\n</div>", styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
973
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputTimeComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
974
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.2", type: SpxInputTimeComponent, isStandalone: true, selector: "spx-input-time", 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 }, 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 }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"relative text-black\">\n <div class=\"flex items-center justify-around gap-3\">\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('hours')\">{{ formattedHour() ?? '--' }}</div>\n <div class=\"text-gray text-xl\">:</div>\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('minutes')\">{{ formattedMinute() ?? '--' }}</div>\n </div>\n</div>", styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
610
975
  }
611
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputTimeComponent, decorators: [{
976
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputTimeComponent, decorators: [{
612
977
  type: Component,
613
978
  args: [{ selector: 'spx-input-time', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative text-black\">\n <div class=\"flex items-center justify-around gap-3\">\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('hours')\">{{ formattedHour() ?? '--' }}</div>\n <div class=\"text-gray text-xl\">:</div>\n <div class=\"grow rounded bg-gray-100 p-3 text-xl text-center font-bold\" (click)=\"openDialog('minutes')\">{{ formattedMinute() ?? '--' }}</div>\n </div>\n</div>", styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"] }]
614
979
  }], ctorParameters: () => [{ type: i1$2.ModalController }] });
615
980
 
616
- var stepType;
617
- (function (stepType) {
618
- stepType["years"] = "years";
619
- stepType["months"] = "months";
620
- stepType["days"] = "days";
621
- })(stepType || (stepType = {}));
622
- class SpxInputDateComponent {
623
- constructor() {
624
- this.spxMax = input.required();
625
- this.spxMin = input.required();
626
- this.spxReadonly = input();
627
- this.spxValidators = input();
628
- this.spxAutoFocus = input(false);
629
- this.value = model({
630
- description: "",
631
- value: "",
632
- });
633
- this.spxSelectedStep = signal(stepType.years);
634
- this.spxSelectDay = input(false);
635
- this.spxSelectMonth = input(true);
636
- this.selectedYear = signal(null);
637
- this.selectedMonth = signal(null);
638
- this.selectedDay = signal(null);
639
- this.yearInputComponent = viewChild.required(stepType.years);
640
- this.monthInputComponent = viewChild.required(stepType.months);
641
- this.dayInputComponent = viewChild.required(stepType.days);
642
- this.spxElementId = input();
643
- this.selectedInputService = inject(SelectedInputService);
644
- this.spxIsFocused = signal(false);
645
- this.isInternalUpdate = signal(false);
646
- this.spxSuggestionC = computed(() => {
647
- switch (this.spxSelectedStep()) {
648
- case stepType.years:
649
- return this.spxSuggestions().years;
650
- case stepType.months:
651
- return [...this.spxSuggestions().months];
652
- case stepType.days:
653
- return [...this.spxSuggestions().days];
654
- }
655
- });
656
- this.spxSuggestions = input({
657
- years: [],
658
- months: [{
659
- description: 'Jan',
660
- value: 1,
661
- }, {
662
- description: 'Feb',
663
- value: 2,
664
- }, {
665
- description: 'Mar',
666
- value: 3,
667
- }, {
668
- description: 'Apr',
669
- value: 4,
670
- }, {
671
- description: 'May',
672
- value: 5,
673
- }, {
674
- description: 'Jun',
675
- value: 6,
676
- }, {
677
- description: 'Jul',
678
- value: 7,
679
- }, {
680
- description: 'Aug',
681
- value: 8,
682
- }, {
683
- description: 'Sep',
684
- value: 9,
685
- }, {
686
- description: 'Oct',
687
- value: 10,
688
- }, {
689
- description: 'Nov',
690
- value: 11,
691
- }, {
692
- description: 'Dec',
693
- value: 12,
694
- }],
695
- days: [],
696
- });
697
- }
698
- handleFocus(selectedStep) {
699
- switch (selectedStep) {
700
- case stepType.years:
701
- this.spxSelectedStep.set(stepType.years);
702
- this.yearInputComponent().nativeElement.focus();
703
- break;
704
- case stepType.months:
705
- this.spxSelectedStep.set(stepType.months);
706
- this.monthInputComponent().nativeElement.focus();
707
- break;
708
- case stepType.days:
709
- this.spxSelectedStep.set(stepType.days);
710
- this.dayInputComponent().nativeElement.focus();
711
- break;
712
- }
713
- }
714
- onModelChange(newValue, selectedStep) {
715
- this.isInternalUpdate.set(true);
716
- const parsedValue = +newValue; // Convert to number
717
- if (parsedValue == 0)
718
- return;
719
- switch (selectedStep) {
720
- case stepType.years:
721
- this.selectedYear.set(parsedValue);
722
- if (parsedValue > 999) {
723
- this.spxSelectedStep.set(stepType.months);
724
- this.monthInputComponent().nativeElement.focus();
725
- }
726
- break;
727
- case stepType.months:
728
- this.selectedMonth.set(parsedValue);
729
- break;
730
- case stepType.days:
731
- this.selectedDay.set(parsedValue);
732
- break;
733
- }
734
- this.updateValueAndEmit();
735
- this.isInternalUpdate.set(false);
736
- }
737
- ngOnInit() {
738
- this.suggestYears();
739
- this.setValue();
740
- if (this.spxAutoFocus()) {
741
- this.handleFocus("years");
742
- }
743
- // Filter updates based on focus state
744
- this.selectedInputService.focusedElement$
745
- .pipe(filter((focusedId) => focusedId === this.spxElementId()))
746
- .subscribe(() => {
747
- this.spxIsFocused.set(true); // Update only if focused
748
- this.handleFocus(this.spxSelectedStep());
749
- });
750
- }
751
- ngOnChanges() {
752
- if (!this.isInternalUpdate()) {
753
- this.setValue();
754
- }
755
- }
756
- setValue() {
757
- if (valuePairToValue(this.value())) {
758
- const parsedValue = DateTime.fromISO(valuePairToValue(this.value()));
759
- if (this.selectedYear() && this.selectedYear() < 999) {
760
- return;
761
- }
762
- this.selectedYear.set(parsedValue.year);
763
- this.selectedMonth.set(parsedValue.month);
764
- this.selectedDay.set(parsedValue.day);
765
- }
766
- }
767
- handleSuggestionClick(value) {
768
- switch (this.spxSelectedStep()) {
769
- case stepType.years:
770
- this.selectedYear.set(value);
771
- break;
772
- case stepType.months:
773
- this.selectedMonth.set(value);
774
- break;
775
- case stepType.days:
776
- this.selectedDay.set(value);
777
- break;
778
- }
779
- this.updateValueAndEmit();
780
- this.changeSelectedStep();
781
- }
782
- // Handle keyboard navigation (Tab and Shift + Tab)
783
- handleTabKey(event) {
784
- if (event.key === 'Tab') {
785
- this.changeSelectedStep();
786
- event.preventDefault(); // Prevent default tab behavior
787
- }
788
- }
789
- updateValueAndEmit() {
790
- if (this.selectedYear() && this.selectedMonth()) {
791
- 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()}` : ``}`;
792
- const parsedValue = DateTime.fromISO(concatenatedValue);
793
- this.value.set({ value: parsedValue.toISO(), description: parsedValue.toISO() });
794
- }
795
- }
796
- changeSelectedStep() {
797
- switch (this.spxSelectedStep()) {
798
- case stepType.years:
799
- if (this.spxSelectMonth()) {
800
- this.spxSelectedStep.set(stepType.months);
801
- this.monthInputComponent().nativeElement.focus();
802
- }
803
- else {
804
- this.spxSelectedStep.set(stepType.years);
805
- this.yearInputComponent().nativeElement.focus();
806
- }
807
- break;
808
- case stepType.months:
809
- if (this.spxSelectDay()) {
810
- this.spxSelectedStep.set(stepType.days);
811
- this.dayInputComponent().nativeElement.focus();
812
- }
813
- else {
814
- this.spxSelectedStep.set(stepType.years);
815
- this.yearInputComponent().nativeElement.focus();
816
- }
817
- break;
818
- case stepType.days:
819
- this.spxSelectedStep.set(stepType.years);
820
- this.yearInputComponent().nativeElement.focus();
821
- break;
822
- }
823
- }
824
- suggestYears() {
825
- this.spxSuggestions().years = [];
826
- for (let year = DateTime.fromISO(this.spxMin()).year; year <= DateTime.fromISO(this.spxMax()).year; year++) {
827
- this.spxSuggestions().years.push({
828
- description: `'${year.toString().substring(2, 4)}`,
829
- value: year,
830
- });
831
- }
832
- }
833
- handleClear() {
834
- this.spxSelectedStep.set(stepType.years);
835
- this.selectedYear.set(null);
836
- this.selectedMonth.set(null);
837
- this.selectedDay.set(null);
838
- }
839
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
840
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.1", type: SpxInputDateComponent, isStandalone: true, selector: "spx-input-date", inputs: { spxMax: { classPropertyName: "spxMax", publicName: "spxMax", isSignal: true, isRequired: true, transformFunction: null }, spxMin: { classPropertyName: "spxMin", publicName: "spxMin", isSignal: true, isRequired: true, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, spxAutoFocus: { classPropertyName: "spxAutoFocus", publicName: "spxAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxSelectDay: { classPropertyName: "spxSelectDay", publicName: "spxSelectDay", isSignal: true, isRequired: false, transformFunction: null }, spxSelectMonth: { classPropertyName: "spxSelectMonth", publicName: "spxSelectMonth", isSignal: true, isRequired: false, transformFunction: null }, spxElementId: { classPropertyName: "spxElementId", publicName: "spxElementId", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "keydown": "handleTabKey($event)" } }, viewQueries: [{ propertyName: "yearInputComponent", first: true, predicate: stepType.years, descendants: true, isSignal: true }, { propertyName: "monthInputComponent", first: true, predicate: stepType.months, descendants: true, isSignal: true }, { propertyName: "dayInputComponent", first: true, predicate: stepType.days, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class='spx-input-date__controls'>\n <input #years\n class='spx-input-date__input'\n [ngModel]=\"selectedYear()\"\n (ngModelChange)=\"onModelChange($event, 'years')\"\n [attr.type]=\"'number'\"\n (click)=\"this.handleFocus('years')\"\n [attr.min]=\"1900\"\n [attr.max]=\"2100\"\n [attr.step]=\"1\"\n />\n <div class='spx-input-date__control-label'>Year</div>\n @if (this.spxSelectMonth()) {\n <input #months\n class='spx-input-date__input'\n [ngModel]=\"selectedMonth()\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n (click)=\"this.handleFocus('months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input #days\n class='spx-input-date__input'\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n (click)=\"this.handleFocus('days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value && this.spxSelectedStep() === 'years') ||\n (selectedMonth() === valuePair.value && this.spxSelectedStep() === 'months') || \n (selectedDay() === valuePair.value && this.spxSelectedStep() === 'days')\"\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\n }\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"], dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }, { 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 }); }
841
- }
842
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputDateComponent, decorators: [{
843
- type: Component,
844
- args: [{ selector: 'spx-input-date', standalone: true, imports: [
845
- SpxSuggestionComponent,
846
- FormsModule
847
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class='spx-input-date__controls'>\n <input #years\n class='spx-input-date__input'\n [ngModel]=\"selectedYear()\"\n (ngModelChange)=\"onModelChange($event, 'years')\"\n [attr.type]=\"'number'\"\n (click)=\"this.handleFocus('years')\"\n [attr.min]=\"1900\"\n [attr.max]=\"2100\"\n [attr.step]=\"1\"\n />\n <div class='spx-input-date__control-label'>Year</div>\n @if (this.spxSelectMonth()) {\n <input #months\n class='spx-input-date__input'\n [ngModel]=\"selectedMonth()\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n (click)=\"this.handleFocus('months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input #days\n class='spx-input-date__input'\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n (click)=\"this.handleFocus('days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value && this.spxSelectedStep() === 'years') ||\n (selectedMonth() === valuePair.value && this.spxSelectedStep() === 'months') || \n (selectedDay() === valuePair.value && this.spxSelectedStep() === 'days')\"\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\n }\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"] }]
848
- }], propDecorators: { handleTabKey: [{
849
- type: HostListener,
850
- args: ['keydown', ['$event']]
851
- }] } });
852
-
853
981
  class SpxInputComponent {
854
982
  constructor() {
855
- this.mappedName = computed(() => this.spxName() ?? undefined);
856
- this.mappedReadonly = computed(() => this.spxReadonly() === true ? true : undefined);
857
- this.spxSpeedDial = input([]);
858
- this.spxLabel = input('label');
859
- this.spxMax = input();
860
- this.spxMin = input();
861
- this.spxName = input();
862
- this.spxReadonly = input(false);
863
- this.spxAutocomplete = input();
864
- this.spxAutofocus = input(false);
865
- this.spxInputMode = input();
866
- this.spxPattern = input();
867
- this.spxRequired = input(false);
868
- this.spxSelectMonth = input(true);
869
- this.spxSelectDay = input(true);
870
- this.spxShowEdit = input(false);
871
- this.spxShowHelp = input(false);
872
- this.spxShowLabel = input(true);
873
- this.spxCompact = input(false);
874
- this.spxShowClear = input(true);
875
- this.spxShowSearch = input(false);
876
- this.spxAlert = input();
877
- this.spxShowValidationMessages = input(false);
878
- this.spxStep = input();
879
- this.spxSuggestions = input([]);
880
- this.spxType = input(SpxInputTypeEnum.text);
881
- this.spxValidators = input();
882
- this.spxCapitalize = input(false);
883
- this.value = signal({ value: null, description: null });
983
+ this.mappedName = computed(() => this.spxName() ?? undefined, ...(ngDevMode ? [{ debugName: "mappedName" }] : []));
984
+ this.mappedReadonly = computed(() => this.spxReadonly() === true ? true : undefined, ...(ngDevMode ? [{ debugName: "mappedReadonly" }] : []));
985
+ this.spxSpeedDial = input([], ...(ngDevMode ? [{ debugName: "spxSpeedDial" }] : []));
986
+ this.spxLabel = input('label', ...(ngDevMode ? [{ debugName: "spxLabel" }] : []));
987
+ this.spxMax = input(...(ngDevMode ? [undefined, { debugName: "spxMax" }] : []));
988
+ this.spxMin = input(...(ngDevMode ? [undefined, { debugName: "spxMin" }] : []));
989
+ this.spxName = input(...(ngDevMode ? [undefined, { debugName: "spxName" }] : []));
990
+ this.spxReadonly = input(false, ...(ngDevMode ? [{ debugName: "spxReadonly" }] : []));
991
+ this.spxAutocomplete = input(...(ngDevMode ? [undefined, { debugName: "spxAutocomplete" }] : []));
992
+ this.spxAutofocus = input(false, ...(ngDevMode ? [{ debugName: "spxAutofocus" }] : []));
993
+ this.spxInputMode = input(...(ngDevMode ? [undefined, { debugName: "spxInputMode" }] : []));
994
+ this.spxPattern = input(...(ngDevMode ? [undefined, { debugName: "spxPattern" }] : []));
995
+ this.spxRequired = input(false, ...(ngDevMode ? [{ debugName: "spxRequired" }] : []));
996
+ this.spxSelectMonth = input(true, ...(ngDevMode ? [{ debugName: "spxSelectMonth" }] : []));
997
+ this.spxSelectDay = input(true, ...(ngDevMode ? [{ debugName: "spxSelectDay" }] : []));
998
+ this.spxShowEdit = input(false, ...(ngDevMode ? [{ debugName: "spxShowEdit" }] : []));
999
+ this.spxShowHelp = input(false, ...(ngDevMode ? [{ debugName: "spxShowHelp" }] : []));
1000
+ this.spxShowLabel = input(true, ...(ngDevMode ? [{ debugName: "spxShowLabel" }] : []));
1001
+ this.spxCompact = input(false, ...(ngDevMode ? [{ debugName: "spxCompact" }] : []));
1002
+ this.spxShowClear = input(true, ...(ngDevMode ? [{ debugName: "spxShowClear" }] : []));
1003
+ this.spxShowSearch = input(false, ...(ngDevMode ? [{ debugName: "spxShowSearch" }] : []));
1004
+ this.spxAlert = input(...(ngDevMode ? [undefined, { debugName: "spxAlert" }] : []));
1005
+ this.spxShowValidationMessages = input(false, ...(ngDevMode ? [{ debugName: "spxShowValidationMessages" }] : []));
1006
+ this.spxStep = input(...(ngDevMode ? [undefined, { debugName: "spxStep" }] : []));
1007
+ this.spxSuggestions = input([], ...(ngDevMode ? [{ debugName: "spxSuggestions" }] : []));
1008
+ this.spxType = input(SpxInputTypeEnum.text, ...(ngDevMode ? [{ debugName: "spxType" }] : []));
1009
+ this.spxValidators = input(...(ngDevMode ? [undefined, { debugName: "spxValidators" }] : []));
1010
+ this.spxCapitalize = input(false, ...(ngDevMode ? [{ debugName: "spxCapitalize" }] : []));
1011
+ this.spxCycleConfig = input(...(ngDevMode ? [undefined, { debugName: "spxCycleConfig" }] : []));
1012
+ this.value = signal({ value: null, description: null }, ...(ngDevMode ? [{ debugName: "value" }] : []));
884
1013
  this.spxClear = output();
885
1014
  this.spxEdit = output();
886
1015
  this.spxHelp = output();
887
1016
  this.spxSearch = output();
888
1017
  this.spxBlur = output();
889
- this.floatInput = viewChild("spxInputFloat");
890
- this.numberInput = viewChild("spxInputNumber");
891
- this.textInput = viewChild("spxInputText");
892
- this.timeInput = viewChild("spxInputTime");
893
- this.radioInput = viewChild("spxInputRadio");
894
- this.dateInput = viewChild("spxInputDate");
895
- this.spxElementId = signal(0);
1018
+ this.floatInput = viewChild("spxInputFloat", ...(ngDevMode ? [{ debugName: "floatInput" }] : []));
1019
+ this.numberInput = viewChild("spxInputNumber", ...(ngDevMode ? [{ debugName: "numberInput" }] : []));
1020
+ this.textInput = viewChild("spxInputText", ...(ngDevMode ? [{ debugName: "textInput" }] : []));
1021
+ this.timeInput = viewChild("spxInputTime", ...(ngDevMode ? [{ debugName: "timeInput" }] : []));
1022
+ this.radioInput = viewChild("spxInputRadio", ...(ngDevMode ? [{ debugName: "radioInput" }] : []));
1023
+ this.dateInput = viewChild("spxInputDate", ...(ngDevMode ? [{ debugName: "dateInput" }] : []));
1024
+ this.cycleInput = viewChild("spxInputCycle", ...(ngDevMode ? [{ debugName: "cycleInput" }] : []));
1025
+ this.spxElementId = signal(0, ...(ngDevMode ? [{ debugName: "spxElementId" }] : []));
896
1026
  this.selectedInputService = inject(SelectedInputService);
897
1027
  this.onChange = () => { };
898
1028
  this.onTouched = () => { };
@@ -947,6 +1077,10 @@ class SpxInputComponent {
947
1077
  case SpxInputTypeEnum.overlayNumber:
948
1078
  this.textInput()?.spxSetFocus();
949
1079
  break;
1080
+ case SpxInputTypeEnum.cycle:
1081
+ case SpxInputTypeEnum.cycleNumeric:
1082
+ this.cycleInput()?.spxSetFocus();
1083
+ break;
950
1084
  case SpxInputTypeEnum.number:
951
1085
  this.numberInput()?.spxSetFocus();
952
1086
  break;
@@ -980,21 +1114,22 @@ class SpxInputComponent {
980
1114
  registerOnTouched(fn) {
981
1115
  this.onTouched = fn;
982
1116
  }
983
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
984
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.1", type: SpxInputComponent, isStandalone: true, selector: "spx-input", inputs: { spxSpeedDial: { classPropertyName: "spxSpeedDial", publicName: "spxSpeedDial", isSignal: true, isRequired: false, transformFunction: null }, spxLabel: { classPropertyName: "spxLabel", publicName: "spxLabel", isSignal: true, isRequired: false, transformFunction: null }, spxMax: { classPropertyName: "spxMax", publicName: "spxMax", isSignal: true, isRequired: false, transformFunction: null }, spxMin: { classPropertyName: "spxMin", publicName: "spxMin", isSignal: true, isRequired: false, transformFunction: null }, spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxAutocomplete: { classPropertyName: "spxAutocomplete", publicName: "spxAutocomplete", 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 }, spxPattern: { classPropertyName: "spxPattern", publicName: "spxPattern", isSignal: true, isRequired: false, transformFunction: null }, spxRequired: { classPropertyName: "spxRequired", publicName: "spxRequired", isSignal: true, isRequired: false, transformFunction: null }, spxSelectMonth: { classPropertyName: "spxSelectMonth", publicName: "spxSelectMonth", isSignal: true, isRequired: false, transformFunction: null }, spxSelectDay: { classPropertyName: "spxSelectDay", publicName: "spxSelectDay", isSignal: true, isRequired: false, transformFunction: null }, spxShowEdit: { classPropertyName: "spxShowEdit", publicName: "spxShowEdit", isSignal: true, isRequired: false, transformFunction: null }, spxShowHelp: { classPropertyName: "spxShowHelp", publicName: "spxShowHelp", isSignal: true, isRequired: false, transformFunction: null }, spxShowLabel: { classPropertyName: "spxShowLabel", publicName: "spxShowLabel", isSignal: true, isRequired: false, transformFunction: null }, spxCompact: { classPropertyName: "spxCompact", publicName: "spxCompact", isSignal: true, isRequired: false, transformFunction: null }, spxShowClear: { classPropertyName: "spxShowClear", publicName: "spxShowClear", isSignal: true, isRequired: false, transformFunction: null }, spxShowSearch: { classPropertyName: "spxShowSearch", publicName: "spxShowSearch", isSignal: true, isRequired: false, transformFunction: null }, spxAlert: { classPropertyName: "spxAlert", publicName: "spxAlert", isSignal: true, isRequired: false, transformFunction: null }, spxShowValidationMessages: { classPropertyName: "spxShowValidationMessages", publicName: "spxShowValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, spxStep: { classPropertyName: "spxStep", publicName: "spxStep", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null }, spxType: { classPropertyName: "spxType", publicName: "spxType", 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 } }, outputs: { spxClear: "spxClear", spxEdit: "spxEdit", spxHelp: "spxHelp", spxSearch: "spxSearch", spxBlur: "spxBlur" }, host: { listeners: { "spxChange": "handleChangeEvent($event)", "focusout": "_handleBlurEvent()" } }, providers: [
1117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SpxInputComponent, isStandalone: true, selector: "spx-input", inputs: { spxSpeedDial: { classPropertyName: "spxSpeedDial", publicName: "spxSpeedDial", isSignal: true, isRequired: false, transformFunction: null }, spxLabel: { classPropertyName: "spxLabel", publicName: "spxLabel", isSignal: true, isRequired: false, transformFunction: null }, spxMax: { classPropertyName: "spxMax", publicName: "spxMax", isSignal: true, isRequired: false, transformFunction: null }, spxMin: { classPropertyName: "spxMin", publicName: "spxMin", isSignal: true, isRequired: false, transformFunction: null }, spxName: { classPropertyName: "spxName", publicName: "spxName", isSignal: true, isRequired: false, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxAutocomplete: { classPropertyName: "spxAutocomplete", publicName: "spxAutocomplete", 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 }, spxPattern: { classPropertyName: "spxPattern", publicName: "spxPattern", isSignal: true, isRequired: false, transformFunction: null }, spxRequired: { classPropertyName: "spxRequired", publicName: "spxRequired", isSignal: true, isRequired: false, transformFunction: null }, spxSelectMonth: { classPropertyName: "spxSelectMonth", publicName: "spxSelectMonth", isSignal: true, isRequired: false, transformFunction: null }, spxSelectDay: { classPropertyName: "spxSelectDay", publicName: "spxSelectDay", isSignal: true, isRequired: false, transformFunction: null }, spxShowEdit: { classPropertyName: "spxShowEdit", publicName: "spxShowEdit", isSignal: true, isRequired: false, transformFunction: null }, spxShowHelp: { classPropertyName: "spxShowHelp", publicName: "spxShowHelp", isSignal: true, isRequired: false, transformFunction: null }, spxShowLabel: { classPropertyName: "spxShowLabel", publicName: "spxShowLabel", isSignal: true, isRequired: false, transformFunction: null }, spxCompact: { classPropertyName: "spxCompact", publicName: "spxCompact", isSignal: true, isRequired: false, transformFunction: null }, spxShowClear: { classPropertyName: "spxShowClear", publicName: "spxShowClear", isSignal: true, isRequired: false, transformFunction: null }, spxShowSearch: { classPropertyName: "spxShowSearch", publicName: "spxShowSearch", isSignal: true, isRequired: false, transformFunction: null }, spxAlert: { classPropertyName: "spxAlert", publicName: "spxAlert", isSignal: true, isRequired: false, transformFunction: null }, spxShowValidationMessages: { classPropertyName: "spxShowValidationMessages", publicName: "spxShowValidationMessages", isSignal: true, isRequired: false, transformFunction: null }, spxStep: { classPropertyName: "spxStep", publicName: "spxStep", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null }, spxType: { classPropertyName: "spxType", publicName: "spxType", 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 }, spxCycleConfig: { classPropertyName: "spxCycleConfig", publicName: "spxCycleConfig", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { spxClear: "spxClear", spxEdit: "spxEdit", spxHelp: "spxHelp", spxSearch: "spxSearch", spxBlur: "spxBlur" }, host: { listeners: { "spxChange": "handleChangeEvent($event)", "focusout": "_handleBlurEvent()" } }, providers: [
985
1119
  {
986
1120
  provide: NG_VALUE_ACCESSOR,
987
1121
  useExisting: SpxInputComponent,
988
1122
  multi: true
989
1123
  }
990
- ], 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\n (spxClear)=\"this.handleClear()\"\n (spxEdit)=\"this.handleEdit()\"\n (spxHelp)=\"this.handleHelp()\"\n (spxSearch)=\"this.handleSearch()\"\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\n [spxAlert]=\"this.spxAlert()\"\n [spxCompact]=\"this.spxCompact()\"\n [spxLabel]=\"this.spxLabel()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.spxReadonly()\"\n [spxRequired]=\"this.spxRequired()\"\n [spxShowClear]=\"this.spxShowClear()\"\n [spxShowEdit]=\"this.spxShowEdit()\"\n [spxShowHelp]=\"this.spxShowHelp()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\n [spxValue]=\"this.value()\"\n>\n <div controls>\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\n this.spxType() === 'password') {\n <spx-input-text\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\n [spxSpeedDial]=\"this.spxSpeedDial()\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxCapitalize]=\"this.spxCapitalize()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxType]=\"this.spxType()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputText\n ></spx-input-text>\n } @if (this.spxType() === 'date') {\n <spx-input-date\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutoFocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxMax]=\"this.spxMax()!\"\n [spxMin]=\"this.spxMin()!\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSelectDay]=\"this.spxSelectDay()\"\n [spxSelectMonth]=\"this.spxSelectMonth()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputDate\n ></spx-input-date>\n } @if (this.spxType() === 'float') {\n <spx-input-float\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputFloat\n ></spx-input-float>\n } @if (this.spxType() === 'number') {\n <spx-input-number\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputNumber\n ></spx-input-number>\n } @if (this.spxType() === 'radio') {\n <spx-input-radio\n (valueChange)=\"handleChangeEvent($event)\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputRadio\n ></spx-input-radio>\n } @if (this.spxType() === 'time') {\n <spx-input-time\n (valueChange)=\"handleChangeEvent($event)\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputTime\n ></spx-input-time>\n }\n </div>\n <div validation-messages>\n <ng-content></ng-content>\n </div>\n</spx-input-box>\n", dependencies: [{ kind: "component", type: SpxInputBoxComponent, selector: "spx-input-box", inputs: ["spxCompact", "spxLabel", "spxName", "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: ["spxSpeedDial", "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 }); }
1124
+ ], 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 }, { propertyName: "cycleInput", first: true, predicate: ["spxInputCycle"], descendants: true, isSignal: true }], ngImport: i0, template: "<spx-input-box\n (spxClear)=\"this.handleClear()\"\n (spxEdit)=\"this.handleEdit()\"\n (spxHelp)=\"this.handleHelp()\"\n (spxSearch)=\"this.handleSearch()\"\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\n [spxAlert]=\"this.spxAlert()\"\n [spxCompact]=\"this.spxCompact()\"\n [spxLabel]=\"this.spxLabel()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.spxReadonly()\"\n [spxRequired]=\"this.spxRequired()\"\n [spxShowClear]=\"this.spxShowClear()\"\n [spxShowEdit]=\"this.spxShowEdit()\"\n [spxShowHelp]=\"this.spxShowHelp()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\n [spxValue]=\"this.value()\"\n>\n <div controls>\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\n this.spxType() === 'password') {\n <spx-input-text\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\n [spxSpeedDial]=\"this.spxSpeedDial()\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxCapitalize]=\"this.spxCapitalize()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxType]=\"this.spxType()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputText\n ></spx-input-text>\n } @if (this.spxType() === 'cycle' || this.spxType() === 'cycleNumeric') {\n <spx-input-cycle\n (valueChange)=\"handleChangeEvent($event)\"\n [spxCycleConfig]=\"this.spxCycleConfig()!\"\n [spxSpeedDial]=\"this.spxSpeedDial()\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxCapitalize]=\"this.spxCapitalize()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxType() === 'cycleNumeric' ? 'numeric' : 'text'\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxType]=\"this.spxType()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputText\n ></spx-input-cycle>\n } @if (this.spxType() === 'date') {\n <spx-input-date\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutoFocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxMax]=\"this.spxMax()!\"\n [spxMin]=\"this.spxMin()!\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSelectDay]=\"this.spxSelectDay()\"\n [spxSelectMonth]=\"this.spxSelectMonth()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputDate\n ></spx-input-date>\n } @if (this.spxType() === 'float') {\n <spx-input-float\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputFloat\n ></spx-input-float>\n } @if (this.spxType() === 'number') {\n <spx-input-number\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputNumber\n ></spx-input-number>\n } @if (this.spxType() === 'radio') {\n <spx-input-radio\n (valueChange)=\"handleChangeEvent($event)\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputRadio\n ></spx-input-radio>\n } @if (this.spxType() === 'time') {\n <spx-input-time\n (valueChange)=\"handleChangeEvent($event)\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputTime\n ></spx-input-time>\n }\n </div>\n <div validation-messages>\n <ng-content></ng-content>\n </div>\n</spx-input-box>\n", dependencies: [{ kind: "component", type: SpxInputBoxComponent, selector: "spx-input-box", inputs: ["spxCompact", "spxLabel", "spxName", "spxReadonly", "spxRequired", "spxShowClear", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxShowSearch", "spxShowValidationMessages", "spxAlert", "spxValue"], outputs: ["spxValueChange", "spxClear", "spxSearch", "spxEdit", "spxHelp", "spxSetIdInParent"] }, { kind: "component", type: SpxInputCycleComponent, selector: "spx-input-cycle", inputs: ["spxSpeedDial", "spxName", "spxAutofocus", "spxAutocomplete", "spxCycleConfig", "spxInputMode", "spxReadonly", "spxValidators", "spxCapitalize", "spxType", "spxWasInternalUpdate", "value", "spxElementId"], outputs: ["valueChange", "completeInput"] }, { 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: ["spxSpeedDial", "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 }); }
991
1125
  }
992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImport: i0, type: SpxInputComponent, decorators: [{
1126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SpxInputComponent, decorators: [{
993
1127
  type: Component,
994
1128
  args: [{ selector: 'spx-input', host: {
995
1129
  '(spxChange)': 'handleChangeEvent($event)'
996
1130
  }, imports: [
997
1131
  SpxInputBoxComponent,
1132
+ SpxInputCycleComponent,
998
1133
  SpxInputDateComponent,
999
1134
  SpxInputFloatComponent,
1000
1135
  SpxInputNumberComponent,
@@ -1007,7 +1142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.1", ngImpor
1007
1142
  useExisting: SpxInputComponent,
1008
1143
  multi: true
1009
1144
  }
1010
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<spx-input-box\n (spxClear)=\"this.handleClear()\"\n (spxEdit)=\"this.handleEdit()\"\n (spxHelp)=\"this.handleHelp()\"\n (spxSearch)=\"this.handleSearch()\"\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\n [spxAlert]=\"this.spxAlert()\"\n [spxCompact]=\"this.spxCompact()\"\n [spxLabel]=\"this.spxLabel()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.spxReadonly()\"\n [spxRequired]=\"this.spxRequired()\"\n [spxShowClear]=\"this.spxShowClear()\"\n [spxShowEdit]=\"this.spxShowEdit()\"\n [spxShowHelp]=\"this.spxShowHelp()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\n [spxValue]=\"this.value()\"\n>\n <div controls>\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\n this.spxType() === 'password') {\n <spx-input-text\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\n [spxSpeedDial]=\"this.spxSpeedDial()\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxCapitalize]=\"this.spxCapitalize()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxType]=\"this.spxType()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputText\n ></spx-input-text>\n } @if (this.spxType() === 'date') {\n <spx-input-date\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutoFocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxMax]=\"this.spxMax()!\"\n [spxMin]=\"this.spxMin()!\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSelectDay]=\"this.spxSelectDay()\"\n [spxSelectMonth]=\"this.spxSelectMonth()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputDate\n ></spx-input-date>\n } @if (this.spxType() === 'float') {\n <spx-input-float\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputFloat\n ></spx-input-float>\n } @if (this.spxType() === 'number') {\n <spx-input-number\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputNumber\n ></spx-input-number>\n } @if (this.spxType() === 'radio') {\n <spx-input-radio\n (valueChange)=\"handleChangeEvent($event)\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputRadio\n ></spx-input-radio>\n } @if (this.spxType() === 'time') {\n <spx-input-time\n (valueChange)=\"handleChangeEvent($event)\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputTime\n ></spx-input-time>\n }\n </div>\n <div validation-messages>\n <ng-content></ng-content>\n </div>\n</spx-input-box>\n" }]
1145
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<spx-input-box\n (spxClear)=\"this.handleClear()\"\n (spxEdit)=\"this.handleEdit()\"\n (spxHelp)=\"this.handleHelp()\"\n (spxSearch)=\"this.handleSearch()\"\n (spxSetIdInParent)=\"handleSpxElementIdSet($event)\"\n [spxAlert]=\"this.spxAlert()\"\n [spxCompact]=\"this.spxCompact()\"\n [spxLabel]=\"this.spxLabel()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.spxReadonly()\"\n [spxRequired]=\"this.spxRequired()\"\n [spxShowClear]=\"this.spxShowClear()\"\n [spxShowEdit]=\"this.spxShowEdit()\"\n [spxShowHelp]=\"this.spxShowHelp()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxShowSearch]=\"this.spxShowSearch() ? this.spxShowSearch() : this.spxType() === 'autocomplete'\"\n [spxShowValidationMessages]=\"this.spxShowValidationMessages()\"\n [spxValue]=\"this.value()\"\n>\n <div controls>\n @if (this.spxType() === 'autocomplete' || this.spxType() === 'overlay' ||\n this.spxType() === 'overlaynumber' || this.spxType() === 'text' ||\n this.spxType() === 'password') {\n <spx-input-text\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutocomplete]=\"this.spxAutocomplete() ? this.spxAutocomplete() : undefined\"\n [spxSpeedDial]=\"this.spxSpeedDial()\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxCapitalize]=\"this.spxCapitalize()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxType() === 'overlaynumber' ? 'numeric' : this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxPattern]=\"this.spxType() === 'overlaynumber' ? '[0-9]*' : this.spxPattern()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxType]=\"this.spxType()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputText\n ></spx-input-text>\n } @if (this.spxType() === 'cycle' || this.spxType() === 'cycleNumeric') {\n <spx-input-cycle\n (valueChange)=\"handleChangeEvent($event)\"\n [spxCycleConfig]=\"this.spxCycleConfig()!\"\n [spxSpeedDial]=\"this.spxSpeedDial()\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxCapitalize]=\"this.spxCapitalize()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxType() === 'cycleNumeric' ? 'numeric' : 'text'\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxType]=\"this.spxType()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputText\n ></spx-input-cycle>\n } @if (this.spxType() === 'date') {\n <spx-input-date\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutoFocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxMax]=\"this.spxMax()!\"\n [spxMin]=\"this.spxMin()!\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxSelectDay]=\"this.spxSelectDay()\"\n [spxSelectMonth]=\"this.spxSelectMonth()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputDate\n ></spx-input-date>\n } @if (this.spxType() === 'float') {\n <spx-input-float\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputFloat\n ></spx-input-float>\n } @if (this.spxType() === 'number') {\n <spx-input-number\n (valueChange)=\"handleChangeEvent($event)\"\n [spxAutofocus]=\"this.spxAutofocus()\"\n [spxElementId]=\"this.spxElementId()\"\n [spxInputMode]=\"this.spxInputMode()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxStep]=\"this.spxStep()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputNumber\n ></spx-input-number>\n } @if (this.spxType() === 'radio') {\n <spx-input-radio\n (valueChange)=\"handleChangeEvent($event)\"\n [spxElementId]=\"this.spxElementId()\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxShowLabel]=\"this.spxShowLabel()\"\n [spxSuggestions]=\"this.spxSuggestions()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputRadio\n ></spx-input-radio>\n } @if (this.spxType() === 'time') {\n <spx-input-time\n (valueChange)=\"handleChangeEvent($event)\"\n [spxName]=\"this.mappedName()\"\n [spxReadonly]=\"this.mappedReadonly()\"\n [spxValidators]=\"this.spxValidators()\"\n [value]=\"value()\"\n #spxInputTime\n ></spx-input-time>\n }\n </div>\n <div validation-messages>\n <ng-content></ng-content>\n </div>\n</spx-input-box>\n" }]
1011
1146
  }], propDecorators: { _handleBlurEvent: [{
1012
1147
  type: HostListener,
1013
1148
  args: ['focusout']