@softpak/components 18.6.9 → 18.6.10

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 (156) hide show
  1. package/README.md +24 -24
  2. package/esm2022/spx-alert/public-api.mjs +1 -1
  3. package/esm2022/spx-alert/spx-alert.component.mjs +115 -115
  4. package/esm2022/spx-alert/spx-alert.interface.mjs +1 -1
  5. package/esm2022/spx-app-configuration/public-api.mjs +1 -1
  6. package/esm2022/spx-app-configuration/spx-app-alert.interface.mjs +1 -1
  7. package/esm2022/spx-app-configuration/spx-app-bundle-set.interface.mjs +1 -1
  8. package/esm2022/spx-app-configuration/spx-app-channel-type.enum.mjs +1 -1
  9. package/esm2022/spx-app-configuration/spx-app-channel.interface.mjs +1 -1
  10. package/esm2022/spx-app-configuration/spx-app-config.interface.mjs +1 -1
  11. package/esm2022/spx-app-configuration/spx-app-id.enum.mjs +1 -1
  12. package/esm2022/spx-app-configuration/spx-app-lang.enum.mjs +1 -1
  13. package/esm2022/spx-app-configuration/spx-app-release-note.interface.mjs +1 -1
  14. package/esm2022/spx-app-expiry/public-api.mjs +1 -1
  15. package/esm2022/spx-app-expiry/spx-app-expiry.component.mjs +57 -57
  16. package/esm2022/spx-app-expiry/spx-app-expiry.interface.mjs +1 -1
  17. package/esm2022/spx-app-expiry/spx-check-expiry-final-warning.interface.mjs +1 -1
  18. package/esm2022/spx-app-expiry/spx-check-expiry-happened.interface.mjs +1 -1
  19. package/esm2022/spx-app-expiry/spx-check-expiry-warning.interface.mjs +1 -1
  20. package/esm2022/spx-app-update/public-api.mjs +1 -1
  21. package/esm2022/spx-app-update/spx-app-update.component.mjs +59 -59
  22. package/esm2022/spx-button/public-api.mjs +1 -1
  23. package/esm2022/spx-button/spx-button.component.mjs +63 -63
  24. package/esm2022/spx-capitalize/public-api.mjs +1 -1
  25. package/esm2022/spx-capitalize/spx-capitalize.pipe.mjs +1 -1
  26. package/esm2022/spx-card/public-api.mjs +1 -1
  27. package/esm2022/spx-card/spx-card-grid.component.mjs +27 -27
  28. package/esm2022/spx-card/spx-card-item.component.mjs +69 -69
  29. package/esm2022/spx-card/spx-card-line.component.mjs +77 -77
  30. package/esm2022/spx-card/spx-card.component.mjs +51 -51
  31. package/esm2022/spx-change-details/public-api.mjs +1 -1
  32. package/esm2022/spx-change-details/spx-change-details-value.interface.mjs +1 -1
  33. package/esm2022/spx-change-details/spx-change-details.component.mjs +3 -3
  34. package/esm2022/spx-channel-selection/public-api.mjs +1 -1
  35. package/esm2022/spx-channel-selection/src/spx-channel-indicator.component.mjs +13 -13
  36. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +13 -13
  37. package/esm2022/spx-check-digit/public-api.mjs +1 -1
  38. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +3 -3
  39. package/esm2022/spx-form-section/public-api.mjs +1 -1
  40. package/esm2022/spx-form-section/spx-form-section.component.mjs +21 -21
  41. package/esm2022/spx-form-view/public-api.mjs +1 -1
  42. package/esm2022/spx-form-view/spx-autocomplete-search.component.mjs +3 -3
  43. package/esm2022/spx-form-view/spx-form-button-type.enum.mjs +1 -1
  44. package/esm2022/spx-form-view/spx-form-button.interface.mjs +1 -1
  45. package/esm2022/spx-form-view/spx-form-field.interface.mjs +1 -1
  46. package/esm2022/spx-form-view/spx-form-section.interface.mjs +1 -1
  47. package/esm2022/spx-form-view/spx-form-view.component.mjs +163 -163
  48. package/esm2022/spx-form-view/spx-form.interface.mjs +1 -1
  49. package/esm2022/spx-helpers/calc-check-digit.function.mjs +1 -1
  50. package/esm2022/spx-helpers/public-api.mjs +1 -1
  51. package/esm2022/spx-helpers/spx-severity.enum.mjs +1 -1
  52. package/esm2022/spx-helpers/value-pair-to-value.function.mjs +1 -1
  53. package/esm2022/spx-inputs/public-api.mjs +1 -1
  54. package/esm2022/spx-inputs/spx-dropdown.component.mjs +33 -33
  55. package/esm2022/spx-inputs/spx-input-box.component.mjs +149 -149
  56. package/esm2022/spx-inputs/spx-input-date/spx-input-date.component.mjs +50 -17
  57. package/esm2022/spx-inputs/spx-input-float.component.mjs +51 -51
  58. package/esm2022/spx-inputs/spx-input-number.component.mjs +27 -27
  59. package/esm2022/spx-inputs/spx-input-radio.component.mjs +23 -23
  60. package/esm2022/spx-inputs/spx-input-text.component.mjs +63 -63
  61. package/esm2022/spx-inputs/spx-input-time-modal.component.mjs +77 -77
  62. package/esm2022/spx-inputs/spx-input-time.component.mjs +13 -13
  63. package/esm2022/spx-inputs/spx-input-type.enum.mjs +1 -1
  64. package/esm2022/spx-inputs/spx-input.component.mjs +219 -219
  65. package/esm2022/spx-inputs/spx-value-interface.mjs +1 -1
  66. package/esm2022/spx-navigation/public-api.mjs +1 -1
  67. package/esm2022/spx-navigation/spx-home-tile.component.mjs +39 -39
  68. package/esm2022/spx-navigation/spx-home-tiles.component.mjs +5 -5
  69. package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +1 -1
  70. package/esm2022/spx-navigation/spx-navigation.component.mjs +3 -3
  71. package/esm2022/spx-number-check/public-api.mjs +1 -1
  72. package/esm2022/spx-number-check/spx-number-check.component.mjs +77 -77
  73. package/esm2022/spx-pagination/public-api.mjs +1 -1
  74. package/esm2022/spx-pagination/spx-pagination.component.mjs +3 -3
  75. package/esm2022/spx-patch/patch-check.function.mjs +1 -1
  76. package/esm2022/spx-patch/public-api.mjs +1 -1
  77. package/esm2022/spx-patch/release-check.function.mjs +1 -1
  78. package/esm2022/spx-patch/spx-patch.component.mjs +25 -25
  79. package/esm2022/spx-progress-bar/public-api.mjs +1 -1
  80. package/esm2022/spx-progress-bar/spx-progress-bar.component.mjs +15 -15
  81. package/esm2022/spx-spinner/public-api.mjs +1 -1
  82. package/esm2022/spx-spinner/spx-spinner.component.mjs +143 -143
  83. package/esm2022/spx-stock-info/public-api.mjs +1 -1
  84. package/esm2022/spx-stock-info/spx-stock-info-value.interface.mjs +1 -1
  85. package/esm2022/spx-stock-info/spx-stock-info.component.mjs +3 -3
  86. package/esm2022/spx-storage/public-api.mjs +1 -1
  87. package/esm2022/spx-storage/src/spx-storage-key.enum.mjs +1 -1
  88. package/esm2022/spx-storage/src/spx-storage.class.mjs +1 -1
  89. package/esm2022/spx-suggestion/public-api.mjs +1 -1
  90. package/esm2022/spx-suggestion/spx-suggestion.component.mjs +41 -41
  91. package/esm2022/spx-toaster/public-api.mjs +1 -1
  92. package/esm2022/spx-toaster/src/spx-toaster-autoclose-speed.mjs +1 -1
  93. package/esm2022/spx-toaster/src/spx-toaster-message.interface.mjs +1 -1
  94. package/esm2022/spx-toaster/src/spx-toaster.component.mjs +93 -93
  95. package/esm2022/spx-update/public-api.mjs +1 -1
  96. package/esm2022/spx-update/src/spx-update-info.component.mjs +23 -23
  97. package/esm2022/spx-update/src/spx-update-progress.component.mjs +3 -3
  98. package/esm2022/spx-validation/max.validator.mjs +1 -1
  99. package/esm2022/spx-validation/maxlength.validator.mjs +1 -1
  100. package/esm2022/spx-validation/min.validator.mjs +1 -1
  101. package/esm2022/spx-validation/minlength.validator.mjs +1 -1
  102. package/esm2022/spx-validation/pattern.validator.mjs +1 -1
  103. package/esm2022/spx-validation/public-api.mjs +1 -1
  104. package/esm2022/spx-validation/required.validator.mjs +1 -1
  105. package/esm2022/spx-validation/spx-validate-control.component.mjs +3 -3
  106. package/esm2022/spx-validation/year-and-month.validator.mjs +1 -1
  107. package/fesm2022/softpak-components-spx-alert.mjs +114 -114
  108. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -1
  109. package/fesm2022/softpak-components-spx-app-configuration.mjs.map +1 -1
  110. package/fesm2022/softpak-components-spx-app-expiry.mjs +56 -56
  111. package/fesm2022/softpak-components-spx-app-expiry.mjs.map +1 -1
  112. package/fesm2022/softpak-components-spx-app-update.mjs +58 -58
  113. package/fesm2022/softpak-components-spx-app-update.mjs.map +1 -1
  114. package/fesm2022/softpak-components-spx-button.mjs +62 -62
  115. package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
  116. package/fesm2022/softpak-components-spx-capitalize.mjs.map +1 -1
  117. package/fesm2022/softpak-components-spx-card.mjs +220 -220
  118. package/fesm2022/softpak-components-spx-card.mjs.map +1 -1
  119. package/fesm2022/softpak-components-spx-change-details.mjs +2 -2
  120. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  121. package/fesm2022/softpak-components-spx-channel-selection.mjs +24 -24
  122. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  123. package/fesm2022/softpak-components-spx-check-digit.mjs +2 -2
  124. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  125. package/fesm2022/softpak-components-spx-form-section.mjs +20 -20
  126. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  127. package/fesm2022/softpak-components-spx-form-view.mjs +164 -164
  128. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  129. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -1
  130. package/fesm2022/softpak-components-spx-inputs.mjs +695 -662
  131. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  132. package/fesm2022/softpak-components-spx-navigation.mjs +44 -44
  133. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  134. package/fesm2022/softpak-components-spx-number-check.mjs +76 -76
  135. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -1
  136. package/fesm2022/softpak-components-spx-pagination.mjs +2 -2
  137. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -1
  138. package/fesm2022/softpak-components-spx-patch.mjs +24 -24
  139. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -1
  140. package/fesm2022/softpak-components-spx-progress-bar.mjs +14 -14
  141. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -1
  142. package/fesm2022/softpak-components-spx-spinner.mjs +142 -142
  143. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -1
  144. package/fesm2022/softpak-components-spx-stock-info.mjs +2 -2
  145. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  146. package/fesm2022/softpak-components-spx-storage.mjs.map +1 -1
  147. package/fesm2022/softpak-components-spx-suggestion.mjs +40 -40
  148. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -1
  149. package/fesm2022/softpak-components-spx-toaster.mjs +92 -92
  150. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -1
  151. package/fesm2022/softpak-components-spx-update.mjs +24 -24
  152. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  153. package/fesm2022/softpak-components-spx-validation.mjs +2 -2
  154. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -1
  155. package/package.json +29 -29
  156. package/spx-inputs/spx-input-date/spx-input-date.component.d.ts +5 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, HostListener, ViewChild, input, model, output, signal, computed } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, HostListener, ViewChild, input, model, output, signal, viewChild, computed } 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';
@@ -72,80 +72,80 @@ class SpxInputBoxComponent {
72
72
  }
73
73
  }
74
74
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputBoxComponent, isStandalone: true, selector: "spx-input-box", inputs: { spxCompact: "spxCompact", spxFocused: "spxFocused", spxLabel: "spxLabel", spxReadonly: "spxReadonly", spxRequired: "spxRequired", spxShowClear: "spxShowClear", spxShowEdit: "spxShowEdit", spxShowHelp: "spxShowHelp", spxShowLabel: "spxShowLabel", spxShowSearch: "spxShowSearch", spxShowValidationMessages: "spxShowValidationMessages", spxValue: "spxValue" }, outputs: { spxClear: "spxClear", spxSearch: "spxSearch", spxFocus: "spxFocus", spxFocusOut: "spxFocusOut", spxEdit: "spxEdit", spxHelp: "spxHelp" }, host: { listeners: { "focusin": "handleFocusIn($event)", "focusout": "handleFocusOut($event)", "document:click": "handleWindowClick($event)" } }, ngImport: i0, template: `<div class="flex rounded w-full gap-3"
76
- [class.rounded-none]="this.spxShowValidationMessages"
77
- [class.rounded-t]="this.spxShowValidationMessages"
78
- [class.outline-none]="this.spxFocused && !this.spxReadonly"
79
- [class.ring-2]="this.spxFocused && !this.spxReadonly"
80
- [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
81
- [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
82
- [class.bg-white]="!this.spxReadonly"
83
- [class.bg-gray-300]="this.spxReadonly"
84
- [class.cursor-not-allowed]="this.spxReadonly">
85
- <div class="flex-auto p-3"
86
- [class.p-0]="this.spxCompact"
87
- [class.flex]="this.spxCompact"
88
- [class.items-center]="this.spxCompact">
89
- @if (this.spxShowLabel) {
90
- <div class="font-bold text-sm mb-1 text-gray-800"
91
- [class.mb-0]="this.spxCompact"
92
- [class.px-3]="this.spxCompact">
93
- {{this.spxLabel}} @if (spxRequired) {
94
- <span class="text-red-800">*</span>
95
- }
96
- </div>
97
- }
98
- <ng-content select="[controls]"></ng-content>
99
- </div>
100
- <div class="flex flex-none gap-1 p-1">
101
- @if (this.spxShowEdit) {
102
- <spx-button
103
- (spxClick)="onEdit()"
104
- [spxFullHeight]="true"
105
- [spxSize]="'xl'"
106
- [spxType]="'button'">
107
- <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
108
- </spx-button>
109
- }
110
- @if (this.spxShowHelp) {
111
- <spx-button
112
- (spxClick)="onHelp()"
113
- [spxFullHeight]="true"
114
- [spxDisabled]="this.spxReadonly"
115
- [spxSize]="'xl'"
116
- [spxTabIndex]="-1"
117
- [spxType]="'button'">
118
- <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
119
- </spx-button>
120
- }
121
- @if (this.spxShowSearch) {
122
- <spx-button
123
- (spxClick)="onSearch()"
124
- [spxFullHeight]="true"
125
- [spxDisabled]="this.spxReadonly"
126
- [spxSize]="'xl'"
127
- [spxTabIndex]="-1"
128
- [spxType]="'button'">
129
- <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
130
- </spx-button>
131
- }
132
- @if (this.spxShowClear) {
133
- <spx-button
134
- (spxClick)="onClear()"
135
- [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
136
- [spxFullHeight]="true"
137
- [spxSize]="'xl'"
138
- [spxTabIndex]="-1"
139
- [spxType]="'button'">
140
- <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
141
- </spx-button>
142
- }
143
- </div>
144
- </div>
145
- @if (this.spxShowValidationMessages) {
146
- <div class="bg-red-600 rounded-b text-white p-3">
147
- <ng-content select="[validation-messages]"></ng-content>
148
- </div>
75
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputBoxComponent, isStandalone: true, selector: "spx-input-box", inputs: { spxCompact: "spxCompact", spxFocused: "spxFocused", spxLabel: "spxLabel", spxReadonly: "spxReadonly", spxRequired: "spxRequired", spxShowClear: "spxShowClear", spxShowEdit: "spxShowEdit", spxShowHelp: "spxShowHelp", spxShowLabel: "spxShowLabel", spxShowSearch: "spxShowSearch", spxShowValidationMessages: "spxShowValidationMessages", spxValue: "spxValue" }, outputs: { spxClear: "spxClear", spxSearch: "spxSearch", spxFocus: "spxFocus", spxFocusOut: "spxFocusOut", spxEdit: "spxEdit", spxHelp: "spxHelp" }, host: { listeners: { "focusin": "handleFocusIn($event)", "focusout": "handleFocusOut($event)", "document:click": "handleWindowClick($event)" } }, ngImport: i0, template: `<div class="flex rounded w-full gap-3"
76
+ [class.rounded-none]="this.spxShowValidationMessages"
77
+ [class.rounded-t]="this.spxShowValidationMessages"
78
+ [class.outline-none]="this.spxFocused && !this.spxReadonly"
79
+ [class.ring-2]="this.spxFocused && !this.spxReadonly"
80
+ [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
81
+ [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
82
+ [class.bg-white]="!this.spxReadonly"
83
+ [class.bg-gray-300]="this.spxReadonly"
84
+ [class.cursor-not-allowed]="this.spxReadonly">
85
+ <div class="flex-auto p-3"
86
+ [class.p-0]="this.spxCompact"
87
+ [class.flex]="this.spxCompact"
88
+ [class.items-center]="this.spxCompact">
89
+ @if (this.spxShowLabel) {
90
+ <div class="font-bold text-sm mb-1 text-gray-800"
91
+ [class.mb-0]="this.spxCompact"
92
+ [class.px-3]="this.spxCompact">
93
+ {{this.spxLabel}} @if (spxRequired) {
94
+ <span class="text-red-800">*</span>
95
+ }
96
+ </div>
97
+ }
98
+ <ng-content select="[controls]"></ng-content>
99
+ </div>
100
+ <div class="flex flex-none gap-1 p-1">
101
+ @if (this.spxShowEdit) {
102
+ <spx-button
103
+ (spxClick)="onEdit()"
104
+ [spxFullHeight]="true"
105
+ [spxSize]="'xl'"
106
+ [spxType]="'button'">
107
+ <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
108
+ </spx-button>
109
+ }
110
+ @if (this.spxShowHelp) {
111
+ <spx-button
112
+ (spxClick)="onHelp()"
113
+ [spxFullHeight]="true"
114
+ [spxDisabled]="this.spxReadonly"
115
+ [spxSize]="'xl'"
116
+ [spxTabIndex]="-1"
117
+ [spxType]="'button'">
118
+ <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
119
+ </spx-button>
120
+ }
121
+ @if (this.spxShowSearch) {
122
+ <spx-button
123
+ (spxClick)="onSearch()"
124
+ [spxFullHeight]="true"
125
+ [spxDisabled]="this.spxReadonly"
126
+ [spxSize]="'xl'"
127
+ [spxTabIndex]="-1"
128
+ [spxType]="'button'">
129
+ <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
130
+ </spx-button>
131
+ }
132
+ @if (this.spxShowClear) {
133
+ <spx-button
134
+ (spxClick)="onClear()"
135
+ [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
136
+ [spxFullHeight]="true"
137
+ [spxSize]="'xl'"
138
+ [spxTabIndex]="-1"
139
+ [spxType]="'button'">
140
+ <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
141
+ </spx-button>
142
+ }
143
+ </div>
144
+ </div>
145
+ @if (this.spxShowValidationMessages) {
146
+ <div class="bg-red-600 rounded-b text-white p-3">
147
+ <ng-content select="[validation-messages]"></ng-content>
148
+ </div>
149
149
  }`, isInline: true, dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], 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"] }] }); }
150
150
  }
151
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputBoxComponent, decorators: [{
@@ -157,80 +157,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
157
157
  SpxButtonComponent,
158
158
  FontAwesomeModule
159
159
  ],
160
- template: `<div class="flex rounded w-full gap-3"
161
- [class.rounded-none]="this.spxShowValidationMessages"
162
- [class.rounded-t]="this.spxShowValidationMessages"
163
- [class.outline-none]="this.spxFocused && !this.spxReadonly"
164
- [class.ring-2]="this.spxFocused && !this.spxReadonly"
165
- [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
166
- [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
167
- [class.bg-white]="!this.spxReadonly"
168
- [class.bg-gray-300]="this.spxReadonly"
169
- [class.cursor-not-allowed]="this.spxReadonly">
170
- <div class="flex-auto p-3"
171
- [class.p-0]="this.spxCompact"
172
- [class.flex]="this.spxCompact"
173
- [class.items-center]="this.spxCompact">
174
- @if (this.spxShowLabel) {
175
- <div class="font-bold text-sm mb-1 text-gray-800"
176
- [class.mb-0]="this.spxCompact"
177
- [class.px-3]="this.spxCompact">
178
- {{this.spxLabel}} @if (spxRequired) {
179
- <span class="text-red-800">*</span>
180
- }
181
- </div>
182
- }
183
- <ng-content select="[controls]"></ng-content>
184
- </div>
185
- <div class="flex flex-none gap-1 p-1">
186
- @if (this.spxShowEdit) {
187
- <spx-button
188
- (spxClick)="onEdit()"
189
- [spxFullHeight]="true"
190
- [spxSize]="'xl'"
191
- [spxType]="'button'">
192
- <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
193
- </spx-button>
194
- }
195
- @if (this.spxShowHelp) {
196
- <spx-button
197
- (spxClick)="onHelp()"
198
- [spxFullHeight]="true"
199
- [spxDisabled]="this.spxReadonly"
200
- [spxSize]="'xl'"
201
- [spxTabIndex]="-1"
202
- [spxType]="'button'">
203
- <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
204
- </spx-button>
205
- }
206
- @if (this.spxShowSearch) {
207
- <spx-button
208
- (spxClick)="onSearch()"
209
- [spxFullHeight]="true"
210
- [spxDisabled]="this.spxReadonly"
211
- [spxSize]="'xl'"
212
- [spxTabIndex]="-1"
213
- [spxType]="'button'">
214
- <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
215
- </spx-button>
216
- }
217
- @if (this.spxShowClear) {
218
- <spx-button
219
- (spxClick)="onClear()"
220
- [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
221
- [spxFullHeight]="true"
222
- [spxSize]="'xl'"
223
- [spxTabIndex]="-1"
224
- [spxType]="'button'">
225
- <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
226
- </spx-button>
227
- }
228
- </div>
229
- </div>
230
- @if (this.spxShowValidationMessages) {
231
- <div class="bg-red-600 rounded-b text-white p-3">
232
- <ng-content select="[validation-messages]"></ng-content>
233
- </div>
160
+ template: `<div class="flex rounded w-full gap-3"
161
+ [class.rounded-none]="this.spxShowValidationMessages"
162
+ [class.rounded-t]="this.spxShowValidationMessages"
163
+ [class.outline-none]="this.spxFocused && !this.spxReadonly"
164
+ [class.ring-2]="this.spxFocused && !this.spxReadonly"
165
+ [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
166
+ [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
167
+ [class.bg-white]="!this.spxReadonly"
168
+ [class.bg-gray-300]="this.spxReadonly"
169
+ [class.cursor-not-allowed]="this.spxReadonly">
170
+ <div class="flex-auto p-3"
171
+ [class.p-0]="this.spxCompact"
172
+ [class.flex]="this.spxCompact"
173
+ [class.items-center]="this.spxCompact">
174
+ @if (this.spxShowLabel) {
175
+ <div class="font-bold text-sm mb-1 text-gray-800"
176
+ [class.mb-0]="this.spxCompact"
177
+ [class.px-3]="this.spxCompact">
178
+ {{this.spxLabel}} @if (spxRequired) {
179
+ <span class="text-red-800">*</span>
180
+ }
181
+ </div>
182
+ }
183
+ <ng-content select="[controls]"></ng-content>
184
+ </div>
185
+ <div class="flex flex-none gap-1 p-1">
186
+ @if (this.spxShowEdit) {
187
+ <spx-button
188
+ (spxClick)="onEdit()"
189
+ [spxFullHeight]="true"
190
+ [spxSize]="'xl'"
191
+ [spxType]="'button'">
192
+ <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
193
+ </spx-button>
194
+ }
195
+ @if (this.spxShowHelp) {
196
+ <spx-button
197
+ (spxClick)="onHelp()"
198
+ [spxFullHeight]="true"
199
+ [spxDisabled]="this.spxReadonly"
200
+ [spxSize]="'xl'"
201
+ [spxTabIndex]="-1"
202
+ [spxType]="'button'">
203
+ <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
204
+ </spx-button>
205
+ }
206
+ @if (this.spxShowSearch) {
207
+ <spx-button
208
+ (spxClick)="onSearch()"
209
+ [spxFullHeight]="true"
210
+ [spxDisabled]="this.spxReadonly"
211
+ [spxSize]="'xl'"
212
+ [spxTabIndex]="-1"
213
+ [spxType]="'button'">
214
+ <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
215
+ </spx-button>
216
+ }
217
+ @if (this.spxShowClear) {
218
+ <spx-button
219
+ (spxClick)="onClear()"
220
+ [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
221
+ [spxFullHeight]="true"
222
+ [spxSize]="'xl'"
223
+ [spxTabIndex]="-1"
224
+ [spxType]="'button'">
225
+ <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
226
+ </spx-button>
227
+ }
228
+ </div>
229
+ </div>
230
+ @if (this.spxShowValidationMessages) {
231
+ <div class="bg-red-600 rounded-b text-white p-3">
232
+ <ng-content select="[validation-messages]"></ng-content>
233
+ </div>
234
234
  }`,
235
235
  }]
236
236
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { spxCompact: [{
@@ -319,22 +319,22 @@ class SpxDropdownComponent {
319
319
  this.spxSelect.emit(valuePair);
320
320
  }
321
321
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
322
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxDropdownComponent, isStandalone: true, selector: "spx-dropdown", inputs: { spxSuggestions: "spxSuggestions" }, outputs: { spxSelect: "spxSelect" }, usesOnChanges: true, ngImport: i0, template: `<div class="relative text-black">
323
- <div
324
- class="absolute bg-gray-100 left-0 right-0 z-20">
325
- @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
326
- <button
327
- class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
328
- [class.bg-gray-100]="i === this.focusPosition"
329
- [class.bg-white]="i !== this.focusPosition"
330
- (click)="this.handleSuggestionClick(valuePair)"
331
- [attr.tabindex]="-1"
332
- [attr.type]="'button'">
333
- <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
334
- <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
335
- </button>
336
- }
337
- </div>
322
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxDropdownComponent, isStandalone: true, selector: "spx-dropdown", inputs: { spxSuggestions: "spxSuggestions" }, outputs: { spxSelect: "spxSelect" }, usesOnChanges: true, ngImport: i0, template: `<div class="relative text-black">
323
+ <div
324
+ class="absolute bg-gray-100 left-0 right-0 z-20">
325
+ @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
326
+ <button
327
+ class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
328
+ [class.bg-gray-100]="i === this.focusPosition"
329
+ [class.bg-white]="i !== this.focusPosition"
330
+ (click)="this.handleSuggestionClick(valuePair)"
331
+ [attr.tabindex]="-1"
332
+ [attr.type]="'button'">
333
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
334
+ <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
335
+ </button>
336
+ }
337
+ </div>
338
338
  </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
339
339
  }
340
340
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxDropdownComponent, decorators: [{
@@ -345,22 +345,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
345
345
  imports: [
346
346
  SpxButtonComponent
347
347
  ],
348
- template: `<div class="relative text-black">
349
- <div
350
- class="absolute bg-gray-100 left-0 right-0 z-20">
351
- @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
352
- <button
353
- class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
354
- [class.bg-gray-100]="i === this.focusPosition"
355
- [class.bg-white]="i !== this.focusPosition"
356
- (click)="this.handleSuggestionClick(valuePair)"
357
- [attr.tabindex]="-1"
358
- [attr.type]="'button'">
359
- <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
360
- <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
361
- </button>
362
- }
363
- </div>
348
+ template: `<div class="relative text-black">
349
+ <div
350
+ class="absolute bg-gray-100 left-0 right-0 z-20">
351
+ @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
352
+ <button
353
+ class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
354
+ [class.bg-gray-100]="i === this.focusPosition"
355
+ [class.bg-white]="i !== this.focusPosition"
356
+ (click)="this.handleSuggestionClick(valuePair)"
357
+ [attr.tabindex]="-1"
358
+ [attr.type]="'button'">
359
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
360
+ <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
361
+ </button>
362
+ }
363
+ </div>
364
364
  </div>`,
365
365
  }]
366
366
  }], propDecorators: { spxSuggestions: [{
@@ -415,37 +415,37 @@ class SpxInputTextComponent {
415
415
  this.spxFocused = true;
416
416
  }
417
417
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
418
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxAutocomplete: "spxAutocomplete", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxSuggestions: "spxSuggestions", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused", spxType: "spxType", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxBlurFromChild: "spxBlurFromChild", spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="relative text-black">
419
- <input
420
- #input
421
- class="font-bold text-lg w-full outline-none"
422
- autocomplete="off"
423
- spellcheck="false"
424
- [class.bg-white]="!this.spxReadonly"
425
- [class.bg-gray-300]="this.spxReadonly"
426
- [class.cursor-not-allowed]="this.spxReadonly"
427
- [class.uppercase]="this.spxCapitalize"
428
- [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
429
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
430
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
431
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
432
- [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
433
- [attr.name]="this.spxName"
434
- [attr.type]="this.spxType"
435
- [value]="this.value?.description ? this.value?.description : this.value?.value"
436
- (blur)="this.handleBlur()"
437
- (keyUp)="this.handleKeyUp()"
438
- (focus)="this.handleFocus()"
439
- (input)="this.handleDescriptionInput($event)"
440
- />
441
- @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
442
- <span>{{this.value?.value}}</span>
443
- }
444
- @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
445
- <spx-dropdown
446
- [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
447
- </spx-dropdown>
448
- }
418
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxAutocomplete: "spxAutocomplete", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxSuggestions: "spxSuggestions", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused", spxType: "spxType", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxBlurFromChild: "spxBlurFromChild", spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="relative text-black">
419
+ <input
420
+ #input
421
+ class="font-bold text-lg w-full outline-none"
422
+ autocomplete="off"
423
+ spellcheck="false"
424
+ [class.bg-white]="!this.spxReadonly"
425
+ [class.bg-gray-300]="this.spxReadonly"
426
+ [class.cursor-not-allowed]="this.spxReadonly"
427
+ [class.uppercase]="this.spxCapitalize"
428
+ [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
429
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
430
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
431
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
432
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
433
+ [attr.name]="this.spxName"
434
+ [attr.type]="this.spxType"
435
+ [value]="this.value?.description ? this.value?.description : this.value?.value"
436
+ (blur)="this.handleBlur()"
437
+ (keyUp)="this.handleKeyUp()"
438
+ (focus)="this.handleFocus()"
439
+ (input)="this.handleDescriptionInput($event)"
440
+ />
441
+ @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
442
+ <span>{{this.value?.value}}</span>
443
+ }
444
+ @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
445
+ <spx-dropdown
446
+ [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
447
+ </spx-dropdown>
448
+ }
449
449
  </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxDropdownComponent, selector: "spx-dropdown", inputs: ["spxSuggestions"], outputs: ["spxSelect"] }] }); }
450
450
  }
451
451
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTextComponent, decorators: [{
@@ -456,37 +456,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
456
456
  imports: [
457
457
  SpxDropdownComponent
458
458
  ],
459
- template: `<div class="relative text-black">
460
- <input
461
- #input
462
- class="font-bold text-lg w-full outline-none"
463
- autocomplete="off"
464
- spellcheck="false"
465
- [class.bg-white]="!this.spxReadonly"
466
- [class.bg-gray-300]="this.spxReadonly"
467
- [class.cursor-not-allowed]="this.spxReadonly"
468
- [class.uppercase]="this.spxCapitalize"
469
- [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
470
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
471
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
472
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
473
- [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
474
- [attr.name]="this.spxName"
475
- [attr.type]="this.spxType"
476
- [value]="this.value?.description ? this.value?.description : this.value?.value"
477
- (blur)="this.handleBlur()"
478
- (keyUp)="this.handleKeyUp()"
479
- (focus)="this.handleFocus()"
480
- (input)="this.handleDescriptionInput($event)"
481
- />
482
- @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
483
- <span>{{this.value?.value}}</span>
484
- }
485
- @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
486
- <spx-dropdown
487
- [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
488
- </spx-dropdown>
489
- }
459
+ template: `<div class="relative text-black">
460
+ <input
461
+ #input
462
+ class="font-bold text-lg w-full outline-none"
463
+ autocomplete="off"
464
+ spellcheck="false"
465
+ [class.bg-white]="!this.spxReadonly"
466
+ [class.bg-gray-300]="this.spxReadonly"
467
+ [class.cursor-not-allowed]="this.spxReadonly"
468
+ [class.uppercase]="this.spxCapitalize"
469
+ [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
470
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
471
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
472
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
473
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
474
+ [attr.name]="this.spxName"
475
+ [attr.type]="this.spxType"
476
+ [value]="this.value?.description ? this.value?.description : this.value?.value"
477
+ (blur)="this.handleBlur()"
478
+ (keyUp)="this.handleKeyUp()"
479
+ (focus)="this.handleFocus()"
480
+ (input)="this.handleDescriptionInput($event)"
481
+ />
482
+ @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
483
+ <span>{{this.value?.value}}</span>
484
+ }
485
+ @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
486
+ <spx-dropdown
487
+ [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
488
+ </spx-dropdown>
489
+ }
490
490
  </div>`,
491
491
  }]
492
492
  }], propDecorators: { spxName: [{
@@ -595,62 +595,62 @@ class SpxInputFloatComponent {
595
595
  return /^[+-]?\d+(\.\d+)?$/.test(value);
596
596
  }
597
597
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
598
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputFloatComponent, isStandalone: true, selector: "spx-input-float", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate", tick: "tick" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "firstInputRef", first: true, predicate: ["firstInputRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `<div class="flex items-end">
599
- <input
600
- #firstInputRef
601
- class="spx-input-float__input"
602
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
603
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
604
- [attr.pattern]="'[0-9]*'"
605
- [attr.step]="1"
606
- [attr.type]="'text'"
607
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
608
- (focus)="this.handleFocus()"
609
- [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
610
- (ngModelChange)="this.handleInput($event, 1)" />
611
- <span class="text-black font-bold text-2xl mx-4">,</span>
612
- <input
613
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
614
- class="spx-input-float__input"
615
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
616
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
617
- (focus)="this.handleFocus()"
618
- [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
619
- (ngModelChange)="this.handleInput($event, 2)"
620
- [attr.step]="1"
621
- [attr.type]="'text'"
622
- [attr.pattern]="'[0-9]*'" />
598
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputFloatComponent, isStandalone: true, selector: "spx-input-float", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate", tick: "tick" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "firstInputRef", first: true, predicate: ["firstInputRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `<div class="flex items-end">
599
+ <input
600
+ #firstInputRef
601
+ class="spx-input-float__input"
602
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
603
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
604
+ [attr.pattern]="'[0-9]*'"
605
+ [attr.step]="1"
606
+ [attr.type]="'text'"
607
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
608
+ (focus)="this.handleFocus()"
609
+ [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
610
+ (ngModelChange)="this.handleInput($event, 1)" />
611
+ <span class="text-black font-bold text-2xl mx-4">,</span>
612
+ <input
613
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
614
+ class="spx-input-float__input"
615
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
616
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
617
+ (focus)="this.handleFocus()"
618
+ [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
619
+ (ngModelChange)="this.handleInput($event, 2)"
620
+ [attr.step]="1"
621
+ [attr.type]="'text'"
622
+ [attr.pattern]="'[0-9]*'" />
623
623
  </div>`, isInline: true, 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"] }] }); }
624
624
  }
625
625
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
626
626
  type: Component,
627
627
  args: [{ selector: 'spx-input-float', standalone: true, imports: [
628
628
  FormsModule,
629
- ], template: `<div class="flex items-end">
630
- <input
631
- #firstInputRef
632
- class="spx-input-float__input"
633
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
634
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
635
- [attr.pattern]="'[0-9]*'"
636
- [attr.step]="1"
637
- [attr.type]="'text'"
638
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
639
- (focus)="this.handleFocus()"
640
- [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
641
- (ngModelChange)="this.handleInput($event, 1)" />
642
- <span class="text-black font-bold text-2xl mx-4">,</span>
643
- <input
644
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
645
- class="spx-input-float__input"
646
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
647
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
648
- (focus)="this.handleFocus()"
649
- [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
650
- (ngModelChange)="this.handleInput($event, 2)"
651
- [attr.step]="1"
652
- [attr.type]="'text'"
653
- [attr.pattern]="'[0-9]*'" />
629
+ ], template: `<div class="flex items-end">
630
+ <input
631
+ #firstInputRef
632
+ class="spx-input-float__input"
633
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
634
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
635
+ [attr.pattern]="'[0-9]*'"
636
+ [attr.step]="1"
637
+ [attr.type]="'text'"
638
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
639
+ (focus)="this.handleFocus()"
640
+ [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
641
+ (ngModelChange)="this.handleInput($event, 1)" />
642
+ <span class="text-black font-bold text-2xl mx-4">,</span>
643
+ <input
644
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
645
+ class="spx-input-float__input"
646
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
647
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
648
+ (focus)="this.handleFocus()"
649
+ [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
650
+ (ngModelChange)="this.handleInput($event, 2)"
651
+ [attr.step]="1"
652
+ [attr.type]="'text'"
653
+ [attr.pattern]="'[0-9]*'" />
654
654
  </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"] }]
655
655
  }], propDecorators: { spxName: [{
656
656
  type: Input
@@ -708,36 +708,36 @@ class SpxInputNumberComponent {
708
708
  this.spxChange.emit(this.value);
709
709
  }
710
710
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
711
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputNumberComponent, isStandalone: true, selector: "spx-input-number", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="spx-input-number__controls">
712
- <input
713
- #input
714
- class="spx-input-number__input"
715
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
716
- [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
717
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
718
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
719
- [attr.value]="this.value?.value ? this.value?.value : undefined"
720
- [attr.step]="this.spxStep ? this.spxStep : undefined"
721
- [attr.type]="'number'"
722
- (focus)="this.handleFocus()"
723
- (input)="this.handleInput($event)" />
711
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputNumberComponent, isStandalone: true, selector: "spx-input-number", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="spx-input-number__controls">
712
+ <input
713
+ #input
714
+ class="spx-input-number__input"
715
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
716
+ [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
717
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
718
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
719
+ [attr.value]="this.value?.value ? this.value?.value : undefined"
720
+ [attr.step]="this.spxStep ? this.spxStep : undefined"
721
+ [attr.type]="'number'"
722
+ (focus)="this.handleFocus()"
723
+ (input)="this.handleInput($event)" />
724
724
  </div>`, isInline: true, 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"] }); }
725
725
  }
726
726
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
727
727
  type: Component,
728
- args: [{ selector: 'spx-input-number', standalone: true, imports: [], template: `<div class="spx-input-number__controls">
729
- <input
730
- #input
731
- class="spx-input-number__input"
732
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
733
- [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
734
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
735
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
736
- [attr.value]="this.value?.value ? this.value?.value : undefined"
737
- [attr.step]="this.spxStep ? this.spxStep : undefined"
738
- [attr.type]="'number'"
739
- (focus)="this.handleFocus()"
740
- (input)="this.handleInput($event)" />
728
+ args: [{ selector: 'spx-input-number', standalone: true, imports: [], template: `<div class="spx-input-number__controls">
729
+ <input
730
+ #input
731
+ class="spx-input-number__input"
732
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
733
+ [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
734
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
735
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
736
+ [attr.value]="this.value?.value ? this.value?.value : undefined"
737
+ [attr.step]="this.spxStep ? this.spxStep : undefined"
738
+ [attr.type]="'number'"
739
+ (focus)="this.handleFocus()"
740
+ (input)="this.handleInput($event)" />
741
741
  </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"] }]
742
742
  }], propDecorators: { spxName: [{
743
743
  type: Input
@@ -834,17 +834,17 @@ class SpxInputRadioComponent {
834
834
  });
835
835
  }
836
836
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
837
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputRadioComponent, isStandalone: true, selector: "spx-input-radio", inputs: { spxName: "spxName", spxValidators: "spxValidators", spxFocused: "spxFocused", spxShowLabel: "spxShowLabel", spxReadonly: "spxReadonly", spxSuggestions: "spxSuggestions", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, usesOnChanges: true, ngImport: i0, template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
838
- @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
839
- <spx-suggestion
840
- [spxDisabled]="this.spxReadonly"
841
- [spxFocused]="this.spxFocused && i === this.focusPosition"
842
- [spxSelected]="this.value?.value === valuePair?.value"
843
- [spxTabbable]="this.focusPosition === i"
844
- (click)="this.handleSuggestionClick($event, valuePair)">
845
- {{valuePair?.description}}
846
- </spx-suggestion>
847
- }
837
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputRadioComponent, isStandalone: true, selector: "spx-input-radio", inputs: { spxName: "spxName", spxValidators: "spxValidators", spxFocused: "spxFocused", spxShowLabel: "spxShowLabel", spxReadonly: "spxReadonly", spxSuggestions: "spxSuggestions", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, usesOnChanges: true, ngImport: i0, template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
838
+ @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
839
+ <spx-suggestion
840
+ [spxDisabled]="this.spxReadonly"
841
+ [spxFocused]="this.spxFocused && i === this.focusPosition"
842
+ [spxSelected]="this.value?.value === valuePair?.value"
843
+ [spxTabbable]="this.focusPosition === i"
844
+ (click)="this.handleSuggestionClick($event, valuePair)">
845
+ {{valuePair?.description}}
846
+ </spx-suggestion>
847
+ }
848
848
  </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }] }); }
849
849
  }
850
850
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputRadioComponent, decorators: [{
@@ -855,17 +855,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
855
855
  imports: [
856
856
  SpxSuggestionComponent
857
857
  ],
858
- template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
859
- @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
860
- <spx-suggestion
861
- [spxDisabled]="this.spxReadonly"
862
- [spxFocused]="this.spxFocused && i === this.focusPosition"
863
- [spxSelected]="this.value?.value === valuePair?.value"
864
- [spxTabbable]="this.focusPosition === i"
865
- (click)="this.handleSuggestionClick($event, valuePair)">
866
- {{valuePair?.description}}
867
- </spx-suggestion>
868
- }
858
+ template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
859
+ @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
860
+ <spx-suggestion
861
+ [spxDisabled]="this.spxReadonly"
862
+ [spxFocused]="this.spxFocused && i === this.focusPosition"
863
+ [spxSelected]="this.value?.value === valuePair?.value"
864
+ [spxTabbable]="this.focusPosition === i"
865
+ (click)="this.handleSuggestionClick($event, valuePair)">
866
+ {{valuePair?.description}}
867
+ </spx-suggestion>
868
+ }
869
869
  </div>`,
870
870
  }]
871
871
  }], propDecorators: { spxName: [{
@@ -925,44 +925,44 @@ class SpxInputTimeModalComponent {
925
925
  this.modalController.dismiss(value);
926
926
  }
927
927
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeModalComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
928
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputTimeModalComponent, isStandalone: true, selector: "spx-input-time-modal", inputs: { view: "view", value: "value" }, outputs: { change: "change" }, ngImport: i0, template: `<ion-header>
929
- <ion-toolbar>
930
- <ion-title>Select {{view}}</ion-title>
931
- <ion-buttons slot="end">
932
- <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
933
- <fa-icon [icon]="faXmark"></fa-icon>
934
- </spx-button>
935
- </ion-buttons>
936
- </ion-toolbar>
937
- </ion-header>
938
- <ion-content class="ion-padding bg-white">
939
- <!-- Uren -->
940
- <div class="custom-bg grid grid-cols-1 gap-3">
941
- @if (view === 'hours') {
942
- <div class="flex-wrap gap-2">
943
- <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
944
- @for (hour of hourOptions; track hour) {
945
- <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)">
946
- {{ hour }}
947
- </div>
948
- }
949
- </div>
950
- </div>
951
- }
952
- <!-- Minuten -->
953
- @if (view === 'minutes') {
954
- <div class="grid grid-cols-1 gap-3">
955
- <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
956
- @for (minute of minuteOptions; track minute) {
957
- <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)">
958
- {{ minute }}
959
- </div>
960
- }
961
- </div>
962
- </div>
963
- }
964
- </div>
965
- </ion-content>
928
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputTimeModalComponent, isStandalone: true, selector: "spx-input-time-modal", inputs: { view: "view", value: "value" }, outputs: { change: "change" }, ngImport: i0, template: `<ion-header>
929
+ <ion-toolbar>
930
+ <ion-title>Select {{view}}</ion-title>
931
+ <ion-buttons slot="end">
932
+ <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
933
+ <fa-icon [icon]="faXmark"></fa-icon>
934
+ </spx-button>
935
+ </ion-buttons>
936
+ </ion-toolbar>
937
+ </ion-header>
938
+ <ion-content class="ion-padding bg-white">
939
+ <!-- Uren -->
940
+ <div class="custom-bg grid grid-cols-1 gap-3">
941
+ @if (view === 'hours') {
942
+ <div class="flex-wrap gap-2">
943
+ <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
944
+ @for (hour of hourOptions; track hour) {
945
+ <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)">
946
+ {{ hour }}
947
+ </div>
948
+ }
949
+ </div>
950
+ </div>
951
+ }
952
+ <!-- Minuten -->
953
+ @if (view === 'minutes') {
954
+ <div class="grid grid-cols-1 gap-3">
955
+ <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
956
+ @for (minute of minuteOptions; track minute) {
957
+ <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)">
958
+ {{ minute }}
959
+ </div>
960
+ }
961
+ </div>
962
+ </div>
963
+ }
964
+ </div>
965
+ </ion-content>
966
966
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1$2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1$2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1$2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1$2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1$2.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"], 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"] }] }); }
967
967
  }
968
968
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeModalComponent, decorators: [{
@@ -976,44 +976,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
976
976
  SpxDropdownComponent,
977
977
  FontAwesomeModule
978
978
  ],
979
- template: `<ion-header>
980
- <ion-toolbar>
981
- <ion-title>Select {{view}}</ion-title>
982
- <ion-buttons slot="end">
983
- <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
984
- <fa-icon [icon]="faXmark"></fa-icon>
985
- </spx-button>
986
- </ion-buttons>
987
- </ion-toolbar>
988
- </ion-header>
989
- <ion-content class="ion-padding bg-white">
990
- <!-- Uren -->
991
- <div class="custom-bg grid grid-cols-1 gap-3">
992
- @if (view === 'hours') {
993
- <div class="flex-wrap gap-2">
994
- <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
995
- @for (hour of hourOptions; track hour) {
996
- <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)">
997
- {{ hour }}
998
- </div>
999
- }
1000
- </div>
1001
- </div>
1002
- }
1003
- <!-- Minuten -->
1004
- @if (view === 'minutes') {
1005
- <div class="grid grid-cols-1 gap-3">
1006
- <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
1007
- @for (minute of minuteOptions; track minute) {
1008
- <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)">
1009
- {{ minute }}
1010
- </div>
1011
- }
1012
- </div>
1013
- </div>
1014
- }
1015
- </div>
1016
- </ion-content>
979
+ template: `<ion-header>
980
+ <ion-toolbar>
981
+ <ion-title>Select {{view}}</ion-title>
982
+ <ion-buttons slot="end">
983
+ <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
984
+ <fa-icon [icon]="faXmark"></fa-icon>
985
+ </spx-button>
986
+ </ion-buttons>
987
+ </ion-toolbar>
988
+ </ion-header>
989
+ <ion-content class="ion-padding bg-white">
990
+ <!-- Uren -->
991
+ <div class="custom-bg grid grid-cols-1 gap-3">
992
+ @if (view === 'hours') {
993
+ <div class="flex-wrap gap-2">
994
+ <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
995
+ @for (hour of hourOptions; track hour) {
996
+ <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)">
997
+ {{ hour }}
998
+ </div>
999
+ }
1000
+ </div>
1001
+ </div>
1002
+ }
1003
+ <!-- Minuten -->
1004
+ @if (view === 'minutes') {
1005
+ <div class="grid grid-cols-1 gap-3">
1006
+ <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
1007
+ @for (minute of minuteOptions; track minute) {
1008
+ <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)">
1009
+ {{ minute }}
1010
+ </div>
1011
+ }
1012
+ </div>
1013
+ </div>
1014
+ }
1015
+ </div>
1016
+ </ion-content>
1017
1017
  `,
1018
1018
  }]
1019
1019
  }], ctorParameters: () => [{ type: i1$2.ModalController }], propDecorators: { view: [{
@@ -1122,12 +1122,12 @@ class SpxInputTimeComponent {
1122
1122
  }
1123
1123
  }
1124
1124
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
1125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputTimeComponent, isStandalone: true, selector: "spx-input-time", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxSuggestions: "spxSuggestions", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused", spxType: "spxType", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxBlurFromChild: "spxBlurFromChild", spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="relative text-black">
1126
- <div class="flex items-center justify-around gap-3">
1127
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1128
- <div class="text-gray text-xl">:</div>
1129
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1130
- </div>
1125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputTimeComponent, isStandalone: true, selector: "spx-input-time", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxSuggestions: "spxSuggestions", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused", spxType: "spxType", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxBlurFromChild: "spxBlurFromChild", spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="relative text-black">
1126
+ <div class="flex items-center justify-around gap-3">
1127
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1128
+ <div class="text-gray text-xl">:</div>
1129
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1130
+ </div>
1131
1131
  </div>`, isInline: true, styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }] }); }
1132
1132
  }
1133
1133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeComponent, decorators: [{
@@ -1136,12 +1136,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1136
1136
  SpxButtonComponent,
1137
1137
  SpxDropdownComponent,
1138
1138
  IonicModule
1139
- ], template: `<div class="relative text-black">
1140
- <div class="flex items-center justify-around gap-3">
1141
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1142
- <div class="text-gray text-xl">:</div>
1143
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1144
- </div>
1139
+ ], template: `<div class="relative text-black">
1140
+ <div class="flex items-center justify-around gap-3">
1141
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1142
+ <div class="text-gray text-xl">:</div>
1143
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1144
+ </div>
1145
1145
  </div>`, styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"] }]
1146
1146
  }], ctorParameters: () => [{ type: i1$2.ModalController }], propDecorators: { spxName: [{
1147
1147
  type: Input
@@ -1203,14 +1203,17 @@ class SpxInputDateComponent {
1203
1203
  this.selectedYear = signal(null);
1204
1204
  this.selectedMonth = signal(null);
1205
1205
  this.selectedDay = signal(null);
1206
+ this.yearInputComponent = viewChild.required(stepType.years);
1207
+ this.monthInputComponent = viewChild.required(stepType.months);
1208
+ this.dayInputComponent = viewChild.required(stepType.days);
1206
1209
  this.spxSuggestionC = computed(() => {
1207
1210
  switch (this.spxSelectedStep()) {
1208
- case 'months':
1211
+ case stepType.years:
1212
+ return this.spxSuggestions().years;
1213
+ case stepType.months:
1209
1214
  return [...this.spxSuggestions().months];
1210
- case 'days':
1215
+ case stepType.days:
1211
1216
  return [...this.spxSuggestions().days];
1212
- default:
1213
- return this.spxSuggestions().years;
1214
1217
  }
1215
1218
  });
1216
1219
  this.spxSuggestions = input({ years: [],
@@ -1253,6 +1256,21 @@ class SpxInputDateComponent {
1253
1256
  }],
1254
1257
  days: [], });
1255
1258
  }
1259
+ handleFocus(selectedStep) {
1260
+ switch (selectedStep) {
1261
+ case stepType.years:
1262
+ this.spxSelectedStep.set(stepType.years);
1263
+ break;
1264
+ case stepType.months:
1265
+ this.spxSelectedStep.set(stepType.months);
1266
+ this.monthInputComponent().nativeElement.focus();
1267
+ break;
1268
+ case stepType.days:
1269
+ this.spxSelectedStep.set(stepType.days);
1270
+ this.dayInputComponent().nativeElement.focus();
1271
+ break;
1272
+ }
1273
+ }
1256
1274
  onModelChange(newValue, selectedStep) {
1257
1275
  const parsedValue = +newValue; // Convert to number
1258
1276
  if (parsedValue == 0)
@@ -1280,13 +1298,13 @@ class SpxInputDateComponent {
1280
1298
  }
1281
1299
  handleSuggestionClick(value) {
1282
1300
  switch (this.spxSelectedStep()) {
1283
- case "years":
1301
+ case stepType.years:
1284
1302
  this.selectedYear.set(value);
1285
1303
  break;
1286
- case "months":
1304
+ case stepType.months:
1287
1305
  this.selectedMonth.set(value);
1288
1306
  break;
1289
- case "days":
1307
+ case stepType.days:
1290
1308
  this.selectedDay.set(value);
1291
1309
  break;
1292
1310
  }
@@ -1301,14 +1319,29 @@ class SpxInputDateComponent {
1301
1319
  }
1302
1320
  changeSelectedStep() {
1303
1321
  switch (this.spxSelectedStep()) {
1304
- case 'days':
1305
- this.spxSelectedStep.set(stepType.years);
1322
+ case stepType.years:
1323
+ if (this.spxSelectMonth()) {
1324
+ this.spxSelectedStep.set(stepType.months);
1325
+ this.monthInputComponent().nativeElement.focus();
1326
+ }
1327
+ else {
1328
+ this.spxSelectedStep.set(stepType.years);
1329
+ this.yearInputComponent().nativeElement.focus();
1330
+ }
1306
1331
  break;
1307
- case 'months':
1308
- this.spxSelectedStep.set(this.spxSelectDay() ? stepType.days : stepType.years);
1332
+ case stepType.months:
1333
+ if (this.spxSelectDay()) {
1334
+ this.spxSelectedStep.set(stepType.days);
1335
+ this.dayInputComponent().nativeElement.focus();
1336
+ }
1337
+ else {
1338
+ this.spxSelectedStep.set(stepType.years);
1339
+ this.yearInputComponent().nativeElement.focus();
1340
+ }
1309
1341
  break;
1310
- case 'years':
1311
- this.spxSelectedStep.set(this.spxSelectMonth() ? stepType.months : stepType.years);
1342
+ case stepType.days:
1343
+ this.spxSelectedStep.set(stepType.years);
1344
+ this.yearInputComponent().nativeElement.focus();
1312
1345
  break;
1313
1346
  }
1314
1347
  }
@@ -1322,14 +1355,14 @@ class SpxInputDateComponent {
1322
1355
  }
1323
1356
  }
1324
1357
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1325
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", 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 }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", 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 }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", spxChange: "spxChange", spxFocus: "spxFocus" }, ngImport: i0, template: "<div class='spx-input-date__controls'>\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedYear\"\n [attr.type]=\"'number'\"\n (ngModelChange)=\"onModelChange($event, '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\n class='spx-input-date__input'\n [(ngModel)]=\"selectedMonth\"\n (ngModelChange)=\"onModelChange($event, '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\n class='spx-input-date__input'\n [(ngModel)]=\"selectedDay\"\n (ngModelChange)=\"onModelChange($event, '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) ||\n (selectedMonth() === valuePair.value) || \n (selectedDay() === valuePair.value)\"\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"] }] }); }
1358
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", 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 }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", 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 }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", spxChange: "spxChange", spxFocus: "spxFocus" }, 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 }], ngImport: i0, template: "<div class='spx-input-date__controls'>\r\n <input #years\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedYear\"\r\n [attr.type]=\"'number'\"\r\n (click)=\"this.handleFocus('years')\"\r\n (ngModelChange)=\"onModelChange($event, 'years')\"\r\n [attr.min]=\"1900\"\r\n [attr.max]=\"2100\"\r\n [attr.step]=\"1\"\r\n />\r\n <div class='spx-input-date__control-label'>Year</div>\r\n @if (this.spxSelectMonth()) {\r\n <input #months\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedMonth\"\r\n (ngModelChange)=\"onModelChange($event, 'months')\"\r\n (click)=\"this.handleFocus('months')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"12\"\r\n [attr.step]=\"1\" />\r\n }\r\n <div class='spx-input-date__control-label'>Month</div>\r\n @if (this.spxSelectDay()) {\r\n <input #days\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedDay\"\r\n (ngModelChange)=\"onModelChange($event, 'days')\"\r\n (click)=\"this.handleFocus('days')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"31\"\r\n [attr.step]=\"1\" />\r\n <div class='spx-input-date__control-label'>Days</div>\r\n }\r\n</div>\r\n<div class='spx-input-date__suggestions'>\r\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\r\n <spx-suggestion [spxSelected]=\"\r\n (selectedYear() === valuePair.value) ||\r\n (selectedMonth() === valuePair.value) || \r\n (selectedDay() === valuePair.value)\"\r\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\r\n }\r\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"] }] }); }
1326
1359
  }
1327
1360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputDateComponent, decorators: [{
1328
1361
  type: Component,
1329
1362
  args: [{ selector: 'spx-input-date', standalone: true, imports: [
1330
1363
  SpxSuggestionComponent,
1331
1364
  FormsModule
1332
- ], template: "<div class='spx-input-date__controls'>\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedYear\"\n [attr.type]=\"'number'\"\n (ngModelChange)=\"onModelChange($event, '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\n class='spx-input-date__input'\n [(ngModel)]=\"selectedMonth\"\n (ngModelChange)=\"onModelChange($event, '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\n class='spx-input-date__input'\n [(ngModel)]=\"selectedDay\"\n (ngModelChange)=\"onModelChange($event, '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) ||\n (selectedMonth() === valuePair.value) || \n (selectedDay() === valuePair.value)\"\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"] }]
1365
+ ], template: "<div class='spx-input-date__controls'>\r\n <input #years\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedYear\"\r\n [attr.type]=\"'number'\"\r\n (click)=\"this.handleFocus('years')\"\r\n (ngModelChange)=\"onModelChange($event, 'years')\"\r\n [attr.min]=\"1900\"\r\n [attr.max]=\"2100\"\r\n [attr.step]=\"1\"\r\n />\r\n <div class='spx-input-date__control-label'>Year</div>\r\n @if (this.spxSelectMonth()) {\r\n <input #months\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedMonth\"\r\n (ngModelChange)=\"onModelChange($event, 'months')\"\r\n (click)=\"this.handleFocus('months')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"12\"\r\n [attr.step]=\"1\" />\r\n }\r\n <div class='spx-input-date__control-label'>Month</div>\r\n @if (this.spxSelectDay()) {\r\n <input #days\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedDay\"\r\n (ngModelChange)=\"onModelChange($event, 'days')\"\r\n (click)=\"this.handleFocus('days')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"31\"\r\n [attr.step]=\"1\" />\r\n <div class='spx-input-date__control-label'>Days</div>\r\n }\r\n</div>\r\n<div class='spx-input-date__suggestions'>\r\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\r\n <spx-suggestion [spxSelected]=\"\r\n (selectedYear() === valuePair.value) ||\r\n (selectedMonth() === valuePair.value) || \r\n (selectedDay() === valuePair.value)\"\r\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\r\n }\r\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"] }]
1333
1366
  }] });
1334
1367
 
1335
1368
  class SpxInputComponent {
@@ -1450,115 +1483,115 @@ class SpxInputComponent {
1450
1483
  useExisting: SpxInputComponent,
1451
1484
  multi: true
1452
1485
  }
1453
- ], viewQueries: [{ propertyName: "floatInput", first: true, predicate: SpxInputFloatComponent, descendants: true }, { propertyName: "numberInput", first: true, predicate: SpxInputNumberComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: SpxInputTextComponent, descendants: true }, { propertyName: "timeInput", first: true, predicate: SpxInputTimeComponent, descendants: true }, { propertyName: "radioInput", first: true, predicate: SpxInputRadioComponent, descendants: true }], ngImport: i0, template: `<spx-input-box
1454
- [spxFocused]="this.spxFocused"
1455
- [spxLabel]="this.spxLabel"
1456
- [spxReadonly]="this.spxReadonly"
1457
- [spxRequired]="this.spxRequired"
1458
- [spxValue]="this.value"
1459
- [spxShowHelp]="this.spxShowHelp"
1460
- [spxCompact]="this.spxCompact"
1461
- [spxShowClear]="this.spxShowClear"
1462
- [spxShowEdit]="this.spxShowEdit"
1463
- [spxShowLabel]="this.spxShowLabel"
1464
- [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1465
- [spxShowValidationMessages]="this.spxShowValidationMessages"
1466
- (spxClear)="this.handleClear()"
1467
- (spxEdit)="this.handleEdit()"
1468
- (spxHelp)="this.handleHelp()"
1469
- (spxFocus)="this.setFocusIn()"
1470
- (spxFocusOut)="this.setFocusOut()"
1471
- (spxSearch)="this.handleSearch()">
1472
- <div controls>
1473
- @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1474
- <spx-input-text
1475
- (spxBlurFromChild)="this.handleBlur()"
1476
- (spxChange)="this.handleChange($event)"
1477
- (spxFocus)="this.handleFocus()"
1478
- [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1479
- [spxAutofocus]="this.spxAutofocus"
1480
- [spxCapitalize]="this.spxCapitalize"
1481
- [spxFocused]="this.spxFocused"
1482
- [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1483
- [spxName]="this.spxName"
1484
- [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1485
- [spxReadonly]="this.spxReadonly"
1486
- [spxSuggestions]="this.spxSuggestions"
1487
- [spxType]="this.spxType"
1488
- [spxValidators]="this.spxValidators"
1489
- [value]="this.value"
1490
- ></spx-input-text>
1491
- }
1492
- @if (this.spxType === 'date') {
1493
- <spx-input-date
1494
- (spxChange)="this.handleChange($event)"
1495
- (spxFocus)="this.handleFocus()"
1496
- [spxFocused]="this.spxFocused"
1497
- [spxMax]="this.spxMax!"
1498
- [spxMin]="this.spxMin!"
1499
- [spxReadonly]="this.spxReadonly"
1500
- [spxSelectDay]="this.spxSelectDay"
1501
- [spxSelectMonth]="this.spxSelectMonth"
1502
- [spxValidators]="this.spxValidators"
1503
- [(value)]="this.value"
1504
- ></spx-input-date>
1505
- }
1506
- @if (this.spxType === 'float') {
1507
- <spx-input-float
1508
- (spxChange)="this.handleChange($event)"
1509
- (spxFocus)="this.handleFocus()"
1510
- [spxAutofocus]="this.spxAutofocus"
1511
- [spxFocused]="this.spxFocused"
1512
- [spxName]="this.spxName"
1513
- [spxReadonly]="this.spxReadonly"
1514
- [spxStep]="this.spxStep"
1515
- [spxValidators]="this.spxValidators"
1516
- [value]="this.value"
1517
- ></spx-input-float>
1518
- }
1519
- @if (this.spxType === 'number') {
1520
- <spx-input-number
1521
- (spxChange)="this.handleChange($event)"
1522
- (spxFocus)="this.handleFocus()"
1523
- [spxAutofocus]="this.spxAutofocus"
1524
- [spxFocused]="this.spxFocused"
1525
- [spxInputMode]="this.spxInputMode"
1526
- [spxName]="this.spxName"
1527
- [spxReadonly]="this.spxReadonly"
1528
- [spxStep]="this.spxStep"
1529
- [spxValidators]="this.spxValidators"
1530
- [value]="this.value"
1531
- ></spx-input-number>
1532
- }
1533
- @if (this.spxType === 'radio') {
1534
- <spx-input-radio
1535
- #radioInput
1536
- (spxChange)="this.handleChange($event)"
1537
- [spxFocused]="this.spxFocused"
1538
- [spxName]="this.spxName"
1539
- [spxReadonly]="this.spxReadonly"
1540
- [spxShowLabel]="this.spxShowLabel"
1541
- [spxSuggestions]="this.spxSuggestions"
1542
- [spxValidators]="this.spxValidators"
1543
- [value]="this.value"
1544
- ></spx-input-radio>
1545
- }
1546
- @if (this.spxType === 'time') {
1547
- <spx-input-time
1548
- #timeInput
1549
- (spxChange)="this.handleChange($event)"
1550
- (spxFocus)="this.handleFocus()"
1551
- [spxFocused]="this.spxFocused"
1552
- [spxName]="this.spxName"
1553
- [spxReadonly]="this.spxReadonly"
1554
- [spxValidators]="this.spxValidators"
1555
- [value]="this.value"
1556
- ></spx-input-time>
1557
- }
1558
- </div>
1559
- <div validation-messages>
1560
- <ng-content></ng-content>
1561
- </div>
1486
+ ], viewQueries: [{ propertyName: "floatInput", first: true, predicate: SpxInputFloatComponent, descendants: true }, { propertyName: "numberInput", first: true, predicate: SpxInputNumberComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: SpxInputTextComponent, descendants: true }, { propertyName: "timeInput", first: true, predicate: SpxInputTimeComponent, descendants: true }, { propertyName: "radioInput", first: true, predicate: SpxInputRadioComponent, descendants: true }], ngImport: i0, template: `<spx-input-box
1487
+ [spxFocused]="this.spxFocused"
1488
+ [spxLabel]="this.spxLabel"
1489
+ [spxReadonly]="this.spxReadonly"
1490
+ [spxRequired]="this.spxRequired"
1491
+ [spxValue]="this.value"
1492
+ [spxShowHelp]="this.spxShowHelp"
1493
+ [spxCompact]="this.spxCompact"
1494
+ [spxShowClear]="this.spxShowClear"
1495
+ [spxShowEdit]="this.spxShowEdit"
1496
+ [spxShowLabel]="this.spxShowLabel"
1497
+ [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1498
+ [spxShowValidationMessages]="this.spxShowValidationMessages"
1499
+ (spxClear)="this.handleClear()"
1500
+ (spxEdit)="this.handleEdit()"
1501
+ (spxHelp)="this.handleHelp()"
1502
+ (spxFocus)="this.setFocusIn()"
1503
+ (spxFocusOut)="this.setFocusOut()"
1504
+ (spxSearch)="this.handleSearch()">
1505
+ <div controls>
1506
+ @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1507
+ <spx-input-text
1508
+ (spxBlurFromChild)="this.handleBlur()"
1509
+ (spxChange)="this.handleChange($event)"
1510
+ (spxFocus)="this.handleFocus()"
1511
+ [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1512
+ [spxAutofocus]="this.spxAutofocus"
1513
+ [spxCapitalize]="this.spxCapitalize"
1514
+ [spxFocused]="this.spxFocused"
1515
+ [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1516
+ [spxName]="this.spxName"
1517
+ [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1518
+ [spxReadonly]="this.spxReadonly"
1519
+ [spxSuggestions]="this.spxSuggestions"
1520
+ [spxType]="this.spxType"
1521
+ [spxValidators]="this.spxValidators"
1522
+ [value]="this.value"
1523
+ ></spx-input-text>
1524
+ }
1525
+ @if (this.spxType === 'date') {
1526
+ <spx-input-date
1527
+ (spxChange)="this.handleChange($event)"
1528
+ (spxFocus)="this.handleFocus()"
1529
+ [spxFocused]="this.spxFocused"
1530
+ [spxMax]="this.spxMax!"
1531
+ [spxMin]="this.spxMin!"
1532
+ [spxReadonly]="this.spxReadonly"
1533
+ [spxSelectDay]="this.spxSelectDay"
1534
+ [spxSelectMonth]="this.spxSelectMonth"
1535
+ [spxValidators]="this.spxValidators"
1536
+ [(value)]="this.value"
1537
+ ></spx-input-date>
1538
+ }
1539
+ @if (this.spxType === 'float') {
1540
+ <spx-input-float
1541
+ (spxChange)="this.handleChange($event)"
1542
+ (spxFocus)="this.handleFocus()"
1543
+ [spxAutofocus]="this.spxAutofocus"
1544
+ [spxFocused]="this.spxFocused"
1545
+ [spxName]="this.spxName"
1546
+ [spxReadonly]="this.spxReadonly"
1547
+ [spxStep]="this.spxStep"
1548
+ [spxValidators]="this.spxValidators"
1549
+ [value]="this.value"
1550
+ ></spx-input-float>
1551
+ }
1552
+ @if (this.spxType === 'number') {
1553
+ <spx-input-number
1554
+ (spxChange)="this.handleChange($event)"
1555
+ (spxFocus)="this.handleFocus()"
1556
+ [spxAutofocus]="this.spxAutofocus"
1557
+ [spxFocused]="this.spxFocused"
1558
+ [spxInputMode]="this.spxInputMode"
1559
+ [spxName]="this.spxName"
1560
+ [spxReadonly]="this.spxReadonly"
1561
+ [spxStep]="this.spxStep"
1562
+ [spxValidators]="this.spxValidators"
1563
+ [value]="this.value"
1564
+ ></spx-input-number>
1565
+ }
1566
+ @if (this.spxType === 'radio') {
1567
+ <spx-input-radio
1568
+ #radioInput
1569
+ (spxChange)="this.handleChange($event)"
1570
+ [spxFocused]="this.spxFocused"
1571
+ [spxName]="this.spxName"
1572
+ [spxReadonly]="this.spxReadonly"
1573
+ [spxShowLabel]="this.spxShowLabel"
1574
+ [spxSuggestions]="this.spxSuggestions"
1575
+ [spxValidators]="this.spxValidators"
1576
+ [value]="this.value"
1577
+ ></spx-input-radio>
1578
+ }
1579
+ @if (this.spxType === 'time') {
1580
+ <spx-input-time
1581
+ #timeInput
1582
+ (spxChange)="this.handleChange($event)"
1583
+ (spxFocus)="this.handleFocus()"
1584
+ [spxFocused]="this.spxFocused"
1585
+ [spxName]="this.spxName"
1586
+ [spxReadonly]="this.spxReadonly"
1587
+ [spxValidators]="this.spxValidators"
1588
+ [value]="this.value"
1589
+ ></spx-input-time>
1590
+ }
1591
+ </div>
1592
+ <div validation-messages>
1593
+ <ng-content></ng-content>
1594
+ </div>
1562
1595
  </spx-input-box>`, isInline: true, dependencies: [{ kind: "component", type: SpxInputBoxComponent, selector: "spx-input-box", inputs: ["spxCompact", "spxFocused", "spxLabel", "spxReadonly", "spxRequired", "spxShowClear", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxShowSearch", "spxShowValidationMessages", "spxValue"], outputs: ["spxClear", "spxSearch", "spxFocus", "spxFocusOut", "spxEdit", "spxHelp"] }, { kind: "component", type: SpxInputDateComponent, selector: "spx-input-date", inputs: ["spxMax", "spxMin", "spxReadonly", "spxValidators", "value", "spxFocused", "spxSelectDay", "spxSelectMonth", "spxSuggestions"], outputs: ["valueChange", "spxChange", "spxFocus"] }, { kind: "component", type: SpxInputFloatComponent, selector: "spx-input-float", inputs: ["spxName", "spxAutofocus", "spxReadonly", "spxValidators", "spxFocused", "spxStep", "value", "spxWasInternalUpdate", "tick"], outputs: ["spxChange", "spxFocus"] }, { kind: "component", type: SpxInputNumberComponent, selector: "spx-input-number", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxReadonly", "spxValidators", "spxFocused", "spxStep", "value"], outputs: ["spxChange", "spxFocus"] }, { kind: "component", type: SpxInputRadioComponent, selector: "spx-input-radio", inputs: ["spxName", "spxValidators", "spxFocused", "spxShowLabel", "spxReadonly", "spxSuggestions", "value"], outputs: ["spxChange", "spxFocus"] }, { kind: "component", type: SpxInputTextComponent, selector: "spx-input-text", inputs: ["spxName", "spxAutofocus", "spxAutocomplete", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "spxFocused", "spxType", "value", "spxWasInternalUpdate"], outputs: ["spxBlurFromChild", "spxChange", "spxFocus"] }, { kind: "component", type: SpxInputTimeComponent, selector: "spx-input-time", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "spxFocused", "spxType", "value", "spxWasInternalUpdate"], outputs: ["spxBlurFromChild", "spxChange", "spxFocus"] }] }); }
1563
1596
  }
1564
1597
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputComponent, decorators: [{
@@ -1585,115 +1618,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1585
1618
  multi: true
1586
1619
  }
1587
1620
  ],
1588
- template: `<spx-input-box
1589
- [spxFocused]="this.spxFocused"
1590
- [spxLabel]="this.spxLabel"
1591
- [spxReadonly]="this.spxReadonly"
1592
- [spxRequired]="this.spxRequired"
1593
- [spxValue]="this.value"
1594
- [spxShowHelp]="this.spxShowHelp"
1595
- [spxCompact]="this.spxCompact"
1596
- [spxShowClear]="this.spxShowClear"
1597
- [spxShowEdit]="this.spxShowEdit"
1598
- [spxShowLabel]="this.spxShowLabel"
1599
- [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1600
- [spxShowValidationMessages]="this.spxShowValidationMessages"
1601
- (spxClear)="this.handleClear()"
1602
- (spxEdit)="this.handleEdit()"
1603
- (spxHelp)="this.handleHelp()"
1604
- (spxFocus)="this.setFocusIn()"
1605
- (spxFocusOut)="this.setFocusOut()"
1606
- (spxSearch)="this.handleSearch()">
1607
- <div controls>
1608
- @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1609
- <spx-input-text
1610
- (spxBlurFromChild)="this.handleBlur()"
1611
- (spxChange)="this.handleChange($event)"
1612
- (spxFocus)="this.handleFocus()"
1613
- [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1614
- [spxAutofocus]="this.spxAutofocus"
1615
- [spxCapitalize]="this.spxCapitalize"
1616
- [spxFocused]="this.spxFocused"
1617
- [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1618
- [spxName]="this.spxName"
1619
- [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1620
- [spxReadonly]="this.spxReadonly"
1621
- [spxSuggestions]="this.spxSuggestions"
1622
- [spxType]="this.spxType"
1623
- [spxValidators]="this.spxValidators"
1624
- [value]="this.value"
1625
- ></spx-input-text>
1626
- }
1627
- @if (this.spxType === 'date') {
1628
- <spx-input-date
1629
- (spxChange)="this.handleChange($event)"
1630
- (spxFocus)="this.handleFocus()"
1631
- [spxFocused]="this.spxFocused"
1632
- [spxMax]="this.spxMax!"
1633
- [spxMin]="this.spxMin!"
1634
- [spxReadonly]="this.spxReadonly"
1635
- [spxSelectDay]="this.spxSelectDay"
1636
- [spxSelectMonth]="this.spxSelectMonth"
1637
- [spxValidators]="this.spxValidators"
1638
- [(value)]="this.value"
1639
- ></spx-input-date>
1640
- }
1641
- @if (this.spxType === 'float') {
1642
- <spx-input-float
1643
- (spxChange)="this.handleChange($event)"
1644
- (spxFocus)="this.handleFocus()"
1645
- [spxAutofocus]="this.spxAutofocus"
1646
- [spxFocused]="this.spxFocused"
1647
- [spxName]="this.spxName"
1648
- [spxReadonly]="this.spxReadonly"
1649
- [spxStep]="this.spxStep"
1650
- [spxValidators]="this.spxValidators"
1651
- [value]="this.value"
1652
- ></spx-input-float>
1653
- }
1654
- @if (this.spxType === 'number') {
1655
- <spx-input-number
1656
- (spxChange)="this.handleChange($event)"
1657
- (spxFocus)="this.handleFocus()"
1658
- [spxAutofocus]="this.spxAutofocus"
1659
- [spxFocused]="this.spxFocused"
1660
- [spxInputMode]="this.spxInputMode"
1661
- [spxName]="this.spxName"
1662
- [spxReadonly]="this.spxReadonly"
1663
- [spxStep]="this.spxStep"
1664
- [spxValidators]="this.spxValidators"
1665
- [value]="this.value"
1666
- ></spx-input-number>
1667
- }
1668
- @if (this.spxType === 'radio') {
1669
- <spx-input-radio
1670
- #radioInput
1671
- (spxChange)="this.handleChange($event)"
1672
- [spxFocused]="this.spxFocused"
1673
- [spxName]="this.spxName"
1674
- [spxReadonly]="this.spxReadonly"
1675
- [spxShowLabel]="this.spxShowLabel"
1676
- [spxSuggestions]="this.spxSuggestions"
1677
- [spxValidators]="this.spxValidators"
1678
- [value]="this.value"
1679
- ></spx-input-radio>
1680
- }
1681
- @if (this.spxType === 'time') {
1682
- <spx-input-time
1683
- #timeInput
1684
- (spxChange)="this.handleChange($event)"
1685
- (spxFocus)="this.handleFocus()"
1686
- [spxFocused]="this.spxFocused"
1687
- [spxName]="this.spxName"
1688
- [spxReadonly]="this.spxReadonly"
1689
- [spxValidators]="this.spxValidators"
1690
- [value]="this.value"
1691
- ></spx-input-time>
1692
- }
1693
- </div>
1694
- <div validation-messages>
1695
- <ng-content></ng-content>
1696
- </div>
1621
+ template: `<spx-input-box
1622
+ [spxFocused]="this.spxFocused"
1623
+ [spxLabel]="this.spxLabel"
1624
+ [spxReadonly]="this.spxReadonly"
1625
+ [spxRequired]="this.spxRequired"
1626
+ [spxValue]="this.value"
1627
+ [spxShowHelp]="this.spxShowHelp"
1628
+ [spxCompact]="this.spxCompact"
1629
+ [spxShowClear]="this.spxShowClear"
1630
+ [spxShowEdit]="this.spxShowEdit"
1631
+ [spxShowLabel]="this.spxShowLabel"
1632
+ [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1633
+ [spxShowValidationMessages]="this.spxShowValidationMessages"
1634
+ (spxClear)="this.handleClear()"
1635
+ (spxEdit)="this.handleEdit()"
1636
+ (spxHelp)="this.handleHelp()"
1637
+ (spxFocus)="this.setFocusIn()"
1638
+ (spxFocusOut)="this.setFocusOut()"
1639
+ (spxSearch)="this.handleSearch()">
1640
+ <div controls>
1641
+ @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1642
+ <spx-input-text
1643
+ (spxBlurFromChild)="this.handleBlur()"
1644
+ (spxChange)="this.handleChange($event)"
1645
+ (spxFocus)="this.handleFocus()"
1646
+ [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1647
+ [spxAutofocus]="this.spxAutofocus"
1648
+ [spxCapitalize]="this.spxCapitalize"
1649
+ [spxFocused]="this.spxFocused"
1650
+ [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1651
+ [spxName]="this.spxName"
1652
+ [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1653
+ [spxReadonly]="this.spxReadonly"
1654
+ [spxSuggestions]="this.spxSuggestions"
1655
+ [spxType]="this.spxType"
1656
+ [spxValidators]="this.spxValidators"
1657
+ [value]="this.value"
1658
+ ></spx-input-text>
1659
+ }
1660
+ @if (this.spxType === 'date') {
1661
+ <spx-input-date
1662
+ (spxChange)="this.handleChange($event)"
1663
+ (spxFocus)="this.handleFocus()"
1664
+ [spxFocused]="this.spxFocused"
1665
+ [spxMax]="this.spxMax!"
1666
+ [spxMin]="this.spxMin!"
1667
+ [spxReadonly]="this.spxReadonly"
1668
+ [spxSelectDay]="this.spxSelectDay"
1669
+ [spxSelectMonth]="this.spxSelectMonth"
1670
+ [spxValidators]="this.spxValidators"
1671
+ [(value)]="this.value"
1672
+ ></spx-input-date>
1673
+ }
1674
+ @if (this.spxType === 'float') {
1675
+ <spx-input-float
1676
+ (spxChange)="this.handleChange($event)"
1677
+ (spxFocus)="this.handleFocus()"
1678
+ [spxAutofocus]="this.spxAutofocus"
1679
+ [spxFocused]="this.spxFocused"
1680
+ [spxName]="this.spxName"
1681
+ [spxReadonly]="this.spxReadonly"
1682
+ [spxStep]="this.spxStep"
1683
+ [spxValidators]="this.spxValidators"
1684
+ [value]="this.value"
1685
+ ></spx-input-float>
1686
+ }
1687
+ @if (this.spxType === 'number') {
1688
+ <spx-input-number
1689
+ (spxChange)="this.handleChange($event)"
1690
+ (spxFocus)="this.handleFocus()"
1691
+ [spxAutofocus]="this.spxAutofocus"
1692
+ [spxFocused]="this.spxFocused"
1693
+ [spxInputMode]="this.spxInputMode"
1694
+ [spxName]="this.spxName"
1695
+ [spxReadonly]="this.spxReadonly"
1696
+ [spxStep]="this.spxStep"
1697
+ [spxValidators]="this.spxValidators"
1698
+ [value]="this.value"
1699
+ ></spx-input-number>
1700
+ }
1701
+ @if (this.spxType === 'radio') {
1702
+ <spx-input-radio
1703
+ #radioInput
1704
+ (spxChange)="this.handleChange($event)"
1705
+ [spxFocused]="this.spxFocused"
1706
+ [spxName]="this.spxName"
1707
+ [spxReadonly]="this.spxReadonly"
1708
+ [spxShowLabel]="this.spxShowLabel"
1709
+ [spxSuggestions]="this.spxSuggestions"
1710
+ [spxValidators]="this.spxValidators"
1711
+ [value]="this.value"
1712
+ ></spx-input-radio>
1713
+ }
1714
+ @if (this.spxType === 'time') {
1715
+ <spx-input-time
1716
+ #timeInput
1717
+ (spxChange)="this.handleChange($event)"
1718
+ (spxFocus)="this.handleFocus()"
1719
+ [spxFocused]="this.spxFocused"
1720
+ [spxName]="this.spxName"
1721
+ [spxReadonly]="this.spxReadonly"
1722
+ [spxValidators]="this.spxValidators"
1723
+ [value]="this.value"
1724
+ ></spx-input-time>
1725
+ }
1726
+ </div>
1727
+ <div validation-messages>
1728
+ <ng-content></ng-content>
1729
+ </div>
1697
1730
  </spx-input-box>`,
1698
1731
  }]
1699
1732
  }], propDecorators: { spxLabel: [{