From 9299f3408d60ca13191ffca4ad79f655d90d114c Mon Sep 17 00:00:00 2001 From: Michael HENKENS Date: Wed, 23 Oct 2024 11:49:22 +0200 Subject: [PATCH] test(stark-ui): use harnesses action-bar component app-data component app-menu component use harnesses for testing ISSUES CLOSED: #2767 --- .../components/action-bar.component.spec.ts | 88 ++++++---- .../src/modules/app-data/components.ts | 1 + .../components/app-data.component.harness.ts | 52 ++++++ .../components/app-data.component.spec.ts | 166 ++++++++---------- .../components/app-menu.component.harness.ts | 7 + .../components/app-menu.component.spec.ts | 14 +- showcase/package-lock.json | 30 ++-- showcase/package.json | 10 +- starter/package.json | 8 +- 9 files changed, 217 insertions(+), 159 deletions(-) create mode 100644 packages/stark-ui/src/modules/app-data/components/app-data.component.harness.ts create mode 100644 packages/stark-ui/src/modules/app-menu/components/app-menu.component.harness.ts diff --git a/packages/stark-ui/src/modules/action-bar/components/action-bar.component.spec.ts b/packages/stark-ui/src/modules/action-bar/components/action-bar.component.spec.ts index b974d12824..527462226a 100644 --- a/packages/stark-ui/src/modules/action-bar/components/action-bar.component.spec.ts +++ b/packages/stark-ui/src/modules/action-bar/components/action-bar.component.spec.ts @@ -1,18 +1,23 @@ -/* eslint-disable @angular-eslint/component-max-inline-declarations */ -import { Component, ViewChild } from "@angular/core"; -import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { + StarkActionBarComponent, + StarkActionBarComponentMode +} from "@nationalbankbelgium/stark-ui/src/modules/action-bar/components/action-bar.component"; import { MatLegacyButtonModule as MatButtonModule } from "@angular/material/legacy-button"; import { MatIconModule } from "@angular/material/icon"; import { MatIconTestingModule } from "@angular/material/icon/testing"; import { MatLegacyMenuModule as MatMenuModule } from "@angular/material/legacy-menu"; import { MatLegacyTooltipModule as MatTooltipModule } from "@angular/material/legacy-tooltip"; +import { TranslateModule, TranslateService } from "@ngx-translate/core"; import { STARK_LOGGING_SERVICE } from "@nationalbankbelgium/stark-core"; import { MockStarkLoggingService } from "@nationalbankbelgium/stark-core/testing"; -import { TranslateModule, TranslateService } from "@ngx-translate/core"; -import { StarkActionBarComponent, StarkActionBarComponentMode } from "./action-bar.component"; -import { StarkAction } from "./action.intf"; -import { StarkActionBarConfig } from "./action-bar-config.intf"; +import { Component, ViewChild } from "@angular/core"; +import { StarkActionBarConfig } from "@nationalbankbelgium/stark-ui/src/modules/action-bar/components/action-bar-config.intf"; +import { StarkAction } from "@nationalbankbelgium/stark-ui/src/modules/action-bar/components/action.intf"; +import { HarnessLoader } from "@angular/cdk/testing"; import createSpy = jasmine.createSpy; +import { MatButtonHarness } from "@angular/material/button/testing"; +import { TestbedHarnessEnvironment } from "@angular/cdk/testing/testbed"; describe("ActionBarComponent", () => { @Component({ @@ -36,23 +41,21 @@ describe("ActionBarComponent", () => { public alternativeActions?: StarkAction[]; } - // IMPORTANT: The official way to test components using ChangeDetectionStrategy.OnPush is to wrap it with a test host component - // see https://github.com/angular/angular/issues/12313#issuecomment-444623173 let hostFixture: ComponentFixture; let hostComponent: TestHostComponent; let component: StarkActionBarComponent; - const buttonToggleSelector = ".extend-action-bar"; + let loader: HarnessLoader; - beforeEach(waitForAsync(() => - TestBed.configureTestingModule({ + beforeEach(async () => { + await TestBed.configureTestingModule({ declarations: [StarkActionBarComponent, TestHostComponent], imports: [MatButtonModule, MatIconModule, MatIconTestingModule, MatMenuModule, MatTooltipModule, TranslateModule.forRoot()], providers: [{ provide: STARK_LOGGING_SERVICE, useValue: new MockStarkLoggingService() }, TranslateService] - }).compileComponents())); + }).compileComponents(); - beforeEach(() => { hostFixture = TestBed.createComponent(TestHostComponent); hostComponent = hostFixture.componentInstance; + const demoActions: StarkAction[] = [ { id: "userDetailValidate", @@ -78,23 +81,27 @@ describe("ActionBarComponent", () => { }; hostFixture.detectChanges(); component = hostComponent.starkActionBar; + + loader = TestbedHarnessEnvironment.loader(hostFixture); }); describe("@Input() mode", () => { - it("should have the toggle action bar button visible in full mode", () => { + it("should have the toggle action bar button visible in full mode", async () => { hostComponent.mode = "full"; hostFixture.detectChanges(); - const buttonToggleExtend: HTMLElement = hostFixture.nativeElement.querySelector(buttonToggleSelector); - expect(buttonToggleExtend).toBeDefined(); + const extendActionBarButton = await loader.getHarnessOrNull(MatButtonHarness.with({ selector: ".extend-action-bar" })); + + expect(extendActionBarButton).toBeDefined(); }); - it("should not have the toggle action bar button visible in compact mode", () => { + it("should not have the toggle action bar button visible in compact mode", async () => { hostComponent.mode = "compact"; hostFixture.detectChanges(); - const buttonToggleExtend: HTMLElement = hostFixture.nativeElement.querySelector(buttonToggleSelector); - expect(buttonToggleExtend).toBeNull(); + const extendActionBarButton = await loader.getHarnessOrNull(MatButtonHarness.with({ selector: ".extend-action-bar" })); + + expect(extendActionBarButton).toBeNull(); }); }); @@ -109,19 +116,19 @@ describe("ActionBarComponent", () => { }); describe("@Input() actionBarConfig", () => { - it("should not call the defined action when disabled", () => { - const menuItem: HTMLElement = hostFixture.nativeElement.querySelector( - `#${hostComponent.actionBarId}-${hostComponent.actionBarConfig.actions[0].id}` + it("should not call the defined action when disabled", async () => { + const buttonHarness: MatButtonHarness[] = await loader.getAllHarnesses( + MatButtonHarness.with({ selector: ".stark-action-bar-action" }) ); - menuItem.click(); + await buttonHarness[0].click(); expect(hostComponent.actionBarConfig.actions[0].actionCall).not.toHaveBeenCalled(); }); - it("should call the defined action when enabled", () => { - const menuItem: HTMLElement = hostFixture.nativeElement.querySelector( - `#${hostComponent.actionBarId}-${hostComponent.actionBarConfig.actions[1].id}` + it("should not call the defined action when disabled", async () => { + const buttonHarness: MatButtonHarness[] = await loader.getAllHarnesses( + MatButtonHarness.with({ selector: ".stark-action-bar-action" }) ); - menuItem.click(); + await buttonHarness[1].click(); expect(hostComponent.actionBarConfig.actions[1].actionCall).toHaveBeenCalledTimes(1); }); }); @@ -132,29 +139,34 @@ describe("ActionBarComponent", () => { hostFixture.detectChanges(); }); - it("should display", () => { - const actionBar: HTMLElement = hostFixture.nativeElement.querySelector(".open-alt-actions"); - expect(actionBar).toBeDefined(); + it("should display", async () => { + const menuButton = await loader.getHarnessOrNull(MatButtonHarness.with({ selector: ".open-alt-actions" })); + expect(menuButton).not.toBeNull(); }); }); describe("toggle extended action bar", () => { - it("should toggle the action bar extension", () => { + it("should toggle the extended action bar", async () => { hostComponent.mode = "full"; hostFixture.detectChanges(); - const buttonToggleExtend: HTMLElement = hostFixture.nativeElement.querySelector(buttonToggleSelector); spyOn(component, "toggleExtendedActionBar").and.callThrough(); - buttonToggleExtend.click(); - hostFixture.detectChanges(); + const buttonHarness = await loader.getHarness( + MatButtonHarness.with({ + selector: ".extend-action-bar" + }) + ); + + await buttonHarness.click(); + hostFixture.detectChanges(); expect(component.toggleExtendedActionBar).toHaveBeenCalledTimes(1); - expect(component.isExtended).toBe(true); - buttonToggleExtend.click(); + expect(component.isExtended).toBeTrue(); + await buttonHarness.click(); hostFixture.detectChanges(); expect(component.toggleExtendedActionBar).toHaveBeenCalledTimes(2); - expect(component.isExtended).toBe(false); + expect(component.isExtended).toBeFalse(); }); }); }); diff --git a/packages/stark-ui/src/modules/app-data/components.ts b/packages/stark-ui/src/modules/app-data/components.ts index eb203a2ea6..d01e88e24e 100644 --- a/packages/stark-ui/src/modules/app-data/components.ts +++ b/packages/stark-ui/src/modules/app-data/components.ts @@ -1 +1,2 @@ export * from "./components/app-data.component"; +export * from "./components/app-data.component.harness"; diff --git a/packages/stark-ui/src/modules/app-data/components/app-data.component.harness.ts b/packages/stark-ui/src/modules/app-data/components/app-data.component.harness.ts new file mode 100644 index 0000000000..e2c2d35c95 --- /dev/null +++ b/packages/stark-ui/src/modules/app-data/components/app-data.component.harness.ts @@ -0,0 +1,52 @@ +import { ComponentHarness } from "@angular/cdk/testing"; +import { MatLegacyMenuHarness } from "@angular/material/legacy-menu/testing"; + +export class StarkAppDataComponentHarness extends ComponentHarness { + public static hostSelector = "stark-app-data"; + + protected getSummary = this.locatorForOptional(".stark-app-data-summary"); + protected getDropdownDiv = this.locatorForOptional(".stark-app-data.dropdown"); + protected getMenuDiv = this.locatorForOptional(".stark-app-data.menu"); + + public getDropdownHarness = this.locatorForOptional(MatLegacyMenuHarness); + + public async isSummaryPresent(): Promise { + const detail = await this.getSummary(); + return !!detail; + } + + public async getSummaryText(): Promise { + const summary = await this.getSummary(); + return summary ? summary.text() : undefined; + } + + public async isDropdownDivPresent(): Promise { + const dropdown = await this.getDropdownDiv(); + return !!dropdown; + } + + public async isMenuDivPresent(): Promise { + const menu = await this.getMenuDiv(); + return !!menu; + } + + public async getDropdownDetailContentText(): Promise { + const rootLocator = this.documentRootLocatorFactory(); + const element = await rootLocator.locatorForOptional(".mat-menu-content")(); + return element ? element.text() : undefined; + } + + public async openDropdownDetail(): Promise { + const matMenuHarness = await this.getDropdownHarness(); + if (matMenuHarness) { + await matMenuHarness.open(); + } + } + + public async closeDropdownDetail(): Promise { + const matMenuHarness = await this.getDropdownHarness(); + if (matMenuHarness) { + await matMenuHarness.close(); + } + } +} diff --git a/packages/stark-ui/src/modules/app-data/components/app-data.component.spec.ts b/packages/stark-ui/src/modules/app-data/components/app-data.component.spec.ts index 02bd11a980..c8517f9114 100644 --- a/packages/stark-ui/src/modules/app-data/components/app-data.component.spec.ts +++ b/packages/stark-ui/src/modules/app-data/components/app-data.component.spec.ts @@ -1,21 +1,23 @@ -/* eslint-disable @angular-eslint/component-max-inline-declarations, @angular-eslint/no-lifecycle-call */ +import { Component, ViewChild } from "@angular/core"; import { StarkAppDataComponent, StarkAppDataComponentMode } from "./app-data.component"; -import { STARK_LOGGING_SERVICE } from "@nationalbankbelgium/stark-core"; -import { fakeAsync, inject, tick, ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { HarnessLoader } from "@angular/cdk/testing"; +import { CommonModule } from "@angular/common"; import { MatLegacyButtonModule as MatButtonModule } from "@angular/material/legacy-button"; import { MatIconModule } from "@angular/material/icon"; import { MatIconTestingModule } from "@angular/material/icon/testing"; import { MatLegacyMenuModule as MatMenuModule } from "@angular/material/legacy-menu"; -import { CommonModule } from "@angular/common"; -import { TranslateModule, TranslateService } from "@ngx-translate/core"; import { MatLegacyTooltipModule as MatTooltipModule } from "@angular/material/legacy-tooltip"; -import { MockStarkLoggingService } from "@nationalbankbelgium/stark-core/testing"; import { NoopAnimationsModule } from "@angular/platform-browser/animations"; -import { ViewChild, Component } from "@angular/core"; -import { OverlayContainer } from "@angular/cdk/overlay"; +import { TranslateModule, TranslateService } from "@ngx-translate/core"; +import { STARK_LOGGING_SERVICE } from "@nationalbankbelgium/stark-core"; +import { TestbedHarnessEnvironment } from "@angular/cdk/testing/testbed"; +import { StarkAppDataComponentHarness } from "./app-data.component.harness"; +import { MockStarkLoggingService } from "@nationalbankbelgium/stark-core/testing"; +import { MatLegacyMenuHarness } from "@angular/material/legacy-menu/testing"; @Component({ - selector: `host-component`, + selector: "host-component", template: `
This is the summary
@@ -33,16 +35,15 @@ describe("AppDataComponent", () => { let component: StarkAppDataComponent; let hostComponent: TestHostComponent; let hostFixture: ComponentFixture; - - // Rendered menu context - let overlayContainer: OverlayContainer; - let overlayContainerElement: HTMLElement; + let loader: HarnessLoader; const detailSlotContent = "This is the detail"; const summarySlotContent = "This is the summary"; const mockLogger: MockStarkLoggingService = new MockStarkLoggingService(); + let starkAppDataHarness: StarkAppDataComponentHarness; + beforeEach(waitForAsync(() => TestBed.configureTestingModule({ declarations: [StarkAppDataComponent, TestHostComponent], @@ -59,18 +60,13 @@ describe("AppDataComponent", () => { providers: [{ provide: STARK_LOGGING_SERVICE, useValue: mockLogger }, TranslateService] }).compileComponents())); - beforeEach(() => { - // OverlayContainer needs to be injected to get the context for the rendered menu dropdown - inject([OverlayContainer], (oc: OverlayContainer) => { - overlayContainer = oc; - overlayContainerElement = overlayContainer.getContainerElement(); - })(); - + beforeEach(async () => { hostFixture = TestBed.createComponent(TestHostComponent); hostComponent = hostFixture.componentInstance; - hostFixture.detectChanges(); - component = hostComponent.appDataComponent; + loader = TestbedHarnessEnvironment.loader(hostFixture); + hostFixture.detectChanges(); + starkAppDataHarness = await loader.getHarness(StarkAppDataComponentHarness); }); describe("on initialization", () => { @@ -85,116 +81,98 @@ describe("AppDataComponent", () => { }); describe("using 'dropdown' mode", () => { - // Prepare hostComponent - beforeEach(() => { + beforeEach(async () => { hostComponent.mode = "dropdown"; hostFixture.detectChanges(); }); + it("dropdown div should be present", async () => { + expect(await starkAppDataHarness.isDropdownDivPresent()).toBeTrue(); + }); + + it("menu div should NOT be present", async () => { + expect(await starkAppDataHarness.isMenuDivPresent()).toBeFalse(); + }); + describe("summary", () => { - it("should display the summary content", () => { - const summary: HTMLElement = hostFixture.nativeElement.querySelector(".stark-app-data-summary"); - expect(summary).toBeDefined(); - expect(summary.innerText).toContain(summarySlotContent); + it("should display the summary content", async () => { + expect(await starkAppDataHarness.isSummaryPresent()).toBeTrue(); + expect(await starkAppDataHarness.getSummaryText()).toBe(summarySlotContent); }); }); describe("detail", () => { - it("detail information should NOT be displayed on init", () => { - expect(overlayContainerElement.textContent).toBe(""); + it("detail information should NOT be displayed on init", async () => { + const menu = await starkAppDataHarness.getDropdownHarness(); + expect(menu).toBeDefined(); + expect(menu).not.toBeNull(); + expect(menu ? await menu.isOpen() : true).toBeFalse(); }); describe("open detail", () => { - beforeEach(() => { - // Open Detail - const button: HTMLButtonElement = hostFixture.nativeElement.querySelector(".stark-app-data.dropdown button"); - button.click(); - hostFixture.detectChanges(); + let menu: MatLegacyMenuHarness; + beforeEach(async () => { + const m = await starkAppDataHarness.getDropdownHarness(); + if (m) { + menu = m; + } else { + fail("Menu not found"); + } + await menu.open(); }); - it("clicking button should display detail information", () => { - expect(overlayContainerElement.textContent).toBe(detailSlotContent); - const matPanelElement = overlayContainerElement.querySelector(".mat-menu-panel"); - expect(matPanelElement.classList).toContain("stark-app-data"); - expect(matPanelElement.classList).toContain("dropdown-detail"); + it("clicking button should display detail information", async () => { + expect(await menu.isOpen()).toBeTrue(); + expect(await starkAppDataHarness.getDropdownDetailContentText()).toBe(detailSlotContent); }); - it("clicking outside the mat-menu-panel should close the detail", fakeAsync(() => { - const backdrop = overlayContainerElement.querySelector(".cdk-overlay-backdrop"); - backdrop.click(); - hostFixture.detectChanges(); - tick(500); - - expect(overlayContainerElement.textContent).toBe(""); - })); - - it("clicking inside the mat-menu-panel should NOT close the detail", fakeAsync(() => { - const detail = overlayContainerElement.querySelector(".stark-app-data-detail"); - expect(detail).not.toBeNull(); - detail.click(); - hostFixture.detectChanges(); - tick(500); - - expect(overlayContainerElement.textContent).toBe(detailSlotContent); - })); + it("closing popup should hide the detail", async () => { + await menu.close(); + expect(await menu.isOpen()).toBeFalse(); + expect(await starkAppDataHarness.getDropdownDetailContentText()).not.toBeDefined(); + }); }); }); }); describe("using 'menu' mode", () => { - // Prepare hostComponent beforeEach(() => { hostComponent.mode = "menu"; hostFixture.detectChanges(); }); + it("dropdown div should NOT be present", async () => { + expect(await starkAppDataHarness.isDropdownDivPresent()).toBeFalse(); + }); + + it("menu div should be present", async () => { + expect(await starkAppDataHarness.isMenuDivPresent()).toBeTrue(); + }); + describe("summary", () => { - it("should NOT display the summary content", () => { - const summary: HTMLElement | null = hostFixture.nativeElement.querySelector(".stark-app-data-summary"); - expect(summary).toBeNull(); + it("should NOT display the summary content", async () => { + expect(await starkAppDataHarness.getSummaryText()).toBeUndefined(); }); }); describe("detail", () => { - it("detail information should NOT be displayed on init", () => { - expect(overlayContainerElement.textContent).toBe(""); + it("detail information should NOT be displayed on init", async () => { + expect(await starkAppDataHarness.getDropdownDetailContentText()).toBeUndefined(); }); describe("open detail", () => { - beforeEach(() => { - // Open Detail - const button: HTMLButtonElement = hostFixture.nativeElement.querySelector(".stark-app-data.menu button"); - button.click(); - hostFixture.detectChanges(); + beforeEach(async () => { + await starkAppDataHarness.openDropdownDetail(); }); - it("clicking button should display detail information", () => { - expect(overlayContainerElement.textContent).toBe(detailSlotContent); - const matPanelElement = overlayContainerElement.querySelector(".mat-menu-panel"); - expect(matPanelElement.classList).toContain("stark-app-data"); - expect(matPanelElement.classList).toContain("menu-detail"); + it("should display detail information", async () => { + expect(await starkAppDataHarness.getDropdownDetailContentText()).toBe(detailSlotContent); }); - it("clicking outside the mat-menu-panel should close the detail", fakeAsync(() => { - const backdrop = overlayContainerElement.querySelector(".cdk-overlay-backdrop"); - backdrop.click(); - hostFixture.detectChanges(); - tick(500); - - expect(overlayContainerElement.textContent).toBe(""); - })); - - it("clicking inside the mat-menu-panel should NOT close the detail", fakeAsync(() => { - expect(overlayContainerElement.textContent).toBe(detailSlotContent); - - const detail = overlayContainerElement.querySelector(".stark-app-data-detail"); - expect(detail).not.toBeNull(); - detail.click(); - hostFixture.detectChanges(); - tick(500); - - expect(overlayContainerElement.textContent).toBe(detailSlotContent); - })); + it("when closed should hide the detail", async () => { + await starkAppDataHarness.closeDropdownDetail(); + expect(await starkAppDataHarness.getDropdownDetailContentText()).toBeUndefined(); + }); }); }); }); diff --git a/packages/stark-ui/src/modules/app-menu/components/app-menu.component.harness.ts b/packages/stark-ui/src/modules/app-menu/components/app-menu.component.harness.ts new file mode 100644 index 0000000000..6e2877f57b --- /dev/null +++ b/packages/stark-ui/src/modules/app-menu/components/app-menu.component.harness.ts @@ -0,0 +1,7 @@ +import { ComponentHarness } from "@angular/cdk/testing"; + +export class StarkAppMenuComponentHarness extends ComponentHarness { + public static hostSelector = "stark-app-menu"; + + public getSectionTitle = this.locatorForOptional(".stark-section-title"); +} diff --git a/packages/stark-ui/src/modules/app-menu/components/app-menu.component.spec.ts b/packages/stark-ui/src/modules/app-menu/components/app-menu.component.spec.ts index c43e540631..1574c831fe 100644 --- a/packages/stark-ui/src/modules/app-menu/components/app-menu.component.spec.ts +++ b/packages/stark-ui/src/modules/app-menu/components/app-menu.component.spec.ts @@ -7,10 +7,15 @@ import { MatIconTestingModule } from "@angular/material/icon/testing"; import { StarkAppMenuComponent } from "./app-menu.component"; import { StarkAppMenuItemComponent } from "./app-menu-item.component"; import { UIRouterModule } from "@uirouter/angular"; +import { TestbedHarnessEnvironment } from "@angular/cdk/testing/testbed"; +import { HarnessLoader } from "@angular/cdk/testing"; +import { StarkAppMenuComponentHarness } from "./app-menu.component.harness"; describe("AppMenuComponent", () => { let component: StarkAppMenuComponent; let fixture: ComponentFixture; + let loader: HarnessLoader; + let appMenuHarness: StarkAppMenuComponentHarness; /** * async beforeEach @@ -32,13 +37,15 @@ describe("AppMenuComponent", () => { /** * Synchronous beforeEach */ - beforeEach(() => { + beforeEach(async () => { fixture = TestBed.createComponent(StarkAppMenuComponent); component = fixture.componentInstance; + loader = TestbedHarnessEnvironment.loader(fixture); + appMenuHarness = await loader.getHarness(StarkAppMenuComponentHarness); }); describe("sections", () => { - it("should have a section when menuSections property of menuConfig is set", () => { + it("should have a section when menuSections property of menuConfig is set", async () => { component.menuConfig = { menuSections: [ { @@ -56,7 +63,8 @@ describe("AppMenuComponent", () => { ] }; fixture.detectChanges(); - const sectionTitle: HTMLElement = fixture.nativeElement.querySelector(".stark-section-title"); + const sectionTitle = await appMenuHarness.getSectionTitle(); + expect(sectionTitle).not.toBeNull(); expect(sectionTitle).toBeDefined(); }); }); diff --git a/showcase/package-lock.json b/showcase/package-lock.json index aacd4c82b9..502cb638c5 100644 --- a/showcase/package-lock.json +++ b/showcase/package-lock.json @@ -25,9 +25,9 @@ "@angular/router": "^16.2.12", "@nationalbankbelgium/code-style": "^1.11.0", "@nationalbankbelgium/ngx-form-errors": "2.0.1", - "@nationalbankbelgium/stark-core": "file:../dist/packages-dist/stark-core/nationalbankbelgium-stark-core-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "@nationalbankbelgium/stark-rbac": "file:../dist/packages-dist/stark-rbac/nationalbankbelgium-stark-rbac-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "@nationalbankbelgium/stark-ui": "file:../dist/packages-dist/stark-ui/nationalbankbelgium-stark-ui-12.0.0-rc.0-f7a24d7d-1728638970.tgz", + "@nationalbankbelgium/stark-core": "file:../dist/packages-dist/stark-core/nationalbankbelgium-stark-core-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-rbac": "file:../dist/packages-dist/stark-rbac/nationalbankbelgium-stark-rbac-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-ui": "file:../dist/packages-dist/stark-ui/nationalbankbelgium-stark-ui-12.0.0-f7203525-1729673515.tgz", "@uirouter/visualizer": "~7.2.1", "angular-in-memory-web-api": "~0.16.0", "basscss": "~8.1.0", @@ -43,8 +43,8 @@ "devDependencies": { "@compodoc/compodoc": "1.1.25", "@nationalbankbelgium/eslint-config": "^16.0.0", - "@nationalbankbelgium/stark-build": "file:../dist/packages-dist/stark-build/nationalbankbelgium-stark-build-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "@nationalbankbelgium/stark-testing": "file:../dist/packages-dist/stark-testing/nationalbankbelgium-stark-testing-12.0.0-rc.0-f7a24d7d-1728638970.tgz", + "@nationalbankbelgium/stark-build": "file:../dist/packages-dist/stark-build/nationalbankbelgium-stark-build-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-testing": "file:../dist/packages-dist/stark-testing/nationalbankbelgium-stark-testing-12.0.0-f7203525-1729673515.tgz", "@types/core-js": "~2.5.4", "@types/hammerjs": "~2.0.39", "@types/node": "^18.19.4", @@ -5011,8 +5011,8 @@ }, "node_modules/@nationalbankbelgium/stark-build": { "version": "12.0.0-rc.0-f78a6023", - "resolved": "file:../dist/packages-dist/stark-build/nationalbankbelgium-stark-build-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "integrity": "sha512-MVVOaSg7hZ6TVG+jb18D7uMVkjHObMivCgF+K0/L0PxYITGLPdXITNfac5cO61ueSgH4fY4GiNNOEdvVwVKSdA==", + "resolved": "file:../dist/packages-dist/stark-build/nationalbankbelgium-stark-build-12.0.0-f7203525-1729673515.tgz", + "integrity": "sha512-bOJdPLL/Tvjbt5I+tQy/IY6xOGI2I8duELyXCqueADyvTx1pFHHgghCw5ZRhxEO5y8knNaza38/fiSjCxYOOKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5041,8 +5041,8 @@ }, "node_modules/@nationalbankbelgium/stark-core": { "version": "12.0.0-rc.0-f78a6023", - "resolved": "file:../dist/packages-dist/stark-core/nationalbankbelgium-stark-core-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "integrity": "sha512-6c4ffHgcDdxlx+I18P8QWQ1ArxrCCnpOhYlYHMiiE15uip+SGDgEvouL3g4lF2HtRjFtJxxPnuh27X4IzwTJyA==", + "resolved": "file:../dist/packages-dist/stark-core/nationalbankbelgium-stark-core-12.0.0-f7203525-1729673515.tgz", + "integrity": "sha512-Worvhl2HoyhUcLDaO01NAC24cwLqqvT/yzQRO7dmuqcjViX8VCNfMIEkTDmaHBeMSdDRViKupOpwQT9fVXBUOQ==", "license": "MIT", "dependencies": { "@angularclass/hmr": "^3.0.0", @@ -5091,8 +5091,8 @@ }, "node_modules/@nationalbankbelgium/stark-rbac": { "version": "12.0.0-rc.0-f78a6023", - "resolved": "file:../dist/packages-dist/stark-rbac/nationalbankbelgium-stark-rbac-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "integrity": "sha512-FQw0g3Iuyr35Egisr7n9sm7ZTjG0FO/xidoyykA0DedAs46aILjLN5Mc4UKdM8DfXX/AIUs2Jiq8vpi4+NSVmQ==", + "resolved": "file:../dist/packages-dist/stark-rbac/nationalbankbelgium-stark-rbac-12.0.0-f7203525-1729673515.tgz", + "integrity": "sha512-t9TyBSmPYjsa520hy2ov8ZVf8ecmVEzRk9trNjmtkk20Qk01j3EwDxsmbluAbWsGPlCPW6VyRKg5gLT0eW/vDw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -5107,8 +5107,8 @@ }, "node_modules/@nationalbankbelgium/stark-testing": { "version": "12.0.0-rc.0-f78a6023", - "resolved": "file:../dist/packages-dist/stark-testing/nationalbankbelgium-stark-testing-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "integrity": "sha512-jOG6MrQ8PIoCdK0Q3vqv6Kpsv3+KOVDYFVXy9l+SeWxGw96Srrk3r9KGxK6fgMWi7WTe91a1SOXsSddxC0ZNGg==", + "resolved": "file:../dist/packages-dist/stark-testing/nationalbankbelgium-stark-testing-12.0.0-f7203525-1729673515.tgz", + "integrity": "sha512-Ew4WtfL2gHty2LHB7D+SFwpz5pZwPxnMAnBGnsx5nROU9DVI+Corwz/d2qRBzfYCdk3PzGtOJ7nFWa7sbV4wLw==", "dev": true, "license": "MIT", "dependencies": { @@ -5137,8 +5137,8 @@ }, "node_modules/@nationalbankbelgium/stark-ui": { "version": "12.0.0-rc.0-f78a6023", - "resolved": "file:../dist/packages-dist/stark-ui/nationalbankbelgium-stark-ui-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "integrity": "sha512-PT3RyznWU8hdlMC45C9CD9VSYbNVU2RR6tQH8GXfzy1yIT6K3gnyXH5JdUyup9GpSYsjAQCIcmTLbJmf86tAbQ==", + "resolved": "file:../dist/packages-dist/stark-ui/nationalbankbelgium-stark-ui-12.0.0-f7203525-1729673515.tgz", + "integrity": "sha512-RJMdUk06jZxnwpffIO1vUvdgHXOd1Cxv6fI5486BQXl5w4ag/YKi9Suwxz3NAm1r5gWBcFsXOZlR47CSRzd6gQ==", "license": "MIT", "dependencies": { "@angular/material-moment-adapter": "^16.2.14", diff --git a/showcase/package.json b/showcase/package.json index ffa44be5f1..15595ad60e 100644 --- a/showcase/package.json +++ b/showcase/package.json @@ -116,9 +116,9 @@ "@angular/router": "^16.2.12", "@nationalbankbelgium/code-style": "^1.11.0", "@nationalbankbelgium/ngx-form-errors": "2.0.1", - "@nationalbankbelgium/stark-core": "file:../dist/packages-dist/stark-core/nationalbankbelgium-stark-core-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "@nationalbankbelgium/stark-rbac": "file:../dist/packages-dist/stark-rbac/nationalbankbelgium-stark-rbac-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "@nationalbankbelgium/stark-ui": "file:../dist/packages-dist/stark-ui/nationalbankbelgium-stark-ui-12.0.0-rc.0-f7a24d7d-1728638970.tgz", + "@nationalbankbelgium/stark-core": "file:../dist/packages-dist/stark-core/nationalbankbelgium-stark-core-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-rbac": "file:../dist/packages-dist/stark-rbac/nationalbankbelgium-stark-rbac-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-ui": "file:../dist/packages-dist/stark-ui/nationalbankbelgium-stark-ui-12.0.0-f7203525-1729673515.tgz", "@uirouter/visualizer": "~7.2.1", "angular-in-memory-web-api": "~0.16.0", "basscss": "~8.1.0", @@ -134,8 +134,8 @@ "devDependencies": { "@compodoc/compodoc": "1.1.25", "@nationalbankbelgium/eslint-config": "^16.0.0", - "@nationalbankbelgium/stark-build": "file:../dist/packages-dist/stark-build/nationalbankbelgium-stark-build-12.0.0-rc.0-f7a24d7d-1728638970.tgz", - "@nationalbankbelgium/stark-testing": "file:../dist/packages-dist/stark-testing/nationalbankbelgium-stark-testing-12.0.0-rc.0-f7a24d7d-1728638970.tgz", + "@nationalbankbelgium/stark-build": "file:../dist/packages-dist/stark-build/nationalbankbelgium-stark-build-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-testing": "file:../dist/packages-dist/stark-testing/nationalbankbelgium-stark-testing-12.0.0-f7203525-1729673515.tgz", "@types/core-js": "~2.5.4", "@types/hammerjs": "~2.0.39", "@types/node": "^18.19.4", diff --git a/starter/package.json b/starter/package.json index 1ccfcad513..2de998113a 100644 --- a/starter/package.json +++ b/starter/package.json @@ -119,8 +119,8 @@ "@angular/platform-server": "^16.2.12", "@angular/router": "^16.2.12", "@nationalbankbelgium/code-style": "^1.11.0", - "@nationalbankbelgium/stark-ui": "next", - "@nationalbankbelgium/stark-core": "next", + "@nationalbankbelgium/stark-ui": "file:../dist/packages-dist/stark-ui/nationalbankbelgium-stark-ui-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-core": "file:../dist/packages-dist/stark-core/nationalbankbelgium-stark-core-12.0.0-f7203525-1729673515.tgz", "@uirouter/visualizer": "~7.2.1", "core-js": "~3.38.1", "eligrey-classlist-js-polyfill": "~1.2.20180112", @@ -134,8 +134,8 @@ "devDependencies": { "@compodoc/compodoc": "1.1.25", "@nationalbankbelgium/eslint-config": "^16.0.0", - "@nationalbankbelgium/stark-build": "next", - "@nationalbankbelgium/stark-testing": "next", + "@nationalbankbelgium/stark-build": "file:../dist/packages-dist/stark-build/nationalbankbelgium-stark-build-12.0.0-f7203525-1729673515.tgz", + "@nationalbankbelgium/stark-testing": "file:../dist/packages-dist/stark-testing/nationalbankbelgium-stark-testing-12.0.0-f7203525-1729673515.tgz", "@types/core-js": "~2.5.4", "@types/hammerjs": "~2.0.39", "@types/node": "^18.19.4",