diff --git a/core-libs/setup/package.json b/core-libs/setup/package.json index 84a5eeffcdf..4ae815b9507 100644 --- a/core-libs/setup/package.json +++ b/core-libs/setup/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/setup", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Includes features that makes Spartacus and it's setup easier and streamlined.", "keywords": [ "spartacus", @@ -21,10 +21,10 @@ "peerDependencies": { "@angular/core": "^17.0.5", "@angular/ssr": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/user": "2211.29.1" + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/user": "2211.30.0" }, "optionalDependencies": { "@angular/platform-server": "^17.0.5", diff --git a/feature-libs/asm/package.json b/feature-libs/asm/package.json index 9574a9aa1e4..4c4baa7b85a 100644 --- a/feature-libs/asm/package.json +++ b/feature-libs/asm/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/asm", - "version": "2211.29.1", + "version": "2211.30.0", "description": "ASM feature library for Spartacus", "keywords": [ "spartacus", @@ -32,14 +32,14 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefinder": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefinder": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/asm/styles/components/_asm-main-ui.component.scss b/feature-libs/asm/styles/components/_asm-main-ui.component.scss index 0a7904be848..665cf0b3922 100644 --- a/feature-libs/asm/styles/components/_asm-main-ui.component.scss +++ b/feature-libs/asm/styles/components/_asm-main-ui.component.scss @@ -89,8 +89,6 @@ // Top Bar .asm-bar { - color: #fff; - background-color: #354a5f; height: 48px; display: flex; padding: 0 2rem; diff --git a/feature-libs/asm/styles/components/_customer-selection.component.scss b/feature-libs/asm/styles/components/_customer-selection.component.scss index 32c3a4ce8fc..13736b488c1 100644 --- a/feature-libs/asm/styles/components/_customer-selection.component.scss +++ b/feature-libs/asm/styles/components/_customer-selection.component.scss @@ -41,7 +41,6 @@ @media (min-width: 575px) { margin-inline-end: 15px; - min-width: 20rem; margin-bottom: 0; min-width: 25rem; } diff --git a/feature-libs/cart/package.json b/feature-libs/cart/package.json index 7412f1aa97d..ded55aa678a 100644 --- a/feature-libs/cart/package.json +++ b/feature-libs/cart/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/cart", - "version": "2211.29.1", + "version": "2211.30.0", "description": "", "keywords": [ "spartacus", @@ -37,11 +37,11 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/checkout/package.json b/feature-libs/checkout/package.json index 9daf3db9284..4635d3d663f 100644 --- a/feature-libs/checkout/package.json +++ b/feature-libs/checkout/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/checkout", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Checkout feature library for Spartacus", "keywords": [ "spartacus", @@ -32,13 +32,13 @@ "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/checkout/schematics/add-checkout/__snapshots__/index_spec.ts.snap b/feature-libs/checkout/schematics/add-checkout/__snapshots__/index_spec.ts.snap index 961a71778f7..0229a6cd409 100644 --- a/feature-libs/checkout/schematics/add-checkout/__snapshots__/index_spec.ts.snap +++ b/feature-libs/checkout/schematics/add-checkout/__snapshots__/index_spec.ts.snap @@ -63,7 +63,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -514,7 +514,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) diff --git a/feature-libs/customer-ticketing/package.json b/feature-libs/customer-ticketing/package.json index 33e486a7fb7..d81d93ac357 100644 --- a/feature-libs/customer-ticketing/package.json +++ b/feature-libs/customer-ticketing/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/customer-ticketing", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Customer-Ticketing library for Spartacus", "keywords": [ "spartacus", @@ -30,11 +30,11 @@ "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/estimated-delivery-date/package.json b/feature-libs/estimated-delivery-date/package.json index e18895481f0..371912a56b9 100644 --- a/feature-libs/estimated-delivery-date/package.json +++ b/feature-libs/estimated-delivery-date/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/estimated-delivery-date", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Estimated Delivery Date library for Spartacus", "keywords": [ "spartacus", @@ -28,12 +28,12 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/order/package.json b/feature-libs/order/package.json index 8798cb04477..d182eeb9661 100644 --- a/feature-libs/order/package.json +++ b/feature-libs/order/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/order", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Order feature library for Spartacus", "keywords": [ "spartacus", @@ -33,13 +33,13 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/pdf-invoices": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/pdf-invoices": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/organization/package.json b/feature-libs/organization/package.json index 7387a6f25f7..01977428897 100644 --- a/feature-libs/organization/package.json +++ b/feature-libs/organization/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/organization", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Organization library for Spartacus", "keywords": [ "spartacus", @@ -33,13 +33,13 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/organization/schematics/add-organization/__snapshots__/index_spec.ts.snap b/feature-libs/organization/schematics/add-organization/__snapshots__/index_spec.ts.snap index b8925bd05a0..8b4cfc1d92d 100644 --- a/feature-libs/organization/schematics/add-organization/__snapshots__/index_spec.ts.snap +++ b/feature-libs/organization/schematics/add-organization/__snapshots__/index_spec.ts.snap @@ -51,7 +51,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -270,7 +270,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -489,7 +489,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -708,7 +708,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -927,7 +927,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) diff --git a/feature-libs/pdf-invoices/package.json b/feature-libs/pdf-invoices/package.json index c944f8991a0..ea58c701722 100644 --- a/feature-libs/pdf-invoices/package.json +++ b/feature-libs/pdf-invoices/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/pdf-invoices", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Invoices library for Spartacus", "keywords": [ "spartacus", @@ -29,10 +29,10 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/pickup-in-store/package.json b/feature-libs/pickup-in-store/package.json index 38d9a4f5de3..4d72dc25bc7 100644 --- a/feature-libs/pickup-in-store/package.json +++ b/feature-libs/pickup-in-store/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/pickup-in-store", - "version": "2211.29.1", + "version": "2211.30.0", "description": "", "keywords": [ "spartacus", @@ -32,14 +32,14 @@ "@angular/router": "^17.0.5", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefinder": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefinder": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/product-configurator/package.json b/feature-libs/product-configurator/package.json index 08be7486e2b..87b3717aded 100644 --- a/feature-libs/product-configurator/package.json +++ b/feature-libs/product-configurator/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/product-configurator", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Product configurator feature library for Spartacus", "keywords": [ "spartacus", @@ -33,13 +33,13 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/product-configurator/rulebased/components/service/configurator-storefront-utils.service.spec.ts b/feature-libs/product-configurator/rulebased/components/service/configurator-storefront-utils.service.spec.ts index 3f3609d4aff..71802a32209 100644 --- a/feature-libs/product-configurator/rulebased/components/service/configurator-storefront-utils.service.spec.ts +++ b/feature-libs/product-configurator/rulebased/components/service/configurator-storefront-utils.service.spec.ts @@ -20,6 +20,23 @@ import { Configurator } from '../../core/model/configurator.model'; import { ConfiguratorStorefrontUtilsService } from './configurator-storefront-utils.service'; import { ConfiguratorTestUtils } from '../../testing/configurator-test-utils'; +let mockedWindow: { + innerWidth?: number; + innerHeight?: number; + scrollY?: number; + scroll(): void; +} = { + innerWidth: 1000, + innerHeight: 1000, + scrollY: 1000, + scroll() {}, +}; +class MockedWindowRef extends WindowRef { + get nativeWindow(): Window | undefined { + return this.isBrowser() ? mockedWindow : undefined; + } +} + let isGroupVisited: Observable = of(false); const testSelector = 'test-configurator-overview-menu'; @@ -116,7 +133,6 @@ describe('ConfiguratorStorefrontUtilsService', () => { ); let windowRef: WindowRef; let keyboardFocusService: KeyboardFocusService; - let querySelectorOriginal: any; beforeEach(() => { mockRouterState.state.params.displayOnly = false; @@ -141,22 +157,26 @@ describe('ConfiguratorStorefrontUtilsService', () => { provide: ProductService, useClass: MockProductService, }, + { provide: WindowRef, useClass: MockedWindowRef }, ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }); classUnderTest = TestBed.inject(ConfiguratorStorefrontUtilsService); fixture = TestBed.createComponent(MockComponent); htmlElem = fixture.nativeElement; - windowRef = TestBed.inject(WindowRef as Type); + windowRef = TestBed.inject(WindowRef); + mockedWindow.innerHeight = 1000; + mockedWindow.innerWidth = 1000; + mockedWindow.scrollY = 1000; keyboardFocusService = TestBed.inject( KeyboardFocusService as Type ); - querySelectorOriginal = document.querySelector; }); afterEach(() => { - document.querySelector = querySelectorOriginal; - document.body.removeChild(htmlElem); + if (htmlElem) { + document.body.removeChild(htmlElem); + } }); it('should be created', () => { @@ -174,9 +194,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should scroll to element', () => { const theElement = document.createElement('div'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(theElement); + spyOn(windowRef.document, 'querySelector').and.returnValue(theElement); spyOn(theElement, 'getBoundingClientRect').and.returnValue( new DOMRect(100, 2000, 100, 100) ); @@ -308,9 +326,9 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should delegate to keyboard focus service', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const focusedElements = createFocusedElements('ATTR', 2, 3); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(focusedElements); + spyOn(windowRef.document, 'querySelector').and.returnValue( + focusedElements[0] + ); spyOn(keyboardFocusService, 'findFocusable').and.returnValue( focusedElements ); @@ -320,9 +338,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should not delegate to keyboard focus service because form is undefined', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(undefined); + spyOn(windowRef.document, 'querySelector').and.returnValue(undefined); spyOn(keyboardFocusService, 'findFocusable').and.returnValue([]); classUnderTest.focusFirstActiveElement('elementSelector'); expect(keyboardFocusService.findFocusable).toHaveBeenCalledTimes(0); @@ -338,9 +354,9 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should not delegate to keyboard focus service because keyboard focus service returns no focusable elements', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const focusedElements = createFocusedElements('ATTR', 2, 3); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(focusedElements); + spyOn(windowRef.document, 'querySelector').and.returnValue( + focusedElements[0] + ); spyOn(keyboardFocusService, 'findFocusable').and.returnValue([]); classUnderTest.focusFirstActiveElement('elementSelector'); expect(keyboardFocusService.findFocusable).toHaveBeenCalledTimes(1); @@ -394,9 +410,9 @@ describe('ConfiguratorStorefrontUtilsService', () => { .queryAll(By.css('label')) .map((el) => el.nativeNode); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(focusedElements); + spyOn(windowRef.document, 'querySelector').and.returnValue( + focusedElements + ); }); it('should not set focus because attribute does not contain any values', () => { @@ -458,9 +474,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { spyOn(keyboardFocusService, 'findFocusable').and.returnValue( focusedElements ); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(undefined); + asSpy(windowRef.document.querySelector).and.returnValue(undefined); verify(focusedElements); }); @@ -526,9 +540,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should get HTML element based on query selector', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const theElement = document.createElement('elementMock'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(theElement); + spyOn(windowRef.document, 'querySelector').and.returnValue(theElement); expect(classUnderTest.getElement('elementMock')).toEqual(theElement); }); @@ -537,9 +549,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { describe('changeStyling', () => { it('should change styling of HTML element', () => { const theElement = document.createElement('elementMock'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(undefined); + spyOn(windowRef.document, 'querySelector').and.returnValue(undefined); classUnderTest.changeStyling('elementMock', 'position', 'sticky'); expect(theElement.style.position).not.toEqual('sticky'); @@ -547,9 +557,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should change styling of HTML element', () => { const theElement = document.createElement('elementMock'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(theElement); + spyOn(windowRef.document, 'querySelector').and.returnValue(theElement); classUnderTest.changeStyling('elementMock', 'position', 'sticky'); expect(theElement.style.position).toEqual('sticky'); @@ -561,9 +569,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const theElement = document.createElement('elementMock'); theElement.style.position = 'sticky'; - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(undefined); + spyOn(windowRef.document, 'querySelector').and.returnValue(undefined); classUnderTest.removeStyling('elementMock', 'position'); expect(theElement.style.position).toEqual('sticky'); @@ -573,9 +579,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const theElement = document.createElement('elementMock'); theElement.style.position = 'sticky'; - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(theElement); + spyOn(windowRef.document, 'querySelector').and.returnValue(theElement); classUnderTest.removeStyling('elementMock', 'position'); expect(theElement.style.position).toBe(''); @@ -605,9 +609,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const elements: Array = createElements('section', 10); - document.querySelectorAll = jasmine - .createSpy('section') - .and.returnValue(elements); + asSpy(windowRef.document.querySelectorAll).and.returnValue(elements); const htmlElements = classUnderTest.getElements('section'); @@ -627,7 +629,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should return number of pixels that the document is currently scrolled vertically', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); - spyOnProperty(window, 'scrollY').and.returnValue(250); + mockedWindow.scrollY = 250; const nativeWindow = windowRef.nativeWindow; if (nativeWindow) { expect(classUnderTest.getVerticallyScrolledPixels()).toBe(250); @@ -637,9 +639,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { describe('hasScrollbar', () => { it('should return false because element is undefined', () => { - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(undefined); + spyOn(windowRef.document, 'querySelector').and.returnValue(undefined); expect(classUnderTest.hasScrollbar('elementMock')).toBe(false); }); @@ -711,27 +711,25 @@ describe('ConfiguratorStorefrontUtilsService', () => { label.style.height = '10px'; }); - spyOnProperty(window, 'innerWidth').and.returnValue(100); + mockedWindow.innerWidth = 100; expect(classUnderTest['isInViewport'](form)).toBe(false); }); - // TODO: CXSPA-8270 - fix failing tests on Azure & GiHub - xit("should return true because window's innerWith is known", () => { + it("should return true because window's innerWith is known", () => { form.style.display = 'flex'; form.style.flexDirection = 'column'; - spyOnProperty(window, 'innerWidth').and.returnValue(1000); + mockedWindow.innerWidth = 1000; expect(classUnderTest['isInViewport'](form)).toBe(true); }); - // TODO: CXSPA-8270 - fix failing tests on Azure & GiHub - xit('should return true because clientWidth of element is known and its right is less than its width', () => { + it('should return true because clientWidth of element is known and its right is less than its width', () => { form.style.display = 'flex'; form.style.flexDirection = 'column'; - spyOnProperty(window, 'innerWidth').and.returnValue(undefined); + mockedWindow.innerWidth = undefined; expect(classUnderTest['isInViewport'](form)).toBe(true); }); @@ -741,7 +739,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { form.style.flexDirection = 'column'; form.style.height = '1000px'; - spyOnProperty(window, 'innerHeight').and.returnValue(undefined); + mockedWindow.innerHeight = undefined; expect(classUnderTest['isInViewport'](form)).toBe(true); }); @@ -765,15 +763,14 @@ describe('ConfiguratorStorefrontUtilsService', () => { expect(classUnderTest['getHeight']('unknown-query')).toBe(0); }); - it('should return zero because form is not im viewport', () => { - spyOnProperty(window, 'innerWidth').and.returnValue(100); + it('should return zero because form is not in viewport', () => { + mockedWindow.innerWidth = 100; expect(classUnderTest['getHeight']('cx-configurator-form')).toBe(0); }); - // TODO: CXSPA-8270 - fix failing tests on Azure & GiHub - xit('should return offsetHeight of the element because form is not im viewport', () => { - spyOnProperty(window, 'innerWidth').and.returnValue(1000); + it('should return offsetHeight of the element because form is not in viewport', () => { + mockedWindow.innerWidth = 1000; expect( classUnderTest['getHeight']('cx-configurator-form') @@ -804,7 +801,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { addToCart = document.createElement('cx-configurator-add-to-cart-button'); document.body.append(addToCart); - spyOnProperty(window, 'innerWidth').and.returnValue(1000); + mockedWindow.innerWidth = 1000; } it('should return zero because isBrowser is undefined', () => { @@ -877,9 +874,7 @@ describe('ConfiguratorStorefrontUtilsService', () => { it('should not ensure visibility of the element', () => { spyOn(windowRef, 'isBrowser').and.returnValue(false); ovMenu = document.createElement('cx-configurator-overview-menu'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(ovMenu); + spyOn(windowRef.document, 'querySelector').and.returnValue(ovMenu); classUnderTest.ensureElementVisible( 'cx-configurator-overview-menu', undefined @@ -988,4 +983,8 @@ describe('ConfiguratorStorefrontUtilsService', () => { expect(classUnderTest.isLastSelected('name', 'code')).toBe(false); }); }); + + function asSpy(f: any) { + return f; + } }); diff --git a/feature-libs/product-configurator/rulebased/styles/_configurator-conflict-suggestion.scss b/feature-libs/product-configurator/rulebased/styles/_configurator-conflict-suggestion.scss index 47e7ac84bc7..2437661eab5 100644 --- a/feature-libs/product-configurator/rulebased/styles/_configurator-conflict-suggestion.scss +++ b/feature-libs/product-configurator/rulebased/styles/_configurator-conflict-suggestion.scss @@ -28,7 +28,6 @@ .cx-title { font-weight: bold; - padding-inline-start: 5px; padding-inline-end: 5px; padding-inline-start: 0px; } diff --git a/feature-libs/product-configurator/rulebased/styles/_configurator-group-menu.scss b/feature-libs/product-configurator/rulebased/styles/_configurator-group-menu.scss index 4871da8de53..1f7d30e7ae5 100644 --- a/feature-libs/product-configurator/rulebased/styles/_configurator-group-menu.scss +++ b/feature-libs/product-configurator/rulebased/styles/_configurator-group-menu.scss @@ -151,7 +151,6 @@ text-decoration: none; color: var(--cx-color-text); border: none; - background-color: transparent; outline-offset: 0px; width: 100%; diff --git a/feature-libs/product-configurator/schematics/add-product-configurator/__snapshots__/index_spec.ts.snap b/feature-libs/product-configurator/schematics/add-product-configurator/__snapshots__/index_spec.ts.snap index ab5c5789869..e5c6ebe52f0 100644 --- a/feature-libs/product-configurator/schematics/add-product-configurator/__snapshots__/index_spec.ts.snap +++ b/feature-libs/product-configurator/schematics/add-product-configurator/__snapshots__/index_spec.ts.snap @@ -58,7 +58,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -307,7 +307,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -542,7 +542,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } })] }) diff --git a/feature-libs/product-multi-dimensional/package.json b/feature-libs/product-multi-dimensional/package.json index 5dc40ed7785..7681f1c4d0d 100644 --- a/feature-libs/product-multi-dimensional/package.json +++ b/feature-libs/product-multi-dimensional/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/product-multi-dimensional", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Product Multi-Dimensional library for Spartacus", "keywords": [ "spartacus", @@ -31,10 +31,10 @@ "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/product/package.json b/feature-libs/product/package.json index 70305724696..5ce0f22e7da 100644 --- a/feature-libs/product/package.json +++ b/feature-libs/product/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/product", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Product library for Spartacus", "keywords": [ "spartacus", @@ -29,10 +29,10 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/product/schematics/add-product/__snapshots__/index_spec.ts.snap b/feature-libs/product/schematics/add-product/__snapshots__/index_spec.ts.snap index 955ea4a76a1..cf9c46834c9 100644 --- a/feature-libs/product/schematics/add-product/__snapshots__/index_spec.ts.snap +++ b/feature-libs/product/schematics/add-product/__snapshots__/index_spec.ts.snap @@ -51,7 +51,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) @@ -270,7 +270,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) diff --git a/feature-libs/qualtrics/package.json b/feature-libs/qualtrics/package.json index a90c743abd5..7d2f045fd0f 100644 --- a/feature-libs/qualtrics/package.json +++ b/feature-libs/qualtrics/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/qualtrics", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Qualtrics library for Spartacus", "keywords": [ "spartacus", @@ -30,9 +30,9 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/quote/core/services/quote-storefront-utils.service.spec.ts b/feature-libs/quote/core/services/quote-storefront-utils.service.spec.ts index f58273d61e7..dbeb4c399ba 100644 --- a/feature-libs/quote/core/services/quote-storefront-utils.service.spec.ts +++ b/feature-libs/quote/core/services/quote-storefront-utils.service.spec.ts @@ -1,8 +1,20 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { WindowRef } from '@spartacus/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { WindowRef } from '@spartacus/core'; import { QuoteStorefrontUtilsService } from './quote-storefront-utils.service'; +const mockedWindowTemplate: { innerWidth?: number; innerHeight?: number } = { + innerWidth: 1000, + innerHeight: 1000, +}; + +let mockedWindow = mockedWindowTemplate; +class MockedWindowRef extends WindowRef { + get nativeWindow(): Window | undefined { + return this.isBrowser() ? mockedWindow : undefined; + } +} + @Component({ selector: 'cx-quote', template: ` @@ -20,24 +32,23 @@ describe('QuoteStorefrontUtilsService', () => { let fixture: ComponentFixture; let htmlElem: HTMLElement; let windowRef: WindowRef; - let querySelectorOriginal: any; beforeEach(() => { TestBed.configureTestingModule({ declarations: [MockQuoteComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], + providers: [{ provide: WindowRef, useClass: MockedWindowRef }], }).compileComponents(); classUnderTest = TestBed.inject(QuoteStorefrontUtilsService); fixture = TestBed.createComponent(MockQuoteComponent); htmlElem = fixture.nativeElement; windowRef = TestBed.inject(WindowRef); + mockedWindow = structuredClone(mockedWindowTemplate); fixture.detectChanges(); - querySelectorOriginal = document.querySelector; }); afterEach(() => { - document.querySelector = querySelectorOriginal; if (htmlElem) { document.body.removeChild(htmlElem); } @@ -52,17 +63,13 @@ describe('QuoteStorefrontUtilsService', () => { it('should get HTML element based on query selector when running in browser and element exists', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const theElement = document.createElement('elementMock'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(theElement); + spyOn(windowRef.document, 'querySelector').and.returnValue(theElement); expect(classUnderTest.getElement('elementMock')).toEqual(theElement); }); it('should get null if element does not exist', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(null); + spyOn(windowRef.document, 'querySelector').and.returnValue(null); expect(classUnderTest.getElement('unknownElement')).toEqual(null); }); }); @@ -71,9 +78,7 @@ describe('QuoteStorefrontUtilsService', () => { it('should not change styling of HTML element if element does not exist', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const element = document.createElement('notExistingElement'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(undefined); + spyOn(windowRef.document, 'querySelector').and.returnValue(undefined); classUnderTest.changeStyling('notExistingElement', 'position', 'sticky'); expect(element.style.position).not.toEqual('sticky'); @@ -82,9 +87,7 @@ describe('QuoteStorefrontUtilsService', () => { it('should change styling of HTML element', () => { spyOn(windowRef, 'isBrowser').and.returnValue(true); const theElement = document.createElement('elementMock'); - document.querySelector = jasmine - .createSpy('HTML Element') - .and.returnValue(theElement); + spyOn(windowRef.document, 'querySelector').and.returnValue(theElement); classUnderTest.changeStyling('elementMock', 'position', 'sticky'); expect(theElement.style.position).toEqual('sticky'); }); @@ -121,27 +124,25 @@ describe('QuoteStorefrontUtilsService', () => { label.style.height = '10px'; }); - spyOnProperty(window, 'innerWidth').and.returnValue(100); + mockedWindow.innerWidth = 100; expect(classUnderTest['isInViewport'](list)).toBe(false); }); - // TODO: CXSPA-8270 - fix failing tests on Azure & GiHub - xit("should return 'true' because window's innerWith is known", () => { + it("should return 'true' because window's innerWith is known", () => { list.style.display = 'flex'; list.style.flexDirection = 'column'; - spyOnProperty(window, 'innerWidth').and.returnValue(1000); + mockedWindow.innerWidth = 1000; expect(classUnderTest['isInViewport'](list)).toBe(true); }); - // TODO: CXSPA-8270 - fix failing tests on Azure & GiHub - xit("should return 'true' because clientWidth of element is known and its right is less than its width", () => { + it("should return 'true' because clientWidth of element is known and its right is less than its width", () => { list.style.display = 'flex'; list.style.flexDirection = 'column'; - spyOnProperty(window, 'innerWidth').and.returnValue(undefined); + mockedWindow.innerWidth = undefined; expect(classUnderTest['isInViewport'](list)).toBe(true); }); @@ -151,7 +152,7 @@ describe('QuoteStorefrontUtilsService', () => { list.style.flexDirection = 'column'; list.style.height = '1000px'; - spyOnProperty(window, 'innerHeight').and.returnValue(undefined); + mockedWindow.innerHeight = undefined; expect(classUnderTest['isInViewport'](list)).toBe(true); }); @@ -176,14 +177,13 @@ describe('QuoteStorefrontUtilsService', () => { }); it('should return zero because component is not in viewport', () => { - spyOnProperty(window, 'innerWidth').and.returnValue(100); + mockedWindow.innerWidth = 100; expect(classUnderTest['getHeight']('cx-quote-list')).toBe(0); }); - // TODO: CXSPA-8270 - fix failing tests on Azure & GiHub - xit('should return offsetHeight of the element because component is not in viewport', () => { - spyOnProperty(window, 'innerWidth').and.returnValue(1000); + it('should return offsetHeight of the element because component is in viewport', () => { + mockedWindow.innerWidth = 1000; expect(classUnderTest['getHeight']('cx-quote-list')).toBeGreaterThan(0); }); diff --git a/feature-libs/quote/package.json b/feature-libs/quote/package.json index 5725d7cbc0c..1fa7ce52107 100644 --- a/feature-libs/quote/package.json +++ b/feature-libs/quote/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/quote", - "version": "2211.29.1", + "version": "2211.30.0", "description": "", "keywords": [ "spartacus", @@ -32,11 +32,11 @@ "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/quote/schematics/add-quote/__snapshots__/index_spec.ts.snap b/feature-libs/quote/schematics/add-quote/__snapshots__/index_spec.ts.snap index e3935a70ee6..4ee71ab70f4 100644 --- a/feature-libs/quote/schematics/add-quote/__snapshots__/index_spec.ts.snap +++ b/feature-libs/quote/schematics/add-quote/__snapshots__/index_spec.ts.snap @@ -55,7 +55,7 @@ import { defaultCmsContentProviders, layoutConfig, mediaConfig } from "@spartacu }, }), provideConfig({ features: { - level: '2211.29' + level: '2211.30' } }), provideConfig(defaultB2bOccConfig)] }) diff --git a/feature-libs/requested-delivery-date/package.json b/feature-libs/requested-delivery-date/package.json index 3e2fd60c675..8871c736c54 100644 --- a/feature-libs/requested-delivery-date/package.json +++ b/feature-libs/requested-delivery-date/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/requested-delivery-date", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Requested Delivery Date library for Spartacus", "keywords": [ "spartacus", @@ -29,13 +29,13 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/smartedit/package.json b/feature-libs/smartedit/package.json index 700b3d7e530..d0e8fcedee6 100644 --- a/feature-libs/smartedit/package.json +++ b/feature-libs/smartedit/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/smartedit", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Smart Edit feature library for Spartacus", "keywords": [ "spartacus", @@ -23,8 +23,8 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/storefinder/package.json b/feature-libs/storefinder/package.json index 5bdb1a11614..031e149b287 100644 --- a/feature-libs/storefinder/package.json +++ b/feature-libs/storefinder/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/storefinder", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Store finder feature library for Spartacus", "keywords": [ "spartacus", @@ -32,10 +32,10 @@ "@angular/router": "^17.0.5", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/feature-libs/tracking/package.json b/feature-libs/tracking/package.json index 49ce9e3e51b..088ee471dc0 100644 --- a/feature-libs/tracking/package.json +++ b/feature-libs/tracking/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/tracking", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Spartacus tracking and personalization library", "keywords": [ "spartacus", @@ -27,8 +27,8 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/user/package.json b/feature-libs/user/package.json index aa226b3215c..fd92ceacd5c 100644 --- a/feature-libs/user/package.json +++ b/feature-libs/user/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/user", - "version": "2211.29.1", + "version": "2211.30.0", "description": "User feature library for Spartacus", "keywords": [ "spartacus", @@ -32,10 +32,10 @@ "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/feature-libs/user/profile/components/register/register.component.html b/feature-libs/user/profile/components/register/register.component.html index f331fe73b62..0600e93305a 100644 --- a/feature-libs/user/profile/components/register/register.component.html +++ b/feature-libs/user/profile/components/register/register.component.html @@ -29,9 +29,7 @@ bindValue="code" formControlName="titleCode" id="title-select" - [cxNgSelectA11y]="{ - ariaLabel: 'register.title' | cxTranslate, - }" + [cxNgSelectA11y]="{}" > diff --git a/feature-libs/user/profile/components/register/register.module.ts b/feature-libs/user/profile/components/register/register.module.ts index fc33bfca386..a310e15fc93 100644 --- a/feature-libs/user/profile/components/register/register.module.ts +++ b/feature-libs/user/profile/components/register/register.module.ts @@ -39,8 +39,8 @@ import { RegisterComponent } from './register.component'; I18nModule, SpinnerModule, FormErrorsModule, - NgSelectModule, NgSelectA11yModule, + NgSelectModule, PasswordVisibilityToggleModule, FeaturesConfigModule, ], diff --git a/integration-libs/cdc/package.json b/integration-libs/cdc/package.json index 92139f86605..6ea09a7f95c 100644 --- a/integration-libs/cdc/package.json +++ b/integration-libs/cdc/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/cdc", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Customer Data Cloud Integration library for Spartacus", "keywords": [ "spartacus", @@ -30,12 +30,12 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/asm": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/organization": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/asm": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/organization": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/user": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/cdp/package.json b/integration-libs/cdp/package.json index 2102d08b5e8..8bb19ae194a 100644 --- a/integration-libs/cdp/package.json +++ b/integration-libs/cdp/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/cdp", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Customer Data Platform Integration library for Spartacus", "keywords": [ "spartacus", @@ -24,8 +24,8 @@ "peerDependencies": { "@angular-devkit/schematics": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/customer-ticketing": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/customer-ticketing": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/cds/package.json b/integration-libs/cds/package.json index cc49d52b7ea..544cbc30d53 100644 --- a/integration-libs/cds/package.json +++ b/integration-libs/cds/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/cds", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Context Driven Service library for Spartacus", "keywords": [ "spartacus", @@ -28,12 +28,12 @@ "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/tracking": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/tracking": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/cpq-quote/package.json b/integration-libs/cpq-quote/package.json index c628fcd0b1a..ecf3bc68628 100644 --- a/integration-libs/cpq-quote/package.json +++ b/integration-libs/cpq-quote/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/cpq-quote", - "version": "2211.29.1", + "version": "2211.30.0", "description": "cpq-quote library for Spartacus", "keywords": [ "spartacus", @@ -23,10 +23,10 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/digital-payments/package.json b/integration-libs/digital-payments/package.json index 8c1bd91d4b0..6cd3cf04531 100644 --- a/integration-libs/digital-payments/package.json +++ b/integration-libs/digital-payments/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/digital-payments", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Digital Payments Integration library for Spartacus", "keywords": [ "spartacus", @@ -27,11 +27,11 @@ "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/epd-visualization/package.json b/integration-libs/epd-visualization/package.json index 51124069129..efdeebc36a0 100644 --- a/integration-libs/epd-visualization/package.json +++ b/integration-libs/epd-visualization/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/epd-visualization", - "version": "2211.29.1", + "version": "2211.30.0", "description": "SAP Enterprise Product Development Visualization integration library for Spartacus", "keywords": [ "spartacus", @@ -38,11 +38,11 @@ "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", "@sapui5/ts-types-esm": "1.120.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, diff --git a/integration-libs/epd-visualization/root/util/url-utils.spec.ts b/integration-libs/epd-visualization/root/util/url-utils.spec.ts index 20097972a99..183a925f487 100644 --- a/integration-libs/epd-visualization/root/util/url-utils.spec.ts +++ b/integration-libs/epd-visualization/root/util/url-utils.spec.ts @@ -19,10 +19,8 @@ describe('UrlUtils', () => { expect(isHttpOrHttps(new URL('http://www.google.com/'))).toBeTruthy(); }); - it('should return false for data: protocol', () => { - expect( - isHttpOrHttps(new URL('data://data:text/plain,some%20data/')) - ).toBeFalsy(); + it('should return false for non http-based protocol', () => { + expect(isHttpOrHttps(new URL('ws://example.com'))).toBeFalsy(); }); }); }); diff --git a/integration-libs/omf/package.json b/integration-libs/omf/package.json index e4cae34f97e..8fb86b27d9f 100644 --- a/integration-libs/omf/package.json +++ b/integration-libs/omf/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/omf", - "version": "2211.29.1", + "version": "2211.30.0", "description": "SAP Order Management Foundation Integration", "keywords": [ "spartacus", @@ -25,9 +25,9 @@ "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/opps/package.json b/integration-libs/opps/package.json index d19199d912b..92ae8e2c67d 100644 --- a/integration-libs/opps/package.json +++ b/integration-libs/opps/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/opps", - "version": "2211.29.1", + "version": "2211.30.0", "description": "OPPS (Omni-Channel Personalization and Promotions Services) library for Spartacus", "keywords": [ "spartacus", @@ -29,9 +29,9 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/s4-service/package.json b/integration-libs/s4-service/package.json index 376c375248f..849fac98720 100644 --- a/integration-libs/s4-service/package.json +++ b/integration-libs/s4-service/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/s4-service", - "version": "2211.29.1", + "version": "2211.30.0", "description": "S/4HANA Service Integration Integration library for Spartacus", "keywords": [ "spartacus", @@ -30,12 +30,12 @@ "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/s4om/package.json b/integration-libs/s4om/package.json index 5e01beb5e25..2553d8daee7 100644 --- a/integration-libs/s4om/package.json +++ b/integration-libs/s4om/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/s4om", - "version": "2211.29.1", + "version": "2211.30.0", "description": "S/4HANA Order Management (b2b feature)", "keywords": [ "spartacus", @@ -23,13 +23,13 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/pdf-invoices": "2211.29.1", - "@spartacus/requested-delivery-date": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/pdf-invoices": "2211.30.0", + "@spartacus/requested-delivery-date": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/integration-libs/segment-refs/package.json b/integration-libs/segment-refs/package.json index be446060655..be7763928f9 100644 --- a/integration-libs/segment-refs/package.json +++ b/integration-libs/segment-refs/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/segment-refs", - "version": "2211.29.1", + "version": "2211.30.0", "description": "segment-refs", "keywords": [ "spartacus", @@ -23,8 +23,8 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "publishConfig": { diff --git a/projects/assets/package.json b/projects/assets/package.json index f305c9b8a34..47a5447b16a 100644 --- a/projects/assets/package.json +++ b/projects/assets/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/assets", - "version": "2211.29.1", + "version": "2211.30.0", "homepage": "https://github.com/SAP/spartacus", "repository": "https://github.com/SAP/spartacus/tree/develop/projects/assets", "scripts": { diff --git a/projects/core/package.json b/projects/core/package.json index 06a8bb87bf1..1d9af8b4fb3 100644 --- a/projects/core/package.json +++ b/projects/core/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/core", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Spartacus - the core framework", "keywords": [ "spartacus", diff --git a/projects/core/src/features-config/feature-toggles/config/feature-toggles.ts b/projects/core/src/features-config/feature-toggles/config/feature-toggles.ts index 1609200e2f5..e146e4fd523 100644 --- a/projects/core/src/features-config/feature-toggles/config/feature-toggles.ts +++ b/projects/core/src/features-config/feature-toggles/config/feature-toggles.ts @@ -582,6 +582,11 @@ export interface FeatureTogglesInterface { */ a11ySearchBoxFocusOnEscape?: boolean; + /** + * `ProductIntroComponent` should now scroll to the Review tab on the first click of the 'Show Review' button. + */ + a11yScrollToReviewByShowReview?: boolean; + /** * `StoreComponent and MyPreferredStoreComponent` an icon in a button that triggers showing * store's opening hours has an acceptable contrast ratio in a default theme @@ -760,6 +765,7 @@ export const defaultFeatureToggles: Required = { a11yDialogTriggerRefocus: false, a11yAddToWishlistFocus: false, a11ySearchBoxFocusOnEscape: false, + a11yScrollToReviewByShowReview: false, a11yViewHoursButtonIconContrast: false, occCartNameAndDescriptionInHttpRequestBody: false, cmsBottomHeaderSlotUsingFlexStyles: false, diff --git a/projects/core/src/util/glob-utils.ts b/projects/core/src/util/glob-utils.ts index c10e844b394..309c4b468f0 100644 --- a/projects/core/src/util/glob-utils.ts +++ b/projects/core/src/util/glob-utils.ts @@ -50,7 +50,7 @@ export function globToRegex(glob: string, literalQuestionMark = false): string { } } else { const processed = toEscape.reduce( - (seg, escape) => seg?.replace(escape.replace, escape.with), + (seg, escapeRule) => seg?.replace(escapeRule.replace, escapeRule.with), segment ); regex += processed; diff --git a/projects/schematics/package.json b/projects/schematics/package.json index 0e095f1c407..d58b125852e 100644 --- a/projects/schematics/package.json +++ b/projects/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/schematics", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Spartacus schematics", "keywords": [ "spartacus", diff --git a/projects/schematics/src/add-spartacus/spartacus-features.ts b/projects/schematics/src/add-spartacus/spartacus-features.ts index 38849bba7f2..38b76831280 100644 --- a/projects/schematics/src/add-spartacus/spartacus-features.ts +++ b/projects/schematics/src/add-spartacus/spartacus-features.ts @@ -95,6 +95,7 @@ function configureSpartacusModules( 'PageTitleModule', 'VideoModule', 'PDFModule', + 'SiteThemeSwitcherModule', ].forEach((content) => { addModuleImport(sourceFile, { import: [ @@ -116,6 +117,7 @@ function configureSpartacusModules( 'PageTitleModule', 'VideoModule', 'PDFModule', + 'SiteThemeSwitcherModule', ], }, ], diff --git a/projects/schematics/src/dependencies.json b/projects/schematics/src/dependencies.json index 90997cfb3be..d4179ee4742 100644 --- a/projects/schematics/src/dependencies.json +++ b/projects/schematics/src/dependencies.json @@ -24,7 +24,7 @@ "typescript": "^5.2.2" }, "ssr-tests": { - "@spartacus/core": "2211.29.1", + "@spartacus/core": "2211.30.0", "http-proxy": "^1.18.1", "jest-circus": "^29.0.0", "jest-environment-node": "^29.0.0" @@ -41,7 +41,7 @@ "@ngrx/effects": "^17.0.1", "@ngrx/router-store": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", + "@spartacus/core": "2211.30.0", "ngx-infinite-scroll": "^17.0.0", "rxjs": "^7.8.0" }, @@ -54,10 +54,10 @@ "@spartacus/setup": { "@angular/core": "^17.0.5", "@angular/ssr": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/user": "2211.29.1" + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/user": "2211.30.0" }, "@spartacus/asm": { "@angular-devkit/schematics": "^17.0.5", @@ -67,14 +67,14 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefinder": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefinder": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/cart": { @@ -86,11 +86,11 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -102,13 +102,13 @@ "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -118,23 +118,23 @@ "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/estimated-delivery-date": { "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/order": { @@ -146,13 +146,13 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/pdf-invoices": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/pdf-invoices": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/organization": { @@ -164,13 +164,13 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -179,10 +179,10 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/pickup-in-store": { @@ -193,14 +193,14 @@ "@angular/router": "^17.0.5", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefinder": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefinder": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", + "@spartacus/user": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -209,10 +209,10 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -225,13 +225,13 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/product-multi-dimensional": { @@ -241,10 +241,10 @@ "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -252,9 +252,9 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -264,11 +264,11 @@ "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -277,21 +277,21 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/smartedit": { "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/storefinder": { @@ -302,10 +302,10 @@ "@angular/router": "^17.0.5", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -313,8 +313,8 @@ "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/user": { @@ -325,10 +325,10 @@ "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/cdc": { @@ -340,19 +340,19 @@ "@ng-select/ng-select": "^12.0.4", "@ngrx/effects": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/asm": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/organization": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/user": "2211.29.1", + "@spartacus/asm": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/organization": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/user": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/cdp": { "@angular-devkit/schematics": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/customer-ticketing": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/customer-ticketing": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/cds": { @@ -361,22 +361,22 @@ "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", "@ngrx/store": "^17.0.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/tracking": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/tracking": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/cpq-quote": { "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/digital-payments": { @@ -386,11 +386,11 @@ "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", "@ng-select/ng-select": "^12.0.4", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/epd-visualization": { @@ -400,11 +400,11 @@ "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", "@sapui5/ts-types-esm": "1.120.1", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "bootstrap": "^4.6.2", "rxjs": "^7.8.0" }, @@ -414,9 +414,9 @@ "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/opps": { @@ -424,9 +424,9 @@ "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/s4-service": { @@ -435,33 +435,33 @@ "@angular/core": "^17.0.5", "@angular/forms": "^17.0.5", "@angular/router": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/checkout": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/order": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/checkout": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/order": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/s4om": { "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/cart": "2211.29.1", - "@spartacus/core": "2211.29.1", - "@spartacus/pdf-invoices": "2211.29.1", - "@spartacus/requested-delivery-date": "2211.29.1", - "@spartacus/schematics": "2211.29.1", - "@spartacus/storefront": "2211.29.1", - "@spartacus/styles": "2211.29.1", + "@spartacus/cart": "2211.30.0", + "@spartacus/core": "2211.30.0", + "@spartacus/pdf-invoices": "2211.30.0", + "@spartacus/requested-delivery-date": "2211.30.0", + "@spartacus/schematics": "2211.30.0", + "@spartacus/storefront": "2211.30.0", + "@spartacus/styles": "2211.30.0", "rxjs": "^7.8.0" }, "@spartacus/segment-refs": { "@angular-devkit/schematics": "^17.0.5", "@angular/common": "^17.0.5", "@angular/core": "^17.0.5", - "@spartacus/core": "2211.29.1", - "@spartacus/schematics": "2211.29.1", + "@spartacus/core": "2211.30.0", + "@spartacus/schematics": "2211.30.0", "rxjs": "^7.8.0" }, "storefrontapp": { diff --git a/projects/schematics/src/ng-add/__snapshots__/index_spec.ts.snap b/projects/schematics/src/ng-add/__snapshots__/index_spec.ts.snap index 27109b3faf1..5c4944555e1 100644 --- a/projects/schematics/src/ng-add/__snapshots__/index_spec.ts.snap +++ b/projects/schematics/src/ng-add/__snapshots__/index_spec.ts.snap @@ -61,11 +61,11 @@ exports[`Spartacus Schematics: ng-add should add spartacus properly with SSR 2`] "@ngrx/effects": "^17.0.1", "@ngrx/router-store": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/assets": "~2211.29.1", - "@spartacus/core": "~2211.29.1", - "@spartacus/setup": "~2211.29.1", - "@spartacus/storefront": "~2211.29.1", - "@spartacus/styles": "~2211.29.1", + "@spartacus/assets": "~2211.30.0", + "@spartacus/core": "~2211.30.0", + "@spartacus/setup": "~2211.30.0", + "@spartacus/storefront": "~2211.30.0", + "@spartacus/styles": "~2211.30.0", "angular-oauth2-oidc": "^17.0.1", "bootstrap": "^4.6.2", "express": "^4.18.2", diff --git a/projects/ssr-tests/package.json b/projects/ssr-tests/package.json index 2ae4e1825d2..461c1fbeec6 100644 --- a/projects/ssr-tests/package.json +++ b/projects/ssr-tests/package.json @@ -1,6 +1,6 @@ { "name": "ssr-tests", - "version": "2211.29.1", + "version": "2211.30.0", "private": true, "description": "Spartacus SSR Tests", "keywords": [ @@ -17,7 +17,7 @@ "tslib": "^2.6.2" }, "peerDependencies": { - "@spartacus/core": "2211.29.1", + "@spartacus/core": "2211.30.0", "http-proxy": "^1.18.1", "jest-circus": "^29.0.0", "jest-environment-node": "^29.0.0" diff --git a/projects/storefrontapp/src/app/spartacus/spartacus-features.module.ts b/projects/storefrontapp/src/app/spartacus/spartacus-features.module.ts index 766e942f566..4f75034c7ba 100644 --- a/projects/storefrontapp/src/app/spartacus/spartacus-features.module.ts +++ b/projects/storefrontapp/src/app/spartacus/spartacus-features.module.ts @@ -376,6 +376,7 @@ if (environment.cpq) { a11yDialogTriggerRefocus: true, a11yAddToWishlistFocus: true, a11ySearchBoxFocusOnEscape: true, + a11yScrollToReviewByShowReview: true, a11yViewHoursButtonIconContrast: true, cmsBottomHeaderSlotUsingFlexStyles: true, useSiteThemeService: false, diff --git a/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.spec.ts b/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.spec.ts index d723a2e289c..3e9a9bc93df 100644 --- a/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.spec.ts +++ b/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.spec.ts @@ -17,8 +17,8 @@ import { ProductIntroComponent } from './product-intro.component'; template: '', }) class MockStarRatingComponent { - @Input() rating; - @Input() disabled; + @Input() rating: number; + @Input() disabled: boolean; } class MockCurrentProductService { diff --git a/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.ts b/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.ts index d16457e5102..b70edb7f585 100644 --- a/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.ts +++ b/projects/storefrontlib/cms-components/product/product-intro/product-intro.component.ts @@ -4,14 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { EventService, + FeatureConfigService, Product, TranslationService, WindowRef, } from '@spartacus/core'; -import { defer, merge, Observable, of } from 'rxjs'; +import { Observable, defer, merge, of } from 'rxjs'; import { filter, map } from 'rxjs/operators'; import { ComponentCreateEvent, @@ -28,6 +29,8 @@ export class ProductIntroComponent { product$: Observable = this.currentProductService.getProduct(); + private featureConfigService = inject(FeatureConfigService); + /** * Observable that checks the reviews component availability on the page. * @@ -72,12 +75,25 @@ export class ProductIntroComponent { const tabsComponent = this.getTabsComponent(); const reviewsTab = tabsComponent && this.getTabByLabel(reviewsTabLabel, tabsComponent); - if (reviewsTab) { this.clickTabIfInactive(reviewsTab); setTimeout(() => { - reviewsTab.scrollIntoView({ behavior: 'smooth' }); - reviewsTab.focus({ preventScroll: true }); + if ( + this.featureConfigService?.isEnabled( + 'a11yScrollToReviewByShowReview' + ) + ) { + requestAnimationFrame(() => { + reviewsTab.scrollIntoView({ + behavior: 'smooth', + block: 'start', + }); + reviewsTab.focus({ preventScroll: true }); + }); + } else { + reviewsTab.scrollIntoView({ behavior: 'smooth', block: 'start' }); + reviewsTab.focus({ preventScroll: true }); + } }); } }) diff --git a/projects/storefrontlib/package.json b/projects/storefrontlib/package.json index 0e0bd6cd460..0a84b8b5528 100644 --- a/projects/storefrontlib/package.json +++ b/projects/storefrontlib/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/storefront", - "version": "2211.29.1", + "version": "2211.30.0", "keywords": [ "spartacus", "storefront", @@ -23,7 +23,7 @@ "@ngrx/effects": "^17.0.1", "@ngrx/router-store": "^17.0.1", "@ngrx/store": "^17.0.1", - "@spartacus/core": "2211.29.1", + "@spartacus/core": "2211.30.0", "ngx-infinite-scroll": "^17.0.0", "rxjs": "^7.8.0" }, diff --git a/projects/storefrontlib/shared/components/ng-select-a11y/ng-select-a11y.directive.ts b/projects/storefrontlib/shared/components/ng-select-a11y/ng-select-a11y.directive.ts index 97410186f5c..0a9b1f51807 100644 --- a/projects/storefrontlib/shared/components/ng-select-a11y/ng-select-a11y.directive.ts +++ b/projects/storefrontlib/shared/components/ng-select-a11y/ng-select-a11y.directive.ts @@ -16,7 +16,9 @@ import { Optional, PLATFORM_ID, Renderer2, + SecurityContext, } from '@angular/core'; +import { DomSanitizer } from '@angular/platform-browser'; import { FeatureConfigService, TranslationService } from '@spartacus/core'; import { filter, take } from 'rxjs'; import { BREAKPOINT, BreakpointService } from '../../../layout'; @@ -35,6 +37,7 @@ export class NgSelectA11yDirective implements AfterViewInit { @Input() cxNgSelectA11y: { ariaLabel?: string; ariaControls?: string }; protected translationService = inject(TranslationService); + protected domSanitizer = inject(DomSanitizer); private featureConfigService = inject(FeatureConfigService); @HostListener('open') @@ -107,7 +110,11 @@ export class NgSelectA11yDirective implements AfterViewInit { .subscribe((translation) => { options.forEach( (option: HTMLOptionElement, index: string | number) => { - const ariaLabel = `${option.innerText}, ${+index + 1} ${translation} ${options.length}`; + const sanitizedOptionText = this.domSanitizer.sanitize( + SecurityContext.HTML, + option.innerText + ); + const ariaLabel = `${sanitizedOptionText}, ${+index + 1} ${translation} ${options.length}`; this.renderer.setAttribute(option, ARIA_LABEL, ariaLabel); } ); @@ -125,9 +132,11 @@ export class NgSelectA11yDirective implements AfterViewInit { observer: MutationObserver, divCombobox: HTMLElement ) { - const valueLabel = - this.elementRef.nativeElement.querySelector('.ng-value-label')?.innerText; - if (valueLabel) { + const sanitizedValueLabel = this.domSanitizer.sanitize( + SecurityContext.HTML, + this.elementRef.nativeElement.querySelector('.ng-value-label')?.innerText + ); + if (sanitizedValueLabel) { const comboboxAriaLabel = divCombobox?.getAttribute(ARIA_LABEL) || ''; const valueElement = this.elementRef.nativeElement.querySelector('.ng-value'); @@ -135,7 +144,7 @@ export class NgSelectA11yDirective implements AfterViewInit { this.renderer.setAttribute( divCombobox, ARIA_LABEL, - comboboxAriaLabel + ', ' + valueLabel + comboboxAriaLabel + ', ' + sanitizedValueLabel ); } observer.disconnect(); diff --git a/projects/storefrontstyles/package.json b/projects/storefrontstyles/package.json index ab53c29ae76..0c5a0182f17 100644 --- a/projects/storefrontstyles/package.json +++ b/projects/storefrontstyles/package.json @@ -1,6 +1,6 @@ { "name": "@spartacus/styles", - "version": "2211.29.1", + "version": "2211.30.0", "description": "Style library containing global styles", "keywords": [ "spartacus", diff --git a/projects/storefrontstyles/scss/_versioning.scss b/projects/storefrontstyles/scss/_versioning.scss index 87b74298064..8209771bc07 100644 --- a/projects/storefrontstyles/scss/_versioning.scss +++ b/projects/storefrontstyles/scss/_versioning.scss @@ -28,8 +28,8 @@ // or `$styleVersion` are enabled. $_fullVersion: ( major: 2211, - minor: 29, - patch: 1, + minor: 30, + patch: 0, ); // The _global_ major version. Any (left over) styles from previous stable versions diff --git a/projects/storefrontstyles/scss/components/content/navigation/_link.scss b/projects/storefrontstyles/scss/components/content/navigation/_link.scss index b866cb457a2..7d9e7529c6f 100644 --- a/projects/storefrontstyles/scss/components/content/navigation/_link.scss +++ b/projects/storefrontstyles/scss/components/content/navigation/_link.scss @@ -1,6 +1,5 @@ %cx-link { a { - display: inline; padding: var(--cx-padding, 0); margin: var(--cx-margin, 0); color: currentColor; diff --git a/projects/storefrontstyles/scss/cxbase/blocks/modal.scss b/projects/storefrontstyles/scss/cxbase/blocks/modal.scss index 8abc0778a14..061f3ca16c0 100644 --- a/projects/storefrontstyles/scss/cxbase/blocks/modal.scss +++ b/projects/storefrontstyles/scss/cxbase/blocks/modal.scss @@ -75,7 +75,6 @@ $modal-min-width-asm: 95% !important; margin: $modal-dialog-margin-sm; min-width: $modal-max-width-sm; max-width: $modal-min-width-sm; - overflow-y: initial; height: 100%; overflow-y: auto; diff --git a/tools/config/const.ts b/tools/config/const.ts index ccb27e30206..878bf888afe 100644 --- a/tools/config/const.ts +++ b/tools/config/const.ts @@ -10,4 +10,4 @@ export const SPARTACUS_SCOPE = '@spartacus'; export const SAP_SCOPE = 'sap'; export const SAPUI5_TYPES = '@sapui5/ts-types-esm'; export const SPARTACUS_SCHEMATICS = `${SPARTACUS_SCOPE}/schematics`; -export const PUBLISHING_VERSION = '2211.29.1'; +export const PUBLISHING_VERSION = '2211.30.0';