@softpak/components 0.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/README.md +24 -0
  2. package/esm2022/placeholder.mjs +2 -0
  3. package/esm2022/public_api.mjs +2 -0
  4. package/esm2022/softpak-components.mjs +5 -0
  5. package/esm2022/spx-alert/public-api.mjs +3 -0
  6. package/esm2022/spx-alert/softpak-components-spx-alert.mjs +5 -0
  7. package/esm2022/spx-alert/spx-alert.component.mjs +191 -0
  8. package/esm2022/spx-alert/spx-alert.interface.mjs +3 -0
  9. package/esm2022/spx-app-configuration/public-api.mjs +8 -0
  10. package/esm2022/spx-app-configuration/softpak-components-spx-app-configuration.mjs +5 -0
  11. package/esm2022/spx-app-configuration/spx-app-alert.interface.mjs +2 -0
  12. package/esm2022/spx-app-configuration/spx-app-bundle-set.interface.mjs +2 -0
  13. package/esm2022/spx-app-configuration/spx-app-channel-type.enum.mjs +8 -0
  14. package/esm2022/spx-app-configuration/spx-app-channel.interface.mjs +2 -0
  15. package/esm2022/spx-app-configuration/spx-app-config.interface.mjs +2 -0
  16. package/esm2022/spx-app-configuration/spx-app-id.enum.mjs +8 -0
  17. package/esm2022/spx-app-configuration/spx-app-lang.enum.mjs +6 -0
  18. package/esm2022/spx-app-configuration/spx-app-release-note.interface.mjs +2 -0
  19. package/esm2022/spx-button/public-api.mjs +2 -0
  20. package/esm2022/spx-button/softpak-components-spx-button.mjs +5 -0
  21. package/esm2022/spx-button/spx-button.component.mjs +129 -0
  22. package/esm2022/spx-capitalize/public-api.mjs +2 -0
  23. package/esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs +5 -0
  24. package/esm2022/spx-capitalize/spx-capitalize.pipe.mjs +20 -0
  25. package/esm2022/spx-channel-selection/public-api.mjs +5 -0
  26. package/esm2022/spx-channel-selection/softpak-components-spx-channel-selection.mjs +5 -0
  27. package/esm2022/spx-channel-selection/src/spx-channel-indicator.component.mjs +45 -0
  28. package/esm2022/spx-channel-selection/src/spx-channel-selection.component.mjs +40 -0
  29. package/esm2022/spx-channel-selection/src/spx-company-selection.component.mjs +48 -0
  30. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +43 -0
  31. package/esm2022/spx-check-digit/public-api.mjs +2 -0
  32. package/esm2022/spx-check-digit/softpak-components-spx-check-digit.mjs +5 -0
  33. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +85 -0
  34. package/esm2022/spx-form-section/public-api.mjs +2 -0
  35. package/esm2022/spx-form-section/softpak-components-spx-form-section.mjs +5 -0
  36. package/esm2022/spx-form-section/spx-form-section.component.mjs +37 -0
  37. package/esm2022/spx-helpers/calc-check-digit.function.mjs +21 -0
  38. package/esm2022/spx-helpers/public-api.mjs +4 -0
  39. package/esm2022/spx-helpers/softpak-components-spx-helpers.mjs +5 -0
  40. package/esm2022/spx-helpers/spx-severity.enum.mjs +8 -0
  41. package/esm2022/spx-helpers/value-pair-to-value.function.mjs +7 -0
  42. package/esm2022/spx-inputs/public-api.mjs +5 -0
  43. package/esm2022/spx-inputs/softpak-components-spx-inputs.mjs +5 -0
  44. package/esm2022/spx-inputs/spx-input-box.component.mjs +231 -0
  45. package/esm2022/spx-inputs/spx-input-date.component.mjs +294 -0
  46. package/esm2022/spx-inputs/spx-input-float.component.mjs +154 -0
  47. package/esm2022/spx-inputs/spx-input-number.component.mjs +82 -0
  48. package/esm2022/spx-inputs/spx-input-radio.component.mjs +63 -0
  49. package/esm2022/spx-inputs/spx-input-text.component.mjs +156 -0
  50. package/esm2022/spx-inputs/spx-input.component.mjs +380 -0
  51. package/esm2022/spx-inputs/spx-value-interface.mjs +2 -0
  52. package/esm2022/spx-navigation/public-api.mjs +5 -0
  53. package/esm2022/spx-navigation/softpak-components-spx-navigation.mjs +5 -0
  54. package/esm2022/spx-navigation/spx-home-tile.component.mjs +33 -0
  55. package/esm2022/spx-navigation/spx-home-tiles.component.mjs +17 -0
  56. package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +2 -0
  57. package/esm2022/spx-navigation/spx-navigation.component.mjs +42 -0
  58. package/esm2022/spx-patch/patch-check.function.mjs +9 -0
  59. package/esm2022/spx-patch/public-api.mjs +4 -0
  60. package/esm2022/spx-patch/release-check.function.mjs +11 -0
  61. package/esm2022/spx-patch/softpak-components-spx-patch.mjs +5 -0
  62. package/esm2022/spx-patch/spx-patch.component.mjs +46 -0
  63. package/esm2022/spx-progress-bar/public-api.mjs +2 -0
  64. package/esm2022/spx-progress-bar/softpak-components-spx-progress-bar.mjs +5 -0
  65. package/esm2022/spx-progress-bar/spx-progress-bar.component.mjs +29 -0
  66. package/esm2022/spx-spinner/public-api.mjs +2 -0
  67. package/esm2022/spx-spinner/softpak-components-spx-spinner.mjs +5 -0
  68. package/esm2022/spx-spinner/spx-spinner.component.mjs +157 -0
  69. package/esm2022/spx-storage/public-api.mjs +3 -0
  70. package/esm2022/spx-storage/softpak-components-spx-storage.mjs +5 -0
  71. package/esm2022/spx-storage/src/spx-storage-key.enum.mjs +13 -0
  72. package/esm2022/spx-storage/src/spx-storage.class.mjs +45 -0
  73. package/esm2022/spx-suggestion/public-api.mjs +2 -0
  74. package/esm2022/spx-suggestion/softpak-components-spx-suggestion.mjs +5 -0
  75. package/esm2022/spx-suggestion/spx-suggestion.component.mjs +47 -0
  76. package/esm2022/spx-toaster/public-api.mjs +4 -0
  77. package/esm2022/spx-toaster/softpak-components-spx-toaster.mjs +5 -0
  78. package/esm2022/spx-toaster/src/spx-toaster-autoclose-speed.mjs +23 -0
  79. package/esm2022/spx-toaster/src/spx-toaster-message.interface.mjs +3 -0
  80. package/esm2022/spx-toaster/src/spx-toaster.component.mjs +46 -0
  81. package/esm2022/spx-update/public-api.mjs +3 -0
  82. package/esm2022/spx-update/softpak-components-spx-update.mjs +5 -0
  83. package/esm2022/spx-update/src/spx-update-info.component.mjs +88 -0
  84. package/esm2022/spx-update/src/spx-update-progress.component.mjs +46 -0
  85. package/esm2022/spx-validation/max.validator.mjs +17 -0
  86. package/esm2022/spx-validation/maxlength.validator.mjs +20 -0
  87. package/esm2022/spx-validation/min.validator.mjs +17 -0
  88. package/esm2022/spx-validation/minlength.validator.mjs +20 -0
  89. package/esm2022/spx-validation/pattern.validator.mjs +12 -0
  90. package/esm2022/spx-validation/public-api.mjs +10 -0
  91. package/esm2022/spx-validation/required.validator.mjs +12 -0
  92. package/esm2022/spx-validation/softpak-components-spx-validation.mjs +5 -0
  93. package/esm2022/spx-validation/spx-validate-control.component.mjs +63 -0
  94. package/esm2022/spx-validation/spx-validation.module.mjs +28 -0
  95. package/esm2022/spx-validation/year-and-month.validator.mjs +42 -0
  96. package/fesm2022/softpak-components-spx-alert.mjs +201 -0
  97. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -0
  98. package/fesm2022/softpak-components-spx-app-configuration.mjs +28 -0
  99. package/fesm2022/softpak-components-spx-app-configuration.mjs.map +1 -0
  100. package/fesm2022/softpak-components-spx-button.mjs +136 -0
  101. package/fesm2022/softpak-components-spx-button.mjs.map +1 -0
  102. package/fesm2022/softpak-components-spx-capitalize.mjs +27 -0
  103. package/fesm2022/softpak-components-spx-capitalize.mjs.map +1 -0
  104. package/fesm2022/softpak-components-spx-channel-selection.mjs +171 -0
  105. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -0
  106. package/fesm2022/softpak-components-spx-check-digit.mjs +92 -0
  107. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -0
  108. package/fesm2022/softpak-components-spx-form-section.mjs +44 -0
  109. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -0
  110. package/fesm2022/softpak-components-spx-helpers.mjs +42 -0
  111. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -0
  112. package/fesm2022/softpak-components-spx-inputs.mjs +1340 -0
  113. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -0
  114. package/fesm2022/softpak-components-spx-navigation.mjs +93 -0
  115. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -0
  116. package/fesm2022/softpak-components-spx-patch.mjs +72 -0
  117. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -0
  118. package/fesm2022/softpak-components-spx-progress-bar.mjs +36 -0
  119. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -0
  120. package/fesm2022/softpak-components-spx-spinner.mjs +164 -0
  121. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -0
  122. package/fesm2022/softpak-components-spx-storage.mjs +63 -0
  123. package/fesm2022/softpak-components-spx-storage.mjs.map +1 -0
  124. package/fesm2022/softpak-components-spx-suggestion.mjs +54 -0
  125. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -0
  126. package/fesm2022/softpak-components-spx-toaster.mjs +79 -0
  127. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -0
  128. package/fesm2022/softpak-components-spx-update.mjs +138 -0
  129. package/fesm2022/softpak-components-spx-update.mjs.map +1 -0
  130. package/fesm2022/softpak-components-spx-validation.mjs +223 -0
  131. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -0
  132. package/fesm2022/softpak-components.mjs +8 -0
  133. package/fesm2022/softpak-components.mjs.map +1 -0
  134. package/index.d.ts +5 -0
  135. package/package.json +135 -0
  136. package/placeholder.d.ts +1 -0
  137. package/public_api.d.ts +1 -0
  138. package/spx-alert/index.d.ts +5 -0
  139. package/spx-alert/public-api.d.ts +2 -0
  140. package/spx-alert/spx-alert.component.d.ts +28 -0
  141. package/spx-alert/spx-alert.interface.d.ts +7 -0
  142. package/spx-app-configuration/index.d.ts +5 -0
  143. package/spx-app-configuration/public-api.d.ts +7 -0
  144. package/spx-app-configuration/spx-app-alert.interface.d.ts +7 -0
  145. package/spx-app-configuration/spx-app-bundle-set.interface.d.ts +4 -0
  146. package/spx-app-configuration/spx-app-channel-type.enum.d.ts +6 -0
  147. package/spx-app-configuration/spx-app-channel.interface.d.ts +10 -0
  148. package/spx-app-configuration/spx-app-config.interface.d.ts +19 -0
  149. package/spx-app-configuration/spx-app-id.enum.d.ts +6 -0
  150. package/spx-app-configuration/spx-app-lang.enum.d.ts +4 -0
  151. package/spx-app-configuration/spx-app-release-note.interface.d.ts +8 -0
  152. package/spx-button/index.d.ts +5 -0
  153. package/spx-button/public-api.d.ts +1 -0
  154. package/spx-button/spx-button.component.d.ts +23 -0
  155. package/spx-capitalize/index.d.ts +5 -0
  156. package/spx-capitalize/public-api.d.ts +1 -0
  157. package/spx-capitalize/spx-capitalize.pipe.d.ts +8 -0
  158. package/spx-channel-selection/index.d.ts +5 -0
  159. package/spx-channel-selection/public-api.d.ts +4 -0
  160. package/spx-channel-selection/src/spx-channel-indicator.component.d.ts +13 -0
  161. package/spx-channel-selection/src/spx-channel-selection.component.d.ts +11 -0
  162. package/spx-channel-selection/src/spx-company-selection.component.d.ts +12 -0
  163. package/spx-channel-selection/src/spx-welcome.component.d.ts +12 -0
  164. package/spx-check-digit/index.d.ts +5 -0
  165. package/spx-check-digit/public-api.d.ts +1 -0
  166. package/spx-check-digit/spx-check-digit.component.d.ts +19 -0
  167. package/spx-form-section/index.d.ts +5 -0
  168. package/spx-form-section/public-api.d.ts +1 -0
  169. package/spx-form-section/spx-form-section.component.d.ts +9 -0
  170. package/spx-helpers/calc-check-digit.function.d.ts +1 -0
  171. package/spx-helpers/index.d.ts +5 -0
  172. package/spx-helpers/public-api.d.ts +3 -0
  173. package/spx-helpers/spx-severity.enum.d.ts +6 -0
  174. package/spx-helpers/value-pair-to-value.function.d.ts +1 -0
  175. package/spx-inputs/index.d.ts +5 -0
  176. package/spx-inputs/public-api.d.ts +4 -0
  177. package/spx-inputs/spx-input-box.component.d.ts +33 -0
  178. package/spx-inputs/spx-input-date.component.d.ts +50 -0
  179. package/spx-inputs/spx-input-float.component.d.ts +28 -0
  180. package/spx-inputs/spx-input-number.component.d.ts +22 -0
  181. package/spx-inputs/spx-input-radio.component.d.ts +18 -0
  182. package/spx-inputs/spx-input-text.component.d.ts +29 -0
  183. package/spx-inputs/spx-input.component.d.ts +58 -0
  184. package/spx-inputs/spx-value-interface.d.ts +4 -0
  185. package/spx-navigation/index.d.ts +5 -0
  186. package/spx-navigation/public-api.d.ts +4 -0
  187. package/spx-navigation/spx-home-tile.component.d.ts +6 -0
  188. package/spx-navigation/spx-home-tiles.component.d.ts +5 -0
  189. package/spx-navigation/spx-navigation-item.interface.d.ts +19 -0
  190. package/spx-navigation/spx-navigation.component.d.ts +12 -0
  191. package/spx-patch/index.d.ts +5 -0
  192. package/spx-patch/patch-check.function.d.ts +4 -0
  193. package/spx-patch/public-api.d.ts +3 -0
  194. package/spx-patch/release-check.function.d.ts +1 -0
  195. package/spx-patch/spx-patch.component.d.ts +10 -0
  196. package/spx-progress-bar/index.d.ts +5 -0
  197. package/spx-progress-bar/public-api.d.ts +1 -0
  198. package/spx-progress-bar/spx-progress-bar.component.d.ts +7 -0
  199. package/spx-spinner/index.d.ts +5 -0
  200. package/spx-spinner/public-api.d.ts +1 -0
  201. package/spx-spinner/spx-spinner.component.d.ts +7 -0
  202. package/spx-storage/index.d.ts +5 -0
  203. package/spx-storage/public-api.d.ts +2 -0
  204. package/spx-storage/src/spx-storage-key.enum.d.ts +10 -0
  205. package/spx-storage/src/spx-storage.class.d.ts +9 -0
  206. package/spx-suggestion/index.d.ts +5 -0
  207. package/spx-suggestion/public-api.d.ts +1 -0
  208. package/spx-suggestion/spx-suggestion.component.d.ts +7 -0
  209. package/spx-toaster/index.d.ts +5 -0
  210. package/spx-toaster/public-api.d.ts +3 -0
  211. package/spx-toaster/src/spx-toaster-autoclose-speed.d.ts +11 -0
  212. package/spx-toaster/src/spx-toaster-message.interface.d.ts +9 -0
  213. package/spx-toaster/src/spx-toaster.component.d.ts +11 -0
  214. package/spx-update/index.d.ts +5 -0
  215. package/spx-update/public-api.d.ts +2 -0
  216. package/spx-update/src/spx-update-info.component.d.ts +18 -0
  217. package/spx-update/src/spx-update-progress.component.d.ts +14 -0
  218. package/spx-validation/index.d.ts +5 -0
  219. package/spx-validation/max.validator.d.ts +7 -0
  220. package/spx-validation/maxlength.validator.d.ts +7 -0
  221. package/spx-validation/min.validator.d.ts +7 -0
  222. package/spx-validation/minlength.validator.d.ts +7 -0
  223. package/spx-validation/pattern.validator.d.ts +2 -0
  224. package/spx-validation/public-api.d.ts +9 -0
  225. package/spx-validation/required.validator.d.ts +2 -0
  226. package/spx-validation/spx-validate-control.component.d.ts +24 -0
  227. package/spx-validation/spx-validation.module.d.ts +9 -0
  228. package/spx-validation/year-and-month.validator.d.ts +2 -0
  229. package/tailwind.css +1 -0
@@ -0,0 +1,88 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';
5
+ import { SpxInputComponent } from '@softpak/components/spx-inputs';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/forms";
8
+ const ctrlAppStoreVersion = 'appStoreVersion';
9
+ const ctrlChannel = 'channel';
10
+ const ctrlNextVersionNumber = 'nextVersionNumber';
11
+ const ctrlVersionNumber = 'versionNumber';
12
+ export class SpxUpdateInfoComponent {
13
+ get ctrlVersionNumber() { return this.form.get(ctrlVersionNumber); }
14
+ get ctrlNextVersionNumber() { return this.form.get(ctrlNextVersionNumber); }
15
+ get ctrlConfiguredChannel() { return this.form.get(ctrlChannel); }
16
+ get ctrlAppStoreVersion() { return this.form.get(ctrlAppStoreVersion); }
17
+ constructor(formBuilder) {
18
+ this.formBuilder = formBuilder;
19
+ this.form = this.formBuilder.group({
20
+ [ctrlAppStoreVersion]: [null, []],
21
+ [ctrlChannel]: [null, []],
22
+ [ctrlNextVersionNumber]: [null, []],
23
+ [ctrlVersionNumber]: [null, []],
24
+ });
25
+ }
26
+ update(appStoreVersion, channel, nextVersion, version) {
27
+ this.ctrlVersionNumber.setValue({
28
+ value: version,
29
+ });
30
+ this.ctrlNextVersionNumber.setValue({
31
+ value: nextVersion,
32
+ });
33
+ this.ctrlConfiguredChannel.setValue({
34
+ value: channel,
35
+ });
36
+ this.ctrlAppStoreVersion.setValue({
37
+ value: appStoreVersion,
38
+ });
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxUpdateInfoComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxUpdateInfoComponent, isStandalone: true, selector: "spx-update-info", inputs: { txtAppStoreVersion: "txtAppStoreVersion", txtChannel: "txtChannel", txtNextVersion: "txtNextVersion", txtVersion: "txtVersion" }, ngImport: i0, template: `<form [formGroup]="form" class="mt-3">
42
+ <div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3">
43
+ <spx-input [formControl]="ctrlVersionNumber" [spxLabel]="txtVersion | capitalize"
44
+ [spxReadonly]="true"></spx-input>
45
+ <spx-input [formControl]="ctrlNextVersionNumber" [spxLabel]="txtNextVersion | capitalize"
46
+ [spxReadonly]="true"></spx-input>
47
+ <spx-input [formControl]="ctrlConfiguredChannel" [spxLabel]="txtChannel | capitalize"
48
+ [spxReadonly]="true"></spx-input>
49
+ <spx-input [formControl]="ctrlAppStoreVersion" [spxLabel]="txtAppStoreVersion | capitalize"
50
+ [spxReadonly]="true"></spx-input>
51
+ </div>
52
+ </form>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxUpdateInfoComponent, decorators: [{
55
+ type: Component,
56
+ args: [{
57
+ selector: 'spx-update-info',
58
+ template: `<form [formGroup]="form" class="mt-3">
59
+ <div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3">
60
+ <spx-input [formControl]="ctrlVersionNumber" [spxLabel]="txtVersion | capitalize"
61
+ [spxReadonly]="true"></spx-input>
62
+ <spx-input [formControl]="ctrlNextVersionNumber" [spxLabel]="txtNextVersion | capitalize"
63
+ [spxReadonly]="true"></spx-input>
64
+ <spx-input [formControl]="ctrlConfiguredChannel" [spxLabel]="txtChannel | capitalize"
65
+ [spxReadonly]="true"></spx-input>
66
+ <spx-input [formControl]="ctrlAppStoreVersion" [spxLabel]="txtAppStoreVersion | capitalize"
67
+ [spxReadonly]="true"></spx-input>
68
+ </div>
69
+ </form>`,
70
+ standalone: true,
71
+ imports: [
72
+ CommonModule,
73
+ FormsModule,
74
+ ReactiveFormsModule,
75
+ SpxCapitalizePipe,
76
+ SpxInputComponent,
77
+ ]
78
+ }]
79
+ }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { txtAppStoreVersion: [{
80
+ type: Input
81
+ }], txtChannel: [{
82
+ type: Input
83
+ }], txtNextVersion: [{
84
+ type: Input
85
+ }], txtVersion: [{
86
+ type: Input
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXVwZGF0ZS1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdXBkYXRlL3NyYy9zcHgtdXBkYXRlLWluZm8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQXVDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFFbkUsTUFBTSxtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQztBQUM5QyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDOUIsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNsRCxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztBQXlCMUMsTUFBTSxPQUFPLHNCQUFzQjtJQU9qQyxJQUFJLGlCQUFpQixLQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFnQixDQUFDLENBQUMsQ0FBQztJQUNoRyxJQUFJLHFCQUFxQixLQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFnQixDQUFDLENBQUMsQ0FBQztJQUN4RyxJQUFJLHFCQUFxQixLQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDOUYsSUFBSSxtQkFBbUIsS0FBa0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFcEcsWUFDbUIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQXVCLEVBQUUsT0FBZSxFQUFFLFdBQW1CLEVBQUUsT0FBZTtRQUNuRixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQzlCLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztZQUNsQyxLQUFLLEVBQUUsV0FBVztTQUNuQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDO1lBQ2xDLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztZQUNoQyxLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXBDVSxzQkFBc0I7a0dBQXRCLHNCQUFzQix1TkFyQnZCOzs7Ozs7Ozs7OztVQVdGLDJEQUdOLFlBQVksOEJBQ1osV0FBVywyWUFDWCxtQkFBbUIsOFZBQ25CLGlCQUFpQixtREFDakIsaUJBQWlCOzsyRkFHUixzQkFBc0I7a0JBdkJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7VUFXRjtvQkFDUixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsaUJBQWlCO3FCQUNsQjtpQkFDRjtnRkFHVSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcbmltcG9ydCB7IFNweElucHV0Q29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcblxuY29uc3QgY3RybEFwcFN0b3JlVmVyc2lvbiA9ICdhcHBTdG9yZVZlcnNpb24nO1xuY29uc3QgY3RybENoYW5uZWwgPSAnY2hhbm5lbCc7XG5jb25zdCBjdHJsTmV4dFZlcnNpb25OdW1iZXIgPSAnbmV4dFZlcnNpb25OdW1iZXInO1xuY29uc3QgY3RybFZlcnNpb25OdW1iZXIgPSAndmVyc2lvbk51bWJlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC11cGRhdGUtaW5mbycsXG4gIHRlbXBsYXRlOiBgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgeGw6Z3JpZC1jb2xzLTMgZ2FwLTNcIj5cbiAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxWZXJzaW9uTnVtYmVyXCIgW3NweExhYmVsXT1cInR4dFZlcnNpb24gfCBjYXBpdGFsaXplXCJcbiAgICAgICAgW3NweFJlYWRvbmx5XT1cInRydWVcIj48L3NweC1pbnB1dD5cbiAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxOZXh0VmVyc2lvbk51bWJlclwiIFtzcHhMYWJlbF09XCJ0eHROZXh0VmVyc2lvbiB8IGNhcGl0YWxpemVcIlxuICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxuICAgICAgPHNweC1pbnB1dCBbZm9ybUNvbnRyb2xdPVwiY3RybENvbmZpZ3VyZWRDaGFubmVsXCIgW3NweExhYmVsXT1cInR4dENoYW5uZWwgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgW3NweFJlYWRvbmx5XT1cInRydWVcIj48L3NweC1pbnB1dD5cbiAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxBcHBTdG9yZVZlcnNpb25cIiBbc3B4TGFiZWxdPVwidHh0QXBwU3RvcmVWZXJzaW9uIHwgY2FwaXRhbGl6ZVwiXG4gICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5gLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3B4VXBkYXRlSW5mb0NvbXBvbmVudCB7XG4gIGZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHR4dEFwcFN0b3JlVmVyc2lvbiE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0Q2hhbm5lbCE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0TmV4dFZlcnNpb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dFZlcnNpb24hOiBzdHJpbmc7XG4gIFxuICBnZXQgY3RybFZlcnNpb25OdW1iZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsVmVyc2lvbk51bWJlcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxOZXh0VmVyc2lvbk51bWJlcigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxOZXh0VmVyc2lvbk51bWJlcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxDaGFubmVsKSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybEFwcFN0b3JlVmVyc2lvbigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxBcHBTdG9yZVZlcnNpb24pIGFzIEZvcm1Db250cm9sOyB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgW2N0cmxBcHBTdG9yZVZlcnNpb25dOiBbbnVsbCwgW11dLFxuICAgICAgW2N0cmxDaGFubmVsXTogW251bGwsIFtdXSxcbiAgICAgIFtjdHJsTmV4dFZlcnNpb25OdW1iZXJdOiBbbnVsbCwgW11dLFxuICAgICAgW2N0cmxWZXJzaW9uTnVtYmVyXTogW251bGwsIFtdXSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZShhcHBTdG9yZVZlcnNpb246IHN0cmluZywgY2hhbm5lbDogc3RyaW5nLCBuZXh0VmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmN0cmxWZXJzaW9uTnVtYmVyLnNldFZhbHVlKHtcbiAgICAgIHZhbHVlOiB2ZXJzaW9uLFxuICAgIH0pO1xuICAgIHRoaXMuY3RybE5leHRWZXJzaW9uTnVtYmVyLnNldFZhbHVlKHtcbiAgICAgIHZhbHVlOiBuZXh0VmVyc2lvbixcbiAgICB9KTtcbiAgICB0aGlzLmN0cmxDb25maWd1cmVkQ2hhbm5lbC5zZXRWYWx1ZSh7XG4gICAgICB2YWx1ZTogY2hhbm5lbCxcbiAgICB9KTtcbiAgICB0aGlzLmN0cmxBcHBTdG9yZVZlcnNpb24uc2V0VmFsdWUoe1xuICAgICAgdmFsdWU6IGFwcFN0b3JlVmVyc2lvbixcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,46 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';
3
+ import { SpxProgressBarComponent } from '@softpak/components/spx-progress-bar';
4
+ import * as i0 from "@angular/core";
5
+ export class SpxUpdateProgressComponent {
6
+ ngOnInit() {
7
+ this.startLoaderSync();
8
+ }
9
+ ngOnDestroy() {
10
+ this.stopLoaderSync();
11
+ }
12
+ startLoaderSync() {
13
+ if (this.syncTruckInterval === null) {
14
+ this.syncTruckInterval = setInterval(() => {
15
+ this.delayedPercentage = this.percentage;
16
+ }, 200);
17
+ }
18
+ }
19
+ stopLoaderSync() {
20
+ if (this.syncTruckInterval !== null) {
21
+ clearInterval(this.syncTruckInterval);
22
+ this.syncTruckInterval = undefined;
23
+ }
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxUpdateProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxUpdateProgressComponent, isStandalone: true, selector: "spx-update-progress", inputs: { title: "title", percentage: "percentage" }, ngImport: i0, template: `<spx-progress-bar [spxPercentage]="delayedPercentage" [spxTitle]="title | capitalize">
27
+ </spx-progress-bar>`, isInline: true, dependencies: [{ kind: "component", type: SpxProgressBarComponent, selector: "spx-progress-bar", inputs: ["spxPercentage", "spxTitle"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }] }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxUpdateProgressComponent, decorators: [{
30
+ type: Component,
31
+ args: [{
32
+ selector: 'spx-update-progress',
33
+ template: `<spx-progress-bar [spxPercentage]="delayedPercentage" [spxTitle]="title | capitalize">
34
+ </spx-progress-bar>`,
35
+ standalone: true,
36
+ imports: [
37
+ SpxProgressBarComponent,
38
+ SpxCapitalizePipe,
39
+ ],
40
+ }]
41
+ }], propDecorators: { title: [{
42
+ type: Input
43
+ }], percentage: [{
44
+ type: Input
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXVwZGF0ZS1wcm9ncmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXVwZGF0ZS9zcmMvc3B4LXVwZGF0ZS1wcm9ncmVzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQVkvRSxNQUFNLE9BQU8sMEJBQTBCO0lBTXJDLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzNDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQzs4R0EzQlUsMEJBQTBCO2tHQUExQiwwQkFBMEIscUlBUjNCO3NCQUNVLDREQUdsQix1QkFBdUIsK0ZBQ3ZCLGlCQUFpQjs7MkZBR1IsMEJBQTBCO2tCQVZ0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRTtzQkFDVTtvQkFDcEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLGlCQUFpQjtxQkFDbEI7aUJBQ0Y7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcbmltcG9ydCB7IFNweFByb2dyZXNzQmFyQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtcHJvZ3Jlc3MtYmFyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LXVwZGF0ZS1wcm9ncmVzcycsXG4gIHRlbXBsYXRlOiBgPHNweC1wcm9ncmVzcy1iYXIgW3NweFBlcmNlbnRhZ2VdPVwiZGVsYXllZFBlcmNlbnRhZ2VcIiBbc3B4VGl0bGVdPVwidGl0bGUgfCBjYXBpdGFsaXplXCI+XG4gIDwvc3B4LXByb2dyZXNzLWJhcj5gLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgU3B4UHJvZ3Jlc3NCYXJDb21wb25lbnQsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNweFVwZGF0ZVByb2dyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgcGVyY2VudGFnZSE6IG51bWJlcjtcbiAgZGVsYXllZFBlcmNlbnRhZ2UhOiBudW1iZXI7XG4gIHN5bmNUcnVja0ludGVydmFsPzogYW55O1xuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvYWRlclN5bmMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcExvYWRlclN5bmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRMb2FkZXJTeW5jKCkge1xuICAgIGlmICh0aGlzLnN5bmNUcnVja0ludGVydmFsID09PSBudWxsKSB7XG4gICAgICB0aGlzLnN5bmNUcnVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICB0aGlzLmRlbGF5ZWRQZXJjZW50YWdlID0gdGhpcy5wZXJjZW50YWdlO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BMb2FkZXJTeW5jKCkge1xuICAgIGlmICh0aGlzLnN5bmNUcnVja0ludGVydmFsICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuc3luY1RydWNrSW50ZXJ2YWwpO1xuICAgICAgdGhpcy5zeW5jVHJ1Y2tJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { spxValidatorRequired } from './required.validator';
2
+ import { valuePairToValue } from '@softpak/components/spx-helpers';
3
+ export const spxValidatorMax = (max) => (control) => {
4
+ if (!spxValidatorRequired()(control)) {
5
+ const value = parseInt(valuePairToValue(control.value).toString(), 10);
6
+ if (!isNaN(value) && value > max) {
7
+ return {
8
+ max: {
9
+ max,
10
+ actual: value
11
+ }
12
+ };
13
+ }
14
+ }
15
+ return null;
16
+ };
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbi9tYXgudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUF3QixFQUFtRCxFQUFFO0lBQzFILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUMvQixPQUFPO2dCQUNILEdBQUcsRUFBRTtvQkFDRCxHQUFHO29CQUNILE1BQU0sRUFBRSxLQUFLO2lCQUNoQjthQUNKLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkIH0gZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xuaW1wb3J0IHsgdmFsdWVQYWlyVG9WYWx1ZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWhlbHBlcnMnO1xuXG5leHBvcnQgY29uc3Qgc3B4VmFsaWRhdG9yTWF4ID0gKG1heDogbnVtYmVyKSA9PiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtYXg6IHsgbWF4OiBudW1iZXI7IGFjdHVhbDogbnVtYmVyIH0gfSB8IG51bGwgPT4ge1xuICAgIGlmICghc3B4VmFsaWRhdG9yUmVxdWlyZWQoKShjb250cm9sKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlUGFpclRvVmFsdWUoY29udHJvbC52YWx1ZSkudG9TdHJpbmcoKSwgMTApO1xuICAgICAgICBpZiAoIWlzTmFOKHZhbHVlKSAmJiB2YWx1ZSA+IG1heCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtYXg6IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IHZhbHVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { spxValidatorRequired } from './required.validator';
2
+ import { valuePairToValue } from '@softpak/components/spx-helpers';
3
+ export const spxValidatorMaxLength = (maximumLength, sanitizer) => (control) => {
4
+ if (!spxValidatorRequired()(control)) {
5
+ let value = valuePairToValue(control.value);
6
+ if (sanitizer) {
7
+ value = sanitizer(value.toString());
8
+ }
9
+ if (value.toString().length > maximumLength) {
10
+ return {
11
+ maxlength: {
12
+ requiredLength: maximumLength,
13
+ actualLength: value.toString().length
14
+ }
15
+ };
16
+ }
17
+ }
18
+ return null;
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4bGVuZ3RoLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbi9tYXhsZW5ndGgudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsYUFBcUIsRUFBRSxTQUFxQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQXdCLEVBQTBFLEVBQUU7SUFDeE0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUMxQyxPQUFPO2dCQUNILFNBQVMsRUFBRTtvQkFDUCxjQUFjLEVBQUUsYUFBYTtvQkFDN0IsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO2lCQUN4QzthQUNKLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkIH0gZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xuaW1wb3J0IHsgdmFsdWVQYWlyVG9WYWx1ZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWhlbHBlcnMnO1xuXG5leHBvcnQgY29uc3Qgc3B4VmFsaWRhdG9yTWF4TGVuZ3RoID0gKG1heGltdW1MZW5ndGg6IG51bWJlciwgc2FuaXRpemVyPzogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZykgPT4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgbWF4bGVuZ3RoOiB7IHJlcXVpcmVkTGVuZ3RoOiBudW1iZXI7IGFjdHVhbExlbmd0aDogbnVtYmVyIH0gfSB8IG51bGwgPT4ge1xuICAgIGlmICghc3B4VmFsaWRhdG9yUmVxdWlyZWQoKShjb250cm9sKSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZVBhaXJUb1ZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICBpZiAoc2FuaXRpemVyKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHNhbml0aXplcih2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPiBtYXhpbXVtTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1heGxlbmd0aDoge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZExlbmd0aDogbWF4aW11bUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTGVuZ3RoOiB2YWx1ZS50b1N0cmluZygpLmxlbmd0aFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuIl19
@@ -0,0 +1,17 @@
1
+ import { spxValidatorRequired } from './required.validator';
2
+ import { valuePairToValue } from '@softpak/components/spx-helpers';
3
+ export const spxValidatorMin = (min) => (control) => {
4
+ if (!spxValidatorRequired()(control)) {
5
+ const value = parseInt(valuePairToValue(control.value).toString(), 10);
6
+ if (!isNaN(value) && value < min) {
7
+ return {
8
+ min: {
9
+ min,
10
+ actual: value
11
+ }
12
+ };
13
+ }
14
+ }
15
+ return null;
16
+ };
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbi9taW4udmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUF3QixFQUFtRCxFQUFFO0lBQzFILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2RSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUMvQixPQUFPO2dCQUNILEdBQUcsRUFBRTtvQkFDRCxHQUFHO29CQUNILE1BQU0sRUFBRSxLQUFLO2lCQUNoQjthQUNKLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkIH0gZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xuaW1wb3J0IHsgdmFsdWVQYWlyVG9WYWx1ZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWhlbHBlcnMnO1xuXG5leHBvcnQgY29uc3Qgc3B4VmFsaWRhdG9yTWluID0gKG1pbjogbnVtYmVyKSA9PiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBtaW46IHsgbWluOiBudW1iZXI7IGFjdHVhbDogbnVtYmVyIH0gfSB8IG51bGwgPT4ge1xuICAgIGlmICghc3B4VmFsaWRhdG9yUmVxdWlyZWQoKShjb250cm9sKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlUGFpclRvVmFsdWUoY29udHJvbC52YWx1ZSkudG9TdHJpbmcoKSwgMTApO1xuXG4gICAgICAgIGlmICghaXNOYU4odmFsdWUpICYmIHZhbHVlIDwgbWluKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pbjoge1xuICAgICAgICAgICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdmFsdWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { spxValidatorRequired } from './required.validator';
2
+ import { valuePairToValue } from '@softpak/components/spx-helpers';
3
+ export const spxValidatorMinLength = (minimumLength, sanitizer) => (control) => {
4
+ if (!spxValidatorRequired()(control)) {
5
+ let value = valuePairToValue(control.value);
6
+ if (sanitizer) {
7
+ value = sanitizer(value.toString());
8
+ }
9
+ if (value.toString().length < minimumLength) {
10
+ return {
11
+ minlength: {
12
+ requiredLength: minimumLength,
13
+ actualLength: value.toString().length
14
+ }
15
+ };
16
+ }
17
+ }
18
+ return null;
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlubGVuZ3RoLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbi9taW5sZW5ndGgudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsYUFBcUIsRUFBRSxTQUFxQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQXdCLEVBQTBFLEVBQUU7SUFDeE0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUMxQyxPQUFPO2dCQUNILFNBQVMsRUFBRTtvQkFDUCxjQUFjLEVBQUUsYUFBYTtvQkFDN0IsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNO2lCQUN4QzthQUNKLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkIH0gZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xuaW1wb3J0IHsgdmFsdWVQYWlyVG9WYWx1ZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWhlbHBlcnMnO1xuXG5leHBvcnQgY29uc3Qgc3B4VmFsaWRhdG9yTWluTGVuZ3RoID0gKG1pbmltdW1MZW5ndGg6IG51bWJlciwgc2FuaXRpemVyPzogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZykgPT4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgbWlubGVuZ3RoOiB7IHJlcXVpcmVkTGVuZ3RoOiBudW1iZXI7IGFjdHVhbExlbmd0aDogbnVtYmVyIH0gfSB8IG51bGwgPT4ge1xuICAgIGlmICghc3B4VmFsaWRhdG9yUmVxdWlyZWQoKShjb250cm9sKSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZVBhaXJUb1ZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICBpZiAoc2FuaXRpemVyKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHNhbml0aXplcih2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPCBtaW5pbXVtTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pbmxlbmd0aDoge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZExlbmd0aDogbWluaW11bUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgYWN0dWFsTGVuZ3RoOiB2YWx1ZS50b1N0cmluZygpLmxlbmd0aFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuIl19
@@ -0,0 +1,12 @@
1
+ import { valuePairToValue } from '@softpak/components/spx-helpers';
2
+ import { spxValidatorRequired } from './required.validator';
3
+ export const spxValidatorPattern = (matcher) => (control) => {
4
+ if (!spxValidatorRequired()(control)) {
5
+ const matches = valuePairToValue(control.value).toString().match(matcher);
6
+ if (matches === null || matches.length === 0) {
7
+ return { pattern: true };
8
+ }
9
+ }
10
+ return null;
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXZhbGlkYXRpb24vcGF0dGVybi52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtJQUMxRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUUsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHZhbHVlUGFpclRvVmFsdWUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1oZWxwZXJzJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkIH0gZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xuXG5leHBvcnQgY29uc3Qgc3B4VmFsaWRhdG9yUGF0dGVybiA9IChtYXRjaGVyOiBSZWdFeHApID0+IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgaWYgKCFzcHhWYWxpZGF0b3JSZXF1aXJlZCgpKGNvbnRyb2wpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSB2YWx1ZVBhaXJUb1ZhbHVlKGNvbnRyb2wudmFsdWUpLnRvU3RyaW5nKCkubWF0Y2gobWF0Y2hlcik7XG4gICAgICAgIGlmIChtYXRjaGVzID09PSBudWxsIHx8IG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuIl19
@@ -0,0 +1,10 @@
1
+ export * from './max.validator';
2
+ export * from './maxlength.validator';
3
+ export * from './min.validator';
4
+ export * from './minlength.validator';
5
+ export * from './pattern.validator';
6
+ export * from './required.validator';
7
+ export * from './year-and-month.validator';
8
+ export * from './spx-validate-control.component';
9
+ export * from './spx-validation.module';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXgudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWF4bGVuZ3RoLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL21pbi52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9taW5sZW5ndGgudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcGF0dGVybi52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9yZXF1aXJlZC52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi95ZWFyLWFuZC1tb250aC52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zcHgtdmFsaWRhdGUtY29udHJvbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcHgtdmFsaWRhdGlvbi5tb2R1bGUnO1xuIl19
@@ -0,0 +1,12 @@
1
+ import { valuePairToValue } from '@softpak/components/spx-helpers';
2
+ export const spxValidatorRequired = () => (control) => {
3
+ if (control &&
4
+ valuePairToValue(control.value) === undefined ||
5
+ valuePairToValue(control.value) === null ||
6
+ valuePairToValue(control.value) === '' ||
7
+ valuePairToValue(control.value) === 0) {
8
+ return { required: true };
9
+ }
10
+ return null;
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uL3JlcXVpcmVkLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7SUFDNUYsSUFDSSxPQUFPO1FBQ1AsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVM7UUFDN0MsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUk7UUFDeEMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7UUFDdEMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDdkMsQ0FBQztRQUNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHZhbHVlUGFpclRvVmFsdWUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1oZWxwZXJzJztcblxuZXhwb3J0IGNvbnN0IHNweFZhbGlkYXRvclJlcXVpcmVkID0gKCkgPT4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBpZiAoXG4gICAgICAgIGNvbnRyb2wgJiZcbiAgICAgICAgdmFsdWVQYWlyVG9WYWx1ZShjb250cm9sLnZhbHVlKSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHZhbHVlUGFpclRvVmFsdWUoY29udHJvbC52YWx1ZSkgPT09IG51bGwgfHxcbiAgICAgICAgdmFsdWVQYWlyVG9WYWx1ZShjb250cm9sLnZhbHVlKSA9PT0gJycgfHxcbiAgICAgICAgdmFsdWVQYWlyVG9WYWx1ZShjb250cm9sLnZhbHVlKSA9PT0gMFxuICAgICkge1xuICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHBhay1jb21wb25lbnRzLXNweC12YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uL3NvZnRwYWstY29tcG9uZW50cy1zcHgtdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,63 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class SpxValidateControlComponent {
5
+ get maxLength() {
6
+ return this.control.errors && this.control.errors['maxlength'];
7
+ }
8
+ get maxLengthRequiredLength() {
9
+ return this.maxLength && this.control.errors && this.control.errors['maxlength']['requiredLength'];
10
+ }
11
+ get minLength() {
12
+ return this.control.errors && this.control.errors['minlength'];
13
+ }
14
+ get minLengthRequiredLength() {
15
+ return this.minLength && this.control.errors && this.control.errors['minlength']['requiredLength'];
16
+ }
17
+ get max() {
18
+ return this.control.errors && this.control.errors['max'];
19
+ }
20
+ get maxRequiredMax() {
21
+ return this.max && this.control.errors && this.control.errors['max']['max'];
22
+ }
23
+ get min() {
24
+ return this.control.errors && this.control.errors['min'];
25
+ }
26
+ get minRequiredMin() {
27
+ return this.min && this.control.errors && this.control.errors['min']['min'];
28
+ }
29
+ get pattern() {
30
+ return this.control.errors && this.control.errors['pattern'];
31
+ }
32
+ get required() {
33
+ return this.control.errors && this.control.errors['required'];
34
+ }
35
+ get year() {
36
+ return this.control.errors && this.control.errors['year'];
37
+ }
38
+ get yearFuture() {
39
+ return this.control.errors && this.control.errors['yearFuture'];
40
+ }
41
+ get month() {
42
+ return this.control.errors && this.control.errors['month'];
43
+ }
44
+ get future() {
45
+ return this.control.errors && this.control.errors['future'];
46
+ }
47
+ get past() {
48
+ return this.control.errors && this.control.errors['past'];
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxValidateControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxValidateControlComponent, selector: "spx-validate-control", inputs: { control: "control", label: "label", submitTried: "submitTried" }, ngImport: i0, template: "<ng-container *ngIf=\"control && control.errors && (control.touched || submitTried)\">\n <div *ngIf=\"maxLength\">'{{ label }}' is too long, the maximum length is {{ maxLengthRequiredLength }}.</div>\n <div *ngIf=\"minLength\">'{{ label }}' is too short, the minimum length is {{ minLengthRequiredLength }}.</div>\n <div *ngIf=\"max\">The value of '{{ label }}' is too high, the maximum is {{ maxRequiredMax }}.</div>\n <div *ngIf=\"min\">The value of '{{ label }}' is too low, the minimum is {{ minRequiredMin }}.</div>\n <div *ngIf=\"pattern\">The pattern of '{{ label }}' not valid.</div>\n <div *ngIf=\"required\">'{{ label }}' is required.</div>\n <div *ngIf=\"year\">Please choose a year between 1991 and the current year.</div>\n <div *ngIf=\"yearFuture\">Please choose a year between the current year and 2050.</div>\n <div *ngIf=\"month\">Please choose a valid month (a value between 01 and 12).</div>\n <div *ngIf=\"future\">The selected date may not be in the future.</div>\n <div *ngIf=\"past\">The selected date may not be in the past.</div>\n</ng-container>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxValidateControlComponent, decorators: [{
54
+ type: Component,
55
+ args: [{ selector: 'spx-validate-control', template: "<ng-container *ngIf=\"control && control.errors && (control.touched || submitTried)\">\n <div *ngIf=\"maxLength\">'{{ label }}' is too long, the maximum length is {{ maxLengthRequiredLength }}.</div>\n <div *ngIf=\"minLength\">'{{ label }}' is too short, the minimum length is {{ minLengthRequiredLength }}.</div>\n <div *ngIf=\"max\">The value of '{{ label }}' is too high, the maximum is {{ maxRequiredMax }}.</div>\n <div *ngIf=\"min\">The value of '{{ label }}' is too low, the minimum is {{ minRequiredMin }}.</div>\n <div *ngIf=\"pattern\">The pattern of '{{ label }}' not valid.</div>\n <div *ngIf=\"required\">'{{ label }}' is required.</div>\n <div *ngIf=\"year\">Please choose a year between 1991 and the current year.</div>\n <div *ngIf=\"yearFuture\">Please choose a year between the current year and 2050.</div>\n <div *ngIf=\"month\">Please choose a valid month (a value between 01 and 12).</div>\n <div *ngIf=\"future\">The selected date may not be in the future.</div>\n <div *ngIf=\"past\">The selected date may not be in the past.</div>\n</ng-container>" }]
56
+ }], propDecorators: { control: [{
57
+ type: Input
58
+ }], label: [{
59
+ type: Input
60
+ }], submitTried: [{
61
+ type: Input
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXZhbGlkYXRlLWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uL3NweC12YWxpZGF0ZS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbi9zcHgtdmFsaWRhdGUtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT2pELE1BQU0sT0FBTywyQkFBMkI7SUFLdEMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7OEdBL0RVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLHdJQ1B4Qyw0akNBWWU7OzJGRExGLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSxzQkFBc0I7OEJBSXZCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LXZhbGlkYXRlLWNvbnRyb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3B4LXZhbGlkYXRlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQge1xuICBASW5wdXQoKSBjb250cm9sITogQWJzdHJhY3RDb250cm9sO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5rbm93bjtcbiAgQElucHV0KCkgc3VibWl0VHJpZWQhOiBib29sZWFuO1xuXG4gIGdldCBtYXhMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC5lcnJvcnMgJiYgdGhpcy5jb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ107XG4gIH1cblxuICBnZXQgbWF4TGVuZ3RoUmVxdWlyZWRMZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF4TGVuZ3RoICYmIHRoaXMuY29udHJvbC5lcnJvcnMgJiYgdGhpcy5jb250cm9sLmVycm9yc1snbWF4bGVuZ3RoJ11bJ3JlcXVpcmVkTGVuZ3RoJ107XG4gIH1cblxuICBnZXQgbWluTGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuZXJyb3JzICYmIHRoaXMuY29udHJvbC5lcnJvcnNbJ21pbmxlbmd0aCddO1xuICB9XG5cbiAgZ2V0IG1pbkxlbmd0aFJlcXVpcmVkTGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLm1pbkxlbmd0aCAmJiB0aGlzLmNvbnRyb2wuZXJyb3JzICYmIHRoaXMuY29udHJvbC5lcnJvcnNbJ21pbmxlbmd0aCddWydyZXF1aXJlZExlbmd0aCddO1xuICB9XG5cbiAgZ2V0IG1heCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLmVycm9ycyAmJiB0aGlzLmNvbnRyb2wuZXJyb3JzWydtYXgnXTtcbiAgfVxuXG4gIGdldCBtYXhSZXF1aXJlZE1heCgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXggJiYgdGhpcy5jb250cm9sLmVycm9ycyAmJiB0aGlzLmNvbnRyb2wuZXJyb3JzWydtYXgnXVsnbWF4J107XG4gIH1cblxuICBnZXQgbWluKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuZXJyb3JzICYmIHRoaXMuY29udHJvbC5lcnJvcnNbJ21pbiddO1xuICB9XG5cbiAgZ2V0IG1pblJlcXVpcmVkTWluKCkge1xuICAgIHJldHVybiB0aGlzLm1pbiAmJiB0aGlzLmNvbnRyb2wuZXJyb3JzICYmIHRoaXMuY29udHJvbC5lcnJvcnNbJ21pbiddWydtaW4nXTtcbiAgfVxuXG4gIGdldCBwYXR0ZXJuKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuZXJyb3JzICYmIHRoaXMuY29udHJvbC5lcnJvcnNbJ3BhdHRlcm4nXTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLmVycm9ycyAmJiB0aGlzLmNvbnRyb2wuZXJyb3JzWydyZXF1aXJlZCddO1xuICB9XG5cbiAgZ2V0IHllYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC5lcnJvcnMgJiYgdGhpcy5jb250cm9sLmVycm9yc1sneWVhciddO1xuICB9XG5cbiAgZ2V0IHllYXJGdXR1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC5lcnJvcnMgJiYgdGhpcy5jb250cm9sLmVycm9yc1sneWVhckZ1dHVyZSddO1xuICB9XG5cbiAgZ2V0IG1vbnRoKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuZXJyb3JzICYmIHRoaXMuY29udHJvbC5lcnJvcnNbJ21vbnRoJ107XG4gIH1cblxuICBnZXQgZnV0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuZXJyb3JzICYmIHRoaXMuY29udHJvbC5lcnJvcnNbJ2Z1dHVyZSddO1xuICB9XG5cbiAgZ2V0IHBhc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC5lcnJvcnMgJiYgdGhpcy5jb250cm9sLmVycm9yc1sncGFzdCddO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbCAmJiBjb250cm9sLmVycm9ycyAmJiAoY29udHJvbC50b3VjaGVkIHx8IHN1Ym1pdFRyaWVkKVwiPlxuICA8ZGl2ICpuZ0lmPVwibWF4TGVuZ3RoXCI+J3t7IGxhYmVsIH19JyBpcyB0b28gbG9uZywgdGhlIG1heGltdW0gbGVuZ3RoIGlzIHt7IG1heExlbmd0aFJlcXVpcmVkTGVuZ3RoIH19LjwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwibWluTGVuZ3RoXCI+J3t7IGxhYmVsIH19JyBpcyB0b28gc2hvcnQsIHRoZSBtaW5pbXVtIGxlbmd0aCBpcyB7eyBtaW5MZW5ndGhSZXF1aXJlZExlbmd0aCB9fS48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm1heFwiPlRoZSB2YWx1ZSBvZiAne3sgbGFiZWwgfX0nIGlzIHRvbyBoaWdoLCB0aGUgbWF4aW11bSBpcyB7eyBtYXhSZXF1aXJlZE1heCB9fS48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm1pblwiPlRoZSB2YWx1ZSBvZiAne3sgbGFiZWwgfX0nIGlzIHRvbyBsb3csIHRoZSBtaW5pbXVtIGlzIHt7IG1pblJlcXVpcmVkTWluIH19LjwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwicGF0dGVyblwiPlRoZSBwYXR0ZXJuIG9mICd7eyBsYWJlbCB9fScgbm90IHZhbGlkLjwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwicmVxdWlyZWRcIj4ne3sgbGFiZWwgfX0nIGlzIHJlcXVpcmVkLjwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwieWVhclwiPlBsZWFzZSBjaG9vc2UgYSB5ZWFyIGJldHdlZW4gMTk5MSBhbmQgdGhlIGN1cnJlbnQgeWVhci48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInllYXJGdXR1cmVcIj5QbGVhc2UgY2hvb3NlIGEgeWVhciBiZXR3ZWVuIHRoZSBjdXJyZW50IHllYXIgYW5kIDIwNTAuPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJtb250aFwiPlBsZWFzZSBjaG9vc2UgYSB2YWxpZCBtb250aCAoYSB2YWx1ZSBiZXR3ZWVuIDAxIGFuZCAxMikuPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJmdXR1cmVcIj5UaGUgc2VsZWN0ZWQgZGF0ZSBtYXkgbm90IGJlIGluIHRoZSBmdXR1cmUuPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJwYXN0XCI+VGhlIHNlbGVjdGVkIGRhdGUgbWF5IG5vdCBiZSBpbiB0aGUgcGFzdC48L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { SpxValidateControlComponent } from './spx-validate-control.component';
4
+ import { FormsModule } from '@angular/forms';
5
+ import * as i0 from "@angular/core";
6
+ export class SpxValidationModule {
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxValidationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: SpxValidationModule, declarations: [SpxValidateControlComponent], imports: [CommonModule,
9
+ FormsModule], exports: [SpxValidateControlComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxValidationModule, imports: [CommonModule,
11
+ FormsModule] }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxValidationModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: [
17
+ SpxValidateControlComponent
18
+ ],
19
+ imports: [
20
+ CommonModule,
21
+ FormsModule,
22
+ ],
23
+ exports: [
24
+ SpxValidateControlComponent
25
+ ]
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXZhbGlkYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uL3NweC12YWxpZGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBYzdDLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLGlCQVY1QiwyQkFBMkIsYUFHM0IsWUFBWTtZQUNaLFdBQVcsYUFHWCwyQkFBMkI7K0dBR2xCLG1CQUFtQixZQVA1QixZQUFZO1lBQ1osV0FBVzs7MkZBTUYsbUJBQW1CO2tCQVovQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7cUJBQzVCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQjtxQkFDNUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNweFZhbGlkYXRlQ29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vc3B4LXZhbGlkYXRlLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNweFZhbGlkYXRlQ29udHJvbENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNweFZhbGlkYXRpb25Nb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { DateTime } from 'luxon';
2
+ import { valuePairToValue } from '@softpak/components/spx-helpers';
3
+ import { spxValidatorRequired } from './required.validator';
4
+ export const spxValidatorYearAndMonth = (future) => (control) => {
5
+ if (!spxValidatorRequired()(control)) {
6
+ const val = valuePairToValue(control.value);
7
+ if (val.toUpperCase() !== 'ACEP') {
8
+ const date = DateTime.fromISO(val);
9
+ const year = date.year;
10
+ const month = date.month;
11
+ if (val.length < 6) {
12
+ return {
13
+ minlength: {
14
+ requiredLength: 6,
15
+ actualLength: val.length
16
+ }
17
+ };
18
+ }
19
+ if (month < 1 || month > 12) {
20
+ return { month: true };
21
+ }
22
+ if (future) {
23
+ if (year > 2050 || year < DateTime.now().year) {
24
+ return { yearFuture: true };
25
+ }
26
+ if (DateTime.now().set({ year: year, month: DateTime.now().month - 1 }).startOf('month') < DateTime.now()) {
27
+ return { past: true };
28
+ }
29
+ }
30
+ else {
31
+ if (year < 1971 || year > DateTime.now().year) {
32
+ return { year: true };
33
+ }
34
+ if (DateTime.now().set({ year: year, month: DateTime.now().month - 1 }).startOf('month') > DateTime.now()) {
35
+ return { future: true };
36
+ }
37
+ }
38
+ }
39
+ }
40
+ return null;
41
+ };
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci1hbmQtbW9udGgudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uL3llYXItYW5kLW1vbnRoLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUF3QixFQUEyQixFQUFFO0lBQ2hILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3pCLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDakIsT0FBTztvQkFDSCxTQUFTLEVBQUU7d0JBQ1AsY0FBYyxFQUFFLENBQUM7d0JBQ2pCLFlBQVksRUFBRSxHQUFHLENBQUMsTUFBTTtxQkFDM0I7aUJBQ0osQ0FBQztZQUNOLENBQUM7WUFDRCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNoQyxDQUFDO2dCQUNELElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7b0JBQ3hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQzFCLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsSUFBSSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDeEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyB2YWx1ZVBhaXJUb1ZhbHVlIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycyc7XG5pbXBvcnQgeyBzcHhWYWxpZGF0b3JSZXF1aXJlZCB9IGZyb20gJy4vcmVxdWlyZWQudmFsaWRhdG9yJztcblxuZXhwb3J0IGNvbnN0IHNweFZhbGlkYXRvclllYXJBbmRNb250aCA9IChmdXR1cmU/OiBib29sZWFuKSA9PiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmICghc3B4VmFsaWRhdG9yUmVxdWlyZWQoKShjb250cm9sKSkge1xuICAgICAgICBjb25zdCB2YWwgPSB2YWx1ZVBhaXJUb1ZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICBpZiAodmFsLnRvVXBwZXJDYXNlKCkgIT09ICdBQ0VQJykge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IERhdGVUaW1lLmZyb21JU08odmFsKTtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLnllYXI7XG4gICAgICAgICAgICBjb25zdCBtb250aCA9IGRhdGUubW9udGg7XG4gICAgICAgICAgICBpZiAodmFsLmxlbmd0aCA8IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiA2LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsTGVuZ3RoOiB2YWwubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1vbnRoIDwgMSB8fCBtb250aCA+IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbW9udGg6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmdXR1cmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoeWVhciA+IDIwNTAgfHwgeWVhciA8IERhdGVUaW1lLm5vdygpLnllYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeWVhckZ1dHVyZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoRGF0ZVRpbWUubm93KCkuc2V0KHsgeWVhcjogeWVhciwgbW9udGg6IERhdGVUaW1lLm5vdygpLm1vbnRoIC0gMSB9KS5zdGFydE9mKCdtb250aCcpIDwgRGF0ZVRpbWUubm93KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFzdDogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHllYXIgPCAxOTcxIHx8IHllYXIgPiBEYXRlVGltZS5ub3coKS55ZWFyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHllYXI6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKERhdGVUaW1lLm5vdygpLnNldCh7IHllYXI6IHllYXIsIG1vbnRoOiBEYXRlVGltZS5ub3coKS5tb250aCAtIDEgfSkuc3RhcnRPZignbW9udGgnKSA+IERhdGVUaW1lLm5vdygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGZ1dHVyZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=