@softpak/components 19.17.0-beta.4 → 19.18.0

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 (77) hide show
  1. package/fesm2022/softpak-components-spx-404-page.mjs +47 -0
  2. package/fesm2022/softpak-components-spx-404-page.mjs.map +1 -0
  3. package/fesm2022/softpak-components-spx-alert.mjs +6 -7
  4. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -1
  5. package/fesm2022/softpak-components-spx-app-expiry.mjs +91 -23
  6. package/fesm2022/softpak-components-spx-app-expiry.mjs.map +1 -1
  7. package/fesm2022/softpak-components-spx-button.mjs +22 -8
  8. package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
  9. package/fesm2022/softpak-components-spx-card.mjs +88 -17
  10. package/fesm2022/softpak-components-spx-card.mjs.map +1 -1
  11. package/fesm2022/softpak-components-spx-change-details.mjs +64 -48
  12. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  13. package/fesm2022/softpak-components-spx-check-digit.mjs +28 -24
  14. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  15. package/fesm2022/softpak-components-spx-confirm.mjs.map +1 -1
  16. package/fesm2022/softpak-components-spx-form-section.mjs +33 -8
  17. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  18. package/fesm2022/softpak-components-spx-form-view.mjs +53 -39
  19. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  20. package/fesm2022/softpak-components-spx-inputs.mjs +6 -15
  21. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  22. package/fesm2022/softpak-components-spx-navigation.mjs +89 -34
  23. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  24. package/fesm2022/softpak-components-spx-number-check.mjs +198 -91
  25. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -1
  26. package/fesm2022/softpak-components-spx-pagination.mjs +21 -12
  27. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -1
  28. package/fesm2022/softpak-components-spx-patch.mjs +39 -8
  29. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -1
  30. package/fesm2022/softpak-components-spx-progress-bar.mjs +22 -8
  31. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -1
  32. package/fesm2022/softpak-components-spx-spinner.mjs +160 -15
  33. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -1
  34. package/fesm2022/softpak-components-spx-stock-info.mjs +128 -71
  35. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  36. package/fesm2022/softpak-components-spx-toaster.mjs +163 -36
  37. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -1
  38. package/fesm2022/softpak-components-spx-translate.mjs +13 -1
  39. package/fesm2022/softpak-components-spx-translate.mjs.map +1 -1
  40. package/fesm2022/softpak-components-spx-update.mjs +3 -3
  41. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  42. package/fesm2022/softpak-components-spx-validation.mjs +55 -56
  43. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -1
  44. package/package.json +36 -32
  45. package/spx-404-page/index.d.ts +5 -0
  46. package/spx-404-page/public-api.d.ts +1 -0
  47. package/spx-404-page/spx-404-page.component.d.ts +15 -0
  48. package/spx-alert/spx-alert.component.d.ts +1 -1
  49. package/spx-app-expiry/spx-app-expiry.component.d.ts +14 -14
  50. package/spx-button/spx-button.component.d.ts +3 -0
  51. package/spx-card/spx-card-item/spx-card-item.component.d.ts +1 -0
  52. package/spx-card/spx-card.component.d.ts +9 -8
  53. package/spx-change-details/spx-change-details.component.d.ts +23 -22
  54. package/spx-check-digit/spx-check-digit.component.d.ts +9 -9
  55. package/spx-form-section/spx-form-section.component.d.ts +5 -5
  56. package/spx-form-view/spx-autocomplete-search.component.d.ts +16 -15
  57. package/spx-form-view/spx-form-view.component.d.ts +1 -1
  58. package/spx-inputs/spx-input-text/spx-input-text.component.d.ts +1 -4
  59. package/spx-inputs/spx-input.component.d.ts +0 -1
  60. package/spx-navigation/public-api.d.ts +2 -2
  61. package/spx-navigation/spx-home-tile.component.d.ts +11 -0
  62. package/spx-navigation/{spx-home-tile/spx-home-tiles.component.d.ts → spx-home-tiles.component.d.ts} +2 -2
  63. package/spx-navigation/spx-navigation.component.d.ts +8 -11
  64. package/spx-number-check/spx-number-check.component.d.ts +32 -26
  65. package/spx-pagination/spx-pagination.component.d.ts +10 -9
  66. package/spx-patch/spx-patch.component.d.ts +4 -4
  67. package/spx-progress-bar/spx-progress-bar.component.d.ts +3 -3
  68. package/spx-spinner/spx-spinner.component.d.ts +3 -3
  69. package/spx-stock-info/spx-stock-info.component.d.ts +49 -48
  70. package/spx-toaster/src/spx-toaster-message.interface.d.ts +1 -5
  71. package/spx-toaster/src/spx-toaster.component.d.ts +14 -6
  72. package/spx-translate/spx-translate._const.d.ts +8 -0
  73. package/spx-update/store/spx-update-check/spx-update-check.actions.d.ts +5 -5
  74. package/spx-update/store/spx-update-pending/spx-update-pending.actions.d.ts +1 -1
  75. package/spx-validation/spx-validate-control.component.d.ts +20 -22
  76. package/tailwind.css +1 -1
  77. package/spx-navigation/spx-home-tile/spx-home-tile.component.d.ts +0 -11
@@ -1,7 +1,7 @@
1
1
  import { valuePairToValue } from '@softpak/components/spx-helpers';
2
2
  import { DateTime } from 'luxon';
3
3
  import * as i0 from '@angular/core';
4
- import { input, computed, Component, ChangeDetectionStrategy } from '@angular/core';
4
+ import { Component, Input } from '@angular/core';
5
5
  import { FormsModule } from '@angular/forms';
6
6
 
7
7
  const spxValidatorRequired = () => (control) => {
@@ -131,67 +131,66 @@ const spxValidatorYearAndMonth = (future) => (control) => {
131
131
  };
132
132
 
133
133
  class SpxValidateControlComponent {
134
- constructor() {
135
- this.control = input.required();
136
- this.label = input();
137
- this.submitTried = input();
138
- this.errors = input.required();
139
- this.touched = input.required();
140
- this.maxLength = computed(() => {
141
- return this.errors() && this.errors()['maxlength'];
142
- });
143
- this.maxLengthRequiredLength = computed(() => {
144
- return this.maxLength() && this.errors() && this.errors()['maxlength']['requiredLength'];
145
- });
146
- this.minLength = computed(() => {
147
- return this.errors() && this.errors()['minlength'];
148
- });
149
- this.minLengthRequiredLength = computed(() => {
150
- return this.minLength() && this.errors() && this.errors()['minlength']['requiredLength'];
151
- });
152
- this.max = computed(() => {
153
- return this.errors() && this.errors()['max'];
154
- });
155
- this.maxRequiredMax = computed(() => {
156
- return this.max() && this.errors() && this.errors()['max']['max'];
157
- });
158
- this.min = computed(() => {
159
- return this.errors() && this.errors()['min'];
160
- });
161
- this.minRequiredMin = computed(() => {
162
- return this.min() && this.errors() && this.errors()['min']['min'];
163
- });
164
- this.pattern = computed(() => {
165
- return this.errors() && this.errors()['pattern'];
166
- });
167
- this.required = computed(() => {
168
- return this.errors() && this.errors()['required'];
169
- });
170
- this.year = computed(() => {
171
- return this.errors() && this.errors()['year'];
172
- });
173
- this.yearFuture = computed(() => {
174
- return this.errors() && this.errors()['yearFuture'];
175
- });
176
- this.month = computed(() => {
177
- return this.errors() && this.errors()['month'];
178
- });
179
- this.future = computed(() => {
180
- return this.errors() && this.errors()['future'];
181
- });
182
- this.past = computed(() => {
183
- return this.errors() && this.errors()['past'];
184
- });
134
+ get maxLength() {
135
+ return this.control.errors && this.control.errors['maxlength'];
136
+ }
137
+ get maxLengthRequiredLength() {
138
+ return this.maxLength && this.control.errors && this.control.errors['maxlength']['requiredLength'];
139
+ }
140
+ get minLength() {
141
+ return this.control.errors && this.control.errors['minlength'];
142
+ }
143
+ get minLengthRequiredLength() {
144
+ return this.minLength && this.control.errors && this.control.errors['minlength']['requiredLength'];
145
+ }
146
+ get max() {
147
+ return this.control.errors && this.control.errors['max'];
148
+ }
149
+ get maxRequiredMax() {
150
+ return this.max && this.control.errors && this.control.errors['max']['max'];
151
+ }
152
+ get min() {
153
+ return this.control.errors && this.control.errors['min'];
154
+ }
155
+ get minRequiredMin() {
156
+ return this.min && this.control.errors && this.control.errors['min']['min'];
157
+ }
158
+ get pattern() {
159
+ return this.control.errors && this.control.errors['pattern'];
160
+ }
161
+ get required() {
162
+ return this.control.errors && this.control.errors['required'];
163
+ }
164
+ get year() {
165
+ return this.control.errors && this.control.errors['year'];
166
+ }
167
+ get yearFuture() {
168
+ return this.control.errors && this.control.errors['yearFuture'];
169
+ }
170
+ get month() {
171
+ return this.control.errors && this.control.errors['month'];
172
+ }
173
+ get future() {
174
+ return this.control.errors && this.control.errors['future'];
175
+ }
176
+ get past() {
177
+ return this.control.errors && this.control.errors['past'];
185
178
  }
186
179
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SpxValidateControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: SpxValidateControlComponent, isStandalone: true, selector: "spx-validate-control", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, submitTried: { classPropertyName: "submitTried", publicName: "submitTried", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: true, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@if (control() && errors() && (touched() || submitTried())) {\r\n @if (maxLength()) {\r\n <div>'{{ label() }}' is too long, the maximum length is {{ maxLengthRequiredLength() }}.</div>\r\n }\r\n @if (minLength()) {\r\n <div>'{{ label() }}' is too short, the minimum length is {{ minLengthRequiredLength() }}.</div>\r\n }\r\n @if (max()) {\r\n <div>The value of '{{ label() }}' is too high, the maximum is {{ maxRequiredMax() }}.</div>\r\n }\r\n @if (min()) {\r\n <div>The value of '{{ label() }}' is too low, the minimum is {{ minRequiredMin() }}.</div>\r\n }\r\n @if (pattern()) {\r\n <div>The pattern of '{{ label() }}' not valid.</div>\r\n }\r\n @if (required()) {\r\n <div>'{{ label() }}' is required.</div>\r\n }\r\n @if (year()) {\r\n <div>Please choose a year between 1991 and the current year.</div>\r\n }\r\n @if (yearFuture()) {\r\n <div>Please choose a year between the current year and 2050.</div>\r\n }\r\n @if (month()) {\r\n <div>Please choose a valid month (a value between 01 and 12).</div>\r\n }\r\n @if (future()) {\r\n <div>The selected date may not be in the future.</div>\r\n }\r\n @if (past()) {\r\n <div>The selected date may not be in the past.</div>\r\n }\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
180
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: SpxValidateControlComponent, isStandalone: true, selector: "spx-validate-control", inputs: { control: "control", label: "label", submitTried: "submitTried" }, ngImport: i0, template: "@if (control && control.errors && (control.touched || submitTried)) {\r\n @if (maxLength) {\r\n <div>'{{ label }}' is too long, the maximum length is {{ maxLengthRequiredLength }}.</div>\r\n }\r\n @if (minLength) {\r\n <div>'{{ label }}' is too short, the minimum length is {{ minLengthRequiredLength }}.</div>\r\n }\r\n @if (max) {\r\n <div>The value of '{{ label }}' is too high, the maximum is {{ maxRequiredMax }}.</div>\r\n }\r\n @if (min) {\r\n <div>The value of '{{ label }}' is too low, the minimum is {{ minRequiredMin }}.</div>\r\n }\r\n @if (pattern) {\r\n <div>The pattern of '{{ label }}' not valid.</div>\r\n }\r\n @if (required) {\r\n <div>'{{ label }}' is required.</div>\r\n }\r\n @if (year) {\r\n <div>Please choose a year between 1991 and the current year.</div>\r\n }\r\n @if (yearFuture) {\r\n <div>Please choose a year between the current year and 2050.</div>\r\n }\r\n @if (month) {\r\n <div>Please choose a valid month (a value between 01 and 12).</div>\r\n }\r\n @if (future) {\r\n <div>The selected date may not be in the future.</div>\r\n }\r\n @if (past) {\r\n <div>The selected date may not be in the past.</div>\r\n }\r\n}", dependencies: [{ kind: "ngmodule", type: FormsModule }] }); }
188
181
  }
189
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SpxValidateControlComponent, decorators: [{
190
183
  type: Component,
191
184
  args: [{ selector: 'spx-validate-control', imports: [
192
- FormsModule,
193
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (control() && errors() && (touched() || submitTried())) {\r\n @if (maxLength()) {\r\n <div>'{{ label() }}' is too long, the maximum length is {{ maxLengthRequiredLength() }}.</div>\r\n }\r\n @if (minLength()) {\r\n <div>'{{ label() }}' is too short, the minimum length is {{ minLengthRequiredLength() }}.</div>\r\n }\r\n @if (max()) {\r\n <div>The value of '{{ label() }}' is too high, the maximum is {{ maxRequiredMax() }}.</div>\r\n }\r\n @if (min()) {\r\n <div>The value of '{{ label() }}' is too low, the minimum is {{ minRequiredMin() }}.</div>\r\n }\r\n @if (pattern()) {\r\n <div>The pattern of '{{ label() }}' not valid.</div>\r\n }\r\n @if (required()) {\r\n <div>'{{ label() }}' is required.</div>\r\n }\r\n @if (year()) {\r\n <div>Please choose a year between 1991 and the current year.</div>\r\n }\r\n @if (yearFuture()) {\r\n <div>Please choose a year between the current year and 2050.</div>\r\n }\r\n @if (month()) {\r\n <div>Please choose a valid month (a value between 01 and 12).</div>\r\n }\r\n @if (future()) {\r\n <div>The selected date may not be in the future.</div>\r\n }\r\n @if (past()) {\r\n <div>The selected date may not be in the past.</div>\r\n }\r\n}\r\n" }]
194
- }] });
185
+ FormsModule
186
+ ], template: "@if (control && control.errors && (control.touched || submitTried)) {\r\n @if (maxLength) {\r\n <div>'{{ label }}' is too long, the maximum length is {{ maxLengthRequiredLength }}.</div>\r\n }\r\n @if (minLength) {\r\n <div>'{{ label }}' is too short, the minimum length is {{ minLengthRequiredLength }}.</div>\r\n }\r\n @if (max) {\r\n <div>The value of '{{ label }}' is too high, the maximum is {{ maxRequiredMax }}.</div>\r\n }\r\n @if (min) {\r\n <div>The value of '{{ label }}' is too low, the minimum is {{ minRequiredMin }}.</div>\r\n }\r\n @if (pattern) {\r\n <div>The pattern of '{{ label }}' not valid.</div>\r\n }\r\n @if (required) {\r\n <div>'{{ label }}' is required.</div>\r\n }\r\n @if (year) {\r\n <div>Please choose a year between 1991 and the current year.</div>\r\n }\r\n @if (yearFuture) {\r\n <div>Please choose a year between the current year and 2050.</div>\r\n }\r\n @if (month) {\r\n <div>Please choose a valid month (a value between 01 and 12).</div>\r\n }\r\n @if (future) {\r\n <div>The selected date may not be in the future.</div>\r\n }\r\n @if (past) {\r\n <div>The selected date may not be in the past.</div>\r\n }\r\n}" }]
187
+ }], propDecorators: { control: [{
188
+ type: Input
189
+ }], label: [{
190
+ type: Input
191
+ }], submitTried: [{
192
+ type: Input
193
+ }] } });
195
194
 
196
195
  /**
197
196
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-validation.mjs","sources":["../../../../projects/softpak/components/spx-validation/required.validator.ts","../../../../projects/softpak/components/spx-validation/max.validator.ts","../../../../projects/softpak/components/spx-validation/maxlength.validator.ts","../../../../projects/softpak/components/spx-validation/min.validator.ts","../../../../projects/softpak/components/spx-validation/minlength.validator.ts","../../../../projects/softpak/components/spx-validation/pattern.validator.ts","../../../../projects/softpak/components/spx-validation/year-and-month.validator.ts","../../../../projects/softpak/components/spx-validation/spx-validate-control.component.ts","../../../../projects/softpak/components/spx-validation/spx-validate-control.component.html","../../../../projects/softpak/components/spx-validation/softpak-components-spx-validation.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorRequired = () => (control: AbstractControl): ValidationErrors | null => {\r\n if (\r\n control &&\r\n valuePairToValue(control.value) === undefined ||\r\n valuePairToValue(control.value) === null ||\r\n valuePairToValue(control.value) === '' ||\r\n valuePairToValue(control.value) === 0\r\n ) {\r\n return { required: true };\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMax = (max: number) => (control: AbstractControl): { max: { max: number; actual: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const value = parseInt(valuePairToValue(control.value).toString(), 10);\r\n if (!isNaN(value) && value > max) {\r\n return {\r\n max: {\r\n max,\r\n actual: value\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMaxLength = (maximumLength: number, sanitizer?: (input: string) => string) => (control: AbstractControl): { maxlength: { requiredLength: number; actualLength: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n let value = valuePairToValue(control.value);\r\n if (sanitizer) {\r\n value = sanitizer(value.toString());\r\n }\r\n if (value.toString().length > maximumLength) {\r\n return {\r\n maxlength: {\r\n requiredLength: maximumLength,\r\n actualLength: value.toString().length\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMin = (min: number) => (control: AbstractControl): { min: { min: number; actual: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const value = parseInt(valuePairToValue(control.value).toString(), 10);\r\n\r\n if (!isNaN(value) && value < min) {\r\n return {\r\n min: {\r\n min,\r\n actual: value\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMinLength = (minimumLength: number, sanitizer?: (input: string) => string) => (control: AbstractControl): { minlength: { requiredLength: number; actualLength: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n let value = valuePairToValue(control.value);\r\n if (sanitizer) {\r\n value = sanitizer(value.toString());\r\n }\r\n if (value.toString().length < minimumLength) {\r\n return {\r\n minlength: {\r\n requiredLength: minimumLength,\r\n actualLength: value.toString().length\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { spxValidatorRequired } from './required.validator';\r\n\r\nexport const spxValidatorPattern = (matcher: RegExp) => (control: AbstractControl): ValidationErrors | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const matches = valuePairToValue(control.value).toString().match(matcher);\r\n if (matches === null || matches.length === 0) {\r\n return { pattern: true };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\r\n\r\nimport { DateTime } from 'luxon';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { spxValidatorRequired } from './required.validator';\r\n\r\nexport const spxValidatorYearAndMonth = (future?: boolean) => (control: AbstractControl): ValidationErrors | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const val = valuePairToValue(control.value);\r\n if (val.toUpperCase() !== 'ACEP') {\r\n const date = DateTime.fromISO(val);\r\n const year = date.year;\r\n const month = date.month;\r\n if (val.length < 6) {\r\n return {\r\n minlength: {\r\n requiredLength: 6,\r\n actualLength: val.length\r\n }\r\n };\r\n }\r\n if (month < 1 || month > 12) {\r\n return { month: true };\r\n }\r\n if (future) {\r\n if (year > 2050 || year < DateTime.now().year) {\r\n return { yearFuture: true };\r\n }\r\n if (DateTime.now().set({ year: year, month: DateTime.now().month - 1 }).startOf('month') < DateTime.now()) {\r\n return { past: true };\r\n }\r\n } else {\r\n if (year < 1971 || year > DateTime.now().year) {\r\n return { year: true };\r\n }\r\n if (DateTime.now().set({ year: year, month: DateTime.now().month - 1 }).startOf('month') > DateTime.now()) {\r\n return { future: true };\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n","\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { AbstractControl, FormsModule, ValidationErrors } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spx-validate-control',\r\n templateUrl: './spx-validate-control.component.html',\r\n imports: [\r\n FormsModule,\r\n ],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpxValidateControlComponent {\r\n readonly control = input.required<AbstractControl>();\r\n readonly label = input<string | unknown>();\r\n readonly submitTried = input<boolean>();\r\n readonly errors = input.required<ValidationErrors | null>();\r\n readonly touched = input.required<boolean>();\r\n\r\n maxLength = computed(() => {\r\n return this.errors() && this.errors()!['maxlength'];\r\n });\r\n\r\n maxLengthRequiredLength = computed(() => {\r\n return this.maxLength() && this.errors() && this.errors()!['maxlength']['requiredLength'];\r\n });\r\n\r\n minLength = computed(() => {\r\n return this.errors() && this.errors()!['minlength'];\r\n });\r\n\r\n minLengthRequiredLength = computed(() => {\r\n return this.minLength() && this.errors() && this.errors()!['minlength']['requiredLength'];\r\n });\r\n\r\n max = computed(() => {\r\n return this.errors() && this.errors()!['max'];\r\n });\r\n\r\n maxRequiredMax = computed(() => {\r\n return this.max() && this.errors() && this.errors()!['max']['max'];\r\n });\r\n\r\n min = computed(() => {\r\n return this.errors() && this.errors()!['min'];\r\n });\r\n\r\n minRequiredMin = computed(() => {\r\n return this.min() && this.errors() && this.errors()!['min']['min'];\r\n });\r\n\r\n pattern = computed(() => {\r\n return this.errors() && this.errors()!['pattern'];\r\n });\r\n\r\n required = computed(() => {\r\n return this.errors() && this.errors()!['required'];\r\n });\r\n\r\n year = computed(() => {\r\n return this.errors() && this.errors()!['year'];\r\n });\r\n\r\n yearFuture = computed(() => {\r\n return this.errors() && this.errors()!['yearFuture'];\r\n });\r\n\r\n month = computed(() => {\r\n return this.errors() && this.errors()!['month'];\r\n });\r\n\r\n future = computed(() => {\r\n return this.errors() && this.errors()!['future'];\r\n });\r\n\r\n past = computed(() => {\r\n return this.errors() && this.errors()!['past'];\r\n });\r\n}\r\n","@if (control() && errors() && (touched() || submitTried())) {\r\n @if (maxLength()) {\r\n <div>'{{ label() }}' is too long, the maximum length is {{ maxLengthRequiredLength() }}.</div>\r\n }\r\n @if (minLength()) {\r\n <div>'{{ label() }}' is too short, the minimum length is {{ minLengthRequiredLength() }}.</div>\r\n }\r\n @if (max()) {\r\n <div>The value of '{{ label() }}' is too high, the maximum is {{ maxRequiredMax() }}.</div>\r\n }\r\n @if (min()) {\r\n <div>The value of '{{ label() }}' is too low, the minimum is {{ minRequiredMin() }}.</div>\r\n }\r\n @if (pattern()) {\r\n <div>The pattern of '{{ label() }}' not valid.</div>\r\n }\r\n @if (required()) {\r\n <div>'{{ label() }}' is required.</div>\r\n }\r\n @if (year()) {\r\n <div>Please choose a year between 1991 and the current year.</div>\r\n }\r\n @if (yearFuture()) {\r\n <div>Please choose a year between the current year and 2050.</div>\r\n }\r\n @if (month()) {\r\n <div>Please choose a valid month (a value between 01 and 12).</div>\r\n }\r\n @if (future()) {\r\n <div>The selected date may not be in the future.</div>\r\n }\r\n @if (past()) {\r\n <div>The selected date may not be in the past.</div>\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"softpak-components-spx-validation.mjs","sources":["../../../../projects/softpak/components/spx-validation/required.validator.ts","../../../../projects/softpak/components/spx-validation/max.validator.ts","../../../../projects/softpak/components/spx-validation/maxlength.validator.ts","../../../../projects/softpak/components/spx-validation/min.validator.ts","../../../../projects/softpak/components/spx-validation/minlength.validator.ts","../../../../projects/softpak/components/spx-validation/pattern.validator.ts","../../../../projects/softpak/components/spx-validation/year-and-month.validator.ts","../../../../projects/softpak/components/spx-validation/spx-validate-control.component.ts","../../../../projects/softpak/components/spx-validation/spx-validate-control.component.html","../../../../projects/softpak/components/spx-validation/softpak-components-spx-validation.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorRequired = () => (control: AbstractControl): ValidationErrors | null => {\r\n if (\r\n control &&\r\n valuePairToValue(control.value) === undefined ||\r\n valuePairToValue(control.value) === null ||\r\n valuePairToValue(control.value) === '' ||\r\n valuePairToValue(control.value) === 0\r\n ) {\r\n return { required: true };\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMax = (max: number) => (control: AbstractControl): { max: { max: number; actual: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const value = parseInt(valuePairToValue(control.value).toString(), 10);\r\n if (!isNaN(value) && value > max) {\r\n return {\r\n max: {\r\n max,\r\n actual: value\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMaxLength = (maximumLength: number, sanitizer?: (input: string) => string) => (control: AbstractControl): { maxlength: { requiredLength: number; actualLength: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n let value = valuePairToValue(control.value);\r\n if (sanitizer) {\r\n value = sanitizer(value.toString());\r\n }\r\n if (value.toString().length > maximumLength) {\r\n return {\r\n maxlength: {\r\n requiredLength: maximumLength,\r\n actualLength: value.toString().length\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMin = (min: number) => (control: AbstractControl): { min: { min: number; actual: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const value = parseInt(valuePairToValue(control.value).toString(), 10);\r\n\r\n if (!isNaN(value) && value < min) {\r\n return {\r\n min: {\r\n min,\r\n actual: value\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { spxValidatorRequired } from './required.validator';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\n\r\nexport const spxValidatorMinLength = (minimumLength: number, sanitizer?: (input: string) => string) => (control: AbstractControl): { minlength: { requiredLength: number; actualLength: number } } | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n let value = valuePairToValue(control.value);\r\n if (sanitizer) {\r\n value = sanitizer(value.toString());\r\n }\r\n if (value.toString().length < minimumLength) {\r\n return {\r\n minlength: {\r\n requiredLength: minimumLength,\r\n actualLength: value.toString().length\r\n }\r\n };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { spxValidatorRequired } from './required.validator';\r\n\r\nexport const spxValidatorPattern = (matcher: RegExp) => (control: AbstractControl): ValidationErrors | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const matches = valuePairToValue(control.value).toString().match(matcher);\r\n if (matches === null || matches.length === 0) {\r\n return { pattern: true };\r\n }\r\n }\r\n return null;\r\n};\r\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\r\n\r\nimport { DateTime } from 'luxon';\r\nimport { valuePairToValue } from '@softpak/components/spx-helpers';\r\nimport { spxValidatorRequired } from './required.validator';\r\n\r\nexport const spxValidatorYearAndMonth = (future?: boolean) => (control: AbstractControl): ValidationErrors | null => {\r\n if (!spxValidatorRequired()(control)) {\r\n const val = valuePairToValue(control.value);\r\n if (val.toUpperCase() !== 'ACEP') {\r\n const date = DateTime.fromISO(val);\r\n const year = date.year;\r\n const month = date.month;\r\n if (val.length < 6) {\r\n return {\r\n minlength: {\r\n requiredLength: 6,\r\n actualLength: val.length\r\n }\r\n };\r\n }\r\n if (month < 1 || month > 12) {\r\n return { month: true };\r\n }\r\n if (future) {\r\n if (year > 2050 || year < DateTime.now().year) {\r\n return { yearFuture: true };\r\n }\r\n if (DateTime.now().set({ year: year, month: DateTime.now().month - 1 }).startOf('month') < DateTime.now()) {\r\n return { past: true };\r\n }\r\n } else {\r\n if (year < 1971 || year > DateTime.now().year) {\r\n return { year: true };\r\n }\r\n if (DateTime.now().set({ year: year, month: DateTime.now().month - 1 }).startOf('month') > DateTime.now()) {\r\n return { future: true };\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n","\r\nimport { Component, Input } from '@angular/core';\r\nimport { AbstractControl, FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spx-validate-control',\r\n templateUrl: './spx-validate-control.component.html',\r\n imports: [\r\n FormsModule\r\n ]\r\n})\r\nexport class SpxValidateControlComponent {\r\n @Input() control!: AbstractControl;\r\n @Input() label: string | unknown;\r\n @Input() submitTried!: boolean;\r\n\r\n get maxLength() {\r\n return this.control.errors && this.control.errors['maxlength'];\r\n }\r\n\r\n get maxLengthRequiredLength() {\r\n return this.maxLength && this.control.errors && this.control.errors['maxlength']['requiredLength'];\r\n }\r\n\r\n get minLength() {\r\n return this.control.errors && this.control.errors['minlength'];\r\n }\r\n\r\n get minLengthRequiredLength() {\r\n return this.minLength && this.control.errors && this.control.errors['minlength']['requiredLength'];\r\n }\r\n\r\n get max() {\r\n return this.control.errors && this.control.errors['max'];\r\n }\r\n\r\n get maxRequiredMax() {\r\n return this.max && this.control.errors && this.control.errors['max']['max'];\r\n }\r\n\r\n get min() {\r\n return this.control.errors && this.control.errors['min'];\r\n }\r\n\r\n get minRequiredMin() {\r\n return this.min && this.control.errors && this.control.errors['min']['min'];\r\n }\r\n\r\n get pattern() {\r\n return this.control.errors && this.control.errors['pattern'];\r\n }\r\n\r\n get required() {\r\n return this.control.errors && this.control.errors['required'];\r\n }\r\n\r\n get year() {\r\n return this.control.errors && this.control.errors['year'];\r\n }\r\n\r\n get yearFuture() {\r\n return this.control.errors && this.control.errors['yearFuture'];\r\n }\r\n\r\n get month() {\r\n return this.control.errors && this.control.errors['month'];\r\n }\r\n\r\n get future() {\r\n return this.control.errors && this.control.errors['future'];\r\n }\r\n\r\n get past() {\r\n return this.control.errors && this.control.errors['past'];\r\n }\r\n}\r\n","@if (control && control.errors && (control.touched || submitTried)) {\r\n @if (maxLength) {\r\n <div>'{{ label }}' is too long, the maximum length is {{ maxLengthRequiredLength }}.</div>\r\n }\r\n @if (minLength) {\r\n <div>'{{ label }}' is too short, the minimum length is {{ minLengthRequiredLength }}.</div>\r\n }\r\n @if (max) {\r\n <div>The value of '{{ label }}' is too high, the maximum is {{ maxRequiredMax }}.</div>\r\n }\r\n @if (min) {\r\n <div>The value of '{{ label }}' is too low, the minimum is {{ minRequiredMin }}.</div>\r\n }\r\n @if (pattern) {\r\n <div>The pattern of '{{ label }}' not valid.</div>\r\n }\r\n @if (required) {\r\n <div>'{{ label }}' is required.</div>\r\n }\r\n @if (year) {\r\n <div>Please choose a year between 1991 and the current year.</div>\r\n }\r\n @if (yearFuture) {\r\n <div>Please choose a year between the current year and 2050.</div>\r\n }\r\n @if (month) {\r\n <div>Please choose a valid month (a value between 01 and 12).</div>\r\n }\r\n @if (future) {\r\n <div>The selected date may not be in the future.</div>\r\n }\r\n @if (past) {\r\n <div>The selected date may not be in the past.</div>\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softpak/components",
3
- "version": "19.17.0-beta.4",
3
+ "version": "19.18.0",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "19.x.x",
@@ -29,9 +29,9 @@
29
29
  "types": "./index.d.ts",
30
30
  "default": "./fesm2022/softpak-components.mjs"
31
31
  },
32
- "./spx-app-configuration": {
33
- "types": "./spx-app-configuration/index.d.ts",
34
- "default": "./fesm2022/softpak-components-spx-app-configuration.mjs"
32
+ "./spx-404-page": {
33
+ "types": "./spx-404-page/index.d.ts",
34
+ "default": "./fesm2022/softpak-components-spx-404-page.mjs"
35
35
  },
36
36
  "./spx-alert": {
37
37
  "types": "./spx-alert/index.d.ts",
@@ -41,34 +41,38 @@
41
41
  "types": "./spx-button/index.d.ts",
42
42
  "default": "./fesm2022/softpak-components-spx-button.mjs"
43
43
  },
44
- "./spx-capitalize": {
45
- "types": "./spx-capitalize/index.d.ts",
46
- "default": "./fesm2022/softpak-components-spx-capitalize.mjs"
47
- },
48
44
  "./spx-app-expiry": {
49
45
  "types": "./spx-app-expiry/index.d.ts",
50
46
  "default": "./fesm2022/softpak-components-spx-app-expiry.mjs"
51
47
  },
48
+ "./spx-app-configuration": {
49
+ "types": "./spx-app-configuration/index.d.ts",
50
+ "default": "./fesm2022/softpak-components-spx-app-configuration.mjs"
51
+ },
52
+ "./spx-capitalize": {
53
+ "types": "./spx-capitalize/index.d.ts",
54
+ "default": "./fesm2022/softpak-components-spx-capitalize.mjs"
55
+ },
52
56
  "./spx-change-details": {
53
57
  "types": "./spx-change-details/index.d.ts",
54
58
  "default": "./fesm2022/softpak-components-spx-change-details.mjs"
55
59
  },
56
- "./spx-check-digit": {
57
- "types": "./spx-check-digit/index.d.ts",
58
- "default": "./fesm2022/softpak-components-spx-check-digit.mjs"
59
- },
60
60
  "./spx-card": {
61
61
  "types": "./spx-card/index.d.ts",
62
62
  "default": "./fesm2022/softpak-components-spx-card.mjs"
63
63
  },
64
- "./spx-confirm": {
65
- "types": "./spx-confirm/index.d.ts",
66
- "default": "./fesm2022/softpak-components-spx-confirm.mjs"
67
- },
68
64
  "./spx-channel-selection": {
69
65
  "types": "./spx-channel-selection/index.d.ts",
70
66
  "default": "./fesm2022/softpak-components-spx-channel-selection.mjs"
71
67
  },
68
+ "./spx-check-digit": {
69
+ "types": "./spx-check-digit/index.d.ts",
70
+ "default": "./fesm2022/softpak-components-spx-check-digit.mjs"
71
+ },
72
+ "./spx-confirm": {
73
+ "types": "./spx-confirm/index.d.ts",
74
+ "default": "./fesm2022/softpak-components-spx-confirm.mjs"
75
+ },
72
76
  "./spx-form-section": {
73
77
  "types": "./spx-form-section/index.d.ts",
74
78
  "default": "./fesm2022/softpak-components-spx-form-section.mjs"
@@ -81,21 +85,25 @@
81
85
  "types": "./spx-helpers/index.d.ts",
82
86
  "default": "./fesm2022/softpak-components-spx-helpers.mjs"
83
87
  },
88
+ "./spx-navigation": {
89
+ "types": "./spx-navigation/index.d.ts",
90
+ "default": "./fesm2022/softpak-components-spx-navigation.mjs"
91
+ },
84
92
  "./spx-inputs": {
85
93
  "types": "./spx-inputs/index.d.ts",
86
94
  "default": "./fesm2022/softpak-components-spx-inputs.mjs"
87
95
  },
88
- "./spx-navigation": {
89
- "types": "./spx-navigation/index.d.ts",
90
- "default": "./fesm2022/softpak-components-spx-navigation.mjs"
96
+ "./spx-number-check": {
97
+ "types": "./spx-number-check/index.d.ts",
98
+ "default": "./fesm2022/softpak-components-spx-number-check.mjs"
91
99
  },
92
100
  "./spx-pagination": {
93
101
  "types": "./spx-pagination/index.d.ts",
94
102
  "default": "./fesm2022/softpak-components-spx-pagination.mjs"
95
103
  },
96
- "./spx-number-check": {
97
- "types": "./spx-number-check/index.d.ts",
98
- "default": "./fesm2022/softpak-components-spx-number-check.mjs"
104
+ "./spx-progress-bar": {
105
+ "types": "./spx-progress-bar/index.d.ts",
106
+ "default": "./fesm2022/softpak-components-spx-progress-bar.mjs"
99
107
  },
100
108
  "./spx-patch": {
101
109
  "types": "./spx-patch/index.d.ts",
@@ -105,10 +113,6 @@
105
113
  "types": "./spx-pipes/index.d.ts",
106
114
  "default": "./fesm2022/softpak-components-spx-pipes.mjs"
107
115
  },
108
- "./spx-progress-bar": {
109
- "types": "./spx-progress-bar/index.d.ts",
110
- "default": "./fesm2022/softpak-components-spx-progress-bar.mjs"
111
- },
112
116
  "./spx-spinner": {
113
117
  "types": "./spx-spinner/index.d.ts",
114
118
  "default": "./fesm2022/softpak-components-spx-spinner.mjs"
@@ -125,17 +129,17 @@
125
129
  "types": "./spx-suggestion/index.d.ts",
126
130
  "default": "./fesm2022/softpak-components-spx-suggestion.mjs"
127
131
  },
128
- "./spx-update": {
129
- "types": "./spx-update/index.d.ts",
130
- "default": "./fesm2022/softpak-components-spx-update.mjs"
132
+ "./spx-toaster": {
133
+ "types": "./spx-toaster/index.d.ts",
134
+ "default": "./fesm2022/softpak-components-spx-toaster.mjs"
131
135
  },
132
136
  "./spx-translate": {
133
137
  "types": "./spx-translate/index.d.ts",
134
138
  "default": "./fesm2022/softpak-components-spx-translate.mjs"
135
139
  },
136
- "./spx-toaster": {
137
- "types": "./spx-toaster/index.d.ts",
138
- "default": "./fesm2022/softpak-components-spx-toaster.mjs"
140
+ "./spx-update": {
141
+ "types": "./spx-update/index.d.ts",
142
+ "default": "./fesm2022/softpak-components-spx-update.mjs"
139
143
  },
140
144
  "./spx-validation": {
141
145
  "types": "./spx-validation/index.d.ts",
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@softpak/components/spx-404-page" />
5
+ export * from './public-api';
@@ -0,0 +1 @@
1
+ export * from './spx-404-page.component';
@@ -0,0 +1,15 @@
1
+ import { NavController } from '@ionic/angular/standalone';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ export declare class Spx404PageComponent {
5
+ private readonly activatedRoute;
6
+ private readonly navController;
7
+ spxText404PageNotFound: string;
8
+ spxTextPageNotFound: string;
9
+ spxTextPageNotFoundDescription: string;
10
+ spxTextGoHome: string;
11
+ goHome(): void;
12
+ constructor(activatedRoute: ActivatedRoute, navController: NavController);
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<Spx404PageComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<Spx404PageComponent, "spx-404-page", never, {}, {}, never, never, true, never>;
15
+ }
@@ -1,7 +1,7 @@
1
1
  import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SpxAlertComponent {
4
- _autoCloseTimeout: import("@angular/core").WritableSignal<NodeJS.Timeout | null>;
4
+ _autoCloseTimeout: any;
5
5
  spxClose: import("@angular/core").OutputEmitterRef<void>;
6
6
  readonly spxAutoclose: import("@angular/core").InputSignal<number | undefined>;
7
7
  readonly spxCloseable: import("@angular/core").InputSignal<boolean | undefined>;
@@ -2,20 +2,20 @@ import { OnChanges } from '@angular/core';
2
2
  import { SpxAppExpiryI } from './spx-app-expiry.interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxAppExpiryComponent implements OnChanges {
5
- readonly txtContactHelpdeskOrSoftpak: import("@angular/core").InputSignal<string>;
6
- readonly txtExpired: import("@angular/core").InputSignal<string>;
7
- readonly txtLastReminder: import("@angular/core").InputSignal<string>;
8
- readonly txtPleaseOpenTheAppStore: import("@angular/core").InputSignal<string>;
9
- readonly txtPleaseUpdate: import("@angular/core").InputSignal<string>;
10
- readonly txtThisVersionWillExpireSoon: import("@angular/core").InputSignal<string>;
11
- readonly txtUpdateAvailable: import("@angular/core").InputSignal<string>;
12
- readonly txtUpdateTheAppToTheLatestVersion: import("@angular/core").InputSignal<string>;
13
- readonly spxExpiry: import("@angular/core").InputSignal<SpxAppExpiryI>;
14
- readonly spxVersion: import("@angular/core").InputSignal<string>;
15
- warning: import("@angular/core").WritableSignal<boolean>;
16
- finalWarning: import("@angular/core").WritableSignal<boolean>;
17
- expired: import("@angular/core").WritableSignal<boolean>;
5
+ txtContactHelpdeskOrSoftpak: string;
6
+ txtExpired: string;
7
+ txtLastReminder: string;
8
+ txtPleaseOpenTheAppStore: string;
9
+ txtPleaseUpdate: string;
10
+ txtThisVersionWillExpireSoon: string;
11
+ txtUpdateAvailable: string;
12
+ txtUpdateTheAppToTheLatestVersion: string;
13
+ spxExpiry: SpxAppExpiryI;
14
+ spxVersion: string;
15
+ warning: boolean;
16
+ finalWarning: boolean;
17
+ expired: boolean;
18
18
  ngOnChanges(): void;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxAppExpiryComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxAppExpiryComponent, "spx-app-expiry", never, { "txtContactHelpdeskOrSoftpak": { "alias": "txtContactHelpdeskOrSoftpak"; "required": true; "isSignal": true; }; "txtExpired": { "alias": "txtExpired"; "required": true; "isSignal": true; }; "txtLastReminder": { "alias": "txtLastReminder"; "required": true; "isSignal": true; }; "txtPleaseOpenTheAppStore": { "alias": "txtPleaseOpenTheAppStore"; "required": true; "isSignal": true; }; "txtPleaseUpdate": { "alias": "txtPleaseUpdate"; "required": true; "isSignal": true; }; "txtThisVersionWillExpireSoon": { "alias": "txtThisVersionWillExpireSoon"; "required": true; "isSignal": true; }; "txtUpdateAvailable": { "alias": "txtUpdateAvailable"; "required": true; "isSignal": true; }; "txtUpdateTheAppToTheLatestVersion": { "alias": "txtUpdateTheAppToTheLatestVersion"; "required": true; "isSignal": true; }; "spxExpiry": { "alias": "spxExpiry"; "required": true; "isSignal": true; }; "spxVersion": { "alias": "spxVersion"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxAppExpiryComponent, "spx-app-expiry", never, { "txtContactHelpdeskOrSoftpak": { "alias": "txtContactHelpdeskOrSoftpak"; "required": false; }; "txtExpired": { "alias": "txtExpired"; "required": false; }; "txtLastReminder": { "alias": "txtLastReminder"; "required": false; }; "txtPleaseOpenTheAppStore": { "alias": "txtPleaseOpenTheAppStore"; "required": false; }; "txtPleaseUpdate": { "alias": "txtPleaseUpdate"; "required": false; }; "txtThisVersionWillExpireSoon": { "alias": "txtThisVersionWillExpireSoon"; "required": false; }; "txtUpdateAvailable": { "alias": "txtUpdateAvailable"; "required": false; }; "txtUpdateTheAppToTheLatestVersion": { "alias": "txtUpdateTheAppToTheLatestVersion"; "required": false; }; "spxExpiry": { "alias": "spxExpiry"; "required": false; }; "spxVersion": { "alias": "spxVersion"; "required": false; }; }, {}, never, never, true, never>;
21
21
  }
@@ -2,6 +2,9 @@ import { ElementRef } from '@angular/core';
2
2
  import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxButtonComponent {
5
+ get hostClassBlock(): boolean | undefined;
6
+ get hostClassHFull(): boolean | undefined;
7
+ get hostClassWFull(): boolean | undefined;
5
8
  readonly spxDisabled: import("@angular/core").InputSignal<boolean>;
6
9
  readonly spxClass: import("@angular/core").InputSignal<string | undefined>;
7
10
  readonly spxClassObject: import("@angular/core").InputSignal<object | undefined>;
@@ -2,6 +2,7 @@ import { IconProp } from '@fortawesome/angular-fontawesome/types';
2
2
  import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxCardItemComponent {
5
+ hFull: boolean;
5
6
  readonly icon: import("@angular/core").InputSignal<IconProp | undefined>;
6
7
  readonly iconOnly: import("@angular/core").InputSignal<boolean>;
7
8
  readonly spxLabel: import("@angular/core").InputSignal<string>;
@@ -1,15 +1,16 @@
1
+ import { EventEmitter } from '@angular/core';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class SpxCardComponent {
3
- readonly clickable: import("@angular/core").InputSignal<boolean>;
4
- readonly hasContent: import("@angular/core").InputSignal<boolean>;
5
- readonly onDetailPage: import("@angular/core").InputSignal<boolean>;
6
- readonly text: import("@angular/core").InputSignal<string | undefined>;
7
- readonly unit: import("@angular/core").InputSignal<string | undefined>;
8
- readonly tableView: import("@angular/core").InputSignal<boolean>;
9
- clicked: import("@angular/core").OutputEmitterRef<void>;
4
+ clickable: boolean;
5
+ hasContent: boolean;
6
+ onDetailPage: boolean;
7
+ text: string;
8
+ unit?: string;
9
+ tableView: boolean;
10
+ clicked: EventEmitter<void>;
10
11
  constructor();
11
12
  displayValue(val: string | number): string | number;
12
13
  onClick(): void;
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxCardComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxCardComponent, "spx-card", never, { "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "hasContent": { "alias": "hasContent"; "required": false; "isSignal": true; }; "onDetailPage": { "alias": "onDetailPage"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "tableView": { "alias": "tableView"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["[card-header]", "[card-content-top]", "[card-content]", "[card-content-bottom]", "[card-lines]"], true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxCardComponent, "spx-card", never, { "clickable": { "alias": "clickable"; "required": false; }; "hasContent": { "alias": "hasContent"; "required": false; }; "onDetailPage": { "alias": "onDetailPage"; "required": false; }; "text": { "alias": "text"; "required": false; }; "unit": { "alias": "unit"; "required": false; }; "tableView": { "alias": "tableView"; "required": false; }; }, { "clicked": "clicked"; }, never, ["[card-header]", "[card-content-top]", "[card-content]", "[card-content-bottom]", "[card-lines]"], true, never>;
15
16
  }
@@ -1,3 +1,4 @@
1
+ import { EventEmitter } from '@angular/core';
1
2
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
2
3
  import { SpxChangeDetailsValueI } from './spx-change-details-value.interface';
3
4
  import { SpxFormI, SpxFormFieldI } from '@softpak/components/spx-form-view';
@@ -14,28 +15,28 @@ export declare const ctrlCategory = "category";
14
15
  export declare const ctrlUseCategories = "useCategories";
15
16
  export declare class SpxChangeDetailsComponent {
16
17
  readonly formBuilder: FormBuilder;
17
- readonly formGroup: import("@angular/core").InputSignal<FormGroup<any>>;
18
- readonly suggestions: import("@angular/core").InputSignal<any>;
19
- readonly textCategory: import("@angular/core").InputSignal<string>;
20
- readonly textContainerNumber: import("@angular/core").InputSignal<string>;
21
- readonly textContainerType: import("@angular/core").InputSignal<string>;
22
- readonly textCustomer: import("@angular/core").InputSignal<string>;
23
- readonly textLicensePlate: import("@angular/core").InputSignal<string>;
24
- readonly textSave: import("@angular/core").InputSignal<string>;
25
- readonly textTonsTested: import("@angular/core").InputSignal<string>;
26
- spxBlurCategory: import("@angular/core").OutputEmitterRef<SpxValuePair<string>>;
27
- spxBlurContainerType: import("@angular/core").OutputEmitterRef<SpxValuePair<string>>;
28
- spxSearchCategory: import("@angular/core").OutputEmitterRef<SpxValuePair<string>>;
29
- spxSearchContainerType: import("@angular/core").OutputEmitterRef<SpxValuePair<string>>;
30
- spxSearchTonsTested: import("@angular/core").OutputEmitterRef<SpxValuePair<string>>;
31
- submit: import("@angular/core").OutputEmitterRef<SpxChangeDetailsValueI>;
18
+ formGroup: FormGroup;
19
+ suggestions: any;
20
+ textCategory: string;
21
+ textContainerNumber: string;
22
+ textContainerType: string;
23
+ textCustomer: string;
24
+ textLicensePlate: string;
25
+ textSave: string;
26
+ textTonsTested: string;
27
+ spxBlurCategory: EventEmitter<SpxValuePair<string>>;
28
+ spxBlurContainerType: EventEmitter<SpxValuePair<string>>;
29
+ spxSearchCategory: EventEmitter<SpxValuePair<string>>;
30
+ spxSearchContainerType: EventEmitter<SpxValuePair<string>>;
31
+ spxSearchTonsTested: EventEmitter<SpxValuePair<string>>;
32
+ submit: EventEmitter<SpxChangeDetailsValueI>;
32
33
  form: SpxFormI;
33
- readonly ctrlCategory: import("@angular/core").Signal<FormControl<any>>;
34
- readonly ctrlCustomer: import("@angular/core").Signal<FormControl<any>>;
35
- readonly ctrlContainerType: import("@angular/core").Signal<FormControl<any>>;
36
- readonly ctrlLicensePlate: import("@angular/core").Signal<FormControl<any>>;
37
- readonly ctrlTonsTested: import("@angular/core").Signal<FormControl<any>>;
38
- readonly ctrlUseCategories: import("@angular/core").Signal<FormControl<any>>;
34
+ get ctrlCategory(): FormControl;
35
+ get ctrlCustomer(): FormControl;
36
+ get ctrlContainerType(): FormControl;
37
+ get ctrlLicensePlate(): FormControl;
38
+ get ctrlTonsTested(): FormControl;
39
+ get ctrlUseCategories(): FormControl;
39
40
  private subContainerType?;
40
41
  constructor(formBuilder: FormBuilder);
41
42
  createForm(): FormGroup;
@@ -53,5 +54,5 @@ export declare class SpxChangeDetailsComponent {
53
54
  onSubmit(): void;
54
55
  private listenToContainerType;
55
56
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxChangeDetailsComponent, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxChangeDetailsComponent, "spx-change-details", never, { "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "textCategory": { "alias": "textCategory"; "required": true; "isSignal": true; }; "textContainerNumber": { "alias": "textContainerNumber"; "required": true; "isSignal": true; }; "textContainerType": { "alias": "textContainerType"; "required": true; "isSignal": true; }; "textCustomer": { "alias": "textCustomer"; "required": true; "isSignal": true; }; "textLicensePlate": { "alias": "textLicensePlate"; "required": true; "isSignal": true; }; "textSave": { "alias": "textSave"; "required": true; "isSignal": true; }; "textTonsTested": { "alias": "textTonsTested"; "required": true; "isSignal": true; }; }, { "spxBlurCategory": "spxBlurCategory"; "spxBlurContainerType": "spxBlurContainerType"; "spxSearchCategory": "spxSearchCategory"; "spxSearchContainerType": "spxSearchContainerType"; "spxSearchTonsTested": "spxSearchTonsTested"; "submit": "submit"; }, never, never, true, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxChangeDetailsComponent, "spx-change-details", never, { "formGroup": { "alias": "formGroup"; "required": false; }; "suggestions": { "alias": "suggestions"; "required": false; }; "textCategory": { "alias": "textCategory"; "required": false; }; "textContainerNumber": { "alias": "textContainerNumber"; "required": false; }; "textContainerType": { "alias": "textContainerType"; "required": false; }; "textCustomer": { "alias": "textCustomer"; "required": false; }; "textLicensePlate": { "alias": "textLicensePlate"; "required": false; }; "textSave": { "alias": "textSave"; "required": false; }; "textTonsTested": { "alias": "textTonsTested"; "required": false; }; }, { "spxBlurCategory": "spxBlurCategory"; "spxBlurContainerType": "spxBlurContainerType"; "spxSearchCategory": "spxSearchCategory"; "spxSearchContainerType": "spxSearchContainerType"; "spxSearchTonsTested": "spxSearchTonsTested"; "submit": "submit"; }, never, never, true, never>;
57
58
  }
@@ -3,16 +3,16 @@ import { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inp
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SpxCheckDigitComponent {
5
5
  private readonly formBuilder;
6
- readonly txtCheckDigit: import("@angular/core").InputSignal<string>;
7
- readonly txtContainer: import("@angular/core").InputSignal<string>;
8
- readonly txtPrefix: import("@angular/core").InputSignal<string>;
9
- ctrlContainerNumberRef: import("@angular/core").Signal<SpxInputComponent | undefined>;
6
+ txtCheckDigit: string;
7
+ txtContainer: string;
8
+ txtPrefix: string;
9
+ ctrlContainerNumberRef?: SpxInputComponent;
10
10
  inputTypeOverlayNumber: SpxInputTypeEnum;
11
11
  inputTypeText: SpxInputTypeEnum;
12
- formGroup: import("@angular/core").WritableSignal<FormGroup<any> | null>;
13
- ctrlCheckDigit: import("@angular/core").Signal<FormControl<any>>;
14
- ctrlContainerNumber: import("@angular/core").Signal<FormControl<any>>;
15
- ctrlContainerPrefix: import("@angular/core").Signal<FormControl<any>>;
12
+ formGroup: FormGroup;
13
+ get ctrlCheckDigit(): FormControl;
14
+ get ctrlContainerNumber(): FormControl;
15
+ get ctrlContainerPrefix(): FormControl;
16
16
  private inputChanges?;
17
17
  constructor(formBuilder: FormBuilder);
18
18
  ngOnInit(): void;
@@ -20,5 +20,5 @@ export declare class SpxCheckDigitComponent {
20
20
  ngOnDestroy(): void;
21
21
  getRawValidators(formControl: FormControl): any;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<SpxCheckDigitComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<SpxCheckDigitComponent, "spx-check-digit", never, { "txtCheckDigit": { "alias": "txtCheckDigit"; "required": true; "isSignal": true; }; "txtContainer": { "alias": "txtContainer"; "required": true; "isSignal": true; }; "txtPrefix": { "alias": "txtPrefix"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpxCheckDigitComponent, "spx-check-digit", never, { "txtCheckDigit": { "alias": "txtCheckDigit"; "required": false; }; "txtContainer": { "alias": "txtContainer"; "required": false; }; "txtPrefix": { "alias": "txtPrefix"; "required": false; }; }, {}, never, never, true, never>;
24
24
  }