@softpak/components 18.6.9 → 18.6.11

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 (157) hide show
  1. package/README.md +24 -24
  2. package/esm2022/spx-alert/public-api.mjs +1 -1
  3. package/esm2022/spx-alert/spx-alert.component.mjs +115 -115
  4. package/esm2022/spx-alert/spx-alert.interface.mjs +1 -1
  5. package/esm2022/spx-app-configuration/public-api.mjs +1 -1
  6. package/esm2022/spx-app-configuration/spx-app-alert.interface.mjs +1 -1
  7. package/esm2022/spx-app-configuration/spx-app-bundle-set.interface.mjs +1 -1
  8. package/esm2022/spx-app-configuration/spx-app-channel-type.enum.mjs +1 -1
  9. package/esm2022/spx-app-configuration/spx-app-channel.interface.mjs +1 -1
  10. package/esm2022/spx-app-configuration/spx-app-config.interface.mjs +1 -1
  11. package/esm2022/spx-app-configuration/spx-app-id.enum.mjs +1 -1
  12. package/esm2022/spx-app-configuration/spx-app-lang.enum.mjs +1 -1
  13. package/esm2022/spx-app-configuration/spx-app-release-note.interface.mjs +1 -1
  14. package/esm2022/spx-app-expiry/public-api.mjs +1 -1
  15. package/esm2022/spx-app-expiry/spx-app-expiry.component.mjs +57 -57
  16. package/esm2022/spx-app-expiry/spx-app-expiry.interface.mjs +1 -1
  17. package/esm2022/spx-app-expiry/spx-check-expiry-final-warning.interface.mjs +1 -1
  18. package/esm2022/spx-app-expiry/spx-check-expiry-happened.interface.mjs +1 -1
  19. package/esm2022/spx-app-expiry/spx-check-expiry-warning.interface.mjs +1 -1
  20. package/esm2022/spx-app-update/public-api.mjs +1 -1
  21. package/esm2022/spx-app-update/spx-app-update.component.mjs +59 -59
  22. package/esm2022/spx-button/public-api.mjs +1 -1
  23. package/esm2022/spx-button/spx-button.component.mjs +63 -63
  24. package/esm2022/spx-capitalize/public-api.mjs +1 -1
  25. package/esm2022/spx-capitalize/spx-capitalize.pipe.mjs +1 -1
  26. package/esm2022/spx-card/public-api.mjs +1 -1
  27. package/esm2022/spx-card/spx-card-grid.component.mjs +27 -27
  28. package/esm2022/spx-card/spx-card-item.component.mjs +69 -69
  29. package/esm2022/spx-card/spx-card-line.component.mjs +77 -77
  30. package/esm2022/spx-card/spx-card.component.mjs +51 -51
  31. package/esm2022/spx-change-details/public-api.mjs +1 -1
  32. package/esm2022/spx-change-details/spx-change-details-value.interface.mjs +1 -1
  33. package/esm2022/spx-change-details/spx-change-details.component.mjs +3 -3
  34. package/esm2022/spx-channel-selection/public-api.mjs +1 -1
  35. package/esm2022/spx-channel-selection/src/spx-channel-indicator.component.mjs +13 -13
  36. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +13 -13
  37. package/esm2022/spx-check-digit/public-api.mjs +1 -1
  38. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +3 -3
  39. package/esm2022/spx-form-section/public-api.mjs +1 -1
  40. package/esm2022/spx-form-section/spx-form-section.component.mjs +21 -21
  41. package/esm2022/spx-form-view/public-api.mjs +1 -1
  42. package/esm2022/spx-form-view/spx-autocomplete-search.component.mjs +3 -3
  43. package/esm2022/spx-form-view/spx-form-button-type.enum.mjs +1 -1
  44. package/esm2022/spx-form-view/spx-form-button.interface.mjs +1 -1
  45. package/esm2022/spx-form-view/spx-form-field.interface.mjs +1 -1
  46. package/esm2022/spx-form-view/spx-form-section.interface.mjs +1 -1
  47. package/esm2022/spx-form-view/spx-form-view.component.mjs +163 -163
  48. package/esm2022/spx-form-view/spx-form.interface.mjs +1 -1
  49. package/esm2022/spx-helpers/calc-check-digit.function.mjs +1 -1
  50. package/esm2022/spx-helpers/public-api.mjs +1 -1
  51. package/esm2022/spx-helpers/spx-severity.enum.mjs +1 -1
  52. package/esm2022/spx-helpers/value-pair-to-value.function.mjs +1 -1
  53. package/esm2022/spx-inputs/public-api.mjs +1 -1
  54. package/esm2022/spx-inputs/spx-dropdown.component.mjs +33 -33
  55. package/esm2022/spx-inputs/spx-input-box.component.mjs +177 -151
  56. package/esm2022/spx-inputs/spx-input-date/spx-input-date.component.mjs +50 -17
  57. package/esm2022/spx-inputs/spx-input-float.component.mjs +51 -51
  58. package/esm2022/spx-inputs/spx-input-number.component.mjs +27 -27
  59. package/esm2022/spx-inputs/spx-input-radio.component.mjs +23 -23
  60. package/esm2022/spx-inputs/spx-input-text.component.mjs +63 -63
  61. package/esm2022/spx-inputs/spx-input-time-modal.component.mjs +77 -77
  62. package/esm2022/spx-inputs/spx-input-time.component.mjs +13 -13
  63. package/esm2022/spx-inputs/spx-input-type.enum.mjs +1 -1
  64. package/esm2022/spx-inputs/spx-input.component.mjs +220 -220
  65. package/esm2022/spx-inputs/spx-value-interface.mjs +1 -1
  66. package/esm2022/spx-navigation/public-api.mjs +1 -1
  67. package/esm2022/spx-navigation/spx-home-tile.component.mjs +39 -39
  68. package/esm2022/spx-navigation/spx-home-tiles.component.mjs +5 -5
  69. package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +1 -1
  70. package/esm2022/spx-navigation/spx-navigation.component.mjs +3 -3
  71. package/esm2022/spx-number-check/public-api.mjs +1 -1
  72. package/esm2022/spx-number-check/spx-number-check.component.mjs +77 -77
  73. package/esm2022/spx-pagination/public-api.mjs +1 -1
  74. package/esm2022/spx-pagination/spx-pagination.component.mjs +3 -3
  75. package/esm2022/spx-patch/patch-check.function.mjs +1 -1
  76. package/esm2022/spx-patch/public-api.mjs +1 -1
  77. package/esm2022/spx-patch/release-check.function.mjs +1 -1
  78. package/esm2022/spx-patch/spx-patch.component.mjs +25 -25
  79. package/esm2022/spx-progress-bar/public-api.mjs +1 -1
  80. package/esm2022/spx-progress-bar/spx-progress-bar.component.mjs +15 -15
  81. package/esm2022/spx-spinner/public-api.mjs +1 -1
  82. package/esm2022/spx-spinner/spx-spinner.component.mjs +143 -143
  83. package/esm2022/spx-stock-info/public-api.mjs +1 -1
  84. package/esm2022/spx-stock-info/spx-stock-info-value.interface.mjs +1 -1
  85. package/esm2022/spx-stock-info/spx-stock-info.component.mjs +3 -3
  86. package/esm2022/spx-storage/public-api.mjs +1 -1
  87. package/esm2022/spx-storage/src/spx-storage-key.enum.mjs +1 -1
  88. package/esm2022/spx-storage/src/spx-storage.class.mjs +1 -1
  89. package/esm2022/spx-suggestion/public-api.mjs +1 -1
  90. package/esm2022/spx-suggestion/spx-suggestion.component.mjs +41 -41
  91. package/esm2022/spx-toaster/public-api.mjs +1 -1
  92. package/esm2022/spx-toaster/src/spx-toaster-autoclose-speed.mjs +1 -1
  93. package/esm2022/spx-toaster/src/spx-toaster-message.interface.mjs +1 -1
  94. package/esm2022/spx-toaster/src/spx-toaster.component.mjs +93 -93
  95. package/esm2022/spx-update/public-api.mjs +1 -1
  96. package/esm2022/spx-update/src/spx-update-info.component.mjs +23 -23
  97. package/esm2022/spx-update/src/spx-update-progress.component.mjs +3 -3
  98. package/esm2022/spx-validation/max.validator.mjs +1 -1
  99. package/esm2022/spx-validation/maxlength.validator.mjs +1 -1
  100. package/esm2022/spx-validation/min.validator.mjs +1 -1
  101. package/esm2022/spx-validation/minlength.validator.mjs +1 -1
  102. package/esm2022/spx-validation/pattern.validator.mjs +1 -1
  103. package/esm2022/spx-validation/public-api.mjs +1 -1
  104. package/esm2022/spx-validation/required.validator.mjs +1 -1
  105. package/esm2022/spx-validation/spx-validate-control.component.mjs +3 -3
  106. package/esm2022/spx-validation/year-and-month.validator.mjs +1 -1
  107. package/fesm2022/softpak-components-spx-alert.mjs +114 -114
  108. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -1
  109. package/fesm2022/softpak-components-spx-app-configuration.mjs.map +1 -1
  110. package/fesm2022/softpak-components-spx-app-expiry.mjs +56 -56
  111. package/fesm2022/softpak-components-spx-app-expiry.mjs.map +1 -1
  112. package/fesm2022/softpak-components-spx-app-update.mjs +58 -58
  113. package/fesm2022/softpak-components-spx-app-update.mjs.map +1 -1
  114. package/fesm2022/softpak-components-spx-button.mjs +62 -62
  115. package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
  116. package/fesm2022/softpak-components-spx-capitalize.mjs.map +1 -1
  117. package/fesm2022/softpak-components-spx-card.mjs +220 -220
  118. package/fesm2022/softpak-components-spx-card.mjs.map +1 -1
  119. package/fesm2022/softpak-components-spx-change-details.mjs +2 -2
  120. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  121. package/fesm2022/softpak-components-spx-channel-selection.mjs +24 -24
  122. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  123. package/fesm2022/softpak-components-spx-check-digit.mjs +2 -2
  124. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  125. package/fesm2022/softpak-components-spx-form-section.mjs +20 -20
  126. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  127. package/fesm2022/softpak-components-spx-form-view.mjs +164 -164
  128. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  129. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -1
  130. package/fesm2022/softpak-components-spx-inputs.mjs +724 -666
  131. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  132. package/fesm2022/softpak-components-spx-navigation.mjs +44 -44
  133. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  134. package/fesm2022/softpak-components-spx-number-check.mjs +76 -76
  135. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -1
  136. package/fesm2022/softpak-components-spx-pagination.mjs +2 -2
  137. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -1
  138. package/fesm2022/softpak-components-spx-patch.mjs +24 -24
  139. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -1
  140. package/fesm2022/softpak-components-spx-progress-bar.mjs +14 -14
  141. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -1
  142. package/fesm2022/softpak-components-spx-spinner.mjs +142 -142
  143. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -1
  144. package/fesm2022/softpak-components-spx-stock-info.mjs +2 -2
  145. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  146. package/fesm2022/softpak-components-spx-storage.mjs.map +1 -1
  147. package/fesm2022/softpak-components-spx-suggestion.mjs +40 -40
  148. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -1
  149. package/fesm2022/softpak-components-spx-toaster.mjs +92 -92
  150. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -1
  151. package/fesm2022/softpak-components-spx-update.mjs +24 -24
  152. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  153. package/fesm2022/softpak-components-spx-validation.mjs +2 -2
  154. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -1
  155. package/package.json +57 -57
  156. package/spx-inputs/spx-input-box.component.d.ts +4 -1
  157. package/spx-inputs/spx-input-date/spx-input-date.component.d.ts +5 -1
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, HostListener, ViewChild, input, model, output, signal, computed } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, HostListener, ViewChild, input, model, output, signal, viewChild, computed } from '@angular/core';
3
3
  import { SpxButtonComponent } from '@softpak/components/spx-button';
4
4
  import * as i1 from '@fortawesome/angular-fontawesome';
5
5
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
6
6
  import { faEdit, faSearch, faQuestion, faTimes, faXmark } from '@fortawesome/free-solid-svg-icons';
7
+ import { SpxSeverityEnum, valuePairToValue } from '@softpak/components/spx-helpers';
7
8
  import { fromEvent } from 'rxjs';
8
9
  import * as i1$1 from '@angular/forms';
9
10
  import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
10
11
  import { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';
11
- import { valuePairToValue, SpxSeverityEnum } from '@softpak/components/spx-helpers';
12
12
  import { DateTime } from 'luxon';
13
13
  import * as i1$2 from '@ionic/angular';
14
14
  import { IonicModule } from '@ionic/angular';
@@ -50,6 +50,7 @@ class SpxInputBoxComponent {
50
50
  this.faSearch = faSearch;
51
51
  this.faQuestion = faQuestion;
52
52
  this.faTimes = faTimes;
53
+ this.spxSeverityEnum = SpxSeverityEnum;
53
54
  this.spxFocused = false;
54
55
  this.spxReadonly = false;
55
56
  this.spxShowClear = true;
@@ -72,81 +73,92 @@ class SpxInputBoxComponent {
72
73
  }
73
74
  }
74
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 }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputBoxComponent, isStandalone: true, selector: "spx-input-box", inputs: { spxCompact: "spxCompact", spxFocused: "spxFocused", spxLabel: "spxLabel", spxReadonly: "spxReadonly", spxRequired: "spxRequired", spxShowClear: "spxShowClear", spxShowEdit: "spxShowEdit", spxShowHelp: "spxShowHelp", spxShowLabel: "spxShowLabel", spxShowSearch: "spxShowSearch", spxShowValidationMessages: "spxShowValidationMessages", spxValue: "spxValue" }, outputs: { spxClear: "spxClear", spxSearch: "spxSearch", spxFocus: "spxFocus", spxFocusOut: "spxFocusOut", spxEdit: "spxEdit", spxHelp: "spxHelp" }, host: { listeners: { "focusin": "handleFocusIn($event)", "focusout": "handleFocusOut($event)", "document:click": "handleWindowClick($event)" } }, ngImport: i0, template: `<div class="flex rounded w-full gap-3"
76
- [class.rounded-none]="this.spxShowValidationMessages"
77
- [class.rounded-t]="this.spxShowValidationMessages"
78
- [class.outline-none]="this.spxFocused && !this.spxReadonly"
79
- [class.ring-2]="this.spxFocused && !this.spxReadonly"
80
- [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
81
- [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
82
- [class.bg-white]="!this.spxReadonly"
83
- [class.bg-gray-300]="this.spxReadonly"
84
- [class.cursor-not-allowed]="this.spxReadonly">
85
- <div class="flex-auto p-3"
86
- [class.p-0]="this.spxCompact"
87
- [class.flex]="this.spxCompact"
88
- [class.items-center]="this.spxCompact">
89
- @if (this.spxShowLabel) {
90
- <div class="font-bold text-sm mb-1 text-gray-800"
91
- [class.mb-0]="this.spxCompact"
92
- [class.px-3]="this.spxCompact">
93
- {{this.spxLabel}} @if (spxRequired) {
94
- <span class="text-red-800">*</span>
95
- }
96
- </div>
97
- }
98
- <ng-content select="[controls]"></ng-content>
99
- </div>
100
- <div class="flex flex-none gap-1 p-1">
101
- @if (this.spxShowEdit) {
102
- <spx-button
103
- (spxClick)="onEdit()"
104
- [spxFullHeight]="true"
105
- [spxSize]="'xl'"
106
- [spxType]="'button'">
107
- <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
108
- </spx-button>
109
- }
110
- @if (this.spxShowHelp) {
111
- <spx-button
112
- (spxClick)="onHelp()"
113
- [spxFullHeight]="true"
114
- [spxDisabled]="this.spxReadonly"
115
- [spxSize]="'xl'"
116
- [spxTabIndex]="-1"
117
- [spxType]="'button'">
118
- <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
119
- </spx-button>
120
- }
121
- @if (this.spxShowSearch) {
122
- <spx-button
123
- (spxClick)="onSearch()"
124
- [spxFullHeight]="true"
125
- [spxDisabled]="this.spxReadonly"
126
- [spxSize]="'xl'"
127
- [spxTabIndex]="-1"
128
- [spxType]="'button'">
129
- <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
130
- </spx-button>
131
- }
132
- @if (this.spxShowClear) {
133
- <spx-button
134
- (spxClick)="onClear()"
135
- [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
136
- [spxFullHeight]="true"
137
- [spxSize]="'xl'"
138
- [spxTabIndex]="-1"
139
- [spxType]="'button'">
140
- <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
141
- </spx-button>
142
- }
143
- </div>
144
- </div>
145
- @if (this.spxShowValidationMessages) {
146
- <div class="bg-red-600 rounded-b text-white p-3">
147
- <ng-content select="[validation-messages]"></ng-content>
148
- </div>
149
- }`, 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"] }] }); }
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", spxAlertMessageSeverity: "spxAlertMessageSeverity", 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
+ }
99
+ <ng-content select="[controls]"></ng-content>
100
+ </div>
101
+ <div class="flex flex-none gap-1 p-1">
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>
145
+ </div>
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
+ }
151
+ @else if(this.spxAlertMessageSeverity) {
152
+ <div [class.bg-red-700]="spxSeverityEnum.error"
153
+ [class.bg-green-700]="spxSeverityEnum.success"
154
+ [class.bg-blue-700]="spxSeverityEnum.info"
155
+ [class.bg-gray-400]="spxSeverityEnum.unknown"
156
+ [class.bg-amber-700]="spxSeverityEnum.warning"
157
+ class="rounded-b text-white p-3">
158
+ <ng-content select="[validation-messages]"></ng-content>
159
+ </div>
160
+ }
161
+ `, isInline: true, dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
150
162
  }
151
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputBoxComponent, decorators: [{
152
164
  type: Component,
@@ -157,81 +169,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
157
169
  SpxButtonComponent,
158
170
  FontAwesomeModule
159
171
  ],
160
- template: `<div class="flex rounded w-full gap-3"
161
- [class.rounded-none]="this.spxShowValidationMessages"
162
- [class.rounded-t]="this.spxShowValidationMessages"
163
- [class.outline-none]="this.spxFocused && !this.spxReadonly"
164
- [class.ring-2]="this.spxFocused && !this.spxReadonly"
165
- [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
166
- [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
167
- [class.bg-white]="!this.spxReadonly"
168
- [class.bg-gray-300]="this.spxReadonly"
169
- [class.cursor-not-allowed]="this.spxReadonly">
170
- <div class="flex-auto p-3"
171
- [class.p-0]="this.spxCompact"
172
- [class.flex]="this.spxCompact"
173
- [class.items-center]="this.spxCompact">
174
- @if (this.spxShowLabel) {
175
- <div class="font-bold text-sm mb-1 text-gray-800"
176
- [class.mb-0]="this.spxCompact"
177
- [class.px-3]="this.spxCompact">
178
- {{this.spxLabel}} @if (spxRequired) {
179
- <span class="text-red-800">*</span>
180
- }
181
- </div>
182
- }
183
- <ng-content select="[controls]"></ng-content>
184
- </div>
185
- <div class="flex flex-none gap-1 p-1">
186
- @if (this.spxShowEdit) {
187
- <spx-button
188
- (spxClick)="onEdit()"
189
- [spxFullHeight]="true"
190
- [spxSize]="'xl'"
191
- [spxType]="'button'">
192
- <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
193
- </spx-button>
194
- }
195
- @if (this.spxShowHelp) {
196
- <spx-button
197
- (spxClick)="onHelp()"
198
- [spxFullHeight]="true"
199
- [spxDisabled]="this.spxReadonly"
200
- [spxSize]="'xl'"
201
- [spxTabIndex]="-1"
202
- [spxType]="'button'">
203
- <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
204
- </spx-button>
205
- }
206
- @if (this.spxShowSearch) {
207
- <spx-button
208
- (spxClick)="onSearch()"
209
- [spxFullHeight]="true"
210
- [spxDisabled]="this.spxReadonly"
211
- [spxSize]="'xl'"
212
- [spxTabIndex]="-1"
213
- [spxType]="'button'">
214
- <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
215
- </spx-button>
216
- }
217
- @if (this.spxShowClear) {
218
- <spx-button
219
- (spxClick)="onClear()"
220
- [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
221
- [spxFullHeight]="true"
222
- [spxSize]="'xl'"
223
- [spxTabIndex]="-1"
224
- [spxType]="'button'">
225
- <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
226
- </spx-button>
227
- }
228
- </div>
229
- </div>
230
- @if (this.spxShowValidationMessages) {
231
- <div class="bg-red-600 rounded-b text-white p-3">
232
- <ng-content select="[validation-messages]"></ng-content>
233
- </div>
234
- }`,
172
+ template: `<div class="flex rounded w-full gap-3"
173
+ [class.rounded-none]="this.spxShowValidationMessages"
174
+ [class.rounded-t]="this.spxShowValidationMessages"
175
+ [class.outline-none]="this.spxFocused && !this.spxReadonly"
176
+ [class.ring-2]="this.spxFocused && !this.spxReadonly"
177
+ [class.ring-offset-2]="this.spxFocused && !this.spxReadonly"
178
+ [class.ring-blue-500]="this.spxFocused && !this.spxReadonly"
179
+ [class.bg-white]="!this.spxReadonly"
180
+ [class.bg-gray-300]="this.spxReadonly"
181
+ [class.cursor-not-allowed]="this.spxReadonly">
182
+ <div class="flex-auto p-3"
183
+ [class.p-0]="this.spxCompact"
184
+ [class.flex]="this.spxCompact"
185
+ [class.items-center]="this.spxCompact">
186
+ @if (this.spxShowLabel) {
187
+ <div class="font-bold text-sm mb-1 text-gray-800"
188
+ [class.mb-0]="this.spxCompact"
189
+ [class.px-3]="this.spxCompact">
190
+ {{this.spxLabel}} @if (spxRequired) {
191
+ <span class="text-red-800">*</span>
192
+ }
193
+ </div>
194
+ }
195
+ <ng-content select="[controls]"></ng-content>
196
+ </div>
197
+ <div class="flex flex-none gap-1 p-1">
198
+ @if (this.spxShowEdit) {
199
+ <spx-button
200
+ (spxClick)="onEdit()"
201
+ [spxFullHeight]="true"
202
+ [spxSize]="'xl'"
203
+ [spxType]="'button'">
204
+ <fa-icon [icon]="faEdit" class="block text-xl"></fa-icon>
205
+ </spx-button>
206
+ }
207
+ @if (this.spxShowHelp) {
208
+ <spx-button
209
+ (spxClick)="onHelp()"
210
+ [spxFullHeight]="true"
211
+ [spxDisabled]="this.spxReadonly"
212
+ [spxSize]="'xl'"
213
+ [spxTabIndex]="-1"
214
+ [spxType]="'button'">
215
+ <fa-icon [icon]="faQuestion" class="block text-xl"></fa-icon>
216
+ </spx-button>
217
+ }
218
+ @if (this.spxShowSearch) {
219
+ <spx-button
220
+ (spxClick)="onSearch()"
221
+ [spxFullHeight]="true"
222
+ [spxDisabled]="this.spxReadonly"
223
+ [spxSize]="'xl'"
224
+ [spxTabIndex]="-1"
225
+ [spxType]="'button'">
226
+ <fa-icon [icon]="faSearch" class="block text-xl"></fa-icon>
227
+ </spx-button>
228
+ }
229
+ @if (this.spxShowClear) {
230
+ <spx-button
231
+ (spxClick)="onClear()"
232
+ [spxDisabled]="this.spxReadonly || !this.spxValue?.value"
233
+ [spxFullHeight]="true"
234
+ [spxSize]="'xl'"
235
+ [spxTabIndex]="-1"
236
+ [spxType]="'button'">
237
+ <fa-icon [icon]="faTimes" class="block text-xl"></fa-icon>
238
+ </spx-button>
239
+ }
240
+ </div>
241
+ </div>
242
+ @if (this.spxShowValidationMessages) {
243
+ <div class="bg-red-600 rounded-b text-white p-3">
244
+ <ng-content select="[validation-messages]"></ng-content>
245
+ </div>
246
+ }
247
+ @else if(this.spxAlertMessageSeverity) {
248
+ <div [class.bg-red-700]="spxSeverityEnum.error"
249
+ [class.bg-green-700]="spxSeverityEnum.success"
250
+ [class.bg-blue-700]="spxSeverityEnum.info"
251
+ [class.bg-gray-400]="spxSeverityEnum.unknown"
252
+ [class.bg-amber-700]="spxSeverityEnum.warning"
253
+ class="rounded-b text-white p-3">
254
+ <ng-content select="[validation-messages]"></ng-content>
255
+ </div>
256
+ }
257
+ `,
235
258
  }]
236
259
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { spxCompact: [{
237
260
  type: Input
@@ -253,6 +276,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
253
276
  type: Input
254
277
  }], spxShowSearch: [{
255
278
  type: Input
279
+ }], spxAlertMessageSeverity: [{
280
+ type: Input
256
281
  }], spxShowValidationMessages: [{
257
282
  type: Input
258
283
  }], spxValue: [{
@@ -319,22 +344,22 @@ class SpxDropdownComponent {
319
344
  this.spxSelect.emit(valuePair);
320
345
  }
321
346
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
322
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxDropdownComponent, isStandalone: true, selector: "spx-dropdown", inputs: { spxSuggestions: "spxSuggestions" }, outputs: { spxSelect: "spxSelect" }, usesOnChanges: true, ngImport: i0, template: `<div class="relative text-black">
323
- <div
324
- class="absolute bg-gray-100 left-0 right-0 z-20">
325
- @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
326
- <button
327
- class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
328
- [class.bg-gray-100]="i === this.focusPosition"
329
- [class.bg-white]="i !== this.focusPosition"
330
- (click)="this.handleSuggestionClick(valuePair)"
331
- [attr.tabindex]="-1"
332
- [attr.type]="'button'">
333
- <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
334
- <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
335
- </button>
336
- }
337
- </div>
347
+ 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">
348
+ <div
349
+ class="absolute bg-gray-100 left-0 right-0 z-20">
350
+ @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
351
+ <button
352
+ class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
353
+ [class.bg-gray-100]="i === this.focusPosition"
354
+ [class.bg-white]="i !== this.focusPosition"
355
+ (click)="this.handleSuggestionClick(valuePair)"
356
+ [attr.tabindex]="-1"
357
+ [attr.type]="'button'">
358
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
359
+ <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
360
+ </button>
361
+ }
362
+ </div>
338
363
  </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
339
364
  }
340
365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxDropdownComponent, decorators: [{
@@ -345,22 +370,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
345
370
  imports: [
346
371
  SpxButtonComponent
347
372
  ],
348
- template: `<div class="relative text-black">
349
- <div
350
- class="absolute bg-gray-100 left-0 right-0 z-20">
351
- @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
352
- <button
353
- class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
354
- [class.bg-gray-100]="i === this.focusPosition"
355
- [class.bg-white]="i !== this.focusPosition"
356
- (click)="this.handleSuggestionClick(valuePair)"
357
- [attr.tabindex]="-1"
358
- [attr.type]="'button'">
359
- <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
360
- <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
361
- </button>
362
- }
363
- </div>
373
+ template: `<div class="relative text-black">
374
+ <div
375
+ class="absolute bg-gray-100 left-0 right-0 z-20">
376
+ @for (valuePair of this.spxSuggestions; track valuePair; let i = $index) {
377
+ <button
378
+ class="text-black block w-full p-2 border border-gray-200 rounded-lg shadow hover:bg-gray-200 flex items-center text-left"
379
+ [class.bg-gray-100]="i === this.focusPosition"
380
+ [class.bg-white]="i !== this.focusPosition"
381
+ (click)="this.handleSuggestionClick(valuePair)"
382
+ [attr.tabindex]="-1"
383
+ [attr.type]="'button'">
384
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
385
+ <spx-button (spxClick)="this.handleSuggestionClick(valuePair)" [spxType]="'button'" [spxTabIndex]="-1">Select</spx-button>
386
+ </button>
387
+ }
388
+ </div>
364
389
  </div>`,
365
390
  }]
366
391
  }], propDecorators: { spxSuggestions: [{
@@ -415,37 +440,37 @@ class SpxInputTextComponent {
415
440
  this.spxFocused = true;
416
441
  }
417
442
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
418
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxAutocomplete: "spxAutocomplete", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxSuggestions: "spxSuggestions", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused", spxType: "spxType", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxBlurFromChild: "spxBlurFromChild", spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="relative text-black">
419
- <input
420
- #input
421
- class="font-bold text-lg w-full outline-none"
422
- autocomplete="off"
423
- spellcheck="false"
424
- [class.bg-white]="!this.spxReadonly"
425
- [class.bg-gray-300]="this.spxReadonly"
426
- [class.cursor-not-allowed]="this.spxReadonly"
427
- [class.uppercase]="this.spxCapitalize"
428
- [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
429
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
430
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
431
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
432
- [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
433
- [attr.name]="this.spxName"
434
- [attr.type]="this.spxType"
435
- [value]="this.value?.description ? this.value?.description : this.value?.value"
436
- (blur)="this.handleBlur()"
437
- (keyUp)="this.handleKeyUp()"
438
- (focus)="this.handleFocus()"
439
- (input)="this.handleDescriptionInput($event)"
440
- />
441
- @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
442
- <span>{{this.value?.value}}</span>
443
- }
444
- @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
445
- <spx-dropdown
446
- [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
447
- </spx-dropdown>
448
- }
443
+ 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">
444
+ <input
445
+ #input
446
+ class="font-bold text-lg w-full outline-none"
447
+ autocomplete="off"
448
+ spellcheck="false"
449
+ [class.bg-white]="!this.spxReadonly"
450
+ [class.bg-gray-300]="this.spxReadonly"
451
+ [class.cursor-not-allowed]="this.spxReadonly"
452
+ [class.uppercase]="this.spxCapitalize"
453
+ [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
454
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
455
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
456
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
457
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
458
+ [attr.name]="this.spxName"
459
+ [attr.type]="this.spxType"
460
+ [value]="this.value?.description ? this.value?.description : this.value?.value"
461
+ (blur)="this.handleBlur()"
462
+ (keyUp)="this.handleKeyUp()"
463
+ (focus)="this.handleFocus()"
464
+ (input)="this.handleDescriptionInput($event)"
465
+ />
466
+ @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
467
+ <span>{{this.value?.value}}</span>
468
+ }
469
+ @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
470
+ <spx-dropdown
471
+ [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
472
+ </spx-dropdown>
473
+ }
449
474
  </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxDropdownComponent, selector: "spx-dropdown", inputs: ["spxSuggestions"], outputs: ["spxSelect"] }] }); }
450
475
  }
451
476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTextComponent, decorators: [{
@@ -456,37 +481,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
456
481
  imports: [
457
482
  SpxDropdownComponent
458
483
  ],
459
- template: `<div class="relative text-black">
460
- <input
461
- #input
462
- class="font-bold text-lg w-full outline-none"
463
- autocomplete="off"
464
- spellcheck="false"
465
- [class.bg-white]="!this.spxReadonly"
466
- [class.bg-gray-300]="this.spxReadonly"
467
- [class.cursor-not-allowed]="this.spxReadonly"
468
- [class.uppercase]="this.spxCapitalize"
469
- [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
470
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
471
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
472
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
473
- [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
474
- [attr.name]="this.spxName"
475
- [attr.type]="this.spxType"
476
- [value]="this.value?.description ? this.value?.description : this.value?.value"
477
- (blur)="this.handleBlur()"
478
- (keyUp)="this.handleKeyUp()"
479
- (focus)="this.handleFocus()"
480
- (input)="this.handleDescriptionInput($event)"
481
- />
482
- @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
483
- <span>{{this.value?.value}}</span>
484
- }
485
- @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
486
- <spx-dropdown
487
- [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
488
- </spx-dropdown>
489
- }
484
+ template: `<div class="relative text-black">
485
+ <input
486
+ #input
487
+ class="font-bold text-lg w-full outline-none"
488
+ autocomplete="off"
489
+ spellcheck="false"
490
+ [class.bg-white]="!this.spxReadonly"
491
+ [class.bg-gray-300]="this.spxReadonly"
492
+ [class.cursor-not-allowed]="this.spxReadonly"
493
+ [class.uppercase]="this.spxCapitalize"
494
+ [attr.autocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
495
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
496
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
497
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
498
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
499
+ [attr.name]="this.spxName"
500
+ [attr.type]="this.spxType"
501
+ [value]="this.value?.description ? this.value?.description : this.value?.value"
502
+ (blur)="this.handleBlur()"
503
+ (keyUp)="this.handleKeyUp()"
504
+ (focus)="this.handleFocus()"
505
+ (input)="this.handleDescriptionInput($event)"
506
+ />
507
+ @if (this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()) {
508
+ <span>{{this.value?.value}}</span>
509
+ }
510
+ @if (this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')) {
511
+ <spx-dropdown
512
+ [spxSuggestions]="this.spxSuggestions" (spxSelect)="this.handleSuggestionClick($event)">
513
+ </spx-dropdown>
514
+ }
490
515
  </div>`,
491
516
  }]
492
517
  }], propDecorators: { spxName: [{
@@ -595,62 +620,62 @@ class SpxInputFloatComponent {
595
620
  return /^[+-]?\d+(\.\d+)?$/.test(value);
596
621
  }
597
622
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
598
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputFloatComponent, isStandalone: true, selector: "spx-input-float", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate", tick: "tick" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "firstInputRef", first: true, predicate: ["firstInputRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `<div class="flex items-end">
599
- <input
600
- #firstInputRef
601
- class="spx-input-float__input"
602
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
603
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
604
- [attr.pattern]="'[0-9]*'"
605
- [attr.step]="1"
606
- [attr.type]="'text'"
607
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
608
- (focus)="this.handleFocus()"
609
- [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
610
- (ngModelChange)="this.handleInput($event, 1)" />
611
- <span class="text-black font-bold text-2xl mx-4">,</span>
612
- <input
613
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
614
- class="spx-input-float__input"
615
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
616
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
617
- (focus)="this.handleFocus()"
618
- [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
619
- (ngModelChange)="this.handleInput($event, 2)"
620
- [attr.step]="1"
621
- [attr.type]="'text'"
622
- [attr.pattern]="'[0-9]*'" />
623
+ 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">
624
+ <input
625
+ #firstInputRef
626
+ class="spx-input-float__input"
627
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
628
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
629
+ [attr.pattern]="'[0-9]*'"
630
+ [attr.step]="1"
631
+ [attr.type]="'text'"
632
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
633
+ (focus)="this.handleFocus()"
634
+ [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
635
+ (ngModelChange)="this.handleInput($event, 1)" />
636
+ <span class="text-black font-bold text-2xl mx-4">,</span>
637
+ <input
638
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
639
+ class="spx-input-float__input"
640
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
641
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
642
+ (focus)="this.handleFocus()"
643
+ [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
644
+ (ngModelChange)="this.handleInput($event, 2)"
645
+ [attr.step]="1"
646
+ [attr.type]="'text'"
647
+ [attr.pattern]="'[0-9]*'" />
623
648
  </div>`, isInline: true, styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
624
649
  }
625
650
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
626
651
  type: Component,
627
652
  args: [{ selector: 'spx-input-float', standalone: true, imports: [
628
653
  FormsModule,
629
- ], template: `<div class="flex items-end">
630
- <input
631
- #firstInputRef
632
- class="spx-input-float__input"
633
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
634
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
635
- [attr.pattern]="'[0-9]*'"
636
- [attr.step]="1"
637
- [attr.type]="'text'"
638
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
639
- (focus)="this.handleFocus()"
640
- [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
641
- (ngModelChange)="this.handleInput($event, 1)" />
642
- <span class="text-black font-bold text-2xl mx-4">,</span>
643
- <input
644
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
645
- class="spx-input-float__input"
646
- [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
647
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
648
- (focus)="this.handleFocus()"
649
- [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
650
- (ngModelChange)="this.handleInput($event, 2)"
651
- [attr.step]="1"
652
- [attr.type]="'text'"
653
- [attr.pattern]="'[0-9]*'" />
654
+ ], template: `<div class="flex items-end">
655
+ <input
656
+ #firstInputRef
657
+ class="spx-input-float__input"
658
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
659
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
660
+ [attr.pattern]="'[0-9]*'"
661
+ [attr.step]="1"
662
+ [attr.type]="'text'"
663
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
664
+ (focus)="this.handleFocus()"
665
+ [ngModel]="this.internalValue?.first ? this.internalValue?.first : undefined"
666
+ (ngModelChange)="this.handleInput($event, 1)" />
667
+ <span class="text-black font-bold text-2xl mx-4">,</span>
668
+ <input
669
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
670
+ class="spx-input-float__input"
671
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
672
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
673
+ (focus)="this.handleFocus()"
674
+ [ngModel]="this.internalValue?.second ? this.internalValue?.second : undefined"
675
+ (ngModelChange)="this.handleInput($event, 2)"
676
+ [attr.step]="1"
677
+ [attr.type]="'text'"
678
+ [attr.pattern]="'[0-9]*'" />
654
679
  </div>`, styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"] }]
655
680
  }], propDecorators: { spxName: [{
656
681
  type: Input
@@ -708,36 +733,36 @@ class SpxInputNumberComponent {
708
733
  this.spxChange.emit(this.value);
709
734
  }
710
735
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
711
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputNumberComponent, isStandalone: true, selector: "spx-input-number", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="spx-input-number__controls">
712
- <input
713
- #input
714
- class="spx-input-number__input"
715
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
716
- [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
717
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
718
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
719
- [attr.value]="this.value?.value ? this.value?.value : undefined"
720
- [attr.step]="this.spxStep ? this.spxStep : undefined"
721
- [attr.type]="'number'"
722
- (focus)="this.handleFocus()"
723
- (input)="this.handleInput($event)" />
736
+ 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">
737
+ <input
738
+ #input
739
+ class="spx-input-number__input"
740
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
741
+ [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
742
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
743
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
744
+ [attr.value]="this.value?.value ? this.value?.value : undefined"
745
+ [attr.step]="this.spxStep ? this.spxStep : undefined"
746
+ [attr.type]="'number'"
747
+ (focus)="this.handleFocus()"
748
+ (input)="this.handleInput($event)" />
724
749
  </div>`, isInline: true, styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"] }); }
725
750
  }
726
751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
727
752
  type: Component,
728
- args: [{ selector: 'spx-input-number', standalone: true, imports: [], template: `<div class="spx-input-number__controls">
729
- <input
730
- #input
731
- class="spx-input-number__input"
732
- [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
733
- [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
734
- [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
735
- [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
736
- [attr.value]="this.value?.value ? this.value?.value : undefined"
737
- [attr.step]="this.spxStep ? this.spxStep : undefined"
738
- [attr.type]="'number'"
739
- (focus)="this.handleFocus()"
740
- (input)="this.handleInput($event)" />
753
+ args: [{ selector: 'spx-input-number', standalone: true, imports: [], template: `<div class="spx-input-number__controls">
754
+ <input
755
+ #input
756
+ class="spx-input-number__input"
757
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
758
+ [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
759
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
760
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
761
+ [attr.value]="this.value?.value ? this.value?.value : undefined"
762
+ [attr.step]="this.spxStep ? this.spxStep : undefined"
763
+ [attr.type]="'number'"
764
+ (focus)="this.handleFocus()"
765
+ (input)="this.handleInput($event)" />
741
766
  </div>`, styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"] }]
742
767
  }], propDecorators: { spxName: [{
743
768
  type: Input
@@ -834,17 +859,17 @@ class SpxInputRadioComponent {
834
859
  });
835
860
  }
836
861
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
837
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputRadioComponent, isStandalone: true, selector: "spx-input-radio", inputs: { spxName: "spxName", spxValidators: "spxValidators", spxFocused: "spxFocused", spxShowLabel: "spxShowLabel", spxReadonly: "spxReadonly", spxSuggestions: "spxSuggestions", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, usesOnChanges: true, ngImport: i0, template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
838
- @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
839
- <spx-suggestion
840
- [spxDisabled]="this.spxReadonly"
841
- [spxFocused]="this.spxFocused && i === this.focusPosition"
842
- [spxSelected]="this.value?.value === valuePair?.value"
843
- [spxTabbable]="this.focusPosition === i"
844
- (click)="this.handleSuggestionClick($event, valuePair)">
845
- {{valuePair?.description}}
846
- </spx-suggestion>
847
- }
862
+ 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">
863
+ @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
864
+ <spx-suggestion
865
+ [spxDisabled]="this.spxReadonly"
866
+ [spxFocused]="this.spxFocused && i === this.focusPosition"
867
+ [spxSelected]="this.value?.value === valuePair?.value"
868
+ [spxTabbable]="this.focusPosition === i"
869
+ (click)="this.handleSuggestionClick($event, valuePair)">
870
+ {{valuePair?.description}}
871
+ </spx-suggestion>
872
+ }
848
873
  </div>`, isInline: true, dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }] }); }
849
874
  }
850
875
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputRadioComponent, decorators: [{
@@ -855,17 +880,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
855
880
  imports: [
856
881
  SpxSuggestionComponent
857
882
  ],
858
- template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
859
- @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
860
- <spx-suggestion
861
- [spxDisabled]="this.spxReadonly"
862
- [spxFocused]="this.spxFocused && i === this.focusPosition"
863
- [spxSelected]="this.value?.value === valuePair?.value"
864
- [spxTabbable]="this.focusPosition === i"
865
- (click)="this.handleSuggestionClick($event, valuePair)">
866
- {{valuePair?.description}}
867
- </spx-suggestion>
868
- }
883
+ template: `<div class="grid grid-cols-2 gap-2" [class.mt-3]="this.spxShowLabel">
884
+ @for (valuePair of this.cachedSuggestions; track valuePair; let i = $index) {
885
+ <spx-suggestion
886
+ [spxDisabled]="this.spxReadonly"
887
+ [spxFocused]="this.spxFocused && i === this.focusPosition"
888
+ [spxSelected]="this.value?.value === valuePair?.value"
889
+ [spxTabbable]="this.focusPosition === i"
890
+ (click)="this.handleSuggestionClick($event, valuePair)">
891
+ {{valuePair?.description}}
892
+ </spx-suggestion>
893
+ }
869
894
  </div>`,
870
895
  }]
871
896
  }], propDecorators: { spxName: [{
@@ -925,44 +950,44 @@ class SpxInputTimeModalComponent {
925
950
  this.modalController.dismiss(value);
926
951
  }
927
952
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeModalComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
928
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputTimeModalComponent, isStandalone: true, selector: "spx-input-time-modal", inputs: { view: "view", value: "value" }, outputs: { change: "change" }, ngImport: i0, template: `<ion-header>
929
- <ion-toolbar>
930
- <ion-title>Select {{view}}</ion-title>
931
- <ion-buttons slot="end">
932
- <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
933
- <fa-icon [icon]="faXmark"></fa-icon>
934
- </spx-button>
935
- </ion-buttons>
936
- </ion-toolbar>
937
- </ion-header>
938
- <ion-content class="ion-padding bg-white">
939
- <!-- Uren -->
940
- <div class="custom-bg grid grid-cols-1 gap-3">
941
- @if (view === 'hours') {
942
- <div class="flex-wrap gap-2">
943
- <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
944
- @for (hour of hourOptions; track hour) {
945
- <div class="text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-full truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300" [class.selected]="value === hour" (click)="onChange(hour)">
946
- {{ hour }}
947
- </div>
948
- }
949
- </div>
950
- </div>
951
- }
952
- <!-- Minuten -->
953
- @if (view === 'minutes') {
954
- <div class="grid grid-cols-1 gap-3">
955
- <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
956
- @for (minute of minuteOptions; track minute) {
957
- <div class="text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-ful truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300" [class.selected]="value === minute" (click)="onChange(minute)">
958
- {{ minute }}
959
- </div>
960
- }
961
- </div>
962
- </div>
963
- }
964
- </div>
965
- </ion-content>
953
+ 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>
954
+ <ion-toolbar>
955
+ <ion-title>Select {{view}}</ion-title>
956
+ <ion-buttons slot="end">
957
+ <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
958
+ <fa-icon [icon]="faXmark"></fa-icon>
959
+ </spx-button>
960
+ </ion-buttons>
961
+ </ion-toolbar>
962
+ </ion-header>
963
+ <ion-content class="ion-padding bg-white">
964
+ <!-- Uren -->
965
+ <div class="custom-bg grid grid-cols-1 gap-3">
966
+ @if (view === 'hours') {
967
+ <div class="flex-wrap gap-2">
968
+ <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
969
+ @for (hour of hourOptions; track hour) {
970
+ <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)">
971
+ {{ hour }}
972
+ </div>
973
+ }
974
+ </div>
975
+ </div>
976
+ }
977
+ <!-- Minuten -->
978
+ @if (view === 'minutes') {
979
+ <div class="grid grid-cols-1 gap-3">
980
+ <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
981
+ @for (minute of minuteOptions; track minute) {
982
+ <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)">
983
+ {{ minute }}
984
+ </div>
985
+ }
986
+ </div>
987
+ </div>
988
+ }
989
+ </div>
990
+ </ion-content>
966
991
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1$2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1$2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1$2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1$2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1$2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
967
992
  }
968
993
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeModalComponent, decorators: [{
@@ -976,44 +1001,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
976
1001
  SpxDropdownComponent,
977
1002
  FontAwesomeModule
978
1003
  ],
979
- template: `<ion-header>
980
- <ion-toolbar>
981
- <ion-title>Select {{view}}</ion-title>
982
- <ion-buttons slot="end">
983
- <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
984
- <fa-icon [icon]="faXmark"></fa-icon>
985
- </spx-button>
986
- </ion-buttons>
987
- </ion-toolbar>
988
- </ion-header>
989
- <ion-content class="ion-padding bg-white">
990
- <!-- Uren -->
991
- <div class="custom-bg grid grid-cols-1 gap-3">
992
- @if (view === 'hours') {
993
- <div class="flex-wrap gap-2">
994
- <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
995
- @for (hour of hourOptions; track hour) {
996
- <div class="text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-full truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300" [class.selected]="value === hour" (click)="onChange(hour)">
997
- {{ hour }}
998
- </div>
999
- }
1000
- </div>
1001
- </div>
1002
- }
1003
- <!-- Minuten -->
1004
- @if (view === 'minutes') {
1005
- <div class="grid grid-cols-1 gap-3">
1006
- <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
1007
- @for (minute of minuteOptions; track minute) {
1008
- <div class="text-center font-bold custom-square rounded text-gray-900 text-lg p-3 w-ful truncate outline-none bg-sky-100 focus:ring-sky-300 hover:bg-sky-300 active:bg-sky-300" [class.selected]="value === minute" (click)="onChange(minute)">
1009
- {{ minute }}
1010
- </div>
1011
- }
1012
- </div>
1013
- </div>
1014
- }
1015
- </div>
1016
- </ion-content>
1004
+ template: `<ion-header>
1005
+ <ion-toolbar>
1006
+ <ion-title>Select {{view}}</ion-title>
1007
+ <ion-buttons slot="end">
1008
+ <spx-button [spxSeverity]="typeError" (spxClick)="closeDialog()">
1009
+ <fa-icon [icon]="faXmark"></fa-icon>
1010
+ </spx-button>
1011
+ </ion-buttons>
1012
+ </ion-toolbar>
1013
+ </ion-header>
1014
+ <ion-content class="ion-padding bg-white">
1015
+ <!-- Uren -->
1016
+ <div class="custom-bg grid grid-cols-1 gap-3">
1017
+ @if (view === 'hours') {
1018
+ <div class="flex-wrap gap-2">
1019
+ <div class="grid grid-cols-3 md:grid-cols-4 gap-3">
1020
+ @for (hour of hourOptions; track hour) {
1021
+ <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)">
1022
+ {{ hour }}
1023
+ </div>
1024
+ }
1025
+ </div>
1026
+ </div>
1027
+ }
1028
+ <!-- Minuten -->
1029
+ @if (view === 'minutes') {
1030
+ <div class="grid grid-cols-1 gap-3">
1031
+ <div class="grid grid-cols-4 md:grid-cols-5 gap-3">
1032
+ @for (minute of minuteOptions; track minute) {
1033
+ <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)">
1034
+ {{ minute }}
1035
+ </div>
1036
+ }
1037
+ </div>
1038
+ </div>
1039
+ }
1040
+ </div>
1041
+ </ion-content>
1017
1042
  `,
1018
1043
  }]
1019
1044
  }], ctorParameters: () => [{ type: i1$2.ModalController }], propDecorators: { view: [{
@@ -1122,12 +1147,12 @@ class SpxInputTimeComponent {
1122
1147
  }
1123
1148
  }
1124
1149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeComponent, deps: [{ token: i1$2.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
1125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxInputTimeComponent, isStandalone: true, selector: "spx-input-time", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxSuggestions: "spxSuggestions", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused", spxType: "spxType", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxBlurFromChild: "spxBlurFromChild", spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `<div class="relative text-black">
1126
- <div class="flex items-center justify-around gap-3">
1127
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1128
- <div class="text-gray text-xl">:</div>
1129
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1130
- </div>
1150
+ 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">
1151
+ <div class="flex items-center justify-around gap-3">
1152
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1153
+ <div class="text-gray text-xl">:</div>
1154
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1155
+ </div>
1131
1156
  </div>`, isInline: true, styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }] }); }
1132
1157
  }
1133
1158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputTimeComponent, decorators: [{
@@ -1136,12 +1161,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1136
1161
  SpxButtonComponent,
1137
1162
  SpxDropdownComponent,
1138
1163
  IonicModule
1139
- ], template: `<div class="relative text-black">
1140
- <div class="flex items-center justify-around gap-3">
1141
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1142
- <div class="text-gray text-xl">:</div>
1143
- <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1144
- </div>
1164
+ ], template: `<div class="relative text-black">
1165
+ <div class="flex items-center justify-around gap-3">
1166
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('hours')">{{ formattedHour ?? '--' }}</div>
1167
+ <div class="text-gray text-xl">:</div>
1168
+ <div class="grow rounded bg-gray-100 p-3 text-xl text-center font-bold" (click)="openDialog('minutes')">{{ formattedMinute ?? '--' }}</div>
1169
+ </div>
1145
1170
  </div>`, styles: [".custom-square.selected{background-color:#007bff;color:#fff;border-color:#007bff}.custom-bg{--background: #FFFFFF}\n"] }]
1146
1171
  }], ctorParameters: () => [{ type: i1$2.ModalController }], propDecorators: { spxName: [{
1147
1172
  type: Input
@@ -1203,14 +1228,17 @@ class SpxInputDateComponent {
1203
1228
  this.selectedYear = signal(null);
1204
1229
  this.selectedMonth = signal(null);
1205
1230
  this.selectedDay = signal(null);
1231
+ this.yearInputComponent = viewChild.required(stepType.years);
1232
+ this.monthInputComponent = viewChild.required(stepType.months);
1233
+ this.dayInputComponent = viewChild.required(stepType.days);
1206
1234
  this.spxSuggestionC = computed(() => {
1207
1235
  switch (this.spxSelectedStep()) {
1208
- case 'months':
1236
+ case stepType.years:
1237
+ return this.spxSuggestions().years;
1238
+ case stepType.months:
1209
1239
  return [...this.spxSuggestions().months];
1210
- case 'days':
1240
+ case stepType.days:
1211
1241
  return [...this.spxSuggestions().days];
1212
- default:
1213
- return this.spxSuggestions().years;
1214
1242
  }
1215
1243
  });
1216
1244
  this.spxSuggestions = input({ years: [],
@@ -1253,6 +1281,21 @@ class SpxInputDateComponent {
1253
1281
  }],
1254
1282
  days: [], });
1255
1283
  }
1284
+ handleFocus(selectedStep) {
1285
+ switch (selectedStep) {
1286
+ case stepType.years:
1287
+ this.spxSelectedStep.set(stepType.years);
1288
+ break;
1289
+ case stepType.months:
1290
+ this.spxSelectedStep.set(stepType.months);
1291
+ this.monthInputComponent().nativeElement.focus();
1292
+ break;
1293
+ case stepType.days:
1294
+ this.spxSelectedStep.set(stepType.days);
1295
+ this.dayInputComponent().nativeElement.focus();
1296
+ break;
1297
+ }
1298
+ }
1256
1299
  onModelChange(newValue, selectedStep) {
1257
1300
  const parsedValue = +newValue; // Convert to number
1258
1301
  if (parsedValue == 0)
@@ -1280,13 +1323,13 @@ class SpxInputDateComponent {
1280
1323
  }
1281
1324
  handleSuggestionClick(value) {
1282
1325
  switch (this.spxSelectedStep()) {
1283
- case "years":
1326
+ case stepType.years:
1284
1327
  this.selectedYear.set(value);
1285
1328
  break;
1286
- case "months":
1329
+ case stepType.months:
1287
1330
  this.selectedMonth.set(value);
1288
1331
  break;
1289
- case "days":
1332
+ case stepType.days:
1290
1333
  this.selectedDay.set(value);
1291
1334
  break;
1292
1335
  }
@@ -1301,14 +1344,29 @@ class SpxInputDateComponent {
1301
1344
  }
1302
1345
  changeSelectedStep() {
1303
1346
  switch (this.spxSelectedStep()) {
1304
- case 'days':
1305
- this.spxSelectedStep.set(stepType.years);
1347
+ case stepType.years:
1348
+ if (this.spxSelectMonth()) {
1349
+ this.spxSelectedStep.set(stepType.months);
1350
+ this.monthInputComponent().nativeElement.focus();
1351
+ }
1352
+ else {
1353
+ this.spxSelectedStep.set(stepType.years);
1354
+ this.yearInputComponent().nativeElement.focus();
1355
+ }
1306
1356
  break;
1307
- case 'months':
1308
- this.spxSelectedStep.set(this.spxSelectDay() ? stepType.days : stepType.years);
1357
+ case stepType.months:
1358
+ if (this.spxSelectDay()) {
1359
+ this.spxSelectedStep.set(stepType.days);
1360
+ this.dayInputComponent().nativeElement.focus();
1361
+ }
1362
+ else {
1363
+ this.spxSelectedStep.set(stepType.years);
1364
+ this.yearInputComponent().nativeElement.focus();
1365
+ }
1309
1366
  break;
1310
- case 'years':
1311
- this.spxSelectedStep.set(this.spxSelectMonth() ? stepType.months : stepType.years);
1367
+ case stepType.days:
1368
+ this.spxSelectedStep.set(stepType.years);
1369
+ this.yearInputComponent().nativeElement.focus();
1312
1370
  break;
1313
1371
  }
1314
1372
  }
@@ -1322,14 +1380,14 @@ class SpxInputDateComponent {
1322
1380
  }
1323
1381
  }
1324
1382
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1325
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputDateComponent, isStandalone: true, selector: "spx-input-date", inputs: { spxMax: { classPropertyName: "spxMax", publicName: "spxMax", isSignal: true, isRequired: true, transformFunction: null }, spxMin: { classPropertyName: "spxMin", publicName: "spxMin", isSignal: true, isRequired: true, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", isSignal: true, isRequired: false, transformFunction: null }, spxSelectDay: { classPropertyName: "spxSelectDay", publicName: "spxSelectDay", isSignal: true, isRequired: false, transformFunction: null }, spxSelectMonth: { classPropertyName: "spxSelectMonth", publicName: "spxSelectMonth", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", spxChange: "spxChange", spxFocus: "spxFocus" }, ngImport: i0, template: "<div class='spx-input-date__controls'>\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedYear\"\n [attr.type]=\"'number'\"\n (ngModelChange)=\"onModelChange($event, 'years')\"\n [attr.min]=\"1900\"\n [attr.max]=\"2100\"\n [attr.step]=\"1\"\n />\n <div class='spx-input-date__control-label'>Year</div>\n @if (this.spxSelectMonth()) {\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedMonth\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedDay\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value) ||\n (selectedMonth() === valuePair.value) || \n (selectedDay() === valuePair.value)\"\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\n }\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"], dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
1383
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputDateComponent, isStandalone: true, selector: "spx-input-date", inputs: { spxMax: { classPropertyName: "spxMax", publicName: "spxMax", isSignal: true, isRequired: true, transformFunction: null }, spxMin: { classPropertyName: "spxMin", publicName: "spxMin", isSignal: true, isRequired: true, transformFunction: null }, spxReadonly: { classPropertyName: "spxReadonly", publicName: "spxReadonly", isSignal: true, isRequired: false, transformFunction: null }, spxValidators: { classPropertyName: "spxValidators", publicName: "spxValidators", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", isSignal: true, isRequired: false, transformFunction: null }, spxSelectDay: { classPropertyName: "spxSelectDay", publicName: "spxSelectDay", isSignal: true, isRequired: false, transformFunction: null }, spxSelectMonth: { classPropertyName: "spxSelectMonth", publicName: "spxSelectMonth", isSignal: true, isRequired: false, transformFunction: null }, spxSuggestions: { classPropertyName: "spxSuggestions", publicName: "spxSuggestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", spxChange: "spxChange", spxFocus: "spxFocus" }, viewQueries: [{ propertyName: "yearInputComponent", first: true, predicate: stepType.years, descendants: true, isSignal: true }, { propertyName: "monthInputComponent", first: true, predicate: stepType.months, descendants: true, isSignal: true }, { propertyName: "dayInputComponent", first: true, predicate: stepType.days, descendants: true, isSignal: true }], ngImport: i0, template: "<div class='spx-input-date__controls'>\r\n <input #years\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedYear\"\r\n [attr.type]=\"'number'\"\r\n (click)=\"this.handleFocus('years')\"\r\n (ngModelChange)=\"onModelChange($event, 'years')\"\r\n [attr.min]=\"1900\"\r\n [attr.max]=\"2100\"\r\n [attr.step]=\"1\"\r\n />\r\n <div class='spx-input-date__control-label'>Year</div>\r\n @if (this.spxSelectMonth()) {\r\n <input #months\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedMonth\"\r\n (ngModelChange)=\"onModelChange($event, 'months')\"\r\n (click)=\"this.handleFocus('months')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"12\"\r\n [attr.step]=\"1\" />\r\n }\r\n <div class='spx-input-date__control-label'>Month</div>\r\n @if (this.spxSelectDay()) {\r\n <input #days\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedDay\"\r\n (ngModelChange)=\"onModelChange($event, 'days')\"\r\n (click)=\"this.handleFocus('days')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"31\"\r\n [attr.step]=\"1\" />\r\n <div class='spx-input-date__control-label'>Days</div>\r\n }\r\n</div>\r\n<div class='spx-input-date__suggestions'>\r\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\r\n <spx-suggestion [spxSelected]=\"\r\n (selectedYear() === valuePair.value) ||\r\n (selectedMonth() === valuePair.value) || \r\n (selectedDay() === valuePair.value)\"\r\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\r\n }\r\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"], dependencies: [{ kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxFocused", "spxSelected", "spxTabbable"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
1326
1384
  }
1327
1385
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputDateComponent, decorators: [{
1328
1386
  type: Component,
1329
1387
  args: [{ selector: 'spx-input-date', standalone: true, imports: [
1330
1388
  SpxSuggestionComponent,
1331
1389
  FormsModule
1332
- ], template: "<div class='spx-input-date__controls'>\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedYear\"\n [attr.type]=\"'number'\"\n (ngModelChange)=\"onModelChange($event, 'years')\"\n [attr.min]=\"1900\"\n [attr.max]=\"2100\"\n [attr.step]=\"1\"\n />\n <div class='spx-input-date__control-label'>Year</div>\n @if (this.spxSelectMonth()) {\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedMonth\"\n (ngModelChange)=\"onModelChange($event, 'months')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"12\"\n [attr.step]=\"1\" />\n }\n <div class='spx-input-date__control-label'>Month</div>\n @if (this.spxSelectDay()) {\n <input\n class='spx-input-date__input'\n [(ngModel)]=\"selectedDay\"\n (ngModelChange)=\"onModelChange($event, 'days')\"\n [attr.type]=\"'number'\"\n [attr.min]=\"1\"\n [attr.max]=\"31\"\n [attr.step]=\"1\" />\n <div class='spx-input-date__control-label'>Days</div>\n }\n</div>\n<div class='spx-input-date__suggestions'>\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\n <spx-suggestion [spxSelected]=\"\n (selectedYear() === valuePair.value) ||\n (selectedMonth() === valuePair.value) || \n (selectedDay() === valuePair.value)\"\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\n }\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"] }]
1390
+ ], template: "<div class='spx-input-date__controls'>\r\n <input #years\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedYear\"\r\n [attr.type]=\"'number'\"\r\n (click)=\"this.handleFocus('years')\"\r\n (ngModelChange)=\"onModelChange($event, 'years')\"\r\n [attr.min]=\"1900\"\r\n [attr.max]=\"2100\"\r\n [attr.step]=\"1\"\r\n />\r\n <div class='spx-input-date__control-label'>Year</div>\r\n @if (this.spxSelectMonth()) {\r\n <input #months\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedMonth\"\r\n (ngModelChange)=\"onModelChange($event, 'months')\"\r\n (click)=\"this.handleFocus('months')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"12\"\r\n [attr.step]=\"1\" />\r\n }\r\n <div class='spx-input-date__control-label'>Month</div>\r\n @if (this.spxSelectDay()) {\r\n <input #days\r\n class='spx-input-date__input'\r\n [(ngModel)]=\"selectedDay\"\r\n (ngModelChange)=\"onModelChange($event, 'days')\"\r\n (click)=\"this.handleFocus('days')\"\r\n [attr.type]=\"'number'\"\r\n [attr.min]=\"1\"\r\n [attr.max]=\"31\"\r\n [attr.step]=\"1\" />\r\n <div class='spx-input-date__control-label'>Days</div>\r\n }\r\n</div>\r\n<div class='spx-input-date__suggestions'>\r\n @for (valuePair of spxSuggestionC(); track valuePair.value) {\r\n <spx-suggestion [spxSelected]=\"\r\n (selectedYear() === valuePair.value) ||\r\n (selectedMonth() === valuePair.value) || \r\n (selectedDay() === valuePair.value)\"\r\n (click)=\"this.handleSuggestionClick(valuePair.value)\">{{valuePair?.description}}</spx-suggestion>\r\n }\r\n</div>", styles: [":host{display:block}.spx-input-date__input{background-color:transparent;border:1px solid #979797;border-radius:4px;color:var(--spx-input--color, rgba(0, 0, 0, .9));box-sizing:border-box;font-size:16px;margin-right:10px;padding:6px;text-align:center;width:100%}.spx-input-date__input:active{transform:scale(.95)}.spx-input-date__input:focus{border:var(--spx-input-box--focus--border, 1px solid rgb(115, 168, 210));border-radius:4px;outline:none}.spx-input-date__control-label{align-items:center;color:#000000b3;display:inline-grid;font-size:13px;letter-spacing:1px}.spx-input-date__input::-webkit-outer-spin-button,.spx-input-date__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spx-input-date__input[type=number]{-moz-appearance:textfield}.spx-input-date__suggestions,.spx-input-date__controls{display:grid;grid-gap:8px;grid-template-columns:repeat(4,1fr);margin-top:8px}\n"] }]
1333
1391
  }] });
1334
1392
 
1335
1393
  class SpxInputComponent {
@@ -1450,116 +1508,116 @@ class SpxInputComponent {
1450
1508
  useExisting: SpxInputComponent,
1451
1509
  multi: true
1452
1510
  }
1453
- ], viewQueries: [{ propertyName: "floatInput", first: true, predicate: SpxInputFloatComponent, descendants: true }, { propertyName: "numberInput", first: true, predicate: SpxInputNumberComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: SpxInputTextComponent, descendants: true }, { propertyName: "timeInput", first: true, predicate: SpxInputTimeComponent, descendants: true }, { propertyName: "radioInput", first: true, predicate: SpxInputRadioComponent, descendants: true }], ngImport: i0, template: `<spx-input-box
1454
- [spxFocused]="this.spxFocused"
1455
- [spxLabel]="this.spxLabel"
1456
- [spxReadonly]="this.spxReadonly"
1457
- [spxRequired]="this.spxRequired"
1458
- [spxValue]="this.value"
1459
- [spxShowHelp]="this.spxShowHelp"
1460
- [spxCompact]="this.spxCompact"
1461
- [spxShowClear]="this.spxShowClear"
1462
- [spxShowEdit]="this.spxShowEdit"
1463
- [spxShowLabel]="this.spxShowLabel"
1464
- [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1465
- [spxShowValidationMessages]="this.spxShowValidationMessages"
1466
- (spxClear)="this.handleClear()"
1467
- (spxEdit)="this.handleEdit()"
1468
- (spxHelp)="this.handleHelp()"
1469
- (spxFocus)="this.setFocusIn()"
1470
- (spxFocusOut)="this.setFocusOut()"
1471
- (spxSearch)="this.handleSearch()">
1472
- <div controls>
1473
- @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1474
- <spx-input-text
1475
- (spxBlurFromChild)="this.handleBlur()"
1476
- (spxChange)="this.handleChange($event)"
1477
- (spxFocus)="this.handleFocus()"
1478
- [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1479
- [spxAutofocus]="this.spxAutofocus"
1480
- [spxCapitalize]="this.spxCapitalize"
1481
- [spxFocused]="this.spxFocused"
1482
- [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1483
- [spxName]="this.spxName"
1484
- [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1485
- [spxReadonly]="this.spxReadonly"
1486
- [spxSuggestions]="this.spxSuggestions"
1487
- [spxType]="this.spxType"
1488
- [spxValidators]="this.spxValidators"
1489
- [value]="this.value"
1490
- ></spx-input-text>
1491
- }
1492
- @if (this.spxType === 'date') {
1493
- <spx-input-date
1494
- (spxChange)="this.handleChange($event)"
1495
- (spxFocus)="this.handleFocus()"
1496
- [spxFocused]="this.spxFocused"
1497
- [spxMax]="this.spxMax!"
1498
- [spxMin]="this.spxMin!"
1499
- [spxReadonly]="this.spxReadonly"
1500
- [spxSelectDay]="this.spxSelectDay"
1501
- [spxSelectMonth]="this.spxSelectMonth"
1502
- [spxValidators]="this.spxValidators"
1503
- [(value)]="this.value"
1504
- ></spx-input-date>
1505
- }
1506
- @if (this.spxType === 'float') {
1507
- <spx-input-float
1508
- (spxChange)="this.handleChange($event)"
1509
- (spxFocus)="this.handleFocus()"
1510
- [spxAutofocus]="this.spxAutofocus"
1511
- [spxFocused]="this.spxFocused"
1512
- [spxName]="this.spxName"
1513
- [spxReadonly]="this.spxReadonly"
1514
- [spxStep]="this.spxStep"
1515
- [spxValidators]="this.spxValidators"
1516
- [value]="this.value"
1517
- ></spx-input-float>
1518
- }
1519
- @if (this.spxType === 'number') {
1520
- <spx-input-number
1521
- (spxChange)="this.handleChange($event)"
1522
- (spxFocus)="this.handleFocus()"
1523
- [spxAutofocus]="this.spxAutofocus"
1524
- [spxFocused]="this.spxFocused"
1525
- [spxInputMode]="this.spxInputMode"
1526
- [spxName]="this.spxName"
1527
- [spxReadonly]="this.spxReadonly"
1528
- [spxStep]="this.spxStep"
1529
- [spxValidators]="this.spxValidators"
1530
- [value]="this.value"
1531
- ></spx-input-number>
1532
- }
1533
- @if (this.spxType === 'radio') {
1534
- <spx-input-radio
1535
- #radioInput
1536
- (spxChange)="this.handleChange($event)"
1537
- [spxFocused]="this.spxFocused"
1538
- [spxName]="this.spxName"
1539
- [spxReadonly]="this.spxReadonly"
1540
- [spxShowLabel]="this.spxShowLabel"
1541
- [spxSuggestions]="this.spxSuggestions"
1542
- [spxValidators]="this.spxValidators"
1543
- [value]="this.value"
1544
- ></spx-input-radio>
1545
- }
1546
- @if (this.spxType === 'time') {
1547
- <spx-input-time
1548
- #timeInput
1549
- (spxChange)="this.handleChange($event)"
1550
- (spxFocus)="this.handleFocus()"
1551
- [spxFocused]="this.spxFocused"
1552
- [spxName]="this.spxName"
1553
- [spxReadonly]="this.spxReadonly"
1554
- [spxValidators]="this.spxValidators"
1555
- [value]="this.value"
1556
- ></spx-input-time>
1557
- }
1558
- </div>
1559
- <div validation-messages>
1560
- <ng-content></ng-content>
1561
- </div>
1562
- </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"] }] }); }
1511
+ ], 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
1512
+ [spxFocused]="this.spxFocused"
1513
+ [spxLabel]="this.spxLabel"
1514
+ [spxReadonly]="this.spxReadonly"
1515
+ [spxRequired]="this.spxRequired"
1516
+ [spxValue]="this.value"
1517
+ [spxShowHelp]="this.spxShowHelp"
1518
+ [spxCompact]="this.spxCompact"
1519
+ [spxShowClear]="this.spxShowClear"
1520
+ [spxShowEdit]="this.spxShowEdit"
1521
+ [spxShowLabel]="this.spxShowLabel"
1522
+ [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1523
+ [spxShowValidationMessages]="this.spxShowValidationMessages"
1524
+ (spxClear)="this.handleClear()"
1525
+ (spxEdit)="this.handleEdit()"
1526
+ (spxHelp)="this.handleHelp()"
1527
+ (spxFocus)="this.setFocusIn()"
1528
+ (spxFocusOut)="this.setFocusOut()"
1529
+ (spxSearch)="this.handleSearch()">
1530
+ <div controls>
1531
+ @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1532
+ <spx-input-text
1533
+ (spxBlurFromChild)="this.handleBlur()"
1534
+ (spxChange)="this.handleChange($event)"
1535
+ (spxFocus)="this.handleFocus()"
1536
+ [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1537
+ [spxAutofocus]="this.spxAutofocus"
1538
+ [spxCapitalize]="this.spxCapitalize"
1539
+ [spxFocused]="this.spxFocused"
1540
+ [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1541
+ [spxName]="this.spxName"
1542
+ [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1543
+ [spxReadonly]="this.spxReadonly"
1544
+ [spxSuggestions]="this.spxSuggestions"
1545
+ [spxType]="this.spxType"
1546
+ [spxValidators]="this.spxValidators"
1547
+ [value]="this.value"
1548
+ ></spx-input-text>
1549
+ }
1550
+ @if (this.spxType === 'date') {
1551
+ <spx-input-date
1552
+ (spxChange)="this.handleChange($event)"
1553
+ (spxFocus)="this.handleFocus()"
1554
+ [spxFocused]="this.spxFocused"
1555
+ [spxMax]="this.spxMax!"
1556
+ [spxMin]="this.spxMin!"
1557
+ [spxReadonly]="this.spxReadonly"
1558
+ [spxSelectDay]="this.spxSelectDay"
1559
+ [spxSelectMonth]="this.spxSelectMonth"
1560
+ [spxValidators]="this.spxValidators"
1561
+ [(value)]="this.value"
1562
+ ></spx-input-date>
1563
+ }
1564
+ @if (this.spxType === 'float') {
1565
+ <spx-input-float
1566
+ (spxChange)="this.handleChange($event)"
1567
+ (spxFocus)="this.handleFocus()"
1568
+ [spxAutofocus]="this.spxAutofocus"
1569
+ [spxFocused]="this.spxFocused"
1570
+ [spxName]="this.spxName"
1571
+ [spxReadonly]="this.spxReadonly"
1572
+ [spxStep]="this.spxStep"
1573
+ [spxValidators]="this.spxValidators"
1574
+ [value]="this.value"
1575
+ ></spx-input-float>
1576
+ }
1577
+ @if (this.spxType === 'number') {
1578
+ <spx-input-number
1579
+ (spxChange)="this.handleChange($event)"
1580
+ (spxFocus)="this.handleFocus()"
1581
+ [spxAutofocus]="this.spxAutofocus"
1582
+ [spxFocused]="this.spxFocused"
1583
+ [spxInputMode]="this.spxInputMode"
1584
+ [spxName]="this.spxName"
1585
+ [spxReadonly]="this.spxReadonly"
1586
+ [spxStep]="this.spxStep"
1587
+ [spxValidators]="this.spxValidators"
1588
+ [value]="this.value"
1589
+ ></spx-input-number>
1590
+ }
1591
+ @if (this.spxType === 'radio') {
1592
+ <spx-input-radio
1593
+ #radioInput
1594
+ (spxChange)="this.handleChange($event)"
1595
+ [spxFocused]="this.spxFocused"
1596
+ [spxName]="this.spxName"
1597
+ [spxReadonly]="this.spxReadonly"
1598
+ [spxShowLabel]="this.spxShowLabel"
1599
+ [spxSuggestions]="this.spxSuggestions"
1600
+ [spxValidators]="this.spxValidators"
1601
+ [value]="this.value"
1602
+ ></spx-input-radio>
1603
+ }
1604
+ @if (this.spxType === 'time') {
1605
+ <spx-input-time
1606
+ #timeInput
1607
+ (spxChange)="this.handleChange($event)"
1608
+ (spxFocus)="this.handleFocus()"
1609
+ [spxFocused]="this.spxFocused"
1610
+ [spxName]="this.spxName"
1611
+ [spxReadonly]="this.spxReadonly"
1612
+ [spxValidators]="this.spxValidators"
1613
+ [value]="this.value"
1614
+ ></spx-input-time>
1615
+ }
1616
+ </div>
1617
+ <div validation-messages>
1618
+ <ng-content></ng-content>
1619
+ </div>
1620
+ </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", "spxAlertMessageSeverity", "spxShowValidationMessages", "spxValue"], outputs: ["spxClear", "spxSearch", "spxFocus", "spxFocusOut", "spxEdit", "spxHelp"] }, { kind: "component", type: SpxInputDateComponent, selector: "spx-input-date", inputs: ["spxMax", "spxMin", "spxReadonly", "spxValidators", "value", "spxFocused", "spxSelectDay", "spxSelectMonth", "spxSuggestions"], outputs: ["valueChange", "spxChange", "spxFocus"] }, { kind: "component", type: SpxInputFloatComponent, selector: "spx-input-float", inputs: ["spxName", "spxAutofocus", "spxReadonly", "spxValidators", "spxFocused", "spxStep", "value", "spxWasInternalUpdate", "tick"], outputs: ["spxChange", "spxFocus"] }, { kind: "component", type: SpxInputNumberComponent, selector: "spx-input-number", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxReadonly", "spxValidators", "spxFocused", "spxStep", "value"], outputs: ["spxChange", "spxFocus"] }, { kind: "component", type: SpxInputRadioComponent, selector: "spx-input-radio", inputs: ["spxName", "spxValidators", "spxFocused", "spxShowLabel", "spxReadonly", "spxSuggestions", "value"], outputs: ["spxChange", "spxFocus"] }, { kind: "component", type: SpxInputTextComponent, selector: "spx-input-text", inputs: ["spxName", "spxAutofocus", "spxAutocomplete", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "spxFocused", "spxType", "value", "spxWasInternalUpdate"], outputs: ["spxBlurFromChild", "spxChange", "spxFocus"] }, { kind: "component", type: SpxInputTimeComponent, selector: "spx-input-time", inputs: ["spxName", "spxAutofocus", "spxInputMode", "spxPattern", "spxSuggestions", "spxReadonly", "spxValidators", "spxCapitalize", "spxFocused", "spxType", "value", "spxWasInternalUpdate"], outputs: ["spxBlurFromChild", "spxChange", "spxFocus"] }] }); }
1563
1621
  }
1564
1622
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputComponent, decorators: [{
1565
1623
  type: Component,
@@ -1585,115 +1643,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1585
1643
  multi: true
1586
1644
  }
1587
1645
  ],
1588
- template: `<spx-input-box
1589
- [spxFocused]="this.spxFocused"
1590
- [spxLabel]="this.spxLabel"
1591
- [spxReadonly]="this.spxReadonly"
1592
- [spxRequired]="this.spxRequired"
1593
- [spxValue]="this.value"
1594
- [spxShowHelp]="this.spxShowHelp"
1595
- [spxCompact]="this.spxCompact"
1596
- [spxShowClear]="this.spxShowClear"
1597
- [spxShowEdit]="this.spxShowEdit"
1598
- [spxShowLabel]="this.spxShowLabel"
1599
- [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1600
- [spxShowValidationMessages]="this.spxShowValidationMessages"
1601
- (spxClear)="this.handleClear()"
1602
- (spxEdit)="this.handleEdit()"
1603
- (spxHelp)="this.handleHelp()"
1604
- (spxFocus)="this.setFocusIn()"
1605
- (spxFocusOut)="this.setFocusOut()"
1606
- (spxSearch)="this.handleSearch()">
1607
- <div controls>
1608
- @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1609
- <spx-input-text
1610
- (spxBlurFromChild)="this.handleBlur()"
1611
- (spxChange)="this.handleChange($event)"
1612
- (spxFocus)="this.handleFocus()"
1613
- [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1614
- [spxAutofocus]="this.spxAutofocus"
1615
- [spxCapitalize]="this.spxCapitalize"
1616
- [spxFocused]="this.spxFocused"
1617
- [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1618
- [spxName]="this.spxName"
1619
- [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1620
- [spxReadonly]="this.spxReadonly"
1621
- [spxSuggestions]="this.spxSuggestions"
1622
- [spxType]="this.spxType"
1623
- [spxValidators]="this.spxValidators"
1624
- [value]="this.value"
1625
- ></spx-input-text>
1626
- }
1627
- @if (this.spxType === 'date') {
1628
- <spx-input-date
1629
- (spxChange)="this.handleChange($event)"
1630
- (spxFocus)="this.handleFocus()"
1631
- [spxFocused]="this.spxFocused"
1632
- [spxMax]="this.spxMax!"
1633
- [spxMin]="this.spxMin!"
1634
- [spxReadonly]="this.spxReadonly"
1635
- [spxSelectDay]="this.spxSelectDay"
1636
- [spxSelectMonth]="this.spxSelectMonth"
1637
- [spxValidators]="this.spxValidators"
1638
- [(value)]="this.value"
1639
- ></spx-input-date>
1640
- }
1641
- @if (this.spxType === 'float') {
1642
- <spx-input-float
1643
- (spxChange)="this.handleChange($event)"
1644
- (spxFocus)="this.handleFocus()"
1645
- [spxAutofocus]="this.spxAutofocus"
1646
- [spxFocused]="this.spxFocused"
1647
- [spxName]="this.spxName"
1648
- [spxReadonly]="this.spxReadonly"
1649
- [spxStep]="this.spxStep"
1650
- [spxValidators]="this.spxValidators"
1651
- [value]="this.value"
1652
- ></spx-input-float>
1653
- }
1654
- @if (this.spxType === 'number') {
1655
- <spx-input-number
1656
- (spxChange)="this.handleChange($event)"
1657
- (spxFocus)="this.handleFocus()"
1658
- [spxAutofocus]="this.spxAutofocus"
1659
- [spxFocused]="this.spxFocused"
1660
- [spxInputMode]="this.spxInputMode"
1661
- [spxName]="this.spxName"
1662
- [spxReadonly]="this.spxReadonly"
1663
- [spxStep]="this.spxStep"
1664
- [spxValidators]="this.spxValidators"
1665
- [value]="this.value"
1666
- ></spx-input-number>
1667
- }
1668
- @if (this.spxType === 'radio') {
1669
- <spx-input-radio
1670
- #radioInput
1671
- (spxChange)="this.handleChange($event)"
1672
- [spxFocused]="this.spxFocused"
1673
- [spxName]="this.spxName"
1674
- [spxReadonly]="this.spxReadonly"
1675
- [spxShowLabel]="this.spxShowLabel"
1676
- [spxSuggestions]="this.spxSuggestions"
1677
- [spxValidators]="this.spxValidators"
1678
- [value]="this.value"
1679
- ></spx-input-radio>
1680
- }
1681
- @if (this.spxType === 'time') {
1682
- <spx-input-time
1683
- #timeInput
1684
- (spxChange)="this.handleChange($event)"
1685
- (spxFocus)="this.handleFocus()"
1686
- [spxFocused]="this.spxFocused"
1687
- [spxName]="this.spxName"
1688
- [spxReadonly]="this.spxReadonly"
1689
- [spxValidators]="this.spxValidators"
1690
- [value]="this.value"
1691
- ></spx-input-time>
1692
- }
1693
- </div>
1694
- <div validation-messages>
1695
- <ng-content></ng-content>
1696
- </div>
1646
+ template: `<spx-input-box
1647
+ [spxFocused]="this.spxFocused"
1648
+ [spxLabel]="this.spxLabel"
1649
+ [spxReadonly]="this.spxReadonly"
1650
+ [spxRequired]="this.spxRequired"
1651
+ [spxValue]="this.value"
1652
+ [spxShowHelp]="this.spxShowHelp"
1653
+ [spxCompact]="this.spxCompact"
1654
+ [spxShowClear]="this.spxShowClear"
1655
+ [spxShowEdit]="this.spxShowEdit"
1656
+ [spxShowLabel]="this.spxShowLabel"
1657
+ [spxShowSearch]="this.spxShowSearch ? this.spxShowSearch : this.spxType === 'autocomplete'"
1658
+ [spxShowValidationMessages]="this.spxShowValidationMessages"
1659
+ (spxClear)="this.handleClear()"
1660
+ (spxEdit)="this.handleEdit()"
1661
+ (spxHelp)="this.handleHelp()"
1662
+ (spxFocus)="this.setFocusIn()"
1663
+ (spxFocusOut)="this.setFocusOut()"
1664
+ (spxSearch)="this.handleSearch()">
1665
+ <div controls>
1666
+ @if (this.spxType === 'autocomplete' || this.spxType === 'overlay' || this.spxType === 'overlaynumber' || this.spxType === 'text' || this.spxType === 'password') {
1667
+ <spx-input-text
1668
+ (spxBlurFromChild)="this.handleBlur()"
1669
+ (spxChange)="this.handleChange($event)"
1670
+ (spxFocus)="this.handleFocus()"
1671
+ [spxAutocomplete]="this.spxAutocomplete ? this.spxAutocomplete : undefined"
1672
+ [spxAutofocus]="this.spxAutofocus"
1673
+ [spxCapitalize]="this.spxCapitalize"
1674
+ [spxFocused]="this.spxFocused"
1675
+ [spxInputMode]="this.spxType === 'overlaynumber' ? 'numeric' : this.spxInputMode"
1676
+ [spxName]="this.spxName"
1677
+ [spxPattern]="this.spxType === 'overlaynumber' ? '[0-9]*' : this.spxPattern"
1678
+ [spxReadonly]="this.spxReadonly"
1679
+ [spxSuggestions]="this.spxSuggestions"
1680
+ [spxType]="this.spxType"
1681
+ [spxValidators]="this.spxValidators"
1682
+ [value]="this.value"
1683
+ ></spx-input-text>
1684
+ }
1685
+ @if (this.spxType === 'date') {
1686
+ <spx-input-date
1687
+ (spxChange)="this.handleChange($event)"
1688
+ (spxFocus)="this.handleFocus()"
1689
+ [spxFocused]="this.spxFocused"
1690
+ [spxMax]="this.spxMax!"
1691
+ [spxMin]="this.spxMin!"
1692
+ [spxReadonly]="this.spxReadonly"
1693
+ [spxSelectDay]="this.spxSelectDay"
1694
+ [spxSelectMonth]="this.spxSelectMonth"
1695
+ [spxValidators]="this.spxValidators"
1696
+ [(value)]="this.value"
1697
+ ></spx-input-date>
1698
+ }
1699
+ @if (this.spxType === 'float') {
1700
+ <spx-input-float
1701
+ (spxChange)="this.handleChange($event)"
1702
+ (spxFocus)="this.handleFocus()"
1703
+ [spxAutofocus]="this.spxAutofocus"
1704
+ [spxFocused]="this.spxFocused"
1705
+ [spxName]="this.spxName"
1706
+ [spxReadonly]="this.spxReadonly"
1707
+ [spxStep]="this.spxStep"
1708
+ [spxValidators]="this.spxValidators"
1709
+ [value]="this.value"
1710
+ ></spx-input-float>
1711
+ }
1712
+ @if (this.spxType === 'number') {
1713
+ <spx-input-number
1714
+ (spxChange)="this.handleChange($event)"
1715
+ (spxFocus)="this.handleFocus()"
1716
+ [spxAutofocus]="this.spxAutofocus"
1717
+ [spxFocused]="this.spxFocused"
1718
+ [spxInputMode]="this.spxInputMode"
1719
+ [spxName]="this.spxName"
1720
+ [spxReadonly]="this.spxReadonly"
1721
+ [spxStep]="this.spxStep"
1722
+ [spxValidators]="this.spxValidators"
1723
+ [value]="this.value"
1724
+ ></spx-input-number>
1725
+ }
1726
+ @if (this.spxType === 'radio') {
1727
+ <spx-input-radio
1728
+ #radioInput
1729
+ (spxChange)="this.handleChange($event)"
1730
+ [spxFocused]="this.spxFocused"
1731
+ [spxName]="this.spxName"
1732
+ [spxReadonly]="this.spxReadonly"
1733
+ [spxShowLabel]="this.spxShowLabel"
1734
+ [spxSuggestions]="this.spxSuggestions"
1735
+ [spxValidators]="this.spxValidators"
1736
+ [value]="this.value"
1737
+ ></spx-input-radio>
1738
+ }
1739
+ @if (this.spxType === 'time') {
1740
+ <spx-input-time
1741
+ #timeInput
1742
+ (spxChange)="this.handleChange($event)"
1743
+ (spxFocus)="this.handleFocus()"
1744
+ [spxFocused]="this.spxFocused"
1745
+ [spxName]="this.spxName"
1746
+ [spxReadonly]="this.spxReadonly"
1747
+ [spxValidators]="this.spxValidators"
1748
+ [value]="this.value"
1749
+ ></spx-input-time>
1750
+ }
1751
+ </div>
1752
+ <div validation-messages>
1753
+ <ng-content></ng-content>
1754
+ </div>
1697
1755
  </spx-input-box>`,
1698
1756
  }]
1699
1757
  }], propDecorators: { spxLabel: [{