@softpak/components 19.0.0-beta.1 → 19.0.0-beta.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 (195) hide show
  1. package/esm2022/placeholder.mjs +2 -0
  2. package/esm2022/public_api.mjs +2 -0
  3. package/esm2022/softpak-components.mjs +5 -0
  4. package/esm2022/spx-alert/public-api.mjs +3 -0
  5. package/esm2022/spx-alert/softpak-components-spx-alert.mjs +5 -0
  6. package/esm2022/spx-alert/spx-alert.component.mjs +203 -0
  7. package/esm2022/spx-alert/spx-alert.interface.mjs +3 -0
  8. package/esm2022/spx-app-configuration/public-api.mjs +8 -0
  9. package/esm2022/spx-app-configuration/softpak-components-spx-app-configuration.mjs +5 -0
  10. package/esm2022/spx-app-configuration/spx-app-alert.interface.mjs +2 -0
  11. package/esm2022/spx-app-configuration/spx-app-bundle-set.interface.mjs +2 -0
  12. package/esm2022/spx-app-configuration/spx-app-channel-type.enum.mjs +8 -0
  13. package/esm2022/spx-app-configuration/spx-app-channel.interface.mjs +2 -0
  14. package/esm2022/spx-app-configuration/spx-app-config.interface.mjs +2 -0
  15. package/esm2022/spx-app-configuration/spx-app-id.enum.mjs +8 -0
  16. package/esm2022/spx-app-configuration/spx-app-lang.enum.mjs +6 -0
  17. package/esm2022/spx-app-configuration/spx-app-release-note.interface.mjs +2 -0
  18. package/esm2022/spx-app-expiry/public-api.mjs +6 -0
  19. package/esm2022/spx-app-expiry/softpak-components-spx-app-expiry.mjs +5 -0
  20. package/esm2022/spx-app-expiry/spx-app-expiry.component.mjs +107 -0
  21. package/esm2022/spx-app-expiry/spx-app-expiry.interface.mjs +2 -0
  22. package/esm2022/spx-app-expiry/spx-check-expiry-final-warning.interface.mjs +5 -0
  23. package/esm2022/spx-app-expiry/spx-check-expiry-happened.interface.mjs +5 -0
  24. package/esm2022/spx-app-expiry/spx-check-expiry-warning.interface.mjs +5 -0
  25. package/esm2022/spx-app-update/public-api.mjs +2 -0
  26. package/esm2022/spx-app-update/softpak-components-spx-app-update.mjs +5 -0
  27. package/esm2022/spx-app-update/spx-app-update.component.mjs +323 -0
  28. package/esm2022/spx-button/public-api.mjs +2 -0
  29. package/esm2022/spx-button/softpak-components-spx-button.mjs +5 -0
  30. package/esm2022/spx-button/spx-button.component.mjs +142 -0
  31. package/esm2022/spx-capitalize/public-api.mjs +2 -0
  32. package/esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs +5 -0
  33. package/esm2022/spx-capitalize/spx-capitalize.pipe.mjs +20 -0
  34. package/esm2022/spx-card/public-api.mjs +5 -0
  35. package/esm2022/spx-card/softpak-components-spx-card.mjs +5 -0
  36. package/esm2022/spx-card/spx-card-grid.component.mjs +46 -0
  37. package/esm2022/spx-card/spx-card-item.component.mjs +117 -0
  38. package/esm2022/spx-card/spx-card-line.component.mjs +124 -0
  39. package/esm2022/spx-card/spx-card.component.mjs +96 -0
  40. package/esm2022/spx-change-details/public-api.mjs +2 -0
  41. package/esm2022/spx-change-details/softpak-components-spx-change-details.mjs +5 -0
  42. package/esm2022/spx-change-details/spx-change-details-value.interface.mjs +2 -0
  43. package/esm2022/spx-change-details/spx-change-details.component.mjs +197 -0
  44. package/esm2022/spx-channel-selection/public-api.mjs +3 -0
  45. package/esm2022/spx-channel-selection/softpak-components-spx-channel-selection.mjs +5 -0
  46. package/esm2022/spx-channel-selection/src/spx-channel-indicator.component.mjs +45 -0
  47. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +132 -0
  48. package/esm2022/spx-check-digit/public-api.mjs +2 -0
  49. package/esm2022/spx-check-digit/softpak-components-spx-check-digit.mjs +5 -0
  50. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +91 -0
  51. package/esm2022/spx-form-section/public-api.mjs +2 -0
  52. package/esm2022/spx-form-section/softpak-components-spx-form-section.mjs +5 -0
  53. package/esm2022/spx-form-section/spx-form-section.component.mjs +42 -0
  54. package/esm2022/spx-form-view/public-api.mjs +7 -0
  55. package/esm2022/spx-form-view/softpak-components-spx-form-view.mjs +5 -0
  56. package/esm2022/spx-form-view/spx-autocomplete-search.component.mjs +117 -0
  57. package/esm2022/spx-form-view/spx-form-button-type.enum.mjs +6 -0
  58. package/esm2022/spx-form-view/spx-form-button.interface.mjs +2 -0
  59. package/esm2022/spx-form-view/spx-form-field.interface.mjs +2 -0
  60. package/esm2022/spx-form-view/spx-form-section.interface.mjs +2 -0
  61. package/esm2022/spx-form-view/spx-form-view.component.mjs +297 -0
  62. package/esm2022/spx-form-view/spx-form.interface.mjs +2 -0
  63. package/esm2022/spx-helpers/calc-check-digit.function.mjs +21 -0
  64. package/esm2022/spx-helpers/public-api.mjs +4 -0
  65. package/esm2022/spx-helpers/softpak-components-spx-helpers.mjs +5 -0
  66. package/esm2022/spx-helpers/spx-severity.enum.mjs +10 -0
  67. package/esm2022/spx-helpers/value-pair-to-value.function.mjs +7 -0
  68. package/esm2022/spx-inputs/public-api.mjs +6 -0
  69. package/esm2022/spx-inputs/softpak-components-spx-inputs.mjs +5 -0
  70. package/esm2022/spx-inputs/spx-dropdown.component.mjs +93 -0
  71. package/esm2022/spx-inputs/spx-input-box.component.mjs +273 -0
  72. package/esm2022/spx-inputs/spx-input-date/spx-input-date.component.mjs +194 -0
  73. package/esm2022/spx-inputs/spx-input-float.component.mjs +157 -0
  74. package/esm2022/spx-inputs/spx-input-number.component.mjs +87 -0
  75. package/esm2022/spx-inputs/spx-input-radio.component.mjs +129 -0
  76. package/esm2022/spx-inputs/spx-input-text.component.mjs +160 -0
  77. package/esm2022/spx-inputs/spx-input-time-modal.component.mjs +131 -0
  78. package/esm2022/spx-inputs/spx-input-time.component.mjs +156 -0
  79. package/esm2022/spx-inputs/spx-input-type.enum.mjs +17 -0
  80. package/esm2022/spx-inputs/spx-input.component.mjs +461 -0
  81. package/esm2022/spx-inputs/spx-value-interface.mjs +2 -0
  82. package/esm2022/spx-navigation/public-api.mjs +5 -0
  83. package/esm2022/spx-navigation/softpak-components-spx-navigation.mjs +5 -0
  84. package/esm2022/spx-navigation/spx-home-tile.component.mjs +71 -0
  85. package/esm2022/spx-navigation/spx-home-tiles.component.mjs +24 -0
  86. package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +2 -0
  87. package/esm2022/spx-navigation/spx-navigation.component.mjs +47 -0
  88. package/esm2022/spx-number-check/public-api.mjs +2 -0
  89. package/esm2022/spx-number-check/softpak-components-spx-number-check.mjs +5 -0
  90. package/esm2022/spx-number-check/spx-number-check.component.mjs +265 -0
  91. package/esm2022/spx-pagination/public-api.mjs +2 -0
  92. package/esm2022/spx-pagination/softpak-components-spx-pagination.mjs +5 -0
  93. package/esm2022/spx-pagination/spx-pagination.component.mjs +44 -0
  94. package/esm2022/spx-patch/patch-check.function.mjs +9 -0
  95. package/esm2022/spx-patch/public-api.mjs +4 -0
  96. package/esm2022/spx-patch/release-check.function.mjs +14 -0
  97. package/esm2022/spx-patch/softpak-components-spx-patch.mjs +5 -0
  98. package/esm2022/spx-patch/spx-patch.component.mjs +54 -0
  99. package/esm2022/spx-progress-bar/public-api.mjs +2 -0
  100. package/esm2022/spx-progress-bar/softpak-components-spx-progress-bar.mjs +5 -0
  101. package/esm2022/spx-progress-bar/spx-progress-bar.component.mjs +29 -0
  102. package/esm2022/spx-spinner/public-api.mjs +2 -0
  103. package/esm2022/spx-spinner/softpak-components-spx-spinner.mjs +5 -0
  104. package/esm2022/spx-spinner/spx-spinner.component.mjs +160 -0
  105. package/esm2022/spx-stock-info/public-api.mjs +3 -0
  106. package/esm2022/spx-stock-info/softpak-components-spx-stock-info.mjs +5 -0
  107. package/esm2022/spx-stock-info/spx-stock-info-value.interface.mjs +2 -0
  108. package/esm2022/spx-stock-info/spx-stock-info.component.mjs +324 -0
  109. package/esm2022/spx-storage/public-api.mjs +3 -0
  110. package/esm2022/spx-storage/softpak-components-spx-storage.mjs +5 -0
  111. package/esm2022/spx-storage/src/spx-storage-key.enum.mjs +13 -0
  112. package/esm2022/spx-storage/src/spx-storage.class.mjs +45 -0
  113. package/esm2022/spx-suggestion/public-api.mjs +2 -0
  114. package/esm2022/spx-suggestion/softpak-components-spx-suggestion.mjs +5 -0
  115. package/esm2022/spx-suggestion/spx-suggestion.component.mjs +61 -0
  116. package/esm2022/spx-toaster/public-api.mjs +4 -0
  117. package/esm2022/spx-toaster/softpak-components-spx-toaster.mjs +5 -0
  118. package/esm2022/spx-toaster/src/spx-toaster-autoclose-speed.mjs +23 -0
  119. package/esm2022/spx-toaster/src/spx-toaster-message.interface.mjs +3 -0
  120. package/esm2022/spx-toaster/src/spx-toaster.component.mjs +168 -0
  121. package/esm2022/spx-update/public-api.mjs +3 -0
  122. package/esm2022/spx-update/softpak-components-spx-update.mjs +5 -0
  123. package/esm2022/spx-update/src/spx-update-info.component.mjs +86 -0
  124. package/esm2022/spx-update/src/spx-update-progress.component.mjs +46 -0
  125. package/esm2022/spx-validation/max.validator.mjs +17 -0
  126. package/esm2022/spx-validation/maxlength.validator.mjs +20 -0
  127. package/esm2022/spx-validation/min.validator.mjs +17 -0
  128. package/esm2022/spx-validation/minlength.validator.mjs +20 -0
  129. package/esm2022/spx-validation/pattern.validator.mjs +12 -0
  130. package/esm2022/spx-validation/public-api.mjs +9 -0
  131. package/esm2022/spx-validation/required.validator.mjs +12 -0
  132. package/esm2022/spx-validation/softpak-components-spx-validation.mjs +5 -0
  133. package/esm2022/spx-validation/spx-validate-control.component.mjs +65 -0
  134. package/esm2022/spx-validation/year-and-month.validator.mjs +42 -0
  135. package/fesm2022/softpak-components-spx-alert.mjs +56 -45
  136. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -1
  137. package/fesm2022/softpak-components-spx-app-configuration.mjs.map +1 -1
  138. package/fesm2022/softpak-components-spx-app-expiry.mjs +59 -41
  139. package/fesm2022/softpak-components-spx-app-expiry.mjs.map +1 -1
  140. package/fesm2022/softpak-components-spx-app-update.mjs +74 -68
  141. package/fesm2022/softpak-components-spx-app-update.mjs.map +1 -1
  142. package/fesm2022/softpak-components-spx-button.mjs +5 -4
  143. package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
  144. package/fesm2022/softpak-components-spx-capitalize.mjs +3 -3
  145. package/fesm2022/softpak-components-spx-capitalize.mjs.map +1 -1
  146. package/fesm2022/softpak-components-spx-card.mjs +163 -127
  147. package/fesm2022/softpak-components-spx-card.mjs.map +1 -1
  148. package/fesm2022/softpak-components-spx-change-details.mjs +5 -7
  149. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  150. package/fesm2022/softpak-components-spx-channel-selection.mjs +11 -12
  151. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  152. package/fesm2022/softpak-components-spx-check-digit.mjs +6 -9
  153. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  154. package/fesm2022/softpak-components-spx-form-section.mjs +20 -15
  155. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  156. package/fesm2022/softpak-components-spx-form-view.mjs +147 -139
  157. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  158. package/fesm2022/softpak-components-spx-helpers.mjs +1 -0
  159. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -1
  160. package/fesm2022/softpak-components-spx-inputs.mjs +817 -862
  161. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  162. package/fesm2022/softpak-components-spx-navigation.mjs +53 -52
  163. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  164. package/fesm2022/softpak-components-spx-number-check.mjs +49 -42
  165. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -1
  166. package/fesm2022/softpak-components-spx-pagination.mjs +4 -4
  167. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -1
  168. package/fesm2022/softpak-components-spx-patch.mjs +29 -22
  169. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -1
  170. package/fesm2022/softpak-components-spx-progress-bar.mjs +3 -3
  171. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -1
  172. package/fesm2022/softpak-components-spx-spinner.mjs +144 -143
  173. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -1
  174. package/fesm2022/softpak-components-spx-stock-info.mjs +8 -11
  175. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  176. package/fesm2022/softpak-components-spx-storage.mjs.map +1 -1
  177. package/fesm2022/softpak-components-spx-suggestion.mjs +41 -49
  178. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -1
  179. package/fesm2022/softpak-components-spx-toaster.mjs +94 -98
  180. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -1
  181. package/fesm2022/softpak-components-spx-update.mjs +11 -11
  182. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  183. package/fesm2022/softpak-components-spx-validation.mjs +5 -8
  184. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -1
  185. package/package.json +76 -23
  186. package/spx-app-update/spx-app-update.component.d.ts +3 -3
  187. package/spx-helpers/spx-severity.enum.d.ts +2 -1
  188. package/spx-inputs/spx-input-date/spx-input-date.component.d.ts +43 -0
  189. package/spx-inputs/spx-input-float.component.d.ts +5 -4
  190. package/spx-inputs/spx-input-text.component.d.ts +2 -1
  191. package/spx-inputs/spx-input-time.component.d.ts +1 -1
  192. package/spx-inputs/spx-input.component.d.ts +2 -1
  193. package/spx-suggestion/spx-suggestion.component.d.ts +5 -5
  194. package/tailwind.css +1 -1
  195. package/spx-inputs/spx-input-date.component.d.ts +0 -50
@@ -1,17 +1,18 @@
1
- import { NgIf, NgFor } from '@angular/common';
2
1
  import * as i0 from '@angular/core';
3
- import { EventEmitter, Component, Input, Output, HostListener, ViewChild } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, HostListener, ViewChild, input, model, output, signal, viewChild, computed } from '@angular/core';
4
3
  import { SpxButtonComponent } from '@softpak/components/spx-button';
5
4
  import * as i1 from '@fortawesome/angular-fontawesome';
6
5
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
7
6
  import { faEdit, faSearch, faQuestion, faTimes, faXmark } from '@fortawesome/free-solid-svg-icons';
8
7
  import { fromEvent } from 'rxjs';
9
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+ import * as i1$1 from '@angular/forms';
9
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
10
10
  import { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';
11
- import { DateTime } from 'luxon';
12
11
  import { valuePairToValue, SpxSeverityEnum } from '@softpak/components/spx-helpers';
13
- import * as i1$1 from '@ionic/angular/standalone';
14
- import { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, IonButton } from '@ionic/angular/standalone';
12
+ import { DateTime } from 'luxon';
13
+ import * as i1$2 from '@ionic/angular/standalone';
14
+ import { IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular/standalone';
15
+ import * as i1$3 from '@ionic/angular';
15
16
 
16
17
  class SpxInputBoxComponent {
17
18
  handleFocusIn(ev) {
@@ -71,147 +72,167 @@ class SpxInputBoxComponent {
71
72
  this.spxFocusOut.emit();
72
73
  }
73
74
  }
74
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", 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
- <div *ngIf="this.spxShowLabel" class="font-bold text-sm mb-1 text-gray-800"
90
- [class.mb-0]="this.spxCompact"
91
- [class.px-3]="this.spxCompact">
92
- {{this.spxLabel}} <span *ngIf="spxRequired" class="text-red-800">*</span>
93
- </div>
75
+ 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 }); }
76
+ 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"
77
+ [class.rounded-none]="this.spxShowValidationMessages"
78
+ [class.rounded-t]="this.spxShowValidationMessages"
79
+ [class.outline-none]="this.spxFocused && !this.spxReadonly"
80
+ [class.ring-2]="this.spxFocused && !this.spxReadonly"
81
+ [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
82
+ [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
83
+ [class.bg-white]="!this.spxReadonly"
84
+ [class.bg-gray-300]="this.spxReadonly"
85
+ [class.cursor-not-allowed]="this.spxReadonly">
86
+ <div class="flex-auto p-3"
87
+ [class.p-0]="this.spxCompact"
88
+ [class.flex]="this.spxCompact"
89
+ [class.items-center]="this.spxCompact">
90
+ @if (this.spxShowLabel) {
91
+ <div class="font-bold text-sm mb-1 text-gray-800"
92
+ [class.mb-0]="this.spxCompact"
93
+ [class.px-3]="this.spxCompact">
94
+ {{this.spxLabel}} @if (spxRequired) {
95
+ <span class="text-red-800">*</span>
96
+ }
97
+ </div>
98
+ }
94
99
  <ng-content select="[controls]"></ng-content>
95
100
  </div>
96
101
  <div class="flex flex-none gap-1 p-1">
97
- <spx-button
98
- *ngIf="this.spxShowEdit"
99
- (spxClick)="onEdit()"
100
- [spxFullHeight]="true"
101
- [spxSize]="'xl'"
102
- [spxType]="'button'">
103
- <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
104
- </spx-button>
105
- <spx-button
106
- *ngIf="this.spxShowHelp"
107
- (spxClick)="onHelp()"
108
- [spxFullHeight]="true"
109
- [spxDisabled]="this.spxReadonly"
110
- [spxSize]="'xl'"
111
- [spxTabIndex]="-1"
112
- [spxType]="'button'">
113
- <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
114
- </spx-button>
115
- <spx-button
116
- *ngIf="this.spxShowSearch"
117
- (spxClick)="onSearch()"
118
- [spxFullHeight]="true"
119
- [spxDisabled]="this.spxReadonly"
120
- [spxSize]="'xl'"
121
- [spxTabIndex]="-1"
122
- [spxType]="'button'">
123
- <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
124
- </spx-button>
125
- <spx-button
126
- *ngIf="this.spxShowClear"
127
- (spxClick)="onClear()"
128
- [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
129
- [spxFullHeight]="true"
130
- [spxSize]="'xl'"
131
- [spxTabIndex]="-1"
132
- [spxType]="'button'">
133
- <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
134
- </spx-button>
102
+ @if (this.spxShowEdit) {
103
+ <spx-button
104
+ (spxClick)="onEdit()"
105
+ [spxFullHeight]="true"
106
+ [spxSize]="'xl'"
107
+ [spxType]="'button'">
108
+ <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
109
+ </spx-button>
110
+ }
111
+ @if (this.spxShowHelp) {
112
+ <spx-button
113
+ (spxClick)="onHelp()"
114
+ [spxFullHeight]="true"
115
+ [spxDisabled]="this.spxReadonly"
116
+ [spxSize]="'xl'"
117
+ [spxTabIndex]="-1"
118
+ [spxType]="'button'">
119
+ <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
120
+ </spx-button>
121
+ }
122
+ @if (this.spxShowSearch) {
123
+ <spx-button
124
+ (spxClick)="onSearch()"
125
+ [spxFullHeight]="true"
126
+ [spxDisabled]="this.spxReadonly"
127
+ [spxSize]="'xl'"
128
+ [spxTabIndex]="-1"
129
+ [spxType]="'button'">
130
+ <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
131
+ </spx-button>
132
+ }
133
+ @if (this.spxShowClear) {
134
+ <spx-button
135
+ (spxClick)="onClear()"
136
+ [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
137
+ [spxFullHeight]="true"
138
+ [spxSize]="'xl'"
139
+ [spxTabIndex]="-1"
140
+ [spxType]="'button'">
141
+ <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
142
+ </spx-button>
143
+ }
144
+ </div>
135
145
  </div>
136
- </div>
137
- <div *ngIf="this.spxShowValidationMessages" class="bg-red-600 rounded-b text-white p-3">
138
- <ng-content select="[validation-messages]"></ng-content>
139
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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"] }] }); }
146
+ @if (this.spxShowValidationMessages) {
147
+ <div class="bg-red-600 rounded-b text-white p-3">
148
+ <ng-content select="[validation-messages]"></ng-content>
149
+ </div>
150
+ }`, 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"] }] }); }
140
151
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputBoxComponent, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputBoxComponent, decorators: [{
142
153
  type: Component,
143
154
  args: [{
144
155
  selector: 'spx-input-box',
156
+ standalone: true,
145
157
  imports: [
146
- NgIf,
147
158
  SpxButtonComponent,
148
- FontAwesomeModule,
159
+ FontAwesomeModule
149
160
  ],
150
161
  template: `<div class="flex rounded w-full gap-3"
151
- [class.rounded-none]="this.spxShowValidationMessages"
152
- [class.rounded-t]="this.spxShowValidationMessages"
153
- [class.outline-none]="this.spxFocused && !this.spxReadonly"
154
- [class.ring-2]="this.spxFocused && !this.spxReadonly"
155
- [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
156
- [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
157
- [class.bg-white]="!this.spxReadonly"
158
- [class.bg-gray-300]="this.spxReadonly"
159
- [class.cursor-not-allowed]="this.spxReadonly">
160
- <div class="flex-auto p-3"
161
- [class.p-0]="this.spxCompact"
162
- [class.flex]="this.spxCompact"
163
- [class.items-center]="this.spxCompact">
164
- <div *ngIf="this.spxShowLabel" class="font-bold text-sm mb-1 text-gray-800"
165
- [class.mb-0]="this.spxCompact"
166
- [class.px-3]="this.spxCompact">
167
- {{this.spxLabel}} <span *ngIf="spxRequired" class="text-red-800">*</span>
168
- </div>
162
+ [class.rounded-none]="this.spxShowValidationMessages"
163
+ [class.rounded-t]="this.spxShowValidationMessages"
164
+ [class.outline-none]="this.spxFocused && !this.spxReadonly"
165
+ [class.ring-2]="this.spxFocused && !this.spxReadonly"
166
+ [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
167
+ [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
168
+ [class.bg-white]="!this.spxReadonly"
169
+ [class.bg-gray-300]="this.spxReadonly"
170
+ [class.cursor-not-allowed]="this.spxReadonly">
171
+ <div class="flex-auto p-3"
172
+ [class.p-0]="this.spxCompact"
173
+ [class.flex]="this.spxCompact"
174
+ [class.items-center]="this.spxCompact">
175
+ @if (this.spxShowLabel) {
176
+ <div class="font-bold text-sm mb-1 text-gray-800"
177
+ [class.mb-0]="this.spxCompact"
178
+ [class.px-3]="this.spxCompact">
179
+ {{this.spxLabel}} @if (spxRequired) {
180
+ <span class="text-red-800">*</span>
181
+ }
182
+ </div>
183
+ }
169
184
  <ng-content select="[controls]"></ng-content>
170
185
  </div>
171
186
  <div class="flex flex-none gap-1 p-1">
172
- <spx-button
173
- *ngIf="this.spxShowEdit"
174
- (spxClick)="onEdit()"
175
- [spxFullHeight]="true"
176
- [spxSize]="'xl'"
177
- [spxType]="'button'">
178
- <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
179
- </spx-button>
180
- <spx-button
181
- *ngIf="this.spxShowHelp"
182
- (spxClick)="onHelp()"
183
- [spxFullHeight]="true"
184
- [spxDisabled]="this.spxReadonly"
185
- [spxSize]="'xl'"
186
- [spxTabIndex]="-1"
187
- [spxType]="'button'">
188
- <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
189
- </spx-button>
190
- <spx-button
191
- *ngIf="this.spxShowSearch"
192
- (spxClick)="onSearch()"
193
- [spxFullHeight]="true"
194
- [spxDisabled]="this.spxReadonly"
195
- [spxSize]="'xl'"
196
- [spxTabIndex]="-1"
197
- [spxType]="'button'">
198
- <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
199
- </spx-button>
200
- <spx-button
201
- *ngIf="this.spxShowClear"
202
- (spxClick)="onClear()"
203
- [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
204
- [spxFullHeight]="true"
205
- [spxSize]="'xl'"
206
- [spxTabIndex]="-1"
207
- [spxType]="'button'">
208
- <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
209
- </spx-button>
187
+ @if (this.spxShowEdit) {
188
+ <spx-button
189
+ (spxClick)="onEdit()"
190
+ [spxFullHeight]="true"
191
+ [spxSize]="'xl'"
192
+ [spxType]="'button'">
193
+ <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
194
+ </spx-button>
195
+ }
196
+ @if (this.spxShowHelp) {
197
+ <spx-button
198
+ (spxClick)="onHelp()"
199
+ [spxFullHeight]="true"
200
+ [spxDisabled]="this.spxReadonly"
201
+ [spxSize]="'xl'"
202
+ [spxTabIndex]="-1"
203
+ [spxType]="'button'">
204
+ <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
205
+ </spx-button>
206
+ }
207
+ @if (this.spxShowSearch) {
208
+ <spx-button
209
+ (spxClick)="onSearch()"
210
+ [spxFullHeight]="true"
211
+ [spxDisabled]="this.spxReadonly"
212
+ [spxSize]="'xl'"
213
+ [spxTabIndex]="-1"
214
+ [spxType]="'button'">
215
+ <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
216
+ </spx-button>
217
+ }
218
+ @if (this.spxShowClear) {
219
+ <spx-button
220
+ (spxClick)="onClear()"
221
+ [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
222
+ [spxFullHeight]="true"
223
+ [spxSize]="'xl'"
224
+ [spxTabIndex]="-1"
225
+ [spxType]="'button'">
226
+ <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
227
+ </spx-button>
228
+ }
210
229
  </div>
211
- </div>
212
- <div *ngIf="this.spxShowValidationMessages" class="bg-red-600 rounded-b text-white p-3">
213
- <ng-content select="[validation-messages]"></ng-content>
214
- </div>`
230
+ </div>
231
+ @if (this.spxShowValidationMessages) {
232
+ <div class="bg-red-600 rounded-b text-white p-3">
233
+ <ng-content select="[validation-messages]"></ng-content>
234
+ </div>
235
+ }`,
215
236
  }]
216
237
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { spxCompact: [{
217
238
  type: Input
@@ -298,49 +319,50 @@ class SpxDropdownComponent {
298
319
  this.focusPosition = 0;
299
320
  this.spxSelect.emit(valuePair);
300
321
  }
301
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
302
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: SpxDropdownComponent, isStandalone: true, selector: "spx-dropdown", inputs: { spxSuggestions: "spxSuggestions" }, outputs: { spxSelect: "spxSelect" }, usesOnChanges: true, ngImport: i0, template: `<div class="relative text-black">
303
- <div
304
- class="absolute bg-gray-100 left-0 right-0 z-20">
305
- <button
306
- *ngFor="let valuePair of this.spxSuggestions; let i = index"
307
- class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
308
- [class.bg-gray-100]="i === this.focusPosition"
309
- [class.bg-white]="i !== this.focusPosition"
310
- (click)="this.handleSuggestionClick(valuePair)"
311
- [attr.tabindex]="-1"
312
- [attr.type]="'button'">
313
- <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
314
- <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
315
- </button>
316
- </div>
317
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
322
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
323
+ 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">
324
+ <div
325
+ class="absolute bg-gray-100 left-0 right-0 z-20">
326
+ @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
327
+ <button
328
+ class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
329
+ [class.bg-gray-100]="i === this.focusPosition"
330
+ [class.bg-white]="i !== this.focusPosition"
331
+ (click)="this.handleSuggestionClick(valuePair)"
332
+ [attr.tabindex]="-1"
333
+ [attr.type]="'button'">
334
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
335
+ <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
336
+ </button>
337
+ }
338
+ </div>
339
+ </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
318
340
  }
319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxDropdownComponent, decorators: [{
341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxDropdownComponent, decorators: [{
320
342
  type: Component,
321
343
  args: [{
322
344
  selector: 'spx-dropdown',
345
+ standalone: true,
323
346
  imports: [
324
- NgIf,
325
- NgFor,
326
- SpxButtonComponent,
347
+ SpxButtonComponent
327
348
  ],
328
349
  template: `<div class="relative text-black">
329
- <div
330
- class="absolute bg-gray-100 left-0 right-0 z-20">
331
- <button
332
- *ngFor="let valuePair of this.spxSuggestions; let i = index"
333
- class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
334
- [class.bg-gray-100]="i === this.focusPosition"
335
- [class.bg-white]="i !== this.focusPosition"
336
- (click)="this.handleSuggestionClick(valuePair)"
337
- [attr.tabindex]="-1"
338
- [attr.type]="'button'">
339
- <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
340
- <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
341
- </button>
342
- </div>
343
- </div>`
350
+ <div
351
+ class="absolute bg-gray-100 left-0 right-0 z-20">
352
+ @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
353
+ <button
354
+ class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
355
+ [class.bg-gray-100]="i === this.focusPosition"
356
+ [class.bg-white]="i !== this.focusPosition"
357
+ (click)="this.handleSuggestionClick(valuePair)"
358
+ [attr.tabindex]="-1"
359
+ [attr.type]="'button'">
360
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
361
+ <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
362
+ </button>
363
+ }
364
+ </div>
365
+ </div>`,
344
366
  }]
345
367
  }], propDecorators: { spxSuggestions: [{
346
368
  type: Input
@@ -393,79 +415,87 @@ class SpxInputTextComponent {
393
415
  handleKeyUp() {
394
416
  this.spxFocused = true;
395
417
  }
396
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
397
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", 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">
398
- <input
399
- #input
400
- class="font-bold text-lg w-full outline-none"
401
- autocomplete="off"
402
- spellcheck="false"
403
- [class.bg-white]="!this.spxReadonly"
404
- [class.bg-gray-300]="this.spxReadonly"
405
- [class.cursor-not-allowed]="this.spxReadonly"
406
- [class.uppercase]="this.spxCapitalize"
407
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
408
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
409
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
410
- [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
411
- [attr.name]="this.spxName"
412
- [attr.type]="this.spxType"
413
- [value]="this.value?.description ? this.value?.description : this.value?.value"
414
- (blur)="this.handleBlur()"
415
- (keyUp)="this.handleKeyUp()"
416
- (focus)="this.handleFocus()"
417
- (input)="this.handleDescriptionInput($event)"
418
- />
419
- <span *ngIf="this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()">{{this.value?.value}}</span>
420
- <spx-dropdown
421
- *ngIf="this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')"
422
- [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
423
- </spx-dropdown>
424
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SpxDropdownComponent, selector: "spx-dropdown", inputs: ["spxSuggestions"], outputs: ["spxSelect"] }] }); }
418
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
419
+ 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">
420
+ <input
421
+ #input
422
+ class="font-bold text-lg w-full outline-none"
423
+ autocomplete="off"
424
+ spellcheck="false"
425
+ [class.bg-white]="!this.spxReadonly"
426
+ [class.bg-gray-300]="this.spxReadonly"
427
+ [class.cursor-not-allowed]="this.spxReadonly"
428
+ [class.uppercase]="this.spxCapitalize"
429
+ [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
430
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
431
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
432
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
433
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
434
+ [attr.name]="this.spxName"
435
+ [attr.type]="this.spxType"
436
+ [value]="this.value?.description ? this.value?.description : this.value?.value"
437
+ (blur)="this.handleBlur()"
438
+ (keyUp)="this.handleKeyUp()"
439
+ (focus)="this.handleFocus()"
440
+ (input)="this.handleDescriptionInput($event)"
441
+ />
442
+ @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
443
+ <span>{{this.value?.value}}</span>
444
+ }
445
+ @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
446
+ <spx-dropdown
447
+ [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
448
+ </spx-dropdown>
449
+ }
450
+ </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxDropdownComponent, selector: "spx-dropdown", inputs: ["spxSuggestions"], outputs: ["spxSelect"] }] }); }
425
451
  }
426
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputTextComponent, decorators: [{
452
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTextComponent, decorators: [{
427
453
  type: Component,
428
454
  args: [{
429
455
  selector: 'spx-input-text',
456
+ standalone: true,
430
457
  imports: [
431
- NgIf,
432
- NgFor,
433
- SpxButtonComponent,
434
- SpxDropdownComponent,
458
+ SpxDropdownComponent
435
459
  ],
436
460
  template: `<div class="relative text-black">
437
- <input
438
- #input
439
- class="font-bold text-lg w-full outline-none"
440
- autocomplete="off"
441
- spellcheck="false"
442
- [class.bg-white]="!this.spxReadonly"
443
- [class.bg-gray-300]="this.spxReadonly"
444
- [class.cursor-not-allowed]="this.spxReadonly"
445
- [class.uppercase]="this.spxCapitalize"
446
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
447
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
448
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
449
- [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
450
- [attr.name]="this.spxName"
451
- [attr.type]="this.spxType"
452
- [value]="this.value?.description ? this.value?.description : this.value?.value"
453
- (blur)="this.handleBlur()"
454
- (keyUp)="this.handleKeyUp()"
455
- (focus)="this.handleFocus()"
456
- (input)="this.handleDescriptionInput($event)"
457
- />
458
- <span *ngIf="this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()">{{this.value?.value}}</span>
459
- <spx-dropdown
460
- *ngIf="this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')"
461
- [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
462
- </spx-dropdown>
463
- </div>`
461
+ <input
462
+ #input
463
+ class="font-bold text-lg w-full outline-none"
464
+ autocomplete="off"
465
+ spellcheck="false"
466
+ [class.bg-white]="!this.spxReadonly"
467
+ [class.bg-gray-300]="this.spxReadonly"
468
+ [class.cursor-not-allowed]="this.spxReadonly"
469
+ [class.uppercase]="this.spxCapitalize"
470
+ [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
471
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
472
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
473
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
474
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
475
+ [attr.name]="this.spxName"
476
+ [attr.type]="this.spxType"
477
+ [value]="this.value?.description ? this.value?.description : this.value?.value"
478
+ (blur)="this.handleBlur()"
479
+ (keyUp)="this.handleKeyUp()"
480
+ (focus)="this.handleFocus()"
481
+ (input)="this.handleDescriptionInput($event)"
482
+ />
483
+ @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
484
+ <span>{{this.value?.value}}</span>
485
+ }
486
+ @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
487
+ <spx-dropdown
488
+ [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
489
+ </spx-dropdown>
490
+ }
491
+ </div>`,
464
492
  }]
465
493
  }], propDecorators: { spxName: [{
466
494
  type: Input
467
495
  }], spxAutofocus: [{
468
496
  type: Input
497
+ }], spxAutocomplete: [{
498
+ type: Input
469
499
  }], spxInputMode: [{
470
500
  type: Input
471
501
  }], spxPattern: [{
@@ -497,298 +527,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
497
527
  args: ['input', { static: true }]
498
528
  }] } });
499
529
 
500
- class SpxInputDateComponent {
501
- async spxSetFocus() {
502
- // this.elYear.focus();
503
- }
504
- // @Watch('spxValidators') watchSpxValidators(newValue) {
505
- // console.log('validators', newValue);
506
- // }
507
- // @Watch('value') watchValue(newValue) {
508
- // if (this.spxWasInternalUpdate) {
509
- // this.spxWasInternalUpdate = false;
510
- // } else {
511
- // const parsedValue = DateTime.fromISO(newValue?.value);
512
- // this.spxInternalValue.years = parsedValue.year;
513
- // this.spxInternalValue.months = parsedValue.month;
514
- // this.spxInternalValue.days = parsedValue.day;
515
- // this.spxSelectStep = 'years';
516
- // }
517
- // }
518
- constructor() {
519
- this.spxReadonly = false;
520
- this.spxFocused = true;
521
- this.spxSelectMonth = true;
522
- this.spxSelectDay = true;
523
- this.spxChange = new EventEmitter();
524
- this.spxFocus = new EventEmitter();
525
- this.spxSelectStep = 'years';
526
- this.spxInternalValue = {};
527
- this.spxSuggestions = {
528
- years: [],
529
- months: [{
530
- description: 'Jan',
531
- value: 1,
532
- }, {
533
- description: 'Feb',
534
- value: 2,
535
- }, {
536
- description: 'Mar',
537
- value: 3,
538
- }, {
539
- description: 'Apr',
540
- value: 4,
541
- }, {
542
- description: 'May',
543
- value: 5,
544
- }, {
545
- description: 'Jun',
546
- value: 6,
547
- }, {
548
- description: 'Jul',
549
- value: 7,
550
- }, {
551
- description: 'Aug',
552
- value: 8,
553
- }, {
554
- description: 'Sep',
555
- value: 9,
556
- }, {
557
- description: 'Oct',
558
- value: 10,
559
- }, {
560
- description: 'Nov',
561
- value: 11,
562
- }, {
563
- description: 'Dec',
564
- value: 12,
565
- }],
566
- days: [],
567
- };
568
- this.spxWasInternalUpdate = false;
569
- this.suggestYears();
570
- }
571
- componentWillLoad() {
572
- const parsedValue = this.value ? DateTime.fromISO(this.value.value) : DateTime.now();
573
- this.spxInternalValue.years = parsedValue.year;
574
- this.spxInternalValue.months = parsedValue.month;
575
- this.spxInternalValue.days = parsedValue.day;
576
- }
577
- handleDayInput(event) {
578
- this.spxInternalValue.days = event.target ? event.target.value : null;
579
- this.updateValue();
580
- }
581
- handleMonthInput(event) {
582
- this.spxInternalValue.months = event.target ? event.target.value : null;
583
- this.afterMonthChange();
584
- }
585
- afterMonthChange() {
586
- if (this.spxInternalValue.months.toString().length === 2 && this.spxSelectDay && this.spxLastKeyPressed !== 38 && this.spxLastKeyPressed !== 40) {
587
- // this.elDay!.focus();
588
- }
589
- this.updateValue();
590
- }
591
- handleYearInput(event) {
592
- this.spxInternalValue.years = event.target ? event.target.value : null;
593
- this.afterYearChange();
594
- }
595
- afterYearChange() {
596
- if (this.spxInternalValue.years.toString().length === 4 && this.spxSelectMonth && this.spxLastKeyPressed !== 38 && this.spxLastKeyPressed !== 40) {
597
- // this.elMonth!.focus();
598
- }
599
- this.updateValue();
600
- }
601
- handleInput(event) {
602
- this.setValue(event.target ? event.target.value : null);
603
- }
604
- handleFocus(step) {
605
- this.spxSelectStep = step;
606
- this.spxFocus.emit();
607
- }
608
- handleKeyDown(event) {
609
- this.spxLastKeyPressed = event.which;
610
- }
611
- handleSuggestionClick(value) {
612
- this.spxLastKeyPressed = null;
613
- this.spxInternalValue[this.spxSelectStep] = value;
614
- this.updateValue();
615
- this.doneWithField();
616
- }
617
- updateValue() {
618
- const concatenatedValue = `${this.spxInternalValue.years ? this.spxInternalValue.years : ``}${this.spxInternalValue.months ? `-${this.spxInternalValue.months < 10 ? `0${this.spxInternalValue.months}` : this.spxInternalValue.months}` : ``}${this.spxInternalValue.days ? `-${this.spxInternalValue.days < 10 ? `0${this.spxInternalValue.days}` : this.spxInternalValue.days}` : ``}`;
619
- const parsedValue = DateTime.fromISO(concatenatedValue);
620
- this.spxWasInternalUpdate = true;
621
- this.value = {
622
- description: parsedValue.toISO(),
623
- value: parsedValue.toISO(),
624
- };
625
- this.spxChange.emit(this.value);
626
- }
627
- doneWithField() {
628
- if (this.spxSelectStep === 'days') {
629
- this.spxSelectStep = 'years';
630
- }
631
- else if (this.spxSelectStep === 'months') {
632
- this.spxSelectStep = this.spxSelectDay ? 'days' : 'years';
633
- this.afterMonthChange();
634
- }
635
- else if (this.spxSelectStep === 'years') {
636
- this.afterYearChange();
637
- this.spxSelectStep = this.spxSelectMonth ? 'months' : 'years';
638
- }
639
- }
640
- setValue(value) {
641
- this.spxInternalValue = value;
642
- const parsed = DateTime.fromISO(value);
643
- this.value = {
644
- description: parsed.toISO(),
645
- value: parsed.toISO(),
646
- };
647
- this.spxChange.emit(this.value);
648
- this.spxWasInternalUpdate = true;
649
- }
650
- suggestYears() {
651
- this.spxSuggestions.years = [];
652
- for (let year = DateTime.fromISO(this.spxMin).year; year <= DateTime.fromISO(this.spxMax).year; year++) {
653
- this.spxSuggestions.years.push({
654
- description: `'${year.toString().substring(2, 4)}`,
655
- value: year,
656
- });
657
- }
658
- }
659
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
660
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: SpxInputDateComponent, isStandalone: true, selector: "spx-input-date", inputs: { spxMax: "spxMax", spxMin: "spxMin", spxName: "spxName", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxSelectMonth: "spxSelectMonth", spxSelectDay: "spxSelectDay", value: "value", spxLastKeyPressed: "spxLastKeyPressed", spxSelectStep: "spxSelectStep", spxInternalValue: "spxInternalValue", spxSuggestions: "spxSuggestions", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, ngImport: i0, template: `<div class='spx-input-date__controls'>
661
- <input
662
- class='spx-input-date__input'
663
- [attr.value]="this.spxInternalValue.years"
664
- (focus)="this.handleFocus('years')"
665
- (input)="this.handleYearInput($event)"
666
- (keyDown)="this.handleKeyDown($event)"
667
- [attr.type]="'number'"
668
- [attr.min]="1900"
669
- [attr.max]="2100"
670
- [attr.step]="1"
671
- />
672
- <div class='spx-input-date__control-label'>Year</div>
673
- <input
674
- *ngIf="this.spxSelectMonth"
675
- class='spx-input-date__input'
676
- [attr.value]="this.spxInternalValue.months"
677
- (focus)="this.handleFocus('months')"
678
- (input)="this.handleMonthInput($event)"
679
- (keyDown)="this.handleKeyDown($event)"
680
- [attr.type]="'number'"
681
- [attr.min]="1"
682
- [attr.max]="12"
683
- [attr.step]="1" />
684
- <div class='spx-input-date__control-label'>Month</div>
685
- <input
686
- *ngIf="this.spxSelectDay"
687
- class='spx-input-date__input'
688
- [attr.value]="this.spxInternalValue.days"
689
- (focus)="this.handleFocus('days')"
690
- (input)="this.handleDayInput($event)"
691
- (keyDown)="this.handleKeyDown($event)"
692
- [attr.type]="'number'"
693
- [attr.min]="1"
694
- [attr.max]="31"
695
- [attr.step]="1" />
696
- <div class='spx-input-date__control-label'>Days</div>
697
- </div>
698
- <div class='spx-input-date__suggestions'>
699
- <spx-suggestion
700
- *ngFor="let valuePair of spxSuggestions[spxSelectStep]"
701
- (click)="this.handleSuggestionClick(valuePair.value)">{{valuePair?.description}}</spx-suggestion>
702
- </div>`, isInline: true, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }] }); }
703
- }
704
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputDateComponent, decorators: [{
705
- type: Component,
706
- args: [{ selector: 'spx-input-date', imports: [
707
- NgIf,
708
- NgFor,
709
- SpxButtonComponent,
710
- SpxSuggestionComponent
711
- ], template: `<div class='spx-input-date__controls'>
712
- <input
713
- class='spx-input-date__input'
714
- [attr.value]="this.spxInternalValue.years"
715
- (focus)="this.handleFocus('years')"
716
- (input)="this.handleYearInput($event)"
717
- (keyDown)="this.handleKeyDown($event)"
718
- [attr.type]="'number'"
719
- [attr.min]="1900"
720
- [attr.max]="2100"
721
- [attr.step]="1"
722
- />
723
- <div class='spx-input-date__control-label'>Year</div>
724
- <input
725
- *ngIf="this.spxSelectMonth"
726
- class='spx-input-date__input'
727
- [attr.value]="this.spxInternalValue.months"
728
- (focus)="this.handleFocus('months')"
729
- (input)="this.handleMonthInput($event)"
730
- (keyDown)="this.handleKeyDown($event)"
731
- [attr.type]="'number'"
732
- [attr.min]="1"
733
- [attr.max]="12"
734
- [attr.step]="1" />
735
- <div class='spx-input-date__control-label'>Month</div>
736
- <input
737
- *ngIf="this.spxSelectDay"
738
- class='spx-input-date__input'
739
- [attr.value]="this.spxInternalValue.days"
740
- (focus)="this.handleFocus('days')"
741
- (input)="this.handleDayInput($event)"
742
- (keyDown)="this.handleKeyDown($event)"
743
- [attr.type]="'number'"
744
- [attr.min]="1"
745
- [attr.max]="31"
746
- [attr.step]="1" />
747
- <div class='spx-input-date__control-label'>Days</div>
748
- </div>
749
- <div class='spx-input-date__suggestions'>
750
- <spx-suggestion
751
- *ngFor="let valuePair of spxSuggestions[spxSelectStep]"
752
- (click)="this.handleSuggestionClick(valuePair.value)">{{valuePair?.description}}</spx-suggestion>
753
- </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"] }]
754
- }], ctorParameters: () => [], propDecorators: { spxMax: [{
755
- type: Input
756
- }], spxMin: [{
757
- type: Input
758
- }], spxName: [{
759
- type: Input
760
- }], spxReadonly: [{
761
- type: Input
762
- }], spxValidators: [{
763
- type: Input
764
- }], spxFocused: [{
765
- type: Input
766
- }], spxSelectMonth: [{
767
- type: Input
768
- }], spxSelectDay: [{
769
- type: Input
770
- }], value: [{
771
- type: Input
772
- }], spxChange: [{
773
- type: Output
774
- }], spxFocus: [{
775
- type: Output
776
- }], spxLastKeyPressed: [{
777
- type: Input
778
- }], spxSelectStep: [{
779
- type: Input
780
- }], spxInternalValue: [{
781
- type: Input
782
- }], spxSuggestions: [{
783
- type: Input
784
- }], spxWasInternalUpdate: [{
785
- type: Input
786
- }] } });
787
-
788
530
  class SpxInputFloatComponent {
789
531
  constructor() {
790
- // private elFirstInput?: HTMLElement;
791
- // private elSecondInput?: HTMLElement;
792
532
  this.internalValue = {
793
533
  first: null,
794
534
  second: null,
@@ -804,16 +544,18 @@ class SpxInputFloatComponent {
804
544
  spxSetFocus() {
805
545
  this.firstInputRef?.nativeElement?.focus();
806
546
  }
807
- // @Watch('value') onValueChanged(newValue: SpxValuePair<any>, _oldValue: SpxValuePair<any>) {
808
- // this.handleSetValue(newValue);
809
- // }
810
- componentDidLoad() {
547
+ ngOnInit() {
811
548
  if (this.spxAutofocus) {
812
549
  this.spxFocus.emit();
813
550
  this.spxSetFocus();
814
551
  }
815
552
  this.handleSetValue(this.value);
816
553
  }
554
+ ngOnChanges(changes) {
555
+ if (changes['value']) {
556
+ this.handleSetValue(changes['value'].currentValue);
557
+ }
558
+ }
817
559
  handleFocus() {
818
560
  this.spxFocus.emit();
819
561
  }
@@ -832,10 +574,10 @@ class SpxInputFloatComponent {
832
574
  }
833
575
  this.tick = {};
834
576
  }
835
- handleInput(event, position) {
577
+ handleInput(value, position) {
836
578
  this.internalValue = {
837
- first: position === 1 ? (event.target ? event.target.value : null) : this.internalValue.first,
838
- second: position === 2 ? (event.target ? event.target.value : null) : this.internalValue.second,
579
+ first: position === 1 ? value : this.internalValue.first,
580
+ second: position === 2 ? value : this.internalValue.second,
839
581
  };
840
582
  let result;
841
583
  if (this.internalValue.first === null && this.internalValue.second === null) {
@@ -853,8 +595,8 @@ class SpxInputFloatComponent {
853
595
  isNumeric(value) {
854
596
  return /^[+-]?\d+(\.\d+)?$/.test(value);
855
597
  }
856
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
857
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", 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 }], ngImport: i0, template: `<div class="flex items-end">
598
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
599
+ 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">
858
600
  <input
859
601
  #firstInputRef
860
602
  class="spx-input-float__input"
@@ -863,30 +605,28 @@ class SpxInputFloatComponent {
863
605
  [attr.pattern]="'[0-9]*'"
864
606
  [attr.step]="1"
865
607
  [attr.type]="'text'"
866
- [attr.value]="this.internalValue?.first ? this.internalValue?.first : undefined"
867
608
  [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
868
609
  (focus)="this.handleFocus()"
869
- (input)="this.handleInput($event, 1)" />
610
+ [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
611
+ (ngModelChange)="this.handleInput($event, 1)" />
870
612
  <span class="text-black font-bold text-2xl mx-4">,</span>
871
613
  <input
872
614
  [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
873
615
  class="spx-input-float__input"
874
616
  [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
875
617
  [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
876
- [attr.value]="this.internalValue?.second ? this.internalValue?.second : undefined"
877
618
  (focus)="this.handleFocus()"
878
- (input)="this.handleInput($event, 2)"
619
+ [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
620
+ (ngModelChange)="this.handleInput($event, 2)"
879
621
  [attr.step]="1"
880
622
  [attr.type]="'text'"
881
623
  [attr.pattern]="'[0-9]*'" />
882
- </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"] }); }
624
+ </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"] }] }); }
883
625
  }
884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
885
627
  type: Component,
886
- args: [{ selector: 'spx-input-float', imports: [
887
- NgIf,
888
- NgFor,
889
- SpxButtonComponent,
628
+ args: [{ selector: 'spx-input-float', standalone: true, imports: [
629
+ FormsModule,
890
630
  ], template: `<div class="flex items-end">
891
631
  <input
892
632
  #firstInputRef
@@ -896,19 +636,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
896
636
  [attr.pattern]="'[0-9]*'"
897
637
  [attr.step]="1"
898
638
  [attr.type]="'text'"
899
- [attr.value]="this.internalValue?.first ? this.internalValue?.first : undefined"
900
639
  [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
901
640
  (focus)="this.handleFocus()"
902
- (input)="this.handleInput($event, 1)" />
641
+ [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
642
+ (ngModelChange)="this.handleInput($event, 1)" />
903
643
  <span class="text-black font-bold text-2xl mx-4">,</span>
904
644
  <input
905
645
  [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
906
646
  class="spx-input-float__input"
907
647
  [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
908
648
  [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
909
- [attr.value]="this.internalValue?.second ? this.internalValue?.second : undefined"
910
649
  (focus)="this.handleFocus()"
911
- (input)="this.handleInput($event, 2)"
650
+ [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
651
+ (ngModelChange)="this.handleInput($event, 2)"
912
652
  [attr.step]="1"
913
653
  [attr.type]="'text'"
914
654
  [attr.pattern]="'[0-9]*'" />
@@ -968,8 +708,8 @@ class SpxInputNumberComponent {
968
708
  };
969
709
  this.spxChange.emit(this.value);
970
710
  }
971
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
972
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", 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">
711
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
712
+ 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">
973
713
  <input
974
714
  #input
975
715
  class="spx-input-number__input"
@@ -984,9 +724,9 @@ class SpxInputNumberComponent {
984
724
  (input)="this.handleInput($event)" />
985
725
  </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"] }); }
986
726
  }
987
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
727
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
988
728
  type: Component,
989
- args: [{ selector: 'spx-input-number', imports: [], template: `<div class="spx-input-number__controls">
729
+ args: [{ selector: 'spx-input-number', standalone: true, imports: [], template: `<div class="spx-input-number__controls">
990
730
  <input
991
731
  #input
992
732
  class="spx-input-number__input"
@@ -1094,38 +834,40 @@ class SpxInputRadioComponent {
1094
834
  }
1095
835
  });
1096
836
  }
1097
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1098
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", 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">
1099
- <spx-suggestion
1100
- *ngFor="let valuePair of this.cachedSuggestions; let i = index"
1101
- [spxDisabled]="this.spxReadonly"
1102
- [spxFocused]="this.spxFocused && i === this.focusPosition"
1103
- [spxSelected]="this.value?.value === valuePair?.value"
1104
- [spxTabbable]="this.focusPosition === i"
1105
- (click)="this.handleSuggestionClick($event, valuePair)">
1106
- {{valuePair?.description}}
1107
- </spx-suggestion>
1108
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }] }); }
837
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
838
+ 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">
839
+ @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
840
+ <spx-suggestion
841
+ [spxDisabled]="this.spxReadonly"
842
+ [spxFocused]="this.spxFocused && i === this.focusPosition"
843
+ [spxSelected]="this.value?.value === valuePair?.value"
844
+ [spxTabbable]="this.focusPosition === i"
845
+ (click)="this.handleSuggestionClick($event, valuePair)">
846
+ {{valuePair?.description}}
847
+ </spx-suggestion>
848
+ }
849
+ </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }] }); }
1109
850
  }
1110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputRadioComponent, decorators: [{
851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputRadioComponent, decorators: [{
1111
852
  type: Component,
1112
853
  args: [{
1113
854
  selector: 'spx-input-radio',
855
+ standalone: true,
1114
856
  imports: [
1115
- NgFor,
1116
- SpxSuggestionComponent,
857
+ SpxSuggestionComponent
1117
858
  ],
1118
859
  template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
1119
- <spx-suggestion
1120
- *ngFor="let valuePair of this.cachedSuggestions; let i = index"
1121
- [spxDisabled]="this.spxReadonly"
1122
- [spxFocused]="this.spxFocused && i === this.focusPosition"
1123
- [spxSelected]="this.value?.value === valuePair?.value"
1124
- [spxTabbable]="this.focusPosition === i"
1125
- (click)="this.handleSuggestionClick($event, valuePair)">
1126
- {{valuePair?.description}}
1127
- </spx-suggestion>
1128
- </div>`
860
+ @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
861
+ <spx-suggestion
862
+ [spxDisabled]="this.spxReadonly"
863
+ [spxFocused]="this.spxFocused && i === this.focusPosition"
864
+ [spxSelected]="this.value?.value === valuePair?.value"
865
+ [spxTabbable]="this.focusPosition === i"
866
+ (click)="this.handleSuggestionClick($event, valuePair)">
867
+ {{valuePair?.description}}
868
+ </spx-suggestion>
869
+ }
870
+ </div>`,
1129
871
  }]
1130
872
  }], propDecorators: { spxName: [{
1131
873
  type: Input
@@ -1183,89 +925,102 @@ class SpxInputTimeModalComponent {
1183
925
  console.log(value);
1184
926
  this.modalController.dismiss(value);
1185
927
  }
1186
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputTimeModalComponent, deps: [{ token: i1$1.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
1187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: SpxInputTimeModalComponent, isStandalone: true, selector: "spx-input-time-modal", inputs: { view: "view", value: "value" }, outputs: { change: "change" }, ngImport: i0, template: `<ion-header>
1188
- <ion-toolbar>
1189
- <ion-title>Select {{view}}</ion-title>
1190
- <ion-buttons slot="end">
1191
- <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
1192
- <fa-icon [icon]="faXmark"></fa-icon>
1193
- </spx-button>
1194
- </ion-buttons>
1195
- </ion-toolbar>
1196
- </ion-header>
1197
- <ion-content class="ion-padding bg-white">
1198
- <!-- Uren -->
1199
- <div class="custom-bg grid grid-cols-1 gap-3">
1200
- <div *ngIf="view === 'hours'" class="flex-wrap gap-2">
1201
- <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
1202
- <div *ngFor="let hour of hourOptions" 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)">
1203
- {{ hour }}
928
+ 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 }); }
929
+ 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>
930
+ <ion-toolbar>
931
+ <ion-title>Select {{view}}</ion-title>
932
+ <ion-buttons slot="end">
933
+ <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
934
+ <fa-icon [icon]="faXmark"></fa-icon>
935
+ </spx-button>
936
+ </ion-buttons>
937
+ </ion-toolbar>
938
+ </ion-header>
939
+ <ion-content class="ion-padding bg-white">
940
+ <!-- Uren -->
941
+ <div class="custom-bg grid grid-cols-1 gap-3">
942
+ @if (view === 'hours') {
943
+ <div class="flex-wrap gap-2">
944
+ <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
945
+ @for (hour of hourOptions; track hour) {
946
+ <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)">
947
+ {{ hour }}
948
+ </div>
949
+ }
950
+ </div>
1204
951
  </div>
1205
- </div>
1206
- </div>
1207
- <!-- Minuten -->
1208
- <div *ngIf="view === 'minutes'" class="grid grid-cols-1 gap-3">
1209
- <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
1210
- <div *ngFor="let minute of minuteOptions" 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)">
1211
- {{ minute }}
952
+ }
953
+ <!-- Minuten -->
954
+ @if (view === 'minutes') {
955
+ <div class="grid grid-cols-1 gap-3">
956
+ <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
957
+ @for (minute of minuteOptions; track minute) {
958
+ <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)">
959
+ {{ minute }}
960
+ </div>
961
+ }
962
+ </div>
1212
963
  </div>
1213
- </div>
964
+ }
1214
965
  </div>
1215
- </div>
1216
- </ion-content>
1217
- `, isInline: true, dependencies: [{ kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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"] }] }); }
966
+ </ion-content>
967
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
1218
968
  }
1219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputTimeModalComponent, decorators: [{
969
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeModalComponent, decorators: [{
1220
970
  type: Component,
1221
971
  args: [{
1222
972
  selector: 'spx-input-time-modal',
973
+ standalone: true,
1223
974
  imports: [
1224
- IonButton,
975
+ FontAwesomeModule,
1225
976
  IonButtons,
1226
977
  IonContent,
1227
978
  IonHeader,
1228
979
  IonTitle,
1229
980
  IonToolbar,
1230
- NgIf,
1231
- NgFor,
1232
981
  SpxButtonComponent,
1233
- SpxDropdownComponent,
1234
- FontAwesomeModule,
1235
982
  ],
1236
983
  template: `<ion-header>
1237
- <ion-toolbar>
1238
- <ion-title>Select {{view}}</ion-title>
1239
- <ion-buttons slot="end">
1240
- <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
1241
- <fa-icon [icon]="faXmark"></fa-icon>
1242
- </spx-button>
1243
- </ion-buttons>
1244
- </ion-toolbar>
1245
- </ion-header>
1246
- <ion-content class="ion-padding bg-white">
1247
- <!-- Uren -->
1248
- <div class="custom-bg grid grid-cols-1 gap-3">
1249
- <div *ngIf="view === 'hours'" class="flex-wrap gap-2">
1250
- <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
1251
- <div *ngFor="let hour of hourOptions" 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)">
1252
- {{ hour }}
984
+ <ion-toolbar>
985
+ <ion-title>Select {{view}}</ion-title>
986
+ <ion-buttons slot="end">
987
+ <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
988
+ <fa-icon [icon]="faXmark"></fa-icon>
989
+ </spx-button>
990
+ </ion-buttons>
991
+ </ion-toolbar>
992
+ </ion-header>
993
+ <ion-content class="ion-padding bg-white">
994
+ <!-- Uren -->
995
+ <div class="custom-bg grid grid-cols-1 gap-3">
996
+ @if (view === 'hours') {
997
+ <div class="flex-wrap gap-2">
998
+ <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
999
+ @for (hour of hourOptions; track hour) {
1000
+ <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)">
1001
+ {{ hour }}
1002
+ </div>
1003
+ }
1004
+ </div>
1253
1005
  </div>
1254
- </div>
1255
- </div>
1256
- <!-- Minuten -->
1257
- <div *ngIf="view === 'minutes'" class="grid grid-cols-1 gap-3">
1258
- <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
1259
- <div *ngFor="let minute of minuteOptions" 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)">
1260
- {{ minute }}
1006
+ }
1007
+ <!-- Minuten -->
1008
+ @if (view === 'minutes') {
1009
+ <div class="grid grid-cols-1 gap-3">
1010
+ <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
1011
+ @for (minute of minuteOptions; track minute) {
1012
+ <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)">
1013
+ {{ minute }}
1014
+ </div>
1015
+ }
1016
+ </div>
1261
1017
  </div>
1262
- </div>
1018
+ }
1263
1019
  </div>
1264
- </div>
1265
- </ion-content>
1266
- `
1020
+ </ion-content>
1021
+ `,
1267
1022
  }]
1268
- }], ctorParameters: () => [{ type: i1$1.ModalController }], propDecorators: { view: [{
1023
+ }], ctorParameters: () => [{ type: i1$2.ModalController }], propDecorators: { view: [{
1269
1024
  type: Input
1270
1025
  }], value: [{
1271
1026
  type: Input
@@ -1370,8 +1125,8 @@ class SpxInputTimeComponent {
1370
1125
  this.spxChange.emit(this.value);
1371
1126
  }
1372
1127
  }
1373
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputTimeComponent, deps: [{ token: i1$1.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
1374
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", 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">
1128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeComponent, deps: [{ token: i1$3.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
1129
+ 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">
1375
1130
  <div class="flex items-center justify-around gap-3">
1376
1131
  <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1377
1132
  <div class="text-gray text-xl">:</div>
@@ -1379,21 +1134,16 @@ class SpxInputTimeComponent {
1379
1134
  </div>
1380
1135
  </div>`, isInline: true, styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"] }); }
1381
1136
  }
1382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputTimeComponent, decorators: [{
1137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeComponent, decorators: [{
1383
1138
  type: Component,
1384
- args: [{ selector: 'spx-input-time', imports: [
1385
- NgIf,
1386
- NgFor,
1387
- SpxButtonComponent,
1388
- SpxDropdownComponent,
1389
- ], template: `<div class="relative text-black">
1139
+ args: [{ selector: 'spx-input-time', standalone: true, imports: [], template: `<div class="relative text-black">
1390
1140
  <div class="flex items-center justify-around gap-3">
1391
1141
  <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1392
1142
  <div class="text-gray text-xl">:</div>
1393
1143
  <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1394
1144
  </div>
1395
1145
  </div>`, styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"] }]
1396
- }], ctorParameters: () => [{ type: i1$1.ModalController }], propDecorators: { spxName: [{
1146
+ }], ctorParameters: () => [{ type: i1$3.ModalController }], propDecorators: { spxName: [{
1397
1147
  type: Input
1398
1148
  }], spxAutofocus: [{
1399
1149
  type: Input
@@ -1428,6 +1178,193 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
1428
1178
  args: ['input', { static: true }]
1429
1179
  }] } });
1430
1180
 
1181
+ var stepType;
1182
+ (function (stepType) {
1183
+ stepType["years"] = "years";
1184
+ stepType["months"] = "months";
1185
+ stepType["days"] = "days";
1186
+ })(stepType || (stepType = {}));
1187
+ class SpxInputDateComponent {
1188
+ constructor() {
1189
+ this.spxMax = input.required();
1190
+ this.spxMin = input.required();
1191
+ this.spxReadonly = input();
1192
+ this.spxValidators = input();
1193
+ this.value = model({
1194
+ description: "",
1195
+ value: "",
1196
+ });
1197
+ this.spxChange = output();
1198
+ this.spxFocused = input(true);
1199
+ this.spxFocus = output();
1200
+ this.spxSelectedStep = signal(stepType.years);
1201
+ this.spxSelectDay = input(false);
1202
+ this.spxSelectMonth = input(true);
1203
+ this.selectedYear = signal(null);
1204
+ this.selectedMonth = signal(null);
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);
1209
+ this.spxSuggestionC = computed(() => {
1210
+ switch (this.spxSelectedStep()) {
1211
+ case stepType.years:
1212
+ return this.spxSuggestions().years;
1213
+ case stepType.months:
1214
+ return [...this.spxSuggestions().months];
1215
+ case stepType.days:
1216
+ return [...this.spxSuggestions().days];
1217
+ }
1218
+ });
1219
+ this.spxSuggestions = input({ years: [],
1220
+ months: [{
1221
+ description: 'Jan',
1222
+ value: 1,
1223
+ }, {
1224
+ description: 'Feb',
1225
+ value: 2,
1226
+ }, {
1227
+ description: 'Mar',
1228
+ value: 3,
1229
+ }, {
1230
+ description: 'Apr',
1231
+ value: 4,
1232
+ }, {
1233
+ description: 'May',
1234
+ value: 5,
1235
+ }, {
1236
+ description: 'Jun',
1237
+ value: 6,
1238
+ }, {
1239
+ description: 'Jul',
1240
+ value: 7,
1241
+ }, {
1242
+ description: 'Aug',
1243
+ value: 8,
1244
+ }, {
1245
+ description: 'Sep',
1246
+ value: 9,
1247
+ }, {
1248
+ description: 'Oct',
1249
+ value: 10,
1250
+ }, {
1251
+ description: 'Nov',
1252
+ value: 11,
1253
+ }, {
1254
+ description: 'Dec',
1255
+ value: 12,
1256
+ }],
1257
+ days: [], });
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
+ }
1274
+ onModelChange(newValue, selectedStep) {
1275
+ const parsedValue = +newValue; // Convert to number
1276
+ if (parsedValue == 0)
1277
+ return;
1278
+ switch (selectedStep) {
1279
+ case stepType.years:
1280
+ this.selectedYear.set(parsedValue);
1281
+ break;
1282
+ case stepType.months:
1283
+ this.selectedMonth.set(parsedValue);
1284
+ break;
1285
+ case stepType.days:
1286
+ this.selectedDay.set(parsedValue);
1287
+ break;
1288
+ }
1289
+ }
1290
+ ngOnInit() {
1291
+ this.suggestYears();
1292
+ if (valuePairToValue(this.value)) {
1293
+ const parsedValue = DateTime.fromISO(valuePairToValue(this.value));
1294
+ this.selectedYear.set(parsedValue.year);
1295
+ this.selectedMonth.set(parsedValue.month);
1296
+ this.selectedDay.set(parsedValue.day);
1297
+ }
1298
+ }
1299
+ handleSuggestionClick(value) {
1300
+ switch (this.spxSelectedStep()) {
1301
+ case stepType.years:
1302
+ this.selectedYear.set(value);
1303
+ break;
1304
+ case stepType.months:
1305
+ this.selectedMonth.set(value);
1306
+ break;
1307
+ case stepType.days:
1308
+ this.selectedDay.set(value);
1309
+ break;
1310
+ }
1311
+ this.updateValueAndEmit();
1312
+ this.changeSelectedStep();
1313
+ }
1314
+ updateValueAndEmit() {
1315
+ const concatenatedValue = `${this.selectedYear() ? this.selectedYear() : ``}${this.selectedMonth() ? `${this.selectedMonth() < 10 ? `0${this.selectedMonth()}` : this.selectedMonth()}` : ``}${this.selectedDay() ? `-${this.selectedDay() < 10 ? `0${this.selectedDay()}` : this.selectedDay()}` : ``}`;
1316
+ const parsedValue = DateTime.fromISO(concatenatedValue);
1317
+ this.value.set({ value: parsedValue.toISO(), description: parsedValue.toISO() });
1318
+ this.spxChange.emit(this.value());
1319
+ }
1320
+ changeSelectedStep() {
1321
+ switch (this.spxSelectedStep()) {
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
+ }
1331
+ break;
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
+ }
1341
+ break;
1342
+ case stepType.days:
1343
+ this.spxSelectedStep.set(stepType.years);
1344
+ this.yearInputComponent().nativeElement.focus();
1345
+ break;
1346
+ }
1347
+ }
1348
+ suggestYears() {
1349
+ this.spxSuggestions().years = [];
1350
+ for (let year = DateTime.fromISO(this.spxMin()).year; year <= DateTime.fromISO(this.spxMax()).year; year++) {
1351
+ this.spxSuggestions().years.push({
1352
+ description: `'${year.toString().substring(2, 4)}`,
1353
+ value: year,
1354
+ });
1355
+ }
1356
+ }
1357
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
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'>\n <input #years\n class='spx-input-date__input'\n [(ngModel)]=\"selectedYear\"\n [attr.type]=\"'number'\"\n (click)=\"this.handleFocus('years')\"\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 #months\n class='spx-input-date__input'\n [(ngModel)]=\"selectedMonth\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n (click)=\"this.handleFocus('months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input #days\n class='spx-input-date__input'\n [(ngModel)]=\"selectedDay\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n (click)=\"this.handleFocus('days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value) ||\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"] }] }); }
1359
+ }
1360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputDateComponent, decorators: [{
1361
+ type: Component,
1362
+ args: [{ selector: 'spx-input-date', standalone: true, imports: [
1363
+ SpxSuggestionComponent,
1364
+ FormsModule
1365
+ ], template: "<div class='spx-input-date__controls'>\n <input #years\n class='spx-input-date__input'\n [(ngModel)]=\"selectedYear\"\n [attr.type]=\"'number'\"\n (click)=\"this.handleFocus('years')\"\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 #months\n class='spx-input-date__input'\n [(ngModel)]=\"selectedMonth\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n (click)=\"this.handleFocus('months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input #days\n class='spx-input-date__input'\n [(ngModel)]=\"selectedDay\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n (click)=\"this.handleFocus('days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value) ||\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"] }]
1366
+ }] });
1367
+
1431
1368
  class SpxInputComponent {
1432
1369
  constructor() {
1433
1370
  this.spxLabel = 'label';
@@ -1482,14 +1419,18 @@ class SpxInputComponent {
1482
1419
  this.spxSearch.emit();
1483
1420
  }
1484
1421
  setFocusIn() {
1485
- this.spxFocused = true;
1486
- this.passFocusToControl();
1422
+ setTimeout(() => {
1423
+ this.spxFocused = true;
1424
+ this.passFocusToControl();
1425
+ }, 0);
1487
1426
  }
1488
1427
  setFocusOut() {
1489
- this.spxFocused = false;
1490
- if (this.spxType === SpxInputTypeEnum.radio) {
1491
- this.radioInput?.spxFocusOut();
1492
- }
1428
+ setTimeout(() => {
1429
+ this.spxFocused = false;
1430
+ if (this.spxType === SpxInputTypeEnum.radio) {
1431
+ this.radioInput?.spxFocusOut();
1432
+ }
1433
+ }, 0);
1493
1434
  }
1494
1435
  handleEdit() {
1495
1436
  this.spxEdit.emit();
@@ -1518,7 +1459,7 @@ class SpxInputComponent {
1518
1459
  }
1519
1460
  }
1520
1461
  writeValue(value) {
1521
- this.value = this.lastValue = value;
1462
+ this.value = this.lastValue = value; // hier komt initiele waarde van formcontrol binnen
1522
1463
  }
1523
1464
  handleChangeEvent(value) {
1524
1465
  if (value !== this.lastValue) {
@@ -1530,139 +1471,145 @@ class SpxInputComponent {
1530
1471
  this.onTouched();
1531
1472
  }
1532
1473
  registerOnChange(fn) {
1533
- this.onChange = fn;
1474
+ this.onChange = fn; // emit verandering aan formcontrol
1534
1475
  }
1535
1476
  registerOnTouched(fn) {
1536
1477
  this.onTouched = fn;
1537
1478
  }
1538
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1539
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: SpxInputComponent, isStandalone: true, selector: "spx-input", inputs: { spxLabel: "spxLabel", spxMax: "spxMax", spxMin: "spxMin", spxName: "spxName", spxReadonly: "spxReadonly", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxRequired: "spxRequired", spxSelectMonth: "spxSelectMonth", spxSelectDay: "spxSelectDay", spxShowEdit: "spxShowEdit", spxShowHelp: "spxShowHelp", spxShowLabel: "spxShowLabel", spxCompact: "spxCompact", spxShowClear: "spxShowClear", spxShowSearch: "spxShowSearch", spxShowValidationMessages: "spxShowValidationMessages", spxStep: "spxStep", spxSuggestions: "spxSuggestions", spxType: "spxType", spxValidators: "spxValidators", value: "value", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused" }, outputs: { spxBlur: "spxBlur", spxClear: "spxClear", spxChange: "spxChange", spxFocus: "spxFocus", spxEdit: "spxEdit", spxHelp: "spxHelp", spxSearch: "spxSearch" }, host: { listeners: { "spxChange": "handleChangeEvent($event)", "focusout": "_handleBlurEvent()" } }, providers: [
1479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1480
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputComponent, isStandalone: true, selector: "spx-input", inputs: { spxLabel: "spxLabel", spxMax: "spxMax", spxMin: "spxMin", spxName: "spxName", spxReadonly: "spxReadonly", spxAutocomplete: "spxAutocomplete", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxRequired: "spxRequired", spxSelectMonth: "spxSelectMonth", spxSelectDay: "spxSelectDay", spxShowEdit: "spxShowEdit", spxShowHelp: "spxShowHelp", spxShowLabel: "spxShowLabel", spxCompact: "spxCompact", spxShowClear: "spxShowClear", spxShowSearch: "spxShowSearch", spxShowValidationMessages: "spxShowValidationMessages", spxStep: "spxStep", spxSuggestions: "spxSuggestions", spxType: "spxType", spxValidators: "spxValidators", value: "value", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused" }, outputs: { spxBlur: "spxBlur", spxClear: "spxClear", spxChange: "spxChange", spxFocus: "spxFocus", spxEdit: "spxEdit", spxHelp: "spxHelp", spxSearch: "spxSearch" }, host: { listeners: { "spxChange": "handleChangeEvent($event)", "focusout": "_handleBlurEvent()" } }, providers: [
1540
1481
  {
1541
1482
  provide: NG_VALUE_ACCESSOR,
1542
1483
  useExisting: SpxInputComponent,
1543
1484
  multi: true
1544
1485
  }
1545
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
1546
- [spxFocused]="this.spxFocused"
1547
- [spxLabel]="this.spxLabel"
1548
- [spxReadonly]="this.spxReadonly"
1549
- [spxRequired]="this.spxRequired"
1550
- [spxValue]="this.value"
1551
- [spxShowHelp]="this.spxShowHelp"
1552
- [spxCompact]="this.spxCompact"
1553
- [spxShowClear]="this.spxShowClear"
1554
- [spxShowEdit]="this.spxShowEdit"
1555
- [spxShowLabel]="this.spxShowLabel"
1556
- [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1557
- [spxShowValidationMessages]="this.spxShowValidationMessages"
1558
- (spxClear)="this.handleClear()"
1559
- (spxEdit)="this.handleEdit()"
1560
- (spxHelp)="this.handleHelp()"
1561
- (spxFocus)="this.setFocusIn()"
1562
- (spxFocusOut)="this.setFocusOut()"
1563
- (spxSearch)="this.handleSearch()">
1564
- <div controls>
1565
- <spx-input-text
1566
- *ngIf="this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password'"
1567
- (spxBlurFromChild)="this.handleBlur()"
1568
- (spxChange)="this.handleChange($event)"
1569
- (spxFocus)="this.handleFocus()"
1570
- [spxAutofocus]="this.spxAutofocus"
1571
- [spxCapitalize]="this.spxCapitalize"
1572
- [spxFocused]="this.spxFocused"
1573
- [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1574
- [spxName]="this.spxName"
1575
- [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1576
- [spxReadonly]="this.spxReadonly"
1577
- [spxSuggestions]="this.spxSuggestions"
1578
- [spxType]="this.spxType"
1579
- [spxValidators]="this.spxValidators"
1580
- [value]="this.value"
1581
- ></spx-input-text>
1582
- <spx-input-date
1583
- *ngIf="this.spxType === 'date'"
1584
- (spxChange)="this.handleChange($event)"
1585
- (spxFocus)="this.handleFocus()"
1586
- [spxFocused]="this.spxFocused"
1587
- [spxMax]="this.spxMax"
1588
- [spxMin]="this.spxMin"
1589
- [spxName]="this.spxName"
1590
- [spxReadonly]="this.spxReadonly"
1591
- [spxSelectDay]="this.spxSelectDay"
1592
- [spxSelectMonth]="this.spxSelectMonth"
1593
- [spxValidators]="this.spxValidators"
1594
- [value]="this.value"
1595
- ></spx-input-date>
1596
- <spx-input-float
1597
- *ngIf="this.spxType === 'float'"
1598
- (spxChange)="this.handleChange($event)"
1599
- (spxFocus)="this.handleFocus()"
1600
- [spxAutofocus]="this.spxAutofocus"
1601
- [spxFocused]="this.spxFocused"
1602
- [spxName]="this.spxName"
1603
- [spxReadonly]="this.spxReadonly"
1604
- [spxStep]="this.spxStep"
1605
- [spxValidators]="this.spxValidators"
1606
- [value]="this.value"
1607
- ></spx-input-float>
1608
- <spx-input-number
1609
- *ngIf="this.spxType === 'number'"
1610
- (spxChange)="this.handleChange($event)"
1611
- (spxFocus)="this.handleFocus()"
1612
- [spxAutofocus]="this.spxAutofocus"
1613
- [spxFocused]="this.spxFocused"
1614
- [spxInputMode]="this.spxInputMode"
1615
- [spxName]="this.spxName"
1616
- [spxReadonly]="this.spxReadonly"
1617
- [spxStep]="this.spxStep"
1618
- [spxValidators]="this.spxValidators"
1619
- [value]="this.value"
1620
- ></spx-input-number>
1621
- <spx-input-radio
1622
- #radioInput
1623
- *ngIf="this.spxType === 'radio'"
1624
- (spxChange)="this.handleChange($event)"
1625
- [spxFocused]="this.spxFocused"
1626
- [spxName]="this.spxName"
1627
- [spxReadonly]="this.spxReadonly"
1628
- [spxShowLabel]="this.spxShowLabel"
1629
- [spxSuggestions]="this.spxSuggestions"
1630
- [spxValidators]="this.spxValidators"
1631
- [value]="this.value"
1632
- ></spx-input-radio>
1633
- <spx-input-time
1634
- #timeInput
1635
- *ngIf="this.spxType === 'time'"
1636
- (spxChange)="this.handleChange($event)"
1637
- (spxFocus)="this.handleFocus()"
1638
- [spxFocused]="this.spxFocused"
1639
- [spxName]="this.spxName"
1640
- [spxReadonly]="this.spxReadonly"
1641
- [spxValidators]="this.spxValidators"
1642
- [value]="this.value"
1643
- ></spx-input-time>
1644
- </div>
1645
- <div validation-messages>
1646
- <ng-content></ng-content>
1647
- </div>
1648
- </spx-input-box>`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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", "spxName", "spxReadonly", "spxValidators", "spxFocused", "spxSelectMonth", "spxSelectDay", "value", "spxLastKeyPressed", "spxSelectStep", "spxInternalValue", "spxSuggestions", "spxWasInternalUpdate"], outputs: ["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", "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"] }] }); }
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>
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"] }] }); }
1649
1596
  }
1650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: SpxInputComponent, decorators: [{
1597
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputComponent, decorators: [{
1651
1598
  type: Component,
1652
1599
  args: [{
1653
1600
  selector: 'spx-input',
1601
+ standalone: true,
1654
1602
  host: {
1655
1603
  '(spxChange)': 'handleChangeEvent($event)'
1656
1604
  },
1657
1605
  imports: [
1658
- NgIf,
1659
1606
  SpxInputBoxComponent,
1660
1607
  SpxInputDateComponent,
1661
1608
  SpxInputFloatComponent,
1662
1609
  SpxInputNumberComponent,
1663
1610
  SpxInputRadioComponent,
1664
1611
  SpxInputTextComponent,
1665
- SpxInputTimeComponent,
1612
+ SpxInputTimeComponent
1666
1613
  ],
1667
1614
  providers: [
1668
1615
  {
@@ -1672,109 +1619,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
1672
1619
  }
1673
1620
  ],
1674
1621
  template: `<spx-input-box
1675
- [spxFocused]="this.spxFocused"
1676
- [spxLabel]="this.spxLabel"
1677
- [spxReadonly]="this.spxReadonly"
1678
- [spxRequired]="this.spxRequired"
1679
- [spxValue]="this.value"
1680
- [spxShowHelp]="this.spxShowHelp"
1681
- [spxCompact]="this.spxCompact"
1682
- [spxShowClear]="this.spxShowClear"
1683
- [spxShowEdit]="this.spxShowEdit"
1684
- [spxShowLabel]="this.spxShowLabel"
1685
- [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1686
- [spxShowValidationMessages]="this.spxShowValidationMessages"
1687
- (spxClear)="this.handleClear()"
1688
- (spxEdit)="this.handleEdit()"
1689
- (spxHelp)="this.handleHelp()"
1690
- (spxFocus)="this.setFocusIn()"
1691
- (spxFocusOut)="this.setFocusOut()"
1692
- (spxSearch)="this.handleSearch()">
1693
- <div controls>
1694
- <spx-input-text
1695
- *ngIf="this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password'"
1696
- (spxBlurFromChild)="this.handleBlur()"
1697
- (spxChange)="this.handleChange($event)"
1698
- (spxFocus)="this.handleFocus()"
1699
- [spxAutofocus]="this.spxAutofocus"
1700
- [spxCapitalize]="this.spxCapitalize"
1701
- [spxFocused]="this.spxFocused"
1702
- [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1703
- [spxName]="this.spxName"
1704
- [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1705
- [spxReadonly]="this.spxReadonly"
1706
- [spxSuggestions]="this.spxSuggestions"
1707
- [spxType]="this.spxType"
1708
- [spxValidators]="this.spxValidators"
1709
- [value]="this.value"
1710
- ></spx-input-text>
1711
- <spx-input-date
1712
- *ngIf="this.spxType === 'date'"
1713
- (spxChange)="this.handleChange($event)"
1714
- (spxFocus)="this.handleFocus()"
1715
- [spxFocused]="this.spxFocused"
1716
- [spxMax]="this.spxMax"
1717
- [spxMin]="this.spxMin"
1718
- [spxName]="this.spxName"
1719
- [spxReadonly]="this.spxReadonly"
1720
- [spxSelectDay]="this.spxSelectDay"
1721
- [spxSelectMonth]="this.spxSelectMonth"
1722
- [spxValidators]="this.spxValidators"
1723
- [value]="this.value"
1724
- ></spx-input-date>
1725
- <spx-input-float
1726
- *ngIf="this.spxType === 'float'"
1727
- (spxChange)="this.handleChange($event)"
1728
- (spxFocus)="this.handleFocus()"
1729
- [spxAutofocus]="this.spxAutofocus"
1730
- [spxFocused]="this.spxFocused"
1731
- [spxName]="this.spxName"
1732
- [spxReadonly]="this.spxReadonly"
1733
- [spxStep]="this.spxStep"
1734
- [spxValidators]="this.spxValidators"
1735
- [value]="this.value"
1736
- ></spx-input-float>
1737
- <spx-input-number
1738
- *ngIf="this.spxType === 'number'"
1739
- (spxChange)="this.handleChange($event)"
1740
- (spxFocus)="this.handleFocus()"
1741
- [spxAutofocus]="this.spxAutofocus"
1742
- [spxFocused]="this.spxFocused"
1743
- [spxInputMode]="this.spxInputMode"
1744
- [spxName]="this.spxName"
1745
- [spxReadonly]="this.spxReadonly"
1746
- [spxStep]="this.spxStep"
1747
- [spxValidators]="this.spxValidators"
1748
- [value]="this.value"
1749
- ></spx-input-number>
1750
- <spx-input-radio
1751
- #radioInput
1752
- *ngIf="this.spxType === 'radio'"
1753
- (spxChange)="this.handleChange($event)"
1754
- [spxFocused]="this.spxFocused"
1755
- [spxName]="this.spxName"
1756
- [spxReadonly]="this.spxReadonly"
1757
- [spxShowLabel]="this.spxShowLabel"
1758
- [spxSuggestions]="this.spxSuggestions"
1759
- [spxValidators]="this.spxValidators"
1760
- [value]="this.value"
1761
- ></spx-input-radio>
1762
- <spx-input-time
1763
- #timeInput
1764
- *ngIf="this.spxType === 'time'"
1765
- (spxChange)="this.handleChange($event)"
1766
- (spxFocus)="this.handleFocus()"
1767
- [spxFocused]="this.spxFocused"
1768
- [spxName]="this.spxName"
1769
- [spxReadonly]="this.spxReadonly"
1770
- [spxValidators]="this.spxValidators"
1771
- [value]="this.value"
1772
- ></spx-input-time>
1773
- </div>
1774
- <div validation-messages>
1775
- <ng-content></ng-content>
1776
- </div>
1777
- </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>
1730
+ </spx-input-box>`,
1778
1731
  }]
1779
1732
  }], propDecorators: { spxLabel: [{
1780
1733
  type: Input
@@ -1786,6 +1739,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
1786
1739
  type: Input
1787
1740
  }], spxReadonly: [{
1788
1741
  type: Input
1742
+ }], spxAutocomplete: [{
1743
+ type: Input
1789
1744
  }], spxAutofocus: [{
1790
1745
  type: Input
1791
1746
  }], spxInputMode: [{