@softpak/components 20.13.0 → 20.13.2

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.
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { input, viewChild, HostListener, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { Haptics, ImpactStyle } from '@capacitor/haptics';
3
4
 
4
5
  class SpxSuggestionComponent {
5
6
  constructor() {
@@ -7,14 +8,52 @@ class SpxSuggestionComponent {
7
8
  this.spxFocused = input(...(ngDevMode ? [undefined, { debugName: "spxFocused" }] : []));
8
9
  this.spxSelected = input(...(ngDevMode ? [undefined, { debugName: "spxSelected" }] : []));
9
10
  this.spxTabbable = input(...(ngDevMode ? [undefined, { debugName: "spxTabbable" }] : []));
11
+ this.isPressing = false;
12
+ this.suggestionRef = viewChild('suggestionRef', ...(ngDevMode ? [{ debugName: "suggestionRef" }] : []));
13
+ this.handlePress = async () => {
14
+ this.isPressing = true;
15
+ try {
16
+ await Haptics.impact({ style: ImpactStyle.Light });
17
+ }
18
+ catch {
19
+ // silence if haptics is not available
20
+ }
21
+ };
22
+ this.onDocumentPointerUp = async (event) => {
23
+ if (!this.isPressing) {
24
+ return;
25
+ }
26
+ this.isPressing = false;
27
+ const btn = this.suggestionRef()?.nativeElement;
28
+ if (!btn) {
29
+ return;
30
+ }
31
+ const inside = btn.contains(event.target);
32
+ try {
33
+ if (inside) {
34
+ // OK haptic
35
+ await Haptics.impact({ style: ImpactStyle.Medium });
36
+ }
37
+ else {
38
+ // Cancel haptic
39
+ await Haptics.impact({ style: ImpactStyle.Light });
40
+ }
41
+ }
42
+ catch {
43
+ // ignore
44
+ }
45
+ };
10
46
  }
11
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SpxSuggestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.3", type: SpxSuggestionComponent, isStandalone: true, selector: "spx-suggestion", inputs: { spxDisabled: { classPropertyName: "spxDisabled", publicName: "spxDisabled", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", isSignal: true, isRequired: false, transformFunction: null }, spxSelected: { classPropertyName: "spxSelected", publicName: "spxSelected", isSignal: true, isRequired: false, transformFunction: null }, spxTabbable: { classPropertyName: "spxTabbable", publicName: "spxTabbable", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"spx-suggestion block rounded text-gray-900 text-sm p-3 w-full text-left truncate outline-none\"\n [class.bg-sky-100]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.focus:ring-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.hover:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.active:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.bg-gray-200]=\"this.spxDisabled() && !this.spxSelected()\"\n [class.bg-gray-400]=\"this.spxDisabled() && this.spxSelected()\"\n [class.cursor-not-allowed]=\"this.spxDisabled()\"\n [class.opacity-60]=\"this.spxDisabled()\"\n [class.bg-gradient-to-r]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.from-teal-400]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.to-teal-600]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.font-bold]=\"this.spxSelected()\"\n [attr.tabindex]=\"this.spxTabbable() && !this.spxDisabled() ? 0 : -1\"\n [class.ring-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-offset-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-blue-500]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\">\n <div class=\"text-ellipsis overflow-hidden whitespace-nowrap\"><ng-content></ng-content></div>\n </button>", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.2.3", type: SpxSuggestionComponent, isStandalone: true, selector: "spx-suggestion", inputs: { spxDisabled: { classPropertyName: "spxDisabled", publicName: "spxDisabled", isSignal: true, isRequired: false, transformFunction: null }, spxFocused: { classPropertyName: "spxFocused", publicName: "spxFocused", isSignal: true, isRequired: false, transformFunction: null }, spxSelected: { classPropertyName: "spxSelected", publicName: "spxSelected", isSignal: true, isRequired: false, transformFunction: null }, spxTabbable: { classPropertyName: "spxTabbable", publicName: "spxTabbable", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:pointerup": "onDocumentPointerUp($event)" } }, viewQueries: [{ propertyName: "suggestionRef", first: true, predicate: ["suggestionRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<button\n #suggestionRef\n type=\"button\"\n class=\"spx-suggestion block rounded text-gray-900 text-sm p-3 w-full text-left truncate outline-none\"\n [class.bg-sky-100]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.focus:ring-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.hover:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.active:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.bg-gray-200]=\"this.spxDisabled() && !this.spxSelected()\"\n [class.bg-gray-400]=\"this.spxDisabled() && this.spxSelected()\"\n [class.cursor-not-allowed]=\"this.spxDisabled()\"\n [class.opacity-60]=\"this.spxDisabled()\"\n [class.bg-gradient-to-r]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.from-teal-400]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.to-teal-600]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.font-bold]=\"this.spxSelected()\"\n [attr.tabindex]=\"this.spxTabbable() && !this.spxDisabled() ? 0 : -1\"\n [class.ring-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-offset-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-blue-500]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n (pointerdown)=\"this.handlePress()\">\n <div class=\"text-ellipsis overflow-hidden whitespace-nowrap\"><ng-content></ng-content></div>\n </button>", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
49
  }
14
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SpxSuggestionComponent, decorators: [{
15
51
  type: Component,
16
- args: [{ selector: 'spx-suggestion', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"spx-suggestion block rounded text-gray-900 text-sm p-3 w-full text-left truncate outline-none\"\n [class.bg-sky-100]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.focus:ring-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.hover:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.active:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.bg-gray-200]=\"this.spxDisabled() && !this.spxSelected()\"\n [class.bg-gray-400]=\"this.spxDisabled() && this.spxSelected()\"\n [class.cursor-not-allowed]=\"this.spxDisabled()\"\n [class.opacity-60]=\"this.spxDisabled()\"\n [class.bg-gradient-to-r]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.from-teal-400]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.to-teal-600]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.font-bold]=\"this.spxSelected()\"\n [attr.tabindex]=\"this.spxTabbable() && !this.spxDisabled() ? 0 : -1\"\n [class.ring-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-offset-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-blue-500]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\">\n <div class=\"text-ellipsis overflow-hidden whitespace-nowrap\"><ng-content></ng-content></div>\n </button>" }]
17
- }] });
52
+ args: [{ selector: 'spx-suggestion', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n #suggestionRef\n type=\"button\"\n class=\"spx-suggestion block rounded text-gray-900 text-sm p-3 w-full text-left truncate outline-none\"\n [class.bg-sky-100]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.focus:ring-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.hover:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.active:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.bg-gray-200]=\"this.spxDisabled() && !this.spxSelected()\"\n [class.bg-gray-400]=\"this.spxDisabled() && this.spxSelected()\"\n [class.cursor-not-allowed]=\"this.spxDisabled()\"\n [class.opacity-60]=\"this.spxDisabled()\"\n [class.bg-gradient-to-r]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.from-teal-400]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.to-teal-600]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.font-bold]=\"this.spxSelected()\"\n [attr.tabindex]=\"this.spxTabbable() && !this.spxDisabled() ? 0 : -1\"\n [class.ring-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-offset-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-blue-500]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n (pointerdown)=\"this.handlePress()\">\n <div class=\"text-ellipsis overflow-hidden whitespace-nowrap\"><ng-content></ng-content></div>\n </button>" }]
53
+ }], propDecorators: { onDocumentPointerUp: [{
54
+ type: HostListener,
55
+ args: ['document:pointerup', ['$event']]
56
+ }] } });
18
57
 
19
58
  /**
20
59
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-suggestion.mjs","sources":["../../../../projects/softpak/components/spx-suggestion/spx-suggestion.component.ts","../../../../projects/softpak/components/spx-suggestion/spx-suggestion.component.html","../../../../projects/softpak/components/spx-suggestion/softpak-components-spx-suggestion.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'spx-suggestion',\n standalone: true,\n templateUrl: './spx-suggestion.component.html',\n styleUrl: './spx-suggestion.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpxSuggestionComponent {\n spxDisabled = input<boolean>();\n spxFocused = input<boolean>();\n spxSelected = input<boolean>();\n spxTabbable = input<boolean>();\n}\n","<button\n type=\"button\"\n class=\"spx-suggestion block rounded text-gray-900 text-sm p-3 w-full text-left truncate outline-none\"\n [class.bg-sky-100]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.focus:ring-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.hover:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.active:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.bg-gray-200]=\"this.spxDisabled() && !this.spxSelected()\"\n [class.bg-gray-400]=\"this.spxDisabled() && this.spxSelected()\"\n [class.cursor-not-allowed]=\"this.spxDisabled()\"\n [class.opacity-60]=\"this.spxDisabled()\"\n [class.bg-gradient-to-r]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.from-teal-400]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.to-teal-600]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.font-bold]=\"this.spxSelected()\"\n [attr.tabindex]=\"this.spxTabbable() && !this.spxDisabled() ? 0 : -1\"\n [class.ring-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-offset-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-blue-500]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\">\n <div class=\"text-ellipsis overflow-hidden whitespace-nowrap\"><ng-content></ng-content></div>\n </button>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MASa,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;QAQE,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QAC9B,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QAC7B,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QAC9B,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;AAC/B,IAAA;8GALY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,2nBCTnC,04CAoBW,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDXE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,04CAAA,EAAA;;;AEPjD;;AAEG;;;;"}
1
+ {"version":3,"file":"softpak-components-spx-suggestion.mjs","sources":["../../../../projects/softpak/components/spx-suggestion/spx-suggestion.component.ts","../../../../projects/softpak/components/spx-suggestion/spx-suggestion.component.html","../../../../projects/softpak/components/spx-suggestion/softpak-components-spx-suggestion.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostListener, input, viewChild } from '@angular/core';\nimport { Haptics, ImpactStyle } from '@capacitor/haptics';\n\n@Component({\n selector: 'spx-suggestion',\n standalone: true,\n templateUrl: './spx-suggestion.component.html',\n styleUrl: './spx-suggestion.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpxSuggestionComponent {\n spxDisabled = input<boolean>();\n spxFocused = input<boolean>();\n spxSelected = input<boolean>();\n spxTabbable = input<boolean>();\n private isPressing = false;\n suggestionRef = viewChild<ElementRef<HTMLButtonElement>>('suggestionRef');\n\n handlePress = async () => {\n this.isPressing = true;\n try {\n await Haptics.impact({ style: ImpactStyle.Light });\n } catch {\n // silence if haptics is not available\n }\n };\n\n @HostListener('document:pointerup', ['$event'])\n onDocumentPointerUp = async (event: PointerEvent) => {\n if (!this.isPressing) {\n return;\n }\n this.isPressing = false;\n\n const btn = this.suggestionRef()?.nativeElement;\n if (!btn) {\n return;\n }\n\n const inside = btn.contains(event.target as Node);\n\n try {\n if (inside) {\n // OK haptic\n await Haptics.impact({ style: ImpactStyle.Medium });\n } else {\n // Cancel haptic\n await Haptics.impact({ style: ImpactStyle.Light });\n }\n } catch {\n // ignore\n }\n };\n}\n","<button\n #suggestionRef\n type=\"button\"\n class=\"spx-suggestion block rounded text-gray-900 text-sm p-3 w-full text-left truncate outline-none\"\n [class.bg-sky-100]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.focus:ring-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.hover:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.active:bg-sky-300]=\"!this.spxSelected() && !this.spxDisabled()\"\n [class.bg-gray-200]=\"this.spxDisabled() && !this.spxSelected()\"\n [class.bg-gray-400]=\"this.spxDisabled() && this.spxSelected()\"\n [class.cursor-not-allowed]=\"this.spxDisabled()\"\n [class.opacity-60]=\"this.spxDisabled()\"\n [class.bg-gradient-to-r]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.from-teal-400]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.to-teal-600]=\"this.spxSelected() && !this.spxDisabled()\"\n [class.font-bold]=\"this.spxSelected()\"\n [attr.tabindex]=\"this.spxTabbable() && !this.spxDisabled() ? 0 : -1\"\n [class.ring-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-offset-2]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n [class.ring-blue-500]=\"this.spxFocused() && this.spxTabbable() && !this.spxDisabled()\"\n (pointerdown)=\"this.handlePress()\">\n <div class=\"text-ellipsis overflow-hidden whitespace-nowrap\"><ng-content></ng-content></div>\n </button>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAUa,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;QAQE,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QAC9B,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QAC7B,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QAC9B,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;QACtB,IAAA,CAAA,UAAU,GAAG,KAAK;AAC1B,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAAgC,eAAe,yDAAC;QAEzE,IAAA,CAAA,WAAW,GAAG,YAAW;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI;AACF,gBAAA,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;YACpD;AAAE,YAAA,MAAM;;YAER;AACF,QAAA,CAAC;AAGD,QAAA,IAAA,CAAA,mBAAmB,GAAG,OAAO,KAAmB,KAAI;AAClD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB;YACF;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YAEvB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa;YAC/C,IAAI,CAAC,GAAG,EAAE;gBACR;YACF;YAEA,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;AAEjD,YAAA,IAAI;gBACF,IAAI,MAAM,EAAE;;AAEV,oBAAA,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrD;qBAAO;;AAEL,oBAAA,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;gBACpD;YACF;AAAE,YAAA,MAAM;;YAER;AACF,QAAA,CAAC;AACF,IAAA;8GA3CY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,y0BCVnC,s8CAsBW,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDZE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,s8CAAA,EAAA;8BAoB/C,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;;;AE3BhD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softpak/components",
3
- "version": "20.13.0",
3
+ "version": "20.13.2",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "20.x.x",
@@ -36,6 +36,10 @@
36
36
  "types": "./spx-404-page/index.d.ts",
37
37
  "default": "./fesm2022/softpak-components-spx-404-page.mjs"
38
38
  },
39
+ "./spx-app-expiry": {
40
+ "types": "./spx-app-expiry/index.d.ts",
41
+ "default": "./fesm2022/softpak-components-spx-app-expiry.mjs"
42
+ },
39
43
  "./spx-alert": {
40
44
  "types": "./spx-alert/index.d.ts",
41
45
  "default": "./fesm2022/softpak-components-spx-alert.mjs"
@@ -44,17 +48,13 @@
44
48
  "types": "./spx-button/index.d.ts",
45
49
  "default": "./fesm2022/softpak-components-spx-button.mjs"
46
50
  },
47
- "./spx-capitalize": {
48
- "types": "./spx-capitalize/index.d.ts",
49
- "default": "./fesm2022/softpak-components-spx-capitalize.mjs"
50
- },
51
51
  "./spx-app-configuration": {
52
52
  "types": "./spx-app-configuration/index.d.ts",
53
53
  "default": "./fesm2022/softpak-components-spx-app-configuration.mjs"
54
54
  },
55
- "./spx-app-expiry": {
56
- "types": "./spx-app-expiry/index.d.ts",
57
- "default": "./fesm2022/softpak-components-spx-app-expiry.mjs"
55
+ "./spx-change-details": {
56
+ "types": "./spx-change-details/index.d.ts",
57
+ "default": "./fesm2022/softpak-components-spx-change-details.mjs"
58
58
  },
59
59
  "./spx-card": {
60
60
  "types": "./spx-card/index.d.ts",
@@ -64,30 +64,30 @@
64
64
  "types": "./spx-channel-selection/index.d.ts",
65
65
  "default": "./fesm2022/softpak-components-spx-channel-selection.mjs"
66
66
  },
67
- "./spx-change-details": {
68
- "types": "./spx-change-details/index.d.ts",
69
- "default": "./fesm2022/softpak-components-spx-change-details.mjs"
67
+ "./spx-capitalize": {
68
+ "types": "./spx-capitalize/index.d.ts",
69
+ "default": "./fesm2022/softpak-components-spx-capitalize.mjs"
70
70
  },
71
- "./spx-check-digit": {
72
- "types": "./spx-check-digit/index.d.ts",
73
- "default": "./fesm2022/softpak-components-spx-check-digit.mjs"
71
+ "./spx-form-view": {
72
+ "types": "./spx-form-view/index.d.ts",
73
+ "default": "./fesm2022/softpak-components-spx-form-view.mjs"
74
74
  },
75
75
  "./spx-confirm": {
76
76
  "types": "./spx-confirm/index.d.ts",
77
77
  "default": "./fesm2022/softpak-components-spx-confirm.mjs"
78
78
  },
79
- "./spx-form-section": {
80
- "types": "./spx-form-section/index.d.ts",
81
- "default": "./fesm2022/softpak-components-spx-form-section.mjs"
82
- },
83
- "./spx-form-view": {
84
- "types": "./spx-form-view/index.d.ts",
85
- "default": "./fesm2022/softpak-components-spx-form-view.mjs"
79
+ "./spx-check-digit": {
80
+ "types": "./spx-check-digit/index.d.ts",
81
+ "default": "./fesm2022/softpak-components-spx-check-digit.mjs"
86
82
  },
87
83
  "./spx-helpers": {
88
84
  "types": "./spx-helpers/index.d.ts",
89
85
  "default": "./fesm2022/softpak-components-spx-helpers.mjs"
90
86
  },
87
+ "./spx-form-section": {
88
+ "types": "./spx-form-section/index.d.ts",
89
+ "default": "./fesm2022/softpak-components-spx-form-section.mjs"
90
+ },
91
91
  "./spx-inputs": {
92
92
  "types": "./spx-inputs/index.d.ts",
93
93
  "default": "./fesm2022/softpak-components-spx-inputs.mjs"
@@ -100,13 +100,17 @@
100
100
  "types": "./spx-number-check/index.d.ts",
101
101
  "default": "./fesm2022/softpak-components-spx-number-check.mjs"
102
102
  },
103
+ "./spx-patch": {
104
+ "types": "./spx-patch/index.d.ts",
105
+ "default": "./fesm2022/softpak-components-spx-patch.mjs"
106
+ },
103
107
  "./spx-pagination": {
104
108
  "types": "./spx-pagination/index.d.ts",
105
109
  "default": "./fesm2022/softpak-components-spx-pagination.mjs"
106
110
  },
107
- "./spx-patch": {
108
- "types": "./spx-patch/index.d.ts",
109
- "default": "./fesm2022/softpak-components-spx-patch.mjs"
111
+ "./spx-redux": {
112
+ "types": "./spx-redux/index.d.ts",
113
+ "default": "./fesm2022/softpak-components-spx-redux.mjs"
110
114
  },
111
115
  "./spx-pipes": {
112
116
  "types": "./spx-pipes/index.d.ts",
@@ -116,22 +120,14 @@
116
120
  "types": "./spx-progress-bar/index.d.ts",
117
121
  "default": "./fesm2022/softpak-components-spx-progress-bar.mjs"
118
122
  },
119
- "./spx-redux": {
120
- "types": "./spx-redux/index.d.ts",
121
- "default": "./fesm2022/softpak-components-spx-redux.mjs"
122
- },
123
- "./spx-stock-info": {
124
- "types": "./spx-stock-info/index.d.ts",
125
- "default": "./fesm2022/softpak-components-spx-stock-info.mjs"
123
+ "./spx-storage": {
124
+ "types": "./spx-storage/index.d.ts",
125
+ "default": "./fesm2022/softpak-components-spx-storage.mjs"
126
126
  },
127
127
  "./spx-spinner": {
128
128
  "types": "./spx-spinner/index.d.ts",
129
129
  "default": "./fesm2022/softpak-components-spx-spinner.mjs"
130
130
  },
131
- "./spx-storage": {
132
- "types": "./spx-storage/index.d.ts",
133
- "default": "./fesm2022/softpak-components-spx-storage.mjs"
134
- },
135
131
  "./spx-suggestion": {
136
132
  "types": "./spx-suggestion/index.d.ts",
137
133
  "default": "./fesm2022/softpak-components-spx-suggestion.mjs"
@@ -140,9 +136,9 @@
140
136
  "types": "./spx-tabs/index.d.ts",
141
137
  "default": "./fesm2022/softpak-components-spx-tabs.mjs"
142
138
  },
143
- "./spx-toaster": {
144
- "types": "./spx-toaster/index.d.ts",
145
- "default": "./fesm2022/softpak-components-spx-toaster.mjs"
139
+ "./spx-stock-info": {
140
+ "types": "./spx-stock-info/index.d.ts",
141
+ "default": "./fesm2022/softpak-components-spx-stock-info.mjs"
146
142
  },
147
143
  "./spx-toggle": {
148
144
  "types": "./spx-toggle/index.d.ts",
@@ -152,10 +148,18 @@
152
148
  "types": "./spx-translate/index.d.ts",
153
149
  "default": "./fesm2022/softpak-components-spx-translate.mjs"
154
150
  },
151
+ "./spx-toaster": {
152
+ "types": "./spx-toaster/index.d.ts",
153
+ "default": "./fesm2022/softpak-components-spx-toaster.mjs"
154
+ },
155
155
  "./spx-update": {
156
156
  "types": "./spx-update/index.d.ts",
157
157
  "default": "./fesm2022/softpak-components-spx-update.mjs"
158
158
  },
159
+ "./spx-welcome": {
160
+ "types": "./spx-welcome/index.d.ts",
161
+ "default": "./fesm2022/softpak-components-spx-welcome.mjs"
162
+ },
159
163
  "./spx-validation": {
160
164
  "types": "./spx-validation/index.d.ts",
161
165
  "default": "./fesm2022/softpak-components-spx-validation.mjs"
@@ -163,10 +167,6 @@
163
167
  "./spx-validation-messages": {
164
168
  "types": "./spx-validation-messages/index.d.ts",
165
169
  "default": "./fesm2022/softpak-components-spx-validation-messages.mjs"
166
- },
167
- "./spx-welcome": {
168
- "types": "./spx-welcome/index.d.ts",
169
- "default": "./fesm2022/softpak-components-spx-welcome.mjs"
170
170
  }
171
171
  }
172
172
  }
@@ -15,15 +15,18 @@ declare class SpxButtonComponent {
15
15
  readonly spxType: _angular_core.InputSignal<"button" | "submit">;
16
16
  protected mappedName: _angular_core.Signal<string | undefined>;
17
17
  readonly spxName: _angular_core.InputSignal<string | undefined>;
18
- isPressing: boolean;
19
18
  spxClick: _angular_core.OutputEmitterRef<void>;
20
19
  buttonRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
21
20
  SpxSeverity: typeof SpxSeverityEnum;
21
+ private isPressing;
22
+ private lastHaptic;
23
+ private hapticCooldown;
22
24
  hasShadowDom: (el: HTMLElement) => boolean;
23
25
  handleClick: () => void;
26
+ spxSetFocus(): void;
24
27
  handlePress: () => Promise<void>;
25
28
  onDocumentPointerUp: (event: PointerEvent) => Promise<void>;
26
- spxSetFocus(): void;
29
+ private safeHaptic;
27
30
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpxButtonComponent, never>;
28
31
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpxButtonComponent, "spx-button", never, { "spxDisabled": { "alias": "spxDisabled"; "required": false; "isSignal": true; }; "spxClass": { "alias": "spxClass"; "required": false; "isSignal": true; }; "spxClassObject": { "alias": "spxClassObject"; "required": false; "isSignal": true; }; "spxForm": { "alias": "spxForm"; "required": false; "isSignal": true; }; "spxFullHeight": { "alias": "spxFullHeight"; "required": false; "isSignal": true; }; "spxFullWidth": { "alias": "spxFullWidth"; "required": false; "isSignal": true; }; "spxSeverity": { "alias": "spxSeverity"; "required": false; "isSignal": true; }; "spxSize": { "alias": "spxSize"; "required": false; "isSignal": true; }; "spxTabIndex": { "alias": "spxTabIndex"; "required": false; "isSignal": true; }; "spxType": { "alias": "spxType"; "required": false; "isSignal": true; }; "spxName": { "alias": "spxName"; "required": false; "isSignal": true; }; }, { "spxClick": "spxClick"; }, never, ["*"], true, never>;
29
32
  }
@@ -1,10 +1,15 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
2
3
 
3
4
  declare class SpxSuggestionComponent {
4
5
  spxDisabled: _angular_core.InputSignal<boolean | undefined>;
5
6
  spxFocused: _angular_core.InputSignal<boolean | undefined>;
6
7
  spxSelected: _angular_core.InputSignal<boolean | undefined>;
7
8
  spxTabbable: _angular_core.InputSignal<boolean | undefined>;
9
+ private isPressing;
10
+ suggestionRef: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
11
+ handlePress: () => Promise<void>;
12
+ onDocumentPointerUp: (event: PointerEvent) => Promise<void>;
8
13
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpxSuggestionComponent, never>;
9
14
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpxSuggestionComponent, "spx-suggestion", never, { "spxDisabled": { "alias": "spxDisabled"; "required": false; "isSignal": true; }; "spxFocused": { "alias": "spxFocused"; "required": false; "isSignal": true; }; "spxSelected": { "alias": "spxSelected"; "required": false; "isSignal": true; }; "spxTabbable": { "alias": "spxTabbable"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
10
15
  }
@@ -141,7 +141,7 @@ declare const hasBeenDownloaded: _ngrx_store.ActionCreator<"[SPX / Update Pendin
141
141
  declare const hasBeenInstalled: _ngrx_store.ActionCreator<"[SPX / Update Pending] Has been installed", (props: Record<string, unknown>) => Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Has been installed">>;
142
142
  declare const postpone: _ngrx_store.ActionCreator<"[SPX / Update Pending] Postpone", (props: Record<string, unknown>) => Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Postpone">>;
143
143
  declare const postponeExpired: _ngrx_store.ActionCreator<"[SPX / Update Pending] Postpone expired", (props: Record<string, unknown>) => Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Postpone expired">>;
144
- declare const all: (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Accept update">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Has been downloaded">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Has been installed">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Postpone">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Postpone expired">);
144
+ declare const all: (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Has been downloaded">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Has been installed">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Postpone">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Postpone expired">) | (Record<string, unknown> & _ngrx_store.Action<"[SPX / Update Pending] Accept update">);
145
145
  type Actions = typeof all;
146
146
 
147
147
  type spxUpdatePending_actions_d_Actions = Actions;