@softpak/components 21.3.2 → 21.3.3

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.
@@ -45,6 +45,7 @@ class SpxTabsComponent {
45
45
  }, ...(ngDevMode ? [{ debugName: "shownNavItems" }] : []));
46
46
  this.showShortcuts = signal(false, ...(ngDevMode ? [{ debugName: "showShortcuts" }] : []));
47
47
  this.optionalNavItemBool = input(true, ...(ngDevMode ? [{ debugName: "optionalNavItemBool" }] : []));
48
+ this.isTestEnvironment = input(false, ...(ngDevMode ? [{ debugName: "isTestEnvironment" }] : []));
48
49
  this.subscription = {};
49
50
  }
50
51
  ngOnInit() {
@@ -65,7 +66,7 @@ class SpxTabsComponent {
65
66
  });
66
67
  }
67
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: SpxTabsComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: SpxTabsComponent, isStandalone: true, selector: "spx-tabs", inputs: { optionalNavItemBool: { classPropertyName: "optionalNavItemBool", publicName: "optionalNavItemBool", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ion-tabs #tabs select=\"home\">\n <ion-tab-bar slot=\"bottom\" class=\"border-t border-gray-200\">\n @for (item of shownNavItems(); track item.title) {\n <ion-tab-button [ngClass]=\"'ion-tab-button--' + item.code\" [tab]=\"item.code\"\n [attr.data-e2e]=\"'tab--' + item.code\">\n <fa-icon class=\"text-xl\" [icon]=\"showShortcuts() ? item.iconShortcut! : item.iconTab!\"></fa-icon>\n </ion-tab-button>\n }\n </ion-tab-bar>\n</ion-tabs>", styles: ["ion-tab-button{--color--active-tab: #FAB206;--color-focused: var(--color--active-tab);--color-selected: var(--color--active-tab);font-size:14px;padding-top:10px;padding-bottom:10px}ion-tab-button.ion-tab-button--hme{--color--active-tab: var(--color-hme);--ripple-color: var(--color-hme)}ion-tab-button.ion-tab-button--ord{--color--active-tab: var(--color-ord);--ripple-color: var(--color-ord)}ion-tab-button.ion-tab-button--qua{--color--active-tab: var(--color-qua);--ripple-color: var(--color-qua)}ion-tab-button.ion-tab-button--rel{--color--active-tab: var(--color-rel);--ripple-color: var(--color-rel)}ion-tab-button.ion-tab-button--rfr{--color--active-tab: var(--color-rfr);--ripple-color: var(--color-rfr)}ion-tab-button.ion-tab-button--sta{--color--active-tab: var(--color-sta);--ripple-color: var(--color-sta)}\n"], dependencies: [{ kind: "component", type: IonTabs, selector: "ion-tabs" }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonTabBar, selector: "ion-tab-bar", inputs: ["color", "mode", "selectedTab", "translucent"] }, { kind: "component", type: IonTabButton, selector: "ion-tab-button", inputs: ["disabled", "download", "href", "layout", "mode", "rel", "selected", "tab", "target"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: SpxTabsComponent, isStandalone: true, selector: "spx-tabs", inputs: { optionalNavItemBool: { classPropertyName: "optionalNavItemBool", publicName: "optionalNavItemBool", isSignal: true, isRequired: false, transformFunction: null }, isTestEnvironment: { classPropertyName: "isTestEnvironment", publicName: "isTestEnvironment", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ion-tabs #tabs select=\"home\">\n <ion-tab-bar slot=\"bottom\" class=\"border-t border-gray-200\" [class.ion-tab-bar--test-environment]=\"isTestEnvironment()\">\n @for (item of shownNavItems(); track item.title) {\n <ion-tab-button [ngClass]=\"'ion-tab-button--' + item.code\" [tab]=\"item.code\"\n [attr.data-e2e]=\"'tab--' + item.code\">\n <fa-icon class=\"text-xl\" [icon]=\"showShortcuts() ? item.iconShortcut! : item.iconTab!\"></fa-icon>\n </ion-tab-button>\n }\n </ion-tab-bar>\n</ion-tabs>\n", styles: ["ion-tab-bar.ion-tab-bar--test-environment{--background: red}ion-tab-button{--color--active-tab: #FAB206;--color-focused: var(--color--active-tab);--color-selected: var(--color--active-tab);font-size:14px;padding-top:10px;padding-bottom:10px}ion-tab-button.ion-tab-button--hme{--color--active-tab: var(--color-hme);--ripple-color: var(--color-hme)}ion-tab-button.ion-tab-button--ord{--color--active-tab: var(--color-ord);--ripple-color: var(--color-ord)}ion-tab-button.ion-tab-button--qua{--color--active-tab: var(--color-qua);--ripple-color: var(--color-qua)}ion-tab-button.ion-tab-button--rel{--color--active-tab: var(--color-rel);--ripple-color: var(--color-rel)}ion-tab-button.ion-tab-button--rfr{--color--active-tab: var(--color-rfr);--ripple-color: var(--color-rfr)}ion-tab-button.ion-tab-button--sta{--color--active-tab: var(--color-sta);--ripple-color: var(--color-sta)}\n"], dependencies: [{ kind: "component", type: IonTabs, selector: "ion-tabs" }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonTabBar, selector: "ion-tab-bar", inputs: ["color", "mode", "selectedTab", "translucent"] }, { kind: "component", type: IonTabButton, selector: "ion-tab-button", inputs: ["disabled", "download", "href", "layout", "mode", "rel", "selected", "tab", "target"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
70
  }
70
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: SpxTabsComponent, decorators: [{
71
72
  type: Component,
@@ -76,8 +77,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
76
77
  IonTabButton,
77
78
  FaIconComponent,
78
79
  NgClass
79
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-tabs #tabs select=\"home\">\n <ion-tab-bar slot=\"bottom\" class=\"border-t border-gray-200\">\n @for (item of shownNavItems(); track item.title) {\n <ion-tab-button [ngClass]=\"'ion-tab-button--' + item.code\" [tab]=\"item.code\"\n [attr.data-e2e]=\"'tab--' + item.code\">\n <fa-icon class=\"text-xl\" [icon]=\"showShortcuts() ? item.iconShortcut! : item.iconTab!\"></fa-icon>\n </ion-tab-button>\n }\n </ion-tab-bar>\n</ion-tabs>", styles: ["ion-tab-button{--color--active-tab: #FAB206;--color-focused: var(--color--active-tab);--color-selected: var(--color--active-tab);font-size:14px;padding-top:10px;padding-bottom:10px}ion-tab-button.ion-tab-button--hme{--color--active-tab: var(--color-hme);--ripple-color: var(--color-hme)}ion-tab-button.ion-tab-button--ord{--color--active-tab: var(--color-ord);--ripple-color: var(--color-ord)}ion-tab-button.ion-tab-button--qua{--color--active-tab: var(--color-qua);--ripple-color: var(--color-qua)}ion-tab-button.ion-tab-button--rel{--color--active-tab: var(--color-rel);--ripple-color: var(--color-rel)}ion-tab-button.ion-tab-button--rfr{--color--active-tab: var(--color-rfr);--ripple-color: var(--color-rfr)}ion-tab-button.ion-tab-button--sta{--color--active-tab: var(--color-sta);--ripple-color: var(--color-sta)}\n"] }]
80
- }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { optionalNavItemBool: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionalNavItemBool", required: false }] }] } });
80
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-tabs #tabs select=\"home\">\n <ion-tab-bar slot=\"bottom\" class=\"border-t border-gray-200\" [class.ion-tab-bar--test-environment]=\"isTestEnvironment()\">\n @for (item of shownNavItems(); track item.title) {\n <ion-tab-button [ngClass]=\"'ion-tab-button--' + item.code\" [tab]=\"item.code\"\n [attr.data-e2e]=\"'tab--' + item.code\">\n <fa-icon class=\"text-xl\" [icon]=\"showShortcuts() ? item.iconShortcut! : item.iconTab!\"></fa-icon>\n </ion-tab-button>\n }\n </ion-tab-bar>\n</ion-tabs>\n", styles: ["ion-tab-bar.ion-tab-bar--test-environment{--background: red}ion-tab-button{--color--active-tab: #FAB206;--color-focused: var(--color--active-tab);--color-selected: var(--color--active-tab);font-size:14px;padding-top:10px;padding-bottom:10px}ion-tab-button.ion-tab-button--hme{--color--active-tab: var(--color-hme);--ripple-color: var(--color-hme)}ion-tab-button.ion-tab-button--ord{--color--active-tab: var(--color-ord);--ripple-color: var(--color-ord)}ion-tab-button.ion-tab-button--qua{--color--active-tab: var(--color-qua);--ripple-color: var(--color-qua)}ion-tab-button.ion-tab-button--rel{--color--active-tab: var(--color-rel);--ripple-color: var(--color-rel)}ion-tab-button.ion-tab-button--rfr{--color--active-tab: var(--color-rfr);--ripple-color: var(--color-rfr)}ion-tab-button.ion-tab-button--sta{--color--active-tab: var(--color-sta);--ripple-color: var(--color-sta)}\n"] }]
81
+ }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { optionalNavItemBool: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionalNavItemBool", required: false }] }], isTestEnvironment: [{ type: i0.Input, args: [{ isSignal: true, alias: "isTestEnvironment", required: false }] }] } });
81
82
 
82
83
  /**
83
84
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"softpak-components-spx-tabs.mjs","sources":["../../../../projects/softpak/components/spx-tabs/store/spx-shortcuts.actions.ts","../../../../projects/softpak/components/spx-tabs/store/spx-shortcuts.reducer.ts","../../../../projects/softpak/components/spx-tabs/src/spx-tabs.component.ts","../../../../projects/softpak/components/spx-tabs/src/spx-tabs.component.html","../../../../projects/softpak/components/spx-tabs/softpak-components-spx-tabs.ts"],"sourcesContent":["import { createActionGroup, props } from '@ngrx/store';\n\nexport const spxShortcutsActions = createActionGroup({\n source: 'SpxShortcuts',\n events: {\n Ctrl: props<{ keyIsDown: boolean; }>(),\n },\n});\n","import { createFeature, createReducer, on } from '@ngrx/store';\n\nimport { spxShortcutsActions } from './spx-shortcuts.actions';\n\nexport interface StateI {\n ctrlIsDown: boolean;\n}\n\nexport const initialState: StateI = {\n ctrlIsDown: false,\n};\n\nexport default createFeature({\n name: 'spxShortcuts',\n reducer: createReducer(\n initialState,\n on(spxShortcutsActions.ctrl, (state: StateI, { keyIsDown }): StateI => ({\n ...state,\n ctrlIsDown: keyIsDown,\n })),\n )}\n);","import { ChangeDetectionStrategy, Component, computed, input, OnInit, signal } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\nimport { IonTabBar, IonTabButton, IonTabs } from \"@ionic/angular/standalone\";\nimport { Store } from \"@ngrx/store\";\nimport { unsubscribeSubscriptions } from \"@softpak/components/spx-helpers\";\nimport { SpxNavigationItemI, spxNavigationReducer } from \"@softpak/components/spx-navigation\";\nimport { Subscription } from \"rxjs\";\nimport { NgClass } from \"@angular/common\";\nimport spxShortCutsReducer from '../store/spx-shortcuts.reducer';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'spx-tabs',\n standalone: true,\n imports: [\n IonTabs, \n FormsModule,\n IonTabBar,\n IonTabButton,\n FaIconComponent,\n NgClass\n ],\n templateUrl: './spx-tabs.component.html',\n styleUrl: './spx-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpxTabsComponent implements OnInit {\n navItems = signal<SpxNavigationItemI[]>([]);\n shownNavItems = computed(() => {\n const show = this.optionalNavItemBool();\n return this.navItems().filter((navItem) => {\n return !navItem.currentSettingsRequired || (navItem.currentSettingsRequired && show);\n });\n });\n\n showShortcuts = signal<boolean>(false);\n optionalNavItemBool = input<boolean>(true);\n private subscription: {\n ctrlState?: Subscription;\n menuState?: Subscription;\n } = {};\n\n constructor(\n private readonly store: Store,\n ) { }\n\n ngOnInit() {\n this.listenToMenuState();\n this.listenToCtrlState();\n }\n\n ngOnDestroy() {\n unsubscribeSubscriptions(this.subscription);\n }\n\n private listenToCtrlState(): void {\n this.subscription.ctrlState = this.store.select(spxShortCutsReducer.selectCtrlIsDown).subscribe(ctrlIsDown => {\n this.showShortcuts.set(ctrlIsDown);\n });\n }\n\n private listenToMenuState(): void {\n this.subscription.menuState = this.store.select(spxNavigationReducer.default.selectTabs).subscribe((tabs) => {\n this.navItems.set(tabs);\n });\n }\n\n}","<ion-tabs #tabs select=\"home\">\n <ion-tab-bar slot=\"bottom\" class=\"border-t border-gray-200\">\n @for (item of shownNavItems(); track item.title) {\n <ion-tab-button [ngClass]=\"'ion-tab-button--' + item.code\" [tab]=\"item.code\"\n [attr.data-e2e]=\"'tab--' + item.code\">\n <fa-icon class=\"text-xl\" [icon]=\"showShortcuts() ? item.iconShortcut! : item.iconTab!\"></fa-icon>\n </ion-tab-button>\n }\n </ion-tab-bar>\n</ion-tabs>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["spxShortCutsReducer"],"mappings":"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"}
1
+ {"version":3,"file":"softpak-components-spx-tabs.mjs","sources":["../../../../projects/softpak/components/spx-tabs/store/spx-shortcuts.actions.ts","../../../../projects/softpak/components/spx-tabs/store/spx-shortcuts.reducer.ts","../../../../projects/softpak/components/spx-tabs/src/spx-tabs.component.ts","../../../../projects/softpak/components/spx-tabs/src/spx-tabs.component.html","../../../../projects/softpak/components/spx-tabs/softpak-components-spx-tabs.ts"],"sourcesContent":["import { createActionGroup, props } from '@ngrx/store';\n\nexport const spxShortcutsActions = createActionGroup({\n source: 'SpxShortcuts',\n events: {\n Ctrl: props<{ keyIsDown: boolean; }>(),\n },\n});\n","import { createFeature, createReducer, on } from '@ngrx/store';\n\nimport { spxShortcutsActions } from './spx-shortcuts.actions';\n\nexport interface StateI {\n ctrlIsDown: boolean;\n}\n\nexport const initialState: StateI = {\n ctrlIsDown: false,\n};\n\nexport default createFeature({\n name: 'spxShortcuts',\n reducer: createReducer(\n initialState,\n on(spxShortcutsActions.ctrl, (state: StateI, { keyIsDown }): StateI => ({\n ...state,\n ctrlIsDown: keyIsDown,\n })),\n )}\n);","import { ChangeDetectionStrategy, Component, computed, input, OnInit, signal } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\nimport { IonTabBar, IonTabButton, IonTabs } from \"@ionic/angular/standalone\";\nimport { Store } from \"@ngrx/store\";\nimport { unsubscribeSubscriptions } from \"@softpak/components/spx-helpers\";\nimport { SpxNavigationItemI, spxNavigationReducer } from \"@softpak/components/spx-navigation\";\nimport { Subscription } from \"rxjs\";\nimport { NgClass } from \"@angular/common\";\nimport spxShortCutsReducer from '../store/spx-shortcuts.reducer';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'spx-tabs',\n standalone: true,\n imports: [\n IonTabs, \n FormsModule,\n IonTabBar,\n IonTabButton,\n FaIconComponent,\n NgClass\n ],\n templateUrl: './spx-tabs.component.html',\n styleUrl: './spx-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpxTabsComponent implements OnInit {\n navItems = signal<SpxNavigationItemI[]>([]);\n shownNavItems = computed(() => {\n const show = this.optionalNavItemBool();\n return this.navItems().filter((navItem) => {\n return !navItem.currentSettingsRequired || (navItem.currentSettingsRequired && show);\n });\n });\n\n showShortcuts = signal<boolean>(false);\n optionalNavItemBool = input<boolean>(true);\n isTestEnvironment = input<boolean>(false);\n private subscription: {\n ctrlState?: Subscription;\n menuState?: Subscription;\n } = {};\n\n constructor(\n private readonly store: Store,\n ) { }\n\n ngOnInit() {\n this.listenToMenuState();\n this.listenToCtrlState();\n }\n\n ngOnDestroy() {\n unsubscribeSubscriptions(this.subscription);\n }\n\n private listenToCtrlState(): void {\n this.subscription.ctrlState = this.store.select(spxShortCutsReducer.selectCtrlIsDown).subscribe(ctrlIsDown => {\n this.showShortcuts.set(ctrlIsDown);\n });\n }\n\n private listenToMenuState(): void {\n this.subscription.menuState = this.store.select(spxNavigationReducer.default.selectTabs).subscribe((tabs) => {\n this.navItems.set(tabs);\n });\n }\n\n}\n","<ion-tabs #tabs select=\"home\">\n <ion-tab-bar slot=\"bottom\" class=\"border-t border-gray-200\" [class.ion-tab-bar--test-environment]=\"isTestEnvironment()\">\n @for (item of shownNavItems(); track item.title) {\n <ion-tab-button [ngClass]=\"'ion-tab-button--' + item.code\" [tab]=\"item.code\"\n [attr.data-e2e]=\"'tab--' + item.code\">\n <fa-icon class=\"text-xl\" [icon]=\"showShortcuts() ? item.iconShortcut! : item.iconTab!\"></fa-icon>\n </ion-tab-button>\n }\n </ion-tab-bar>\n</ion-tabs>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["spxShortCutsReducer"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softpak/components",
3
- "version": "21.3.2",
3
+ "version": "21.3.3",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "21.x.x",
@@ -10,6 +10,7 @@ declare class SpxTabsComponent implements OnInit {
10
10
  shownNavItems: _angular_core.Signal<SpxNavigationItemI[]>;
11
11
  showShortcuts: _angular_core.WritableSignal<boolean>;
12
12
  optionalNavItemBool: _angular_core.InputSignal<boolean>;
13
+ isTestEnvironment: _angular_core.InputSignal<boolean>;
13
14
  private subscription;
14
15
  constructor(store: Store);
15
16
  ngOnInit(): void;
@@ -17,7 +18,7 @@ declare class SpxTabsComponent implements OnInit {
17
18
  private listenToCtrlState;
18
19
  private listenToMenuState;
19
20
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpxTabsComponent, never>;
20
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpxTabsComponent, "spx-tabs", never, { "optionalNavItemBool": { "alias": "optionalNavItemBool"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpxTabsComponent, "spx-tabs", never, { "optionalNavItemBool": { "alias": "optionalNavItemBool"; "required": false; "isSignal": true; }; "isTestEnvironment": { "alias": "isTestEnvironment"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
22
  }
22
23
 
23
24
  declare const spxShortcutsActions: {